<?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>134158</bug_id>
          
          <creation_ts>2014-06-21 11:00:09 -0700</creation_ts>
          <short_desc>Remove uses of CrossThreadTask in WorkerThreadableLoader, MemoryCache</short_desc>
          <delta_ts>2015-02-22 08:19:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>berto</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>galpeter</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>mrobinson</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1017300</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-06-21 11:00:09 -0700</bug_when>
    <thetext>Remove uses of CrossThreadTask in WorkerThreadableLoader, MemoryCache</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017301</commentid>
    <comment_count>1</comment_count>
      <attachid>233538</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-06-21 11:06:30 -0700</bug_when>
    <thetext>Created attachment 233538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017303</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-21 11:08:58 -0700</bug_when>
    <thetext>Attachment 233538 did not pass style-queue:


ERROR: Source/WebCore/loader/cache/MemoryCache.cpp:848:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/loader/cache/MemoryCache.cpp:867:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/loader/cache/MemoryCache.cpp:868:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 3 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019711</commentid>
    <comment_count>3</comment_count>
      <attachid>234185</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-07-01 12:15:25 -0700</bug_when>
    <thetext>Created attachment 234185
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019716</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-01 12:19:24 -0700</bug_when>
    <thetext>Attachment 234185 did not pass style-queue:


ERROR: Source/WebCore/loader/cache/MemoryCache.cpp:848:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/loader/cache/MemoryCache.cpp:867:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/loader/cache/MemoryCache.cpp:868:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 3 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071068</commentid>
    <comment_count>5</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-02-22 08:19:26 -0800</bug_when>
    <thetext>This landed as r174583 back in October.
http://trac.webkit.org/changeset/174583</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233538</attachid>
            <date>2014-06-21 11:06:30 -0700</date>
            <delta_ts>2014-07-01 12:15:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134158-20140621110607.patch</filename>
            <type>text/plain</type>
            <size>41571</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwMjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFjYWQ3MTM0NWUyYzQw
