<?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>84721</bug_id>
          
          <creation_ts>2012-04-24 07:14:20 -0700</creation_ts>
          <short_desc>Rename CSSStyleApplyProperty files to StyleBuilder.</short_desc>
          <delta_ts>2012-04-24 08:00:10 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexis Menard (darktears)">menard</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>608626</commentid>
    <comment_count>0</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 07:14:20 -0700</bug_when>
    <thetext>Rename CSSStyleApplyProperty files to StyleBuilder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608630</commentid>
    <comment_count>1</comment_count>
      <attachid>138553</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 07:17:14 -0700</bug_when>
    <thetext>Created attachment 138553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608668</commentid>
    <comment_count>2</comment_count>
      <attachid>138553</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 08:00:01 -0700</bug_when>
    <thetext>Comment on attachment 138553
Patch

Clearing flags on attachment: 138553

Committed r115055: &lt;http://trac.webkit.org/changeset/115055&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608669</commentid>
    <comment_count>3</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 08:00:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138553</attachid>
            <date>2012-04-24 07:17:14 -0700</date>
            <delta_ts>2012-04-24 08:00:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84721-20120424111710.patch</filename>
            <type>text/plain</type>
            <size>309427</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQxZTc1NGRiMTM3NWEx
MmUxN2ZiMDExODVjM2JkOGE2NGVhMzA2OS4uNDBjZjhhN2IzMjI5NjdjOTZhNzQ4Y2VhNWZkNTYy
M2QyNjRhNGI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzMyBAQAogMjAxMi0wNC0yNCAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KIAorICAgICAgICBSZW5h
bWUgQ1NTU3R5bGVBcHBseVByb3BlcnR5IGZpbGVzIHRvIFN0eWxlQnVpbGRlci4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NzIxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcjExNTA0MyByZW5hbWVkIENT
U1N0eWxlQXBwbHlQcm9wZXJ0eSBjbGFzcyB0byBTdHlsZUJ1aWxkZXIuIFRoaXMKKyAgICAgICAg
cGF0Y2ggcmVuYW1lIHRoZSBmaWxlcyB0byBtYXRjaCB0aGUgbmV3IGNsYXNzIG5hbWUuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIDogcmVuYW1pbmcgb2YgZmlsZXMsIG5vIGJlaGF2aW9yIGNoYW5n
ZXMgZXhwZWN0ZWQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NT
QWxsSW5PbmUuY3BwOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlz
dCk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQXBwbHlQcm9wZXJ0eUV4cGFuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5RXhwYW5kaW5nOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVByb3BlcnR5RXhwYW5kaW5nOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5RXhwYW5kaW5nOjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlFeHBhbmRpbmc6OmNyZWF0ZUhhbmRsZXIpOgorICAgICAg
ICAoQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJv
cGVydHlEZWZhdWx0QmFzZTo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9w
ZXJ0eURlZmF1bHRCYXNlOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5
RGVmYXVsdEJhc2U6OmluaXRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eURl
ZmF1bHRCYXNlOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5RGVmYXVsdEJhc2U6OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U6OmNyZWF0ZUhhbmRsZXIpOgorICAgICAgICAoQXBw
bHlQcm9wZXJ0eURlZmF1bHQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eURlZmF1
bHQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEZWZhdWx0Ojph
cHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEZWZhdWx0OjpjcmVh
dGVIYW5kbGVyKToKKyAgICAgICAgKEFwcGx5UHJvcGVydHlOdW1iZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eU51bWJlcjo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlQcm9wZXJ0eU51bWJlcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVByb3BlcnR5TnVtYmVyOjpjcmVhdGVIYW5kbGVyKToKKyAgICAgICAgKEFwcGx5UHJvcGVydHlT
dHlsZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlTdHlsZUltYWdlOjph
cHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlTdHlsZUltYWdlOjpj
cmVhdGVIYW5kbGVyKToKKyAgICAgICAgKEFwcGx5UHJvcGVydHlBdXRvKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5UHJvcGVydHlBdXRvOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5QXV0bzo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0
eUF1dG86Omhhc0F1dG8pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUF1dG86OnNl
dEF1dG8pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUF1dG86OmFwcGx5SW5oZXJp
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBdXRvOjphcHBseUluaXRp
YWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QXV0bzo6YXBwbHlWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QXV0bzo6Y3JlYXRlSGFuZGxlcik6
CisgICAgICAgIChBcHBseVByb3BlcnR5Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5Q2xpcDo6Y29udmVydFRvTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJv
cGVydHlDbGlwOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5Q2xpcDo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQ
cm9wZXJ0eUNsaXA6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0
eUNsaXA6OmNyZWF0ZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdEluaXRpYWxD
b2xvcik6CisgICAgICAgIChBcHBseVByb3BlcnR5Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlQcm9wZXJ0eUNvbG9yOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5Q29sb3I6OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGx5UHJvcGVydHlDb2xvcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5Q29sb3I6OmFwcGx5Q29sb3JWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5Q29sb3I6OmNyZWF0ZUhhbmRsZXIpOgorICAgICAgICAoQXBwbHlQcm9wZXJ0
eURpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RGlyZWN0aW9uOjph
cHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEaXJlY3Rpb246OmNy
ZWF0ZUhhbmRsZXIpOgorICAgICAgICAoQXBwbHlQcm9wZXJ0eUxlbmd0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBseVByb3BlcnR5TGVuZ3RoOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5TGVuZ3RoOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGx5UHJvcGVydHlMZW5ndGg6OmNyZWF0ZUhhbmRsZXIpOgorICAgICAgICAoQXBwbHlQcm9wZXJ0
eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5U3RyaW5nOjpzZXRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5U3RyaW5nOjphcHBseVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlTdHJpbmc6OmNyZWF0ZUhhbmRsZXIpOgor
ICAgICAgICAoQXBwbHlQcm9wZXJ0eUJvcmRlclJhZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5Qm9yZGVyUmFkaXVzOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5Qm9yZGVyUmFkaXVzOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlCb3JkZXJSYWRpdXM6OmNyZWF0ZUhhbmRsZXIpOgorICAgICAgICAoRmls
bExheWVyQWNjZXNzb3JUeXBlcyk6CisgICAgICAgIChBcHBseVByb3BlcnR5RmlsbExheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGaWxsTGF5ZXI6OmFwcGx5SW5oZXJpdFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGaWxsTGF5ZXI6OmFwcGx5SW5p
dGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGaWxsTGF5ZXI6OmFw
cGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZpbGxMYXllcjo6Y3Jl
YXRlSGFuZGxlcik6CisgICAgICAgIChBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDo6c2V0VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg6OmFwcGx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg6OmNyZWF0ZUhhbmRs
ZXIpOgorICAgICAgICAoQXBwbHlQcm9wZXJ0eUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eUZvbnQ6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGx5UHJvcGVydHlGb250OjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5Rm9udDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5Rm9udDo6Y3JlYXRlSGFuZGxlcik6CisgICAgICAgIChBcHBseVByb3BlcnR5Rm9udFNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRTaXplOjpsYXJnZXJGb250
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFNpemU6OnNtYWxsZXJG
b250U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFNpemU6OmFwcGx5
SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250U2l6ZTo6
YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRT
aXplOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250U2l6
ZTo6Y3JlYXRlSGFuZGxlcik6CisgICAgICAgIChBcHBseVByb3BlcnR5Rm9udFdlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFdlaWdodDo6YXBwbHlWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFdlaWdodDo6Y3JlYXRlSGFuZGxlcik6
CisgICAgICAgIChBcHBseVByb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRWYXJpYW50TGlnYXR1cmVzOjphcHBseUluaGVyaXRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVy
ZXM6OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlG
b250VmFyaWFudExpZ2F0dXJlczo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVByb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXM6OmNyZWF0ZUhhbmRsZXIpOgorICAgICAgICAo
QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlCb3JkZXJJbWFnZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3Bl
cnR5Qm9yZGVySW1hZ2U6OmNyZWF0ZUhhbmRsZXIpOgorICAgICAgICAoQXBwbHlQcm9wZXJ0eUJv
cmRlckltYWdlTW9kaWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUJvcmRl
ckltYWdlTW9kaWZpZXI6OmdldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlCb3JkZXJJbWFnZU1vZGlmaWVyOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI6OmFwcGx5SW5pdGlh
bFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlm
aWVyOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlCb3JkZXJJ
bWFnZU1vZGlmaWVyOjpjcmVhdGVIYW5kbGVyKToKKyAgICAgICAgKEFwcGx5UHJvcGVydHlCb3Jk
ZXJJbWFnZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Qm9yZGVySW1h
Z2VTb3VyY2U6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUJv
cmRlckltYWdlU291cmNlOjpjcmVhdGVIYW5kbGVyKToKKyAgICAgICAgKEFwcGx5UHJvcGVydHlD
b3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb3VudGVyOjplbXB0eUZ1
bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb3VudGVyOjphcHBseUlu
aGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q291bnRlcjo6YXBw
bHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q291bnRlcjo6Y3JlYXRl
SGFuZGxlcik6CisgICAgICAgIChBcHBseVByb3BlcnR5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGx5UHJvcGVydHlDdXJzb3I6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5UHJvcGVydHlDdXJzb3I6OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDdXJzb3I6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eUN1cnNvcjo6Y3JlYXRlSGFuZGxlcik6CisgICAgICAgIChBcHBs
eVByb3BlcnR5VGV4dEFsaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlUZXh0
QWxpZ246OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVRleHRB
bGlnbjo6Y3JlYXRlSGFuZGxlcik6CisgICAgICAgIChBcHBseVByb3BlcnR5VGV4dERlY29yYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVRleHREZWNvcmF0aW9uOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlUZXh0RGVjb3JhdGlvbjo6
Y3JlYXRlSGFuZGxlcik6CisgICAgICAgIChBcHBseVByb3BlcnR5VW5pY29kZUJpZGkpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVVuaWNvZGVCaWRpOjphcHBseVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlVbmljb2RlQmlkaTo6Y3JlYXRlSGFuZGxlcik6
CisgICAgICAgIChBcHBseVByb3BlcnR5TGluZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5TGluZUhlaWdodDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5TGluZUhlaWdodDo6Y3JlYXRlSGFuZGxlcik6CisgICAgICAgIChBcHBseVBy
b3BlcnR5UGFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXpl
OjptbUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5UGFnZVNpemU6Omlu
Y2hMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjpnZXRQ
YWdlU2l6ZUZyb21OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlQYWdlU2l6
ZTo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBh
Z2VTaXplOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3Bl
cnR5UGFnZVNpemU6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0
eVBhZ2VTaXplOjpjcmVhdGVIYW5kbGVyKToKKyAgICAgICAgKEFwcGx5UHJvcGVydHlUZXh0RW1w
aGFzaXNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5VGV4dEVtcGhhc2lz
U3R5bGU6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlUZXh0RW1waGFzaXNTdHlsZTo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlQcm9wZXJ0eVRleHRFbXBoYXNpc1N0eWxlOjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlUZXh0RW1waGFzaXNTdHlsZTo6Y3JlYXRlSGFuZGxlcik6
CisgICAgICAgIChBcHBseVByb3BlcnR5QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGx5UHJvcGVydHlBbmltYXRpb246OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5
UHJvcGVydHlBbmltYXRpb246OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlBbmltYXRpb246OnRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1h
dGlvbjo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjo6
aW5pdGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QW5pbWF0aW9uOjptYXAp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjo6YWNjZXNzQW5pbWF0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QW5pbWF0aW9uOjphbmltYXRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmltYXRpb246OmFwcGx5SW5o
ZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmltYXRpb246OmFw
cGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmltYXRp
b246OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFuaW1hdGlv
bjo6Y3JlYXRlSGFuZGxlcik6CisgICAgICAgIChBcHBseVByb3BlcnR5T3V0bGluZVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlPdXRsaW5lU3R5bGU6OmFwcGx5SW5oZXJp
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlPdXRsaW5lU3R5bGU6OmFw
cGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlPdXRsaW5l
U3R5bGU6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eU91dGxp
bmVTdHlsZTo6Y3JlYXRlSGFuZGxlcik6CisgICAgICAgIChBcHBseVByb3BlcnR5UmVzaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlSZXNpemU6OmFwcGx5VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVJlc2l6ZTo6Y3JlYXRlSGFuZGxlcik6CisgICAg
ICAgIChBcHBseVByb3BlcnR5VmVydGljYWxBbGlnbik6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVByb3BlcnR5VmVydGljYWxBbGlnbjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5VmVydGljYWxBbGlnbjo6Y3JlYXRlSGFuZGxlcik6CisgICAgICAgIChBcHBs
eVByb3BlcnR5QXNwZWN0UmF0aW8pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFz
cGVjdFJhdGlvOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5QXNwZWN0UmF0aW86OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlBc3BlY3RSYXRpbzo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5QXNwZWN0UmF0aW86OmNyZWF0ZUhhbmRsZXIpOgorICAgICAgICAoQXBw
bHlQcm9wZXJ0eVpvb20pOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVpvb206OnJl
c2V0RWZmZWN0aXZlWm9vbSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Wm9vbTo6
YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVpvb206
OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlab29t
OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlab29tOjpjcmVh
dGVIYW5kbGVyKToKKyAgICAgICAgKEFwcGx5UHJvcGVydHlEaXNwbGF5KToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5UHJvcGVydHlEaXNwbGF5Ojppc1ZhbGlkRGlzcGxheVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEaXNwbGF5OjphcHBseUluaGVyaXRWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RGlzcGxheTo6YXBwbHlJbml0aWFsVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eURpc3BsYXk6OmFwcGx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eURpc3BsYXk6OmNyZWF0ZUhhbmRsZXIpOgor
ICAgICAgICAoQXBwbHlQcm9wZXJ0eUZsZXgpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9w
ZXJ0eUZsZXg6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJv
cGVydHlGbGV4OjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5RmxleDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5
RmxleDo6Y3JlYXRlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rmxl
eDo6Z2V0RmxleFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlcjo6c2hhcmVk
U3R5bGVCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlcjo6U3R5bGVCdWls
ZGVyKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmguCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFByb3BlcnR5SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eUhh
bmRsZXI6OlByb3BlcnR5SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eUhhbmRs
ZXI6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5SGFuZGxl
cjo6YXBwbHlJbml0aWFsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlIYW5kbGVy
OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5SGFuZGxlcjo6aXNWYWxp
ZCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eUhhbmRsZXI6OmluaGVyaXRGdW5jdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eUhhbmRsZXI6OmluaXRpYWxGdW5jdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eUhhbmRsZXI6OmFwcGx5RnVuY3Rpb24pOgorICAgICAg
ICAoU3R5bGVCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlcjo6cHJvcGVy
dHlIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlcjo6aW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyOjp2YWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUJ1aWxkZXI6OnNldFByb3BlcnR5SGFuZGxlcik6CisKKzIwMTItMDQtMjQgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKICAgICAgICAgQW5vdGhlciB1
bnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgTWFjLgogCiAgICAgICAgICogY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuaDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNjM4ZDNhNDg0YjBjNmQxMjI0Nzc2OTRm
YjhlOTYyMmVjOWY2NGRhYy4uODhiMjc0ZjBkNjhlMzIwNzk5Yjc4ZGY3NzI4YzRlOWU4NTQ4Zjky
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ4Miw3ICs0ODIsNiBAQCBTRVQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAogICAgIGNzcy9DU1NTZWxl
Y3Rvci5jcHAKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAotICAgIGNzcy9DU1NTdHlsZUFw
cGx5UHJvcGVydHkuY3BwCiAgICAgY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCiAgICAgY3Nz
L0NTU1N0eWxlUnVsZS5jcHAKICAgICBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTUwOCw2
ICs1MDcsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL1JHQkNvbG9yLmNwcAogICAg
IGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwCiAgICAgY3NzL1NoYWRvd1ZhbHVlLmNwcAorICAgIGNz
cy9TdHlsZUJ1aWxkZXIuY3BwCiAgICAgY3NzL1N0eWxlTWVkaWEuY3BwCiAgICAgY3NzL1N0eWxl
UHJvcGVydHlTZXQuY3BwCiAgICAgY3NzL1N0eWxlUHJvcGVydHlTaG9ydGhhbmQuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBhNTQ1YjA0NzcwNzNhOTczNGY3MTQ0M2Y0ZjE1
NWQ1MzMxMDNkNGFlLi4yYTA0NTZkYTRiOTRmNDg3OTJhZDBhN2Q3MDBhZmQyMGVjMDAzN2FmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE2NDEsOCArMTY0MSw2IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggXAogCVNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3JMaXN0LmggXAotCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5
UHJvcGVydHkuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5
LmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlUnVsZS5jcHAgXApAQCAtMTY5Nyw2ICsxNjk1LDggQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TaGFk
b3dWYWx1ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVNZWRpYS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAyYjA4
MThjYWI1MTc5NTFlN2MwMDE2NzAxYTUyZTI2ZjhiOWY2OTE3Li42MzdiYjc4NmI1YTk2ZmVhMzkz
NDBjMDE2MThhZjY3NGY0NTYzYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTQ2MSw3ICs0NjEsNiBAQCBT
T1VSQ0VTICs9IFwKICAgICBjc3MvQ1NTU2VsZWN0b3IuY3BwIFwKICAgICBjc3MvQ1NTU2VsZWN0
b3JMaXN0LmNwcCBcCiAgICAgY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBcCi0gICAgY3Nz
L0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgXAogICAgIGNzcy9DU1NTdHlsZURlY2xhcmF0aW9u
LmNwcCBcCiAgICAgY3NzL0NTU1N0eWxlUnVsZS5jcHAgXAogICAgIGNzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcCBcCkBAIC00ODcsNiArNDg2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgY3NzL1JHQkNv
bG9yLmNwcCBcCiAgICAgY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgXAogICAgIGNzcy9TaGFkb3dW
YWx1ZS5jcHAgXAorICAgIGNzcy9TdHlsZUJ1aWxkZXIuY3BwIFwKICAgICBjc3MvU3R5bGVNZWRp
YS5jcHAgXAogICAgIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBcCiAgICAgY3NzL1N0eWxlUHJv
cGVydHlTaG9ydGhhbmQuY3BwIFwKQEAgLTE2MTcsNyArMTYxNyw2IEBAIEhFQURFUlMgKz0gXAog
ICAgIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5oIFwKICAgICBjc3MvQ1NTU2VsZWN0b3IuaCBc
CiAgICAgY3NzL0NTU1NlbGVjdG9yTGlzdC5oIFwKLSAgICBjc3MvQ1NTU3R5bGVBcHBseVByb3Bl
cnR5LmggXAogICAgIGNzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmggXAogICAgIGNzcy9DU1NTdHls
ZVJ1bGUuaCBcCiAgICAgY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBcCkBAIC0xNjQ0LDYgKzE2NDMs
NyBAQCBIRUFERVJTICs9IFwKICAgICBjc3MvU2VsZWN0b3JDaGVja2VyLmggXAogICAgIGNzcy9T
aGFkb3dWYWx1ZS5oIFwKICAgICBjc3MvU3R5bGVNZWRpYS5oIFwKKyAgICBjc3MvU3R5bGVCdWls
ZGVyLmggXAogICAgIGNzcy9TdHlsZVByb3BlcnR5U2V0LmggXAogICAgIGNzcy9TdHlsZVByb3Bl
cnR5U2hvcnRoYW5kLmggXAogICAgIGNzcy9TdHlsZVJ1bGUuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggNzU4OGYzNTY5OTdkMmNjMGY1NTI5NDFkMDJkZTc5NmMxOTE5ZjI3NS4uNTIyNWQ5YzgzMGEx
YjRkOTM4NDllNmQ1ODQ3Y2RhYzM5MTJmMzZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjQ1Nyw4
ICsyNDU3LDYgQEAKICAgICAgICAgICAgICdjc3MvQ1NTU2VsZWN0b3IuY3BwJywKICAgICAgICAg
ICAgICdjc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NTU1NlbGVj
dG9yTGlzdC5oJywKLSAgICAgICAgICAgICdjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCcs
Ci0gICAgICAgICAgICAnY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oJywKICAgICAgICAgICAg
ICdjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NTdHls
ZVJ1bGUuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NTU3R5bGVSdWxlLmgnLApAQCAtMjUxMSw2
ICsyNTA5LDggQEAKICAgICAgICAgICAgICdjc3MvU2VsZWN0b3JDaGVja2VyLmgnLAogICAgICAg
ICAgICAgJ2Nzcy9TaGFkb3dWYWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9TaGFkb3dWYWx1
ZS5oJywKKyAgICAgICAgICAgICdjc3MvU3R5bGVCdWlsZGVyLmNwcCcsCisgICAgICAgICAgICAn
Y3NzL1N0eWxlQnVpbGRlci5oJywKICAgICAgICAgICAgICdjc3MvU3R5bGVNZWRpYS5jcHAnLAog
ICAgICAgICAgICAgJ2Nzcy9TdHlsZU1lZGlhLmgnLAogICAgICAgICAgICAgJ2Nzcy9TdHlsZVBy
b3BlcnR5U2V0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCmluZGV4IDc1Y2JmOTYyODMwYzY0MTM4ZDAzNGRiODI0OGI3OWI1MWI5MjRjZTcuLmEz
MWQ3MGQzMjAwNTVmNWE4ZTBjMTZiZDhhMTgwN2ZkMTUyZTlhNmYgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zNTc5MCw2MiArMzU3OTAsNiBA
QAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3Nc
Q1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCIKLQkJCQk+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9u
Ci0JCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
LQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJ
Lz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJ
CQlOYW1lPSJSZWxlYXNlfFdpbjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJ
CQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJLz4K
LQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlO
YW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgot
CQkJCQkvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9u
Ci0JCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKLQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25m
aWd1cmF0aW9uCi0JCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgotCQkJCQkvPgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8L0ZpbGU+Ci0J
CQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5o
IgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3Nc
Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpA
QCAtMzY3MzAsNiArMzY2NzQsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cY3NzXFN0eWxlQnVpbGRlci5jcHAiCisJCQkJPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xTdHlsZUJ1aWxk
ZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Y3NzXFN0eWxlTWVkaWEuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNTAwNThkZjRhMjk1
YjY3N2I0MzkxOTZhYTRiNWUxNDA3OGMwYjdmLi5mZWJkZjMwYzUwZDAxZjcwMDdiMTM0ZGNlYjg2
YTQ3MzQ1ZjY1YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xOTIxLDggKzE5MjEsNiBAQAogCQk3RUU2ODQ3MDEyRDI2RTM4
MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3RUU2ODQ3MTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVF
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwICovOyB9OwogCQk3
RUU2ODQ3NTEyRDI2RTcwMDBFNzk0MTUgLyogUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ3NDEyRDI2RTcw
MDBFNzk0MTUgLyogUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAgKi87IH07Ci0JCTgwOUREMURGMTMw
REUyQUQwMENBRTNFRCAvKiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODA5REQxREQxMzBERTJBRDAwQ0FFM0VE
IC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgKi87IH07Ci0JCTgwOUREMUUwMTMwREUyQUQw
MENBRTNFRCAvKiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwOUREMURFMTMwREUyQUQwMENBRTNFRCAvKiBDU1NT
dHlsZUFwcGx5UHJvcGVydHkuaCAqLzsgfTsKIAkJODEwMkM1ODgxMzI1QkIxMTAwRERFNjdBIC8q
IFN0cmluZ0NhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgxMDJDNTg3MTMyNUJCMTEwMERERTY3QSAvKiBTdHJpbmdDYWxsYmFjay5jcHAg
Ki87IH07CiAJCTgxNUU2MTY3MTMyNTg3QUEwMEI2MjJCMCAvKiBEYXRhVHJhbnNmZXJJdGVtLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxNUU2MTY2
MTMyNTg3QUEwMEI2MjJCMCAvKiBEYXRhVHJhbnNmZXJJdGVtLmNwcCAqLzsgfTsKIAkJODFBQzU5
OTkxMzE2MzZFNjAwMDlBN0UwIC8qIERhdGFUcmFuc2Zlckl0ZW0uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQUM1OTk3MTMxNjM2RTYwMDA5QTdFMCAv
KiBEYXRhVHJhbnNmZXJJdGVtLmggKi87IH07CkBAIC01ODM3LDYgKzU4MzUsOCBAQAogCQlFMEZF
RjM3MkIyN0M1M0VBQzFDMUZCRUUgLyogRXZlbnRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTBGRUYzNzFCMjdDNTNFQUMxQzFGQkVFIC8q
IEV2ZW50U291cmNlLmNwcCAqLzsgfTsKIAkJRTBGRUYzNzJCMzdDNTNFQUMxQzFGQkVFIC8qIEpT
RXZlbnRTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUwRkVGMzcxQjM3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50U291cmNlLmggKi87IH07CiAJ
CUUwRkVGMzcyQjQ3QzUzRUFDMUMxRkJFRSAvKiBKU0V2ZW50U291cmNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUwRkVGMzcxQjQ3QzUzRUFDMUMx
RkJFRSAvKiBKU0V2ZW50U291cmNlLmNwcCAqLzsgfTsKKwkJRTEwMEVFNzUxNTQ2RUFDMTAwQkEx
MUQxIC8qIFN0eWxlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTAwRUU3MzE1NDZFQUMxMDBCQTExRDEgLyogU3R5bGVCdWlsZGVyLmNw
cCAqLzsgfTsKKwkJRTEwMEVFNzYxNTQ2RUFDMTAwQkExMUQxIC8qIFN0eWxlQnVpbGRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEwMEVFNzQxNTQ2
RUFDMTAwQkExMUQxIC8qIFN0eWxlQnVpbGRlci5oICovOyB9OwogCQlFMTA3NDAwRDBFNzdCREMw
MDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTA3NDAwQjBFNzdCREMwMDAzM0FGMjQgLyogSlNNZXNz
YWdlQ2hhbm5lbC5jcHAgKi87IH07CiAJCUUxMDc0MDBFMEU3N0JEQzAwMDMzQUYyNCAvKiBKU01l
c3NhZ2VDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMTA3NDAwQzBFNzdCREMwMDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hhbm5lbC5oICovOyB9
OwogCQlFMTBCOTM3QzBCNzNDMDBBMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMEI5MzdC
MEI3M0MwMEEwMDNFRDg5MCAvKiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oICovOyB9OwpAQCAt
ODk1MCw4ICs4OTUwLDYgQEAKIAkJN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXNw
b25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RTEyRDI2RTM4MDBF
Nzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVzcG9uc2VDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdFRTY4NDc0MTJEMjZFNzAwMEU3OTQxNSAvKiBSZXNvdXJjZUxvYWRl
ckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlc291cmNl
TG9hZGVyQ0ZOZXQuY3BwOyBwYXRoID0gY2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgwOUREMUREMTMwREUyQUQwMENBRTNFRCAvKiBDU1NT
dHlsZUFwcGx5UHJvcGVydHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJODA5REQxREUxMzBERTJBRDAwQ0FFM0VEIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NTdHlsZUFwcGx5UHJvcGVydHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODEwMkM1ODcxMzI1QkIxMTAwRERFNjdBIC8q
IFN0cmluZ0NhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN0cmluZ0NhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODE1RTYx
NjYxMzI1ODdBQTAwQjYyMkIwIC8qIERhdGFUcmFuc2Zlckl0ZW0uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YVRyYW5zZmVySXRlbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgxQUM1OTk3MTMxNjM2RTYwMDA5QTdFMCAvKiBEYXRhVHJhbnNm
ZXJJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFUcmFuc2Zlckl0
ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTczLDYgKzEyOTcxLDggQEAK
IAkJRTBGRUYzNzFCMjdDNTNFQUMxQzFGQkVFIC8qIEV2ZW50U291cmNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50U291cmNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTBGRUYzNzFCMzdDNTNFQUMxQzFGQkVFIC8qIEpTRXZlbnRTb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudFNvdXJjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMEZFRjM3MUI0N0M1M0VBQzFDMUZCRUUgLyog
SlNFdmVudFNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0V2ZW50U291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTEwMEVFNzMx
NTQ2RUFDMTAwQkExMUQxIC8qIFN0eWxlQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHlsZUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMTAwRUU3NDE1NDZFQUMxMDBCQTExRDEgLyogU3R5bGVCdWlsZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMTA3NDAwQjBFNzdCREMwMDAzM0FGMjQgLyogSlNNZXNzYWdlQ2hh
bm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lc3NhZ2VD
aGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEwNzQwMEMwRTc3QkRD
MDAwMzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNNZXNzYWdlQ2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMTBCOTM3QjBCNzNDMDBBMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjA1LDggKzIwNjA1LDYgQEAKIAkJ
CQlBODBFNzM0QjBBMTk5Qzc3MDA3RkI4QzUgLyogQ1NTU2VsZWN0b3IuaCAqLywKIAkJCQlFNEMx
Nzg5NTBFRTY5MDM4MDA4MjRENjkgLyogQ1NTU2VsZWN0b3JMaXN0LmNwcCAqLywKIAkJCQlFNEMx
Nzg5NjBFRTY5MDM4MDA4MjRENjkgLyogQ1NTU2VsZWN0b3JMaXN0LmggKi8sCi0JCQkJODA5REQx
REQxMzBERTJBRDAwQ0FFM0VEIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgKi8sCi0JCQkJ
ODA5REQxREUxMzBERTJBRDAwQ0FFM0VEIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oICovLAog
CQkJCUE4MEU2RTBFMEExOTkxMUMwMDdGQjhDNSAvKiBDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCAq
LywKIAkJCQlBODBFNkUwRDBBMTk5MTFDMDA3RkI4QzUgLyogQ1NTU3R5bGVEZWNsYXJhdGlvbi5o
ICovLAogCQkJCTE0MjAxMUFFMEEwMDMxMTcwMDgzMDNGOSAvKiBDU1NTdHlsZURlY2xhcmF0aW9u
LmlkbCAqLywKQEAgLTIwNjgzLDYgKzIwNjgxLDggQEAKIAkJCQlFNDRCNEJCMjE0MTY1MEQ3MDAy
QjFEOEIgLyogU2VsZWN0b3JDaGVja2VyLmggKi8sCiAJCQkJQTgwRTZDQ0EwQTE5ODlDQTAwN0ZC
OEM1IC8qIFNoYWRvd1ZhbHVlLmNwcCAqLywKIAkJCQlBODBFNkNCRTBBMTk4OUNBMDA3RkI4QzUg
LyogU2hhZG93VmFsdWUuaCAqLywKKwkJCQlFMTAwRUU3MzE1NDZFQUMxMDBCQTExRDEgLyogU3R5
bGVCdWlsZGVyLmNwcCAqLywKKwkJCQlFMTAwRUU3NDE1NDZFQUMxMDBCQTExRDEgLyogU3R5bGVC
dWlsZGVyLmggKi8sCiAJCQkJMEZGNTAyNkUxMDJCQTk2NjAwNjZGMzlBIC8qIFN0eWxlTWVkaWEu
Y3BwICovLAogCQkJCTBGRjUwMjZGMTAyQkE5NkEwMDY2RjM5QSAvKiBTdHlsZU1lZGlhLmggKi8s
CiAJCQkJMEZGNTAyNzAxMDJCQTk2QTAwNjZGMzlBIC8qIFN0eWxlTWVkaWEuaWRsICovLApAQCAt
MjE5MjAsNyArMjE5MjAsNiBAQAogCQkJCUE4MEU2Q0YyMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NS
dWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcxRjUxQTEwRDI2MkZBMDAwRUNFMEQ1IC8q
IENTU1NlZ21lbnRlZEZvbnRGYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNzM1MjBBMTk5
Qzc3MDA3RkI4QzUgLyogQ1NTU2VsZWN0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTgwOUREMUUw
MTMwREUyQUQwMENBRTNFRCAvKiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4MEU2RTBGMEExOTkxMUMwMDdGQjhDNSAvKiBDU1NTdHlsZURlY2xhcmF0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkQwQzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU3R5bGVS
dWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc3MkI0MDBDNEVBOTFFMDA4MzI4NUYgLyogQ1NT
U3R5bGVTZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDgxNiw4ICsyNDgxNSw5IEBACiAJ
CQkJQ0VDQURGQzkxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNFQ0FERkNFMTUzNzc5MUQwMEUzNzA2OCAvKiBUZXh0SW5zZXJ0aW9uQmFz
ZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk4MzFBRTRBMTU0MjI1QzkwMEZFMjY0NCAv
KiBSZWZlcnJlclBvbGljeS5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgQjY1OEZG
QTIxNTIyRUYzQTAwREQ1NTk1IC8qIEpTUmFkaW9Ob2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0g
ICAgICAgICAgICAgICAgQjY1OEZGQTYxNTIyRUZBQTAwREQ1NTk1IC8qIFJhZGlvTm9kZUxpc3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCUI2NThGRkEyMTUyMkVGM0EwMERENTU5NSAvKiBKU1JhZGlv
Tm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUI2NThGRkE2MTUyMkVGQUEwMERENTU5NSAv
KiBSYWRpb05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTAwRUU3NjE1NDZFQUMxMDBC
QTExRDEgLyogU3R5bGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1NDA2LDcgKzI1NDA2
LDYgQEAKIAkJCQkzNzFGNTFBMjBEMjYyRkEwMDBFQ0UwRDUgLyogQ1NTU2VnbWVudGVkRm9udEZh
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTczNEYwQTE5OUM3NzAwN0ZCOEM1IC8qIENT
U1NlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzE3ODlBMEVFNjkwMzgwMDgyNEQ2
OSAvKiBDU1NTZWxlY3Rvckxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODA5REQxREYxMzBE
RTJBRDAwQ0FFM0VEIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBODBFNkUxMDBBMTk5MTFDMDA3RkI4QzUgLyogQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODBFNkNFRjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU3R5bGVS
dWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzcyQjNGMEM0RUE5MUUwMDgzMjg1RiAvKiBD
U1NTdHlsZVNlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc4MjksOCArMjc4MjgsOSBA
QAogCQkJCUNFQ0FERkM2MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDRUNBREZDODE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0
aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRUNBREZDRDE1Mzc3OTFEMDBFMzcw
NjggLyogVGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAotICAgICAg
ICAgICAgICAgIEI2NThGRkExMTUyMkVGM0EwMERENTU5NSAvKiBKU1JhZGlvTm9kZUxpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCi0gICAgICAgICAgICAgICAgQjY1OEZGQTUxNTIyRUZBQTAwREQ1NTk1
IC8qIFJhZGlvTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjY1OEZGQTExNTIyRUYz
QTAwREQ1NTk1IC8qIEpTUmFkaW9Ob2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCNjU4
RkZBNTE1MjJFRkFBMDBERDU1OTUgLyogUmFkaW9Ob2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlFMTAwRUU3NTE1NDZFQUMxMDBCQTExRDEgLyogU3R5bGVCdWlsZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKaW5kZXggMGM3NzE0YmNiYjZmMjEz
NGU5MTQyMzE2N2EyYWYwOTkwMTE0YmU5YS4uMjc1NTEwN2QxZDdkNjlkYzE1NjYxYzMzMDg0MDM0
MzJjMmRlZTE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCkBAIC01OCw3ICs1OCw2
IEBACiAjaW5jbHVkZSAiQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwIgogI2luY2x1ZGUgIkNTU1Nl
bGVjdG9yLmNwcCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuY3BwIgotI2luY2x1ZGUgIkNT
U1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAiCiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5j
cHAiCiAjaW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmNwcCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVj
dG9yLmNwcCIKQEAgLTY5LDUgKzY4LDYgQEAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuY3BwIgog
I2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5jcHAiCiAjaW5jbHVkZSAiQ1NTV3JhcFNoYXBlcy5jcHAi
CisjaW5jbHVkZSAiU3R5bGVCdWlsZGVyLmNwcCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0
LmNwcCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmNwcCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAzMGU5ZGYzNzFjNGM3MTYzZTBmNWJiZTU2MzhlZTI4MmVjNGU5ZWQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDI5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDU1NT
dHlsZUFwcGx5UHJvcGVydHkuaCIKLQotI2luY2x1ZGUgIkNTU0FzcGVjdFJhdGlvVmFsdWUuaCIK
LSNpbmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCi0jaW5jbHVkZSAiQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKLSNpbmNs
dWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCi0jaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCi0jaW5j
bHVkZSAiQ3Vyc29yTGlzdC5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRWxl
bWVudC5oIgotI2luY2x1ZGUgIlBhaXIuaCIKLSNpbmNsdWRlICJSZWN0LmgiCi0jaW5jbHVkZSAi
UmVuZGVyT2JqZWN0LmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKLSNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBz
dGQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBFeHBhbmRWYWx1ZUJlaGF2aW9yIHtT
dXBwcmVzc1ZhbHVlID0gMCwgRXhwYW5kVmFsdWV9OwotdGVtcGxhdGUgPEV4cGFuZFZhbHVlQmVo
YXZpb3IgZXhwYW5kVmFsdWUsIENTU1Byb3BlcnR5SUQgb25lID0gQ1NTUHJvcGVydHlJbnZhbGlk
LCBDU1NQcm9wZXJ0eUlEIHR3byA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCB0
aHJlZSA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCBmb3VyID0gQ1NTUHJvcGVy
dHlJbnZhbGlkLCBDU1NQcm9wZXJ0eUlEIGZpdmUgPSBDU1NQcm9wZXJ0eUludmFsaWQ+Ci1jbGFz
cyBBcHBseVByb3BlcnR5RXhwYW5kaW5nIHsKLXB1YmxpYzoKLQotICAgIHRlbXBsYXRlIDxDU1NQ
cm9wZXJ0eUlEIGlkPgotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShD
U1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKLSAgICB7Ci0gICAgICAgIGlmIChpZCA9PSBDU1NQ
cm9wZXJ0eUludmFsaWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY29uc3QgU3R5
bGVCdWlsZGVyJiB0YWJsZSA9IFN0eWxlQnVpbGRlcjo6c2hhcmVkU3R5bGVCdWlsZGVyKCk7Ci0g
ICAgICAgIGNvbnN0IFByb3BlcnR5SGFuZGxlciYgaGFuZGxlciA9IHRhYmxlLnByb3BlcnR5SGFu
ZGxlcihpZCk7Ci0gICAgICAgIGlmIChoYW5kbGVyLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGhh
bmRsZXIuYXBwbHlJbmhlcml0VmFsdWUoc2VsZWN0b3IpOwotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQotICAgIHsK
LSAgICAgICAgYXBwbHlJbmhlcml0VmFsdWU8b25lPihzZWxlY3Rvcik7Ci0gICAgICAgIGFwcGx5
SW5oZXJpdFZhbHVlPHR3bz4oc2VsZWN0b3IpOwotICAgICAgICBhcHBseUluaGVyaXRWYWx1ZTx0
aHJlZT4oc2VsZWN0b3IpOwotICAgICAgICBhcHBseUluaGVyaXRWYWx1ZTxmb3VyPihzZWxlY3Rv
cik7Ci0gICAgICAgIGFwcGx5SW5oZXJpdFZhbHVlPGZpdmU+KHNlbGVjdG9yKTsKLSAgICB9Ci0K
LSAgICB0ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBpZD4KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQg
YXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCi0gICAgewotICAg
ICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlJbnZhbGlkKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGNvbnN0IFN0eWxlQnVpbGRlciYgdGFibGUgPSBTdHlsZUJ1aWxkZXI6OnNoYXJl
ZFN0eWxlQnVpbGRlcigpOwotICAgICAgICBjb25zdCBQcm9wZXJ0eUhhbmRsZXImIGhhbmRsZXIg
PSB0YWJsZS5wcm9wZXJ0eUhhbmRsZXIoaWQpOwotICAgICAgICBpZiAoaGFuZGxlci5pc1ZhbGlk
KCkpCi0gICAgICAgICAgICBoYW5kbGVyLmFwcGx5SW5pdGlhbFZhbHVlKHNlbGVjdG9yKTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9y
KiBzZWxlY3RvcikKLSAgICB7Ci0gICAgICAgIGFwcGx5SW5pdGlhbFZhbHVlPG9uZT4oc2VsZWN0
b3IpOwotICAgICAgICBhcHBseUluaXRpYWxWYWx1ZTx0d28+KHNlbGVjdG9yKTsKLSAgICAgICAg
YXBwbHlJbml0aWFsVmFsdWU8dGhyZWU+KHNlbGVjdG9yKTsKLSAgICAgICAgYXBwbHlJbml0aWFs
VmFsdWU8Zm91cj4oc2VsZWN0b3IpOwotICAgICAgICBhcHBseUluaXRpYWxWYWx1ZTxmaXZlPihz
ZWxlY3Rvcik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgaWQ+Ci0gICAg
c3RhdGljIGlubGluZSB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3Is
IENTU1ZhbHVlKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eUlu
dmFsaWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY29uc3QgU3R5bGVCdWlsZGVy
JiB0YWJsZSA9IFN0eWxlQnVpbGRlcjo6c2hhcmVkU3R5bGVCdWlsZGVyKCk7Ci0gICAgICAgIGNv
bnN0IFByb3BlcnR5SGFuZGxlciYgaGFuZGxlciA9IHRhYmxlLnByb3BlcnR5SGFuZGxlcihpZCk7
Ci0gICAgICAgIGlmIChoYW5kbGVyLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGhhbmRsZXIuYXBw
bHlWYWx1ZShzZWxlY3RvciwgdmFsdWUpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGFwcGx5
VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKLSAgICB7
Ci0gICAgICAgIGlmICghZXhwYW5kVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgYXBwbHlWYWx1ZTxvbmU+KHNlbGVjdG9yLCB2YWx1ZSk7Ci0gICAgICAgIGFwcGx5VmFsdWU8
dHdvPihzZWxlY3RvciwgdmFsdWUpOwotICAgICAgICBhcHBseVZhbHVlPHRocmVlPihzZWxlY3Rv
ciwgdmFsdWUpOwotICAgICAgICBhcHBseVZhbHVlPGZvdXI+KHNlbGVjdG9yLCB2YWx1ZSk7Ci0g
ICAgICAgIGFwcGx5VmFsdWU8Zml2ZT4oc2VsZWN0b3IsIHZhbHVlKTsKLSAgICB9Ci0gICAgc3Rh
dGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyByZXR1cm4gUHJvcGVydHlIYW5k
bGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7
IH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBHZXR0ZXJUeXBlLCBHZXR0ZXJUeXBlIChSZW5k
ZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB0eXBlbmFtZSBTZXR0ZXJUeXBlLCB2
b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlckZ1bmN0aW9uKShTZXR0ZXJUeXBlKSwgdHlwZW5hbWUg
SW5pdGlhbFR5cGUsIEluaXRpYWxUeXBlICgqaW5pdGlhbEZ1bmN0aW9uKSgpPgotY2xhc3MgQXBw
bHlQcm9wZXJ0eURlZmF1bHRCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBzZXRWYWx1
ZShSZW5kZXJTdHlsZSogc3R5bGUsIFNldHRlclR5cGUgdmFsdWUpIHsgKHN0eWxlLT4qc2V0dGVy
RnVuY3Rpb24pKHZhbHVlKTsgfQotICAgIHN0YXRpYyBHZXR0ZXJUeXBlIHZhbHVlKFJlbmRlclN0
eWxlKiBzdHlsZSkgeyByZXR1cm4gKHN0eWxlLT4qZ2V0dGVyRnVuY3Rpb24pKCk7IH0KLSAgICBz
dGF0aWMgSW5pdGlhbFR5cGUgaW5pdGlhbCgpIHsgcmV0dXJuICgqaW5pdGlhbEZ1bmN0aW9uKSgp
OyB9Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciog
c2VsZWN0b3IpIHsgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIHZhbHVlKHNlbGVjdG9yLT5w
YXJlbnRTdHlsZSgpKSk7IH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NT
dHlsZVNlbGVjdG9yKiBzZWxlY3RvcikgeyBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgaW5p
dGlhbCgpKTsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvcios
IENTU1ZhbHVlKikgeyB9Ci0gICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVy
KCkgeyByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5p
dGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7IH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBHZXR0
ZXJUeXBlLCBHZXR0ZXJUeXBlIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0
LCB0eXBlbmFtZSBTZXR0ZXJUeXBlLCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlckZ1bmN0aW9u
KShTZXR0ZXJUeXBlKSwgdHlwZW5hbWUgSW5pdGlhbFR5cGUsIEluaXRpYWxUeXBlICgqaW5pdGlh
bEZ1bmN0aW9uKSgpPgotY2xhc3MgQXBwbHlQcm9wZXJ0eURlZmF1bHQgewotcHVibGljOgotICAg
IHN0YXRpYyB2b2lkIHNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgU2V0dGVyVHlwZSB2YWx1
ZSkgeyAoc3R5bGUtPipzZXR0ZXJGdW5jdGlvbikodmFsdWUpOyB9Ci0gICAgc3RhdGljIHZvaWQg
YXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQot
ICAgIHsKLSAgICAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAg
ICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgKnN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpKTsKLSAgICB9Ci0gICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVI
YW5kbGVyKCkKLSAgICB7Ci0gICAgICAgIFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQ
cm9wZXJ0eURlZmF1bHRCYXNlPEdldHRlclR5cGUsIGdldHRlckZ1bmN0aW9uLCBTZXR0ZXJUeXBl
LCBzZXR0ZXJGdW5jdGlvbiwgSW5pdGlhbFR5cGUsIGluaXRpYWxGdW5jdGlvbj46OmNyZWF0ZUhh
bmRsZXIoKTsKLSAgICAgICAgcmV0dXJuIFByb3BlcnR5SGFuZGxlcihoYW5kbGVyLmluaGVyaXRG
dW5jdGlvbigpLCBoYW5kbGVyLmluaXRpYWxGdW5jdGlvbigpLCAmYXBwbHlWYWx1ZSk7Ci0gICAg
fQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIE51bWJlclR5cGUsIE51bWJlclR5cGUgKFJlbmRl
clN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0
dGVyRnVuY3Rpb24pKE51bWJlclR5cGUpLCBOdW1iZXJUeXBlICgqaW5pdGlhbEZ1bmN0aW9uKSgp
LCBpbnQgaWRNYXBzVG9NaW51c09uZSA9IENTU1ZhbHVlQXV0bz4KLWNsYXNzIEFwcGx5UHJvcGVy
dHlOdW1iZXIgewotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlKFJlbmRlclN0eWxl
KiBzdHlsZSwgTnVtYmVyVHlwZSB2YWx1ZSkgeyAoc3R5bGUtPipzZXR0ZXJGdW5jdGlvbikodmFs
dWUpOyB9Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxl
Y3RvciwgQ1NTVmFsdWUqIHZhbHVlKQotICAgIHsKLSAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gaWRNYXBz
VG9NaW51c09uZSkKLSAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCAtMSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBw
cmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWU8TnVtYmVyVHlwZT4oQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpKTsKLSAgICB9Ci0gICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5k
bGVyKCkKLSAgICB7Ci0gICAgICAgIFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9w
ZXJ0eURlZmF1bHRCYXNlPE51bWJlclR5cGUsIGdldHRlckZ1bmN0aW9uLCBOdW1iZXJUeXBlLCBz
ZXR0ZXJGdW5jdGlvbiwgTnVtYmVyVHlwZSwgaW5pdGlhbEZ1bmN0aW9uPjo6Y3JlYXRlSGFuZGxl
cigpOwotICAgICAgICByZXR1cm4gUHJvcGVydHlIYW5kbGVyKGhhbmRsZXIuaW5oZXJpdEZ1bmN0
aW9uKCksIGhhbmRsZXIuaW5pdGlhbEZ1bmN0aW9uKCksICZhcHBseVZhbHVlKTsKLSAgICB9Ci19
OwotCi10ZW1wbGF0ZSA8U3R5bGVJbWFnZSogKFJlbmRlclN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24p
KCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rpb24pKFBhc3NSZWZQdHI8
U3R5bGVJbWFnZT4pLCBTdHlsZUltYWdlKiAoKmluaXRpYWxGdW5jdGlvbikoKSwgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eT4KLWNsYXNzIEFwcGx5UHJvcGVydHlTdHlsZUltYWdlIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBD
U1NWYWx1ZSogdmFsdWUpIHsgKHNlbGVjdG9yLT5zdHlsZSgpLT4qc2V0dGVyRnVuY3Rpb24pKHNl
bGVjdG9yLT5zdHlsZUltYWdlKHByb3BlcnR5LCB2YWx1ZSkpOyB9Ci0gICAgc3RhdGljIFByb3Bl
cnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKLSAgICB7Ci0gICAgICAgIFByb3BlcnR5SGFuZGxl
ciBoYW5kbGVyID0gQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPFN0eWxlSW1hZ2UqLCBnZXR0ZXJG
dW5jdGlvbiwgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiwgc2V0dGVyRnVuY3Rpb24sIFN0eWxlSW1h
Z2UqLCBpbml0aWFsRnVuY3Rpb24+OjpjcmVhdGVIYW5kbGVyKCk7Ci0gICAgICAgIHJldHVybiBQ
cm9wZXJ0eUhhbmRsZXIoaGFuZGxlci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFs
RnVuY3Rpb24oKSwgJmFwcGx5VmFsdWUpOwotICAgIH0KLX07Ci0KLWVudW0gQXV0b1ZhbHVlVHlw
ZSB7TnVtYmVyID0gMCwgQ29tcHV0ZUxlbmd0aH07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVCAo
UmVuZGVyU3R5bGU6OipnZXR0ZXJGdW5jdGlvbikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6
OipzZXR0ZXJGdW5jdGlvbikoVCksIGJvb2wgKFJlbmRlclN0eWxlOjoqaGFzQXV0b0Z1bmN0aW9u
KSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldEF1dG9GdW5jdGlvbikoKSwgQXV0b1Zh
bHVlVHlwZSB2YWx1ZVR5cGUgPSBOdW1iZXIsIGludCBhdXRvSWRlbnRpdHkgPSBDU1NWYWx1ZUF1
dG8+Ci1jbGFzcyBBcHBseVByb3BlcnR5QXV0byB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQg
c2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBUIHZhbHVlKSB7IChzdHlsZS0+KnNldHRlckZ1
bmN0aW9uKSh2YWx1ZSk7IH0KLSAgICBzdGF0aWMgVCB2YWx1ZShSZW5kZXJTdHlsZSogc3R5bGUp
IHsgcmV0dXJuIChzdHlsZS0+KmdldHRlckZ1bmN0aW9uKSgpOyB9Ci0gICAgc3RhdGljIGJvb2wg
aGFzQXV0byhSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIChzdHlsZS0+Kmhhc0F1dG9GdW5j
dGlvbikoKTsgfQotICAgIHN0YXRpYyB2b2lkIHNldEF1dG8oUmVuZGVyU3R5bGUqIHN0eWxlKSB7
IChzdHlsZS0+KnNldEF1dG9GdW5jdGlvbikoKTsgfQotCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJ
bmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCi0gICAgewotICAgICAgICBp
ZiAoaGFzQXV0byhzZWxlY3Rvci0+cGFyZW50U3R5bGUoKSkpCi0gICAgICAgICAgICBzZXRBdXRv
KHNlbGVjdG9yLT5zdHlsZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0VmFsdWUo
c2VsZWN0b3ItPnN0eWxlKCksIHZhbHVlKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpKSk7Ci0gICAg
fQotCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciog
c2VsZWN0b3IpIHsgc2V0QXV0byhzZWxlY3Rvci0+c3R5bGUoKSk7IH0KLQotICAgIHN0YXRpYyB2
b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1
ZSkKLSAgICB7Ci0gICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IGF1dG9JZGVudGl0eSkKLSAgICAgICAgICAg
IHNldEF1dG8oc2VsZWN0b3ItPnN0eWxlKCkpOwotICAgICAgICBlbHNlIGlmICh2YWx1ZVR5cGUg
PT0gTnVtYmVyKQotICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksICpwcmlt
aXRpdmVWYWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKHZhbHVlVHlwZSA9PSBDb21wdXRlTGVuZ3Ro
KQotICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIHByaW1pdGl2ZVZhbHVl
LT5jb21wdXRlTGVuZ3RoPFQ+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1l
bnRTdHlsZSgpLCBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyByZXR1cm4gUHJv
cGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBw
bHlWYWx1ZSk7IH0KLX07Ci0KLWNsYXNzIEFwcGx5UHJvcGVydHlDbGlwIHsKLXByaXZhdGU6Ci0g
ICAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IsIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB2YWx1
ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVy
c2lvbiB8IEZyYWN0aW9uQ29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihzZWxlY3Rvci0+c3R5
bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVm
ZmVjdGl2ZVpvb20oKSk7Ci0gICAgfQotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5o
ZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQotICAgIHsKLSAgICAgICAgUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gc2VsZWN0b3ItPnBhcmVudFN0eWxlKCk7Ci0gICAgICAg
IGlmICghcGFyZW50U3R5bGUtPmhhc0NsaXAoKSkKLSAgICAgICAgICAgIHJldHVybiBhcHBseUlu
aXRpYWxWYWx1ZShzZWxlY3Rvcik7Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRDbGlw
KHBhcmVudFN0eWxlLT5jbGlwVG9wKCksIHBhcmVudFN0eWxlLT5jbGlwUmlnaHQoKSwgcGFyZW50
U3R5bGUtPmNsaXBCb3R0b20oKSwgcGFyZW50U3R5bGUtPmNsaXBMZWZ0KCkpOwotICAgICAgICBz
ZWxlY3Rvci0+c3R5bGUoKS0+c2V0SGFzQ2xpcCh0cnVlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
dm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKLSAgICB7
Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRDbGlwKExlbmd0aCgpLCBMZW5ndGgoKSwg
TGVuZ3RoKCksIExlbmd0aCgpKTsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0Ns
aXAoZmFsc2UpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVT
ZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmICgh
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKLQotICAgICAgICBpZiAoUmVjdCogcmVjdCA9IHByaW1pdGl2
ZVZhbHVlLT5nZXRSZWN0VmFsdWUoKSkgewotICAgICAgICAgICAgTGVuZ3RoIHRvcCA9IGNvbnZl
cnRUb0xlbmd0aChzZWxlY3RvciwgcmVjdC0+dG9wKCkpOwotICAgICAgICAgICAgTGVuZ3RoIHJp
Z2h0ID0gY29udmVydFRvTGVuZ3RoKHNlbGVjdG9yLCByZWN0LT5yaWdodCgpKTsKLSAgICAgICAg
ICAgIExlbmd0aCBib3R0b20gPSBjb252ZXJ0VG9MZW5ndGgoc2VsZWN0b3IsIHJlY3QtPmJvdHRv
bSgpKTsKLSAgICAgICAgICAgIExlbmd0aCBsZWZ0ID0gY29udmVydFRvTGVuZ3RoKHNlbGVjdG9y
LCByZWN0LT5sZWZ0KCkpOwotICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldENsaXAo
dG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTsKLSAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgp
LT5zZXRIYXNDbGlwKHRydWUpOwotICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykgewotICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxl
KCktPnNldENsaXAoTGVuZ3RoKCksIExlbmd0aCgpLCBMZW5ndGgoKSwgTGVuZ3RoKCkpOwotICAg
ICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0NsaXAodHJ1ZSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKSB7IHJl
dHVybiBQcm9wZXJ0eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFsVmFs
dWUsICZhcHBseVZhbHVlKTsgfQotfTsKLQotZW51bSBDb2xvckluaGVyaXQge05vSW5oZXJpdEZy
b21QYXJlbnQgPSAwLCBJbmhlcml0RnJvbVBhcmVudH07Ci1Db2xvciBkZWZhdWx0SW5pdGlhbENv
bG9yKCk7Ci1Db2xvciBkZWZhdWx0SW5pdGlhbENvbG9yKCkgeyByZXR1cm4gQ29sb3IoKTsgfQot
dGVtcGxhdGUgPENvbG9ySW5oZXJpdCBpbmhlcml0Q29sb3JGcm9tUGFyZW50LAotICAgICAgICAg
IENvbG9yIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LAotICAgICAgICAg
IHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rpb24pKGNvbnN0IENvbG9yJiksCi0gICAg
ICAgICAgdm9pZCAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkTGlua1NldHRlckZ1bmN0aW9uKShjb25z
dCBDb2xvciYpLAotICAgICAgICAgIENvbG9yIChSZW5kZXJTdHlsZTo6KmRlZmF1bHRGdW5jdGlv
bikoKSBjb25zdCwKLSAgICAgICAgICBDb2xvciAoKmluaXRpYWxGdW5jdGlvbikoKSA9ICZkZWZh
dWx0SW5pdGlhbENvbG9yPgotY2xhc3MgQXBwbHlQcm9wZXJ0eUNvbG9yIHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rv
cikKLSAgICB7Ci0gICAgICAgIC8vIFZpc2l0ZWQgbGluayBzdHlsZSBjYW4gbmV2ZXIgZXhwbGlj
aXRseSBpbmhlcml0IGZyb20gcGFyZW50IHZpc2l0ZWQgbGluayBzdHlsZSBzbyBubyBzZXBhcmF0
ZSBnZXR0ZXJzIGFyZSBuZWVkZWQuCi0gICAgICAgIENvbG9yIGNvbG9yID0gKHNlbGVjdG9yLT5w
YXJlbnRTdHlsZSgpLT4qZ2V0dGVyRnVuY3Rpb24pKCk7Ci0gICAgICAgIGFwcGx5Q29sb3JWYWx1
ZShzZWxlY3RvciwgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiAoc2VsZWN0b3ItPnBhcmVudFN0
eWxlKCktPipkZWZhdWx0RnVuY3Rpb24pKCkpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGFw
cGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQotICAgIHsKLSAgICAg
ICAgYXBwbHlDb2xvclZhbHVlKHNlbGVjdG9yLCBpbml0aWFsRnVuY3Rpb24oKSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rvciwg
Q1NTVmFsdWUqIHZhbHVlKQotICAgIHsKLSAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OwotICAgICAgICBpZiAoaW5oZXJpdENvbG9yRnJvbVBhcmVudCAmJiBwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikKLSAgICAgICAgICAgIGFwcGx5SW5o
ZXJpdFZhbHVlKHNlbGVjdG9yKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc2Vs
ZWN0b3ItPmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpKQotICAgICAgICAgICAgICAgIChz
ZWxlY3Rvci0+c3R5bGUoKS0+KnNldHRlckZ1bmN0aW9uKShzZWxlY3Rvci0+Y29sb3JGcm9tUHJp
bWl0aXZlVmFsdWUocHJpbWl0aXZlVmFsdWUpKTsKLSAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+
YXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKQotICAgICAgICAgICAgICAgIChzZWxl
Y3Rvci0+c3R5bGUoKS0+KnZpc2l0ZWRMaW5rU2V0dGVyRnVuY3Rpb24pKHNlbGVjdG9yLT5jb2xv
ckZyb21QcmltaXRpdmVWYWx1ZShwcmltaXRpdmVWYWx1ZSwgLyogZm9yVmlzaXRlZExpbmsgKi8g
dHJ1ZSkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXBwbHlDb2xvclZh
bHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBjb25zdCBDb2xvciYgY29sb3IpCi0gICAg
ewotICAgICAgICBpZiAoc2VsZWN0b3ItPmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpKQot
ICAgICAgICAgICAgKHNlbGVjdG9yLT5zdHlsZSgpLT4qc2V0dGVyRnVuY3Rpb24pKGNvbG9yKTsK
LSAgICAgICAgaWYgKHNlbGVjdG9yLT5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkp
Ci0gICAgICAgICAgICAoc2VsZWN0b3ItPnN0eWxlKCktPip2aXNpdGVkTGlua1NldHRlckZ1bmN0
aW9uKShjb2xvcik7Ci0gICAgfQotCi0gICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVI
YW5kbGVyKCkgeyByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFw
cGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7IH0KLX07Ci0KLXRlbXBsYXRlIDxUZXh0RGly
ZWN0aW9uIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB2b2lkIChSZW5k
ZXJTdHlsZTo6KnNldHRlckZ1bmN0aW9uKShUZXh0RGlyZWN0aW9uKSwgVGV4dERpcmVjdGlvbiAo
KmluaXRpYWxGdW5jdGlvbikoKT4KLWNsYXNzIEFwcGx5UHJvcGVydHlEaXJlY3Rpb24gewotcHVi
bGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IsIENTU1ZhbHVlKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0
PFRleHREaXJlY3Rpb24sIGdldHRlckZ1bmN0aW9uLCBUZXh0RGlyZWN0aW9uLCBzZXR0ZXJGdW5j
dGlvbiwgVGV4dERpcmVjdGlvbiwgaW5pdGlhbEZ1bmN0aW9uPjo6YXBwbHlWYWx1ZShzZWxlY3Rv
ciwgdmFsdWUpOwotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc2VsZWN0b3ItPmVsZW1lbnQo
KTsKLSAgICAgICAgaWYgKGVsZW1lbnQgJiYgc2VsZWN0b3ItPmVsZW1lbnQoKSA9PSBlbGVtZW50
LT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkKLSAgICAgICAgICAgIGVsZW1lbnQtPmRv
Y3VtZW50KCktPnNldERpcmVjdGlvblNldE9uRG9jdW1lbnRFbGVtZW50KHRydWUpOwotICAgIH0K
LQotICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCi0gICAgewotICAg
ICAgICBQcm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5UHJvcGVydHlEZWZhdWx0PFRleHRE
aXJlY3Rpb24sIGdldHRlckZ1bmN0aW9uLCBUZXh0RGlyZWN0aW9uLCBzZXR0ZXJGdW5jdGlvbiwg
VGV4dERpcmVjdGlvbiwgaW5pdGlhbEZ1bmN0aW9uPjo6Y3JlYXRlSGFuZGxlcigpOwotICAgICAg
ICByZXR1cm4gUHJvcGVydHlIYW5kbGVyKGhhbmRsZXIuaW5oZXJpdEZ1bmN0aW9uKCksIGhhbmRs
ZXIuaW5pdGlhbEZ1bmN0aW9uKCksICZhcHBseVZhbHVlKTsKLSAgICB9Ci19OwotCi1lbnVtIExl
bmd0aEF1dG8geyBBdXRvRGlzYWJsZWQgPSAwLCBBdXRvRW5hYmxlZCB9OwotZW51bSBMZW5ndGhJ
bnRyaW5zaWMgeyBJbnRyaW5zaWNEaXNhYmxlZCA9IDAsIEludHJpbnNpY0VuYWJsZWQgfTsKLWVu
dW0gTGVuZ3RoTWluSW50cmluc2ljIHsgTWluSW50cmluc2ljRGlzYWJsZWQgPSAwLCBNaW5JbnRy
aW5zaWNFbmFibGVkIH07Ci1lbnVtIExlbmd0aE5vbmUgeyBOb25lRGlzYWJsZWQgPSAwLCBOb25l
RW5hYmxlZCB9OwotZW51bSBMZW5ndGhVbmRlZmluZWQgeyBVbmRlZmluZWREaXNhYmxlZCA9IDAs
IFVuZGVmaW5lZEVuYWJsZWQgfTsKLXRlbXBsYXRlIDxMZW5ndGggKFJlbmRlclN0eWxlOjoqZ2V0
dGVyRnVuY3Rpb24pKCkgY29uc3QsCi0gICAgICAgICAgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0
ZXJGdW5jdGlvbikoTGVuZ3RoKSwKLSAgICAgICAgICBMZW5ndGggKCppbml0aWFsRnVuY3Rpb24p
KCksCi0gICAgICAgICAgTGVuZ3RoQXV0byBhdXRvRW5hYmxlZCA9IEF1dG9EaXNhYmxlZCwKLSAg
ICAgICAgICBMZW5ndGhJbnRyaW5zaWMgaW50cmluc2ljRW5hYmxlZCA9IEludHJpbnNpY0Rpc2Fi
bGVkLAotICAgICAgICAgIExlbmd0aE1pbkludHJpbnNpYyBtaW5JbnRyaW5zaWNFbmFibGVkID0g
TWluSW50cmluc2ljRGlzYWJsZWQsCi0gICAgICAgICAgTGVuZ3RoTm9uZSBub25lRW5hYmxlZCA9
IE5vbmVEaXNhYmxlZCwKLSAgICAgICAgICBMZW5ndGhVbmRlZmluZWQgbm9uZVVuZGVmaW5lZCA9
IFVuZGVmaW5lZERpc2FibGVkPgotY2xhc3MgQXBwbHlQcm9wZXJ0eUxlbmd0aCB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIHZvaWQgc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBMZW5ndGggdmFs
dWUpIHsgKHN0eWxlLT4qc2V0dGVyRnVuY3Rpb24pKHZhbHVlKTsgfQotICAgIHN0YXRpYyB2b2lk
IGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgaWYgKG5v
bmVFbmFibGVkICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkK
LSAgICAgICAgICAgIGlmIChub25lVW5kZWZpbmVkKQotICAgICAgICAgICAgICAgIHNldFZhbHVl
KHNlbGVjdG9yLT5zdHlsZSgpLCBMZW5ndGgoVW5kZWZpbmVkKSk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIExlbmd0aCgpKTsK
LSAgICAgICAgZWxzZSBpZiAoaW50cmluc2ljRW5hYmxlZCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZUludHJpbnNpYykKLSAgICAgICAgICAgIHNldFZhbHVlKHNlbGVj
dG9yLT5zdHlsZSgpLCBMZW5ndGgoSW50cmluc2ljKSk7Ci0gICAgICAgIGVsc2UgaWYgKG1pbklu
dHJpbnNpY0VuYWJsZWQgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVN
aW5JbnRyaW5zaWMpCi0gICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgTGVu
Z3RoKE1pbkludHJpbnNpYykpOwotICAgICAgICBlbHNlIGlmIChhdXRvRW5hYmxlZCAmJiBwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICBzZXRW
YWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgTGVuZ3RoKCkpOwotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgoKSkgewotICAgICAgICAgICAgICAg
IExlbmd0aCBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHNl
bGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzZWxlY3Rvci0+
c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKLSAgICAgICAgICAgICAgICBsZW5ndGguc2V0UXVp
cmsocHJpbWl0aXZlVmFsdWUtPmlzUXVpcmtWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBzZXRW
YWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgbGVuZ3RoKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
cHJpbWl0aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQotICAgICAgICAgICAgICAgIHNldFZhbHVl
KHNlbGVjdG9yLT5zdHlsZSgpLCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVl
KCksIFBlcmNlbnQpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0Nh
bGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQotICAgICAgICAgICAgICAgIHNldFZhbHVl
KHNlbGVjdG9yLT5zdHlsZSgpLCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNzc0NhbGNWYWx1ZSgp
LT50b0NhbGNWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5
bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpKTsgICAgICAgICAgICAK
LSAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1ZpZXdwb3J0UGVyY2VudGFn
ZUxlbmd0aCgpKQotICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBw
cmltaXRpdmVWYWx1ZS0+dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkpOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKLSAgICB7
Ci0gICAgICAgIFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9wZXJ0eURlZmF1bHRC
YXNlPExlbmd0aCwgZ2V0dGVyRnVuY3Rpb24sIExlbmd0aCwgc2V0dGVyRnVuY3Rpb24sIExlbmd0
aCwgaW5pdGlhbEZ1bmN0aW9uPjo6Y3JlYXRlSGFuZGxlcigpOwotICAgICAgICByZXR1cm4gUHJv
cGVydHlIYW5kbGVyKGhhbmRsZXIuaW5oZXJpdEZ1bmN0aW9uKCksIGhhbmRsZXIuaW5pdGlhbEZ1
bmN0aW9uKCksICZhcHBseVZhbHVlKTsKLSAgICB9Ci19OwotCi1lbnVtIFN0cmluZ0lkZW50QmVo
YXZpb3IgeyBOb3RoaW5nTWFwc1RvTnVsbCA9IDAsIE1hcE5vbmVUb051bGwsIE1hcEF1dG9Ub051
bGwgfTsKLXRlbXBsYXRlIDxTdHJpbmdJZGVudEJlaGF2aW9yIGlkZW50QmVoYXZpb3IsIGNvbnN0
IEF0b21pY1N0cmluZyYgKFJlbmRlclN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29uc3QsIHZv
aWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rpb24pKGNvbnN0IEF0b21pY1N0cmluZyYpLCBj
b25zdCBBdG9taWNTdHJpbmcmICgqaW5pdGlhbEZ1bmN0aW9uKSgpPgotY2xhc3MgQXBwbHlQcm9w
ZXJ0eVN0cmluZyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc2V0VmFsdWUoUmVuZGVyU3R5
bGUqIHN0eWxlLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSB7IChzdHlsZS0+KnNldHRlckZ1
bmN0aW9uKSh2YWx1ZSk7IH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCi0gICAgewotICAgICAgICBpZiAoIXZh
bHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOwotICAgICAgICBpZiAoKGlkZW50QmVoYXZpb3IgPT0gTWFwTm9uZVRv
TnVsbCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpCi0gICAg
ICAgICAgICB8fCAoaWRlbnRCZWhhdmlvciA9PSBNYXBBdXRvVG9OdWxsICYmIHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykpCi0gICAgICAgICAgICBzZXRWYWx1ZShz
ZWxlY3Rvci0+c3R5bGUoKSwgbnVsbEF0b20pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBz
ZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgcHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVl
KCkpOwotICAgIH0KLSAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQot
ICAgIHsKLSAgICAgICAgUHJvcGVydHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5RGVm
YXVsdEJhc2U8Y29uc3QgQXRvbWljU3RyaW5nJiwgZ2V0dGVyRnVuY3Rpb24sIGNvbnN0IEF0b21p
Y1N0cmluZyYsIHNldHRlckZ1bmN0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmLCBpbml0aWFsRnVu
Y3Rpb24+OjpjcmVhdGVIYW5kbGVyKCk7Ci0gICAgICAgIHJldHVybiBQcm9wZXJ0eUhhbmRsZXIo
aGFuZGxlci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFsRnVuY3Rpb24oKSwgJmFw
cGx5VmFsdWUpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlIDxMZW5ndGhTaXplIChSZW5kZXJTdHls
ZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlckZ1
bmN0aW9uKShMZW5ndGhTaXplKSwgTGVuZ3RoU2l6ZSAoKmluaXRpYWxGdW5jdGlvbikoKT4KLWNs
YXNzIEFwcGx5UHJvcGVydHlCb3JkZXJSYWRpdXMgewotcHVibGljOgotICAgIHN0YXRpYyB2b2lk
IHNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgTGVuZ3RoU2l6ZSB2YWx1ZSkgeyAoc3R5bGUt
PipzZXR0ZXJGdW5jdGlvbikodmFsdWUpOyB9Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShD
U1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAgICAgICBQYWlyKiBwYWlyID0gcHJpbWl0
aXZlVmFsdWUtPmdldFBhaXJWYWx1ZSgpOwotICAgICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZp
cnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IExlbmd0aCByYWRpdXNXaWR0aDsKLSAgICAgICAgTGVuZ3RoIHJhZGl1c0hlaWdodDsKLSAgICAg
ICAgaWYgKHBhaXItPmZpcnN0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICAgICAgcmFkaXVz
V2lkdGggPSBMZW5ndGgocGFpci0+Zmlyc3QoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7
Ci0gICAgICAgIGVsc2UgaWYgKHBhaXItPmZpcnN0KCktPmlzVmlld3BvcnRQZXJjZW50YWdlTGVu
Z3RoKCkpCi0gICAgICAgICAgICByYWRpdXNXaWR0aCA9IHBhaXItPmZpcnN0KCktPnZpZXdwb3J0
UGVyY2VudGFnZUxlbmd0aCgpOwotICAgICAgICBlbHNlIGlmIChwYWlyLT5maXJzdCgpLT5pc0Nh
bGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRSBj
YWxjKCk6IGh0dHA6Ly93ZWJraXQub3JnL2IvMTY2NjIKLSAgICAgICAgICAgIC8vIGhhbmRsZSB0
aGlzIGNhc2UKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICByYWRpdXNXaWR0aCA9IHBhaXItPmZpcnN0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzZWxl
Y3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0
eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7Ci0gICAgICAgIGlmIChwYWlyLT5zZWNvbmQoKS0+aXNQ
ZXJjZW50YWdlKCkpCi0gICAgICAgICAgICByYWRpdXNIZWlnaHQgPSBMZW5ndGgocGFpci0+c2Vj
b25kKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwotICAgICAgICBlbHNlIGlmIChwYWly
LT5zZWNvbmQoKS0+aXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSkKLSAgICAgICAgICAgIHJh
ZGl1c0hlaWdodCA9IHBhaXItPnNlY29uZCgpLT52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKTsK
LSAgICAgICAgZWxzZSBpZiAocGFpci0+c2Vjb25kKCktPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VX
aXRoTGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FIGNhbGMoKTogaHR0cDovL3dlYmtp
dC5vcmcvYi8xNjY2MgotICAgICAgICAgICAgLy8gaGFuZGxlIHRoaXMgY2FzZQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IHBh
aXItPnNlY29uZCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc2VsZWN0b3ItPnN0eWxlKCksIHNl
bGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCksIHNlbGVjdG9yLT5zdHlsZSgpLT5lZmZlY3RpdmVa
b29tKCkpOwotICAgICAgICBpbnQgd2lkdGggPSByYWRpdXNXaWR0aC52YWx1ZSgpOwotICAgICAg
ICBpbnQgaGVpZ2h0ID0gcmFkaXVzSGVpZ2h0LnZhbHVlKCk7Ci0gICAgICAgIGlmICh3aWR0aCA8
IDAgfHwgaGVpZ2h0IDwgMCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKCF3aWR0
aCkKLSAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IHJhZGl1c1dpZHRoOyAvLyBOdWxsIG91dCB0
aGUgb3RoZXIgdmFsdWUuCi0gICAgICAgIGVsc2UgaWYgKCFoZWlnaHQpCi0gICAgICAgICAgICBy
YWRpdXNXaWR0aCA9IHJhZGl1c0hlaWdodDsgLy8gTnVsbCBvdXQgdGhlIG90aGVyIHZhbHVlLgot
Ci0gICAgICAgIExlbmd0aFNpemUgc2l6ZShyYWRpdXNXaWR0aCwgcmFkaXVzSGVpZ2h0KTsKLSAg
ICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIHNpemUpOwotICAgIH0KLSAgICBzdGF0
aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQotICAgIHsKLSAgICAgICAgUHJvcGVy
dHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8TGVuZ3RoU2l6ZSwg
Z2V0dGVyRnVuY3Rpb24sIExlbmd0aFNpemUsIHNldHRlckZ1bmN0aW9uLCBMZW5ndGhTaXplLCBp
bml0aWFsRnVuY3Rpb24+OjpjcmVhdGVIYW5kbGVyKCk7Ci0gICAgICAgIHJldHVybiBQcm9wZXJ0
eUhhbmRsZXIoaGFuZGxlci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFsRnVuY3Rp
b24oKSwgJmFwcGx5VmFsdWUpOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
c3RydWN0IEZpbGxMYXllckFjY2Vzc29yVHlwZXMgewotICAgIHR5cGVkZWYgVCBTZXR0ZXI7Ci0g
ICAgdHlwZWRlZiBUIEdldHRlcjsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgRmlsbExheWVy
QWNjZXNzb3JUeXBlczxTdHlsZUltYWdlKj4gewotICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxTdHls
ZUltYWdlPiBTZXR0ZXI7Ci0gICAgdHlwZWRlZiBTdHlsZUltYWdlKiBHZXR0ZXI7Ci19OwotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKLSAgICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQs
Ci0gICAgICAgICAgRUZpbGxMYXllclR5cGUgZmlsbExheWVyVHlwZSwKLSAgICAgICAgICBGaWxs
TGF5ZXIqIChSZW5kZXJTdHlsZTo6KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpLAotICAgICAgICAg
IGNvbnN0IEZpbGxMYXllciogKFJlbmRlclN0eWxlOjoqbGF5ZXJzRnVuY3Rpb24pKCkgY29uc3Qs
Ci0gICAgICAgICAgYm9vbCAoRmlsbExheWVyOjoqdGVzdEZ1bmN0aW9uKSgpIGNvbnN0LAotICAg
ICAgICAgIHR5cGVuYW1lIEZpbGxMYXllckFjY2Vzc29yVHlwZXM8VD46OkdldHRlciAoRmlsbExh
eWVyOjoqZ2V0RnVuY3Rpb24pKCkgY29uc3QsCi0gICAgICAgICAgdm9pZCAoRmlsbExheWVyOjoq
c2V0RnVuY3Rpb24pKHR5cGVuYW1lIEZpbGxMYXllckFjY2Vzc29yVHlwZXM8VD46OlNldHRlciks
Ci0gICAgICAgICAgdm9pZCAoRmlsbExheWVyOjoqY2xlYXJGdW5jdGlvbikoKSwKLSAgICAgICAg
ICB0eXBlbmFtZSBGaWxsTGF5ZXJBY2Nlc3NvclR5cGVzPFQ+OjpHZXR0ZXIgKCppbml0aWFsRnVu
Y3Rpb24pKEVGaWxsTGF5ZXJUeXBlKSwKLSAgICAgICAgICB2b2lkIChDU1NTdHlsZVNlbGVjdG9y
OjoqbWFwRmlsbEZ1bmN0aW9uKShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSop
PgotY2xhc3MgQXBwbHlQcm9wZXJ0eUZpbGxMYXllciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZv
aWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCi0gICAgewot
ICAgICAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IChzZWxlY3Rvci0+c3R5bGUoKS0+KmFjY2Vz
c0xheWVyc0Z1bmN0aW9uKSgpOwotICAgICAgICBGaWxsTGF5ZXIqIHByZXZDaGlsZCA9IDA7Ci0g
ICAgICAgIGNvbnN0IEZpbGxMYXllciogY3VyclBhcmVudCA9IChzZWxlY3Rvci0+cGFyZW50U3R5
bGUoKS0+KmxheWVyc0Z1bmN0aW9uKSgpOwotICAgICAgICB3aGlsZSAoY3VyclBhcmVudCAmJiAo
Y3VyclBhcmVudC0+KnRlc3RGdW5jdGlvbikoKSkgewotICAgICAgICAgICAgaWYgKCFjdXJyQ2hp
bGQpIHsKLSAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgbGF5ZXIuKi8KLSAg
ICAgICAgICAgICAgICBjdXJyQ2hpbGQgPSBuZXcgRmlsbExheWVyKGZpbGxMYXllclR5cGUpOwot
ICAgICAgICAgICAgICAgIHByZXZDaGlsZC0+c2V0TmV4dChjdXJyQ2hpbGQpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgKGN1cnJDaGlsZC0+KnNldEZ1bmN0aW9uKSgoY3VyclBhcmVudC0+
KmdldEZ1bmN0aW9uKSgpKTsKLSAgICAgICAgICAgIHByZXZDaGlsZCA9IGN1cnJDaGlsZDsKLSAg
ICAgICAgICAgIGN1cnJDaGlsZCA9IHByZXZDaGlsZC0+bmV4dCgpOwotICAgICAgICAgICAgY3Vy
clBhcmVudCA9IGN1cnJQYXJlbnQtPm5leHQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHdoaWxl
IChjdXJyQ2hpbGQpIHsKLSAgICAgICAgICAgIC8qIFJlc2V0IGFueSByZW1haW5pbmcgbGF5ZXJz
IHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovCi0gICAgICAgICAgICAoY3VyckNoaWxk
LT4qY2xlYXJGdW5jdGlvbikoKTsKLSAgICAgICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+
bmV4dCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFs
VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCi0gICAgewotICAgICAgICBGaWxsTGF5
ZXIqIGN1cnJDaGlsZCA9IChzZWxlY3Rvci0+c3R5bGUoKS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9u
KSgpOwotICAgICAgICAoY3VyckNoaWxkLT4qc2V0RnVuY3Rpb24pKCgqaW5pdGlhbEZ1bmN0aW9u
KShmaWxsTGF5ZXJUeXBlKSk7Ci0gICAgICAgIGZvciAoY3VyckNoaWxkID0gY3VyckNoaWxkLT5u
ZXh0KCk7IGN1cnJDaGlsZDsgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCkpCi0gICAgICAg
ICAgICAoY3VyckNoaWxkLT4qY2xlYXJGdW5jdGlvbikoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
dm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFs
dWUpCi0gICAgewotICAgICAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IChzZWxlY3Rvci0+c3R5
bGUoKS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpOwotICAgICAgICBGaWxsTGF5ZXIqIHByZXZD
aGlsZCA9IDA7Ci0gICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKQotI2lmIEVOQUJMRShD
U1NfSU1BR0VfU0VUKQotICAgICAgICAmJiAhdmFsdWUtPmlzSW1hZ2VTZXRWYWx1ZSgpCi0jZW5k
aWYKLSAgICAgICAgKSB7Ci0gICAgICAgICAgICAvKiBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBp
dCBpbnRvIGEgbGF5ZXIsIGNyZWF0aW5nIG5ldyBsYXllcnMgYXMgbmVlZGVkLiAqLwotICAgICAg
ICAgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3Qq
Pih2YWx1ZSk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHZhbHVl
TGlzdC0+bGVuZ3RoKCk7IGkrKykgewotICAgICAgICAgICAgICAgIGlmICghY3VyckNoaWxkKSB7
Ci0gICAgICAgICAgICAgICAgICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBsYXllciB0byBob2xk
IHRoaXMgdmFsdWUgKi8KLSAgICAgICAgICAgICAgICAgICAgY3VyckNoaWxkID0gbmV3IEZpbGxM
YXllcihmaWxsTGF5ZXJUeXBlKTsKLSAgICAgICAgICAgICAgICAgICAgcHJldkNoaWxkLT5zZXRO
ZXh0KGN1cnJDaGlsZCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIChzZWxl
Y3Rvci0+Km1hcEZpbGxGdW5jdGlvbikocHJvcGVydHlJZCwgY3VyckNoaWxkLCB2YWx1ZUxpc3Qt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOwotICAgICAgICAgICAgICAgIHByZXZDaGlsZCA9
IGN1cnJDaGlsZDsKLSAgICAgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQo
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIChzZWxlY3Rv
ci0+Km1hcEZpbGxGdW5jdGlvbikocHJvcGVydHlJZCwgY3VyckNoaWxkLCB2YWx1ZSk7Ci0gICAg
ICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsKLSAgICAgICAgfQotICAgICAg
ICB3aGlsZSAoY3VyckNoaWxkKSB7Ci0gICAgICAgICAgICAvKiBSZXNldCBhbGwgcmVtYWluaW5n
IGxheWVycyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLwotICAgICAgICAgICAgKGN1
cnJDaGlsZC0+KmNsZWFyRnVuY3Rpb24pKCk7Ci0gICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJy
Q2hpbGQtPm5leHQoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBQcm9wZXJ0eUhh
bmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFByb3BlcnR5SGFuZGxlcigmYXBwbHlJbmhl
cml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFsdWUpOyB9Ci19OwotCi1lbnVt
IENvbXB1dGVMZW5ndGhOb3JtYWwge05vcm1hbERpc2FibGVkID0gMCwgTm9ybWFsRW5hYmxlZH07
Ci1lbnVtIENvbXB1dGVMZW5ndGhUaGlja25lc3Mge1RoaWNrbmVzc0Rpc2FibGVkID0gMCwgVGhp
Y2tuZXNzRW5hYmxlZH07Ci1lbnVtIENvbXB1dGVMZW5ndGhTVkdab29tIHtTVkdab29tRGlzYWJs
ZWQgPSAwLCBTVkdab29tRW5hYmxlZH07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKLSAgICAgICAg
ICBUIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LAotICAgICAgICAgIHZv
aWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rpb24pKFQpLAotICAgICAgICAgIFQgKCppbml0
aWFsRnVuY3Rpb24pKCksCi0gICAgICAgICAgQ29tcHV0ZUxlbmd0aE5vcm1hbCBub3JtYWxFbmFi
bGVkID0gTm9ybWFsRGlzYWJsZWQsCi0gICAgICAgICAgQ29tcHV0ZUxlbmd0aFRoaWNrbmVzcyB0
aGlja25lc3NFbmFibGVkID0gVGhpY2tuZXNzRGlzYWJsZWQsCi0gICAgICAgICAgQ29tcHV0ZUxl
bmd0aFNWR1pvb20gc3ZnWm9vbUVuYWJsZWQgPSBTVkdab29tRGlzYWJsZWQ+Ci1jbGFzcyBBcHBs
eVByb3BlcnR5Q29tcHV0ZUxlbmd0aCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc2V0VmFs
dWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBUIHZhbHVlKSB7IChzdHlsZS0+KnNldHRlckZ1bmN0aW9u
KSh2YWx1ZSk7IH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3Iq
IHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCi0gICAgewotICAgICAgICAvLyBub3RlOiBDU1NQ
cm9wZXJ0eUxldHRlci9Xb3JkU3BhY2luZyByaWdodCBub3cgc2V0cyB0byB6ZXJvIGlmIGl0J3Mg
bm90IGEgcHJpbWl0aXZlIHZhbHVlIGZvciBzb21lIHJlYXNvbi4uLgotICAgICAgICBpZiAoIXZh
bHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7Ci0KLSAgICAgICAgaW50IGlkZW50ID0gcHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCk7Ci0gICAgICAgIFQgbGVuZ3RoOwotICAgICAgICBpZiAobm9ybWFsRW5hYmxl
ZCAmJiBpZGVudCA9PSBDU1NWYWx1ZU5vcm1hbCkgewotICAgICAgICAgICAgbGVuZ3RoID0gMDsK
LSAgICAgICAgfSBlbHNlIGlmICh0aGlja25lc3NFbmFibGVkICYmIGlkZW50ID09IENTU1ZhbHVl
VGhpbikgewotICAgICAgICAgICAgbGVuZ3RoID0gMTsKLSAgICAgICAgfSBlbHNlIGlmICh0aGlj
a25lc3NFbmFibGVkICYmIGlkZW50ID09IENTU1ZhbHVlTWVkaXVtKSB7Ci0gICAgICAgICAgICBs
ZW5ndGggPSAzOwotICAgICAgICB9IGVsc2UgaWYgKHRoaWNrbmVzc0VuYWJsZWQgJiYgaWRlbnQg
PT0gQ1NTVmFsdWVUaGljaykgewotICAgICAgICAgICAgbGVuZ3RoID0gNTsKLSAgICAgICAgfSBl
bHNlIGlmIChpZGVudCA9PSBDU1NWYWx1ZUludmFsaWQpIHsKLSAgICAgICAgICAgIGZsb2F0IHpv
b20gPSAoc3ZnWm9vbUVuYWJsZWQgJiYgc2VsZWN0b3ItPnVzZVNWR1pvb21SdWxlcygpKSA/IDEu
MGYgOiBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOwotICAgICAgICAgICAgbGVu
Z3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8VD4oc2VsZWN0b3ItPnN0eWxlKCks
IHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCksIHpvb20pOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBsZW5ndGggPSAw
OwotICAgICAgICB9Ci0KLSAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIGxlbmd0
aCk7Ci0gICAgfQotICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCi0g
ICAgewotICAgICAgICBQcm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5UHJvcGVydHlEZWZh
dWx0QmFzZTxULCBnZXR0ZXJGdW5jdGlvbiwgVCwgc2V0dGVyRnVuY3Rpb24sIFQsIGluaXRpYWxG
dW5jdGlvbj46OmNyZWF0ZUhhbmRsZXIoKTsKLSAgICAgICAgcmV0dXJuIFByb3BlcnR5SGFuZGxl
cihoYW5kbGVyLmluaGVyaXRGdW5jdGlvbigpLCBoYW5kbGVyLmluaXRpYWxGdW5jdGlvbigpLCAm
YXBwbHlWYWx1ZSk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIFQgKEZvbnRE
ZXNjcmlwdGlvbjo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB2b2lkIChGb250RGVzY3JpcHRp
b246OipzZXR0ZXJGdW5jdGlvbikoVCksIFQgaW5pdGlhbFZhbHVlPgotY2xhc3MgQXBwbHlQcm9w
ZXJ0eUZvbnQgewotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENT
U1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQotICAgIHsKLSAgICAgICAgRm9udERlc2NyaXB0aW9u
IGZvbnREZXNjcmlwdGlvbiA9IHNlbGVjdG9yLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAg
KGZvbnREZXNjcmlwdGlvbi4qc2V0dGVyRnVuY3Rpb24pKChzZWxlY3Rvci0+cGFyZW50Rm9udERl
c2NyaXB0aW9uKCkuKmdldHRlckZ1bmN0aW9uKSgpKTsKLSAgICAgICAgc2VsZWN0b3ItPnNldEZv
bnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lk
IGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQotICAgIHsKLSAg
ICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHNlbGVjdG9yLT5mb250RGVz
Y3JpcHRpb24oKTsKLSAgICAgICAgKGZvbnREZXNjcmlwdGlvbi4qc2V0dGVyRnVuY3Rpb24pKGlu
aXRpYWxWYWx1ZSk7Ci0gICAgICAgIHNlbGVjdG9yLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERl
c2NyaXB0aW9uKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCi0gICAgewotICAgICAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOwotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0
aW9uID0gc2VsZWN0b3ItPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICAoZm9udERlc2NyaXB0
aW9uLipzZXR0ZXJGdW5jdGlvbikoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgc2VsZWN0b3It
PnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwotICAgIH0KLQotICAgIHN0YXRp
YyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFByb3BlcnR5SGFuZGxl
cigmYXBwbHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFsdWUpOyB9
Ci19OwotCi1jbGFzcyBBcHBseVByb3BlcnR5Rm9udFNpemUgewotcHJpdmF0ZToKLSAgICAvLyBX
aGVuIHRoZSBDU1Mga2V5d29yZCAibGFyZ2VyIiBpcyB1c2VkLCB0aGlzIGZ1bmN0aW9uIHdpbGwg
YXR0ZW1wdCB0byBtYXRjaCB3aXRoaW4gdGhlIGtleXdvcmQKLSAgICAvLyB0YWJsZSwgYW5kIGZh
aWxpbmcgdGhhdCwgd2lsbCBzaW1wbHkgbXVsdGlwbHkgYnkgMS4yLgotICAgIHN0YXRpYyBmbG9h
dCBsYXJnZXJGb250U2l6ZShmbG9hdCBzaXplKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IEZp
Z3VyZSBvdXQgd2hlcmUgd2UgZmFsbCBpbiB0aGUgc2l6ZSByYW5nZXMgKHh4LXNtYWxsIHRvIHh4
eC1sYXJnZSkgYW5kIHNjYWxlIHVwIHRvCi0gICAgICAgIC8vIHRoZSBuZXh0IHNpemUgbGV2ZWwu
Ci0gICAgICAgIHJldHVybiBzaXplICogMS4yZjsKLSAgICB9Ci0KLSAgICAvLyBMaWtlIHRoZSBw
cmV2aW91cyBmdW5jdGlvbiwgYnV0IGZvciB0aGUga2V5d29yZCAic21hbGxlciIuCi0gICAgc3Rh
dGljIGZsb2F0IHNtYWxsZXJGb250U2l6ZShmbG9hdCBzaXplKQotICAgIHsKLSAgICAgICAgLy8g
RklYTUU6IEZpZ3VyZSBvdXQgd2hlcmUgd2UgZmFsbCBpbiB0aGUgc2l6ZSByYW5nZXMgKHh4LXNt
YWxsIHRvIHh4eC1sYXJnZSkgYW5kIHNjYWxlIGRvd24gdG8KLSAgICAgICAgLy8gdGhlIG5leHQg
c2l6ZSBsZXZlbC4KLSAgICAgICAgcmV0dXJuIHNpemUgLyAxLjJmOwotICAgIH0KLXB1YmxpYzoK
LSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxl
Y3RvcikKLSAgICB7Ci0gICAgICAgIGZsb2F0IHNpemUgPSBzZWxlY3Rvci0+cGFyZW50U3R5bGUo
KS0+Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOwotCi0gICAgICAgIGlmIChzaXpl
IDwgMCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9u
dERlc2NyaXB0aW9uID0gc2VsZWN0b3ItPnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOwotICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUoc2VsZWN0b3ItPnBhcmVudFN0eWxl
KCktPmZvbnREZXNjcmlwdGlvbigpLmtleXdvcmRTaXplKCkpOwotICAgICAgICBzZWxlY3Rvci0+
c2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBzaXplKTsKLSAgICAgICAgc2VsZWN0b3ItPnNl
dEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciog
c2VsZWN0b3IpCi0gICAgewotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9u
ID0gc2VsZWN0b3ItPnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBmbG9hdCBz
aXplID0gc2VsZWN0b3ItPmZvbnRTaXplRm9yS2V5d29yZChzZWxlY3Rvci0+ZG9jdW1lbnQoKSwg
Q1NTVmFsdWVNZWRpdW0sIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCkpOwot
Ci0gICAgICAgIGlmIChzaXplIDwgMCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUoQ1NTVmFsdWVNZWRpdW0gLSBDU1NWYWx1ZVh4
U21hbGwgKyAxKTsKLSAgICAgICAgc2VsZWN0b3ItPnNldEZvbnRTaXplKGZvbnREZXNjcmlwdGlv
biwgc2l6ZSk7Ci0gICAgICAgIHNlbGVjdG9yLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2Ny
aXB0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGFwcGx5
VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKLSAgICB7
Ci0gICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLQotICAgICAgICBGb250RGVzY3Jp
cHRpb24gZm9udERlc2NyaXB0aW9uID0gc2VsZWN0b3ItPnN0eWxlKCktPmZvbnREZXNjcmlwdGlv
bigpOwotICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUoMCk7Ci0gICAgICAg
IGZsb2F0IHBhcmVudFNpemUgPSAwOwotICAgICAgICBib29sIHBhcmVudElzQWJzb2x1dGVTaXpl
ID0gZmFsc2U7Ci0gICAgICAgIGZsb2F0IHNpemUgPSAwOwotCi0gICAgICAgIGlmIChzZWxlY3Rv
ci0+aGFzUGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICBwYXJlbnRTaXplID0gc2VsZWN0b3It
PnBhcmVudFN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKTsKLSAgICAg
ICAgICAgIHBhcmVudElzQWJzb2x1dGVTaXplID0gc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPmZv
bnREZXNjcmlwdGlvbigpLmlzQWJzb2x1dGVTaXplKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoaW50IGlkZW50ID0gcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAg
IC8vIEtleXdvcmRzIGFyZSBiZWluZyB1c2VkLgotICAgICAgICAgICAgc3dpdGNoIChpZGVudCkg
ewotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVh4U21hbGw6Ci0gICAgICAgICAgICBjYXNlIENT
U1ZhbHVlWFNtYWxsOgotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVNtYWxsOgotICAgICAgICAg
ICAgY2FzZSBDU1NWYWx1ZU1lZGl1bToKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMYXJnZToK
LSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVYTGFyZ2U6Ci0gICAgICAgICAgICBjYXNlIENTU1Zh
bHVlWHhMYXJnZToKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRYeHhMYXJnZToKLSAg
ICAgICAgICAgICAgICBzaXplID0gc2VsZWN0b3ItPmZvbnRTaXplRm9yS2V5d29yZChzZWxlY3Rv
ci0+ZG9jdW1lbnQoKSwgaWRlbnQsIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXpl
KCkpOwotICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZShpZGVu
dCAtIENTU1ZhbHVlWHhTbWFsbCArIDEpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUxhcmdlcjoKLSAgICAgICAgICAgICAgICBzaXplID0gbGFyZ2Vy
Rm9udFNpemUocGFyZW50U2l6ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlU21hbGxlcjoKLSAgICAgICAgICAgICAgICBzaXplID0gc21hbGxlckZv
bnRTaXplKHBhcmVudFNpemUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZShwYXJlbnRJc0Fic29sdXRl
U2l6ZSAmJiAoaWRlbnQgPT0gQ1NTVmFsdWVMYXJnZXIgfHwgaWRlbnQgPT0gQ1NTVmFsdWVTbWFs
bGVyKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
SXNBYnNvbHV0ZVNpemUocGFyZW50SXNBYnNvbHV0ZVNpemUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRh
Z2UoKSB8fCBwcmltaXRpdmVWYWx1ZS0+aXNGb250UmVsYXRpdmVMZW5ndGgoKSkpOwotICAgICAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKQotICAgICAgICAgICAgICAgIHNp
emUgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc2VsZWN0b3ItPnBhcmVu
dFN0eWxlKCksIHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCksIDEuMCwgdHJ1ZSk7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAg
ICAgICAgICAgc2l6ZSA9IChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpICogcGFyZW50
U2l6ZSkgLyAxMDAuMGY7Ci0gICAgICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXND
YWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKLSAgICAgICAgICAgICAgICBzaXplID0g
cHJpbWl0aXZlVmFsdWUtPmNzc0NhbGNWYWx1ZSgpLT50b0NhbGNWYWx1ZShzZWxlY3Rvci0+cGFy
ZW50U3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSktPmV2YWx1YXRlKHBhcmVu
dFNpemUpOyAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLT5pc1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpKQotICAgICAgICAgICAgICAgIHNpemUg
PSB2YWx1ZUZvckxlbmd0aChwcmltaXRpdmVWYWx1ZS0+dmlld3BvcnRQZXJjZW50YWdlTGVuZ3Ro
KCksIDAsIHNlbGVjdG9yLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChz
aXplIDwgMCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBzZWxlY3Rvci0+c2V0Rm9u
dFNpemUoZm9udERlc2NyaXB0aW9uLCBzaXplKTsKLSAgICAgICAgc2VsZWN0b3ItPnNldEZvbnRE
ZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyByZXR1cm4gUHJvcGVy
dHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlW
YWx1ZSk7IH0KLX07Ci0KLWNsYXNzIEFwcGx5UHJvcGVydHlGb250V2VpZ2h0IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBD
U1NWYWx1ZSogdmFsdWUpCi0gICAgewotICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwot
ICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc2VsZWN0b3ItPmZvbnRE
ZXNjcmlwdGlvbigpOwotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
KSB7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVJbnZhbGlkOgotICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZUJv
bGRlcjoKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoZm9udERlc2NyaXB0
aW9uLmJvbGRlcldlaWdodCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENT
U1ZhbHVlTGlnaHRlcjoKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoZm9u
dERlc2NyaXB0aW9uLmxpZ2h0ZXJXZWlnaHQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoKnByaW1p
dGl2ZVZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICBzZWxlY3Rvci0+c2V0Rm9udERlc2NyaXB0
aW9uKGZvbnREZXNjcmlwdGlvbik7Ci0gICAgfQotICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIg
Y3JlYXRlSGFuZGxlcigpCi0gICAgewotICAgICAgICBQcm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9
IEFwcGx5UHJvcGVydHlGb250PEZvbnRXZWlnaHQsICZGb250RGVzY3JpcHRpb246OndlaWdodCwg
JkZvbnREZXNjcmlwdGlvbjo6c2V0V2VpZ2h0LCBGb250V2VpZ2h0Tm9ybWFsPjo6Y3JlYXRlSGFu
ZGxlcigpOwotICAgICAgICByZXR1cm4gUHJvcGVydHlIYW5kbGVyKGhhbmRsZXIuaW5oZXJpdEZ1
bmN0aW9uKCksIGhhbmRsZXIuaW5pdGlhbEZ1bmN0aW9uKCksICZhcHBseVZhbHVlKTsKLSAgICB9
Ci19OwotCi1jbGFzcyBBcHBseVByb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMgewotcHVibGlj
OgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNl
bGVjdG9yKQotICAgIHsKLSAgICAgICAgY29uc3QgRm9udERlc2NyaXB0aW9uJiBwYXJlbnRGb250
RGVzY3JpcHRpb24gPSBzZWxlY3Rvci0+cGFyZW50Rm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAg
IEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzZWxlY3Rvci0+Zm9udERlc2NyaXB0
aW9uKCk7Ci0KLSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbW1vbkxpZ2F0dXJlc1N0YXRl
KHBhcmVudEZvbnREZXNjcmlwdGlvbi5jb21tb25MaWdhdHVyZXNTdGF0ZSgpKTsKLSAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldERpc2NyZXRpb25hcnlMaWdhdHVyZXNTdGF0ZShwYXJlbnRGb250
RGVzY3JpcHRpb24uZGlzY3JldGlvbmFyeUxpZ2F0dXJlc1N0YXRlKCkpOwotICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0SGlzdG9yaWNhbExpZ2F0dXJlc1N0YXRlKHBhcmVudEZvbnREZXNjcmlw
dGlvbi5oaXN0b3JpY2FsTGlnYXR1cmVzU3RhdGUoKSk7Ci0KLSAgICAgICAgc2VsZWN0b3ItPnNl
dEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQotICAgIHsK
LSAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHNlbGVjdG9yLT5mb250
RGVzY3JpcHRpb24oKTsKLQotICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tbW9uTGlnYXR1
cmVzU3RhdGUoRm9udERlc2NyaXB0aW9uOjpOb3JtYWxMaWdhdHVyZXNTdGF0ZSk7Ci0gICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzU3RhdGUoRm9udERlc2Ny
aXB0aW9uOjpOb3JtYWxMaWdhdHVyZXNTdGF0ZSk7Ci0gICAgICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRIaXN0b3JpY2FsTGlnYXR1cmVzU3RhdGUoRm9udERlc2NyaXB0aW9uOjpOb3JtYWxMaWdhdHVy
ZXNTdGF0ZSk7Ci0KLSAgICAgICAgc2VsZWN0b3ItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVz
Y3JpcHRpb24pOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVT
ZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEZvbnRE
ZXNjcmlwdGlvbjo6TGlnYXR1cmVzU3RhdGUgY29tbW9uTGlnYXR1cmVzU3RhdGUgPSBGb250RGVz
Y3JpcHRpb246Ok5vcm1hbExpZ2F0dXJlc1N0YXRlOwotICAgICAgICBGb250RGVzY3JpcHRpb246
OkxpZ2F0dXJlc1N0YXRlIGRpc2NyZXRpb25hcnlMaWdhdHVyZXNTdGF0ZSA9IEZvbnREZXNjcmlw
dGlvbjo6Tm9ybWFsTGlnYXR1cmVzU3RhdGU7Ci0gICAgICAgIEZvbnREZXNjcmlwdGlvbjo6TGln
YXR1cmVzU3RhdGUgaGlzdG9yaWNhbExpZ2F0dXJlc1N0YXRlID0gRm9udERlc2NyaXB0aW9uOjpO
b3JtYWxMaWdhdHVyZXNTdGF0ZTsKLQotICAgICAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkp
IHsKLSAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NT
VmFsdWVMaXN0Kj4odmFsdWUpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2
YWx1ZUxpc3QtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBDU1NWYWx1ZSogaXRl
bSA9IHZhbHVlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQoaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAo
aXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4oaXRlbSk7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vQ29tbW9uTGln
YXR1cmVzOgotICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uTGlnYXR1cmVzU3RhdGUgPSBG
b250RGVzY3JpcHRpb246OkRpc2FibGVkTGlnYXR1cmVzU3RhdGU7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUNvbW1vbkxp
Z2F0dXJlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbkxpZ2F0dXJlc1N0YXRlID0g
Rm9udERlc2NyaXB0aW9uOjpFbmFibGVkTGlnYXR1cmVzU3RhdGU7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vRGlzY3Jl
dGlvbmFyeUxpZ2F0dXJlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NyZXRpb25hcnlM
aWdhdHVyZXNTdGF0ZSA9IEZvbnREZXNjcmlwdGlvbjo6RGlzYWJsZWRMaWdhdHVyZXNTdGF0ZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlRGlzY3JldGlvbmFyeUxpZ2F0dXJlczoKLSAgICAgICAgICAgICAgICAgICAgICAg
IGRpc2NyZXRpb25hcnlMaWdhdHVyZXNTdGF0ZSA9IEZvbnREZXNjcmlwdGlvbjo6RW5hYmxlZExp
Z2F0dXJlc1N0YXRlOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb0hpc3RvcmljYWxMaWdhdHVyZXM6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBoaXN0b3JpY2FsTGlnYXR1cmVzU3RhdGUgPSBGb250RGVzY3JpcHRpb246
OkRpc2FibGVkTGlnYXR1cmVzU3RhdGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUhpc3RvcmljYWxMaWdhdHVyZXM6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBoaXN0b3JpY2FsTGlnYXR1cmVzU3RhdGUgPSBGb250RGVz
Y3JpcHRpb246OkVuYWJsZWRMaWdhdHVyZXNTdGF0ZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBBU1NFUlQodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAgICAgICAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVOb3JtYWwpOwotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICBGb250RGVz
Y3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc2VsZWN0b3ItPmZvbnREZXNjcmlwdGlvbigpOwot
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tbW9uTGlnYXR1cmVzU3RhdGUoY29tbW9uTGln
YXR1cmVzU3RhdGUpOwotICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0RGlzY3JldGlvbmFyeUxp
Z2F0dXJlc1N0YXRlKGRpc2NyZXRpb25hcnlMaWdhdHVyZXNTdGF0ZSk7Ci0gICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRIaXN0b3JpY2FsTGlnYXR1cmVzU3RhdGUoaGlzdG9yaWNhbExpZ2F0dXJl
c1N0YXRlKTsKLSAgICAgICAgc2VsZWN0b3ItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3Jp
cHRpb24pOwotICAgIH0KLQotICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxl
cigpCi0gICAgewotICAgICAgICByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRW
YWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7Ci0gICAgfQotfTsKLQotZW51
bSBCb3JkZXJJbWFnZVR5cGUgeyBJbWFnZSA9IDAsIE1hc2sgfTsKLXRlbXBsYXRlIDxCb3JkZXJJ
bWFnZVR5cGUgYm9yZGVySW1hZ2VUeXBlLAotICAgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVy
dHksCi0gICAgICAgICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIChSZW5kZXJTdHlsZTo6KmdldHRl
ckZ1bmN0aW9uKSgpIGNvbnN0LAotICAgICAgICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVy
RnVuY3Rpb24pKGNvbnN0IE5pbmVQaWVjZUltYWdlJik+Ci1jbGFzcyBBcHBseVByb3BlcnR5Qm9y
ZGVySW1hZ2UgewotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVT
ZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIE5pbmVQ
aWVjZUltYWdlIGltYWdlOwotICAgICAgICBpZiAoYm9yZGVySW1hZ2VUeXBlID09IE1hc2spCi0g
ICAgICAgICAgICBpbWFnZS5zZXRNYXNrRGVmYXVsdHMoKTsKLSAgICAgICAgc2VsZWN0b3ItPm1h
cE5pbmVQaWVjZUltYWdlKHByb3BlcnR5LCB2YWx1ZSwgaW1hZ2UpOwotICAgICAgICAoc2VsZWN0
b3ItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoaW1hZ2UpOwotICAgIH0KLQotICAgIHN0YXRp
YyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCi0gICAgewotICAgICAgICBQcm9wZXJ0
eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxjb25zdCBOaW5lUGll
Y2VJbWFnZSYsIGdldHRlckZ1bmN0aW9uLCBjb25zdCBOaW5lUGllY2VJbWFnZSYsIHNldHRlckZ1
bmN0aW9uLCBOaW5lUGllY2VJbWFnZSwgJlJlbmRlclN0eWxlOjppbml0aWFsTmluZVBpZWNlSW1h
Z2U+OjpjcmVhdGVIYW5kbGVyKCk7Ci0gICAgICAgIHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoaGFu
ZGxlci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFsRnVuY3Rpb24oKSwgJmFwcGx5
VmFsdWUpOwotICAgIH0KLX07Ci0KLWVudW0gQm9yZGVySW1hZ2VNb2RpZmllclR5cGUgeyBPdXRz
ZXQsIFJlcGVhdCwgU2xpY2UsIFdpZHRoIH07Ci10ZW1wbGF0ZSA8Qm9yZGVySW1hZ2VUeXBlIHR5
cGUsIEJvcmRlckltYWdlTW9kaWZpZXJUeXBlIG1vZGlmaWVyPgotY2xhc3MgQXBwbHlQcm9wZXJ0
eUJvcmRlckltYWdlTW9kaWZpZXIgewotcHJpdmF0ZToKLSAgICBzdGF0aWMgaW5saW5lIGNvbnN0
IE5pbmVQaWVjZUltYWdlJiBnZXRWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIHR5
cGUgPT0gSW1hZ2UgPyBzdHlsZS0+Ym9yZGVySW1hZ2UoKSA6IHN0eWxlLT5tYXNrQm94SW1hZ2Uo
KTsgfQotICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUs
IGNvbnN0IE5pbmVQaWVjZUltYWdlJiB2YWx1ZSkgeyByZXR1cm4gdHlwZSA9PSBJbWFnZSA/IHN0
eWxlLT5zZXRCb3JkZXJJbWFnZSh2YWx1ZSkgOiBzdHlsZS0+c2V0TWFza0JveEltYWdlKHZhbHVl
KTsgfQotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yKQotICAgIHsKLSAgICAgICAgTmluZVBpZWNlSW1hZ2UgaW1hZ2Uo
Z2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCkpKTsKLSAgICAgICAgc3dpdGNoIChtb2RpZmllcikg
ewotICAgICAgICBjYXNlIE91dHNldDoKLSAgICAgICAgICAgIGltYWdlLmNvcHlPdXRzZXRGcm9t
KGdldFZhbHVlKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpKSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBSZXBlYXQ6Ci0gICAgICAgICAgICBpbWFnZS5jb3B5UmVwZWF0RnJvbShn
ZXRWYWx1ZShzZWxlY3Rvci0+cGFyZW50U3R5bGUoKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgU2xpY2U6Ci0gICAgICAgICAgICBpbWFnZS5jb3B5SW1hZ2VTbGljZXNGcm9t
KGdldFZhbHVlKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpKSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBXaWR0aDoKLSAgICAgICAgICAgIGltYWdlLmNvcHlCb3JkZXJTbGljZXNG
cm9tKGdldFZhbHVlKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgaW1hZ2Up
OwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yKQotICAgIHsKLSAgICAgICAgTmluZVBpZWNlSW1hZ2UgaW1hZ2UoZ2V0
VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCkpKTsKLSAgICAgICAgc3dpdGNoIChtb2RpZmllcikgewot
ICAgICAgICBjYXNlIE91dHNldDoKLSAgICAgICAgICAgIGltYWdlLnNldE91dHNldChMZW5ndGhC
b3goMCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUmVwZWF0OgotICAgICAg
ICAgICAgaW1hZ2Uuc2V0SG9yaXpvbnRhbFJ1bGUoU3RyZXRjaEltYWdlUnVsZSk7Ci0gICAgICAg
ICAgICBpbWFnZS5zZXRWZXJ0aWNhbFJ1bGUoU3RyZXRjaEltYWdlUnVsZSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBTbGljZToKLSAgICAgICAgICAgIC8vIE1hc2tzIGhhdmUg
YSBkaWZmZXJlbnQgaW5pdGlhbCB2YWx1ZSBmb3Igc2xpY2VzLiBQcmVzZXJ2ZSB0aGUgdmFsdWUg
b2YgMCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCi0gICAgICAgICAgICBpbWFnZS5zZXRJ
bWFnZVNsaWNlcyh0eXBlID09IEltYWdlID8gTGVuZ3RoQm94KExlbmd0aCgxMDAsIFBlcmNlbnQp
LCBMZW5ndGgoMTAwLCBQZXJjZW50KSwgTGVuZ3RoKDEwMCwgUGVyY2VudCksIExlbmd0aCgxMDAs
IFBlcmNlbnQpKSA6IExlbmd0aEJveCgpKTsKLSAgICAgICAgICAgIGltYWdlLnNldEZpbGwoZmFs
c2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2lkdGg6Ci0gICAgICAgICAg
ICAvLyBNYXNrcyBoYXZlIGEgZGlmZmVyZW50IGluaXRpYWwgdmFsdWUgZm9yIHdpZHRocy4gVGhl
eSB1c2UgYW4gJ2F1dG8nIHZhbHVlIHJhdGhlciB0aGFuIHRyeWluZyB0byBmaXQgdG8gdGhlIGJv
cmRlci4KLSAgICAgICAgICAgIGltYWdlLnNldEJvcmRlclNsaWNlcyh0eXBlID09IEltYWdlID8g
TGVuZ3RoQm94KExlbmd0aCgxLCBSZWxhdGl2ZSksIExlbmd0aCgxLCBSZWxhdGl2ZSksIExlbmd0
aCgxLCBSZWxhdGl2ZSksIExlbmd0aCgxLCBSZWxhdGl2ZSkpIDogTGVuZ3RoQm94KCkpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0
eWxlKCksIGltYWdlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0
eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCi0gICAgewotICAgICAgICBO
aW5lUGllY2VJbWFnZSBpbWFnZShnZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSkpOwotICAgICAg
ICBzd2l0Y2ggKG1vZGlmaWVyKSB7Ci0gICAgICAgIGNhc2UgT3V0c2V0OgotICAgICAgICAgICAg
aW1hZ2Uuc2V0T3V0c2V0KHNlbGVjdG9yLT5tYXBOaW5lUGllY2VJbWFnZVF1YWQodmFsdWUpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJlcGVhdDoKLSAgICAgICAgICAgIHNl
bGVjdG9yLT5tYXBOaW5lUGllY2VJbWFnZVJlcGVhdCh2YWx1ZSwgaW1hZ2UpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2xpY2U6Ci0gICAgICAgICAgICBzZWxlY3Rvci0+bWFw
TmluZVBpZWNlSW1hZ2VTbGljZSh2YWx1ZSwgaW1hZ2UpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgV2lkdGg6Ci0gICAgICAgICAgICBpbWFnZS5zZXRCb3JkZXJTbGljZXMoc2Vs
ZWN0b3ItPm1hcE5pbmVQaWVjZUltYWdlUXVhZCh2YWx1ZSkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIGltYWdlKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKSB7IHJl
dHVybiBQcm9wZXJ0eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFsVmFs
dWUsICZhcHBseVZhbHVlKTsgfQotfTsKLQotdGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgaWQsIFN0
eWxlSW1hZ2UqIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB2b2lkIChS
ZW5kZXJTdHlsZTo6KnNldHRlckZ1bmN0aW9uKShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+KSwgU3R5
bGVJbWFnZSogKCppbml0aWFsRnVuY3Rpb24pKCk+Ci1jbGFzcyBBcHBseVByb3BlcnR5Qm9yZGVy
SW1hZ2VTb3VyY2UgewotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5
bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkgeyAoc2VsZWN0b3ItPnN0eWxl
KCktPipzZXR0ZXJGdW5jdGlvbikoc2VsZWN0b3ItPnN0eWxlSW1hZ2UoaWQsIHZhbHVlKSk7IH0K
LSAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQotICAgIHsKLSAgICAg
ICAgUHJvcGVydHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8U3R5
bGVJbWFnZSosIGdldHRlckZ1bmN0aW9uLCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+LCBzZXR0ZXJG
dW5jdGlvbiwgU3R5bGVJbWFnZSosIGluaXRpYWxGdW5jdGlvbj46OmNyZWF0ZUhhbmRsZXIoKTsK
LSAgICAgICAgcmV0dXJuIFByb3BlcnR5SGFuZGxlcihoYW5kbGVyLmluaGVyaXRGdW5jdGlvbigp
LCBoYW5kbGVyLmluaXRpYWxGdW5jdGlvbigpLCAmYXBwbHlWYWx1ZSk7Ci0gICAgfQotfTsKLQot
ZW51bSBDb3VudGVyQmVoYXZpb3Ige0luY3JlbWVudCA9IDAsIFJlc2V0fTsKLXRlbXBsYXRlIDxD
b3VudGVyQmVoYXZpb3IgY291bnRlckJlaGF2aW9yPgotY2xhc3MgQXBwbHlQcm9wZXJ0eUNvdW50
ZXIgewotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGVtcHR5RnVuY3Rpb24oQ1NTU3R5bGVTZWxl
Y3RvciopIHsgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yKQotICAgIHsKLSAgICAgICAgQ291bnRlckRpcmVjdGl2ZU1hcCYgbWFw
ID0gc2VsZWN0b3ItPnN0eWxlKCktPmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCk7Ci0gICAgICAg
IENvdW50ZXJEaXJlY3RpdmVNYXAmIHBhcmVudE1hcCA9IHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgp
LT5hY2Nlc3NDb3VudGVyRGlyZWN0aXZlcygpOwotCi0gICAgICAgIHR5cGVkZWYgQ291bnRlckRp
cmVjdGl2ZU1hcDo6aXRlcmF0b3IgSXRlcmF0b3I7Ci0gICAgICAgIEl0ZXJhdG9yIGVuZCA9IHBh
cmVudE1hcC5lbmQoKTsKLSAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IHBhcmVudE1hcC5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIENvdW50ZXJEaXJlY3RpdmVzJiBk
aXJlY3RpdmVzID0gbWFwLmFkZChpdC0+Zmlyc3QsIENvdW50ZXJEaXJlY3RpdmVzKCkpLml0ZXJh
dG9yLT5zZWNvbmQ7Ci0gICAgICAgICAgICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KSB7
Ci0gICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0ID0gaXQtPnNlY29uZC5tX3Jlc2V0
OwotICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9yZXNldFZhbHVlID0gaXQtPnNlY29uZC5t
X3Jlc2V0VmFsdWU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIElu
aGVyaXRpbmcgYSBjb3VudGVyLWluY3JlbWVudCBtZWFucyB0YWtpbmcgdGhlIHBhcmVudCdzIGN1
cnJlbnQgdmFsdWUgZm9yIHRoZSBjb3VudGVyCi0gICAgICAgICAgICAgICAgLy8gYW5kIGFkZGlu
ZyBpdCB0byBpdHNlbGYuCi0gICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX2luY3JlbWVudCA9
IGl0LT5zZWNvbmQubV9pbmNyZW1lbnQ7Ci0gICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX2lu
Y3JlbWVudFZhbHVlID0gMDsKLSAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aXZlcy5tX2luY3Jl
bWVudCkgewotICAgICAgICAgICAgICAgICAgICBmbG9hdCBpbmNyZW1lbnRWYWx1ZSA9IGRpcmVj
dGl2ZXMubV9pbmNyZW1lbnRWYWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5t
X2luY3JlbWVudFZhbHVlID0gY2xhbXBUb0ludGVnZXIoaW5jcmVtZW50VmFsdWUgKyBpdC0+c2Vj
b25kLm1faW5jcmVtZW50VmFsdWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9pbmNyZW1lbnQgPSB0cnVlOwotICAgICAgICAgICAg
ICAgICAgICBkaXJlY3RpdmVzLm1faW5jcmVtZW50VmFsdWUgPSBpdC0+c2Vjb25kLm1faW5jcmVt
ZW50VmFsdWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IsIENTU1ZhbHVlKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmICghdmFsdWUtPmlzVmFsdWVM
aXN0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0
ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwotCi0gICAgICAgIENvdW50ZXJE
aXJlY3RpdmVNYXAmIG1hcCA9IHNlbGVjdG9yLT5zdHlsZSgpLT5hY2Nlc3NDb3VudGVyRGlyZWN0
aXZlcygpOwotICAgICAgICB0eXBlZGVmIENvdW50ZXJEaXJlY3RpdmVNYXA6Oml0ZXJhdG9yIEl0
ZXJhdG9yOwotCi0gICAgICAgIEl0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKLSAgICAgICAgZm9y
IChJdGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAg
ICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KQotICAgICAgICAgICAgICAgIGl0LT5zZWNv
bmQubV9yZXNldCA9IGZhbHNlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGl0
LT5zZWNvbmQubV9pbmNyZW1lbnQgPSBmYWxzZTsKLQotICAgICAgICBpbnQgbGVuZ3RoID0gbGlz
dCA/IGxpc3QtPmxlbmd0aCgpIDogMDsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgQ1NTVmFsdWUqIGN1cnJWYWx1ZSA9IGxpc3QtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soaSk7Ci0gICAgICAgICAgICBpZiAoIWN1cnJWYWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBQ
YWlyKiBwYWlyID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihjdXJyVmFsdWUpLT5n
ZXRQYWlyVmFsdWUoKTsKLSAgICAgICAgICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8
fCAhcGFpci0+c2Vjb25kKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
ICAgIEF0b21pY1N0cmluZyBpZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPihwYWlyLT5maXJzdCgpKS0+Z2V0U3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAgIGludCB2
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+c2Vjb25kKCkpLT5n
ZXRJbnRWYWx1ZSgpOwotICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMmIGRpcmVjdGl2ZXMg
PSBtYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCBDb3VudGVyRGlyZWN0aXZlcygpKS5pdGVyYXRv
ci0+c2Vjb25kOwotICAgICAgICAgICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9PSBSZXNldCkgewot
ICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9yZXNldCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgZGlyZWN0aXZlcy5tX3Jlc2V0VmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZXMubV9pbmNyZW1lbnQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgaW5jcmVtZW50VmFsdWUgPSBkaXJlY3RpdmVzLm1faW5jcmVtZW50
VmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9pbmNyZW1lbnRWYWx1ZSA9
IGNsYW1wVG9JbnRlZ2VyKGluY3JlbWVudFZhbHVlICsgdmFsdWUpOwotICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9pbmNyZW1lbnQgPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1faW5jcmVtZW50VmFsdWUgPSB2
YWx1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgfQotICAgIH0KLSAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIo
KSB7IHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmZW1wdHlGdW5j
dGlvbiwgJmFwcGx5VmFsdWUpOyB9Ci19OwotCi0KLWNsYXNzIEFwcGx5UHJvcGVydHlDdXJzb3Ig
ewotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yKQotICAgIHsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEN1
cnNvcihzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+Y3Vyc29yKCkpOwotICAgICAgICBzZWxlY3Rv
ci0+c3R5bGUoKS0+c2V0Q3Vyc29yTGlzdChzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+Y3Vyc29y
cygpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHls
ZVNlbGVjdG9yKiBzZWxlY3RvcikKLSAgICB7Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5j
bGVhckN1cnNvckxpc3QoKTsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEN1cnNvcihS
ZW5kZXJTdHlsZTo6aW5pdGlhbEN1cnNvcigpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBh
cHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCi0g
ICAgewotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+Y2xlYXJDdXJzb3JMaXN0KCk7Ci0gICAg
ICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAgQ1NTVmFsdWVMaXN0
KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwotICAgICAgICAgICAg
aW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOwotICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCkt
PnNldEN1cnNvcihDVVJTT1JfQVVUTyk7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKGkpOwotICAgICAgICAgICAgICAgIGlmIChpdGVtLT5pc0N1cnNv
ckltYWdlVmFsdWUoKSkgewotICAgICAgICAgICAgICAgICAgICBDU1NDdXJzb3JJbWFnZVZhbHVl
KiBpbWFnZSA9IHN0YXRpY19jYXN0PENTU0N1cnNvckltYWdlVmFsdWUqPihpdGVtKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGltYWdlLT51cGRhdGVJZlNWR0N1cnNvcklzVXNlZChzZWxlY3Rv
ci0+ZWxlbWVudCgpKSkgLy8gRWxlbWVudHMgd2l0aCBTVkcgY3Vyc29ycyBhcmUgbm90IGFsbG93
ZWQgdG8gc2hhcmUgc3R5bGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci0+c3R5
bGUoKS0+c2V0VW5pcXVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgp
LT5hZGRDdXJzb3Ioc2VsZWN0b3ItPmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0
eUN1cnNvciwgaW1hZ2UpLCBpbWFnZS0+aG90U3BvdCgpKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICAgICAgICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KGl0ZW0pOwotICAgICAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUt
PmlzSWRlbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5z
ZXRDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAg
ICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUtPmlzSWRlbnQoKSAmJiBzZWxlY3Rvci0+c3R5bGUoKS0+Y3Vyc29yKCkgIT0gRUN1cnNvcigq
cHJpbWl0aXZlVmFsdWUpKQotICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRD
dXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBQ
cm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFByb3BlcnR5SGFuZGxlcigm
YXBwbHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFsdWUpOyB9Ci19
OwotCi1jbGFzcyBBcHBseVByb3BlcnR5VGV4dEFsaWduIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
dm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFs
dWUpCi0gICAgewotICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0KLSAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpICE9IENTU1ZhbHVlV2Via2l0TWF0Y2hQYXJl
bnQpCi0gICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEFsaWduKCpwcmltaXRp
dmVWYWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT50ZXh0
QWxpZ24oKSA9PSBUQVNUQVJUKQotICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRl
eHRBbGlnbihzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
ID8gTEVGVCA6IFJJR0hUKTsKLSAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3ItPnBhcmVudFN0eWxl
KCktPnRleHRBbGlnbigpID09IFRBRU5EKQotICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCkt
PnNldFRleHRBbGlnbihzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gUklHSFQgOiBMRUZUKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2VsZWN0
b3ItPnN0eWxlKCktPnNldFRleHRBbGlnbihzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+dGV4dEFs
aWduKCkpOwotICAgIH0KLSAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIo
KQotICAgIHsKLSAgICAgICAgUHJvcGVydHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5
RGVmYXVsdEJhc2U8RVRleHRBbGlnbiwgJlJlbmRlclN0eWxlOjp0ZXh0QWxpZ24sIEVUZXh0QWxp
Z24sICZSZW5kZXJTdHlsZTo6c2V0VGV4dEFsaWduLCBFVGV4dEFsaWduLCAmUmVuZGVyU3R5bGU6
OmluaXRpYWxUZXh0QWxpZ24+OjpjcmVhdGVIYW5kbGVyKCk7Ci0gICAgICAgIHJldHVybiBQcm9w
ZXJ0eUhhbmRsZXIoaGFuZGxlci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFsRnVu
Y3Rpb24oKSwgJmFwcGx5VmFsdWUpOwotICAgIH0KLX07Ci0KLWNsYXNzIEFwcGx5UHJvcGVydHlU
ZXh0RGVjb3JhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NT
dHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQotICAgIHsKLSAgICAgICAg
RVRleHREZWNvcmF0aW9uIHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uKCk7
Ci0gICAgICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSh2YWx1ZSk7IGkuaGFzTW9yZSgp
OyBpLmFkdmFuY2UoKSkgewotICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBpLnZhbHVlKCk7
Ci0gICAgICAgICAgICBBU1NFUlQoaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAg
ICAgIHQgfD0gKnN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7Ci0gICAgICAg
IH0KLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHREZWNvcmF0aW9uKHQpOwotICAg
IH0KLSAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQotICAgIHsKLSAg
ICAgICAgUHJvcGVydHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8
RVRleHREZWNvcmF0aW9uLCAmUmVuZGVyU3R5bGU6OnRleHREZWNvcmF0aW9uLCBFVGV4dERlY29y
YXRpb24sICZSZW5kZXJTdHlsZTo6c2V0VGV4dERlY29yYXRpb24sIEVUZXh0RGVjb3JhdGlvbiwg
JlJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb24+OjpjcmVhdGVIYW5kbGVyKCk7Ci0g
ICAgICAgIHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoaGFuZGxlci5pbmhlcml0RnVuY3Rpb24oKSwg
aGFuZGxlci5pbml0aWFsRnVuY3Rpb24oKSwgJmFwcGx5VmFsdWUpOwotICAgIH0KLX07Ci0KLWNs
YXNzIEFwcGx5UHJvcGVydHlVbmljb2RlQmlkaSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQg
YXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQot
ICAgIHsKLSAgICAgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICBF
VW5pY29kZUJpZGkgcmVuZGVyZXJVbmljb2RlQmlkaSA9IFJlbmRlclN0eWxlOjppbml0aWFsVW5p
Y29kZUJpZGkoKTsKLSAgICAgICAgICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZh
bHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKLSAgICAgICAgICAgICAgICBDU1NWYWx1
ZSogaXRlbSA9IGkudmFsdWUoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoaXRlbS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBFVW5pY29kZUJpZGkgY3VycmVudFZhbHVl
ID0gKnN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUKGN1cnJlbnRWYWx1ZSA9PSBPdmVycmlkZSB8fCBjdXJyZW50VmFsdWUgPT0gSXNv
bGF0ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPSByZW5kZXJlclVuaWNv
ZGVCaWRpICYmIHJlbmRlcmVyVW5pY29kZUJpZGkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxVbmlj
b2RlQmlkaSgpKQotICAgICAgICAgICAgICAgICAgICByZW5kZXJlclVuaWNvZGVCaWRpID0gT3Zl
cnJpZGVJc29sYXRlOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
cmVuZGVyZXJVbmljb2RlQmlkaSA9IGN1cnJlbnRWYWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRVbmljb2RlQmlkaShyZW5kZXJlclVuaWNvZGVC
aWRpKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAgICAg
ICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VW5pY29kZUJpZGkoKnByaW1pdGl2ZVZhbHVlKTsKLSAg
ICB9Ci0gICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKLSAgICB7Ci0g
ICAgICAgIFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNl
PEVVbmljb2RlQmlkaSwgJlJlbmRlclN0eWxlOjp1bmljb2RlQmlkaSwgRVVuaWNvZGVCaWRpLCAm
UmVuZGVyU3R5bGU6OnNldFVuaWNvZGVCaWRpLCBFVW5pY29kZUJpZGksICZSZW5kZXJTdHlsZTo6
aW5pdGlhbFVuaWNvZGVCaWRpPjo6Y3JlYXRlSGFuZGxlcigpOwotICAgICAgICByZXR1cm4gUHJv
cGVydHlIYW5kbGVyKGhhbmRsZXIuaW5oZXJpdEZ1bmN0aW9uKCksIGhhbmRsZXIuaW5pdGlhbEZ1
bmN0aW9uKCksICZhcHBseVZhbHVlKTsKLSAgICB9Ci19OwotCi1jbGFzcyBBcHBseVByb3BlcnR5
TGluZUhlaWdodCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHls
ZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQotICAgIHsKLSAgICAgICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAgICAgICBMZW5ndGggbGluZUhlaWdodDsKLQotICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCi0g
ICAgICAgICAgICBsaW5lSGVpZ2h0ID0gTGVuZ3RoKC0xMDAuMCwgUGVyY2VudCk7Ci0gICAgICAg
IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKSB7Ci0gICAgICAgICAgICBkb3Vi
bGUgbXVsdGlwbGllciA9IHNlbGVjdG9yLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7Ci0gICAg
ICAgICAgICBpZiAoc2VsZWN0b3ItPnN0eWxlKCktPnRleHRTaXplQWRqdXN0KCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gc2VsZWN0b3ItPmRvY3VtZW50KCktPmZyYW1l
KCkpCi0gICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgKj0gZnJhbWUtPnRleHRab29tRmFj
dG9yKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBsaW5lSGVpZ2h0ID0gcHJpbWl0aXZl
VmFsdWUtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3It
PnJvb3RFbGVtZW50U3R5bGUoKSwgbXVsdGlwbGllcik7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJp
bWl0aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogcGVy
Y2VudGFnZSBzaG91bGQgbm90IGJlIHJlc3RyaWN0ZWQgdG8gYW4gaW50ZWdlciBoZXJlLgotICAg
ICAgICAgICAgbGluZUhlaWdodCA9IExlbmd0aCgoc2VsZWN0b3ItPnN0eWxlKCktPmZvbnRTaXpl
KCkgKiBwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSkgLyAxMDAsIEZpeGVkKTsKLSAgICAg
ICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIoKSkgewotICAgICAgICAgICAg
Ly8gRklYTUU6IG51bWJlciBhbmQgcGVyY2VudGFnZSB2YWx1ZXMgc2hvdWxkIHByb2R1Y2UgdGhl
IHNhbWUgdHlwZSBvZiBMZW5ndGggKGllLiBGaXhlZCBvciBQZXJjZW50KS4KLSAgICAgICAgICAg
IGxpbmVIZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCkgKiAx
MDAuMCwgUGVyY2VudCk7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzVmll
d3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGxpbmVIZWlnaHQgPSBwcmlt
aXRpdmVWYWx1ZS0+dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCk7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0TGluZUhl
aWdodChsaW5lSGVpZ2h0KTsKLSAgICB9Ci0gICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVh
dGVIYW5kbGVyKCkKLSAgICB7Ci0gICAgICAgIFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0gQXBw
bHlQcm9wZXJ0eURlZmF1bHRCYXNlPExlbmd0aCwgJlJlbmRlclN0eWxlOjpsaW5lSGVpZ2h0LCBM
ZW5ndGgsICZSZW5kZXJTdHlsZTo6c2V0TGluZUhlaWdodCwgTGVuZ3RoLCAmUmVuZGVyU3R5bGU6
OmluaXRpYWxMaW5lSGVpZ2h0Pjo6Y3JlYXRlSGFuZGxlcigpOwotICAgICAgICByZXR1cm4gUHJv
cGVydHlIYW5kbGVyKGhhbmRsZXIuaW5oZXJpdEZ1bmN0aW9uKCksIGhhbmRsZXIuaW5pdGlhbEZ1
bmN0aW9uKCksICZhcHBseVZhbHVlKTsKLSAgICB9Ci19OwotCi1jbGFzcyBBcHBseVByb3BlcnR5
UGFnZVNpemUgewotcHJpdmF0ZToKLSAgICBzdGF0aWMgTGVuZ3RoIG1tTGVuZ3RoKGRvdWJsZSBt
bSkgeyByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtbSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19NTSktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPigwLCAwKTsgfQotICAgIHN0YXRpYyBM
ZW5ndGggaW5jaExlbmd0aChkb3VibGUgaW5jaCkgeyByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShpbmNoLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOKS0+Y29tcHV0ZUxlbmd0aDxM
ZW5ndGg+KDAsIDApOyB9Ci0gICAgc3RhdGljIGJvb2wgZ2V0UGFnZVNpemVGcm9tTmFtZShDU1NQ
cmltaXRpdmVWYWx1ZSogcGFnZVNpemVOYW1lLCBDU1NQcmltaXRpdmVWYWx1ZSogcGFnZU9yaWVu
dGF0aW9uLCBMZW5ndGgmIHdpZHRoLCBMZW5ndGgmIGhlaWdodCkKLSAgICB7Ci0gICAgICAgIERF
RklORV9TVEFUSUNfTE9DQUwoTGVuZ3RoLCBhNVdpZHRoLCAobW1MZW5ndGgoMTQ4KSkpOwotICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKExlbmd0aCwgYTVIZWlnaHQsIChtbUxlbmd0aCgyMTAp
KSk7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoTGVuZ3RoLCBhNFdpZHRoLCAobW1MZW5n
dGgoMjEwKSkpOwotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKExlbmd0aCwgYTRIZWlnaHQs
IChtbUxlbmd0aCgyOTcpKSk7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoTGVuZ3RoLCBh
M1dpZHRoLCAobW1MZW5ndGgoMjk3KSkpOwotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKExl
bmd0aCwgYTNIZWlnaHQsIChtbUxlbmd0aCg0MjApKSk7Ci0gICAgICAgIERFRklORV9TVEFUSUNf
TE9DQUwoTGVuZ3RoLCBiNVdpZHRoLCAobW1MZW5ndGgoMTc2KSkpOwotICAgICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKExlbmd0aCwgYjVIZWlnaHQsIChtbUxlbmd0aCgyNTApKSk7Ci0gICAgICAg
IERFRklORV9TVEFUSUNfTE9DQUwoTGVuZ3RoLCBiNFdpZHRoLCAobW1MZW5ndGgoMjUwKSkpOwot
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKExlbmd0aCwgYjRIZWlnaHQsIChtbUxlbmd0aCgz
NTMpKSk7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoTGVuZ3RoLCBsZXR0ZXJXaWR0aCwg
KGluY2hMZW5ndGgoOC41KSkpOwotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKExlbmd0aCwg
bGV0dGVySGVpZ2h0LCAoaW5jaExlbmd0aCgxMSkpKTsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChMZW5ndGgsIGxlZ2FsV2lkdGgsIChpbmNoTGVuZ3RoKDguNSkpKTsKLSAgICAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChMZW5ndGgsIGxlZ2FsSGVpZ2h0LCAoaW5jaExlbmd0aCgxNCkpKTsK
LSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChMZW5ndGgsIGxlZGdlcldpZHRoLCAoaW5jaExl
bmd0aCgxMSkpKTsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChMZW5ndGgsIGxlZGdlckhl
aWdodCwgKGluY2hMZW5ndGgoMTcpKSk7Ci0KLSAgICAgICAgaWYgKCFwYWdlU2l6ZU5hbWUpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgc3dpdGNoIChwYWdlU2l6ZU5hbWUt
PmdldElkZW50KCkpIHsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZUE1OgotICAgICAgICAgICAgd2lk
dGggPSBhNVdpZHRoOwotICAgICAgICAgICAgaGVpZ2h0ID0gYTVIZWlnaHQ7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZUE0OgotICAgICAgICAgICAgd2lkdGggPSBh
NFdpZHRoOwotICAgICAgICAgICAgaGVpZ2h0ID0gYTRIZWlnaHQ7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZUEzOgotICAgICAgICAgICAgd2lkdGggPSBhM1dpZHRo
OwotICAgICAgICAgICAgaGVpZ2h0ID0gYTNIZWlnaHQ7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBDU1NWYWx1ZUI1OgotICAgICAgICAgICAgd2lkdGggPSBiNVdpZHRoOwotICAg
ICAgICAgICAgaGVpZ2h0ID0gYjVIZWlnaHQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDU1NWYWx1ZUI0OgotICAgICAgICAgICAgd2lkdGggPSBiNFdpZHRoOwotICAgICAgICAg
ICAgaGVpZ2h0ID0gYjRIZWlnaHQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBD
U1NWYWx1ZUxldHRlcjoKLSAgICAgICAgICAgIHdpZHRoID0gbGV0dGVyV2lkdGg7Ci0gICAgICAg
ICAgICBoZWlnaHQgPSBsZXR0ZXJIZWlnaHQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDU1NWYWx1ZUxlZ2FsOgotICAgICAgICAgICAgd2lkdGggPSBsZWdhbFdpZHRoOwotICAg
ICAgICAgICAgaGVpZ2h0ID0gbGVnYWxIZWlnaHQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBDU1NWYWx1ZUxlZGdlcjoKLSAgICAgICAgICAgIHdpZHRoID0gbGVkZ2VyV2lkdGg7
Ci0gICAgICAgICAgICBoZWlnaHQgPSBsZWRnZXJIZWlnaHQ7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChwYWdlT3JpZW50YXRpb24pIHsKLSAgICAgICAgICAgIHN3aXRjaCAocGFn
ZU9yaWVudGF0aW9uLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGFu
ZHNjYXBlOgotICAgICAgICAgICAgICAgIHN0ZDo6c3dhcCh3aWR0aCwgaGVpZ2h0KTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVQb3J0cmFpdDoKLSAg
ICAgICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLgotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotcHVibGlj
OgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqKSB7
IH0KLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKikg
eyB9Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rv
ciwgQ1NTVmFsdWUqIHZhbHVlKQotICAgIHsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnJl
c2V0UGFnZVNpemVUeXBlKCk7Ci0gICAgICAgIExlbmd0aCB3aWR0aDsKLSAgICAgICAgTGVuZ3Ro
IGhlaWdodDsKLSAgICAgICAgUGFnZVNpemVUeXBlIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9B
VVRPOwotICAgICAgICBDU1NWYWx1ZUxpc3RJbnNwZWN0b3IgaW5zcGVjdG9yKHZhbHVlKTsKLSAg
ICAgICAgc3dpdGNoIChpbnNwZWN0b3IubGVuZ3RoKCkpIHsKLSAgICAgICAgY2FzZSAyOiB7Ci0g
ICAgICAgICAgICAvLyA8bGVuZ3RoPnsyfSB8IDxwYWdlLXNpemU+IDxvcmllbnRhdGlvbj4KLSAg
ICAgICAgICAgIGlmICghaW5zcGVjdG9yLmZpcnN0KCktPmlzUHJpbWl0aXZlVmFsdWUoKSB8fCAh
aW5zcGVjdG9yLnNlY29uZCgpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0ID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpbnNwZWN0b3IuZmlyc3QoKSk7Ci0gICAgICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
PihpbnNwZWN0b3Iuc2Vjb25kKCkpOwotICAgICAgICAgICAgaWYgKGZpcnN0LT5pc0xlbmd0aCgp
KSB7Ci0gICAgICAgICAgICAgICAgLy8gPGxlbmd0aD57Mn0KLSAgICAgICAgICAgICAgICBpZiAo
IXNlY29uZC0+aXNMZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgIHdpZHRoID0gZmlyc3QtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzZWxlY3Rvci0+
c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSk7Ci0gICAgICAgICAgICAgICAg
aGVpZ2h0ID0gc2Vjb25kLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc2VsZWN0b3ItPnN0eWxlKCks
IHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAvLyA8cGFnZS1zaXplPiA8b3JpZW50YXRpb24+Ci0gICAgICAgICAgICAg
ICAgLy8gVGhlIHZhbHVlIG9yZGVyIGlzIGd1YXJhbnRlZWQuIFNlZSBDU1NQYXJzZXI6OnBhcnNl
U2l6ZVBhcmFtZXRlci4KLSAgICAgICAgICAgICAgICBpZiAoIWdldFBhZ2VTaXplRnJvbU5hbWUo
Zmlyc3QsIHNlY29uZCwgd2lkdGgsIGhlaWdodCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9S
RVNPTFZFRDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgMTog
ewotICAgICAgICAgICAgLy8gPGxlbmd0aD4gfCBhdXRvIHwgPHBhZ2Utc2l6ZT4gfCBbIHBvcnRy
YWl0IHwgbGFuZHNjYXBlXQotICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3IuZmlyc3QoKS0+aXNQ
cmltaXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4oaW5zcGVjdG9yLmZpcnN0KCkpOwotICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5pc0xlbmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gPGxlbmd0aD4KLSAgICAgICAg
ICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfUkVTT0xWRUQ7Ci0gICAgICAgICAgICAg
ICAgd2lkdGggPSBoZWlnaHQgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+
KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpKTsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgMDoKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgotICAgICAgICAg
ICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVUTzsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVBvcnRyYWl0OgotICAg
ICAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVUT19QT1JUUkFJVDsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZUxhbmRzY2FwZToKLSAgICAgICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpF
X0FVVE9fTEFORFNDQVBFOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAvLyA8cGFnZS1zaXplPgotICAgICAg
ICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfUkVTT0xWRUQ7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghZ2V0UGFnZVNpemVGcm9tTmFtZShwcmltaXRpdmVWYWx1ZSwgMCwg
d2lkdGgsIGhlaWdodCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0UGFnZVNpemVUeXBlKHBhZ2VTaXplVHlwZSk7Ci0gICAg
ICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRQYWdlU2l6ZShMZW5ndGhTaXplKHdpZHRoLCBoZWln
aHQpKTsKLSAgICB9Ci0gICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkg
eyByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlh
bFZhbHVlLCAmYXBwbHlWYWx1ZSk7IH0KLX07Ci0KLWNsYXNzIEFwcGx5UHJvcGVydHlUZXh0RW1w
aGFzaXNTdHlsZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUo
Q1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCi0gICAgewotICAgICAgICBzZWxlY3Rvci0+c3R5
bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+dGV4dEVt
cGhhc2lzRmlsbCgpKTsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNp
c01hcmsoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPnRleHRFbXBoYXNpc01hcmsoKSk7Ci0gICAg
ICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKHNlbGVjdG9y
LT5wYXJlbnRTdHlsZSgpLT50ZXh0RW1waGFzaXNDdXN0b21NYXJrKCkpOwotICAgIH0KLQotICAg
IHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9y
KQotICAgIHsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwo
UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNGaWxsKCkpOwotICAgICAgICBzZWxlY3Rv
ci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyayhSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRF
bXBoYXNpc01hcmsoKSk7Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFz
aXNDdXN0b21NYXJrKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygp
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3Iq
IHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCi0gICAgewotICAgICAgICBpZiAodmFsdWUtPmlz
VmFsdWVMaXN0KCkpIHsKLSAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19j
YXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKLSAgICAgICAgICAgIEFTU0VSVChsaXN0LT5sZW5n
dGgoKSA9PSAyKTsKLSAgICAgICAgICAgIGlmIChsaXN0LT5sZW5ndGgoKSAhPSAyKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAy
OyArK2kpIHsKLSAgICAgICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soaSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPihpdGVtKTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUtPmdldElkZW50KCkgPT0gQ1NT
VmFsdWVGaWxsZWQgfHwgdmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVPcGVuKQotICAgICAg
ICAgICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbCgqdmFs
dWUpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3It
PnN0eWxlKCktPnNldFRleHRFbXBoYXNpc01hcmsoKnZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKG51
bGxBdG9tKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgh
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7Ci0KLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1N0cmlu
ZygpKSB7Ci0gICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmls
bChUZXh0RW1waGFzaXNGaWxsRmlsbGVkKTsKLSAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgp
LT5zZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmtDdXN0b20pOwotICAgICAgICAg
ICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsocHJpbWl0aXZl
VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmso
bnVsbEF0b20pOwotCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBD
U1NWYWx1ZUZpbGxlZCB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU9w
ZW4pIHsKLSAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxs
KCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4
dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrQXV0byk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1w
aGFzaXNGaWxsRmlsbGVkKTsKLSAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0
RW1waGFzaXNNYXJrKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBz
dGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKSB7IHJldHVybiBQcm9wZXJ0eUhh
bmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFsVmFsdWUsICZhcHBseVZhbHVl
KTsgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsCi0gICAgICAgICAgVCAoQW5pbWF0aW9u
OjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29uc3QsCi0gICAgICAgICAgdm9pZCAoQW5pbWF0aW9uOjoq
c2V0dGVyRnVuY3Rpb24pKFQpLAotICAgICAgICAgIGJvb2wgKEFuaW1hdGlvbjo6KnRlc3RGdW5j
dGlvbikoKSBjb25zdCwKLSAgICAgICAgICB2b2lkIChBbmltYXRpb246OipjbGVhckZ1bmN0aW9u
KSgpLAotICAgICAgICAgIFQgKCppbml0aWFsRnVuY3Rpb24pKCksCi0gICAgICAgICAgdm9pZCAo
Q1NTU3R5bGVTZWxlY3Rvcjo6Km1hcEZ1bmN0aW9uKShBbmltYXRpb24qLCBDU1NWYWx1ZSopLAot
ICAgICAgICAgIEFuaW1hdGlvbkxpc3QqIChSZW5kZXJTdHlsZTo6KmFuaW1hdGlvbkdldHRlckZ1
bmN0aW9uKSgpLAotICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIChSZW5kZXJTdHlsZTo6
KmltbXV0YWJsZUFuaW1hdGlvbkdldHRlckZ1bmN0aW9uKSgpIGNvbnN0PgotY2xhc3MgQXBwbHlQ
cm9wZXJ0eUFuaW1hdGlvbiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc2V0VmFsdWUoQW5p
bWF0aW9uKiBhbmltYXRpb24sIFQgdmFsdWUpIHsgKGFuaW1hdGlvbi0+KnNldHRlckZ1bmN0aW9u
KSh2YWx1ZSk7IH0KLSAgICBzdGF0aWMgVCB2YWx1ZShjb25zdCBBbmltYXRpb24qIGFuaW1hdGlv
bikgeyByZXR1cm4gKGFuaW1hdGlvbi0+KmdldHRlckZ1bmN0aW9uKSgpOyB9Ci0gICAgc3RhdGlj
IGJvb2wgdGVzdChjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbikgeyByZXR1cm4gKGFuaW1hdGlv
bi0+KnRlc3RGdW5jdGlvbikoKTsgfQotICAgIHN0YXRpYyB2b2lkIGNsZWFyKEFuaW1hdGlvbiog
YW5pbWF0aW9uKSB7IChhbmltYXRpb24tPipjbGVhckZ1bmN0aW9uKSgpOyB9Ci0gICAgc3RhdGlj
IFQgaW5pdGlhbCgpIHsgcmV0dXJuICgqaW5pdGlhbEZ1bmN0aW9uKSgpOyB9Ci0gICAgc3RhdGlj
IHZvaWQgbWFwKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBBbmltYXRpb24qIGFuaW1hdGlv
biwgQ1NTVmFsdWUqIHZhbHVlKSB7IChzZWxlY3Rvci0+Km1hcEZ1bmN0aW9uKShhbmltYXRpb24s
IHZhbHVlKTsgfQotICAgIHN0YXRpYyBBbmltYXRpb25MaXN0KiBhY2Nlc3NBbmltYXRpb25zKFJl
bmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gKHN0eWxlLT4qYW5pbWF0aW9uR2V0dGVyRnVuY3Rp
b24pKCk7IH0KLSAgICBzdGF0aWMgY29uc3QgQW5pbWF0aW9uTGlzdCogYW5pbWF0aW9ucyhSZW5k
ZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIChzdHlsZS0+KmltbXV0YWJsZUFuaW1hdGlvbkdldHRl
ckZ1bmN0aW9uKSgpOyB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NT
dHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKLSAgICB7Ci0gICAgICAgIEFuaW1hdGlvbkxpc3QqIGxp
c3QgPSBhY2Nlc3NBbmltYXRpb25zKHNlbGVjdG9yLT5zdHlsZSgpKTsKLSAgICAgICAgY29uc3Qg
QW5pbWF0aW9uTGlzdCogcGFyZW50TGlzdCA9IGFuaW1hdGlvbnMoc2VsZWN0b3ItPnBhcmVudFN0
eWxlKCkpOwotICAgICAgICBzaXplX3QgaSA9IDAsIHBhcmVudFNpemUgPSBwYXJlbnRMaXN0ID8g
cGFyZW50TGlzdC0+c2l6ZSgpIDogMDsKLSAgICAgICAgZm9yICggOyBpIDwgcGFyZW50U2l6ZSAm
JiB0ZXN0KHBhcmVudExpc3QtPmFuaW1hdGlvbihpKSk7ICsraSkgewotICAgICAgICAgICAgaWYg
KGxpc3QtPnNpemUoKSA8PSBpKQotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRp
b246OmNyZWF0ZSgpKTsKLSAgICAgICAgICAgIHNldFZhbHVlKGxpc3QtPmFuaW1hdGlvbihpKSwg
dmFsdWUocGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpKSk7Ci0gICAgICAgICAgICBsaXN0LT5hbmlt
YXRpb24oaSktPnNldEFuaW1hdGlvbk1vZGUocGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpLT5hbmlt
YXRpb25Nb2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogUmVzZXQgYW55IHJlbWFpbmlu
ZyBhbmltYXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovCi0gICAgICAgIGZv
ciAoIDsgaSA8IGxpc3QtPnNpemUoKTsgKytpKQotICAgICAgICAgICAgY2xlYXIobGlzdC0+YW5p
bWF0aW9uKGkpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShD
U1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKLSAgICB7Ci0gICAgICAgIEFuaW1hdGlvbkxpc3Qq
IGxpc3QgPSBhY2Nlc3NBbmltYXRpb25zKHNlbGVjdG9yLT5zdHlsZSgpKTsKLSAgICAgICAgaWYg
KGxpc3QtPmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNy
ZWF0ZSgpKTsKLSAgICAgICAgc2V0VmFsdWUobGlzdC0+YW5pbWF0aW9uKDApLCBpbml0aWFsKCkp
OwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGxpc3QtPnNpemUoKTsgKytpKQotICAg
ICAgICAgICAgY2xlYXIobGlzdC0+YW5pbWF0aW9uKGkpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
dm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFs
dWUpCi0gICAgewotICAgICAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gYWNjZXNzQW5pbWF0aW9u
cyhzZWxlY3Rvci0+c3R5bGUoKSk7Ci0gICAgICAgIHNpemVfdCBjaGlsZEluZGV4ID0gMDsKLSAg
ICAgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICAvKiBXYWxrIGVh
Y2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRvIGFuIGFuaW1hdGlvbiwgY3JlYXRpbmcgbmV3IGFuaW1h
dGlvbnMgYXMgbmVlZGVkLiAqLwotICAgICAgICAgICAgZm9yIChDU1NWYWx1ZUxpc3RJdGVyYXRv
ciBpID0gdmFsdWU7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewotICAgICAgICAgICAgICAg
IGlmIChjaGlsZEluZGV4IDw9IGxpc3QtPnNpemUoKSkKLSAgICAgICAgICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOwotICAgICAgICAgICAgICAgIG1hcChzZWxl
Y3RvciwgbGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCBpLnZhbHVlKCkpOwotICAgICAgICAg
ICAgICAgICsrY2hpbGRJbmRleDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGlmIChsaXN0LT5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOwotICAgICAgICAgICAgbWFwKHNlbGVjdG9yLCBsaXN0
LT5hbmltYXRpb24oY2hpbGRJbmRleCksIHZhbHVlKTsKLSAgICAgICAgICAgIGNoaWxkSW5kZXgg
PSAxOwotICAgICAgICB9Ci0gICAgICAgIGZvciAoIDsgY2hpbGRJbmRleCA8IGxpc3QtPnNpemUo
KTsgKytjaGlsZEluZGV4KSB7Ci0gICAgICAgICAgICAvKiBSZXNldCBhbGwgcmVtYWluaW5nIGFu
aW1hdGlvbnMgdG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8KLSAgICAgICAgICAgIGNs
ZWFyKGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKSB7IHJldHVybiBQcm9wZXJ0
eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFsVmFsdWUsICZhcHBseVZh
bHVlKTsgfQotfTsKLQotY2xhc3MgQXBwbHlQcm9wZXJ0eU91dGxpbmVTdHlsZSB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2Vs
ZWN0b3IpCi0gICAgewotICAgICAgICBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8T3V0bGluZUlz
QXV0bywgJlJlbmRlclN0eWxlOjpvdXRsaW5lU3R5bGVJc0F1dG8sIE91dGxpbmVJc0F1dG8sICZS
ZW5kZXJTdHlsZTo6c2V0T3V0bGluZVN0eWxlSXNBdXRvLCBPdXRsaW5lSXNBdXRvLCAmUmVuZGVy
U3R5bGU6OmluaXRpYWxPdXRsaW5lU3R5bGVJc0F1dG8+OjphcHBseUluaGVyaXRWYWx1ZShzZWxl
Y3Rvcik7Ci0gICAgICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxFQm9yZGVyU3R5bGUsICZS
ZW5kZXJTdHlsZTo6b3V0bGluZVN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0
T3V0bGluZVN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0
eWxlPjo6YXBwbHlJbmhlcml0VmFsdWUoc2VsZWN0b3IpOwotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQotICAgIHsK
LSAgICAgICAgQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPE91dGxpbmVJc0F1dG8sICZSZW5kZXJT
dHlsZTo6b3V0bGluZVN0eWxlSXNBdXRvLCBPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6OnNl
dE91dGxpbmVTdHlsZUlzQXV0bywgT3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjppbml0aWFs
T3V0bGluZVN0eWxlSXNBdXRvPjo6YXBwbHlJbml0aWFsVmFsdWUoc2VsZWN0b3IpOwotICAgICAg
ICBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6Om91
dGxpbmVTdHlsZSwgRUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVTdHlsZSwg
RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZT46OmFwcGx5SW5p
dGlhbFZhbHVlKHNlbGVjdG9yKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVl
KENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCi0gICAgewotICAg
ICAgICBBcHBseVByb3BlcnR5RGVmYXVsdDxPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6Om91
dGxpbmVTdHlsZUlzQXV0bywgT3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5l
U3R5bGVJc0F1dG8sIE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6aW5pdGlhbE91dGxpbmVT
dHlsZUlzQXV0bz46OmFwcGx5VmFsdWUoc2VsZWN0b3IsIHZhbHVlKTsKLSAgICAgICAgQXBwbHlQ
cm9wZXJ0eURlZmF1bHQ8RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6Om91dGxpbmVTdHlsZSwg
RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVTdHlsZSwgRUJvcmRlclN0eWxl
LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZT46OmFwcGx5VmFsdWUoc2VsZWN0b3Is
IHZhbHVlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRs
ZXIoKSB7IHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJ
bml0aWFsVmFsdWUsICZhcHBseVZhbHVlKTsgfQotfTsKLQotY2xhc3MgQXBwbHlQcm9wZXJ0eVJl
c2l6ZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVj
dG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQotICAgIHsKLSAgICAgICAgaWYgKCF2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOwotCi0gICAgICAgIEVSZXNpemUgciA9IFJFU0laRV9OT05FOwotICAg
ICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgIGNhc2Ug
MDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAg
ICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gc2VsZWN0b3ItPmRvY3VtZW50KCktPnNl
dHRpbmdzKCkpCi0gICAgICAgICAgICAgICAgciA9IHNldHRpbmdzLT50ZXh0QXJlYXNBcmVSZXNp
emFibGUoKSA/IFJFU0laRV9CT1RIIDogUkVTSVpFX05PTkU7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHIgPSAqcHJpbWl0aXZlVmFsdWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFJlc2l6ZShyKTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQotICAgIHsKLSAgICAg
ICAgUHJvcGVydHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8RVJl
c2l6ZSwgJlJlbmRlclN0eWxlOjpyZXNpemUsIEVSZXNpemUsICZSZW5kZXJTdHlsZTo6c2V0UmVz
aXplLCBFUmVzaXplLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxSZXNpemU+OjpjcmVhdGVIYW5kbGVy
KCk7Ci0gICAgICAgIHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoaGFuZGxlci5pbmhlcml0RnVuY3Rp
b24oKSwgaGFuZGxlci5pbml0aWFsRnVuY3Rpb24oKSwgJmFwcGx5VmFsdWUpOwotICAgIH0KLX07
Ci0KLWNsYXNzIEFwcGx5UHJvcGVydHlWZXJ0aWNhbEFsaWduIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSog
dmFsdWUpCi0gICAgewotICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0KLSAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICAgICAgcmV0dXJuIHNl
bGVjdG9yLT5zdHlsZSgpLT5zZXRWZXJ0aWNhbEFsaWduKCpwcmltaXRpdmVWYWx1ZSk7Ci0KLSAg
ICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFZlcnRpY2FsQWxpZ25MZW5ndGgocHJpbWl0aXZl
VmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENv
bnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbiB8IFZpZXdwb3J0UGVyY2VudGFnZUNvbnZl
cnNpb24+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBz
ZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKLSAgICB7Ci0gICAgICAgIFByb3BlcnR5
SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPEVWZXJ0aWNhbEFsaWdu
LCAmUmVuZGVyU3R5bGU6OnZlcnRpY2FsQWxpZ24sIEVWZXJ0aWNhbEFsaWduLCAmUmVuZGVyU3R5
bGU6OnNldFZlcnRpY2FsQWxpZ24sIEVWZXJ0aWNhbEFsaWduLCAmUmVuZGVyU3R5bGU6OmluaXRp
YWxWZXJ0aWNhbEFsaWduPjo6Y3JlYXRlSGFuZGxlcigpOwotICAgICAgICByZXR1cm4gUHJvcGVy
dHlIYW5kbGVyKGhhbmRsZXIuaW5oZXJpdEZ1bmN0aW9uKCksIGhhbmRsZXIuaW5pdGlhbEZ1bmN0
aW9uKCksICZhcHBseVZhbHVlKTsKLSAgICB9Ci19OwotCi1jbGFzcyBBcHBseVByb3BlcnR5QXNw
ZWN0UmF0aW8gewotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENT
U1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQotICAgIHsKLSAgICAgICAgaWYgKCFzZWxlY3Rvci0+
cGFyZW50U3R5bGUoKS0+aGFzQXNwZWN0UmF0aW8oKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0FzcGVjdFJhdGlvKHRydWUpOwotICAgICAg
ICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9EZW5vbWluYXRvcihzZWxlY3Rvci0+
cGFyZW50U3R5bGUoKS0+YXNwZWN0UmF0aW9EZW5vbWluYXRvcigpKTsKLSAgICAgICAgc2VsZWN0
b3ItPnN0eWxlKCktPnNldEFzcGVjdFJhdGlvTnVtZXJhdG9yKHNlbGVjdG9yLT5wYXJlbnRTdHls
ZSgpLT5hc3BlY3RSYXRpb051bWVyYXRvcigpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBh
cHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKLSAgICB7Ci0gICAg
ICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRIYXNBc3BlY3RSYXRpbyhSZW5kZXJTdHlsZTo6aW5p
dGlhbEhhc0FzcGVjdFJhdGlvKCkpOwotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0QXNw
ZWN0UmF0aW9EZW5vbWluYXRvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlvRGVub21p
bmF0b3IoKSk7Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRBc3BlY3RSYXRpb051bWVy
YXRvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJhdGlvTnVtZXJhdG9yKCkpOwotICAgIH0K
LQotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3Is
IENTU1ZhbHVlKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmICghdmFsdWUtPmlzQXNwZWN0UmF0
aW9WYWx1ZSgpKSB7Ci0gICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0SGFzQXNwZWN0
UmF0aW8oZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIENT
U0FzcGVjdFJhdGlvVmFsdWUqIGFzcGVjdFJhdGlvVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NBc3Bl
Y3RSYXRpb1ZhbHVlKj4odmFsdWUpOwotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0SGFz
QXNwZWN0UmF0aW8odHJ1ZSk7Ci0gICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRBc3BlY3RS
YXRpb0Rlbm9taW5hdG9yKGFzcGVjdFJhdGlvVmFsdWUtPmRlbm9taW5hdG9yVmFsdWUoKSk7Ci0g
ICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRBc3BlY3RSYXRpb051bWVyYXRvcihhc3BlY3RS
YXRpb1ZhbHVlLT5udW1lcmF0b3JWYWx1ZSgpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUHJvcGVy
dHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFByb3BlcnR5
SGFuZGxlcigmYXBwbHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFs
dWUpOwotICAgIH0KLX07Ci0KLWNsYXNzIEFwcGx5UHJvcGVydHlab29tIHsKLXByaXZhdGU6Ci0g
ICAgc3RhdGljIHZvaWQgcmVzZXRFZmZlY3RpdmVab29tKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVj
dG9yKQotICAgIHsKLSAgICAgICAgLy8gUmVzZXQgdGhlIHpvb20gaW4gZWZmZWN0LiBUaGlzIGFs
bG93cyB0aGUgc2V0Wm9vbSBtZXRob2QgdG8gYWNjdXJhdGVseSBjb21wdXRlIGEgbmV3IHpvb20g
aW4gZWZmZWN0LgotICAgICAgICBzZWxlY3Rvci0+c2V0RWZmZWN0aXZlWm9vbShzZWxlY3Rvci0+
cGFyZW50U3R5bGUoKSA/IHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT5lZmZlY3RpdmVab29tKCkg
OiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7Ci0gICAgfQotCi1wdWJsaWM6Ci0gICAgc3Rh
dGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCi0g
ICAgewotICAgICAgICByZXNldEVmZmVjdGl2ZVpvb20oc2VsZWN0b3IpOwotICAgICAgICBzZWxl
Y3Rvci0+c2V0Wm9vbShzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+em9vbSgpKTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxl
Y3RvcikKLSAgICB7Ci0gICAgICAgIHJlc2V0RWZmZWN0aXZlWm9vbShzZWxlY3Rvcik7Ci0gICAg
ICAgIHNlbGVjdG9yLT5zZXRab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9y
LCBDU1NWYWx1ZSogdmFsdWUpCi0gICAgewotICAgICAgICBBU1NFUlQodmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSk7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotCi0gICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkgewotICAgICAgICAg
ICAgcmVzZXRFZmZlY3RpdmVab29tKHNlbGVjdG9yKTsKLSAgICAgICAgICAgIHNlbGVjdG9yLT5z
ZXRab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKLSAgICAgICAgfSBlbHNlIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVJlc2V0KSB7Ci0gICAgICAgICAg
ICBzZWxlY3Rvci0+c2V0RWZmZWN0aXZlWm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7
Ci0gICAgICAgICAgICBzZWxlY3Rvci0+c2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20o
KSk7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NT
VmFsdWVEb2N1bWVudCkgewotICAgICAgICAgICAgZmxvYXQgZG9jWm9vbSA9IHNlbGVjdG9yLT5y
b290RWxlbWVudFN0eWxlKCkgPyBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLT56b29tKCkg
OiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKTsKLSAgICAgICAgICAgIHNlbGVjdG9yLT5zZXRF
ZmZlY3RpdmVab29tKGRvY1pvb20pOwotICAgICAgICAgICAgc2VsZWN0b3ItPnNldFpvb20oZG9j
Wm9vbSk7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgp
KSB7Ci0gICAgICAgICAgICByZXNldEVmZmVjdGl2ZVpvb20oc2VsZWN0b3IpOwotICAgICAgICAg
ICAgaWYgKGZsb2F0IHBlcmNlbnQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKQot
ICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5zZXRab29tKHBlcmNlbnQgLyAxMDAuMGYpOwotICAg
ICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc051bWJlcigpKSB7Ci0gICAgICAgICAg
ICByZXNldEVmZmVjdGl2ZVpvb20oc2VsZWN0b3IpOwotICAgICAgICAgICAgaWYgKGZsb2F0IG51
bWJlciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpCi0gICAgICAgICAgICAgICAg
c2VsZWN0b3ItPnNldFpvb20obnVtYmVyKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRp
YyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCi0gICAgewotICAgICAgICByZXR1cm4g
UHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAm
YXBwbHlWYWx1ZSk7Ci0gICAgfQotfTsKLQotY2xhc3MgQXBwbHlQcm9wZXJ0eURpc3BsYXkgewot
cHJpdmF0ZToKLSAgICBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZERpc3BsYXlWYWx1ZShDU1NT
dHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgRURpc3BsYXkgZGlzcGxheVByb3BlcnR5VmFsdWUpCi0g
ICAgewotI2lmIEVOQUJMRShTVkcpCi0gICAgICAgIGlmIChzZWxlY3Rvci0+ZWxlbWVudCgpICYm
IHNlbGVjdG9yLT5lbGVtZW50KCktPmlzU1ZHRWxlbWVudCgpICYmIHNlbGVjdG9yLT5zdHlsZSgp
LT5zdHlsZVR5cGUoKSA9PSBOT1BTRVVETykKLSAgICAgICAgICAgIHJldHVybiAoZGlzcGxheVBy
b3BlcnR5VmFsdWUgPT0gSU5MSU5FIHx8IGRpc3BsYXlQcm9wZXJ0eVZhbHVlID09IEJMT0NLIHx8
IGRpc3BsYXlQcm9wZXJ0eVZhbHVlID09IE5PTkUpOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BB
UkFNKHNlbGVjdG9yKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKGRpc3BsYXlQcm9wZXJ0eVZhbHVl
KTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCi0g
ICAgewotICAgICAgICBFRGlzcGxheSBkaXNwbGF5ID0gc2VsZWN0b3ItPnBhcmVudFN0eWxlKCkt
PmRpc3BsYXkoKTsKLSAgICAgICAgaWYgKCFpc1ZhbGlkRGlzcGxheVZhbHVlKHNlbGVjdG9yLCBk
aXNwbGF5KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCkt
PnNldERpc3BsYXkoZGlzcGxheSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXBwbHlJbml0
aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCi0gICAgewotICAgICAgICBzZWxl
Y3Rvci0+c3R5bGUoKS0+c2V0RGlzcGxheShSZW5kZXJTdHlsZTo6aW5pdGlhbERpc3BsYXkoKSk7
Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBz
ZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQotICAgIHsKLSAgICAgICAgaWYgKCF2YWx1ZS0+aXNQ
cmltaXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEVEaXNwbGF5
IGRpc3BsYXkgPSAqc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0KLSAg
ICAgICAgaWYgKCFpc1ZhbGlkRGlzcGxheVZhbHVlKHNlbGVjdG9yLCBkaXNwbGF5KSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0RGlzcGxheShk
aXNwbGF5KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRs
ZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFByb3BlcnR5SGFuZGxlcigmYXBwbHlJbmhlcml0
VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFsdWUpOwotICAgIH0KLX07Ci0KLWNs
YXNzIEFwcGx5UHJvcGVydHlGbGV4IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseUlu
aGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKLSAgICB7Ci0gICAgICAgIEFw
cGx5UHJvcGVydHlEZWZhdWx0QmFzZTxmbG9hdCwgJlJlbmRlclN0eWxlOjpwb3NpdGl2ZUZsZXgs
IGZsb2F0LCAmUmVuZGVyU3R5bGU6OnNldFBvc2l0aXZlRmxleCwgZmxvYXQsICZSZW5kZXJTdHls
ZTo6aW5pdGlhbE5lZ2F0aXZlRmxleD46OmFwcGx5SW5oZXJpdFZhbHVlKHNlbGVjdG9yKTsKLSAg
ICAgICAgQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPGZsb2F0LCAmUmVuZGVyU3R5bGU6Om5lZ2F0
aXZlRmxleCwgZmxvYXQsICZSZW5kZXJTdHlsZTo6c2V0TmVnYXRpdmVGbGV4LCBmbG9hdCwgJlJl
bmRlclN0eWxlOjppbml0aWFsUG9zaXRpdmVGbGV4Pjo6YXBwbHlJbmhlcml0VmFsdWUoc2VsZWN0
b3IpOwotICAgICAgICBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8TGVuZ3RoLCAmUmVuZGVyU3R5
bGU6OmZsZXhQcmVmZXJyZWRTaXplLCBMZW5ndGgsICZSZW5kZXJTdHlsZTo6c2V0RmxleFByZWZl
cnJlZFNpemUsIExlbmd0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsRmxleFByZWZlcnJlZFNpemU+
OjphcHBseUluaGVyaXRWYWx1ZShzZWxlY3Rvcik7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQg
YXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCi0gICAgewotICAg
ICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0UG9zaXRpdmVGbGV4KFJlbmRlclN0eWxlOjppbml0
aWFsUG9zaXRpdmVGbGV4KCkpOwotICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0TmVnYXRp
dmVGbGV4KFJlbmRlclN0eWxlOjppbml0aWFsTmVnYXRpdmVGbGV4KCkpOwotICAgICAgICBzZWxl
Y3Rvci0+c3R5bGUoKS0+c2V0RmxleFByZWZlcnJlZFNpemUoUmVuZGVyU3R5bGU6OmluaXRpYWxG
bGV4UHJlZmVycmVkU2l6ZSgpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVl
KENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCi0gICAgewotICAg
ICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgICAgIGFwcGx5SW5pdGlhbFZhbHVlKHNlbGVj
dG9yKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghdmFs
dWUtPmlzVmFsdWVMaXN0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIENTU1ZhbHVl
TGlzdCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwotICAg
ICAgICBpZiAodmFsdWVMaXN0LT5sZW5ndGgoKSAhPSAzKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGZsb2F0IGZsZXhWYWx1ZSA9IDA7Ci0gICAgICAgIGlmICghZ2V0RmxleFZhbHVl
KHZhbHVlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSwgZmxleFZhbHVlKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFBvc2l0aXZlRmxl
eChmbGV4VmFsdWUpOwotCi0gICAgICAgIGlmICghZ2V0RmxleFZhbHVlKHZhbHVlTGlzdC0+aXRl
bVdpdGhvdXRCb3VuZHNDaGVjaygxKSwgZmxleFZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldE5lZ2F0aXZlRmxleChmbGV4VmFsdWUpOwot
Ci0gICAgICAgIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxlOjpmbGV4UHJlZmVycmVk
U2l6ZSwgJlJlbmRlclN0eWxlOjpzZXRGbGV4UHJlZmVycmVkU2l6ZSwgJlJlbmRlclN0eWxlOjpp
bml0aWFsRmxleFByZWZlcnJlZFNpemUsIEF1dG9FbmFibGVkPjo6YXBwbHlWYWx1ZShzZWxlY3Rv
ciwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKTsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIFByb3BlcnR5SGFuZGxlcigmYXBwbHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1
ZSwgJmFwcGx5VmFsdWUpOwotICAgIH0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGJvb2wgZ2V0Rmxl
eFZhbHVlKENTU1ZhbHVlKiB2YWx1ZSwgZmxvYXQmIGZsZXhWYWx1ZSkKLSAgICB7Ci0gICAgICAg
IGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIGlmICghcHJpbWl0aXZlVmFs
dWUtPmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGZsZXhW
YWx1ZSA9IHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCk7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLQotfTsKLQotY29uc3QgU3R5bGVCdWlsZGVyJiBTdHlsZUJ1aWxkZXI6OnNo
YXJlZFN0eWxlQnVpbGRlcigpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZUJ1aWxk
ZXIsIHN0eWxlQnVpbGRlckluc3RhbmNlLCAoKSk7Ci0gICAgcmV0dXJuIHN0eWxlQnVpbGRlcklu
c3RhbmNlOwotfQotCi1TdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcigpCi17Ci0gICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyArK2kpCi0gICAgICAgIG1fcHJvcGVydHlN
YXBbaV0gPSBQcm9wZXJ0eUhhbmRsZXIoKTsKLQotICAgIC8vIFBsZWFzZSBrZWVwIENTUyBwcm9w
ZXJ0eSBsaXN0IGluIGFscGhhYmV0aWNhbCBvcmRlci4KLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxF
RmlsbEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIEJhY2tncm91
bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRl
clN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0F0dGFjaG1lbnRTZXQsICZG
aWxsTGF5ZXI6OmF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OnNldEF0dGFjaG1lbnQsICZGaWxsTGF5
ZXI6OmNsZWFyQXR0YWNobWVudCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2htZW50LCAm
Q1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbEF0dGFjaG1lbnQ+OjpjcmVhdGVIYW5kbGVyKCkpOwot
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBBcHBseVBy
b3BlcnR5RmlsbExheWVyPEVGaWxsQm94LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBCYWNr
Z3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZS
ZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNDbGlwU2V0LCAmRmls
bExheWVyOjpjbGlwLCAmRmlsbExheWVyOjpzZXRDbGlwLCAmRmlsbExheWVyOjpjbGVhckNsaXAs
ICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ2xpcCwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxD
bGlwPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IsIEFwcGx5UHJvcGVydHlDb2xvcjxOb0luaGVyaXRGcm9tUGFyZW50
LCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRCYWNrZ3Jv
dW5kQ29sb3IsICZSZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IsICZS
ZW5kZXJTdHlsZTo6aW52YWxpZENvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIEFwcGx5UHJvcGVydHlGaWxs
TGF5ZXI8U3R5bGVJbWFnZSosIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBCYWNrZ3JvdW5k
RmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJT
dHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNJbWFnZVNldCwgJkZpbGxMYXll
cjo6aW1hZ2UsICZGaWxsTGF5ZXI6OnNldEltYWdlLCAmRmlsbExheWVyOjpjbGVhckltYWdlLCAm
RmlsbExheWVyOjppbml0aWFsRmlsbEltYWdlLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbElt
YWdlPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kT3JpZ2luLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94LCBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHls
ZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJz
LCAmRmlsbExheWVyOjppc09yaWdpblNldCwgJkZpbGxMYXllcjo6b3JpZ2luLCAmRmlsbExheWVy
OjpzZXRPcmlnaW4sICZGaWxsTGF5ZXI6OmNsZWFyT3JpZ2luLCAmRmlsbExheWVyOjppbml0aWFs
RmlsbE9yaWdpbiwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxPcmlnaW4+OjpjcmVhdGVIYW5k
bGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3Np
dGlvbiwgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWT46OmNyZWF0
ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uWCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxMZW5ndGgsIENTU1Byb3BlcnR5QmFj
a2dyb3VuZFBvc2l0aW9uWCwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nl
c3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxs
TGF5ZXI6OmlzWFBvc2l0aW9uU2V0LCAmRmlsbExheWVyOjp4UG9zaXRpb24sICZGaWxsTGF5ZXI6
OnNldFhQb3NpdGlvbiwgJkZpbGxMYXllcjo6Y2xlYXJYUG9zaXRpb24sICZGaWxsTGF5ZXI6Omlu
aXRpYWxGaWxsWFBvc2l0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFhQb3NpdGlvbj46
OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFj
a2dyb3VuZFBvc2l0aW9uWSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxMZW5ndGgsIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uWSwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxl
OjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMs
ICZGaWxsTGF5ZXI6OmlzWVBvc2l0aW9uU2V0LCAmRmlsbExheWVyOjp5UG9zaXRpb24sICZGaWxs
TGF5ZXI6OnNldFlQb3NpdGlvbiwgJkZpbGxMYXllcjo6Y2xlYXJZUG9zaXRpb24sICZGaWxsTGF5
ZXI6OmluaXRpYWxGaWxsWVBvc2l0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFlQb3Np
dGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5QmFja2dyb3VuZFJlcGVhdCwgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVl
LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBl
YXRZPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUmVwZWF0WCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbFJlcGVhdCwg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRl
clN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRM
YXllcnMsICZGaWxsTGF5ZXI6OmlzUmVwZWF0WFNldCwgJkZpbGxMYXllcjo6cmVwZWF0WCwgJkZp
bGxMYXllcjo6c2V0UmVwZWF0WCwgJkZpbGxMYXllcjo6Y2xlYXJSZXBlYXRYLCAmRmlsbExheWVy
Ojppbml0aWFsRmlsbFJlcGVhdFgsICZDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsUmVwZWF0WD46
OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFj
a2dyb3VuZFJlcGVhdFksIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxSZXBlYXQsIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdFksIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHls
ZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJz
LCAmRmlsbExheWVyOjppc1JlcGVhdFlTZXQsICZGaWxsTGF5ZXI6OnJlcGVhdFksICZGaWxsTGF5
ZXI6OnNldFJlcGVhdFksICZGaWxsTGF5ZXI6OmNsZWFyUmVwZWF0WSwgJkZpbGxMYXllcjo6aW5p
dGlhbEZpbGxSZXBlYXRZLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFJlcGVhdFk+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRTaXplLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEZpbGxTaXplLCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRTaXplLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tn
cm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6
aXNTaXplU2V0LCAmRmlsbExheWVyOjpzaXplLCAmRmlsbExheWVyOjpzZXRTaXplLCAmRmlsbExh
eWVyOjpjbGVhclNpemUsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsU2l6ZSwgJkNTU1N0eWxlU2Vs
ZWN0b3I6Om1hcEZpbGxTaXplPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlCb3JkZXIsIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NW
YWx1ZSwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NT
UHJvcGVydHlCb3JkZXJDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1
cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGg+OjpjcmVhdGVIYW5k
bGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNv
bG9yLCBBcHBseVByb3BlcnR5Q29sb3I8Tm9Jbmhlcml0RnJvbVBhcmVudCwgJlJlbmRlclN0eWxl
Ojpib3JkZXJCb3R0b21Db2xvciwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21Db2xvciwg
JlJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yLCAmUmVuZGVyU3R5
bGU6OmNvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBBcHBseVByb3BlcnR5Qm9yZGVyUmFkaXVz
PCZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9tTGVmdFJhZGl1cywgJlJlbmRlclN0eWxlOjpzZXRC
b3JkZXJCb3R0b21MZWZ0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJSYWRpdXM+
OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBBcHBseVByb3BlcnR5Qm9yZGVyUmFkaXVzPCZSZW5kZXJT
dHlsZTo6Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90
dG9tUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclJhZGl1cz46OmNyZWF0
ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tU3R5bGUsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxl
Ojpib3JkZXJCb3R0b21TdHlsZSwgRUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRl
ckJvdHRvbVN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0
eWxlPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21XaWR0aCwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQs
ICZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9tV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVy
Qm90dG9tV2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoLCBOb3JtYWxEaXNh
YmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UsIEFwcGx5UHJvcGVydHlEZWZhdWx0
PEVCb3JkZXJDb2xsYXBzZSwgJlJlbmRlclN0eWxlOjpib3JkZXJDb2xsYXBzZSwgRUJvcmRlckNv
bGxhcHNlLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckNvbGxhcHNlLCBFQm9yZGVyQ29sbGFwc2Us
ICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlckNvbGxhcHNlPjo6Y3JlYXRlSGFuZGxlcigpKTsK
LSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgQXBwbHlQcm9w
ZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3Is
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgQXBwbHlQcm9wZXJ0eUV4cGFu
ZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlLCBDU1NQcm9w
ZXJ0eUJvcmRlckltYWdlU2xpY2UsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VXaWR0aCwgQ1NTUHJv
cGVydHlCb3JkZXJJbWFnZU91dHNldCwgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVJlcGVhdD46OmNy
ZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVy
SW1hZ2VPdXRzZXQsIEFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlmaWVyPEltYWdlLCBPdXRz
ZXQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eUJvcmRlckltYWdlUmVwZWF0LCBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjxJbWFn
ZSwgUmVwZWF0Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlCb3JkZXJJbWFnZVNsaWNlLCBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmll
cjxJbWFnZSwgU2xpY2U+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlLCBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VT
b3VyY2U8Q1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZSwgJlJlbmRlclN0eWxlOjpib3JkZXJJ
bWFnZVNvdXJjZSwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJJbWFnZVNvdXJjZSwgJlJlbmRlclN0
eWxlOjppbml0aWFsQm9yZGVySW1hZ2VTb3VyY2U+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckltYWdlV2lkdGgsIEFwcGx5UHJvcGVy
dHlCb3JkZXJJbWFnZU1vZGlmaWVyPEltYWdlLCBXaWR0aD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0g
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyTGVmdCwgQXBwbHlQcm9wZXJ0
eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciwgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0Q29sb3IsIEFwcGx5UHJvcGVydHlDb2xvcjxOb0luaGVyaXRGcm9tUGFyZW50LCAmUmVuZGVy
U3R5bGU6OmJvcmRlckxlZnRDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJMZWZ0Q29sb3Is
ICZSZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IsICZSZW5kZXJTdHls
ZTo6Y29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJvcmRlclN0eWxl
LCAmUmVuZGVyU3R5bGU6OmJvcmRlckxlZnRTdHlsZSwgRUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5
bGU6OnNldEJvcmRlckxlZnRTdHlsZSwgRUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OmluaXRp
YWxCb3JkZXJTdHlsZT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1
bnNpZ25lZCwgJlJlbmRlclN0eWxlOjpib3JkZXJMZWZ0V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0
Qm9yZGVyTGVmdFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCwgTm9ybWFs
RGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgQXBwbHlQcm9wZXJ0eUV4cGFu
ZGluZzxFeHBhbmRWYWx1ZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLCBDU1NQcm9w
ZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRp
dXMsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM+OjpjcmVhdGVIYW5kbGVyKCkp
OwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0LCBBcHBseVBy
b3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xv
ciwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lk
dGg+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0Q29sb3IsIEFwcGx5UHJvcGVydHlDb2xvcjxOb0luaGVyaXRGcm9tUGFyZW50
LCAmUmVuZGVyU3R5bGU6OmJvcmRlclJpZ2h0Q29sb3IsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVy
UmlnaHRDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3Is
ICZSZW5kZXJTdHlsZTo6Y29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIEFwcGx5UHJvcGVydHlEZWZhdWx0
PEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpib3JkZXJSaWdodFN0eWxlLCBFQm9yZGVyU3R5
bGUsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyUmlnaHRTdHlsZSwgRUJvcmRlclN0eWxlLCAmUmVu
ZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0
UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQXBwbHlQcm9wZXJ0
eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQsICZSZW5kZXJTdHlsZTo6Ym9yZGVyUmlnaHRXaWR0aCwg
JlJlbmRlclN0eWxlOjpzZXRCb3JkZXJSaWdodFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxC
b3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+OjpjcmVhdGVIYW5k
bGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcs
IEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJIb3Jpem9udGFsU3BhY2luZywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNw
YWNpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eUJvcmRlclN0eWxlLCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENT
U1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU+Ojpj
cmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRl
clRvcCwgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJv
cmRlclRvcENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRl
clRvcFdpZHRoPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlCb3JkZXJUb3BDb2xvciwgQXBwbHlQcm9wZXJ0eUNvbG9yPE5vSW5oZXJpdEZyb21Q
YXJlbnQsICZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9wQ29sb3IsICZSZW5kZXJTdHlsZTo6c2V0Qm9y
ZGVyVG9wQ29sb3IsICZSZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvciwg
JlJlbmRlclN0eWxlOjpjb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgQXBwbHlQcm9wZXJ0eUJvcmRl
clJhZGl1czwmUmVuZGVyU3R5bGU6OmJvcmRlclRvcExlZnRSYWRpdXMsICZSZW5kZXJTdHlsZTo6
c2V0Qm9yZGVyVG9wTGVmdFJhZGl1cywgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyUmFkaXVz
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlC
b3JkZXJUb3BSaWdodFJhZGl1cywgQXBwbHlQcm9wZXJ0eUJvcmRlclJhZGl1czwmUmVuZGVyU3R5
bGU6OmJvcmRlclRvcFJpZ2h0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlclRvcFJpZ2h0
UmFkaXVzLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJSYWRpdXM+OjpjcmVhdGVIYW5kbGVy
KCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBB
cHBseVByb3BlcnR5RGVmYXVsdDxFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9w
U3R5bGUsIEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJUb3BTdHlsZSwgRUJv
cmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZT46OmNyZWF0ZUhhbmRs
ZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgs
IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkLCAmUmVuZGVyU3R5bGU6OmJvcmRl
clRvcFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlclRvcFdpZHRoLCAmUmVuZGVyU3R5bGU6
OmluaXRpYWxCb3JkZXJXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+Ojpj
cmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRl
cldpZHRoLCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5
Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGg+OjpjcmVhdGVIYW5k
bGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvdHRvbSwgQXBwbHlQ
cm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6OmJvdHRvbSwgJlJlbmRlclN0eWxlOjpzZXRCb3R0
b20sICZSZW5kZXJTdHlsZTo6aW5pdGlhbE9mZnNldCwgQXV0b0VuYWJsZWQ+OjpjcmVhdGVIYW5k
bGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJveFNpemluZywgQXBw
bHlQcm9wZXJ0eURlZmF1bHQ8RUJveFNpemluZywgJlJlbmRlclN0eWxlOjpib3hTaXppbmcsIEVC
b3hTaXppbmcsICZSZW5kZXJTdHlsZTo6c2V0Qm94U2l6aW5nLCBFQm94U2l6aW5nLCAmUmVuZGVy
U3R5bGU6OmluaXRpYWxCb3hTaXppbmc+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eUNhcHRpb25TaWRlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxF
Q2FwdGlvblNpZGUsICZSZW5kZXJTdHlsZTo6Y2FwdGlvblNpZGUsIEVDYXB0aW9uU2lkZSwgJlJl
bmRlclN0eWxlOjpzZXRDYXB0aW9uU2lkZSwgRUNhcHRpb25TaWRlLCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxDYXB0aW9uU2lkZT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5Q2xlYXIsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVDbGVhciwgJlJlbmRl
clN0eWxlOjpjbGVhciwgRUNsZWFyLCAmUmVuZGVyU3R5bGU6OnNldENsZWFyLCBFQ2xlYXIsICZS
ZW5kZXJTdHlsZTo6aW5pdGlhbENsZWFyPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlDbGlwLCBBcHBseVByb3BlcnR5Q2xpcDo6Y3JlYXRlSGFu
ZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlDb2xvciwgQXBwbHlQ
cm9wZXJ0eUNvbG9yPEluaGVyaXRGcm9tUGFyZW50LCAmUmVuZGVyU3R5bGU6OmNvbG9yLCAmUmVu
ZGVyU3R5bGU6OnNldENvbG9yLCAmUmVuZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5rQ29sb3IsICZS
ZW5kZXJTdHlsZTo6aW52YWxpZENvbG9yLCBSZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9yPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlDb3VudGVy
SW5jcmVtZW50LCBBcHBseVByb3BlcnR5Q291bnRlcjxJbmNyZW1lbnQ+OjpjcmVhdGVIYW5kbGVy
KCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldCwgQXBw
bHlQcm9wZXJ0eUNvdW50ZXI8UmVzZXQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eUN1cnNvciwgQXBwbHlQcm9wZXJ0eUN1cnNvcjo6Y3JlYXRl
SGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlEaXJlY3Rpb24s
IEFwcGx5UHJvcGVydHlEaXJlY3Rpb248JlJlbmRlclN0eWxlOjpkaXJlY3Rpb24sICZSZW5kZXJT
dHlsZTo6c2V0RGlyZWN0aW9uLCBSZW5kZXJTdHlsZTo6aW5pdGlhbERpcmVjdGlvbj46OmNyZWF0
ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5RGlzcGxheSwg
QXBwbHlQcm9wZXJ0eURpc3BsYXk6OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5RW1wdHlDZWxscywgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUVtcHR5
Q2VsbCwgJlJlbmRlclN0eWxlOjplbXB0eUNlbGxzLCBFRW1wdHlDZWxsLCAmUmVuZGVyU3R5bGU6
OnNldEVtcHR5Q2VsbHMsIEVFbXB0eUNlbGwsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEVtcHR5Q2Vs
bHM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eUZsb2F0LCBBcHBseVByb3BlcnR5RGVmYXVsdDxFRmxvYXQsICZSZW5kZXJTdHlsZTo6ZmxvYXRp
bmcsIEVGbG9hdCwgJlJlbmRlclN0eWxlOjpzZXRGbG9hdGluZywgRUZsb2F0LCAmUmVuZGVyU3R5
bGU6OmluaXRpYWxGbG9hdGluZz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5Rm9udFNpemUsIEFwcGx5UHJvcGVydHlGb250U2l6ZTo6Y3JlYXRl
SGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlGb250U3R5bGUs
IEFwcGx5UHJvcGVydHlGb250PEZvbnRJdGFsaWMsICZGb250RGVzY3JpcHRpb246Oml0YWxpYywg
JkZvbnREZXNjcmlwdGlvbjo6c2V0SXRhbGljLCBGb250SXRhbGljT2ZmPjo6Y3JlYXRlSGFuZGxl
cigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlGb250VmFyaWFudCwgQXBw
bHlQcm9wZXJ0eUZvbnQ8Rm9udFNtYWxsQ2FwcywgJkZvbnREZXNjcmlwdGlvbjo6c21hbGxDYXBz
LCAmRm9udERlc2NyaXB0aW9uOjpzZXRTbWFsbENhcHMsIEZvbnRTbWFsbENhcHNPZmY+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUZvbnRXZWln
aHQsIEFwcGx5UHJvcGVydHlGb250V2VpZ2h0OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUhlaWdodCwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVu
ZGVyU3R5bGU6OmhlaWdodCwgJlJlbmRlclN0eWxlOjpzZXRIZWlnaHQsICZSZW5kZXJTdHlsZTo6
aW5pdGlhbFNpemUsIEF1dG9FbmFibGVkLCBJbnRyaW5zaWNFbmFibGVkLCBNaW5JbnRyaW5zaWNF
bmFibGVkLCBOb25lRGlzYWJsZWQsIFVuZGVmaW5lZERpc2FibGVkPjo6Y3JlYXRlSGFuZGxlcigp
KTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmluZywgQXBw
bHlQcm9wZXJ0eURlZmF1bHQ8RUltYWdlUmVuZGVyaW5nLCAmUmVuZGVyU3R5bGU6OmltYWdlUmVu
ZGVyaW5nLCBFSW1hZ2VSZW5kZXJpbmcsICZSZW5kZXJTdHlsZTo6c2V0SW1hZ2VSZW5kZXJpbmcs
IEVJbWFnZVJlbmRlcmluZywgJlJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZW5kZXJpbmc+Ojpj
cmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUxlZnQs
IEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxlOjpsZWZ0LCAmUmVuZGVyU3R5bGU6OnNl
dExlZnQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbE9mZnNldCwgQXV0b0VuYWJsZWQ+OjpjcmVhdGVI
YW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUxldHRlclNwYWNp
bmcsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPGludCwgJlJlbmRlclN0eWxlOjpsZXR0ZXJT
cGFjaW5nLCAmUmVuZGVyU3R5bGU6OnNldExldHRlclNwYWNpbmcsICZSZW5kZXJTdHlsZTo6aW5p
dGlhbExldHRlcldvcmRTcGFjaW5nLCBOb3JtYWxFbmFibGVkLCBUaGlja25lc3NEaXNhYmxlZCwg
U1ZHWm9vbUVuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eUxpbmVIZWlnaHQsIEFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0OjpjcmVhdGVI
YW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUxpc3RTdHlsZSwg
QXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUxpc3RTdHls
ZVR5cGUsIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9z
aXRpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eUxpc3RTdHlsZUltYWdlLCBBcHBseVByb3BlcnR5U3R5bGVJbWFnZTwmUmVuZGVyU3R5bGU6
Omxpc3RTdHlsZUltYWdlLCAmUmVuZGVyU3R5bGU6OnNldExpc3RTdHlsZUltYWdlLCAmUmVuZGVy
U3R5bGU6OmluaXRpYWxMaXN0U3R5bGVJbWFnZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZT46
OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TGlz
dFN0eWxlUG9zaXRpb24sIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVMaXN0U3R5bGVQb3NpdGlvbiwg
JlJlbmRlclN0eWxlOjpsaXN0U3R5bGVQb3NpdGlvbiwgRUxpc3RTdHlsZVBvc2l0aW9uLCAmUmVu
ZGVyU3R5bGU6OnNldExpc3RTdHlsZVBvc2l0aW9uLCBFTGlzdFN0eWxlUG9zaXRpb24sICZSZW5k
ZXJTdHlsZTo6aW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBBcHBseVByb3Bl
cnR5RGVmYXVsdDxFTGlzdFN0eWxlVHlwZSwgJlJlbmRlclN0eWxlOjpsaXN0U3R5bGVUeXBlLCBF
TGlzdFN0eWxlVHlwZSwgJlJlbmRlclN0eWxlOjpzZXRMaXN0U3R5bGVUeXBlLCBFTGlzdFN0eWxl
VHlwZSwgJlJlbmRlclN0eWxlOjppbml0aWFsTGlzdFN0eWxlVHlwZT46OmNyZWF0ZUhhbmRsZXIo
KSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TWFyZ2luLCBBcHBseVByb3Bl
cnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5TWFyZ2luVG9wLCBDU1NQcm9w
ZXJ0eU1hcmdpblJpZ2h0LCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgQ1NTUHJvcGVydHlNYXJn
aW5MZWZ0Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlNYXJnaW5Cb3R0b20sIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxlOjptYXJn
aW5Cb3R0b20sICZSZW5kZXJTdHlsZTo6c2V0TWFyZ2luQm90dG9tLCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxNYXJnaW4sIEF1dG9FbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBBcHBseVByb3BlcnR5TGVuZ3RoPCZS
ZW5kZXJTdHlsZTo6bWFyZ2luTGVmdCwgJlJlbmRlclN0eWxlOjpzZXRNYXJnaW5MZWZ0LCAmUmVu
ZGVyU3R5bGU6OmluaXRpYWxNYXJnaW4sIEF1dG9FbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsK
LSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgQXBwbHlQcm9w
ZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6Om1hcmdpblJpZ2h0LCAmUmVuZGVyU3R5bGU6OnNldE1h
cmdpblJpZ2h0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxNYXJnaW4sIEF1dG9FbmFibGVkPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlNYXJnaW5U
b3AsIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxlOjptYXJnaW5Ub3AsICZSZW5kZXJT
dHlsZTo6c2V0TWFyZ2luVG9wLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxNYXJnaW4sIEF1dG9FbmFi
bGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlNYXhIZWlnaHQsIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxlOjptYXhIZWlnaHQs
ICZSZW5kZXJTdHlsZTo6c2V0TWF4SGVpZ2h0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxNYXhTaXpl
LCBBdXRvRW5hYmxlZCwgSW50cmluc2ljRW5hYmxlZCwgTWluSW50cmluc2ljRW5hYmxlZCwgTm9u
ZUVuYWJsZWQsIFVuZGVmaW5lZEVuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU1heFdpZHRoLCBBcHBseVByb3BlcnR5TGVuZ3RoPCZS
ZW5kZXJTdHlsZTo6bWF4V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0TWF4V2lkdGgsICZSZW5kZXJT
dHlsZTo6aW5pdGlhbE1heFNpemUsIEF1dG9FbmFibGVkLCBJbnRyaW5zaWNFbmFibGVkLCBNaW5J
bnRyaW5zaWNFbmFibGVkLCBOb25lRW5hYmxlZCwgVW5kZWZpbmVkRW5hYmxlZD46OmNyZWF0ZUhh
bmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TWluSGVpZ2h0LCBB
cHBseVByb3BlcnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6bWluSGVpZ2h0LCAmUmVuZGVyU3R5bGU6
OnNldE1pbkhlaWdodCwgJlJlbmRlclN0eWxlOjppbml0aWFsTWluU2l6ZSwgQXV0b0VuYWJsZWQs
IEludHJpbnNpY0VuYWJsZWQsIE1pbkludHJpbnNpY0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkp
OwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU1pbldpZHRoLCBBcHBseVByb3Bl
cnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6bWluV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0TWluV2lk
dGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbE1pblNpemUsIEF1dG9FbmFibGVkLCBJbnRyaW5zaWNF
bmFibGVkLCBNaW5JbnRyaW5zaWNFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlPcnBoYW5zLCBBcHBseVByb3BlcnR5RGVmYXVsdDxz
aG9ydCwgJlJlbmRlclN0eWxlOjpvcnBoYW5zLCBzaG9ydCwgJlJlbmRlclN0eWxlOjpzZXRPcnBo
YW5zLCBzaG9ydCwgJlJlbmRlclN0eWxlOjppbml0aWFsT3JwaGFucz46OmNyZWF0ZUhhbmRsZXIo
KSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3V0bGluZSwgQXBwbHlQcm9w
ZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwgQ1NT
UHJvcGVydHlPdXRsaW5lQ29sb3IsIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3Is
IEFwcGx5UHJvcGVydHlDb2xvcjxOb0luaGVyaXRGcm9tUGFyZW50LCAmUmVuZGVyU3R5bGU6Om91
dGxpbmVDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lQ29sb3IsICZSZW5kZXJTdHlsZTo6
c2V0VmlzaXRlZExpbmtPdXRsaW5lQ29sb3IsICZSZW5kZXJTdHlsZTo6Y29sb3I+OjpjcmVhdGVI
YW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU91dGxpbmVPZmZz
ZXQsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPGludCwgJlJlbmRlclN0eWxlOjpvdXRsaW5l
T2Zmc2V0LCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVPZmZzZXQsICZSZW5kZXJTdHlsZTo6aW5p
dGlhbE91dGxpbmVPZmZzZXQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwgQXBwbHlQcm9wZXJ0eU91dGxpbmVTdHlsZTo6
Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlPdXRs
aW5lV2lkdGgsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCAmUmVu
ZGVyU3R5bGU6Om91dGxpbmVXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lV2lkdGgsICZS
ZW5kZXJTdHlsZTo6aW5pdGlhbE91dGxpbmVXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVz
c0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eU92ZXJmbG93LCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPEV4cGFuZFZhbHVlLCBDU1NQ
cm9wZXJ0eU92ZXJmbG93WCwgQ1NTUHJvcGVydHlPdmVyZmxvd1k+OjpjcmVhdGVIYW5kbGVyKCkp
OwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU92ZXJmbG93WCwgQXBwbHlQcm9w
ZXJ0eURlZmF1bHQ8RU92ZXJmbG93LCAmUmVuZGVyU3R5bGU6Om92ZXJmbG93WCwgRU92ZXJmbG93
LCAmUmVuZGVyU3R5bGU6OnNldE92ZXJmbG93WCwgRU92ZXJmbG93LCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxPdmVyZmxvd1g+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eU92ZXJmbG93WSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RU92ZXJmbG93LCAm
UmVuZGVyU3R5bGU6Om92ZXJmbG93WSwgRU92ZXJmbG93LCAmUmVuZGVyU3R5bGU6OnNldE92ZXJm
bG93WSwgRU92ZXJmbG93LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxPdmVyZmxvd1k+OjpjcmVhdGVI
YW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVBhZGRpbmcsIEFw
cGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlQYWRkaW5nVG9w
LCBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBDU1NQ
cm9wZXJ0eVBhZGRpbmdMZWZ0Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBBcHBseVByb3BlcnR5TGVuZ3RoPCZSZW5k
ZXJTdHlsZTo6cGFkZGluZ0JvdHRvbSwgJlJlbmRlclN0eWxlOjpzZXRQYWRkaW5nQm90dG9tLCAm
UmVuZGVyU3R5bGU6OmluaXRpYWxQYWRkaW5nPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCwgQXBwbHlQcm9wZXJ0eUxlbmd0
aDwmUmVuZGVyU3R5bGU6OnBhZGRpbmdMZWZ0LCAmUmVuZGVyU3R5bGU6OnNldFBhZGRpbmdMZWZ0
LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQYWRkaW5nPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQsIEFwcGx5UHJvcGVydHlM
ZW5ndGg8JlJlbmRlclN0eWxlOjpwYWRkaW5nUmlnaHQsICZSZW5kZXJTdHlsZTo6c2V0UGFkZGlu
Z1JpZ2h0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQYWRkaW5nPjo6Y3JlYXRlSGFuZGxlcigpKTsK
LSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlQYWRkaW5nVG9wLCBBcHBseVByb3Bl
cnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6cGFkZGluZ1RvcCwgJlJlbmRlclN0eWxlOjpzZXRQYWRk
aW5nVG9wLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQYWRkaW5nPjo6Y3JlYXRlSGFuZGxlcigpKTsK
LSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlciwgQXBwbHlQ
cm9wZXJ0eURlZmF1bHQ8RVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjpwYWdlQnJlYWtBZnRlciwg
RVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjpzZXRQYWdlQnJlYWtBZnRlciwgRVBhZ2VCcmVhaywg
JlJlbmRlclN0eWxlOjppbml0aWFsUGFnZUJyZWFrPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmUsIEFwcGx5UHJvcGVy
dHlEZWZhdWx0PEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6cGFnZUJyZWFrQmVmb3JlLCBFUGFn
ZUJyZWFrLCAmUmVuZGVyU3R5bGU6OnNldFBhZ2VCcmVha0JlZm9yZSwgRVBhZ2VCcmVhaywgJlJl
bmRlclN0eWxlOjppbml0aWFsUGFnZUJyZWFrPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUsIEFwcGx5UHJvcGVydHlE
ZWZhdWx0PEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6cGFnZUJyZWFrSW5zaWRlLCBFUGFnZUJy
ZWFrLCAmUmVuZGVyU3R5bGU6OnNldFBhZ2VCcmVha0luc2lkZSwgRVBhZ2VCcmVhaywgJlJlbmRl
clN0eWxlOjppbml0aWFsUGFnZUJyZWFrPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlQb3NpdGlvbiwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVBv
c2l0aW9uLCAmUmVuZGVyU3R5bGU6OnBvc2l0aW9uLCBFUG9zaXRpb24sICZSZW5kZXJTdHlsZTo6
c2V0UG9zaXRpb24sIEVQb3NpdGlvbiwgJlJlbmRlclN0eWxlOjppbml0aWFsUG9zaXRpb24+Ojpj
cmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVJlc2l6
ZSwgQXBwbHlQcm9wZXJ0eVJlc2l6ZTo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlSaWdodCwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5
bGU6OnJpZ2h0LCAmUmVuZGVyU3R5bGU6OnNldFJpZ2h0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxP
ZmZzZXQsIEF1dG9FbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlTaXplLCBBcHBseVByb3BlcnR5UGFnZVNpemU6OmNyZWF0ZUhhbmRs
ZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5U3BlYWssIEFwcGx5UHJv
cGVydHlEZWZhdWx0PEVTcGVhaywgJlJlbmRlclN0eWxlOjpzcGVhaywgRVNwZWFrLCAmUmVuZGVy
U3R5bGU6OnNldFNwZWFrLCBFU3BlYWssICZSZW5kZXJTdHlsZTo6aW5pdGlhbFNwZWFrPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlUYWJsZUxh
eW91dCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVRhYmxlTGF5b3V0LCAmUmVuZGVyU3R5bGU6OnRh
YmxlTGF5b3V0LCBFVGFibGVMYXlvdXQsICZSZW5kZXJTdHlsZTo6c2V0VGFibGVMYXlvdXQsIEVU
YWJsZUxheW91dCwgJlJlbmRlclN0eWxlOjppbml0aWFsVGFibGVMYXlvdXQ+OjpjcmVhdGVIYW5k
bGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQXBw
bHlQcm9wZXJ0eVRleHRBbGlnbjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgQXBwbHlQcm9wZXJ0eVRleHREZWNvcmF0
aW9uOjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVRleHRJbmRlbnQsIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxlOjp0ZXh0SW5kZW50
LCAmUmVuZGVyU3R5bGU6OnNldFRleHRJbmRlbnQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJ
bmRlbnQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eVRleHRPdmVyZmxvdywgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8VGV4dE92ZXJmbG93LCAmUmVu
ZGVyU3R5bGU6OnRleHRPdmVyZmxvdywgVGV4dE92ZXJmbG93LCAmUmVuZGVyU3R5bGU6OnNldFRl
eHRPdmVyZmxvdywgVGV4dE92ZXJmbG93LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0T3ZlcmZs
b3c+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVRleHRSZW5kZXJpbmcsIEFwcGx5UHJvcGVydHlGb250PFRleHRSZW5kZXJpbmdNb2RlLCAmRm9u
dERlc2NyaXB0aW9uOjp0ZXh0UmVuZGVyaW5nTW9kZSwgJkZvbnREZXNjcmlwdGlvbjo6c2V0VGV4
dFJlbmRlcmluZ01vZGUsIEF1dG9UZXh0UmVuZGVyaW5nPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtLCBBcHBseVByb3Bl
cnR5RGVmYXVsdDxFVGV4dFRyYW5zZm9ybSwgJlJlbmRlclN0eWxlOjp0ZXh0VHJhbnNmb3JtLCBF
VGV4dFRyYW5zZm9ybSwgJlJlbmRlclN0eWxlOjpzZXRUZXh0VHJhbnNmb3JtLCBFVGV4dFRyYW5z
Zm9ybSwgJlJlbmRlclN0eWxlOjppbml0aWFsVGV4dFRyYW5zZm9ybT46OmNyZWF0ZUhhbmRsZXIo
KSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5VG9wLCBBcHBseVByb3BlcnR5
TGVuZ3RoPCZSZW5kZXJTdHlsZTo6dG9wLCAmUmVuZGVyU3R5bGU6OnNldFRvcCwgJlJlbmRlclN0
eWxlOjppbml0aWFsT2Zmc2V0LCBBdXRvRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5VW5pY29kZUJpZGksIEFwcGx5UHJvcGVydHlV
bmljb2RlQmlkaTo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlWZXJ0aWNhbEFsaWduLCBBcHBseVByb3BlcnR5VmVydGljYWxBbGlnbjo6Y3JlYXRl
SGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlWaXNpYmlsaXR5
LCBBcHBseVByb3BlcnR5RGVmYXVsdDxFVmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjp2aXNpYmls
aXR5LCBFVmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjpzZXRWaXNpYmlsaXR5LCBFVmlzaWJpbGl0
eSwgJlJlbmRlclN0eWxlOjppbml0aWFsVmlzaWJpbGl0eT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0g
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXksIEFw
cGx5UHJvcGVydHlBbmltYXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjpkZWxheSwgJkFuaW1hdGlv
bjo6c2V0RGVsYXksICZBbmltYXRpb246OmlzRGVsYXlTZXQsICZBbmltYXRpb246OmNsZWFyRGVs
YXksICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EZWxheSwgJkNTU1N0eWxlU2VsZWN0b3I6
Om1hcEFuaW1hdGlvbkRlbGF5LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5k
ZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLCBBcHBseVByb3BlcnR5
QW5pbWF0aW9uPEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uLCAmQW5pbWF0aW9uOjpkaXJl
Y3Rpb24sICZBbmltYXRpb246OnNldERpcmVjdGlvbiwgJkFuaW1hdGlvbjo6aXNEaXJlY3Rpb25T
ZXQsICZBbmltYXRpb246OmNsZWFyRGlyZWN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0
aW9uRGlyZWN0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uLCAm
UmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46
OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uRHVyYXRpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248ZG91YmxlLCAmQW5p
bWF0aW9uOjpkdXJhdGlvbiwgJkFuaW1hdGlvbjo6c2V0RHVyYXRpb24sICZBbmltYXRpb246Omlz
RHVyYXRpb25TZXQsICZBbmltYXRpb246OmNsZWFyRHVyYXRpb24sICZBbmltYXRpb246OmluaXRp
YWxBbmltYXRpb25EdXJhdGlvbiwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbkR1cmF0
aW9uLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0
aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUsIEFwcGx5UHJvcGVydHlBbmltYXRpb248dW5zaWdu
ZWQsICZBbmltYXRpb246OmZpbGxNb2RlLCAmQW5pbWF0aW9uOjpzZXRGaWxsTW9kZSwgJkFuaW1h
dGlvbjo6aXNGaWxsTW9kZVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJGaWxsTW9kZSwgJkFuaW1hdGlv
bjo6aW5pdGlhbEFuaW1hdGlvbkZpbGxNb2RlLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0
aW9uRmlsbE1vZGUsICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxl
OjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwgQXBwbHlQcm9wZXJ0eUFu
aW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246Oml0ZXJhdGlvbkNvdW50LCAmQW5pbWF0aW9uOjpz
ZXRJdGVyYXRpb25Db3VudCwgJkFuaW1hdGlvbjo6aXNJdGVyYXRpb25Db3VudFNldCwgJkFuaW1h
dGlvbjo6Y2xlYXJJdGVyYXRpb25Db3VudCwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkl0
ZXJhdGlvbkNvdW50LCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291
bnQsICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRp
b25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25OYW1lLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGNvbnN0IFN0cmlu
ZyYsICZBbmltYXRpb246Om5hbWUsICZBbmltYXRpb246OnNldE5hbWUsICZBbmltYXRpb246Omlz
TmFtZVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJOYW1lLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0
aW9uTmFtZSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbk5hbWUsICZSZW5kZXJTdHls
ZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25QbGF5U3RhdGUsIEFwcGx5UHJvcGVydHlBbmltYXRpb248RUFuaW1QbGF5U3RhdGUsICZBbmlt
YXRpb246OnBsYXlTdGF0ZSwgJkFuaW1hdGlvbjo6c2V0UGxheVN0YXRlLCAmQW5pbWF0aW9uOjpp
c1BsYXlTdGF0ZVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJQbGF5U3RhdGUsICZBbmltYXRpb246Omlu
aXRpYWxBbmltYXRpb25QbGF5U3RhdGUsICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25Q
bGF5U3RhdGUsICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjph
bmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1h
dGlvbjxjb25zdCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiwgJkFuaW1hdGlvbjo6dGltaW5n
RnVuY3Rpb24sICZBbmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppc1Rp
bWluZ0Z1bmN0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVhclRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0
aW9uOjppbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sICZDU1NTdHlsZVNlbGVjdG9yOjpt
YXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25z
LCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2UsIEFwcGx5UHJvcGVydHlE
ZWZhdWx0PENvbnRyb2xQYXJ0LCAmUmVuZGVyU3R5bGU6OmFwcGVhcmFuY2UsIENvbnRyb2xQYXJ0
LCAmUmVuZGVyU3R5bGU6OnNldEFwcGVhcmFuY2UsIENvbnRyb2xQYXJ0LCAmUmVuZGVyU3R5bGU6
OmluaXRpYWxBcHBlYXJhbmNlPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbywgQXBwbHlQcm9wZXJ0eUFzcGVjdFJh
dGlvOjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJhY2tmYWNl
VmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjpiYWNrZmFjZVZpc2liaWxpdHksIEVCYWNrZmFjZVZp
c2liaWxpdHksICZSZW5kZXJTdHlsZTo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5LCBFQmFja2ZhY2VW
aXNpYmlsaXR5LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZmFjZVZpc2liaWxpdHk+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJh
Y2tncm91bmRDbGlwLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwKTsKLSAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlLCBBcHBseVByb3Bl
cnR5RmlsbExheWVyPENvbXBvc2l0ZU9wZXJhdG9yLCBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91
bmRDb21wb3NpdGUsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFj
a2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVy
Ojppc0NvbXBvc2l0ZVNldCwgJkZpbGxMYXllcjo6Y29tcG9zaXRlLCAmRmlsbExheWVyOjpzZXRD
b21wb3NpdGUsICZGaWxsTGF5ZXI6OmNsZWFyQ29tcG9zaXRlLCAmRmlsbExheWVyOjppbml0aWFs
RmlsbENvbXBvc2l0ZSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxDb21wb3NpdGU+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJh
Y2tncm91bmRPcmlnaW4sIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbik7Ci0gICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUsIENTU1Byb3BlcnR5
QmFja2dyb3VuZFNpemUpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckZpdCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJvcmRlckZpdCwgJlJlbmRlclN0eWxl
Ojpib3JkZXJGaXQsIEVCb3JkZXJGaXQsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyRml0LCBFQm9y
ZGVyRml0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJGaXQ+OjpjcmVhdGVIYW5kbGVyKCkp
OwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250
YWxTcGFjaW5nLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDxzaG9ydCwgJlJlbmRlclN0eWxl
Ojpob3Jpem9udGFsQm9yZGVyU3BhY2luZywgJlJlbmRlclN0eWxlOjpzZXRIb3Jpem9udGFsQm9y
ZGVyU3BhY2luZywgJlJlbmRlclN0eWxlOjppbml0aWFsSG9yaXpvbnRhbEJvcmRlclNwYWNpbmc+
OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckltYWdlLCBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2U8SW1hZ2UsIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVySW1hZ2UsICZSZW5kZXJTdHlsZTo6Ym9yZGVySW1hZ2UsICZSZW5kZXJT
dHlsZTo6c2V0Qm9yZGVySW1hZ2U+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJS
YWRpdXMpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZl
cnRpY2FsU3BhY2luZywgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8c2hvcnQsICZSZW5kZXJT
dHlsZTo6dmVydGljYWxCb3JkZXJTcGFjaW5nLCAmUmVuZGVyU3R5bGU6OnNldFZlcnRpY2FsQm9y
ZGVyU3BhY2luZywgJlJlbmRlclN0eWxlOjppbml0aWFsVmVydGljYWxCb3JkZXJTcGFjaW5nPjo6
Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRCb3hBbGlnbiwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJveEFsaWdubWVudCwgJlJlbmRlclN0
eWxlOjpib3hBbGlnbiwgRUJveEFsaWdubWVudCwgJlJlbmRlclN0eWxlOjpzZXRCb3hBbGlnbiwg
RUJveEFsaWdubWVudCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm94QWxpZ24+OjpjcmVhdGVIYW5k
bGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVj
dGlvbiwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJveERpcmVjdGlvbiwgJlJlbmRlclN0eWxlOjpi
b3hEaXJlY3Rpb24sIEVCb3hEaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6c2V0Qm94RGlyZWN0aW9u
LCBFQm94RGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hEaXJlY3Rpb24+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJv
eEZsZXgsIEFwcGx5UHJvcGVydHlEZWZhdWx0PGZsb2F0LCAmUmVuZGVyU3R5bGU6OmJveEZsZXgs
IGZsb2F0LCAmUmVuZGVyU3R5bGU6OnNldEJveEZsZXgsIGZsb2F0LCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxCb3hGbGV4Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3JvdXAsIEFwcGx5UHJvcGVydHlEZWZhdWx0PHVuc2ln
bmVkIGludCwgJlJlbmRlclN0eWxlOjpib3hGbGV4R3JvdXAsIHVuc2lnbmVkIGludCwgJlJlbmRl
clN0eWxlOjpzZXRCb3hGbGV4R3JvdXAsIHVuc2lnbmVkIGludCwgJlJlbmRlclN0eWxlOjppbml0
aWFsQm94RmxleEdyb3VwPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcywgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJveExp
bmVzLCAmUmVuZGVyU3R5bGU6OmJveExpbmVzLCBFQm94TGluZXMsICZSZW5kZXJTdHlsZTo6c2V0
Qm94TGluZXMsIEVCb3hMaW5lcywgJlJlbmRlclN0eWxlOjppbml0aWFsQm94TGluZXM+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJv
eE9yZGluYWxHcm91cCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8dW5zaWduZWQgaW50LCAmUmVuZGVy
U3R5bGU6OmJveE9yZGluYWxHcm91cCwgdW5zaWduZWQgaW50LCAmUmVuZGVyU3R5bGU6OnNldEJv
eE9yZGluYWxHcm91cCwgdW5zaWduZWQgaW50LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hPcmRp
bmFsR3JvdXA+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVdlYmtpdEJveE9yaWVudCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJveE9yaWVudCwg
JlJlbmRlclN0eWxlOjpib3hPcmllbnQsIEVCb3hPcmllbnQsICZSZW5kZXJTdHlsZTo6c2V0Qm94
T3JpZW50LCBFQm94T3JpZW50LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hPcmllbnQ+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJv
eFBhY2ssIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVCb3hQYWNrLCAmUmVuZGVyU3R5bGU6OmJveFBh
Y2ssIEVCb3hQYWNrLCAmUmVuZGVyU3R5bGU6OnNldEJveFBhY2ssIEVCb3hQYWNrLCAmUmVuZGVy
U3R5bGU6OmluaXRpYWxCb3hQYWNrPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb24sIEFwcGx5UHJvcGVydHlE
ZWZhdWx0PENvbG9yU3BhY2UsICZSZW5kZXJTdHlsZTo6Y29sb3JTcGFjZSwgQ29sb3JTcGFjZSwg
JlJlbmRlclN0eWxlOjpzZXRDb2xvclNwYWNlLCBDb2xvclNwYWNlLCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxDb2xvclNwYWNlPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5BeGlzLCBBcHBseVByb3BlcnR5RGVmYXVsdDxDb2x1
bW5BeGlzLCAmUmVuZGVyU3R5bGU6OmNvbHVtbkF4aXMsIENvbHVtbkF4aXMsICZSZW5kZXJTdHls
ZTo6c2V0Q29sdW1uQXhpcywgQ29sdW1uQXhpcywgJlJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1u
QXhpcz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlciwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVBhZ2VCcmVh
aywgJlJlbmRlclN0eWxlOjpjb2x1bW5CcmVha0FmdGVyLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5
bGU6OnNldENvbHVtbkJyZWFrQWZ0ZXIsIEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6aW5pdGlh
bFBhZ2VCcmVhaz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmUsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVQ
YWdlQnJlYWssICZSZW5kZXJTdHlsZTo6Y29sdW1uQnJlYWtCZWZvcmUsIEVQYWdlQnJlYWssICZS
ZW5kZXJTdHlsZTo6c2V0Q29sdW1uQnJlYWtCZWZvcmUsIEVQYWdlQnJlYWssICZSZW5kZXJTdHls
ZTo6aW5pdGlhbFBhZ2VCcmVhaz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUsIEFwcGx5UHJvcGVydHlE
ZWZhdWx0PEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6Y29sdW1uQnJlYWtJbnNpZGUsIEVQYWdl
QnJlYWssICZSZW5kZXJTdHlsZTo6c2V0Q29sdW1uQnJlYWtJbnNpZGUsIEVQYWdlQnJlYWssICZS
ZW5kZXJTdHlsZTo6aW5pdGlhbFBhZ2VCcmVhaz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0
UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQsIEFwcGx5UHJvcGVy
dHlBdXRvPHVuc2lnbmVkIHNob3J0LCAmUmVuZGVyU3R5bGU6OmNvbHVtbkNvdW50LCAmUmVuZGVy
U3R5bGU6OnNldENvbHVtbkNvdW50LCAmUmVuZGVyU3R5bGU6Omhhc0F1dG9Db2x1bW5Db3VudCwg
JlJlbmRlclN0eWxlOjpzZXRIYXNBdXRvQ29sdW1uQ291bnQ+OjpjcmVhdGVIYW5kbGVyKCkpOwot
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkdhcCwgQXBwbHlQ
cm9wZXJ0eUF1dG88ZmxvYXQsICZSZW5kZXJTdHlsZTo6Y29sdW1uR2FwLCAmUmVuZGVyU3R5bGU6
OnNldENvbHVtbkdhcCwgJlJlbmRlclN0eWxlOjpoYXNOb3JtYWxDb2x1bW5HYXAsICZSZW5kZXJT
dHlsZTo6c2V0SGFzTm9ybWFsQ29sdW1uR2FwLCBDb21wdXRlTGVuZ3RoLCBDU1NWYWx1ZU5vcm1h
bD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uUnVsZUNvbG9yLCBBcHBseVByb3BlcnR5Q29sb3I8Tm9Jbmhlcml0RnJvbVBh
cmVudCwgJlJlbmRlclN0eWxlOjpjb2x1bW5SdWxlQ29sb3IsICZSZW5kZXJTdHlsZTo6c2V0Q29s
dW1uUnVsZUNvbG9yLCAmUmVuZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9y
LCAmUmVuZGVyU3R5bGU6OmNvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIEFwcGx5UHJvcGVydHlD
b21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCAmUmVuZGVyU3R5bGU6OmNvbHVtblJ1bGVXaWR0
aCwgJlJlbmRlclN0eWxlOjpzZXRDb2x1bW5SdWxlV2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlh
bENvbHVtblJ1bGVXaWR0aCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtbnMsIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5XaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Db3VudD46OmNyZWF0ZUhh
bmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
U3BhbiwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8Q29sdW1uU3BhbiwgJlJlbmRlclN0eWxlOjpjb2x1
bW5TcGFuLCBDb2x1bW5TcGFuLCAmUmVuZGVyU3R5bGU6OnNldENvbHVtblNwYW4sIENvbHVtblNw
YW4sICZSZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtblNwYW4+OjpjcmVhdGVIYW5kbGVyKCkpOwot
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZSwg
QXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OmNvbHVtblJ1
bGVTdHlsZSwgRUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OnNldENvbHVtblJ1bGVTdHlsZSwg
RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZT46OmNyZWF0ZUhh
bmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
V2lkdGgsIEFwcGx5UHJvcGVydHlBdXRvPGZsb2F0LCAmUmVuZGVyU3R5bGU6OmNvbHVtbldpZHRo
LCAmUmVuZGVyU3R5bGU6OnNldENvbHVtbldpZHRoLCAmUmVuZGVyU3R5bGU6Omhhc0F1dG9Db2x1
bW5XaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRIYXNBdXRvQ29sdW1uV2lkdGgsIENvbXB1dGVMZW5n
dGg+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdEZsZXgsIEFwcGx5UHJvcGVydHlGbGV4OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEZsZXhBbGlnbiwgQXBwbHlQcm9wZXJ0
eURlZmF1bHQ8RUZsZXhBbGlnbiwgJlJlbmRlclN0eWxlOjpmbGV4QWxpZ24sIEVGbGV4QWxpZ24s
ICZSZW5kZXJTdHlsZTo6c2V0RmxleEFsaWduLCBFRmxleEFsaWduLCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxGbGV4QWxpZ24+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVG
bGV4RGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OmZsZXhEaXJlY3Rpb24sIEVGbGV4RGlyZWN0aW9u
LCAmUmVuZGVyU3R5bGU6OnNldEZsZXhEaXJlY3Rpb24sIEVGbGV4RGlyZWN0aW9uLCAmUmVuZGVy
U3R5bGU6OmluaXRpYWxGbGV4RGlyZWN0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRGbGV4RmxvdywgQXBwbHlQcm9wZXJ0eUV4
cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIENT
U1Byb3BlcnR5V2Via2l0RmxleFdyYXA+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEZsZXhJdGVtQWxpZ24sIEFwcGx5UHJvcGVydHlE
ZWZhdWx0PEVGbGV4QWxpZ24sICZSZW5kZXJTdHlsZTo6ZmxleEl0ZW1BbGlnbiwgRUZsZXhBbGln
biwgJlJlbmRlclN0eWxlOjpzZXRGbGV4SXRlbUFsaWduLCBFRmxleEFsaWduLCAmUmVuZGVyU3R5
bGU6OmluaXRpYWxGbGV4SXRlbUFsaWduPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRGbGV4TGluZVBhY2ssIEFwcGx5UHJvcGVydHlE
ZWZhdWx0PEVGbGV4TGluZVBhY2ssICZSZW5kZXJTdHlsZTo6ZmxleExpbmVQYWNrLCBFRmxleExp
bmVQYWNrLCAmUmVuZGVyU3R5bGU6OnNldEZsZXhMaW5lUGFjaywgRUZsZXhMaW5lUGFjaywgJlJl
bmRlclN0eWxlOjppbml0aWFsRmxleExpbmVQYWNrPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRGbGV4T3JkZXIsIEFwcGx5UHJvcGVy
dHlEZWZhdWx0PGludCwgJlJlbmRlclN0eWxlOjpmbGV4T3JkZXIsIGludCwgJlJlbmRlclN0eWxl
OjpzZXRGbGV4T3JkZXIsIGludCwgJlJlbmRlclN0eWxlOjppbml0aWFsRmxleE9yZGVyPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRG
bGV4UGFjaywgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUZsZXhQYWNrLCAmUmVuZGVyU3R5bGU6OmZs
ZXhQYWNrLCBFRmxleFBhY2ssICZSZW5kZXJTdHlsZTo6c2V0RmxleFBhY2ssIEVGbGV4UGFjaywg
JlJlbmRlclN0eWxlOjppbml0aWFsRmxleFBhY2s+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwLCBBcHBseVByb3BlcnR5
RGVmYXVsdDxFRmxleFdyYXAsICZSZW5kZXJTdHlsZTo6ZmxleFdyYXAsIEVGbGV4V3JhcCwgJlJl
bmRlclN0eWxlOjpzZXRGbGV4V3JhcCwgRUZsZXhXcmFwLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxG
bGV4V3JhcD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5V2Via2l0Rmxvd0Zyb20sIEFwcGx5UHJvcGVydHlTdHJpbmc8TWFwTm9uZVRvTnVsbCwg
JlJlbmRlclN0eWxlOjpyZWdpb25UaHJlYWQsICZSZW5kZXJTdHlsZTo6c2V0UmVnaW9uVGhyZWFk
LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxSZWdpb25UaHJlYWQ+OjpjcmVhdGVIYW5kbGVyKCkpOwot
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEZsb3dJbnRvLCBBcHBseVBy
b3BlcnR5U3RyaW5nPE1hcE5vbmVUb051bGwsICZSZW5kZXJTdHlsZTo6Zmxvd1RocmVhZCwgJlJl
bmRlclN0eWxlOjpzZXRGbG93VGhyZWFkLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxGbG93VGhyZWFk
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRGb250S2VybmluZywgQXBwbHlQcm9wZXJ0eUZvbnQ8Rm9udERlc2NyaXB0aW9uOjpLZXJu
aW5nLCAmRm9udERlc2NyaXB0aW9uOjprZXJuaW5nLCAmRm9udERlc2NyaXB0aW9uOjpzZXRLZXJu
aW5nLCBGb250RGVzY3JpcHRpb246OkF1dG9LZXJuaW5nPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nLCBBcHBs
eVByb3BlcnR5Rm9udDxGb250U21vb3RoaW5nTW9kZSwgJkZvbnREZXNjcmlwdGlvbjo6Zm9udFNt
b290aGluZywgJkZvbnREZXNjcmlwdGlvbjo6c2V0Rm9udFNtb290aGluZywgQXV0b1Ntb290aGlu
Zz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0Rm9udFZhcmlhbnRMaWdhdHVyZXMsIEFwcGx5UHJvcGVydHlGb250VmFyaWFudExpZ2F0
dXJlczo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlXZWJraXRIaWdobGlnaHQsIEFwcGx5UHJvcGVydHlTdHJpbmc8TWFwTm9uZVRvTnVsbCwgJlJl
bmRlclN0eWxlOjpoaWdobGlnaHQsICZSZW5kZXJTdHlsZTo6c2V0SGlnaGxpZ2h0LCAmUmVuZGVy
U3R5bGU6OmluaXRpYWxIaWdobGlnaHQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlciwgQXBwbHlQcm9w
ZXJ0eVN0cmluZzxNYXBBdXRvVG9OdWxsLCAmUmVuZGVyU3R5bGU6Omh5cGhlbmF0aW9uU3RyaW5n
LCAmUmVuZGVyU3R5bGU6OnNldEh5cGhlbmF0aW9uU3RyaW5nLCAmUmVuZGVyU3R5bGU6OmluaXRp
YWxIeXBoZW5hdGlvblN0cmluZz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRBZnRlciwgQXBwbHlQcm9wZXJ0
eU51bWJlcjxzaG9ydCwgJlJlbmRlclN0eWxlOjpoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIsICZSZW5k
ZXJTdHlsZTo6c2V0SHlwaGVuYXRpb25MaW1pdEFmdGVyLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxI
eXBoZW5hdGlvbkxpbWl0QWZ0ZXI+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxpbWl0QmVmb3JlLCBBcHBseVByb3Bl
cnR5TnVtYmVyPHNob3J0LCAmUmVuZGVyU3R5bGU6Omh5cGhlbmF0aW9uTGltaXRCZWZvcmUsICZS
ZW5kZXJTdHlsZTo6c2V0SHlwaGVuYXRpb25MaW1pdEJlZm9yZSwgJlJlbmRlclN0eWxlOjppbml0
aWFsSHlwaGVuYXRpb25MaW1pdEJlZm9yZT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcywgQXBwbHlQ
cm9wZXJ0eU51bWJlcjxzaG9ydCwgJlJlbmRlclN0eWxlOjpoeXBoZW5hdGlvbkxpbWl0TGluZXMs
ICZSZW5kZXJTdHlsZTo6c2V0SHlwaGVuYXRpb25MaW1pdExpbmVzLCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxIeXBoZW5hdGlvbkxpbWl0TGluZXMsIENTU1ZhbHVlTm9MaW1pdD46OmNyZWF0ZUhhbmRs
ZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0SHlwaGVucywg
QXBwbHlQcm9wZXJ0eURlZmF1bHQ8SHlwaGVucywgJlJlbmRlclN0eWxlOjpoeXBoZW5zLCBIeXBo
ZW5zLCAmUmVuZGVyU3R5bGU6OnNldEh5cGhlbnMsIEh5cGhlbnMsICZSZW5kZXJTdHlsZTo6aW5p
dGlhbEh5cGhlbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdExpbmVBbGlnbiwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8TGluZUFsaWdu
LCAmUmVuZGVyU3R5bGU6OmxpbmVBbGlnbiwgTGluZUFsaWduLCAmUmVuZGVyU3R5bGU6OnNldExp
bmVBbGlnbiwgTGluZUFsaWduLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lQWxpZ24+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdExp
bmVCcmVhaywgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUtIVE1MTGluZUJyZWFrLCAmUmVuZGVyU3R5
bGU6OmtodG1sTGluZUJyZWFrLCBFS0hUTUxMaW5lQnJlYWssICZSZW5kZXJTdHlsZTo6c2V0S0hU
TUxMaW5lQnJlYWssIEVLSFRNTExpbmVCcmVhaywgJlJlbmRlclN0eWxlOjppbml0aWFsS0hUTUxM
aW5lQnJlYWs+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVdlYmtpdExpbmVHcmlkLCBBcHBseVByb3BlcnR5U3RyaW5nPE1hcE5vbmVUb051bGws
ICZSZW5kZXJTdHlsZTo6bGluZUdyaWQsICZSZW5kZXJTdHlsZTo6c2V0TGluZUdyaWQsICZSZW5k
ZXJTdHlsZTo6aW5pdGlhbExpbmVHcmlkPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRMaW5lU25hcCwgQXBwbHlQcm9wZXJ0eURlZmF1
bHQ8TGluZVNuYXAsICZSZW5kZXJTdHlsZTo6bGluZVNuYXAsIExpbmVTbmFwLCAmUmVuZGVyU3R5
bGU6OnNldExpbmVTbmFwLCBMaW5lU25hcCwgJlJlbmRlclN0eWxlOjppbml0aWFsTGluZVNuYXA+
OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVNYXJnaW5Db2xs
YXBzZSwgJlJlbmRlclN0eWxlOjptYXJnaW5BZnRlckNvbGxhcHNlLCBFTWFyZ2luQ29sbGFwc2Us
ICZSZW5kZXJTdHlsZTo6c2V0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgRU1hcmdpbkNvbGxhcHNlLCAm
UmVuZGVyU3R5bGU6OmluaXRpYWxNYXJnaW5BZnRlckNvbGxhcHNlPjo6Y3JlYXRlSGFuZGxlcigp
KTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVD
b2xsYXBzZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RU1hcmdpbkNvbGxhcHNlLCAmUmVuZGVyU3R5
bGU6Om1hcmdpbkJlZm9yZUNvbGxhcHNlLCBFTWFyZ2luQ29sbGFwc2UsICZSZW5kZXJTdHlsZTo6
c2V0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIEVNYXJnaW5Db2xsYXBzZSwgJlJlbmRlclN0eWxlOjpp
bml0aWFsTWFyZ2luQmVmb3JlQ29sbGFwc2U+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UpOwotICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlLCBBcHBseVByb3BlcnR5RXhwYW5kaW5n
PFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0g
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2Us
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UpOwotICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIEFwcGx5UHJvcGVydHlE
ZWZhdWx0PEVNYXJxdWVlRGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6Om1hcnF1ZWVEaXJlY3Rpb24s
IEVNYXJxdWVlRGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OnNldE1hcnF1ZWVEaXJlY3Rpb24sIEVN
YXJxdWVlRGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxNYXJxdWVlRGlyZWN0aW9uPjo6
Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlU3R5bGUsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVNYXJxdWVlQmVoYXZpb3IsICZS
ZW5kZXJTdHlsZTo6bWFycXVlZUJlaGF2aW9yLCBFTWFycXVlZUJlaGF2aW9yLCAmUmVuZGVyU3R5
bGU6OnNldE1hcnF1ZWVCZWhhdmlvciwgRU1hcnF1ZWVCZWhhdmlvciwgJlJlbmRlclN0eWxlOjpp
bml0aWFsTWFycXVlZUJlaGF2aW9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgQXBwbHlQcm9wZXJ0eUZp
bGxMYXllcjxFRmlsbEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQs
IE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0
eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc0F0dGFjaG1lbnRTZXQsICZGaWxsTGF5ZXI6
OmF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OnNldEF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OmNsZWFy
QXR0YWNobWVudCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2htZW50LCAmQ1NTU3R5bGVT
ZWxlY3Rvcjo6bWFwRmlsbEF0dGFjaG1lbnQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgQXBwbHlQcm9wZXJ0
eUJvcmRlckltYWdlPE1hc2ssIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCAmUmVuZGVy
U3R5bGU6Om1hc2tCb3hJbWFnZSwgJlJlbmRlclN0eWxlOjpzZXRNYXNrQm94SW1hZ2U+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tCb3hJbWFnZU91dHNldCwgQXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI8TWFzaywg
T3V0c2V0Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRNYXNrQm94SW1hZ2VSZXBlYXQsIEFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1v
ZGlmaWVyPE1hc2ssIFJlcGVhdD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU2xpY2UsIEFwcGx5UHJvcGVydHlC
b3JkZXJJbWFnZU1vZGlmaWVyPE1hc2ssIFNsaWNlPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UsIEFw
cGx5UHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZTxDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFn
ZVNvdXJjZSwgJlJlbmRlclN0eWxlOjptYXNrQm94SW1hZ2VTb3VyY2UsICZSZW5kZXJTdHlsZTo6
c2V0TWFza0JveEltYWdlU291cmNlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxNYXNrQm94SW1hZ2VT
b3VyY2U+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVdpZHRoLCBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2Rp
ZmllcjxNYXNrLCBXaWR0aD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZp
bGxCb3gsIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJT
dHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExh
eWVyOjppc0NsaXBTZXQsICZGaWxsTGF5ZXI6OmNsaXAsICZGaWxsTGF5ZXI6OnNldENsaXAsICZG
aWxsTGF5ZXI6OmNsZWFyQ2xpcCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxDbGlwLCAmQ1NTU3R5
bGVTZWxlY3Rvcjo6bWFwRmlsbENsaXA+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIEFwcGx5UHJvcGVydHlG
aWxsTGF5ZXI8Q29tcG9zaXRlT3BlcmF0b3IsIENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0
ZSwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVy
U3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzQ29tcG9zaXRlU2V0LCAmRmlsbExheWVy
Ojpjb21wb3NpdGUsICZGaWxsTGF5ZXI6OnNldENvbXBvc2l0ZSwgJkZpbGxMYXllcjo6Y2xlYXJD
b21wb3NpdGUsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ29tcG9zaXRlLCAmQ1NTU3R5bGVTZWxl
Y3Rvcjo6bWFwRmlsbENvbXBvc2l0ZT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBBcHBseVByb3BlcnR5RmlsbExh
eWVyPFN0eWxlSW1hZ2UqLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgTWFza0ZpbGxMYXll
ciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXll
cnMsICZGaWxsTGF5ZXI6OmlzSW1hZ2VTZXQsICZGaWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVy
OjpzZXRJbWFnZSwgJkZpbGxMYXllcjo6Y2xlYXJJbWFnZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZp
bGxJbWFnZSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxJbWFnZT46OmNyZWF0ZUhhbmRsZXIo
KSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwg
QXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbEJveCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrT3Jp
Z2luLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5k
ZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNPcmlnaW5TZXQsICZGaWxsTGF5ZXI6
Om9yaWdpbiwgJkZpbGxMYXllcjo6c2V0T3JpZ2luLCAmRmlsbExheWVyOjpjbGVhck9yaWdpbiwg
JkZpbGxMYXllcjo6aW5pdGlhbEZpbGxPcmlnaW4sICZDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxs
T3JpZ2luPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRNYXNrUG9zaXRpb24sIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NW
YWx1ZSwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvblk+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVu
Z3RoLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIE1hc2tGaWxsTGF5ZXIsICZSZW5k
ZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmls
bExheWVyOjppc1hQb3NpdGlvblNldCwgJkZpbGxMYXllcjo6eFBvc2l0aW9uLCAmRmlsbExheWVy
OjpzZXRYUG9zaXRpb24sICZGaWxsTGF5ZXI6OmNsZWFyWFBvc2l0aW9uLCAmRmlsbExheWVyOjpp
bml0aWFsRmlsbFhQb3NpdGlvbiwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxYUG9zaXRpb24+
OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvblksIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNj
ZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1lQ
b3NpdGlvblNldCwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRZUG9zaXRp
b24sICZGaWxsTGF5ZXI6OmNsZWFyWVBvc2l0aW9uLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFlQ
b3NpdGlvbiwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxZUG9zaXRpb24+OjpjcmVhdGVIYW5k
bGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBl
YXQsIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WT46OmNyZWF0ZUhhbmRs
ZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dFgsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxSZXBlYXQsIENTU1Byb3BlcnR5V2Via2l0
TWFza1JlcGVhdFgsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVy
cywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1JlcGVhdFhTZXQsICZG
aWxsTGF5ZXI6OnJlcGVhdFgsICZGaWxsTGF5ZXI6OnNldFJlcGVhdFgsICZGaWxsTGF5ZXI6OmNs
ZWFyUmVwZWF0WCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRYLCAmQ1NTU3R5bGVTZWxl
Y3Rvcjo6bWFwRmlsbFJlcGVhdFg+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBBcHBseVByb3BlcnR5RmlsbExh
eWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBNYXNrRmlsbExh
eWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xh
eWVycywgJkZpbGxMYXllcjo6aXNSZXBlYXRZU2V0LCAmRmlsbExheWVyOjpyZXBlYXRZLCAmRmls
bExheWVyOjpzZXRSZXBlYXRZLCAmRmlsbExheWVyOjpjbGVhclJlcGVhdFksICZGaWxsTGF5ZXI6
OmluaXRpYWxGaWxsUmVwZWF0WSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxSZXBlYXRZPjo6
Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrU2l6ZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxGaWxsU2l6ZSwgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrU2l6ZSwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5
ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzU2l6ZVNldCwgJkZp
bGxMYXllcjo6c2l6ZSwgJkZpbGxMYXllcjo6c2V0U2l6ZSwgJkZpbGxMYXllcjo6Y2xlYXJTaXpl
LCAmRmlsbExheWVyOjppbml0aWFsRmlsbFNpemUsICZDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxs
U2l6ZT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvciwgQXBwbHlQcm9wZXJ0eURl
ZmF1bHQ8RU1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IsICZSZW5kZXJTdHlsZTo6bWF0
Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvciwgRU1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3Rl
Q29sb3IsICZSZW5kZXJTdHlsZTo6c2V0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvciwg
RU1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IsICZSZW5kZXJTdHlsZTo6aW5pdGlhbE1h
dGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBBcHBseVByb3BlcnR5
RGVmYXVsdDxFTkJTUE1vZGUsICZSZW5kZXJTdHlsZTo6bmJzcE1vZGUsIEVOQlNQTW9kZSwgJlJl
bmRlclN0eWxlOjpzZXROQlNQTW9kZSwgRU5CU1BNb2RlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxO
QlNQTW9kZT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW4sIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3Vw
cHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgsIENTU1Byb3Bl
cnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgsIEFwcGx5
UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxlOjpwZXJzcGVjdGl2ZU9yaWdpblgsICZSZW5kZXJT
dHlsZTo6c2V0UGVyc3BlY3RpdmVPcmlnaW5YLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVj
dGl2ZU9yaWdpblg+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwm
UmVuZGVyU3R5bGU6OnBlcnNwZWN0aXZlT3JpZ2luWSwgJlJlbmRlclN0eWxlOjpzZXRQZXJzcGVj
dGl2ZU9yaWdpblksICZSZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWT46OmNy
ZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0
UHJpbnRDb2xvckFkanVzdCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8UHJpbnRDb2xvckFkanVzdCwg
JlJlbmRlclN0eWxlOjpwcmludENvbG9yQWRqdXN0LCBQcmludENvbG9yQWRqdXN0LCAmUmVuZGVy
U3R5bGU6OnNldFByaW50Q29sb3JBZGp1c3QsIFByaW50Q29sb3JBZGp1c3QsICZSZW5kZXJTdHls
ZTo6aW5pdGlhbFByaW50Q29sb3JBZGp1c3Q+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQWZ0ZXIsIEFwcGx5UHJv
cGVydHlEZWZhdWx0PEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6cmVnaW9uQnJlYWtBZnRlciwg
RVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjpzZXRSZWdpb25CcmVha0FmdGVyLCBFUGFnZUJyZWFr
LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQYWdlQnJlYWs+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAg
IHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFrQmVmb3JlLCBB
cHBseVByb3BlcnR5RGVmYXVsdDxFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OnJlZ2lvbkJyZWFr
QmVmb3JlLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OnNldFJlZ2lvbkJyZWFrQmVmb3JlLCBF
UGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQYWdlQnJlYWs+OjpjcmVhdGVIYW5kbGVy
KCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFJlZ2lvbkJyZWFr
SW5zaWRlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OnJl
Z2lvbkJyZWFrSW5zaWRlLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OnNldFJlZ2lvbkJyZWFr
SW5zaWRlLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQYWdlQnJlYWs+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFJl
Z2lvbk92ZXJmbG93LCBBcHBseVByb3BlcnR5RGVmYXVsdDxSZWdpb25PdmVyZmxvdywgJlJlbmRl
clN0eWxlOjpyZWdpb25PdmVyZmxvdywgUmVnaW9uT3ZlcmZsb3csICZSZW5kZXJTdHlsZTo6c2V0
UmVnaW9uT3ZlcmZsb3csIFJlZ2lvbk92ZXJmbG93LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxSZWdp
b25PdmVyZmxvdz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmcsIEFwcGx5UHJvcGVydHlEZWZhdWx0PE9yZGVyLCAm
UmVuZGVyU3R5bGU6OnJ0bE9yZGVyaW5nLCBPcmRlciwgJlJlbmRlclN0eWxlOjpzZXRSVExPcmRl
cmluZywgT3JkZXIsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFJUTE9yZGVyaW5nPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29t
YmluZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8VGV4dENvbWJpbmUsICZSZW5kZXJTdHlsZTo6dGV4
dENvbWJpbmUsIFRleHRDb21iaW5lLCAmUmVuZGVyU3R5bGU6OnNldFRleHRDb21iaW5lLCBUZXh0
Q29tYmluZSwgJlJlbmRlclN0eWxlOjppbml0aWFsVGV4dENvbWJpbmU+OjpjcmVhdGVIYW5kbGVy
KCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNp
c0NvbG9yLCBBcHBseVByb3BlcnR5Q29sb3I8Tm9Jbmhlcml0RnJvbVBhcmVudCwgJlJlbmRlclN0
eWxlOjp0ZXh0RW1waGFzaXNDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRUZXh0RW1waGFzaXNDb2xv
ciwgJlJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yLCAmUmVuZGVy
U3R5bGU6OmNvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiwgQXBwbHlQcm9wZXJ0eURlZmF1
bHQ8VGV4dEVtcGhhc2lzUG9zaXRpb24sICZSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lzUG9zaXRp
b24sIFRleHRFbXBoYXNpc1Bvc2l0aW9uLCAmUmVuZGVyU3R5bGU6OnNldFRleHRFbXBoYXNpc1Bv
c2l0aW9uLCBUZXh0RW1waGFzaXNQb3NpdGlvbiwgJlJlbmRlclN0eWxlOjppbml0aWFsVGV4dEVt
cGhhc2lzUG9zaXRpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlLCBBcHBseVByb3BlcnR5VGV4dEVt
cGhhc2lzU3R5bGU6OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvciwgQXBwbHlQcm9wZXJ0eUNvbG9yPE5vSW5oZXJp
dEZyb21QYXJlbnQsICZSZW5kZXJTdHlsZTo6dGV4dEZpbGxDb2xvciwgJlJlbmRlclN0eWxlOjpz
ZXRUZXh0RmlsbENvbG9yLCAmUmVuZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xv
ciwgJlJlbmRlclN0eWxlOjpjb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uLCBBcHBseVByb3BlcnR5
Rm9udDxUZXh0T3JpZW50YXRpb24sICZGb250RGVzY3JpcHRpb246OnRleHRPcmllbnRhdGlvbiwg
JkZvbnREZXNjcmlwdGlvbjo6c2V0VGV4dE9yaWVudGF0aW9uLCBUZXh0T3JpZW50YXRpb25WZXJ0
aWNhbFJpZ2h0Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHksIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVUZXh0U2Vj
dXJpdHksICZSZW5kZXJTdHlsZTo6dGV4dFNlY3VyaXR5LCBFVGV4dFNlY3VyaXR5LCAmUmVuZGVy
U3R5bGU6OnNldFRleHRTZWN1cml0eSwgRVRleHRTZWN1cml0eSwgJlJlbmRlclN0eWxlOjppbml0
aWFsVGV4dFNlY3VyaXR5Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IsIEFwcGx5UHJvcGVydHlDb2xvcjxO
b0luaGVyaXRGcm9tUGFyZW50LCAmUmVuZGVyU3R5bGU6OnRleHRTdHJva2VDb2xvciwgJlJlbmRl
clN0eWxlOjpzZXRUZXh0U3Ryb2tlQ29sb3IsICZSZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtU
ZXh0U3Ryb2tlQ29sb3IsICZSZW5kZXJTdHlsZTo6Y29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOwot
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbiwg
QXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybU9yaWdpblgsIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YLCBBcHBseVBy
b3BlcnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtT3JpZ2luWCwgJlJlbmRlclN0eWxl
OjpzZXRUcmFuc2Zvcm1PcmlnaW5YLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1Pcmln
aW5YPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCBBcHBseVByb3BlcnR5TGVuZ3RoPCZSZW5kZXJTdHls
ZTo6dHJhbnNmb3JtT3JpZ2luWSwgJlJlbmRlclN0eWxlOjpzZXRUcmFuc2Zvcm1PcmlnaW5ZLCAm
UmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5ZPjo6Y3JlYXRlSGFuZGxlcigpKTsK
LSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5a
LCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDxmbG9hdCwgJlJlbmRlclN0eWxlOjp0cmFuc2Zv
cm1PcmlnaW5aLCAmUmVuZGVyU3R5bGU6OnNldFRyYW5zZm9ybU9yaWdpblosICZSZW5kZXJTdHls
ZTo6aW5pdGlhbFRyYW5zZm9ybU9yaWdpblo+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlLCBBcHBseVByb3Bl
cnR5RGVmYXVsdDxFVHJhbnNmb3JtU3R5bGUzRCwgJlJlbmRlclN0eWxlOjp0cmFuc2Zvcm1TdHls
ZTNELCBFVHJhbnNmb3JtU3R5bGUzRCwgJlJlbmRlclN0eWxlOjpzZXRUcmFuc2Zvcm1TdHlsZTNE
LCBFVHJhbnNmb3JtU3R5bGUzRCwgJlJlbmRlclN0eWxlOjppbml0aWFsVHJhbnNmb3JtU3R5bGUz
RD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvbkRlbGF5LCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFu
aW1hdGlvbjo6ZGVsYXksICZBbmltYXRpb246OnNldERlbGF5LCAmQW5pbWF0aW9uOjppc0RlbGF5
U2V0LCAmQW5pbWF0aW9uOjpjbGVhckRlbGF5LCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9u
RGVsYXksICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25EZWxheSwgJlJlbmRlclN0eWxl
OjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0aW9ucz46OmNyZWF0ZUhh
bmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNp
dGlvbkR1cmF0aW9uLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6
ZHVyYXRpb24sICZBbmltYXRpb246OnNldER1cmF0aW9uLCAmQW5pbWF0aW9uOjppc0R1cmF0aW9u
U2V0LCAmQW5pbWF0aW9uOjpjbGVhckR1cmF0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0
aW9uRHVyYXRpb24sICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25EdXJhdGlvbiwgJlJl
bmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0aW9ucz46
OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNpdGlvblByb3BlcnR5LCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPENTU1Byb3BlcnR5
SUQsICZBbmltYXRpb246OnByb3BlcnR5LCAmQW5pbWF0aW9uOjpzZXRQcm9wZXJ0eSwgJkFuaW1h
dGlvbjo6aXNQcm9wZXJ0eVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJQcm9wZXJ0eSwgJkFuaW1hdGlv
bjo6aW5pdGlhbEFuaW1hdGlvblByb3BlcnR5LCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0
aW9uUHJvcGVydHksICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHls
ZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwgQXBwbHlQcm9wZXJ0
eUFuaW1hdGlvbjxjb25zdCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiwgJkFuaW1hdGlvbjo6
dGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9u
Ojppc1RpbWluZ0Z1bmN0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVhclRpbWluZ0Z1bmN0aW9uLCAm
QW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sICZDU1NTdHlsZVNlbGVj
dG9yOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFu
c2l0aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0g
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIEFwcGx5UHJv
cGVydHlEZWZhdWx0PEVVc2VyRHJhZywgJlJlbmRlclN0eWxlOjp1c2VyRHJhZywgRVVzZXJEcmFn
LCAmUmVuZGVyU3R5bGU6OnNldFVzZXJEcmFnLCBFVXNlckRyYWcsICZSZW5kZXJTdHlsZTo6aW5p
dGlhbFVzZXJEcmFnPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBBcHBseVByb3BlcnR5RGVmYXVsdDxFVXNlck1v
ZGlmeSwgJlJlbmRlclN0eWxlOjp1c2VyTW9kaWZ5LCBFVXNlck1vZGlmeSwgJlJlbmRlclN0eWxl
OjpzZXRVc2VyTW9kaWZ5LCBFVXNlck1vZGlmeSwgJlJlbmRlclN0eWxlOjppbml0aWFsVXNlck1v
ZGlmeT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0VXNlclNlbGVjdCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVVzZXJTZWxlY3QsICZS
ZW5kZXJTdHlsZTo6dXNlclNlbGVjdCwgRVVzZXJTZWxlY3QsICZSZW5kZXJTdHlsZTo6c2V0VXNl
clNlbGVjdCwgRVVzZXJTZWxlY3QsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFVzZXJTZWxlY3Q+Ojpj
cmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtp
dFdyYXAsIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlX
ZWJraXRXcmFwRmxvdywgQ1NTUHJvcGVydHlXZWJraXRXcmFwTWFyZ2luLCBDU1NQcm9wZXJ0eVdl
YmtpdFdyYXBQYWRkaW5nPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdywgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8V3JhcEZs
b3csICZSZW5kZXJTdHlsZTo6d3JhcEZsb3csIFdyYXBGbG93LCAmUmVuZGVyU3R5bGU6OnNldFdy
YXBGbG93LCBXcmFwRmxvdywgJlJlbmRlclN0eWxlOjppbml0aWFsV3JhcEZsb3c+OjpjcmVhdGVI
YW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFdyYXBN
YXJnaW4sIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxlOjp3cmFwTWFyZ2luLCAmUmVu
ZGVyU3R5bGU6OnNldFdyYXBNYXJnaW4sICZSZW5kZXJTdHlsZTo6aW5pdGlhbFdyYXBNYXJnaW4+
OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdFdyYXBQYWRkaW5nLCBBcHBseVByb3BlcnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6d3JhcFBh
ZGRpbmcsICZSZW5kZXJTdHlsZTo6c2V0V3JhcFBhZGRpbmcsICZSZW5kZXJTdHlsZTo6aW5pdGlh
bFdyYXBQYWRkaW5nPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRXcmFwVGhyb3VnaCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8V3JhcFRo
cm91Z2gsICZSZW5kZXJTdHlsZTo6d3JhcFRocm91Z2gsIFdyYXBUaHJvdWdoLCAmUmVuZGVyU3R5
bGU6OnNldFdyYXBUaHJvdWdoLCBXcmFwVGhyb3VnaCwgJlJlbmRlclN0eWxlOjppbml0aWFsV3Jh
cFRocm91Z2g+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVdoaXRlU3BhY2UsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVXaGl0ZVNwYWNlLCAmUmVu
ZGVyU3R5bGU6OndoaXRlU3BhY2UsIEVXaGl0ZVNwYWNlLCAmUmVuZGVyU3R5bGU6OnNldFdoaXRl
U3BhY2UsIEVXaGl0ZVNwYWNlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxXaGl0ZVNwYWNlPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXaWRvd3Ms
IEFwcGx5UHJvcGVydHlEZWZhdWx0PHNob3J0LCAmUmVuZGVyU3R5bGU6OndpZG93cywgc2hvcnQs
ICZSZW5kZXJTdHlsZTo6c2V0V2lkb3dzLCBzaG9ydCwgJlJlbmRlclN0eWxlOjppbml0aWFsV2lk
b3dzPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlXaWR0aCwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6OndpZHRoLCAmUmVuZGVy
U3R5bGU6OnNldFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxTaXplLCBBdXRvRW5hYmxlZCwg
SW50cmluc2ljRW5hYmxlZCwgTWluSW50cmluc2ljRW5hYmxlZCwgTm9uZURpc2FibGVkLCBVbmRl
ZmluZWREaXNhYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5V29yZEJyZWFrLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFV29yZEJyZWFrLCAm
UmVuZGVyU3R5bGU6OndvcmRCcmVhaywgRVdvcmRCcmVhaywgJlJlbmRlclN0eWxlOjpzZXRXb3Jk
QnJlYWssIEVXb3JkQnJlYWssICZSZW5kZXJTdHlsZTo6aW5pdGlhbFdvcmRCcmVhaz46OmNyZWF0
ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V29yZFNwYWNp
bmcsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPGludCwgJlJlbmRlclN0eWxlOjp3b3JkU3Bh
Y2luZywgJlJlbmRlclN0eWxlOjpzZXRXb3JkU3BhY2luZywgJlJlbmRlclN0eWxlOjppbml0aWFs
TGV0dGVyV29yZFNwYWNpbmcsIE5vcm1hbEVuYWJsZWQsIFRoaWNrbmVzc0Rpc2FibGVkLCBTVkda
b29tRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V29yZFdyYXAsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVXb3JkV3JhcCwgJlJlbmRl
clN0eWxlOjp3b3JkV3JhcCwgRVdvcmRXcmFwLCAmUmVuZGVyU3R5bGU6OnNldFdvcmRXcmFwLCBF
V29yZFdyYXAsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFdvcmRXcmFwPjo6Y3JlYXRlSGFuZGxlcigp
KTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlaSW5kZXgsIEFwcGx5UHJvcGVy
dHlBdXRvPGludCwgJlJlbmRlclN0eWxlOjp6SW5kZXgsICZSZW5kZXJTdHlsZTo6c2V0WkluZGV4
LCAmUmVuZGVyU3R5bGU6Omhhc0F1dG9aSW5kZXgsICZSZW5kZXJTdHlsZTo6c2V0SGFzQXV0b1pJ
bmRleD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5Wm9vbSwgQXBwbHlQcm9wZXJ0eVpvb206OmNyZWF0ZUhhbmRsZXIoKSk7Ci19Ci0KLQotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1MjU1ZjVkMmU5ZGRhNzc3YmEyOGY2YjMxYTA5OTZiNDYzZWE5OWVj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEw
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENTU1N0eWxlQXBwbHlQcm9wZXJ0eV9o
Ci0jZGVmaW5lIENTU1N0eWxlQXBwbHlQcm9wZXJ0eV9oCi0KLSNpbmNsdWRlICJDU1NQcm9wZXJ0
eU5hbWVzLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENTU1N0eWxlU2VsZWN0
b3I7Ci1jbGFzcyBDU1NWYWx1ZTsKLWNsYXNzIFN0eWxlQnVpbGRlcjsKLQotY2xhc3MgUHJvcGVy
dHlIYW5kbGVyIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQgKCpJbmhlcml0RnVuY3Rpb24p
KENTU1N0eWxlU2VsZWN0b3IqKTsKLSAgICB0eXBlZGVmIHZvaWQgKCpJbml0aWFsRnVuY3Rpb24p
KENTU1N0eWxlU2VsZWN0b3IqKTsKLSAgICB0eXBlZGVmIHZvaWQgKCpBcHBseUZ1bmN0aW9uKShD
U1NTdHlsZVNlbGVjdG9yKiwgQ1NTVmFsdWUqKTsKLSAgICBQcm9wZXJ0eUhhbmRsZXIoKSA6IG1f
aW5oZXJpdCgwKSwgbV9pbml0aWFsKDApLCBtX2FwcGx5KDApIHsgfQotICAgIFByb3BlcnR5SGFu
ZGxlcihJbmhlcml0RnVuY3Rpb24gaW5oZXJpdCwgSW5pdGlhbEZ1bmN0aW9uIGluaXRpYWwsIEFw
cGx5RnVuY3Rpb24gYXBwbHkpIDogbV9pbmhlcml0KGluaGVyaXQpLCBtX2luaXRpYWwoaW5pdGlh
bCksIG1fYXBwbHkoYXBwbHkpIHsgfQotICAgIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5
bGVTZWxlY3Rvciogc2VsZWN0b3IpIGNvbnN0IHsgQVNTRVJUKG1faW5oZXJpdCk7ICgqbV9pbmhl
cml0KShzZWxlY3Rvcik7IH0KLSAgICB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yKSBjb25zdCB7IEFTU0VSVChtX2luaXRpYWwpOyAoKm1faW5pdGlhbCko
c2VsZWN0b3IpOyB9Ci0gICAgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVj
dG9yLCBDU1NWYWx1ZSogdmFsdWUpIGNvbnN0IHsgQVNTRVJUKG1fYXBwbHkpOyAoKm1fYXBwbHkp
KHNlbGVjdG9yLCB2YWx1ZSk7IH0KLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBt
X2luaGVyaXQgJiYgbV9pbml0aWFsICYmIG1fYXBwbHk7IH0KLSAgICBJbmhlcml0RnVuY3Rpb24g
aW5oZXJpdEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbmhlcml0OyB9Ci0gICAgSW5pdGlh
bEZ1bmN0aW9uIGluaXRpYWxGdW5jdGlvbigpIHsgcmV0dXJuIG1faW5pdGlhbDsgfQotICAgIEFw
cGx5RnVuY3Rpb24gYXBwbHlGdW5jdGlvbigpIHsgcmV0dXJuIG1fYXBwbHk7IH0KLXByaXZhdGU6
Ci0gICAgSW5oZXJpdEZ1bmN0aW9uIG1faW5oZXJpdDsKLSAgICBJbml0aWFsRnVuY3Rpb24gbV9p
bml0aWFsOwotICAgIEFwcGx5RnVuY3Rpb24gbV9hcHBseTsKLX07Ci0KLWNsYXNzIFN0eWxlQnVp
bGRlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3R5bGVCdWlsZGVyKTsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgY29uc3QgU3R5bGVCdWlsZGVyJiBzaGFyZWRTdHlsZUJ1aWxkZXIoKTsKLQot
ICAgIGNvbnN0IFByb3BlcnR5SGFuZGxlciYgcHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5SUQg
cHJvcGVydHkpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQodmFsaWQocHJvcGVydHkpKTsK
LSAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlNYXBbaW5kZXgocHJvcGVydHkpXTsKLSAgICB9Ci1w
cml2YXRlOgotICAgIFN0eWxlQnVpbGRlcigpOwotICAgIHN0YXRpYyBpbnQgaW5kZXgoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwcm9wZXJ0eSAtIGZpcnN0
Q1NTUHJvcGVydHk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgdmFsaWQoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eSkKLSAgICB7Ci0gICAgICAgIGludCBpID0gaW5kZXgocHJvcGVydHkpOwotICAg
ICAgICByZXR1cm4gaSA+PSAwICYmIGkgPCBudW1DU1NQcm9wZXJ0aWVzOwotICAgIH0KLQotICAg
IHZvaWQgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFBy
b3BlcnR5SGFuZGxlciYgaGFuZGxlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh2YWxpZChwcm9w
ZXJ0eSkpOwotICAgICAgICBBU1NFUlQoIXByb3BlcnR5SGFuZGxlcihwcm9wZXJ0eSkuaXNWYWxp
ZCgpKTsKLSAgICAgICAgbV9wcm9wZXJ0eU1hcFtpbmRleChwcm9wZXJ0eSldID0gaGFuZGxlcjsK
LSAgICB9Ci0KLSAgICB2b2lkIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUlEIG5ld1By
b3BlcnR5LCBDU1NQcm9wZXJ0eUlEIGVxdWl2YWxlbnRQcm9wZXJ0eSkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVCh2YWxpZChuZXdQcm9wZXJ0eSkpOwotICAgICAgICBBU1NFUlQodmFsaWQoZXF1aXZh
bGVudFByb3BlcnR5KSk7Ci0gICAgICAgIEFTU0VSVCghcHJvcGVydHlIYW5kbGVyKG5ld1Byb3Bl
cnR5KS5pc1ZhbGlkKCkpOwotICAgICAgICBtX3Byb3BlcnR5TWFwW2luZGV4KG5ld1Byb3BlcnR5
KV0gPSBtX3Byb3BlcnR5TWFwW2luZGV4KGVxdWl2YWxlbnRQcm9wZXJ0eSldOwotICAgIH0KLQot
ICAgIFByb3BlcnR5SGFuZGxlciBtX3Byb3BlcnR5TWFwW251bUNTU1Byb3BlcnRpZXNdOwotfTsK
LQotfQotCi0jZW5kaWYgLy8gQ1NTU3R5bGVBcHBseVByb3BlcnR5X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCAyOGQxYWY2OTlhMzZkYTVlYzM3ZWI1NGQwNzk1
MzMzYmY1MDdkYjY1Li5kODdjOWRlZWU4ZmYxOGEyNTMwN2I1YzliYTNmMDU1NTk2Yzc0MWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC01MCw3ICs1MCw2IEBA
CiAjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2lu
Y2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgotI2luY2x1ZGUgIkNTU1N0eWxlQXBwbHlQcm9wZXJ0
eS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQu
aCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgiCkBAIC0xMDAsNiArOTksNyBA
QAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTaGFkb3dWYWx1ZS5oIgogI2lu
Y2x1ZGUgIlNrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJTdHlsZUJ1aWxkZXIu
aCIKICNpbmNsdWRlICJTdHlsZUNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiU3R5bGVQZW5kaW5n
SW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKQEAgLTM5MTEsNyArMzkxMSw3IEBAIHZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NW
YWx1ZSAqdmFsdWUpCiAgICAgfQogI2VuZGlmCiAKLSAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGFy
ZSBpbXBsZW1lbnRlZCBpbiB0aGUgQ1NTU3R5bGVBcHBseVByb3BlcnR5IGxvb2t1cCB0YWJsZS4K
KyAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBpbXBsZW1lbnRlZCBpbiB0aGUgU3R5bGVCdWls
ZGVyIGxvb2t1cCB0YWJsZS4KICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1l
bnQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwOgogICAgIGNhc2UgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRiNzg0NWY4M2Y5MTRkN2VjMzEyYzZhNTVjYTU1MTdiN2JhMWMyNGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcApAQCAtMCwwICsx
LDIwMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
dHlsZUJ1aWxkZXIuaCIKKworI2luY2x1ZGUgIkNTU0FzcGVjdFJhdGlvVmFsdWUuaCIKKyNpbmNs
dWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZS5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJD
U1NTdHlsZVNlbGVjdG9yLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisjaW5jbHVkZSAi
Q3Vyc29yTGlzdC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5o
IgorI2luY2x1ZGUgIlBhaXIuaCIKKyNpbmNsdWRlICJSZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVy
T2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBFeHBhbmRWYWx1ZUJlaGF2aW9yIHtTdXBwcmVz
c1ZhbHVlID0gMCwgRXhwYW5kVmFsdWV9OwordGVtcGxhdGUgPEV4cGFuZFZhbHVlQmVoYXZpb3Ig
ZXhwYW5kVmFsdWUsIENTU1Byb3BlcnR5SUQgb25lID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBDU1NQ
cm9wZXJ0eUlEIHR3byA9IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCB0aHJlZSA9
IENTU1Byb3BlcnR5SW52YWxpZCwgQ1NTUHJvcGVydHlJRCBmb3VyID0gQ1NTUHJvcGVydHlJbnZh
bGlkLCBDU1NQcm9wZXJ0eUlEIGZpdmUgPSBDU1NQcm9wZXJ0eUludmFsaWQ+CitjbGFzcyBBcHBs
eVByb3BlcnR5RXhwYW5kaW5nIHsKK3B1YmxpYzoKKworICAgIHRlbXBsYXRlIDxDU1NQcm9wZXJ0
eUlEIGlkPgorICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHls
ZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICB7CisgICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0
eUludmFsaWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3QgU3R5bGVCdWls
ZGVyJiB0YWJsZSA9IFN0eWxlQnVpbGRlcjo6c2hhcmVkU3R5bGVCdWlsZGVyKCk7CisgICAgICAg
IGNvbnN0IFByb3BlcnR5SGFuZGxlciYgaGFuZGxlciA9IHRhYmxlLnByb3BlcnR5SGFuZGxlcihp
ZCk7CisgICAgICAgIGlmIChoYW5kbGVyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGhhbmRsZXIu
YXBwbHlJbmhlcml0VmFsdWUoc2VsZWN0b3IpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFw
cGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAg
ICAgYXBwbHlJbmhlcml0VmFsdWU8b25lPihzZWxlY3Rvcik7CisgICAgICAgIGFwcGx5SW5oZXJp
dFZhbHVlPHR3bz4oc2VsZWN0b3IpOworICAgICAgICBhcHBseUluaGVyaXRWYWx1ZTx0aHJlZT4o
c2VsZWN0b3IpOworICAgICAgICBhcHBseUluaGVyaXRWYWx1ZTxmb3VyPihzZWxlY3Rvcik7Cisg
ICAgICAgIGFwcGx5SW5oZXJpdFZhbHVlPGZpdmU+KHNlbGVjdG9yKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBpZD4KKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgYXBwbHlJ
bml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgeworICAgICAgICBp
ZiAoaWQgPT0gQ1NTUHJvcGVydHlJbnZhbGlkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGNvbnN0IFN0eWxlQnVpbGRlciYgdGFibGUgPSBTdHlsZUJ1aWxkZXI6OnNoYXJlZFN0eWxl
QnVpbGRlcigpOworICAgICAgICBjb25zdCBQcm9wZXJ0eUhhbmRsZXImIGhhbmRsZXIgPSB0YWJs
ZS5wcm9wZXJ0eUhhbmRsZXIoaWQpOworICAgICAgICBpZiAoaGFuZGxlci5pc1ZhbGlkKCkpCisg
ICAgICAgICAgICBoYW5kbGVyLmFwcGx5SW5pdGlhbFZhbHVlKHNlbGVjdG9yKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxl
Y3RvcikKKyAgICB7CisgICAgICAgIGFwcGx5SW5pdGlhbFZhbHVlPG9uZT4oc2VsZWN0b3IpOwor
ICAgICAgICBhcHBseUluaXRpYWxWYWx1ZTx0d28+KHNlbGVjdG9yKTsKKyAgICAgICAgYXBwbHlJ
bml0aWFsVmFsdWU8dGhyZWU+KHNlbGVjdG9yKTsKKyAgICAgICAgYXBwbHlJbml0aWFsVmFsdWU8
Zm91cj4oc2VsZWN0b3IpOworICAgICAgICBhcHBseUluaXRpYWxWYWx1ZTxmaXZlPihzZWxlY3Rv
cik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgaWQ+CisgICAgc3RhdGlj
IGlubGluZSB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1Zh
bHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eUludmFsaWQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3QgU3R5bGVCdWlsZGVyJiB0YWJs
ZSA9IFN0eWxlQnVpbGRlcjo6c2hhcmVkU3R5bGVCdWlsZGVyKCk7CisgICAgICAgIGNvbnN0IFBy
b3BlcnR5SGFuZGxlciYgaGFuZGxlciA9IHRhYmxlLnByb3BlcnR5SGFuZGxlcihpZCk7CisgICAg
ICAgIGlmIChoYW5kbGVyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGhhbmRsZXIuYXBwbHlWYWx1
ZShzZWxlY3RvciwgdmFsdWUpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUo
Q1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIGlmICghZXhwYW5kVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXBw
bHlWYWx1ZTxvbmU+KHNlbGVjdG9yLCB2YWx1ZSk7CisgICAgICAgIGFwcGx5VmFsdWU8dHdvPihz
ZWxlY3RvciwgdmFsdWUpOworICAgICAgICBhcHBseVZhbHVlPHRocmVlPihzZWxlY3RvciwgdmFs
dWUpOworICAgICAgICBhcHBseVZhbHVlPGZvdXI+KHNlbGVjdG9yLCB2YWx1ZSk7CisgICAgICAg
IGFwcGx5VmFsdWU8Zml2ZT4oc2VsZWN0b3IsIHZhbHVlKTsKKyAgICB9CisgICAgc3RhdGljIFBy
b3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZh
cHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7IH0KK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHZXR0ZXJUeXBlLCBHZXR0ZXJUeXBlIChSZW5kZXJTdHls
ZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB0eXBlbmFtZSBTZXR0ZXJUeXBlLCB2b2lkIChS
ZW5kZXJTdHlsZTo6KnNldHRlckZ1bmN0aW9uKShTZXR0ZXJUeXBlKSwgdHlwZW5hbWUgSW5pdGlh
bFR5cGUsIEluaXRpYWxUeXBlICgqaW5pdGlhbEZ1bmN0aW9uKSgpPgorY2xhc3MgQXBwbHlQcm9w
ZXJ0eURlZmF1bHRCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZShSZW5k
ZXJTdHlsZSogc3R5bGUsIFNldHRlclR5cGUgdmFsdWUpIHsgKHN0eWxlLT4qc2V0dGVyRnVuY3Rp
b24pKHZhbHVlKTsgfQorICAgIHN0YXRpYyBHZXR0ZXJUeXBlIHZhbHVlKFJlbmRlclN0eWxlKiBz
dHlsZSkgeyByZXR1cm4gKHN0eWxlLT4qZ2V0dGVyRnVuY3Rpb24pKCk7IH0KKyAgICBzdGF0aWMg
SW5pdGlhbFR5cGUgaW5pdGlhbCgpIHsgcmV0dXJuICgqaW5pdGlhbEZ1bmN0aW9uKSgpOyB9Cisg
ICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IpIHsgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIHZhbHVlKHNlbGVjdG9yLT5wYXJlbnRT
dHlsZSgpKSk7IH0KKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNl
bGVjdG9yKiBzZWxlY3RvcikgeyBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgaW5pdGlhbCgp
KTsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3RvciosIENTU1Zh
bHVlKikgeyB9CisgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyBy
ZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZh
bHVlLCAmYXBwbHlWYWx1ZSk7IH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHZXR0ZXJUeXBl
LCBHZXR0ZXJUeXBlIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB0eXBl
bmFtZSBTZXR0ZXJUeXBlLCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlckZ1bmN0aW9uKShTZXR0
ZXJUeXBlKSwgdHlwZW5hbWUgSW5pdGlhbFR5cGUsIEluaXRpYWxUeXBlICgqaW5pdGlhbEZ1bmN0
aW9uKSgpPgorY2xhc3MgQXBwbHlQcm9wZXJ0eURlZmF1bHQgeworcHVibGljOgorICAgIHN0YXRp
YyB2b2lkIHNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgU2V0dGVyVHlwZSB2YWx1ZSkgeyAo
c3R5bGUtPipzZXR0ZXJGdW5jdGlvbikodmFsdWUpOyB9CisgICAgc3RhdGljIHZvaWQgYXBwbHlW
YWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHsK
KyAgICAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICBzZXRW
YWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgKnN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpKTsKKyAgICB9CisgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVy
KCkKKyAgICB7CisgICAgICAgIFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9wZXJ0
eURlZmF1bHRCYXNlPEdldHRlclR5cGUsIGdldHRlckZ1bmN0aW9uLCBTZXR0ZXJUeXBlLCBzZXR0
ZXJGdW5jdGlvbiwgSW5pdGlhbFR5cGUsIGluaXRpYWxGdW5jdGlvbj46OmNyZWF0ZUhhbmRsZXIo
KTsKKyAgICAgICAgcmV0dXJuIFByb3BlcnR5SGFuZGxlcihoYW5kbGVyLmluaGVyaXRGdW5jdGlv
bigpLCBoYW5kbGVyLmluaXRpYWxGdW5jdGlvbigpLCAmYXBwbHlWYWx1ZSk7CisgICAgfQorfTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIE51bWJlclR5cGUsIE51bWJlclR5cGUgKFJlbmRlclN0eWxl
OjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyRnVu
Y3Rpb24pKE51bWJlclR5cGUpLCBOdW1iZXJUeXBlICgqaW5pdGlhbEZ1bmN0aW9uKSgpLCBpbnQg
aWRNYXBzVG9NaW51c09uZSA9IENTU1ZhbHVlQXV0bz4KK2NsYXNzIEFwcGx5UHJvcGVydHlOdW1i
ZXIgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHls
ZSwgTnVtYmVyVHlwZSB2YWx1ZSkgeyAoc3R5bGUtPipzZXR0ZXJGdW5jdGlvbikodmFsdWUpOyB9
CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rvciwg
Q1NTVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gaWRNYXBzVG9NaW51
c09uZSkKKyAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCAtMSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBwcmltaXRp
dmVWYWx1ZS0+Z2V0VmFsdWU8TnVtYmVyVHlwZT4oQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpKTsKKyAgICB9CisgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkK
KyAgICB7CisgICAgICAgIFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9wZXJ0eURl
ZmF1bHRCYXNlPE51bWJlclR5cGUsIGdldHRlckZ1bmN0aW9uLCBOdW1iZXJUeXBlLCBzZXR0ZXJG
dW5jdGlvbiwgTnVtYmVyVHlwZSwgaW5pdGlhbEZ1bmN0aW9uPjo6Y3JlYXRlSGFuZGxlcigpOwor
ICAgICAgICByZXR1cm4gUHJvcGVydHlIYW5kbGVyKGhhbmRsZXIuaW5oZXJpdEZ1bmN0aW9uKCks
IGhhbmRsZXIuaW5pdGlhbEZ1bmN0aW9uKCksICZhcHBseVZhbHVlKTsKKyAgICB9Cit9OworCit0
ZW1wbGF0ZSA8U3R5bGVJbWFnZSogKFJlbmRlclN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29u
c3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rpb24pKFBhc3NSZWZQdHI8U3R5bGVJ
bWFnZT4pLCBTdHlsZUltYWdlKiAoKmluaXRpYWxGdW5jdGlvbikoKSwgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eT4KK2NsYXNzIEFwcGx5UHJvcGVydHlTdHlsZUltYWdlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1
ZSogdmFsdWUpIHsgKHNlbGVjdG9yLT5zdHlsZSgpLT4qc2V0dGVyRnVuY3Rpb24pKHNlbGVjdG9y
LT5zdHlsZUltYWdlKHByb3BlcnR5LCB2YWx1ZSkpOyB9CisgICAgc3RhdGljIFByb3BlcnR5SGFu
ZGxlciBjcmVhdGVIYW5kbGVyKCkKKyAgICB7CisgICAgICAgIFByb3BlcnR5SGFuZGxlciBoYW5k
bGVyID0gQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPFN0eWxlSW1hZ2UqLCBnZXR0ZXJGdW5jdGlv
biwgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiwgc2V0dGVyRnVuY3Rpb24sIFN0eWxlSW1hZ2UqLCBp
bml0aWFsRnVuY3Rpb24+OjpjcmVhdGVIYW5kbGVyKCk7CisgICAgICAgIHJldHVybiBQcm9wZXJ0
eUhhbmRsZXIoaGFuZGxlci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFsRnVuY3Rp
b24oKSwgJmFwcGx5VmFsdWUpOworICAgIH0KK307CisKK2VudW0gQXV0b1ZhbHVlVHlwZSB7TnVt
YmVyID0gMCwgQ29tcHV0ZUxlbmd0aH07Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVCAoUmVuZGVy
U3R5bGU6OipnZXR0ZXJGdW5jdGlvbikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0
ZXJGdW5jdGlvbikoVCksIGJvb2wgKFJlbmRlclN0eWxlOjoqaGFzQXV0b0Z1bmN0aW9uKSgpIGNv
bnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldEF1dG9GdW5jdGlvbikoKSwgQXV0b1ZhbHVlVHlw
ZSB2YWx1ZVR5cGUgPSBOdW1iZXIsIGludCBhdXRvSWRlbnRpdHkgPSBDU1NWYWx1ZUF1dG8+Citj
bGFzcyBBcHBseVByb3BlcnR5QXV0byB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgc2V0VmFs
dWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBUIHZhbHVlKSB7IChzdHlsZS0+KnNldHRlckZ1bmN0aW9u
KSh2YWx1ZSk7IH0KKyAgICBzdGF0aWMgVCB2YWx1ZShSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0
dXJuIChzdHlsZS0+KmdldHRlckZ1bmN0aW9uKSgpOyB9CisgICAgc3RhdGljIGJvb2wgaGFzQXV0
byhSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIChzdHlsZS0+Kmhhc0F1dG9GdW5jdGlvbiko
KTsgfQorICAgIHN0YXRpYyB2b2lkIHNldEF1dG8oUmVuZGVyU3R5bGUqIHN0eWxlKSB7IChzdHls
ZS0+KnNldEF1dG9GdW5jdGlvbikoKTsgfQorCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0
VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgeworICAgICAgICBpZiAoaGFz
QXV0byhzZWxlY3Rvci0+cGFyZW50U3R5bGUoKSkpCisgICAgICAgICAgICBzZXRBdXRvKHNlbGVj
dG9yLT5zdHlsZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0
b3ItPnN0eWxlKCksIHZhbHVlKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpKSk7CisgICAgfQorCisg
ICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IpIHsgc2V0QXV0byhzZWxlY3Rvci0+c3R5bGUoKSk7IH0KKworICAgIHN0YXRpYyB2b2lkIGFw
cGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IGF1dG9JZGVudGl0eSkKKyAgICAgICAgICAgIHNldEF1
dG8oc2VsZWN0b3ItPnN0eWxlKCkpOworICAgICAgICBlbHNlIGlmICh2YWx1ZVR5cGUgPT0gTnVt
YmVyKQorICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksICpwcmltaXRpdmVW
YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKHZhbHVlVHlwZSA9PSBDb21wdXRlTGVuZ3RoKQorICAg
ICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIHByaW1pdGl2ZVZhbHVlLT5jb21w
dXRlTGVuZ3RoPFQ+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHls
ZSgpLCBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7CisgICAgfQorCisgICAg
c3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyByZXR1cm4gUHJvcGVydHlI
YW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1
ZSk7IH0KK307CisKK2NsYXNzIEFwcGx5UHJvcGVydHlDbGlwIHsKK3ByaXZhdGU6CisgICAgc3Rh
dGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENT
U1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB2YWx1ZS0+Y29u
dmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8
IEZyYWN0aW9uQ29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihzZWxlY3Rvci0+c3R5bGUoKSwg
c2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2
ZVpvb20oKSk7CisgICAgfQorcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZh
bHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgUmVuZGVyU3R5
bGUqIHBhcmVudFN0eWxlID0gc2VsZWN0b3ItPnBhcmVudFN0eWxlKCk7CisgICAgICAgIGlmICgh
cGFyZW50U3R5bGUtPmhhc0NsaXAoKSkKKyAgICAgICAgICAgIHJldHVybiBhcHBseUluaXRpYWxW
YWx1ZShzZWxlY3Rvcik7CisgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRDbGlwKHBhcmVu
dFN0eWxlLT5jbGlwVG9wKCksIHBhcmVudFN0eWxlLT5jbGlwUmlnaHQoKSwgcGFyZW50U3R5bGUt
PmNsaXBCb3R0b20oKSwgcGFyZW50U3R5bGUtPmNsaXBMZWZ0KCkpOworICAgICAgICBzZWxlY3Rv
ci0+c3R5bGUoKS0+c2V0SGFzQ2xpcCh0cnVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBh
cHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICB7CisgICAg
ICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRDbGlwKExlbmd0aCgpLCBMZW5ndGgoKSwgTGVuZ3Ro
KCksIExlbmd0aCgpKTsKKyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0NsaXAoZmFs
c2UpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rv
ciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKworICAgICAgICBpZiAoUmVjdCogcmVjdCA9IHByaW1pdGl2ZVZhbHVl
LT5nZXRSZWN0VmFsdWUoKSkgeworICAgICAgICAgICAgTGVuZ3RoIHRvcCA9IGNvbnZlcnRUb0xl
bmd0aChzZWxlY3RvciwgcmVjdC0+dG9wKCkpOworICAgICAgICAgICAgTGVuZ3RoIHJpZ2h0ID0g
Y29udmVydFRvTGVuZ3RoKHNlbGVjdG9yLCByZWN0LT5yaWdodCgpKTsKKyAgICAgICAgICAgIExl
bmd0aCBib3R0b20gPSBjb252ZXJ0VG9MZW5ndGgoc2VsZWN0b3IsIHJlY3QtPmJvdHRvbSgpKTsK
KyAgICAgICAgICAgIExlbmd0aCBsZWZ0ID0gY29udmVydFRvTGVuZ3RoKHNlbGVjdG9yLCByZWN0
LT5sZWZ0KCkpOworICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldENsaXAodG9wLCBy
aWdodCwgYm90dG9tLCBsZWZ0KTsKKyAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRI
YXNDbGlwKHRydWUpOworICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpID09IENTU1ZhbHVlQXV0bykgeworICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNl
dENsaXAoTGVuZ3RoKCksIExlbmd0aCgpLCBMZW5ndGgoKSwgTGVuZ3RoKCkpOworICAgICAgICAg
ICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0NsaXAodHJ1ZSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKSB7IHJldHVybiBQ
cm9wZXJ0eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFsVmFsdWUsICZh
cHBseVZhbHVlKTsgfQorfTsKKworZW51bSBDb2xvckluaGVyaXQge05vSW5oZXJpdEZyb21QYXJl
bnQgPSAwLCBJbmhlcml0RnJvbVBhcmVudH07CitDb2xvciBkZWZhdWx0SW5pdGlhbENvbG9yKCk7
CitDb2xvciBkZWZhdWx0SW5pdGlhbENvbG9yKCkgeyByZXR1cm4gQ29sb3IoKTsgfQordGVtcGxh
dGUgPENvbG9ySW5oZXJpdCBpbmhlcml0Q29sb3JGcm9tUGFyZW50LAorICAgICAgICAgIENvbG9y
IChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LAorICAgICAgICAgIHZvaWQg
KFJlbmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rpb24pKGNvbnN0IENvbG9yJiksCisgICAgICAgICAg
dm9pZCAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkTGlua1NldHRlckZ1bmN0aW9uKShjb25zdCBDb2xv
ciYpLAorICAgICAgICAgIENvbG9yIChSZW5kZXJTdHlsZTo6KmRlZmF1bHRGdW5jdGlvbikoKSBj
b25zdCwKKyAgICAgICAgICBDb2xvciAoKmluaXRpYWxGdW5jdGlvbikoKSA9ICZkZWZhdWx0SW5p
dGlhbENvbG9yPgorY2xhc3MgQXBwbHlQcm9wZXJ0eUNvbG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAg
ICB7CisgICAgICAgIC8vIFZpc2l0ZWQgbGluayBzdHlsZSBjYW4gbmV2ZXIgZXhwbGljaXRseSBp
bmhlcml0IGZyb20gcGFyZW50IHZpc2l0ZWQgbGluayBzdHlsZSBzbyBubyBzZXBhcmF0ZSBnZXR0
ZXJzIGFyZSBuZWVkZWQuCisgICAgICAgIENvbG9yIGNvbG9yID0gKHNlbGVjdG9yLT5wYXJlbnRT
dHlsZSgpLT4qZ2V0dGVyRnVuY3Rpb24pKCk7CisgICAgICAgIGFwcGx5Q29sb3JWYWx1ZShzZWxl
Y3RvciwgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiAoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCkt
PipkZWZhdWx0RnVuY3Rpb24pKCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5p
dGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgYXBw
bHlDb2xvclZhbHVlKHNlbGVjdG9yLCBpbml0aWFsRnVuY3Rpb24oKSk7CisgICAgfQorCisgICAg
c3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFs
dWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAg
ICAgICBpZiAoaW5oZXJpdENvbG9yRnJvbVBhcmVudCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikKKyAgICAgICAgICAgIGFwcGx5SW5oZXJpdFZh
bHVlKHNlbGVjdG9yKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoc2VsZWN0b3It
PmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpKQorICAgICAgICAgICAgICAgIChzZWxlY3Rv
ci0+c3R5bGUoKS0+KnNldHRlckZ1bmN0aW9uKShzZWxlY3Rvci0+Y29sb3JGcm9tUHJpbWl0aXZl
VmFsdWUocHJpbWl0aXZlVmFsdWUpKTsKKyAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+YXBwbHlQ
cm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSgpKQorICAgICAgICAgICAgICAgIChzZWxlY3Rvci0+
c3R5bGUoKS0+KnZpc2l0ZWRMaW5rU2V0dGVyRnVuY3Rpb24pKHNlbGVjdG9yLT5jb2xvckZyb21Q
cmltaXRpdmVWYWx1ZShwcmltaXRpdmVWYWx1ZSwgLyogZm9yVmlzaXRlZExpbmsgKi8gdHJ1ZSkp
OworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYXBwbHlDb2xvclZhbHVlKENT
U1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBjb25zdCBDb2xvciYgY29sb3IpCisgICAgeworICAg
ICAgICBpZiAoc2VsZWN0b3ItPmFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpKQorICAgICAg
ICAgICAgKHNlbGVjdG9yLT5zdHlsZSgpLT4qc2V0dGVyRnVuY3Rpb24pKGNvbG9yKTsKKyAgICAg
ICAgaWYgKHNlbGVjdG9yLT5hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKCkpCisgICAg
ICAgICAgICAoc2VsZWN0b3ItPnN0eWxlKCktPip2aXNpdGVkTGlua1NldHRlckZ1bmN0aW9uKShj
b2xvcik7CisgICAgfQorCisgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVy
KCkgeyByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5p
dGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7IH0KK307CisKK3RlbXBsYXRlIDxUZXh0RGlyZWN0aW9u
IChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHls
ZTo6KnNldHRlckZ1bmN0aW9uKShUZXh0RGlyZWN0aW9uKSwgVGV4dERpcmVjdGlvbiAoKmluaXRp
YWxGdW5jdGlvbikoKT4KK2NsYXNzIEFwcGx5UHJvcGVydHlEaXJlY3Rpb24geworcHVibGljOgor
ICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENT
U1ZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0PFRleHRE
aXJlY3Rpb24sIGdldHRlckZ1bmN0aW9uLCBUZXh0RGlyZWN0aW9uLCBzZXR0ZXJGdW5jdGlvbiwg
VGV4dERpcmVjdGlvbiwgaW5pdGlhbEZ1bmN0aW9uPjo6YXBwbHlWYWx1ZShzZWxlY3RvciwgdmFs
dWUpOworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc2VsZWN0b3ItPmVsZW1lbnQoKTsKKyAg
ICAgICAgaWYgKGVsZW1lbnQgJiYgc2VsZWN0b3ItPmVsZW1lbnQoKSA9PSBlbGVtZW50LT5kb2N1
bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICAgICAgICAgIGVsZW1lbnQtPmRvY3VtZW50
KCktPnNldERpcmVjdGlvblNldE9uRG9jdW1lbnRFbGVtZW50KHRydWUpOworICAgIH0KKworICAg
IHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCisgICAgeworICAgICAgICBQ
cm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5UHJvcGVydHlEZWZhdWx0PFRleHREaXJlY3Rp
b24sIGdldHRlckZ1bmN0aW9uLCBUZXh0RGlyZWN0aW9uLCBzZXR0ZXJGdW5jdGlvbiwgVGV4dERp
cmVjdGlvbiwgaW5pdGlhbEZ1bmN0aW9uPjo6Y3JlYXRlSGFuZGxlcigpOworICAgICAgICByZXR1
cm4gUHJvcGVydHlIYW5kbGVyKGhhbmRsZXIuaW5oZXJpdEZ1bmN0aW9uKCksIGhhbmRsZXIuaW5p
dGlhbEZ1bmN0aW9uKCksICZhcHBseVZhbHVlKTsKKyAgICB9Cit9OworCitlbnVtIExlbmd0aEF1
dG8geyBBdXRvRGlzYWJsZWQgPSAwLCBBdXRvRW5hYmxlZCB9OworZW51bSBMZW5ndGhJbnRyaW5z
aWMgeyBJbnRyaW5zaWNEaXNhYmxlZCA9IDAsIEludHJpbnNpY0VuYWJsZWQgfTsKK2VudW0gTGVu
Z3RoTWluSW50cmluc2ljIHsgTWluSW50cmluc2ljRGlzYWJsZWQgPSAwLCBNaW5JbnRyaW5zaWNF
bmFibGVkIH07CitlbnVtIExlbmd0aE5vbmUgeyBOb25lRGlzYWJsZWQgPSAwLCBOb25lRW5hYmxl
ZCB9OworZW51bSBMZW5ndGhVbmRlZmluZWQgeyBVbmRlZmluZWREaXNhYmxlZCA9IDAsIFVuZGVm
aW5lZEVuYWJsZWQgfTsKK3RlbXBsYXRlIDxMZW5ndGggKFJlbmRlclN0eWxlOjoqZ2V0dGVyRnVu
Y3Rpb24pKCkgY29uc3QsCisgICAgICAgICAgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXJGdW5j
dGlvbikoTGVuZ3RoKSwKKyAgICAgICAgICBMZW5ndGggKCppbml0aWFsRnVuY3Rpb24pKCksCisg
ICAgICAgICAgTGVuZ3RoQXV0byBhdXRvRW5hYmxlZCA9IEF1dG9EaXNhYmxlZCwKKyAgICAgICAg
ICBMZW5ndGhJbnRyaW5zaWMgaW50cmluc2ljRW5hYmxlZCA9IEludHJpbnNpY0Rpc2FibGVkLAor
ICAgICAgICAgIExlbmd0aE1pbkludHJpbnNpYyBtaW5JbnRyaW5zaWNFbmFibGVkID0gTWluSW50
cmluc2ljRGlzYWJsZWQsCisgICAgICAgICAgTGVuZ3RoTm9uZSBub25lRW5hYmxlZCA9IE5vbmVE
aXNhYmxlZCwKKyAgICAgICAgICBMZW5ndGhVbmRlZmluZWQgbm9uZVVuZGVmaW5lZCA9IFVuZGVm
aW5lZERpc2FibGVkPgorY2xhc3MgQXBwbHlQcm9wZXJ0eUxlbmd0aCB7CitwdWJsaWM6CisgICAg
c3RhdGljIHZvaWQgc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBMZW5ndGggdmFsdWUpIHsg
KHN0eWxlLT4qc2V0dGVyRnVuY3Rpb24pKHZhbHVlKTsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5
VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICB7
CisgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKG5vbmVFbmFi
bGVkICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAg
ICAgICAgIGlmIChub25lVW5kZWZpbmVkKQorICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVj
dG9yLT5zdHlsZSgpLCBMZW5ndGgoVW5kZWZpbmVkKSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIExlbmd0aCgpKTsKKyAgICAg
ICAgZWxzZSBpZiAoaW50cmluc2ljRW5hYmxlZCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZUludHJpbnNpYykKKyAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5z
dHlsZSgpLCBMZW5ndGgoSW50cmluc2ljKSk7CisgICAgICAgIGVsc2UgaWYgKG1pbkludHJpbnNp
Y0VuYWJsZWQgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVNaW5JbnRy
aW5zaWMpCisgICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgTGVuZ3RoKE1p
bkludHJpbnNpYykpOworICAgICAgICBlbHNlIGlmIChhdXRvRW5hYmxlZCAmJiBwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAgICBzZXRWYWx1ZShz
ZWxlY3Rvci0+c3R5bGUoKSwgTGVuZ3RoKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIExlbmd0
aCBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHNlbGVjdG9y
LT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzZWxlY3Rvci0+c3R5bGUo
KS0+ZWZmZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgICAgICAgICBsZW5ndGguc2V0UXVpcmsocHJp
bWl0aXZlVmFsdWUtPmlzUXVpcmtWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBzZXRWYWx1ZShz
ZWxlY3Rvci0+c3R5bGUoKSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0
aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQorICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVj
dG9yLT5zdHlsZSgpLCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBl
cmNlbnQpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0NhbGN1bGF0
ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQorICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVj
dG9yLT5zdHlsZSgpLCBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNzc0NhbGNWYWx1ZSgpLT50b0Nh
bGNWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwg
c2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpKTsgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0
aCgpKQorICAgICAgICAgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBwcmltaXRp
dmVWYWx1ZS0+dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkpOworICAgICAgICB9CisgICAgfQor
CisgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKKyAgICB7CisgICAg
ICAgIFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPExl
bmd0aCwgZ2V0dGVyRnVuY3Rpb24sIExlbmd0aCwgc2V0dGVyRnVuY3Rpb24sIExlbmd0aCwgaW5p
dGlhbEZ1bmN0aW9uPjo6Y3JlYXRlSGFuZGxlcigpOworICAgICAgICByZXR1cm4gUHJvcGVydHlI
YW5kbGVyKGhhbmRsZXIuaW5oZXJpdEZ1bmN0aW9uKCksIGhhbmRsZXIuaW5pdGlhbEZ1bmN0aW9u
KCksICZhcHBseVZhbHVlKTsKKyAgICB9Cit9OworCitlbnVtIFN0cmluZ0lkZW50QmVoYXZpb3Ig
eyBOb3RoaW5nTWFwc1RvTnVsbCA9IDAsIE1hcE5vbmVUb051bGwsIE1hcEF1dG9Ub051bGwgfTsK
K3RlbXBsYXRlIDxTdHJpbmdJZGVudEJlaGF2aW9yIGlkZW50QmVoYXZpb3IsIGNvbnN0IEF0b21p
Y1N0cmluZyYgKFJlbmRlclN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29uc3QsIHZvaWQgKFJl
bmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rpb24pKGNvbnN0IEF0b21pY1N0cmluZyYpLCBjb25zdCBB
dG9taWNTdHJpbmcmICgqaW5pdGlhbEZ1bmN0aW9uKSgpPgorY2xhc3MgQXBwbHlQcm9wZXJ0eVN0
cmluZyB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0
eWxlLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSB7IChzdHlsZS0+KnNldHRlckZ1bmN0aW9u
KSh2YWx1ZSk7IH0KKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3Iq
IHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUpOworICAgICAgICBpZiAoKGlkZW50QmVoYXZpb3IgPT0gTWFwTm9uZVRvTnVsbCAm
JiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAg
ICB8fCAoaWRlbnRCZWhhdmlvciA9PSBNYXBBdXRvVG9OdWxsICYmIHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykpCisgICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rv
ci0+c3R5bGUoKSwgbnVsbEF0b20pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXRWYWx1
ZShzZWxlY3Rvci0+c3R5bGUoKSwgcHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkpOwor
ICAgIH0KKyAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQorICAgIHsK
KyAgICAgICAgUHJvcGVydHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5RGVmYXVsdEJh
c2U8Y29uc3QgQXRvbWljU3RyaW5nJiwgZ2V0dGVyRnVuY3Rpb24sIGNvbnN0IEF0b21pY1N0cmlu
ZyYsIHNldHRlckZ1bmN0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmLCBpbml0aWFsRnVuY3Rpb24+
OjpjcmVhdGVIYW5kbGVyKCk7CisgICAgICAgIHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoaGFuZGxl
ci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFsRnVuY3Rpb24oKSwgJmFwcGx5VmFs
dWUpOworICAgIH0KK307CisKK3RlbXBsYXRlIDxMZW5ndGhTaXplIChSZW5kZXJTdHlsZTo6Kmdl
dHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlckZ1bmN0aW9u
KShMZW5ndGhTaXplKSwgTGVuZ3RoU2l6ZSAoKmluaXRpYWxGdW5jdGlvbikoKT4KK2NsYXNzIEFw
cGx5UHJvcGVydHlCb3JkZXJSYWRpdXMgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIHNldFZh
bHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgTGVuZ3RoU2l6ZSB2YWx1ZSkgeyAoc3R5bGUtPipzZXR0
ZXJGdW5jdGlvbikodmFsdWUpOyB9CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHls
ZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFs
dWUtPmdldFBhaXJWYWx1ZSgpOworICAgICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkg
fHwgIXBhaXItPnNlY29uZCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIExlbmd0
aCByYWRpdXNXaWR0aDsKKyAgICAgICAgTGVuZ3RoIHJhZGl1c0hlaWdodDsKKyAgICAgICAgaWYg
KHBhaXItPmZpcnN0KCktPmlzUGVyY2VudGFnZSgpKQorICAgICAgICAgICAgcmFkaXVzV2lkdGgg
PSBMZW5ndGgocGFpci0+Zmlyc3QoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAg
ICAgIGVsc2UgaWYgKHBhaXItPmZpcnN0KCktPmlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkp
CisgICAgICAgICAgICByYWRpdXNXaWR0aCA9IHBhaXItPmZpcnN0KCktPnZpZXdwb3J0UGVyY2Vu
dGFnZUxlbmd0aCgpOworICAgICAgICBlbHNlIGlmIChwYWlyLT5maXJzdCgpLT5pc0NhbGN1bGF0
ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKSB7CisgICAgICAgICAgICAvLyBGSVhNRSBjYWxjKCk6
IGh0dHA6Ly93ZWJraXQub3JnL2IvMTY2NjIKKyAgICAgICAgICAgIC8vIGhhbmRsZSB0aGlzIGNh
c2UKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByYWRp
dXNXaWR0aCA9IHBhaXItPmZpcnN0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzZWxlY3Rvci0+
c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCkt
PmVmZmVjdGl2ZVpvb20oKSk7CisgICAgICAgIGlmIChwYWlyLT5zZWNvbmQoKS0+aXNQZXJjZW50
YWdlKCkpCisgICAgICAgICAgICByYWRpdXNIZWlnaHQgPSBMZW5ndGgocGFpci0+c2Vjb25kKCkt
PmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBlbHNlIGlmIChwYWlyLT5zZWNv
bmQoKS0+aXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSkKKyAgICAgICAgICAgIHJhZGl1c0hl
aWdodCA9IHBhaXItPnNlY29uZCgpLT52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKTsKKyAgICAg
ICAgZWxzZSBpZiAocGFpci0+c2Vjb25kKCktPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVu
Z3RoKCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FIGNhbGMoKTogaHR0cDovL3dlYmtpdC5vcmcv
Yi8xNjY2MgorICAgICAgICAgICAgLy8gaGFuZGxlIHRoaXMgY2FzZQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IHBhaXItPnNl
Y29uZCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc2VsZWN0b3ItPnN0eWxlKCksIHNlbGVjdG9y
LT5yb290RWxlbWVudFN0eWxlKCksIHNlbGVjdG9yLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkp
OworICAgICAgICBpbnQgd2lkdGggPSByYWRpdXNXaWR0aC52YWx1ZSgpOworICAgICAgICBpbnQg
aGVpZ2h0ID0gcmFkaXVzSGVpZ2h0LnZhbHVlKCk7CisgICAgICAgIGlmICh3aWR0aCA8IDAgfHwg
aGVpZ2h0IDwgMCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCF3aWR0aCkKKyAg
ICAgICAgICAgIHJhZGl1c0hlaWdodCA9IHJhZGl1c1dpZHRoOyAvLyBOdWxsIG91dCB0aGUgb3Ro
ZXIgdmFsdWUuCisgICAgICAgIGVsc2UgaWYgKCFoZWlnaHQpCisgICAgICAgICAgICByYWRpdXNX
aWR0aCA9IHJhZGl1c0hlaWdodDsgLy8gTnVsbCBvdXQgdGhlIG90aGVyIHZhbHVlLgorCisgICAg
ICAgIExlbmd0aFNpemUgc2l6ZShyYWRpdXNXaWR0aCwgcmFkaXVzSGVpZ2h0KTsKKyAgICAgICAg
c2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIHNpemUpOworICAgIH0KKyAgICBzdGF0aWMgUHJv
cGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQorICAgIHsKKyAgICAgICAgUHJvcGVydHlIYW5k
bGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8TGVuZ3RoU2l6ZSwgZ2V0dGVy
RnVuY3Rpb24sIExlbmd0aFNpemUsIHNldHRlckZ1bmN0aW9uLCBMZW5ndGhTaXplLCBpbml0aWFs
RnVuY3Rpb24+OjpjcmVhdGVIYW5kbGVyKCk7CisgICAgICAgIHJldHVybiBQcm9wZXJ0eUhhbmRs
ZXIoaGFuZGxlci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFsRnVuY3Rpb24oKSwg
JmFwcGx5VmFsdWUpOworICAgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0
IEZpbGxMYXllckFjY2Vzc29yVHlwZXMgeworICAgIHR5cGVkZWYgVCBTZXR0ZXI7CisgICAgdHlw
ZWRlZiBUIEdldHRlcjsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgRmlsbExheWVyQWNjZXNz
b3JUeXBlczxTdHlsZUltYWdlKj4geworICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxTdHlsZUltYWdl
PiBTZXR0ZXI7CisgICAgdHlwZWRlZiBTdHlsZUltYWdlKiBHZXR0ZXI7Cit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwKKyAgICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsCisgICAg
ICAgICAgRUZpbGxMYXllclR5cGUgZmlsbExheWVyVHlwZSwKKyAgICAgICAgICBGaWxsTGF5ZXIq
IChSZW5kZXJTdHlsZTo6KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpLAorICAgICAgICAgIGNvbnN0
IEZpbGxMYXllciogKFJlbmRlclN0eWxlOjoqbGF5ZXJzRnVuY3Rpb24pKCkgY29uc3QsCisgICAg
ICAgICAgYm9vbCAoRmlsbExheWVyOjoqdGVzdEZ1bmN0aW9uKSgpIGNvbnN0LAorICAgICAgICAg
IHR5cGVuYW1lIEZpbGxMYXllckFjY2Vzc29yVHlwZXM8VD46OkdldHRlciAoRmlsbExheWVyOjoq
Z2V0RnVuY3Rpb24pKCkgY29uc3QsCisgICAgICAgICAgdm9pZCAoRmlsbExheWVyOjoqc2V0RnVu
Y3Rpb24pKHR5cGVuYW1lIEZpbGxMYXllckFjY2Vzc29yVHlwZXM8VD46OlNldHRlciksCisgICAg
ICAgICAgdm9pZCAoRmlsbExheWVyOjoqY2xlYXJGdW5jdGlvbikoKSwKKyAgICAgICAgICB0eXBl
bmFtZSBGaWxsTGF5ZXJBY2Nlc3NvclR5cGVzPFQ+OjpHZXR0ZXIgKCppbml0aWFsRnVuY3Rpb24p
KEVGaWxsTGF5ZXJUeXBlKSwKKyAgICAgICAgICB2b2lkIChDU1NTdHlsZVNlbGVjdG9yOjoqbWFw
RmlsbEZ1bmN0aW9uKShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopPgorY2xh
c3MgQXBwbHlQcm9wZXJ0eUZpbGxMYXllciB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgYXBw
bHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgeworICAgICAg
ICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IChzZWxlY3Rvci0+c3R5bGUoKS0+KmFjY2Vzc0xheWVy
c0Z1bmN0aW9uKSgpOworICAgICAgICBGaWxsTGF5ZXIqIHByZXZDaGlsZCA9IDA7CisgICAgICAg
IGNvbnN0IEZpbGxMYXllciogY3VyclBhcmVudCA9IChzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+
KmxheWVyc0Z1bmN0aW9uKSgpOworICAgICAgICB3aGlsZSAoY3VyclBhcmVudCAmJiAoY3VyclBh
cmVudC0+KnRlc3RGdW5jdGlvbikoKSkgeworICAgICAgICAgICAgaWYgKCFjdXJyQ2hpbGQpIHsK
KyAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgbGF5ZXIuKi8KKyAgICAgICAg
ICAgICAgICBjdXJyQ2hpbGQgPSBuZXcgRmlsbExheWVyKGZpbGxMYXllclR5cGUpOworICAgICAg
ICAgICAgICAgIHByZXZDaGlsZC0+c2V0TmV4dChjdXJyQ2hpbGQpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgKGN1cnJDaGlsZC0+KnNldEZ1bmN0aW9uKSgoY3VyclBhcmVudC0+KmdldEZ1
bmN0aW9uKSgpKTsKKyAgICAgICAgICAgIHByZXZDaGlsZCA9IGN1cnJDaGlsZDsKKyAgICAgICAg
ICAgIGN1cnJDaGlsZCA9IHByZXZDaGlsZC0+bmV4dCgpOworICAgICAgICAgICAgY3VyclBhcmVu
dCA9IGN1cnJQYXJlbnQtPm5leHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlIChjdXJy
Q2hpbGQpIHsKKyAgICAgICAgICAgIC8qIFJlc2V0IGFueSByZW1haW5pbmcgbGF5ZXJzIHRvIG5v
dCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovCisgICAgICAgICAgICAoY3VyckNoaWxkLT4qY2xl
YXJGdW5jdGlvbikoKTsKKyAgICAgICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgp
OworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUo
Q1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgeworICAgICAgICBGaWxsTGF5ZXIqIGN1
cnJDaGlsZCA9IChzZWxlY3Rvci0+c3R5bGUoKS0+KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpOwor
ICAgICAgICAoY3VyckNoaWxkLT4qc2V0RnVuY3Rpb24pKCgqaW5pdGlhbEZ1bmN0aW9uKShmaWxs
TGF5ZXJUeXBlKSk7CisgICAgICAgIGZvciAoY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7
IGN1cnJDaGlsZDsgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCkpCisgICAgICAgICAgICAo
Y3VyckNoaWxkLT4qY2xlYXJGdW5jdGlvbikoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBh
cHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisg
ICAgeworICAgICAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IChzZWxlY3Rvci0+c3R5bGUoKS0+
KmFjY2Vzc0xheWVyc0Z1bmN0aW9uKSgpOworICAgICAgICBGaWxsTGF5ZXIqIHByZXZDaGlsZCA9
IDA7CisgICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKQorI2lmIEVOQUJMRShDU1NfSU1B
R0VfU0VUKQorICAgICAgICAmJiAhdmFsdWUtPmlzSW1hZ2VTZXRWYWx1ZSgpCisjZW5kaWYKKyAg
ICAgICAgKSB7CisgICAgICAgICAgICAvKiBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRv
IGEgbGF5ZXIsIGNyZWF0aW5nIG5ldyBsYXllcnMgYXMgbmVlZGVkLiAqLworICAgICAgICAgICAg
Q1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1
ZSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHZhbHVlTGlzdC0+
bGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmICghY3VyckNoaWxkKSB7CisgICAg
ICAgICAgICAgICAgICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBsYXllciB0byBob2xkIHRoaXMg
dmFsdWUgKi8KKyAgICAgICAgICAgICAgICAgICAgY3VyckNoaWxkID0gbmV3IEZpbGxMYXllcihm
aWxsTGF5ZXJUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgcHJldkNoaWxkLT5zZXROZXh0KGN1
cnJDaGlsZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIChzZWxlY3Rvci0+
Km1hcEZpbGxGdW5jdGlvbikocHJvcGVydHlJZCwgY3VyckNoaWxkLCB2YWx1ZUxpc3QtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soaSkpOworICAgICAgICAgICAgICAgIHByZXZDaGlsZCA9IGN1cnJD
aGlsZDsKKyAgICAgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIChzZWxlY3Rvci0+Km1h
cEZpbGxGdW5jdGlvbikocHJvcGVydHlJZCwgY3VyckNoaWxkLCB2YWx1ZSk7CisgICAgICAgICAg
ICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsKKyAgICAgICAgfQorICAgICAgICB3aGls
ZSAoY3VyckNoaWxkKSB7CisgICAgICAgICAgICAvKiBSZXNldCBhbGwgcmVtYWluaW5nIGxheWVy
cyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLworICAgICAgICAgICAgKGN1cnJDaGls
ZC0+KmNsZWFyRnVuY3Rpb24pKCk7CisgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQt
Pm5leHQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIg
Y3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFByb3BlcnR5SGFuZGxlcigmYXBwbHlJbmhlcml0VmFs
dWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFsdWUpOyB9Cit9OworCitlbnVtIENvbXB1
dGVMZW5ndGhOb3JtYWwge05vcm1hbERpc2FibGVkID0gMCwgTm9ybWFsRW5hYmxlZH07CitlbnVt
IENvbXB1dGVMZW5ndGhUaGlja25lc3Mge1RoaWNrbmVzc0Rpc2FibGVkID0gMCwgVGhpY2tuZXNz
RW5hYmxlZH07CitlbnVtIENvbXB1dGVMZW5ndGhTVkdab29tIHtTVkdab29tRGlzYWJsZWQgPSAw
LCBTVkdab29tRW5hYmxlZH07Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKKyAgICAgICAgICBUIChS
ZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LAorICAgICAgICAgIHZvaWQgKFJl
bmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rpb24pKFQpLAorICAgICAgICAgIFQgKCppbml0aWFsRnVu
Y3Rpb24pKCksCisgICAgICAgICAgQ29tcHV0ZUxlbmd0aE5vcm1hbCBub3JtYWxFbmFibGVkID0g
Tm9ybWFsRGlzYWJsZWQsCisgICAgICAgICAgQ29tcHV0ZUxlbmd0aFRoaWNrbmVzcyB0aGlja25l
c3NFbmFibGVkID0gVGhpY2tuZXNzRGlzYWJsZWQsCisgICAgICAgICAgQ29tcHV0ZUxlbmd0aFNW
R1pvb20gc3ZnWm9vbUVuYWJsZWQgPSBTVkdab29tRGlzYWJsZWQ+CitjbGFzcyBBcHBseVByb3Bl
cnR5Q29tcHV0ZUxlbmd0aCB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgc2V0VmFsdWUoUmVu
ZGVyU3R5bGUqIHN0eWxlLCBUIHZhbHVlKSB7IChzdHlsZS0+KnNldHRlckZ1bmN0aW9uKSh2YWx1
ZSk7IH0KKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVj
dG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICAvLyBub3RlOiBDU1NQcm9wZXJ0
eUxldHRlci9Xb3JkU3BhY2luZyByaWdodCBub3cgc2V0cyB0byB6ZXJvIGlmIGl0J3Mgbm90IGEg
cHJpbWl0aXZlIHZhbHVlIGZvciBzb21lIHJlYXNvbi4uLgorICAgICAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CisKKyAgICAgICAgaW50IGlkZW50ID0gcHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCk7CisgICAgICAgIFQgbGVuZ3RoOworICAgICAgICBpZiAobm9ybWFsRW5hYmxlZCAmJiBp
ZGVudCA9PSBDU1NWYWx1ZU5vcm1hbCkgeworICAgICAgICAgICAgbGVuZ3RoID0gMDsKKyAgICAg
ICAgfSBlbHNlIGlmICh0aGlja25lc3NFbmFibGVkICYmIGlkZW50ID09IENTU1ZhbHVlVGhpbikg
eworICAgICAgICAgICAgbGVuZ3RoID0gMTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlja25lc3NF
bmFibGVkICYmIGlkZW50ID09IENTU1ZhbHVlTWVkaXVtKSB7CisgICAgICAgICAgICBsZW5ndGgg
PSAzOworICAgICAgICB9IGVsc2UgaWYgKHRoaWNrbmVzc0VuYWJsZWQgJiYgaWRlbnQgPT0gQ1NT
VmFsdWVUaGljaykgeworICAgICAgICAgICAgbGVuZ3RoID0gNTsKKyAgICAgICAgfSBlbHNlIGlm
IChpZGVudCA9PSBDU1NWYWx1ZUludmFsaWQpIHsKKyAgICAgICAgICAgIGZsb2F0IHpvb20gPSAo
c3ZnWm9vbUVuYWJsZWQgJiYgc2VsZWN0b3ItPnVzZVNWR1pvb21SdWxlcygpKSA/IDEuMGYgOiBz
ZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOworICAgICAgICAgICAgbGVuZ3RoID0g
cHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8VD4oc2VsZWN0b3ItPnN0eWxlKCksIHNlbGVj
dG9yLT5yb290RWxlbWVudFN0eWxlKCksIHpvb20pOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBsZW5ndGggPSAwOworICAg
ICAgICB9CisKKyAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIGxlbmd0aCk7Cisg
ICAgfQorICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCisgICAgewor
ICAgICAgICBQcm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5UHJvcGVydHlEZWZhdWx0QmFz
ZTxULCBnZXR0ZXJGdW5jdGlvbiwgVCwgc2V0dGVyRnVuY3Rpb24sIFQsIGluaXRpYWxGdW5jdGlv
bj46OmNyZWF0ZUhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuIFByb3BlcnR5SGFuZGxlcihoYW5k
bGVyLmluaGVyaXRGdW5jdGlvbigpLCBoYW5kbGVyLmluaXRpYWxGdW5jdGlvbigpLCAmYXBwbHlW
YWx1ZSk7CisgICAgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIFQgKEZvbnREZXNjcmlw
dGlvbjo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB2b2lkIChGb250RGVzY3JpcHRpb246Oipz
ZXR0ZXJGdW5jdGlvbikoVCksIFQgaW5pdGlhbFZhbHVlPgorY2xhc3MgQXBwbHlQcm9wZXJ0eUZv
bnQgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnRE
ZXNjcmlwdGlvbiA9IHNlbGVjdG9yLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgKGZvbnRE
ZXNjcmlwdGlvbi4qc2V0dGVyRnVuY3Rpb24pKChzZWxlY3Rvci0+cGFyZW50Rm9udERlc2NyaXB0
aW9uKCkuKmdldHRlckZ1bmN0aW9uKSgpKTsKKyAgICAgICAgc2VsZWN0b3ItPnNldEZvbnREZXNj
cmlwdGlvbihmb250RGVzY3JpcHRpb24pOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5
SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAg
Rm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHNlbGVjdG9yLT5mb250RGVzY3JpcHRp
b24oKTsKKyAgICAgICAgKGZvbnREZXNjcmlwdGlvbi4qc2V0dGVyRnVuY3Rpb24pKGluaXRpYWxW
YWx1ZSk7CisgICAgICAgIHNlbGVjdG9yLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0
aW9uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0
b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOworICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0g
c2VsZWN0b3ItPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICAoZm9udERlc2NyaXB0aW9uLipz
ZXR0ZXJGdW5jdGlvbikoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgc2VsZWN0b3ItPnNldEZv
bnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOworICAgIH0KKworICAgIHN0YXRpYyBQcm9w
ZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFByb3BlcnR5SGFuZGxlcigmYXBw
bHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFsdWUpOyB9Cit9Owor
CitjbGFzcyBBcHBseVByb3BlcnR5Rm9udFNpemUgeworcHJpdmF0ZToKKyAgICAvLyBXaGVuIHRo
ZSBDU1Mga2V5d29yZCAibGFyZ2VyIiBpcyB1c2VkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYXR0ZW1w
dCB0byBtYXRjaCB3aXRoaW4gdGhlIGtleXdvcmQKKyAgICAvLyB0YWJsZSwgYW5kIGZhaWxpbmcg
dGhhdCwgd2lsbCBzaW1wbHkgbXVsdGlwbHkgYnkgMS4yLgorICAgIHN0YXRpYyBmbG9hdCBsYXJn
ZXJGb250U2l6ZShmbG9hdCBzaXplKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IEZpZ3VyZSBv
dXQgd2hlcmUgd2UgZmFsbCBpbiB0aGUgc2l6ZSByYW5nZXMgKHh4LXNtYWxsIHRvIHh4eC1sYXJn
ZSkgYW5kIHNjYWxlIHVwIHRvCisgICAgICAgIC8vIHRoZSBuZXh0IHNpemUgbGV2ZWwuCisgICAg
ICAgIHJldHVybiBzaXplICogMS4yZjsKKyAgICB9CisKKyAgICAvLyBMaWtlIHRoZSBwcmV2aW91
cyBmdW5jdGlvbiwgYnV0IGZvciB0aGUga2V5d29yZCAic21hbGxlciIuCisgICAgc3RhdGljIGZs
b2F0IHNtYWxsZXJGb250U2l6ZShmbG9hdCBzaXplKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6
IEZpZ3VyZSBvdXQgd2hlcmUgd2UgZmFsbCBpbiB0aGUgc2l6ZSByYW5nZXMgKHh4LXNtYWxsIHRv
IHh4eC1sYXJnZSkgYW5kIHNjYWxlIGRvd24gdG8KKyAgICAgICAgLy8gdGhlIG5leHQgc2l6ZSBs
ZXZlbC4KKyAgICAgICAgcmV0dXJuIHNpemUgLyAxLjJmOworICAgIH0KK3B1YmxpYzoKKyAgICBz
dGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikK
KyAgICB7CisgICAgICAgIGZsb2F0IHNpemUgPSBzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+Zm9u
dERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOworCisgICAgICAgIGlmIChzaXplIDwgMCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2Ny
aXB0aW9uID0gc2VsZWN0b3ItPnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPmZv
bnREZXNjcmlwdGlvbigpLmtleXdvcmRTaXplKCkpOworICAgICAgICBzZWxlY3Rvci0+c2V0Rm9u
dFNpemUoZm9udERlc2NyaXB0aW9uLCBzaXplKTsKKyAgICAgICAgc2VsZWN0b3ItPnNldEZvbnRE
ZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IpCisgICAgeworICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc2Vs
ZWN0b3ItPnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBmbG9hdCBzaXplID0g
c2VsZWN0b3ItPmZvbnRTaXplRm9yS2V5d29yZChzZWxlY3Rvci0+ZG9jdW1lbnQoKSwgQ1NTVmFs
dWVNZWRpdW0sIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCkpOworCisgICAg
ICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb250RGVz
Y3JpcHRpb24uc2V0S2V5d29yZFNpemUoQ1NTVmFsdWVNZWRpdW0gLSBDU1NWYWx1ZVh4U21hbGwg
KyAxKTsKKyAgICAgICAgc2VsZWN0b3ItPnNldEZvbnRTaXplKGZvbnREZXNjcmlwdGlvbiwgc2l6
ZSk7CisgICAgICAgIHNlbGVjdG9yLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9u
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUo
Q1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKworICAgICAgICBGb250RGVzY3JpcHRpb24g
Zm9udERlc2NyaXB0aW9uID0gc2VsZWN0b3ItPnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOwor
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUoMCk7CisgICAgICAgIGZsb2F0
IHBhcmVudFNpemUgPSAwOworICAgICAgICBib29sIHBhcmVudElzQWJzb2x1dGVTaXplID0gZmFs
c2U7CisgICAgICAgIGZsb2F0IHNpemUgPSAwOworCisgICAgICAgIGlmIChzZWxlY3Rvci0+aGFz
UGFyZW50Tm9kZSgpKSB7CisgICAgICAgICAgICBwYXJlbnRTaXplID0gc2VsZWN0b3ItPnBhcmVu
dFN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKTsKKyAgICAgICAgICAg
IHBhcmVudElzQWJzb2x1dGVTaXplID0gc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPmZvbnREZXNj
cmlwdGlvbigpLmlzQWJzb2x1dGVTaXplKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW50
IGlkZW50ID0gcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgICAgIC8vIEtl
eXdvcmRzIGFyZSBiZWluZyB1c2VkLgorICAgICAgICAgICAgc3dpdGNoIChpZGVudCkgeworICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZVh4U21hbGw6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
WFNtYWxsOgorICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVNtYWxsOgorICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZU1lZGl1bToKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMYXJnZToKKyAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVYTGFyZ2U6CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlWHhM
YXJnZToKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRYeHhMYXJnZToKKyAgICAgICAg
ICAgICAgICBzaXplID0gc2VsZWN0b3ItPmZvbnRTaXplRm9yS2V5d29yZChzZWxlY3Rvci0+ZG9j
dW1lbnQoKSwgaWRlbnQsIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCkpOwor
ICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZShpZGVudCAtIENT
U1ZhbHVlWHhTbWFsbCArIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZUxhcmdlcjoKKyAgICAgICAgICAgICAgICBzaXplID0gbGFyZ2VyRm9udFNp
emUocGFyZW50U2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlU21hbGxlcjoKKyAgICAgICAgICAgICAgICBzaXplID0gc21hbGxlckZvbnRTaXpl
KHBhcmVudFNpemUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZShwYXJlbnRJc0Fic29sdXRlU2l6ZSAm
JiAoaWRlbnQgPT0gQ1NTVmFsdWVMYXJnZXIgfHwgaWRlbnQgPT0gQ1NTVmFsdWVTbWFsbGVyKSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNv
bHV0ZVNpemUocGFyZW50SXNBYnNvbHV0ZVNpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8fCAhKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSB8
fCBwcmltaXRpdmVWYWx1ZS0+aXNGb250UmVsYXRpdmVMZW5ndGgoKSkpOworICAgICAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKQorICAgICAgICAgICAgICAgIHNpemUgPSBw
cmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc2VsZWN0b3ItPnBhcmVudFN0eWxl
KCksIHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCksIDEuMCwgdHJ1ZSk7CisgICAgICAgICAg
ICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgICAgICAg
ICAgc2l6ZSA9IChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpICogcGFyZW50U2l6ZSkg
LyAxMDAuMGY7CisgICAgICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDYWxjdWxh
dGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBzaXplID0gcHJpbWl0
aXZlVmFsdWUtPmNzc0NhbGNWYWx1ZSgpLT50b0NhbGNWYWx1ZShzZWxlY3Rvci0+cGFyZW50U3R5
bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSktPmV2YWx1YXRlKHBhcmVudFNpemUp
OyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5p
c1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHNpemUgPSB2YWx1
ZUZvckxlbmd0aChwcmltaXRpdmVWYWx1ZS0+dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCksIDAs
IHNlbGVjdG9yLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzaXplIDwg
MCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzZWxlY3Rvci0+c2V0Rm9udFNpemUo
Zm9udERlc2NyaXB0aW9uLCBzaXplKTsKKyAgICAgICAgc2VsZWN0b3ItPnNldEZvbnREZXNjcmlw
dGlvbihmb250RGVzY3JpcHRpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3Rh
dGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyByZXR1cm4gUHJvcGVydHlIYW5k
bGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7
IH0KK307CisKK2NsYXNzIEFwcGx5UHJvcGVydHlGb250V2VpZ2h0IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1
ZSogdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAg
ICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc2VsZWN0b3ItPmZvbnREZXNjcmlw
dGlvbigpOworICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Cisg
ICAgICAgIGNhc2UgQ1NTVmFsdWVJbnZhbGlkOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUJvbGRlcjoK
KyAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoZm9udERlc2NyaXB0aW9uLmJv
bGRlcldlaWdodCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVl
TGlnaHRlcjoKKyAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoZm9udERlc2Ny
aXB0aW9uLmxpZ2h0ZXJXZWlnaHQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoKnByaW1pdGl2ZVZh
bHVlKTsKKyAgICAgICAgfQorICAgICAgICBzZWxlY3Rvci0+c2V0Rm9udERlc2NyaXB0aW9uKGZv
bnREZXNjcmlwdGlvbik7CisgICAgfQorICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRl
SGFuZGxlcigpCisgICAgeworICAgICAgICBQcm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5
UHJvcGVydHlGb250PEZvbnRXZWlnaHQsICZGb250RGVzY3JpcHRpb246OndlaWdodCwgJkZvbnRE
ZXNjcmlwdGlvbjo6c2V0V2VpZ2h0LCBGb250V2VpZ2h0Tm9ybWFsPjo6Y3JlYXRlSGFuZGxlcigp
OworICAgICAgICByZXR1cm4gUHJvcGVydHlIYW5kbGVyKGhhbmRsZXIuaW5oZXJpdEZ1bmN0aW9u
KCksIGhhbmRsZXIuaW5pdGlhbEZ1bmN0aW9uKCksICZhcHBseVZhbHVlKTsKKyAgICB9Cit9Owor
CitjbGFzcyBBcHBseVByb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMgeworcHVibGljOgorICAg
IHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9y
KQorICAgIHsKKyAgICAgICAgY29uc3QgRm9udERlc2NyaXB0aW9uJiBwYXJlbnRGb250RGVzY3Jp
cHRpb24gPSBzZWxlY3Rvci0+cGFyZW50Rm9udERlc2NyaXB0aW9uKCk7CisgICAgICAgIEZvbnRE
ZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzZWxlY3Rvci0+Zm9udERlc2NyaXB0aW9uKCk7
CisKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbW1vbkxpZ2F0dXJlc1N0YXRlKHBhcmVu
dEZvbnREZXNjcmlwdGlvbi5jb21tb25MaWdhdHVyZXNTdGF0ZSgpKTsKKyAgICAgICAgZm9udERl
c2NyaXB0aW9uLnNldERpc2NyZXRpb25hcnlMaWdhdHVyZXNTdGF0ZShwYXJlbnRGb250RGVzY3Jp
cHRpb24uZGlzY3JldGlvbmFyeUxpZ2F0dXJlc1N0YXRlKCkpOworICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0SGlzdG9yaWNhbExpZ2F0dXJlc1N0YXRlKHBhcmVudEZvbnREZXNjcmlwdGlvbi5o
aXN0b3JpY2FsTGlnYXR1cmVzU3RhdGUoKSk7CisKKyAgICAgICAgc2VsZWN0b3ItPnNldEZvbnRE
ZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFw
cGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAg
ICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHNlbGVjdG9yLT5mb250RGVzY3Jp
cHRpb24oKTsKKworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tbW9uTGlnYXR1cmVzU3Rh
dGUoRm9udERlc2NyaXB0aW9uOjpOb3JtYWxMaWdhdHVyZXNTdGF0ZSk7CisgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzU3RhdGUoRm9udERlc2NyaXB0aW9u
OjpOb3JtYWxMaWdhdHVyZXNTdGF0ZSk7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRIaXN0
b3JpY2FsTGlnYXR1cmVzU3RhdGUoRm9udERlc2NyaXB0aW9uOjpOb3JtYWxMaWdhdHVyZXNTdGF0
ZSk7CisKKyAgICAgICAgc2VsZWN0b3ItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRp
b24pOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rv
ciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEZvbnREZXNjcmlw
dGlvbjo6TGlnYXR1cmVzU3RhdGUgY29tbW9uTGlnYXR1cmVzU3RhdGUgPSBGb250RGVzY3JpcHRp
b246Ok5vcm1hbExpZ2F0dXJlc1N0YXRlOworICAgICAgICBGb250RGVzY3JpcHRpb246OkxpZ2F0
dXJlc1N0YXRlIGRpc2NyZXRpb25hcnlMaWdhdHVyZXNTdGF0ZSA9IEZvbnREZXNjcmlwdGlvbjo6
Tm9ybWFsTGlnYXR1cmVzU3RhdGU7CisgICAgICAgIEZvbnREZXNjcmlwdGlvbjo6TGlnYXR1cmVz
U3RhdGUgaGlzdG9yaWNhbExpZ2F0dXJlc1N0YXRlID0gRm9udERlc2NyaXB0aW9uOjpOb3JtYWxM
aWdhdHVyZXNTdGF0ZTsKKworICAgICAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKKyAg
ICAgICAgICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVM
aXN0Kj4odmFsdWUpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZUxp
c3QtPmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IHZh
bHVlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKKyAgICAgICAgICAgICAgICBBU1NF
UlQoaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaXRlbS0+
aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRl
bSk7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vQ29tbW9uTGlnYXR1cmVz
OgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uTGlnYXR1cmVzU3RhdGUgPSBGb250RGVz
Y3JpcHRpb246OkRpc2FibGVkTGlnYXR1cmVzU3RhdGU7CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUNvbW1vbkxpZ2F0dXJl
czoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbkxpZ2F0dXJlc1N0YXRlID0gRm9udERl
c2NyaXB0aW9uOjpFbmFibGVkTGlnYXR1cmVzU3RhdGU7CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vRGlzY3JldGlvbmFy
eUxpZ2F0dXJlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NyZXRpb25hcnlMaWdhdHVy
ZXNTdGF0ZSA9IEZvbnREZXNjcmlwdGlvbjo6RGlzYWJsZWRMaWdhdHVyZXNTdGF0ZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlRGlzY3JldGlvbmFyeUxpZ2F0dXJlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpc2Ny
ZXRpb25hcnlMaWdhdHVyZXNTdGF0ZSA9IEZvbnREZXNjcmlwdGlvbjo6RW5hYmxlZExpZ2F0dXJl
c1N0YXRlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVOb0hpc3RvcmljYWxMaWdhdHVyZXM6CisgICAgICAgICAgICAgICAg
ICAgICAgICBoaXN0b3JpY2FsTGlnYXR1cmVzU3RhdGUgPSBGb250RGVzY3JpcHRpb246OkRpc2Fi
bGVkTGlnYXR1cmVzU3RhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUhpc3RvcmljYWxMaWdhdHVyZXM6CisgICAgICAg
ICAgICAgICAgICAgICAgICBoaXN0b3JpY2FsTGlnYXR1cmVzU3RhdGUgPSBGb250RGVzY3JpcHRp
b246OkVuYWJsZWRMaWdhdHVyZXNTdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBBU1NFUlQodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSk7CisgICAgICAgICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldElkZW50KCkgPT0gQ1NT
VmFsdWVOb3JtYWwpOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBGb250RGVzY3JpcHRp
b24gZm9udERlc2NyaXB0aW9uID0gc2VsZWN0b3ItPmZvbnREZXNjcmlwdGlvbigpOworICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0Q29tbW9uTGlnYXR1cmVzU3RhdGUoY29tbW9uTGlnYXR1cmVz
U3RhdGUpOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0RGlzY3JldGlvbmFyeUxpZ2F0dXJl
c1N0YXRlKGRpc2NyZXRpb25hcnlMaWdhdHVyZXNTdGF0ZSk7CisgICAgICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRIaXN0b3JpY2FsTGlnYXR1cmVzU3RhdGUoaGlzdG9yaWNhbExpZ2F0dXJlc1N0YXRl
KTsKKyAgICAgICAgc2VsZWN0b3ItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24p
OworICAgIH0KKworICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCisg
ICAgeworICAgICAgICByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwg
JmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7CisgICAgfQorfTsKKworZW51bSBCb3Jk
ZXJJbWFnZVR5cGUgeyBJbWFnZSA9IDAsIE1hc2sgfTsKK3RlbXBsYXRlIDxCb3JkZXJJbWFnZVR5
cGUgYm9yZGVySW1hZ2VUeXBlLAorICAgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHksCisg
ICAgICAgICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0
aW9uKSgpIGNvbnN0LAorICAgICAgICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rp
b24pKGNvbnN0IE5pbmVQaWVjZUltYWdlJik+CitjbGFzcyBBcHBseVByb3BlcnR5Qm9yZGVySW1h
Z2UgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rv
ciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIE5pbmVQaWVjZUlt
YWdlIGltYWdlOworICAgICAgICBpZiAoYm9yZGVySW1hZ2VUeXBlID09IE1hc2spCisgICAgICAg
ICAgICBpbWFnZS5zZXRNYXNrRGVmYXVsdHMoKTsKKyAgICAgICAgc2VsZWN0b3ItPm1hcE5pbmVQ
aWVjZUltYWdlKHByb3BlcnR5LCB2YWx1ZSwgaW1hZ2UpOworICAgICAgICAoc2VsZWN0b3ItPnN0
eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoaW1hZ2UpOworICAgIH0KKworICAgIHN0YXRpYyBQcm9w
ZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCisgICAgeworICAgICAgICBQcm9wZXJ0eUhhbmRs
ZXIgaGFuZGxlciA9IEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxjb25zdCBOaW5lUGllY2VJbWFn
ZSYsIGdldHRlckZ1bmN0aW9uLCBjb25zdCBOaW5lUGllY2VJbWFnZSYsIHNldHRlckZ1bmN0aW9u
LCBOaW5lUGllY2VJbWFnZSwgJlJlbmRlclN0eWxlOjppbml0aWFsTmluZVBpZWNlSW1hZ2U+Ojpj
cmVhdGVIYW5kbGVyKCk7CisgICAgICAgIHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoaGFuZGxlci5p
bmhlcml0RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFsRnVuY3Rpb24oKSwgJmFwcGx5VmFsdWUp
OworICAgIH0KK307CisKK2VudW0gQm9yZGVySW1hZ2VNb2RpZmllclR5cGUgeyBPdXRzZXQsIFJl
cGVhdCwgU2xpY2UsIFdpZHRoIH07Cit0ZW1wbGF0ZSA8Qm9yZGVySW1hZ2VUeXBlIHR5cGUsIEJv
cmRlckltYWdlTW9kaWZpZXJUeXBlIG1vZGlmaWVyPgorY2xhc3MgQXBwbHlQcm9wZXJ0eUJvcmRl
ckltYWdlTW9kaWZpZXIgeworcHJpdmF0ZToKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0IE5pbmVQ
aWVjZUltYWdlJiBnZXRWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIHR5cGUgPT0g
SW1hZ2UgPyBzdHlsZS0+Ym9yZGVySW1hZ2UoKSA6IHN0eWxlLT5tYXNrQm94SW1hZ2UoKTsgfQor
ICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0
IE5pbmVQaWVjZUltYWdlJiB2YWx1ZSkgeyByZXR1cm4gdHlwZSA9PSBJbWFnZSA/IHN0eWxlLT5z
ZXRCb3JkZXJJbWFnZSh2YWx1ZSkgOiBzdHlsZS0+c2V0TWFza0JveEltYWdlKHZhbHVlKTsgfQor
cHVibGljOgorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0
b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgTmluZVBpZWNlSW1hZ2UgaW1hZ2UoZ2V0VmFs
dWUoc2VsZWN0b3ItPnN0eWxlKCkpKTsKKyAgICAgICAgc3dpdGNoIChtb2RpZmllcikgeworICAg
ICAgICBjYXNlIE91dHNldDoKKyAgICAgICAgICAgIGltYWdlLmNvcHlPdXRzZXRGcm9tKGdldFZh
bHVlKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBSZXBlYXQ6CisgICAgICAgICAgICBpbWFnZS5jb3B5UmVwZWF0RnJvbShnZXRWYWx1
ZShzZWxlY3Rvci0+cGFyZW50U3R5bGUoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU2xpY2U6CisgICAgICAgICAgICBpbWFnZS5jb3B5SW1hZ2VTbGljZXNGcm9tKGdldFZh
bHVlKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBXaWR0aDoKKyAgICAgICAgICAgIGltYWdlLmNvcHlCb3JkZXJTbGljZXNGcm9tKGdl
dFZhbHVlKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgaW1hZ2UpOworICAg
IH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3Iq
IHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgTmluZVBpZWNlSW1hZ2UgaW1hZ2UoZ2V0VmFsdWUo
c2VsZWN0b3ItPnN0eWxlKCkpKTsKKyAgICAgICAgc3dpdGNoIChtb2RpZmllcikgeworICAgICAg
ICBjYXNlIE91dHNldDoKKyAgICAgICAgICAgIGltYWdlLnNldE91dHNldChMZW5ndGhCb3goMCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVwZWF0OgorICAgICAgICAgICAg
aW1hZ2Uuc2V0SG9yaXpvbnRhbFJ1bGUoU3RyZXRjaEltYWdlUnVsZSk7CisgICAgICAgICAgICBp
bWFnZS5zZXRWZXJ0aWNhbFJ1bGUoU3RyZXRjaEltYWdlUnVsZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTbGljZToKKyAgICAgICAgICAgIC8vIE1hc2tzIGhhdmUgYSBkaWZm
ZXJlbnQgaW5pdGlhbCB2YWx1ZSBmb3Igc2xpY2VzLiBQcmVzZXJ2ZSB0aGUgdmFsdWUgb2YgMCBm
b3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisgICAgICAgICAgICBpbWFnZS5zZXRJbWFnZVNs
aWNlcyh0eXBlID09IEltYWdlID8gTGVuZ3RoQm94KExlbmd0aCgxMDAsIFBlcmNlbnQpLCBMZW5n
dGgoMTAwLCBQZXJjZW50KSwgTGVuZ3RoKDEwMCwgUGVyY2VudCksIExlbmd0aCgxMDAsIFBlcmNl
bnQpKSA6IExlbmd0aEJveCgpKTsKKyAgICAgICAgICAgIGltYWdlLnNldEZpbGwoZmFsc2UpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2lkdGg6CisgICAgICAgICAgICAvLyBN
YXNrcyBoYXZlIGEgZGlmZmVyZW50IGluaXRpYWwgdmFsdWUgZm9yIHdpZHRocy4gVGhleSB1c2Ug
YW4gJ2F1dG8nIHZhbHVlIHJhdGhlciB0aGFuIHRyeWluZyB0byBmaXQgdG8gdGhlIGJvcmRlci4K
KyAgICAgICAgICAgIGltYWdlLnNldEJvcmRlclNsaWNlcyh0eXBlID09IEltYWdlID8gTGVuZ3Ro
Qm94KExlbmd0aCgxLCBSZWxhdGl2ZSksIExlbmd0aCgxLCBSZWxhdGl2ZSksIExlbmd0aCgxLCBS
ZWxhdGl2ZSksIExlbmd0aCgxLCBSZWxhdGl2ZSkpIDogTGVuZ3RoQm94KCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCks
IGltYWdlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBOaW5lUGll
Y2VJbWFnZSBpbWFnZShnZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSkpOworICAgICAgICBzd2l0
Y2ggKG1vZGlmaWVyKSB7CisgICAgICAgIGNhc2UgT3V0c2V0OgorICAgICAgICAgICAgaW1hZ2Uu
c2V0T3V0c2V0KHNlbGVjdG9yLT5tYXBOaW5lUGllY2VJbWFnZVF1YWQodmFsdWUpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJlcGVhdDoKKyAgICAgICAgICAgIHNlbGVjdG9y
LT5tYXBOaW5lUGllY2VJbWFnZVJlcGVhdCh2YWx1ZSwgaW1hZ2UpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU2xpY2U6CisgICAgICAgICAgICBzZWxlY3Rvci0+bWFwTmluZVBp
ZWNlSW1hZ2VTbGljZSh2YWx1ZSwgaW1hZ2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgV2lkdGg6CisgICAgICAgICAgICBpbWFnZS5zZXRCb3JkZXJTbGljZXMoc2VsZWN0b3It
Pm1hcE5pbmVQaWVjZUltYWdlUXVhZCh2YWx1ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIGltYWdlKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKSB7IHJldHVybiBQ
cm9wZXJ0eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFsVmFsdWUsICZh
cHBseVZhbHVlKTsgfQorfTsKKwordGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgaWQsIFN0eWxlSW1h
Z2UqIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJT
dHlsZTo6KnNldHRlckZ1bmN0aW9uKShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+KSwgU3R5bGVJbWFn
ZSogKCppbml0aWFsRnVuY3Rpb24pKCk+CitjbGFzcyBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VT
b3VyY2UgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxl
Y3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkgeyAoc2VsZWN0b3ItPnN0eWxlKCktPipz
ZXR0ZXJGdW5jdGlvbikoc2VsZWN0b3ItPnN0eWxlSW1hZ2UoaWQsIHZhbHVlKSk7IH0KKyAgICBz
dGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQorICAgIHsKKyAgICAgICAgUHJv
cGVydHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8U3R5bGVJbWFn
ZSosIGdldHRlckZ1bmN0aW9uLCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+LCBzZXR0ZXJGdW5jdGlv
biwgU3R5bGVJbWFnZSosIGluaXRpYWxGdW5jdGlvbj46OmNyZWF0ZUhhbmRsZXIoKTsKKyAgICAg
ICAgcmV0dXJuIFByb3BlcnR5SGFuZGxlcihoYW5kbGVyLmluaGVyaXRGdW5jdGlvbigpLCBoYW5k
bGVyLmluaXRpYWxGdW5jdGlvbigpLCAmYXBwbHlWYWx1ZSk7CisgICAgfQorfTsKKworZW51bSBD
b3VudGVyQmVoYXZpb3Ige0luY3JlbWVudCA9IDAsIFJlc2V0fTsKK3RlbXBsYXRlIDxDb3VudGVy
QmVoYXZpb3IgY291bnRlckJlaGF2aW9yPgorY2xhc3MgQXBwbHlQcm9wZXJ0eUNvdW50ZXIgewor
cHVibGljOgorICAgIHN0YXRpYyB2b2lkIGVtcHR5RnVuY3Rpb24oQ1NTU3R5bGVTZWxlY3Rvciop
IHsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3Iq
IHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgQ291bnRlckRpcmVjdGl2ZU1hcCYgbWFwID0gc2Vs
ZWN0b3ItPnN0eWxlKCktPmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCk7CisgICAgICAgIENvdW50
ZXJEaXJlY3RpdmVNYXAmIHBhcmVudE1hcCA9IHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT5hY2Nl
c3NDb3VudGVyRGlyZWN0aXZlcygpOworCisgICAgICAgIHR5cGVkZWYgQ291bnRlckRpcmVjdGl2
ZU1hcDo6aXRlcmF0b3IgSXRlcmF0b3I7CisgICAgICAgIEl0ZXJhdG9yIGVuZCA9IHBhcmVudE1h
cC5lbmQoKTsKKyAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IHBhcmVudE1hcC5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIENvdW50ZXJEaXJlY3RpdmVzJiBkaXJlY3Rp
dmVzID0gbWFwLmFkZChpdC0+Zmlyc3QsIENvdW50ZXJEaXJlY3RpdmVzKCkpLml0ZXJhdG9yLT5z
ZWNvbmQ7CisgICAgICAgICAgICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KSB7CisgICAg
ICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0ID0gaXQtPnNlY29uZC5tX3Jlc2V0OworICAg
ICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9yZXNldFZhbHVlID0gaXQtPnNlY29uZC5tX3Jlc2V0
VmFsdWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIEluaGVyaXRp
bmcgYSBjb3VudGVyLWluY3JlbWVudCBtZWFucyB0YWtpbmcgdGhlIHBhcmVudCdzIGN1cnJlbnQg
dmFsdWUgZm9yIHRoZSBjb3VudGVyCisgICAgICAgICAgICAgICAgLy8gYW5kIGFkZGluZyBpdCB0
byBpdHNlbGYuCisgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX2luY3JlbWVudCA9IGl0LT5z
ZWNvbmQubV9pbmNyZW1lbnQ7CisgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX2luY3JlbWVu
dFZhbHVlID0gMDsKKyAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aXZlcy5tX2luY3JlbWVudCkg
eworICAgICAgICAgICAgICAgICAgICBmbG9hdCBpbmNyZW1lbnRWYWx1ZSA9IGRpcmVjdGl2ZXMu
bV9pbmNyZW1lbnRWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX2luY3Jl
bWVudFZhbHVlID0gY2xhbXBUb0ludGVnZXIoaW5jcmVtZW50VmFsdWUgKyBpdC0+c2Vjb25kLm1f
aW5jcmVtZW50VmFsdWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIGRpcmVjdGl2ZXMubV9pbmNyZW1lbnQgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICBkaXJlY3RpdmVzLm1faW5jcmVtZW50VmFsdWUgPSBpdC0+c2Vjb25kLm1faW5jcmVtZW50VmFs
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENT
U1ZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUtPmlzVmFsdWVMaXN0KCkp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3Rh
dGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworCisgICAgICAgIENvdW50ZXJEaXJlY3Rp
dmVNYXAmIG1hcCA9IHNlbGVjdG9yLT5zdHlsZSgpLT5hY2Nlc3NDb3VudGVyRGlyZWN0aXZlcygp
OworICAgICAgICB0eXBlZGVmIENvdW50ZXJEaXJlY3RpdmVNYXA6Oml0ZXJhdG9yIEl0ZXJhdG9y
OworCisgICAgICAgIEl0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKKyAgICAgICAgZm9yIChJdGVy
YXRvciBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBpZiAo
Y291bnRlckJlaGF2aW9yID09IFJlc2V0KQorICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQubV9y
ZXNldCA9IGZhbHNlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGl0LT5zZWNv
bmQubV9pbmNyZW1lbnQgPSBmYWxzZTsKKworICAgICAgICBpbnQgbGVuZ3RoID0gbGlzdCA/IGxp
c3QtPmxlbmd0aCgpIDogMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgQ1NTVmFsdWUqIGN1cnJWYWx1ZSA9IGxpc3QtPml0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soaSk7CisgICAgICAgICAgICBpZiAoIWN1cnJWYWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBQYWlyKiBw
YWlyID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihjdXJyVmFsdWUpLT5nZXRQYWly
VmFsdWUoKTsKKyAgICAgICAgICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFp
ci0+c2Vjb25kKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIEF0
b21pY1N0cmluZyBpZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihw
YWlyLT5maXJzdCgpKS0+Z2V0U3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAgIGludCB2YWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+c2Vjb25kKCkpLT5nZXRJbnRW
YWx1ZSgpOworICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMmIGRpcmVjdGl2ZXMgPSBtYXAu
YWRkKGlkZW50aWZpZXIuaW1wbCgpLCBDb3VudGVyRGlyZWN0aXZlcygpKS5pdGVyYXRvci0+c2Vj
b25kOworICAgICAgICAgICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9PSBSZXNldCkgeworICAgICAg
ICAgICAgICAgIGRpcmVjdGl2ZXMubV9yZXNldCA9IHRydWU7CisgICAgICAgICAgICAgICAgZGly
ZWN0aXZlcy5tX3Jlc2V0VmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZXMubV9pbmNyZW1lbnQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZmxvYXQgaW5jcmVtZW50VmFsdWUgPSBkaXJlY3RpdmVzLm1faW5jcmVtZW50VmFsdWU7
CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9pbmNyZW1lbnRWYWx1ZSA9IGNsYW1w
VG9JbnRlZ2VyKGluY3JlbWVudFZhbHVlICsgdmFsdWUpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9pbmNyZW1lbnQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1faW5jcmVtZW50VmFsdWUgPSB2YWx1ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
fQorICAgIH0KKyAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKSB7IHJl
dHVybiBQcm9wZXJ0eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmZW1wdHlGdW5jdGlvbiwg
JmFwcGx5VmFsdWUpOyB9Cit9OworCisKK2NsYXNzIEFwcGx5UHJvcGVydHlDdXJzb3IgeworcHVi
bGljOgorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3Iq
IHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEN1cnNvcihz
ZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+Y3Vyc29yKCkpOworICAgICAgICBzZWxlY3Rvci0+c3R5
bGUoKS0+c2V0Q3Vyc29yTGlzdChzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+Y3Vyc29ycygpKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVj
dG9yKiBzZWxlY3RvcikKKyAgICB7CisgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5jbGVhckN1
cnNvckxpc3QoKTsKKyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEN1cnNvcihSZW5kZXJT
dHlsZTo6aW5pdGlhbEN1cnNvcigpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZh
bHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgewor
ICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+Y2xlYXJDdXJzb3JMaXN0KCk7CisgICAgICAgIGlm
ICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0
ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworICAgICAgICAgICAgaW50IGxl
biA9IGxpc3QtPmxlbmd0aCgpOworICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEN1
cnNvcihDVVJTT1JfQVVUTyk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsg
aSsrKSB7CisgICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKGkpOworICAgICAgICAgICAgICAgIGlmIChpdGVtLT5pc0N1cnNvckltYWdl
VmFsdWUoKSkgeworICAgICAgICAgICAgICAgICAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKiBpbWFn
ZSA9IHN0YXRpY19jYXN0PENTU0N1cnNvckltYWdlVmFsdWUqPihpdGVtKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGltYWdlLT51cGRhdGVJZlNWR0N1cnNvcklzVXNlZChzZWxlY3Rvci0+ZWxl
bWVudCgpKSkgLy8gRWxlbWVudHMgd2l0aCBTVkcgY3Vyc29ycyBhcmUgbm90IGFsbG93ZWQgdG8g
c2hhcmUgc3R5bGUuCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+
c2V0VW5pcXVlKCk7CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5hZGRD
dXJzb3Ioc2VsZWN0b3ItPmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUN1cnNv
ciwgaW1hZ2UpLCBpbWFnZS0+aG90U3BvdCgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KGl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICAgICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KGl0ZW0pOworICAgICAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzSWRl
bnQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRDdXJz
b3IoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlz
SWRlbnQoKSAmJiBzZWxlY3Rvci0+c3R5bGUoKS0+Y3Vyc29yKCkgIT0gRUN1cnNvcigqcHJpbWl0
aXZlVmFsdWUpKQorICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRDdXJzb3Io
KnByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBQcm9wZXJ0
eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFByb3BlcnR5SGFuZGxlcigmYXBwbHlJ
bmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFsdWUpOyB9Cit9OworCitj
bGFzcyBBcHBseVByb3BlcnR5VGV4dEFsaWduIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBh
cHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisg
ICAgeworICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisKKyAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpICE9IENTU1ZhbHVlV2Via2l0TWF0Y2hQYXJlbnQpCisg
ICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEFsaWduKCpwcmltaXRpdmVWYWx1
ZSk7CisgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT50ZXh0QWxpZ24o
KSA9PSBUQVNUQVJUKQorICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRBbGln
bihzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gTEVG
VCA6IFJJR0hUKTsKKyAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPnRl
eHRBbGlnbigpID09IFRBRU5EKQorICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRl
eHRBbGlnbihzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
ID8gUklHSFQgOiBMRUZUKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZWN0b3ItPnN0
eWxlKCktPnNldFRleHRBbGlnbihzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+dGV4dEFsaWduKCkp
OworICAgIH0KKyAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQorICAg
IHsKKyAgICAgICAgUHJvcGVydHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5RGVmYXVs
dEJhc2U8RVRleHRBbGlnbiwgJlJlbmRlclN0eWxlOjp0ZXh0QWxpZ24sIEVUZXh0QWxpZ24sICZS
ZW5kZXJTdHlsZTo6c2V0VGV4dEFsaWduLCBFVGV4dEFsaWduLCAmUmVuZGVyU3R5bGU6OmluaXRp
YWxUZXh0QWxpZ24+OjpjcmVhdGVIYW5kbGVyKCk7CisgICAgICAgIHJldHVybiBQcm9wZXJ0eUhh
bmRsZXIoaGFuZGxlci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFsRnVuY3Rpb24o
KSwgJmFwcGx5VmFsdWUpOworICAgIH0KK307CisKK2NsYXNzIEFwcGx5UHJvcGVydHlUZXh0RGVj
b3JhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNl
bGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgRVRleHRE
ZWNvcmF0aW9uIHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uKCk7CisgICAg
ICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSh2YWx1ZSk7IGkuaGFzTW9yZSgpOyBpLmFk
dmFuY2UoKSkgeworICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBpLnZhbHVlKCk7CisgICAg
ICAgICAgICBBU1NFUlQoaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKKyAgICAgICAgICAgIHQg
fD0gKnN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgIH0KKyAg
ICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHREZWNvcmF0aW9uKHQpOworICAgIH0KKyAg
ICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQorICAgIHsKKyAgICAgICAg
UHJvcGVydHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8RVRleHRE
ZWNvcmF0aW9uLCAmUmVuZGVyU3R5bGU6OnRleHREZWNvcmF0aW9uLCBFVGV4dERlY29yYXRpb24s
ICZSZW5kZXJTdHlsZTo6c2V0VGV4dERlY29yYXRpb24sIEVUZXh0RGVjb3JhdGlvbiwgJlJlbmRl
clN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb24+OjpjcmVhdGVIYW5kbGVyKCk7CisgICAgICAg
IHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoaGFuZGxlci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxl
ci5pbml0aWFsRnVuY3Rpb24oKSwgJmFwcGx5VmFsdWUpOworICAgIH0KK307CisKK2NsYXNzIEFw
cGx5UHJvcGVydHlVbmljb2RlQmlkaSB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgYXBwbHlW
YWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHsK
KyAgICAgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICBFVW5pY29k
ZUJpZGkgcmVuZGVyZXJVbmljb2RlQmlkaSA9IFJlbmRlclN0eWxlOjppbml0aWFsVW5pY29kZUJp
ZGkoKTsKKyAgICAgICAgICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBp
Lmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKKyAgICAgICAgICAgICAgICBDU1NWYWx1ZSogaXRl
bSA9IGkudmFsdWUoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaXRlbS0+aXNQcmltaXRpdmVW
YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBFVW5pY29kZUJpZGkgY3VycmVudFZhbHVlID0gKnN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKGN1cnJlbnRWYWx1ZSA9PSBPdmVycmlkZSB8fCBjdXJyZW50VmFsdWUgPT0gSXNvbGF0ZSk7
CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPSByZW5kZXJlclVuaWNvZGVCaWRp
ICYmIHJlbmRlcmVyVW5pY29kZUJpZGkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxVbmljb2RlQmlk
aSgpKQorICAgICAgICAgICAgICAgICAgICByZW5kZXJlclVuaWNvZGVCaWRpID0gT3ZlcnJpZGVJ
c29sYXRlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmVuZGVy
ZXJVbmljb2RlQmlkaSA9IGN1cnJlbnRWYWx1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRVbmljb2RlQmlkaShyZW5kZXJlclVuaWNvZGVCaWRpKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBzZWxl
Y3Rvci0+c3R5bGUoKS0+c2V0VW5pY29kZUJpZGkoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICB9Cisg
ICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKKyAgICB7CisgICAgICAg
IFByb3BlcnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPEVVbmlj
b2RlQmlkaSwgJlJlbmRlclN0eWxlOjp1bmljb2RlQmlkaSwgRVVuaWNvZGVCaWRpLCAmUmVuZGVy
U3R5bGU6OnNldFVuaWNvZGVCaWRpLCBFVW5pY29kZUJpZGksICZSZW5kZXJTdHlsZTo6aW5pdGlh
bFVuaWNvZGVCaWRpPjo6Y3JlYXRlSGFuZGxlcigpOworICAgICAgICByZXR1cm4gUHJvcGVydHlI
YW5kbGVyKGhhbmRsZXIuaW5oZXJpdEZ1bmN0aW9uKCksIGhhbmRsZXIuaW5pdGlhbEZ1bmN0aW9u
KCksICZhcHBseVZhbHVlKTsKKyAgICB9Cit9OworCitjbGFzcyBBcHBseVByb3BlcnR5TGluZUhl
aWdodCB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVj
dG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBMZW5ndGggbGluZUhlaWdodDsKKworICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAg
ICAgICBsaW5lSGVpZ2h0ID0gTGVuZ3RoKC0xMDAuMCwgUGVyY2VudCk7CisgICAgICAgIGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKSB7CisgICAgICAgICAgICBkb3VibGUgbXVs
dGlwbGllciA9IHNlbGVjdG9yLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7CisgICAgICAgICAg
ICBpZiAoc2VsZWN0b3ItPnN0eWxlKCktPnRleHRTaXplQWRqdXN0KCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoRnJhbWUqIGZyYW1lID0gc2VsZWN0b3ItPmRvY3VtZW50KCktPmZyYW1lKCkpCisg
ICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgKj0gZnJhbWUtPnRleHRab29tRmFjdG9yKCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsaW5lSGVpZ2h0ID0gcHJpbWl0aXZlVmFsdWUt
PmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RF
bGVtZW50U3R5bGUoKSwgbXVsdGlwbGllcik7CisgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUtPmlzUGVyY2VudGFnZSgpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogcGVyY2VudGFn
ZSBzaG91bGQgbm90IGJlIHJlc3RyaWN0ZWQgdG8gYW4gaW50ZWdlciBoZXJlLgorICAgICAgICAg
ICAgbGluZUhlaWdodCA9IExlbmd0aCgoc2VsZWN0b3ItPnN0eWxlKCktPmZvbnRTaXplKCkgKiBw
cmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSkgLyAxMDAsIEZpeGVkKTsKKyAgICAgICAgfSBl
bHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIoKSkgeworICAgICAgICAgICAgLy8gRklY
TUU6IG51bWJlciBhbmQgcGVyY2VudGFnZSB2YWx1ZXMgc2hvdWxkIHByb2R1Y2UgdGhlIHNhbWUg
dHlwZSBvZiBMZW5ndGggKGllLiBGaXhlZCBvciBQZXJjZW50KS4KKyAgICAgICAgICAgIGxpbmVI
ZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCkgKiAxMDAuMCwg
UGVyY2VudCk7CisgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzVmlld3BvcnRQ
ZXJjZW50YWdlTGVuZ3RoKCkpCisgICAgICAgICAgICBsaW5lSGVpZ2h0ID0gcHJpbWl0aXZlVmFs
dWUtPnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRMaW5lSGVpZ2h0KGxpbmVI
ZWlnaHQpOworICAgIH0KKyAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIo
KQorICAgIHsKKyAgICAgICAgUHJvcGVydHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5
RGVmYXVsdEJhc2U8TGVuZ3RoLCAmUmVuZGVyU3R5bGU6OmxpbmVIZWlnaHQsIExlbmd0aCwgJlJl
bmRlclN0eWxlOjpzZXRMaW5lSGVpZ2h0LCBMZW5ndGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbExp
bmVIZWlnaHQ+OjpjcmVhdGVIYW5kbGVyKCk7CisgICAgICAgIHJldHVybiBQcm9wZXJ0eUhhbmRs
ZXIoaGFuZGxlci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFsRnVuY3Rpb24oKSwg
JmFwcGx5VmFsdWUpOworICAgIH0KK307CisKK2NsYXNzIEFwcGx5UHJvcGVydHlQYWdlU2l6ZSB7
Citwcml2YXRlOgorICAgIHN0YXRpYyBMZW5ndGggbW1MZW5ndGgoZG91YmxlIG1tKSB7IHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1tLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01N
KS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KDAsIDApOyB9CisgICAgc3RhdGljIExlbmd0aCBpbmNo
TGVuZ3RoKGRvdWJsZSBpbmNoKSB7IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGlu
Y2gsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU4pLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oMCwg
MCk7IH0KKyAgICBzdGF0aWMgYm9vbCBnZXRQYWdlU2l6ZUZyb21OYW1lKENTU1ByaW1pdGl2ZVZh
bHVlKiBwYWdlU2l6ZU5hbWUsIENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlT3JpZW50YXRpb24sIExl
bmd0aCYgd2lkdGgsIExlbmd0aCYgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChMZW5ndGgsIGE1V2lkdGgsIChtbUxlbmd0aCgxNDgpKSk7CisgICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoTGVuZ3RoLCBhNUhlaWdodCwgKG1tTGVuZ3RoKDIxMCkpKTsKKyAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChMZW5ndGgsIGE0V2lkdGgsIChtbUxlbmd0aCgyMTApKSk7
CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoTGVuZ3RoLCBhNEhlaWdodCwgKG1tTGVuZ3Ro
KDI5NykpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChMZW5ndGgsIGEzV2lkdGgsICht
bUxlbmd0aCgyOTcpKSk7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoTGVuZ3RoLCBhM0hl
aWdodCwgKG1tTGVuZ3RoKDQyMCkpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChMZW5n
dGgsIGI1V2lkdGgsIChtbUxlbmd0aCgxNzYpKSk7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoTGVuZ3RoLCBiNUhlaWdodCwgKG1tTGVuZ3RoKDI1MCkpKTsKKyAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChMZW5ndGgsIGI0V2lkdGgsIChtbUxlbmd0aCgyNTApKSk7CisgICAgICAgIERF
RklORV9TVEFUSUNfTE9DQUwoTGVuZ3RoLCBiNEhlaWdodCwgKG1tTGVuZ3RoKDM1MykpKTsKKyAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChMZW5ndGgsIGxldHRlcldpZHRoLCAoaW5jaExlbmd0
aCg4LjUpKSk7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoTGVuZ3RoLCBsZXR0ZXJIZWln
aHQsIChpbmNoTGVuZ3RoKDExKSkpOworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKExlbmd0
aCwgbGVnYWxXaWR0aCwgKGluY2hMZW5ndGgoOC41KSkpOworICAgICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKExlbmd0aCwgbGVnYWxIZWlnaHQsIChpbmNoTGVuZ3RoKDE0KSkpOworICAgICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKExlbmd0aCwgbGVkZ2VyV2lkdGgsIChpbmNoTGVuZ3RoKDExKSkp
OworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKExlbmd0aCwgbGVkZ2VySGVpZ2h0LCAoaW5j
aExlbmd0aCgxNykpKTsKKworICAgICAgICBpZiAoIXBhZ2VTaXplTmFtZSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICBzd2l0Y2ggKHBhZ2VTaXplTmFtZS0+Z2V0SWRlbnQo
KSkgeworICAgICAgICBjYXNlIENTU1ZhbHVlQTU6CisgICAgICAgICAgICB3aWR0aCA9IGE1V2lk
dGg7CisgICAgICAgICAgICBoZWlnaHQgPSBhNUhlaWdodDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIENTU1ZhbHVlQTQ6CisgICAgICAgICAgICB3aWR0aCA9IGE0V2lkdGg7Cisg
ICAgICAgICAgICBoZWlnaHQgPSBhNEhlaWdodDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENTU1ZhbHVlQTM6CisgICAgICAgICAgICB3aWR0aCA9IGEzV2lkdGg7CisgICAgICAg
ICAgICBoZWlnaHQgPSBhM0hlaWdodDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENTU1ZhbHVlQjU6CisgICAgICAgICAgICB3aWR0aCA9IGI1V2lkdGg7CisgICAgICAgICAgICBo
ZWlnaHQgPSBiNUhlaWdodDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1Zh
bHVlQjQ6CisgICAgICAgICAgICB3aWR0aCA9IGI0V2lkdGg7CisgICAgICAgICAgICBoZWlnaHQg
PSBiNEhlaWdodDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlTGV0
dGVyOgorICAgICAgICAgICAgd2lkdGggPSBsZXR0ZXJXaWR0aDsKKyAgICAgICAgICAgIGhlaWdo
dCA9IGxldHRlckhlaWdodDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1Zh
bHVlTGVnYWw6CisgICAgICAgICAgICB3aWR0aCA9IGxlZ2FsV2lkdGg7CisgICAgICAgICAgICBo
ZWlnaHQgPSBsZWdhbEhlaWdodDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENT
U1ZhbHVlTGVkZ2VyOgorICAgICAgICAgICAgd2lkdGggPSBsZWRnZXJXaWR0aDsKKyAgICAgICAg
ICAgIGhlaWdodCA9IGxlZGdlckhlaWdodDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHBhZ2VPcmllbnRhdGlvbikgeworICAgICAgICAgICAgc3dpdGNoIChwYWdlT3JpZW50YXRp
b24tPmdldElkZW50KCkpIHsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMYW5kc2NhcGU6Cisg
ICAgICAgICAgICAgICAgc3RkOjpzd2FwKHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVBvcnRyYWl0OgorICAgICAgICAgICAg
ICAgIC8vIE5vdGhpbmcgdG8gZG8uCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CitwdWJsaWM6CisgICAgc3Rh
dGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxlY3RvciopIHsgfQorICAgIHN0
YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqKSB7IH0KKyAgICBz
dGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1
ZSogdmFsdWUpCisgICAgeworICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+cmVzZXRQYWdlU2l6
ZVR5cGUoKTsKKyAgICAgICAgTGVuZ3RoIHdpZHRoOworICAgICAgICBMZW5ndGggaGVpZ2h0Owor
ICAgICAgICBQYWdlU2l6ZVR5cGUgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE87CisgICAg
ICAgIENTU1ZhbHVlTGlzdEluc3BlY3RvciBpbnNwZWN0b3IodmFsdWUpOworICAgICAgICBzd2l0
Y2ggKGluc3BlY3Rvci5sZW5ndGgoKSkgeworICAgICAgICBjYXNlIDI6IHsKKyAgICAgICAgICAg
IC8vIDxsZW5ndGg+ezJ9IHwgPHBhZ2Utc2l6ZT4gPG9yaWVudGF0aW9uPgorICAgICAgICAgICAg
aWYgKCFpbnNwZWN0b3IuZmlyc3QoKS0+aXNQcmltaXRpdmVWYWx1ZSgpIHx8ICFpbnNwZWN0b3Iu
c2Vjb25kKCktPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlyc3QgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KGluc3BlY3Rvci5maXJzdCgpKTsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBzZWNvbmQgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGluc3BlY3Rv
ci5zZWNvbmQoKSk7CisgICAgICAgICAgICBpZiAoZmlyc3QtPmlzTGVuZ3RoKCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyA8bGVuZ3RoPnsyfQorICAgICAgICAgICAgICAgIGlmICghc2Vjb25kLT5p
c0xlbmd0aCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
d2lkdGggPSBmaXJzdC0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHNlbGVjdG9yLT5zdHlsZSgpLCBz
ZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBoZWlnaHQgPSBz
ZWNvbmQtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3It
PnJvb3RFbGVtZW50U3R5bGUoKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIC8vIDxwYWdlLXNpemU+IDxvcmllbnRhdGlvbj4KKyAgICAgICAgICAgICAgICAvLyBUaGUg
dmFsdWUgb3JkZXIgaXMgZ3VhcmFudGVlZC4gU2VlIENTU1BhcnNlcjo6cGFyc2VTaXplUGFyYW1l
dGVyLgorICAgICAgICAgICAgICAgIGlmICghZ2V0UGFnZVNpemVGcm9tTmFtZShmaXJzdCwgc2Vj
b25kLCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAxOiB7CisgICAgICAg
ICAgICAvLyA8bGVuZ3RoPiB8IGF1dG8gfCA8cGFnZS1zaXplPiB8IFsgcG9ydHJhaXQgfCBsYW5k
c2NhcGVdCisgICAgICAgICAgICBpZiAoIWluc3BlY3Rvci5maXJzdCgpLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihp
bnNwZWN0b3IuZmlyc3QoKSk7CisgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVu
Z3RoKCkpIHsKKyAgICAgICAgICAgICAgICAvLyA8bGVuZ3RoPgorICAgICAgICAgICAgICAgIHBh
Z2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsKKyAgICAgICAgICAgICAgICB3aWR0aCA9
IGhlaWdodCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc2VsZWN0b3It
PnN0eWxlKCksIHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCkpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
KSB7CisgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86CisgICAgICAgICAgICAgICAgICAg
IHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlUG9ydHJhaXQ6CisgICAgICAgICAgICAg
ICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPX1BPUlRSQUlUOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGFuZHNjYXBl
OgorICAgICAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVUT19MQU5E
U0NBUEU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIC8vIDxwYWdlLXNpemU+CisgICAgICAgICAgICAgICAg
ICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFnZXRQYWdlU2l6ZUZyb21OYW1lKHByaW1pdGl2ZVZhbHVlLCAwLCB3aWR0aCwgaGVp
Z2h0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHNlbGVjdG9y
LT5zdHlsZSgpLT5zZXRQYWdlU2l6ZVR5cGUocGFnZVNpemVUeXBlKTsKKyAgICAgICAgc2VsZWN0
b3ItPnN0eWxlKCktPnNldFBhZ2VTaXplKExlbmd0aFNpemUod2lkdGgsIGhlaWdodCkpOworICAg
IH0KKyAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKSB7IHJldHVybiBQ
cm9wZXJ0eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFsVmFsdWUsICZh
cHBseVZhbHVlKTsgfQorfTsKKworY2xhc3MgQXBwbHlQcm9wZXJ0eVRleHRFbXBoYXNpc1N0eWxl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNl
bGVjdG9yKiBzZWxlY3RvcikKKyAgICB7CisgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRU
ZXh0RW1waGFzaXNGaWxsKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT50ZXh0RW1waGFzaXNGaWxs
KCkpOworICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyayhzZWxl
Y3Rvci0+cGFyZW50U3R5bGUoKS0+dGV4dEVtcGhhc2lzTWFyaygpKTsKKyAgICAgICAgc2VsZWN0
b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoc2VsZWN0b3ItPnBhcmVudFN0
eWxlKCktPnRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSk7CisgICAgfQorCisgICAgc3RhdGljIHZv
aWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgewor
ICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChSZW5kZXJTdHls
ZTo6aW5pdGlhbFRleHRFbXBoYXNpc0ZpbGwoKSk7CisgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgp
LT5zZXRUZXh0RW1waGFzaXNNYXJrKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEVtcGhhc2lzTWFy
aygpKTsKKyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0N1c3RvbU1h
cmsoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNDdXN0b21NYXJrKCkpOworICAgIH0K
KworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3Is
IENTU1ZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3Qo
KSkgeworICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFs
dWVMaXN0Kj4odmFsdWUpOworICAgICAgICAgICAgQVNTRVJUKGxpc3QtPmxlbmd0aCgpID09IDIp
OworICAgICAgICAgICAgaWYgKGxpc3QtPmxlbmd0aCgpICE9IDIpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkgewor
ICAgICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjayhpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogdmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0p
OworICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUZpbGxl
ZCB8fCB2YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU9wZW4pCisgICAgICAgICAgICAgICAg
ICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKCp2YWx1ZSk7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+
c2V0VGV4dEVtcGhhc2lzTWFyaygqdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsobnVsbEF0b20pOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF2YWx1ZS0+aXNQ
cmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKTsKKworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzU3RyaW5nKCkpIHsKKyAg
ICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBo
YXNpc0ZpbGxGaWxsZWQpOworICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRF
bXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFya0N1c3RvbSk7CisgICAgICAgICAgICBzZWxlY3Rv
ci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhwcmltaXRpdmVWYWx1ZS0+Z2V0
U3RyaW5nVmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSk7
CisKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRmls
bGVkIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlT3BlbikgeworICAg
ICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwoKnByaW1pdGl2
ZVZhbHVlKTsKKyAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNN
YXJrKFRleHRFbXBoYXNpc01hcmtBdXRvKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGxG
aWxsZWQpOworICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc01h
cmsoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBQcm9w
ZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFByb3BlcnR5SGFuZGxlcigmYXBw
bHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFsdWUpOyB9Cit9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKKyAgICAgICAgICBUIChBbmltYXRpb246OipnZXR0ZXJG
dW5jdGlvbikoKSBjb25zdCwKKyAgICAgICAgICB2b2lkIChBbmltYXRpb246OipzZXR0ZXJGdW5j
dGlvbikoVCksCisgICAgICAgICAgYm9vbCAoQW5pbWF0aW9uOjoqdGVzdEZ1bmN0aW9uKSgpIGNv
bnN0LAorICAgICAgICAgIHZvaWQgKEFuaW1hdGlvbjo6KmNsZWFyRnVuY3Rpb24pKCksCisgICAg
ICAgICAgVCAoKmluaXRpYWxGdW5jdGlvbikoKSwKKyAgICAgICAgICB2b2lkIChDU1NTdHlsZVNl
bGVjdG9yOjoqbWFwRnVuY3Rpb24pKEFuaW1hdGlvbiosIENTU1ZhbHVlKiksCisgICAgICAgICAg
QW5pbWF0aW9uTGlzdCogKFJlbmRlclN0eWxlOjoqYW5pbWF0aW9uR2V0dGVyRnVuY3Rpb24pKCks
CisgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogKFJlbmRlclN0eWxlOjoqaW1tdXRhYmxl
QW5pbWF0aW9uR2V0dGVyRnVuY3Rpb24pKCkgY29uc3Q+CitjbGFzcyBBcHBseVByb3BlcnR5QW5p
bWF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZShBbmltYXRpb24qIGFu
aW1hdGlvbiwgVCB2YWx1ZSkgeyAoYW5pbWF0aW9uLT4qc2V0dGVyRnVuY3Rpb24pKHZhbHVlKTsg
fQorICAgIHN0YXRpYyBUIHZhbHVlKGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uKSB7IHJldHVy
biAoYW5pbWF0aW9uLT4qZ2V0dGVyRnVuY3Rpb24pKCk7IH0KKyAgICBzdGF0aWMgYm9vbCB0ZXN0
KGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uKSB7IHJldHVybiAoYW5pbWF0aW9uLT4qdGVzdEZ1
bmN0aW9uKSgpOyB9CisgICAgc3RhdGljIHZvaWQgY2xlYXIoQW5pbWF0aW9uKiBhbmltYXRpb24p
IHsgKGFuaW1hdGlvbi0+KmNsZWFyRnVuY3Rpb24pKCk7IH0KKyAgICBzdGF0aWMgVCBpbml0aWFs
KCkgeyByZXR1cm4gKCppbml0aWFsRnVuY3Rpb24pKCk7IH0KKyAgICBzdGF0aWMgdm9pZCBtYXAo
Q1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1
ZSogdmFsdWUpIHsgKHNlbGVjdG9yLT4qbWFwRnVuY3Rpb24pKGFuaW1hdGlvbiwgdmFsdWUpOyB9
CisgICAgc3RhdGljIEFuaW1hdGlvbkxpc3QqIGFjY2Vzc0FuaW1hdGlvbnMoUmVuZGVyU3R5bGUq
IHN0eWxlKSB7IHJldHVybiAoc3R5bGUtPiphbmltYXRpb25HZXR0ZXJGdW5jdGlvbikoKTsgfQor
ICAgIHN0YXRpYyBjb25zdCBBbmltYXRpb25MaXN0KiBhbmltYXRpb25zKFJlbmRlclN0eWxlKiBz
dHlsZSkgeyByZXR1cm4gKHN0eWxlLT4qaW1tdXRhYmxlQW5pbWF0aW9uR2V0dGVyRnVuY3Rpb24p
KCk7IH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0
b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IGFjY2Vz
c0FuaW1hdGlvbnMoc2VsZWN0b3ItPnN0eWxlKCkpOworICAgICAgICBjb25zdCBBbmltYXRpb25M
aXN0KiBwYXJlbnRMaXN0ID0gYW5pbWF0aW9ucyhzZWxlY3Rvci0+cGFyZW50U3R5bGUoKSk7Cisg
ICAgICAgIHNpemVfdCBpID0gMCwgcGFyZW50U2l6ZSA9IHBhcmVudExpc3QgPyBwYXJlbnRMaXN0
LT5zaXplKCkgOiAwOworICAgICAgICBmb3IgKCA7IGkgPCBwYXJlbnRTaXplICYmIHRlc3QocGFy
ZW50TGlzdC0+YW5pbWF0aW9uKGkpKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobGlzdC0+c2l6
ZSgpIDw9IGkpCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRl
KCkpOworICAgICAgICAgICAgc2V0VmFsdWUobGlzdC0+YW5pbWF0aW9uKGkpLCB2YWx1ZShwYXJl
bnRMaXN0LT5hbmltYXRpb24oaSkpKTsKKyAgICAgICAgICAgIGxpc3QtPmFuaW1hdGlvbihpKS0+
c2V0QW5pbWF0aW9uTW9kZShwYXJlbnRMaXN0LT5hbmltYXRpb24oaSktPmFuaW1hdGlvbk1vZGUo
KSk7CisgICAgICAgIH0KKworICAgICAgICAvKiBSZXNldCBhbnkgcmVtYWluaW5nIGFuaW1hdGlv
bnMgdG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8KKyAgICAgICAgZm9yICggOyBpIDwg
bGlzdC0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBjbGVhcihsaXN0LT5hbmltYXRpb24oaSkp
OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IGFj
Y2Vzc0FuaW1hdGlvbnMoc2VsZWN0b3ItPnN0eWxlKCkpOworICAgICAgICBpZiAobGlzdC0+aXNF
bXB0eSgpKQorICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOwor
ICAgICAgICBzZXRWYWx1ZShsaXN0LT5hbmltYXRpb24oMCksIGluaXRpYWwoKSk7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbGlzdC0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBj
bGVhcihsaXN0LT5hbmltYXRpb24oaSkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5
VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICB7
CisgICAgICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBhY2Nlc3NBbmltYXRpb25zKHNlbGVjdG9y
LT5zdHlsZSgpKTsKKyAgICAgICAgc2l6ZV90IGNoaWxkSW5kZXggPSAwOworICAgICAgICBpZiAo
dmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKKyAgICAgICAgICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBh
bmQgcHV0IGl0IGludG8gYW4gYW5pbWF0aW9uLCBjcmVhdGluZyBuZXcgYW5pbWF0aW9ucyBhcyBu
ZWVkZWQuICovCisgICAgICAgICAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkgPSB2YWx1
ZTsgaS5oYXNNb3JlKCk7IGkuYWR2YW5jZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxk
SW5kZXggPD0gbGlzdC0+c2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
QW5pbWF0aW9uOjpjcmVhdGUoKSk7CisgICAgICAgICAgICAgICAgbWFwKHNlbGVjdG9yLCBsaXN0
LT5hbmltYXRpb24oY2hpbGRJbmRleCksIGkudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgKytj
aGlsZEluZGV4OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aWYgKGxpc3QtPmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0
aW9uOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBtYXAoc2VsZWN0b3IsIGxpc3QtPmFuaW1hdGlv
bihjaGlsZEluZGV4KSwgdmFsdWUpOworICAgICAgICAgICAgY2hpbGRJbmRleCA9IDE7CisgICAg
ICAgIH0KKyAgICAgICAgZm9yICggOyBjaGlsZEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2NoaWxk
SW5kZXgpIHsKKyAgICAgICAgICAgIC8qIFJlc2V0IGFsbCByZW1haW5pbmcgYW5pbWF0aW9ucyB0
byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLworICAgICAgICAgICAgY2xlYXIobGlzdC0+
YW5pbWF0aW9uKGNoaWxkSW5kZXgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBQ
cm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFByb3BlcnR5SGFuZGxlcigm
YXBwbHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFsdWUpOyB9Cit9
OworCitjbGFzcyBBcHBseVByb3BlcnR5T3V0bGluZVN0eWxlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAg
ICB7CisgICAgICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxPdXRsaW5lSXNBdXRvLCAmUmVu
ZGVyU3R5bGU6Om91dGxpbmVTdHlsZUlzQXV0bywgT3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxl
OjpzZXRPdXRsaW5lU3R5bGVJc0F1dG8sIE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6aW5p
dGlhbE91dGxpbmVTdHlsZUlzQXV0bz46OmFwcGx5SW5oZXJpdFZhbHVlKHNlbGVjdG9yKTsKKyAg
ICAgICAgQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxl
OjpvdXRsaW5lU3R5bGUsIEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lU3R5
bGUsIEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGU+OjphcHBs
eUluaGVyaXRWYWx1ZShzZWxlY3Rvcik7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYXBwbHlJ
bml0aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgeworICAgICAgICBB
cHBseVByb3BlcnR5RGVmYXVsdEJhc2U8T3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjpvdXRs
aW5lU3R5bGVJc0F1dG8sIE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVN0
eWxlSXNBdXRvLCBPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxPdXRsaW5lU3R5
bGVJc0F1dG8+OjphcHBseUluaXRpYWxWYWx1ZShzZWxlY3Rvcik7CisgICAgICAgIEFwcGx5UHJv
cGVydHlEZWZhdWx0QmFzZTxFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6b3V0bGluZVN0eWxl
LCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVN0eWxlLCBFQm9yZGVyU3R5
bGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlPjo6YXBwbHlJbml0aWFsVmFsdWUo
c2VsZWN0b3IpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVT
ZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFwcGx5
UHJvcGVydHlEZWZhdWx0PE91dGxpbmVJc0F1dG8sICZSZW5kZXJTdHlsZTo6b3V0bGluZVN0eWxl
SXNBdXRvLCBPdXRsaW5lSXNBdXRvLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVTdHlsZUlzQXV0
bywgT3V0bGluZUlzQXV0bywgJlJlbmRlclN0eWxlOjppbml0aWFsT3V0bGluZVN0eWxlSXNBdXRv
Pjo6YXBwbHlWYWx1ZShzZWxlY3RvciwgdmFsdWUpOworICAgICAgICBBcHBseVByb3BlcnR5RGVm
YXVsdDxFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6b3V0bGluZVN0eWxlLCBFQm9yZGVyU3R5
bGUsICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJT
dHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlPjo6YXBwbHlWYWx1ZShzZWxlY3RvciwgdmFsdWUpOwor
ICAgIH0KKworICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0
dXJuIFByb3BlcnR5SGFuZGxlcigmYXBwbHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1
ZSwgJmFwcGx5VmFsdWUpOyB9Cit9OworCitjbGFzcyBBcHBseVByb3BlcnR5UmVzaXplIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVj
dG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisKKyAgICAgICAgRVJlc2l6ZSByID0gUkVTSVpFX05PTkU7CisgICAgICAgIHN3aXRj
aCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKKyAgICAgICAgICAgIGlm
IChTZXR0aW5ncyogc2V0dGluZ3MgPSBzZWxlY3Rvci0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkK
KyAgICAgICAgICAgICAgICByID0gc2V0dGluZ3MtPnRleHRBcmVhc0FyZVJlc2l6YWJsZSgpID8g
UkVTSVpFX0JPVEggOiBSRVNJWkVfTk9ORTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgciA9ICpwcmltaXRpdmVWYWx1ZTsKKyAgICAgICAgfQorICAg
ICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0UmVzaXplKHIpOworICAgIH0KKworICAgIHN0YXRp
YyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCisgICAgeworICAgICAgICBQcm9wZXJ0
eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxFUmVzaXplLCAmUmVu
ZGVyU3R5bGU6OnJlc2l6ZSwgRVJlc2l6ZSwgJlJlbmRlclN0eWxlOjpzZXRSZXNpemUsIEVSZXNp
emUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFJlc2l6ZT46OmNyZWF0ZUhhbmRsZXIoKTsKKyAgICAg
ICAgcmV0dXJuIFByb3BlcnR5SGFuZGxlcihoYW5kbGVyLmluaGVyaXRGdW5jdGlvbigpLCBoYW5k
bGVyLmluaXRpYWxGdW5jdGlvbigpLCAmYXBwbHlWYWx1ZSk7CisgICAgfQorfTsKKworY2xhc3Mg
QXBwbHlQcm9wZXJ0eVZlcnRpY2FsQWxpZ24geworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGFw
cGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKworICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkpCisgICAgICAgICAgICByZXR1cm4gc2VsZWN0b3ItPnN0
eWxlKCktPnNldFZlcnRpY2FsQWxpZ24oKnByaW1pdGl2ZVZhbHVlKTsKKworICAgICAgICBzZWxl
Y3Rvci0+c3R5bGUoKS0+c2V0VmVydGljYWxBbGlnbkxlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29u
dmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8
IENhbGN1bGF0ZWRDb252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdlQ29udmVyc2lvbj4oc2Vs
ZWN0b3ItPnN0eWxlKCksIHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCksIHNlbGVjdG9yLT5z
dHlsZSgpLT5lZmZlY3RpdmVab29tKCkpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUHJvcGVydHlI
YW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQorICAgIHsKKyAgICAgICAgUHJvcGVydHlIYW5kbGVyIGhh
bmRsZXIgPSBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8RVZlcnRpY2FsQWxpZ24sICZSZW5kZXJT
dHlsZTo6dmVydGljYWxBbGlnbiwgRVZlcnRpY2FsQWxpZ24sICZSZW5kZXJTdHlsZTo6c2V0VmVy
dGljYWxBbGlnbiwgRVZlcnRpY2FsQWxpZ24sICZSZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2Fs
QWxpZ24+OjpjcmVhdGVIYW5kbGVyKCk7CisgICAgICAgIHJldHVybiBQcm9wZXJ0eUhhbmRsZXIo
aGFuZGxlci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFsRnVuY3Rpb24oKSwgJmFw
cGx5VmFsdWUpOworICAgIH0KK307CisKK2NsYXNzIEFwcGx5UHJvcGVydHlBc3BlY3RSYXRpbyB7
CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVTZWxl
Y3Rvciogc2VsZWN0b3IpCisgICAgeworICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJlbnRTdHls
ZSgpLT5oYXNBc3BlY3RSYXRpbygpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzZWxl
Y3Rvci0+c3R5bGUoKS0+c2V0SGFzQXNwZWN0UmF0aW8odHJ1ZSk7CisgICAgICAgIHNlbGVjdG9y
LT5zdHlsZSgpLT5zZXRBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKHNlbGVjdG9yLT5wYXJlbnRTdHls
ZSgpLT5hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkpOworICAgICAgICBzZWxlY3Rvci0+c3R5bGUo
KS0+c2V0QXNwZWN0UmF0aW9OdW1lcmF0b3Ioc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPmFzcGVj
dFJhdGlvTnVtZXJhdG9yKCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlh
bFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgc2VsZWN0
b3ItPnN0eWxlKCktPnNldEhhc0FzcGVjdFJhdGlvKFJlbmRlclN0eWxlOjppbml0aWFsSGFzQXNw
ZWN0UmF0aW8oKSk7CisgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRBc3BlY3RSYXRpb0Rl
bm9taW5hdG9yKFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9EZW5vbWluYXRvcigpKTsK
KyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEFzcGVjdFJhdGlvTnVtZXJhdG9yKFJlbmRl
clN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IoKSk7CisgICAgfQorCisgICAgc3Rh
dGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUq
IHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZS0+aXNBc3BlY3RSYXRpb1ZhbHVlKCkp
IHsKKyAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRIYXNBc3BlY3RSYXRpbyhmYWxz
ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQ1NTQXNwZWN0UmF0
aW9WYWx1ZSogYXNwZWN0UmF0aW9WYWx1ZSA9IHN0YXRpY19jYXN0PENTU0FzcGVjdFJhdGlvVmFs
dWUqPih2YWx1ZSk7CisgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRIYXNBc3BlY3RSYXRp
byh0cnVlKTsKKyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEFzcGVjdFJhdGlvRGVub21p
bmF0b3IoYXNwZWN0UmF0aW9WYWx1ZS0+ZGVub21pbmF0b3JWYWx1ZSgpKTsKKyAgICAgICAgc2Vs
ZWN0b3ItPnN0eWxlKCktPnNldEFzcGVjdFJhdGlvTnVtZXJhdG9yKGFzcGVjdFJhdGlvVmFsdWUt
Pm51bWVyYXRvclZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIg
Y3JlYXRlSGFuZGxlcigpCisgICAgeworICAgICAgICByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZh
cHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7CisgICAg
fQorfTsKKworY2xhc3MgQXBwbHlQcm9wZXJ0eVpvb20geworcHJpdmF0ZToKKyAgICBzdGF0aWMg
dm9pZCByZXNldEVmZmVjdGl2ZVpvb20oQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAg
eworICAgICAgICAvLyBSZXNldCB0aGUgem9vbSBpbiBlZmZlY3QuIFRoaXMgYWxsb3dzIHRoZSBz
ZXRab29tIG1ldGhvZCB0byBhY2N1cmF0ZWx5IGNvbXB1dGUgYSBuZXcgem9vbSBpbiBlZmZlY3Qu
CisgICAgICAgIHNlbGVjdG9yLT5zZXRFZmZlY3RpdmVab29tKHNlbGVjdG9yLT5wYXJlbnRTdHls
ZSgpID8gc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSA6IFJlbmRlclN0
eWxlOjppbml0aWFsWm9vbSgpKTsKKyAgICB9CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBh
cHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICB7CisgICAg
ICAgIHJlc2V0RWZmZWN0aXZlWm9vbShzZWxlY3Rvcik7CisgICAgICAgIHNlbGVjdG9yLT5zZXRa
b29tKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT56b29tKCkpOworICAgIH0KKworICAgIHN0YXRp
YyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAg
IHsKKyAgICAgICAgcmVzZXRFZmZlY3RpdmVab29tKHNlbGVjdG9yKTsKKyAgICAgICAgc2VsZWN0
b3ItPnNldFpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOworICAgIH0KKworICAgIHN0
YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVl
KiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9ybWFsKSB7CisgICAgICAgICAgICByZXNldEVm
ZmVjdGl2ZVpvb20oc2VsZWN0b3IpOworICAgICAgICAgICAgc2VsZWN0b3ItPnNldFpvb20oUmVu
ZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOworICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlUmVzZXQpIHsKKyAgICAgICAgICAgIHNlbGVjdG9y
LT5zZXRFZmZlY3RpdmVab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKKyAgICAgICAg
ICAgIHNlbGVjdG9yLT5zZXRab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZURvY3Vt
ZW50KSB7CisgICAgICAgICAgICBmbG9hdCBkb2Nab29tID0gc2VsZWN0b3ItPnJvb3RFbGVtZW50
U3R5bGUoKSA/IHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCktPnpvb20oKSA6IFJlbmRlclN0
eWxlOjppbml0aWFsWm9vbSgpOworICAgICAgICAgICAgc2VsZWN0b3ItPnNldEVmZmVjdGl2ZVpv
b20oZG9jWm9vbSk7CisgICAgICAgICAgICBzZWxlY3Rvci0+c2V0Wm9vbShkb2Nab29tKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50YWdlKCkpIHsKKyAgICAg
ICAgICAgIHJlc2V0RWZmZWN0aXZlWm9vbShzZWxlY3Rvcik7CisgICAgICAgICAgICBpZiAoZmxv
YXQgcGVyY2VudCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpCisgICAgICAgICAg
ICAgICAgc2VsZWN0b3ItPnNldFpvb20ocGVyY2VudCAvIDEwMC4wZik7CisgICAgICAgIH0gZWxz
ZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIHJlc2V0RWZm
ZWN0aXZlWm9vbShzZWxlY3Rvcik7CisgICAgICAgICAgICBpZiAoZmxvYXQgbnVtYmVyID0gcHJp
bWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSkKKyAgICAgICAgICAgICAgICBzZWxlY3Rvci0+
c2V0Wm9vbShudW1iZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIFByb3BlcnR5
SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBQcm9wZXJ0eUhh
bmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFsVmFsdWUsICZhcHBseVZhbHVl
KTsKKyAgICB9Cit9OworCitjbGFzcyBBcHBseVByb3BlcnR5RGlzcGxheSB7Citwcml2YXRlOgor
ICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkRGlzcGxheVZhbHVlKENTU1N0eWxlU2VsZWN0
b3IqIHNlbGVjdG9yLCBFRGlzcGxheSBkaXNwbGF5UHJvcGVydHlWYWx1ZSkKKyAgICB7CisjaWYg
RU5BQkxFKFNWRykKKyAgICAgICAgaWYgKHNlbGVjdG9yLT5lbGVtZW50KCkgJiYgc2VsZWN0b3It
PmVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkgJiYgc2VsZWN0b3ItPnN0eWxlKCktPnN0eWxlVHlw
ZSgpID09IE5PUFNFVURPKQorICAgICAgICAgICAgcmV0dXJuIChkaXNwbGF5UHJvcGVydHlWYWx1
ZSA9PSBJTkxJTkUgfHwgZGlzcGxheVByb3BlcnR5VmFsdWUgPT0gQkxPQ0sgfHwgZGlzcGxheVBy
b3BlcnR5VmFsdWUgPT0gTk9ORSk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oc2VsZWN0
b3IpOworICAgICAgICBVTlVTRURfUEFSQU0oZGlzcGxheVByb3BlcnR5VmFsdWUpOworI2VuZGlm
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBh
cHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICB7CisgICAg
ICAgIEVEaXNwbGF5IGRpc3BsYXkgPSBzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+ZGlzcGxheSgp
OworICAgICAgICBpZiAoIWlzVmFsaWREaXNwbGF5VmFsdWUoc2VsZWN0b3IsIGRpc3BsYXkpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0RGlzcGxh
eShkaXNwbGF5KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShD
U1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICB7CisgICAgICAgIHNlbGVjdG9yLT5zdHls
ZSgpLT5zZXREaXNwbGF5KFJlbmRlclN0eWxlOjppbml0aWFsRGlzcGxheSgpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBD
U1NWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgRURpc3BsYXkgZGlzcGxheSA9
ICpzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKworICAgICAgICBpZiAo
IWlzVmFsaWREaXNwbGF5VmFsdWUoc2VsZWN0b3IsIGRpc3BsYXkpKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXREaXNwbGF5KGRpc3BsYXkpOwor
ICAgIH0KKworICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCisgICAg
eworICAgICAgICByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFw
cGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7CisgICAgfQorfTsKKworY2xhc3MgQXBwbHlQ
cm9wZXJ0eUZsZXggeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVl
KENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgQXBwbHlQcm9wZXJ0
eURlZmF1bHRCYXNlPGZsb2F0LCAmUmVuZGVyU3R5bGU6OnBvc2l0aXZlRmxleCwgZmxvYXQsICZS
ZW5kZXJTdHlsZTo6c2V0UG9zaXRpdmVGbGV4LCBmbG9hdCwgJlJlbmRlclN0eWxlOjppbml0aWFs
TmVnYXRpdmVGbGV4Pjo6YXBwbHlJbmhlcml0VmFsdWUoc2VsZWN0b3IpOworICAgICAgICBBcHBs
eVByb3BlcnR5RGVmYXVsdEJhc2U8ZmxvYXQsICZSZW5kZXJTdHlsZTo6bmVnYXRpdmVGbGV4LCBm
bG9hdCwgJlJlbmRlclN0eWxlOjpzZXROZWdhdGl2ZUZsZXgsIGZsb2F0LCAmUmVuZGVyU3R5bGU6
OmluaXRpYWxQb3NpdGl2ZUZsZXg+OjphcHBseUluaGVyaXRWYWx1ZShzZWxlY3Rvcik7CisgICAg
ICAgIEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxMZW5ndGgsICZSZW5kZXJTdHlsZTo6ZmxleFBy
ZWZlcnJlZFNpemUsIExlbmd0aCwgJlJlbmRlclN0eWxlOjpzZXRGbGV4UHJlZmVycmVkU2l6ZSwg
TGVuZ3RoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4UHJlZmVycmVkU2l6ZT46OmFwcGx5SW5o
ZXJpdFZhbHVlKHNlbGVjdG9yKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRp
YWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICB7CisgICAgICAgIHNlbGVj
dG9yLT5zdHlsZSgpLT5zZXRQb3NpdGl2ZUZsZXgoUmVuZGVyU3R5bGU6OmluaXRpYWxQb3NpdGl2
ZUZsZXgoKSk7CisgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXROZWdhdGl2ZUZsZXgoUmVu
ZGVyU3R5bGU6OmluaXRpYWxOZWdhdGl2ZUZsZXgoKSk7CisgICAgICAgIHNlbGVjdG9yLT5zdHls
ZSgpLT5zZXRGbGV4UHJlZmVycmVkU2l6ZShSZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhQcmVmZXJy
ZWRTaXplKCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5bGVT
ZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICh2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVl
KTsKKyAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1
ZU5vbmUpCisgICAgICAgICAgICAgICAgYXBwbHlJbml0aWFsVmFsdWUoc2VsZWN0b3IpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1
ZUxpc3QoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiB2YWx1
ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAgICAgIGlmICh2
YWx1ZUxpc3QtPmxlbmd0aCgpICE9IDMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ZmxvYXQgZmxleFZhbHVlID0gMDsKKyAgICAgICAgaWYgKCFnZXRGbGV4VmFsdWUodmFsdWVMaXN0
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApLCBmbGV4VmFsdWUpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0UG9zaXRpdmVGbGV4KGZsZXhWYWx1
ZSk7CisKKyAgICAgICAgaWYgKCFnZXRGbGV4VmFsdWUodmFsdWVMaXN0LT5pdGVtV2l0aG91dEJv
dW5kc0NoZWNrKDEpLCBmbGV4VmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBz
ZWxlY3Rvci0+c3R5bGUoKS0+c2V0TmVnYXRpdmVGbGV4KGZsZXhWYWx1ZSk7CisKKyAgICAgICAg
QXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6OmZsZXhQcmVmZXJyZWRTaXplLCAmUmVu
ZGVyU3R5bGU6OnNldEZsZXhQcmVmZXJyZWRTaXplLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4
UHJlZmVycmVkU2l6ZSwgQXV0b0VuYWJsZWQ+OjphcHBseVZhbHVlKHNlbGVjdG9yLCB2YWx1ZUxp
c3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOworICAgIH0KKworICAgIHN0YXRpYyBQcm9w
ZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCisgICAgeworICAgICAgICByZXR1cm4gUHJvcGVy
dHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlW
YWx1ZSk7CisgICAgfQorcHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCBnZXRGbGV4VmFsdWUoQ1NT
VmFsdWUqIHZhbHVlLCBmbG9hdCYgZmxleFZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZS0+aXNOdW1i
ZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZmxleFZhbHVlID0gcHJp
bWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCit9OworCitjb25zdCBTdHlsZUJ1aWxkZXImIFN0eWxlQnVpbGRlcjo6c2hhcmVkU3R5bGVC
dWlsZGVyKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0eWxlQnVpbGRlciwgc3R5bGVC
dWlsZGVySW5zdGFuY2UsICgpKTsKKyAgICByZXR1cm4gc3R5bGVCdWlsZGVySW5zdGFuY2U7Cit9
CisKK1N0eWxlQnVpbGRlcjo6U3R5bGVCdWlsZGVyKCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bUNTU1Byb3BlcnRpZXM7ICsraSkKKyAgICAgICAgbV9wcm9wZXJ0eU1hcFtpXSA9IFBy
b3BlcnR5SGFuZGxlcigpOworCisgICAgLy8gUGxlYXNlIGtlZXAgQ1NTIHByb3BlcnR5IGxpc3Qg
aW4gYWxwaGFiZXRpY2FsIG9yZGVyLgorICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eUJhY2tncm91bmRBdHRhY2htZW50LCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQXR0YWNo
bWVudCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgQmFja2dyb3VuZEZpbGxMYXll
ciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJh
Y2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzQXR0YWNobWVudFNldCwgJkZpbGxMYXllcjo6
YXR0YWNobWVudCwgJkZpbGxMYXllcjo6c2V0QXR0YWNobWVudCwgJkZpbGxMYXllcjo6Y2xlYXJB
dHRhY2htZW50LCAmRmlsbExheWVyOjppbml0aWFsRmlsbEF0dGFjaG1lbnQsICZDU1NTdHlsZVNl
bGVjdG9yOjptYXBGaWxsQXR0YWNobWVudD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsIEFwcGx5UHJvcGVydHlGaWxs
TGF5ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsIEJhY2tncm91bmRGaWxs
TGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxl
OjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0NsaXBTZXQsICZGaWxsTGF5ZXI6OmNs
aXAsICZGaWxsTGF5ZXI6OnNldENsaXAsICZGaWxsTGF5ZXI6OmNsZWFyQ2xpcCwgJkZpbGxMYXll
cjo6aW5pdGlhbEZpbGxDbGlwLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbENsaXA+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvciwgQXBwbHlQcm9wZXJ0eUNvbG9yPE5vSW5oZXJpdEZyb21QYXJlbnQsICZSZW5kZXJT
dHlsZTo6YmFja2dyb3VuZENvbG9yLCAmUmVuZGVyU3R5bGU6OnNldEJhY2tncm91bmRDb2xvciwg
JlJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvciwgJlJlbmRlclN0eWxl
OjppbnZhbGlkQ29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxTdHls
ZUltYWdlKiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIEJhY2tncm91bmRGaWxsTGF5ZXIs
ICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNr
Z3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0ltYWdlU2V0LCAmRmlsbExheWVyOjppbWFnZSwg
JkZpbGxMYXllcjo6c2V0SW1hZ2UsICZGaWxsTGF5ZXI6OmNsZWFySW1hZ2UsICZGaWxsTGF5ZXI6
OmluaXRpYWxGaWxsSW1hZ2UsICZDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsSW1hZ2U+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRPcmlnaW4sIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5QmFj
a2dyb3VuZE9yaWdpbiwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NC
YWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5
ZXI6OmlzT3JpZ2luU2V0LCAmRmlsbExheWVyOjpvcmlnaW4sICZGaWxsTGF5ZXI6OnNldE9yaWdp
biwgJkZpbGxMYXllcjo6Y2xlYXJPcmlnaW4sICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsT3JpZ2lu
LCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbE9yaWdpbj46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uLCBBcHBs
eVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZPjo6Y3JlYXRlSGFuZGxlcigp
KTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25Y
LCBBcHBseVByb3BlcnR5RmlsbExheWVyPExlbmd0aCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25YLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91
bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNY
UG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0
aW9uLCAmRmlsbExheWVyOjpjbGVhclhQb3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxY
UG9zaXRpb24sICZDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsWFBvc2l0aW9uPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25ZLCBBcHBseVByb3BlcnR5RmlsbExheWVyPExlbmd0aCwgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUG9zaXRpb25ZLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0Jh
Y2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXll
cjo6aXNZUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0
WVBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVhcllQb3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlh
bEZpbGxZUG9zaXRpb24sICZDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsWVBvc2l0aW9uPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUmVwZWF0LCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXRYLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXRYLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFj
Y2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZp
bGxMYXllcjo6aXNSZXBlYXRYU2V0LCAmRmlsbExheWVyOjpyZXBlYXRYLCAmRmlsbExheWVyOjpz
ZXRSZXBlYXRYLCAmRmlsbExheWVyOjpjbGVhclJlcGVhdFgsICZGaWxsTGF5ZXI6OmluaXRpYWxG
aWxsUmVwZWF0WCwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxSZXBlYXRYPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVw
ZWF0WSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0WSwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NC
YWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5
ZXI6OmlzUmVwZWF0WVNldCwgJkZpbGxMYXllcjo6cmVwZWF0WSwgJkZpbGxMYXllcjo6c2V0UmVw
ZWF0WSwgJkZpbGxMYXllcjo6Y2xlYXJSZXBlYXRZLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFJl
cGVhdFksICZDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsUmVwZWF0WT46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIEFw
cGx5UHJvcGVydHlGaWxsTGF5ZXI8RmlsbFNpemUsIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUs
IEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVy
cywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc1NpemVTZXQs
ICZGaWxsTGF5ZXI6OnNpemUsICZGaWxsTGF5ZXI6OnNldFNpemUsICZGaWxsTGF5ZXI6OmNsZWFy
U2l6ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxTaXplLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFw
RmlsbFNpemU+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eUJvcmRlciwgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQ
cm9wZXJ0eUJvcmRlclN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBDU1NQcm9wZXJ0eUJv
cmRlckNvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b20sIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1
ZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21T
dHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aD46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIEFwcGx5
UHJvcGVydHlDb2xvcjxOb0luaGVyaXRGcm9tUGFyZW50LCAmUmVuZGVyU3R5bGU6OmJvcmRlckJv
dHRvbUNvbG9yLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbUNvbG9yLCAmUmVuZGVyU3R5
bGU6OnNldFZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IsICZSZW5kZXJTdHlsZTo6Y29sb3I+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbUxlZnRSYWRpdXMsIEFwcGx5UHJvcGVydHlCb3JkZXJSYWRpdXM8JlJlbmRlclN0
eWxlOjpib3JkZXJCb3R0b21MZWZ0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRv
bUxlZnRSYWRpdXMsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclJhZGl1cz46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
UmlnaHRSYWRpdXMsIEFwcGx5UHJvcGVydHlCb3JkZXJSYWRpdXM8JlJlbmRlclN0eWxlOjpib3Jk
ZXJCb3R0b21SaWdodFJhZGl1cywgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21SaWdodFJh
ZGl1cywgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyUmFkaXVzPjo6Y3JlYXRlSGFuZGxlcigp
KTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwg
QXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJvcmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OmJvcmRlckJv
dHRvbVN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tU3R5
bGUsIEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGU+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCwgJlJlbmRlclN0
eWxlOjpib3JkZXJCb3R0b21XaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21XaWR0
aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgsIE5vcm1hbERpc2FibGVkLCBUaGlj
a25lc3NFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJvcmRlckNv
bGxhcHNlLCAmUmVuZGVyU3R5bGU6OmJvcmRlckNvbGxhcHNlLCBFQm9yZGVyQ29sbGFwc2UsICZS
ZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQ29sbGFwc2UsIEVCb3JkZXJDb2xsYXBzZSwgJlJlbmRlclN0
eWxlOjppbml0aWFsQm9yZGVyQ29sbGFwc2U+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBBcHBseVByb3BlcnR5RXhwYW5k
aW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0Q29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHBy
ZXNzVmFsdWUsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2UsIENTU1Byb3BlcnR5Qm9yZGVy
SW1hZ2VTbGljZSwgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRl
ckltYWdlT3V0c2V0LCBDU1NQcm9wZXJ0eUJvcmRlckltYWdlUmVwZWF0Pjo6Y3JlYXRlSGFuZGxl
cigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNl
dCwgQXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI8SW1hZ2UsIE91dHNldD46OmNyZWF0
ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2VSZXBlYXQsIEFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlmaWVyPEltYWdlLCBSZXBlYXQ+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJv
cmRlckltYWdlU2xpY2UsIEFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlmaWVyPEltYWdlLCBT
bGljZT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5Qm9yZGVySW1hZ2VTb3VyY2UsIEFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZTxDU1NQ
cm9wZXJ0eUJvcmRlckltYWdlU291cmNlLCAmUmVuZGVyU3R5bGU6OmJvcmRlckltYWdlU291cmNl
LCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdlU291cmNlLCAmUmVuZGVyU3R5bGU6OmluaXRp
YWxCb3JkZXJJbWFnZVNvdXJjZT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VXaWR0aCwgQXBwbHlQcm9wZXJ0eUJvcmRlcklt
YWdlTW9kaWZpZXI8SW1hZ2UsIFdpZHRoPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0LCBBcHBseVByb3BlcnR5RXhwYW5kaW5n
PFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBDU1NQcm9wZXJ0eUJv
cmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGg+OjpjcmVhdGVIYW5kbGVy
KCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciwg
QXBwbHlQcm9wZXJ0eUNvbG9yPE5vSW5oZXJpdEZyb21QYXJlbnQsICZSZW5kZXJTdHlsZTo6Ym9y
ZGVyTGVmdENvbG9yLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckxlZnRDb2xvciwgJlJlbmRlclN0
eWxlOjpzZXRWaXNpdGVkTGlua0JvcmRlckxlZnRDb2xvciwgJlJlbmRlclN0eWxlOjpjb2xvcj46
OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFN0eWxlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFQm9yZGVyU3R5bGUsICZSZW5kZXJT
dHlsZTo6Ym9yZGVyTGVmdFN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0Qm9y
ZGVyTGVmdFN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0
eWxlPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0V2lkdGgsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkLCAm
UmVuZGVyU3R5bGU6OmJvcmRlckxlZnRXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJMZWZ0
V2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoLCBOb3JtYWxEaXNhYmxlZCwg
VGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPEV4cGFu
ZFZhbHVlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVy
VG9wUmlnaHRSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0
UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQsIEFwcGx5UHJvcGVydHlFeHBh
bmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLCBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aD46OmNyZWF0
ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyUmln
aHRDb2xvciwgQXBwbHlQcm9wZXJ0eUNvbG9yPE5vSW5oZXJpdEZyb21QYXJlbnQsICZSZW5kZXJT
dHlsZTo6Ym9yZGVyUmlnaHRDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJSaWdodENvbG9y
LCAmUmVuZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvciwgJlJlbmRlclN0
eWxlOjpjb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJvcmRlclN0
eWxlLCAmUmVuZGVyU3R5bGU6OmJvcmRlclJpZ2h0U3R5bGUsIEVCb3JkZXJTdHlsZSwgJlJlbmRl
clN0eWxlOjpzZXRCb3JkZXJSaWdodFN0eWxlLCBFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6
aW5pdGlhbEJvcmRlclN0eWxlPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxl
bmd0aDx1bnNpZ25lZCwgJlJlbmRlclN0eWxlOjpib3JkZXJSaWdodFdpZHRoLCAmUmVuZGVyU3R5
bGU6OnNldEJvcmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRo
LCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZywgQXBwbHlQcm9w
ZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6
b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZz46OmNy
ZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVy
U3R5bGUsIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlC
b3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZT46OmNyZWF0ZUhhbmRs
ZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBBcHBs
eVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29s
b3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGg+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJv
cmRlclRvcENvbG9yLCBBcHBseVByb3BlcnR5Q29sb3I8Tm9Jbmhlcml0RnJvbVBhcmVudCwgJlJl
bmRlclN0eWxlOjpib3JkZXJUb3BDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJUb3BDb2xv
ciwgJlJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0JvcmRlclRvcENvbG9yLCAmUmVuZGVyU3R5
bGU6OmNvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLCBBcHBseVByb3BlcnR5Qm9yZGVyUmFkaXVzPCZS
ZW5kZXJTdHlsZTo6Ym9yZGVyVG9wTGVmdFJhZGl1cywgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJU
b3BMZWZ0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJSYWRpdXM+OjpjcmVhdGVI
YW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclRvcFJp
Z2h0UmFkaXVzLCBBcHBseVByb3BlcnR5Qm9yZGVyUmFkaXVzPCZSZW5kZXJTdHlsZTo6Ym9yZGVy
VG9wUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMsICZS
ZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclJhZGl1cz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIEFwcGx5UHJvcGVy
dHlEZWZhdWx0PEVCb3JkZXJTdHlsZSwgJlJlbmRlclN0eWxlOjpib3JkZXJUb3BTdHlsZSwgRUJv
cmRlclN0eWxlLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlclRvcFN0eWxlLCBFQm9yZGVyU3R5bGUs
ICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgQXBwbHlQcm9w
ZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQsICZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9wV2lkdGgs
ICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyVG9wV2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJv
cmRlcldpZHRoLCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRs
ZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIEFw
cGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BX
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aD46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm90dG9tLCBBcHBseVByb3BlcnR5TGVu
Z3RoPCZSZW5kZXJTdHlsZTo6Ym90dG9tLCAmUmVuZGVyU3R5bGU6OnNldEJvdHRvbSwgJlJlbmRl
clN0eWxlOjppbml0aWFsT2Zmc2V0LCBBdXRvRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm94U2l6aW5nLCBBcHBseVByb3BlcnR5
RGVmYXVsdDxFQm94U2l6aW5nLCAmUmVuZGVyU3R5bGU6OmJveFNpemluZywgRUJveFNpemluZywg
JlJlbmRlclN0eWxlOjpzZXRCb3hTaXppbmcsIEVCb3hTaXppbmcsICZSZW5kZXJTdHlsZTo6aW5p
dGlhbEJveFNpemluZz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5Q2FwdGlvblNpZGUsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVDYXB0aW9uU2lk
ZSwgJlJlbmRlclN0eWxlOjpjYXB0aW9uU2lkZSwgRUNhcHRpb25TaWRlLCAmUmVuZGVyU3R5bGU6
OnNldENhcHRpb25TaWRlLCBFQ2FwdGlvblNpZGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbENhcHRp
b25TaWRlPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlDbGVhciwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUNsZWFyLCAmUmVuZGVyU3R5bGU6OmNs
ZWFyLCBFQ2xlYXIsICZSZW5kZXJTdHlsZTo6c2V0Q2xlYXIsIEVDbGVhciwgJlJlbmRlclN0eWxl
Ojppbml0aWFsQ2xlYXI+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eUNsaXAsIEFwcGx5UHJvcGVydHlDbGlwOjpjcmVhdGVIYW5kbGVyKCkpOwor
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUNvbG9yLCBBcHBseVByb3BlcnR5Q29s
b3I8SW5oZXJpdEZyb21QYXJlbnQsICZSZW5kZXJTdHlsZTo6Y29sb3IsICZSZW5kZXJTdHlsZTo6
c2V0Q29sb3IsICZSZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtDb2xvciwgJlJlbmRlclN0eWxl
OjppbnZhbGlkQ29sb3IsIFJlbmRlclN0eWxlOjppbml0aWFsQ29sb3I+OjpjcmVhdGVIYW5kbGVy
KCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQs
IEFwcGx5UHJvcGVydHlDb3VudGVyPEluY3JlbWVudD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Q291bnRlclJlc2V0LCBBcHBseVByb3BlcnR5
Q291bnRlcjxSZXNldD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5Q3Vyc29yLCBBcHBseVByb3BlcnR5Q3Vyc29yOjpjcmVhdGVIYW5kbGVyKCkp
OworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQXBwbHlQcm9w
ZXJ0eURpcmVjdGlvbjwmUmVuZGVyU3R5bGU6OmRpcmVjdGlvbiwgJlJlbmRlclN0eWxlOjpzZXRE
aXJlY3Rpb24sIFJlbmRlclN0eWxlOjppbml0aWFsRGlyZWN0aW9uPjo6Y3JlYXRlSGFuZGxlcigp
KTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlEaXNwbGF5LCBBcHBseVByb3Bl
cnR5RGlzcGxheTo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlFbXB0eUNlbGxzLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFRW1wdHlDZWxsLCAmUmVu
ZGVyU3R5bGU6OmVtcHR5Q2VsbHMsIEVFbXB0eUNlbGwsICZSZW5kZXJTdHlsZTo6c2V0RW1wdHlD
ZWxscywgRUVtcHR5Q2VsbCwgJlJlbmRlclN0eWxlOjppbml0aWFsRW1wdHlDZWxscz46OmNyZWF0
ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5RmxvYXQsIEFw
cGx5UHJvcGVydHlEZWZhdWx0PEVGbG9hdCwgJlJlbmRlclN0eWxlOjpmbG9hdGluZywgRUZsb2F0
LCAmUmVuZGVyU3R5bGU6OnNldEZsb2F0aW5nLCBFRmxvYXQsICZSZW5kZXJTdHlsZTo6aW5pdGlh
bEZsb2F0aW5nPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlGb250U2l6ZSwgQXBwbHlQcm9wZXJ0eUZvbnRTaXplOjpjcmVhdGVIYW5kbGVyKCkp
OworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgQXBwbHlQcm9w
ZXJ0eUZvbnQ8Rm9udEl0YWxpYywgJkZvbnREZXNjcmlwdGlvbjo6aXRhbGljLCAmRm9udERlc2Ny
aXB0aW9uOjpzZXRJdGFsaWMsIEZvbnRJdGFsaWNPZmY+OjpjcmVhdGVIYW5kbGVyKCkpOworICAg
IHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCBBcHBseVByb3BlcnR5
Rm9udDxGb250U21hbGxDYXBzLCAmRm9udERlc2NyaXB0aW9uOjpzbWFsbENhcHMsICZGb250RGVz
Y3JpcHRpb246OnNldFNtYWxsQ2FwcywgRm9udFNtYWxsQ2Fwc09mZj46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgQXBwbHlQ
cm9wZXJ0eUZvbnRXZWlnaHQ6OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5SGVpZ2h0LCBBcHBseVByb3BlcnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6
aGVpZ2h0LCAmUmVuZGVyU3R5bGU6OnNldEhlaWdodCwgJlJlbmRlclN0eWxlOjppbml0aWFsU2l6
ZSwgQXV0b0VuYWJsZWQsIEludHJpbnNpY0VuYWJsZWQsIE1pbkludHJpbnNpY0VuYWJsZWQsIE5v
bmVEaXNhYmxlZCwgVW5kZWZpbmVkRGlzYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nLCBBcHBseVByb3BlcnR5
RGVmYXVsdDxFSW1hZ2VSZW5kZXJpbmcsICZSZW5kZXJTdHlsZTo6aW1hZ2VSZW5kZXJpbmcsIEVJ
bWFnZVJlbmRlcmluZywgJlJlbmRlclN0eWxlOjpzZXRJbWFnZVJlbmRlcmluZywgRUltYWdlUmVu
ZGVyaW5nLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlbmRlcmluZz46OmNyZWF0ZUhhbmRs
ZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TGVmdCwgQXBwbHlQcm9w
ZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6OmxlZnQsICZSZW5kZXJTdHlsZTo6c2V0TGVmdCwgJlJl
bmRlclN0eWxlOjppbml0aWFsT2Zmc2V0LCBBdXRvRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7
CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZywgQXBwbHlQ
cm9wZXJ0eUNvbXB1dGVMZW5ndGg8aW50LCAmUmVuZGVyU3R5bGU6OmxldHRlclNwYWNpbmcsICZS
ZW5kZXJTdHlsZTo6c2V0TGV0dGVyU3BhY2luZywgJlJlbmRlclN0eWxlOjppbml0aWFsTGV0dGVy
V29yZFNwYWNpbmcsIE5vcm1hbEVuYWJsZWQsIFRoaWNrbmVzc0Rpc2FibGVkLCBTVkdab29tRW5h
YmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5TGluZUhlaWdodCwgQXBwbHlQcm9wZXJ0eUxpbmVIZWlnaHQ6OmNyZWF0ZUhhbmRsZXIoKSk7
CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TGlzdFN0eWxlLCBBcHBseVByb3Bl
cnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NT
UHJvcGVydHlMaXN0U3R5bGVJbWFnZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbj46OmNy
ZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TGlzdFN0
eWxlSW1hZ2UsIEFwcGx5UHJvcGVydHlTdHlsZUltYWdlPCZSZW5kZXJTdHlsZTo6bGlzdFN0eWxl
SW1hZ2UsICZSZW5kZXJTdHlsZTo6c2V0TGlzdFN0eWxlSW1hZ2UsICZSZW5kZXJTdHlsZTo6aW5p
dGlhbExpc3RTdHlsZUltYWdlLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3Np
dGlvbiwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUxpc3RTdHlsZVBvc2l0aW9uLCAmUmVuZGVyU3R5
bGU6Omxpc3RTdHlsZVBvc2l0aW9uLCBFTGlzdFN0eWxlUG9zaXRpb24sICZSZW5kZXJTdHlsZTo6
c2V0TGlzdFN0eWxlUG9zaXRpb24sIEVMaXN0U3R5bGVQb3NpdGlvbiwgJlJlbmRlclN0eWxlOjpp
bml0aWFsTGlzdFN0eWxlUG9zaXRpb24+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIEFwcGx5UHJvcGVydHlEZWZhdWx0
PEVMaXN0U3R5bGVUeXBlLCAmUmVuZGVyU3R5bGU6Omxpc3RTdHlsZVR5cGUsIEVMaXN0U3R5bGVU
eXBlLCAmUmVuZGVyU3R5bGU6OnNldExpc3RTdHlsZVR5cGUsIEVMaXN0U3R5bGVUeXBlLCAmUmVu
ZGVyU3R5bGU6OmluaXRpYWxMaXN0U3R5bGVUeXBlPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlNYXJnaW4sIEFwcGx5UHJvcGVydHlFeHBhbmRp
bmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2lu
UmlnaHQsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQ+Ojpj
cmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU1hcmdp
bkJvdHRvbSwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6Om1hcmdpbkJvdHRvbSwg
JlJlbmRlclN0eWxlOjpzZXRNYXJnaW5Cb3R0b20sICZSZW5kZXJTdHlsZTo6aW5pdGlhbE1hcmdp
biwgQXV0b0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxl
OjptYXJnaW5MZWZ0LCAmUmVuZGVyU3R5bGU6OnNldE1hcmdpbkxlZnQsICZSZW5kZXJTdHlsZTo6
aW5pdGlhbE1hcmdpbiwgQXV0b0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBBcHBseVByb3BlcnR5TGVuZ3Ro
PCZSZW5kZXJTdHlsZTo6bWFyZ2luUmlnaHQsICZSZW5kZXJTdHlsZTo6c2V0TWFyZ2luUmlnaHQs
ICZSZW5kZXJTdHlsZTo6aW5pdGlhbE1hcmdpbiwgQXV0b0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVy
KCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU1hcmdpblRvcCwgQXBwbHlQ
cm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6Om1hcmdpblRvcCwgJlJlbmRlclN0eWxlOjpzZXRN
YXJnaW5Ub3AsICZSZW5kZXJTdHlsZTo6aW5pdGlhbE1hcmdpbiwgQXV0b0VuYWJsZWQ+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU1heEhlaWdo
dCwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6Om1heEhlaWdodCwgJlJlbmRlclN0
eWxlOjpzZXRNYXhIZWlnaHQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbE1heFNpemUsIEF1dG9FbmFi
bGVkLCBJbnRyaW5zaWNFbmFibGVkLCBNaW5JbnRyaW5zaWNFbmFibGVkLCBOb25lRW5hYmxlZCwg
VW5kZWZpbmVkRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5TWF4V2lkdGgsIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxl
OjptYXhXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRNYXhXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0
aWFsTWF4U2l6ZSwgQXV0b0VuYWJsZWQsIEludHJpbnNpY0VuYWJsZWQsIE1pbkludHJpbnNpY0Vu
YWJsZWQsIE5vbmVFbmFibGVkLCBVbmRlZmluZWRFbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsK
KyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlNaW5IZWlnaHQsIEFwcGx5UHJvcGVy
dHlMZW5ndGg8JlJlbmRlclN0eWxlOjptaW5IZWlnaHQsICZSZW5kZXJTdHlsZTo6c2V0TWluSGVp
Z2h0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxNaW5TaXplLCBBdXRvRW5hYmxlZCwgSW50cmluc2lj
RW5hYmxlZCwgTWluSW50cmluc2ljRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0
UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TWluV2lkdGgsIEFwcGx5UHJvcGVydHlMZW5ndGg8
JlJlbmRlclN0eWxlOjptaW5XaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRNaW5XaWR0aCwgJlJlbmRl
clN0eWxlOjppbml0aWFsTWluU2l6ZSwgQXV0b0VuYWJsZWQsIEludHJpbnNpY0VuYWJsZWQsIE1p
bkludHJpbnNpY0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eU9ycGhhbnMsIEFwcGx5UHJvcGVydHlEZWZhdWx0PHNob3J0LCAmUmVu
ZGVyU3R5bGU6Om9ycGhhbnMsIHNob3J0LCAmUmVuZGVyU3R5bGU6OnNldE9ycGhhbnMsIHNob3J0
LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxPcnBoYW5zPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlPdXRsaW5lLCBBcHBseVByb3BlcnR5RXhwYW5k
aW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBDU1NQcm9wZXJ0eU91
dGxpbmVDb2xvciwgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGU+OjpjcmVhdGVIYW5kbGVyKCkpOwor
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwgQXBwbHlQcm9w
ZXJ0eUNvbG9yPE5vSW5oZXJpdEZyb21QYXJlbnQsICZSZW5kZXJTdHlsZTo6b3V0bGluZUNvbG9y
LCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRWaXNpdGVk
TGlua091dGxpbmVDb2xvciwgJlJlbmRlclN0eWxlOjpjb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7
CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3V0bGluZU9mZnNldCwgQXBwbHlQ
cm9wZXJ0eUNvbXB1dGVMZW5ndGg8aW50LCAmUmVuZGVyU3R5bGU6Om91dGxpbmVPZmZzZXQsICZS
ZW5kZXJTdHlsZTo6c2V0T3V0bGluZU9mZnNldCwgJlJlbmRlclN0eWxlOjppbml0aWFsT3V0bGlu
ZU9mZnNldD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5T3V0bGluZVN0eWxlLCBBcHBseVByb3BlcnR5T3V0bGluZVN0eWxlOjpjcmVhdGVIYW5k
bGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwg
QXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQgc2hvcnQsICZSZW5kZXJTdHlsZTo6
b3V0bGluZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVXaWR0aCwgJlJlbmRlclN0eWxl
Ojppbml0aWFsT3V0bGluZVdpZHRoLCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46
OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3Zl
cmZsb3csIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8RXhwYW5kVmFsdWUsIENTU1Byb3BlcnR5T3Zl
cmZsb3dYLCBDU1NQcm9wZXJ0eU92ZXJmbG93WT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0
UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBBcHBseVByb3BlcnR5RGVmYXVs
dDxFT3ZlcmZsb3csICZSZW5kZXJTdHlsZTo6b3ZlcmZsb3dYLCBFT3ZlcmZsb3csICZSZW5kZXJT
dHlsZTo6c2V0T3ZlcmZsb3dYLCBFT3ZlcmZsb3csICZSZW5kZXJTdHlsZTo6aW5pdGlhbE92ZXJm
bG93WD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5T3ZlcmZsb3dZLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFT3ZlcmZsb3csICZSZW5kZXJTdHls
ZTo6b3ZlcmZsb3dZLCBFT3ZlcmZsb3csICZSZW5kZXJTdHlsZTo6c2V0T3ZlcmZsb3dZLCBFT3Zl
cmZsb3csICZSZW5kZXJTdHlsZTo6aW5pdGlhbE92ZXJmbG93WT46OmNyZWF0ZUhhbmRsZXIoKSk7
CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5UGFkZGluZywgQXBwbHlQcm9wZXJ0
eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIENTU1Byb3Bl
cnR5UGFkZGluZ1JpZ2h0LCBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20sIENTU1Byb3BlcnR5UGFk
ZGluZ0xlZnQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVBhZGRpbmdCb3R0b20sIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxlOjpw
YWRkaW5nQm90dG9tLCAmUmVuZGVyU3R5bGU6OnNldFBhZGRpbmdCb3R0b20sICZSZW5kZXJTdHls
ZTo6aW5pdGlhbFBhZGRpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0LCBBcHBseVByb3BlcnR5TGVuZ3RoPCZSZW5kZXJT
dHlsZTo6cGFkZGluZ0xlZnQsICZSZW5kZXJTdHlsZTo6c2V0UGFkZGluZ0xlZnQsICZSZW5kZXJT
dHlsZTo6aW5pdGlhbFBhZGRpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVu
ZGVyU3R5bGU6OnBhZGRpbmdSaWdodCwgJlJlbmRlclN0eWxlOjpzZXRQYWRkaW5nUmlnaHQsICZS
ZW5kZXJTdHlsZTo6aW5pdGlhbFBhZGRpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIEFwcGx5UHJvcGVydHlMZW5ndGg8
JlJlbmRlclN0eWxlOjpwYWRkaW5nVG9wLCAmUmVuZGVyU3R5bGU6OnNldFBhZGRpbmdUb3AsICZS
ZW5kZXJTdHlsZTo6aW5pdGlhbFBhZGRpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyLCBBcHBseVByb3BlcnR5RGVm
YXVsdDxFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6OnBhZ2VCcmVha0FmdGVyLCBFUGFnZUJyZWFr
LCAmUmVuZGVyU3R5bGU6OnNldFBhZ2VCcmVha0FmdGVyLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5
bGU6OmluaXRpYWxQYWdlQnJlYWs+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8
RVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjpwYWdlQnJlYWtCZWZvcmUsIEVQYWdlQnJlYWssICZS
ZW5kZXJTdHlsZTo6c2V0UGFnZUJyZWFrQmVmb3JlLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6
OmluaXRpYWxQYWdlQnJlYWs+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVBh
Z2VCcmVhaywgJlJlbmRlclN0eWxlOjpwYWdlQnJlYWtJbnNpZGUsIEVQYWdlQnJlYWssICZSZW5k
ZXJTdHlsZTo6c2V0UGFnZUJyZWFrSW5zaWRlLCBFUGFnZUJyZWFrLCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxQYWdlQnJlYWs+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVBvc2l0aW9uLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFUG9zaXRpb24sICZS
ZW5kZXJTdHlsZTo6cG9zaXRpb24sIEVQb3NpdGlvbiwgJlJlbmRlclN0eWxlOjpzZXRQb3NpdGlv
biwgRVBvc2l0aW9uLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQb3NpdGlvbj46OmNyZWF0ZUhhbmRs
ZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5UmVzaXplLCBBcHBseVBy
b3BlcnR5UmVzaXplOjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVJpZ2h0LCBBcHBseVByb3BlcnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6cmlnaHQs
ICZSZW5kZXJTdHlsZTo6c2V0UmlnaHQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbE9mZnNldCwgQXV0
b0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVNpemUsIEFwcGx5UHJvcGVydHlQYWdlU2l6ZTo6Y3JlYXRlSGFuZGxlcigpKTsKKyAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlTcGVhaywgQXBwbHlQcm9wZXJ0eURlZmF1
bHQ8RVNwZWFrLCAmUmVuZGVyU3R5bGU6OnNwZWFrLCBFU3BlYWssICZSZW5kZXJTdHlsZTo6c2V0
U3BlYWssIEVTcGVhaywgJlJlbmRlclN0eWxlOjppbml0aWFsU3BlYWs+OjpjcmVhdGVIYW5kbGVy
KCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0LCBBcHBs
eVByb3BlcnR5RGVmYXVsdDxFVGFibGVMYXlvdXQsICZSZW5kZXJTdHlsZTo6dGFibGVMYXlvdXQs
IEVUYWJsZUxheW91dCwgJlJlbmRlclN0eWxlOjpzZXRUYWJsZUxheW91dCwgRVRhYmxlTGF5b3V0
LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxUYWJsZUxheW91dD46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5VGV4dEFsaWduLCBBcHBseVByb3BlcnR5
VGV4dEFsaWduOjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVRleHREZWNvcmF0aW9uLCBBcHBseVByb3BlcnR5VGV4dERlY29yYXRpb246OmNyZWF0
ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5VGV4dEluZGVu
dCwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6OnRleHRJbmRlbnQsICZSZW5kZXJT
dHlsZTo6c2V0VGV4dEluZGVudCwgJlJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudD46OmNy
ZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5VGV4dE92
ZXJmbG93LCBBcHBseVByb3BlcnR5RGVmYXVsdDxUZXh0T3ZlcmZsb3csICZSZW5kZXJTdHlsZTo6
dGV4dE92ZXJmbG93LCBUZXh0T3ZlcmZsb3csICZSZW5kZXJTdHlsZTo6c2V0VGV4dE92ZXJmbG93
LCBUZXh0T3ZlcmZsb3csICZSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRPdmVyZmxvdz46OmNyZWF0
ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5VGV4dFJlbmRl
cmluZywgQXBwbHlQcm9wZXJ0eUZvbnQ8VGV4dFJlbmRlcmluZ01vZGUsICZGb250RGVzY3JpcHRp
b246OnRleHRSZW5kZXJpbmdNb2RlLCAmRm9udERlc2NyaXB0aW9uOjpzZXRUZXh0UmVuZGVyaW5n
TW9kZSwgQXV0b1RleHRSZW5kZXJpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0sIEFwcGx5UHJvcGVydHlEZWZhdWx0
PEVUZXh0VHJhbnNmb3JtLCAmUmVuZGVyU3R5bGU6OnRleHRUcmFuc2Zvcm0sIEVUZXh0VHJhbnNm
b3JtLCAmUmVuZGVyU3R5bGU6OnNldFRleHRUcmFuc2Zvcm0sIEVUZXh0VHJhbnNmb3JtLCAmUmVu
ZGVyU3R5bGU6OmluaXRpYWxUZXh0VHJhbnNmb3JtPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlUb3AsIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJl
bmRlclN0eWxlOjp0b3AsICZSZW5kZXJTdHlsZTo6c2V0VG9wLCAmUmVuZGVyU3R5bGU6OmluaXRp
YWxPZmZzZXQsIEF1dG9FbmFibGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQXBwbHlQcm9wZXJ0eVVuaWNvZGVCaWRp
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVZl
cnRpY2FsQWxpZ24sIEFwcGx5UHJvcGVydHlWZXJ0aWNhbEFsaWduOjpjcmVhdGVIYW5kbGVyKCkp
OworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVZpc2liaWxpdHksIEFwcGx5UHJv
cGVydHlEZWZhdWx0PEVWaXNpYmlsaXR5LCAmUmVuZGVyU3R5bGU6OnZpc2liaWxpdHksIEVWaXNp
YmlsaXR5LCAmUmVuZGVyU3R5bGU6OnNldFZpc2liaWxpdHksIEVWaXNpYmlsaXR5LCAmUmVuZGVy
U3R5bGU6OmluaXRpYWxWaXNpYmlsaXR5Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheSwgQXBwbHlQcm9wZXJ0
eUFuaW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246OmRlbGF5LCAmQW5pbWF0aW9uOjpzZXREZWxh
eSwgJkFuaW1hdGlvbjo6aXNEZWxheVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEZWxheSwgJkFuaW1h
dGlvbjo6aW5pdGlhbEFuaW1hdGlvbkRlbGF5LCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0
aW9uRGVsYXksICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjph
bmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248
QW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb24sICZBbmltYXRpb246OmRpcmVjdGlvbiwgJkFu
aW1hdGlvbjo6c2V0RGlyZWN0aW9uLCAmQW5pbWF0aW9uOjppc0RpcmVjdGlvblNldCwgJkFuaW1h
dGlvbjo6Y2xlYXJEaXJlY3Rpb24sICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EaXJlY3Rp
b24sICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25EaXJlY3Rpb24sICZSZW5kZXJTdHls
ZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25EdXJhdGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246OmR1
cmF0aW9uLCAmQW5pbWF0aW9uOjpzZXREdXJhdGlvbiwgJkFuaW1hdGlvbjo6aXNEdXJhdGlvblNl
dCwgJkFuaW1hdGlvbjo6Y2xlYXJEdXJhdGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlv
bkR1cmF0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uRHVyYXRpb24sICZSZW5k
ZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25GaWxsTW9kZSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjx1bnNpZ25lZCwgJkFuaW1h
dGlvbjo6ZmlsbE1vZGUsICZBbmltYXRpb246OnNldEZpbGxNb2RlLCAmQW5pbWF0aW9uOjppc0Zp
bGxNb2RlU2V0LCAmQW5pbWF0aW9uOjpjbGVhckZpbGxNb2RlLCAmQW5pbWF0aW9uOjppbml0aWFs
QW5pbWF0aW9uRmlsbE1vZGUsICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25GaWxsTW9k
ZSwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlv
bnM+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRv
dWJsZSwgJkFuaW1hdGlvbjo6aXRlcmF0aW9uQ291bnQsICZBbmltYXRpb246OnNldEl0ZXJhdGlv
bkNvdW50LCAmQW5pbWF0aW9uOjppc0l0ZXJhdGlvbkNvdW50U2V0LCAmQW5pbWF0aW9uOjpjbGVh
ckl0ZXJhdGlvbkNvdW50LCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uSXRlcmF0aW9uQ291
bnQsICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25JdGVyYXRpb25Db3VudCwgJlJlbmRl
clN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbk5hbWUsIEFwcGx5UHJvcGVydHlBbmltYXRpb248Y29uc3QgU3RyaW5nJiwgJkFuaW1h
dGlvbjo6bmFtZSwgJkFuaW1hdGlvbjo6c2V0TmFtZSwgJkFuaW1hdGlvbjo6aXNOYW1lU2V0LCAm
QW5pbWF0aW9uOjpjbGVhck5hbWUsICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25OYW1lLCAm
Q1NTU3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uTmFtZSwgJlJlbmRlclN0eWxlOjphY2Nlc3NB
bmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwor
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblBsYXlTdGF0
ZSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxFQW5pbVBsYXlTdGF0ZSwgJkFuaW1hdGlvbjo6cGxh
eVN0YXRlLCAmQW5pbWF0aW9uOjpzZXRQbGF5U3RhdGUsICZBbmltYXRpb246OmlzUGxheVN0YXRl
U2V0LCAmQW5pbWF0aW9uOjpjbGVhclBsYXlTdGF0ZSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1h
dGlvblBsYXlTdGF0ZSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvblBsYXlTdGF0ZSwg
JlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGNvbnN0
IFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+LCAmQW5pbWF0aW9uOjp0aW1pbmdGdW5jdGlvbiwg
JkFuaW1hdGlvbjo6c2V0VGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246OmlzVGltaW5nRnVuY3Rp
b25TZXQsICZBbmltYXRpb246OmNsZWFyVGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246OmluaXRp
YWxBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlv
blRpbWluZ0Z1bmN0aW9uLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJT
dHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8Q29u
dHJvbFBhcnQsICZSZW5kZXJTdHlsZTo6YXBwZWFyYW5jZSwgQ29udHJvbFBhcnQsICZSZW5kZXJT
dHlsZTo6c2V0QXBwZWFyYW5jZSwgQ29udHJvbFBhcnQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEFw
cGVhcmFuY2U+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVdlYmtpdEFzcGVjdFJhdGlvLCBBcHBseVByb3BlcnR5QXNwZWN0UmF0aW86OmNyZWF0
ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QmFj
a2ZhY2VWaXNpYmlsaXR5LCBBcHBseVByb3BlcnR5RGVmYXVsdDxFQmFja2ZhY2VWaXNpYmlsaXR5
LCAmUmVuZGVyU3R5bGU6OmJhY2tmYWNlVmlzaWJpbGl0eSwgRUJhY2tmYWNlVmlzaWJpbGl0eSwg
JlJlbmRlclN0eWxlOjpzZXRCYWNrZmFjZVZpc2liaWxpdHksIEVCYWNrZmFjZVZpc2liaWxpdHks
ICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJhY2tmYWNlVmlzaWJpbGl0eT46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENs
aXAsIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXApOworICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIEFwcGx5UHJvcGVydHlGaWxsTGF5
ZXI8Q29tcG9zaXRlT3BlcmF0b3IsIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0
ZSwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5
ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzQ29tcG9z
aXRlU2V0LCAmRmlsbExheWVyOjpjb21wb3NpdGUsICZGaWxsTGF5ZXI6OnNldENvbXBvc2l0ZSwg
JkZpbGxMYXllcjo6Y2xlYXJDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ29tcG9z
aXRlLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbENvbXBvc2l0ZT46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9y
aWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
U2l6ZSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0
LCBBcHBseVByb3BlcnR5RGVmYXVsdDxFQm9yZGVyRml0LCAmUmVuZGVyU3R5bGU6OmJvcmRlckZp
dCwgRUJvcmRlckZpdCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJGaXQsIEVCb3JkZXJGaXQsICZS
ZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlckZpdD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0
UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcs
IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHNob3J0LCAmUmVuZGVyU3R5bGU6Omhvcml6b250
YWxCb3JkZXJTcGFjaW5nLCAmUmVuZGVyU3R5bGU6OnNldEhvcml6b250YWxCb3JkZXJTcGFjaW5n
LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxIb3Jpem9udGFsQm9yZGVyU3BhY2luZz46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
SW1hZ2UsIEFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZTxJbWFnZSwgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJJbWFnZSwgJlJlbmRlclN0eWxlOjpib3JkZXJJbWFnZSwgJlJlbmRlclN0eWxlOjpzZXRC
b3JkZXJJbWFnZT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cyk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFj
aW5nLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDxzaG9ydCwgJlJlbmRlclN0eWxlOjp2ZXJ0
aWNhbEJvcmRlclNwYWNpbmcsICZSZW5kZXJTdHlsZTo6c2V0VmVydGljYWxCb3JkZXJTcGFjaW5n
LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxWZXJ0aWNhbEJvcmRlclNwYWNpbmc+OjpjcmVhdGVIYW5k
bGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWdu
LCBBcHBseVByb3BlcnR5RGVmYXVsdDxFQm94QWxpZ25tZW50LCAmUmVuZGVyU3R5bGU6OmJveEFs
aWduLCBFQm94QWxpZ25tZW50LCAmUmVuZGVyU3R5bGU6OnNldEJveEFsaWduLCBFQm94QWxpZ25t
ZW50LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hBbGlnbj46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uLCBBcHBs
eVByb3BlcnR5RGVmYXVsdDxFQm94RGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OmJveERpcmVjdGlv
biwgRUJveERpcmVjdGlvbiwgJlJlbmRlclN0eWxlOjpzZXRCb3hEaXJlY3Rpb24sIEVCb3hEaXJl
Y3Rpb24sICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJveERpcmVjdGlvbj46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleCwgQXBw
bHlQcm9wZXJ0eURlZmF1bHQ8ZmxvYXQsICZSZW5kZXJTdHlsZTo6Ym94RmxleCwgZmxvYXQsICZS
ZW5kZXJTdHlsZTo6c2V0Qm94RmxleCwgZmxvYXQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJveEZs
ZXg+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdEJveEZsZXhHcm91cCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8dW5zaWduZWQgaW50LCAm
UmVuZGVyU3R5bGU6OmJveEZsZXhHcm91cCwgdW5zaWduZWQgaW50LCAmUmVuZGVyU3R5bGU6OnNl
dEJveEZsZXhHcm91cCwgdW5zaWduZWQgaW50LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hGbGV4
R3JvdXA+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eVdlYmtpdEJveExpbmVzLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFQm94TGluZXMsICZSZW5k
ZXJTdHlsZTo6Ym94TGluZXMsIEVCb3hMaW5lcywgJlJlbmRlclN0eWxlOjpzZXRCb3hMaW5lcywg
RUJveExpbmVzLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hMaW5lcz46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdy
b3VwLCBBcHBseVByb3BlcnR5RGVmYXVsdDx1bnNpZ25lZCBpbnQsICZSZW5kZXJTdHlsZTo6Ym94
T3JkaW5hbEdyb3VwLCB1bnNpZ25lZCBpbnQsICZSZW5kZXJTdHlsZTo6c2V0Qm94T3JkaW5hbEdy
b3VwLCB1bnNpZ25lZCBpbnQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJveE9yZGluYWxHcm91cD46
OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Vi
a2l0Qm94T3JpZW50LCBBcHBseVByb3BlcnR5RGVmYXVsdDxFQm94T3JpZW50LCAmUmVuZGVyU3R5
bGU6OmJveE9yaWVudCwgRUJveE9yaWVudCwgJlJlbmRlclN0eWxlOjpzZXRCb3hPcmllbnQsIEVC
b3hPcmllbnQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJveE9yaWVudD46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Qm94UGFjaywgQXBw
bHlQcm9wZXJ0eURlZmF1bHQ8RUJveFBhY2ssICZSZW5kZXJTdHlsZTo6Ym94UGFjaywgRUJveFBh
Y2ssICZSZW5kZXJTdHlsZTo6c2V0Qm94UGFjaywgRUJveFBhY2ssICZSZW5kZXJTdHlsZTo6aW5p
dGlhbEJveFBhY2s+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbiwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8Q29s
b3JTcGFjZSwgJlJlbmRlclN0eWxlOjpjb2xvclNwYWNlLCBDb2xvclNwYWNlLCAmUmVuZGVyU3R5
bGU6OnNldENvbG9yU3BhY2UsIENvbG9yU3BhY2UsICZSZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9y
U3BhY2U+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtbkF4aXMsIEFwcGx5UHJvcGVydHlEZWZhdWx0PENvbHVtbkF4aXMsICZS
ZW5kZXJTdHlsZTo6Y29sdW1uQXhpcywgQ29sdW1uQXhpcywgJlJlbmRlclN0eWxlOjpzZXRDb2x1
bW5BeGlzLCBDb2x1bW5BeGlzLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5BeGlzPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5CcmVha0FmdGVyLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFUGFnZUJyZWFrLCAmUmVuZGVy
U3R5bGU6OmNvbHVtbkJyZWFrQWZ0ZXIsIEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6c2V0Q29s
dW1uQnJlYWtBZnRlciwgRVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjppbml0aWFsUGFnZUJyZWFr
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVBhZ2VCcmVhaywg
JlJlbmRlclN0eWxlOjpjb2x1bW5CcmVha0JlZm9yZSwgRVBhZ2VCcmVhaywgJlJlbmRlclN0eWxl
OjpzZXRDb2x1bW5CcmVha0JlZm9yZSwgRVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjppbml0aWFs
UGFnZUJyZWFrPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVBh
Z2VCcmVhaywgJlJlbmRlclN0eWxlOjpjb2x1bW5CcmVha0luc2lkZSwgRVBhZ2VCcmVhaywgJlJl
bmRlclN0eWxlOjpzZXRDb2x1bW5CcmVha0luc2lkZSwgRVBhZ2VCcmVhaywgJlJlbmRlclN0eWxl
Ojppbml0aWFsUGFnZUJyZWFrPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Db3VudCwgQXBwbHlQcm9wZXJ0eUF1dG88dW5z
aWduZWQgc2hvcnQsICZSZW5kZXJTdHlsZTo6Y29sdW1uQ291bnQsICZSZW5kZXJTdHlsZTo6c2V0
Q29sdW1uQ291bnQsICZSZW5kZXJTdHlsZTo6aGFzQXV0b0NvbHVtbkNvdW50LCAmUmVuZGVyU3R5
bGU6OnNldEhhc0F1dG9Db2x1bW5Db3VudD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uR2FwLCBBcHBseVByb3BlcnR5QXV0
bzxmbG9hdCwgJlJlbmRlclN0eWxlOjpjb2x1bW5HYXAsICZSZW5kZXJTdHlsZTo6c2V0Q29sdW1u
R2FwLCAmUmVuZGVyU3R5bGU6Omhhc05vcm1hbENvbHVtbkdhcCwgJlJlbmRlclN0eWxlOjpzZXRI
YXNOb3JtYWxDb2x1bW5HYXAsIENvbXB1dGVMZW5ndGgsIENTU1ZhbHVlTm9ybWFsPjo6Y3JlYXRl
SGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5SdWxlQ29sb3IsIEFwcGx5UHJvcGVydHlDb2xvcjxOb0luaGVyaXRGcm9tUGFyZW50LCAmUmVu
ZGVyU3R5bGU6OmNvbHVtblJ1bGVDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRDb2x1bW5SdWxlQ29s
b3IsICZSZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IsICZSZW5kZXJT
dHlsZTo6Y29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5n
dGg8dW5zaWduZWQgc2hvcnQsICZSZW5kZXJTdHlsZTo6Y29sdW1uUnVsZVdpZHRoLCAmUmVuZGVy
U3R5bGU6OnNldENvbHVtblJ1bGVXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uUnVs
ZVdpZHRoLCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1ucywgQXBw
bHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
bldpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50Pjo6Y3JlYXRlSGFuZGxlcigpKTsK
KyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFuLCBBcHBs
eVByb3BlcnR5RGVmYXVsdDxDb2x1bW5TcGFuLCAmUmVuZGVyU3R5bGU6OmNvbHVtblNwYW4sIENv
bHVtblNwYW4sICZSZW5kZXJTdHlsZTo6c2V0Q29sdW1uU3BhbiwgQ29sdW1uU3BhbiwgJlJlbmRl
clN0eWxlOjppbml0aWFsQ29sdW1uU3Bhbj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlLCBBcHBseVByb3Bl
cnR5RGVmYXVsdDxFQm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6Y29sdW1uUnVsZVN0eWxlLCBF
Qm9yZGVyU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0Q29sdW1uUnVsZVN0eWxlLCBFQm9yZGVyU3R5
bGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlPjo6Y3JlYXRlSGFuZGxlcigpKTsK
KyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCwgQXBw
bHlQcm9wZXJ0eUF1dG88ZmxvYXQsICZSZW5kZXJTdHlsZTo6Y29sdW1uV2lkdGgsICZSZW5kZXJT
dHlsZTo6c2V0Q29sdW1uV2lkdGgsICZSZW5kZXJTdHlsZTo6aGFzQXV0b0NvbHVtbldpZHRoLCAm
UmVuZGVyU3R5bGU6OnNldEhhc0F1dG9Db2x1bW5XaWR0aCwgQ29tcHV0ZUxlbmd0aD46OmNyZWF0
ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Rmxl
eCwgQXBwbHlQcm9wZXJ0eUZsZXg6OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0RmxleEFsaWduLCBBcHBseVByb3BlcnR5RGVmYXVsdDxF
RmxleEFsaWduLCAmUmVuZGVyU3R5bGU6OmZsZXhBbGlnbiwgRUZsZXhBbGlnbiwgJlJlbmRlclN0
eWxlOjpzZXRGbGV4QWxpZ24sIEVGbGV4QWxpZ24sICZSZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhB
bGlnbj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0RmxleERpcmVjdGlvbiwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUZsZXhEaXJlY3Rp
b24sICZSZW5kZXJTdHlsZTo6ZmxleERpcmVjdGlvbiwgRUZsZXhEaXJlY3Rpb24sICZSZW5kZXJT
dHlsZTo6c2V0RmxleERpcmVjdGlvbiwgRUZsZXhEaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6aW5p
dGlhbEZsZXhEaXJlY3Rpb24+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93LCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1
cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgQ1NTUHJvcGVydHlX
ZWJraXRGbGV4V3JhcD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5V2Via2l0RmxleEl0ZW1BbGlnbiwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUZs
ZXhBbGlnbiwgJlJlbmRlclN0eWxlOjpmbGV4SXRlbUFsaWduLCBFRmxleEFsaWduLCAmUmVuZGVy
U3R5bGU6OnNldEZsZXhJdGVtQWxpZ24sIEVGbGV4QWxpZ24sICZSZW5kZXJTdHlsZTo6aW5pdGlh
bEZsZXhJdGVtQWxpZ24+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdEZsZXhMaW5lUGFjaywgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUZs
ZXhMaW5lUGFjaywgJlJlbmRlclN0eWxlOjpmbGV4TGluZVBhY2ssIEVGbGV4TGluZVBhY2ssICZS
ZW5kZXJTdHlsZTo6c2V0RmxleExpbmVQYWNrLCBFRmxleExpbmVQYWNrLCAmUmVuZGVyU3R5bGU6
OmluaXRpYWxGbGV4TGluZVBhY2s+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEZsZXhPcmRlciwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8
aW50LCAmUmVuZGVyU3R5bGU6OmZsZXhPcmRlciwgaW50LCAmUmVuZGVyU3R5bGU6OnNldEZsZXhP
cmRlciwgaW50LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxGbGV4T3JkZXI+OjpjcmVhdGVIYW5kbGVy
KCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEZsZXhQYWNrLCBB
cHBseVByb3BlcnR5RGVmYXVsdDxFRmxleFBhY2ssICZSZW5kZXJTdHlsZTo6ZmxleFBhY2ssIEVG
bGV4UGFjaywgJlJlbmRlclN0eWxlOjpzZXRGbGV4UGFjaywgRUZsZXhQYWNrLCAmUmVuZGVyU3R5
bGU6OmluaXRpYWxGbGV4UGFjaz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0RmxleFdyYXAsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVG
bGV4V3JhcCwgJlJlbmRlclN0eWxlOjpmbGV4V3JhcCwgRUZsZXhXcmFwLCAmUmVuZGVyU3R5bGU6
OnNldEZsZXhXcmFwLCBFRmxleFdyYXAsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEZsZXhXcmFwPjo6
Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRGbG93RnJvbSwgQXBwbHlQcm9wZXJ0eVN0cmluZzxNYXBOb25lVG9OdWxsLCAmUmVuZGVyU3R5
bGU6OnJlZ2lvblRocmVhZCwgJlJlbmRlclN0eWxlOjpzZXRSZWdpb25UaHJlYWQsICZSZW5kZXJT
dHlsZTo6aW5pdGlhbFJlZ2lvblRocmVhZD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Rmxvd0ludG8sIEFwcGx5UHJvcGVydHlTdHJp
bmc8TWFwTm9uZVRvTnVsbCwgJlJlbmRlclN0eWxlOjpmbG93VGhyZWFkLCAmUmVuZGVyU3R5bGU6
OnNldEZsb3dUaHJlYWQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEZsb3dUaHJlYWQ+OjpjcmVhdGVI
YW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEZvbnRL
ZXJuaW5nLCBBcHBseVByb3BlcnR5Rm9udDxGb250RGVzY3JpcHRpb246Oktlcm5pbmcsICZGb250
RGVzY3JpcHRpb246Omtlcm5pbmcsICZGb250RGVzY3JpcHRpb246OnNldEtlcm5pbmcsIEZvbnRE
ZXNjcmlwdGlvbjo6QXV0b0tlcm5pbmc+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcsIEFwcGx5UHJvcGVydHlG
b250PEZvbnRTbW9vdGhpbmdNb2RlLCAmRm9udERlc2NyaXB0aW9uOjpmb250U21vb3RoaW5nLCAm
Rm9udERlc2NyaXB0aW9uOjpzZXRGb250U21vb3RoaW5nLCBBdXRvU21vb3RoaW5nPjo6Y3JlYXRl
SGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRGb250
VmFyaWFudExpZ2F0dXJlcywgQXBwbHlQcm9wZXJ0eUZvbnRWYXJpYW50TGlnYXR1cmVzOjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEhp
Z2hsaWdodCwgQXBwbHlQcm9wZXJ0eVN0cmluZzxNYXBOb25lVG9OdWxsLCAmUmVuZGVyU3R5bGU6
OmhpZ2hsaWdodCwgJlJlbmRlclN0eWxlOjpzZXRIaWdobGlnaHQsICZSZW5kZXJTdHlsZTo6aW5p
dGlhbEhpZ2hsaWdodD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyLCBBcHBseVByb3BlcnR5U3RyaW5n
PE1hcEF1dG9Ub051bGwsICZSZW5kZXJTdHlsZTo6aHlwaGVuYXRpb25TdHJpbmcsICZSZW5kZXJT
dHlsZTo6c2V0SHlwaGVuYXRpb25TdHJpbmcsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEh5cGhlbmF0
aW9uU3RyaW5nPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdEFmdGVyLCBBcHBseVByb3BlcnR5TnVtYmVyPHNo
b3J0LCAmUmVuZGVyU3R5bGU6Omh5cGhlbmF0aW9uTGltaXRBZnRlciwgJlJlbmRlclN0eWxlOjpz
ZXRIeXBoZW5hdGlvbkxpbWl0QWZ0ZXIsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEh5cGhlbmF0aW9u
TGltaXRBZnRlcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTGltaXRCZWZvcmUsIEFwcGx5UHJvcGVydHlOdW1iZXI8
c2hvcnQsICZSZW5kZXJTdHlsZTo6aHlwaGVuYXRpb25MaW1pdEJlZm9yZSwgJlJlbmRlclN0eWxl
OjpzZXRIeXBoZW5hdGlvbkxpbWl0QmVmb3JlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxIeXBoZW5h
dGlvbkxpbWl0QmVmb3JlPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzLCBBcHBseVByb3BlcnR5TnVt
YmVyPHNob3J0LCAmUmVuZGVyU3R5bGU6Omh5cGhlbmF0aW9uTGltaXRMaW5lcywgJlJlbmRlclN0
eWxlOjpzZXRIeXBoZW5hdGlvbkxpbWl0TGluZXMsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEh5cGhl
bmF0aW9uTGltaXRMaW5lcywgQ1NTVmFsdWVOb0xpbWl0Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zLCBBcHBseVByb3Bl
cnR5RGVmYXVsdDxIeXBoZW5zLCAmUmVuZGVyU3R5bGU6Omh5cGhlbnMsIEh5cGhlbnMsICZSZW5k
ZXJTdHlsZTo6c2V0SHlwaGVucywgSHlwaGVucywgJlJlbmRlclN0eWxlOjppbml0aWFsSHlwaGVu
cz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0TGluZUFsaWduLCBBcHBseVByb3BlcnR5RGVmYXVsdDxMaW5lQWxpZ24sICZSZW5kZXJT
dHlsZTo6bGluZUFsaWduLCBMaW5lQWxpZ24sICZSZW5kZXJTdHlsZTo6c2V0TGluZUFsaWduLCBM
aW5lQWxpZ24sICZSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVBbGlnbj46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBB
cHBseVByb3BlcnR5RGVmYXVsdDxFS0hUTUxMaW5lQnJlYWssICZSZW5kZXJTdHlsZTo6a2h0bWxM
aW5lQnJlYWssIEVLSFRNTExpbmVCcmVhaywgJlJlbmRlclN0eWxlOjpzZXRLSFRNTExpbmVCcmVh
aywgRUtIVE1MTGluZUJyZWFrLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxLSFRNTExpbmVCcmVhaz46
OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Vi
a2l0TGluZUdyaWQsIEFwcGx5UHJvcGVydHlTdHJpbmc8TWFwTm9uZVRvTnVsbCwgJlJlbmRlclN0
eWxlOjpsaW5lR3JpZCwgJlJlbmRlclN0eWxlOjpzZXRMaW5lR3JpZCwgJlJlbmRlclN0eWxlOjpp
bml0aWFsTGluZUdyaWQ+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdExpbmVTbmFwLCBBcHBseVByb3BlcnR5RGVmYXVsdDxMaW5lU25h
cCwgJlJlbmRlclN0eWxlOjpsaW5lU25hcCwgTGluZVNuYXAsICZSZW5kZXJTdHlsZTo6c2V0TGlu
ZVNuYXAsIExpbmVTbmFwLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lU25hcD46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QWZ0ZXJDb2xsYXBzZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RU1hcmdpbkNvbGxhcHNlLCAmUmVu
ZGVyU3R5bGU6Om1hcmdpbkFmdGVyQ29sbGFwc2UsIEVNYXJnaW5Db2xsYXBzZSwgJlJlbmRlclN0
eWxlOjpzZXRNYXJnaW5BZnRlckNvbGxhcHNlLCBFTWFyZ2luQ29sbGFwc2UsICZSZW5kZXJTdHls
ZTo6aW5pdGlhbE1hcmdpbkFmdGVyQ29sbGFwc2U+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBB
cHBseVByb3BlcnR5RGVmYXVsdDxFTWFyZ2luQ29sbGFwc2UsICZSZW5kZXJTdHlsZTo6bWFyZ2lu
QmVmb3JlQ29sbGFwc2UsIEVNYXJnaW5Db2xsYXBzZSwgJlJlbmRlclN0eWxlOjpzZXRNYXJnaW5C
ZWZvcmVDb2xsYXBzZSwgRU1hcmdpbkNvbGxhcHNlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxNYXJn
aW5CZWZvcmVDb2xsYXBzZT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQ29sbGFwc2UsIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NW
YWx1ZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSwgQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RU1h
cnF1ZWVEaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6bWFycXVlZURpcmVjdGlvbiwgRU1hcnF1ZWVE
aXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6c2V0TWFycXVlZURpcmVjdGlvbiwgRU1hcnF1ZWVEaXJl
Y3Rpb24sICZSZW5kZXJTdHlsZTo6aW5pdGlhbE1hcnF1ZWVEaXJlY3Rpb24+OjpjcmVhdGVIYW5k
bGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVT
dHlsZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RU1hcnF1ZWVCZWhhdmlvciwgJlJlbmRlclN0eWxl
OjptYXJxdWVlQmVoYXZpb3IsIEVNYXJxdWVlQmVoYXZpb3IsICZSZW5kZXJTdHlsZTo6c2V0TWFy
cXVlZUJlaGF2aW9yLCBFTWFycXVlZUJlaGF2aW9yLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxNYXJx
dWVlQmVoYXZpb3I+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVG
aWxsQXR0YWNobWVudCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgTWFza0ZpbGxM
YXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tM
YXllcnMsICZGaWxsTGF5ZXI6OmlzQXR0YWNobWVudFNldCwgJkZpbGxMYXllcjo6YXR0YWNobWVu
dCwgJkZpbGxMYXllcjo6c2V0QXR0YWNobWVudCwgJkZpbGxMYXllcjo6Y2xlYXJBdHRhY2htZW50
LCAmRmlsbExheWVyOjppbml0aWFsRmlsbEF0dGFjaG1lbnQsICZDU1NTdHlsZVNlbGVjdG9yOjpt
YXBGaWxsQXR0YWNobWVudD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCBBcHBseVByb3BlcnR5Qm9yZGVySW1h
Z2U8TWFzaywgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UsICZSZW5kZXJTdHlsZTo6bWFz
a0JveEltYWdlLCAmUmVuZGVyU3R5bGU6OnNldE1hc2tCb3hJbWFnZT46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdl
T3V0c2V0LCBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjxNYXNrLCBPdXRzZXQ+Ojpj
cmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tCb3hJbWFnZVJlcGVhdCwgQXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI8TWFz
aywgUmVwZWF0Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZSwgQXBwbHlQcm9wZXJ0eUJvcmRlckltYWdl
TW9kaWZpZXI8TWFzaywgU2xpY2U+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNvdXJjZSwgQXBwbHlQcm9wZXJ0
eUJvcmRlckltYWdlU291cmNlPENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlLCAm
UmVuZGVyU3R5bGU6Om1hc2tCb3hJbWFnZVNvdXJjZSwgJlJlbmRlclN0eWxlOjpzZXRNYXNrQm94
SW1hZ2VTb3VyY2UsICZSZW5kZXJTdHlsZTo6aW5pdGlhbE1hc2tCb3hJbWFnZVNvdXJjZT46OmNy
ZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0
TWFza0JveEltYWdlV2lkdGgsIEFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlmaWVyPE1hc2ss
IFdpZHRoPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRNYXNrQ2xpcCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbEJveCwgQ1NT
UHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nl
c3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzQ2xp
cFNldCwgJkZpbGxMYXllcjo6Y2xpcCwgJkZpbGxMYXllcjo6c2V0Q2xpcCwgJkZpbGxMYXllcjo6
Y2xlYXJDbGlwLCAmRmlsbExheWVyOjppbml0aWFsRmlsbENsaXAsICZDU1NTdHlsZVNlbGVjdG9y
OjptYXBGaWxsQ2xpcD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxD
b21wb3NpdGVPcGVyYXRvciwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlLCBNYXNrRmls
bExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFz
a0xheWVycywgJkZpbGxMYXllcjo6aXNDb21wb3NpdGVTZXQsICZGaWxsTGF5ZXI6OmNvbXBvc2l0
ZSwgJkZpbGxMYXllcjo6c2V0Q29tcG9zaXRlLCAmRmlsbExheWVyOjpjbGVhckNvbXBvc2l0ZSwg
JkZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21wb3NpdGUsICZDU1NTdHlsZVNlbGVjdG9yOjptYXBG
aWxsQ29tcG9zaXRlPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8U3R5bGVJ
bWFnZSosIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBNYXNrRmlsbExheWVyLCAmUmVuZGVy
U3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxM
YXllcjo6aXNJbWFnZVNldCwgJkZpbGxMYXllcjo6aW1hZ2UsICZGaWxsTGF5ZXI6OnNldEltYWdl
LCAmRmlsbExheWVyOjpjbGVhckltYWdlLCAmRmlsbExheWVyOjppbml0aWFsRmlsbEltYWdlLCAm
Q1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbEltYWdlPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luLCBBcHBseVByb3Bl
cnR5RmlsbExheWVyPEVGaWxsQm94LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIE1hc2tG
aWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjpt
YXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc09yaWdpblNldCwgJkZpbGxMYXllcjo6b3JpZ2luLCAm
RmlsbExheWVyOjpzZXRPcmlnaW4sICZGaWxsTGF5ZXI6OmNsZWFyT3JpZ2luLCAmRmlsbExheWVy
Ojppbml0aWFsRmlsbE9yaWdpbiwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxPcmlnaW4+Ojpj
cmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tQb3NpdGlvbiwgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
WT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uWCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxMZW5ndGgsIENTU1By
b3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjph
Y2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6Omlz
WFBvc2l0aW9uU2V0LCAmRmlsbExheWVyOjp4UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFhQb3Np
dGlvbiwgJkZpbGxMYXllcjo6Y2xlYXJYUG9zaXRpb24sICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxs
WFBvc2l0aW9uLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFhQb3NpdGlvbj46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1Bv
c2l0aW9uWSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxMZW5ndGgsIENTU1Byb3BlcnR5V2Via2l0
TWFza1Bvc2l0aW9uWSwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5
ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzWVBvc2l0aW9uU2V0
LCAmRmlsbExheWVyOjp5UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFlQb3NpdGlvbiwgJkZpbGxM
YXllcjo6Y2xlYXJZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsWVBvc2l0aW9uLCAm
Q1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFlQb3NpdGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCwgQXBwbHlQ
cm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBl
YXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwgQXBwbHlQ
cm9wZXJ0eUZpbGxMYXllcjxFRmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0
WCwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVy
U3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzUmVwZWF0WFNldCwgJkZpbGxMYXllcjo6
cmVwZWF0WCwgJkZpbGxMYXllcjo6c2V0UmVwZWF0WCwgJkZpbGxMYXllcjo6Y2xlYXJSZXBlYXRY
LCAmRmlsbExheWVyOjppbml0aWFsRmlsbFJlcGVhdFgsICZDU1NTdHlsZVNlbGVjdG9yOjptYXBG
aWxsUmVwZWF0WD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFksIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxS
ZXBlYXQsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFksIE1hc2tGaWxsTGF5ZXIsICZSZW5k
ZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmls
bExheWVyOjppc1JlcGVhdFlTZXQsICZGaWxsTGF5ZXI6OnJlcGVhdFksICZGaWxsTGF5ZXI6OnNl
dFJlcGVhdFksICZGaWxsTGF5ZXI6OmNsZWFyUmVwZWF0WSwgJkZpbGxMYXllcjo6aW5pdGlhbEZp
bGxSZXBlYXRZLCAmQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFJlcGVhdFk+OjpjcmVhdGVIYW5k
bGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXpl
LCBBcHBseVByb3BlcnR5RmlsbExheWVyPEZpbGxTaXplLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tT
aXplLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5k
ZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNTaXplU2V0LCAmRmlsbExheWVyOjpz
aXplLCAmRmlsbExheWVyOjpzZXRTaXplLCAmRmlsbExheWVyOjpjbGVhclNpemUsICZGaWxsTGF5
ZXI6OmluaXRpYWxGaWxsU2l6ZSwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxTaXplPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRN
YXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFTWF0
Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvciwgJlJlbmRlclN0eWxlOjptYXRjaE5lYXJlc3RN
YWlsQmxvY2txdW90ZUNvbG9yLCBFTWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvciwgJlJl
bmRlclN0eWxlOjpzZXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCBFTWF0Y2hOZWFy
ZXN0TWFpbEJsb2NrcXVvdGVDb2xvciwgJlJlbmRlclN0eWxlOjppbml0aWFsTWF0Y2hOZWFyZXN0
TWFpbEJsb2NrcXVvdGVDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVO
QlNQTW9kZSwgJlJlbmRlclN0eWxlOjpuYnNwTW9kZSwgRU5CU1BNb2RlLCAmUmVuZGVyU3R5bGU6
OnNldE5CU1BNb2RlLCBFTkJTUE1vZGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbE5CU1BNb2RlPjo6
Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRQZXJzcGVjdGl2ZU9yaWdpbiwgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVl
LCBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCwgQ1NTUHJvcGVydHlXZWJraXRQ
ZXJzcGVjdGl2ZU9yaWdpblk+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCwgQXBwbHlQcm9wZXJ0eUxl
bmd0aDwmUmVuZGVyU3R5bGU6OnBlcnNwZWN0aXZlT3JpZ2luWCwgJlJlbmRlclN0eWxlOjpzZXRQ
ZXJzcGVjdGl2ZU9yaWdpblgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2lu
WD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZLCBBcHBseVByb3BlcnR5TGVuZ3RoPCZSZW5kZXJTdHls
ZTo6cGVyc3BlY3RpdmVPcmlnaW5ZLCAmUmVuZGVyU3R5bGU6OnNldFBlcnNwZWN0aXZlT3JpZ2lu
WSwgJlJlbmRlclN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5ZPjo6Y3JlYXRlSGFuZGxl
cigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRQcmludENvbG9y
QWRqdXN0LCBBcHBseVByb3BlcnR5RGVmYXVsdDxQcmludENvbG9yQWRqdXN0LCAmUmVuZGVyU3R5
bGU6OnByaW50Q29sb3JBZGp1c3QsIFByaW50Q29sb3JBZGp1c3QsICZSZW5kZXJTdHlsZTo6c2V0
UHJpbnRDb2xvckFkanVzdCwgUHJpbnRDb2xvckFkanVzdCwgJlJlbmRlclN0eWxlOjppbml0aWFs
UHJpbnRDb2xvckFkanVzdD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtBZnRlciwgQXBwbHlQcm9wZXJ0eURlZmF1
bHQ8RVBhZ2VCcmVhaywgJlJlbmRlclN0eWxlOjpyZWdpb25CcmVha0FmdGVyLCBFUGFnZUJyZWFr
LCAmUmVuZGVyU3R5bGU6OnNldFJlZ2lvbkJyZWFrQWZ0ZXIsIEVQYWdlQnJlYWssICZSZW5kZXJT
dHlsZTo6aW5pdGlhbFBhZ2VCcmVhaz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtCZWZvcmUsIEFwcGx5UHJvcGVy
dHlEZWZhdWx0PEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6cmVnaW9uQnJlYWtCZWZvcmUsIEVQ
YWdlQnJlYWssICZSZW5kZXJTdHlsZTo6c2V0UmVnaW9uQnJlYWtCZWZvcmUsIEVQYWdlQnJlYWss
ICZSZW5kZXJTdHlsZTo6aW5pdGlhbFBhZ2VCcmVhaz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0UmVnaW9uQnJlYWtJbnNpZGUsIEFw
cGx5UHJvcGVydHlEZWZhdWx0PEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6cmVnaW9uQnJlYWtJ
bnNpZGUsIEVQYWdlQnJlYWssICZSZW5kZXJTdHlsZTo6c2V0UmVnaW9uQnJlYWtJbnNpZGUsIEVQ
YWdlQnJlYWssICZSZW5kZXJTdHlsZTo6aW5pdGlhbFBhZ2VCcmVhaz46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0UmVnaW9uT3ZlcmZs
b3csIEFwcGx5UHJvcGVydHlEZWZhdWx0PFJlZ2lvbk92ZXJmbG93LCAmUmVuZGVyU3R5bGU6OnJl
Z2lvbk92ZXJmbG93LCBSZWdpb25PdmVyZmxvdywgJlJlbmRlclN0eWxlOjpzZXRSZWdpb25PdmVy
ZmxvdywgUmVnaW9uT3ZlcmZsb3csICZSZW5kZXJTdHlsZTo6aW5pdGlhbFJlZ2lvbk92ZXJmbG93
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRSdGxPcmRlcmluZywgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8T3JkZXIsICZSZW5kZXJTdHls
ZTo6cnRsT3JkZXJpbmcsIE9yZGVyLCAmUmVuZGVyU3R5bGU6OnNldFJUTE9yZGVyaW5nLCBPcmRl
ciwgJlJlbmRlclN0eWxlOjppbml0aWFsUlRMT3JkZXJpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOwor
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lLCBBcHBs
eVByb3BlcnR5RGVmYXVsdDxUZXh0Q29tYmluZSwgJlJlbmRlclN0eWxlOjp0ZXh0Q29tYmluZSwg
VGV4dENvbWJpbmUsICZSZW5kZXJTdHlsZTo6c2V0VGV4dENvbWJpbmUsIFRleHRDb21iaW5lLCAm
UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Q29tYmluZT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsIEFw
cGx5UHJvcGVydHlDb2xvcjxOb0luaGVyaXRGcm9tUGFyZW50LCAmUmVuZGVyU3R5bGU6OnRleHRF
bXBoYXNpc0NvbG9yLCAmUmVuZGVyU3R5bGU6OnNldFRleHRFbXBoYXNpc0NvbG9yLCAmUmVuZGVy
U3R5bGU6OnNldFZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IsICZSZW5kZXJTdHlsZTo6Y29s
b3I+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCBBcHBseVByb3BlcnR5RGVmYXVsdDxUZXh0RW1w
aGFzaXNQb3NpdGlvbiwgJlJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNQb3NpdGlvbiwgVGV4dEVt
cGhhc2lzUG9zaXRpb24sICZSZW5kZXJTdHlsZTo6c2V0VGV4dEVtcGhhc2lzUG9zaXRpb24sIFRl
eHRFbXBoYXNpc1Bvc2l0aW9uLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNQb3Np
dGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUsIEFwcGx5UHJvcGVydHlUZXh0RW1waGFzaXNTdHls
ZTo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RmlsbENvbG9yLCBBcHBseVByb3BlcnR5Q29sb3I8Tm9Jbmhlcml0RnJvbVBhcmVu
dCwgJlJlbmRlclN0eWxlOjp0ZXh0RmlsbENvbG9yLCAmUmVuZGVyU3R5bGU6OnNldFRleHRGaWxs
Q29sb3IsICZSZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtUZXh0RmlsbENvbG9yLCAmUmVuZGVy
U3R5bGU6OmNvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb24sIEFwcGx5UHJvcGVydHlGb250PFRleHRP
cmllbnRhdGlvbiwgJkZvbnREZXNjcmlwdGlvbjo6dGV4dE9yaWVudGF0aW9uLCAmRm9udERlc2Ny
aXB0aW9uOjpzZXRUZXh0T3JpZW50YXRpb24sIFRleHRPcmllbnRhdGlvblZlcnRpY2FsUmlnaHQ+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdFRleHRTZWN1cml0eSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVRleHRTZWN1cml0eSwgJlJl
bmRlclN0eWxlOjp0ZXh0U2VjdXJpdHksIEVUZXh0U2VjdXJpdHksICZSZW5kZXJTdHlsZTo6c2V0
VGV4dFNlY3VyaXR5LCBFVGV4dFNlY3VyaXR5LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0U2Vj
dXJpdHk+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciwgQXBwbHlQcm9wZXJ0eUNvbG9yPE5vSW5oZXJpdEZy
b21QYXJlbnQsICZSZW5kZXJTdHlsZTo6dGV4dFN0cm9rZUNvbG9yLCAmUmVuZGVyU3R5bGU6OnNl
dFRleHRTdHJva2VDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua1RleHRTdHJva2VD
b2xvciwgJlJlbmRlclN0eWxlOjpjb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luLCBBcHBseVByb3Bl
cnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3Jp
Z2luWCwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybU9yaWdpblo+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsIEFwcGx5UHJvcGVydHlMZW5n
dGg8JlJlbmRlclN0eWxlOjp0cmFuc2Zvcm1PcmlnaW5YLCAmUmVuZGVyU3R5bGU6OnNldFRyYW5z
Zm9ybU9yaWdpblgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9ybU9yaWdpblg+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybU9yaWdpblksIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxlOjp0cmFuc2Zv
cm1PcmlnaW5ZLCAmUmVuZGVyU3R5bGU6OnNldFRyYW5zZm9ybU9yaWdpblksICZSZW5kZXJTdHls
ZTo6aW5pdGlhbFRyYW5zZm9ybU9yaWdpblk+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblosIEFwcGx5UHJv
cGVydHlDb21wdXRlTGVuZ3RoPGZsb2F0LCAmUmVuZGVyU3R5bGU6OnRyYW5zZm9ybU9yaWdpblos
ICZSZW5kZXJTdHlsZTo6c2V0VHJhbnNmb3JtT3JpZ2luWiwgJlJlbmRlclN0eWxlOjppbml0aWFs
VHJhbnNmb3JtT3JpZ2luWj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGUsIEFwcGx5UHJvcGVydHlEZWZhdWx0
PEVUcmFuc2Zvcm1TdHlsZTNELCAmUmVuZGVyU3R5bGU6OnRyYW5zZm9ybVN0eWxlM0QsIEVUcmFu
c2Zvcm1TdHlsZTNELCAmUmVuZGVyU3R5bGU6OnNldFRyYW5zZm9ybVN0eWxlM0QsIEVUcmFuc2Zv
cm1TdHlsZTNELCAmUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1TdHlsZTNEPjo6Y3JlYXRl
SGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uRGVsYXksIEFwcGx5UHJvcGVydHlBbmltYXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjpk
ZWxheSwgJkFuaW1hdGlvbjo6c2V0RGVsYXksICZBbmltYXRpb246OmlzRGVsYXlTZXQsICZBbmlt
YXRpb246OmNsZWFyRGVsYXksICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EZWxheSwgJkNT
U1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbkRlbGF5LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc1Ry
YW5zaXRpb25zLCAmUmVuZGVyU3R5bGU6OnRyYW5zaXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsK
KyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRp
b24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjpkdXJhdGlvbiwg
JkFuaW1hdGlvbjo6c2V0RHVyYXRpb24sICZBbmltYXRpb246OmlzRHVyYXRpb25TZXQsICZBbmlt
YXRpb246OmNsZWFyRHVyYXRpb24sICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EdXJhdGlv
biwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFuaW1hdGlvbkR1cmF0aW9uLCAmUmVuZGVyU3R5bGU6
OmFjY2Vzc1RyYW5zaXRpb25zLCAmUmVuZGVyU3R5bGU6OnRyYW5zaXRpb25zPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0
aW9uUHJvcGVydHksIEFwcGx5UHJvcGVydHlBbmltYXRpb248Q1NTUHJvcGVydHlJRCwgJkFuaW1h
dGlvbjo6cHJvcGVydHksICZBbmltYXRpb246OnNldFByb3BlcnR5LCAmQW5pbWF0aW9uOjppc1By
b3BlcnR5U2V0LCAmQW5pbWF0aW9uOjpjbGVhclByb3BlcnR5LCAmQW5pbWF0aW9uOjppbml0aWFs
QW5pbWF0aW9uUHJvcGVydHksICZDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmltYXRpb25Qcm9wZXJ0
eSwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0
aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uLCBBcHBseVByb3BlcnR5QW5pbWF0aW9u
PGNvbnN0IFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+LCAmQW5pbWF0aW9uOjp0aW1pbmdGdW5j
dGlvbiwgJkFuaW1hdGlvbjo6c2V0VGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246OmlzVGltaW5n
RnVuY3Rpb25TZXQsICZBbmltYXRpb246OmNsZWFyVGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246
OmluaXRpYWxBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgJkNTU1N0eWxlU2VsZWN0b3I6Om1hcEFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc1RyYW5zaXRpb25zLCAm
UmVuZGVyU3R5bGU6OnRyYW5zaXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgQXBwbHlQcm9wZXJ0eURlZmF1
bHQ8RVVzZXJEcmFnLCAmUmVuZGVyU3R5bGU6OnVzZXJEcmFnLCBFVXNlckRyYWcsICZSZW5kZXJT
dHlsZTo6c2V0VXNlckRyYWcsIEVVc2VyRHJhZywgJlJlbmRlclN0eWxlOjppbml0aWFsVXNlckRy
YWc+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJNb2RpZnksIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVVc2VyTW9kaWZ5LCAmUmVu
ZGVyU3R5bGU6OnVzZXJNb2RpZnksIEVVc2VyTW9kaWZ5LCAmUmVuZGVyU3R5bGU6OnNldFVzZXJN
b2RpZnksIEVVc2VyTW9kaWZ5LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxVc2VyTW9kaWZ5Pjo6Y3Jl
YXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRV
c2VyU2VsZWN0LCBBcHBseVByb3BlcnR5RGVmYXVsdDxFVXNlclNlbGVjdCwgJlJlbmRlclN0eWxl
Ojp1c2VyU2VsZWN0LCBFVXNlclNlbGVjdCwgJlJlbmRlclN0eWxlOjpzZXRVc2VyU2VsZWN0LCBF
VXNlclNlbGVjdCwgJlJlbmRlclN0eWxlOjppbml0aWFsVXNlclNlbGVjdD46OmNyZWF0ZUhhbmRs
ZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0V3JhcCwgQXBw
bHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBG
bG93LCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4sIENTU1Byb3BlcnR5V2Via2l0V3JhcFBh
ZGRpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eVdlYmtpdFdyYXBGbG93LCBBcHBseVByb3BlcnR5RGVmYXVsdDxXcmFwRmxvdywgJlJlbmRl
clN0eWxlOjp3cmFwRmxvdywgV3JhcEZsb3csICZSZW5kZXJTdHlsZTo6c2V0V3JhcEZsb3csIFdy
YXBGbG93LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxXcmFwRmxvdz46OmNyZWF0ZUhhbmRsZXIoKSk7
CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbiwgQXBw
bHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6OndyYXBNYXJnaW4sICZSZW5kZXJTdHlsZTo6
c2V0V3JhcE1hcmdpbiwgJlJlbmRlclN0eWxlOjppbml0aWFsV3JhcE1hcmdpbj46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0V3JhcFBh
ZGRpbmcsIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxlOjp3cmFwUGFkZGluZywgJlJl
bmRlclN0eWxlOjpzZXRXcmFwUGFkZGluZywgJlJlbmRlclN0eWxlOjppbml0aWFsV3JhcFBhZGRp
bmc+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdFdyYXBUaHJvdWdoLCBBcHBseVByb3BlcnR5RGVmYXVsdDxXcmFwVGhyb3VnaCwgJlJl
bmRlclN0eWxlOjp3cmFwVGhyb3VnaCwgV3JhcFRocm91Z2gsICZSZW5kZXJTdHlsZTo6c2V0V3Jh
cFRocm91Z2gsIFdyYXBUaHJvdWdoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxXcmFwVGhyb3VnaD46
OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2hp
dGVTcGFjZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVdoaXRlU3BhY2UsICZSZW5kZXJTdHlsZTo6
d2hpdGVTcGFjZSwgRVdoaXRlU3BhY2UsICZSZW5kZXJTdHlsZTo6c2V0V2hpdGVTcGFjZSwgRVdo
aXRlU3BhY2UsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFdoaXRlU3BhY2U+OjpjcmVhdGVIYW5kbGVy
KCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdpZG93cywgQXBwbHlQcm9w
ZXJ0eURlZmF1bHQ8c2hvcnQsICZSZW5kZXJTdHlsZTo6d2lkb3dzLCBzaG9ydCwgJlJlbmRlclN0
eWxlOjpzZXRXaWRvd3MsIHNob3J0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxXaWRvd3M+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdpZHRoLCBB
cHBseVByb3BlcnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6d2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0
V2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFNpemUsIEF1dG9FbmFibGVkLCBJbnRyaW5zaWNF
bmFibGVkLCBNaW5JbnRyaW5zaWNFbmFibGVkLCBOb25lRGlzYWJsZWQsIFVuZGVmaW5lZERpc2Fi
bGVkPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlXb3JkQnJlYWssIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVXb3JkQnJlYWssICZSZW5kZXJTdHls
ZTo6d29yZEJyZWFrLCBFV29yZEJyZWFrLCAmUmVuZGVyU3R5bGU6OnNldFdvcmRCcmVhaywgRVdv
cmRCcmVhaywgJlJlbmRlclN0eWxlOjppbml0aWFsV29yZEJyZWFrPjo6Y3JlYXRlSGFuZGxlcigp
KTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXb3JkU3BhY2luZywgQXBwbHlQ
cm9wZXJ0eUNvbXB1dGVMZW5ndGg8aW50LCAmUmVuZGVyU3R5bGU6OndvcmRTcGFjaW5nLCAmUmVu
ZGVyU3R5bGU6OnNldFdvcmRTcGFjaW5nLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxMZXR0ZXJXb3Jk
U3BhY2luZywgTm9ybWFsRW5hYmxlZCwgVGhpY2tuZXNzRGlzYWJsZWQsIFNWR1pvb21FbmFibGVk
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlX
b3JkV3JhcCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVdvcmRXcmFwLCAmUmVuZGVyU3R5bGU6Ondv
cmRXcmFwLCBFV29yZFdyYXAsICZSZW5kZXJTdHlsZTo6c2V0V29yZFdyYXAsIEVXb3JkV3JhcCwg
JlJlbmRlclN0eWxlOjppbml0aWFsV29yZFdyYXA+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVpJbmRleCwgQXBwbHlQcm9wZXJ0eUF1dG88aW50
LCAmUmVuZGVyU3R5bGU6OnpJbmRleCwgJlJlbmRlclN0eWxlOjpzZXRaSW5kZXgsICZSZW5kZXJT
dHlsZTo6aGFzQXV0b1pJbmRleCwgJlJlbmRlclN0eWxlOjpzZXRIYXNBdXRvWkluZGV4Pjo6Y3Jl
YXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlab29tLCBB
cHBseVByb3BlcnR5Wm9vbTo6Y3JlYXRlSGFuZGxlcigpKTsKK30KKworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjkyZWFiNjMyZjZlN2E2NGU1YzBmODcyYjk2ODc2
NmUwYmNjNzM1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXIuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdHlsZUJ1
aWxkZXJfaAorI2RlZmluZSBTdHlsZUJ1aWxkZXJfaAorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlO
YW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NTdHlsZVNlbGVjdG9y
OworY2xhc3MgQ1NTVmFsdWU7CitjbGFzcyBTdHlsZUJ1aWxkZXI7CisKK2NsYXNzIFByb3BlcnR5
SGFuZGxlciB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2b2lkICgqSW5oZXJpdEZ1bmN0aW9uKShD
U1NTdHlsZVNlbGVjdG9yKik7CisgICAgdHlwZWRlZiB2b2lkICgqSW5pdGlhbEZ1bmN0aW9uKShD
U1NTdHlsZVNlbGVjdG9yKik7CisgICAgdHlwZWRlZiB2b2lkICgqQXBwbHlGdW5jdGlvbikoQ1NT
U3R5bGVTZWxlY3RvciosIENTU1ZhbHVlKik7CisgICAgUHJvcGVydHlIYW5kbGVyKCkgOiBtX2lu
aGVyaXQoMCksIG1faW5pdGlhbCgwKSwgbV9hcHBseSgwKSB7IH0KKyAgICBQcm9wZXJ0eUhhbmRs
ZXIoSW5oZXJpdEZ1bmN0aW9uIGluaGVyaXQsIEluaXRpYWxGdW5jdGlvbiBpbml0aWFsLCBBcHBs
eUZ1bmN0aW9uIGFwcGx5KSA6IG1faW5oZXJpdChpbmhlcml0KSwgbV9pbml0aWFsKGluaXRpYWwp
LCBtX2FwcGx5KGFwcGx5KSB7IH0KKyAgICB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yKSBjb25zdCB7IEFTU0VSVChtX2luaGVyaXQpOyAoKm1faW5oZXJp
dCkoc2VsZWN0b3IpOyB9CisgICAgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVj
dG9yKiBzZWxlY3RvcikgY29uc3QgeyBBU1NFUlQobV9pbml0aWFsKTsgKCptX2luaXRpYWwpKHNl
bGVjdG9yKTsgfQorICAgIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3Rv
ciwgQ1NTVmFsdWUqIHZhbHVlKSBjb25zdCB7IEFTU0VSVChtX2FwcGx5KTsgKCptX2FwcGx5KShz
ZWxlY3RvciwgdmFsdWUpOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9p
bmhlcml0ICYmIG1faW5pdGlhbCAmJiBtX2FwcGx5OyB9CisgICAgSW5oZXJpdEZ1bmN0aW9uIGlu
aGVyaXRGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faW5oZXJpdDsgfQorICAgIEluaXRpYWxG
dW5jdGlvbiBpbml0aWFsRnVuY3Rpb24oKSB7IHJldHVybiBtX2luaXRpYWw7IH0KKyAgICBBcHBs
eUZ1bmN0aW9uIGFwcGx5RnVuY3Rpb24oKSB7IHJldHVybiBtX2FwcGx5OyB9Citwcml2YXRlOgor
ICAgIEluaGVyaXRGdW5jdGlvbiBtX2luaGVyaXQ7CisgICAgSW5pdGlhbEZ1bmN0aW9uIG1faW5p
dGlhbDsKKyAgICBBcHBseUZ1bmN0aW9uIG1fYXBwbHk7Cit9OworCitjbGFzcyBTdHlsZUJ1aWxk
ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0eWxlQnVpbGRlcik7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0IFN0eWxlQnVpbGRlciYgc2hhcmVkU3R5bGVCdWlsZGVyKCk7CisKKyAg
ICBjb25zdCBQcm9wZXJ0eUhhbmRsZXImIHByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbGlkKHByb3BlcnR5KSk7Cisg
ICAgICAgIHJldHVybiBtX3Byb3BlcnR5TWFwW2luZGV4KHByb3BlcnR5KV07CisgICAgfQorcHJp
dmF0ZToKKyAgICBTdHlsZUJ1aWxkZXIoKTsKKyAgICBzdGF0aWMgaW50IGluZGV4KENTU1Byb3Bl
cnR5SUQgcHJvcGVydHkpCisgICAgeworICAgICAgICByZXR1cm4gcHJvcGVydHkgLSBmaXJzdENT
U1Byb3BlcnR5OworICAgIH0KKworICAgIHN0YXRpYyBib29sIHZhbGlkKENTU1Byb3BlcnR5SUQg
cHJvcGVydHkpCisgICAgeworICAgICAgICBpbnQgaSA9IGluZGV4KHByb3BlcnR5KTsKKyAgICAg
ICAgcmV0dXJuIGkgPj0gMCAmJiBpIDwgbnVtQ1NTUHJvcGVydGllczsKKyAgICB9CisKKyAgICB2
b2lkIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBQcm9w
ZXJ0eUhhbmRsZXImIGhhbmRsZXIpCisgICAgeworICAgICAgICBBU1NFUlQodmFsaWQocHJvcGVy
dHkpKTsKKyAgICAgICAgQVNTRVJUKCFwcm9wZXJ0eUhhbmRsZXIocHJvcGVydHkpLmlzVmFsaWQo
KSk7CisgICAgICAgIG1fcHJvcGVydHlNYXBbaW5kZXgocHJvcGVydHkpXSA9IGhhbmRsZXI7Cisg
ICAgfQorCisgICAgdm9pZCBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlJRCBuZXdQcm9w
ZXJ0eSwgQ1NTUHJvcGVydHlJRCBlcXVpdmFsZW50UHJvcGVydHkpCisgICAgeworICAgICAgICBB
U1NFUlQodmFsaWQobmV3UHJvcGVydHkpKTsKKyAgICAgICAgQVNTRVJUKHZhbGlkKGVxdWl2YWxl
bnRQcm9wZXJ0eSkpOworICAgICAgICBBU1NFUlQoIXByb3BlcnR5SGFuZGxlcihuZXdQcm9wZXJ0
eSkuaXNWYWxpZCgpKTsKKyAgICAgICAgbV9wcm9wZXJ0eU1hcFtpbmRleChuZXdQcm9wZXJ0eSld
ID0gbV9wcm9wZXJ0eU1hcFtpbmRleChlcXVpdmFsZW50UHJvcGVydHkpXTsKKyAgICB9CisKKyAg
ICBQcm9wZXJ0eUhhbmRsZXIgbV9wcm9wZXJ0eU1hcFtudW1DU1NQcm9wZXJ0aWVzXTsKK307CisK
K30KKworI2VuZGlmIC8vIFN0eWxlQnVpbGRlcl9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>