<?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>161916</bug_id>
          
          <creation_ts>2016-09-13 11:04:58 -0700</creation_ts>
          <short_desc>[CSS Parser] Add CSS Variable Parsing support</short_desc>
          <delta_ts>2016-09-22 13:37:45 -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>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>46591</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1229211</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-13 11:04:58 -0700</bug_when>
    <thetext>[CSS Parser] Add CSS Variable Parsing support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229214</commentid>
    <comment_count>1</comment_count>
      <attachid>288701</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-13 11:08:28 -0700</bug_when>
    <thetext>Created attachment 288701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229215</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-13 11:11:25 -0700</bug_when>
    <thetext>Attachment 288701 did not pass style-queue:


ERROR: Source/WebCore/css/CSSVariableData.cpp:51:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/css/CSSVariableData.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229218</commentid>
    <comment_count>3</comment_count>
      <attachid>288703</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-13 11:13:10 -0700</bug_when>
    <thetext>Created attachment 288703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229252</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-13 12:10:49 -0700</bug_when>
    <thetext>Landed in r205869.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288701</attachid>
            <date>2016-09-13 11:08:28 -0700</date>
            <delta_ts>2016-09-13 11:13:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>61574</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTg2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDE2LTA5LTEzICBEYXZlIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFtDU1MgUGFyc2VyXSBBZGQgQ1NTIFZh
cmlhYmxlIFBhcnNpbmcgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYxOTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBub3Qgb25seSBhZGRzIHRoZSBwYXJzZXIgZm9yIENT
UyB2YXJpYWJsZXMgKGZyb20gQmxpbmspLCBidXQgaXQgYWxzbyBicmluZ3MgaW4KKyAgICAgICAg
YWxsIG9mIHRoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZCB0byBzdG9yZSB2YXJpYWJsZXMgYW5kIGN1
c3RvbSBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMuIFdlCisgICAgICAgIHdpbGwgYmUgYWJhbmRvbmlu
ZyBvdXIgb2xkIGRhdGEgc3RydWN0dXJlcyBldmVudHVhbGx5IGluIGZhdm9yIG9mIHRoZXNlIG5l
dyBvbmVzLiBUaGV5CisgICAgICAgIGFyZSBub3Qgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgb3Ro
ZXIgdGhhbiBvcGVyYXRpbmcgb24gdGhlIENTU1BhcnNlclRva2VuUmFuZ2VzIHJhdGhlcgorICAg
ICAgICB0aGFuIHRoZSBzb29uLXRvLWJlLXJlbW92ZWQgcGFyc2VyIHZhbHVlIGxpc3RzLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDdXN0b21JZGVudFZhbHVlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21JZGVudFZhbHVlOjpDU1NDdXN0b21JZGVu
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbUlkZW50VmFsdWU6OmN1c3RvbUNT
U1RleHQpOgorICAgICAgICAqIGNzcy9DU1NDdXN0b21JZGVudFZhbHVlLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tSWRlbnRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0N1c3RvbUlkZW50VmFsdWU6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0N1c3RvbUlkZW50VmFsdWU6OmlzS25vd25Qcm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0N1c3RvbUlkZW50VmFsdWU6OnZhbHVlQXNQcm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0N1c3RvbUlkZW50VmFsdWU6OmVxdWFscyk6CisgICAgICAgICogY3NzL0NTU0N1c3Rv
bVByb3BlcnR5RGVjbGFyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1
c3RvbVByb3BlcnR5RGVjbGFyYXRpb246OmN1c3RvbUNTU1RleHQpOgorICAgICAgICAqIGNzcy9D
U1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb246Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbjo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbjo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbjo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb246OkNTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24p
OgorICAgICAgICAqIGNzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmg6CisgICAgICAgICogY3Nz
L0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpjc3NUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpkZXN0cm95KToKKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjppc0N1c3RvbVByb3BlcnR5RGVjbGFy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzQ3VzdG9tSWRlbnRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6aXNWYXJpYWJsZVJlZmVyZW5jZVZhbHVlKToK
KyAgICAgICAgKiBjc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBjc3MvQ1NTVmFy
aWFibGVEYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6
OnVwZGF0ZVRva2Vucyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpjb25zdW1lQW5kVXBk
YXRlVG9rZW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6Q1NTVmFyaWFi
bGVEYXRhKToKKyAgICAgICAgKiBjc3MvQ1NTVmFyaWFibGVEYXRhLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVmFyaWFibGVEYXRhOjpjcmVhdGVSZXNvbHZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YXJpYWJsZURhdGE6OnRva2VuUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVE
YXRhOjp0b2tlbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpuZWVkc1Zh
cmlhYmxlUmVzb2x1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6OkNT
U1ZhcmlhYmxlRGF0YSk6CisgICAgICAgICogY3NzL0NTU1ZhcmlhYmxlRGVwZW5kZW50VmFsdWUu
aDoKKyAgICAgICAgKiBjc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4
dCk6CisgICAgICAgICogY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6dmFyaWFibGVEYXRhVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6ZXF1YWxz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OkNTU1Zhcmlh
YmxlUmVmZXJlbmNlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NWYXJpYWJsZVZhbHVlLmg6Cisg
ICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmZpbHRlclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29u
c3VtZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1
bWVWYXJpYWJsZVZhbHVlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1ZhcmlhYmxlUGFyc2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZVBhcnNlcjo6aXNWYWxp
ZFZhcmlhYmxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpjbGFzc2lmeUJsb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzVmFsaWRWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3Jl
OjpjbGFzc2lmeVZhcmlhYmxlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVQ
YXJzZXI6OmNvbnRhaW5zVmFsaWRWYXJpYWJsZVJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFyaWFibGVQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb25WYWx1ZSk6CisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5oOiBBZGRlZC4KKwogMjAxNi0wOS0xMiAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYS1zb3VyY2UgYmFj
a2VkIGVsZW1lbnRzIGJsb2NrIGxvYWQgZXZlbnQ7IGNhdXNlIHdlYi1wbGF0Zm9ybS10ZXN0IGZs
YWtpbmVzcwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNTgyMSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMjUzLDYgKzEy
NTMsOCBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL0NTU0NvbnRlbnREaXN0cmlidXRp
b25WYWx1ZS5jcHAKICAgICBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCiAgICAgY3NzL0NTU0N1
cnNvckltYWdlVmFsdWUuY3BwCisgICAgY3NzL0NTU0N1c3RvbUlkZW50VmFsdWUuY3BwCisgICAg
Y3NzL0NTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24uY3BwCiAgICAgY3NzL0NTU0RlZmF1bHRT
dHlsZVNoZWV0cy5jcHAKICAgICBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKICAgICBjc3Mv
Rm9udEZhY2VTZXQuY3BwCkBAIC0xMzA3LDcgKzEzMDksOSBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgY3NzL0NTU1ZhbHVlLmNwcAogICAgIGNzcy9DU1NWYWx1ZUxpc3QuY3BwCiAgICAgY3Nz
L0NTU1ZhbHVlUG9vbC5jcHAKKyAgICBjc3MvQ1NTVmFyaWFibGVEYXRhLmNwcAogICAgIGNzcy9D
U1NWYXJpYWJsZURlcGVuZGVudFZhbHVlLmNwcAorICAgIGNzcy9DU1NWYXJpYWJsZVJlZmVyZW5j
ZVZhbHVlLmNwcAogICAgIGNzcy9DU1NWYXJpYWJsZVZhbHVlLmNwcAogICAgIGNzcy9ET01DU1NO
YW1lc3BhY2UuY3BwCiAgICAgY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCkBAIC0xMzY0LDYgKzEz
NjgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL3BhcnNlci9DU1NTdXBwb3J0c1Bh
cnNlci5jcHAKICAgICBjc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAKICAgICBjc3MvcGFyc2Vy
L0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAorICAgIGNzcy9wYXJzZXIvQ1NTVmFyaWFibGVQ
YXJzZXIuY3BwCiAgICAgY3NzL3BhcnNlci9NZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmNwcAogICAg
IGNzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAKICAgICBjc3MvcGFyc2VyL1NpemVzQXR0
cmlidXRlUGFyc2VyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA1ODIxKQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzQ2LDYgKzMzNDYsMTYgQEAKIAkJOTQ0NENCRDQxRDg2MEM4QjAwNzNBMDc0IC8qIFNpemVzQ2Fs
Y1BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTQ0NENCQ0YxRDg2MEM3NDAwNzNBMDc0IC8qIFNpemVzQ2FsY1BhcnNlci5oICovOyB9OwogCQk5
NDQ0Q0JENTFEODYwQzhCMDA3M0EwNzQgLyogU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ0NENCRDIxRDg2MEM3
NDAwNzNBMDc0IC8qIFNpemVzQXR0cmlidXRlUGFyc2VyLmNwcCAqLzsgfTsKIAkJOTQ0NENCRDYx
RDg2MEM4QjAwNzNBMDc0IC8qIFNpemVzQXR0cmlidXRlUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDQ0Q0JEMTFEODYwQzc0MDA3M0EwNzQg
LyogU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuaCAqLzsgfTsKKwkJOTQ0NENCRDkxRDg4NDgzQTAwNzNB
MDc0IC8qIENTU1ZhcmlhYmxlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk0NDRDQkQ4MUQ4ODQ4MkEwMDczQTA3NCAvKiBDU1NWYXJpYWJs
ZVBhcnNlci5jcHAgKi87IH07CisJCTk0NDRDQkRBMUQ4ODQ4M0EwMDczQTA3NCAvKiBDU1NWYXJp
YWJsZVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTQ0NENCRDcxRDg4NDgyQTAwNzNBMDc0IC8qIENTU1ZhcmlhYmxlUGFyc2VyLmggKi87IH07
CisJCTk0NDRDQkUzMUQ4ODYxOTgwMDczQTA3NCAvKiBDU1NDdXN0b21JZGVudFZhbHVlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NDRDQkUyMUQ4
ODYxNTgwMDczQTA3NCAvKiBDU1NDdXN0b21JZGVudFZhbHVlLmNwcCAqLzsgfTsKKwkJOTQ0NENC
RTQxRDg4NjE5OTAwNzNBMDc0IC8qIENTU0N1c3RvbUlkZW50VmFsdWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NDRDQkUxMUQ4ODYxNTgwMDczQTA3
NCAvKiBDU1NDdXN0b21JZGVudFZhbHVlLmggKi87IH07CisJCTk0NDRDQkU1MUQ4ODYxOTkwMDcz
QTA3NCAvKiBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NDRDQkUwMUQ4ODYxNTgwMDczQTA3NCAv
KiBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uLmNwcCAqLzsgfTsKKwkJOTQ0NENCRTYxRDg4
NjE5OTAwNzNBMDc0IC8qIENTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NDRDQkRGMUQ4ODYxNTgwMDcz
QTA3NCAvKiBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uLmggKi87IH07CisJCTk0NDRDQkU3
MUQ4ODYxQzIwMDczQTA3NCAvKiBDU1NWYXJpYWJsZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ0NENCREUxRDg4NjE1ODAwNzNBMDc0IC8q
IENTU1ZhcmlhYmxlRGF0YS5jcHAgKi87IH07CisJCTk0NDRDQkU4MUQ4ODYxQzIwMDczQTA3NCAv
KiBDU1NWYXJpYWJsZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk0NDRDQkREMUQ4ODYxNTgwMDczQTA3NCAvKiBDU1NWYXJpYWJsZURhdGEuaCAq
LzsgfTsKKwkJOTQ0NENCRTkxRDg4NjFDQTAwNzNBMDc0IC8qIENTU1ZhcmlhYmxlUmVmZXJlbmNl
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTQ0NENCREMxRDg4NjE1ODAwNzNBMDc0IC8qIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuY3Bw
ICovOyB9OworCQk5NDQ0Q0JFQTFEODg2MUNBMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVSZWZlcmVu
Y2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTQ0NENCREIxRDg4NjE1ODAwNzNBMDc0IC8qIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaCAq
LzsgfTsKIAkJOTQ2RDM3MkQxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcyODFENkNCMjhC
MDA3NzA4NEYgLyogQ1NTUGFyc2VyLmNwcCAqLzsgfTsKIAkJOTQ2RDM3MkUxRDZDQjI5NDAwNzcw
ODRGIC8qIENTU1BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTQ2RDM3MjkxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk0NkQzNzJGMUQ2Q0Iy
OTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcyQTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2Vy
TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xMDUwNyw2ICsxMDUxNywxNiBAQAogCQk5NDQ0Q0JEMDFEODYwQzc0MDA3M0EwNzQgLyogU2l6
ZXNDYWxjUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNp
emVzQ2FsY1BhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIvU2l6ZXNDYWxjUGFyc2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ0NENCRDExRDg2MEM3NDAwNzNBMDc0IC8qIFNp
emVzQXR0cmlidXRlUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNp
emVzQXR0cmlidXRlUGFyc2VyLmg7IHBhdGggPSBwYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ0NENCRDIxRDg2MEM3NDAwNzNBMDc0
IC8qIFNpemVzQXR0cmlidXRlUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFNpemVzQXR0cmlidXRlUGFyc2VyLmNwcDsgcGF0aCA9IHBhcnNlci9TaXplc0F0
dHJpYnV0ZVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NDRDQkQ3
MUQ4ODQ4MkEwMDczQTA3NCAvKiBDU1NWYXJpYWJsZVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDU1NWYXJpYWJsZVBhcnNlci5oOyBwYXRoID0gcGFyc2VyL0NTU1Zh
cmlhYmxlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NDRDQkQ4MUQ4
ODQ4MkEwMDczQTA3NCAvKiBDU1NWYXJpYWJsZVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NWYXJpYWJsZVBhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIv
Q1NTVmFyaWFibGVQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDQ0
Q0JEQjFEODg2MTU4MDA3M0EwNzQgLyogQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NDRDQkRDMUQ4ODYxNTgwMDczQTA3NCAv
KiBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5NDQ0Q0JERDFEODg2MTU4MDA3M0EwNzQgLyogQ1NTVmFyaWFibGVE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1ZhcmlhYmxlRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDQ0Q0JERTFEODg2MTU4MDA3M0EwNzQg
LyogQ1NTVmFyaWFibGVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENTU1ZhcmlhYmxlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0
NDRDQkRGMUQ4ODYxNTgwMDczQTA3NCAvKiBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0N1c3RvbVByb3BlcnR5RGVjbGFy
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ0NENCRTAxRDg4NjE1ODAw
NzNBMDc0IC8qIENTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NDRDQkUxMUQ4ODYxNTgwMDczQTA3NCAv
KiBDU1NDdXN0b21JZGVudFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENTU0N1c3RvbUlkZW50VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ0
NENCRTIxRDg4NjE1ODAwNzNBMDc0IC8qIENTU0N1c3RvbUlkZW50VmFsdWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk0NkQzNzI4MUQ2Q0IyOEIwMDc3MDg0RiAvKiBD
U1NQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFy
c2VyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NDZEMzcyOTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlci5oOyBwYXRoID0gcGFyc2VyL0NT
U1BhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzcyQTFENkNCMjhC
MDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBDU1NQYXJzZXJNb2RlLmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyTW9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgyMTQsNiArMTgyMzQsOCBAQAogCQkJCTk0NkQz
NzM3MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuaCAqLywKIAkJCQk5NDZEMzczNTFE
NkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwICovLAogCQkJCTk0
NkQzNzM4MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oICovLAor
CQkJCTk0NDRDQkQ4MUQ4ODQ4MkEwMDczQTA3NCAvKiBDU1NWYXJpYWJsZVBhcnNlci5jcHAgKi8s
CisJCQkJOTQ0NENCRDcxRDg4NDgyQTAwNzNBMDc0IC8qIENTU1ZhcmlhYmxlUGFyc2VyLmggKi8s
CiAJCQkJOTQ5M0I2QjYxRDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIu
Y3BwICovLAogCQkJCTk0OTNCNkI3MUQ3NEIzOTUwMDg4RTc4MCAvKiBNZWRpYVF1ZXJ5QmxvY2tX
YXRjaGVyLmggKi8sCiAJCQkJOTQ5M0I2QjgxRDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlQ
YXJzZXIuY3BwICovLApAQCAtMjIzMTgsNiArMjIzNDAsMTAgQEAKIAkJCQkyRDhGRUJEQjE0M0Uz
RUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3NmYWRlVmFsdWUuaCAqLywKIAkJCQlBQTA5NzhFRDBBQkFB
NkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgKi8sCiAJCQkJQUEwOTc4RUUw
QUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCAqLywKKwkJCQk5NDQ0Q0JF
MjFEODg2MTU4MDA3M0EwNzQgLyogQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5jcHAgKi8sCisJCQkJOTQ0
NENCRTExRDg4NjE1ODAwNzNBMDc0IC8qIENTU0N1c3RvbUlkZW50VmFsdWUuaCAqLywKKwkJCQk5
NDQ0Q0JFMDFEODg2MTU4MDA3M0EwNzQgLyogQ1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbi5j
cHAgKi8sCisJCQkJOTQ0NENCREYxRDg4NjE1ODAwNzNBMDc0IC8qIENTU0N1c3RvbVByb3BlcnR5
RGVjbGFyYXRpb24uaCAqLywKIAkJCQlCQzc3OUUxMzFCQjIxNUJCMDBDQUE4QkYgLyogQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZS5oICovLAogCQkJCTRBOUNDODE1MTZCQjlBQzYwMEVDNjQ1QSAvKiBD
U1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwICovLAogCQkJCTRBOUNDODE2MTZCQjlBQzYwMEVDNjQ1
QSAvKiBDU1NEZWZhdWx0U3R5bGVTaGVldHMuaCAqLywKQEAgLTIyNDUwLDggKzIyNDc2LDEyIEBA
CiAJCQkJQThEMDY1MUMwQTIzQzFGRTAwNUU3MjAzIC8qIENTU1ZhbHVlTGlzdC5pZGwgKi8sCiAJ
CQkJRTQ5QkRBMEExMzFGRDNFNTAwM0M1NkYwIC8qIENTU1ZhbHVlUG9vbC5jcHAgKi8sCiAJCQkJ
RTQ5QkQ5RjkxMzFGRDJFRDAwM0M1NkYwIC8qIENTU1ZhbHVlUG9vbC5oICovLAorCQkJCTk0NDRD
QkRFMUQ4ODYxNTgwMDczQTA3NCAvKiBDU1NWYXJpYWJsZURhdGEuY3BwICovLAorCQkJCTk0NDRD
QkREMUQ4ODYxNTgwMDczQTA3NCAvKiBDU1NWYXJpYWJsZURhdGEuaCAqLywKIAkJCQlCQzE3OTBC
QzFCQkIzNkE4MDAwNkQxM0UgLyogQ1NTVmFyaWFibGVEZXBlbmRlbnRWYWx1ZS5jcHAgKi8sCiAJ
CQkJQkMxNzkwQkExQkI1QUIzRjAwMDZEMTNFIC8qIENTU1ZhcmlhYmxlRGVwZW5kZW50VmFsdWUu
aCAqLywKKwkJCQk5NDQ0Q0JEQzFEODg2MTU4MDA3M0EwNzQgLyogQ1NTVmFyaWFibGVSZWZlcmVu
Y2VWYWx1ZS5jcHAgKi8sCisJCQkJOTQ0NENCREIxRDg4NjE1ODAwNzNBMDc0IC8qIENTU1Zhcmlh
YmxlUmVmZXJlbmNlVmFsdWUuaCAqLywKIAkJCQlCQzE3OTBCRTFCQkYyQzQzMDAwNkQxM0UgLyog
Q1NTVmFyaWFibGVWYWx1ZS5jcHAgKi8sCiAJCQkJQkMxNzkwQkYxQkJGMkM0MzAwMDZEMTNFIC8q
IENTU1ZhcmlhYmxlVmFsdWUuaCAqLywKIAkJCQlBODBFNkNFMTBBMTk4OUNBMDA3RkI4QzUgLyog
RGFzaGJvYXJkUmVnaW9uLmggKi8sCkBAIC0yNDM2OCw2ICsyNDM5OCw3IEBACiAJCQkJOTMzMDlE
RTQwOTlFNjQ5MjAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
RjE1MzRERTExQjUzMkVDMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0RjE1MzRFMDExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTk0NDRDQkU0MUQ4ODYxOTkwMDczQTA3NCAvKiBDU1NDdXN0
b21JZGVudFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzQUM2NDhCMjEyOUUxNDY1MDBDM0VC
MjUgLyogRWRpdGluZ0JvdW5kYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkFCNkM2QzEyNTUw
NjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjMwNDND
RDBBRTAzNzNCMDBBODI2NDcgLyogRWRpdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MzU1LDYg
KzI1Mzg2LDcgQEAKIAkJCQlCMkZBM0RDMzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljU21vb3RoQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RDNTBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkZBM0RDNzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpY0Ficy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTQ0NENCREExRDg4NDgzQTAw
NzNBMDc0IC8qIENTU1ZhcmlhYmxlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RD
OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQ0IwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNl
Z0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRENE
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVs
LmggaW4gSGVhZGVycyAqLywKQEAgLTI1OTMxLDYgKzI1OTYzLDcgQEAKIAkJCQkzMUQ1OTFCMzE2
Njk3QTZDMDBFNkJGMDIgLyogUGx1Z0luQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUM2
RTRGNDBENzQ1RTQ4MDA2NDQyRTkgLyogUGx1Z2luRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTcyMDVBQkMxMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQk5NDQ0Q0JFQTFEODg2MUNBMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVSZWZlcmVuY2VW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwOEZFREQxRDU5MkI4QjAwOEJBOENCIC8qIFBs
dWdpbkluZm9Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcyQUUxRTUxODNDMDc0MTAw
MEE1OTg4IC8qIFBsdWdpblJlcGxhY2VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUUyMTgz
QTE3MzU5RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jlc291cmNlcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjE0MCw2ICsyNjE3Myw3IEBACiAJCQkJNkVEODc4QzUxNDc0OTNGNDAwNEMzNTk3IC8qIFJl
bmRlclRhYmxlQ2FwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThERjRBRTkwOTgwQzQyQzAw
NTI5ODFCIC8qIFJlbmRlclRhYmxlQ2VsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThERjRBRjEw
OTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRlclRhYmxlQ29sLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
NDQ0Q0JFODFEODg2MUMyMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVEYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOERGNEFFRTA5ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFibGVSb3cuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4REY0QUVGMDk4MEM0MkMwMDUyOTgxQiAvKiBSZW5kZXJUYWJsZVNl
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODhDMDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJUZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTI2NzQwLDYgKzI2Nzc0LDcgQEAKIAkJCQkw
OEM3MTM2RTEyODk1NkEzMDAxQjEwN0UgLyogU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9m
Zi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRTIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RS
ZWZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FFNTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHVFNwYW5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDQ0Q0JFNjFEODg2MTk5
MDA3M0EwNzQgLyogQ1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjdBRTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1VuaXRUeXBlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBRUEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1VSSVJlZmVyZW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRUQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1VzZUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjgxMDksNiArMjgxNDQsNyBAQAogCQkJCTk3NkQ2
QzgwMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNEZF
OUU1MEI1Q0E1MzkwMDNFNEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzhEMDdCNjE0NUEwRjAzMDA5NjkwOEQgLyogRmlsZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk5NDQ0Q0JFOTFEODg2MUNBMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVSZWZlcmVu
Y2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTg4QTkwNDE3NTUzQ0Q3MDAwQzc0Rjkg
LyogRmlsZUljb25Mb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNEQkQxMjUxRjEy
RDAwM0VGMjY5IC8qIEZpbGVJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc2RDZD
ODUxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg2
NzAsNiArMjg3MDYsNyBAQAogCQkJCTc3Mjg2OTgzMTRGRDlBREEwMEY0ODREQyAvKiBKU0VYVFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RjRDOTZEQzFB
RDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEJvZHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0Q0
Qzk2REMxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hIZWFkZXJzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTk0NDRDQkQ5MUQ4ODQ4M0EwMDczQTA3NCAvKiBDU1NWYXJpYWJsZVBhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3RTRDOTZEQzFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaFJl
cXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEU0Qzk2REMxQUQ0NDgzNTAwMzY1QTUwIC8q
IEpTRmV0Y2hSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAwRjAxNDBFMEExODk1
MDBGRDA0RTMgLyogSlNGaWxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg3NDQsNiArMjg3ODEs
NyBAQAogCQkJCUE4MEU3RTk4MEExQTgzRTMwMDdGQjhDNSAvKiBKU0hUTUxJbnB1dEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDNDM4NzgwRTg4NkNDNzAwNTMzREQ1IC8qIEpTSFRN
TElucHV0RWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNjE0OEE3ODEyRTQx
RTNCMDA0NEE3ODQgLyogSlNIVE1MS2V5Z2VuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk5NDQ0Q0JFNzFEODg2MUMyMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBRTJBQjIxMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMYWJlbEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjMwQTFDRTYzQjAwQjQyQjI1IC8qIEpT
SFRNTExlZ2VuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjUwQTFDRTYz
QjAwQjQyQjI1IC8qIEpTSFRNTExJRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NTEy
LDYgKzI5NTUwLDcgQEAKIAkJCQlBNzE5N0YyNjE3NTY4QUU1MDA3Qjk0NDIgLyogUGFnZVRocm90
dGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTI4NEFFQTEwNDQ3REVFMDBFQUVCNTIgLyog
UGFnZVRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUUxRUNDMjBDOTFD
OTA0MDBEQzI1NUIgLyogUGFnZVVSTFJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDQ0
Q0JFMzFEODg2MTk4MDA3M0EwNzQgLyogQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRkQ1Qjk3QTEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjBBMjEyQjAyNkY3MDBDMUEzNTkgLyogUGFu
bmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDE5MTJCMDI2NzYwMEMxQTM1OSAvKiBQ
YW5uZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk2OTQsNiArMjk3MzMsNyBAQAogCQkJ
CThBQzgyMkZDMTgwRkMwMzMwMEZCNjRENSAvKiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQTNGRjlDMzE1MjY1MzU5MDAyMjg4QTEgLyogUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODdGMDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ0NENCRTUxRDg4
NjE5OTAwNzNBMDc0IC8qIENTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTQzQkY1OUMxMTQ5MjkyODAwQzY0M0NBIC8qIFJlbmRlclByb2dyZXNzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTVBNTc0RjI0MTMxREI5MzkwMDQ3MUI4OCAvKiBSZW5kZXJR
dW90ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlENzBBRDY1NzEzRTEzNDJCMDA1QjUwQjQgLyog
UmVuZGVyUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0N1c3RvbUlkZW50VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDdXN0b21JZGVudFZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
MiBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIgorCisjaW5j
bHVkZSAiQ1NTTWFya3VwLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0NTU0N1c3RvbUlkZW50VmFsdWU6OkNTU0N1c3RvbUlkZW50VmFsdWUoY29uc3QgU3RyaW5nJiBz
dHIpCisgICAgOiBDU1NWYWx1ZShDdXN0b21JZGVudENsYXNzKQorICAgICwgbV9zdHJpbmcoc3Ry
KQorICAgICwgbV9wcm9wZXJ0eUlkKENTU1Byb3BlcnR5SW52YWxpZCkgeyB9CisKK0NTU0N1c3Rv
bUlkZW50VmFsdWU6OkNTU0N1c3RvbUlkZW50VmFsdWUoQ1NTUHJvcGVydHlJRCBpZCkKKyAgICA6
IENTU1ZhbHVlKEN1c3RvbUlkZW50Q2xhc3MpCisgICAgLCBtX3N0cmluZygpCisgICAgLCBtX3By
b3BlcnR5SWQoaWQpCit7CisgICAgQVNTRVJUKGlzS25vd25Qcm9wZXJ0eUlEKCkpOworfQorCisK
K1N0cmluZyBDU1NDdXN0b21JZGVudFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKK3sKKyAg
ICBpZiAoaXNLbm93blByb3BlcnR5SUQoKSkKKyAgICAgICAgcmV0dXJuIGdldFByb3BlcnR5TmFt
ZUF0b21pY1N0cmluZyhtX3Byb3BlcnR5SWQpOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KyAgICBzZXJpYWxpemVJZGVudGlmaWVyKG1fc3RyaW5nLCBidWlsZGVyKTsKKyAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21JZGVudFZhbHVlLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbUlkZW50VmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDcyIEBACisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2lu
Y2x1ZGUgIkNTU1ZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTQ3Vz
dG9tSWRlbnRWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxDU1NDdXN0b21JZGVudFZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBzdHIpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0b21JZGVudFZhbHVlKHN0cikpOwor
ICAgIH0KKworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhbmQgbGF6aWx5IHBhcnNlIHRoZSBD
U1NQcm9wZXJ0eUlEIGluIGlzS25vd25Qcm9wZXJ0eUlEKCkuCisgICAgc3RhdGljIFJlZjxDU1ND
dXN0b21JZGVudFZhbHVlPiBjcmVhdGUoQ1NTUHJvcGVydHlJRCBpZCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbUlkZW50VmFsdWUoaWQpKTsKKyAgICB9CisK
KyAgICBTdHJpbmcgdmFsdWUoKSBjb25zdCB7IEFTU0VSVCghaXNLbm93blByb3BlcnR5SUQoKSk7
IHJldHVybiBtX3N0cmluZzsgfQorICAgIGJvb2wgaXNLbm93blByb3BlcnR5SUQoKSBjb25zdCB7
IHJldHVybiBtX3Byb3BlcnR5SWQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyB9CisgICAgQ1NTUHJv
cGVydHlJRCB2YWx1ZUFzUHJvcGVydHlJRCgpIGNvbnN0IHsgQVNTRVJUKGlzS25vd25Qcm9wZXJ0
eUlEKCkpOyByZXR1cm4gbV9wcm9wZXJ0eUlkOyB9CisKKyAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4
dCgpIGNvbnN0OworCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSYg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNLbm93blByb3BlcnR5SUQoKSA/
IG1fcHJvcGVydHlJZCA9PSBvdGhlci5tX3Byb3BlcnR5SWQgOiBtX3N0cmluZyA9PSBvdGhlci5t
X3N0cmluZzsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ1NTQ3VzdG9tSWRlbnRWYWx1ZShjb25z
dCBTdHJpbmcmKTsKKyAgICBDU1NDdXN0b21JZGVudFZhbHVlKENTU1Byb3BlcnR5SUQpOworCisg
ICAgLy8gRklYTUU6IENoYW5nZSB0aGlzIHRvIGFuIEF0b21pY1N0cmluZy4KKyAgICBTdHJpbmcg
bV9zdHJpbmc7CisgICAgQ1NTUHJvcGVydHlJRCBtX3Byb3BlcnR5SWQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX1ZBTFVFKENTU0N1
c3RvbUlkZW50VmFsdWUsIGlzQ3VzdG9tSWRlbnRWYWx1ZSgpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLy8gQ29weXJpZ2h0IDIwMTUg
VGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbi5oIgorCisjaW5jbHVkZSAiQ1NTUGFyc2Vy
VG9rZW5SYW5nZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBDU1NDdXN0b21Q
cm9wZXJ0eURlY2xhcmF0aW9uOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKK3sKKyAgICBpZiAobV92
YWx1ZSkKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUtPnRva2VuUmFuZ2UoKS5zZXJpYWxpemUoKTsK
KyAgICBBU1NFUlQobV92YWx1ZUlkICE9IENTU1ZhbHVlSW50ZXJuYWxWYXJpYWJsZVZhbHVlKTsK
KyAgICByZXR1cm4gZ2V0VmFsdWVOYW1lKG1fdmFsdWVJZCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eURlY2xh
cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3Bl
cnR5RGVjbGFyYXRpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODMg
QEAKKy8vIENvcHlyaWdodCAyMDE1IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhcmlhYmxlRGF0
YS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NDdXN0b21Qcm9wZXJ0
eURlY2xhcmF0aW9uIDogcHVibGljIENTU1ZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PENTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIFJlZjxDU1NWYXJpYWJsZURhdGE+JiYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKG5hbWUsIFdURk1v
dmUodmFsdWUpKSk7CisgICAgfQorCisgICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eURl
Y2xhcmF0aW9uPiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBDU1NWYWx1ZUlEIGlk
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3VzdG9tUHJvcGVydHlE
ZWNsYXJhdGlvbihuYW1lLCBpZCkpOworICAgIH0KKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIENTU1ZhcmlhYmxlRGF0YSogdmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9CisgICAgQ1NTVmFsdWVJRCBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVJZDsgfQorICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkg
Y29uc3Q7CisKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0
aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdGhpcyA9PSAmb3RoZXI7IH0KKworcHJpdmF0ZToK
KyAgICBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgQ1NTVmFsdWVJRCBpZCkKKyAgICAgICAgOiBDU1NWYWx1ZShDdXN0b21Qcm9wZXJ0eURlY2xh
cmF0aW9uQ2xhc3MpCisgICAgICAgICwgbV9uYW1lKG5hbWUpCisgICAgICAgICwgbV92YWx1ZShu
dWxscHRyKQorICAgICAgICAsIG1fdmFsdWVJZChpZCkKKyAgICB7CisgICAgICAgIEFTU0VSVChp
ZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0aWFsIHx8IGlkID09IENT
U1ZhbHVlVW5zZXQgfHwgaWQgPT0gQ1NTVmFsdWVSZXZlcnQpOworICAgIH0KKworICAgIENTU0N1
c3RvbVByb3BlcnR5RGVjbGFyYXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NT
VmFyaWFibGVEYXRhPiYmIHZhbHVlKQorICAgICAgICA6IENTU1ZhbHVlKEN1c3RvbVByb3BlcnR5
RGVjbGFyYXRpb25DbGFzcykKKyAgICAgICAgLCBtX25hbWUobmFtZSkKKyAgICAgICAgLCBtX3Zh
bHVlKFdURk1vdmUodmFsdWUpKQorICAgICAgICAsIG1fdmFsdWVJZChDU1NWYWx1ZUludGVybmFs
VmFyaWFibGVWYWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nIG1f
bmFtZTsKKyAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiBtX3ZhbHVlOworICAgIENTU1ZhbHVl
SUQgbV92YWx1ZUlkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0NTU19WQUxVRShDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uLCBpc0N1
c3RvbVByb3BlcnR5RGVjbGFyYXRpb24oKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U0N1c3RvbVByb3BlcnR5VmFsdWUuaAkocmV2aXNpb24gMjA1Nzg5KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAorLy8gRklYTUUtTkVXUEFSU0VSOiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBm
YXZvciBvZiBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENTU0N1c3RvbVByb3BlcnR5VmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTVmFsdWUg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCShyZXZpc2lvbiAyMDU3ODkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4
IEBACiAjaW5jbHVkZSAiQ1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTQ3Jvc3NmYWRlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCisj
aW5jbHVkZSAiQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1c3RvbVByb3Bl
cnR5RGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAj
aW5jbHVkZSAiQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3Jj
VmFsdWUuaCIKQEAgLTU4LDYgKzYwLDcgQEAKICNpbmNsdWRlICJDU1NVbnNldFZhbHVlLmgiCiAj
aW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVEZXBlbmRlbnRW
YWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NWYXJpYWJsZVZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHQ29sb3IuaCIKICNpbmNsdWRlICJT
VkdQYWludC5oIgpAQCAtMzYyLDYgKzM2NSwxMiBAQCBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQo
KSBjb25zdAogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTVmFyaWFibGVEZXBlbmRlbnRWYWx1
ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKICAgICBjYXNlIFZhcmlhYmxlQ2xhc3M6CiAgICAg
ICAgIHJldHVybiBkb3duY2FzdDxDU1NWYXJpYWJsZVZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4
dCgpOworICAgIGNhc2UgQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbkNsYXNzOgorICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbj4oKnRoaXMpLmN1c3Rv
bUNTU1RleHQoKTsKKyAgICBjYXNlIEN1c3RvbUlkZW50Q2xhc3M6CisgICAgICAgIHJldHVybiBk
b3duY2FzdDxDU1NDdXN0b21JZGVudFZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOworICAg
IGNhc2UgVmFyaWFibGVSZWZlcmVuY2VDbGFzczoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENT
U1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CiAgICAgfQog
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MDUsNiArNTE0LDE1IEBAIHZvaWQgQ1NT
VmFsdWU6OmRlc3Ryb3koKQogICAgIGNhc2UgVmFyaWFibGVDbGFzczoKICAgICAgICAgZGVsZXRl
IGRvd25jYXN0PENTU1ZhcmlhYmxlVmFsdWU+KHRoaXMpOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uQ2xhc3M6CisgICAgICAgIGRlbGV0ZSBkb3du
Y2FzdDxDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uPih0aGlzKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgQ3VzdG9tSWRlbnRDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENT
U0N1c3RvbUlkZW50VmFsdWU+KHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBWYXJp
YWJsZVJlZmVyZW5jZUNsYXNzOgorICAgICAgICBkZWxldGUgZG93bmNhc3Q8Q1NTVmFyaWFibGVS
ZWZlcmVuY2VWYWx1ZT4odGhpcyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAkocmV2aXNpb24gMjA1
Nzg5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyMyw2ICsxMjMsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbmltYXRpb25UcmlnZ2VyU2Ny
b2xsVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBBbmltYXRpb25UcmlnZ2Vy
U2Nyb2xsQ2xhc3M7IH0KICNlbmRpZgogCisgICAgYm9vbCBpc0N1c3RvbVByb3BlcnR5RGVjbGFy
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBDdXN0b21Qcm9wZXJ0eURlY2xh
cmF0aW9uQ2xhc3M7IH0KKyAgICBib29sIGlzQ3VzdG9tSWRlbnRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xhc3NUeXBlID09IEN1c3RvbUlkZW50Q2xhc3M7IH0KKyAgICBib29sIGlzVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFZhcmlhYmxl
UmVmZXJlbmNlQ2xhc3M7IH0KKwogICAgIGJvb2wgaXNDU1NPTVNhZmUoKSBjb25zdCB7IHJldHVy
biBtX2lzQ1NTT01TYWZlOyB9CiAgICAgYm9vbCBpc1N1YnR5cGVFeHBvc2VkVG9DU1NPTSgpIGNv
bnN0CiAgICAgeyAKQEAgLTE5MiwxMCArMTk2LDE3IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiAg
ICAgICAgIENTU0NvbnRlbnREaXN0cmlidXRpb25DbGFzcywKKyAgICAgICAgCisgICAgICAgIC8v
IEZJWE1FLU5FV1BBUlNFUjogUmVtb3ZlIGluIGZhdm9yIG9mIG5ldyB2YXJpYWJsZXMgaW1wbGVt
ZW50YXRpb24uCiAgICAgICAgIEN1c3RvbVByb3BlcnR5Q2xhc3MsCiAgICAgICAgIFZhcmlhYmxl
RGVwZW5kZW50Q2xhc3MsCiAgICAgICAgIFZhcmlhYmxlQ2xhc3MsCiAKKyAgICAgICAgLy8gTmV3
IHZhcmlhYmxlcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgQ3VzdG9tUHJvcGVydHlEZWNsYXJh
dGlvbkNsYXNzLAorICAgICAgICBDdXN0b21JZGVudENsYXNzLAorICAgICAgICBWYXJpYWJsZVJl
ZmVyZW5jZUNsYXNzLAorCiAgICAgICAgIC8vIExpc3QgY2xhc3MgdHlwZXMgbXVzdCBhcHBlYXIg
YWZ0ZXIgVmFsdWVMaXN0Q2xhc3MuCiAgICAgICAgIFZhbHVlTGlzdENsYXNzLAogICAgICAgICBJ
bWFnZVNldENsYXNzLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4J
KHJldmlzaW9uIDIwNTc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC04MzMsNiArODMzLDEyIEBAIHBhZGRpbmcKIHBhZGRpbmct
Ym94CiAKIC8vCisvLyBWYXJpYWJsZXMgSW1wbGVtZW50YXRpb24KKy8vCit2YXIKKy1pbnRlcm5h
bC12YXJpYWJsZS12YWx1ZQorCisvLwogLy8gQ1NTX1BST1BfQlJFQUtfQkVGT1JFL0FGVEVSL0lO
U0lERQogLy8KIGF2b2lkLWNvbHVtbgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zhcmlh
YmxlRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxl
RGF0YS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxl
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NSBAQAorLy8gQ29weXJpZ2h0IDIw
MTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgor
Ly8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQ1NTVmFyaWFibGVEYXRhLmgiCisKKyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNs
dWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIENTU1Zhcmlh
YmxlRGF0YTo6dXBkYXRlVG9rZW5zKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQor
eworICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIGN1cnJlbnRPZmZzZXQgPSBtX2JhY2tpbmdTdHJp
bmcuY2hhcmFjdGVyczxDaGFyYWN0ZXJUeXBlPigpOworICAgIGZvciAoY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mIHRva2VuIDogcmFuZ2UpIHsKKyAgICAgICAgaWYgKHRva2VuLmhhc1N0cmluZ0JhY2tp
bmcoKSkgeworICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdG9rZW4udmFsdWUoKS5sZW5n
dGgoKTsKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcgc3RyaW5nKGN1cnJlbnRPZmZzZXQsIGxlbmd0
aCk7CisgICAgICAgICAgICBtX3Rva2Vucy5hcHBlbmQodG9rZW4uY29weVdpdGhVcGRhdGVkU3Ry
aW5nKHN0cmluZykpOworICAgICAgICAgICAgY3VycmVudE9mZnNldCArPSBsZW5ndGg7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2Vucy5hcHBlbmQodG9rZW4pOworICAgICAg
ICB9CisgICAgfQorICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0ID09IG1fYmFja2luZ1N0cmluZy5j
aGFyYWN0ZXJzPENoYXJhY3RlclR5cGU+KCkgKyBtX2JhY2tpbmdTdHJpbmcubGVuZ3RoKCkpOwor
fQorCitib29sIENTU1ZhcmlhYmxlRGF0YTo6b3BlcmF0b3I9PShjb25zdCBDU1NWYXJpYWJsZURh
dGEmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiB0b2tlbnMoKSA9PSBvdGhlci50b2tlbnMo
KTsKK30KKwordm9pZCBDU1NWYXJpYWJsZURhdGE6OmNvbnN1bWVBbmRVcGRhdGVUb2tlbnMoY29u
c3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgU3RyaW5nQnVpbGRlciBzdHJp
bmdCdWlsZGVyOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgbG9jYWxSYW5nZSA9IHJhbmdlOwor
CisgICAgd2hpbGUgKCFsb2NhbFJhbmdlLmF0RW5kKCkpIHsKKyAgICAgICAgQ1NTUGFyc2VyVG9r
ZW4gdG9rZW4gPSBsb2NhbFJhbmdlLmNvbnN1bWUoKTsKKyAgICAgICAgaWYgKHRva2VuLmhhc1N0
cmluZ0JhY2tpbmcoKSkKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRva2VuLnZh
bHVlKCkpOworICAgIH0KKyAgICBtX2JhY2tpbmdTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3Ry
aW5nKCk7CisgICAgaWYgKG1fYmFja2luZ1N0cmluZy5pczhCaXQoKSkKKyAgICAgICAgdXBkYXRl
VG9rZW5zPExDaGFyPihyYW5nZSk7CisgICAgZWxzZQorICAgICAgICB1cGRhdGVUb2tlbnM8VUNo
YXI+KHJhbmdlKTsKK30KKworQ1NTVmFyaWFibGVEYXRhOjpDU1NWYXJpYWJsZURhdGEoY29uc3Qg
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGJvb2wgbmVlZHNWYXJpYWJsZVJlc29sdXRpb24p
CisgICAgOiBtX25lZWRzVmFyaWFibGVSZXNvbHV0aW9uKG5lZWRzVmFyaWFibGVSZXNvbHV0aW9u
KQoreworICAgIEFTU0VSVCghcmFuZ2UuYXRFbmQoKSk7CisgICAgY29uc3VtZUFuZFVwZGF0ZVRv
a2VucyhyYW5nZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhcmlhYmxlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODYgQEAKKy8v
IENvcHlyaWdodCAyMDE1IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRp
c3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
Ly8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tl
bi5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NQYXJzZXJU
b2tlblJhbmdlOworCitjbGFzcyBDU1NWYXJpYWJsZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxD
U1NWYXJpYWJsZURhdGE+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NWYXJpYWJsZURh
dGEpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8Q1NTVmFyaWFibGVEYXRhPiBjcmVhdGUoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIGJvb2wgbmVlZHNWYXJpYWJsZVJlc29sdXRpb24gPSB0cnVlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFyaWFibGVEYXRhKHJhbmdlLCBuZWVkc1ZhcmlhYmxl
UmVzb2x1dGlvbikpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8Q1NTVmFyaWFibGVEYXRhPiBj
cmVhdGVSZXNvbHZlZChjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXNvbHZlZFRva2Vu
cywgY29uc3QgQ1NTVmFyaWFibGVEYXRhJiB1bnJlc29sdmVkRGF0YSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlRGF0YShyZXNvbHZlZFRva2VucywgdW5y
ZXNvbHZlZERhdGEubV9iYWNraW5nU3RyaW5nKSk7CisgICAgfQorCisgICAgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSB0b2tlblJhbmdlKCkgeyByZXR1cm4gbV90b2tlbnM7IH0KKworICAgIGNvbnN0IFZl
Y3RvcjxDU1NQYXJzZXJUb2tlbj4mIHRva2VucygpIGNvbnN0IHsgcmV0dXJuIG1fdG9rZW5zOyB9
CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTVmFyaWFibGVEYXRhJiBvdGhlcikgY29u
c3Q7CisKKyAgICBib29sIG5lZWRzVmFyaWFibGVSZXNvbHV0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbjsgfQorCitwcml2YXRlOgorICAgIENTU1ZhcmlhYmxl
RGF0YShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiwgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1
dGlvbik7CisKKyAgICAvLyBXZSBjYW4gc2FmZWx5IGNvcHkgdGhlIHRva2VucyAod2hpY2ggaGF2
ZSByYXcgcG9pbnRlcnMgdG8gc3Vic3RyaW5ncykgYmVjYXVzZQorICAgIC8vIFN0eWxlUHJvcGVy
dHlTZXRzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9u
cywgd2hpY2gKKyAgICAvLyBwb2ludCB0byB0aGUgdW5yZXNvbHZlZCBDU1NWYXJpYWJsZURhdGEg
dmFsdWVzIHRoYXQgb3duIHRoZSBiYWNraW5nIHN0cmluZ3MKKyAgICAvLyB0aGlzIHdpbGwgcG90
ZW50aWFsbHkgcmVmZXJlbmNlLgorICAgIENTU1ZhcmlhYmxlRGF0YShjb25zdCBWZWN0b3I8Q1NT
UGFyc2VyVG9rZW4+JiByZXNvbHZlZFRva2VucywgU3RyaW5nIGJhY2tpbmdTdHJpbmcpCisgICAg
ICAgIDogbV9iYWNraW5nU3RyaW5nKGJhY2tpbmdTdHJpbmcpCisgICAgICAgICwgbV90b2tlbnMo
cmVzb2x2ZWRUb2tlbnMpCisgICAgICAgICwgbV9uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbihmYWxz
ZSkKKyAgICB7IH0KKworICAgIHZvaWQgY29uc3VtZUFuZFVwZGF0ZVRva2Vucyhjb25zdCBDU1NQ
YXJzZXJUb2tlblJhbmdlJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
dm9pZCB1cGRhdGVUb2tlbnMoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworCisgICAgU3Ry
aW5nIG1fYmFja2luZ1N0cmluZzsKKyAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IG1fdG9rZW5z
OworICAgIGNvbnN0IGJvb2wgbV9uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbjsKKworICAgIC8vIEZJ
WE1FLU5FV1BBUlNFUjogV2Ugd2FudCB0byBjYWNoZSBTdHlsZVByb3BlcnRpZXMgb25jZSB3ZSBz
dXBwb3J0IEBhcHBseS4KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURlcGVuZGVudFZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGVwZW5kZW50VmFsdWUuaAkocmV2aXNpb24g
MjA1Nzg5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGVwZW5kZW50VmFsdWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlTGlz
dC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorLy8gRklYTUUtTkVXUEFSU0VSOiBUaGlz
IHdpbGwgYmUgcmVtb3ZlZCBpbiBmYXZvciBvZiBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1ZhcmlhYmxlRGVwZW5kZW50VmFsdWUgZmlu
YWwgOiBwdWJsaWMgQ1NTVmFsdWUgewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zhcmlh
YmxlUmVmZXJlbmNlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0MSBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8g
bWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VW
YWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBDU1NWYXJpYWJsZVJlZmVy
ZW5jZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKK3sKKyAgICAvLyBXZSBtYXkgd2FudCB0
byBjb25zaWRlciBjYWNoaW5nIHRoaXMgdmFsdWUuCisgICAgcmV0dXJuIG1fZGF0YS0+dG9rZW5S
YW5nZSgpLnNlcmlhbGl6ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBACisvLyBDb3B5cmlnaHQgMjAxNSBUaGUg
Q2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ1NTVmFs
dWUuaCIKKyNpbmNsdWRlICJDU1NWYXJpYWJsZURhdGEuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTVmFyaWFibGVSZWZlcmVuY2VW
YWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDU1NWYXJp
YWJsZVJlZmVyZW5jZVZhbHVlPiBjcmVhdGUoUmVmPENTU1ZhcmlhYmxlRGF0YT4mJiBkYXRhKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFyaWFibGVSZWZlcmVuY2VW
YWx1ZShXVEZNb3ZlKGRhdGEpKSk7CisgICAgfQorCisgICAgQ1NTVmFyaWFibGVEYXRhKiB2YXJp
YWJsZURhdGFWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9kYXRhLmdldCgp
OworICAgIH0KKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2RhdGEgPT0gb3RoZXIubV9kYXRhOyB9CisgICAg
U3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBDU1NWYXJpYWJs
ZVJlZmVyZW5jZVZhbHVlKFJlZjxDU1NWYXJpYWJsZURhdGE+JiYgZGF0YSkKKyAgICAgICAgOiBD
U1NWYWx1ZShWYXJpYWJsZVJlZmVyZW5jZUNsYXNzKQorICAgICAgICAsIG1fZGF0YShXVEZNb3Zl
KGRhdGEpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiBtX2Rh
dGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQ1NTX1ZBTFVFKENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUsIGlzVmFyaWFibGVSZWZlcmVu
Y2VWYWx1ZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oCShyZXZp
c2lvbiAyMDU3ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgog
CisvLyBGSVhNRS1ORVdQQVJTRVI6IFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIGZhdm9yIG9mIHRo
ZSBuZXcgdmFyaWFibGVzIGltcGxlbWVudGF0aW9uLgogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDU1NWYWx1ZUxpc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU0F0
UnVsZUlELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU0F0
UnVsZUlELmNwcAkocmV2aXNpb24gMjA1Nzg5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NBdFJ1bGVJRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDUgKzU5LDUgQEAgQ1NTQXRS
dWxlSUQgY3NzQXRSdWxlSUQoU3RyaW5nVmlldyBuYW1lKQogICAgIHJldHVybiBDU1NBdFJ1bGVJ
bnZhbGlkOwogfQogCi19IC8vIG5hbWVzcGFjZSBibGluaworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAJ
KHJldmlzaW9uIDIwNTc5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJDU1NQ
YXJzZXJJbXBsLmgiCiAKICNpbmNsdWRlICJDU1NBdFJ1bGVJRC5oIgotI2luY2x1ZGUgIkNTU0N1
c3RvbVByb3BlcnR5VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0
aW9uLmgiCiAjaW5jbHVkZSAiQ1NTS2V5ZnJhbWVSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTS2V5ZnJh
bWVzUnVsZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlck9ic2VydmVyLmgiCkBAIC00Miw3ICs0Miw3
IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNTU1N1cHBvcnRzUGFy
c2VyLmgiCiAjaW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgiCi0vLyBGSVhNRS1ORVdQQVJTRVI6ICNp
bmNsdWRlICJDU1NWYXJpYWJsZVBhcnNlci5oIgorI2luY2x1ZGUgIkNTU1ZhcmlhYmxlUGFyc2Vy
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiTWVkaWFRdWVyeVBhcnNlci5oIgpAQCAtOTcsMTIgKzk3LDExIEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBmaWx0ZXJQcm9wZXJ0aWVzKGJvb2wKICAgICAgICAgY29uc3QgdW5zaWduZWQgcHJvcGVy
dHlJREluZGV4ID0gcHJvcGVydHkuaWQoKSAtIGZpcnN0Q1NTUHJvcGVydHk7CiAgICAgICAgIAog
ICAgICAgICBpZiAocHJvcGVydHkuaWQoKSA9PSBDU1NQcm9wZXJ0eUN1c3RvbSkgewotICAgICAg
ICAgICAgaWYgKHByb3BlcnR5LnZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBuYW1l
ID0gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnByb3BlcnR5LnZhbHVlKCkpLm5h
bWUoKTsKLSAgICAgICAgICAgICAgICBpZiAoIXNlZW5DdXN0b21Qcm9wZXJ0aWVzLmFkZChuYW1l
KS5pc05ld0VudHJ5KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
ICAgICBvdXRwdXRbLS11bnVzZWRFbnRyaWVzXSA9IHByb3BlcnR5OwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgQ1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbiogY3VzdG9tVmFsdWUgPSBk
b3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uPihwcm9wZXJ0eS52YWx1ZSgpKTsK
KyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IGN1c3RvbVZhbHVlLT5uYW1l
KCk7CisgICAgICAgICAgICBpZiAoc2VlbkN1c3RvbVByb3BlcnRpZXMuY29udGFpbnMobmFtZSkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBzZWVuQ3VzdG9tUHJvcGVy
dGllcy5hZGQobmFtZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAg
ICAKQEAgLTc3OSwxMSArNzc4LDEwIEBAIHZvaWQgQ1NTUGFyc2VySW1wbDo6Y29uc3VtZURlY2xh
cmF0aW9uKEMKICAgICB9CiAKICAgICBzaXplX3QgcHJvcGVydGllc0NvdW50ID0gbV9wYXJzZWRQ
cm9wZXJ0aWVzLnNpemUoKTsKLSAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IFN1cHBvcnQgdmFyaWFi
bGVzCi0gICAgLyppZiAodW5yZXNvbHZlZFByb3BlcnR5ID09IENTU1Byb3BlcnR5SW52YWxpZCAm
JiBDU1NWYXJpYWJsZVBhcnNlcjo6aXNWYWxpZFZhcmlhYmxlTmFtZSh0b2tlbikpIHsKKyAgICBp
ZiAodW5yZXNvbHZlZFByb3BlcnR5ID09IENTU1Byb3BlcnR5SW52YWxpZCAmJiBDU1NWYXJpYWJs
ZVBhcnNlcjo6aXNWYWxpZFZhcmlhYmxlTmFtZSh0b2tlbikpIHsKICAgICAgICAgQXRvbWljU3Ry
aW5nIHZhcmlhYmxlTmFtZSA9IHRva2VuLnZhbHVlKCkudG9BdG9taWNTdHJpbmcoKTsKICAgICAg
ICAgY29uc3VtZVZhcmlhYmxlVmFsdWUocmFuZ2UubWFrZVN1YlJhbmdlKCZyYW5nZS5wZWVrKCks
IGRlY2xhcmF0aW9uVmFsdWVFbmQpLCB2YXJpYWJsZU5hbWUsIGltcG9ydGFudCk7Ci0gICAgfSov
CisgICAgfQogCiAgICAgaWYgKGltcG9ydGFudCAmJiAocnVsZVR5cGUgPT0gU3R5bGVSdWxlOjpG
b250RmFjZSB8fCBydWxlVHlwZSA9PSBTdHlsZVJ1bGU6OktleWZyYW1lKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNzk4LDExICs3OTYsMTAgQEAgdm9pZCBDU1NQYXJzZXJJbXBsOjpjb25zdW1lRGVj
bGFyYXRpb24oQwogICAgIH0KIH0KIAotdm9pZCBDU1NQYXJzZXJJbXBsOjpjb25zdW1lVmFyaWFi
bGVWYWx1ZShDU1NQYXJzZXJUb2tlblJhbmdlIC8qIHJhbmdlICovLCBjb25zdCBBdG9taWNTdHJp
bmcmIC8qdmFyaWFibGVOYW1lICovLCBib29sIC8qIGltcG9ydGFudCAqLykKK3ZvaWQgQ1NTUGFy
c2VySW1wbDo6Y29uc3VtZVZhcmlhYmxlVmFsdWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YXJpYWJsZU5hbWUsIGJvb2wgaW1wb3J0YW50KQogewotICAg
IC8vIEZJWE1FLU5FV1BBUlNFUjogU3VwcG9ydCB2YXJpYWJsZXMKLSAgICAvLyBpZiAoQ1NTQ3Vz
dG9tUHJvcGVydHlEZWNsYXJhdGlvbiogdmFsdWUgPSBDU1NWYXJpYWJsZVBhcnNlcjo6cGFyc2VE
ZWNsYXJhdGlvblZhbHVlKHZhcmlhYmxlTmFtZSwgcmFuZ2UpKQotICAgIC8vICAgICBtX3BhcnNl
ZFByb3BlcnRpZXMuYXBwZW5kKENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VmFyaWFibGUsICp2YWx1
ZSwgaW1wb3J0YW50KSk7CisgICAgaWYgKFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0
aW9uPiB2YWx1ZSA9IENTU1ZhcmlhYmxlUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uVmFsdWUodmFy
aWFibGVOYW1lLCByYW5nZSkpCisgICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5hcHBlbmQoQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlDdXN0b20sIFdURk1vdmUodmFsdWUpLCBpbXBvcnRhbnQpKTsK
IH0KIAogdm9pZCBDU1NQYXJzZXJJbXBsOjpjb25zdW1lRGVjbGFyYXRpb25WYWx1ZShDU1NQYXJz
ZXJUb2tlblJhbmdlIHJhbmdlLCBDU1NQcm9wZXJ0eUlEIHVucmVzb2x2ZWRQcm9wZXJ0eSwgYm9v
bCBpbXBvcnRhbnQsIFN0eWxlUnVsZTo6VHlwZSBydWxlVHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDU3
ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzY4LDQgKzc2OCw0IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJz
ZXJTZWxlY3Rvcj4gQ1NTU2UKICAgICByZXR1cm4gc2Vjb25kQ29tcG91bmQ7CiB9CiAKLX0gLy8g
bmFtZXNwYWNlIGJsaW5rCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1N1cHBvcnRzUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1N1cHBvcnRzUGFyc2VyLmNwcAkocmV2aXNpb24gMjA1
NzkwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTdXBwb3J0c1BhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExNiw0ICsxMTYsNCBAQCBDU1NTdXBwb3J0c1BhcnNlcjo6U3Vw
cG9ydHNSZXN1bHQgQ1NTU3VwCiAgICAgcmV0dXJuIGlubmVyUmFuZ2UucGVlaygpLnR5cGUoKSA9
PSBJZGVudFRva2VuICYmIG1fcGFyc2VyLnN1cHBvcnRzRGVjbGFyYXRpb24oaW5uZXJSYW5nZSkg
PyBTdXBwb3J0ZWQgOiBVbnN1cHBvcnRlZDsKIH0KIAotfSAvLyBuYW1lc3BhY2UgYmxpbmsKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
VmFyaWFibGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTY2IEBACisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6
CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisv
LyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NWYXJpYWJsZVBhcnNlci5oIgorCisj
aW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIkNTU1Bh
cnNlclRva2VuUmFuZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIENTU1Zhcmlh
YmxlUGFyc2VyOjppc1ZhbGlkVmFyaWFibGVOYW1lKGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tl
bikKK3sKKyAgICBpZiAodG9rZW4udHlwZSgpICE9IElkZW50VG9rZW4pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIFN0cmluZ1ZpZXcgdmFsdWUgPSB0b2tlbi52YWx1ZSgpOworICAgIHJl
dHVybiB2YWx1ZS5sZW5ndGgoKSA+PSAyICYmIHZhbHVlWzBdID09ICctJyAmJiB2YWx1ZVsxXSA9
PSAnLSc7Cit9CisKK2Jvb2wgQ1NTVmFyaWFibGVQYXJzZXI6OmlzVmFsaWRWYXJpYWJsZU5hbWUo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHN0cmluZy5sZW5ndGgoKSA+PSAy
ICYmIHN0cmluZ1swXSA9PSAnLScgJiYgc3RyaW5nWzFdID09ICctJzsKK30KKworYm9vbCBpc1Zh
bGlkVmFyaWFibGVSZWZlcmVuY2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSwgYm9vbCYgaGFzQXRBcHBs
eVJ1bGUpOworCitzdGF0aWMgYm9vbCBjbGFzc2lmeUJsb2NrKENTU1BhcnNlclRva2VuUmFuZ2Ug
cmFuZ2UsIGJvb2wmIGhhc1JlZmVyZW5jZXMsIGJvb2wmIGhhc0F0QXBwbHlSdWxlLCBib29sIGlz
VG9wTGV2ZWxCbG9jayA9IHRydWUpCit7CisgICAgd2hpbGUgKCFyYW5nZS5hdEVuZCgpKSB7Cisg
ICAgICAgIGlmIChyYW5nZS5wZWVrKCkuZ2V0QmxvY2tUeXBlKCkgPT0gQ1NTUGFyc2VyVG9rZW46
OkJsb2NrU3RhcnQpIHsKKyAgICAgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9
IHJhbmdlLnBlZWsoKTsKKyAgICAgICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2sgPSBy
YW5nZS5jb25zdW1lQmxvY2soKTsKKyAgICAgICAgICAgIGlmICh0b2tlbi5mdW5jdGlvbklkKCkg
PT0gQ1NTVmFsdWVWYXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRWYXJpYWJsZVJl
ZmVyZW5jZShibG9jaywgaGFzQXRBcHBseVJ1bGUpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7IC8vIEJhaWwgaWYgYW55IHJlZmVyZW5jZXMgYXJlIGludmFsaWQKKyAgICAgICAg
ICAgICAgICBoYXNSZWZlcmVuY2VzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghY2xhc3NpZnlCbG9jayhibG9jaywgaGFz
UmVmZXJlbmNlcywgaGFzQXRBcHBseVJ1bGUsIGZhbHNlKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIEFT
U0VSVChyYW5nZS5wZWVrKCkuZ2V0QmxvY2tUeXBlKCkgIT0gQ1NTUGFyc2VyVG9rZW46OkJsb2Nr
RW5kKTsKKworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5jb25z
dW1lKCk7CisgICAgICAgIHN3aXRjaCAodG9rZW4udHlwZSgpKSB7CisgICAgICAgIGNhc2UgQXRL
ZXl3b3JkVG9rZW46IHsKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRv
a2VuLnZhbHVlKCksICJhcHBseSIpKSB7CisgICAgICAgICAgICAgICAgcmFuZ2UuY29uc3VtZVdo
aXRlc3BhY2UoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdmFyaWFi
bGVOYW1lID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIUNTU1ZhcmlhYmxlUGFyc2VyOjppc1ZhbGlkVmFyaWFibGVOYW1lKHZhcmlhYmxl
TmFtZSkKKyAgICAgICAgICAgICAgICAgICAgfHwgIShyYW5nZS5hdEVuZCgpIHx8IHJhbmdlLnBl
ZWsoKS50eXBlKCkgPT0gU2VtaWNvbG9uVG9rZW4gfHwgcmFuZ2UucGVlaygpLnR5cGUoKSA9PSBS
aWdodEJyYWNlVG9rZW4pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgaGFzQXRBcHBseVJ1bGUgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEZWxpbWl0ZXJUb2tlbjogewor
ICAgICAgICAgICAgaWYgKHRva2VuLmRlbGltaXRlcigpID09ICchJyAmJiBpc1RvcExldmVsQmxv
Y2spCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBSaWdodFBhcmVudGhlc2lzVG9rZW46CisgICAgICAgIGNh
c2UgUmlnaHRCcmFjZVRva2VuOgorICAgICAgICBjYXNlIFJpZ2h0QnJhY2tldFRva2VuOgorICAg
ICAgICBjYXNlIEJhZFN0cmluZ1Rva2VuOgorICAgICAgICBjYXNlIEJhZFVybFRva2VuOgorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNlIFNlbWljb2xvblRva2VuOgorICAg
ICAgICAgICAgaWYgKGlzVG9wTGV2ZWxCbG9jaykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIGlzVmFs
aWRWYXJpYWJsZVJlZmVyZW5jZShDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBib29sJiBoYXNB
dEFwcGx5UnVsZSkKK3sKKyAgICByYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgIGlmICgh
Q1NTVmFyaWFibGVQYXJzZXI6OmlzVmFsaWRWYXJpYWJsZU5hbWUocmFuZ2UuY29uc3VtZUluY2x1
ZGluZ1doaXRlc3BhY2UoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAocmFuZ2Uu
YXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAocmFuZ2UuY29uc3VtZSgp
LnR5cGUoKSAhPSBDb21tYVRva2VuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHJh
bmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgaGFzUmVmZXJl
bmNlcyA9IGZhbHNlOworICAgIHJldHVybiBjbGFzc2lmeUJsb2NrKHJhbmdlLCBoYXNSZWZlcmVu
Y2VzLCBoYXNBdEFwcGx5UnVsZSk7Cit9CisKK3N0YXRpYyBDU1NWYWx1ZUlEIGNsYXNzaWZ5VmFy
aWFibGVSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBib29sJiBoYXNSZWZlcmVuY2Vz
LCBib29sJiBoYXNBdEFwcGx5UnVsZSkKK3sKKyAgICBoYXNSZWZlcmVuY2VzID0gZmFsc2U7Cisg
ICAgaGFzQXRBcHBseVJ1bGUgPSBmYWxzZTsKKworICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNl
KCk7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikgeworICAgICAg
ICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgp
OworICAgICAgICBpZiAocmFuZ2UuYXRFbmQoKSAmJiAoaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8
IGlkID09IENTU1ZhbHVlSW5pdGlhbCB8fCBpZCA9PSBDU1NWYWx1ZVVuc2V0KSkKKyAgICAgICAg
ICAgIHJldHVybiBpZDsKKyAgICB9CisKKyAgICBpZiAoY2xhc3NpZnlCbG9jayhyYW5nZSwgaGFz
UmVmZXJlbmNlcywgaGFzQXRBcHBseVJ1bGUpKQorICAgICAgICByZXR1cm4gQ1NTVmFsdWVJbnRl
cm5hbFZhcmlhYmxlVmFsdWU7CisgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsKK30KKworYm9v
bCBDU1NWYXJpYWJsZVBhcnNlcjo6Y29udGFpbnNWYWxpZFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQ
YXJzZXJUb2tlblJhbmdlIHJhbmdlKQoreworICAgIGJvb2wgaGFzUmVmZXJlbmNlczsKKyAgICBi
b29sIGhhc0F0QXBwbHlSdWxlOworICAgIENTU1ZhbHVlSUQgdHlwZSA9IGNsYXNzaWZ5VmFyaWFi
bGVSYW5nZShyYW5nZSwgaGFzUmVmZXJlbmNlcywgaGFzQXRBcHBseVJ1bGUpOworICAgIHJldHVy
biB0eXBlID09IENTU1ZhbHVlSW50ZXJuYWxWYXJpYWJsZVZhbHVlICYmIGhhc1JlZmVyZW5jZXMg
JiYgIWhhc0F0QXBwbHlSdWxlOworfQorCitSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJh
dGlvbj4gQ1NTVmFyaWFibGVQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb25WYWx1ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHZhcmlhYmxlTmFtZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSkKK3sKKyAg
ICBpZiAocmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBib29s
IGhhc1JlZmVyZW5jZXM7CisgICAgYm9vbCBoYXNBdEFwcGx5UnVsZTsKKyAgICBDU1NWYWx1ZUlE
IHR5cGUgPSBjbGFzc2lmeVZhcmlhYmxlUmFuZ2UocmFuZ2UsIGhhc1JlZmVyZW5jZXMsIGhhc0F0
QXBwbHlSdWxlKTsKKworICAgIGlmICh0eXBlID09IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgaWYgKHR5cGUgPT0gQ1NTVmFsdWVJbnRlcm5hbFZhcmlhYmxl
VmFsdWUpCisgICAgICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uOjpjcmVh
dGUodmFyaWFibGVOYW1lLCBDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZShyYW5nZSwgaGFzUmVmZXJl
bmNlcyB8fCBoYXNBdEFwcGx5UnVsZSkpOworICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eURl
Y2xhcmF0aW9uOjpjcmVhdGUodmFyaWFibGVOYW1lLCB0eXBlKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NWYXJpYWJsZVBh
cnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVmFyaWFi
bGVQYXJzZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1ZhcmlhYmxlUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorLy8gQ29w
eXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJp
YnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgQ1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbjsKKworY2xhc3MgQ1NTVmFy
aWFibGVQYXJzZXIgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIGNvbnRhaW5zVmFsaWRWYXJp
YWJsZVJlZmVyZW5jZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSk7CisKKyAgICBzdGF0aWMgUmVmUHRy
PENTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24+IHBhcnNlRGVjbGFyYXRpb25WYWx1ZShjb25z
dCBBdG9taWNTdHJpbmcmLCBDU1NQYXJzZXJUb2tlblJhbmdlKTsKKworICAgIHN0YXRpYyBib29s
IGlzVmFsaWRWYXJpYWJsZU5hbWUoY29uc3QgQ1NTUGFyc2VyVG9rZW4mKTsKKyAgICBzdGF0aWMg
Ym9vbCBpc1ZhbGlkVmFyaWFibGVOYW1lKGNvbnN0IFN0cmluZyYpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288703</attachid>
            <date>2016-09-13 11:13:10 -0700</date>
            <delta_ts>2016-09-13 12:06:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>61531</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTg2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDE2LTA5LTEzICBEYXZlIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFtDU1MgUGFyc2VyXSBBZGQgQ1NTIFZh
cmlhYmxlIFBhcnNpbmcgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYxOTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBub3Qgb25seSBhZGRzIHRoZSBwYXJzZXIgZm9yIENT
UyB2YXJpYWJsZXMgKGZyb20gQmxpbmspLCBidXQgaXQgYWxzbyBicmluZ3MgaW4KKyAgICAgICAg
YWxsIG9mIHRoZSBkYXRhIHN0cnVjdHVyZXMgdXNlZCB0byBzdG9yZSB2YXJpYWJsZXMgYW5kIGN1
c3RvbSBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMuIFdlCisgICAgICAgIHdpbGwgYmUgYWJhbmRvbmlu
ZyBvdXIgb2xkIGRhdGEgc3RydWN0dXJlcyBldmVudHVhbGx5IGluIGZhdm9yIG9mIHRoZXNlIG5l
dyBvbmVzLiBUaGV5CisgICAgICAgIGFyZSBub3Qgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgb3Ro
ZXIgdGhhbiBvcGVyYXRpbmcgb24gdGhlIENTU1BhcnNlclRva2VuUmFuZ2VzIHJhdGhlcgorICAg
ICAgICB0aGFuIHRoZSBzb29uLXRvLWJlLXJlbW92ZWQgcGFyc2VyIHZhbHVlIGxpc3RzLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDdXN0b21JZGVudFZhbHVlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21JZGVudFZhbHVlOjpDU1NDdXN0b21JZGVu
dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1c3RvbUlkZW50VmFsdWU6OmN1c3RvbUNT
U1RleHQpOgorICAgICAgICAqIGNzcy9DU1NDdXN0b21JZGVudFZhbHVlLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tSWRlbnRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0N1c3RvbUlkZW50VmFsdWU6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0N1c3RvbUlkZW50VmFsdWU6OmlzS25vd25Qcm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0N1c3RvbUlkZW50VmFsdWU6OnZhbHVlQXNQcm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0N1c3RvbUlkZW50VmFsdWU6OmVxdWFscyk6CisgICAgICAgICogY3NzL0NTU0N1c3Rv
bVByb3BlcnR5RGVjbGFyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1
c3RvbVByb3BlcnR5RGVjbGFyYXRpb246OmN1c3RvbUNTU1RleHQpOgorICAgICAgICAqIGNzcy9D
U1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb246Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbjo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbjo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbjo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb246OkNTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24p
OgorICAgICAgICAqIGNzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmg6CisgICAgICAgICogY3Nz
L0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpjc3NUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpkZXN0cm95KToKKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjppc0N1c3RvbVByb3BlcnR5RGVjbGFy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzQ3VzdG9tSWRlbnRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6aXNWYXJpYWJsZVJlZmVyZW5jZVZhbHVlKToK
KyAgICAgICAgKiBjc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBjc3MvQ1NTVmFy
aWFibGVEYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6
OnVwZGF0ZVRva2Vucyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpjb25zdW1lQW5kVXBk
YXRlVG9rZW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6Q1NTVmFyaWFi
bGVEYXRhKToKKyAgICAgICAgKiBjc3MvQ1NTVmFyaWFibGVEYXRhLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVmFyaWFibGVEYXRhOjpjcmVhdGVSZXNvbHZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YXJpYWJsZURhdGE6OnRva2VuUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVE
YXRhOjp0b2tlbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpuZWVkc1Zh
cmlhYmxlUmVzb2x1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6OkNT
U1ZhcmlhYmxlRGF0YSk6CisgICAgICAgICogY3NzL0NTU1ZhcmlhYmxlRGVwZW5kZW50VmFsdWUu
aDoKKyAgICAgICAgKiBjc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4
dCk6CisgICAgICAgICogY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6dmFyaWFibGVEYXRhVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6ZXF1YWxz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OkNTU1Zhcmlh
YmxlUmVmZXJlbmNlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NWYXJpYWJsZVZhbHVlLmg6Cisg
ICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmZpbHRlclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29u
c3VtZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1
bWVWYXJpYWJsZVZhbHVlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1ZhcmlhYmxlUGFyc2Vy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZVBhcnNlcjo6aXNWYWxp
ZFZhcmlhYmxlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpjbGFzc2lmeUJsb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzVmFsaWRWYXJpYWJsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3Jl
OjpjbGFzc2lmeVZhcmlhYmxlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVQ
YXJzZXI6OmNvbnRhaW5zVmFsaWRWYXJpYWJsZVJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVmFyaWFibGVQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb25WYWx1ZSk6CisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5oOiBBZGRlZC4KKwogMjAxNi0wOS0xMiAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYS1zb3VyY2UgYmFj
a2VkIGVsZW1lbnRzIGJsb2NrIGxvYWQgZXZlbnQ7IGNhdXNlIHdlYi1wbGF0Zm9ybS10ZXN0IGZs
YWtpbmVzcwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNTgyMSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMjUzLDYgKzEy
NTMsOCBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL0NTU0NvbnRlbnREaXN0cmlidXRp
b25WYWx1ZS5jcHAKICAgICBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCiAgICAgY3NzL0NTU0N1
cnNvckltYWdlVmFsdWUuY3BwCisgICAgY3NzL0NTU0N1c3RvbUlkZW50VmFsdWUuY3BwCisgICAg
Y3NzL0NTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24uY3BwCiAgICAgY3NzL0NTU0RlZmF1bHRT
dHlsZVNoZWV0cy5jcHAKICAgICBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKICAgICBjc3Mv
Rm9udEZhY2VTZXQuY3BwCkBAIC0xMzA3LDcgKzEzMDksOSBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgY3NzL0NTU1ZhbHVlLmNwcAogICAgIGNzcy9DU1NWYWx1ZUxpc3QuY3BwCiAgICAgY3Nz
L0NTU1ZhbHVlUG9vbC5jcHAKKyAgICBjc3MvQ1NTVmFyaWFibGVEYXRhLmNwcAogICAgIGNzcy9D
U1NWYXJpYWJsZURlcGVuZGVudFZhbHVlLmNwcAorICAgIGNzcy9DU1NWYXJpYWJsZVJlZmVyZW5j
ZVZhbHVlLmNwcAogICAgIGNzcy9DU1NWYXJpYWJsZVZhbHVlLmNwcAogICAgIGNzcy9ET01DU1NO
YW1lc3BhY2UuY3BwCiAgICAgY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCkBAIC0xMzY0LDYgKzEz
NjgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL3BhcnNlci9DU1NTdXBwb3J0c1Bh
cnNlci5jcHAKICAgICBjc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAKICAgICBjc3MvcGFyc2Vy
L0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAorICAgIGNzcy9wYXJzZXIvQ1NTVmFyaWFibGVQ
YXJzZXIuY3BwCiAgICAgY3NzL3BhcnNlci9NZWRpYVF1ZXJ5QmxvY2tXYXRjaGVyLmNwcAogICAg
IGNzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAKICAgICBjc3MvcGFyc2VyL1NpemVzQXR0
cmlidXRlUGFyc2VyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA1ODIxKQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzQ2LDYgKzMzNDYsMTYgQEAKIAkJOTQ0NENCRDQxRDg2MEM4QjAwNzNBMDc0IC8qIFNpemVzQ2Fs
Y1BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTQ0NENCQ0YxRDg2MEM3NDAwNzNBMDc0IC8qIFNpemVzQ2FsY1BhcnNlci5oICovOyB9OwogCQk5
NDQ0Q0JENTFEODYwQzhCMDA3M0EwNzQgLyogU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ0NENCRDIxRDg2MEM3
NDAwNzNBMDc0IC8qIFNpemVzQXR0cmlidXRlUGFyc2VyLmNwcCAqLzsgfTsKIAkJOTQ0NENCRDYx
RDg2MEM4QjAwNzNBMDc0IC8qIFNpemVzQXR0cmlidXRlUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDQ0Q0JEMTFEODYwQzc0MDA3M0EwNzQg
LyogU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuaCAqLzsgfTsKKwkJOTQ0NENCRDkxRDg4NDgzQTAwNzNB
MDc0IC8qIENTU1ZhcmlhYmxlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk0NDRDQkQ4MUQ4ODQ4MkEwMDczQTA3NCAvKiBDU1NWYXJpYWJs
ZVBhcnNlci5jcHAgKi87IH07CisJCTk0NDRDQkRBMUQ4ODQ4M0EwMDczQTA3NCAvKiBDU1NWYXJp
YWJsZVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTQ0NENCRDcxRDg4NDgyQTAwNzNBMDc0IC8qIENTU1ZhcmlhYmxlUGFyc2VyLmggKi87IH07
CisJCTk0NDRDQkUzMUQ4ODYxOTgwMDczQTA3NCAvKiBDU1NDdXN0b21JZGVudFZhbHVlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NDRDQkUyMUQ4
ODYxNTgwMDczQTA3NCAvKiBDU1NDdXN0b21JZGVudFZhbHVlLmNwcCAqLzsgfTsKKwkJOTQ0NENC
RTQxRDg4NjE5OTAwNzNBMDc0IC8qIENTU0N1c3RvbUlkZW50VmFsdWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NDRDQkUxMUQ4ODYxNTgwMDczQTA3
NCAvKiBDU1NDdXN0b21JZGVudFZhbHVlLmggKi87IH07CisJCTk0NDRDQkU1MUQ4ODYxOTkwMDcz
QTA3NCAvKiBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NDRDQkUwMUQ4ODYxNTgwMDczQTA3NCAv
KiBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uLmNwcCAqLzsgfTsKKwkJOTQ0NENCRTYxRDg4
NjE5OTAwNzNBMDc0IC8qIENTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NDRDQkRGMUQ4ODYxNTgwMDcz
QTA3NCAvKiBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uLmggKi87IH07CisJCTk0NDRDQkU3
MUQ4ODYxQzIwMDczQTA3NCAvKiBDU1NWYXJpYWJsZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTQ0NENCREUxRDg4NjE1ODAwNzNBMDc0IC8q
IENTU1ZhcmlhYmxlRGF0YS5jcHAgKi87IH07CisJCTk0NDRDQkU4MUQ4ODYxQzIwMDczQTA3NCAv
KiBDU1NWYXJpYWJsZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk0NDRDQkREMUQ4ODYxNTgwMDczQTA3NCAvKiBDU1NWYXJpYWJsZURhdGEuaCAq
LzsgfTsKKwkJOTQ0NENCRTkxRDg4NjFDQTAwNzNBMDc0IC8qIENTU1ZhcmlhYmxlUmVmZXJlbmNl
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTQ0NENCREMxRDg4NjE1ODAwNzNBMDc0IC8qIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuY3Bw
ICovOyB9OworCQk5NDQ0Q0JFQTFEODg2MUNBMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVSZWZlcmVu
Y2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTQ0NENCREIxRDg4NjE1ODAwNzNBMDc0IC8qIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaCAq
LzsgfTsKIAkJOTQ2RDM3MkQxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcyODFENkNCMjhC
MDA3NzA4NEYgLyogQ1NTUGFyc2VyLmNwcCAqLzsgfTsKIAkJOTQ2RDM3MkUxRDZDQjI5NDAwNzcw
ODRGIC8qIENTU1BhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTQ2RDM3MjkxRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk0NkQzNzJGMUQ2Q0Iy
OTQwMDc3MDg0RiAvKiBDU1NQYXJzZXJNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcyQTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2Vy
TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xMDUwNyw2ICsxMDUxNywxNiBAQAogCQk5NDQ0Q0JEMDFEODYwQzc0MDA3M0EwNzQgLyogU2l6
ZXNDYWxjUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNp
emVzQ2FsY1BhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIvU2l6ZXNDYWxjUGFyc2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ0NENCRDExRDg2MEM3NDAwNzNBMDc0IC8qIFNp
emVzQXR0cmlidXRlUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNp
emVzQXR0cmlidXRlUGFyc2VyLmg7IHBhdGggPSBwYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ0NENCRDIxRDg2MEM3NDAwNzNBMDc0
IC8qIFNpemVzQXR0cmlidXRlUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFNpemVzQXR0cmlidXRlUGFyc2VyLmNwcDsgcGF0aCA9IHBhcnNlci9TaXplc0F0
dHJpYnV0ZVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NDRDQkQ3
MUQ4ODQ4MkEwMDczQTA3NCAvKiBDU1NWYXJpYWJsZVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDU1NWYXJpYWJsZVBhcnNlci5oOyBwYXRoID0gcGFyc2VyL0NTU1Zh
cmlhYmxlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NDRDQkQ4MUQ4
ODQ4MkEwMDczQTA3NCAvKiBDU1NWYXJpYWJsZVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NWYXJpYWJsZVBhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIv
Q1NTVmFyaWFibGVQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDQ0
Q0JEQjFEODg2MTU4MDA3M0EwNzQgLyogQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NDRDQkRDMUQ4ODYxNTgwMDczQTA3NCAv
KiBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5NDQ0Q0JERDFEODg2MTU4MDA3M0EwNzQgLyogQ1NTVmFyaWFibGVE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1ZhcmlhYmxlRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDQ0Q0JERTFEODg2MTU4MDA3M0EwNzQg
LyogQ1NTVmFyaWFibGVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENTU1ZhcmlhYmxlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0
NDRDQkRGMUQ4ODYxNTgwMDczQTA3NCAvKiBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0N1c3RvbVByb3BlcnR5RGVjbGFy
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ0NENCRTAxRDg4NjE1ODAw
NzNBMDc0IC8qIENTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NDRDQkUxMUQ4ODYxNTgwMDczQTA3NCAv
KiBDU1NDdXN0b21JZGVudFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENTU0N1c3RvbUlkZW50VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ0
NENCRTIxRDg4NjE1ODAwNzNBMDc0IC8qIENTU0N1c3RvbUlkZW50VmFsdWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk0NkQzNzI4MUQ2Q0IyOEIwMDc3MDg0RiAvKiBD
U1NQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFy
c2VyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NDZEMzcyOTFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlci5oOyBwYXRoID0gcGFyc2VyL0NT
U1BhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzcyQTFENkNCMjhC
MDA3NzA4NEYgLyogQ1NTUGFyc2VyTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBDU1NQYXJzZXJNb2RlLmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyTW9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgyMTQsNiArMTgyMzQsOCBAQAogCQkJCTk0NkQz
NzM3MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuaCAqLywKIAkJCQk5NDZEMzczNTFE
NkNERjk4MDA3NzA4NEYgLyogQ1NTVG9rZW5pemVySW5wdXRTdHJlYW0uY3BwICovLAogCQkJCTk0
NkQzNzM4MUQ2Q0RGOTgwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oICovLAor
CQkJCTk0NDRDQkQ4MUQ4ODQ4MkEwMDczQTA3NCAvKiBDU1NWYXJpYWJsZVBhcnNlci5jcHAgKi8s
CisJCQkJOTQ0NENCRDcxRDg4NDgyQTAwNzNBMDc0IC8qIENTU1ZhcmlhYmxlUGFyc2VyLmggKi8s
CiAJCQkJOTQ5M0I2QjYxRDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlCbG9ja1dhdGNoZXIu
Y3BwICovLAogCQkJCTk0OTNCNkI3MUQ3NEIzOTUwMDg4RTc4MCAvKiBNZWRpYVF1ZXJ5QmxvY2tX
YXRjaGVyLmggKi8sCiAJCQkJOTQ5M0I2QjgxRDc0QjM5NTAwODhFNzgwIC8qIE1lZGlhUXVlcnlQ
YXJzZXIuY3BwICovLApAQCAtMjIzMTgsNiArMjIzNDAsMTAgQEAKIAkJCQkyRDhGRUJEQjE0M0Uz
RUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3NmYWRlVmFsdWUuaCAqLywKIAkJCQlBQTA5NzhFRDBBQkFB
NkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgKi8sCiAJCQkJQUEwOTc4RUUw
QUJBQTZFMTAwODc0NDgwIC8qIENTU0N1cnNvckltYWdlVmFsdWUuaCAqLywKKwkJCQk5NDQ0Q0JF
MjFEODg2MTU4MDA3M0EwNzQgLyogQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5jcHAgKi8sCisJCQkJOTQ0
NENCRTExRDg4NjE1ODAwNzNBMDc0IC8qIENTU0N1c3RvbUlkZW50VmFsdWUuaCAqLywKKwkJCQk5
NDQ0Q0JFMDFEODg2MTU4MDA3M0EwNzQgLyogQ1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbi5j
cHAgKi8sCisJCQkJOTQ0NENCREYxRDg4NjE1ODAwNzNBMDc0IC8qIENTU0N1c3RvbVByb3BlcnR5
RGVjbGFyYXRpb24uaCAqLywKIAkJCQlCQzc3OUUxMzFCQjIxNUJCMDBDQUE4QkYgLyogQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZS5oICovLAogCQkJCTRBOUNDODE1MTZCQjlBQzYwMEVDNjQ1QSAvKiBD
U1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwICovLAogCQkJCTRBOUNDODE2MTZCQjlBQzYwMEVDNjQ1
QSAvKiBDU1NEZWZhdWx0U3R5bGVTaGVldHMuaCAqLywKQEAgLTIyNDUwLDggKzIyNDc2LDEyIEBA
CiAJCQkJQThEMDY1MUMwQTIzQzFGRTAwNUU3MjAzIC8qIENTU1ZhbHVlTGlzdC5pZGwgKi8sCiAJ
CQkJRTQ5QkRBMEExMzFGRDNFNTAwM0M1NkYwIC8qIENTU1ZhbHVlUG9vbC5jcHAgKi8sCiAJCQkJ
RTQ5QkQ5RjkxMzFGRDJFRDAwM0M1NkYwIC8qIENTU1ZhbHVlUG9vbC5oICovLAorCQkJCTk0NDRD
QkRFMUQ4ODYxNTgwMDczQTA3NCAvKiBDU1NWYXJpYWJsZURhdGEuY3BwICovLAorCQkJCTk0NDRD
QkREMUQ4ODYxNTgwMDczQTA3NCAvKiBDU1NWYXJpYWJsZURhdGEuaCAqLywKIAkJCQlCQzE3OTBC
QzFCQkIzNkE4MDAwNkQxM0UgLyogQ1NTVmFyaWFibGVEZXBlbmRlbnRWYWx1ZS5jcHAgKi8sCiAJ
CQkJQkMxNzkwQkExQkI1QUIzRjAwMDZEMTNFIC8qIENTU1ZhcmlhYmxlRGVwZW5kZW50VmFsdWUu
aCAqLywKKwkJCQk5NDQ0Q0JEQzFEODg2MTU4MDA3M0EwNzQgLyogQ1NTVmFyaWFibGVSZWZlcmVu
Y2VWYWx1ZS5jcHAgKi8sCisJCQkJOTQ0NENCREIxRDg4NjE1ODAwNzNBMDc0IC8qIENTU1Zhcmlh
YmxlUmVmZXJlbmNlVmFsdWUuaCAqLywKIAkJCQlCQzE3OTBCRTFCQkYyQzQzMDAwNkQxM0UgLyog
Q1NTVmFyaWFibGVWYWx1ZS5jcHAgKi8sCiAJCQkJQkMxNzkwQkYxQkJGMkM0MzAwMDZEMTNFIC8q
IENTU1ZhcmlhYmxlVmFsdWUuaCAqLywKIAkJCQlBODBFNkNFMTBBMTk4OUNBMDA3RkI4QzUgLyog
RGFzaGJvYXJkUmVnaW9uLmggKi8sCkBAIC0yNDM2OCw2ICsyNDM5OCw3IEBACiAJCQkJOTMzMDlE
RTQwOTlFNjQ5MjAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
RjE1MzRERTExQjUzMkVDMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0RjE1MzRFMDExQjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTk0NDRDQkU0MUQ4ODYxOTkwMDczQTA3NCAvKiBDU1NDdXN0
b21JZGVudFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzQUM2NDhCMjEyOUUxNDY1MDBDM0VC
MjUgLyogRWRpdGluZ0JvdW5kYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkFCNkM2QzEyNTUw
NjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjMwNDND
RDBBRTAzNzNCMDBBODI2NDcgLyogRWRpdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MzU1LDYg
KzI1Mzg2LDcgQEAKIAkJCQlCMkZBM0RDMzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljU21vb3RoQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RDNTBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkZBM0RDNzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpY0Ficy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTQ0NENCREExRDg4NDgzQTAw
NzNBMDc0IC8qIENTU1ZhcmlhYmxlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RD
OTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQ0IwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNl
Z0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRENE
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVs
LmggaW4gSGVhZGVycyAqLywKQEAgLTI1OTMxLDYgKzI1OTYzLDcgQEAKIAkJCQkzMUQ1OTFCMzE2
Njk3QTZDMDBFNkJGMDIgLyogUGx1Z0luQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUM2
RTRGNDBENzQ1RTQ4MDA2NDQyRTkgLyogUGx1Z2luRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTcyMDVBQkMxMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQk5NDQ0Q0JFQTFEODg2MUNBMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVSZWZlcmVuY2VW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwOEZFREQxRDU5MkI4QjAwOEJBOENCIC8qIFBs
dWdpbkluZm9Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcyQUUxRTUxODNDMDc0MTAw
MEE1OTg4IC8qIFBsdWdpblJlcGxhY2VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUUyMTgz
QTE3MzU5RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jlc291cmNlcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjE0MCw2ICsyNjE3Myw3IEBACiAJCQkJNkVEODc4QzUxNDc0OTNGNDAwNEMzNTk3IC8qIFJl
bmRlclRhYmxlQ2FwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThERjRBRTkwOTgwQzQyQzAw
NTI5ODFCIC8qIFJlbmRlclRhYmxlQ2VsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThERjRBRjEw
OTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRlclRhYmxlQ29sLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
NDQ0Q0JFODFEODg2MUMyMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVEYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOERGNEFFRTA5ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFibGVSb3cuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4REY0QUVGMDk4MEM0MkMwMDUyOTgxQiAvKiBSZW5kZXJUYWJsZVNl
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODhDMDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJUZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTI2NzQwLDYgKzI2Nzc0LDcgQEAKIAkJCQkw
OEM3MTM2RTEyODk1NkEzMDAxQjEwN0UgLyogU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9m
Zi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRTIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RS
ZWZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FFNTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHVFNwYW5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5NDQ0Q0JFNjFEODg2MTk5
MDA3M0EwNzQgLyogQ1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjdBRTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1VuaXRUeXBlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBRUEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1VSSVJlZmVyZW5jZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBRUQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1VzZUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjgxMDksNiArMjgxNDQsNyBAQAogCQkJCTk3NkQ2
QzgwMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNEZF
OUU1MEI1Q0E1MzkwMDNFNEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzhEMDdCNjE0NUEwRjAzMDA5NjkwOEQgLyogRmlsZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk5NDQ0Q0JFOTFEODg2MUNBMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVSZWZlcmVu
Y2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTg4QTkwNDE3NTUzQ0Q3MDAwQzc0Rjkg
LyogRmlsZUljb25Mb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNEQkQxMjUxRjEy
RDAwM0VGMjY5IC8qIEZpbGVJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc2RDZD
ODUxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg2
NzAsNiArMjg3MDYsNyBAQAogCQkJCTc3Mjg2OTgzMTRGRDlBREEwMEY0ODREQyAvKiBKU0VYVFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RjRDOTZEQzFB
RDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaEJvZHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0Q0
Qzk2REMxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hIZWFkZXJzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTk0NDRDQkQ5MUQ4ODQ4M0EwMDczQTA3NCAvKiBDU1NWYXJpYWJsZVBhcnNlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3RTRDOTZEQzFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaFJl
cXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEU0Qzk2REMxQUQ0NDgzNTAwMzY1QTUwIC8q
IEpTRmV0Y2hSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAwRjAxNDBFMEExODk1
MDBGRDA0RTMgLyogSlNGaWxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg3NDQsNiArMjg3ODEs
NyBAQAogCQkJCUE4MEU3RTk4MEExQTgzRTMwMDdGQjhDNSAvKiBKU0hUTUxJbnB1dEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDNDM4NzgwRTg4NkNDNzAwNTMzREQ1IC8qIEpTSFRN
TElucHV0RWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNjE0OEE3ODEyRTQx
RTNCMDA0NEE3ODQgLyogSlNIVE1MS2V5Z2VuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk5NDQ0Q0JFNzFEODg2MUMyMDA3M0EwNzQgLyogQ1NTVmFyaWFibGVEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBRTJBQjIxMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMYWJlbEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjMwQTFDRTYzQjAwQjQyQjI1IC8qIEpT
SFRNTExlZ2VuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjUwQTFDRTYz
QjAwQjQyQjI1IC8qIEpTSFRNTExJRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NTEy
LDYgKzI5NTUwLDcgQEAKIAkJCQlBNzE5N0YyNjE3NTY4QUU1MDA3Qjk0NDIgLyogUGFnZVRocm90
dGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTI4NEFFQTEwNDQ3REVFMDBFQUVCNTIgLyog
UGFnZVRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUUxRUNDMjBDOTFD
OTA0MDBEQzI1NUIgLyogUGFnZVVSTFJlY29yZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NDQ0
Q0JFMzFEODg2MTk4MDA3M0EwNzQgLyogQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRkQ1Qjk3QTEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjBBMjEyQjAyNkY3MDBDMUEzNTkgLyogUGFu
bmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDE5MTJCMDI2NzYwMEMxQTM1OSAvKiBQ
YW5uZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk2OTQsNiArMjk3MzMsNyBAQAogCQkJ
CThBQzgyMkZDMTgwRkMwMzMwMEZCNjRENSAvKiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQTNGRjlDMzE1MjY1MzU5MDAyMjg4QTEgLyogUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODdGMDk3RDkzMDIwMDk0
QzlFNCAvKiBSZW5kZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQ0NENCRTUxRDg4
NjE5OTAwNzNBMDc0IC8qIENTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTQzQkY1OUMxMTQ5MjkyODAwQzY0M0NBIC8qIFJlbmRlclByb2dyZXNzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTVBNTc0RjI0MTMxREI5MzkwMDQ3MUI4OCAvKiBSZW5kZXJR
dW90ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlENzBBRDY1NzEzRTEzNDJCMDA1QjUwQjQgLyog
UmVuZGVyUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0N1c3RvbUlkZW50VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDdXN0b21JZGVudFZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
MiBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8K
Ky8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8g
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIgorCisjaW5j
bHVkZSAiQ1NTTWFya3VwLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0NTU0N1c3RvbUlkZW50VmFsdWU6OkNTU0N1c3RvbUlkZW50VmFsdWUoY29uc3QgU3RyaW5nJiBz
dHIpCisgICAgOiBDU1NWYWx1ZShDdXN0b21JZGVudENsYXNzKQorICAgICwgbV9zdHJpbmcoc3Ry
KQorICAgICwgbV9wcm9wZXJ0eUlkKENTU1Byb3BlcnR5SW52YWxpZCkgeyB9CisKK0NTU0N1c3Rv
bUlkZW50VmFsdWU6OkNTU0N1c3RvbUlkZW50VmFsdWUoQ1NTUHJvcGVydHlJRCBpZCkKKyAgICA6
IENTU1ZhbHVlKEN1c3RvbUlkZW50Q2xhc3MpCisgICAgLCBtX3N0cmluZygpCisgICAgLCBtX3By
b3BlcnR5SWQoaWQpCit7CisgICAgQVNTRVJUKGlzS25vd25Qcm9wZXJ0eUlEKCkpOworfQorCisK
K1N0cmluZyBDU1NDdXN0b21JZGVudFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKK3sKKyAg
ICBpZiAoaXNLbm93blByb3BlcnR5SUQoKSkKKyAgICAgICAgcmV0dXJuIGdldFByb3BlcnR5TmFt
ZUF0b21pY1N0cmluZyhtX3Byb3BlcnR5SWQpOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KyAgICBzZXJpYWxpemVJZGVudGlmaWVyKG1fc3RyaW5nLCBidWlsZGVyKTsKKyAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21JZGVudFZhbHVlLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbUlkZW50VmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDcyIEBACisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisv
LyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8g
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2lu
Y2x1ZGUgIkNTU1ZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTQ3Vz
dG9tSWRlbnRWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxDU1NDdXN0b21JZGVudFZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBzdHIpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0b21JZGVudFZhbHVlKHN0cikpOwor
ICAgIH0KKworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhbmQgbGF6aWx5IHBhcnNlIHRoZSBD
U1NQcm9wZXJ0eUlEIGluIGlzS25vd25Qcm9wZXJ0eUlEKCkuCisgICAgc3RhdGljIFJlZjxDU1ND
dXN0b21JZGVudFZhbHVlPiBjcmVhdGUoQ1NTUHJvcGVydHlJRCBpZCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbUlkZW50VmFsdWUoaWQpKTsKKyAgICB9CisK
KyAgICBTdHJpbmcgdmFsdWUoKSBjb25zdCB7IEFTU0VSVCghaXNLbm93blByb3BlcnR5SUQoKSk7
IHJldHVybiBtX3N0cmluZzsgfQorICAgIGJvb2wgaXNLbm93blByb3BlcnR5SUQoKSBjb25zdCB7
IHJldHVybiBtX3Byb3BlcnR5SWQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkOyB9CisgICAgQ1NTUHJv
cGVydHlJRCB2YWx1ZUFzUHJvcGVydHlJRCgpIGNvbnN0IHsgQVNTRVJUKGlzS25vd25Qcm9wZXJ0
eUlEKCkpOyByZXR1cm4gbV9wcm9wZXJ0eUlkOyB9CisKKyAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4
dCgpIGNvbnN0OworCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3VzdG9tSWRlbnRWYWx1ZSYg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNLbm93blByb3BlcnR5SUQoKSA/
IG1fcHJvcGVydHlJZCA9PSBvdGhlci5tX3Byb3BlcnR5SWQgOiBtX3N0cmluZyA9PSBvdGhlci5t
X3N0cmluZzsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ1NTQ3VzdG9tSWRlbnRWYWx1ZShjb25z
dCBTdHJpbmcmKTsKKyAgICBDU1NDdXN0b21JZGVudFZhbHVlKENTU1Byb3BlcnR5SUQpOworCisg
ICAgLy8gRklYTUU6IENoYW5nZSB0aGlzIHRvIGFuIEF0b21pY1N0cmluZy4KKyAgICBTdHJpbmcg
bV9zdHJpbmc7CisgICAgQ1NTUHJvcGVydHlJRCBtX3Byb3BlcnR5SWQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX1ZBTFVFKENTU0N1
c3RvbUlkZW50VmFsdWUsIGlzQ3VzdG9tSWRlbnRWYWx1ZSgpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLy8gQ29weXJpZ2h0IDIwMTUg
VGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbi5oIgorCisjaW5jbHVkZSAiQ1NTUGFyc2Vy
VG9rZW5SYW5nZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBDU1NDdXN0b21Q
cm9wZXJ0eURlY2xhcmF0aW9uOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKK3sKKyAgICBpZiAobV92
YWx1ZSkKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUtPnRva2VuUmFuZ2UoKS5zZXJpYWxpemUoKTsK
KyAgICBBU1NFUlQobV92YWx1ZUlkICE9IENTU1ZhbHVlSW50ZXJuYWxWYXJpYWJsZVZhbHVlKTsK
KyAgICByZXR1cm4gZ2V0VmFsdWVOYW1lKG1fdmFsdWVJZCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eURlY2xh
cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3Bl
cnR5RGVjbGFyYXRpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODMg
QEAKKy8vIENvcHlyaWdodCAyMDE1IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisv
LyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
Ky8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
Ky8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhcmlhYmxlRGF0
YS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NDdXN0b21Qcm9wZXJ0
eURlY2xhcmF0aW9uIDogcHVibGljIENTU1ZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PENTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIFJlZjxDU1NWYXJpYWJsZURhdGE+JiYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKG5hbWUsIFdURk1v
dmUodmFsdWUpKSk7CisgICAgfQorCisgICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eURl
Y2xhcmF0aW9uPiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBDU1NWYWx1ZUlEIGlk
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3VzdG9tUHJvcGVydHlE
ZWNsYXJhdGlvbihuYW1lLCBpZCkpOworICAgIH0KKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIENTU1ZhcmlhYmxlRGF0YSogdmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9CisgICAgQ1NTVmFsdWVJRCBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVJZDsgfQorICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkg
Y29uc3Q7CisKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0
aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdGhpcyA9PSAmb3RoZXI7IH0KKworcHJpdmF0ZToK
KyAgICBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgQ1NTVmFsdWVJRCBpZCkKKyAgICAgICAgOiBDU1NWYWx1ZShDdXN0b21Qcm9wZXJ0eURlY2xh
cmF0aW9uQ2xhc3MpCisgICAgICAgICwgbV9uYW1lKG5hbWUpCisgICAgICAgICwgbV92YWx1ZShu
dWxscHRyKQorICAgICAgICAsIG1fdmFsdWVJZChpZCkKKyAgICB7CisgICAgICAgIEFTU0VSVChp
ZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0aWFsIHx8IGlkID09IENT
U1ZhbHVlVW5zZXQgfHwgaWQgPT0gQ1NTVmFsdWVSZXZlcnQpOworICAgIH0KKworICAgIENTU0N1
c3RvbVByb3BlcnR5RGVjbGFyYXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NT
VmFyaWFibGVEYXRhPiYmIHZhbHVlKQorICAgICAgICA6IENTU1ZhbHVlKEN1c3RvbVByb3BlcnR5
RGVjbGFyYXRpb25DbGFzcykKKyAgICAgICAgLCBtX25hbWUobmFtZSkKKyAgICAgICAgLCBtX3Zh
bHVlKFdURk1vdmUodmFsdWUpKQorICAgICAgICAsIG1fdmFsdWVJZChDU1NWYWx1ZUludGVybmFs
VmFyaWFibGVWYWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nIG1f
bmFtZTsKKyAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiBtX3ZhbHVlOworICAgIENTU1ZhbHVl
SUQgbV92YWx1ZUlkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0NTU19WQUxVRShDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uLCBpc0N1
c3RvbVByb3BlcnR5RGVjbGFyYXRpb24oKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U0N1c3RvbVByb3BlcnR5VmFsdWUuaAkocmV2aXNpb24gMjA1Nzg5KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAorLy8gRklYTUUtTkVXUEFSU0VSOiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBm
YXZvciBvZiBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENTU0N1c3RvbVByb3BlcnR5VmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTVmFsdWUg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCShyZXZpc2lvbiAyMDU3ODkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4
IEBACiAjaW5jbHVkZSAiQ1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTQ3Jvc3NmYWRlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCisj
aW5jbHVkZSAiQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1c3RvbVByb3Bl
cnR5RGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAj
aW5jbHVkZSAiQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3Jj
VmFsdWUuaCIKQEAgLTU4LDYgKzYwLDcgQEAKICNpbmNsdWRlICJDU1NVbnNldFZhbHVlLmgiCiAj
aW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVEZXBlbmRlbnRW
YWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NWYXJpYWJsZVZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHQ29sb3IuaCIKICNpbmNsdWRlICJT
VkdQYWludC5oIgpAQCAtMzYyLDYgKzM2NSwxMiBAQCBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQo
KSBjb25zdAogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTVmFyaWFibGVEZXBlbmRlbnRWYWx1
ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKICAgICBjYXNlIFZhcmlhYmxlQ2xhc3M6CiAgICAg
ICAgIHJldHVybiBkb3duY2FzdDxDU1NWYXJpYWJsZVZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4
dCgpOworICAgIGNhc2UgQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbkNsYXNzOgorICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbj4oKnRoaXMpLmN1c3Rv
bUNTU1RleHQoKTsKKyAgICBjYXNlIEN1c3RvbUlkZW50Q2xhc3M6CisgICAgICAgIHJldHVybiBk
b3duY2FzdDxDU1NDdXN0b21JZGVudFZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOworICAg
IGNhc2UgVmFyaWFibGVSZWZlcmVuY2VDbGFzczoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENT
U1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CiAgICAgfQog
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MDUsNiArNTE0LDE1IEBAIHZvaWQgQ1NT
VmFsdWU6OmRlc3Ryb3koKQogICAgIGNhc2UgVmFyaWFibGVDbGFzczoKICAgICAgICAgZGVsZXRl
IGRvd25jYXN0PENTU1ZhcmlhYmxlVmFsdWU+KHRoaXMpOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uQ2xhc3M6CisgICAgICAgIGRlbGV0ZSBkb3du
Y2FzdDxDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uPih0aGlzKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgQ3VzdG9tSWRlbnRDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENT
U0N1c3RvbUlkZW50VmFsdWU+KHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBWYXJp
YWJsZVJlZmVyZW5jZUNsYXNzOgorICAgICAgICBkZWxldGUgZG93bmNhc3Q8Q1NTVmFyaWFibGVS
ZWZlcmVuY2VWYWx1ZT4odGhpcyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAkocmV2aXNpb24gMjA1
Nzg5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyMyw2ICsxMjMsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbmltYXRpb25UcmlnZ2VyU2Ny
b2xsVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBBbmltYXRpb25UcmlnZ2Vy
U2Nyb2xsQ2xhc3M7IH0KICNlbmRpZgogCisgICAgYm9vbCBpc0N1c3RvbVByb3BlcnR5RGVjbGFy
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBDdXN0b21Qcm9wZXJ0eURlY2xh
cmF0aW9uQ2xhc3M7IH0KKyAgICBib29sIGlzQ3VzdG9tSWRlbnRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xhc3NUeXBlID09IEN1c3RvbUlkZW50Q2xhc3M7IH0KKyAgICBib29sIGlzVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFZhcmlhYmxl
UmVmZXJlbmNlQ2xhc3M7IH0KKwogICAgIGJvb2wgaXNDU1NPTVNhZmUoKSBjb25zdCB7IHJldHVy
biBtX2lzQ1NTT01TYWZlOyB9CiAgICAgYm9vbCBpc1N1YnR5cGVFeHBvc2VkVG9DU1NPTSgpIGNv
bnN0CiAgICAgeyAKQEAgLTE5MiwxMCArMTk2LDE3IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiAg
ICAgICAgIENTU0NvbnRlbnREaXN0cmlidXRpb25DbGFzcywKKyAgICAgICAgCisgICAgICAgIC8v
IEZJWE1FLU5FV1BBUlNFUjogUmVtb3ZlIGluIGZhdm9yIG9mIG5ldyB2YXJpYWJsZXMgaW1wbGVt
ZW50YXRpb24uCiAgICAgICAgIEN1c3RvbVByb3BlcnR5Q2xhc3MsCiAgICAgICAgIFZhcmlhYmxl
RGVwZW5kZW50Q2xhc3MsCiAgICAgICAgIFZhcmlhYmxlQ2xhc3MsCiAKKyAgICAgICAgLy8gTmV3
IHZhcmlhYmxlcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgQ3VzdG9tUHJvcGVydHlEZWNsYXJh
dGlvbkNsYXNzLAorICAgICAgICBDdXN0b21JZGVudENsYXNzLAorICAgICAgICBWYXJpYWJsZVJl
ZmVyZW5jZUNsYXNzLAorCiAgICAgICAgIC8vIExpc3QgY2xhc3MgdHlwZXMgbXVzdCBhcHBlYXIg
YWZ0ZXIgVmFsdWVMaXN0Q2xhc3MuCiAgICAgICAgIFZhbHVlTGlzdENsYXNzLAogICAgICAgICBJ
bWFnZVNldENsYXNzLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4J
KHJldmlzaW9uIDIwNTc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC04MzMsNiArODMzLDEyIEBAIHBhZGRpbmcKIHBhZGRpbmct
Ym94CiAKIC8vCisvLyBWYXJpYWJsZXMgSW1wbGVtZW50YXRpb24KKy8vCit2YXIKKy1pbnRlcm5h
bC12YXJpYWJsZS12YWx1ZQorCisvLwogLy8gQ1NTX1BST1BfQlJFQUtfQkVGT1JFL0FGVEVSL0lO
U0lERQogLy8KIGF2b2lkLWNvbHVtbgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zhcmlh
YmxlRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxl
RGF0YS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxl
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorLy8gQ29weXJpZ2h0IDIw
MTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgor
Ly8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQ1NTVmFyaWFibGVEYXRhLmgiCisKKyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNs
dWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIENTU1Zhcmlh
YmxlRGF0YTo6dXBkYXRlVG9rZW5zKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQor
eworICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIGN1cnJlbnRPZmZzZXQgPSBtX2JhY2tpbmdTdHJp
bmcuY2hhcmFjdGVyczxDaGFyYWN0ZXJUeXBlPigpOworICAgIGZvciAoY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mIHRva2VuIDogcmFuZ2UpIHsKKyAgICAgICAgaWYgKHRva2VuLmhhc1N0cmluZ0JhY2tp
bmcoKSkgeworICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdG9rZW4udmFsdWUoKS5sZW5n
dGgoKTsKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcgc3RyaW5nKGN1cnJlbnRPZmZzZXQsIGxlbmd0
aCk7CisgICAgICAgICAgICBtX3Rva2Vucy5hcHBlbmQodG9rZW4uY29weVdpdGhVcGRhdGVkU3Ry
aW5nKHN0cmluZykpOworICAgICAgICAgICAgY3VycmVudE9mZnNldCArPSBsZW5ndGg7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbV90b2tlbnMuYXBwZW5kKHRva2VuKTsKKyAgICB9Cisg
ICAgQVNTRVJUKGN1cnJlbnRPZmZzZXQgPT0gbV9iYWNraW5nU3RyaW5nLmNoYXJhY3RlcnM8Q2hh
cmFjdGVyVHlwZT4oKSArIG1fYmFja2luZ1N0cmluZy5sZW5ndGgoKSk7Cit9CisKK2Jvb2wgQ1NT
VmFyaWFibGVEYXRhOjpvcGVyYXRvcj09KGNvbnN0IENTU1ZhcmlhYmxlRGF0YSYgb3RoZXIpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHRva2VucygpID09IG90aGVyLnRva2VucygpOworfQorCit2b2lk
IENTU1ZhcmlhYmxlRGF0YTo6Y29uc3VtZUFuZFVwZGF0ZVRva2Vucyhjb25zdCBDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Cisg
ICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBsb2NhbFJhbmdlID0gcmFuZ2U7CisKKyAgICB3aGlsZSAo
IWxvY2FsUmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBDU1NQYXJzZXJUb2tlbiB0b2tlbiA9IGxv
Y2FsUmFuZ2UuY29uc3VtZSgpOworICAgICAgICBpZiAodG9rZW4uaGFzU3RyaW5nQmFja2luZygp
KQorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9rZW4udmFsdWUoKSk7CisgICAg
fQorICAgIG1fYmFja2luZ1N0cmluZyA9IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBp
ZiAobV9iYWNraW5nU3RyaW5nLmlzOEJpdCgpKQorICAgICAgICB1cGRhdGVUb2tlbnM8TENoYXI+
KHJhbmdlKTsKKyAgICBlbHNlCisgICAgICAgIHVwZGF0ZVRva2VuczxVQ2hhcj4ocmFuZ2UpOwor
fQorCitDU1NWYXJpYWJsZURhdGE6OkNTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbikKKyAgICA6IG1fbmVl
ZHNWYXJpYWJsZVJlc29sdXRpb24obmVlZHNWYXJpYWJsZVJlc29sdXRpb24pCit7CisgICAgQVNT
RVJUKCFyYW5nZS5hdEVuZCgpKTsKKyAgICBjb25zdW1lQW5kVXBkYXRlVG9rZW5zKHJhbmdlKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhcmlhYmxlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJp
YWJsZURhdGEuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFi
bGVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NSBAQAorLy8gQ29weXJpZ2h0IDIw
MTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgor
Ly8gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisvLyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkNTU1BhcnNlclRva2VuLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENTU1BhcnNlclRva2VuUmFuZ2U7CisKK2NsYXNzIENTU1ZhcmlhYmxlRGF0YSA6IHB1Ymxp
YyBSZWZDb3VudGVkPENTU1ZhcmlhYmxlRGF0YT4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KENTU1ZhcmlhYmxlRGF0YSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+IGNyZWF0ZShjb25zdCBDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbiA9IHRydWUpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NWYXJpYWJsZURhdGEocmFuZ2Us
IG5lZWRzVmFyaWFibGVSZXNvbHV0aW9uKSk7CisgICAgfQorCisgICAgc3RhdGljIFJlZjxDU1NW
YXJpYWJsZURhdGE+IGNyZWF0ZVJlc29sdmVkKGNvbnN0IFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4m
IHJlc29sdmVkVG9rZW5zLCBjb25zdCBDU1NWYXJpYWJsZURhdGEmIHVucmVzb2x2ZWREYXRhKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFyaWFibGVEYXRhKHJlc29s
dmVkVG9rZW5zLCB1bnJlc29sdmVkRGF0YS5tX2JhY2tpbmdTdHJpbmcpKTsKKyAgICB9CisKKyAg
ICBDU1NQYXJzZXJUb2tlblJhbmdlIHRva2VuUmFuZ2UoKSB7IHJldHVybiBtX3Rva2VuczsgfQor
CisgICAgY29uc3QgVmVjdG9yPENTU1BhcnNlclRva2VuPiYgdG9rZW5zKCkgY29uc3QgeyByZXR1
cm4gbV90b2tlbnM7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NWYXJpYWJsZURh
dGEmIG90aGVyKSBjb25zdDsKKworICAgIGJvb2wgbmVlZHNWYXJpYWJsZVJlc29sdXRpb24oKSBj
b25zdCB7IHJldHVybiBtX25lZWRzVmFyaWFibGVSZXNvbHV0aW9uOyB9CisKK3ByaXZhdGU6Cisg
ICAgQ1NTVmFyaWFibGVEYXRhKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBib29sIG5lZWRz
VmFyaWFibGVSZXNvbHV0aW9uKTsKKworICAgIC8vIFdlIGNhbiBzYWZlbHkgY29weSB0aGUgdG9r
ZW5zICh3aGljaCBoYXZlIHJhdyBwb2ludGVycyB0byBzdWJzdHJpbmdzKSBiZWNhdXNlCisgICAg
Ly8gU3R5bGVQcm9wZXJ0eVNldHMgY29udGFpbiByZWZlcmVuY2VzIHRvIENTU0N1c3RvbVByb3Bl
cnR5RGVjbGFyYXRpb25zLCB3aGljaAorICAgIC8vIHBvaW50IHRvIHRoZSB1bnJlc29sdmVkIENT
U1ZhcmlhYmxlRGF0YSB2YWx1ZXMgdGhhdCBvd24gdGhlIGJhY2tpbmcgc3RyaW5ncworICAgIC8v
IHRoaXMgd2lsbCBwb3RlbnRpYWxseSByZWZlcmVuY2UuCisgICAgQ1NTVmFyaWFibGVEYXRhKGNv
bnN0IFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mIHJlc29sdmVkVG9rZW5zLCBTdHJpbmcgYmFja2lu
Z1N0cmluZykKKyAgICAgICAgOiBtX2JhY2tpbmdTdHJpbmcoYmFja2luZ1N0cmluZykKKyAgICAg
ICAgLCBtX3Rva2VucyhyZXNvbHZlZFRva2VucykKKyAgICAgICAgLCBtX25lZWRzVmFyaWFibGVS
ZXNvbHV0aW9uKGZhbHNlKQorICAgIHsgfQorCisgICAgdm9pZCBjb25zdW1lQW5kVXBkYXRlVG9r
ZW5zKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiB2b2lkIHVwZGF0ZVRva2Vucyhjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdl
Jik7CisKKyAgICBTdHJpbmcgbV9iYWNraW5nU3RyaW5nOworICAgIFZlY3RvcjxDU1NQYXJzZXJU
b2tlbj4gbV90b2tlbnM7CisgICAgY29uc3QgYm9vbCBtX25lZWRzVmFyaWFibGVSZXNvbHV0aW9u
OworCisgICAgLy8gRklYTUUtTkVXUEFSU0VSOiBXZSB3YW50IHRvIGNhY2hlIFN0eWxlUHJvcGVy
dGllcyBvbmNlIHdlIHN1cHBvcnQgQGFwcGx5LgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGVwZW5kZW50VmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEZXBlbmRlbnRWYWx1
ZS5oCShyZXZpc2lvbiAyMDU3ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVE
ZXBlbmRlbnRWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCisvLyBGSVhNRS1O
RVdQQVJTRVI6IFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIGZhdm9yIG9mIENTU1ZhcmlhYmxlUmVm
ZXJlbmNlVmFsdWUKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTVmFyaWFibGVEZXBl
bmRlbnRWYWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1NWYWx1ZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBACisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQ2hyb21p
dW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisv
LyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
Ky8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NWYXJp
YWJsZVJlZmVyZW5jZVZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3RyaW5nIENT
U1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAoreworICAgIC8v
IFdlIG1heSB3YW50IHRvIGNvbnNpZGVyIGNhY2hpbmcgdGhpcyB2YWx1ZS4KKyAgICByZXR1cm4g
bV9kYXRhLT50b2tlblJhbmdlKCkuc2VyaWFsaXplKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNl
VmFsdWUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVS
ZWZlcmVuY2VWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAKKy8vIENvcHly
aWdodCAyMDE1IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1
dGlvbi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
Ly8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhcmlhYmxlRGF0YS5oIgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NWYXJp
YWJsZVJlZmVyZW5jZVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+IGNyZWF0ZShSZWY8Q1NTVmFyaWFibGVE
YXRhPiYmIGRhdGEpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NWYXJp
YWJsZVJlZmVyZW5jZVZhbHVlKFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CisKKyAgICBDU1NWYXJp
YWJsZURhdGEqIHZhcmlhYmxlRGF0YVZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2RhdGEuZ2V0KCk7CisgICAgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YSA9PSBvdGhlci5t
X2RhdGE7IH0KKyAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUoUmVmPENTU1ZhcmlhYmxlRGF0YT4mJiBkYXRh
KQorICAgICAgICA6IENTU1ZhbHVlKFZhcmlhYmxlUmVmZXJlbmNlQ2xhc3MpCisgICAgICAgICwg
bV9kYXRhKFdURk1vdmUoZGF0YSkpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxDU1NWYXJp
YWJsZURhdGE+IG1fZGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19DU1NfVkFMVUUoQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSwgaXNW
YXJpYWJsZVJlZmVyZW5jZVZhbHVlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFy
aWFibGVWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJs
ZVZhbHVlLmgJKHJldmlzaW9uIDIwNTc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJp
YWJsZVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IkNTU1ZhbHVlLmgiCiAKKy8vIEZJWE1FLU5FV1BBUlNFUjogVGhpcyB3aWxsIGJlIHJlbW92ZWQg
aW4gZmF2b3Igb2YgdGhlIG5ldyB2YXJpYWJsZXMgaW1wbGVtZW50YXRpb24uCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENTU1ZhbHVlTGlzdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTQXRSdWxlSUQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTQXRSdWxlSUQuY3BwCShyZXZpc2lvbiAyMDU3ODkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNSAr
NTksNSBAQCBDU1NBdFJ1bGVJRCBjc3NBdFJ1bGVJRChTdHJpbmdWaWV3IG5hbWUpCiAgICAgcmV0
dXJuIENTU0F0UnVsZUludmFsaWQ7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIGJsaW5rCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VySW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJJbXBsLmNwcAkocmV2aXNpb24gMjA1NzkwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAog
I2luY2x1ZGUgIkNTU1BhcnNlckltcGwuaCIKIAogI2luY2x1ZGUgIkNTU0F0UnVsZUlELmgiCi0j
aW5jbHVkZSAiQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1c3RvbVBy
b3BlcnR5RGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NLZXlmcmFtZVJ1bGUuaCIKICNpbmNs
dWRlICJDU1NLZXlmcmFtZXNSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyT2JzZXJ2ZXIuaCIK
QEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAi
Q1NTU3VwcG9ydHNQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NUb2tlbml6ZXIuaCIKLS8vIEZJWE1F
LU5FV1BBUlNFUjogI2luY2x1ZGUgIkNTU1ZhcmlhYmxlUGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NT
VmFyaWFibGVQYXJzZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1l
bnQuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5UGFyc2VyLmgiCkBAIC05NywxMiArOTcsMTEgQEAg
c3RhdGljIGlubGluZSB2b2lkIGZpbHRlclByb3BlcnRpZXMoYm9vbAogICAgICAgICBjb25zdCB1
bnNpZ25lZCBwcm9wZXJ0eUlESW5kZXggPSBwcm9wZXJ0eS5pZCgpIC0gZmlyc3RDU1NQcm9wZXJ0
eTsKICAgICAgICAgCiAgICAgICAgIGlmIChwcm9wZXJ0eS5pZCgpID09IENTU1Byb3BlcnR5Q3Vz
dG9tKSB7Ci0gICAgICAgICAgICBpZiAocHJvcGVydHkudmFsdWUoKSkgewotICAgICAgICAgICAg
ICAgIGF1dG8mIG5hbWUgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqcHJvcGVy
dHkudmFsdWUoKSkubmFtZSgpOwotICAgICAgICAgICAgICAgIGlmICghc2VlbkN1c3RvbVByb3Bl
cnRpZXMuYWRkKG5hbWUpLmlzTmV3RW50cnkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgIG91dHB1dFstLXVudXNlZEVudHJpZXNdID0gcHJvcGVydHk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKiBj
dXN0b21WYWx1ZSA9IGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5RGVjbGFyYXRpb24+KHByb3Bl
cnR5LnZhbHVlKCkpOworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gY3Vz
dG9tVmFsdWUtPm5hbWUoKTsKKyAgICAgICAgICAgIGlmIChzZWVuQ3VzdG9tUHJvcGVydGllcy5j
b250YWlucyhuYW1lKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHNl
ZW5DdXN0b21Qcm9wZXJ0aWVzLmFkZChuYW1lKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAgICAgICAgIApAQCAtNzc5LDExICs3NzgsMTAgQEAgdm9pZCBDU1NQYXJzZXJJbXBs
Ojpjb25zdW1lRGVjbGFyYXRpb24oQwogICAgIH0KIAogICAgIHNpemVfdCBwcm9wZXJ0aWVzQ291
bnQgPSBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpOwotICAgIC8vIEZJWE1FLU5FV1BBUlNFUjog
U3VwcG9ydCB2YXJpYWJsZXMKLSAgICAvKmlmICh1bnJlc29sdmVkUHJvcGVydHkgPT0gQ1NTUHJv
cGVydHlJbnZhbGlkICYmIENTU1ZhcmlhYmxlUGFyc2VyOjppc1ZhbGlkVmFyaWFibGVOYW1lKHRv
a2VuKSkgeworICAgIGlmICh1bnJlc29sdmVkUHJvcGVydHkgPT0gQ1NTUHJvcGVydHlJbnZhbGlk
ICYmIENTU1ZhcmlhYmxlUGFyc2VyOjppc1ZhbGlkVmFyaWFibGVOYW1lKHRva2VuKSkgewogICAg
ICAgICBBdG9taWNTdHJpbmcgdmFyaWFibGVOYW1lID0gdG9rZW4udmFsdWUoKS50b0F0b21pY1N0
cmluZygpOwogICAgICAgICBjb25zdW1lVmFyaWFibGVWYWx1ZShyYW5nZS5tYWtlU3ViUmFuZ2Uo
JnJhbmdlLnBlZWsoKSwgZGVjbGFyYXRpb25WYWx1ZUVuZCksIHZhcmlhYmxlTmFtZSwgaW1wb3J0
YW50KTsKLSAgICB9Ki8KKyAgICB9CiAKICAgICBpZiAoaW1wb3J0YW50ICYmIChydWxlVHlwZSA9
PSBTdHlsZVJ1bGU6OkZvbnRGYWNlIHx8IHJ1bGVUeXBlID09IFN0eWxlUnVsZTo6S2V5ZnJhbWUp
KQogICAgICAgICByZXR1cm47CkBAIC03OTgsMTEgKzc5NiwxMCBAQCB2b2lkIENTU1BhcnNlcklt
cGw6OmNvbnN1bWVEZWNsYXJhdGlvbihDCiAgICAgfQogfQogCi12b2lkIENTU1BhcnNlckltcGw6
OmNvbnN1bWVWYXJpYWJsZVZhbHVlKENTU1BhcnNlclRva2VuUmFuZ2UgLyogcmFuZ2UgKi8sIGNv
bnN0IEF0b21pY1N0cmluZyYgLyp2YXJpYWJsZU5hbWUgKi8sIGJvb2wgLyogaW1wb3J0YW50ICov
KQordm9pZCBDU1NQYXJzZXJJbXBsOjpjb25zdW1lVmFyaWFibGVWYWx1ZShDU1NQYXJzZXJUb2tl
blJhbmdlIHJhbmdlLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhcmlhYmxlTmFtZSwgYm9vbCBpbXBv
cnRhbnQpCiB7Ci0gICAgLy8gRklYTUUtTkVXUEFSU0VSOiBTdXBwb3J0IHZhcmlhYmxlcwotICAg
IC8vIGlmIChDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uKiB2YWx1ZSA9IENTU1ZhcmlhYmxl
UGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uVmFsdWUodmFyaWFibGVOYW1lLCByYW5nZSkpCi0gICAg
Ly8gICAgIG1fcGFyc2VkUHJvcGVydGllcy5hcHBlbmQoQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlW
YXJpYWJsZSwgKnZhbHVlLCBpbXBvcnRhbnQpKTsKKyAgICBpZiAoUmVmUHRyPENTU0N1c3RvbVBy
b3BlcnR5RGVjbGFyYXRpb24+IHZhbHVlID0gQ1NTVmFyaWFibGVQYXJzZXI6OnBhcnNlRGVjbGFy
YXRpb25WYWx1ZSh2YXJpYWJsZU5hbWUsIHJhbmdlKSkKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0
aWVzLmFwcGVuZChDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUN1c3RvbSwgV1RGTW92ZSh2YWx1ZSks
IGltcG9ydGFudCkpOwogfQogCiB2b2lkIENTU1BhcnNlckltcGw6OmNvbnN1bWVEZWNsYXJhdGlv
blZhbHVlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIENTU1Byb3BlcnR5SUQgdW5yZXNvbHZl
ZFByb3BlcnR5LCBib29sIGltcG9ydGFudCwgU3R5bGVSdWxlOjpUeXBlIHJ1bGVUeXBlKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAJ
KHJldmlzaW9uIDIwNTc4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0
b3JQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjgsNCArNzY4LDQgQEAgc3RkOjp1bmlx
dWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NTZQogICAgIHJldHVybiBzZWNvbmRDb21wb3Vu
ZDsKIH0KIAotfSAvLyBuYW1lc3BhY2UgYmxpbmsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU3VwcG9ydHNQYXJzZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU3VwcG9ydHNQYXJzZXIuY3Bw
CShyZXZpc2lvbiAyMDU3OTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1N1cHBv
cnRzUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDQgKzExNiw0IEBAIENTU1N1cHBv
cnRzUGFyc2VyOjpTdXBwb3J0c1Jlc3VsdCBDU1NTdXAKICAgICByZXR1cm4gaW5uZXJSYW5nZS5w
ZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4gJiYgbV9wYXJzZXIuc3VwcG9ydHNEZWNsYXJhdGlv
bihpbm5lclJhbmdlKSA/IFN1cHBvcnRlZCA6IFVuc3VwcG9ydGVkOwogfQogCi19IC8vIG5hbWVz
cGFjZSBibGluaworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNjYgQEAKKy8vIENvcHlyaWdodCAyMDE1IFRoZSBDaHJvbWl1bSBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1ZhcmlhYmxl
UGFyc2VyLmgiCisKKyNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uLmgiCisj
aW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2Jvb2wgQ1NTVmFyaWFibGVQYXJzZXI6OmlzVmFsaWRWYXJpYWJsZU5hbWUoY29uc3QgQ1NTUGFy
c2VyVG9rZW4mIHRva2VuKQoreworICAgIGlmICh0b2tlbi50eXBlKCkgIT0gSWRlbnRUb2tlbikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nVmlldyB2YWx1ZSA9IHRva2VuLnZh
bHVlKCk7CisgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCgpID49IDIgJiYgdmFsdWVbMF0gPT0gJy0n
ICYmIHZhbHVlWzFdID09ICctJzsKK30KKworYm9vbCBDU1NWYXJpYWJsZVBhcnNlcjo6aXNWYWxp
ZFZhcmlhYmxlTmFtZShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4gc3RyaW5n
Lmxlbmd0aCgpID49IDIgJiYgc3RyaW5nWzBdID09ICctJyAmJiBzdHJpbmdbMV0gPT0gJy0nOwor
fQorCitib29sIGlzVmFsaWRWYXJpYWJsZVJlZmVyZW5jZShDU1NQYXJzZXJUb2tlblJhbmdlLCBi
b29sJiBoYXNBdEFwcGx5UnVsZSk7CisKK3N0YXRpYyBib29sIGNsYXNzaWZ5QmxvY2soQ1NTUGFy
c2VyVG9rZW5SYW5nZSByYW5nZSwgYm9vbCYgaGFzUmVmZXJlbmNlcywgYm9vbCYgaGFzQXRBcHBs
eVJ1bGUsIGJvb2wgaXNUb3BMZXZlbEJsb2NrID0gdHJ1ZSkKK3sKKyAgICB3aGlsZSAoIXJhbmdl
LmF0RW5kKCkpIHsKKyAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5nZXRCbG9ja1R5cGUoKSA9PSBD
U1NQYXJzZXJUb2tlbjo6QmxvY2tTdGFydCkgeworICAgICAgICAgICAgY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOworICAgICAgICAgICAgQ1NTUGFyc2VyVG9rZW5S
YW5nZSBibG9jayA9IHJhbmdlLmNvbnN1bWVCbG9jaygpOworICAgICAgICAgICAgaWYgKHRva2Vu
LmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVZhcikgeworICAgICAgICAgICAgICAgIGlmICghaXNW
YWxpZFZhcmlhYmxlUmVmZXJlbmNlKGJsb2NrLCBoYXNBdEFwcGx5UnVsZSkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQmFpbCBpZiBhbnkgcmVmZXJlbmNlcyBhcmUgaW52
YWxpZAorICAgICAgICAgICAgICAgIGhhc1JlZmVyZW5jZXMgPSB0cnVlOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFjbGFzc2lmeUJs
b2NrKGJsb2NrLCBoYXNSZWZlcmVuY2VzLCBoYXNBdEFwcGx5UnVsZSwgZmFsc2UpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKKyAgICAgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5nZXRCbG9ja1R5cGUoKSAhPSBDU1NQYXJz
ZXJUb2tlbjo6QmxvY2tFbmQpOworCisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tl
biA9IHJhbmdlLmNvbnN1bWUoKTsKKyAgICAgICAgc3dpdGNoICh0b2tlbi50eXBlKCkpIHsKKyAg
ICAgICAgY2FzZSBBdEtleXdvcmRUb2tlbjogeworICAgICAgICAgICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UodG9rZW4udmFsdWUoKSwgImFwcGx5IikpIHsKKyAgICAgICAgICAgICAgICBy
YW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgICAgICAgICAgICAgIGNvbnN0IENTU1BhcnNl
clRva2VuJiB2YXJpYWJsZU5hbWUgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgp
OworICAgICAgICAgICAgICAgIGlmICghQ1NTVmFyaWFibGVQYXJzZXI6OmlzVmFsaWRWYXJpYWJs
ZU5hbWUodmFyaWFibGVOYW1lKQorICAgICAgICAgICAgICAgICAgICB8fCAhKHJhbmdlLmF0RW5k
KCkgfHwgcmFuZ2UucGVlaygpLnR5cGUoKSA9PSBTZW1pY29sb25Ub2tlbiB8fCByYW5nZS5wZWVr
KCkudHlwZSgpID09IFJpZ2h0QnJhY2VUb2tlbikpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBoYXNBdEFwcGx5UnVsZSA9IHRydWU7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERlbGlt
aXRlclRva2VuOiB7CisgICAgICAgICAgICBpZiAodG9rZW4uZGVsaW1pdGVyKCkgPT0gJyEnICYm
IGlzVG9wTGV2ZWxCbG9jaykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFJpZ2h0UGFyZW50aGVzaXNUb2tl
bjoKKyAgICAgICAgY2FzZSBSaWdodEJyYWNlVG9rZW46CisgICAgICAgIGNhc2UgUmlnaHRCcmFj
a2V0VG9rZW46CisgICAgICAgIGNhc2UgQmFkU3RyaW5nVG9rZW46CisgICAgICAgIGNhc2UgQmFk
VXJsVG9rZW46CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgU2VtaWNv
bG9uVG9rZW46CisgICAgICAgICAgICBpZiAoaXNUb3BMZXZlbEJsb2NrKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgaXNWYWxpZFZhcmlhYmxlUmVmZXJlbmNlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFu
Z2UsIGJvb2wmIGhhc0F0QXBwbHlSdWxlKQoreworICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNl
KCk7CisgICAgaWYgKCFDU1NWYXJpYWJsZVBhcnNlcjo6aXNWYWxpZFZhcmlhYmxlTmFtZShyYW5n
ZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChyYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChy
YW5nZS5jb25zdW1lKCkudHlwZSgpICE9IENvbW1hVG9rZW4pCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAocmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ym9vbCBoYXNSZWZlcmVuY2VzID0gZmFsc2U7CisgICAgcmV0dXJuIGNsYXNzaWZ5QmxvY2socmFu
Z2UsIGhhc1JlZmVyZW5jZXMsIGhhc0F0QXBwbHlSdWxlKTsKK30KKworc3RhdGljIENTU1ZhbHVl
SUQgY2xhc3NpZnlWYXJpYWJsZVJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIGJvb2wm
IGhhc1JlZmVyZW5jZXMsIGJvb2wmIGhhc0F0QXBwbHlSdWxlKQoreworICAgIGhhc1JlZmVyZW5j
ZXMgPSBmYWxzZTsKKyAgICBoYXNBdEFwcGx5UnVsZSA9IGZhbHNlOworCisgICAgcmFuZ2UuY29u
c3VtZVdoaXRlc3BhY2UoKTsKKyAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBJZGVudFRv
a2VuKSB7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpLmlkKCk7CisgICAgICAgIGlmIChyYW5nZS5hdEVuZCgpICYmIChpZCA9PSBDU1NW
YWx1ZUluaGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0aWFsIHx8IGlkID09IENTU1ZhbHVlVW5z
ZXQpKQorICAgICAgICAgICAgcmV0dXJuIGlkOworICAgIH0KKworICAgIGlmIChjbGFzc2lmeUJs
b2NrKHJhbmdlLCBoYXNSZWZlcmVuY2VzLCBoYXNBdEFwcGx5UnVsZSkpCisgICAgICAgIHJldHVy
biBDU1NWYWx1ZUludGVybmFsVmFyaWFibGVWYWx1ZTsKKyAgICByZXR1cm4gQ1NTVmFsdWVJbnZh
bGlkOworfQorCitib29sIENTU1ZhcmlhYmxlUGFyc2VyOjpjb250YWluc1ZhbGlkVmFyaWFibGVS
ZWZlcmVuY2VzKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UpCit7CisgICAgYm9vbCBoYXNSZWZl
cmVuY2VzOworICAgIGJvb2wgaGFzQXRBcHBseVJ1bGU7CisgICAgQ1NTVmFsdWVJRCB0eXBlID0g
Y2xhc3NpZnlWYXJpYWJsZVJhbmdlKHJhbmdlLCBoYXNSZWZlcmVuY2VzLCBoYXNBdEFwcGx5UnVs
ZSk7CisgICAgcmV0dXJuIHR5cGUgPT0gQ1NTVmFsdWVJbnRlcm5hbFZhcmlhYmxlVmFsdWUgJiYg
aGFzUmVmZXJlbmNlcyAmJiAhaGFzQXRBcHBseVJ1bGU7Cit9CisKK1JlZlB0cjxDU1NDdXN0b21Q
cm9wZXJ0eURlY2xhcmF0aW9uPiBDU1NWYXJpYWJsZVBhcnNlcjo6cGFyc2VEZWNsYXJhdGlvblZh
bHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFyaWFibGVOYW1lLCBDU1NQYXJzZXJUb2tlblJhbmdl
IHJhbmdlKQoreworICAgIGlmIChyYW5nZS5hdEVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGJvb2wgaGFzUmVmZXJlbmNlczsKKyAgICBib29sIGhhc0F0QXBwbHlSdWxlOwor
ICAgIENTU1ZhbHVlSUQgdHlwZSA9IGNsYXNzaWZ5VmFyaWFibGVSYW5nZShyYW5nZSwgaGFzUmVm
ZXJlbmNlcywgaGFzQXRBcHBseVJ1bGUpOworCisgICAgaWYgKHR5cGUgPT0gQ1NTVmFsdWVJbnZh
bGlkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAodHlwZSA9PSBDU1NWYWx1ZUlu
dGVybmFsVmFyaWFibGVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIENTU0N1c3RvbVByb3BlcnR5RGVj
bGFyYXRpb246OmNyZWF0ZSh2YXJpYWJsZU5hbWUsIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKHJh
bmdlLCBoYXNSZWZlcmVuY2VzIHx8IGhhc0F0QXBwbHlSdWxlKSk7CisgICAgcmV0dXJuIENTU0N1
c3RvbVByb3BlcnR5RGVjbGFyYXRpb246OmNyZWF0ZSh2YXJpYWJsZU5hbWUsIHR5cGUpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1ZhcmlhYmxlUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NWYXJpYWJsZVBhcnNlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDUwIEBACisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6Cisv
LworLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv
LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW5SYW5nZS5oIgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NDdXN0b21Qcm9wZXJ0eURlY2xhcmF0aW9uOwor
CitjbGFzcyBDU1NWYXJpYWJsZVBhcnNlciB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgY29u
dGFpbnNWYWxpZFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQYXJzZXJUb2tlblJhbmdlKTsKKworICAg
IHN0YXRpYyBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlEZWNsYXJhdGlvbj4gcGFyc2VEZWNsYXJh
dGlvblZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYsIENTU1BhcnNlclRva2VuUmFuZ2UpOworCisg
ICAgc3RhdGljIGJvb2wgaXNWYWxpZFZhcmlhYmxlTmFtZShjb25zdCBDU1NQYXJzZXJUb2tlbiYp
OworICAgIHN0YXRpYyBib29sIGlzVmFsaWRWYXJpYWJsZU5hbWUoY29uc3QgU3RyaW5nJik7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="311999"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>