YzI2NzQ2OTdkOWMxYjdlYmM3MTI1NjEyNy4uNTM2MjEwYjhlNDc5YmMwYmNhZTJlNGRhZDhiNjhk
ZTg5ZTlmZWQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDE0LTA2LTIxICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBSZW1vdmUgdXNlcyBv
ZiBDcm9zc1RocmVhZFRhc2sgaW4gV29ya2VyVGhyZWFkYWJsZUxvYWRlciwgTWVtb3J5Q2FjaGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDE1OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBDKysx
MSBsYW1iZGFzIGluIHBsYWNlIG9mIENyb3NzVGhyZWFkVGFzayBpbiBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyCisgICAgICAgIGFuZCBNZW1vcnlDYWNoZSBjbGFzc2VzLgorCisgICAgICAgIENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGEgb2JqZWN0cyBhcmUgbm93IGhhbmRsZWQgdGhyb3Vo
IHN0ZDo6dW5pcXVlX3B0cjw+LgorICAgICAgICBTdXBwb3J0IGZvciBSZXNvdXJjZVJlc3BvbnNl
IGFuZCBSZXNvdXJjZVJlcXVlc3QgaW4gQ3Jvc3NUaHJlYWRDb3BpZXIgaGVscGVycyBoYXMKKyAg
ICAgICAgYmVlbiByZW1vdmVkIGFjY29yZGluZ2x5LgorCisgICAgICAgICogbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjp+TWFpblRo
cmVhZEJyaWRnZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRTZW5kRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJp
ZGdlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2sp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6ZGlkRmFpbFJlZGlyZWN0Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWlu
VGhyZWFkQnJpZGdlOjptYWluVGhyZWFkRGVzdHJveSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFk
Q2FuY2VsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ondvcmtlckdsb2JhbFNjb3BlRGlk
U2VuZERhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyR2xvYmFsU2NvcGVE
aWRSZWNlaXZlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyR2xv
YmFsU2NvcGVEaWRSZWNlaXZlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp3b3Jr
ZXJHbG9iYWxTY29wZURpZEZpbmlzaExvYWRpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6d29ya2VyR2xvYmFsU2NvcGVEaWRGYWlsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ondvcmtlckdsb2JhbFNjb3BlRGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp3b3JrZXJHbG9iYWxTY29wZURpZEZhaWxSZWRpcmVjdENoZWNrKTog
RGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2FjaGVzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbUNhY2hlSW1wbCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9u
Q2FjaGVzSW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6Y3Jv
c3NUaHJlYWRSZW1vdmVSZXF1ZXN0RnJvbUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lbW9yeUNhY2hlOjpjcm9zc1RocmVhZFJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hl
cyk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Pjo6Y29weSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlPjo6Y29weSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vQ3Jvc3NU
aHJlYWRDb3BpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRvcHQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y29weURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmFkb3B0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjpjb3B5RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRv
UGxhdGZvcm1Db3B5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRv
UGxhdGZvcm1BZG9wdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJl
c3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpkb1BsYXRmb3Jt
Q29weURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6ZG9QbGF0Zm9y
bUFkb3B0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1Db3B5RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1BZG9wdCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmRvUGxhdGZvcm1Db3B5RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpkb1BsYXRmb3JtQWRvcHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUNvcHlEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUFkb3B0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZTo6ZG9QbGF0Zm9ybUNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2U6OmRvUGxhdGZvcm1BZG9wdCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1Db3B5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1BZG9wdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay93aW4vUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZTo6ZG9QbGF0Zm9ybUNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2U6OmRvUGxhdGZvcm1BZG9wdCk6CisKIDIwMTQtMDYtMjEgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxNzAyNDQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5jcHAKaW5kZXggNjExMGVjMzg3YzAwMWM2MDVmYTk0NGZiMTc0NjAyZjVmYjJhZmRiMi4u
YzI3YThhZmE5ZmE2NmFmMjllYmFhMjhhZDdhOGQ4YzkxMWY5OGEwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzMsNyArMzMs
NiBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuaCIKLSNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNsdWRlICJSZXNv
dXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgpAQCAtOTEsMzIgKzkwLDI1IEBAIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoUGFzc1JlZlB0cjxUaHJlYWRh
YmxlCiAgICAgLCBtX3Rhc2tNb2RlKHRhc2tNb2RlLmlzb2xhdGVkQ29weSgpKQogewogICAgIEFT
U0VSVChtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCkpOwotICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tUb0xvYWRlcihDcm9zc1RocmVhZFRhc2soJk1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJl
YWRDcmVhdGVMb2FkZXIsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHJlcXVlc3QsIG9w
dGlvbnMsIG91dGdvaW5nUmVmZXJyZXIpKTsKLX0KLQotV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6fk1haW5UaHJlYWRCcmlkZ2UoKQotewotfQogCi12b2lkIFdvcmtl
clRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVMb2Fk
ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWFpblRocmVhZEJyaWRnZSogdGhp
c1B0ciwgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IHJlcXVlc3RE
YXRhLCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdv
aW5nUmVmZXJyZXIpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KCZjb250ZXh0KTsKKyAgICBDcm9zc1RocmVhZFJlc291
cmNlUmVxdWVzdERhdGEqIHJlcXVlc3REYXRhID0gcmVxdWVzdC5jb3B5RGF0YSgpLnJlbGVhc2Uo
KTsKKyAgICBTdHJpbmcgb3V0Z29pbmdSZWZlcnJlckNvcHkgPSBvdXRnb2luZ1JlZmVycmVyLmlz
b2xhdGVkQ29weSgpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbPV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KCZjb250ZXh0
KTsKIAotICAgIE93blB0cjxSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
OjphZG9wdChyZXF1ZXN0RGF0YSkpOwotICAgIHJlcXVlc3QtPnNldEhUVFBSZWZlcnJlcihvdXRn
b2luZ1JlZmVycmVyKTsKLSAgICAvLyBGSVhNRTogSWYgdGhlIGEgc2l0ZSByZXF1ZXN0cyBhIGxv
Y2FsIHJlc291cmNlLCB0aGVuIHRoaXMgd2lsbCByZXR1cm4gYSBub24temVybyB2YWx1ZSBidXQg
dGhlIHN5bmMgcGF0aAotICAgIC8vIHdpbGwgcmV0dXJuIGEgMCB2YWx1ZS4gIEVpdGhlciB0aGlz
IHNob3VsZCByZXR1cm4gMCBvciB0aGUgb3RoZXIgY29kZSBwYXRoIHNob3VsZCBkbyBhIGNhbGxi
YWNrIHdpdGgKLSAgICAvLyBhIGZhaWx1cmUuCi0gICAgdGhpc1B0ci0+bV9tYWluVGhyZWFkTG9h
ZGVyID0gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoKmRvY3VtZW50LCAqdGhpc1B0
ciwgKnJlcXVlc3QsIG9wdGlvbnMpOwotICAgIEFTU0VSVCh0aGlzUHRyLT5tX21haW5UaHJlYWRM
b2FkZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0
ID0gUmVzb3VyY2VSZXF1ZXN0OjphZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlcXVlc3REYXRhPihyZXF1ZXN0RGF0YSkpOworICAgICAgICByZXF1ZXN0LT5zZXRIVFRQ
UmVmZXJyZXIob3V0Z29pbmdSZWZlcnJlckNvcHkpOworICAgICAgICAvLyBGSVhNRTogSWYgdGhl
IGEgc2l0ZSByZXF1ZXN0cyBhIGxvY2FsIHJlc291cmNlLCB0aGVuIHRoaXMgd2lsbCByZXR1cm4g
YSBub24temVybyB2YWx1ZSBidXQgdGhlIHN5bmMgcGF0aAorICAgICAgICAvLyB3aWxsIHJldHVy
biBhIDAgdmFsdWUuIEVpdGhlciB0aGlzIHNob3VsZCByZXR1cm4gMCBvciB0aGUgb3RoZXIgY29k
ZSBwYXRoIHNob3VsZCBkbyBhIGNhbGxiYWNrIHdpdGgKKyAgICAgICAgLy8gYSBmYWlsdXJlLgor
ICAgICAgICBtX21haW5UaHJlYWRMb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNy
ZWF0ZSgqZG9jdW1lbnQsICp0aGlzLCAqcmVxdWVzdCwgb3B0aW9ucyk7CisgICAgICAgIEFTU0VS
VChtX21haW5UaHJlYWRMb2FkZXIpOworICAgIH0pOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFi
bGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWREZXN0cm95KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIE1haW5UaHJlYWRCcmlkZ2UqIHRoaXNQdHIpCitXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjp+TWFpblRocmVhZEJyaWRnZSgpCiB7
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQuaXNEb2N1bWVudCgpKTsKLSAgICBkZWxldGUgdGhpc1B0cjsKIH0KIAogdm9pZCBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkZXN0cm95KCkKQEAgLTEy
NSwyMyArMTE3LDI1IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6ZGVzdHJveSgpCiAgICAgY2xlYXJDbGllbnRXcmFwcGVyKCk7CiAKICAgICAvLyAiZGVs
ZXRlIHRoaXMiIGFuZCBtX21haW5UaHJlYWRMb2FkZXI6OmRlcmVmKCkgb24gdGhlIHdvcmtlciBv
YmplY3QncyB0aHJlYWQuCi0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKENyb3Nz
VGhyZWFkVGFzaygmTWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZERlc3Ryb3ksIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2Fk
ZXIoWz1dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4
dC5pc0RvY3VtZW50KCkpOworICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9KTsKIH0KIAotdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ2Fu
Y2VsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1haW5UaHJlYWRCcmlkZ2UqIHRo
aXNQdHIpCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNh
bmNlbCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlRfVU5VU0VE
KGNvbnRleHQsIGNvbnRleHQuaXNEb2N1bWVudCgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrVG9Mb2FkZXIoWz1dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0
LCBjb250ZXh0LmlzRG9jdW1lbnQoKSk7CiAKLSAgICBpZiAoIXRoaXNQdHItPm1fbWFpblRocmVh
ZExvYWRlcikKLSAgICAgICAgcmV0dXJuOwotICAgIHRoaXNQdHItPm1fbWFpblRocmVhZExvYWRl
ci0+Y2FuY2VsKCk7Ci0gICAgdGhpc1B0ci0+bV9tYWluVGhyZWFkTG9hZGVyID0gMDsKLX0KKyAg
ICAgICAgaWYgKCFtX21haW5UaHJlYWRMb2FkZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fbWFpblRocmVhZExvYWRlci0+Y2FuY2VsKCk7CisgICAgICAgIG1fbWFpblRocmVhZExv
YWRlciA9IG51bGxwdHI7CisgICAgfSk7CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6Y2FuY2VsKCkKLXsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
VG9Mb2FkZXIoQ3Jvc3NUaHJlYWRUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ2Fu
Y2VsLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CiAgICAgVGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0
KCk7CiAgICAgaWYgKCFjbGllbnRXcmFwcGVyLT5kb25lKCkpIHsKICAgICAgICAgLy8gSWYgdGhl
IGNsaWVudCBoYXNuJ3QgcmVhY2hlZCBhIHRlcm1pbmF0aW9uIHN0YXRlLCB0aGVuIHRyYW5zaXRp
b24gaXQgYnkgc2VuZGluZyBhIGNhbmNlbGxhdGlvbiBlcnJvci4KQEAgLTE1OCw4NCArMTUyLDc0
IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2xlYXJD
bGllbnRXcmFwcGVyKCkKICAgICBtX3dvcmtlckNsaWVudFdyYXBwZXItPmNsZWFyQ2xpZW50KCk7
CiB9CiAKLXN0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlkU2VuZERhdGEoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFw
cGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQotewotICAgIEFTU0VSVF9VTlVT
RUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgIHdvcmtlckNs
aWVudFdyYXBwZXItPmRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsK
LX0KLQogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRT
ZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KQogewotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJHbG9iYWxTY29wZShDcm9zc1RocmVhZFRhc2soJndvcmtlckdsb2JhbFNjb3BlRGlk
U2VuZERhdGEsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9C
ZVNlbnQpLCBtX3Rhc2tNb2RlKTsKLX0KLQotc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVE
aWRSZWNlaXZlUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmUHRy
PFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YT4gcmVzcG9uc2VEYXRhKQotewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgIE93blB0cjxSZXNvdXJjZVJlc3BvbnNl
PiByZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlOjphZG9wdChyZXNwb25zZURhdGEpKTsKLSAgICB3
b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgKnJlc3Bv
bnNlKTsKKyAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNs
aWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7CisgICAgbV9sb2FkZXJQcm94eS5w
b3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFs9XSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQu
aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlk
U2VuZERhdGEoYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOworICAgIH0sIG1fdGFza01v
ZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6
OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShDcm9zc1RocmVhZFRhc2soJndvcmtlckdsb2JhbFNjb3Bl
RGlkUmVjZWl2ZVJlc3BvbnNlLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIGlkZW50aWZpZXIsIHJl
c3BvbnNlKSwgbV90YXNrTW9kZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3Bl
RGlkUmVjZWl2ZURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmUHRyPFRo
cmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBQYXNzT3du
UHRyPFZlY3RvcjxjaGFyPj4gdmVjdG9yRGF0YSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICB3b3JrZXJDbGllbnRXcmFw
cGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0b3JEYXRhLT5kYXRhKCksIHZlY3RvckRhdGEtPnNpemUo
KSk7CisgICAgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YSogcmVzcG9uc2VEYXRhID0g
cmVzcG9uc2UuY29weURhdGEoKS5yZWxlYXNlKCk7CisgICAgUmVmUHRyPFRocmVhZGFibGVMb2Fk
ZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFw
cGVyOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29w
ZShbPV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlc3BvbnNlPiByZXNwb25zZSA9IFJlc291cmNlUmVz
cG9uc2U6OmFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VE
YXRhPihyZXNwb25zZURhdGEpKTsKKyAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsICpyZXNwb25zZSk7CisgICAgfSwgbV90YXNrTW9kZSk7
CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7Ci0gICAgT3du
UHRyPFZlY3RvcjxjaGFyPj4gdmVjdG9yID0gYWRvcHRQdHIobmV3IFZlY3RvcjxjaGFyPihkYXRh
TGVuZ3RoKSk7IC8vIG5lZWRzIHRvIGJlIGFuIE93blB0ciBmb3IgdXNhZ2Ugd2l0aCBDcm9zc1Ro
cmVhZFRhc2suCi0gICAgbWVtY3B5KHZlY3Rvci0+ZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsK
LSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoQ3Jv
c3NUaHJlYWRUYXNrKCZ3b3JrZXJHbG9iYWxTY29wZURpZFJlY2VpdmVEYXRhLCBtX3dvcmtlckNs
aWVudFdyYXBwZXIsIHZlY3Rvci5yZWxlYXNlKCkpLCBtX3Rhc2tNb2RlKTsKLX0KLQotc3RhdGlj
IHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEaWRGaW5pc2hMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29y
a2VyQ2xpZW50V3JhcHBlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNo
VGltZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9i
YWxTY29wZSgpKTsKLSAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5nKGlk
ZW50aWZpZXIsIGZpbmlzaFRpbWUpOworICAgIFZlY3RvcjxjaGFyPiogdmVjdG9yUHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxWZWN0b3I8Y2hhcj4+KGRhdGFMZW5ndGgpLnJlbGVhc2UoKTsKKyAgICBt
ZW1jcHkodmVjdG9yUHRyLT5kYXRhKCksIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIFJlZlB0cjxU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29y
a2VyQ2xpZW50V3JhcHBlcjsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoWz1dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUo
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8Y2hhcj4+IHZlY3Rvcih2ZWN0b3JQ
dHIpOworICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0b3It
PmRhdGEoKSwgdmVjdG9yLT5zaXplKCkpOworICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lk
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRp
bmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKIHsKLSAgICBt
X2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoQ3Jvc3NUaHJl
YWRUYXNrKCZ3b3JrZXJHbG9iYWxTY29wZURpZEZpbmlzaExvYWRpbmcsIG1fd29ya2VyQ2xpZW50
V3JhcHBlciwgaWRlbnRpZmllciwgZmluaXNoVGltZSksIG1fdGFza01vZGUpOwotfQotCi1zdGF0
aWMgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURpZEZhaWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGll
bnRXcmFwcGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSAgICBBU1NFUlRfVU5V
U0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICB3b3JrZXJD
bGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9yKTsKKyAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBw
ZXI7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3Bl
KFs9XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgICAgICB3
b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRp
bWUpOworICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CiB7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3Bl
KENyb3NzVGhyZWFkVGFzaygmd29ya2VyR2xvYmFsU2NvcGVEaWRGYWlsLCBtX3dvcmtlckNsaWVu
dFdyYXBwZXIsIGVycm9yKSwgbV90YXNrTW9kZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdvcmtlckds
b2JhbFNjb3BlRGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3Jr
ZXJDbGllbnRXcmFwcGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICB3
b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKGVycm9yKTsKKyAg
ICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBw
ZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7CisgICAgUmVzb3VyY2VFcnJvciBlcnJvckNvcHkg
PSBlcnJvci5jb3B5KCk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckdsb2JhbFNjb3BlKFs9XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkp
OworICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9yQ29weSk7CisgICAg
fSwgbV90YXNrTW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKIHsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xv
YmFsU2NvcGUoQ3Jvc3NUaHJlYWRUYXNrKCZ3b3JrZXJHbG9iYWxTY29wZURpZEZhaWxBY2Nlc3ND
b250cm9sQ2hlY2ssIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgZXJyb3IpLCBtX3Rhc2tNb2RlKTsK
LX0KLQotc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEaWRGYWlsUmVkaXJlY3RDaGVjayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNs
aWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgd29ya2VyQ2xpZW50
V3JhcHBlci0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKKyAgICBSZWZQdHI8VGhyZWFkYWJsZUxv
YWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdy
YXBwZXI7CisgICAgUmVzb3VyY2VFcnJvciBlcnJvckNvcHkgPSBlcnJvci5jb3B5KCk7CisgICAg
bV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFs9XShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgICAgICB3b3JrZXJDbGll
bnRXcmFwcGVyLT5kaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKGVycm9yKTsKKyAgICB9LCBtX3Rh
c2tNb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJp
ZGdlOjpkaWRGYWlsUmVkaXJlY3RDaGVjaygpCiB7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKENyb3NzVGhyZWFkVGFzaygmd29ya2VyR2xvYmFs
U2NvcGVEaWRGYWlsUmVkaXJlY3RDaGVjaywgbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgbV90YXNr
TW9kZSk7CisgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJD
bGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyOworICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbPV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQu
aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKKyAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlk
RmFpbFJlZGlyZWN0Q2hlY2soKTsKKyAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmgKaW5kZXggMDU1MWFjNTVjMmZlYzhiN2IzMzdlNmEyNGM2NjM1NjRiMTc0YTdkZi4u
ZTcwNzc1MTA5YmJhYTIyNzJmZWM3YzQ4YjE3ZGFmNTYyZDgwNjVlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCkBAIC0xMDgsOCArMTA4LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVh
ZERlc3Ryb3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1haW5UaHJlYWRCcmlkZ2UqKTsKICAg
ICAgICAgICAgIH5NYWluVGhyZWFkQnJpZGdlKCk7CiAKLSAgICAgICAgICAgIHN0YXRpYyB2b2lk
IG1haW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1haW5UaHJl
YWRCcmlkZ2UqLCBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4sIFRo
cmVhZGFibGVMb2FkZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIpOwot
ICAgICAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENhbmNlbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgTWFpblRocmVhZEJyaWRnZSopOwogICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggOTA3MWVlZmRlY2Y4Y2Fh
YTQ3ZGM0ODUxZDU5MGI5MThjZjI3MWEzNS4uMWRmMGJkNTlkNDk4M2RkOGFjYWFhMzQ0Y2QyMDNh
NWQ5NzRlMDliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
Y3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2VDbGllbnQuaCIKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxl
LmgiCi0jaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIK
QEAgLTg0Niw0NyArODQ1LDQxIEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVVybEZyb21DYWNo
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpCiAKIHZvaWQgTWVt
b3J5Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tQ2FjaGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZXNzaW9uSUQgc2Vzc2lv
bklEKQogeworICAgIGF1dG8gcmVxdWVzdFJlbW92YWwgPSBbXShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQpIHsKKyAgICAgICAgaWYgKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yUmVxdWVzdChyZXF1
ZXN0LCBzZXNzaW9uSUQpKQorICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKHJlc291
cmNlKTsKKyAgICB9OworCiAgICAgaWYgKGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkg
ewotICAgICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpLT50aHJlYWQoKS53b3JrZXJM
b2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoQ3Jvc3NUaHJlYWRUYXNrKCZjcm9zc1RocmVh
ZFJlbW92ZVJlcXVlc3RGcm9tQ2FjaGUsIHJlcXVlc3QsIHNlc3Npb25JRCkpOworICAgICAgICBD
cm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGEqIHJlcXVlc3REYXRhID0gcmVxdWVzdC5jb3B5
RGF0YSgpLnJlbGVhc2UoKTsKKyAgICAgICAgdG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KS0+
dGhyZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKFs9XShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JikgeworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNl
UmVxdWVzdD4gcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdDo6YWRvcHQoc3RkOjp1bmlxdWVfcHRy
PENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4ocmVxdWVzdERhdGEpKTsKKyAgICAgICAg
ICAgIHJlcXVlc3RSZW1vdmFsKCpyZXF1ZXN0LCBzZXNzaW9uSUQpOworICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlbW92ZVJlcXVlc3RGcm9tQ2FjaGVJbXBsKGNv
bnRleHQsIHJlcXVlc3QsIHNlc3Npb25JRCk7Ci19Ci0KLXZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92
ZVJlcXVlc3RGcm9tQ2FjaGVJbXBsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0gICAgaWYgKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yUmVxdWVz
dChyZXF1ZXN0LCBzZXNzaW9uSUQpKQotICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUocmVz
b3VyY2UpOworICAgIHJlcXVlc3RSZW1vdmFsKHJlcXVlc3QsIHNlc3Npb25JRCk7CiB9CiAKIHZv
aWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7
CisgICAgYXV0byByZXF1ZXN0UmVtb3ZhbCA9IFtdKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkgeworICAgICAgICBmb3IgKGF1dG8mIHJlc291cmNlcyA6IG1lbW9yeUNhY2hlKCktPm1f
c2Vzc2lvblJlc291cmNlcykKKyAgICAgICAgICAgIGlmIChDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UgPSBtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUZvclJlcXVlc3RJbXBsKHJlcXVlc3QsICpyZXNv
dXJjZXMudmFsdWUpKQorICAgICAgICAgICAgICAgIG1lbW9yeUNhY2hlKCktPnJlbW92ZShyZXNv
dXJjZSk7CisgICAgfTsKKwogICAgIGlmIChjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkp
IHsKLSAgICAgICAgdG9Xb3JrZXJHbG9iYWxTY29wZShjb250ZXh0KS0+dGhyZWFkKCkud29ya2Vy
TG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVyKENyb3NzVGhyZWFkVGFzaygmY3Jvc3NUaHJl
YWRSZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMsIHJlcXVlc3QpKTsKKyAgICAgICAgQ3Jv
c3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhKiByZXF1ZXN0RGF0YSA9IHJlcXVlc3QuY29weURh
dGEoKS5yZWxlYXNlKCk7CisgICAgICAgIHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCktPnRo
cmVhZCgpLndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihbPV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIHsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJl
cXVlc3Q+IHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3Q6OmFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxD
cm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KHJlcXVlc3REYXRhKSk7CisgICAgICAgICAg
ICByZXF1ZXN0UmVtb3ZhbCgqcmVxdWVzdCk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIHJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlc0ltcGwoY29udGV4dCwg
cmVxdWVzdCk7Ci19Ci0KLXZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lv
bkNhY2hlc0ltcGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKLXsKLSAgICBmb3IgKGF1dG8mIHJlc291cmNlcyA6IG1lbW9yeUNhY2hlKCkt
Pm1fc2Vzc2lvblJlc291cmNlcykgewotICAgICAgICBpZiAoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlID0gbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VGb3JSZXF1ZXN0SW1wbChyZXF1ZXN0LCAqcmVz
b3VyY2VzLnZhbHVlKSkKLSAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmVtb3ZlKHJlc291cmNlKTsK
LSAgICB9Ci19CiAKLXZvaWQgTWVtb3J5Q2FjaGU6OmNyb3NzVGhyZWFkUmVtb3ZlUmVxdWVzdEZy
b21DYWNoZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzT3duUHRyPFdlYkNv
cmU6OkNyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gcmVxdWVzdERhdGEsIFNlc3Npb25J
RCBzZXNzaW9uSUQpCi17Ci0gICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdChSZXNv
dXJjZVJlcXVlc3Q6OmFkb3B0KHJlcXVlc3REYXRhKSk7Ci0gICAgTWVtb3J5Q2FjaGU6OnJlbW92
ZVJlcXVlc3RGcm9tQ2FjaGVJbXBsKCZjb250ZXh0LCAqcmVxdWVzdCwgc2Vzc2lvbklEKTsKLX0K
LQotdm9pZCBNZW1vcnlDYWNoZTo6Y3Jvc3NUaHJlYWRSZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25D
YWNoZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGFzc093blB0cjxXZWJDb3Jl
OjpDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IHJlcXVlc3REYXRhKQotewotICAgIE93
blB0cjxSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0OjphZG9wdChyZXF1
ZXN0RGF0YSkpOwotICAgIE1lbW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNo
ZXMoJmNvbnRleHQsICpyZXF1ZXN0KTsKKyAgICByZXF1ZXN0UmVtb3ZhbChyZXF1ZXN0KTsKIH0K
IAogdm9pZCBNZW1vcnlDYWNoZTo6VHlwZVN0YXRpc3RpYzo6YWRkUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UqIG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4
IGJiYzM0ZWJiODcwYjJhMzE4NDYyNjUzNzg2MDhjYjY0YTU2YWRiNmUuLmEzOTY4NTMyN2MzNDM0
ZGE3NTQxZWM4YTc3NmFiMDdjYWNmNWRiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5oCkBAIC0yMjYsMTAgKzIyNiw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBl
dmljdChDYWNoZWRSZXNvdXJjZSopOwogCiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlRm9y
UmVxdWVzdEltcGwoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVkUmVzb3VyY2VNYXAmKTsK
LSAgICBzdGF0aWMgdm9pZCByZW1vdmVSZXF1ZXN0RnJvbUNhY2hlSW1wbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU2Vzc2lvbklEKTsKLSAgICBzdGF0
aWMgdm9pZCByZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXNJbXBsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBzdGF0aWMgdm9pZCBjcm9z
c1RocmVhZFJlbW92ZVJlcXVlc3RGcm9tQ2FjaGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFBh
c3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiwgU2Vzc2lvbklEKTsKLSAg
ICBzdGF0aWMgdm9pZCBjcm9zc1RocmVhZFJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVx
dWVzdERhdGE+KTsKIAogICAgIENhY2hlZFJlc291cmNlTWFwJiBnZXRTZXNzaW9uTWFwKFNlc3Np
b25JRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFk
Q29waWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNw
cAppbmRleCAxYjFhYzEzZWM2NTJhOGJiODE3YTI1OWQ1OGQwNDVmYzdlNDNhZWJjLi42MDBhYThh
NmU1Y2Y3OWQ5YTJkZmU1OWJiYTU3ODNjMmQ1NTlkNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCkBAIC0zNCw4ICszNCw2IEBACiAKICNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCi0jaW5jbHVkZSAiUmVzb3Vy
Y2VSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlc3Npb25JRC5oIgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC02NSwxNiArNjMsNiBAQCBDcm9zc1RocmVhZENvcGllckJh
c2U8ZmFsc2UsIGZhbHNlLCBSZXNvdXJjZUVycm9yPjo6VHlwZSBDcm9zc1RocmVhZENvcGllckJh
c2U8ZgogICAgIHJldHVybiBlcnJvci5jb3B5KCk7CiB9CiAKLUNyb3NzVGhyZWFkQ29waWVyQmFz
ZTxmYWxzZSwgZmFsc2UsIFJlc291cmNlUmVxdWVzdD46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJC
YXNlPGZhbHNlLCBmYWxzZSwgUmVzb3VyY2VSZXF1ZXN0Pjo6Y29weShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIHJlcXVlc3QuY29weURhdGEoKTsKLX0KLQot
Q3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgUmVzb3VyY2VSZXNwb25zZT46OlR5
cGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgUmVzb3VyY2VSZXNwb25zZT46
OmNvcHkoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0gICAgcmV0dXJuIHJl
c3BvbnNlLmNvcHlEYXRhKCk7Ci19Ci0KIENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFs
c2UsIFNlc3Npb25JRD46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwg
U2Vzc2lvbklEPjo6Y29weShjb25zdCBTZXNzaW9uSUQmIHNlc3Npb25JRCkKIHsKICAgICByZXR1
cm4gc2Vzc2lvbklEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NU
aHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVy
LmgKaW5kZXggMzk4ZTg0ZWQ0ZTUzMTBhYzFlNzI4YmMyM2I4YTk4MWY0OTcxOWFlNC4uMmNmZGFj
ODhjOGU0MWYyNjhlZmRhZDNjNzZhZjAyOTU1YTA5MjNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCkBAIC00NCwxMSArNDQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgSW50U2l6ZTsKICAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKLSAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci0gICAgY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKICAgICBjbGFzcyBTZXNzaW9uSUQ7Ci0gICAgc3RydWN0IENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGE7Ci0gICAgc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXF1ZXN0RGF0YTsKICAgICBzdHJ1Y3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM7CiAKICAgICBz
dHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlSGVscGVyIHsKQEAgLTEzNiwxNiArMTMyLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKICAgICB9OwogCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRD
b3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgUmVzb3VyY2VSZXF1ZXN0PiB7Ci0gICAgICAgIHR5cGVk
ZWYgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IFR5cGU7Ci0gICAg
ICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgfTsKLQot
ICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2Us
IFJlc291cmNlUmVzcG9uc2U+IHsKLSAgICAgICAgdHlwZWRlZiBQYXNzT3duUHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IFR5cGU7Ci0gICAgICAgIHN0YXRpYyBUeXBlIGNvcHko
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIH07Ci0KICAgICB0ZW1wbGF0ZTw+IHN0cnVj
dCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBTZXNzaW9uSUQ+IHsKICAgICAg
ICAgdHlwZWRlZiBTZXNzaW9uSUQgVHlwZTsKICAgICAgICAgc3RhdGljIFR5cGUgY29weShjb25z
dCBTZXNzaW9uSUQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IDA4MjZhYTdjNjQwMjZiZGIxMjUyMTJj
ZjA0MjBhZjcxYTQwMDM5ZmQuLjM2ZWI0YzM3NDg1MGI2MmU4ZGIzMTQ1ZTM5Yzk2MWYwN2QzYWQz
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtNDksOSArNDksOSBAQCBpbmxpbmUgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiBSZXNvdXJjZVJlcXVlc3RCYXNlOjphc1Jlc291cmNlUmVxdWVzdCgpIGNvbnN0
CiAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZVJlcXVlc3QqPih0aGlzKTsK
IH0KIAotUGFzc093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IFJlc291cmNlUmVxdWVzdEJhc2U6OmFk
b3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkYXRhKQorc3Rk
Ojp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRvcHQo
c3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSkKIHsK
LSAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRQdHIobmV3IFJlc291
cmNlUmVxdWVzdCgpKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291
cmNlUmVxdWVzdD4oKTsKICAgICByZXF1ZXN0LT5zZXRVUkwoZGF0YS0+bV91cmwpOwogICAgIHJl
cXVlc3QtPnNldENhY2hlUG9saWN5KGRhdGEtPm1fY2FjaGVQb2xpY3kpOwogICAgIHJlcXVlc3Qt
PnNldFRpbWVvdXRJbnRlcnZhbChkYXRhLT5tX3RpbWVvdXRJbnRlcnZhbCk7CkBAIC03NywxMyAr
NzcsMTMgQEAgUGFzc093blB0cjxSZXNvdXJjZVJlcXVlc3Q+IFJlc291cmNlUmVxdWVzdEJhc2U6
OmFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXMKICAgICB9CiAgICAgcmVxdWVzdC0+c2V0
SFRUUEJvZHkoZGF0YS0+bV9odHRwQm9keSk7CiAgICAgcmVxdWVzdC0+c2V0QWxsb3dDb29raWVz
KGRhdGEtPm1fYWxsb3dDb29raWVzKTsKLSAgICByZXF1ZXN0LT5kb1BsYXRmb3JtQWRvcHQoZGF0
YSk7Ci0gICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOworICAgIHJlcXVlc3QtPmRvUGxhdGZv
cm1BZG9wdChzdGQ6Om1vdmUoZGF0YSkpOworICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNz
T3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gUmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6Y29weURhdGEoKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXF1ZXN0RGF0YT4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y29weURhdGEoKSBjb25zdAogewotICAg
IE93blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEgPSBhZG9wdFB0cihu
ZXcgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhKCkpOworICAgIGF1dG8gZGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPigpOwogICAgIGRh
dGEtPm1fdXJsID0gdXJsKCkuY29weSgpOwogICAgIGRhdGEtPm1fY2FjaGVQb2xpY3kgPSBjYWNo
ZVBvbGljeSgpOwogICAgIGRhdGEtPm1fdGltZW91dEludGVydmFsID0gdGltZW91dEludGVydmFs
KCk7CkBAIC0xMDAsNyArMTAwLDcgQEAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVx
dWVzdERhdGE+IFJlc291cmNlUmVxdWVzdEJhc2U6OmNvcHlEYXRhKCkgY29uc3QKICAgICBpZiAo
bV9odHRwQm9keSkKICAgICAgICAgZGF0YS0+bV9odHRwQm9keSA9IG1faHR0cEJvZHktPmRlZXBD
b3B5KCk7CiAgICAgZGF0YS0+bV9hbGxvd0Nvb2tpZXMgPSBtX2FsbG93Q29va2llczsKLSAgICBy
ZXR1cm4gYXNSZXNvdXJjZVJlcXVlc3QoKS5kb1BsYXRmb3JtQ29weURhdGEoZGF0YS5yZWxlYXNl
KCkpOworICAgIHJldHVybiBhc1Jlc291cmNlUmVxdWVzdCgpLmRvUGxhdGZvcm1Db3B5RGF0YShz
dGQ6Om1vdmUoZGF0YSkpOwogfQogCiBib29sIFJlc291cmNlUmVxdWVzdEJhc2U6OmlzRW1wdHko
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuaAppbmRleCA4MTBjMTk2MjdhOGY4YTQyZWUyMjc4ZThlZjBhMWJmNzhk
MTliYzM0Li5kNzI2MzFlNTE3ODEwYzkzM2U0NGYwMmUzZjM0YzVmOTYwYzRjZDU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgorI2luY2x1ZGUg
PG1lbW9yeT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCwxMCArNTUsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdEJhc2UgewogICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFJlc291cmNlUmVxdWVzdD4gYWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVxdWVzdERhdGE+KTsKKyAgICAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZXNv
dXJjZVJlcXVlc3Q+IGFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVx
dWVzdERhdGE+KTsKIAogICAgICAgICAvLyBHZXRzIGEgY29weSBvZiB0aGUgZGF0YSBzdWl0YWJs
ZSBmb3IgcGFzc2luZyB0byBhbm90aGVyIHRocmVhZC4KLSAgICAgICAgUGFzc093blB0cjxDcm9z
c1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGNvcHlEYXRhKCkg
Y29uc3Q7CiAKICAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IGEwZjcxNjkxNjU1NTViMTc5ZDEwZWJk
OTk0NWJkZjgwODE0ZmU1NWMuLjEzOWJhNWU1MWI2Y2ZkMTRiMjM0MzA1YTE0ZTc1ZjUzMTNlNGFk
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC05NCw5ICs5NCw5IEBAIFJlc291cmNlUmVzcG9uc2VC
YXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwCiB7CiB9CiAKLVBhc3NPd25QdHI8UmVzb3VyY2VSZXNwb25zZT4gUmVzb3VyY2VSZXNw
b25zZUJhc2U6OmFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0
YT4gZGF0YSkKK3N0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlc3BvbnNlPiBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6YWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25z
ZURhdGE+IGRhdGEpCiB7Ci0gICAgT3duUHRyPFJlc291cmNlUmVzcG9uc2U+IHJlc3BvbnNlID0g
YWRvcHRQdHIobmV3IFJlc291cmNlUmVzcG9uc2UpOworICAgIGF1dG8gcmVzcG9uc2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlc291cmNlUmVzcG9uc2U+KCk7CiAgICAgcmVzcG9uc2UtPnNldFVSTChk
YXRhLT5tX3VybCk7CiAgICAgcmVzcG9uc2UtPnNldE1pbWVUeXBlKGRhdGEtPm1fbWltZVR5cGUp
OwogICAgIHJlc3BvbnNlLT5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoZGF0YS0+bV9leHBlY3Rl
ZENvbnRlbnRMZW5ndGgpOwpAQCAtMTA5LDEzICsxMDksMTMgQEAgUGFzc093blB0cjxSZXNvdXJj
ZVJlc3BvbnNlPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWRvcHQoUGFzc093blB0cjxDcm9zc1Ro
cmVhZFIKICAgICByZXNwb25zZS0+bGF6eUluaXQoQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpOwog
ICAgIHJlc3BvbnNlLT5tX2h0dHBIZWFkZXJGaWVsZHMuYWRvcHQoc3RkOjptb3ZlKGRhdGEtPm1f
aHR0cEhlYWRlcnMpKTsKICAgICByZXNwb25zZS0+c2V0UmVzb3VyY2VMb2FkVGltaW5nKGRhdGEt
Pm1fcmVzb3VyY2VMb2FkVGltaW5nKTsKLSAgICByZXNwb25zZS0+ZG9QbGF0Zm9ybUFkb3B0KGRh
dGEpOwotICAgIHJldHVybiByZXNwb25zZS5yZWxlYXNlKCk7CisgICAgcmVzcG9uc2UtPmRvUGxh
dGZvcm1BZG9wdChzdGQ6Om1vdmUoZGF0YSkpOworICAgIHJldHVybiByZXNwb25zZTsKIH0KIAot
UGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6Y29weURhdGEoKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXNwb25zZURhdGE+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb3B5RGF0YSgpIGNvbnN0
CiB7Ci0gICAgT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEgPSBh
ZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YSk7CisgICAgYXV0byBk
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPigp
OwogICAgIGRhdGEtPm1fdXJsID0gdXJsKCkuY29weSgpOwogICAgIGRhdGEtPm1fbWltZVR5cGUg
PSBtaW1lVHlwZSgpLmlzb2xhdGVkQ29weSgpOwogICAgIGRhdGEtPm1fZXhwZWN0ZWRDb250ZW50
TGVuZ3RoID0gZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0xMjUsNyArMTI1LDcgQEAgUGFz
c093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6Y29weURhdGEoKSBjb24KICAgICBkYXRhLT5tX2h0dHBTdGF0dXNUZXh0ID0gaHR0cFN0
YXR1c1RleHQoKS5pc29sYXRlZENvcHkoKTsKICAgICBkYXRhLT5tX2h0dHBIZWFkZXJzID0gaHR0
cEhlYWRlckZpZWxkcygpLmNvcHlEYXRhKCk7CiAgICAgZGF0YS0+bV9yZXNvdXJjZUxvYWRUaW1p
bmcgPSBtX3Jlc291cmNlTG9hZFRpbWluZzsKLSAgICByZXR1cm4gYXNSZXNvdXJjZVJlc3BvbnNl
KCkuZG9QbGF0Zm9ybUNvcHlEYXRhKGRhdGEucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gYXNSZXNv
dXJjZVJlc3BvbnNlKCkuZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6bW92ZShkYXRhKSk7CiB9CiAK
IGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzSFRUUCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5k
ZXggZjcxMTMzYmEzZmIwNjczZTVkOTU1ZDIwZjFhZjZkYWI4YWIwYWRlYy4uODU3MDRhZmQ3MGIw
MGMyZDE5NTk3ODRkZTc5ZmY2ZmI0ZDM3YjlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMzAsNyArMzAs
NyBAQAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRUaW1pbmcuaCIKLQorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDcsMTAg
KzQ3LDEwIEBAIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlc291cmNlUmVzcG9uc2U+IGFkb3B0KFBhc3NP
d25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4pOworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXNwb25zZT4gYWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KTsKIAogICAgIC8vIEdldHMgYSBjb3B5IG9mIHRo
ZSBkYXRhIHN1aXRhYmxlIGZvciBwYXNzaW5nIHRvIGFub3RoZXIgdGhyZWFkLgotICAgIFBhc3NP
d25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gY29weURhdGEoKSBjb25zdDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gY29w
eURhdGEoKSBjb25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9pc051
bGw7IH0KICAgICBib29sIGlzSFRUUCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggN2FiYTY5MDUyNDQ5
MjU5YTRiZWM2NDU1Zjc1N2IzYmUzY2Q1MjI2Ni4uYjNjNzE0ZjI4MTg0ZDBhNGQxNzFmNjU0MjJi
Nzg3OWY2MGIxYjg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCkBAIC0xMjgsOCArMTI4LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpOwogICAgICAg
ICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgpOwogCi0gICAgICAgIFBhc3NPd25QdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoUGFzc093
blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KSBjb25zdDsKLSAgICAgICAgdm9p
ZCBkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERh
dGE+KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0
RGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291
cmNlUmVxdWVzdERhdGE+KSBjb25zdDsKKyAgICAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoc3Rk
Ojp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pOwogCiAjaWYgVVNF
KENGTkVUV09SSykKICAgICAgICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gbV9jZlJlcXVl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVxdWVzdENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCmluZGV4IDdmY2Q3YTBmODZhOTkxMTMxODk1YWFiMTY2
N2RjYjE2NTAzZTNkYTguLjQ3YjA5MzRkNzQxMzc4MDQ1MzAwODk3MjMzYmViNGRmYjA1YTI3MmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VS
ZXF1ZXN0Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCkBAIC0zODEsNyArMzgxLDcgQEAgU3RyaW5nIFJlc291
cmNlUmVxdWVzdDo6cGFydGl0aW9uTmFtZShjb25zdCBTdHJpbmcmIGRvbWFpbikKIH0KICNlbmRp
ZgogCi1QYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gUmVzb3VyY2VS
ZXF1ZXN0Ojpkb1BsYXRmb3JtQ29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNl
UmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlcXVlc3REYXRhPiBSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6
OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkYXRhKSBjb25zdAog
ewogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAgICAgZGF0YS0+bV9jYWNoZVBhcnRp
dGlvbiA9IG1fY2FjaGVQYXJ0aXRpb247CkBAIC0zODksNyArMzg5LDcgQEAgUGFzc093blB0cjxD
cm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IFJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9y
bUNvcHlEYXRhKFAKICAgICByZXR1cm4gZGF0YTsKIH0KIAotdm9pZCBSZXNvdXJjZVJlcXVlc3Q6
OmRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0
YT4gZGF0YSkKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1BsYXRmb3JtQWRvcHQoc3RkOjp1bmlx
dWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSkKIHsKICNpZiBFTkFC
TEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIG1fY2FjaGVQYXJ0aXRpb24gPSBkYXRhLT5tX2Nh
Y2hlUGFydGl0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCBjY2QzNmQ2ZDQxOGIzMWZhOGEyNTY1MjUxYjcx
N2U4Mjg1NzI5YmQ4Li5jODMwODQxMzQ1OTI0MmZiYWUxZGI5ODBhY2EyMzRmNTNjOTg5MmNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVz
cG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVzcG9uc2UuaApAQCAtMTAzLDggKzEwMyw4IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IFJlc291cmNlUmVzcG9uc2VCYXNlOwogCiAgICAgdm9pZCBwbGF0Zm9ybUxhenlJbml0KEluaXRM
ZXZlbCk7Ci0gICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBk
b1BsYXRmb3JtQ29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VE
YXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9Ci0gICAgdm9pZCBkb1BsYXRmb3JtQWRv
cHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPikgeyB9CisgICAg
c3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRvUGxhdGZv
cm1Db3B5RGF0YShzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0
YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQorICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0
KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPikgeyB9CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBpbml0TlNVUkxSZXNwb25zZSgpIGNvbnN0Owog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggZGIzNGZlYWY0YjcyMmY4YTMyNDY1MWRkZDMzODQzYWUw
ZTMwODVkOC4uNjg1MzUwMDRhNWI5MDAyMDc5MWU2ZDc3Nzk4ZmYwMDEwNzlkZjQzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJl
cXVlc3QuaApAQCAtODAsOCArODAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkgeyB9CiAgICAgICAgIHZvaWQgZG9VcGRhdGVS
ZXNvdXJjZUhUVFBCb2R5KCkgeyB9CiAKLSAgICAgICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVxdWVzdERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQotICAg
ICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXF1ZXN0RGF0YT4pIHsgfQorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoc3RkOjp1bmlxdWVfcHRyPENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQor
ICAgICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9CiAgCiAgICAgICAgIHN0YXRpYyBib29sIHNfaHR0cFBp
cGVsaW5pbmdFbmFibGVkOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCA0NWU4YTFlM2VlOGI0
NzJkYWQ4YTY4YzhiMGFmNDRjMDFjMjA3N2FlLi5jNTlmNDQ0MjE2YzVmMjkyYjU3MzExOThjNjUx
MmYzNDBhNTMxMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2U7CiAKLSAgICBQ
YXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRvUGxhdGZvcm1Db3B5
RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEpIGNv
bnN0IHsgcmV0dXJuIGRhdGE7IH0KLSAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRy
PENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KSB7IH0KKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKHN0
ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkYXRhKSBjb25z
dCB7IHJldHVybiBkYXRhOyB9CisgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoc3RkOjp1bmlxdWVf
cHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KSB7IH0KIAogICAgIGJvb2wgbV9y
ZXNwb25zZUZpcmVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA0NGM4MzQ1Y2ZkNGI1MDBjMWQ3NzA5
MTk5NDA4NTRiNWRlODJhZDE2Li4zYzY0MGVhMzM3MzM4Yzk0ZGJkNmU0ZTUyYjNiZjI1M2JkYzI2
MDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdC5oCkBAIC0xMjEsOCArMTIxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpIHsgfQogICAgICAgICB2
b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgpIHsgfQogCi0gICAgICAgIFBhc3NPd25QdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoUGFzc093
blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJu
IGRhdGE7IH0KLSAgICAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1Ro
cmVhZFJlc291cmNlUmVxdWVzdERhdGE+KSB7IH0KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0IHsgcmV0
dXJuIGRhdGE7IH0KKyAgICAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoc3RkOjp1bmlxdWVfcHRy
PENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pIHsgfQogICAgIH07CiAKICAgICBzdHJ1
Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhIDogcHVibGljIENyb3NzVGhyZWFkUmVz
b3VyY2VSZXF1ZXN0RGF0YUJhc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggMTNkYTJiMWJhN2JhYWYx
ODA3YjdjMjI5NmViYTQxMzU1NjczNzQyZi4uODY2NTRlZTA0MmMwZGVmZjM3YzBiYzJiMGE1MTE0
NzA2Nzk5M2Q0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oCkBAIC04NSw4ICs4NSw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpIHsgfQogCi0gICAgUGFzc093blB0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoUGFz
c093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkYXRhKSBjb25zdCB7IHJl
dHVybiBkYXRhOyB9Ci0gICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1Ro
cmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPikgeyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6OnVuaXF1
ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZGF0YSkgY29uc3QgeyByZXR1
cm4gZGF0YTsgfQorICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9z
c1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPikgeyB9CiB9OwogCiBzdHJ1Y3QgQ3Jvc3NUaHJl
YWRSZXNvdXJjZVJlc3BvbnNlRGF0YSA6IHB1YmxpYyBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9u
c2VEYXRhQmFzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3dpbi9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
d2luL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDQ4ZGIxYjA2MTdmMDFjMmY0MzZkYTk4ZTI0NmIy
MjhlYjFjYjg0NGEuLjYxOTMyMzM2ZGY5YjUyNmU2ZDRlODAwNjRiYTIxNTU3OTJmYTc4OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNl
UmVxdWVzdC5oCkBAIC02MSw4ICs2MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1VwZGF0ZVBs
YXRmb3JtSFRUUEJvZHkoKSB7IH0KICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgp
IHsgfQogCi0gICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRv
UGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0
YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQotICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0
KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZG9QbGF0Zm9ybUNv
cHlEYXRhKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRh
dGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0KKyAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChzdGQ6
OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9CiB9OwogCiBz
dHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhIDogcHVibGljIENyb3NzVGhyZWFk
UmVzb3VyY2VSZXF1ZXN0RGF0YUJhc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDFlOTVlNDA5Nzk1NWRm
NDBmY2E1YjM4Mjc4OWU5ZDAyYTFmZjFiYjUuLjY5ZWEzMDhkYzUwNWEyMmI2ZWNlODM1ODUzYTlj
Yjc4ODEzNGY2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
d2luL1Jlc291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3dpbi9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2U7CiAKLSAgICBQYXNz
T3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRvUGxhdGZvcm1Db3B5RGF0
YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEpIGNvbnN0
IHsgcmV0dXJuIGRhdGE7IH0KLSAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KSB7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6
dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkYXRhKSBjb25zdCB7
IHJldHVybiBkYXRhOyB9CisgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoc3RkOjp1bmlxdWVfcHRy
PENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KSB7IH0KIH07CiAKIHN0cnVjdCBDcm9z
c1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhIDogcHVibGljIENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXNwb25zZURhdGFCYXNlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234185</attachid>
            <date>2014-07-01 12:15:25 -0700</date>
            <delta_ts>2014-07-01 12:15:25 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-134158-20140701121513.patch</filename>
            <type>text/plain</type>
            <size>39944</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MDY1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisyMDE0LTA3LTAxICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBSZW1vdmUgdXNlcyBvZiBD
