<?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>202586</bug_id>
          
          <creation_ts>2019-10-04 08:55:20 -0700</creation_ts>
          <short_desc>Rename SchemeRegistry to LegacySchemeRegistry</short_desc>
          <delta_ts>2019-10-04 12:31:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>annulen</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576873</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-04 08:55:20 -0700</bug_when>
    <thetext>Rename SchemeRegistry to LegacySchemeRegistry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576874</commentid>
    <comment_count>1</comment_count>
      <attachid>380223</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-04 08:58:29 -0700</bug_when>
    <thetext>Created attachment 380223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576875</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-10-04 08:59:19 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576903</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-04 10:10:19 -0700</bug_when>
    <thetext>I&apos;ll rebase after r250728 while landing.  iOS failure is unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576952</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-04 12:30:22 -0700</bug_when>
    <thetext>http://trac.webkit.org/r250738</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576954</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-04 12:31:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/55991462&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380223</attachid>
            <date>2019-10-04 08:58:29 -0700</date>
            <delta_ts>2019-10-04 12:20:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202586-20191004085828.patch</filename>
            <type>text/plain</type>
            <size>132503</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDcyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MyBAQAorMjAxOS0xMC0wNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBT
Y2hlbWVSZWdpc3RyeSB0byBMZWdhY3lTY2hlbWVSZWdpc3RyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNTg2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2NoZW1lUmVnaXN0cnkgaXMgcHJvY2Vzcy1n
bG9iYWwuICBXZSBuZWVkIHRvIHJlcGxhY2UgaXQgd2l0aCBhIG5vbi1wcm9jZXNzLWdsb2JhbCBy
ZWdpc3RyeSwgYnV0IFJvbWUgd2Fzbid0IGJ1aWx0IGluIGEgZGF5LgorICAgICAgICBUaGlzIHJl
bmFtZSBhbGxvd3MgbWUgdG8gY2FsbCB0aGUgcmVwbGFjZW1lbnQgb2JqZWN0IHRoYXQgd2lsbCBo
YXZlIG93bmVyc2hpcCBhbmQgY29uZmlndXJhdGlvbiAiU2NoZW1lUmVnaXN0cnkiCisgICAgICAg
IGFuZCBpdCBhbHNvIGluZGljYXRlcyB0aGF0IG5ldyBkZXZlbG9wbWVudCBzaG91bGQgdXNlIHRo
ZSBvd25lZCBvYmplY3QgaW5zdGVhZCBvZiB0aGUgZ2xvYmFsIG9iamVjdC4KKworICAgICAgICAq
IEhlYWRlcnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU2VjdXJlKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JDb29yZGluYXRvckludGVybmFsOjpwcm9jZXNzQXBwSWRFeHRlbnNp
b24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQ29udGV4dDo6YWxsb3dEYXRhYmFzZUFjY2VzcyBj
b25zdCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6c2V0RG9tYWluKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpoYXNTZXJ2aWNlV29ya2VyU2NoZW1lIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6dXNlckRpZENsaWNrU25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKToKKyAgICAg
ICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzVmFsaWRDcm9zc09yaWdpblJlZGlyZWN0aW9uVVJMKToKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1h
dGNoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkaXNh
bGxvd1dlYkFyY2hpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmNvbW1pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlTG9h
ZEVtcHR5KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6Y2hlY2tVUkxTY2hlbWVBc0NPUlNFbmFibGVkKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxBcmNoaXZl
OjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZnJlc2huZXNzTGlmZXRpbWUgY29uc3Qp
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2Vy
U3R5bGVTaGVldExvY2F0aW9uQ2hhbmdlZCk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbik6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6aXNTZWN1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmRvbWFpbkZvckNhY2hlUGFydGl0aW9uIGNvbnN0KToKKyAgICAgICAgKiBw
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5OjphbGxvd09iamVjdEZyb21Tb3VyY2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0NoaWxkRnJhbWVGcm9tU291
cmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxs
b3dSZXNvdXJjZUZyb21Tb3VyY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxvd0Nvbm5lY3RUb1NvdXJjZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93QmFzZVVSSSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAuCisgICAgICAgIChXZWJDb3JlOjph
bGxCdWlsdGluU2NoZW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3Ry
eTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNj
aGVtZVJlZ2lzdHJ5OjpyZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNMb2NhbCk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xv
Y2FsKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVS
TFNjaGVtZUFzTm9BY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0
cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNOb0FjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxT
Y2hlbWVBc0Rpc3BsYXlJc29sYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVS
ZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZSk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc1NlY3VyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Vt
cHR5RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNo
b3VsZExvYWRVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5U2NoZW1lUmVnaXN0cnk6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hl
bWUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OmlzRG9tYWluUmVs
YXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lT
Y2hlbWVSZWdpc3RyeTo6Y2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2Fu
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0
ZXJVUkxTY2hlbWVBc05vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHMpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNOb3RBbGxvd2lu
Z0phdmFzY3JpcHRVUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5
OjpyZWdpc3RlclVSTFNjaGVtZUFzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dz
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjphbGxvd3NEYXRh
YmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNj
aGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNDT1JT
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0
ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVtb3ZlVVJMU2NoZW1lUmVnaXN0ZXJlZEFz
QnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3kp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2No
ZW1lQXNBbHdheXNSZXZhbGlkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVS
ZWdpc3RyeTo6c2hvdWxkQWx3YXlzUmV2YWxpZGF0ZVVSTFNjaGVtZSk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0
aW9uZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFBh
cnRpdGlvbkNhY2hlRm9yVVJMU2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVt
ZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hh
bmRsZVVSTFNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6
aXNTZXJ2aWNlV29ya2VyQ29udGFpbmVyQ3VzdG9tU2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5Ojppc1VzZXJFeHRlbnNpb25TY2hlbWUpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OmlzQnVpbHRpblNjaGVtZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZW1vdmVVUkxTY2hlbWVS
ZWdpc3RlcmVkQXNMb2NhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY2hlbWVSZWdp
c3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2No
ZW1lQXNOb0FjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY2hlbWVSZWdpc3Ry
eTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0Rpc3BsYXlJ
c29sYXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6cmVn
aXN0ZXJVUkxTY2hlbWVBc1NlY3VyZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY2hl
bWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc1NlY3VyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9j
dW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3Vs
ZExvYWRVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2NoZW1lUmVnaXN0cnk6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hl
bWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OmlzRG9tYWlu
UmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTY2hlbWVSZWdpc3RyeTo6Y2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY2hlbWVSZWdp
c3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2No
ZW1lQXNOb3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQWxsb3dpbmdEYXRhYmFzZUFj
Y2Vzc0luUHJpdmF0ZUJyb3dzaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjaGVt
ZVJlZ2lzdHJ5OjphbGxvd3NEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFz
Q09SU0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6
OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNDT1JTRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRl
bnRTZWN1cml0eVBvbGljeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY2hlbWVSZWdp
c3RyeTo6cmVtb3ZlVVJMU2NoZW1lUmVnaXN0ZXJlZEFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5
UG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpzY2hl
bWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3kpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNBbHdheXNSZXZhbGlk
YXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6c2hvdWxk
QWx3YXlzUmV2YWxpZGF0ZVVSTFNjaGVtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
Y2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3VsZFBhcnRpdGlvbkNh
Y2hlRm9yVVJMU2NoZW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lz
dHJ5OjpyZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRs
ZVVSTFNjaGVtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6
aXNTZXJ2aWNlV29ya2VyQ29udGFpbmVyQ3VzdG9tU2NoZW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5Ojppc1VzZXJFeHRlbnNpb25TY2hlbWUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OmlzQnVpbHRpblNjaGVtZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuaC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vU2NoZW1lUmVnaXN0cnkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUXVp
Y2tMb29rLm1tOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZWdpc3Rl
clVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6cmVtb3ZlVVJMU2NoZW1lUmVnaXN0ZXJlZEFzQnlwYXNzaW5nQ29u
dGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclByb3Zp
ZGVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorCiAyMDE5LTEwLTA0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2ltcGxpZnkgc2Fu
ZGJveCBlbmFibGluZyBtYWNyb3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjUw
NzIyKQorKysgU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAt
OTEwLDYgKzkxMCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBwbGF0Zm9ybS9LZXllZENvZGluZy5oCiAgICAgcGxhdGZvcm0vS2V5cHJlc3NDb21tYW5kLmgK
ICAgICBwbGF0Zm9ybS9MYXlvdXRVbml0LmgKKyAgICBwbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdp
c3RyeS5oCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmgKICAgICBwbGF0Zm9ybS9MZW5ndGhCb3guaAog
ICAgIHBsYXRmb3JtL0xlbmd0aFBvaW50LmgKQEAgLTk1Nyw3ICs5NTgsNiBAQCBzZXQoV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExp
c3RlbmVyLmgKICAgICBwbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaAogICAgIHBs
YXRmb3JtL1NTTEtleUdlbmVyYXRvci5oCi0gICAgcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuaAog
ICAgIHBsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaAogICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmgKICAgICBwbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2
aXNpb24gMjUwNzIyKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MDEsNiArMTcwMSw3IEBAIHBsYXRmb3JtL0ZpbGVNb25pdG9yLmNwcAogcGxhdGZv
cm0vRmlsZVN0cmVhbS5jcHAKIHBsYXRmb3JtL0dlbmVyaWNUYXNrUXVldWUuY3BwCiBwbGF0Zm9y
bS9MYXlvdXRVbml0LmNwcAorcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCiBwbGF0
Zm9ybS9MZW5ndGguY3BwCiBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwCiBwbGF0Zm9ybS9MZW5ndGhQ
b2ludC5jcHAKQEAgLTE3MjMsNyArMTcyNCw2IEBAIHBsYXRmb3JtL1JlZmVycmVyUG9saWN5LmNw
cAogcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAogcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmNwcAogcGxhdGZvcm0vU1NMS2V5R2VuZXJhdG9yLmNwcAotcGxhdGZv
cm0vU2NoZW1lUmVnaXN0cnkuY3BwCiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKIHBsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwCiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjUwNzIyKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTElGcmFt
ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCi0jaW5jbHVkZSAiU2No
ZW1lUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJMZWdhY3lTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgogCkBAIC02Niw3
ICs2Niw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NlY3VyZShEb2N1bWVudExvYWQKICAgICBh
dXRvJiByZXNwb25zZSA9IGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCk7CiAgICAgaWYgKFNlY3Vy
aXR5T3JpZ2luOjppc0xvY2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3MoZG9jdW1lbnRMb2FkZXIu
cmVzcG9uc2UoKS51cmwoKS5ob3N0KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1
cm4gU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUocmVzcG9uc2Uu
dXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpCisgICAgcmV0dXJuIExl
Z2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzU2VjdXJlKHJlc3BvbnNl
LnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKQogICAgICAgICAmJiBy
ZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8oKQogICAgICAgICAmJiAhcmVzcG9uc2UuY2VydGlmaWNh
dGVJbmZvKCktPmNvbnRhaW5zTm9uUm9vdFNIQTFTaWduZWRDZXJ0aWZpY2F0ZSgpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwCShyZXZpc2lvbiAyNTA3MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuaCIKLSNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9T
Y29wZS5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAkocmV2aXNpb24gMjUwNzIyKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMiArMzMsMTIgQEAKICNpbmNsdWRlICJBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudC5oIgogI2luY2x1ZGUgIkpTQmFzaWNDcmVkZW50aWFsLmgiCisjaW5j
bHVkZSAiTGVnYWN5U2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQdWJsaWNLZXlDcmVkZW50
aWFsLmgiCiAjaW5jbHVkZSAiUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oIgog
I2luY2x1ZGUgIlB1YmxpY0tleUNyZWRlbnRpYWxEYXRhLmgiCiAjaW5jbHVkZSAiUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmgiCiAjaW5jbHVkZSAiUmVnaXN0cmFibGVEb21haW4u
aCIKLSNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDx3dGYv
SlNPTlZhbHVlcy5oPgpAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgYm9vbCBuZWVkc0FwcElkUXVp
cmtzKGNvbnN0IFN0cmluCiBzdGF0aWMgU3RyaW5nIHByb2Nlc3NBcHBJZEV4dGVuc2lvbihjb25z
dCBTZWN1cml0eU9yaWdpbiYgZmFjZXRJZCwgY29uc3QgU3RyaW5nJiBhcHBJZCkKIHsKICAgICAv
LyBTdGVwIDEuIFNraXBwZWQgc2luY2UgZmFjZXRJZCBzaG91bGQgYWx3YXlzIGJlIHNlY3VyZSBv
cmlnaW5zLgotICAgIEFTU0VSVChTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVB
c1NlY3VyZShmYWNldElkLnByb3RvY29sKCkpKTsKKyAgICBBU1NFUlQoTGVnYWN5U2NoZW1lUmVn
aXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUoZmFjZXRJZC5wcm90b2NvbCgpKSk7
CiAKICAgICAvLyBTdGVwIDIuIEZvbGxvdyBDaHJvbWUgYW5kIEZpcmVmb3ggdG8gdXNlIHRoZSBv
cmlnaW4gZGlyZWN0bHkgd2l0aG91dCBhZGRpbmcgYSB0cmFpbGluZyBzbGFzaC4KICAgICBpZiAo
YXBwSWQuaXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwNzIyKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgi
CiAjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1
ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5E
YXRhLmgiCkBAIC0xODksNyArMTg5LDcgQEAgYm9vbCBEYXRhYmFzZUNvbnRleHQ6OmFsbG93RGF0
YWJhc2VBY2NlcwogewogICAgIGlmIChpczxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkpIHsKICAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgICAgICBpZiAoIWRvY3VtZW50LnBhZ2Uo
KSB8fCAoZG9jdW1lbnQucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpICYmICFTY2hlbWVS
ZWdpc3RyeTo6YWxsb3dzRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyhkb2N1bWVudC5z
ZWN1cml0eU9yaWdpbigpLnByb3RvY29sKCkpKSkKKyAgICAgICAgaWYgKCFkb2N1bWVudC5wYWdl
KCkgfHwgKGRvY3VtZW50LnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSAmJiAhTGVnYWN5
U2NoZW1lUmVnaXN0cnk6OmFsbG93c0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcoZG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5wcm90b2NvbCgpKSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1MDcy
MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTQyMyw3ICsxNDIzLDcgQEAKIAkJNTE2MDcxMkYxQkQ4MzA3ODAw
REJDNEYyIC8qIElEQk9iamVjdFN0b3JlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MDcxMkQxQkQ4MzA3MjAwREJDNEYyIC8qIElEQk9iamVj
dFN0b3JlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxNjA3MTMyMUJEODMwOEIwMERCQzRGMiAvKiBUcmFuc2FjdGlvbk9wZXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MDcxMkIx
QkQ4MzA1MzAwREJDNEYyIC8qIFRyYW5zYWN0aW9uT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE2MTAzQUYxQ0FEQkE3NzAwMTZC
NEM3IC8qIElEQlZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTYxMDNBRTFDQURCOUEzMDAxNkI0QzcgLyogSURCVmFsdWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTYyQzdGNTExRjc3RUZC
MDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjJDN0YzMTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdp
c3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTUxNjJDN0Y1MTFGNzdFRkIwMDYxMkVGRSAvKiBMZWdhY3lTY2hlbWVSZWdpc3RyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MkM3RjMxMUY3N0VG
QjAwNjEyRUZFIC8qIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE2NkQzQ0QxRThFRDQ4RjAwQUQ2MkUzIC8q
IFN0b3JhZ2VUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTY2RDNDQzFFOEVENDExMDBBRDYyRTMgLyogU3RvcmFnZVR5cGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTZDNjIyMDE5NTBENDg3
MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkM2MjFEMTk1MEQ0ODcwMDMzN0U3NSAvKiBHYW1lcGFkRXZl
bnQuY3BwICovOyB9OwogCQk1MTZDNjIyMTE5NTBENDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZDNjIx
RTE5NTBENDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50LmggKi87IH07CkBAIC04MDYzLDggKzgw
NjMsOCBAQAogCQk1MTYwRjQ5NzBCMEFBNzVGMDBDMUQyQUYgLyogSGlzdG9yeUl0ZW1NYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBIaXN0b3J5SXRlbU1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MTAzQUQxQ0FEQjlBMzAwMTZCNEM3
IC8qIElEQlZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElE
QlZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MTAzQUUxQ0FEQjlB
MzAwMTZCNEM3IC8qIElEQlZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IElEQlZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNjJDN0YyMTFGNzdF
RkEwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY2hlbWVSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTUxNjJDN0YzMTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY2hlbWVSZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTYyQzdGMjExRjc3RUZBMDA2MTJFRkUgLyogTGVnYWN5U2No
ZW1lUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVn
YWN5U2NoZW1lUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTYy
QzdGMzExRjc3RUZCMDA2MTJFRkUgLyogTGVnYWN5U2NoZW1lUmVnaXN0cnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5U2NoZW1lUmVnaXN0cnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2NDVCNDExQjlGODg5QjAwRjc4OUNFIC8qIElEQkN1cnNv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDdXJzb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2NDVCNDIxQjlGODg5QjAwRjc4OUNFIC8qIElEQkN1
cnNvcldpdGhWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
REJDdXJzb3JXaXRoVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTY0
NUI0MzFCOUY4ODlCMDBGNzg5Q0UgLyogSURCQ3Vyc29yV2l0aFZhbHVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkN1cnNvcldpdGhWYWx1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjU1MDEsNiArMjU1MDEsOCBAQAogCQkJCUUxNUZGN0Q0MThDOTU1
MzgwMEZFNEM4NyAvKiBLZXlwcmVzc0NvbW1hbmQuaCAqLywKIAkJCQlBM0Q0MkE4NDFGMzNCQTM2
MDBBNjRCNjIgLyogTGF5b3V0VW5pdC5jcHAgKi8sCiAJCQkJMTQxREMwNDcxNjQ4MzQ4RjAwMzcx
RTVBIC8qIExheW91dFVuaXQuaCAqLywKKwkJCQk1MTYyQzdGMjExRjc3RUZBMDA2MTJFRkUgLyog
TGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwICovLAorCQkJCTUxNjJDN0YzMTFGNzdFRkIwMDYxMkVG
RSAvKiBMZWdhY3lTY2hlbWVSZWdpc3RyeS5oICovLAogCQkJCUJDRTY1QkU4MEVBQ0RGMTYwMDdF
NDUzMyAvKiBMZW5ndGguY3BwICovLAogCQkJCUJDRTY1QkU5MEVBQ0RGMTYwMDdFNDUzMyAvKiBM
ZW5ndGguaCAqLywKIAkJCQkwRkU5NUYxQTFDRDU0MEQwMDBEMkY0NUEgLyogTGVuZ3RoQm94LmNw
cCAqLywKQEAgLTI1NTY5LDggKzI1NTcxLDYgQEAKIAkJCQlDREZDMzYwNDE4Q0E2MUMyMDAyNkU1
NkYgLyogUmVtb3RlQ29tbWFuZExpc3RlbmVyLmggKi8sCiAJCQkJQTE4RjdBMzUxRUNBNzM2NDAw
NTlFMUUxIC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgKi8sCiAJCQkJMjkzRUFFMUUx
MzU2QjJGRTAwNjdBQ0Y5IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oICovLAotCQkJCTUx
NjJDN0YyMTFGNzdFRkEwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5jcHAgKi8sCi0JCQkJNTE2
MkM3RjMxMUY3N0VGQjAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmggKi8sCiAJCQkJQzFFMUQy
MzUyMDNERjE1NDAwNTg0NjY1IC8qIFNjcmVlblByb3BlcnRpZXMuaCAqLywKIAkJCQlCQzhBRTM0
QzEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJsZUFyZWEuY3BwICovLAogCQkJCUJDOEFFMzRE
MTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5oICovLApAQCAtMzA3MzAsNiArMzA3
MzAsNyBAQAogCQkJCUNERjRCNzEyMUUwMDg3QUUwMEUyMzVBMiAvKiBMZWdhY3lDRE1TZXNzaW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREU4QjVGMTFBNjk3NzhCMDBCNEI2NkEgLyogTGVnYWN5
Q0RNU2Vzc2lvbkNsZWFyS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDRBNUY1OTFGRUQzOEYy
MDA3RjU5NDQgLyogTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxNjJDN0Y1MTFGNzdFRkIwMDYxMkVGRSAvKiBMZWdhY3lTY2hlbWVSZWdpc3RyeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTRDM0IxRkEwRjBFNDE2MTAwOTY5M0Y2IC8qIExlZ2FjeVRpbGVDYWNo
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRCNjVBNTgxMzJGQThFNzAwNzBFN0JFIC8qIExlZ2Fj
eVRpbGVHcmlkLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDI0QTM5RTEzMzBERjAxMDBDRjZEQzkg
LyogTGVnYWN5VGlsZUdyaWRUaWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTMxNTQ0LDcgKzMxNTQ1
LDYgQEAKIAkJCQlDREQ3MDg5NzE4MzU5RjZGMDAyQjNEQzYgLyogU2FtcGxlTWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OUU5MTFDQjBFRjg2RDQ3MDA5RDBDQUYgLyogU2NhbGVUcmFuc2Zvcm1P
cGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVERkU4RjU3MEQxNjQ3N0MwMDc2RTkzNyAv
KiBTY2hlZHVsZWRBY3Rpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNjJDN0Y1MTFGNzdFRkIw
MDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJEMEJGOTMx
MkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDRUMwMUJFMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMxRTFEMjM2MjAzREYxNTQwMDU4NDY2NSAvKiBTY3JlZW5Qcm9wZXJ0aWVzLmggaW4gSGVhZGVy
cyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjUwNzIyKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYg
KzExOCw3IEBACiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIktleWZyYW1l
RWZmZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0RGlzYWxsb3dlZFNjb3BlLmgiCisjaW5jbHVkZSAi
TGVnYWN5U2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgog
I2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtMTc2
LDcgKzE3Nyw2IEBACiAjaW5jbHVkZSAiU1ZHVXNlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1pv
b21FdmVudC5oIgogI2luY2x1ZGUgIlNXQ2xpZW50Q29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlNj
aGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2NvcGVkRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIK
QEAgLTQ4ODMsNyArNDg4Myw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50OjpzZXREb21h
aW4oY28KICAgICBpZiAoaXNTYW5kYm94ZWQoU2FuZGJveERvY3VtZW50RG9tYWluKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJBc3NpZ25tZW50IGlzIGZvcmJp
ZGRlbiBmb3Igc2FuZGJveGVkIGlmcmFtZXMuIiB9OwogCi0gICAgaWYgKFNjaGVtZVJlZ2lzdHJ5
Ojppc0RvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoc2VjdXJpdHlPcmlnaW4o
KS5wcm90b2NvbCgpKSkKKyAgICBpZiAoTGVnYWN5U2NoZW1lUmVnaXN0cnk6OmlzRG9tYWluUmVs
YXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShzZWN1cml0eU9yaWdpbigpLnByb3RvY29sKCkp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9OwogCiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBhZGQgbG9nZ2luZyBpbmRpY2F0aW5nIHdoeSBhIGRvbWFpbiB3YXMg
bm90IGFsbG93ZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCShyZXZpc2lvbiAyNTA3MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGlu
Zy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSAiTGVnYWN5U2NoZW1lUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTQ1LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTV0NsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJT
V0NvbnRleHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKQEAgLTU3NCw3ICs1NzQsNyBAQCBib29sIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OmFsbG93c01lZGlhCiBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6Omhhc1NlcnZpY2VXb3JrZXJTY2hlbWUoKSBjb25zdAogewogICAgIEFTU0VSVChzZWN1cml0
eU9yaWdpbigpKTsKLSAgICByZXR1cm4gU2NoZW1lUmVnaXN0cnk6OmlzU2VydmljZVdvcmtlckNv
bnRhaW5lckN1c3RvbVNjaGVtZShzZWN1cml0eU9yaWdpbigpLT5wcm90b2NvbCgpKTsKKyAgICBy
ZXR1cm4gTGVnYWN5U2NoZW1lUmVnaXN0cnk6OmlzU2VydmljZVdvcmtlckNvbnRhaW5lckN1c3Rv
bVNjaGVtZShzZWN1cml0eU9yaWdpbigpLT5wcm90b2NvbCgpKTsKIH0KIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjUwNzIyKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTRE9N
Q29udmVydFN0cmluZ3MuaCIKICNpbmNsdWRlICJKU1NoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJM
ZWdhY3lTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgpAQCAtNDMsNyArNDQs
NiBAQAogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlVXBkYXRlci5oIgotI2luY2x1ZGUgIlNj
aGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTQ4NCw3ICs0ODQs
NyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGljCiAgICAgICAgIG1f
cGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3QgPSAmZXZlbnQ7CiAKICAgICBhdXRvIHBsdWdJ
bk9yaWdpbiA9IG1fbG9hZGVkVXJsLmhvc3QoKTsKLSAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkg
JiYgIVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoZG9jdW1lbnQo
KS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5wcm90b2NvbCgpLnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSkgJiYgZG9jdW1lbnQoKS5wYWdlKCktPnNldHRpbmdzKCku
YXV0b3N0YXJ0T3JpZ2luUGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCgpKQorICAgIGlmIChkb2N1
bWVudCgpLnBhZ2UoKSAmJiAhTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2No
ZW1lQXNMb2NhbChkb2N1bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFz
ZVVSTCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSAmJiBkb2N1bWVudCgp
LnBhZ2UoKS0+c2V0dGluZ3MoKS5hdXRvc3RhcnRPcmlnaW5QbHVnSW5TbmFwc2hvdHRpbmdFbmFi
bGVkKCkpCiAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5wbHVnSW5DbGllbnQoKS0+ZGlkU3Rh
cnRGcm9tT3JpZ2luKGRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5i
YXNlVVJMKCkuaG9zdCgpLnRvU3RyaW5nKCksIHBsdWdJbk9yaWdpbi50b1N0cmluZygpLCBzZXJ2
aWNlVHlwZSgpKTsKIAogICAgIExPRyhQbHVnaW5zLCAiJXAgVXNlciBjbGlja2VkIG9uIHNuYXBz
aG90dGVkIHBsdWctaW4uIFJlc3RhcnQuIiwgdGhpcyk7CkBAIC03MDEsNyArNzAxLDcgQEAgdm9p
ZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxvYQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKCFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xv
Y2FsKG1fbG9hZGVkVXJsLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSAmJiAh
bV9sb2FkZWRVcmwuaG9zdCgpLmlzRW1wdHkoKSAmJiBtX2xvYWRlZFVybC5ob3N0KCkgPT0gZG9j
dW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5ob3N0KCkp
IHsKKyAgICBpZiAoIUxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFz
TG9jYWwobV9sb2FkZWRVcmwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpICYm
ICFtX2xvYWRlZFVybC5ob3N0KCkuaXNFbXB0eSgpICYmIG1fbG9hZGVkVXJsLmhvc3QoKSA9PSBk
b2N1bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3Qo
KSkgewogICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gaXMgc2VydmVkIGZyb20gcGFn
ZSdzIGRvbWFpbiwgc2V0IHRvIHBsYXkiLCB0aGlzKTsKICAgICAgICAgbV9zbmFwc2hvdERlY2lz
aW9uID0gTmV2ZXJTbmFwc2hvdDsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAJKHJldmlzaW9u
IDI1MDcyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5o
IgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisjaW5jbHVkZSAiTGVnYWN5U2NoZW1lUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
c3BvbnNlLmgiCi0jaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSA8bXV0ZXg+
CkBAIC0xMjksNyArMTI5LDcgQEAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGNyZWF0ZVBvdGVudGlh
bEFjYwogCiBib29sIGlzVmFsaWRDcm9zc09yaWdpblJlZGlyZWN0aW9uVVJMKGNvbnN0IFVSTCYg
cmVkaXJlY3RVUkwpCiB7Ci0gICAgcmV0dXJuIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVS
TFNjaGVtZUFzQ09SU0VuYWJsZWQocmVkaXJlY3RVUkwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhv
dXRDb3B5aW5nKCkpCisgICAgcmV0dXJuIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVh
dFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQocmVkaXJlY3RVUkwucHJvdG9jb2woKS50b1N0cmluZ1dp
dGhvdXRDb3B5aW5nKCkpCiAgICAgICAgICYmIHJlZGlyZWN0VVJMLnVzZXIoKS5pc0VtcHR5KCkK
ICAgICAgICAgJiYgcmVkaXJlY3RVUkwucGFzcygpLmlzRW1wdHkoKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMjUwNzIyKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIkhpc3RvcnlDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiSWNvbkxvYWRlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgor
I2luY2x1ZGUgIkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTGlua0ljb25Db2xs
ZWN0b3IuaCIKICNpbmNsdWRlICJMaW5rSWNvblR5cGUuaCIKICNpbmNsdWRlICJMb2FkZXJTdHJh
dGVneS5oIgpAQCAtNzQsNyArNzUsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZE9ic2VydmVy
LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNXQ2xp
ZW50Q29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCkBAIC00NzAsNyArNDcwLDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6c3RhcnREYXRhTG9hZFRpbWVyKAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1hdGNoUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgdXJs
LCBTV0NsaWVudENvbm5lY3Rpb246OlJlZ2lzdHJhdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7
Ci0gICAgYXV0byBzaG91bGRUcnlMb2FkaW5nVGhyb3VnaFNlcnZpY2VXb3JrZXIgPSAhZnJhbWVM
b2FkZXIoKS0+aXNSZWxvYWRpbmdGcm9tT3JpZ2luKCkgJiYgbV9mcmFtZS0+cGFnZSgpICYmIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2VydmljZVdvcmtlckVuYWJs
ZWQoKSAmJiBTY2hlbWVSZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hlbWUo
dXJsLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKKyAgICBhdXRvIHNob3Vs
ZFRyeUxvYWRpbmdUaHJvdWdoU2VydmljZVdvcmtlciA9ICFmcmFtZUxvYWRlcigpLT5pc1JlbG9h
ZGluZ0Zyb21PcmlnaW4oKSAmJiBtX2ZyYW1lLT5wYWdlKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXJ2aWNlV29ya2VyRW5hYmxlZCgpICYmIExlZ2FjeVNj
aGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZSh1cmwucHJvdG9j
b2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOwogICAgIGlmICghc2hvdWxkVHJ5TG9hZGlu
Z1Rocm91Z2hTZXJ2aWNlV29ya2VyKSB7CiAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTg2MSw3ICs4NjEsNyBAQCBib29sIERvY3VtZW50TG9hZGVy
OjpkaXNhbGxvd1dlYkFyY2hpdmUoCiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIVNjaGVtZVJlZ2lzdHJ5OjpzaG91
bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sKCkudG9TdHJp
bmdXaXRob3V0Q29weWluZygpKSkKKyAgICBpZiAoIUxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91
bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sKCkudG9TdHJp
bmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIWZy
YW1lKCkgfHwgKGZyYW1lKCktPmlzTWFpbkZyYW1lKCkgJiYgbV9hbGxvd3NXZWJBcmNoaXZlRm9y
TWFpbkZyYW1lKSkKQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNv
bW1pdERhdGEoY29uc3QgY2gKICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+c2V0QWN0aXZlU2VydmljZVdvcmtlcihwYXJlbnQtPmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSk7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5h
Y3RpdmVTZXJ2aWNlV29ya2VyKCkgfHwgU2NoZW1lUmVnaXN0cnk6OmNhblNlcnZpY2VXb3JrZXJz
SGFuZGxlVVJMU2NoZW1lKG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnByb3RvY29sKCkudG9T
dHJpbmdXaXRob3V0Q29weWluZygpKSkKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5hY3RpdmVTZXJ2aWNlV29ya2VyKCkgfHwgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OmNhblNl
cnZpY2VXb3JrZXJzSGFuZGxlVVJMU2NoZW1lKG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnBy
b3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5zZXRTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbihTZXJ2aWNlV29ya2Vy
UHJvdmlkZXI6OnNpbmdsZXRvbigpLmV4aXN0aW5nU2VydmljZVdvcmtlckNvbm5lY3Rpb24oKSk7
CiAKICAgICAgICAgICAgIC8vIFdlIGN1cnJlbnRseSB1bnJlZ2lzdGVyIHRoZSB0ZW1wb3Jhcnkg
c2VydmljZSB3b3JrZXIgY2xpZW50IHNpbmNlIHdlIG5vdyByZWdpc3RlcmVkIHRoZSByZWFsIGRv
Y3VtZW50LgpAQCAtMTcwOSw3ICsxNzA5LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6aXNNdWx0
aXBhcnRSZXBsYWNpbgogCiBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSgpCiB7
Ci0gICAgYm9vbCBzaG91bGRMb2FkRW1wdHkgPSAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkg
JiYgKG1fcmVxdWVzdC51cmwoKS5pc0VtcHR5KCkgfHwgU2NoZW1lUmVnaXN0cnk6OnNob3VsZExv
YWRVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sKCkudG9T
dHJpbmdXaXRob3V0Q29weWluZygpKSk7CisgICAgYm9vbCBzaG91bGRMb2FkRW1wdHkgPSAhbV9z
dWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgKG1fcmVxdWVzdC51cmwoKS5pc0VtcHR5KCkgfHwg
TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZExvYWRVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQo
bV9yZXF1ZXN0LnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSk7CiAg
ICAgaWYgKCFzaG91bGRMb2FkRW1wdHkgJiYgIWZyYW1lTG9hZGVyKCktPmNsaWVudCgpLnJlcHJl
c2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKG1fcmVxdWVzdC51cmwoKS5wcm90b2NvbCgpLnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAJKHJldmlzaW9uIDI1MDcyMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiTG9hZFRpbWluZy5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAj
aW5jbHVkZSAiUGVyZm9ybWFuY2UuaCIKQEAgLTUzLDcgKzU0LDYgQEAKICNpbmNsdWRlICJSZXNv
dXJjZVRpbWluZy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2lu
Y2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKLSNpbmNsdWRlICJTY2hlbWVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VJbnRlZ3JpdHkuaCIKQEAgLTE0Nyw3ICsxNDcsNyBA
QCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkCiAgICAgaWYgKHNob3Vs
ZFNldEhUVFBIZWFkZXJzVG9LZWVwKCkpCiAgICAgICAgIG1fb3B0aW9ucy5odHRwSGVhZGVyc1Rv
S2VlcCA9IGh0dHBIZWFkZXJzVG9LZWVwRnJvbUNsZWFuaW5nKHJlcXVlc3QuaHR0cEhlYWRlckZp
ZWxkcygpKTsKIAotICAgIGlmIChkb2N1bWVudC5pc1J1bm5pbmdVc2VyU2NyaXB0cygpICYmIFNj
aGVtZVJlZ2lzdHJ5Ojppc1VzZXJFeHRlbnNpb25TY2hlbWUocmVxdWVzdC51cmwoKS5wcm90b2Nv
bCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpIHsKKyAgICBpZiAoZG9jdW1lbnQuaXNSdW5u
aW5nVXNlclNjcmlwdHMoKSAmJiBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6aXNVc2VyRXh0ZW5zaW9u
U2NoZW1lKHJlcXVlc3QudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkp
KSB7CiAgICAgICAgIG1fb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnM7
CiAgICAgICAgIG1fb3B0aW9ucy5maWx0ZXJpbmdQb2xpY3kgPSBSZXNwb25zZUZpbHRlcmluZ1Bv
bGljeTo6RGlzYWJsZTsKICAgICB9CkBAIC0xNzQsNyArMTc0LDcgQEAgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZAogYm9vbCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmNoZWNrVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBD
cm9zcy1vcmlnaW4gcmVxdWVzdHMgYXJlIG9ubHkgYWxsb3dlZCBmb3IgSFRUUCBhbmQgcmVnaXN0
ZXJlZCBzY2hlbWVzLiBXZSB3b3VsZCBjYXRjaCB0aGlzIHdoZW4gY2hlY2tpbmcgcmVzcG9uc2Ug
aGVhZGVycyBsYXRlciwgYnV0IHRoZXJlIGlzIG5vIHJlYXNvbiB0byBzZW5kIGEgcmVxdWVzdCB0
aGF0J3MgZ3VhcmFudGVlZCB0byBiZSBkZW5pZWQuCi0gICAgaWYgKCFTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybC5wcm90b2NvbCgpLnRvU3RyaW5n
V2l0aG91dENvcHlpbmcoKSkpIHsKKyAgICBpZiAoIUxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91
bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQodXJsLnByb3RvY29sKCkudG9TdHJpbmdXaXRo
b3V0Q29weWluZygpKSkgewogICAgICAgICBsb2dFcnJvckFuZEZhaWwoUmVzb3VyY2VFcnJvcihl
cnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJDcm9zcyBvcmlnaW4gcmVxdWVzdHMg
YXJlIG9ubHkgc3VwcG9ydGVkIGZvciBIVFRQLiIsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vz
c0NvbnRyb2wpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAko
cmV2aXNpb24gMjUwNzIyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxBcmNoaXZlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2LDEyIEBACiAKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTGVnYWN5
U2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNSFRNTFBhcnNlci5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZVNlcmlh
bGl6ZXIuaCIKICNpbmNsdWRlICJRdW90ZWRQcmludGFibGUuaCIKLSNpbmNsdWRlICJTY2hlbWVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KQEAgLTEwOSw3
ICsxMDksNyBAQCBSZWY8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpCiBSZWZQ
dHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hh
cmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdlIG9ubHkg
bG9hZCBNSFRNTCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCi0gICAgaWYgKCFTY2hlbWVSZWdpc3Ry
eTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nKCkp
KQorICAgIGlmICghTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNM
b2NhbCh1cmwucHJvdG9jb2woKS50b1N0cmluZygpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBNSFRNTFBhcnNlciBwYXJzZXIoJmRhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAyNTA3MjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSwxMyArMzksMTMgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVt
b3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJQ
cm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUg
IlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgpAQCAtNDU0LDcgKzQ1NCw3IEBAIFNlY29uZHMgQ2FjaGVkUmVzb3VyY2U6OmZyZXNobmVzc0xp
ZmV0aW0KICAgICAgICAgICAgIC8vIERvbid0IGNhY2hlIG5vbi1IVFRQIG1haW4gcmVzb3VyY2Vz
IHNpbmNlIHdlIGNhbid0IGNoZWNrIGZvciBmcmVzaG5lc3MuCiAgICAgICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIG5vdCBjYWNoZSBzdWJyZXNvdXJjZXMgZWl0aGVyLCBidXQgd2hlbiB3ZSB0
cmllZCB0aGlzCiAgICAgICAgICAgICAvLyBpdCBjYXVzZWQgcGVyZm9ybWFuY2UgYW5kIGZsYWtp
bmVzcyBpc3N1ZXMgaW4gb3VyIHRlc3QgaW5mcmFzdHJ1Y3R1cmUuCi0gICAgICAgICAgICBpZiAo
bV90eXBlID09IFR5cGU6Ok1haW5SZXNvdXJjZSB8fCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkQWx3
YXlzUmV2YWxpZGF0ZVVSTFNjaGVtZShwcm90b2NvbC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkp
KQorICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpNYWluUmVzb3VyY2UgfHwgTGVnYWN5
U2NoZW1lUmVnaXN0cnk6OnNob3VsZEFsd2F5c1JldmFsaWRhdGVVUkxTY2hlbWUocHJvdG9jb2wu
dG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMF91czsK
ICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDI1MDcyMikKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2
LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5j
bHVkZSAiTGVnYWN5U2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRl
ci5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpA
QCAtMTAwLDcgKzEwMSw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VVc2FnZU92ZXJsYXkuaCIKICNp
bmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnRF
eHRlbnNpb25zLmgiCi0jaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsTGF0Y2hpbmdTdGF0ZS5oIgpAQCAtMTM4MSw3ICsxMzgxLDcgQEAg
dm9pZCBQYWdlOjp1c2VyU3R5bGVTaGVldExvY2F0aW9uQ2hhbmdlZAogICAgIFVSTCB1cmwgPSBt
X3NldHRpbmdzLT51c2VyU3R5bGVTaGVldExvY2F0aW9uKCk7CiAgICAgCiAgICAgLy8gQWxsb3cg
YW55IGxvY2FsIGZpbGUgVVJMIHNjaGVtZSB0byBiZSBsb2FkZWQuCi0gICAgaWYgKFNjaGVtZVJl
Z2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwodXJsLnByb3RvY29sKCkudG9TdHJp
bmdXaXRob3V0Q29weWluZygpKSkKKyAgICBpZiAoTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3Vs
ZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCkpKQogICAgICAgICBtX3VzZXJTdHlsZVNoZWV0UGF0aCA9IHVybC5maWxlU3lzdGVtUGF0
aCgpOwogICAgIGVsc2UKICAgICAgICAgbV91c2VyU3R5bGVTaGVldFBhdGggPSBTdHJpbmcoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAyNTA3
MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsOSArMzAsOSBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKICNp
bmNsdWRlICJCbG9iVVJMLmgiCisjaW5jbHVkZSAiTGVnYWN5U2NoZW1lUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJPcmlnaW5BY2Nlc3NFbnRyeS5oIgogI2luY2x1ZGUgIlB1YmxpY1N1ZmZpeC5oIgot
I2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIK
ICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5LmgiCkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBib29sIHNob3VsZFRyZWF0QXNVbmlxdWVP
cmlnaW4oY28KICAgICBpZiAoc2NoZW1lUmVxdWlyZXNIb3N0KGlubmVyVVJMKSAmJiBpbm5lclVS
TC5ob3N0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChTY2hl
bWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc05vQWNjZXNzKGlubmVyVVJMLnByb3Rv
Y29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKKyAgICBpZiAoTGVnYWN5U2NoZW1lUmVn
aXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNOb0FjY2Vzcyhpbm5lclVSTC5wcm90b2NvbCgp
LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gVGhpcyBpcyB0aGUgY29tbW9uIGNhc2UuCkBAIC0xMjYsMTMgKzEyNiwxMyBAQCBzdGF0aWMg
Ym9vbCBpc0xvb3BiYWNrSVBBZGRyZXNzKFN0cmluZ1ZpCiAvLyBodHRwczovL3czYy5naXRodWIu
aW8vd2ViYXBwc2VjLXNlY3VyZS1jb250ZXh0cy8jaXMtb3JpZ2luLXRydXN0d29ydGh5IChFZGl0
b3IncyBEcmFmdCwgMTcgTm92ZW1iZXIgMjAxNikKIHN0YXRpYyBib29sIHNob3VsZFRyZWF0QXNQ
b3RlbnRpYWxseVRydXN0d29ydGh5KGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmlu
ZyYgaG9zdCkKIHsKLSAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNTZWN1cmUocHJvdG9jb2wpKQorICAgIGlmIChMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxk
VHJlYXRVUkxTY2hlbWVBc1NlY3VyZShwcm90b2NvbCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgaWYgKFNlY3VyaXR5T3JpZ2luOjppc0xvY2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3Mo
aG9zdCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKFNjaGVtZVJlZ2lzdHJ5Ojpz
aG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwocHJvdG9jb2wpKQorICAgIGlmIChMZWdhY3lTY2hl
bWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHByb3RvY29sKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDUsNyArMTQ1LDcgQEAg
Ym9vbCBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeQogCiBTZWN1cml0eU9yaWdp
bjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiAgICAgOiBtX2RhdGEoU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tVVJMKHVybCkpCi0gICAgLCBtX2lzTG9jYWwoU2NoZW1lUmVnaXN0cnk6
OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChtX2RhdGEucHJvdG9jb2wpKQorICAgICwgbV9p
c0xvY2FsKExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwo
bV9kYXRhLnByb3RvY29sKSkKIHsKICAgICAvLyBkb2N1bWVudC5kb21haW4gc3RhcnRzIGFzIG1f
ZGF0YS5ob3N0LCBidXQgY2FuIGJlIHNldCBieSB0aGUgRE9NLgogICAgIG1fZG9tYWluID0gbV9k
YXRhLmhvc3Q7CkBAIC0yMjksMTEgKzIyOSwxMSBAQCB2b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXRE
b21haW5Gcm9tRE9NKGNvCiBib29sIFNlY3VyaXR5T3JpZ2luOjppc1NlY3VyZShjb25zdCBVUkwm
IHVybCkKIHsKICAgICAvLyBJbnZhbGlkIFVSTHMgYXJlIHNlY3VyZSwgYXMgYXJlIFVSTHMgd2hp
Y2ggaGF2ZSBhIHNlY3VyZSBwcm90b2NvbC4KLSAgICBpZiAoIXVybC5pc1ZhbGlkKCkgfHwgU2No
ZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUodXJsLnByb3RvY29sKCku
dG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKKyAgICBpZiAoIXVybC5pc1ZhbGlkKCkgfHwgTGVn
YWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUodXJsLnByb3Rv
Y29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICAvLyBVUkxzIHRoYXQgd3JhcCBpbm5lciBVUkxzIGFyZSBzZWN1cmUgaWYgdGhvc2UgaW5u
ZXIgVVJMcyBhcmUgc2VjdXJlLgotICAgIGlmIChzaG91bGRVc2VJbm5lclVSTCh1cmwpICYmIFNj
aGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzU2VjdXJlKGV4dHJhY3RJbm5lclVS
TCh1cmwpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKKyAgICBpZiAoc2hv
dWxkVXNlSW5uZXJVUkwodXJsKSAmJiBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRV
UkxTY2hlbWVBc1NlY3VyZShleHRyYWN0SW5uZXJVUkwodXJsKS5wcm90b2NvbCgpLnRvU3RyaW5n
V2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMzY2LDEwICszNjYsMTAgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxh
eShjb25zdCBVUgogCiAgICAgU3RyaW5nIHByb3RvY29sID0gdXJsLnByb3RvY29sKCkudG9TdHJp
bmcoKTsKIAotICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6Y2FuRGlzcGxheU9ubHlJZkNhblJlcXVl
c3QocHJvdG9jb2wpKQorICAgIGlmIChMZWdhY3lTY2hlbWVSZWdpc3RyeTo6Y2FuRGlzcGxheU9u
bHlJZkNhblJlcXVlc3QocHJvdG9jb2wpKQogICAgICAgICByZXR1cm4gY2FuUmVxdWVzdCh1cmwp
OwogCi0gICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzRGlzcGxh
eUlzb2xhdGVkKHByb3RvY29sKSkKKyAgICBpZiAoTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3Vs
ZFRyZWF0VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQocHJvdG9jb2wpKQogICAgICAgICByZXR1
cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2RhdGEucHJvdG9jb2wsIHByb3RvY29sKSB8fCBT
ZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NUb1VSTFdoaXRlTGlzdGVkKHRoaXMsIHVybCk7CiAKICAg
ICBpZiAoIVNlY3VyaXR5UG9saWN5OjpyZXN0cmljdEFjY2Vzc1RvTG9jYWwoKSkKQEAgLTM3OCw3
ICszNzgsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNvbnN0IFVSCiAgICAg
aWYgKHVybC5pc0xvY2FsRmlsZSgpICYmIHVybC5maWxlU3lzdGVtUGF0aCgpID09IG1fZmlsZVBh
dGgpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91
bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwocHJvdG9jb2wpKQorICAgIGlmIChMZWdhY3lTY2hlbWVS
ZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHByb3RvY29sKSkKICAgICAgICAg
cmV0dXJuIGNhbkxvYWRMb2NhbFJlc291cmNlcygpIHx8IFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vz
c1RvVVJMV2hpdGVMaXN0ZWQodGhpcywgdXJsKTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtNDgy
LDcgKzQ4Miw3IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6ZG9tYWluRm9yQ2FjaGVQYXIKICAg
ICBpZiAoaXNIVFRQRmFtaWx5KCkpCiAgICAgICAgIHJldHVybiBob3N0KCk7CiAKLSAgICBpZiAo
U2NoZW1lUmVnaXN0cnk6OnNob3VsZFBhcnRpdGlvbkNhY2hlRm9yVVJMU2NoZW1lKG1fZGF0YS5w
cm90b2NvbCkpCisgICAgaWYgKExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRQYXJ0aXRpb25D
YWNoZUZvclVSTFNjaGVtZShtX2RhdGEucHJvdG9jb2wpKQogICAgICAgICByZXR1cm4gaG9zdCgp
OwogCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAJKHJldmlzaW9uIDI1MDcyMikK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDExICs0NSwxMSBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiSlNXaW5k
b3dQcm94eS5oIgorI2luY2x1ZGUgIkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
UGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCi0j
aW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgpAQCAtNTQwLDcgKzU0MCw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5Ojph
bGxvd1BsdWdpblQKIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93T2JqZWN0RnJv
bVNvdXJjZShjb25zdCBVUkwmIHVybCwgUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkIHJlZGlyZWN0
UmVzcG9uc2VSZWNlaXZlZCkgY29uc3QKIHsKLSAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNjaGVt
ZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKS50b1N0cmlu
Z1dpdGhvdXRDb3B5aW5nKCkpKQorICAgIGlmIChMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2NoZW1l
U2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KHVybC5wcm90b2NvbCgpLnRvU3RyaW5n
V2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIC8vIEFzIHBlciBz
ZWN0aW9uIG9iamVjdC1zcmMgb2YgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IExldmVsIDMg
c3BlYy4sIDxodHRwOi8vdzNjLmdpdGh1Yi5pby93ZWJhcHBzZWMtY3NwPiAoRWRpdG9yJ3MgRHJh
ZnQsIDI5IEZlYnJ1YXJ5IDIwMTYpLAogICAgIC8vICJJZiBwbHVnaW4gY29udGVudCBpcyBsb2Fk
ZWQgd2l0aG91dCBhbiBhc3NvY2lhdGVkIFVSTCAocGVyaGFwcyBhbiBvYmplY3QgZWxlbWVudCBs
YWNrcyBhIGRhdGEgYXR0cmlidXRlLCBidXQgbG9hZHMgc29tZSBkZWZhdWx0IHBsdWdpbiBiYXNl
ZApAQCAtNTU2LDcgKzU1Niw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd09i
amVjdEYKIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRGcmFtZUZyb21T
b3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCByZWRpcmVjdFJl
c3BvbnNlUmVjZWl2ZWQpIGNvbnN0CiB7Ci0gICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVT
aG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3kodXJsLnByb3RvY29sKCkudG9TdHJpbmdX
aXRob3V0Q29weWluZygpKSkKKyAgICBpZiAoTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNo
b3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKS50b1N0cmluZ1dp
dGhvdXRDb3B5aW5nKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBTdHJpbmcgc291cmNl
VVJMOwogICAgIFRleHRQb3NpdGlvbiBzb3VyY2VQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6
OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKTsKQEAgLTU3MCw3ICs1NzAsNyBA
QCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDaGlsZEZyCiAKIGJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjphbGxvd1Jlc291cmNlRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwg
UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkIHJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCwgY29uc3Qg
Y2hhciogbmFtZSwgUmVzb3VyY2VQcmVkaWNhdGUgcmVzb3VyY2VQcmVkaWNhdGUpIGNvbnN0CiB7
Ci0gICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJp
dHlQb2xpY3kodXJsLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKKyAgICBp
ZiAoTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0
eVBvbGljeSh1cmwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICBTdHJpbmcgc291cmNlVVJMOwogICAgIFRleHRQb3NpdGlvbiBz
b3VyY2VQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3Jk
aW5hbE51bWJlcigpKTsKQEAgLTYyMCw3ICs2MjAsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsb3dNZWRpYUZyCiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Nv
bm5lY3RUb1NvdXJjZShjb25zdCBVUkwmIHVybCwgUmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkIHJl
ZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCkgY29uc3QKIHsKLSAgICBpZiAoU2NoZW1lUmVnaXN0cnk6
OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKS50
b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQorICAgIGlmIChMZWdhY3lTY2hlbWVSZWdpc3RyeTo6
c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KHVybC5wcm90b2NvbCgpLnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIFN0cmlu
ZyBzb3VyY2VVUkw7CiAgICAgVGV4dFBvc2l0aW9uIHNvdXJjZVBvc2l0aW9uKFdURjo6T3JkaW5h
bE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpOwpAQCAtNjQwLDcg
KzY0MCw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Jhc2VVUkkKIHsKICAg
ICBpZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3Vy
aXR5UG9saWN5KHVybC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCisgICAg
aWYgKExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJp
dHlQb2xpY3kodXJsLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgU3RyaW5nIHNvdXJjZVVSTDsKICAgICBUZXh0UG9zaXRpb24g
c291cmNlUG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9y
ZGluYWxOdW1iZXIoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hl
bWVSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVn
YWN5U2NoZW1lUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAyNTA3MjIpCShmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcDoyNTA3MjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1MzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgor
ICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKKwor
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgorI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5j
bHVkZSA8d3RmL1VSTFBhcnNlci5oPgorCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQor
I2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIKKyNlbmRpZgorI2lmIFVTRShRVUlDS19MT09LKQor
I2luY2x1ZGUgIlF1aWNrTG9vay5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Ly8gRklYTUU6IFVSTFNjaGVtZXNNYXAgaXMgYSBwZWN1bGlhciB0eXBlIG5hbWUgZ2l2ZW4gdGhh
dCBpdCBpcyBhIHNldC4KKworc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2Nh
bFVSTFNjaGVtZXMoKTsKK3N0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpblNlY3Vy
ZVNjaGVtZXMoKTsKK3N0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpblNjaGVtZXNX
aXRoVW5pcXVlT3JpZ2lucygpOworc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGlu
RW1wdHlEb2N1bWVudFNjaGVtZXMoKTsKK3N0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVp
bHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpOworc3RhdGljIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBidWlsdGluQ09SU0VuYWJsZWRTY2hlbWVzKCk7CisKK3VzaW5nIFN0cmlu
Z1ZlY3RvckZ1bmN0aW9uID0gY29uc3QgVmVjdG9yPFN0cmluZz4mICgqKSgpOworCitzdGF0aWMg
dm9pZCBhZGQoVVJMU2NoZW1lc01hcCYgc2V0LCBTdHJpbmdWZWN0b3JGdW5jdGlvbiBmdW5jdGlv
bikKK3sKKyAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IGZ1bmN0aW9uKCkpCisgICAgICAgIHNldC5h
ZGQoc2NoZW1lKTsKK30KKworc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IG1h
a2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChjb25zdCBWZWN0b3I8U3RyaW5nPiYgKCpmdW5jdGlv
bikoKSkKK3sKKyAgICBVUkxTY2hlbWVzTWFwIHNldDsKKyAgICBhZGQoc2V0LCBmdW5jdGlvbik7
CisgICAgcmV0dXJuIHNldDsKK30KKworc3RhdGljIExvY2sgc2NoZW1lUmVnaXN0cnlMb2NrOwor
CitzdGF0aWMgY29uc3QgVVJMU2NoZW1lc01hcCYgYWxsQnVpbHRpblNjaGVtZXMoKQoreworICAg
IHN0YXRpYyBjb25zdCBhdXRvIHNjaGVtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAg
ICAgICBzdGF0aWMgY29uc3QgU3RyaW5nVmVjdG9yRnVuY3Rpb24gZnVuY3Rpb25zW10geworICAg
ICAgICAgICAgYnVpbHRpblNlY3VyZVNjaGVtZXMsCisgICAgICAgICAgICBidWlsdGluU2NoZW1l
c1dpdGhVbmlxdWVPcmlnaW5zLAorICAgICAgICAgICAgYnVpbHRpbkVtcHR5RG9jdW1lbnRTY2hl
bWVzLAorICAgICAgICAgICAgYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1l
cywKKyAgICAgICAgICAgIGJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVtZXMsCisgICAgICAgIH07CisK
KyAgICAgICAgLy8gT3RoZXIgbWlzYyBzY2hlbWVzIHRoYXQgdGhlIFNjaGVtZVJlZ2lzdHJ5IGRv
ZXNuJ3Qga25vdyBhYm91dC4KKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG90aGVy
U2NoZW1lc1tdID0geworICAgICAgICAgICAgIndlYmtpdC1mYWtlLXVybCIsCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgICAgICAgICAgInNhZmFyaS1leHRlbnNpb24iLAorI2VuZGlmCisjaWYgVVNF
KFFVSUNLX0xPT0spCisgICAgICAgICAgICBRTFByZXZpZXdQcm90b2NvbCwKKyNlbmRpZgorI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyAgICAgICAgICAgIENvbnRlbnRGaWx0ZXI6OnVy
bFNjaGVtZSgpLAorI2VuZGlmCisgICAgICAgIH07CisKKyAgICAgICAgVVJMU2NoZW1lc01hcCBz
ZXQ7CisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVn
aXN0cnlMb2NrKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc2NoZW1lIDogYnVpbHRpbkxvY2Fs
VVJMU2NoZW1lcygpKQorICAgICAgICAgICAgICAgIHNldC5hZGQoc2NoZW1lKTsKKworICAgICAg
ICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9ucykKKyAgICAgICAgICAgICAgICBh
ZGQoc2V0LCBmdW5jdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChhdXRvJiBzY2hlbWUg
OiBvdGhlclNjaGVtZXMpCisgICAgICAgICAgICBzZXQuYWRkKHNjaGVtZSk7CisgICAgICAgIHJl
dHVybiBzZXQ7CisgICAgfSgpKTsKKyAgICByZXR1cm4gc2NoZW1lczsKK30KKworc3RhdGljIGNv
bnN0IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKQoreworICAgIEFTU0VS
VChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOworICAgIHN0YXRpYyBjb25zdCBhdXRvIHNj
aGVtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVVJMU2NoZW1lc01hcCB7CisgICAgICAgICJmaWxl
IiwKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgImFwcGxld2ViZGF0YSIsCisjZW5kaWYK
KyAgICB9KTsKKyAgICByZXR1cm4gc2NoZW1lczsKK30KKworc3RhdGljIFVSTFNjaGVtZXNNYXAm
IGxvY2FsVVJMU2NoZW1lcygpCit7CisgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hl
bGQoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGxvY2FsU2No
ZW1lcyA9IGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKTsKKyAgICByZXR1cm4gbG9jYWxTY2hlbWVz
OworfQorCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgZGlzcGxheUlzb2xhdGVkVVJMU2NoZW1lcygp
Cit7CisgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IGRpc3BsYXlJc29sYXRlZFNjaGVtZXM7Cisg
ICAgcmV0dXJuIGRpc3BsYXlJc29sYXRlZFNjaGVtZXM7Cit9CisKK2NvbnN0IFZlY3RvcjxTdHJp
bmc+JiBidWlsdGluU2VjdXJlU2NoZW1lcygpCit7CisgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5
TG9jay5pc0hlbGQoKSk7CisgICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZl
ckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7CisgICAgICAgICJodHRwcyIsCisgICAgICAgICJh
Ym91dCIsCisgICAgICAgICJkYXRhIiwKKyAgICAgICAgIndzcyIsCisjaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShXUEUpCisgICAgICAgICJyZXNvdXJjZSIsCisjZW5kaWYKKyAgICB9KTsK
KyAgICByZXR1cm4gc2NoZW1lczsKK30KKworc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNlY3VyZVNj
aGVtZXMoKQoreworICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOworICAg
IHN0YXRpYyBhdXRvIHNlY3VyZVNjaGVtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWRTY2hlbWVTZXQo
YnVpbHRpblNlY3VyZVNjaGVtZXMpOworICAgIHJldHVybiBzZWN1cmVTY2hlbWVzOworfQorCitj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpblNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpCit7
CisgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7CisgICAgc3RhdGljIGNv
bnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7Cisg
ICAgICAgICJhYm91dCIsCisgICAgICAgICJqYXZhc2NyaXB0IiwKKyAgICAgICAgLy8gVGhpcyBp
cyBhbiBpbnRlbnRpb25hbCBkaWZmZXJlbmNlIGZyb20gdGhlIGJlaGF2aW9yIHRoZSBIVE1MIHNw
ZWNpZmljYXRpb24gY2FsbHMgZm9yLgorICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExODg1CisgICAgICAgICJkYXRhIiwKKyAgICB9KTsKKyAg
ICByZXR1cm4gc2NoZW1lczsKK30KKworc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNXaXRo
VW5pcXVlT3JpZ2lucygpCit7CisgICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQo
KSk7CisgICAgc3RhdGljIGF1dG8gc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zID0gbWFrZU5ldmVy
RGVzdHJveWVkU2NoZW1lU2V0KGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMpOworICAg
IHJldHVybiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnM7Cit9CisKK2NvbnN0IFZlY3RvcjxTdHJp
bmc+JiBidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMoKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ry
b3llZChWZWN0b3I8U3RyaW5nPiB7ICJhYm91dCIgfSk7CisgICAgcmV0dXJuIHNjaGVtZXM7Cit9
CisKK3N0YXRpYyBVUkxTY2hlbWVzTWFwJiBlbXB0eURvY3VtZW50U2NoZW1lcygpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgYXV0byBlbXB0eURvY3VtZW50U2No
ZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChidWlsdGluRW1wdHlEb2N1bWVudFNj
aGVtZXMpOworICAgIHJldHVybiBlbXB0eURvY3VtZW50U2NoZW1lczsKK30KKworc3RhdGljIFVS
TFNjaGVtZXNNYXAmIHNjaGVtZXNGb3JiaWRkZW5Gcm9tRG9tYWluUmVsYXhhdGlvbigpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJM
U2NoZW1lc01hcD4gc2NoZW1lczsKKyAgICByZXR1cm4gc2NoZW1lczsKK30KKworY29uc3QgVmVj
dG9yPFN0cmluZz4mIGJ1aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKQor
eworICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOworICAgIHN0YXRpYyBj
b25zdCBhdXRvIHNjaGVtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4geyAi
YmxvYiIgfSk7CisgICAgcmV0dXJuIHNjaGVtZXM7Cit9CisKK3N0YXRpYyBVUkxTY2hlbWVzTWFw
JiBjYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKQoreworICAgIEFTU0VSVChzY2hl
bWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOworICAgIHN0YXRpYyBhdXRvIGNhbkRpc3BsYXlPbmx5
SWZDYW5SZXF1ZXN0U2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChidWlsdGlu
Q2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKTsKKyAgICByZXR1cm4gY2FuRGlzcGxh
eU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzOworfQorCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgbm90
QWxsb3dpbmdKYXZhc2NyaXB0VVJMc1NjaGVtZXMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IG5vdEFsbG93
aW5nSmF2YXNjcmlwdFVSTHNTY2hlbWVzOworICAgIHJldHVybiBub3RBbGxvd2luZ0phdmFzY3Jp
cHRVUkxzU2NoZW1lczsKK30KKwordm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hl
bWVBc0xvY2FsKGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIGlmIChzY2hlbWUuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVn
aXN0cnlMb2NrKTsKKyAgICBsb2NhbFVSTFNjaGVtZXMoKS5hZGQoc2NoZW1lKTsKK30KKwordm9p
ZCBTY2hlbWVSZWdpc3RyeTo6cmVtb3ZlVVJMU2NoZW1lUmVnaXN0ZXJlZEFzTG9jYWwoY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCit7CisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3Ry
eUxvY2spOworICAgIGlmIChidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1l
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbG9jYWxVUkxTY2hlbWVzKCkucmVtb3ZlKHNjaGVt
ZSk7Cit9CisKK3N0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFj
Y2Vzc0luUHJpdmF0ZUJyb3dzaW5nKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzQWxsb3dpbmdE
YXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nOworICAgIHJldHVybiBzY2hlbWVzQWxsb3dp
bmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nOworfQorCitjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYnVpbHRpbkNPUlNFbmFibGVkU2NoZW1lcygpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBzdGF0aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJv
eWVkKFZlY3RvcjxTdHJpbmc+IHsgImh0dHAiLCAiaHR0cHMiIH0pOworICAgIHJldHVybiBzY2hl
bWVzOworfQorCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgQ09SU0VuYWJsZWRTY2hlbWVzKCkKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIC8vIEZJWE1FOiBodHRwOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE2MAorICAgIHN0YXRpYyBhdXRvIHNjaGVtZXMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWRTY2hlbWVTZXQoYnVpbHRpbkNPUlNFbmFibGVkU2NoZW1lcyk7
CisgICAgcmV0dXJuIHNjaGVtZXM7Cit9CisKK3N0YXRpYyBVUkxTY2hlbWVzTWFwJiBDb250ZW50
U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKCkKK3sKKyAgICBBU1NFUlQoc2NoZW1lUmVn
aXN0cnlMb2NrLmlzSGVsZCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1l
c01hcD4gc2NoZW1lczsKKyAgICByZXR1cm4gc2NoZW1lczsKK30KKworc3RhdGljIFVSTFNjaGVt
ZXNNYXAmIGNhY2hlUGFydGl0aW9uaW5nU2NoZW1lcygpCit7CisgICAgQVNTRVJUKHNjaGVtZVJl
Z2lzdHJ5TG9jay5pc0hlbGQoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVt
ZXNNYXA+IHNjaGVtZXM7CisgICAgcmV0dXJuIHNjaGVtZXM7Cit9CisKK3N0YXRpYyBVUkxTY2hl
bWVzTWFwJiBzZXJ2aWNlV29ya2VyU2NoZW1lcygpCit7CisgICAgQVNTRVJUKHNjaGVtZVJlZ2lz
dHJ5TG9jay5pc0hlbGQoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNN
YXA+IHNjaGVtZXM7CisgICAgcmV0dXJuIHNjaGVtZXM7Cit9CisKK3N0YXRpYyBVUkxTY2hlbWVz
TWFwJiBhbHdheXNSZXZhbGlkYXRlZFNjaGVtZXMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNjaGVtZXM7
CisgICAgcmV0dXJuIHNjaGVtZXM7Cit9CisKK2Jvb2wgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRy
ZWF0VVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBpZiAoc2No
ZW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBMb2NrZXI8TG9jaz4g
bG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgcmV0dXJuIGxvY2FsVVJMU2NoZW1lcygp
LmNvbnRhaW5zKHNjaGVtZSk7Cit9CisKK3ZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJM
U2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBpZiAoc2NoZW1l
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNj
aGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkuYWRkKHNj
aGVtZSk7Cit9CisKK2Jvb2wgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNO
b0FjY2Vzcyhjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBpZiAoc2NoZW1lLmlzTnVsbCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVt
ZVJlZ2lzdHJ5TG9jayk7CisgICAgcmV0dXJuIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpLmNv
bnRhaW5zKHNjaGVtZSk7Cit9CisKK3ZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2No
ZW1lQXNEaXNwbGF5SXNvbGF0ZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKHNj
aGVtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMoKS5h
ZGQoc2NoZW1lKTsKK30KKworYm9vbCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hl
bWVBc0Rpc3BsYXlJc29sYXRlZChjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBpZiAoc2No
ZW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBMb2NrZXI8TG9jaz4g
bG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgcmV0dXJuIGRpc3BsYXlJc29sYXRlZFVS
TFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOworfQorCit2b2lkIFNjaGVtZVJlZ2lzdHJ5Ojpy
ZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIGlm
IChzY2hlbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIExvY2tlcjxMb2NrPiBs
b2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBzZWN1cmVTY2hlbWVzKCkuYWRkKHNjaGVt
ZSk7Cit9CisKK2Jvb2wgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1
cmUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdp
c3RyeUxvY2spOworICAgIHJldHVybiBzZWN1cmVTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKTsK
K30KKwordm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1l
bnQoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGVtcHR5RG9jdW1lbnRTY2hlbWVzKCkuYWRkKHNjaGVtZSk7Cit9
CisKK2Jvb2wgU2NoZW1lUmVnaXN0cnk6OnNob3VsZExvYWRVUkxTY2hlbWVBc0VtcHR5RG9jdW1l
bnQoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkg
JiYgZW1wdHlEb2N1bWVudFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOworfQorCit2b2lkIFNj
aGVtZVJlZ2lzdHJ5OjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJv
b2wgZm9yYmlkZGVuLCBjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBpZiAoc2NoZW1lLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZm9yYmlkZGVuKQorICAgICAgICBz
Y2hlbWVzRm9yYmlkZGVuRnJvbURvbWFpblJlbGF4YXRpb24oKS5hZGQoc2NoZW1lKTsKKyAgICBl
bHNlCisgICAgICAgIHNjaGVtZXNGb3JiaWRkZW5Gcm9tRG9tYWluUmVsYXhhdGlvbigpLnJlbW92
ZShzY2hlbWUpOworfQorCitib29sIFNjaGVtZVJlZ2lzdHJ5Ojppc0RvbWFpblJlbGF4YXRpb25G
b3JiaWRkZW5Gb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgcmV0dXJu
ICFzY2hlbWUuaXNOdWxsKCkgJiYgc2NoZW1lc0ZvcmJpZGRlbkZyb21Eb21haW5SZWxheGF0aW9u
KCkuY29udGFpbnMoc2NoZW1lKTsKK30KKworYm9vbCBTY2hlbWVSZWdpc3RyeTo6Y2FuRGlzcGxh
eU9ubHlJZkNhblJlcXVlc3QoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKHNjaGVt
ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTG9ja2VyPExvY2s+IGxv
Y2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIHJldHVybiBjYW5EaXNwbGF5T25seUlmQ2Fu
UmVxdWVzdFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOworfQorCit2b2lkIFNjaGVtZVJlZ2lz
dHJ5OjpyZWdpc3RlckFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QoY29uc3QgU3RyaW5nJiBz
Y2hlbWUpCit7CisgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIGNhbkRpc3Bs
YXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpLmFkZChzY2hlbWUpOworfQorCit2b2lkIFNjaGVt
ZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTm90QWxsb3dpbmdKYXZhc2NyaXB0VVJMcyhj
b25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQorICAgICAg
ICByZXR1cm47CisgICAgbm90QWxsb3dpbmdKYXZhc2NyaXB0VVJMc1NjaGVtZXMoKS5hZGQoc2No
ZW1lKTsKK30KKworYm9vbCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc05v
dEFsbG93aW5nSmF2YXNjcmlwdFVSTHMoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgcmV0
dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgbm90QWxsb3dpbmdKYXZhc2NyaXB0VVJMc1NjaGVtZXMo
KS5jb250YWlucyhzY2hlbWUpOworfQorCit2b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVS
TFNjaGVtZUFzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKGNvbnN0IFN0
cmluZyYgc2NoZW1lKQoreworICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKCku
YWRkKHNjaGVtZSk7Cit9CisKK2Jvb2wgU2NoZW1lUmVnaXN0cnk6OmFsbG93c0RhdGFiYXNlQWNj
ZXNzSW5Qcml2YXRlQnJvd3NpbmcoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgcmV0dXJu
ICFzY2hlbWUuaXNOdWxsKCkgJiYgc2NoZW1lc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZh
dGVCcm93c2luZygpLmNvbnRhaW5zKHNjaGVtZSk7Cit9CisKK3ZvaWQgU2NoZW1lUmVnaXN0cnk6
OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sK
KyAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisgICAgQ09SU0VuYWJs
ZWRTY2hlbWVzKCkuYWRkKHNjaGVtZSk7Cit9CisKK2Jvb2wgU2NoZW1lUmVnaXN0cnk6OnNob3Vs
ZFRyZWF0VVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAg
ICByZXR1cm4gIXNjaGVtZS5pc051bGwoKSAmJiBDT1JTRW5hYmxlZFNjaGVtZXMoKS5jb250YWlu
cyhzY2hlbWUpOworfQorCit2b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFz
QnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFN0cmluZyYgc2NoZW1lKQorewor
ICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xp
Y3lCeXBhc3NpbmdTY2hlbWVzKCkuYWRkKHNjaGVtZSk7Cit9CisKK3ZvaWQgU2NoZW1lUmVnaXN0
cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBv
bGljeShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5
TG9jayk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5QnlwYXNzaW5nU2NoZW1lcygpLnJlbW92
ZShzY2hlbWUpOworfQorCitib29sIFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3ND
b250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgaWYgKHNj
aGVtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTG9ja2VyPExvY2s+
IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOworICAgIHJldHVybiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lCeXBhc3NpbmdTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKTsKK30KKwordm9pZCBTY2hl
bWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Fsd2F5c1JldmFsaWRhdGVkKGNvbnN0IFN0
cmluZyYgc2NoZW1lKQoreworICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBhbHdheXNSZXZhbGlkYXRlZFNjaGVtZXMoKS5hZGQoc2NoZW1lKTsKK30KKworYm9v
bCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkQWx3YXlzUmV2YWxpZGF0ZVVSTFNjaGVtZShjb25zdCBT
dHJpbmcmIHNjaGVtZSkKK3sKKyAgICByZXR1cm4gIXNjaGVtZS5pc051bGwoKSAmJiBhbHdheXNS
ZXZhbGlkYXRlZFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOworfQorCit2b2lkIFNjaGVtZVJl
Z2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRpb25lZChjb25zdCBTdHJpbmcm
IHNjaGVtZSkKK3sKKyAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CisgICAgY2FjaGVQ
YXJ0aXRpb25pbmdTY2hlbWVzKCkuYWRkKHNjaGVtZSk7Cit9CisKK2Jvb2wgU2NoZW1lUmVnaXN0
cnk6OnNob3VsZFBhcnRpdGlvbkNhY2hlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1l
KQoreworICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKKyAgICByZXR1cm4g
Y2FjaGVQYXJ0aXRpb25pbmdTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKTsKK30KKwordm9pZCBT
Y2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZShj
b25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7
CisgICAgc2VydmljZVdvcmtlclNjaGVtZXMoKS5hZGQoc2NoZW1lKTsKK30KKworYm9vbCBTY2hl
bWVSZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hlbWUoY29uc3QgU3RyaW5n
JiBzY2hlbWUpCit7CisgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKHNjaGVtZS5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoImh0dHAi
X3MpKSB7CisgICAgICAgIGlmIChzY2hlbWUubGVuZ3RoKCkgPT0gNCkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBpZiAoc2NoZW1lLmxlbmd0aCgpID09IDUgJiYgaXNBU0NJSUFs
cGhhQ2FzZWxlc3NFcXVhbChzY2hlbWVbNF0sICdzJykpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7
CisgICAgcmV0dXJuIHNlcnZpY2VXb3JrZXJTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKTsKK30K
KworYm9vbCBTY2hlbWVSZWdpc3RyeTo6aXNTZXJ2aWNlV29ya2VyQ29udGFpbmVyQ3VzdG9tU2No
ZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2No
ZW1lUmVnaXN0cnlMb2NrKTsKKyAgICByZXR1cm4gIXNjaGVtZS5pc051bGwoKSAmJiBzZXJ2aWNl
V29ya2VyU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7Cit9CisKK2Jvb2wgU2NoZW1lUmVnaXN0
cnk6OmlzVXNlckV4dGVuc2lvblNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgaWYgKHNjaGVtZSA9PSAic2FmYXJpLWV4dGVuc2lvbiIpCisgICAg
ICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2NoZW1lKTsKKyNlbmRp
ZgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGlu
U2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIHJldHVybiAhc2NoZW1lLmlzTnVs
bCgpICYmIChhbGxCdWlsdGluU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSkgfHwgV1RGOjpVUkxQ
YXJzZXI6OmlzU3BlY2lhbFNjaGVtZShzY2hlbWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5
U2NoZW1lUmVnaXN0cnkuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAs
MCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAJKHJl
dmlzaW9uIDI1MDcyMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJl
Z2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICoKICAqLwogI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAi
TGVnYWN5U2NoZW1lUmVnaXN0cnkuaCIKIAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVk
ZSA8d3RmL0xvY2tlci5oPgpAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgY29uc3QgVVJMU2NoZW1l
c01hcCYgYWxsQnVpbHRpblNjCiAgICAgICAgICAgICBidWlsdGluQ09SU0VuYWJsZWRTY2hlbWVz
LAogICAgICAgICB9OwogCi0gICAgICAgIC8vIE90aGVyIG1pc2Mgc2NoZW1lcyB0aGF0IHRoZSBT
Y2hlbWVSZWdpc3RyeSBkb2Vzbid0IGtub3cgYWJvdXQuCisgICAgICAgIC8vIE90aGVyIG1pc2Mg
c2NoZW1lcyB0aGF0IHRoZSBMZWdhY3lTY2hlbWVSZWdpc3RyeSBkb2Vzbid0IGtub3cgYWJvdXQu
CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBvdGhlclNjaGVtZXNbXSA9IHsKICAg
ICAgICAgICAgICJ3ZWJraXQtZmFrZS11cmwiLAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTIxOCw3
ICsyMTgsNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgbm90QWxsb3dpbmdKYXZhc2NyCiAgICAg
cmV0dXJuIG5vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHNTY2hlbWVzOwogfQogCi12b2lkIFNjaGVt
ZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTG9jYWwoY29uc3QgU3RyaW5nJiBzY2hlbWUp
Cit2b2lkIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTG9jYWwoY29u
c3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVy
VVJMU2NoZW1lQXMKICAgICBsb2NhbFVSTFNjaGVtZXMoKS5hZGQoc2NoZW1lKTsKIH0KIAotdm9p
ZCBTY2hlbWVSZWdpc3RyeTo6cmVtb3ZlVVJMU2NoZW1lUmVnaXN0ZXJlZEFzTG9jYWwoY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCit2b2lkIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZW1vdmVVUkxTY2hl
bWVSZWdpc3RlcmVkQXNMb2NhbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICAgICBMb2NrZXI8
TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7CiAgICAgaWYgKGJ1aWx0aW5Mb2NhbFVS
TFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpKQpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBV
UkxTY2hlbWVzTWFwJiBhbHdheXNSZXZhbGlkYXRlZFMKICAgICByZXR1cm4gc2NoZW1lczsKIH0K
IAotYm9vbCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKGNvbnN0
IFN0cmluZyYgc2NoZW1lKQorYm9vbCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRV
UkxTY2hlbWVBc0xvY2FsKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogICAgIGlmIChzY2hlbWUu
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI5NSw3ICsyOTUsNyBAQCBib29s
IFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtCiAgICAgcmV0dXJuIGxvY2FsVVJM
U2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKLXZvaWQgU2NoZW1lUmVnaXN0cnk6OnJl
Z2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3ZvaWQgTGVn
YWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJp
bmcmIHNjaGVtZSkKIHsKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47
CkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hl
bWVBcwogICAgIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpLmFkZChzY2hlbWUpOwogfQogCi1i
b29sIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCitib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVS
TFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgaWYgKHNjaGVt
ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzEzLDcgKzMxMyw3IEBAIGJv
b2wgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW0KICAgICByZXR1cm4gc2NoZW1l
c1dpdGhVbmlxdWVPcmlnaW5zKCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIAotdm9pZCBTY2hlbWVS
ZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChjb25zdCBTdHJpbmcm
IHNjaGVtZSkKK3ZvaWQgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNE
aXNwbGF5SXNvbGF0ZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgaWYgKHNjaGVtZS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgU2NoZW1l
UmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXMKICAgICBkaXNwbGF5SXNvbGF0ZWRVUkxTY2hl
bWVzKCkuYWRkKHNjaGVtZSk7CiB9CiAKLWJvb2wgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0
VVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpCitib29sIExl
Z2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVk
KGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTMzMSw3ICszMzEsNyBAQCBib29sIFNjaGVtZVJlZ2lzdHJ5
OjpzaG91bGRUcmVhdFVSTFNjaGVtCiAgICAgcmV0dXJuIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVt
ZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCi12b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3Rl
clVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYgc2NoZW1lKQordm9pZCBMZWdhY3lTY2hl
bWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZShjb25zdCBTdHJpbmcmIHNjaGVt
ZSkKIHsKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CkBAIC0zNDAs
NyArMzQwLDcgQEAgdm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBcwogICAg
IHNlY3VyZVNjaGVtZXMoKS5hZGQoc2NoZW1lKTsKIH0KIAotYm9vbCBTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkVHJlYXRVUkxTY2hlbWVBc1NlY3VyZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK2Jvb2wg
TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUoY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMzQ5LDE5ICszNDksMTkgQEAgYm9vbCBTY2hlbWVSZWdpc3RyeTo6c2hv
dWxkVHJlYXRVUkxTY2hlbQogICAgIHJldHVybiBzZWN1cmVTY2hlbWVzKCkuY29udGFpbnMoc2No
ZW1lKTsKIH0KIAotdm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5
RG9jdW1lbnQoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit2b2lkIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5
OjpyZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudChjb25zdCBTdHJpbmcmIHNjaGVtZSkK
IHsKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAgICAgZW1wdHlE
b2N1bWVudFNjaGVtZXMoKS5hZGQoc2NoZW1lKTsKIH0KIAotYm9vbCBTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkTG9hZFVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudChjb25zdCBTdHJpbmcmIHNjaGVtZSkK
K2Jvb2wgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZExvYWRVUkxTY2hlbWVBc0VtcHR5RG9j
dW1lbnQoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgcmV0dXJuICFzY2hlbWUuaXNOdWxs
KCkgJiYgZW1wdHlEb2N1bWVudFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCi12b2lk
IFNjaGVtZVJlZ2lzdHJ5OjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1l
KGJvb2wgZm9yYmlkZGVuLCBjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3ZvaWQgTGVnYWN5U2NoZW1l
UmVnaXN0cnk6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBm
b3JiaWRkZW4sIGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogICAgIGlmIChzY2hlbWUuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM3MiwxMiArMzcyLDEyIEBAIHZvaWQgU2NoZW1lUmVn
aXN0cnk6OnNldERvbWFpblJlbGF4YXRpb24KICAgICAgICAgc2NoZW1lc0ZvcmJpZGRlbkZyb21E
b21haW5SZWxheGF0aW9uKCkucmVtb3ZlKHNjaGVtZSk7CiB9CiAKLWJvb2wgU2NoZW1lUmVnaXN0
cnk6OmlzRG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcm
IHNjaGVtZSkKK2Jvb2wgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OmlzRG9tYWluUmVsYXhhdGlvbkZv
cmJpZGRlbkZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICAgICByZXR1cm4g
IXNjaGVtZS5pc051bGwoKSAmJiBzY2hlbWVzRm9yYmlkZGVuRnJvbURvbWFpblJlbGF4YXRpb24o
KS5jb250YWlucyhzY2hlbWUpOwogfQogCi1ib29sIFNjaGVtZVJlZ2lzdHJ5OjpjYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdChjb25zdCBTdHJpbmcmIHNjaGVtZSkKK2Jvb2wgTGVnYWN5U2NoZW1l
UmVnaXN0cnk6OmNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc2NoZW1l
KQogewogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTM4Niw3ICszODYsNyBAQCBib29sIFNjaGVtZVJlZ2lzdHJ5OjpjYW5EaXNwbGF5T25seUlmQ2Fu
CiAgICAgcmV0dXJuIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpLmNvbnRhaW5z
KHNjaGVtZSk7CiB9CiAKLXZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdChjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3ZvaWQgTGVnYWN5U2NoZW1l
UmVnaXN0cnk6OnJlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChjb25zdCBTdHJp
bmcmIHNjaGVtZSkKIHsKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47
CkBAIC0zOTUsNDMgKzM5NSw0MyBAQCB2b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlckFzQ2Fu
RGlzcGxhCiAgICAgY2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCkuYWRkKHNjaGVt
ZSk7CiB9CiAKLXZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb3RBbGxv
d2luZ0phdmFzY3JpcHRVUkxzKGNvbnN0IFN0cmluZyYgc2NoZW1lKQordm9pZCBMZWdhY3lTY2hl
bWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHMo
Y29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIG5vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHNTY2hlbWVzKCkuYWRkKHNj
aGVtZSk7CiB9CiAKLWJvb2wgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNO
b3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzKGNvbnN0IFN0cmluZyYgc2NoZW1lKQorYm9vbCBMZWdh
Y3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc05vdEFsbG93aW5nSmF2YXNj
cmlwdFVSTHMoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgcmV0dXJuICFzY2hlbWUuaXNO
dWxsKCkgJiYgbm90QWxsb3dpbmdKYXZhc2NyaXB0VVJMc1NjaGVtZXMoKS5jb250YWlucyhzY2hl
bWUpOwogfQogCi12b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQWxsb3dp
bmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKGNvbnN0IFN0cmluZyYgc2NoZW1lKQor
dm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93aW5nRGF0
YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyhjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICAg
ICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAgICAgc2NoZW1lc0FsbG93
aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZygpLmFkZChzY2hlbWUpOwogfQogCi1i
b29sIFNjaGVtZVJlZ2lzdHJ5OjphbGxvd3NEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5n
KGNvbnN0IFN0cmluZyYgc2NoZW1lKQorYm9vbCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6YWxsb3dz
RGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyhjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsK
ICAgICByZXR1cm4gIXNjaGVtZS5pc051bGwoKSAmJiBzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFj
Y2Vzc0luUHJpdmF0ZUJyb3dzaW5nKCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIAotdm9pZCBTY2hl
bWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYg
c2NoZW1lKQordm9pZCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NP
UlNFbmFibGVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogICAgIGlmIChzY2hlbWUuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKICAgICBDT1JTRW5hYmxlZFNjaGVtZXMoKS5hZGQoc2NoZW1l
KTsKIH0KIAotYm9vbCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNF
bmFibGVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKQorYm9vbCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKQog
ewogICAgIHJldHVybiAhc2NoZW1lLmlzTnVsbCgpICYmIENPUlNFbmFibGVkU2NoZW1lcygpLmNv
bnRhaW5zKHNjaGVtZSk7CiB9CiAKLXZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2No
ZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJiBzY2hlbWUp
Cit2b2lkIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5n
Q29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogICAgIGlmIChz
Y2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lk
IFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzCiAgICAgQ29udGVudFNlY3VyaXR5
UG9saWN5QnlwYXNzaW5nU2NoZW1lcygpLmFkZChzY2hlbWUpOwogfQogCi12b2lkIFNjaGVtZVJl
Z2lzdHJ5OjpyZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJp
dHlQb2xpY3koY29uc3QgU3RyaW5nJiBzY2hlbWUpCit2b2lkIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5
OjpyZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xp
Y3koY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQgU2NoZW1lUmVnaXN0cnk6OnJl
bW92ZVVSTFNjaGVtZVJlZ2kKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hl
bWVzKCkucmVtb3ZlKHNjaGVtZSk7CiB9CiAKLWJvb2wgU2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNo
b3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK2Jv
b2wgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0
eVBvbGljeShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NTgsMTkgKzQ1OCwxOSBAQCBib29sIFNjaGVt
ZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDCiAgICAgcmV0dXJuIENvbnRlbnRTZWN1cml0
eVBvbGljeUJ5cGFzc2luZ1NjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCi12b2lkIFNj
aGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQWx3YXlzUmV2YWxpZGF0ZWQoY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCit2b2lkIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNj
aGVtZUFzQWx3YXlzUmV2YWxpZGF0ZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgaWYg
KHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGFsd2F5c1JldmFsaWRhdGVk
U2NoZW1lcygpLmFkZChzY2hlbWUpOwogfQogCi1ib29sIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRB
bHdheXNSZXZhbGlkYXRlVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQorYm9vbCBMZWdh
Y3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkQWx3YXlzUmV2YWxpZGF0ZVVSTFNjaGVtZShjb25zdCBT
dHJpbmcmIHNjaGVtZSkKIHsKICAgICByZXR1cm4gIXNjaGVtZS5pc051bGwoKSAmJiBhbHdheXNS
ZXZhbGlkYXRlZFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCi12b2lkIFNjaGVtZVJl
Z2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRpb25lZChjb25zdCBTdHJpbmcm
IHNjaGVtZSkKK3ZvaWQgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXND
YWNoZVBhcnRpdGlvbmVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogICAgIGlmIChzY2hlbWUu
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIFNjaGVt
ZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzCiAgICAgY2FjaGVQYXJ0aXRpb25pbmdTY2hl
bWVzKCkuYWRkKHNjaGVtZSk7CiB9CiAKLWJvb2wgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFBhcnRp
dGlvbkNhY2hlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQorYm9vbCBMZWdhY3lT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkUGFydGl0aW9uQ2FjaGVGb3JVUkxTY2hlbWUoY29uc3QgU3Ry
aW5nJiBzY2hlbWUpCiB7CiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNDg4LDcgKzQ4OCw3IEBAIGJvb2wgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFBh
cnRpdGlvbkNhY2gKICAgICByZXR1cm4gY2FjaGVQYXJ0aXRpb25pbmdTY2hlbWVzKCkuY29udGFp
bnMoc2NoZW1lKTsKIH0KIAotdm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVT
ZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3ZvaWQgTGVnYWN5
U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUo
Y29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgaWYgKHNjaGVtZS5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lz
dGVyVVJMU2NoZW1lU2UKICAgICBzZXJ2aWNlV29ya2VyU2NoZW1lcygpLmFkZChzY2hlbWUpOwog
fQogCi1ib29sIFNjaGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVt
ZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK2Jvb2wgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OmNhblNl
cnZpY2VXb3JrZXJzSGFuZGxlVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogICAg
IGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUxMywxMyAr
NTEzLDEzIEBAIGJvb2wgU2NoZW1lUmVnaXN0cnk6OmNhblNlcnZpY2VXb3JrZXJzSGEKICAgICBy
ZXR1cm4gc2VydmljZVdvcmtlclNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCi1ib29s
IFNjaGVtZVJlZ2lzdHJ5Ojppc1NlcnZpY2VXb3JrZXJDb250YWluZXJDdXN0b21TY2hlbWUoY29u
c3QgU3RyaW5nJiBzY2hlbWUpCitib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5Ojppc1NlcnZpY2VX
b3JrZXJDb250YWluZXJDdXN0b21TY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAg
TG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOwogICAgIHJldHVybiAhc2No
ZW1lLmlzTnVsbCgpICYmIHNlcnZpY2VXb3JrZXJTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKTsK
IH0KIAotYm9vbCBTY2hlbWVSZWdpc3RyeTo6aXNVc2VyRXh0ZW5zaW9uU2NoZW1lKGNvbnN0IFN0
cmluZyYgc2NoZW1lKQorYm9vbCBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6aXNVc2VyRXh0ZW5zaW9u
U2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBp
ZiAoc2NoZW1lID09ICJzYWZhcmktZXh0ZW5zaW9uIikKQEAgLTUzMCw3ICs1MzAsNyBAQCBib29s
IFNjaGVtZVJlZ2lzdHJ5Ojppc1VzZXJFeHRlbnNpb25TY2hlCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIFNjaGVtZVJlZ2lzdHJ5Ojppc0J1aWx0aW5TY2hlbWUoY29uc3QgU3RyaW5nJiBz
Y2hlbWUpCitib29sIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5Ojppc0J1aWx0aW5TY2hlbWUoY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgcmV0dXJuICFzY2hlbWUuaXNOdWxsKCkgJiYgKGFsbEJ1
aWx0aW5TY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKSB8fCBXVEY6OlVSTFBhcnNlcjo6aXNTcGVj
aWFsU2NoZW1lKHNjaGVtZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVn
YWN5U2NoZW1lUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5oCShyZXZpc2lvbiAyNTA3MjIpCShmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5Lmg6MjUwNzIyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gRklYTUU6IE1ha2UgSGFzaFNldDxTdHJpbmc+
Ojpjb250YWlucyhTdHJpbmdWaWV3KSB3b3JrIGFuZCB1c2UgU3RyaW5nVmlld3MgaGVyZS4KK3Vz
aW5nIFVSTFNjaGVtZXNNYXAgPSBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPjsKKworY2xhc3MgU2NoZW1lUmVnaXN0cnkgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmKTsg
Ly8gVGhyZWFkIHNhZmUuCisgICAgc3RhdGljIHZvaWQgcmVtb3ZlVVJMU2NoZW1lUmVnaXN0ZXJl
ZEFzTG9jYWwoY29uc3QgU3RyaW5nJik7IC8vIFRocmVhZCBzYWZlLgorCisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKGNvbnN0IFN0cmlu
ZyYpOyAvLyBUaHJlYWQgc2FmZS4KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0J1
aWx0aW5TY2hlbWUoY29uc3QgU3RyaW5nJik7CisgICAgCisgICAgLy8gU2VjdXJlIHNjaGVtZXMg
ZG8gbm90IHRyaWdnZXIgbWl4ZWQgY29udGVudCB3YXJuaW5ncy4gRm9yIGV4YW1wbGUsCisgICAg
Ly8gaHR0cHMgYW5kIGRhdGEgYXJlIHNlY3VyZSBzY2hlbWVzIGJlY2F1c2UgdGhleSBjYW5ub3Qg
YmUgY29ycnVwdGVkIGJ5CisgICAgLy8gYWN0aXZlIG5ldHdvcmsgYXR0YWNrZXJzLgorICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUoY29uc3Qg
U3RyaW5nJik7IC8vIFRocmVhZCBzYWZlLgorICAgIHN0YXRpYyBib29sIHNob3VsZFRyZWF0VVJM
U2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJik7IC8vIFRocmVhZCBzYWZlLgorCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0
IFN0cmluZyYpOyAvLyBUaHJlYWQgc2FmZS4KKyAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVS
TFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJik7IC8vIFRocmVhZCBzYWZlLgorCisgICAg
Ly8gRGlzcGxheS1pc29sYXRlZCBzY2hlbWVzIGNhbiBvbmx5IGJlIGRpc3BsYXllZCAoaW4gdGhl
IHNlbnNlIG9mCisgICAgLy8gU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkpIGJ5IGRvY3VtZW50
cyBmcm9tIHRoZSBzYW1lIHNjaGVtZS4KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBy
ZWdpc3RlclVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKGNvbnN0IFN0cmluZyYpOyAvLyBUaHJl
YWQgc2FmZS4KKyAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVtZUFzRGlzcGxheUlz
b2xhdGVkKGNvbnN0IFN0cmluZyYpOyAvLyBUaHJlYWQgc2FmZS4KKworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KGNvbnN0IFN0
cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZExvYWRVUkxTY2hl
bWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3RyaW5nJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCBzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wg
Zm9yYmlkZGVuLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgYm9vbCBpc0RvbWFpblJlbGF4
YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBTdWNo
IHNjaGVtZXMgc2hvdWxkIGRlbGVnYXRlIHRvIFNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0IGZv
ciBhbnkgVVJMCisgICAgLy8gcGFzc2VkIHRvIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5Lgor
ICAgIHN0YXRpYyBib29sIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYg
c2NoZW1lKTsgLy8gVGhyZWFkIHNhZmUuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
cmVnaXN0ZXJBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc2NoZW1l
KTsgLy8gVGhyZWFkIHNhZmUuCisKKyAgICAvLyBTY2hlbWVzIGFnYWluc3Qgd2hpY2ggamF2YXNj
cmlwdDogVVJMcyBzaG91bGQgbm90IGJlIGFsbG93ZWQgdG8gcnVuIChzdG9wCisgICAgLy8gYm9v
a21hcmtsZXRzIGZyb20gcnVubmluZyBvbiBzZW5zaXRpdmUgcGFnZXMpLiAKKyAgICBzdGF0aWMg
dm9pZCByZWdpc3RlclVSTFNjaGVtZUFzTm90QWxsb3dpbmdKYXZhc2NyaXB0VVJMcyhjb25zdCBT
dHJpbmcmIHNjaGVtZSk7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRVUkxTY2hlbWVBc05v
dEFsbG93aW5nSmF2YXNjcmlwdFVSTHMoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworCisgICAgLy8g
TGV0IHNvbWUgc2NoZW1lcyBvcHQtb3V0IG9mIFByaXZhdGUgQnJvd3NpbmcncyBkZWZhdWx0IGJl
aGF2aW9yIG9mIHByb2hpYml0aW5nIHJlYWQvd3JpdGUKKyAgICAvLyBhY2Nlc3MgdG8gTG9jYWwg
U3RvcmFnZSBhbmQgRGF0YWJhc2VzLgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyVVJMU2NoZW1lQXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmco
Y29uc3QgU3RyaW5nJiBzY2hlbWUpOworICAgIHN0YXRpYyBib29sIGFsbG93c0RhdGFiYXNlQWNj
ZXNzSW5Qcml2YXRlQnJvd3NpbmcoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworCisgICAgLy8gQWxs
b3cgbm9uLUhUVFAgc2NoZW1lcyB0byBiZSByZWdpc3RlcmVkIHRvIGFsbG93IENPUlMgcmVxdWVz
dHMuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NP
UlNFbmFibGVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJiBz
Y2hlbWUpOworCisgICAgLy8gQWxsb3cgcmVzb3VyY2VzIGZyb20gc29tZSBzY2hlbWVzIHRvIGxv
YWQgb24gYSBwYWdlLCByZWdhcmRsZXNzIG9mIGl0cworICAgIC8vIENvbnRlbnQgU2VjdXJpdHkg
UG9saWN5LgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1l
QXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJiBzY2hlbWUpOyAv
LyBUaHJlYWQgc2FmZS4KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZW1vdmVVUkxT
Y2hlbWVSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3Ry
aW5nJiBzY2hlbWUpOyAvLyBUaHJlYWQgc2FmZS4KKyAgICBzdGF0aWMgYm9vbCBzY2hlbWVTaG91
bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJiBzY2hlbWUpOyAvLyBU
aHJlYWQgc2FmZS4KKworICAgIC8vIFNjaGVtZXMgd2hvc2UgcmVzcG9uc2VzIHNob3VsZCBhbHdh
eXMgYmUgcmV2YWxpZGF0ZWQuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0
ZXJVUkxTY2hlbWVBc0Fsd2F5c1JldmFsaWRhdGVkKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRp
YyBib29sIHNob3VsZEFsd2F5c1JldmFsaWRhdGVVUkxTY2hlbWUoY29uc3QgU3RyaW5nJik7CisK
KyAgICAvLyBTY2hlbWVzIHdob3NlIHJlcXVlc3RzIHNob3VsZCBiZSBwYXJ0aXRpb25lZCBpbiB0
aGUgY2FjaGUKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVt
ZUFzQ2FjaGVQYXJ0aXRpb25lZChjb25zdCBTdHJpbmcmIHNjaGVtZSk7IC8vIFRocmVhZCBzYWZl
LgorICAgIHN0YXRpYyBib29sIHNob3VsZFBhcnRpdGlvbkNhY2hlRm9yVVJMU2NoZW1lKGNvbnN0
IFN0cmluZyYgc2NoZW1lKTsgLy8gVGhyZWFkIHNhZmUuCisKKyAgICAvLyBTY2hlbWVzIGJlc2lk
ZXMgaHR0cChzKSB0aGF0IHNlcnZpY2Ugd29ya2VycyBhcmUgYWxsb3dlZCB0byBoYW5kbGUKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3Jr
ZXJzQ2FuSGFuZGxlKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsgLy8gVGhyZWFkIHNhZmUuCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hl
bWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOyAvLyBUaHJlYWQgc2FmZS4KKyAgICBzdGF0aWMgYm9v
bCBpc1NlcnZpY2VXb3JrZXJDb250YWluZXJDdXN0b21TY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hl
bWUpOyAvLyBUaHJlYWQgc2FmZS4KKworICAgIHN0YXRpYyBib29sIGlzVXNlckV4dGVuc2lvblNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hl
bWVSZWdpc3RyeS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAj
IworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuaAkocmV2aXNpb24gMjUw
NzIyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuaAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBG
SVhNRTogTWFrZSBIYXNoU2V0PFN0cmluZz46OmNvbnRhaW5zKFN0cmluZ1ZpZXcpIHdvcmsgYW5k
IHVzZSBTdHJpbmdWaWV3cyBoZXJlLgogdXNpbmcgVVJMU2NoZW1lc01hcCA9IEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OwogCi1jbGFzcyBTY2hlbWVSZWdpc3RyeSB7
CitjbGFzcyBMZWdhY3lTY2hlbWVSZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKGNvbnN0IFN0cmluZyYpOyAv
LyBUaHJlYWQgc2FmZS4KICAgICBzdGF0aWMgdm9pZCByZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVk
QXNMb2NhbChjb25zdCBTdHJpbmcmKTsgLy8gVGhyZWFkIHNhZmUuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAyNTA3MjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSw1MzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqCi0gKi8KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5o
IgotCi0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+Ci0jaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+Ci0KLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCi0jaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgotI2VuZGlmCi0jaWYgVVNFKFFVSUNLX0xP
T0spCi0jaW5jbHVkZSAiUXVpY2tMb29rLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi0vLyBGSVhNRTogVVJMU2NoZW1lc01hcCBpcyBhIHBlY3VsaWFyIHR5cGUgbmFtZSBnaXZl
biB0aGF0IGl0IGlzIGEgc2V0LgotCi1zdGF0aWMgY29uc3QgVVJMU2NoZW1lc01hcCYgYnVpbHRp
bkxvY2FsVVJMU2NoZW1lcygpOwotc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGlu
U2VjdXJlU2NoZW1lcygpOwotc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2No
ZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCk7Ci1zdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1
aWx0aW5FbXB0eURvY3VtZW50U2NoZW1lcygpOwotc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBidWlsdGluQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCk7Ci1zdGF0aWMgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVtZXMoKTsKLQotdXNpbmcg
U3RyaW5nVmVjdG9yRnVuY3Rpb24gPSBjb25zdCBWZWN0b3I8U3RyaW5nPiYgKCopKCk7Ci0KLXN0
YXRpYyB2b2lkIGFkZChVUkxTY2hlbWVzTWFwJiBzZXQsIFN0cmluZ1ZlY3RvckZ1bmN0aW9uIGZ1
bmN0aW9uKQotewotICAgIGZvciAoYXV0byYgc2NoZW1lIDogZnVuY3Rpb24oKSkKLSAgICAgICAg
c2V0LmFkZChzY2hlbWUpOwotfQotCi1zdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01h
cD4gbWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAoKmZ1
bmN0aW9uKSgpKQotewotICAgIFVSTFNjaGVtZXNNYXAgc2V0OwotICAgIGFkZChzZXQsIGZ1bmN0
aW9uKTsKLSAgICByZXR1cm4gc2V0OwotfQotCi1zdGF0aWMgTG9jayBzY2hlbWVSZWdpc3RyeUxv
Y2s7Ci0KLXN0YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFwJiBhbGxCdWlsdGluU2NoZW1lcygpCi17
Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmdWZWN0b3JGdW5jdGlvbiBmdW5jdGlvbnNbXSB7
Ci0gICAgICAgICAgICBidWlsdGluU2VjdXJlU2NoZW1lcywKLSAgICAgICAgICAgIGJ1aWx0aW5T
Y2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMsCi0gICAgICAgICAgICBidWlsdGluRW1wdHlEb2N1bWVu
dFNjaGVtZXMsCi0gICAgICAgICAgICBidWlsdGluQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RT
Y2hlbWVzLAotICAgICAgICAgICAgYnVpbHRpbkNPUlNFbmFibGVkU2NoZW1lcywKLSAgICAgICAg
fTsKLQotICAgICAgICAvLyBPdGhlciBtaXNjIHNjaGVtZXMgdGhhdCB0aGUgU2NoZW1lUmVnaXN0
cnkgZG9lc24ndCBrbm93IGFib3V0LgotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
b3RoZXJTY2hlbWVzW10gPSB7Ci0gICAgICAgICAgICAid2Via2l0LWZha2UtdXJsIiwKLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgICAgICAgICAic2FmYXJpLWV4dGVuc2lvbiIsCi0jZW5kaWYKLSNp
ZiBVU0UoUVVJQ0tfTE9PSykKLSAgICAgICAgICAgIFFMUHJldmlld1Byb3RvY29sLAotI2VuZGlm
Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgICAgICAgICAgQ29udGVudEZpbHRl
cjo6dXJsU2NoZW1lKCksCi0jZW5kaWYKLSAgICAgICAgfTsKLQotICAgICAgICBVUkxTY2hlbWVz
TWFwIHNldDsKLSAgICAgICAgewotICAgICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hl
bWVSZWdpc3RyeUxvY2spOwotICAgICAgICAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBidWlsdGlu
TG9jYWxVUkxTY2hlbWVzKCkpCi0gICAgICAgICAgICAgICAgc2V0LmFkZChzY2hlbWUpOwotCi0g
ICAgICAgICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogZnVuY3Rpb25zKQotICAgICAgICAgICAg
ICAgIGFkZChzZXQsIGZ1bmN0aW9uKTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8mIHNj
aGVtZSA6IG90aGVyU2NoZW1lcykKLSAgICAgICAgICAgIHNldC5hZGQoc2NoZW1lKTsKLSAgICAg
ICAgcmV0dXJuIHNldDsKLSAgICB9KCkpOwotICAgIHJldHVybiBzY2hlbWVzOwotfQotCi1zdGF0
aWMgY29uc3QgVVJMU2NoZW1lc01hcCYgYnVpbHRpbkxvY2FsVVJMU2NoZW1lcygpCi17Ci0gICAg
QVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7Ci0gICAgc3RhdGljIGNvbnN0IGF1
dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChVUkxTY2hlbWVzTWFwIHsKLSAgICAgICAg
ImZpbGUiLAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAiYXBwbGV3ZWJkYXRhIiwKLSNl
bmRpZgotICAgIH0pOwotICAgIHJldHVybiBzY2hlbWVzOwotfQotCi1zdGF0aWMgVVJMU2NoZW1l
c01hcCYgbG9jYWxVUkxTY2hlbWVzKCkKLXsKLSAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2Nr
LmlzSGVsZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gbG9j
YWxTY2hlbWVzID0gYnVpbHRpbkxvY2FsVVJMU2NoZW1lcygpOwotICAgIHJldHVybiBsb2NhbFNj
aGVtZXM7Ci19Ci0KLXN0YXRpYyBVUkxTY2hlbWVzTWFwJiBkaXNwbGF5SXNvbGF0ZWRVUkxTY2hl
bWVzKCkKLXsKLSAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gZGlzcGxheUlzb2xhdGVkU2NoZW1l
czsKLSAgICByZXR1cm4gZGlzcGxheUlzb2xhdGVkU2NoZW1lczsKLX0KLQotY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkKLXsKLSAgICBBU1NFUlQoc2NoZW1lUmVn
aXN0cnlMb2NrLmlzSGVsZCgpKTsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsKLSAgICAgICAgImh0dHBzIiwKLSAgICAg
ICAgImFib3V0IiwKLSAgICAgICAgImRhdGEiLAotICAgICAgICAid3NzIiwKLSNpZiBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKFdQRSkKLSAgICAgICAgInJlc291cmNlIiwKLSNlbmRpZgotICAg
IH0pOwotICAgIHJldHVybiBzY2hlbWVzOwotfQotCi1zdGF0aWMgVVJMU2NoZW1lc01hcCYgc2Vj
dXJlU2NoZW1lcygpCi17Ci0gICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7
Ci0gICAgc3RhdGljIGF1dG8gc2VjdXJlU2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVt
ZVNldChidWlsdGluU2VjdXJlU2NoZW1lcyk7Ci0gICAgcmV0dXJuIHNlY3VyZVNjaGVtZXM7Ci19
Ci0KLWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5z
KCkKLXsKLSAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsKLSAgICBzdGF0
aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+
IHsKLSAgICAgICAgImFib3V0IiwKLSAgICAgICAgImphdmFzY3JpcHQiLAotICAgICAgICAvLyBU
aGlzIGlzIGFuIGludGVudGlvbmFsIGRpZmZlcmVuY2UgZnJvbSB0aGUgYmVoYXZpb3IgdGhlIEhU
TUwgc3BlY2lmaWNhdGlvbiBjYWxscyBmb3IuCi0gICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4ODUKLSAgICAgICAgImRhdGEiLAotICAgIH0p
OwotICAgIHJldHVybiBzY2hlbWVzOwotfQotCi1zdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1l
c1dpdGhVbmlxdWVPcmlnaW5zKCkKLXsKLSAgICBBU1NFUlQoc2NoZW1lUmVnaXN0cnlMb2NrLmlz
SGVsZCgpKTsKLSAgICBzdGF0aWMgYXV0byBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMgPSBtYWtl
TmV2ZXJEZXN0cm95ZWRTY2hlbWVTZXQoYnVpbHRpblNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucyk7
Ci0gICAgcmV0dXJuIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2luczsKLX0KLQotY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJ1aWx0aW5FbXB0eURvY3VtZW50U2NoZW1lcygpCi17Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVy
RGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+IHsgImFib3V0IiB9KTsKLSAgICByZXR1cm4gc2NoZW1l
czsKLX0KLQotc3RhdGljIFVSTFNjaGVtZXNNYXAmIGVtcHR5RG9jdW1lbnRTY2hlbWVzKCkKLXsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyBhdXRvIGVtcHR5RG9jdW1l
bnRTY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0KGJ1aWx0aW5FbXB0eURvY3Vt
ZW50U2NoZW1lcyk7Ci0gICAgcmV0dXJuIGVtcHR5RG9jdW1lbnRTY2hlbWVzOwotfQotCi1zdGF0
aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0ZvcmJpZGRlbkZyb21Eb21haW5SZWxheGF0aW9uKCkK
LXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzOwotICAgIHJldHVybiBzY2hlbWVzOwotfQotCi1jb25z
dCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1l
cygpCi17Ci0gICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7Ci0gICAgc3Rh
dGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5n
PiB7ICJibG9iIiB9KTsKLSAgICByZXR1cm4gc2NoZW1lczsKLX0KLQotc3RhdGljIFVSTFNjaGVt
ZXNNYXAmIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpCi17Ci0gICAgQVNTRVJU
KHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7Ci0gICAgc3RhdGljIGF1dG8gY2FuRGlzcGxh
eU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0KGJ1
aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMpOwotICAgIHJldHVybiBjYW5E
aXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXM7Ci19Ci0KLXN0YXRpYyBVUkxTY2hlbWVzTWFw
JiBub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lcygpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gbm90
QWxsb3dpbmdKYXZhc2NyaXB0VVJMc1NjaGVtZXM7Ci0gICAgcmV0dXJuIG5vdEFsbG93aW5nSmF2
YXNjcmlwdFVSTHNTY2hlbWVzOwotfQotCi12b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVS
TFNjaGVtZUFzTG9jYWwoY29uc3QgU3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgaWYgKHNjaGVtZS5p
c051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hl
bWVSZWdpc3RyeUxvY2spOwotICAgIGxvY2FsVVJMU2NoZW1lcygpLmFkZChzY2hlbWUpOwotfQot
Ci12b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNMb2NhbChj
b25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJl
Z2lzdHJ5TG9jayk7Ci0gICAgaWYgKGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMoKS5jb250YWlucyhz
Y2hlbWUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBsb2NhbFVSTFNjaGVtZXMoKS5yZW1vdmUo
c2NoZW1lKTsKLX0KLQotc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNBbGxvd2luZ0RhdGFi
YXNlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHNjaGVtZXNBbGxv
d2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmc7Ci0gICAgcmV0dXJuIHNjaGVtZXNB
bGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmc7Ci19Ci0KLWNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBidWlsdGluQ09SU0VuYWJsZWRTY2hlbWVzKCkKLXsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNjaGVtZXMgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4geyAiaHR0cCIsICJodHRwcyIgfSk7Ci0gICAgcmV0dXJu
IHNjaGVtZXM7Ci19Ci0KLXN0YXRpYyBVUkxTY2hlbWVzTWFwJiBDT1JTRW5hYmxlZFNjaGVtZXMo
KQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgLy8gRklYTUU6IGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTYwCi0gICAgc3RhdGljIGF1dG8gc2No
ZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChidWlsdGluQ09SU0VuYWJsZWRTY2hl
bWVzKTsKLSAgICByZXR1cm4gc2NoZW1lczsKLX0KLQotc3RhdGljIFVSTFNjaGVtZXNNYXAmIENv
bnRlbnRTZWN1cml0eVBvbGljeUJ5cGFzc2luZ1NjaGVtZXMoKQotewotICAgIEFTU0VSVChzY2hl
bWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxT
Y2hlbWVzTWFwPiBzY2hlbWVzOwotICAgIHJldHVybiBzY2hlbWVzOwotfQotCi1zdGF0aWMgVVJM
U2NoZW1lc01hcCYgY2FjaGVQYXJ0aXRpb25pbmdTY2hlbWVzKCkKLXsKLSAgICBBU1NFUlQoc2No
ZW1lUmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJM
U2NoZW1lc01hcD4gc2NoZW1lczsKLSAgICByZXR1cm4gc2NoZW1lczsKLX0KLQotc3RhdGljIFVS
TFNjaGVtZXNNYXAmIHNlcnZpY2VXb3JrZXJTY2hlbWVzKCkKLXsKLSAgICBBU1NFUlQoc2NoZW1l
UmVnaXN0cnlMb2NrLmlzSGVsZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2No
ZW1lc01hcD4gc2NoZW1lczsKLSAgICByZXR1cm4gc2NoZW1lczsKLX0KLQotc3RhdGljIFVSTFNj
aGVtZXNNYXAmIGFsd2F5c1JldmFsaWRhdGVkU2NoZW1lcygpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gc2No
ZW1lczsKLSAgICByZXR1cm4gc2NoZW1lczsKLX0KLQotYm9vbCBTY2hlbWVSZWdpc3RyeTo6c2hv
dWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlm
IChzY2hlbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKLSAgICByZXR1cm4gbG9jYWxVUkxTY2hl
bWVzKCkuY29udGFpbnMoc2NoZW1lKTsKLX0KLQotdm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0
ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmIChz
Y2hlbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIExvY2tlcjxMb2NrPiBsb2Nr
ZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKLSAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKS5h
ZGQoc2NoZW1lKTsKLX0KLQotYm9vbCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hl
bWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmIChzY2hlbWUuaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
c2NoZW1lUmVnaXN0cnlMb2NrKTsKLSAgICByZXR1cm4gc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5z
KCkuY29udGFpbnMoc2NoZW1lKTsKLX0KLQotdm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJV
UkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBp
ZiAoc2NoZW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMb2NrZXI8TG9jaz4g
bG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7Ci0gICAgZGlzcGxheUlzb2xhdGVkVVJMU2NoZW1l
cygpLmFkZChzY2hlbWUpOwotfQotCi1ib29sIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVS
TFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlm
IChzY2hlbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKLSAgICByZXR1cm4gZGlzcGxheUlzb2xh
dGVkVVJMU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7Ci19Ci0KLXZvaWQgU2NoZW1lUmVnaXN0
cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCi17Ci0g
ICAgaWYgKHNjaGVtZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTG9ja2VyPExv
Y2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOwotICAgIHNlY3VyZVNjaGVtZXMoKS5hZGQo
c2NoZW1lKTsKLX0KLQotYm9vbCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVB
c1NlY3VyZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBpZiAoc2NoZW1lLmlzTnVsbCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVt
ZVJlZ2lzdHJ5TG9jayk7Ci0gICAgcmV0dXJuIHNlY3VyZVNjaGVtZXMoKS5jb250YWlucyhzY2hl
bWUpOwotfQotCi12b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlE
b2N1bWVudChjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBpZiAoc2NoZW1lLmlzTnVsbCgp
KQotICAgICAgICByZXR1cm47Ci0gICAgZW1wdHlEb2N1bWVudFNjaGVtZXMoKS5hZGQoc2NoZW1l
KTsKLX0KLQotYm9vbCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkTG9hZFVSTFNjaGVtZUFzRW1wdHlE
b2N1bWVudChjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICByZXR1cm4gIXNjaGVtZS5pc051
bGwoKSAmJiBlbXB0eURvY3VtZW50U2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7Ci19Ci0KLXZv
aWQgU2NoZW1lUmVnaXN0cnk6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hl
bWUoYm9vbCBmb3JiaWRkZW4sIGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmIChzY2hl
bWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChmb3JiaWRkZW4pCi0gICAg
ICAgIHNjaGVtZXNGb3JiaWRkZW5Gcm9tRG9tYWluUmVsYXhhdGlvbigpLmFkZChzY2hlbWUpOwot
ICAgIGVsc2UKLSAgICAgICAgc2NoZW1lc0ZvcmJpZGRlbkZyb21Eb21haW5SZWxheGF0aW9uKCku
cmVtb3ZlKHNjaGVtZSk7Ci19Ci0KLWJvb2wgU2NoZW1lUmVnaXN0cnk6OmlzRG9tYWluUmVsYXhh
dGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBy
ZXR1cm4gIXNjaGVtZS5pc051bGwoKSAmJiBzY2hlbWVzRm9yYmlkZGVuRnJvbURvbWFpblJlbGF4
YXRpb24oKS5jb250YWlucyhzY2hlbWUpOwotfQotCi1ib29sIFNjaGVtZVJlZ2lzdHJ5OjpjYW5E
aXNwbGF5T25seUlmQ2FuUmVxdWVzdChjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBpZiAo
c2NoZW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBMb2NrZXI8TG9j
az4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7Ci0gICAgcmV0dXJuIGNhbkRpc3BsYXlPbmx5
SWZDYW5SZXF1ZXN0U2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7Ci19Ci0KLXZvaWQgU2NoZW1l
UmVnaXN0cnk6OnJlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChjb25zdCBTdHJp
bmcmIHNjaGVtZSkKLXsKLSAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7Ci0gICAgY2Fu
RGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCkuYWRkKHNjaGVtZSk7Ci19Ci0KLXZvaWQg
U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb3RBbGxvd2luZ0phdmFzY3JpcHRV
UkxzKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2NoZW1lcygpLmFk
ZChzY2hlbWUpOwotfQotCi1ib29sIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVt
ZUFzTm90QWxsb3dpbmdKYXZhc2NyaXB0VVJMcyhjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAg
ICByZXR1cm4gIXNjaGVtZS5pc051bGwoKSAmJiBub3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzU2No
ZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7Ci19Ci0KLXZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lz
dGVyVVJMU2NoZW1lQXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcoY29u
c3QgU3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgaWYgKHNjaGVtZS5pc051bGwoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3Np
bmcoKS5hZGQoc2NoZW1lKTsKLX0KLQotYm9vbCBTY2hlbWVSZWdpc3RyeTo6YWxsb3dzRGF0YWJh
c2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyhjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBy
ZXR1cm4gIXNjaGVtZS5pc051bGwoKSAmJiBzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0lu
UHJpdmF0ZUJyb3dzaW5nKCkuY29udGFpbnMoc2NoZW1lKTsKLX0KLQotdm9pZCBTY2hlbWVSZWdp
c3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYgc2NoZW1l
KQotewotICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBDT1JT
RW5hYmxlZFNjaGVtZXMoKS5hZGQoc2NoZW1lKTsKLX0KLQotYm9vbCBTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKQot
ewotICAgIHJldHVybiAhc2NoZW1lLmlzTnVsbCgpICYmIENPUlNFbmFibGVkU2NoZW1lcygpLmNv
bnRhaW5zKHNjaGVtZSk7Ci19Ci0KLXZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2No
ZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJiBzY2hlbWUp
Ci17Ci0gICAgaWYgKHNjaGVtZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTG9j
a2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOwotICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeUJ5cGFzc2luZ1NjaGVtZXMoKS5hZGQoc2NoZW1lKTsKLX0KLQotdm9pZCBTY2hlbWVS
ZWdpc3RyeTo6cmVtb3ZlVVJMU2NoZW1lUmVnaXN0ZXJlZEFzQnlwYXNzaW5nQ29udGVudFNlY3Vy
aXR5UG9saWN5KGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmIChzY2hlbWUuaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVn
aXN0cnlMb2NrKTsKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lCeXBhc3NpbmdTY2hlbWVzKCku
cmVtb3ZlKHNjaGVtZSk7Ci19Ci0KLWJvb2wgU2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5
cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBp
ZiAoc2NoZW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBMb2NrZXI8
TG9jaz4gbG9ja2VyKHNjaGVtZVJlZ2lzdHJ5TG9jayk7Ci0gICAgcmV0dXJuIENvbnRlbnRTZWN1
cml0eVBvbGljeUJ5cGFzc2luZ1NjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwotfQotCi12b2lk
IFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQWx3YXlzUmV2YWxpZGF0ZWQoY29u
c3QgU3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgaWYgKHNjaGVtZS5pc051bGwoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGFsd2F5c1JldmFsaWRhdGVkU2NoZW1lcygpLmFkZChzY2hlbWUpOwotfQot
Ci1ib29sIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRBbHdheXNSZXZhbGlkYXRlVVJMU2NoZW1lKGNv
bnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIHJldHVybiAhc2NoZW1lLmlzTnVsbCgpICYmIGFs
d2F5c1JldmFsaWRhdGVkU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7Ci19Ci0KLXZvaWQgU2No
ZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBhcnRpdGlvbmVkKGNvbnN0IFN0
cmluZyYgc2NoZW1lKQotewotICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlMb2NrKTsKLSAgICBj
YWNoZVBhcnRpdGlvbmluZ1NjaGVtZXMoKS5hZGQoc2NoZW1lKTsKLX0KLQotYm9vbCBTY2hlbWVS
ZWdpc3RyeTo6c2hvdWxkUGFydGl0aW9uQ2FjaGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBz
Y2hlbWUpCi17Ci0gICAgaWYgKHNjaGVtZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihzY2hlbWVSZWdpc3RyeUxvY2spOwotICAgIHJl
dHVybiBjYWNoZVBhcnRpdGlvbmluZ1NjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwotfQotCi12
b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFu
ZGxlKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlM
b2NrKTsKLSAgICBzZXJ2aWNlV29ya2VyU2NoZW1lcygpLmFkZChzY2hlbWUpOwotfQotCi1ib29s
IFNjaGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZShjb25zdCBT
dHJpbmcmIHNjaGVtZSkKLXsKLSAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBpZiAoc2NoZW1lLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgi
aHR0cCJfcykpIHsKLSAgICAgICAgaWYgKHNjaGVtZS5sZW5ndGgoKSA9PSA0KQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChzY2hlbWUubGVuZ3RoKCkgPT0gNSAmJiBpc0FT
Q0lJQWxwaGFDYXNlbGVzc0VxdWFsKHNjaGVtZVs0XSwgJ3MnKSkKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoc2NoZW1lUmVnaXN0cnlM
b2NrKTsKLSAgICByZXR1cm4gc2VydmljZVdvcmtlclNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUp
OwotfQotCi1ib29sIFNjaGVtZVJlZ2lzdHJ5Ojppc1NlcnZpY2VXb3JrZXJDb250YWluZXJDdXN0
b21TY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tl
cihzY2hlbWVSZWdpc3RyeUxvY2spOwotICAgIHJldHVybiAhc2NoZW1lLmlzTnVsbCgpICYmIHNl
cnZpY2VXb3JrZXJTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKTsKLX0KLQotYm9vbCBTY2hlbWVS
ZWdpc3RyeTo6aXNVc2VyRXh0ZW5zaW9uU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoc2NoZW1lID09ICJzYWZhcmktZXh0ZW5zaW9uIikK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzY2hlbWUpOwot
I2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFNjaGVtZVJlZ2lzdHJ5Ojppc0J1
aWx0aW5TY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgcmV0dXJuICFzY2hlbWUu
aXNOdWxsKCkgJiYgKGFsbEJ1aWx0aW5TY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKSB8fCBXVEY6
OlVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKHNjaGVtZSkpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y2hlbWVSZWdpc3RyeS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0x
ICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmgJKHJldmlzaW9uIDI1MDcyMikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmgJKG5vbmV4aXN0ZW50
KQpAQCAtMSwxMDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gRklYTUU6IE1ha2UgSGFzaFNl
dDxTdHJpbmc+Ojpjb250YWlucyhTdHJpbmdWaWV3KSB3b3JrIGFuZCB1c2UgU3RyaW5nVmlld3Mg
aGVyZS4KLXVzaW5nIFVSTFNjaGVtZXNNYXAgPSBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPjsKLQotY2xhc3MgU2NoZW1lUmVnaXN0cnkgewotcHVibGljOgotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbChjb25zdCBT
dHJpbmcmKTsgLy8gVGhyZWFkIHNhZmUuCi0gICAgc3RhdGljIHZvaWQgcmVtb3ZlVVJMU2NoZW1l
UmVnaXN0ZXJlZEFzTG9jYWwoY29uc3QgU3RyaW5nJik7IC8vIFRocmVhZCBzYWZlLgotCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKGNv
bnN0IFN0cmluZyYpOyAvLyBUaHJlYWQgc2FmZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Ym9vbCBpc0J1aWx0aW5TY2hlbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgCi0gICAgLy8gU2VjdXJl
IHNjaGVtZXMgZG8gbm90IHRyaWdnZXIgbWl4ZWQgY29udGVudCB3YXJuaW5ncy4gRm9yIGV4YW1w
bGUsCi0gICAgLy8gaHR0cHMgYW5kIGRhdGEgYXJlIHNlY3VyZSBzY2hlbWVzIGJlY2F1c2UgdGhl
eSBjYW5ub3QgYmUgY29ycnVwdGVkIGJ5Ci0gICAgLy8gYWN0aXZlIG5ldHdvcmsgYXR0YWNrZXJz
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1
cmUoY29uc3QgU3RyaW5nJik7IC8vIFRocmVhZCBzYWZlLgotICAgIHN0YXRpYyBib29sIHNob3Vs
ZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUoY29uc3QgU3RyaW5nJik7IC8vIFRocmVhZCBzYWZlLgot
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNj
ZXNzKGNvbnN0IFN0cmluZyYpOyAvLyBUaHJlYWQgc2FmZS4KLSAgICBzdGF0aWMgYm9vbCBzaG91
bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJik7IC8vIFRocmVhZCBzYWZl
LgotCi0gICAgLy8gRGlzcGxheS1pc29sYXRlZCBzY2hlbWVzIGNhbiBvbmx5IGJlIGRpc3BsYXll
ZCAoaW4gdGhlIHNlbnNlIG9mCi0gICAgLy8gU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkpIGJ5
IGRvY3VtZW50cyBmcm9tIHRoZSBzYW1lIHNjaGVtZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKGNvbnN0IFN0cmluZyYp
OyAvLyBUaHJlYWQgc2FmZS4KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVtZUFz
RGlzcGxheUlzb2xhdGVkKGNvbnN0IFN0cmluZyYpOyAvLyBUaHJlYWQgc2FmZS4KLQotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50
KGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZExv
YWRVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2No
ZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgYm9vbCBpc0Rv
bWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJik7Ci0KLSAg
ICAvLyBTdWNoIHNjaGVtZXMgc2hvdWxkIGRlbGVnYXRlIHRvIFNlY3VyaXR5T3JpZ2luOjpjYW5S
ZXF1ZXN0IGZvciBhbnkgVVJMCi0gICAgLy8gcGFzc2VkIHRvIFNlY3VyaXR5T3JpZ2luOjpjYW5E
aXNwbGF5LgotICAgIHN0YXRpYyBib29sIGNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0
IFN0cmluZyYgc2NoZW1lKTsgLy8gVGhyZWFkIHNhZmUuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKTsgLy8gVGhyZWFkIHNhZmUuCi0KLSAgICAvLyBTY2hlbWVzIGFnYWluc3Qgd2hp
Y2ggamF2YXNjcmlwdDogVVJMcyBzaG91bGQgbm90IGJlIGFsbG93ZWQgdG8gcnVuIChzdG9wCi0g
ICAgLy8gYm9va21hcmtsZXRzIGZyb20gcnVubmluZyBvbiBzZW5zaXRpdmUgcGFnZXMpLiAKLSAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzTm90QWxsb3dpbmdKYXZhc2NyaXB0VVJM
cyhjb25zdCBTdHJpbmcmIHNjaGVtZSk7Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRVUkxT
Y2hlbWVBc05vdEFsbG93aW5nSmF2YXNjcmlwdFVSTHMoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwot
Ci0gICAgLy8gTGV0IHNvbWUgc2NoZW1lcyBvcHQtb3V0IG9mIFByaXZhdGUgQnJvd3NpbmcncyBk
ZWZhdWx0IGJlaGF2aW9yIG9mIHByb2hpYml0aW5nIHJlYWQvd3JpdGUKLSAgICAvLyBhY2Nlc3Mg
dG8gTG9jYWwgU3RvcmFnZSBhbmQgRGF0YWJhc2VzLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRl
QnJvd3NpbmcoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwotICAgIHN0YXRpYyBib29sIGFsbG93c0Rh
dGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwotCi0g
ICAgLy8gQWxsb3cgbm9uLUhUVFAgc2NoZW1lcyB0byBiZSByZWdpc3RlcmVkIHRvIGFsbG93IENP
UlMgcmVxdWVzdHMuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxT
Y2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdFVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoY29uc3Qg
U3RyaW5nJiBzY2hlbWUpOwotCi0gICAgLy8gQWxsb3cgcmVzb3VyY2VzIGZyb20gc29tZSBzY2hl
bWVzIHRvIGxvYWQgb24gYSBwYWdlLCByZWdhcmRsZXNzIG9mIGl0cwotICAgIC8vIENvbnRlbnQg
U2VjdXJpdHkgUG9saWN5LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
VVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJiBz
Y2hlbWUpOyAvLyBUaHJlYWQgc2FmZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBy
ZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3ko
Y29uc3QgU3RyaW5nJiBzY2hlbWUpOyAvLyBUaHJlYWQgc2FmZS4KLSAgICBzdGF0aWMgYm9vbCBz
Y2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJiBzY2hl
bWUpOyAvLyBUaHJlYWQgc2FmZS4KLQotICAgIC8vIFNjaGVtZXMgd2hvc2UgcmVzcG9uc2VzIHNo
b3VsZCBhbHdheXMgYmUgcmV2YWxpZGF0ZWQuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZv
aWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0Fsd2F5c1JldmFsaWRhdGVkKGNvbnN0IFN0cmluZyYpOwot
ICAgIHN0YXRpYyBib29sIHNob3VsZEFsd2F5c1JldmFsaWRhdGVVUkxTY2hlbWUoY29uc3QgU3Ry
aW5nJik7Ci0KLSAgICAvLyBTY2hlbWVzIHdob3NlIHJlcXVlc3RzIHNob3VsZCBiZSBwYXJ0aXRp
b25lZCBpbiB0aGUgY2FjaGUKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3Rl
clVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRpb25lZChjb25zdCBTdHJpbmcmIHNjaGVtZSk7IC8vIFRo
cmVhZCBzYWZlLgotICAgIHN0YXRpYyBib29sIHNob3VsZFBhcnRpdGlvbkNhY2hlRm9yVVJMU2No
ZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsgLy8gVGhyZWFkIHNhZmUuCi0KLSAgICAvLyBTY2hl
bWVzIGJlc2lkZXMgaHR0cChzKSB0aGF0IHNlcnZpY2Ugd29ya2VycyBhcmUgYWxsb3dlZCB0byBo
YW5kbGUKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZVNl
cnZpY2VXb3JrZXJzQ2FuSGFuZGxlKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsgLy8gVGhyZWFkIHNh
ZmUuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY2FuU2VydmljZVdvcmtlcnNIYW5k
bGVVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOyAvLyBUaHJlYWQgc2FmZS4KLSAgICBz
dGF0aWMgYm9vbCBpc1NlcnZpY2VXb3JrZXJDb250YWluZXJDdXN0b21TY2hlbWUoY29uc3QgU3Ry
aW5nJiBzY2hlbWUpOyAvLyBUaHJlYWQgc2FmZS4KLQotICAgIHN0YXRpYyBib29sIGlzVXNlckV4
dGVuc2lvblNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y2hlbWVSZWdpc3RyeS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSAr
MCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCShyZXZpc2lvbiAyNTA3MjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw2IEBACiAKICNpbXBvcnQgIlByZXZpZXdDb252ZXJ0ZXIuaCIKICNpbXBv
cnQgIlJlc291cmNlUmVxdWVzdC5oIgotI2ltcG9ydCAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbXBv
cnQgPHBhbC9pb3MvUXVpY2tMb29rU29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
TlNGaWxlTWFuYWdlclNQSS5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAkocmV2aXNpb24gMjUwNzIyKQorKysgU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBA
QAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUg
IkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNj
aGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJT
dG9yYWdlQXJlYS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUeXBlLmgiCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAyNTA3MjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsNyBA
QAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRlcm5hbFNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiSlNJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJMZWdhY3lTY2hlbWVSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRl
Z3kuaCIKICNpbmNsdWRlICJNYWxsb2NTdGF0aXN0aWNzLmgiCkBAIC0xNTEsNyArMTUyLDYgQEAK
ICNpbmNsdWRlICJTVkdQYXRoU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1l
bnQuaCIKICNpbmNsdWRlICJTV0NsaWVudENvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJTY2hlbWVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yLmgiCkBAIC0zMTcyLDEyICszMTcyLDEyIEBAIHZvaWQgSW50ZXJuYWxzOjpz
ZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2kKIAogdm9pZCBJbnRlcm5hbHM6OnJlZ2lzdGVyVVJMU2No
ZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJiBzY2hlbWUp
CiB7Ci0gICAgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250
ZW50U2VjdXJpdHlQb2xpY3koc2NoZW1lKTsKKyAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVn
aXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShzY2hlbWUpOwog
fQogCiB2b2lkIEludGVybmFsczo6cmVtb3ZlVVJMU2NoZW1lUmVnaXN0ZXJlZEFzQnlwYXNzaW5n
Q29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewotICAgIFNjaGVt
ZVJlZ2lzdHJ5OjpyZW1vdmVVUkxTY2hlbWVSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2Vj
dXJpdHlQb2xpY3koc2NoZW1lKTsKKyAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVtb3ZlVVJM
U2NoZW1lUmVnaXN0ZXJlZEFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KHNjaGVtZSk7
CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpyZWdpc3RlckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodW5z
aWduZWQgc2hvcnQgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAJKHJldmlzaW9uIDI1MDcyMikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEg
KzM1LDExIEBACiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VE
ZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIgorI2lu
Y2x1ZGUgIkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdmlnYXRvckJhc2UuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCi0jaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKCFTY2hlbWVSZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxT
Y2hlbWUoam9iRGF0YS5zY3JpcHRVUkwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5n
KCkpKSB7CisgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNI
YW5kbGVVUkxTY2hlbWUoam9iRGF0YS5zY3JpcHRVUkwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhv
dXRDb3B5aW5nKCkpKSB7CiAgICAgICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKCJhZGRSZWdpc3RyYXRpb246IEludmFsaWQgc2NyaXB0VVJMIHNjaGVtZSBpcyBub3Qg
SFRUUCBvciBIVFRQUyIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAic2VydmljZVdvcmtlci5yZWdpc3RlcigpIG11c3QgYmUgY2FsbGVkIHdpdGggYSBz
Y3JpcHQgVVJMIHdob3NlIHByb3RvY29sIGlzIGVpdGhlciBIVFRQIG9yIEhUVFBTIl9zIH0pOwog
ICAgICAgICByZXR1cm47CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjphZGRSZWdpc3RyYQogICAgIGVsc2UKICAgICAgICAgam9iRGF0YS5zY29wZVVSTCA9
IFVSTChqb2JEYXRhLnNjcmlwdFVSTCwgIi4vIik7CiAKLSAgICBpZiAoIWpvYkRhdGEuc2NvcGVV
UkwuaXNOdWxsKCkgJiYgIVNjaGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVS
TFNjaGVtZShqb2JEYXRhLnNjb3BlVVJMLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWlu
ZygpKSkgeworICAgIGlmICgham9iRGF0YS5zY29wZVVSTC5pc051bGwoKSAmJiAhTGVnYWN5U2No
ZW1lUmVnaXN0cnk6OmNhblNlcnZpY2VXb3JrZXJzSGFuZGxlVVJMU2NoZW1lKGpvYkRhdGEuc2Nv
cGVVUkwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKSB7CiAgICAgICAgIENP
TlRBSU5FUl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJhZGRSZWdpc3RyYXRpb246IHNj
b3BlVVJMIHNjaGVtZSBpcyBub3QgSFRUUCBvciBIVFRQUyIpOwogICAgICAgICBwcm9taXNlLT5y
ZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiU2NvcGUgVVJMIHByb3ZpZGVkIHRvIHNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoKSBtdXN0IGJlIGVpdGhlciBIVFRQIG9yIEhUVFBTIl9zIH0pOwog
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclByb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAkocmV2aXNpb24gMjUwNzIyKQor
KysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkxlZ2FjeVNjaGVtZVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiU1dDbGllbnRDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiU2No
ZW1lUmVnaXN0cnkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCw3ICs2NCw3IEBA
IHZvaWQgU2VydmljZVdvcmtlclByb3ZpZGVyOjpyZWdpc3RlclNlcnYKIHsKICAgICBzZXRNYXlI
YXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKCk7CiAgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6
IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgewotICAgICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6
OmNhblNlcnZpY2VXb3JrZXJzSGFuZGxlVVJMU2NoZW1lKGRvY3VtZW50LT51cmwoKS5wcm90b2Nv
bCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCisgICAgICAgIGlmIChMZWdhY3lTY2hlbWVS
ZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hlbWUoZG9jdW1lbnQtPnVybCgp
LnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgICAgIGRvY3Vt
ZW50LT5zZXRTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigmc2VydmljZVdvcmtlckNvbm5lY3Rpb24o
KSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlckpvYlF1ZXVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCShyZXZpc2lvbiAyNTA3MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVl
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTAgQEAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCisjaW5jbHVkZSAiTGVn
YWN5U2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTV1NlcnZlci5oIgogI2luY2x1ZGUgIlNX
U2VydmVyUmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIKLSNpbmNs
dWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGEuaCIKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFNXU2VydmVySm9i
UXVldWU6OnJ1blJlZ2lzdGVySm9iKGNvCiB7CiAgICAgQVNTRVJUKGpvYi50eXBlID09IFNlcnZp
Y2VXb3JrZXJKb2JUeXBlOjpSZWdpc3Rlcik7CiAKLSAgICBpZiAoIXNob3VsZFRyZWF0QXNQb3Rl
bnRpYWxseVRydXN0d29ydGh5KGpvYi5zY3JpcHRVUkwpICYmICFTY2hlbWVSZWdpc3RyeTo6aXNT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyQ3VzdG9tU2NoZW1lKGpvYi5zY3JpcHRVUkwucHJvdG9jb2wo
KS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQorICAgIGlmICghc2hvdWxkVHJlYXRBc1BvdGVu
dGlhbGx5VHJ1c3R3b3J0aHkoam9iLnNjcmlwdFVSTCkgJiYgIUxlZ2FjeVNjaGVtZVJlZ2lzdHJ5
Ojppc1NlcnZpY2VXb3JrZXJDb250YWluZXJDdXN0b21TY2hlbWUoam9iLnNjcmlwdFVSTC5wcm90
b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgIHJldHVybiByZWplY3RD
dXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVycm9yLCAiU2NyaXB0IFVSTCBpcyBu
b3QgcG90ZW50aWFsbHkgdHJ1c3R3b3J0aHkiX3MgfSk7CiAKICAgICAvLyBJZiB0aGUgb3JpZ2lu
IG9mIGpvYidzIHNjcmlwdCB1cmwgaXMgbm90IGpvYidzIHJlZmVycmVyJ3Mgb3JpZ2luLCB0aGVu
OgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDcyNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTktMTAtMDQgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW5hbWUgU2No
ZW1lUmVnaXN0cnkgdG8gTGVnYWN5U2NoZW1lUmVnaXN0cnkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU4NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpkb2VzTm90
TmVlZENPUlNDaGVjayBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxT
Y2hlbWVBc1NlY3VyZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpy
ZWdpc3RlclVSTFNjaGVtZUFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2Nh
bCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclVSTFNj
aGVtZUFzTm9BY2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Nh
bkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQXV4aWxp
YXJ5UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3M6OnJlZ2lz
dGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoK1tXS1dlYlZpZXcgaGFu
ZGxlc1VSTFNjaGVtZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2Vj
dXJpdHlNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHJlZ2lzdGVyU2VjdXJpdHlQb2xpY3lGb3JVUklT
Y2hlbWUpOgorICAgICAgICAoY2hlY2tTZWN1cml0eVBvbGljeUZvclVSSVNjaGVtZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Qcm92aWRlcjo6d2ViVmlzaWJsZVBsdWdpbkluZm8p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmhhbmRsZUZl
dGNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmNhbkhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVy
VVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3kg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXREb21haW5SZWxheGF0aW9u
Rm9yYmlkZGVuRm9yVVJMU2NoZW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JT
RW5hYmxlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyVVJM
U2NoZW1lQXNBbHdheXNSZXZhbGlkYXRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBhcnRpdGlvbmVkIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5
SWZDYW5SZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZUFyZWFJbXBsLmNwcDoKKwogMjAxOS0xMC0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFNpbXBsaWZ5IHNhbmRib3ggZW5hYmxpbmcg
bWFjcm9zCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hl
Y2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENoZWNrZXIuY3BwCShyZXZpc2lvbiAyNTA3MjIpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9TY2hlbWVSZWdpc3RyeS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5U2NoZW1lUmVn
aXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogI2RlZmluZSBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihtX3Nlc3Npb25JRC5pc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0xvYWRDaGVja2VyOjoiIGZt
dCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKQEAgLTQzNiw3ICs0MzYsNyBAQCBib29sIE5ldHdvcmtM
b2FkQ2hlY2tlcjo6ZG9lc05vdE5lZWRDT1JTCiAgICAgaWYgKG1fb3B0aW9ucy5tb2RlID09IEZl
dGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzIHx8IG1fb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9u
czo6TW9kZTo6TmF2aWdhdGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFTY2hl
bWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybC5wcm90b2Nv
bCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCisgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdp
c3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybC5wcm90b2NvbCgpLnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0
dXJuIG1faXNTYW1lT3JpZ2luUmVxdWVzdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyNTA3MjIpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rp
YWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lTY2hlbWVS
ZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9nSW5pdGlhbGl6YXRpb24uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtTdGF0ZU5vdGlmaWVyLmg+CkBAIC03Niw3ICs3Nyw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVF1b3RhTWFuYWdlci5o
PgogI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CkBAIC0yMjA2LDM3ICsyMjA2LDM3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlU3RvcmFnZVBhcmEKIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZShjb25zdCBTdHJpbmcmIHNjaGVtZSkgY29u
c3QKIHsKLSAgICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZShzY2hl
bWUpOworICAgIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJl
KHNjaGVtZSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNC
eXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5nJiBzY2hlbWUpIGNvbnN0
CiB7Ci0gICAgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250
ZW50U2VjdXJpdHlQb2xpY3koc2NoZW1lKTsKKyAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVn
aXN0ZXJVUkxTY2hlbWVBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShzY2hlbWUpOwog
fQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzTG9jYWwoY29uc3Qg
U3RyaW5nJiBzY2hlbWUpIGNvbnN0CiB7Ci0gICAgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJM
U2NoZW1lQXNMb2NhbChzY2hlbWUpOworICAgIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3Rl
clVSTFNjaGVtZUFzTG9jYWwoc2NoZW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVn
aXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYgc2NoZW1lKSBjb25zdAogewot
ICAgIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3Moc2NoZW1lKTsK
KyAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKHNj
aGVtZSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNw
bGF5SXNvbGF0ZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpIGNvbnN0CiB7Ci0gICAgU2NoZW1lUmVn
aXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQoc2NoZW1lKTsKKyAgICBM
ZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChz
Y2hlbWUpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzQ09S
U0VuYWJsZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpIGNvbnN0CiB7Ci0gICAgU2NoZW1lUmVnaXN0
cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChzY2hlbWUpOworICAgIExlZ2FjeVNj
aGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoc2NoZW1lKTsKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5
SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc2NoZW1lKSBjb25zdAogewotICAgIFNjaGVtZVJl
Z2lzdHJ5OjpyZWdpc3RlckFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Qoc2NoZW1lKTsKKyAg
ICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1
ZXN0KHNjaGVtZSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZFN5bmNBbGxDb29raWVz
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuY3BwCShyZXZp
c2lvbiAyNTA3MjIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lTY2hl
bWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KIAogI2lmICFPUyhXSU5E
T1dTKQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzczo6c2h1dERvd24o
KQogCiB2b2lkIEF1eGlsaWFyeVByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtl
cnNDYW5IYW5kbGUoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpIGNvbnN0CiB7Ci0gICAgV2ViQ29y
ZTo6U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5k
bGUodXJsU2NoZW1lKTsKKyAgICBXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0
ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZSh1cmxTY2hlbWUpOwogfQogCiAjaWYg
IVBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyNTA3MjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsMTEg
KzEwNSwxMSBAQAogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSlNET01CaW5kaW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxp
bmcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTGVnYWN5U2NoZW1lUmVnaXN0cnkuaD4KICNpbXBvcnQg
PFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNj
cmVlbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHJpbmdVdGlsaXRp
ZXMuaD4KQEAgLTQ2NTEsNyArNDY1MSw3IEBAIC0gKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVy
bFNjaGVtZUhhbmQKIAogKyAoQk9PTCloYW5kbGVzVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNj
aGVtZQogewotICAgIHJldHVybiBXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6aXNCdWlsdGluU2No
ZW1lKHVybFNjaGVtZSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5
Ojppc0J1aWx0aW5TY2hlbWUodXJsU2NoZW1lKTsKIH0KIAogLSAoT3B0aW9uYWw8Qk9PTD4pX3Jl
c29sdXRpb25Gb3JTaGFyZVNoZWV0SW1tZWRpYXRlQ29tcGxldGlvbkZvclRlc3RpbmcKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5TWFuYWdlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2VjdXJpdHlNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjUwNzIyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgIldlYktpdFNlY3VyaXR5TWFuYWdlclByaXZh
dGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvTGVnYWN5U2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvZ2xp
Yi9XVEZHVHlwZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtNzIsMzIgKzcyLDMy
IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyU2VjdXJpdHlQb2xpY3lGb3JVUkkKICAgICBTdHJpbmcg
dXJsU2NoZW1lID0gU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpOwogICAgIGF1dG8mIHByb2Nlc3NQ
b29sID0gd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKG1hbmFnZXItPnByaXYtPndlYkNv
bnRleHQpOwogCi0gICAgLy8gV2Uga2VlcCB0aGUgV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnkgb2Yg
dGhlIFVJIHByb2Nlc3MgaW4gc3luYyB3aXRoIHRoZQorICAgIC8vIFdlIGtlZXAgdGhlIFdlYkNv
cmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5IG9mIHRoZSBVSSBwcm9jZXNzIGluIHN5bmMgd2l0aCB0
aGUKICAgICAvLyB3ZWIgcHJvY2VzcyBvbmUsIHNvIHRoYXQgd2UgY2FuIHJldHVybiB0aGUgU2Vj
dXJpdHlQb2xpY3kgZm9yCiAgICAgLy8gYSBnaXZlbiBVUkkgc2NoZW1lIHN5bmNocm9ub3VzbHkg
d2l0aG91dCBibG9ja2luZy4KICAgICBzd2l0Y2ggKHBvbGljeSkgewogICAgIGNhc2UgU2VjdXJp
dHlQb2xpY3lMb2NhbDoKLSAgICAgICAgV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVy
VVJMU2NoZW1lQXNMb2NhbCh1cmxTY2hlbWUpOworICAgICAgICBXZWJDb3JlOjpMZWdhY3lTY2hl
bWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKHVybFNjaGVtZSk7CiAgICAgICAg
IHByb2Nlc3NQb29sLnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbCh1cmxTY2hlbWUpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFNlY3VyaXR5UG9saWN5Tm9BY2Nlc3M6Ci0gICAgICAgIFdlYkNv
cmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3ModXJsU2NoZW1l
KTsKKyAgICAgICAgV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2No
ZW1lQXNOb0FjY2Vzcyh1cmxTY2hlbWUpOwogICAgICAgICBwcm9jZXNzUG9vbC5yZWdpc3RlclVS
TFNjaGVtZUFzTm9BY2Nlc3ModXJsU2NoZW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
ZWN1cml0eVBvbGljeURpc3BsYXlJc29sYXRlZDoKLSAgICAgICAgV2ViQ29yZTo6U2NoZW1lUmVn
aXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQodXJsU2NoZW1lKTsKKyAg
ICAgICAgV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNE
aXNwbGF5SXNvbGF0ZWQodXJsU2NoZW1lKTsKICAgICAgICAgcHJvY2Vzc1Bvb2wucmVnaXN0ZXJV
UkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZCh1cmxTY2hlbWUpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFNlY3VyaXR5UG9saWN5U2VjdXJlOgotICAgICAgICBXZWJDb3JlOjpTY2hlbWVSZWdp
c3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZSh1cmxTY2hlbWUpOworICAgICAgICBXZWJD
b3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZSh1cmxT
Y2hlbWUpOwogICAgICAgICBwcm9jZXNzUG9vbC5yZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKHVy
bFNjaGVtZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2VjdXJpdHlQb2xpY3lDT1JTRW5h
YmxlZDoKLSAgICAgICAgV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1l
QXNDT1JTRW5hYmxlZCh1cmxTY2hlbWUpOworICAgICAgICBXZWJDb3JlOjpMZWdhY3lTY2hlbWVS
ZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybFNjaGVtZSk7CiAgICAg
ICAgIHByb2Nlc3NQb29sLnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZCh1cmxTY2hlbWUp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlY3VyaXR5UG9saWN5RW1wdHlEb2N1bWVudDoK
LSAgICAgICAgV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0
eURvY3VtZW50KHVybFNjaGVtZSk7CisgICAgICAgIFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lz
dHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudCh1cmxTY2hlbWUpOwogICAgICAg
ICBwcm9jZXNzUG9vbC5yZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudCh1cmxTY2hlbWUp
OwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMDksMTcgKzEwOSwxNyBAQCBzdGF0aWMgYm9v
bCBjaGVja1NlY3VyaXR5UG9saWN5Rm9yVVJJU2NoCiAKICAgICBzd2l0Y2ggKHBvbGljeSkgewog
ICAgIGNhc2UgU2VjdXJpdHlQb2xpY3lMb2NhbDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNj
aGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwodXJsU2NoZW1lKTsKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVS
TFNjaGVtZUFzTG9jYWwodXJsU2NoZW1lKTsKICAgICBjYXNlIFNlY3VyaXR5UG9saWN5Tm9BY2Nl
c3M6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRV
UkxTY2hlbWVBc05vQWNjZXNzKHVybFNjaGVtZSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpM
ZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc05vQWNjZXNzKHVybFNj
aGVtZSk7CiAgICAgY2FzZSBTZWN1cml0eVBvbGljeURpc3BsYXlJc29sYXRlZDoKLSAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzRGlz
cGxheUlzb2xhdGVkKHVybFNjaGVtZSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpMZWdhY3lT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZCh1cmxT
Y2hlbWUpOwogICAgIGNhc2UgU2VjdXJpdHlQb2xpY3lTZWN1cmU6Ci0gICAgICAgIHJldHVybiBX
ZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc1NlY3VyZSh1cmxT
Y2hlbWUpOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNo
b3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUodXJsU2NoZW1lKTsKICAgICBjYXNlIFNlY3VyaXR5
UG9saWN5Q09SU0VuYWJsZWQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpTY2hlbWVSZWdpc3Ry
eTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHVybFNjaGVtZSk7CisgICAgICAg
IHJldHVybiBXZWJDb3JlOjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hl
bWVBc0NPUlNFbmFibGVkKHVybFNjaGVtZSk7CiAgICAgY2FzZSBTZWN1cml0eVBvbGljeUVtcHR5
RG9jdW1lbnQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6c2hvdWxk
TG9hZFVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudCh1cmxTY2hlbWUpOworICAgICAgICByZXR1cm4g
V2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZExvYWRVUkxTY2hlbWVBc0VtcHR5
RG9jdW1lbnQodXJsU2NoZW1lKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNTA3MjIpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMCw2ICsxMDAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR2x5cGhQYWdlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0RP
TVdpbmRvdy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5U2NoZW1lUmVnaXN0cnkuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZW1vcnlS
ZWxlYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydC5oPgpAQCAtMTE1LDcgKzEx
Niw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJl
Z2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXR0aW5ncy5oPgpAQCAtNTMyLDU3ICs1MzIsNTcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwcmV3YXJt
V2l0aERvbWFpbkluZm9ybQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNF
bXB0eURvY3VtZW50KGNvbnN0IFN0cmluZyYgdXJsU2NoZW1lKQogewotICAgIFNjaGVtZVJlZ2lz
dHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudCh1cmxTY2hlbWUpOworICAgIExl
Z2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudCh1cmxT
Y2hlbWUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUo
Y29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpIGNvbnN0CiB7Ci0gICAgU2NoZW1lUmVnaXN0cnk6OnJl
Z2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUodXJsU2NoZW1lKTsKKyAgICBMZWdhY3lTY2hlbWVSZWdp
c3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZSh1cmxTY2hlbWUpOwogfQogCiB2b2lkIFdl
YlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xp
Y3koY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpIGNvbnN0CiB7Ci0gICAgU2NoZW1lUmVnaXN0cnk6
OnJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3kodXJsU2No
ZW1lKTsKKyAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0J5cGFz
c2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmxTY2hlbWUpOwogfQogCiB2b2lkIFdlYlByb2Nl
c3M6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5n
JiB1cmxTY2hlbWUpIGNvbnN0CiB7Ci0gICAgU2NoZW1lUmVnaXN0cnk6OnNldERvbWFpblJlbGF4
YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUodHJ1ZSwgdXJsU2NoZW1lKTsKKyAgICBMZWdhY3lT
Y2hlbWVSZWdpc3RyeTo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSh0
cnVlLCB1cmxTY2hlbWUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1l
QXNMb2NhbChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkgY29uc3QKIHsKLSAgICBTY2hlbWVSZWdp
c3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKHVybFNjaGVtZSk7CisgICAgTGVnYWN5U2No
ZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbCh1cmxTY2hlbWUpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcm
IHVybFNjaGVtZSkgY29uc3QKIHsKLSAgICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hl
bWVBc05vQWNjZXNzKHVybFNjaGVtZSk7CisgICAgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lz
dGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyh1cmxTY2hlbWUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6
OnJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQoY29uc3QgU3RyaW5nJiB1cmxTY2hl
bWUpIGNvbnN0CiB7Ci0gICAgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNw
bGF5SXNvbGF0ZWQodXJsU2NoZW1lKTsKKyAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0
ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZCh1cmxTY2hlbWUpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmIHVybFNj
aGVtZSkgY29uc3QKIHsKLSAgICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NP
UlNFbmFibGVkKHVybFNjaGVtZSk7CisgICAgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVy
VVJMU2NoZW1lQXNDT1JTRW5hYmxlZCh1cmxTY2hlbWUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6
OnJlZ2lzdGVyVVJMU2NoZW1lQXNBbHdheXNSZXZhbGlkYXRlZChjb25zdCBTdHJpbmcmIHVybFNj
aGVtZSkgY29uc3QKIHsKLSAgICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Fs
d2F5c1JldmFsaWRhdGVkKHVybFNjaGVtZSk7CisgICAgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJl
Z2lzdGVyVVJMU2NoZW1lQXNBbHdheXNSZXZhbGlkYXRlZCh1cmxTY2hlbWUpOwogfQogCiB2b2lk
IFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBhcnRpdGlvbmVkKGNvbnN0IFN0
cmluZyYgdXJsU2NoZW1lKSBjb25zdAogewotICAgIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVS
TFNjaGVtZUFzQ2FjaGVQYXJ0aXRpb25lZCh1cmxTY2hlbWUpOworICAgIExlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQ2FjaGVQYXJ0aXRpb25lZCh1cmxTY2hlbWUpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlm
Q2FuUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkgY29uc3QKIHsKLSAgICBTY2hlbWVS
ZWdpc3RyeTo6cmVnaXN0ZXJBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KHVybFNjaGVtZSk7
CisgICAgTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2Fu
UmVxdWVzdCh1cmxTY2hlbWUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnNldERlZmF1bHRSZXF1
ZXN0VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Q
cm92aWRlci5jcHAJKHJldmlzaW9uIDI1MDcyMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDggKzM0LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1YmZyYW1lTG9hZGVyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtMTI2LDcgKzEyNiw3IEBAIFZl
Y3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBXZWJQbHVnaW5JbmYKICAgICB9KTsKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNMb2NhbCh1cmwucHJvdG9jb2woKS50b1N0cmluZygpKSkKKyAgICBpZiAoTGVnYWN5U2NoZW1l
UmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKS50b1N0
cmluZygpKSkKICAgICAgICAgcmV0dXJuIHBsdWdpbnM7CiAKICAgICBmb3IgKGludDMyX3QgaSA9
IHBsdWdpbnMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclBy
b3ZpZGVyLmNwcAkocmV2aXNpb24gMjUwNzIyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkUmVzb3VyY2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29k
ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29y
a2VySm9iLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc5LDcgKzc5
LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZEhhbmRsZUZldGNoKGNvbgogCiB2b2lkIFdl
YlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6aGFuZGxlRmV0Y2goUmVzb3VyY2VMb2FkZXImIGxvYWRl
ciwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFTY2hl
bWVSZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hlbWUobG9hZGVyLnJlcXVl
c3QoKS51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkgfHwgIXNob3Vs
ZEhhbmRsZUZldGNoKGxvYWRlci5vcHRpb25zKCkpKSB7CisgICAgaWYgKCFMZWdhY3lTY2hlbWVS
ZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hlbWUobG9hZGVyLnJlcXVlc3Qo
KS51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkgfHwgIXNob3VsZEhh
bmRsZUZldGNoKGxvYWRlci5vcHRpb25zKCkpKSB7CiAgICAgICAgIGNhbGxiYWNrKFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6UmVzdWx0OjpVbmhhbmRsZWQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHJldmlzaW9uIDI1MDcyMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNiArMTg2LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pT
RE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9j
YWxpemVkU3RyaW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTW91c2VFdmVudC5oPgpAQCAtMjE0LDcgKzIxNSw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TV0NsaWVudENvbm5lY3Rp
b24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TY3JpcHRDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5oPgpA
QCAtNDk2Niw3ICs0OTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpydW5Nb2RhbCgpCiAKIGJvb2wgV2Vi
UGFnZTo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7Ci0gICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRMb2FkVVJMU2NoZW1lQXNF
bXB0eURvY3VtZW50KHJlcXVlc3QudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCkpKQorICAgIGlmIChMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkTG9hZFVSTFNjaGVt
ZUFzRW1wdHlEb2N1bWVudChyZXF1ZXN0LnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0
Q29weWluZygpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAocmVxdWVzdC51cmwo
KS5wcm90b2NvbElzQmxvYigpKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCShyZXZpc2lvbiAyNTA3MjIp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9E
b2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlVHlwZS5oPgpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjUwNzIzKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMTAtMDQg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBS
ZW5hbWUgU2NoZW1lUmVnaXN0cnkgdG8gTGVnYWN5U2NoZW1lUmVnaXN0cnkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjU4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoK1tXZWJWaWV3IF9zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuOmZvclVS
TFNjaGVtZTpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfcmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3Vy
ZTpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfcmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93aW5nRGF0
YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZzpdKToKKyAgICAgICAgKCtbV2ViVmlldyByZWdp
c3RlclVSTFNjaGVtZUFzTG9jYWw6XSk6CisKIDIwMTktMTAtMDQgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBTaW1wbGlmeSBzYW5kYm94IGVu
YWJsaW5nIG1hY3JvcwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkocmV2aXNpb24gMjUwNzIyKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNiArMTczLDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvSlNOb2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU05vdGlmaWNhdGlv
bi5oPgogI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oPgorI2ltcG9y
dCA8V2ViQ29yZS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9MaWJX
ZWJSVENQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CkBAIC0xOTgsNyArMTk5LDYgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3kuaD4KQEAgLTQ3NzcsMTIg
KzQ3NzcsMTIgQEAgLSAodm9pZClzZXRDU1NBbmltYXRpb25zU3VzcGVuZGVkOihCT09MKQogCiAr
ICh2b2lkKV9zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuOihCT09MKWZvcmJpZGRlbiBmb3JV
UkxTY2hlbWU6KE5TU3RyaW5nICopc2NoZW1lCiB7Ci0gICAgV2ViQ29yZTo6U2NoZW1lUmVnaXN0
cnk6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoZm9yYmlkZGVuLCBz
Y2hlbWUpOworICAgIFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpzZXREb21haW5SZWxh
eGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGZvcmJpZGRlbiwgc2NoZW1lKTsKIH0KIAogKyAo
dm9pZClfcmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZTooTlNTdHJpbmcgKilzY2hlbWUKIHsKLSAg
ICBXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZShzY2hl
bWUpOworICAgIFdlYkNvcmU6OkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVt
ZUFzU2VjdXJlKHNjaGVtZSk7CiB9CiAKICsgKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lQXNBbGxv
d2luZ0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nOihOU1N0cmluZyAqKXNjaGVt
ZQpAQCAtNDc5MSw3ICs0NzkxLDcgQEAgKyAodm9pZClfcmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93
aW5nTG9jYQogCiArICh2b2lkKV9yZWdpc3RlclVSTFNjaGVtZUFzQWxsb3dpbmdEYXRhYmFzZUFj
Y2Vzc0luUHJpdmF0ZUJyb3dzaW5nOihOU1N0cmluZyAqKXNjaGVtZQogewotICAgIFdlYkNvcmU6
OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzQWxsb3dpbmdEYXRhYmFzZUFjY2Vz
c0luUHJpdmF0ZUJyb3dzaW5nKHNjaGVtZSk7CisgICAgV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVn
aXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRl
QnJvd3Npbmcoc2NoZW1lKTsKIH0KIAogLSAodm9pZClfc2NhbGVXZWJWaWV3OihmbG9hdClzY2Fs
ZSBhdE9yaWdpbjooTlNQb2ludClvcmlnaW4KQEAgLTU2NzAsNyArNTY3MCw3IEBAICsgKE5TU3Ry
aW5nICopVVJMVGl0bGVGcm9tUGFzdGVib2FyZDooTlMKIAogKyAodm9pZClyZWdpc3RlclVSTFNj
aGVtZUFzTG9jYWw6KE5TU3RyaW5nICopcHJvdG9jb2wKIHsKLSAgICBXZWJDb3JlOjpTY2hlbWVS
ZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKHByb3RvY29sKTsKKyAgICBXZWJDb3Jl
OjpMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKHByb3RvY29s
KTsKIH0KIAogLSAoaWQpX2luaXRXaXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnkgKikgYXJndW1l
bnRzCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTA3MjIpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNiBAQAorMjAxOS0xMC0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBTY2hlbWVSZWdpc3RyeSB0byBMZWdhY3lTY2hl
bWVSZWdpc3RyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAyNTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnJlZ2lzdGVyVVJMU2NoZW1lQXNM
b2NhbCk6CisgICAgICAgIChXZWJWaWV3OjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9y
VVJMU2NoZW1lKToKKyAgICAgICAgKFdlYlZpZXc6OnJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUp
OgorICAgICAgICAoV2ViVmlldzo6cmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93aW5nRGF0YWJhc2VB
Y2Nlc3NJblByaXZhdGVCcm93c2luZyk6CisKIDIwMTktMDktMjcgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQYWdlcyB1c2luZyBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQgZmFpbCB0byBlbnRlciB0aGUgYmFjay9mb3J3YXJkIGNhY2hlCkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMjUwNzIyKQorKysgU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNFbGVtZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDUHJv
dmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Mb2dnaW5nLmg+CkBAIC0xNTEsNyArMTUyLDYgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
cXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3Jp
cHRDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Njcm9sbGJhclRoZW1lLmg+CkBAIC00MjQwLDcgKzQyNDAsNyBAQCBIUkVTVUxU
IFdlYlZpZXc6OnJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhCiAgICAgaWYgKCFzY2hlbWUpCiAgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxT
Y2hlbWVBc0xvY2FsKHRvU3RyaW5nKHNjaGVtZSkpOworICAgIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5
OjpyZWdpc3RlclVSTFNjaGVtZUFzTG9jYWwodG9TdHJpbmcoc2NoZW1lKSk7CiAKICAgICByZXR1
cm4gU19PSzsKIH0KQEAgLTczMjcsMTMgKzczMjcsMTMgQEAgSFJFU1VMVCBXZWJWaWV3OjpnZW9s
b2NhdGlvbkRpZEZhaWxXaXRoRQogCiBIUkVTVUxUIFdlYlZpZXc6OnNldERvbWFpblJlbGF4YXRp
b25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoQk9PTCBmb3JiaWRkZW4sIF9Jbl8gQlNUUiBzY2hlbWUp
CiB7Ci0gICAgU2NoZW1lUmVnaXN0cnk6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JV
UkxTY2hlbWUoZm9yYmlkZGVuLCB0b1N0cmluZyhzY2hlbWUpKTsKKyAgICBMZWdhY3lTY2hlbWVS
ZWdpc3RyeTo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShmb3JiaWRk
ZW4sIHRvU3RyaW5nKHNjaGVtZSkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdl
YlZpZXc6OnJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUoX0luXyBCU1RSIHNjaGVtZSkKIHsKLSAg
ICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZSh0b1N0cmluZyhzY2hl
bWUpKTsKKyAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3Vy
ZSh0b1N0cmluZyhzY2hlbWUpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNzM0NCw3ICs3
MzQ0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpyZWdpc3RlclVSTFNjaGVtZUFzQWxsbwogCiBIUkVT
VUxUIFdlYlZpZXc6OnJlZ2lzdGVyVVJMU2NoZW1lQXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Q
cml2YXRlQnJvd3NpbmcoX0luXyBCU1RSIHNjaGVtZSkKIHsKLSAgICBTY2hlbWVSZWdpc3RyeTo6
cmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2lu
Zyh0b1N0cmluZyhzY2hlbWUpKTsKKyAgICBMZWdhY3lTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJV
UkxTY2hlbWVBc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyh0b1N0cmlu
ZyhzY2hlbWUpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAo=
</data>
<flag name="review"
          id="395947"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>