<?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>152401</bug_id>
          
          <creation_ts>2015-12-17 15:34:44 -0800</creation_ts>
          <short_desc>Add types for DownloadID and TaskIdentifier</short_desc>
          <delta_ts>2015-12-18 00:12:13 -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>
          <dependson>152414</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1150105</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-12-17 15:34:44 -0800</bug_when>
    <thetext>Add types for DownloadID and TaskIdentifier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150106</commentid>
    <comment_count>1</comment_count>
      <attachid>267590</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-12-17 15:36:38 -0800</bug_when>
    <thetext>Created attachment 267590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150124</commentid>
    <comment_count>2</comment_count>
      <attachid>267594</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-12-17 16:15:34 -0800</bug_when>
    <thetext>Created attachment 267594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150126</commentid>
    <comment_count>3</comment_count>
      <attachid>267595</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-12-17 16:21:58 -0800</bug_when>
    <thetext>Created attachment 267595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150134</commentid>
    <comment_count>4</comment_count>
      <attachid>267595</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-12-17 16:30:44 -0800</bug_when>
    <thetext>Comment on attachment 267595
Patch

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

&gt; Source/WebKit2/NetworkProcess/NetworkSession.h:34
&gt; +#if PLATFORM(COCOA)
&gt;  OBJC_CLASS NSURLSession;
&gt;  OBJC_CLASS NSURLSessionDataTask;
&gt;  OBJC_CLASS NSOperationQueue;
&gt;  OBJC_CLASS WKNetworkSessionDelegate;
&gt; +#endif

Seems unrelated to this patch.

&gt; Source/WebKit2/Shared/Downloads/DownloadID.h:42
&gt; +    DownloadID(uint64_t downloadID)

explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150137</commentid>
    <comment_count>5</comment_count>
      <attachid>267597</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-12-17 16:34:46 -0800</bug_when>
    <thetext>Created attachment 267597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150147</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-12-17 17:10:24 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/194250</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150165</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-17 18:45:05 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 152414</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150229</commentid>
    <comment_count>8</comment_count>
      <attachid>267597</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-12-17 23:56:56 -0800</bug_when>
    <thetext>Comment on attachment 267597
Patch

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

&gt; Source/WebKit2/Shared/Downloads/DownloadID.h:69
&gt; +        downloadID = WebKit::DownloadID(downloadID);

This was always decoding downloadIDs of 0.  It should actually use the value it decoded:
downloadID = WebKit::DownloadID(id);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150230</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-12-18 00:12:13 -0800</bug_when>
    <thetext>Fixed DownloadID.h target membership problem, fixed decoding problem, changed a few 0&apos;s to { }&apos;s, and recommitted to http://trac.webkit.org/changeset/194264</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267590</attachid>
            <date>2015-12-17 15:36:38 -0800</date>
            <delta_ts>2015-12-17 16:15:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152401-20151217153600.patch</filename>
            <type>text/plain</type>
            <size>52296</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NDI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBACisyMDE1LTEyLTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHR5cGVz