cm9zc1RocmVhZFRhc2sgaW4gV29ya2VyVGhyZWFkYWJsZUxvYWRlciwgTWVtb3J5Q2FjaGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDE1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVzZSBDKysxMSBsYW1i
ZGFzIGluIHBsYWNlIG9mIENyb3NzVGhyZWFkVGFzayBpbiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
CisgICAgICAgIGFuZCBNZW1vcnlDYWNoZSBjbGFzc2VzLgorCisgICAgICAgIENyb3NzVGhyZWFk
UmVzb3VyY2VSZXNwb25zZURhdGEgb2JqZWN0cyBhcmUgbm93IGhhbmRsZWQgdGhyb3VoIHN0ZDo6
dW5pcXVlX3B0cjw+LgorICAgICAgICBTdXBwb3J0IGZvciBSZXNvdXJjZVJlc3BvbnNlIGFuZCBS
ZXNvdXJjZVJlcXVlc3QgaW4gQ3Jvc3NUaHJlYWRDb3BpZXIgaGVscGVycyBoYXMKKyAgICAgICAg
YmVlbiByZW1vdmVkIGFjY29yZGluZ2x5LgorCisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjp+TWFpblRocmVhZEJy
aWRnZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRTZW5kRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmluaXNoTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVM
b2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2spOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
ZGlkRmFpbFJlZGlyZWN0Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjptYWluVGhyZWFkRGVzdHJveSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ2FuY2Vs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ondvcmtlckdsb2JhbFNjb3BlRGlkU2VuZERh
dGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyR2xvYmFsU2NvcGVEaWRSZWNl
aXZlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyR2xvYmFsU2Nv
cGVEaWRSZWNlaXZlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp3b3JrZXJHbG9i
YWxTY29wZURpZEZpbmlzaExvYWRpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6d29y
a2VyR2xvYmFsU2NvcGVEaWRGYWlsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ondvcmtl
ckdsb2JhbFNjb3BlRGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjp3b3JrZXJHbG9iYWxTY29wZURpZEZhaWxSZWRpcmVjdENoZWNrKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlD
YWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlD
YWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUNhY2hlOjpyZW1vdmVSZXF1ZXN0RnJvbUNhY2hlSW1wbCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2FjaGVz
SW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6Y3Jvc3NUaHJl
YWRSZW1vdmVSZXF1ZXN0RnJvbUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpjcm9zc1RocmVhZFJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcyk6IERl
bGV0ZWQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmg6CisgICAgICAgICog
cGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Pjo6Y29weSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlPjo6Y29weSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRD
b3BpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRvcHQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y29weURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmFkb3B0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2VCYXNlOjpjb3B5RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXF1ZXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVl
c3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZv
cm1Db3B5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZv
cm1BZG9wdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpkb1BsYXRmb3JtQ29weURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6ZG9QbGF0Zm9ybUFkb3B0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1Db3B5RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1BZG9wdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmRvUGxhdGZvcm1Db3B5RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpkb1BsYXRmb3JtQWRvcHQpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUFkb3B0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZTo6ZG9QbGF0Zm9ybUNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2U6OmRvUGxhdGZvcm1BZG9wdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay93aW4vUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q6OmRvUGxhdGZvcm1Db3B5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q6OmRvUGxhdGZvcm1BZG9wdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4v
UmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6
ZG9QbGF0Zm9ybUNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6
OmRvUGxhdGZvcm1BZG9wdCk6CisKIDIwMTQtMDctMDEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBUeXBpbmcgYW4gYXV0b21hdGljIHRleHQgcmVw
bGFjZW1lbnQgcGhyYXNlIGFmdGVyIGEgYnIgaW4gY29udGVudGVkaXRhYmxlIGlzIG5vdCByZW5k
ZXJlZCBhcyBleHBlY3RlZApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24gMTcwNjU1KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw2IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5oIgotI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1
ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC05MSwzMiArOTAsMjUgQEAgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZQogICAgICwgbV90YXNrTW9kZSh0YXNrTW9kZS5p
c29sYXRlZENvcHkoKSkKIHsKICAgICBBU1NFUlQobV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgp
KTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoQ3Jvc3NUaHJlYWRUYXNrKCZN
YWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlTG9hZGVyLCBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKHRoaXMpLCByZXF1ZXN0LCBvcHRpb25zLCBvdXRnb2luZ1JlZmVycmVyKSk7Ci19CiAK
LVdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6On5NYWluVGhyZWFkQnJp
ZGdlKCkKLXsKKyAgICBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGEqIHJlcXVlc3REYXRh
ID0gcmVxdWVzdC5jb3B5RGF0YSgpLnJlbGVhc2UoKTsKKyAgICBTdHJpbmcgb3V0Z29pbmdSZWZl
cnJlckNvcHkgPSBvdXRnb2luZ1JlZmVycmVyLmlzb2xhdGVkQ29weSgpOworICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tUb0xvYWRlcihbPV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSB0b0RvY3VtZW50KCZjb250ZXh0KTsKKworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0OjphZG9wdChzdGQ6
OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPihyZXF1ZXN0RGF0YSkp
OworICAgICAgICByZXF1ZXN0LT5zZXRIVFRQUmVmZXJyZXIob3V0Z29pbmdSZWZlcnJlckNvcHkp
OworICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGEgc2l0ZSByZXF1ZXN0cyBhIGxvY2FsIHJlc291
cmNlLCB0aGVuIHRoaXMgd2lsbCByZXR1cm4gYSBub24temVybyB2YWx1ZSBidXQgdGhlIHN5bmMg
cGF0aAorICAgICAgICAvLyB3aWxsIHJldHVybiBhIDAgdmFsdWUuIEVpdGhlciB0aGlzIHNob3Vs
ZCByZXR1cm4gMCBvciB0aGUgb3RoZXIgY29kZSBwYXRoIHNob3VsZCBkbyBhIGNhbGxiYWNrIHdp
dGgKKyAgICAgICAgLy8gYSBmYWlsdXJlLgorICAgICAgICBtX21haW5UaHJlYWRMb2FkZXIgPSBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSgqZG9jdW1lbnQsICp0aGlzLCAqcmVxdWVz
dCwgb3B0aW9ucyk7CisgICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRMb2FkZXIpOworICAgIH0p
OwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1h
aW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWFp
blRocmVhZEJyaWRnZSogdGhpc1B0ciwgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVx
dWVzdERhdGE+IHJlcXVlc3REYXRhLCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zLCBj
b25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KCZjb250ZXh0KTsKLQot
ICAgIE93blB0cjxSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0OjphZG9w
dChyZXF1ZXN0RGF0YSkpOwotICAgIHJlcXVlc3QtPnNldEhUVFBSZWZlcnJlcihvdXRnb2luZ1Jl
ZmVycmVyKTsKLSAgICAvLyBGSVhNRTogSWYgdGhlIGEgc2l0ZSByZXF1ZXN0cyBhIGxvY2FsIHJl
c291cmNlLCB0aGVuIHRoaXMgd2lsbCByZXR1cm4gYSBub24temVybyB2YWx1ZSBidXQgdGhlIHN5
bmMgcGF0aAotICAgIC8vIHdpbGwgcmV0dXJuIGEgMCB2YWx1ZS4gIEVpdGhlciB0aGlzIHNob3Vs
ZCByZXR1cm4gMCBvciB0aGUgb3RoZXIgY29kZSBwYXRoIHNob3VsZCBkbyBhIGNhbGxiYWNrIHdp
dGgKLSAgICAvLyBhIGZhaWx1cmUuCi0gICAgdGhpc1B0ci0+bV9tYWluVGhyZWFkTG9hZGVyID0g
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoKmRvY3VtZW50LCAqdGhpc1B0ciwgKnJl
cXVlc3QsIG9wdGlvbnMpOwotICAgIEFTU0VSVCh0aGlzUHRyLT5tX21haW5UaHJlYWRMb2FkZXIp
OwotfQotCi12b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1h
aW5UaHJlYWREZXN0cm95KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1haW5UaHJl
YWRCcmlkZ2UqIHRoaXNQdHIpCitXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJp
ZGdlOjp+TWFpblRocmVhZEJyaWRnZSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNEb2N1bWVudCgpKTsKLSAgICBk
ZWxldGUgdGhpc1B0cjsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpkZXN0cm95KCkKQEAgLTEyNSwyMyArMTE3LDI1IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEIKICAgICBjbGVhckNsaWVudFdyYXBwZXIoKTsKIAog
ICAgIC8vICJkZWxldGUgdGhpcyIgYW5kIG1fbWFpblRocmVhZExvYWRlcjo6ZGVyZWYoKSBvbiB0
aGUgd29ya2VyIG9iamVjdCdzIHRocmVhZC4KLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9M
b2FkZXIoQ3Jvc3NUaHJlYWRUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkRGVzdHJv
eSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSkpOwotfQotCi12b2lkIFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDYW5jZWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWFpblRocmVhZEJyaWRnZSogdGhpc1B0cikKLXsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC5pc0RvY3VtZW50KCkpOwotCi0gICAgaWYgKCF0aGlzUHRyLT5tX21haW5UaHJlYWRMb2Fk
ZXIpCi0gICAgICAgIHJldHVybjsKLSAgICB0aGlzUHRyLT5tX21haW5UaHJlYWRMb2FkZXItPmNh
bmNlbCgpOwotICAgIHRoaXNQdHItPm1fbWFpblRocmVhZExvYWRlciA9IDA7CisgICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFs9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNEb2N1bWVudCgpKTsKKyAgICAgICAgZGVsZXRlIHRo
aXM7CisgICAgfSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVh
ZEJyaWRnZTo6Y2FuY2VsKCkKIHsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIo
Q3Jvc3NUaHJlYWRUYXNrKCZNYWluVGhyZWFkQnJpZGdlOjptYWluVGhyZWFkQ2FuY2VsLCBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1Rv
TG9hZGVyKFs9XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC5pc0RvY3VtZW50KCkpOworCisgICAgICAgIGlmICghbV9tYWluVGhyZWFkTG9hZGVyKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX21haW5UaHJlYWRMb2FkZXItPmNhbmNlbCgp
OworICAgICAgICBtX21haW5UaHJlYWRMb2FkZXIgPSBudWxscHRyOworICAgIH0pOworCiAgICAg
VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNs
aWVudFdyYXBwZXIuZ2V0KCk7CiAgICAgaWYgKCFjbGllbnRXcmFwcGVyLT5kb25lKCkpIHsKICAg
ICAgICAgLy8gSWYgdGhlIGNsaWVudCBoYXNuJ3QgcmVhY2hlZCBhIHRlcm1pbmF0aW9uIHN0YXRl
LCB0aGVuIHRyYW5zaXRpb24gaXQgYnkgc2VuZGluZyBhIGNhbmNlbGxhdGlvbiBlcnJvci4KQEAg
LTE1OCw4NCArMTUyLDc0IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVh
ZEIKICAgICBtX3dvcmtlckNsaWVudFdyYXBwZXItPmNsZWFyQ2xpZW50KCk7CiB9CiAKLXN0YXRp
YyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlkU2VuZERhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJD
bGllbnRXcmFwcGVyLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25n
IGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQotewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwg
Y29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgIHdvcmtlckNsaWVudFdyYXBwZXIt
PmRpZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKLX0KLQogdm9pZCBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRTZW5kRGF0YSh1bnNp
Z25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1Rv
QmVTZW50KQogewotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShDcm9zc1RocmVhZFRhc2soJndvcmtlckdsb2JhbFNjb3BlRGlkU2VuZERhdGEsIG1f
d29ya2VyQ2xpZW50V3JhcHBlciwgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpLCBtX3Rh
c2tNb2RlKTsKLX0KLQotc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlUmVz
cG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVM
b2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gcmVz
cG9uc2VEYXRhKQotewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkpOwotICAgIE93blB0cjxSZXNvdXJjZVJlc3BvbnNlPiByZXNwb25zZShS
ZXNvdXJjZVJlc3BvbnNlOjphZG9wdChyZXNwb25zZURhdGEpKTsKLSAgICB3b3JrZXJDbGllbnRX
cmFwcGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgKnJlc3BvbnNlKTsKKyAgICBS
ZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXI7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckdsb2JhbFNjb3BlKFs9XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9i
YWxTY29wZSgpKTsKKyAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkU2VuZERhdGEoYnl0
ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOworICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJH
bG9iYWxTY29wZShDcm9zc1RocmVhZFRhc2soJndvcmtlckdsb2JhbFNjb3BlRGlkUmVjZWl2ZVJl
c3BvbnNlLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIGlkZW50aWZpZXIsIHJlc3BvbnNlKSwgbV90
YXNrTW9kZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlkUmVjZWl2ZURh
dGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2Fk
ZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBQYXNzT3duUHRyPFZlY3Rvcjxj
aGFyPj4gdmVjdG9yRGF0YSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQu
aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNl
aXZlRGF0YSh2ZWN0b3JEYXRhLT5kYXRhKCksIHZlY3RvckRhdGEtPnNpemUoKSk7CisgICAgQ3Jv
c3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YSogcmVzcG9uc2VEYXRhID0gcmVzcG9uc2UuY29w
eURhdGEoKS5yZWxlYXNlKCk7CisgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFw
cGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyOworICAgIG1f
bG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbPV0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250
ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZXNvdXJjZVJlc3BvbnNlPiByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmFkb3B0
KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPihyZXNwb25z
ZURhdGEpKTsKKyAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZVJlc3BvbnNl
KGlkZW50aWZpZXIsICpyZXNwb25zZSk7CisgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKIHZvaWQg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7Ci0gICAgT3duUHRyPFZlY3Rvcjxj
aGFyPj4gdmVjdG9yID0gYWRvcHRQdHIobmV3IFZlY3RvcjxjaGFyPihkYXRhTGVuZ3RoKSk7IC8v
IG5lZWRzIHRvIGJlIGFuIE93blB0ciBmb3IgdXNhZ2Ugd2l0aCBDcm9zc1RocmVhZFRhc2suCi0g
ICAgbWVtY3B5KHZlY3Rvci0+ZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoQ3Jvc3NUaHJlYWRUYXNr
KCZ3b3JrZXJHbG9iYWxTY29wZURpZFJlY2VpdmVEYXRhLCBtX3dvcmtlckNsaWVudFdyYXBwZXIs
IHZlY3Rvci5yZWxlYXNlKCkpLCBtX3Rhc2tNb2RlKTsKLX0KLQotc3RhdGljIHZvaWQgd29ya2Vy
R2xvYmFsU2NvcGVEaWRGaW5pc2hMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3Jh
cHBlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKLXsKLSAg
ICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsK
LSAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZp
bmlzaFRpbWUpOworICAgIFZlY3RvcjxjaGFyPiogdmVjdG9yUHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxWZWN0b3I8Y2hhcj4+KGRhdGFMZW5ndGgpLnJlbGVhc2UoKTsKKyAgICBtZW1jcHkodmVjdG9y
UHRyLT5kYXRhKCksIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3Jh
cHBlcjsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2Nv
cGUoWz1dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8Y2hhcj4+IHZlY3Rvcih2ZWN0b3JQdHIpOworICAgICAg
ICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0b3ItPmRhdGEoKSwgdmVj
dG9yLT5zaXplKCkpOworICAgIH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKIHsKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoQ3Jvc3NUaHJlYWRUYXNrKCZ3b3Jr
ZXJHbG9iYWxTY29wZURpZEZpbmlzaExvYWRpbmcsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgaWRl
bnRpZmllciwgZmluaXNoVGltZSksIG1fdGFza01vZGUpOwotfQotCi1zdGF0aWMgdm9pZCB3b3Jr
ZXJHbG9iYWxTY29wZURpZEZhaWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVm
UHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICB3b3JrZXJDbGllbnRXcmFwcGVy
LT5kaWRGYWlsKGVycm9yKTsKKyAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBw
ZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7CisgICAgbV9s
b2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFs9XShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4
dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgICAgICB3b3JrZXJDbGllbnRX
cmFwcGVyLT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGZpbmlzaFRpbWUpOworICAgIH0s
IG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgbV9s
b2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKENyb3NzVGhyZWFk
VGFzaygmd29ya2VyR2xvYmFsU2NvcGVEaWRGYWlsLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIGVy
cm9yKSwgbV90YXNrTW9kZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGlk
RmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQ
YXNzUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFw
cGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICB3b3JrZXJDbGllbnRX
cmFwcGVyLT5kaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKGVycm9yKTsKKyAgICBSZWZQdHI8VGhy
ZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtl
ckNsaWVudFdyYXBwZXI7CisgICAgUmVzb3VyY2VFcnJvciBlcnJvckNvcHkgPSBlcnJvci5jb3B5
KCk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3Bl
KFs9XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgICAgICB3
b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9yQ29weSk7CisgICAgfSwgbV90YXNrTW9k
ZSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsK
LSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoQ3Jv
c3NUaHJlYWRUYXNrKCZ3b3JrZXJHbG9iYWxTY29wZURpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2ss
IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgZXJyb3IpLCBtX3Rhc2tNb2RlKTsKLX0KLQotc3RhdGlj
IHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEaWRGYWlsUmVkaXJlY3RDaGVjayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+
IHdvcmtlckNsaWVudFdyYXBwZXIpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlk
RmFpbFJlZGlyZWN0Q2hlY2soKTsKKyAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdy
YXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7CisgICAg
UmVzb3VyY2VFcnJvciBlcnJvckNvcHkgPSBlcnJvci5jb3B5KCk7CisgICAgbV9sb2FkZXJQcm94
eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFs9XShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4
dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOworICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5k
aWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKGVycm9yKTsKKyAgICB9LCBtX3Rhc2tNb2RlKTsKIH0K
IAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGYWls
UmVkaXJlY3RDaGVjaygpCiB7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckdsb2JhbFNjb3BlKENyb3NzVGhyZWFkVGFzaygmd29ya2VyR2xvYmFsU2NvcGVEaWRGYWls
UmVkaXJlY3RDaGVjaywgbV93b3JrZXJDbGllbnRXcmFwcGVyKSwgbV90YXNrTW9kZSk7CisgICAg
UmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVy
ID0gbV93b3JrZXJDbGllbnRXcmFwcGVyOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbPV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9i
YWxTY29wZSgpKTsKKyAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkRmFpbFJlZGlyZWN0
Q2hlY2soKTsKKyAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5oCShyZXZpc2lvbiAxNzA2NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsOCArMTA4LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZERlc3Ryb3ko
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1haW5UaHJlYWRCcmlkZ2UqKTsKICAgICAgICAgICAg
IH5NYWluVGhyZWFkQnJpZGdlKCk7CiAKLSAgICAgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJl
YWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1haW5UaHJlYWRCcmlkZ2Uq
LCBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4sIFRocmVhZGFibGVM
b2FkZXJPcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIpOwotICAgICAgICAg
ICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENhbmNlbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
TWFpblRocmVhZEJyaWRnZSopOwogICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRh
KHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5
dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCShyZXZpc2lvbiAxNzA2NTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2VDbGllbnQuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgi
Ci0jaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKQEAg
LTg0Niw0NyArODQ1LDQxIEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVVybEZyb21DYWNoZShT
Y3IKIAogdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21DYWNoZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7CisgICAgYXV0byByZXF1ZXN0UmVtb3ZhbCA9IFtdKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2Vzc2lvbklEIHNlc3Npb25JRCkgeworICAgICAg
ICBpZiAoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VG
b3JSZXF1ZXN0KHJlcXVlc3QsIHNlc3Npb25JRCkpCisgICAgICAgICAgICBtZW1vcnlDYWNoZSgp
LT5yZW1vdmUocmVzb3VyY2UpOworICAgIH07CisKICAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJH
bG9iYWxTY29wZSgpKSB7Ci0gICAgICAgIHRvV29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCktPnRo
cmVhZCgpLndvcmtlckxvYWRlclByb3h5KCkucG9zdFRhc2tUb0xvYWRlcihDcm9zc1RocmVhZFRh
c2soJmNyb3NzVGhyZWFkUmVtb3ZlUmVxdWVzdEZyb21DYWNoZSwgcmVxdWVzdCwgc2Vzc2lvbklE
KSk7CisgICAgICAgIENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YSogcmVxdWVzdERhdGEg
PSByZXF1ZXN0LmNvcHlEYXRhKCkucmVsZWFzZSgpOworICAgICAgICB0b1dvcmtlckdsb2JhbFNj
b3BlKGNvbnRleHQpLT50aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2Fk
ZXIoWz1dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0OjphZG9wdChz
dGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPihyZXF1ZXN0RGF0
YSkpOworICAgICAgICAgICAgcmVxdWVzdFJlbW92YWwoKnJlcXVlc3QsIHNlc3Npb25JRCk7Cisg
ICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVtb3ZlUmVxdWVzdEZy
b21DYWNoZUltcGwoY29udGV4dCwgcmVxdWVzdCwgc2Vzc2lvbklEKTsKLX0KLQotdm9pZCBNZW1v
cnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21DYWNoZUltcGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2Vzc2lvbklEIHNlc3Npb25JRCkK
LXsKLSAgICBpZiAoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbWVtb3J5Q2FjaGUoKS0+cmVz
b3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QsIHNlc3Npb25JRCkpCi0gICAgICAgIG1lbW9yeUNhY2hl
KCktPnJlbW92ZShyZXNvdXJjZSk7CisgICAgcmVxdWVzdFJlbW92YWwocmVxdWVzdCwgc2Vzc2lv
bklEKTsKIH0KIAogdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2Fj
aGVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKKyAgICBhdXRvIHJlcXVlc3RSZW1vdmFsID0gW10oY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KSB7CisgICAgICAgIGZvciAoYXV0byYgcmVzb3VyY2VzIDogbWVt
b3J5Q2FjaGUoKS0+bV9zZXNzaW9uUmVzb3VyY2VzKQorICAgICAgICAgICAgaWYgKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yUmVxdWVzdEltcGwo
cmVxdWVzdCwgKnJlc291cmNlcy52YWx1ZSkpCisgICAgICAgICAgICAgICAgbWVtb3J5Q2FjaGUo
KS0+cmVtb3ZlKHJlc291cmNlKTsKKyAgICB9OworCiAgICAgaWYgKGNvbnRleHQtPmlzV29ya2Vy
R2xvYmFsU2NvcGUoKSkgewotICAgICAgICB0b1dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpLT50
aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLnBvc3RUYXNrVG9Mb2FkZXIoQ3Jvc3NUaHJlYWRU
YXNrKCZjcm9zc1RocmVhZFJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcywgcmVxdWVzdCkp
OworICAgICAgICBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGEqIHJlcXVlc3REYXRhID0g
cmVxdWVzdC5jb3B5RGF0YSgpLnJlbGVhc2UoKTsKKyAgICAgICAgdG9Xb3JrZXJHbG9iYWxTY29w
ZShjb250ZXh0KS0+dGhyZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKS5wb3N0VGFza1RvTG9hZGVy
KFs9XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdDo6YWRvcHQoc3Rk
Ojp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4ocmVxdWVzdERhdGEp
KTsKKyAgICAgICAgICAgIHJlcXVlc3RSZW1vdmFsKCpyZXF1ZXN0KTsKKyAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2FjaGVz
SW1wbChjb250ZXh0LCByZXF1ZXN0KTsKLX0KLQotdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVx
dWVzdEZyb21TZXNzaW9uQ2FjaGVzSW1wbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotICAgIGZvciAoYXV0byYgcmVzb3VyY2VzIDog
bWVtb3J5Q2FjaGUoKS0+bV9zZXNzaW9uUmVzb3VyY2VzKSB7Ci0gICAgICAgIGlmIChDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UgPSBtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUZvclJlcXVlc3RJbXBs
KHJlcXVlc3QsICpyZXNvdXJjZXMudmFsdWUpKQotICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZW1v
dmUocmVzb3VyY2UpOwotICAgIH0KLX0KIAotdm9pZCBNZW1vcnlDYWNoZTo6Y3Jvc3NUaHJlYWRS
ZW1vdmVSZXF1ZXN0RnJvbUNhY2hlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBh
c3NPd25QdHI8V2ViQ29yZTo6Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiByZXF1ZXN0
RGF0YSwgU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0
PiByZXF1ZXN0KFJlc291cmNlUmVxdWVzdDo6YWRvcHQocmVxdWVzdERhdGEpKTsKLSAgICBNZW1v
cnlDYWNoZTo6cmVtb3ZlUmVxdWVzdEZyb21DYWNoZUltcGwoJmNvbnRleHQsICpyZXF1ZXN0LCBz
ZXNzaW9uSUQpOwotfQotCi12b2lkIE1lbW9yeUNhY2hlOjpjcm9zc1RocmVhZFJlbW92ZVJlcXVl
c3RGcm9tU2Vzc2lvbkNhY2hlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNz
T3duUHRyPFdlYkNvcmU6OkNyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gcmVxdWVzdERh
dGEpCi17Ci0gICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdChSZXNvdXJjZVJlcXVl
c3Q6OmFkb3B0KHJlcXVlc3REYXRhKSk7Ci0gICAgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlcXVlc3RG
cm9tU2Vzc2lvbkNhY2hlcygmY29udGV4dCwgKnJlcXVlc3QpOworICAgIHJlcXVlc3RSZW1vdmFs
KHJlcXVlc3QpOwogfQogCiB2b2lkIE1lbW9yeUNhY2hlOjpUeXBlU3RhdGlzdGljOjphZGRSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSogbykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5oCShyZXZpc2lvbiAxNzA2NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDEwICsyMjYsNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgZXZpY3QoQ2FjaGVkUmVzb3VyY2UqKTsKIAogICAgIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZUZvclJlcXVlc3RJbXBsKGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IENhY2hlZFJlc291cmNlTWFwJik7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlUmVxdWVzdEZyb21D
YWNoZUltcGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFNlc3Npb25JRCk7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2Fj
aGVzSW1wbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
Ci0gICAgc3RhdGljIHZvaWQgY3Jvc3NUaHJlYWRSZW1vdmVSZXF1ZXN0RnJvbUNhY2hlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0
RGF0YT4sIFNlc3Npb25JRCk7Ci0gICAgc3RhdGljIHZvaWQgY3Jvc3NUaHJlYWRSZW1vdmVSZXF1
ZXN0RnJvbVNlc3Npb25DYWNoZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFBhc3NPd25QdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPik7CiAKICAgICBDYWNoZWRSZXNvdXJjZU1h
cCYgZ2V0U2Vzc2lvbk1hcChTZXNzaW9uSUQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCShyZXZpc2lvbiAxNzA2NTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDggKzM0LDYgQEAKIAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNl
RXJyb3IuaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKLSNpbmNsdWRlICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTY1LDE2ICs2
Myw2IEBAIENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFJlc28KICAgICByZXR1
cm4gZXJyb3IuY29weSgpOwogfQogCi1Dcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNl
LCBSZXNvdXJjZVJlcXVlc3Q+OjpUeXBlIENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFs
c2UsIFJlc291cmNlUmVxdWVzdD46OmNvcHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQotewotICAgIHJldHVybiByZXF1ZXN0LmNvcHlEYXRhKCk7Ci19Ci0KLUNyb3NzVGhyZWFkQ29w
aWVyQmFzZTxmYWxzZSwgZmFsc2UsIFJlc291cmNlUmVzcG9uc2U+OjpUeXBlIENyb3NzVGhyZWFk
Q29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFJlc291cmNlUmVzcG9uc2U+Ojpjb3B5KGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIHJldHVybiByZXNwb25zZS5jb3B5RGF0
YSgpOwotfQotCiBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBTZXNzaW9uSUQ+
OjpUeXBlIENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFNlc3Npb25JRD46OmNv
cHkoY29uc3QgU2Vzc2lvbklEJiBzZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIHNlc3Npb25JRDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAkocmV2
aXNpb24gMTcwNjU1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIEludFNpemU7CiAgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIFJlc291cmNl
RXJyb3I7Ci0gICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotICAgIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiAgICAgY2xhc3MgU2Vzc2lvbklEOwotICAgIHN0cnVjdCBDcm9zc1RocmVhZFJlc291
cmNlUmVzcG9uc2VEYXRhOwotICAgIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERh
dGE7CiAgICAgc3RydWN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zOwogCiAgICAgc3RydWN0IENy
b3NzVGhyZWFkQ29waWVyQmFzZUhlbHBlciB7CkBAIC0xMzYsMTYgKzEzMiw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAgICAgfTsKIAotICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFz
ZTxmYWxzZSwgZmFsc2UsIFJlc291cmNlUmVxdWVzdD4gewotICAgICAgICB0eXBlZGVmIFBhc3NP
d25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBUeXBlOwotICAgICAgICBzdGF0
aWMgVHlwZSBjb3B5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotICAgIH07Ci0KLSAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBSZXNvdXJj
ZVJlc3BvbnNlPiB7Ci0gICAgICAgIHR5cGVkZWYgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291
cmNlUmVzcG9uc2VEYXRhPiBUeXBlOwotICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKLSAgICB9OwotCiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NU
aHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgU2Vzc2lvbklEPiB7CiAgICAgICAgIHR5cGVk
ZWYgU2Vzc2lvbklEIFR5cGU7CiAgICAgICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgU2Vzc2lv
bklEJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVx
dWVzdEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJKHJldmlzaW9uIDE3MDY1NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDkgKzQ5LDkgQEAgaW5saW5lIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgUmVz
b3VyY2VSZQogICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Kj4o
dGhpcyk7CiB9CiAKLVBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBSZXNvdXJjZVJlcXVlc3RC
YXNlOjphZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0
YSkKK3N0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IFJlc291cmNlUmVxdWVzdEJhc2U6
OmFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRh
dGEpCiB7Ci0gICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0UHRyKG5l
dyBSZXNvdXJjZVJlcXVlc3QoKSk7CisgICAgYXV0byByZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1
ZTxSZXNvdXJjZVJlcXVlc3Q+KCk7CiAgICAgcmVxdWVzdC0+c2V0VVJMKGRhdGEtPm1fdXJsKTsK
ICAgICByZXF1ZXN0LT5zZXRDYWNoZVBvbGljeShkYXRhLT5tX2NhY2hlUG9saWN5KTsKICAgICBy
ZXF1ZXN0LT5zZXRUaW1lb3V0SW50ZXJ2YWwoZGF0YS0+bV90aW1lb3V0SW50ZXJ2YWwpOwpAQCAt
NzcsMTMgKzc3LDEzIEBAIFBhc3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBSZXNvdXJjZVJlcXUK
ICAgICB9CiAgICAgcmVxdWVzdC0+c2V0SFRUUEJvZHkoZGF0YS0+bV9odHRwQm9keSk7CiAgICAg
cmVxdWVzdC0+c2V0QWxsb3dDb29raWVzKGRhdGEtPm1fYWxsb3dDb29raWVzKTsKLSAgICByZXF1
ZXN0LT5kb1BsYXRmb3JtQWRvcHQoZGF0YSk7Ci0gICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgp
OworICAgIHJlcXVlc3QtPmRvUGxhdGZvcm1BZG9wdChzdGQ6Om1vdmUoZGF0YSkpOworICAgIHJl
dHVybiByZXF1ZXN0OwogfQogCi1QYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0
RGF0YT4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y29weURhdGEoKSBjb25zdAorc3RkOjp1bmlxdWVf
cHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6
Y29weURhdGEoKSBjb25zdAogewotICAgIE93blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVz
dERhdGE+IGRhdGEgPSBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRh
KCkpOworICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlcXVlc3REYXRhPigpOwogICAgIGRhdGEtPm1fdXJsID0gdXJsKCkuY29weSgpOwogICAgIGRh
dGEtPm1fY2FjaGVQb2xpY3kgPSBjYWNoZVBvbGljeSgpOwogICAgIGRhdGEtPm1fdGltZW91dElu
dGVydmFsID0gdGltZW91dEludGVydmFsKCk7CkBAIC0xMDAsNyArMTAwLDcgQEAgUGFzc093blB0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdAogICAgIGlmIChtX2h0dHBCb2R5KQogICAg
ICAgICBkYXRhLT5tX2h0dHBCb2R5ID0gbV9odHRwQm9keS0+ZGVlcENvcHkoKTsKICAgICBkYXRh
LT5tX2FsbG93Q29va2llcyA9IG1fYWxsb3dDb29raWVzOwotICAgIHJldHVybiBhc1Jlc291cmNl
UmVxdWVzdCgpLmRvUGxhdGZvcm1Db3B5RGF0YShkYXRhLnJlbGVhc2UoKSk7CisgICAgcmV0dXJu
IGFzUmVzb3VyY2VSZXF1ZXN0KCkuZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6bW92ZShkYXRhKSk7
CiB9CiAKIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNFbXB0eSgpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuaAkocmV2aXNpb24gMTcwNjU1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNTQsMTAgKzU1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxSZXNvdXJjZVJl
cXVlc3Q+IGFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPik7
CisgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBhZG9wdChz
dGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPik7CiAKICAgICAg
ICAgLy8gR2V0cyBhIGNvcHkgb2YgdGhlIGRhdGEgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8gYW5v
dGhlciB0aHJlYWQuCi0gICAgICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVl
c3REYXRhPiBjb3B5RGF0YSgpIGNvbnN0OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NU
aHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBjb3B5RGF0YSgpIGNvbnN0OwogCiAgICAgICAgIGJv
b2wgaXNOdWxsKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5jcHAJKHJldmlzaW9uIDE3MDY1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NCw5ICs5NCw5IEBAIFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmEKIHsK
IH0KIAotUGFzc093blB0cjxSZXNvdXJjZVJlc3BvbnNlPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
YWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkYXRhKQor
c3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVzcG9uc2U+IFJlc291cmNlUmVzcG9uc2VCYXNlOjph
ZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZGF0
YSkKIHsKLSAgICBPd25QdHI8UmVzb3VyY2VSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdFB0cihu
ZXcgUmVzb3VyY2VSZXNwb25zZSk7CisgICAgYXV0byByZXNwb25zZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVzb3VyY2VSZXNwb25zZT4oKTsKICAgICByZXNwb25zZS0+c2V0VVJMKGRhdGEtPm1fdXJs
KTsKICAgICByZXNwb25zZS0+c2V0TWltZVR5cGUoZGF0YS0+bV9taW1lVHlwZSk7CiAgICAgcmVz
cG9uc2UtPnNldEV4cGVjdGVkQ29udGVudExlbmd0aChkYXRhLT5tX2V4cGVjdGVkQ29udGVudExl
bmd0aCk7CkBAIC0xMDksMTMgKzEwOSwxMyBAQCBQYXNzT3duUHRyPFJlc291cmNlUmVzcG9uc2U+
IFJlc291cmNlUmVzCiAgICAgcmVzcG9uc2UtPmxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmll
bGRzKTsKICAgICByZXNwb25zZS0+bV9odHRwSGVhZGVyRmllbGRzLmFkb3B0KHN0ZDo6bW92ZShk
YXRhLT5tX2h0dHBIZWFkZXJzKSk7CiAgICAgcmVzcG9uc2UtPm1fcmVzb3VyY2VMb2FkVGltaW5n
ID0gZGF0YS0+bV9yZXNvdXJjZUxvYWRUaW1pbmc7Ci0gICAgcmVzcG9uc2UtPmRvUGxhdGZvcm1B
ZG9wdChkYXRhKTsKLSAgICByZXR1cm4gcmVzcG9uc2UucmVsZWFzZSgpOworICAgIHJlc3BvbnNl
LT5kb1BsYXRmb3JtQWRvcHQoc3RkOjptb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gcmVzcG9uc2U7
CiB9CiAKLVBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmNvcHlEYXRhKCkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxDcm9zc1Ro
cmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29weURhdGEo
KSBjb25zdAogewotICAgIE93blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBk
YXRhID0gYWRvcHRQdHIobmV3IENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGEpOworICAg
IGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNl
RGF0YT4oKTsKICAgICBkYXRhLT5tX3VybCA9IHVybCgpLmNvcHkoKTsKICAgICBkYXRhLT5tX21p
bWVUeXBlID0gbWltZVR5cGUoKS5pc29sYXRlZENvcHkoKTsKICAgICBkYXRhLT5tX2V4cGVjdGVk
Q29udGVudExlbmd0aCA9IGV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMTI1LDcgKzEyNSw3
IEBAIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGEKICAgICBkYXRhLT5t
X2h0dHBTdGF0dXNUZXh0ID0gaHR0cFN0YXR1c1RleHQoKS5pc29sYXRlZENvcHkoKTsKICAgICBk
YXRhLT5tX2h0dHBIZWFkZXJzID0gaHR0cEhlYWRlckZpZWxkcygpLmNvcHlEYXRhKCk7CiAgICAg
ZGF0YS0+bV9yZXNvdXJjZUxvYWRUaW1pbmcgPSBtX3Jlc291cmNlTG9hZFRpbWluZzsKLSAgICBy
ZXR1cm4gYXNSZXNvdXJjZVJlc3BvbnNlKCkuZG9QbGF0Zm9ybUNvcHlEYXRhKGRhdGEucmVsZWFz
ZSgpKTsKKyAgICByZXR1cm4gYXNSZXNvdXJjZVJlc3BvbnNlKCkuZG9QbGF0Zm9ybUNvcHlEYXRh
KHN0ZDo6bW92ZShkYXRhKSk7CiB9CiAKIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzSFRU
UCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCShyZXZpc2lvbiAxNzA2NTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkVGltaW5nLmgiCi0KKyNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKQEAgLTQ3LDEwICs0NywxMCBAQCBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJl
c3BvbnNlRGF0YTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxSZXNvdXJjZVJl
c3BvbnNlPiBhZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVzcG9uc2U+IGFkb3B0KHN0
ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPik7CiAKICAgICAv
LyBHZXRzIGEgY29weSBvZiB0aGUgZGF0YSBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byBhbm90aGVy
IHRocmVhZC4KLSAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+
IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXNwb25zZURhdGE+IGNvcHlEYXRhKCkgY29uc3Q7CiAKICAgICBib29sIGlzTnVsbCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNOdWxsOyB9CiAgICAgYm9vbCBpc0hUVFAoKSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJl
cXVlc3QuaAkocmV2aXNpb24gMTcwNjU1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDggKzEzMSw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtSFRU
UEJvZHkoKTsKICAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKTsKIAotICAg
ICAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZG9QbGF0Zm9y
bUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgY29u
c3Q7Ci0gICAgICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlcXVlc3REYXRhPik7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVh
ZFJlc291cmNlUmVxdWVzdERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6OnVuaXF1ZV9wdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgY29uc3Q7CisgICAgICAgIHZvaWQgZG9Q
bGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERh
dGE+KTsKIAogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlcXVl
c3RSZWY+IG1fY2ZSZXF1ZXN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAJKHJldmlzaW9u
IDE3MDY1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VS
ZXF1ZXN0Q0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzUsNyArMzc1LDcgQEAgU3RyaW5n
IFJlc291cmNlUmVxdWVzdDo6cGFydGl0aW9uTmFtZShjbwogfQogI2VuZGlmCiAKLVBhc3NPd25Q
dHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBSZXNvdXJjZVJlcXVlc3Q6OmRvUGxh
dGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4g
ZGF0YSkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERh
dGE+IFJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6dW5pcXVlX3B0cjxD
cm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0CiB7CiAjaWYgRU5BQkxF
KENBQ0hFX1BBUlRJVElPTklORykKICAgICBkYXRhLT5tX2NhY2hlUGFydGl0aW9uID0gbV9jYWNo
ZVBhcnRpdGlvbjsKQEAgLTM4Myw3ICszODMsNyBAQCBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXF1ZXN0RGF0CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXF1
ZXN0Ojpkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVz
dERhdGE+IGRhdGEpCit2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6
dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpCiB7CiAjaWYg
RU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICBtX2NhY2hlUGFydGl0aW9uID0gZGF0YS0+
bV9jYWNoZVBhcnRpdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAxNzA2NTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMTAzLDggKzEwMyw4IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IFJlc291cmNlUmVzcG9uc2VCYXNlOwogCiAgICAgdm9pZCBwbGF0Zm9ybUxhenlJbml0KEluaXRM
ZXZlbCk7Ci0gICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBk
b1BsYXRmb3JtQ29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VE
YXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9Ci0gICAgdm9pZCBkb1BsYXRmb3JtQWRv
cHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPikgeyB9CisgICAg
c3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRvUGxhdGZv
cm1Db3B5RGF0YShzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0
YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQorICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0
KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPikgeyB9CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBpbml0TlNVUkxSZXNwb25zZSgpIGNvbnN0Owog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAxNzA2NTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDggKzgwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRv
VXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpIHsgfQogICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3Vy
Y2VIVFRQQm9keSgpIHsgfQogCi0gICAgICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0KLSAgICAgICAg
dm9pZCBkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVz
dERhdGE+KSB7IH0KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXF1ZXN0RGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVh
ZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0KKyAgICAg
ICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXF1ZXN0RGF0YT4pIHsgfQogIAogICAgICAgICBzdGF0aWMgYm9vbCBzX2h0dHBQaXBlbGlu
aW5nRW5hYmxlZDsKICAgICB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAxNzA2NTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25z
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlOwogCi0gICAgUGFzc093blB0cjxD
cm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoUGFzc093
blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkYXRhKSBjb25zdCB7IHJldHVy
biBkYXRhOyB9Ci0gICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVh
ZFJlc291cmNlUmVzcG9uc2VEYXRhPikgeyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6OnVuaXF1ZV9w
dHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4g
ZGF0YTsgfQorICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1Ro
cmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPikgeyB9CiAKICAgICBib29sIG1fcmVzcG9uc2VGaXJl
ZDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAxNzA2NTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMSw4ICsxMjEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQg
ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkgeyB9CiAgICAgICAgIHZvaWQgZG9VcGRhdGVSZXNv
dXJjZUhUVFBCb2R5KCkgeyB9CiAKLSAgICAgICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291
cmNlUmVxdWVzdERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFk
UmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQotICAgICAg
ICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1
ZXN0RGF0YT4pIHsgfQorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQorICAg
ICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlcXVlc3REYXRhPikgeyB9CiAgICAgfTsKIAogICAgIHN0cnVjdCBDcm9zc1RocmVhZFJl
c291cmNlUmVxdWVzdERhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRh
QmFzZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlzaW9uIDE3MDY1NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg1LDggKzg1LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZG9VcGRhdGVSZXNv
dXJjZVJlc3BvbnNlKCkgeyB9CiAKLSAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXNwb25zZURhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXNwb25zZURhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0KLSAgICB2b2lk
IGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURh
dGE+KSB7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNl
RGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291
cmNlUmVzcG9uc2VEYXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9CisgICAgdm9pZCBk
b1BsYXRmb3JtQWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25z
ZURhdGE+KSB7IH0KIH07CiAKIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRh
IDogcHVibGljIENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGFCYXNlIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVxdWVzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVx
dWVzdC5oCShyZXZpc2lvbiAxNzA2NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3dpbi9SZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsOCArNjEsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkgeyB9CiAgICAg
dm9pZCBkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKSB7IH0KIAotICAgIFBhc3NPd25QdHI8Q3Jv
c3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoUGFzc093blB0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRh
dGE7IH0KLSAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXF1ZXN0RGF0YT4pIHsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVxdWVzdERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9
CisgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXF1ZXN0RGF0YT4pIHsgfQogfTsKIAogc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXF1ZXN0RGF0YSA6IHB1YmxpYyBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGFCYXNlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVzcG9u
c2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9S
ZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlzaW9uIDE3MDY1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NDUsOCArNDUsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTsKIAotICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlc3BvbnNlRGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQotICAgIHZvaWQgZG9Q
bGF0Zm9ybUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4p
IHsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRh
PiBkb1BsYXRmb3JtQ29weURhdGEoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXNwb25zZURhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0KKyAgICB2b2lkIGRvUGxh
dGZvcm1BZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0
YT4pIHsgfQogfTsKIAogc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGEgOiBw
dWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YUJhc2Ugewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>