IGZvciBEb3dubG9hZElEIGFuZCBUYXNrSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG93bmxvYWRJRCBhbmQgVGFza0lkZW50aWZpZXIg
dXNlZCB0byBib3RoIGJlIGp1c3QgdWludDY0X3Qncy4KKyAgICAgICAgSXQgaXMgY29uZnVzaW5n
IHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlbSwgc28gbm93IHRoZXkgYm90aCBoYXZlIG5hbWVz
LgorICAgICAgICBXZSBuZWVkIGEgSGFzaFNldDxUYXNrSWRlbnRpZmllciwgRG93bmxvYWRJRD4g
aW5zdGVhZCBvZiBhIEhhc2hTZXQ8dWludDY0X3QsIHVpbnQ2NF90Pi4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6c3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxv
YWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRvd25sb2Fk
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWVEb3dubG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3dubG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3Rp
Y3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFZhbHVlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNyZWF0ZURhdGFUYXNrV2l0aFJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZGF0YVRhc2tGb3JJZGVudGlmaWVyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpyZXN1bWUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2s6OnRhc2tJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OkRvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6Om1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKToKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmg6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkb3dubG9hZElEKToKKyAgICAgICAgKiBTaGFyZWQv
RG93bmxvYWRzL0Rvd25sb2FkSUQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
SUQ6OkRvd25sb2FkSUQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZElEOjpvcGVyYXRvcj09
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRJRDo6ZG93bmxvYWRJRCk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViS2l0OjpEb3dubG9hZElEPjo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvd25sb2FkSUQ+OjpkZWNvZGUpOgorICAgICAg
ICAoV1RGOjpEb3dubG9hZElESGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6OkRvd25sb2FkSURI
YXNoOjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViS2l0OjpEb3dubG9hZElE
Pjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViS2l0OjpEb3dubG9h
ZElEPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxX
ZWJLaXQ6OkRvd25sb2FkSUQ+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogU2hhcmVkL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1h
bmFnZXI6OkRvd25sb2FkTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdl
cjo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6Y29u
dmVydEhhbmRsZVRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6
OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjYW5j
ZWxEb3dubG9hZCk6CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
aDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjppc0Rvd25sb2FkaW5nKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5jcHA6CisgICAgICAgIChXS0Rvd25s
b2FkR2V0SUQpOgorICAgICAgICAoV0tEb3dubG9hZENvcHlSZXF1ZXN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2NwcC9XS1JldGFpblB0ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5Ojpk
b3dubG9hZElEKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6cmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnJlc3VtZURhdGEpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZFByb3h5TWFwOjpkb3dubG9hZEZpbmlzaGVkKToKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWRQcm94eU1hcDo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGlj
eURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29t
ZUZyYW1lU2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmludmFsaWRh
dGVQb2xpY3lMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpkaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c3RhcnREb3dubG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c2V0U2Vzc2lvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIGNvbmZpZy5oOgorCiAyMDE1LTEyLTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHJvZ3Jlc3MgdG93YXJkcyBpbXBsZW1l
bnRpbmcgZG93bmxvYWRzIHdpdGggTmV0d29ya1Nlc3Npb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCShyZXZpc2lv
biAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAt
NzQsNyArNzQsNyBAQAogI2RlZmluZSBIQVZFX1dJTkRPV19TRVJWRVJfT0NDTFVTSU9OX05PVElG
SUNBVElPTlMgMQogI2VuZGlmCiAjaWZuZGVmIFVTRV9ORVRXT1JLX1NFU1NJT04KLSNkZWZpbmUg
VVNFX05FVFdPUktfU0VTU0lPTiAwCisjZGVmaW5lIFVTRV9ORVRXT1JLX1NFU1NJT04gMQogI2Vu
ZGlmCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNp
b24gMTk0MjE4KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsMTIgKzE3NywxMiBA
QCBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2VzCiAgICAgcmV0dXJuIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoU2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZChT
ZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZG93
bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVl
c3QpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJl
c291cmNlTG9hZFRvRG93bmxvYWQoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsK
ICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKTsK
ICAgICBpZiAoIW1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyKSB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJsb2NraW5nUmVzcG9uc2VNYXAuaCIKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUxvYWRQcmlvcml0eS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC03
Niw4ICs3Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVMb2FkSWRlbnRpZmllcihSZXNv
dXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoUmVzb3VyY2VM
b2FkSWRlbnRpZmllciwgYm9vbCk7CiAgICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2
ZWQoUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VVJMJiByZWRpcmVjdFVS
TCk7Ci0gICAgdm9pZCBzdGFydERvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3Qg
ZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgdm9pZCBj
b252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50
NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgZG93bmxvYWRJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpOworICAgIHZvaWQgc3RhcnREb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQsIERvd25s
b2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY29udmVy
dE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3Qg
bWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAg
IHZvaWQgY29va2llc0ZvckRPTShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOwogICAg
IHZvaWQgc2V0Q29va2llc0Zyb21ET00oV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsy
OSw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXMKICAgICBTZXRE
ZWZlcnNMb2FkaW5nKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIGJvb2wgZGVmZXJz
KQogICAgIFByZWZldGNoRE5TKFN0cmluZyBob3N0bmFtZSkKIAotICAgIFN0YXJ0RG93bmxvYWQo
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCi0gICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRU
b0Rvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKKyAg
ICBTdGFydERvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93
bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKKyAg
ICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93
bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAogICAgIENvb2tpZXNGb3JET00oV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNv
cmU6OlVSTCB1cmwpIC0+IChTdHJpbmcgcmVzdWx0KQogICAgIFNldENvb2tpZXNGcm9tRE9NKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJD
b3JlOjpVUkwgdXJsLCBTdHJpbmcgY29va2llU3RyaW5nKQpJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMTk0MjE4
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MzIsMTcgKzQzMiwxNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YUZvCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdChTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9h
ZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBk
b3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVx
dWVzdCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OnJlc3VtZURvd25sb2FkKFNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93
bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKQogewogICAgIGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURvd25sb2Fk
KHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNhbmNlbERvd25sb2FkKHVpbnQ2
NF90IGRvd25sb2FkSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3dubG9hZChEb3du
bG9hZElEIGRvd25sb2FkSUQpCiB7CiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuY2FuY2VsRG93bmxv
YWQoZG93bmxvYWRJRCk7CiB9CkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Z2V0TmV0d29ya1Byb2Nlc3NTdAogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjpEaWRHZXRTdGF0aXN0aWNzKGRhdGEsIGNhbGxi
YWNrSUQpLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2UodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdlSUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgU2hvdWxk
U2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50
OjpzaG91bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTQ4Miw3ICs0ODIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVz
c2FnCiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6TG9nU2FtcGxlZERpYWdub3N0aWNNZXNzYWdlKHdlYlBhZ2VJRCwgbWVz
c2FnZSwgZGVzY3JpcHRpb24pLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlh
Z25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpEaWFnbm9zdGlj
TG9nZ2luZ1Jlc3VsdFR5cGUgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2Ft
cGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0
KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUgcmVzdWx0LCBTaG91bGRT
YW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6
OnNob3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNz
YWcKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpMb2dTYW1wbGVkRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHdlYlBh
Z2VJRCwgbWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCksIDApOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCB3ZWJQYWdl
SUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90
IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewog
ICAgIGlmICghRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OnNob3VsZExvZ0FmdGVyU2FtcGxpbmco
c2hvdWxkU2FtcGxlKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAxOTQyMTgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDksOSArMTQ5LDkgQEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgdGFrZSBhIHNlc3Npb24gSUQgc28gd2UgY2FuIGlkZW50aWZ5IHdoaWNoIGRpc2sgY2FjaGUg
dG8gZGVsZXRlLgogICAgIHZvaWQgY2xlYXJEaXNrQ2FjaGUoc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNv
bXBsZXRpb25IYW5kbGVyKTsKIAotICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlNl
c3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7Ci0gICAgdm9pZCByZXN1bWVEb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2
NF90IGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKLSAgICB2
b2lkIGNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpOworICAgIHZvaWQgZG93bmxv
YWRSZXF1ZXN0KFdlYkNvcmU6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChXZWJDb3JlOjpTZXNz
aW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAg
ICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2FkSUQpOwogICAgIHZvaWQgc2V0Q2FjaGVNb2Rl
bCh1aW50MzJfdCk7CiAgICAgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhv
c3QoY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgY29uc3QgU3RyaW5nJiBob3N0KTsK
ICAgICB2b2lkIHNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2wpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw5ICszOSw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2Vp
dmUKICAgICBEZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCB3ZWJzaXRlRGF0YVR5cGVzLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgRGVsZXRlV2Vi
c2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9y
aWdpbnMsIFZlY3RvcjxTdHJpbmc+IGNvb2tpZUhvc3ROYW1lcywgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIAotICAgIERvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKLSAg
ICBSZXN1bWVEb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBk
b3dubG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBhdGgsIFdl
YktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCi0g
ICAgQ2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCkKKyAgICBEb3dubG9hZFJlcXVl
c3QoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25s
b2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIFJlc3VtZURvd25s
b2FkKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBhdGgsIFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCisgICAg
Q2FuY2VsRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpCiAKICAgICBTZXRQ
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wgZmxhZykKICNpZiBQTEFURk9STShDT0NPQSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aAkocmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDE0IEBACiAjaWZuZGVm
IE5ldHdvcmtTZXNzaW9uX2gKICNkZWZpbmUgTmV0d29ya1Nlc3Npb25faAogCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbjsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNz
aW9uRGF0YVRhc2s7CiBPQkpDX0NMQVNTIE5TT3BlcmF0aW9uUXVldWU7CiBPQkpDX0NMQVNTIFdL
TmV0d29ya1Nlc3Npb25EZWxlZ2F0ZTsKKyNlbmRpZgogCisjaW5jbHVkZSAiRG93bmxvYWQuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC04MCw3ICs4Myw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbCgpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAKLSAgICB1
aW50NjRfdCB0YXNrSWRlbnRpZmllcigpOworICAgIHR5cGVkZWYgdWludDY0X3QgVGFza0lkZW50
aWZpZXI7CisgICAgVGFza0lkZW50aWZpZXIgdGFza0lkZW50aWZpZXIoKTsKIAogICAgIH5OZXR3
b3JrRGF0YVRhc2soKTsKIApAQCAtMTEyLDExICsxMTYsMTIgQEAgcHVibGljOgogICAgIAogICAg
IFJlZjxOZXR3b3JrRGF0YVRhc2s+IGNyZWF0ZURhdGFUYXNrV2l0aFJlcXVlc3QoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgTmV0d29ya1Nlc3Npb25UYXNrQ2xpZW50Jik7CiAKLSAg
ICBOZXR3b3JrRGF0YVRhc2sqIGRhdGFUYXNrRm9ySWRlbnRpZmllcih1aW50NjRfdCk7CisgICAg
TmV0d29ya0RhdGFUYXNrKiBkYXRhVGFza0ZvcklkZW50aWZpZXIoTmV0d29ya0RhdGFUYXNrOjpU
YXNrSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U2Vzc2lvbklEIG1fc2Vz
c2lvbklEOwotICAgIEhhc2hNYXA8dWludDY0X3QsIE5ldHdvcmtEYXRhVGFzayo+IG1fZGF0YVRh
c2tNYXA7CisgICAgSGFzaE1hcDxOZXR3b3JrRGF0YVRhc2s6OlRhc2tJZGVudGlmaWVyLCBOZXR3
b3JrRGF0YVRhc2sqPiBtX2RhdGFUYXNrTWFwOworICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNr
OjpUYXNrSWRlbnRpZmllciwgRG93bmxvYWRJRD4gbV9kb3dubG9hZE1hcDsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgUmV0
YWluUHRyPFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZT4gbV9zZXNzaW9uRGVsZWdhdGU7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBSZWY8TmV0d29ya0RhdGFUYXNrPiBOZXR3b3JrU2Vzc2lv
bjo6Y3JlCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrKCp0aGlzLCBj
bGllbnQsIFttX3Nlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVz
dChXZWJDb3JlOjpVcGRhdGVIVFRQQm9keSldKSk7CiB9CiAKLU5ldHdvcmtEYXRhVGFzayogTmV0
d29ya1Nlc3Npb246OmRhdGFUYXNrRm9ySWRlbnRpZmllcih1aW50NjRfdCB0YXNrSWRlbnRpZmll
cikKK05ldHdvcmtEYXRhVGFzayogTmV0d29ya1Nlc3Npb246OmRhdGFUYXNrRm9ySWRlbnRpZmll
cihOZXR3b3JrRGF0YVRhc2s6OlRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuIG1fZGF0YVRhc2tNYXAuZ2V0KHRh
c2tJZGVudGlmaWVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFzazo6
cmVzdW1lKCkKICAgICBbbV90YXNrIHJlc3VtZV07CiB9CiAKLXVpbnQ2NF90IE5ldHdvcmtEYXRh
VGFzazo6dGFza0lkZW50aWZpZXIoKQorYXV0byBOZXR3b3JrRGF0YVRhc2s6OnRhc2tJZGVudGlm
aWVyKCkgLT4gVGFza0lkZW50aWZpZXIKIHsKICAgICByZXR1cm4gW21fdGFzayB0YXNrSWRlbnRp
Zmllcl07CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcAkocmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25s
b2Fkcy9Eb3dubG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDkgKzQ0LDkgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCi1Eb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1h
bmFnZXIsIGNvbnN0IE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCB1aW50NjRfdCBkb3dubG9hZElE
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitEb3dubG9hZDo6RG93bmxvYWQoRG93
bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIsIGNvbnN0IE5ldHdvcmtTZXNzaW9uJiBzZXNz
aW9uLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKICNlbHNlCi1Eb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1h
bmFnZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK0Rvd25sb2FkOjpEb3dubG9hZChEb3dubG9hZE1hbmFnZXImIGRvd25sb2FkTWFuYWdlciwg
RG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAj
ZW5kaWYKICAgICA6IG1fZG93bmxvYWRNYW5hZ2VyKGRvd25sb2FkTWFuYWdlcikKICAgICAsIG1f
ZG93bmxvYWRJRChkb3dubG9hZElEKQpAQCAtNTUsNyArNTUsNyBAQCBEb3dubG9hZDo6RG93bmxv
YWQoRG93bmxvYWRNYW5hZ2VyJiBkb3duCiAgICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKICNlbmRp
ZgogewotICAgIEFTU0VSVChtX2Rvd25sb2FkSUQpOworICAgIEFTU0VSVChtX2Rvd25sb2FkSUQu
ZG93bmxvYWRJRCgpKTsKIAogICAgIG1fZG93bmxvYWRNYW5hZ2VyLmRpZENyZWF0ZURvd25sb2Fk
KCk7CiB9CkBAIC0xNjIsNyArMTYyLDcgQEAgSVBDOjpDb25uZWN0aW9uKiBEb3dubG9hZDo6bWVz
c2FnZVNlbmRlcgogCiB1aW50NjRfdCBEb3dubG9hZDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9u
SUQoKQogewotICAgIHJldHVybiBtX2Rvd25sb2FkSUQ7CisgICAgcmV0dXJuIG1fZG93bmxvYWRJ
RC5kb3dubG9hZElEKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAkocmV2aXNpb24gMTk0MjE4KQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIERvd25sb2FkX2gKICNkZWZpbmUgRG93bmxv
YWRfaAogCisjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KQEAgLTcxLDE0ICs3MiwxNCBAQCBjbGFzcyBEb3dubG9hZE1hbmFnZXI7
CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2s7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNsYXNzIFdl
YlBhZ2U7Ci0KKyAgICAKIGNsYXNzIERvd25sb2FkIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRl
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG93bmxvYWQpOwogcHVibGljOgogI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCi0gICAgRG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiwgY29uc3Qg
TmV0d29ya1Nlc3Npb24mLCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKKyAgICBEb3dubG9hZChEb3dubG9hZE1hbmFnZXImLCBjb25zdCBOZXR3
b3JrU2Vzc2lvbiYsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OwogI2Vsc2UKLSAgICBEb3dubG9hZChEb3dubG9hZE1hbmFnZXImLCB1aW50NjRfdCBkb3dubG9h
ZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBEb3dubG9hZChEb3du
bG9hZE1hbmFnZXImLCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKICNlbmRpZgogICAgIH5Eb3dubG9hZCgpOwogCkBAIC05MSw3ICs5Miw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAgICAg
dm9pZCBjYW5jZWwoKTsKIAotICAgIHVpbnQ2NF90IGRvd25sb2FkSUQoKSBjb25zdCB7IHJldHVy
biBtX2Rvd25sb2FkSUQ7IH0KKyAgICBEb3dubG9hZElEIGRvd25sb2FkSUQoKSBjb25zdCB7IHJl
dHVybiBtX2Rvd25sb2FkSUQ7IH0KIAogICAgIHZvaWQgZGlkU3RhcnQoKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpOwpAQCAtMTI4LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
bGF0Zm9ybUludmFsaWRhdGUoKTsKIAogICAgIERvd25sb2FkTWFuYWdlciYgbV9kb3dubG9hZE1h
bmFnZXI7Ci0gICAgdWludDY0X3QgbV9kb3dubG9hZElEOworICAgIERvd25sb2FkSUQgbV9kb3du
bG9hZElEOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAKICAgICBS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOwpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZElELmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZElELmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkSUQuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEb3dubG9hZElEX2gK
KyNkZWZpbmUgRG93bmxvYWRJRF9oCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCisjaW5j
bHVkZSAiQXJndW1lbnREZWNvZGVyLmgiCisjaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IERvd25sb2FkSUQgeworcHVibGljOgorICAgIERvd25sb2FkSUQoKQorICAgIHsKKyAgICB9CisK
KyAgICBEb3dubG9hZElEKHVpbnQ2NF90IGRvd25sb2FkSUQpCisgICAgICAgIDogbV9kb3dubG9h
ZElEKGRvd25sb2FkSUQpCisgICAgeworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShEb3du
bG9hZElEIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2Rvd25sb2FkSUQgPT0gb3RoZXIubV9kb3du
bG9hZElEOyB9CisKKyAgICB1aW50NjRfdCBkb3dubG9hZElEKCkgY29uc3QgeyByZXR1cm4gbV9k
b3dubG9hZElEOyB9Citwcml2YXRlOgorICAgIHVpbnQ2NF90IG1fZG93bmxvYWRJRCB7IDAgfTsK
K307CisKK30KKworbmFtZXNwYWNlIElQQyB7CisgICAgCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYktpdDo6RG93bmxvYWRJRD4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShB
cmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYktpdDo6RG93bmxvYWRJRCYgZG93bmxv
YWRJRCkKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgZG93bmxvYWRJRC5kb3dubG9hZElEKCk7
CisgICAgfQorICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIs
IFdlYktpdDo6RG93bmxvYWRJRCYgZG93bmxvYWRJRCkKKyAgICB7CisgICAgICAgIHVpbnQ2NF90
IGlkOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlkKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBkb3dubG9hZElEID0gV2ViS2l0OjpEb3dubG9hZElEKGRvd25s
b2FkSUQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfTsKKworfQor
CituYW1lc3BhY2UgV1RGIHsKKyAgICAKK3N0cnVjdCBEb3dubG9hZElESGFzaCB7CisgICAgc3Rh
dGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViS2l0OjpEb3dubG9hZElEJiBkKSB7IHJldHVybiBp
bnRIYXNoKGQuZG93bmxvYWRJRCgpKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdl
YktpdDo6RG93bmxvYWRJRCYgYSwgY29uc3QgV2ViS2l0OjpEb3dubG9hZElEJiBiKSB7IHJldHVy
biBhLmRvd25sb2FkSUQoKSA9PSBiLmRvd25sb2FkSUQoKTsgfQorICAgIHN0YXRpYyBjb25zdCBi
b29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6RG93bmxvYWRJRD4gOiBHZW5lcmljSGFzaFRyYWl0
czxXZWJLaXQ6OkRvd25sb2FkSUQ+IHsKKyAgICBzdGF0aWMgV2ViS2l0OjpEb3dubG9hZElEIGVt
cHR5VmFsdWUoKSB7IHJldHVybiBXZWJLaXQ6OkRvd25sb2FkSUQoMCk7IH0KKyAgICAKKyAgICBz
dGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViS2l0OjpEb3dubG9hZElEJiBzbG90
KSB7IHNsb3QgPSBXZWJLaXQ6OkRvd25sb2FkSUQoc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRf
dD46Om1heCgpKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYktp
dDo6RG93bmxvYWRJRCYgc2xvdCkgeyByZXR1cm4gc2xvdC5kb3dubG9hZElEKCkgPT0gc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOyB9Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3Qg
RGVmYXVsdEhhc2g8V2ViS2l0OjpEb3dubG9hZElEPiB7CisgICAgdHlwZWRlZiBEb3dubG9hZElE
SGFzaCBIYXNoOworfTsKKworfQorI2VuZGlmIC8qIERvd25sb2FkSURfaCAqLwpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNw
cAkocmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIERvd25s
b2FkTWFuYWdlcjo6RG93bmxvYWRNYW5hZ2VyKENsaWVudCoKIHsKIH0KIAotdm9pZCBEb3dubG9h
ZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZG93
bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBEb3dubG9hZE1h
bmFnZXI6OnN0YXJ0RG93bmxvYWQoU2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3du
bG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAjaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKICAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIERvd25sb2Fk
TWFuYWdlcjo6c3RhcnREb3dubG9hZChTZXNzCiB9CiAKICNpZiAhVVNFKE5FVFdPUktfU0VTU0lP
TikKLXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0SGFuZGxlVG9Eb3dubG9hZCh1aW50NjRf
dCBkb3dubG9hZElELCBSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBEb3du
bG9hZE1hbmFnZXI6OmNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJ
RCwgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBhdXRvIGRvd25sb2Fk
ID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIHJlcXVlc3Qp
OwogCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0SGFuZGxl
VG9Eb3cKIH0KICNlbmRpZgogCi12b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQo
V2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBEb3dubG9hZE1h
bmFnZXI6OnJlc3VtZURvd25sb2FkKFNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQog
ewogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTgy
LDcgKzgyLDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFdlYgogI2Vu
ZGlmCiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBk
b3dubG9hZElEKQordm9pZCBEb3dubG9hZE1hbmFnZXI6OmNhbmNlbERvd25sb2FkKERvd25sb2Fk
SUQgZG93bmxvYWRJRCkKIHsKICAgICBEb3dubG9hZCogZG93bmxvYWQgPSBtX2Rvd25sb2Fkcy5n
ZXQoZG93bmxvYWRJRCk7CiAgICAgaWYgKCFkb3dubG9hZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAkocmV2aXNpb24gMTk0
MjE4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBEb3dubG9hZE1hbmFn
ZXJfaAogI2RlZmluZSBEb3dubG9hZE1hbmFnZXJfaAogCisjaW5jbHVkZSAiRG93bmxvYWQuaCIK
ICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC02OSwxNCArNzAsMTQgQEAg
cHVibGljOgogCiAgICAgZXhwbGljaXQgRG93bmxvYWRNYW5hZ2VyKENsaWVudCopOwogCi0gICAg
dm9pZCBzdGFydERvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBzdGFydERvd25s
b2FkKFdlYkNvcmU6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgdm9pZCBjb252ZXJ0
SGFuZGxlVG9Eb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKERvd25s
b2FkSUQsIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogI2VuZGlmCiAKLSAg
ICB2b2lkIHJlc3VtZURvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgZG93bmxv
YWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAgIHZvaWQgcmVzdW1l
RG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJik7CiAKLSAgICB2b2lkIGNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRv
d25sb2FkSUQpOworICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7CiAKICAgICB2
b2lkIGRvd25sb2FkRmluaXNoZWQoRG93bmxvYWQqKTsKICAgICBib29sIGlzRG93bmxvYWRpbmco
KSBjb25zdCB7IHJldHVybiAhbV9kb3dubG9hZHMuaXNFbXB0eSgpOyB9CkBAIC05MCw3ICs5MSw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBDbGllbnQqIG1fY2xpZW50OwotICAgIEhhc2hN
YXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4+IG1fZG93bmxvYWRzOworICAg
IEhhc2hNYXA8RG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPERvd25sb2FkPj4gbV9kb3dubG9h
ZHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxNSw3
ICsyMDE1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAg
IGlmIChhY3Rpb24gPT0gUG9saWN5SWdub3JlKQogICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuY2xl
YXJQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbik7CiAKLSAgICB1aW50NjRfdCBkb3du
bG9hZElEID0gMDsKKyAgICBEb3dubG9hZElEIGRvd25sb2FkSUQgPSB7IH07CiAgICAgaWYgKGFj
dGlvbiA9PSBQb2xpY3lEb3dubG9hZCkgewogICAgICAgICAvLyBDcmVhdGUgYSBkb3dubG9hZCBw
cm94eS4KICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgZG93bmxv
YWRSZXF1ZXN0IGlzIG5ldmVyIGVtcHR5LgpAQCAtMzI1MCw3ICszMjUwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmZyYW1lRGlkQmVjb21lRnJhbWVTZQogICAgICAgICBtX2ZyYW1lU2V0TGFyZ2Vz
dEZyYW1lID0gdmFsdWUgPyBtX21haW5GcmFtZSA6IDA7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgYm9vbCYgcmVjZWl2
ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBuZXdOYXZpZ2F0aW9uSUQsIHVpbnQ2NF90JiBwb2xp
Y3lBY3Rpb24sIHVpbnQ2NF90JiBkb3dubG9hZElEKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgdWludDY0
X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbmF0
aW5nRnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBv
cmlnaW5hbFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBib29sJiByZWNlaXZlZFBvbGlj
eUFjdGlvbiwgdWludDY0X3QmIG5ld05hdmlnYXRpb25JRCwgdWludDY0X3QmIHBvbGljeUFjdGlv
biwgRG93bmxvYWRJRCYgZG93bmxvYWRJRCkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHBy
b3RlY3RvcihtX3BhZ2VDbGllbnQpOwogCkBAIC0zMzU5LDcgKzMzNTksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uCiAgICAgICAgIG1fcG9saWN5Q2xpZW50LT5k
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNwb25zZSwgcmVxdWVzdCwg
Y2FuU2hvd01JTUVUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgcG9saWN5
QWN0aW9uLCB1aW50NjRfdCYgZG93bmxvYWRJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlw
ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBib29sJiBy
ZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgRG93bmxvYWRJRCYg
ZG93bmxvYWRJRCkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VD
bGllbnQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShy
ZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBdXRvQ29ycmVj
dGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRl
eHRNZW51Q29udGV4dERhdGEuaCIKKyNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAi
RHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCiAj
aW5jbHVkZSAiRWRpdGluZ1JhbmdlLmgiCkBAIC0xMTMzLDEwICsxMTM0LDEwIEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7
CiAKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiwg
dWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIG9yaWdpbmF0aW5nRnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiwgYm9vbCYgcmVjZWl2
ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBuZXdOYXZpZ2F0aW9uSUQsIHVpbnQ2NF90JiBwb2xp
Y3lBY3Rpb24sIHVpbnQ2NF90JiBkb3dubG9hZElEKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlE
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbmF0aW5nRnJhbWVTZWN1
cml0eU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGNvbnN0IFVzZXJEYXRhJiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBu
ZXdOYXZpZ2F0aW9uSUQsIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIERvd25sb2FkSUQmKTsKICAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNv
bnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVz
ZXJEYXRhJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmln
aW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
Y29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwg
dWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQpOworICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJv
b2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYs
IGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCBEb3du
bG9hZElEJik7CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKIAog
ICAgIHZvaWQgd2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNl
RnJhbWVJRCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB0ZXh0Rmll
bGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNjE2
LDEyICsxNjE3LDEyIEBAIHByaXZhdGU6CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0KiBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdDsKICAgICBib29sIG1fc3luY01p
bWVUeXBlUG9saWN5QWN0aW9uSXNWYWxpZDsKICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gbV9z
eW5jTWltZVR5cGVQb2xpY3lBY3Rpb247Ci0gICAgdWludDY0X3QgbV9zeW5jTWltZVR5cGVQb2xp
Y3lEb3dubG9hZElEOworICAgIERvd25sb2FkSUQgbV9zeW5jTWltZVR5cGVQb2xpY3lEb3dubG9h
ZElEOwogCiAgICAgYm9vbCBtX2luRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjsKICAg
ICBib29sIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb25Jc1ZhbGlkOwogICAgIFdl
YkNvcmU6OlBvbGljeUFjdGlvbiBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uOwot
ICAgIHVpbnQ2NF90IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZElEOworICAg
IERvd25sb2FkSUQgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkSUQ7CiAgICAg
Ym9vbCBtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24geyBmYWxzZSB9OwogCiAgICAgRGVxdWU8TmF0aXZlV2ViS2V5Ym9hcmRFdmVudD4gbV9rZXlF
dmVudFF1ZXVlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUs
OCArMTA1LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAgICAgIyBQ
b2xpY3kgbWVzc2FnZXMKLSAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3Qg
ZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5
T3JpZ2luLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChib29sIHJlY2VpdmVkUG9saWN5
QWN0aW9uLCB1aW50NjRfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25sb2FkSUQpCi0gICAg
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgc3RydWN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4sIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdh
dGlvbklELCB1aW50NjRfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25sb2FkSUQpCisgICAg
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJE
YXRhIHVzZXJEYXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgcG9s
aWN5QWN0aW9uLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCkKKyAgICBEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIG9yaWdpbmF0aW5nRnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+
IChib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIHVp
bnQ2NF90IHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpCiAgICAg
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgc3RydWN0IFdl
YktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVtZW50
UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0Rvd25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5jcHAJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNyArNDAsNyBAQCBXS1R5cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlEKCkKIAogdWludDY0X3Qg
V0tEb3dubG9hZEdldElEKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCiB7Ci0gICAgcmV0dXJuIHRv
SW1wbChkb3dubG9hZCktPmRvd25sb2FkSUQoKTsKKyAgICByZXR1cm4gdG9JbXBsKGRvd25sb2Fk
KS0+ZG93bmxvYWRJRCgpLmRvd25sb2FkSUQoKTsKIH0KIAogV0tVUkxSZXF1ZXN0UmVmIFdLRG93
bmxvYWRDb3B5UmVxdWVzdChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvV0tSZXRhaW5QdHIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9XS1JldGFpblB0ci5oCShyZXZpc2lvbiAxOTQy
MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9XS1JldGFpblB0ci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLVHlwZS5o
PgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RG93bmxvYWRQcm94eT4gY3JlYXRlKERvd25sb2FkUHJveHlNYXAmLCBX
ZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIH5E
b3dubG9hZFByb3h5KCk7CiAKLSAgICB1aW50NjRfdCBkb3dubG9hZElEKCkgY29uc3QgeyByZXR1
cm4gbV9kb3dubG9hZElEOyB9CisgICAgRG93bmxvYWRJRCBkb3dubG9hZElEKCkgY29uc3QgeyBy
ZXR1cm4gbV9kb3dubG9hZElEOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CiAgICAgQVBJOjpEYXRhKiBy
ZXN1bWVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bWVEYXRhLmdldCgpOyB9CiAKQEAgLTg3
LDcgKzg4LDcgQEAgcHJpdmF0ZToKIAogICAgIERvd25sb2FkUHJveHlNYXAmIG1fZG93bmxvYWRQ
cm94eU1hcDsKICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+IG1fcHJvY2Vzc1Bvb2w7Ci0gICAg
dWludDY0X3QgbV9kb3dubG9hZElEOworICAgIERvd25sb2FkSUQgbV9kb3dubG9hZElEOwogCiAg
ICAgUmVmUHRyPEFQSTo6RGF0YT4gbV9yZXN1bWVEYXRhOwogICAgIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCBtX3JlcXVlc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAJKHJldmlzaW9uIDE5NDIxOCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE4ICs0OSwxOCBAQCBEb3dubG9hZFByb3h5KiBEb3du
bG9hZFByb3h5TWFwOjpjcmVhdGVECiAgICAgUmVmUHRyPERvd25sb2FkUHJveHk+IGRvd25sb2Fk
UHJveHkgPSBEb3dubG9hZFByb3h5OjpjcmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJj
ZVJlcXVlc3QpOwogICAgIG1fZG93bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9hZElE
KCksIGRvd25sb2FkUHJveHkpOwogCi0gICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OkRvd25sb2FkUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZG93bmxvYWRQ
cm94eS0+ZG93bmxvYWRJRCgpLCAqZG93bmxvYWRQcm94eSk7CisgICAgbV9wcm9jZXNzLT5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLmRvd25sb2FkSUQoKSwgKmRvd25sb2Fk
UHJveHkpOwogCiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHkuZ2V0KCk7CiB9CiAKIHZvaWQgRG93
bmxvYWRQcm94eU1hcDo6ZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZFByb3h5KiBkb3dubG9hZFBy
b3h5KQogewotICAgIHVpbnQ2NF90IGRvd25sb2FkSUQgPSBkb3dubG9hZFByb3h5LT5kb3dubG9h
ZElEKCk7CisgICAgYXV0byBkb3dubG9hZElEID0gZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgp
OwogCiAgICAgQVNTRVJUKG1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKIAotICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRvd25sb2FkSUQpOworICAgIG1fcHJvY2Vzcy0+cmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpKTsKICAgICBkb3dubG9hZFByb3h5LT5p
bnZhbGlkYXRlKCk7CiAgICAgbV9kb3dubG9hZHMucmVtb3ZlKGRvd25sb2FkSUQpOwogfQpAQCAt
NjgsNyArNjgsNyBAQCB2b2lkIERvd25sb2FkUHJveHlNYXA6OmRvd25sb2FkRmluaXNoZWQoCiB2
b2lkIERvd25sb2FkUHJveHlNYXA6OnByb2Nlc3NEaWRDbG9zZSgpCiB7CiAgICAgLy8gSW52YWxp
ZGF0ZSBhbGwgb3V0c3RhbmRpbmcgZG93bmxvYWRzLgotICAgIGZvciAoSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPERvd25sb2FkUHJveHk+Pjo6aXRlcmF0b3I6OlZhbHVlcyBpdCA9IG1fZG93bmxv
YWRzLmJlZ2luKCkudmFsdWVzKCksIGVuZCA9IG1fZG93bmxvYWRzLmVuZCgpLnZhbHVlcygpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKKyAgICBmb3IgKGF1dG8gaXQgPSBtX2Rvd25sb2Fkcy5iZWdpbigp
LnZhbHVlcygpLCBlbmQgPSBtX2Rvd25sb2Fkcy5lbmQoKS52YWx1ZXMoKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgICgqaXQpLT5wcm9jZXNzRGlkQ2xvc2UoKTsKICAgICAgICAgKCppdCkt
PmludmFsaWRhdGUoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuaAkocmV2aXNpb24gMTk0MjE4KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgRG93bmxvYWRQcm94eU1h
cF9oCiAjZGVmaW5lIERvd25sb2FkUHJveHlNYXBfaAogCisjaW5jbHVkZSAiRG93bmxvYWRJRC5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTU2LDcgKzU3LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIENoaWxkUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3M7Ci0gICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPERvd25sb2FkUHJveHk+PiBtX2Rvd25sb2FkczsKKyAgICBIYXNo
TWFwPERvd25sb2FkSUQsIFJlZlB0cjxEb3dubG9hZFByb3h5Pj4gbV9kb3dubG9hZHM7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTA2NCw2ICsxMDY0LDcgQEAKIAkJNTI3MkIyOEExNDA2OTg1RDAwOTZBNUQwIC8qIFN0
YXRpc3RpY3NEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyNzJCMjg4MTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5jcHAgKi87
IH07CiAJCTUyNzJCMjhCMTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3MkIyODkxNDA2OTg1
RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggKi87IH07CiAJCTUyOEMzN0MxMTk1Q0JCMUEw
MEQ4QjlDQyAvKiBXS0JhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOUYyODEwMTk1OEY0NzgwMDhDQUM3MiAvKiBX
S0JhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1QzA5MzIwNzFDMjM2MDExMDA3QUFBN0MgLyogRG93bmxvYWRJ
RC5oIGluIENvcHkgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMw
OTMyMDYxQzIzNjAxMTAwN0FBQTdDIC8qIERvd25sb2FkSUQuaCAqLzsgfTsKIAkJNUMyMENCOUQx
QkIwRENGQTAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzIwQ0I5QjFCQjBEQ0QyMDA4OTVCQjEg
LyogTmV0d29ya1Nlc3Npb25Db2NvYS5tbSAqLzsgfTsKIAkJNUMyMENCQTAxQkIxRUNEODAwODk1
QkIxIC8qIE5ldHdvcmtTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzIwQ0I5RTFCQjBERDE4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24u
aCAqLzsgfTsKIAkJNUM5Qjg2MTMxQzIyM0VBRjAwMTEwRjM2IC8qIERvd25sb2FkQ29jb2EubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlCODYxMTFD
MjIzRTc5MDAxMTBGMzYgLyogRG93bmxvYWRDb2NvYS5tbSAqLzsgfTsKQEAgLTIwOTYsNiArMjA5
Nyw3IEBACiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gMTsKIAkJCWZpbGVzID0gKAogCQkJCTUxQTYw
QjJBMTgwQ0NFQjUwMEYzQkY1MCAvKiBEYXRhYmFzZVByb2Nlc3MuYXBwIGluIENvcHkgRmlsZXMg
Ki8sCisJCQkJNUMwOTMyMDcxQzIzNjAxMTAwN0FBQTdDIC8qIERvd25sb2FkSUQuaCBpbiBDb3B5
IEZpbGVzICovLAogCQkJCTUxMENDODQ5MTYxM0M4NUMwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vz
cy5hcHAgaW4gQ29weSBGaWxlcyAqLywKIAkJCQlCQ0RFMEFCRjEzMjcyNzA4MDAxMjU5RkIgLyog
UGx1Z2luUHJvY2Vzcy5hcHAgaW4gQ29weSBGaWxlcyAqLywKIAkJCQkxQTUwREI2NjExMEEzRDU3
MDAwRDNGRTUgLyogV2ViUHJvY2Vzcy5hcHAgaW4gQ29weSBGaWxlcyAqLywKQEAgLTMyNTYsNiAr
MzI1OCw3IEBACiAJCTUxRkQxOEI0MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Jlc291cmNl
TG9hZGVyLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3MkIyODgxNDA2OTg1RDAwOTZBNUQwIC8q
IFN0YXRpc3RpY3NEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN0YXRpc3RpY3NEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3MkIy
ODkxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0YXRpc3RpY3NEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDMDkzMjA2MUMyMzYwMTEwMDdBQUE3QyAvKiBEb3dubG9hZElELmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERvd25sb2FkSUQuaDsgcGF0aCA9IERvd25sb2Fkcy9E
b3dubG9hZElELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMjBDQjlCMUJCMERD
RDIwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gTmV0d29ya1Nlc3Npb25Db2NvYS5tbTsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDMjBDQjlFMUJCMEREMTgwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrU2Vzc2lvbi5oOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM5Qjg2MTExQzIyM0U3OTAwMTEwRjM2IC8qIERvd25sb2FkQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEb3dubG9hZENvY29hLm1tOyBw
YXRoID0gRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01NzQ1LDYgKzU3NDgsNyBAQAogCQk1MThFOEVGMjE2QjIwOEY4MDBFOTE0
MjkgLyogRG93bmxvYWRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQk1QzA5MzIwNjFDMjM2MDExMDA3QUFBN0MgLyogRG93bmxvYWRJRC5oICovLAogCQkJ
CTVDOUI4NjBFMUMyMjNFNTQwMDExMEYzNiAvKiBjb2NvYSAqLywKIAkJCQkyREE5NDRBNTE4ODRF
OTNDMDBFRDg2REIgLyogaW9zICovLAogCQkJCTUxOEU4RjA0MTZCMjA5MzcwMEU5MTQyOSAvKiBt
YWMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24g
MTk0MjE4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5NCw3ICs2OTQsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgdWludDY0X3QgbGlz
dGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoV1RGOjptb3ZlKGZ1bmN0aW9u
KSk7CiAgICAgYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbjsKICAgICB1aW50NjRfdCBwb2xpY3lB
Y3Rpb247Ci0gICAgdWludDY0X3QgZG93bmxvYWRJRDsKKyAgICBEb3dubG9hZElEIGRvd25sb2Fk
SUQ7CiAKICAgICB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzID0gSVBDOjpJbmZvcm1QbGF0Zm9ybVBy
b2Nlc3NXaWxsU3VzcGVuZDsKICAgICBpZiAoV2ViUGFnZTo6c3luY2hyb25vdXNNZXNzYWdlc1No
b3VsZFNwaW5SdW5Mb29wKCkpCkBAIC03NzUsNyArNzc1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb247CiAg
ICAgdWludDY0X3QgbmV3TmF2aWdhdGlvbklEOwogICAgIHVpbnQ2NF90IHBvbGljeUFjdGlvbjsK
LSAgICB1aW50NjRfdCBkb3dubG9hZElEOworICAgIERvd25sb2FkSUQgZG93bmxvYWRJRDsKIAog
ICAgIFJlZlB0cjxXZWJGcmFtZT4gb3JpZ2luYXRpbmdGcmFtZTsKICAgICBzd2l0Y2ggKGFjdGlv
bi0+bmF2aWdhdGlvblR5cGUoKSkgewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTUsMTIgKzIxNSwxMiBAQCB2b2lkIFdlYkZyYW1lOjppbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIo
CiAgICAgaWYgKCFtX3BvbGljeUxpc3RlbmVySUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cG9saWN5RG93bmxvYWRJRCA9IDA7CisgICAgbV9wb2xpY3lEb3dubG9hZElEID0geyB9OwogICAg
IG1fcG9saWN5TGlzdGVuZXJJRCA9IDA7CiAgICAgbV9wb2xpY3lGdW5jdGlvbiA9IDA7CiB9CiAK
LXZvaWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBsaXN0ZW5l
cklELCBQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90
IGRvd25sb2FkSUQpCit2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWlu
dDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBEb3dubG9hZElEIGRvd25sb2FkSUQpCiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjQ4LDEwICsyNDgsMTAgQEAgdm9pZCBXZWJGcmFtZTo6ZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKAogCiB2b2lkIFdlYkZyYW1lOjpzdGFydERvd25sb2FkKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQobV9wb2xp
Y3lEb3dubG9hZElEKTsKKyAgICBBU1NFUlQobV9wb2xpY3lEb3dubG9hZElELmRvd25sb2FkSUQo
KSk7CiAKLSAgICB1aW50NjRfdCBwb2xpY3lEb3dubG9hZElEID0gbV9wb2xpY3lEb3dubG9hZElE
OwotICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IDA7CisgICAgYXV0byBwb2xpY3lEb3dubG9hZElE
ID0gbV9wb2xpY3lEb3dubG9hZElEOworICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKIAog
ICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKICAgICBTZXNz
aW9uSUQgc2Vzc2lvbklEID0gcGFnZSgpID8gcGFnZSgpLT5zZXNzaW9uSUQoKSA6IFNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpOwpAQCAtMjYwLDEwICsyNjAsMTAgQEAgdm9pZCBXZWJGcmFt
ZTo6c3RhcnREb3dubG9hZChjb25zdCBXZWJDbwogCiB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyLCBT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIEFTU0VSVChtX3BvbGljeURvd25s
b2FkSUQpOworICAgIEFTU0VSVChtX3BvbGljeURvd25sb2FkSUQuZG93bmxvYWRJRCgpKTsKIAot
ICAgIHVpbnQ2NF90IHBvbGljeURvd25sb2FkSUQgPSBtX3BvbGljeURvd25sb2FkSUQ7Ci0gICAg
bV9wb2xpY3lEb3dubG9hZElEID0gMDsKKyAgICBhdXRvIHBvbGljeURvd25sb2FkSUQgPSBtX3Bv
bGljeURvd25sb2FkSUQ7CisgICAgbV9wb2xpY3lEb3dubG9hZElEID0geyB9OwogCiAgICAgU3Vi
cmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlciA9IGRvY3VtZW50TG9hZGVyLT5tYWlu
UmVzb3VyY2VMb2FkZXIoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmgJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjZGVmaW5lIFdlYkZyYW1lX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1
ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRl
ICJXS0Jhc2UuaCIKICNpbmNsdWRlICJXZWJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtODAsNyAr
ODEsNyBAQCBwdWJsaWM6CiAKICAgICB1aW50NjRfdCBzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNv
cmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pOwogICAgIHZvaWQgaW52YWxpZGF0ZVBvbGljeUxpc3Rl
bmVyKCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVu
ZXJJRCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2
NF90IGRvd25sb2FkSUQpOworICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2
NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBEb3dubG9hZElEKTsKIAogICAgIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9E
b3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIFdlYkNvcmU6OlNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpOwpAQCAtMTcwLDcgKzE3MSw3IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBtX3Bv
bGljeUxpc3RlbmVySUQ7CiAgICAgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiBtX3BvbGlj
eUZ1bmN0aW9uOwotICAgIHVpbnQ2NF90IG1fcG9saWN5RG93bmxvYWRJRDsKKyAgICBEb3dubG9h
ZElEIG1fcG9saWN5RG93bmxvYWRJRDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJGcmFtZUxv
YWRlckNsaWVudD4gbV9mcmFtZUxvYWRlckNsaWVudDsKICAgICBMb2FkTGlzdGVuZXIqIG1fbG9h
ZExpc3RlbmVyOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkocmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDA4LDcgKzI0MDgsNyBA
QCB2b2lkIFdlYlBhZ2U6OnNldFNlc3Npb25JRChTZXNzaW9uSUQgc2VzCiAgICAgbV9wYWdlLT5z
ZXRTZXNzaW9uSUQoc2Vzc2lvbklEKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMy
X3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90IGRvd25sb2Fk
SUQpCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElEKQogewogICAgIFdlYkZyYW1lKiBm
cmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIGlm
ICghZnJhbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJBUElJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIkFQ
SUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJGaW5kQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW1h
Z2VPcHRpb25zLmgiCkBAIC0xMDQzLDcgKzEwNDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAg
ICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAK
LSAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgdWludDY0X3QgZG93bmxvYWRJRCk7CisgICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9s
aWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQpOwogICAgIHZvaWQg
c2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVuY29k
aW5nTmFtZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5NDIxOCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lS
ZWNlaXZlciB7CiAKICAgICBEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgYmFja0Zv
cndhcmRJdGVtSUQpCiAKLSAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQpCisgICAgRGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90
IHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQg
ZG93bmxvYWRJRCkKIAogICAgIENsZWFyU2VsZWN0aW9uKCkKICAgICBSZXN0b3JlU2VsZWN0aW9u
SW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267594</attachid>
            <date>2015-12-17 16:15:34 -0800</date>
            <delta_ts>2015-12-17 16:21:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152401-20151217161456.patch</filename>
            <type>text/plain</type>
            <size>51898</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NDI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk4IEBACisyMDE1LTEyLTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHR5cGVz
IGZvciBEb3dubG9hZElEIGFuZCBUYXNrSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG93bmxvYWRJRCBhbmQgVGFza0lkZW50aWZpZXIg
dXNlZCB0byBib3RoIGJlIGp1c3QgdWludDY0X3Qncy4KKyAgICAgICAgSXQgaXMgY29uZnVzaW5n
IHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlbSwgc28gbm93IHRoZXkgYm90aCBoYXZlIG5hbWVz
LgorICAgICAgICBXZSBuZWVkIGEgSGFzaFNldDxUYXNrSWRlbnRpZmllciwgRG93bmxvYWRJRD4g
aW5zdGVhZCBvZiBhIEhhc2hTZXQ8dWludDY0X3QsIHVpbnQ2NF90Pi4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6c3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxv
YWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRvd25sb2Fk
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWVEb3dubG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3dubG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3Rp
Y3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFZhbHVlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNyZWF0ZURhdGFUYXNrV2l0aFJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZGF0YVRhc2tGb3JJZGVudGlmaWVyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpyZXN1bWUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2s6OnRhc2tJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OkRvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6Om1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKToKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmg6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkb3dubG9hZElEKToKKyAgICAgICAgKiBTaGFyZWQv
RG93bmxvYWRzL0Rvd25sb2FkSUQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
SUQ6OkRvd25sb2FkSUQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZElEOjpvcGVyYXRvcj09
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRJRDo6ZG93bmxvYWRJRCk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViS2l0OjpEb3dubG9hZElEPjo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvd25sb2FkSUQ+OjpkZWNvZGUpOgorICAgICAg
ICAoV1RGOjpEb3dubG9hZElESGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6OkRvd25sb2FkSURI
YXNoOjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViS2l0OjpEb3dubG9hZElE
Pjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViS2l0OjpEb3dubG9h
ZElEPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxX
ZWJLaXQ6OkRvd25sb2FkSUQ+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogU2hhcmVkL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1h
bmFnZXI6OkRvd25sb2FkTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdl
cjo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6Y29u
dmVydEhhbmRsZVRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6
OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjYW5j
ZWxEb3dubG9hZCk6CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
aDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjppc0Rvd25sb2FkaW5nKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5jcHA6CisgICAgICAgIChXS0Rvd25s
b2FkR2V0SUQpOgorICAgICAgICAoV0tEb3dubG9hZENvcHlSZXF1ZXN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2NwcC9XS1JldGFpblB0ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5Ojpk
b3dubG9hZElEKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6cmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnJlc3VtZURhdGEpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZFByb3h5TWFwOjpkb3dubG9hZEZpbmlzaGVkKToKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWRQcm94eU1hcDo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGlj
eURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29t
ZUZyYW1lU2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmludmFsaWRh
dGVQb2xpY3lMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpkaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c3RhcnREb3dubG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c2V0U2Vzc2lvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
CiAyMDE1LTEyLTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUHJvZ3Jlc3MgdG93YXJkcyBpbXBsZW1lbnRpbmcgZG93bmxvYWRzIHdpdGgg
TmV0d29ya1Nlc3Npb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDEyICsxNzcsMTIg
QEAgc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlcwogICAgIHJldHVybiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKFNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQo
U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRv
d25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1
ZXN0KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1h
aW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBkb3dubG9hZElELCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IG1haW5S
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCk7
CiAgICAgaWYgKCFtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllcikgewpJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJCbG9ja2luZ1Jlc3BvbnNlTWFwLmgiCiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAjaW5jbHVkZSAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VMb2FkUHJpb3JpdHkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAt
NzYsOCArNzcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlTG9hZElkZW50aWZpZXIoUmVz
b3VyY2VMb2FkSWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFJlc291cmNl
TG9hZElkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2Vp
dmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RV
UkwpOwotICAgIHZvaWQgc3RhcnREb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90
IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgIHZvaWQg
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCwgdWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKKyAgICB2b2lkIHN0YXJ0RG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklELCBEb3du
bG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIGNvbnZl
cnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90
IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAg
ICB2b2lkIGNvb2tpZXNGb3JET00oV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFN0cmluZyYgcmVzdWx0KTsKICAg
ICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjksOCAr
MjksOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAgICAgU2V0
RGVmZXJzTG9hZGluZyh1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBib29sIGRlZmVy
cykKICAgICBQcmVmZXRjaEROUyhTdHJpbmcgaG9zdG5hbWUpCiAKLSAgICBTdGFydERvd25sb2Fk
KFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQotICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCisg
ICAgU3RhcnREb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRv
d25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCisg
ICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6OkRv
d25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAKICAgICBDb29raWVzRm9yRE9NKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJD
b3JlOjpVUkwgdXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkKICAgICBTZXRDb29raWVzRnJvbURPTShX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2Vi
Q29yZTo6VVJMIHVybCwgU3RyaW5nIGNvb2tpZVN0cmluZykKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE5NDIx
OCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDMyLDE3ICs0MzIsMTcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGbwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdChTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QoU2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxv
YWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAg
ZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJl
cXVlc3QpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1bWVEb3dubG9hZChTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZXN1bWVEb3dubG9hZChTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRv
d25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSkKIHsKICAgICBkb3dubG9hZE1hbmFnZXIoKS5yZXN1bWVEb3dubG9h
ZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIHBhdGgsIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3dubG9hZCh1aW50
NjRfdCBkb3dubG9hZElEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQoRG93
bmxvYWRJRCBkb3dubG9hZElEKQogewogICAgIGRvd25sb2FkTWFuYWdlcigpLmNhbmNlbERvd25s
b2FkKGRvd25sb2FkSUQpOwogfQpAQCAtNDc0LDcgKzQ3NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmdldE5ldHdvcmtQcm9jZXNzU3QKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6RGlkR2V0U3RhdGlzdGljcyhkYXRhLCBjYWxs
YmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNz
YWdlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9p
ZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFNob3Vs
ZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAgICAgICByZXR1cm47
CkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01l
c3NhZwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OkxvZ1NhbXBsZWREaWFnbm9zdGljTWVzc2FnZSh3ZWJQYWdlSUQsIG1l
c3NhZ2UsIGRlc2NyaXB0aW9uKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0Rp
YWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNh
bXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3Vs
dCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgU2hvdWxk
U2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50
OjpzaG91bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVz
c2FnCiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6TG9nU2FtcGxlZERpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh3ZWJQ
YWdlSUQsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCByZXN1bHQpLCAwKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3Qgd2ViUGFn
ZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNv
bnN0IFN0cmluZyYgdmFsdWUsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRf
dCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlw
dGlvbiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsK
ICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBsaW5n
KHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMTk0MjE4KQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQ5LDkgKzE0OSw5IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHRha2UgYSBzZXNzaW9uIElEIHNvIHdlIGNhbiBpZGVudGlmeSB3aGljaCBkaXNrIGNhY2hl
IHRvIGRlbGV0ZS4KICAgICB2b2lkIGNsZWFyRGlza0NhY2hlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBj
b21wbGV0aW9uSGFuZGxlcik7CiAKLSAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOwotICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50
NjRfdCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7Ci0gICAg
dm9pZCBjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKTsKKyAgICB2b2lkIGRvd25s
b2FkUmVxdWVzdChXZWJDb3JlOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoV2ViQ29yZTo6U2Vz
c2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEs
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7Cisg
ICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElEKTsKICAgICB2b2lkIHNldENhY2hlTW9k
ZWwodWludDMyX3QpOwogICAgIHZvaWQgYWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JI
b3N0KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGNvbnN0IFN0cmluZyYgaG9zdCk7
CiAgICAgdm9pZCBzZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihib29sKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtMzksOSArMzksOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNl
aXZlCiAgICAgRGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3Qgd2Vic2l0ZURhdGFUeXBlcywgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIERlbGV0ZVdl
YnNpdGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCB3ZWJzaXRlRGF0YVR5cGVzLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBv
cmlnaW5zLCBWZWN0b3I8U3RyaW5nPiBjb29raWVIb3N0TmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiAKLSAgICBEb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCi0g
ICAgUmVzdW1lRG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
ZG93bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQot
ICAgIENhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCisgICAgRG93bmxvYWRSZXF1
ZXN0KFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKKyAgICBSZXN1bWVEb3du
bG9hZChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQorICAg
IENhbmNlbERvd25sb2FkKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElEKQogCiAgICAgU2V0
UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIGZsYWcpCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmgJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDExICsyNiwxNCBAQAogI2lmbmRl
ZiBOZXR3b3JrU2Vzc2lvbl9oCiAjZGVmaW5lIE5ldHdvcmtTZXNzaW9uX2gKIAorI2lmIFBMQVRG
T1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb247CiBPQkpDX0NMQVNTIE5TVVJMU2Vz
c2lvbkRhdGFUYXNrOwogT0JKQ19DTEFTUyBOU09wZXJhdGlvblF1ZXVlOwogT0JKQ19DTEFTUyBX
S05ldHdvcmtTZXNzaW9uRGVsZWdhdGU7CisjZW5kaWYKIAorI2luY2x1ZGUgIkRvd25sb2FkLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtODAsNyArODMsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWwoKTsKICAgICB2b2lkIHJlc3VtZSgpOwogCi0gICAg
dWludDY0X3QgdGFza0lkZW50aWZpZXIoKTsKKyAgICB0eXBlZGVmIHVpbnQ2NF90IFRhc2tJZGVu
dGlmaWVyOworICAgIFRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyKCk7CiAKICAgICB+TmV0
d29ya0RhdGFUYXNrKCk7CiAKQEAgLTExMiwxMSArMTE2LDEyIEBAIHB1YmxpYzoKICAgICAKICAg
ICBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGVEYXRhVGFza1dpdGhSZXF1ZXN0KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIE5ldHdvcmtTZXNzaW9uVGFza0NsaWVudCYpOwogCi0g
ICAgTmV0d29ya0RhdGFUYXNrKiBkYXRhVGFza0ZvcklkZW50aWZpZXIodWludDY0X3QpOworICAg
IE5ldHdvcmtEYXRhVGFzayogZGF0YVRhc2tGb3JJZGVudGlmaWVyKE5ldHdvcmtEYXRhVGFzazo6
VGFza0lkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNlc3Npb25JRCBtX3Nl
c3Npb25JRDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBOZXR3b3JrRGF0YVRhc2sqPiBtX2RhdGFU
YXNrTWFwOworICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmllciwgTmV0
d29ya0RhdGFUYXNrKj4gbV9kYXRhVGFza01hcDsKKyAgICBIYXNoTWFwPE5ldHdvcmtEYXRhVGFz
azo6VGFza0lkZW50aWZpZXIsIERvd25sb2FkSUQ+IG1fZG93bmxvYWRNYXA7CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFJl
dGFpblB0cjxXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGU+IG1fc2Vzc2lvbkRlbGVnYXRlOwpJbmRl
eDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDAsNyArMjQwLDcgQEAgUmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya1Nlc3Np
b246OmNyZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtEYXRhVGFzaygqdGhpcywg
Y2xpZW50LCBbbV9zZXNzaW9uIGRhdGFUYXNrV2l0aFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVl
c3QoV2ViQ29yZTo6VXBkYXRlSFRUUEJvZHkpXSkpOwogfQogCi1OZXR3b3JrRGF0YVRhc2sqIE5l
dHdvcmtTZXNzaW9uOjpkYXRhVGFza0ZvcklkZW50aWZpZXIodWludDY0X3QgdGFza0lkZW50aWZp
ZXIpCitOZXR3b3JrRGF0YVRhc2sqIE5ldHdvcmtTZXNzaW9uOjpkYXRhVGFza0ZvcklkZW50aWZp
ZXIoTmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmllcikKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHJldHVybiBtX2RhdGFUYXNrTWFwLmdldCh0
YXNrSWRlbnRpZmllcik7CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2s6
OnJlc3VtZSgpCiAgICAgW21fdGFzayByZXN1bWVdOwogfQogCi11aW50NjRfdCBOZXR3b3JrRGF0
YVRhc2s6OnRhc2tJZGVudGlmaWVyKCkKK2F1dG8gTmV0d29ya0RhdGFUYXNrOjp0YXNrSWRlbnRp
ZmllcigpIC0+IFRhc2tJZGVudGlmaWVyCiB7CiAgICAgcmV0dXJuIFttX3Rhc2sgdGFza0lkZW50
aWZpZXJdOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3du
bG9hZC5jcHAJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3du
bG9hZHMvRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0NCw5IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKICNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQotRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRN
YW5hZ2VyLCBjb25zdCBOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgdWludDY0X3QgZG93bmxvYWRJ
RCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorRG93bmxvYWQ6OkRvd25sb2FkKERv
d25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2VyLCBjb25zdCBOZXR3b3JrU2Vzc2lvbiYgc2Vz
c2lvbiwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCiAjZWxzZQotRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRN
YW5hZ2VyLCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCitEb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIs
IERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
I2VuZGlmCiAgICAgOiBtX2Rvd25sb2FkTWFuYWdlcihkb3dubG9hZE1hbmFnZXIpCiAgICAgLCBt
X2Rvd25sb2FkSUQoZG93bmxvYWRJRCkKQEAgLTU1LDcgKzU1LDcgQEAgRG93bmxvYWQ6OkRvd25s
b2FkKERvd25sb2FkTWFuYWdlciYgZG93bgogICAgICwgbV9zZXNzaW9uKHNlc3Npb24pCiAjZW5k
aWYKIHsKLSAgICBBU1NFUlQobV9kb3dubG9hZElEKTsKKyAgICBBU1NFUlQobV9kb3dubG9hZElE
LmRvd25sb2FkSUQoKSk7CiAKICAgICBtX2Rvd25sb2FkTWFuYWdlci5kaWRDcmVhdGVEb3dubG9h
ZCgpOwogfQpAQCAtMTYyLDcgKzE2Miw3IEBAIElQQzo6Q29ubmVjdGlvbiogRG93bmxvYWQ6Om1l
c3NhZ2VTZW5kZXIKIAogdWludDY0X3QgRG93bmxvYWQ6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkKIHsKLSAgICByZXR1cm4gbV9kb3dubG9hZElEOworICAgIHJldHVybiBtX2Rvd25sb2Fk
SUQuZG93bmxvYWRJRCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHJldmlzaW9uIDE5NDIxOCkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBEb3dubG9hZF9oCiAjZGVmaW5lIERvd25s
b2FkX2gKIAorI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVy
LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+CkBAIC03MSwxNCArNzIsMTQgQEAgY2xhc3MgRG93bmxvYWRNYW5hZ2Vy
OwogY2xhc3MgTmV0d29ya0RhdGFUYXNrOwogY2xhc3MgTmV0d29ya1Nlc3Npb247CiBjbGFzcyBX
ZWJQYWdlOwotCisgICAgCiBjbGFzcyBEb3dubG9hZCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5k
ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvd25sb2FkKTsKIHB1YmxpYzoKICNpZiBV
U0UoTkVUV09SS19TRVNTSU9OKQotICAgIERvd25sb2FkKERvd25sb2FkTWFuYWdlciYsIGNvbnN0
IE5ldHdvcmtTZXNzaW9uJiwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7CisgICAgRG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiwgY29uc3QgTmV0
d29ya1Nlc3Npb24mLCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKICNlbHNlCi0gICAgRG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiwgdWludDY0X3QgZG93bmxv
YWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgRG93bmxvYWQoRG93
bmxvYWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik7CiAjZW5kaWYKICAgICB+RG93bmxvYWQoKTsKIApAQCAtOTEsNyArOTIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogICAg
IHZvaWQgY2FuY2VsKCk7CiAKLSAgICB1aW50NjRfdCBkb3dubG9hZElEKCkgY29uc3QgeyByZXR1
cm4gbV9kb3dubG9hZElEOyB9CisgICAgRG93bmxvYWRJRCBkb3dubG9hZElEKCkgY29uc3QgeyBy
ZXR1cm4gbV9kb3dubG9hZElEOyB9CiAKICAgICB2b2lkIGRpZFN0YXJ0KCk7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKTsKQEAgLTEyOCw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cGxhdGZvcm1JbnZhbGlkYXRlKCk7CiAKICAgICBEb3dubG9hZE1hbmFnZXImIG1fZG93bmxvYWRN
YW5hZ2VyOwotICAgIHVpbnQ2NF90IG1fZG93bmxvYWRJRDsKKyAgICBEb3dubG9hZElEIG1fZG93
bmxvYWRJRDsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogCiAgICAg
UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IG1fc2FuZGJveEV4dGVuc2lvbjsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRJRC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRJRC5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZElELmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRG93bmxvYWRJRF9o
CisjZGVmaW5lIERvd25sb2FkSURfaAorCisjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgorI2lu
Y2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgorI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBEb3dubG9hZElEIHsKK3B1YmxpYzoKKyAgICBEb3dubG9hZElEKCkKKyAgICB7CisgICAgfQor
CisgICAgRG93bmxvYWRJRCh1aW50NjRfdCBkb3dubG9hZElEKQorICAgICAgICA6IG1fZG93bmxv
YWRJRChkb3dubG9hZElEKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oRG93
bmxvYWRJRCBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9kb3dubG9hZElEID09IG90aGVyLm1fZG93
bmxvYWRJRDsgfQorCisgICAgdWludDY0X3QgZG93bmxvYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG93bmxvYWRJRDsgfQorcHJpdmF0ZToKKyAgICB1aW50NjRfdCBtX2Rvd25sb2FkSUQgeyAwIH07
Cit9OworCit9CisKK25hbWVzcGFjZSBJUEMgeworICAgIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJLaXQ6OkRvd25sb2FkSUQ+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJLaXQ6OkRvd25sb2FkSUQmIGRvd25s
b2FkSUQpCisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGRvd25sb2FkSUQuZG93bmxvYWRJRCgp
OworICAgIH0KKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBXZWJLaXQ6OkRvd25sb2FkSUQmIGRvd25sb2FkSUQpCisgICAgeworICAgICAgICB1aW50NjRf
dCBpZDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpZCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgZG93bmxvYWRJRCA9IFdlYktpdDo6RG93bmxvYWRJRChkb3du
bG9hZElEKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK307CisKK30K
KworbmFtZXNwYWNlIFdURiB7CisgICAgCitzdHJ1Y3QgRG93bmxvYWRJREhhc2ggeworICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYktpdDo6RG93bmxvYWRJRCYgZCkgeyByZXR1cm4g
aW50SGFzaChkLmRvd25sb2FkSUQoKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBX
ZWJLaXQ6OkRvd25sb2FkSUQmIGEsIGNvbnN0IFdlYktpdDo6RG93bmxvYWRJRCYgYikgeyByZXR1
cm4gYS5kb3dubG9hZElEKCkgPT0gYi5kb3dubG9hZElEKCk7IH0KKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OwordGVtcGxhdGU8
PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJLaXQ6OkRvd25sb2FkSUQ+IDogR2VuZXJpY0hhc2hUcmFp
dHM8V2ViS2l0OjpEb3dubG9hZElEPiB7CisgICAgc3RhdGljIFdlYktpdDo6RG93bmxvYWRJRCBl
bXB0eVZhbHVlKCkgeyByZXR1cm4gV2ViS2l0OjpEb3dubG9hZElEKDApOyB9CisgICAgCisgICAg
c3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYktpdDo6RG93bmxvYWRJRCYgc2xv
dCkgeyBzbG90ID0gV2ViS2l0OjpEb3dubG9hZElEKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0
X3Q+OjptYXgoKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJL
aXQ6OkRvd25sb2FkSUQmIHNsb3QpIHsgcmV0dXJuIHNsb3QuZG93bmxvYWRJRCgpID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKTsgfQorfTsKK3RlbXBsYXRlPD4gc3RydWN0
IERlZmF1bHRIYXNoPFdlYktpdDo6RG93bmxvYWRJRD4geworICAgIHR5cGVkZWYgRG93bmxvYWRJ
REhhc2ggSGFzaDsKK307CisKK30KKyNlbmRpZiAvKiBEb3dubG9hZElEX2ggKi8KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5j
cHAJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMv
RG93bmxvYWRNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBEb3du
bG9hZE1hbmFnZXI6OkRvd25sb2FkTWFuYWdlcihDbGllbnQqCiB7CiB9CiAKLXZvaWQgRG93bmxv
YWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKFNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRv
d25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgRG93bmxvYWRN
YW5hZ2VyOjpzdGFydERvd25sb2FkKFNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93
bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogI2lmIFVTRShORVRX
T1JLX1NFU1NJT04pCiAgICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBEb3dubG9h
ZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoU2VzcwogfQogCiAjaWYgIVVTRShORVRXT1JLX1NFU1NJ
T04pCi12b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udmVydEhhbmRsZVRvRG93bmxvYWQodWludDY0
X3QgZG93bmxvYWRJRCwgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgRG93
bmxvYWRNYW5hZ2VyOjpjb252ZXJ0SGFuZGxlVG9Eb3dubG9hZChEb3dubG9hZElEIGRvd25sb2Fk
SUQsIFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgYXV0byBkb3dubG9h
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCByZXF1ZXN0
KTsKIApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udmVydEhhbmRs
ZVRvRG93CiB9CiAjZW5kaWYKIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2Fk
KFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgRG93bmxvYWRN
YW5hZ2VyOjpyZXN1bWVEb3dubG9hZChTZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkK
IHsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC04
Miw3ICs4Miw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChXZWIKICNl
bmRpZgogfQogCi12b2lkIERvd25sb2FkTWFuYWdlcjo6Y2FuY2VsRG93bmxvYWQodWludDY0X3Qg
ZG93bmxvYWRJRCkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjYW5jZWxEb3dubG9hZChEb3dubG9h
ZElEIGRvd25sb2FkSUQpCiB7CiAgICAgRG93bmxvYWQqIGRvd25sb2FkID0gbV9kb3dubG9hZHMu
Z2V0KGRvd25sb2FkSUQpOwogICAgIGlmICghZG93bmxvYWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgJKHJldmlzaW9uIDE5
NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgRG93bmxvYWRNYW5h
Z2VyX2gKICNkZWZpbmUgRG93bmxvYWRNYW5hZ2VyX2gKIAorI2luY2x1ZGUgIkRvd25sb2FkLmgi
CiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNjksMTQgKzcwLDE0IEBA
IHB1YmxpYzoKIAogICAgIGV4cGxpY2l0IERvd25sb2FkTWFuYWdlcihDbGllbnQqKTsKIAotICAg
IHZvaWQgc3RhcnREb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2Fk
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgc3RhcnREb3du
bG9hZChXZWJDb3JlOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpOwogI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIHZvaWQgY29udmVy
dEhhbmRsZVRvRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBjb252ZXJ0SGFuZGxlVG9Eb3dubG9hZChEb3du
bG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICNlbmRpZgogCi0g
ICAgdm9pZCByZXN1bWVEb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25s
b2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIHJlc3Vt
ZURvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYpOwogCi0gICAgdm9pZCBjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBk
b3dubG9hZElEKTsKKyAgICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2FkSUQpOwogCiAgICAg
dm9pZCBkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkKik7CiAgICAgYm9vbCBpc0Rvd25sb2FkaW5n
KCkgY29uc3QgeyByZXR1cm4gIW1fZG93bmxvYWRzLmlzRW1wdHkoKTsgfQpAQCAtOTAsNyArOTEs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgQ2xpZW50KiBtX2NsaWVudDsKLSAgICBIYXNo
TWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+PiBtX2Rvd25sb2FkczsKKyAg
ICBIYXNoTWFwPERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4+IG1fZG93bmxv
YWRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMTUs
NyArMjAxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KICAg
ICBpZiAoYWN0aW9uID09IFBvbGljeUlnbm9yZSkKICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmNs
ZWFyUGVuZGluZ0FQSVJlcXVlc3RVUkwodHJhbnNhY3Rpb24pOwogCi0gICAgdWludDY0X3QgZG93
bmxvYWRJRCA9IDA7CisgICAgRG93bmxvYWRJRCBkb3dubG9hZElEID0geyB9OwogICAgIGlmIChh
Y3Rpb24gPT0gUG9saWN5RG93bmxvYWQpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQg
cHJveHkuCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZW5zdXJlIHRoYXQgdGhlIGRvd25s
b2FkUmVxdWVzdCBpcyBuZXZlciBlbXB0eS4KQEAgLTMyNTAsNyArMzI1MCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZyYW1lU2UKICAgICAgICAgbV9mcmFtZVNldExhcmdl
c3RGcmFtZSA9IHZhbHVlID8gbV9tYWluRnJhbWUgOiAwOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
b3JpZ2luYXRpbmdGcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1
aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIGJvb2wmIHJlY2Vp
dmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCYgcG9s
aWN5QWN0aW9uLCB1aW50NjRfdCYgZG93bmxvYWRJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW5h
dGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgYm9vbCYgcmVjZWl2ZWRQb2xp
Y3lBY3Rpb24sIHVpbnQ2NF90JiBuZXdOYXZpZ2F0aW9uSUQsIHVpbnQ2NF90JiBwb2xpY3lBY3Rp
b24sIERvd25sb2FkSUQmIGRvd25sb2FkSUQpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIApAQCAtMzM1OSw3ICszMzU5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbgogICAgICAgICBtX3BvbGljeUNsaWVudC0+
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoKnRoaXMsICpmcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3Qs
IGNhblNob3dNSU1FVHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGlj
eUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgYm9vbCYg
cmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIERvd25sb2FkSUQm
IGRvd25sb2FkSUQpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdl
Q2xpZW50KTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAko
cmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQXV0b0NvcnJl
Y3Rpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJDb250
ZXh0TWVudUNvbnRleHREYXRhLmgiCisjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUg
IkRyYWdDb250cm9sbGVyQWN0aW9uLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgog
I2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgpAQCAtMTEzMywxMCArMTEzNCwxMCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQp
OwogCi0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYsIGJvb2wmIHJlY2Vp
dmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCYgcG9s
aWN5QWN0aW9uLCB1aW50NjRfdCYgZG93bmxvYWRJRCk7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJ
RCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lU2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBjb25zdCBVc2VyRGF0YSYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYg
bmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCBEb3dubG9hZElEJik7CiAg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmMo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24s
IHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBkb3dubG9hZElEKTsKKyAgICB2b2lk
IGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBi
b29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEm
LCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgRG93
bmxvYWRJRCYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7CiAK
ICAgICB2b2lkIHdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJj
ZUZyYW1lSUQsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdGV4dEZp
ZWxkVmFsdWVzLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTYx
NiwxMiArMTYxNywxMiBAQCBwcml2YXRlOgogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCogbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3Q7CiAgICAgYm9vbCBtX3N5bmNN
aW1lVHlwZVBvbGljeUFjdGlvbklzVmFsaWQ7CiAgICAgV2ViQ29yZTo6UG9saWN5QWN0aW9uIG1f
c3luY01pbWVUeXBlUG9saWN5QWN0aW9uOwotICAgIHVpbnQ2NF90IG1fc3luY01pbWVUeXBlUG9s
aWN5RG93bmxvYWRJRDsKKyAgICBEb3dubG9hZElEIG1fc3luY01pbWVUeXBlUG9saWN5RG93bmxv
YWRJRDsKIAogICAgIGJvb2wgbV9pbkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb247CiAg
ICAgYm9vbCBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uSXNWYWxpZDsKICAgICBX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24gbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbjsK
LSAgICB1aW50NjRfdCBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWRJRDsKKyAg
ICBEb3dubG9hZElEIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZElEOwogICAg
IGJvb2wgbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uIHsgZmFsc2UgfTsKIAogICAgIERlcXVlPE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ+IG1fa2V5
RXZlbnRRdWV1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTA1
LDggKzEwNSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogICAgICMg
UG9saWN5IG1lc3NhZ2VzCi0gICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90
IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0
eU9yaWdpbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGlj
eUFjdGlvbiwgdWludDY0X3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBkb3dubG9hZElEKQotICAg
IERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmln
YXRpb25BY3Rpb25EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQsIHN0cnVjdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luYXRpbmdGcmFtZVNlY3VyaXR5T3JpZ2luLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1
c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmln
YXRpb25JRCwgdWludDY0X3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBkb3dubG9hZElEKQorICAg
IERlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IHBv
bGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpCisgICAgRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSBvcmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAt
PiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCB1
aW50NjRfdCBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElEKQogICAg
IERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHN0cnVjdCBX
ZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBVbmFibGVUb0ltcGxlbWVu
dFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBX
ZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tEb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDcgKzQwLDcgQEAgV0tUeXBlSUQgV0tEb3dubG9hZEdldFR5cGVJRCgpCiAKIHVpbnQ2NF90
IFdLRG93bmxvYWRHZXRJRChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQogewotICAgIHJldHVybiB0
b0ltcGwoZG93bmxvYWQpLT5kb3dubG9hZElEKCk7CisgICAgcmV0dXJuIHRvSW1wbChkb3dubG9h
ZCktPmRvd25sb2FkSUQoKS5kb3dubG9hZElEKCk7CiB9CiAKIFdLVVJMUmVxdWVzdFJlZiBXS0Rv
d25sb2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvV0tSZXRhaW5QdHIuaAkocmV2aXNpb24gMTk0
MjE4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvV0tSZXRhaW5QdHIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1R5cGUu
aD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCShyZXZpc2lvbiAxOTQyMTgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAjaW5jbHVkZSAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERvd25sb2FkUHJveHk+IGNyZWF0ZShEb3dubG9hZFByb3h5TWFwJiwg
V2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB+
RG93bmxvYWRQcm94eSgpOwogCi0gICAgdWludDY0X3QgZG93bmxvYWRJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fZG93bmxvYWRJRDsgfQorICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fZG93bmxvYWRJRDsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQogICAgIEFQSTo6RGF0YSog
cmVzdW1lRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdW1lRGF0YS5nZXQoKTsgfQogCkBAIC04
Nyw3ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICBEb3dubG9hZFByb3h5TWFwJiBtX2Rvd25sb2Fk
UHJveHlNYXA7CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOwotICAg
IHVpbnQ2NF90IG1fZG93bmxvYWRJRDsKKyAgICBEb3dubG9hZElEIG1fZG93bmxvYWRJRDsKIAog
ICAgIFJlZlB0cjxBUEk6OkRhdGE+IG1fcmVzdW1lRGF0YTsKICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgbV9yZXF1ZXN0OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCShyZXZpc2lvbiAxOTQyMTgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxOCArNDksMTggQEAgRG93bmxvYWRQcm94eSogRG93
bmxvYWRQcm94eU1hcDo6Y3JlYXRlRAogICAgIFJlZlB0cjxEb3dubG9hZFByb3h5PiBkb3dubG9h
ZFByb3h5ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9vbCwgcmVzb3Vy
Y2VSZXF1ZXN0KTsKICAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJ
RCgpLCBkb3dubG9hZFByb3h5KTsKIAotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRvd25sb2Fk
UHJveHktPmRvd25sb2FkSUQoKSwgKmRvd25sb2FkUHJveHkpOworICAgIG1fcHJvY2Vzcy0+YWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKS5kb3dubG9hZElEKCksICpkb3dubG9h
ZFByb3h5KTsKIAogICAgIHJldHVybiBkb3dubG9hZFByb3h5LmdldCgpOwogfQogCiB2b2lkIERv
d25sb2FkUHJveHlNYXA6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQ
cm94eSkKIHsKLSAgICB1aW50NjRfdCBkb3dubG9hZElEID0gZG93bmxvYWRQcm94eS0+ZG93bmxv
YWRJRCgpOworICAgIGF1dG8gZG93bmxvYWRJRCA9IGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQo
KTsKIAogICAgIEFTU0VSVChtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAKLSAg
ICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93bmxvYWRQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkb3dubG9hZElEKTsKKyAgICBtX3Byb2Nlc3MtPnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBkb3dubG9hZElELmRvd25sb2FkSUQoKSk7CiAgICAgZG93bmxvYWRQcm94eS0+
aW52YWxpZGF0ZSgpOwogICAgIG1fZG93bmxvYWRzLnJlbW92ZShkb3dubG9hZElEKTsKIH0KQEAg
LTY4LDcgKzY4LDcgQEAgdm9pZCBEb3dubG9hZFByb3h5TWFwOjpkb3dubG9hZEZpbmlzaGVkKAog
dm9pZCBEb3dubG9hZFByb3h5TWFwOjpwcm9jZXNzRGlkQ2xvc2UoKQogewogICAgIC8vIEludmFs
aWRhdGUgYWxsIG91dHN0YW5kaW5nIGRvd25sb2Fkcy4KLSAgICBmb3IgKEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxEb3dubG9hZFByb3h5Pj46Oml0ZXJhdG9yOjpWYWx1ZXMgaXQgPSBtX2Rvd25s
b2Fkcy5iZWdpbigpLnZhbHVlcygpLCBlbmQgPSBtX2Rvd25sb2Fkcy5lbmQoKS52YWx1ZXMoKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgZm9yIChhdXRvIGl0ID0gbV9kb3dubG9hZHMuYmVnaW4o
KS52YWx1ZXMoKSwgZW5kID0gbV9kb3dubG9hZHMuZW5kKCkudmFsdWVzKCk7IGl0ICE9IGVuZDsg
KytpdCkgewogICAgICAgICAoKml0KS0+cHJvY2Vzc0RpZENsb3NlKCk7CiAgICAgICAgICgqaXQp
LT5pbnZhbGlkYXRlKCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgJKHJldmlzaW9uIDE5NDIxOCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIERvd25sb2FkUHJveHlN
YXBfaAogI2RlZmluZSBEb3dubG9hZFByb3h5TWFwX2gKIAorI2luY2x1ZGUgIkRvd25sb2FkSUQu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC01Niw3ICs1Nyw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBDaGlsZFByb2Nlc3NQcm94eSogbV9wcm9jZXNzOwotICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZlB0cjxEb3dubG9hZFByb3h5Pj4gbV9kb3dubG9hZHM7CisgICAgSGFz
aE1hcDxEb3dubG9hZElELCBSZWZQdHI8RG93bmxvYWRQcm94eT4+IG1fZG93bmxvYWRzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNjQsNiArMTA2NCw3IEBACiAJCTUyNzJCMjhBMTQwNjk4NUQwMDk2QTVEMCAvKiBT
dGF0aXN0aWNzRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MjcyQjI4ODE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuY3BwICov
OyB9OwogCQk1MjcyQjI4QjE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNzJCMjg5MTQwNjk4
NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5oICovOyB9OwogCQk1MjhDMzdDMTE5NUNCQjFB
MDBEOEI5Q0MgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTlGMjgxMDE5NThGNDc4MDA4Q0FDNzIgLyog
V0tCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNUMwOTMyMDcxQzIzNjAxMTAwN0FBQTdDIC8qIERvd25sb2Fk
SUQuaCBpbiBDb3B5IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
MDkzMjA2MUMyMzYwMTEwMDdBQUE3QyAvKiBEb3dubG9hZElELmggKi87IH07CiAJCTVDMjBDQjlE
MUJCMERDRkEwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyMENCOUIxQkIwRENEMjAwODk1QkIx
IC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EubW0gKi87IH07CiAJCTVDMjBDQkEwMUJCMUVDRDgwMDg5
NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUMyMENCOUUxQkIwREQxODAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9u
LmggKi87IH07CiAJCTVDOUI4NjEzMUMyMjNFQUYwMDExMEYzNiAvKiBEb3dubG9hZENvY29hLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5Qjg2MTEx
QzIyM0U3OTAwMTEwRjM2IC8qIERvd25sb2FkQ29jb2EubW0gKi87IH07CkBAIC0yMDk2LDYgKzIw
OTcsNyBAQAogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE7CiAJCQlmaWxlcyA9ICgKIAkJCQk1MUE2
MEIyQTE4MENDRUI1MDBGM0JGNTAgLyogRGF0YWJhc2VQcm9jZXNzLmFwcCBpbiBDb3B5IEZpbGVz
ICovLAorCQkJCTVDMDkzMjA3MUMyMzYwMTEwMDdBQUE3QyAvKiBEb3dubG9hZElELmggaW4gQ29w
eSBGaWxlcyAqLywKIAkJCQk1MTBDQzg0OTE2MTNDODVDMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nl
c3MuYXBwIGluIENvcHkgRmlsZXMgKi8sCiAJCQkJQkNERTBBQkYxMzI3MjcwODAwMTI1OUZCIC8q
IFBsdWdpblByb2Nlc3MuYXBwIGluIENvcHkgRmlsZXMgKi8sCiAJCQkJMUE1MERCNjYxMTBBM0Q1
NzAwMEQzRkU1IC8qIFdlYlByb2Nlc3MuYXBwIGluIENvcHkgRmlsZXMgKi8sCkBAIC0zMjU2LDYg
KzMyNTgsNyBAQAogCQk1MUZEMThCNDE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNl
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzJCMjg4MTQwNjk4NUQwMDk2QTVEMCAv
KiBTdGF0aXN0aWNzRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdGF0aXN0aWNzRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzJC
Mjg5MTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdGF0aXN0aWNzRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1QzA5MzIwNjFDMjM2MDExMDA3QUFBN0MgLyogRG93bmxvYWRJRC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEb3dubG9hZElELmg7IHBhdGggPSBEb3dubG9hZHMv
RG93bmxvYWRJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzIwQ0I5QjFCQjBE
Q0QyMDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IE5ldHdvcmtTZXNzaW9uQ29jb2EubW07IHBhdGggPSBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzIwQ0I5RTFCQjBERDE4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Nlc3Npb24uaDsgcGF0
aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDOUI4NjExMUMyMjNFNzkwMDExMEYzNiAvKiBEb3dubG9hZENvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93bmxvYWRDb2NvYS5tbTsg
cGF0aCA9IERvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTc0NSw2ICs1NzQ4LDcgQEAKIAkJNTE4RThFRjIxNkIyMDhGODAwRTkx
NDI5IC8qIERvd25sb2FkcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJNUMwOTMyMDYxQzIzNjAxMTAwN0FBQTdDIC8qIERvd25sb2FkSUQuaCAqLywKIAkJ
CQk1QzlCODYwRTFDMjIzRTU0MDAxMTBGMzYgLyogY29jb2EgKi8sCiAJCQkJMkRBOTQ0QTUxODg0
RTkzQzAwRUQ4NkRCIC8qIGlvcyAqLywKIAkJCQk1MThFOEYwNDE2QjIwOTM3MDBFOTE0MjkgLyog
bWFjICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9u
IDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTQsNyArNjk0LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIHVpbnQ2NF90IGxp
c3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKFdURjo6bW92ZShmdW5jdGlv
bikpOwogICAgIGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb247CiAgICAgdWludDY0X3QgcG9saWN5
QWN0aW9uOwotICAgIHVpbnQ2NF90IGRvd25sb2FkSUQ7CisgICAgRG93bmxvYWRJRCBkb3dubG9h
ZElEOwogCiAgICAgdW5zaWduZWQgc3luY1NlbmRGbGFncyA9IElQQzo6SW5mb3JtUGxhdGZvcm1Q
cm9jZXNzV2lsbFN1c3BlbmQ7CiAgICAgaWYgKFdlYlBhZ2U6OnN5bmNocm9ub3VzTWVzc2FnZXNT
aG91bGRTcGluUnVuTG9vcCgpKQpAQCAtNzc1LDcgKzc3NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICBib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uOwog
ICAgIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRDsKICAgICB1aW50NjRfdCBwb2xpY3lBY3Rpb247
Ci0gICAgdWludDY0X3QgZG93bmxvYWRJRDsKKyAgICBEb3dubG9hZElEIGRvd25sb2FkSUQ7CiAK
ICAgICBSZWZQdHI8V2ViRnJhbWU+IG9yaWdpbmF0aW5nRnJhbWU7CiAgICAgc3dpdGNoIChhY3Rp
b24tPm5hdmlnYXRpb25UeXBlKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjE1LDEyICsyMTUsMTIgQEAgdm9pZCBXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVy
KAogICAgIGlmICghbV9wb2xpY3lMaXN0ZW5lcklEKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3BvbGljeURvd25sb2FkSUQgPSAwOworICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKICAg
ICBtX3BvbGljeUxpc3RlbmVySUQgPSAwOwogICAgIG1fcG9saWN5RnVuY3Rpb24gPSAwOwogfQog
Ci12b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVu
ZXJJRCwgUG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRf
dCBkb3dubG9hZElEKQordm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVp
bnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElEKQogewogICAgIGlmICghbV9jb3JlRnJhbWUpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI0OCwxMCArMjQ4LDEwIEBAIHZvaWQgV2ViRnJhbWU6OmRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbigKIAogdm9pZCBXZWJGcmFtZTo6c3RhcnREb3dubG9hZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKG1fcG9s
aWN5RG93bmxvYWRJRCk7CisgICAgQVNTRVJUKG1fcG9saWN5RG93bmxvYWRJRC5kb3dubG9hZElE
KCkpOwogCi0gICAgdWludDY0X3QgcG9saWN5RG93bmxvYWRJRCA9IG1fcG9saWN5RG93bmxvYWRJ
RDsKLSAgICBtX3BvbGljeURvd25sb2FkSUQgPSAwOworICAgIGF1dG8gcG9saWN5RG93bmxvYWRJ
RCA9IG1fcG9saWN5RG93bmxvYWRJRDsKKyAgICBtX3BvbGljeURvd25sb2FkSUQgPSB7IH07CiAK
ICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7CiAgICAgU2Vz
c2lvbklEIHNlc3Npb25JRCA9IHBhZ2UoKSA/IHBhZ2UoKS0+c2Vzc2lvbklEKCkgOiBTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKQEAgLTI2MCwxMCArMjYwLDEwIEBAIHZvaWQgV2ViRnJh
bWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ28KIAogdm9pZCBXZWJGcmFtZTo6Y29udmVydE1h
aW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwg
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBBU1NFUlQobV9wb2xpY3lEb3du
bG9hZElEKTsKKyAgICBBU1NFUlQobV9wb2xpY3lEb3dubG9hZElELmRvd25sb2FkSUQoKSk7CiAK
LSAgICB1aW50NjRfdCBwb2xpY3lEb3dubG9hZElEID0gbV9wb2xpY3lEb3dubG9hZElEOwotICAg
IG1fcG9saWN5RG93bmxvYWRJRCA9IDA7CisgICAgYXV0byBwb2xpY3lEb3dubG9hZElEID0gbV9w
b2xpY3lEb3dubG9hZElEOworICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKIAogICAgIFN1
YnJlc291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudExvYWRlci0+bWFp
blJlc291cmNlTG9hZGVyKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5oCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBXZWJGcmFtZV9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNs
dWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVk
ZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTgwLDcg
KzgxLDcgQEAgcHVibGljOgogCiAgICAgdWludDY0X3Qgc2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJD
b3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKICAgICB2b2lkIGludmFsaWRhdGVQb2xpY3lMaXN0
ZW5lcigpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3Rl
bmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50
NjRfdCBkb3dubG9hZElEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50
NjRfdCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgRG93bmxvYWRJRCk7CiAKICAgICB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBXZWJDb3JlOjpTZXNzaW9uSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKQEAgLTE3MCw3ICsxNzEsNyBAQCBwcml2YXRlOgogCiAgICAgdWludDY0X3QgbV9w
b2xpY3lMaXN0ZW5lcklEOwogICAgIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24gbV9wb2xp
Y3lGdW5jdGlvbjsKLSAgICB1aW50NjRfdCBtX3BvbGljeURvd25sb2FkSUQ7CisgICAgRG93bmxv
YWRJRCBtX3BvbGljeURvd25sb2FkSUQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVM
b2FkZXJDbGllbnQ+IG1fZnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgTG9hZExpc3RlbmVyKiBtX2xv
YWRMaXN0ZW5lcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQwOCw3ICsyNDA4LDcg
QEAgdm9pZCBXZWJQYWdlOjpzZXRTZXNzaW9uSUQoU2Vzc2lvbklEIHNlcwogICAgIG1fcGFnZS0+
c2V0U2Vzc2lvbklEKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQz
Ml90IHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBkb3dubG9h
ZElEKQordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCkKIHsKICAgICBXZWJGcmFtZSog
ZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBp
ZiAoIWZyYW1lKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJB
UElJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgor
I2luY2x1ZGUgIkRvd25sb2FkLmgiCiAjaW5jbHVkZSAiRmluZENvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIklt
YWdlT3B0aW9ucy5oIgpAQCAtMTA0Myw3ICsxMDQ0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBs
YXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwog
ICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwog
Ci0gICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQpOworICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBv
bGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKTsKICAgICB2b2lk
IHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNv
ZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTQyMTgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5
UmVjZWl2ZXIgewogCiAgICAgRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGJhY2tG
b3J3YXJkSXRlbUlEKQogCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBkb3dubG9hZElEKQorICAgIERpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJf
dCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElE
IGRvd25sb2FkSUQpCiAKICAgICBDbGVhclNlbGVjdGlvbigpCiAgICAgUmVzdG9yZVNlbGVjdGlv
bkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267595</attachid>
            <date>2015-12-17 16:21:58 -0800</date>
            <delta_ts>2015-12-17 16:34:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152401-20151217162120.patch</filename>
            <type>text/plain</type>
            <size>51321</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NDI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk3IEBACisyMDE1LTEyLTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHR5cGVz
IGZvciBEb3dubG9hZElEIGFuZCBUYXNrSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG93bmxvYWRJRCBhbmQgVGFza0lkZW50aWZpZXIg
dXNlZCB0byBib3RoIGJlIGp1c3QgdWludDY0X3Qncy4KKyAgICAgICAgSXQgaXMgY29uZnVzaW5n
IHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlbSwgc28gbm93IHRoZXkgYm90aCBoYXZlIG5hbWVz
LgorICAgICAgICBXZSBuZWVkIGEgSGFzaE1hcDxUYXNrSWRlbnRpZmllciwgRG93bmxvYWRJRD4g
aW5zdGVhZCBvZiBhIEhhc2hNYXA8dWludDY0X3QsIHVpbnQ2NF90Pi4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6c3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxv
YWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRvd25sb2Fk
UmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWVEb3dubG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3dubG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXROZXR3b3JrUHJvY2Vzc1N0YXRpc3Rp
Y3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFZhbHVlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmNyZWF0ZURhdGFUYXNrV2l0aFJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6ZGF0YVRhc2tGb3JJZGVudGlmaWVyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpyZXN1bWUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2s6OnRhc2tJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWQ6OkRvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6Om1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKToKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmg6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkb3dubG9hZElEKToKKyAgICAgICAgKiBTaGFyZWQv
RG93bmxvYWRzL0Rvd25sb2FkSUQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
SUQ6OkRvd25sb2FkSUQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZElEOjpvcGVyYXRvcj09
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRJRDo6ZG93bmxvYWRJRCk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViS2l0OjpEb3dubG9hZElEPjo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvd25sb2FkSUQ+OjpkZWNvZGUpOgorICAgICAg
ICAoV1RGOjpEb3dubG9hZElESGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6OkRvd25sb2FkSURI
YXNoOjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViS2l0OjpEb3dubG9hZElE
Pjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViS2l0OjpEb3dubG9h
ZElEPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxX
ZWJLaXQ6OkRvd25sb2FkSUQ+Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogU2hhcmVkL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1h
bmFnZXI6OkRvd25sb2FkTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdl
cjo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6Y29u
dmVydEhhbmRsZVRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6
OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjYW5j
ZWxEb3dubG9hZCk6CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
aDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjppc0Rvd25sb2FkaW5nKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5jcHA6CisgICAgICAgIChXS0Rvd25s
b2FkR2V0SUQpOgorICAgICAgICAoV0tEb3dubG9hZENvcHlSZXF1ZXN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRQcm94eTo6ZG93bmxvYWRJRCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6
OnJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpyZXN1bWVEYXRhKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eU1hcDo6ZG93bmxvYWRGaW5pc2hlZCk6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZnJhbWVEaWRCZWNvbWVGcmFtZVNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lOjppbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6
OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFNlc3Npb25JRCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKwogMjAxNS0xMi0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByb2dyZXNzIHRvd2FyZHMgaW1wbGVtZW50aW5nIGRv
d25sb2FkcyB3aXRoIE5ldHdvcmtTZXNzaW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
NywxMiArMTc3LDEyIEBAIHN0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXMK
ICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9h
ZChTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
dGFydERvd25sb2FkKFNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIE5ldHdvcmtQcm9jZXNzOjpz
aW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHNlc3Npb25JRCwgZG93
bmxvYWRJRCwgcmVxdWVzdCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3Qg
ZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCBkb3dubG9hZElE
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gTmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpOwogICAgIGlmICghbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTk0MjE4KQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQmxvY2tpbmdSZXNw
b25zZU1hcC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEb3dubG9hZElE
LmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkUHJpb3JpdHkuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgpAQCAtNzYsOCArNzcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlTG9h
ZElkZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXREZWZlcnNM
b2FkaW5nKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgY3Jvc3NPcmln
aW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgcmVkaXJlY3RVUkwpOwotICAgIHZvaWQgc3RhcnREb3dubG9hZChXZWJDb3JlOjpTZXNz
aW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpOwotICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6
OlNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90
IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIHN0YXJ0RG93bmxvYWQoV2ViQ29yZTo6
U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
KyAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpTZXNz
aW9uSUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBEb3dubG9hZElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CiAKICAgICB2b2lkIGNvb2tpZXNGb3JET00oV2ViQ29yZTo6U2Vzc2lvbklELCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFN0cmlu
ZyYgcmVzdWx0KTsKICAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBTdHJpbmcmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtMjksOCArMjksOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzCiAgICAgU2V0RGVmZXJzTG9hZGluZyh1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlm
aWVyLCBib29sIGRlZmVycykKICAgICBQcmVmZXRjaEROUyhTdHJpbmcgaG9zdG5hbWUpCiAKLSAg
ICBTdGFydERvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRv
d25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQotICAgIENvbnZlcnRN
YWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgZG93bmxvYWRJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2UpCisgICAgU3RhcnREb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QpCisgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNv
cmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlm
aWVyLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAKICAgICBD
b29raWVzRm9yRE9NKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBm
aXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoU3RyaW5nIHJlc3VsdCkKICAgICBTZXRD
b29raWVzRnJvbURPTShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwg
Zmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCwgU3RyaW5nIGNvb2tpZVN0cmluZykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMyLDE3ICs0MzIsMTcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGbwogICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdChTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QoU2Vzc2lvbklEIHNl
c3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7CiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQs
IGRvd25sb2FkSUQsIHJlcXVlc3QpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1bWVE
b3dubG9hZChTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1bWVEb3dubG9hZChTZXNzaW9uSUQgc2Vzc2lvbklE
LCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKICAgICBkb3dubG9hZE1hbmFnZXIo
KS5yZXN1bWVEb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIHBhdGgs
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5j
ZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2Fu
Y2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQogewogICAgIGRvd25sb2FkTWFuYWdl
cigpLmNhbmNlbERvd25sb2FkKGRvd25sb2FkSUQpOwogfQpAQCAtNDc0LDcgKzQ3NCw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmdldE5ldHdvcmtQcm9jZXNzU3QKICAgICBwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6RGlkR2V0U3RhdGlz
dGljcyhkYXRhLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Omxv
Z0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hv
dWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWlu
dDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9z
dGljTG9nZ2luZ0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQog
ICAgICAgICByZXR1cm47CkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
bG9nRGlhZ25vc3RpY01lc3NhZwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkxvZ1NhbXBsZWREaWFnbm9zdGljTWVzc2Fn
ZSh3ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdl
SUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2Vi
Q29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxk
U2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNN
ZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBl
IHJlc3VsdCwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAoIURpYWdub3N0
aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjps
b2dEaWFnbm9zdGljTWVzc2FnCiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nU2FtcGxlZERpYWdub3N0aWNNZXNzYWdl
V2l0aFJlc3VsdCh3ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCByZXN1bHQpLCAwKTsK
IH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUo
dWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgdmFsdWUsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBz
aG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhWYWx1ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgU2hvdWxkU2FtcGxlIHNo
b3VsZFNhbXBsZSkKIHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRM
b2dBZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNp
b24gMTk0MjE4KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDkgKzE0OSw5IEBAIHByaXZhdGU6CiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIHRha2UgYSBzZXNzaW9uIElEIHNvIHdlIGNhbiBpZGVudGlmeSB3
aGljaCBkaXNrIGNhY2hlIHRvIGRlbGV0ZS4KICAgICB2b2lkIGNsZWFyRGlza0NhY2hlKHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgc3RkOjpmdW5j
dGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxlcik7CiAKLSAgICB2b2lkIGRvd25sb2FkUmVx
dWVzdChXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoV2ViQ29yZTo6
U2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJik7Ci0gICAgdm9pZCBjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKTsK
KyAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpTZXNzaW9uSUQsIERvd25sb2FkSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgcmVzdW1lRG93bmxv
YWQoV2ViQ29yZTo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJik7CisgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElEKTsKICAgICB2
b2lkIHNldENhY2hlTW9kZWwodWludDMyX3QpOwogICAgIHZvaWQgYWxsb3dTcGVjaWZpY0hUVFBT
Q2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGNvbnN0
IFN0cmluZyYgaG9zdCk7CiAgICAgdm9pZCBzZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZh
bHVhdGlvbihib29sKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTQyMTgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlCiAgICAgRGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3Qgd2Vic2l0ZURhdGFUeXBlcywgc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCB1aW50NjRfdCBjYWxsYmFja0lE
KQogICAgIERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCB3ZWJzaXRlRGF0YVR5cGVzLCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiBvcmlnaW5zLCBWZWN0b3I8U3RyaW5nPiBjb29raWVIb3N0TmFtZXMsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICBEb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QpCi0gICAgUmVzdW1lRG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEs
IFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKQotICAgIENhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCisg
ICAgRG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkK
KyAgICBSZXN1bWVEb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6
OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0
cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKQorICAgIENhbmNlbERvd25sb2FkKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9h
ZElEKQogCiAgICAgU2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sIGZsYWcpCiAjaWYg
UExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDExICsy
NiwxNCBAQAogI2lmbmRlZiBOZXR3b3JrU2Vzc2lvbl9oCiAjZGVmaW5lIE5ldHdvcmtTZXNzaW9u
X2gKIAorI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb247CiBPQkpD
X0NMQVNTIE5TVVJMU2Vzc2lvbkRhdGFUYXNrOwogT0JKQ19DTEFTUyBOU09wZXJhdGlvblF1ZXVl
OwogT0JKQ19DTEFTUyBXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGU7CisjZW5kaWYKIAorI2luY2x1
ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CkBAIC04MCw3ICs4Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbCgpOwogICAgIHZvaWQg
cmVzdW1lKCk7CiAKLSAgICB1aW50NjRfdCB0YXNrSWRlbnRpZmllcigpOworICAgIHR5cGVkZWYg
dWludDY0X3QgVGFza0lkZW50aWZpZXI7CisgICAgVGFza0lkZW50aWZpZXIgdGFza0lkZW50aWZp
ZXIoKTsKIAogICAgIH5OZXR3b3JrRGF0YVRhc2soKTsKIApAQCAtMTEyLDExICsxMTYsMTIgQEAg
cHVibGljOgogICAgIAogICAgIFJlZjxOZXR3b3JrRGF0YVRhc2s+IGNyZWF0ZURhdGFUYXNrV2l0
aFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgTmV0d29ya1Nlc3Npb25U
YXNrQ2xpZW50Jik7CiAKLSAgICBOZXR3b3JrRGF0YVRhc2sqIGRhdGFUYXNrRm9ySWRlbnRpZmll
cih1aW50NjRfdCk7CisgICAgTmV0d29ya0RhdGFUYXNrKiBkYXRhVGFza0ZvcklkZW50aWZpZXIo
TmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwotICAgIEhhc2hNYXA8dWludDY0X3QsIE5ldHdvcmtE
YXRhVGFzayo+IG1fZGF0YVRhc2tNYXA7CisgICAgSGFzaE1hcDxOZXR3b3JrRGF0YVRhc2s6OlRh
c2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRhc2sqPiBtX2RhdGFUYXNrTWFwOworICAgIEhhc2hN
YXA8TmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmllciwgRG93bmxvYWRJRD4gbV9kb3dubG9h
ZE1hcDsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uPiBt
X3Nlc3Npb247CiAgICAgUmV0YWluUHRyPFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZT4gbV9zZXNz
aW9uRGVsZWdhdGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDE5NDIxOCkK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBSZWY8TmV0d29ya0RhdGFU
YXNrPiBOZXR3b3JrU2Vzc2lvbjo6Y3JlCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29y
a0RhdGFUYXNrKCp0aGlzLCBjbGllbnQsIFttX3Nlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpy
ZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpVcGRhdGVIVFRQQm9keSldKSk7CiB9CiAKLU5l
dHdvcmtEYXRhVGFzayogTmV0d29ya1Nlc3Npb246OmRhdGFUYXNrRm9ySWRlbnRpZmllcih1aW50
NjRfdCB0YXNrSWRlbnRpZmllcikKK05ldHdvcmtEYXRhVGFzayogTmV0d29ya1Nlc3Npb246OmRh
dGFUYXNrRm9ySWRlbnRpZmllcihOZXR3b3JrRGF0YVRhc2s6OlRhc2tJZGVudGlmaWVyIHRhc2tJ
ZGVudGlmaWVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuIG1f
ZGF0YVRhc2tNYXAuZ2V0KHRhc2tJZGVudGlmaWVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFzazo6cmVzdW1lKCkKICAgICBbbV90YXNrIHJlc3VtZV07CiB9CiAKLXVp
bnQ2NF90IE5ldHdvcmtEYXRhVGFzazo6dGFza0lkZW50aWZpZXIoKQorYXV0byBOZXR3b3JrRGF0
YVRhc2s6OnRhc2tJZGVudGlmaWVyKCkgLT4gVGFza0lkZW50aWZpZXIKIHsKICAgICByZXR1cm4g
W21fdGFzayB0YXNrSWRlbnRpZmllcl07CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
RG93bmxvYWRzL0Rvd25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAkocmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDkgKzQ0LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi1Eb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRN
YW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIsIGNvbnN0IE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCB1
aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitEb3du
bG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIsIGNvbnN0IE5l
dHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKICNlbHNlCi1Eb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRN
YW5hZ2VyJiBkb3dubG9hZE1hbmFnZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKK0Rvd25sb2FkOjpEb3dubG9hZChEb3dubG9hZE1hbmFnZXIm
IGRvd25sb2FkTWFuYWdlciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCiAjZW5kaWYKICAgICA6IG1fZG93bmxvYWRNYW5hZ2VyKGRvd25sb2Fk
TWFuYWdlcikKICAgICAsIG1fZG93bmxvYWRJRChkb3dubG9hZElEKQpAQCAtNTUsNyArNTUsNyBA
QCBEb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBkb3duCiAgICAgLCBtX3Nlc3Np
b24oc2Vzc2lvbikKICNlbmRpZgogewotICAgIEFTU0VSVChtX2Rvd25sb2FkSUQpOworICAgIEFT
U0VSVChtX2Rvd25sb2FkSUQuZG93bmxvYWRJRCgpKTsKIAogICAgIG1fZG93bmxvYWRNYW5hZ2Vy
LmRpZENyZWF0ZURvd25sb2FkKCk7CiB9CkBAIC0xNjIsNyArMTYyLDcgQEAgSVBDOjpDb25uZWN0
aW9uKiBEb3dubG9hZDo6bWVzc2FnZVNlbmRlcgogCiB1aW50NjRfdCBEb3dubG9hZDo6bWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKQogewotICAgIHJldHVybiBtX2Rvd25sb2FkSUQ7CisgICAg
cmV0dXJuIG1fZG93bmxvYWRJRC5kb3dubG9hZElEKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAko
cmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3du
bG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIERvd25sb2Fk
X2gKICNkZWZpbmUgRG93bmxvYWRfaAogCisjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KQEAgLTc2LDkgKzc3LDkgQEAgY2xhc3Mg
RG93bmxvYWQgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZAogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKERvd25sb2FkKTsKIHB1YmxpYzoKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIERv
d25sb2FkKERvd25sb2FkTWFuYWdlciYsIGNvbnN0IE5ldHdvcmtTZXNzaW9uJiwgdWludDY0X3Qg
ZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgRG93bmxv
YWQoRG93bmxvYWRNYW5hZ2VyJiwgY29uc3QgTmV0d29ya1Nlc3Npb24mLCBEb3dubG9hZElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICNlbHNlCi0gICAgRG93bmxvYWQoRG93
bmxvYWRNYW5hZ2VyJiwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jik7CisgICAgRG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiwgRG93bmxvYWRJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKICAgICB+RG93bmxvYWQo
KTsKIApAQCAtOTEsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWUoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKLSAgICB1aW50
NjRfdCBkb3dubG9hZElEKCkgY29uc3QgeyByZXR1cm4gbV9kb3dubG9hZElEOyB9CisgICAgRG93
bmxvYWRJRCBkb3dubG9hZElEKCkgY29uc3QgeyByZXR1cm4gbV9kb3dubG9hZElEOyB9CiAKICAg
ICB2b2lkIGRpZFN0YXJ0KCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKQEAgLTEyOCw3
ICsxMjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CiAKICAg
ICBEb3dubG9hZE1hbmFnZXImIG1fZG93bmxvYWRNYW5hZ2VyOwotICAgIHVpbnQ2NF90IG1fZG93
bmxvYWRJRDsKKyAgICBEb3dubG9hZElEIG1fZG93bmxvYWRJRDsKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogCiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IG1f
c2FuZGJveEV4dGVuc2lvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMv
RG93bmxvYWRJRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9h
ZHMvRG93bmxvYWRJRC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9Eb3dubG9hZElELmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgRG93bmxvYWRJRF9oCisjZGVmaW5lIERvd25sb2FkSURfaAorCisj
aW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgorI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgor
I2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBEb3dubG9hZElEIHsKK3B1YmxpYzoKKyAg
ICBEb3dubG9hZElEKCkKKyAgICB7CisgICAgfQorCisgICAgRG93bmxvYWRJRCh1aW50NjRfdCBk
b3dubG9hZElEKQorICAgICAgICA6IG1fZG93bmxvYWRJRChkb3dubG9hZElEKQorICAgIHsKKyAg
ICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oRG93bmxvYWRJRCBvdGhlcikgY29uc3QgeyByZXR1
cm4gbV9kb3dubG9hZElEID09IG90aGVyLm1fZG93bmxvYWRJRDsgfQorCisgICAgdWludDY0X3Qg
ZG93bmxvYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRJRDsgfQorcHJpdmF0ZToKKyAg
ICB1aW50NjRfdCBtX2Rvd25sb2FkSUQgeyAwIH07Cit9OworCit9CisKK25hbWVzcGFjZSBJUEMg
eworICAgIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvd25sb2Fk
SUQ+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBXZWJLaXQ6OkRvd25sb2FkSUQmIGRvd25sb2FkSUQpCisgICAgeworICAgICAgICBlbmNv
ZGVyIDw8IGRvd25sb2FkSUQuZG93bmxvYWRJRCgpOworICAgIH0KKyAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJLaXQ6OkRvd25sb2FkSUQmIGRvd25s
b2FkSUQpCisgICAgeworICAgICAgICB1aW50NjRfdCBpZDsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShpZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZG93bmxv
YWRJRCA9IFdlYktpdDo6RG93bmxvYWRJRChkb3dubG9hZElEKTsKKyAgICAgICAgCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KK307CisKK30KKworbmFtZXNwYWNlIFdURiB7CisgICAgCitz
dHJ1Y3QgRG93bmxvYWRJREhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdl
YktpdDo6RG93bmxvYWRJRCYgZCkgeyByZXR1cm4gaW50SGFzaChkLmRvd25sb2FkSUQoKSk7IH0K
KyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJLaXQ6OkRvd25sb2FkSUQmIGEsIGNvbnN0
IFdlYktpdDo6RG93bmxvYWRJRCYgYikgeyByZXR1cm4gYS5kb3dubG9hZElEKCkgPT0gYi5kb3du
bG9hZElEKCk7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCA9IHRydWU7Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJLaXQ6
OkRvd25sb2FkSUQ+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViS2l0OjpEb3dubG9hZElEPiB7Cisg
ICAgc3RhdGljIFdlYktpdDo6RG93bmxvYWRJRCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gV2ViS2l0
OjpEb3dubG9hZElEKDApOyB9CisgICAgCisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRl
ZFZhbHVlKFdlYktpdDo6RG93bmxvYWRJRCYgc2xvdCkgeyBzbG90ID0gV2ViS2l0OjpEb3dubG9h
ZElEKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7IH0KKyAgICBzdGF0aWMg
Ym9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJLaXQ6OkRvd25sb2FkSUQmIHNsb3QpIHsgcmV0
dXJuIHNsb3QuZG93bmxvYWRJRCgpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+Ojpt
YXgoKTsgfQorfTsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYktpdDo6RG93bmxv
YWRJRD4geworICAgIHR5cGVkZWYgRG93bmxvYWRJREhhc2ggSGFzaDsKK307CisKK30KKyNlbmRp
ZiAvKiBEb3dubG9hZElEX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBEb3dubG9hZE1hbmFnZXI6OkRvd25sb2FkTWFuYWdl
cihDbGllbnQqCiB7CiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKFNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKFNlc3Np
b25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogewogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgYXV0byogbmV0
d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsK
QEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoU2Vz
cwogfQogCiAjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi12b2lkIERvd25sb2FkTWFuYWdlcjo6
Y29udmVydEhhbmRsZVRvRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0SGFuZGxl
VG9Eb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7CiAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxv
YWQ+KCp0aGlzLCBkb3dubG9hZElELCByZXF1ZXN0KTsKIApAQCAtNjgsNyArNjgsNyBAQCB2b2lk
IERvd25sb2FkTWFuYWdlcjo6Y29udmVydEhhbmRsZVRvRG93CiB9CiAjZW5kaWYKIAotdm9pZCBE
b3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0
X3QgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChTZXNz
aW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBy
ZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9O
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgRG93bmxvYWRN
YW5hZ2VyOjpyZXN1bWVEb3dubG9hZChXZWIKICNlbmRpZgogfQogCi12b2lkIERvd25sb2FkTWFu
YWdlcjo6Y2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCkKK3ZvaWQgRG93bmxvYWRN
YW5hZ2VyOjpjYW5jZWxEb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQpCiB7CiAgICAgRG93
bmxvYWQqIGRvd25sb2FkID0gbV9kb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpOwogICAgIGlmICgh
ZG93bmxvYWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMv
RG93bmxvYWRNYW5hZ2VyLmgJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDcgQEAKICNpZm5kZWYgRG93bmxvYWRNYW5hZ2VyX2gKICNkZWZpbmUgRG93bmxvYWRNYW5h
Z2VyX2gKIAorI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgpAQCAtNjksMTQgKzcwLDE0IEBAIHB1YmxpYzoKIAogICAgIGV4cGxpY2l0IERv
d25sb2FkTWFuYWdlcihDbGllbnQqKTsKIAotICAgIHZvaWQgc3RhcnREb3dubG9hZChXZWJDb3Jl
OjpTZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOworICAgIHZvaWQgc3RhcnREb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQsIERv
d25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogI2lmICFVU0UoTkVU
V09SS19TRVNTSU9OKQotICAgIHZvaWQgY29udmVydEhhbmRsZVRvRG93bmxvYWQodWludDY0X3Qg
ZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9p
ZCBjb252ZXJ0SGFuZGxlVG9Eb3dubG9hZChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKTsKICNlbmRpZgogCi0gICAgdm9pZCByZXN1bWVEb3dubG9hZChXZWJD
b3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25J
RCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogCi0gICAg
dm9pZCBjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKTsKKyAgICB2b2lkIGNhbmNl
bERvd25sb2FkKERvd25sb2FkSUQpOwogCiAgICAgdm9pZCBkb3dubG9hZEZpbmlzaGVkKERvd25s
b2FkKik7CiAgICAgYm9vbCBpc0Rvd25sb2FkaW5nKCkgY29uc3QgeyByZXR1cm4gIW1fZG93bmxv
YWRzLmlzRW1wdHkoKTsgfQpAQCAtOTAsNyArOTEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgQ2xpZW50KiBtX2NsaWVudDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9w
dHI8RG93bmxvYWQ+PiBtX2Rvd25sb2FkczsKKyAgICBIYXNoTWFwPERvd25sb2FkSUQsIHN0ZDo6
dW5pcXVlX3B0cjxEb3dubG9hZD4+IG1fZG93bmxvYWRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
cmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMTUsNyArMjAxNSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KICAgICBpZiAoYWN0aW9uID09IFBvbGljeUlnbm9y
ZSkKICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmNsZWFyUGVuZGluZ0FQSVJlcXVlc3RVUkwodHJh
bnNhY3Rpb24pOwogCi0gICAgdWludDY0X3QgZG93bmxvYWRJRCA9IDA7CisgICAgRG93bmxvYWRJ
RCBkb3dubG9hZElEID0geyB9OwogICAgIGlmIChhY3Rpb24gPT0gUG9saWN5RG93bmxvYWQpIHsK
ICAgICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQgcHJveHkuCiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgZW5zdXJlIHRoYXQgdGhlIGRvd25sb2FkUmVxdWVzdCBpcyBuZXZlciBlbXB0eS4K
QEAgLTMyNTAsNyArMzI1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZy
YW1lU2UKICAgICAgICAgbV9mcmFtZVNldExhcmdlc3RGcmFtZSA9IHZhbHVlID8gbV9tYWluRnJh
bWUgOiAwOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1l
SUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luYXRpbmdGcmFtZVNlY3VyaXR5T3Jp
Z2luLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYg
bmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCB1aW50NjRfdCYgZG93bmxv
YWRJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4sIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBuZXdOYXZp
Z2F0aW9uSUQsIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIERvd25sb2FkSUQmIGRvd25sb2FkSUQp
CiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIApA
QCAtMzM1OSw3ICszMzU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJl
c3BvbgogICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoKnRo
aXMsICpmcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgV1RGOjptb3Zl
KGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBib29sJiByZWNlaXZl
ZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2Fk
SUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdp
biwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2
NF90JiBwb2xpY3lBY3Rpb24sIERvd25sb2FkSUQmIGRvd25sb2FkSUQpCiB7CiAgICAgUGFnZUNs
aWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTk0MjE4KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiQXV0b0NvcnJlY3Rpb25DYWxsYmFjay5oIgogI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRleHREYXRhLmgiCisjaW5j
bHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyQWN0aW9uLmgiCiAj
aW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIkVkaXRpbmdSYW5nZS5oIgpA
QCAtMTEzMywxMCArMTEzNCwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWREZXN0cm95TmF2
aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCi0gICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJ
RCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lU2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBjb25zdCBVc2VyRGF0YSYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYg
bmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCB1aW50NjRfdCYgZG93bmxv
YWRJRCk7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYsIGJvb2wmIHJl
Y2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCYg
cG9saWN5QWN0aW9uLCBEb3dubG9hZElEJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93
TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Ym9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
JiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIHVp
bnQ2NF90JiBkb3dubG9hZElEKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3lu
Yyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0
X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlv
biwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgRG93bmxvYWRJRCYpOwogICAgIHZvaWQgdW5hYmxl
VG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7CiAKICAgICB2b2lkIHdpbGxTdWJtaXRGb3JtKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdGV4dEZpZWxkVmFsdWVzLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTYxNiwxMiArMTYxNywxMiBAQCBwcml2YXRlOgog
ICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCogbV9kZWNpZGVQb2xpY3lGb3JSZXNw
b25zZVJlcXVlc3Q7CiAgICAgYm9vbCBtX3N5bmNNaW1lVHlwZVBvbGljeUFjdGlvbklzVmFsaWQ7
CiAgICAgV2ViQ29yZTo6UG9saWN5QWN0aW9uIG1fc3luY01pbWVUeXBlUG9saWN5QWN0aW9uOwot
ICAgIHVpbnQ2NF90IG1fc3luY01pbWVUeXBlUG9saWN5RG93bmxvYWRJRDsKKyAgICBEb3dubG9h
ZElEIG1fc3luY01pbWVUeXBlUG9saWN5RG93bmxvYWRJRDsKIAogICAgIGJvb2wgbV9pbkRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb247CiAgICAgYm9vbCBtX3N5bmNOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWN0aW9uSXNWYWxpZDsKICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gbV9zeW5j
TmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbjsKLSAgICB1aW50NjRfdCBtX3N5bmNOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5RG93bmxvYWRJRDsKKyAgICBEb3dubG9hZElEIG1fc3luY05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lEb3dubG9hZElEOwogICAgIGJvb2wgbV9zaG91bGRTdXBwcmVzc0FwcExp
bmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uIHsgZmFsc2UgfTsKIAogICAgIERlcXVl
PE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ+IG1fa2V5RXZlbnRRdWV1ZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNp
b24gMTk0MjE4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTA1LDggKzEwNSw4IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCi0gICAgRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wg
Y2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgcG9saWN5QWN0
aW9uLCB1aW50NjRfdCBkb3dubG9hZElEKQotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJL
aXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCB1aW50NjRfdCBv
cmlnaW5hdGluZ0ZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3Jp
Z2luYXRpbmdGcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQ
b2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgdWludDY0X3QgcG9saWN5QWN0
aW9uLCB1aW50NjRfdCBkb3dubG9hZElEKQorICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlU3lu
Yyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKGJvb2wgcmVj
ZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9h
ZElEIGRvd25sb2FkSUQpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50
NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5n
RnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW5hdGluZ0Zy
YW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlv
biwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCBwb2xpY3lBY3Rpb24sIFdlYktp
dDo6RG93bmxvYWRJRCBkb3dubG9hZElEKQogICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRh
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwg
U3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1
c2VyRGF0YSkKICAgICBVbmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuY3Bw
CShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tE
b3dubG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgV0tUeXBlSUQgV0tE
b3dubG9hZEdldFR5cGVJRCgpCiAKIHVpbnQ2NF90IFdLRG93bmxvYWRHZXRJRChXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkKQogewotICAgIHJldHVybiB0b0ltcGwoZG93bmxvYWQpLT5kb3dubG9hZElE
KCk7CisgICAgcmV0dXJuIHRvSW1wbChkb3dubG9hZCktPmRvd25sb2FkSUQoKS5kb3dubG9hZElE
KCk7CiB9CiAKIFdLVVJMUmVxdWVzdFJlZiBXS0Rvd25sb2FkQ29weVJlcXVlc3QoV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5oCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0
ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RG93bmxvYWRQcm94eT4gY3JlYXRlKERvd25sb2FkUHJveHlNYXAmLCBXZWJQcm9j
ZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIH5Eb3dubG9h
ZFByb3h5KCk7CiAKLSAgICB1aW50NjRfdCBkb3dubG9hZElEKCkgY29uc3QgeyByZXR1cm4gbV9k
b3dubG9hZElEOyB9CisgICAgRG93bmxvYWRJRCBkb3dubG9hZElEKCkgY29uc3QgeyByZXR1cm4g
bV9kb3dubG9hZElEOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CiAgICAgQVBJOjpEYXRhKiByZXN1bWVE
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bWVEYXRhLmdldCgpOyB9CiAKQEAgLTg3LDcgKzg4
LDcgQEAgcHJpdmF0ZToKIAogICAgIERvd25sb2FkUHJveHlNYXAmIG1fZG93bmxvYWRQcm94eU1h
cDsKICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+IG1fcHJvY2Vzc1Bvb2w7Ci0gICAgdWludDY0
X3QgbV9kb3dubG9hZElEOworICAgIERvd25sb2FkSUQgbV9kb3dubG9hZElEOwogCiAgICAgUmVm
UHRyPEFQSTo6RGF0YT4gbV9yZXN1bWVEYXRhOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCBtX3JlcXVlc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDE4ICs0OSwxOCBAQCBEb3dubG9hZFByb3h5KiBEb3dubG9hZFBy
b3h5TWFwOjpjcmVhdGVECiAgICAgUmVmUHRyPERvd25sb2FkUHJveHk+IGRvd25sb2FkUHJveHkg
PSBEb3dubG9hZFByb3h5OjpjcmVhdGUoKnRoaXMsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVl
c3QpOwogICAgIG1fZG93bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGRv
d25sb2FkUHJveHkpOwogCi0gICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OkRvd25sb2FkUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZG93bmxvYWRQcm94eS0+
ZG93bmxvYWRJRCgpLCAqZG93bmxvYWRQcm94eSk7CisgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
ZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLmRvd25sb2FkSUQoKSwgKmRvd25sb2FkUHJveHkp
OwogCiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHkuZ2V0KCk7CiB9CiAKIHZvaWQgRG93bmxvYWRQ
cm94eU1hcDo6ZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQog
ewotICAgIHVpbnQ2NF90IGRvd25sb2FkSUQgPSBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCk7
CisgICAgYXV0byBkb3dubG9hZElEID0gZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpOwogCiAg
ICAgQVNTRVJUKG1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKIAotICAgIG1fcHJv
Y2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIGRvd25sb2FkSUQpOworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpKTsKICAgICBkb3dubG9hZFByb3h5LT5pbnZhbGlk
YXRlKCk7CiAgICAgbV9kb3dubG9hZHMucmVtb3ZlKGRvd25sb2FkSUQpOwogfQpAQCAtNjgsNyAr
NjgsNyBAQCB2b2lkIERvd25sb2FkUHJveHlNYXA6OmRvd25sb2FkRmluaXNoZWQoCiB2b2lkIERv
d25sb2FkUHJveHlNYXA6OnByb2Nlc3NEaWRDbG9zZSgpCiB7CiAgICAgLy8gSW52YWxpZGF0ZSBh
bGwgb3V0c3RhbmRpbmcgZG93bmxvYWRzLgotICAgIGZvciAoSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPERvd25sb2FkUHJveHk+Pjo6aXRlcmF0b3I6OlZhbHVlcyBpdCA9IG1fZG93bmxvYWRzLmJl
Z2luKCkudmFsdWVzKCksIGVuZCA9IG1fZG93bmxvYWRzLmVuZCgpLnZhbHVlcygpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICBmb3IgKGF1dG8gaXQgPSBtX2Rvd25sb2Fkcy5iZWdpbigpLnZhbHVl
cygpLCBlbmQgPSBtX2Rvd25sb2Fkcy5lbmQoKS52YWx1ZXMoKTsgaXQgIT0gZW5kOyArK2l0KSB7
CiAgICAgICAgICgqaXQpLT5wcm9jZXNzRGlkQ2xvc2UoKTsKICAgICAgICAgKCppdCktPmludmFs
aWRhdGUoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHlNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuaAkocmV2aXNpb24gMTk0MjE4KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgRG93bmxvYWRQcm94eU1hcF9oCiAj
ZGVmaW5lIERvd25sb2FkUHJveHlNYXBfaAogCisjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTU2LDcgKzU3LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIENoaWxkUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3M7Ci0gICAgSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPERvd25sb2FkUHJveHk+PiBtX2Rvd25sb2FkczsKKyAgICBIYXNoTWFwPERv
d25sb2FkSUQsIFJlZlB0cjxEb3dubG9hZFByb3h5Pj4gbV9kb3dubG9hZHM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTA2NCw2ICsxMDY0LDcgQEAKIAkJNTI3MkIyOEExNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3Rp
Y3NEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUyNzJCMjg4MTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5jcHAgKi87IH07CiAJ
CTUyNzJCMjhCMTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3MkIyODkxNDA2OTg1RDAwOTZB
NUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggKi87IH07CiAJCTUyOEMzN0MxMTk1Q0JCMUEwMEQ4QjlD
QyAvKiBXS0JhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOUYyODEwMTk1OEY0NzgwMDhDQUM3MiAvKiBXS0JhY2tG
b3J3YXJkTGlzdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk1QzA5MzIwNzFDMjM2MDExMDA3QUFBN0MgLyogRG93bmxvYWRJRC5oIGlu
IENvcHkgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwOTMyMDYx
QzIzNjAxMTAwN0FBQTdDIC8qIERvd25sb2FkSUQuaCAqLzsgfTsKIAkJNUMyMENCOUQxQkIwRENG
QTAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzIwQ0I5QjFCQjBEQ0QyMDA4OTVCQjEgLyogTmV0
d29ya1Nlc3Npb25Db2NvYS5tbSAqLzsgfTsKIAkJNUMyMENCQTAxQkIxRUNEODAwODk1QkIxIC8q
IE5ldHdvcmtTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzIwQ0I5RTFCQjBERDE4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24uaCAqLzsg
fTsKIAkJNUM5Qjg2MTMxQzIyM0VBRjAwMTEwRjM2IC8qIERvd25sb2FkQ29jb2EubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlCODYxMTFDMjIzRTc5
MDAxMTBGMzYgLyogRG93bmxvYWRDb2NvYS5tbSAqLzsgfTsKQEAgLTIwOTYsNiArMjA5Nyw3IEBA
CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gMTsKIAkJCWZpbGVzID0gKAogCQkJCTUxQTYwQjJBMTgw
Q0NFQjUwMEYzQkY1MCAvKiBEYXRhYmFzZVByb2Nlc3MuYXBwIGluIENvcHkgRmlsZXMgKi8sCisJ
CQkJNUMwOTMyMDcxQzIzNjAxMTAwN0FBQTdDIC8qIERvd25sb2FkSUQuaCBpbiBDb3B5IEZpbGVz
ICovLAogCQkJCTUxMENDODQ5MTYxM0M4NUMwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5hcHAg
aW4gQ29weSBGaWxlcyAqLywKIAkJCQlCQ0RFMEFCRjEzMjcyNzA4MDAxMjU5RkIgLyogUGx1Z2lu
UHJvY2Vzcy5hcHAgaW4gQ29weSBGaWxlcyAqLywKIAkJCQkxQTUwREI2NjExMEEzRDU3MDAwRDNG
RTUgLyogV2ViUHJvY2Vzcy5hcHAgaW4gQ29weSBGaWxlcyAqLywKQEAgLTMyNTYsNiArMzI1OCw3
IEBACiAJCTUxRkQxOEI0MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Jlc291cmNlTG9hZGVy
Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3MkIyODgxNDA2OTg1RDAwOTZBNUQwIC8qIFN0YXRp
c3RpY3NEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YXRp
c3RpY3NEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3MkIyODkxNDA2
OTg1RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0YXRpc3RpY3NEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDMDkzMjA2MUMyMzYwMTEwMDdBQUE3QyAvKiBEb3dubG9hZElELmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERvd25sb2FkSUQuaDsgcGF0aCA9IERvd25sb2Fkcy9Eb3dubG9h
ZElELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMjBDQjlCMUJCMERDRDIwMDg5
NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gTmV0d29ya1Nlc3Npb25Db2NvYS5tbTsgcGF0aCA9IE5ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDMjBDQjlFMUJCMEREMTgwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrU2Vzc2lvbi5oOyBwYXRoID0gTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUM5Qjg2MTExQzIyM0U3OTAwMTEwRjM2IC8qIERvd25sb2FkQ29jb2EubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEb3dubG9hZENvY29hLm1tOyBwYXRoID0g
RG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01NzQ1LDYgKzU3NDgsNyBAQAogCQk1MThFOEVGMjE2QjIwOEY4MDBFOTE0MjkgLyog
RG93bmxvYWRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQk1QzA5MzIwNjFDMjM2MDExMDA3QUFBN0MgLyogRG93bmxvYWRJRC5oICovLAogCQkJCTVDOUI4
NjBFMUMyMjNFNTQwMDExMEYzNiAvKiBjb2NvYSAqLywKIAkJCQkyREE5NDRBNTE4ODRFOTNDMDBF
RDg2REIgLyogaW9zICovLAogCQkJCTUxOEU4RjA0MTZCMjA5MzcwMEU5MTQyOSAvKiBtYWMgKi8s
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMTk0MjE4
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5NCw3ICs2OTQsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgdWludDY0X3QgbGlzdGVuZXJJ
RCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoV1RGOjptb3ZlKGZ1bmN0aW9uKSk7CiAg
ICAgYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbjsKICAgICB1aW50NjRfdCBwb2xpY3lBY3Rpb247
Ci0gICAgdWludDY0X3QgZG93bmxvYWRJRDsKKyAgICBEb3dubG9hZElEIGRvd25sb2FkSUQ7CiAK
ICAgICB1bnNpZ25lZCBzeW5jU2VuZEZsYWdzID0gSVBDOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NX
aWxsU3VzcGVuZDsKICAgICBpZiAoV2ViUGFnZTo6c3luY2hyb25vdXNNZXNzYWdlc1Nob3VsZFNw
aW5SdW5Mb29wKCkpCkBAIC03NzUsNyArNzc1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZAogICAgIGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb247CiAgICAgdWlu
dDY0X3QgbmV3TmF2aWdhdGlvbklEOwogICAgIHVpbnQ2NF90IHBvbGljeUFjdGlvbjsKLSAgICB1
aW50NjRfdCBkb3dubG9hZElEOworICAgIERvd25sb2FkSUQgZG93bmxvYWRJRDsKIAogICAgIFJl
ZlB0cjxXZWJGcmFtZT4gb3JpZ2luYXRpbmdGcmFtZTsKICAgICBzd2l0Y2ggKGFjdGlvbi0+bmF2
aWdhdGlvblR5cGUoKSkgewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsMTIg
KzIxNSwxMiBAQCB2b2lkIFdlYkZyYW1lOjppbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoCiAgICAg
aWYgKCFtX3BvbGljeUxpc3RlbmVySUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcG9saWN5
RG93bmxvYWRJRCA9IDA7CisgICAgbV9wb2xpY3lEb3dubG9hZElEID0geyB9OwogICAgIG1fcG9s
aWN5TGlzdGVuZXJJRCA9IDA7CiAgICAgbV9wb2xpY3lGdW5jdGlvbiA9IDA7CiB9CiAKLXZvaWQg
V2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBsaXN0ZW5lcklELCBQ
b2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90IGRvd25s
b2FkSUQpCit2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3Qg
bGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBE
b3dubG9hZElEIGRvd25sb2FkSUQpCiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjQ4LDEwICsyNDgsMTAgQEAgdm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKAogCiB2b2lkIFdlYkZyYW1lOjpzdGFydERvd25sb2FkKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBBU1NFUlQobV9wb2xpY3lEb3du
bG9hZElEKTsKKyAgICBBU1NFUlQobV9wb2xpY3lEb3dubG9hZElELmRvd25sb2FkSUQoKSk7CiAK
LSAgICB1aW50NjRfdCBwb2xpY3lEb3dubG9hZElEID0gbV9wb2xpY3lEb3dubG9hZElEOwotICAg
IG1fcG9saWN5RG93bmxvYWRJRCA9IDA7CisgICAgYXV0byBwb2xpY3lEb3dubG9hZElEID0gbV9w
b2xpY3lEb3dubG9hZElEOworICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKIAogICAgIGF1
dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKICAgICBTZXNzaW9uSUQg
c2Vzc2lvbklEID0gcGFnZSgpID8gcGFnZSgpLT5zZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpOwpAQCAtMjYwLDEwICsyNjAsMTAgQEAgdm9pZCBXZWJGcmFtZTo6c3Rh
cnREb3dubG9hZChjb25zdCBXZWJDbwogCiB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291
cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyLCBTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIEFTU0VSVChtX3BvbGljeURvd25sb2FkSUQp
OworICAgIEFTU0VSVChtX3BvbGljeURvd25sb2FkSUQuZG93bmxvYWRJRCgpKTsKIAotICAgIHVp
bnQ2NF90IHBvbGljeURvd25sb2FkSUQgPSBtX3BvbGljeURvd25sb2FkSUQ7Ci0gICAgbV9wb2xp
Y3lEb3dubG9hZElEID0gMDsKKyAgICBhdXRvIHBvbGljeURvd25sb2FkSUQgPSBtX3BvbGljeURv
d25sb2FkSUQ7CisgICAgbV9wb2xpY3lEb3dubG9hZElEID0geyB9OwogCiAgICAgU3VicmVzb3Vy
Y2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlciA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3Vy
Y2VMb2FkZXIoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmgJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAj
ZGVmaW5lIFdlYkZyYW1lX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkRv
d25sb2FkSUQuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXS0Jh
c2UuaCIKICNpbmNsdWRlICJXZWJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtODAsNyArODEsNyBA
QCBwdWJsaWM6CiAKICAgICB1aW50NjRfdCBzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OkZy
YW1lUG9saWN5RnVuY3Rpb24pOwogICAgIHZvaWQgaW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKCk7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViQ29yZTo6UG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90IGRv
d25sb2FkSUQpOworICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxp
c3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBE
b3dubG9hZElEKTsKIAogICAgIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9h
ZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
OwpAQCAtMTcwLDcgKzE3MSw3IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBtX3BvbGljeUxp
c3RlbmVySUQ7CiAgICAgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiBtX3BvbGljeUZ1bmN0
aW9uOwotICAgIHVpbnQ2NF90IG1fcG9saWN5RG93bmxvYWRJRDsKKyAgICBEb3dubG9hZElEIG1f
cG9saWN5RG93bmxvYWRJRDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJGcmFtZUxvYWRlckNs
aWVudD4gbV9mcmFtZUxvYWRlckNsaWVudDsKICAgICBMb2FkTGlzdGVuZXIqIG1fbG9hZExpc3Rl
bmVyOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkocmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDA4LDcgKzI0MDgsNyBAQCB2b2lk
IFdlYlBhZ2U6OnNldFNlc3Npb25JRChTZXNzaW9uSUQgc2VzCiAgICAgbV9wYWdlLT5zZXRTZXNz
aW9uSUQoc2Vzc2lvbklEKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9s
aWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQpCit2
b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElEKQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIGlmICghZnJh
bWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJ
KHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBUElJ
bmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUluamVj
dGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVk
ZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJGaW5kQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcHRp
b25zLmgiCkBAIC0xMDQzLDcgKzEwNDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Q
cmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAgICAgdm9p
ZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAKLSAgICB2
b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBs
aXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
dWludDY0X3QgZG93bmxvYWRJRCk7CisgICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24o
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0
aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQpOwogICAgIHZvaWQgc2V0VXNl
ckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFt
ZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9ucygpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZl
ciB7CiAKICAgICBEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgYmFja0ZvcndhcmRJ
dGVtSUQpCiAKLSAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQpCisgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGlj
eUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxv
YWRJRCkKIAogICAgIENsZWFyU2VsZWN0aW9uKCkKICAgICBSZXN0b3JlU2VsZWN0aW9uSW5Gb2N1
c2VkRWRpdGFibGVFbGVtZW50KCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267597</attachid>
            <date>2015-12-17 16:34:46 -0800</date>
            <delta_ts>2015-12-17 17:10:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152401-20151217163407.patch</filename>
            <type>text/plain</type>
            <size>51328</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NDI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk3IEBACisyMDE1LTEyLTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHR5cGVz
IGZvciBEb3dubG9hZElEIGFuZCBUYXNrSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QnJhZHkgRWlkc29uLgorCisgICAgICAgIERvd25sb2FkSUQgYW5kIFRhc2tJZGVudGlmaWVyIHVz
ZWQgdG8gYm90aCBiZSBqdXN0IHVpbnQ2NF90J3MuCisgICAgICAgIEl0IGlzIGNvbmZ1c2luZyB0
byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZW0sIHNvIG5vdyB0aGV5IGJvdGggaGF2ZSBuYW1lcy4K
KyAgICAgICAgV2UgbmVlZCBhIEhhc2hNYXA8VGFza0lkZW50aWZpZXIsIERvd25sb2FkSUQ+IGlu
c3RlYWQgb2YgYSBIYXNoTWFwPHVpbnQ2NF90LCB1aW50NjRfdD4uCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2Fk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z2V0TmV0d29ya1Byb2Nlc3NTdGF0aXN0aWNz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdl
V2l0aFJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9z
dGljTWVzc2FnZVdpdGhWYWx1ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpjcmVhdGVEYXRhVGFza1dpdGhSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmRhdGFUYXNrRm9ySWRlbnRpZmllcik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFzazo6cmVzdW1lKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrOjp0YXNrSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgICog
U2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
OjpEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjptZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCk6CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZDo6ZG93bmxvYWRJRCk6CisgICAgICAgICogU2hhcmVkL0Rv
d25sb2Fkcy9Eb3dubG9hZElELmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZElE
OjpEb3dubG9hZElEKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRJRDo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkSUQ6OmRvd25sb2FkSUQpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFdlYktpdDo6RG93bmxvYWRJRD46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViS2l0OjpEb3dubG9hZElEPjo6ZGVjb2RlKToKKyAgICAgICAg
KFdURjo6RG93bmxvYWRJREhhc2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpEb3dubG9hZElESGFz
aDo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYktpdDo6RG93bmxvYWRJRD46
OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYktpdDo6RG93bmxvYWRJ
RD46OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2Vi
S2l0OjpEb3dubG9hZElEPjo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAqIFNoYXJlZC9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5h
Z2VyOjpEb3dubG9hZE1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6
OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmNvbnZl
cnRIYW5kbGVUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpy
ZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6Y2FuY2Vs
RG93bmxvYWQpOgorICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6aXNEb3dubG9hZGluZyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwOgorICAgICAgICAoV0tEb3dubG9h
ZEdldElEKToKKyAgICAgICAgKFdLRG93bmxvYWRDb3B5UmVxdWVzdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6OmRvd25sb2FkSUQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5Ojpy
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6cmVzdW1lRGF0YSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmRvd25sb2FkRmluaXNoZWQpOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
Y2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZy
YW1lRGlkQmVjb21lRnJhbWVTZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6
OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpz
dGFydERvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisKIDIwMTUtMTItMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBQcm9ncmVzcyB0b3dhcmRzIGltcGxlbWVudGluZyBkb3du
bG9hZHMgd2l0aCBOZXR3b3JrU2Vzc2lvbgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAkocmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcs
MTIgKzE3NywxMiBAQCBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2VzCiAg
ICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7
CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQo
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3Rh
cnREb3dubG9hZChTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBOZXR3b3JrUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25s
b2FkSUQsIHJlcXVlc3QpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGRv
d25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
b252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IE5ldHdvcmtQcm9jZXNzOjpz
aW5nbGV0b24oKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyKSB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJsb2NraW5nUmVzcG9u
c2VNYXAuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRG93bmxvYWRJRC5o
IgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFByaW9yaXR5Lmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KQEAgLTc2LDggKzc3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUxvYWRJ
ZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0RGVmZXJzTG9h
ZGluZyhSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBib29sKTsKICAgICB2b2lkIGNyb3NzT3JpZ2lu
UmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHJlZGlyZWN0VVJMKTsKLSAgICB2b2lkIHN0YXJ0RG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lv
bklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKLSAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBk
b3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBzdGFydERvd25sb2FkKFdlYkNvcmU6OlNl
c3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Cisg
ICAgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lv
bklELCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpOwogCiAgICAgdm9pZCBjb29raWVzRm9yRE9NKFdlYkNvcmU6OlNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcm
IHJlc3VsdCk7CiAgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpTZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgU3RyaW5nJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDggKzI5LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2NlcwogICAgIFNldERlZmVyc0xvYWRpbmcodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgYm9vbCBkZWZlcnMpCiAgICAgUHJlZmV0Y2hETlMoU3RyaW5nIGhvc3RuYW1lKQogCi0gICAg
U3RhcnREb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb3du
bG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKLSAgICBDb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlc3BvbnNlKQorICAgIFN0YXJ0RG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KQorICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogCiAgICAgQ29v
a2llc0ZvckRPTShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpVUkwgZmly
c3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFN0cmluZyByZXN1bHQpCiAgICAgU2V0Q29v
a2llc0Zyb21ET00oV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIGZp
cnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBjb29raWVTdHJpbmcpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShy
ZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMiwxNyArNDMyLDE3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm8KICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QoU2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFNlc3Npb25JRCBzZXNz
aW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewogICAgIGRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBk
b3dubG9hZElELCByZXF1ZXN0KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93
bmxvYWQoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFdl
YktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQoU2Vzc2lvbklEIHNlc3Npb25JRCwg
RG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7CiAgICAgZG93bmxvYWRNYW5hZ2VyKCku
cmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2FuY2Vs
RG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNhbmNl
bERvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCkKIHsKICAgICBkb3dubG9hZE1hbmFnZXIo
KS5jYW5jZWxEb3dubG9hZChkb3dubG9hZElEKTsKIH0KQEAgLTQ3NCw3ICs0NzQsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpnZXROZXR3b3JrUHJvY2Vzc1N0CiAgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Bvb2w6OkRpZEdldFN0YXRpc3Rp
Y3MoZGF0YSwgY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dE
aWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3Vs
ZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2
NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQ6OnNob3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDgyLDcgKzQ4Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6Omxv
Z0RpYWdub3N0aWNNZXNzYWcKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpMb2dTYW1wbGVkRGlhZ25vc3RpY01lc3NhZ2Uo
d2ViUGFnZUlELCBtZXNzYWdlLCBkZXNjcmlwdGlvbiksIDApOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3Qgd2ViUGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNv
cmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNh
bXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVz
c2FnZVdpdGhSZXN1bHQodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSBy
ZXN1bHQsIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAg
ICAgICByZXR1cm47CkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9n
RGlhZ25vc3RpY01lc3NhZwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkxvZ1NhbXBsZWREaWFnbm9zdGljTWVzc2FnZVdp
dGhSZXN1bHQod2ViUGFnZUlELCBtZXNzYWdlLCBkZXNjcmlwdGlvbiwgcmVzdWx0KSwgMCk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVp
bnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRl
c2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hv
dWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
VmFsdWUodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgdmFsdWUsIFNob3VsZFNhbXBsZSBzaG91
bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6c2hvdWxkTG9n
QWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9u
IDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw5ICsxNDksOSBAQCBwcml2YXRlOgogICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCB0YWtlIGEgc2Vzc2lvbiBJRCBzbyB3ZSBjYW4gaWRlbnRpZnkgd2hp
Y2ggZGlzayBjYWNoZSB0byBkZWxldGUuCiAgICAgdm9pZCBjbGVhckRpc2tDYWNoZShzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIpOwogCi0gICAgdm9pZCBkb3dubG9hZFJlcXVl
c3QoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIHJlc3VtZURvd25sb2FkKFdlYkNvcmU6OlNl
c3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBy
ZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYpOwotICAgIHZvaWQgY2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCk7Cisg
ICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6U2Vzc2lvbklELCBEb3dubG9hZElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2Fk
KFdlYkNvcmU6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYpOworICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCk7CiAgICAgdm9p
ZCBzZXRDYWNoZU1vZGVsKHVpbnQzMl90KTsKICAgICB2b2lkIGFsbG93U3BlY2lmaWNIVFRQU0Nl
cnRpZmljYXRlRm9ySG9zdChjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBT
dHJpbmcmIGhvc3QpOwogICAgIHZvaWQgc2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1
YXRpb24oYm9vbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTk0MjE4KQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDkgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZQogICAgIERlbGV0ZVdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90IHdlYnNpdGVEYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCkK
ICAgICBEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3Qgd2Vic2l0ZURhdGFUeXBlcywgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4gb3JpZ2lucywgVmVjdG9yPFN0cmluZz4gY29va2llSG9zdE5hbWVzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQogCi0gICAgRG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KQotICAgIFJlc3VtZURvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBT
dHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSkKLSAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQorICAg
IERvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRv
d25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCisg
ICAgUmVzdW1lRG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpE
b3dubG9hZElEIGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJp
bmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkKKyAgICBDYW5jZWxEb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCkKIAogICAgIFNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCBmbGFnKQogI2lmIFBM
QVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYs
MTQgQEAKICNpZm5kZWYgTmV0d29ya1Nlc3Npb25faAogI2RlZmluZSBOZXR3b3JrU2Vzc2lvbl9o
CiAKKyNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uOwogT0JKQ19D
TEFTUyBOU1VSTFNlc3Npb25EYXRhVGFzazsKIE9CSkNfQ0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsK
IE9CSkNfQ0xBU1MgV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlOworI2VuZGlmCiAKKyNpbmNsdWRl
ICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpA
QCAtODAsNyArODMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWwoKTsKICAgICB2b2lkIHJl
c3VtZSgpOwogCi0gICAgdWludDY0X3QgdGFza0lkZW50aWZpZXIoKTsKKyAgICB0eXBlZGVmIHVp
bnQ2NF90IFRhc2tJZGVudGlmaWVyOworICAgIFRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVy
KCk7CiAKICAgICB+TmV0d29ya0RhdGFUYXNrKCk7CiAKQEAgLTExMiwxMSArMTE2LDEyIEBAIHB1
YmxpYzoKICAgICAKICAgICBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGVEYXRhVGFza1dpdGhS
ZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIE5ldHdvcmtTZXNzaW9uVGFz
a0NsaWVudCYpOwogCi0gICAgTmV0d29ya0RhdGFUYXNrKiBkYXRhVGFza0ZvcklkZW50aWZpZXIo
dWludDY0X3QpOworICAgIE5ldHdvcmtEYXRhVGFzayogZGF0YVRhc2tGb3JJZGVudGlmaWVyKE5l
dHdvcmtEYXRhVGFzazo6VGFza0lkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6
OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBOZXR3b3JrRGF0
YVRhc2sqPiBtX2RhdGFUYXNrTWFwOworICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrOjpUYXNr
SWRlbnRpZmllciwgTmV0d29ya0RhdGFUYXNrKj4gbV9kYXRhVGFza01hcDsKKyAgICBIYXNoTWFw
PE5ldHdvcmtEYXRhVGFzazo6VGFza0lkZW50aWZpZXIsIERvd25sb2FkSUQ+IG1fZG93bmxvYWRN
YXA7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbj4gbV9z
ZXNzaW9uOwogICAgIFJldGFpblB0cjxXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGU+IG1fc2Vzc2lv
bkRlbGVnYXRlOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAxOTQyMTgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNyArMjQwLDcgQEAgUmVmPE5ldHdvcmtEYXRhVGFz
az4gTmV0d29ya1Nlc3Npb246OmNyZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtE
YXRhVGFzaygqdGhpcywgY2xpZW50LCBbbV9zZXNzaW9uIGRhdGFUYXNrV2l0aFJlcXVlc3Q6cmVx
dWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6VXBkYXRlSFRUUEJvZHkpXSkpOwogfQogCi1OZXR3
b3JrRGF0YVRhc2sqIE5ldHdvcmtTZXNzaW9uOjpkYXRhVGFza0ZvcklkZW50aWZpZXIodWludDY0
X3QgdGFza0lkZW50aWZpZXIpCitOZXR3b3JrRGF0YVRhc2sqIE5ldHdvcmtTZXNzaW9uOjpkYXRh
VGFza0ZvcklkZW50aWZpZXIoTmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbnRpZmllciB0YXNrSWRl
bnRpZmllcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHJldHVybiBtX2Rh
dGFUYXNrTWFwLmdldCh0YXNrSWRlbnRpZmllcik7CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBO
ZXR3b3JrRGF0YVRhc2s6OnJlc3VtZSgpCiAgICAgW21fdGFzayByZXN1bWVdOwogfQogCi11aW50
NjRfdCBOZXR3b3JrRGF0YVRhc2s6OnRhc2tJZGVudGlmaWVyKCkKK2F1dG8gTmV0d29ya0RhdGFU
YXNrOjp0YXNrSWRlbnRpZmllcigpIC0+IFRhc2tJZGVudGlmaWVyCiB7CiAgICAgcmV0dXJuIFtt
X3Rhc2sgdGFza0lkZW50aWZpZXJdOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9Eb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5
ICs0NCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
ICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFu
YWdlciYgZG93bmxvYWRNYW5hZ2VyLCBjb25zdCBOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgdWlu
dDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorRG93bmxv
YWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bmxvYWRNYW5hZ2VyLCBjb25zdCBOZXR3
b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiAjZWxzZQotRG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFu
YWdlciYgZG93bmxvYWRNYW5hZ2VyLCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCitEb3dubG9hZDo6RG93bmxvYWQoRG93bmxvYWRNYW5hZ2VyJiBk
b3dubG9hZE1hbmFnZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogI2VuZGlmCiAgICAgOiBtX2Rvd25sb2FkTWFuYWdlcihkb3dubG9hZE1h
bmFnZXIpCiAgICAgLCBtX2Rvd25sb2FkSUQoZG93bmxvYWRJRCkKQEAgLTU1LDcgKzU1LDcgQEAg
RG93bmxvYWQ6OkRvd25sb2FkKERvd25sb2FkTWFuYWdlciYgZG93bgogICAgICwgbV9zZXNzaW9u
KHNlc3Npb24pCiAjZW5kaWYKIHsKLSAgICBBU1NFUlQobV9kb3dubG9hZElEKTsKKyAgICBBU1NF
UlQobV9kb3dubG9hZElELmRvd25sb2FkSUQoKSk7CiAKICAgICBtX2Rvd25sb2FkTWFuYWdlci5k
aWRDcmVhdGVEb3dubG9hZCgpOwogfQpAQCAtMTYyLDcgKzE2Miw3IEBAIElQQzo6Q29ubmVjdGlv
biogRG93bmxvYWQ6Om1lc3NhZ2VTZW5kZXIKIAogdWludDY0X3QgRG93bmxvYWQ6Om1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkKIHsKLSAgICByZXR1cm4gbV9kb3dubG9hZElEOworICAgIHJl
dHVybiBtX2Rvd25sb2FkSUQuZG93bmxvYWRJRCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHJl
dmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxv
YWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBEb3dubG9hZF9o
CiAjZGVmaW5lIERvd25sb2FkX2gKIAorI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRl
ICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CkBAIC03Niw5ICs3Nyw5IEBAIGNsYXNzIERv
d25sb2FkIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmQKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShEb3dubG9hZCk7CiBwdWJsaWM6CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBEb3du
bG9hZChEb3dubG9hZE1hbmFnZXImLCBjb25zdCBOZXR3b3JrU2Vzc2lvbiYsIHVpbnQ2NF90IGRv
d25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIERvd25sb2Fk
KERvd25sb2FkTWFuYWdlciYsIGNvbnN0IE5ldHdvcmtTZXNzaW9uJiwgRG93bmxvYWRJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZWxzZQotICAgIERvd25sb2FkKERvd25s
b2FkTWFuYWdlciYsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOworICAgIERvd25sb2FkKERvd25sb2FkTWFuYWdlciYsIERvd25sb2FkSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCiAgICAgfkRvd25sb2FkKCk7
CiAKQEAgLTkxLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICAgICB2b2lkIGNhbmNlbCgpOwogCi0gICAgdWludDY0
X3QgZG93bmxvYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRJRDsgfQorICAgIERvd25s
b2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRJRDsgfQogCiAgICAg
dm9pZCBkaWRTdGFydCgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CkBAIC0xMjgsNyAr
MTI5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogCiAgICAg
RG93bmxvYWRNYW5hZ2VyJiBtX2Rvd25sb2FkTWFuYWdlcjsKLSAgICB1aW50NjRfdCBtX2Rvd25s
b2FkSUQ7CisgICAgRG93bmxvYWRJRCBtX2Rvd25sb2FkSUQ7CiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IG1fcmVxdWVzdDsKIAogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3Nh
bmRib3hFeHRlbnNpb247CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rv
d25sb2FkSUQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRz
L0Rvd25sb2FkSUQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3du
bG9hZHMvRG93bmxvYWRJRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIERvd25sb2FkSURfaAorI2RlZmluZSBEb3dubG9hZElEX2gKKworI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKKyNpbmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIKKyNp
bmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRG93bmxvYWRJRCB7CitwdWJsaWM6CisgICAg
RG93bmxvYWRJRCgpCisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IERvd25sb2FkSUQodWlu
dDY0X3QgZG93bmxvYWRJRCkKKyAgICAgICAgOiBtX2Rvd25sb2FkSUQoZG93bmxvYWRJRCkKKyAg
ICB7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KERvd25sb2FkSUQgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1fZG93bmxvYWRJRCA9PSBvdGhlci5tX2Rvd25sb2FkSUQ7IH0KKworICAgIHVp
bnQ2NF90IGRvd25sb2FkSUQoKSBjb25zdCB7IHJldHVybiBtX2Rvd25sb2FkSUQ7IH0KK3ByaXZh
dGU6CisgICAgdWludDY0X3QgbV9kb3dubG9hZElEIHsgMCB9OworfTsKKworfQorCituYW1lc3Bh
Y2UgSVBDIHsKKyAgICAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpE
b3dubG9hZElEPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgY29uc3QgV2ViS2l0OjpEb3dubG9hZElEJiBkb3dubG9hZElEKQorICAgIHsKKyAgICAg
ICAgZW5jb2RlciA8PCBkb3dubG9hZElELmRvd25sb2FkSUQoKTsKKyAgICB9CisgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViS2l0OjpEb3dubG9hZElE
JiBkb3dubG9hZElEKQorICAgIHsKKyAgICAgICAgdWludDY0X3QgaWQ7CisgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaWQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGRvd25sb2FkSUQgPSBXZWJLaXQ6OkRvd25sb2FkSUQoZG93bmxvYWRJRCk7CisgICAgICAgIAor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCit9CisKK25hbWVzcGFjZSBXVEYgewor
ICAgIAorc3RydWN0IERvd25sb2FkSURIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBXZWJLaXQ6OkRvd25sb2FkSUQmIGQpIHsgcmV0dXJuIGludEhhc2goZC5kb3dubG9hZElE
KCkpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViS2l0OjpEb3dubG9hZElEJiBh
LCBjb25zdCBXZWJLaXQ6OkRvd25sb2FkSUQmIGIpIHsgcmV0dXJuIGEuZG93bmxvYWRJRCgpID09
IGIuZG93bmxvYWRJRCgpOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8
V2ViS2l0OjpEb3dubG9hZElEPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYktpdDo6RG93bmxvYWRJ
RD4geworICAgIHN0YXRpYyBXZWJLaXQ6OkRvd25sb2FkSUQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJu
IFdlYktpdDo6RG93bmxvYWRJRCgwKTsgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVj
dERlbGV0ZWRWYWx1ZShXZWJLaXQ6OkRvd25sb2FkSUQmIHNsb3QpIHsgc2xvdCA9IFdlYktpdDo6
RG93bmxvYWRJRChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOyB9CisgICAg
c3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViS2l0OjpEb3dubG9hZElEJiBzbG90
KSB7IHJldHVybiBzbG90LmRvd25sb2FkSUQoKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2
NF90Pjo6bWF4KCk7IH0KK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6
OkRvd25sb2FkSUQ+IHsKKyAgICB0eXBlZGVmIERvd25sb2FkSURIYXNoIEhhc2g7Cit9OworCit9
CisjZW5kaWYgLyogRG93bmxvYWRJRF9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCShyZXZpc2lvbiAxOTQyMTgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgRG93bmxvYWRNYW5hZ2VyOjpEb3dubG9h
ZE1hbmFnZXIoQ2xpZW50KgogewogfQogCi12b2lkIERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3du
bG9hZChTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9h
ZChTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCk7CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25s
b2FkKFNlc3MKIH0KIAogI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQotdm9pZCBEb3dubG9hZE1h
bmFnZXI6OmNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQsIFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udmVy
dEhhbmRsZVRvRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogewogICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVl
PERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgcmVxdWVzdCk7CiAKQEAgLTY4LDcgKzY4LDcg
QEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnRIYW5kbGVUb0RvdwogfQogI2VuZGlmCiAK
LXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0
YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNh
bmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxv
YWQoU2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7CiAjaWYgVVNFKE5FVFdPUktf
U0VTU0lPTikKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtODIsNyArODIsNyBAQCB2b2lkIERv
d25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoV2ViCiAjZW5kaWYKIH0KIAotdm9pZCBEb3du
bG9hZE1hbmFnZXI6OmNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCit2b2lkIERv
d25sb2FkTWFuYWdlcjo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQogewog
ICAgIERvd25sb2FkKiBkb3dubG9hZCA9IG1fZG93bmxvYWRzLmdldChkb3dubG9hZElEKTsKICAg
ICBpZiAoIWRvd25sb2FkKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIERvd25sb2FkTWFuYWdlcl9oCiAjZGVmaW5lIERvd25s
b2FkTWFuYWdlcl9oCiAKKyNpbmNsdWRlICJEb3dubG9hZC5oIgogI2luY2x1ZGUgIlNhbmRib3hF
eHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTY5LDE0ICs3MCwxNCBAQCBwdWJsaWM6CiAKICAgICBleHBs
aWNpdCBEb3dubG9hZE1hbmFnZXIoQ2xpZW50Kik7CiAKLSAgICB2b2lkIHN0YXJ0RG93bmxvYWQo
V2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHN0YXJ0RG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lv
bklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICNpZiAh
VVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICB2b2lkIGNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKHVp
bnQ2NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIHZvaWQgY29udmVydEhhbmRsZVRvRG93bmxvYWQoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAjZW5kaWYKIAotICAgIHZvaWQgcmVzdW1lRG93bmxv
YWQoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChXZWJDb3JlOjpT
ZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0
YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsK
IAotICAgIHZvaWQgY2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCk7CisgICAgdm9p
ZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElEKTsKIAogICAgIHZvaWQgZG93bmxvYWRGaW5pc2hl
ZChEb3dubG9hZCopOwogICAgIGJvb2wgaXNEb3dubG9hZGluZygpIGNvbnN0IHsgcmV0dXJuICFt
X2Rvd25sb2Fkcy5pc0VtcHR5KCk7IH0KQEAgLTkwLDcgKzkxLDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIENsaWVudCogbV9jbGllbnQ7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjp1
bmlxdWVfcHRyPERvd25sb2FkPj4gbV9kb3dubG9hZHM7CisgICAgSGFzaE1hcDxEb3dubG9hZElE
LCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+PiBtX2Rvd25sb2FkczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDE1LDcgKzIwMTUsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvCiAgICAgaWYgKGFjdGlvbiA9PSBQb2xp
Y3lJZ25vcmUpCiAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5jbGVhclBlbmRpbmdBUElSZXF1ZXN0
VVJMKHRyYW5zYWN0aW9uKTsKIAotICAgIHVpbnQ2NF90IGRvd25sb2FkSUQgPSAwOworICAgIERv
d25sb2FkSUQgZG93bmxvYWRJRCA9IHsgfTsKICAgICBpZiAoYWN0aW9uID09IFBvbGljeURvd25s
b2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5LgogICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSBkb3dubG9hZFJlcXVlc3QgaXMgbmV2ZXIg
ZW1wdHkuCkBAIC0zMjUwLDcgKzMyNTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnJhbWVEaWRC
ZWNvbWVGcmFtZVNlCiAgICAgICAgIG1fZnJhbWVTZXRMYXJnZXN0RnJhbWUgPSB2YWx1ZSA/IG1f
bWFpbkZyYW1lIDogMDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IE5hdmln
YXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRp
bmdGcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbmF0aW5nRnJhbWVTZWN1
cml0eU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWlu
dDY0X3QmIG5ld05hdmlnYXRpb25JRCwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3Qm
IGRvd25sb2FkSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1l
SUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luYXRpbmdGcmFtZVNlY3VyaXR5T3Jp
Z2luLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYg
bmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCBEb3dubG9hZElEJiBkb3du
bG9hZElEKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVu
dCk7CiAKQEAgLTMzNTksNyArMzM1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JSZXNwb24KICAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKCp0aGlzLCAqZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIFdU
Rjo6bW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1
c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgYm9vbCYg
cmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBk
b3dubG9hZElEKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3lu
Yyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9u
LCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCBEb3dubG9hZElEJiBkb3dubG9hZElEKQogewogICAg
IFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE5NDIxOCkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkF1dG9Db3JyZWN0aW9uQ2FsbGJhY2suaCIKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250ZXh0RGF0YS5o
IgorI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEcmFnQ29udHJvbGxlckFjdGlv
bi5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNsdWRlICJFZGl0aW5nUmFu
Z2UuaCIKQEAgLTExMzMsMTAgKzExMzQsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkRGVz
dHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKTsKIAotICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGlu
Z0ZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luYXRpbmdG
cmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWlu
dDY0X3QmIG5ld05hdmlnYXRpb25JRCwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3Qm
IGRvd25sb2FkSUQpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luYXRpbmdGcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmLCBi
b29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIG5ld05hdmlnYXRpb25JRCwgdWlu
dDY0X3QmIHBvbGljeUFjdGlvbiwgRG93bmxvYWRJRCYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lk
IGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wg
Y2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwot
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgcG9saWN5QWN0
aW9uLCB1aW50NjRfdCYgZG93bmxvYWRJRCk7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiwgYm9vbCYgcmVjZWl2ZWRQb2xp
Y3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIERvd25sb2FkSUQmKTsKICAgICB2b2lk
IHVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgdm9pZCB3aWxsU3VibWl0
Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlELCBjb25zdCBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHRleHRGaWVsZFZhbHVlcywgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE2MTYsMTIgKzE2MTcsMTIgQEAgcHJp
dmF0ZToKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QqIG1fZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2VSZXF1ZXN0OwogICAgIGJvb2wgbV9zeW5jTWltZVR5cGVQb2xpY3lBY3Rpb25J
c1ZhbGlkOwogICAgIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBtX3N5bmNNaW1lVHlwZVBvbGljeUFj
dGlvbjsKLSAgICB1aW50NjRfdCBtX3N5bmNNaW1lVHlwZVBvbGljeURvd25sb2FkSUQ7CisgICAg
RG93bmxvYWRJRCBtX3N5bmNNaW1lVHlwZVBvbGljeURvd25sb2FkSUQ7CiAKICAgICBib29sIG1f
aW5EZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOwogICAgIGJvb2wgbV9zeW5jTmF2aWdh
dGlvbkFjdGlvblBvbGljeUFjdGlvbklzVmFsaWQ7CiAgICAgV2ViQ29yZTo6UG9saWN5QWN0aW9u
IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb247Ci0gICAgdWludDY0X3QgbV9zeW5j
TmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkSUQ7CisgICAgRG93bmxvYWRJRCBtX3N5bmNO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWRJRDsKICAgICBib29sIG1fc2hvdWxkU3VwcHJl
c3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiB7IGZhbHNlIH07CiAKICAg
ICBEZXF1ZTxOYXRpdmVXZWJLZXlib2FyZEV2ZW50PiBtX2tleUV2ZW50UXVldWU7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEwNSw4ICsxMDUsOCBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICAgICAjIFBvbGljeSBtZXNzYWdlcwotICAg
IERlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IHBv
bGljeUFjdGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1
Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhIG9yaWdpbmF0aW5nRnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChib29sIHJl
Y2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIHVpbnQ2NF90IHBv
bGljeUFjdGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCkKKyAgICBEZWNpZGVQb2xpY3lGb3JSZXNw
b25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChi
b29sIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCBwb2xpY3lBY3Rpb24sIFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElEKQorICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6
Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCB1aW50NjRfdCBvcmln
aW5hdGluZ0ZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2lu
YXRpbmdGcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0X3QgbGlz
dGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xp
Y3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgdWludDY0X3QgcG9saWN5QWN0aW9u
LCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCkKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0
aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCiAgICAgVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2Vy
RGF0YSkKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25s
b2FkLmNwcAkocmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIFdLVHlw
ZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQoKQogCiB1aW50NjRfdCBXS0Rvd25sb2FkR2V0SUQoV0tE
b3dubG9hZFJlZiBkb3dubG9hZCkKIHsKLSAgICByZXR1cm4gdG9JbXBsKGRvd25sb2FkKS0+ZG93
bmxvYWRJRCgpOworICAgIHJldHVybiB0b0ltcGwoZG93bmxvYWQpLT5kb3dubG9hZElEKCkuZG93
bmxvYWRJRCgpOwogfQogCiBXS1VSTFJlcXVlc3RSZWYgV0tEb3dubG9hZENvcHlSZXF1ZXN0KFdL
RG93bmxvYWRSZWYgZG93bmxvYWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAkocmV2aXNpb24gMTk0MjE4KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERvd25sb2FkUHJveHk+IGNyZWF0ZShEb3dubG9hZFByb3h5TWFwJiwg
V2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB+
RG93bmxvYWRQcm94eSgpOwogCi0gICAgdWludDY0X3QgZG93bmxvYWRJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fZG93bmxvYWRJRDsgfQorICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fZG93bmxvYWRJRDsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQogICAgIEFQSTo6RGF0YSog
cmVzdW1lRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdW1lRGF0YS5nZXQoKTsgfQogCkBAIC04
Nyw3ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICBEb3dubG9hZFByb3h5TWFwJiBtX2Rvd25sb2Fk
UHJveHlNYXA7CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOwotICAg
IHVpbnQ2NF90IG1fZG93bmxvYWRJRDsKKyAgICBEb3dubG9hZElEIG1fZG93bmxvYWRJRDsKIAog
ICAgIFJlZlB0cjxBUEk6OkRhdGE+IG1fcmVzdW1lRGF0YTsKICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgbV9yZXF1ZXN0OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCShyZXZpc2lvbiAxOTQyMTgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxOCArNDksMTggQEAgRG93bmxvYWRQcm94eSogRG93
bmxvYWRQcm94eU1hcDo6Y3JlYXRlRAogICAgIFJlZlB0cjxEb3dubG9hZFByb3h5PiBkb3dubG9h
ZFByb3h5ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzUG9vbCwgcmVzb3Vy
Y2VSZXF1ZXN0KTsKICAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJ
RCgpLCBkb3dubG9hZFByb3h5KTsKIAotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRvd25sb2Fk
UHJveHktPmRvd25sb2FkSUQoKSwgKmRvd25sb2FkUHJveHkpOworICAgIG1fcHJvY2Vzcy0+YWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKS5kb3dubG9hZElEKCksICpkb3dubG9h
ZFByb3h5KTsKIAogICAgIHJldHVybiBkb3dubG9hZFByb3h5LmdldCgpOwogfQogCiB2b2lkIERv
d25sb2FkUHJveHlNYXA6OmRvd25sb2FkRmluaXNoZWQoRG93bmxvYWRQcm94eSogZG93bmxvYWRQ
cm94eSkKIHsKLSAgICB1aW50NjRfdCBkb3dubG9hZElEID0gZG93bmxvYWRQcm94eS0+ZG93bmxv
YWRJRCgpOworICAgIGF1dG8gZG93bmxvYWRJRCA9IGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQo
KTsKIAogICAgIEFTU0VSVChtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAKLSAg
ICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93bmxvYWRQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkb3dubG9hZElEKTsKKyAgICBtX3Byb2Nlc3MtPnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBkb3dubG9hZElELmRvd25sb2FkSUQoKSk7CiAgICAgZG93bmxvYWRQcm94eS0+
aW52YWxpZGF0ZSgpOwogICAgIG1fZG93bmxvYWRzLnJlbW92ZShkb3dubG9hZElEKTsKIH0KQEAg
LTY4LDcgKzY4LDcgQEAgdm9pZCBEb3dubG9hZFByb3h5TWFwOjpkb3dubG9hZEZpbmlzaGVkKAog
dm9pZCBEb3dubG9hZFByb3h5TWFwOjpwcm9jZXNzRGlkQ2xvc2UoKQogewogICAgIC8vIEludmFs
aWRhdGUgYWxsIG91dHN0YW5kaW5nIGRvd25sb2Fkcy4KLSAgICBmb3IgKEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxEb3dubG9hZFByb3h5Pj46Oml0ZXJhdG9yOjpWYWx1ZXMgaXQgPSBtX2Rvd25s
b2Fkcy5iZWdpbigpLnZhbHVlcygpLCBlbmQgPSBtX2Rvd25sb2Fkcy5lbmQoKS52YWx1ZXMoKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgZm9yIChhdXRvIGl0ID0gbV9kb3dubG9hZHMuYmVnaW4o
KS52YWx1ZXMoKSwgZW5kID0gbV9kb3dubG9hZHMuZW5kKCkudmFsdWVzKCk7IGl0ICE9IGVuZDsg
KytpdCkgewogICAgICAgICAoKml0KS0+cHJvY2Vzc0RpZENsb3NlKCk7CiAgICAgICAgICgqaXQp
LT5pbnZhbGlkYXRlKCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgJKHJldmlzaW9uIDE5NDIxOCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIERvd25sb2FkUHJveHlN
YXBfaAogI2RlZmluZSBEb3dubG9hZFByb3h5TWFwX2gKIAorI2luY2x1ZGUgIkRvd25sb2FkSUQu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC01Niw3ICs1Nyw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBDaGlsZFByb2Nlc3NQcm94eSogbV9wcm9jZXNzOwotICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZlB0cjxEb3dubG9hZFByb3h5Pj4gbV9kb3dubG9hZHM7CisgICAgSGFz
aE1hcDxEb3dubG9hZElELCBSZWZQdHI8RG93bmxvYWRQcm94eT4+IG1fZG93bmxvYWRzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNjQsNiArMTA2NCw3IEBACiAJCTUyNzJCMjhBMTQwNjk4NUQwMDk2QTVEMCAvKiBT
dGF0aXN0aWNzRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MjcyQjI4ODE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuY3BwICov
OyB9OwogCQk1MjcyQjI4QjE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNzJCMjg5MTQwNjk4
NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5oICovOyB9OwogCQk1MjhDMzdDMTE5NUNCQjFB
MDBEOEI5Q0MgLyogV0tCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTlGMjgxMDE5NThGNDc4MDA4Q0FDNzIgLyog
V0tCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNUMwOTMyMDcxQzIzNjAxMTAwN0FBQTdDIC8qIERvd25sb2Fk
SUQuaCBpbiBDb3B5IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
MDkzMjA2MUMyMzYwMTEwMDdBQUE3QyAvKiBEb3dubG9hZElELmggKi87IH07CiAJCTVDMjBDQjlE
MUJCMERDRkEwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyMENCOUIxQkIwRENEMjAwODk1QkIx
IC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EubW0gKi87IH07CiAJCTVDMjBDQkEwMUJCMUVDRDgwMDg5
NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUMyMENCOUUxQkIwREQxODAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9u
LmggKi87IH07CiAJCTVDOUI4NjEzMUMyMjNFQUYwMDExMEYzNiAvKiBEb3dubG9hZENvY29hLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5Qjg2MTEx
QzIyM0U3OTAwMTEwRjM2IC8qIERvd25sb2FkQ29jb2EubW0gKi87IH07CkBAIC0yMDk2LDYgKzIw
OTcsNyBAQAogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE7CiAJCQlmaWxlcyA9ICgKIAkJCQk1MUE2
MEIyQTE4MENDRUI1MDBGM0JGNTAgLyogRGF0YWJhc2VQcm9jZXNzLmFwcCBpbiBDb3B5IEZpbGVz
ICovLAorCQkJCTVDMDkzMjA3MUMyMzYwMTEwMDdBQUE3QyAvKiBEb3dubG9hZElELmggaW4gQ29w
eSBGaWxlcyAqLywKIAkJCQk1MTBDQzg0OTE2MTNDODVDMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nl
c3MuYXBwIGluIENvcHkgRmlsZXMgKi8sCiAJCQkJQkNERTBBQkYxMzI3MjcwODAwMTI1OUZCIC8q
IFBsdWdpblByb2Nlc3MuYXBwIGluIENvcHkgRmlsZXMgKi8sCiAJCQkJMUE1MERCNjYxMTBBM0Q1
NzAwMEQzRkU1IC8qIFdlYlByb2Nlc3MuYXBwIGluIENvcHkgRmlsZXMgKi8sCkBAIC0zMjU2LDYg
KzMyNTgsNyBAQAogCQk1MUZEMThCNDE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNl
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzJCMjg4MTQwNjk4NUQwMDk2QTVEMCAv
KiBTdGF0aXN0aWNzRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdGF0aXN0aWNzRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzJC
Mjg5MTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdGF0aXN0aWNzRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1QzA5MzIwNjFDMjM2MDExMDA3QUFBN0MgLyogRG93bmxvYWRJRC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEb3dubG9hZElELmg7IHBhdGggPSBEb3dubG9hZHMv
RG93bmxvYWRJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzIwQ0I5QjFCQjBE
Q0QyMDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IE5ldHdvcmtTZXNzaW9uQ29jb2EubW07IHBhdGggPSBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzIwQ0I5RTFCQjBERDE4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Nlc3Npb24uaDsgcGF0
aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDOUI4NjExMUMyMjNFNzkwMDExMEYzNiAvKiBEb3dubG9hZENvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRG93bmxvYWRDb2NvYS5tbTsg
cGF0aCA9IERvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTc0NSw2ICs1NzQ4LDcgQEAKIAkJNTE4RThFRjIxNkIyMDhGODAwRTkx
NDI5IC8qIERvd25sb2FkcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJNUMwOTMyMDYxQzIzNjAxMTAwN0FBQTdDIC8qIERvd25sb2FkSUQuaCAqLywKIAkJ
CQk1QzlCODYwRTFDMjIzRTU0MDAxMTBGMzYgLyogY29jb2EgKi8sCiAJCQkJMkRBOTQ0QTUxODg0
RTkzQzAwRUQ4NkRCIC8qIGlvcyAqLywKIAkJCQk1MThFOEYwNDE2QjIwOTM3MDBFOTE0MjkgLyog
bWFjICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9u
IDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTQsNyArNjk0LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIHVpbnQ2NF90IGxp
c3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKFdURjo6bW92ZShmdW5jdGlv
bikpOwogICAgIGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb247CiAgICAgdWludDY0X3QgcG9saWN5
QWN0aW9uOwotICAgIHVpbnQ2NF90IGRvd25sb2FkSUQ7CisgICAgRG93bmxvYWRJRCBkb3dubG9h
ZElEOwogCiAgICAgdW5zaWduZWQgc3luY1NlbmRGbGFncyA9IElQQzo6SW5mb3JtUGxhdGZvcm1Q
cm9jZXNzV2lsbFN1c3BlbmQ7CiAgICAgaWYgKFdlYlBhZ2U6OnN5bmNocm9ub3VzTWVzc2FnZXNT
aG91bGRTcGluUnVuTG9vcCgpKQpAQCAtNzc1LDcgKzc3NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICBib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uOwog
ICAgIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRDsKICAgICB1aW50NjRfdCBwb2xpY3lBY3Rpb247
Ci0gICAgdWludDY0X3QgZG93bmxvYWRJRDsKKyAgICBEb3dubG9hZElEIGRvd25sb2FkSUQ7CiAK
ICAgICBSZWZQdHI8V2ViRnJhbWU+IG9yaWdpbmF0aW5nRnJhbWU7CiAgICAgc3dpdGNoIChhY3Rp
b24tPm5hdmlnYXRpb25UeXBlKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMTk0MjE4KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjE1LDEyICsyMTUsMTIgQEAgdm9pZCBXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVy
KAogICAgIGlmICghbV9wb2xpY3lMaXN0ZW5lcklEKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3BvbGljeURvd25sb2FkSUQgPSAwOworICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKICAg
ICBtX3BvbGljeUxpc3RlbmVySUQgPSAwOwogICAgIG1fcG9saWN5RnVuY3Rpb24gPSAwOwogfQog
Ci12b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVu
ZXJJRCwgUG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRf
dCBkb3dubG9hZElEKQordm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVp
bnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElEKQogewogICAgIGlmICghbV9jb3JlRnJhbWUpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI0OCwxMCArMjQ4LDEwIEBAIHZvaWQgV2ViRnJhbWU6OmRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbigKIAogdm9pZCBXZWJGcmFtZTo6c3RhcnREb3dubG9hZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgQVNTRVJUKG1fcG9s
aWN5RG93bmxvYWRJRCk7CisgICAgQVNTRVJUKG1fcG9saWN5RG93bmxvYWRJRC5kb3dubG9hZElE
KCkpOwogCi0gICAgdWludDY0X3QgcG9saWN5RG93bmxvYWRJRCA9IG1fcG9saWN5RG93bmxvYWRJ
RDsKLSAgICBtX3BvbGljeURvd25sb2FkSUQgPSAwOworICAgIGF1dG8gcG9saWN5RG93bmxvYWRJ
RCA9IG1fcG9saWN5RG93bmxvYWRJRDsKKyAgICBtX3BvbGljeURvd25sb2FkSUQgPSB7IH07CiAK
ICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7CiAgICAgU2Vz
c2lvbklEIHNlc3Npb25JRCA9IHBhZ2UoKSA/IHBhZ2UoKS0+c2Vzc2lvbklEKCkgOiBTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKQEAgLTI2MCwxMCArMjYwLDEwIEBAIHZvaWQgV2ViRnJh
bWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ28KIAogdm9pZCBXZWJGcmFtZTo6Y29udmVydE1h
aW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwg
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBBU1NFUlQobV9wb2xpY3lEb3du
bG9hZElEKTsKKyAgICBBU1NFUlQobV9wb2xpY3lEb3dubG9hZElELmRvd25sb2FkSUQoKSk7CiAK
LSAgICB1aW50NjRfdCBwb2xpY3lEb3dubG9hZElEID0gbV9wb2xpY3lEb3dubG9hZElEOwotICAg
IG1fcG9saWN5RG93bmxvYWRJRCA9IDA7CisgICAgYXV0byBwb2xpY3lEb3dubG9hZElEID0gbV9w
b2xpY3lEb3dubG9hZElEOworICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKIAogICAgIFN1
YnJlc291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIgPSBkb2N1bWVudExvYWRlci0+bWFp
blJlc291cmNlTG9hZGVyKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5oCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBXZWJGcmFtZV9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNs
dWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVk
ZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTgwLDcg
KzgxLDcgQEAgcHVibGljOgogCiAgICAgdWludDY0X3Qgc2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJD
b3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKICAgICB2b2lkIGludmFsaWRhdGVQb2xpY3lMaXN0
ZW5lcigpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3Rl
bmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50
NjRfdCBkb3dubG9hZElEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50
NjRfdCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgRG93bmxvYWRJRCk7CiAKICAgICB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBXZWJDb3JlOjpTZXNzaW9uSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKQEAgLTE3MCw3ICsxNzEsNyBAQCBwcml2YXRlOgogCiAgICAgdWludDY0X3QgbV9w
b2xpY3lMaXN0ZW5lcklEOwogICAgIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24gbV9wb2xp
Y3lGdW5jdGlvbjsKLSAgICB1aW50NjRfdCBtX3BvbGljeURvd25sb2FkSUQ7CisgICAgRG93bmxv
YWRJRCBtX3BvbGljeURvd25sb2FkSUQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVM
b2FkZXJDbGllbnQ+IG1fZnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgTG9hZExpc3RlbmVyKiBtX2xv
YWRMaXN0ZW5lcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHJldmlzaW9uIDE5NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQwOCw3ICsyNDA4LDcg
QEAgdm9pZCBXZWJQYWdlOjpzZXRTZXNzaW9uSUQoU2Vzc2lvbklEIHNlcwogICAgIG1fcGFnZS0+
c2V0U2Vzc2lvbklEKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQz
Ml90IHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBkb3dubG9h
ZElEKQordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCkKIHsKICAgICBXZWJGcmFtZSog
ZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBp
ZiAoIWZyYW1lKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCShyZXZpc2lvbiAxOTQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJB
UElJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgor
I2luY2x1ZGUgIkRvd25sb2FkLmgiCiAjaW5jbHVkZSAiRmluZENvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIklt
YWdlT3B0aW9ucy5oIgpAQCAtMTA0Myw3ICsxMDQ0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBs
YXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwog
ICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwog
Ci0gICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQpOworICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBv
bGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKTsKICAgICB2b2lk
IHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNv
ZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTQyMTgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5
UmVjZWl2ZXIgewogCiAgICAgRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGJhY2tG
b3J3YXJkSXRlbUlEKQogCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBkb3dubG9hZElEKQorICAgIERpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJf
dCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElE
IGRvd25sb2FkSUQpCiAKICAgICBDbGVhclNlbGVjdGlvbigpCiAgICAgUmVzdG9yZVNlbGVjdGlv
bkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>