<?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>231383</bug_id>
          
          <creation_ts>2021-10-07 11:57:29 -0700</creation_ts>
          <short_desc>Introduce ShadowPseudoIds to store all UA shadow root pseudo-element ids</short_desc>
          <delta_ts>2021-10-07 16:44:19 -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>WebCore Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>231203</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Aditya Keerthi">akeerthi</reporter>
          <assigned_to name="Aditya Keerthi">akeerthi</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1801697</commentid>
    <comment_count>0</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-10-07 11:57:29 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801702</commentid>
    <comment_count>1</comment_count>
      <attachid>440521</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-10-07 12:08:42 -0700</bug_when>
    <thetext>Created attachment 440521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801866</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-07 16:43:18 -0700</bug_when>
    <thetext>Committed r283757 (242678@main): &lt;https://commits.webkit.org/242678@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440521.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801867</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-07 16:44:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/84005613&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440521</attachid>
            <date>2021-10-07 12:08:42 -0700</date>
            <delta_ts>2021-10-07 16:43:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231383-20211007120841.patch</filename>
            <type>text/plain</type>
            <size>74854</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkwM2Q3OTNiM2Y1ZTA2
MzhiODkwZDRiMDM0MDkzNTBhMTlmNjQyOC4uYmUyMTg4Y2E0NjA5NTlhMTQ0ZGFjMzgxYjljYjdm
MTYwM2E2MmFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAyMS0xMC0wNyAgQWRp
dHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIFNo
YWRvd1BzZXVkb0lkcyB0byBzdG9yZSBhbGwgVUEgc2hhZG93IHJvb3QgcHNldWRvLWVsZW1lbnQg
aWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEz
ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcmdh
bml6ZSBhbGwgVUEgc2hhZG93IHJvb3QgcHNldWRvLWVsZW1lbnQgaWRzIGluIFNoYWRvd1BzZXVk
b0lkcy4KKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIGFsc28gZW5hYmxlcyBkZXRlY3Rpb24g
b2YgYSBzcGVjaWZpYyBVQSBzaGFkb3cgcm9vdAorICAgICAgICBlbGVtZW50IChmb3IgZXhhbXBs
ZTogYW5zd2VyaW5nIHRoZSBxdWVzdGlvbiAiaXMgdGhpcyBlbGVtZW50IGEgY2FwcworICAgICAg
ICBsb2NrIGluZGljYXRvcj8iKS4gVGhlIGltcGxlbWVudGF0aW9uIG9mICdhcHBlYXJhbmNlOiBh
dXRvJyByZWxpZXMgb24KKyAgICAgICAgYmVpbmcgYWJsZSB0byB0byBhbnN3ZXIgdGhhdCBxdWVz
dGlvbi4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNy
ZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkpOgor
ICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50
RWRpdGFiaWxpdHkpOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpVcGxvYWRCdXR0b25FbGVtZW50OjpjcmVhdGVJbnRlcm5hbCk6CisgICAgICAg
ICogaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldFZhbHVlQ2xhc3MpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6Cisg
ICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5n
ZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVwZGF0ZUlubmVyVGV4dEVsZW1lbnRF
ZGl0YWJpbGl0eSk6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dXBkYXRlUmVzdWx0QnV0dG9uUHNldWRvVHlwZSk6CisgICAgICAgICogaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlQW5kVXBkYXRlSW5uZXJUZXh0RWxlbWVudEVkaXRh
YmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlRGF0
YUxpc3REcm9wZG93bkluZGljYXRvcik6CisgICAgICAgIChXZWJDb3JlOjphdXRvRmlsbEJ1dHRv
blR5cGVUb0F1dG9GaWxsQnV0dG9uUHNldWRvQ2xhc3NOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzQXV0b0ZpbGxCdXR0b25UeXBlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Rmll
bGRJbnB1dFR5cGU6OmNyZWF0ZUNvbnRhaW5lcik6CisgICAgICAgICogaHRtbC9WYWxpZGF0aW9u
TWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRC
dWJibGVUcmVlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVUaW1lRWRpdEJ1aWxkZXI6OnZpc2l0TGl0ZXJhbCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUVkaXRFbGVtZW50OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0ZVRpbWVFZGl0RWxlbWVudDo6bGF5b3V0KToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXRh
aWxzTWFya2VyQ29udHJvbDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICog
aHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlByb2dyZXNzSW5uZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jl
c3NCYXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NWYWx1ZUVs
ZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2hhZG93UHNldWRvSWRzLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9JZHM6OmN1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9JZHM6OmZpbGVTZWxlY3RvckJ1dHRvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9JZHM6OnBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd1BzZXVkb0lkczo6d2Via2l0Q29udGFjdHNBdXRvRmlsbEJ1dHRvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdENyZWRlbnRpYWxzQXV0b0Zp
bGxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UHNldWRvSWRzOjp3ZWJraXRDcmVk
aXRDYXJkQXV0b0ZpbGxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UHNldWRvSWRz
Ojp3ZWJraXRTdHJvbmdQYXNzd29yZEF1dG9GaWxsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd1BzZXVkb0lkczo6d2Via2l0Q2Fwc0xvY2tJbmRpY2F0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93UHNldWRvSWRzOjp3ZWJraXRDb2xvclN3YXRjaCk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdENvbG9yU3dhdGNoV3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdERhdGV0aW1lRWRpdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdERhdGV0aW1lRWRpdFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93UHNldWRvSWRzOjp3ZWJraXREYXRldGltZUVkaXRGaWVsZHNX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1BzZXVkb0lkczo6d2Via2l0RGF0ZUFu
ZFRpbWVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdERl
dGFpbHNNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UHNldWRvSWRzOjp3ZWJraXRH
ZW5lcmljQ3VlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9JZHM6OndlYmtp
dElubmVyU3BpbkJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9JZHM6Ondl
YmtpdEtleWdlblNlbGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9JZHM6Ondl
YmtpdExpc3RCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UHNldWRvSWRzOjp3ZWJr
aXRNZWRpYVNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1BzZXVkb0lkczo6
d2Via2l0TWVkaWFTbGlkZXJDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UHNl
dWRvSWRzOjp3ZWJraXRNZWRpYVRleHRUcmFja0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdE1lZGlhVGV4dFRyYWNrRGlzcGxheSk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdE1lZGlhVGV4dFRyYWNrRGlzcGxheUJh
Y2tkcm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1BzZXVkb0lkczo6d2Via2l0TWVkaWFU
ZXh0VHJhY2tSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UHNldWRvSWRzOjp3ZWJr
aXRNZWRpYVRleHRUcmFja1JlZ2lvbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dQc2V1ZG9JZHM6OndlYmtpdE1ldGVyQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Bz
ZXVkb0lkczo6d2Via2l0TWV0ZXJJbm5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
ZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlck9wdGltdW1WYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdE1ldGVyU3Vib3B0aW11bVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd1BzZXVkb0lkczo6d2Via2l0TWV0ZXJFdmVuTGVzc0dvb2RWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdFBsdWdpblJlcGxhY2Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1BzZXVkb0lkczo6d2Via2l0UHJvZ3Jlc3NC
YXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UHNldWRvSWRzOjp3ZWJraXRQcm9ncmVzc1Zh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1BzZXVkb0lkczo6d2Via2l0UHJvZ3Jlc3NJ
bm5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UHNldWRvSWRzOjp3ZWJraXRT
ZWFyY2hEZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1BzZXVkb0lkczo6d2Vi
a2l0U2VhcmNoUmVzdWx0c0J1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9J
ZHM6OndlYmtpdFNlYXJjaFJlc3VsdHNEZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd1BzZXVkb0lkczo6d2Via2l0U2VhcmNoQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd1BzZXVkb0lkczo6d2Via2l0U2xpZGVyUnVubmFibGVUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdFNsaWRlclRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd1BzZXVkb0lkczo6d2Via2l0U2xpZGVyQ29udGFpbmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1BzZXVkb0lkczo6d2Via2l0VGV4dGZpZWxkRGVjb3JhdGlvbkNv
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdFZhbGlk
YXRpb25CdWJibGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UHNldWRvSWRzOjp3ZWJraXRW
YWxpZGF0aW9uQnViYmxlQXJyb3dDbGlwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Bz
ZXVkb0lkczo6d2Via2l0VmFsaWRhdGlvbkJ1YmJsZUFycm93KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd1BzZXVkb0lkczo6d2Via2l0VmFsaWRhdGlvbkJ1YmJsZU1lc3NhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93UHNldWRvSWRzOjp3ZWJraXRWYWxpZGF0aW9uQnViYmxlSWNvbik6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdFZhbGlkYXRpb25CdWJi
bGVUZXh0QmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UHNldWRvSWRzOjp3ZWJraXRW
YWxpZGF0aW9uQnViYmxlSGVhZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dQc2V1ZG9J
ZHM6OndlYmtpdFZhbGlkYXRpb25CdWJibGVCb2R5KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9T
aGFkb3dQc2V1ZG9JZHMuaDogQWRkZWQuCisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1
bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6cmVz
b2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlckNvbnRhaW5lckVsZW1l
bnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRv
bkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1lvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZUVtYmVkU2hhZG93RWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWVCb3g6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6dGFnUHNl
dWRvT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnJlYnVpbGREaXNw
bGF5VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmN1ZVNoYWRvd1BzZXVk
b0lkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y3VlQm94U2hh
ZG93UHNldWRvSWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpj
dWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlZUVEN1ZTo6Z2V0RGlzcGxheVRyZWUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svVlRUUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6Z2V0RGlzcGxh
eVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjpwcmVwYXJlUmVnaW9uRGlzcGxh
eVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VlRUUmVnaW9uOjp0ZXh0VHJhY2tDdWVDb250YWlu
ZXJTaGFkb3dQc2V1ZG9JZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWVFRSZWdpb246
OnRleHRUcmFja1JlZ2lvblNoYWRvd1BzZXVkb0lkKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L3RyYWNrL1ZUVFJlZ2lvbi5oOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlIGNvbnN0KToKKyAgICAgICAgKiBzdHls
ZS9SdWxlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6ZGV0ZXJtaW5lUHJvcGVy
dHlBbGxvd2xpc3RUeXBlKToKKwogMjAyMS0xMC0wNyAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRo
aUBhcHBsZS5jb20+CiAKICAgICAgICAgW2Nzcy11aV0gUGFyc2luZyBzdXBwb3J0IGZvciBhY2Nl
bnQtY29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOTM5NzgxZDAzMTQ5YTc5YzBlZTQ3ZGZiMmUwOWI4
MGU5MmVmZTA4MC4uZjA4MDA0NzUxZjJlZjAyNDQ5ZjMyMTZlM2NiMjcwOTRjMTBlYWJhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKQEAgLTEzNzksNiArMTM3OSw3IEBAIGh0bWwvc2hhZG93L0RhdGVUaW1lTnVt
ZXJpY0ZpZWxkRWxlbWVudC5jcHAKIGh0bWwvc2hhZG93L0RhdGVUaW1lU3ltYm9saWNGaWVsZEVs
ZW1lbnQuY3BwCiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50LmNwcAogaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAoraHRtbC9zaGFk
b3cvU2hhZG93UHNldWRvSWRzLmNwcAogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNw
cAogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCiBodG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDMxZDMzOGQxNDQzYWJhODIxODc4MWIwZWFhMGMw
MzcyZTVkMGI0ZS4uZTZjNTc2NmI2MDgwMjczZDBmYThkYzMwMDI4OGMwYzBmZTNiZGZkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNTMzMiw2ICs1MzMyLDcgQEAKIAkJRTRGODE5QzYyNkZCNEVCRjAwOTRFMTYyIC8qIElubGlu
ZUJveFBhaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0RjgxOUM1MjZGQjRFQkYwMDk0RTE2MiAvKiBJbmxpbmVCb3hQYWludGVyLmggKi87IH07
CiAJCUU0RjlFRUYzMTU2REEwMDcwMEQyM0U3RSAvKiBTdHlsZVNoZWV0Q29udGVudHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RjlFRUYxMTU2RDg0
QzQwMEQyM0U3RSAvKiBTdHlsZVNoZWV0Q29udGVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNTA2MjA4NDI1NDA5MTlDMDBDNDMwOTEgLyog
Q29udGFjdHNSZXF1ZXN0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTUwNjIwODMyNTQwOTE5QjAwQzQzMDkxIC8qIENvbnRhY3RzUmVxdWVzdERh
dGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlF
NTExOTRCRjI3MEU3RTRBMDA2NEZDQkEgLyogU2hhZG93UHNldWRvSWRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNTExOTRCRDI3MEU3RTRBMDA2NEZD
QkEgLyogU2hhZG93UHNldWRvSWRzLmggKi87IH07CiAJCUU1MTY2OTkxMjBGRjk5MTgwMDlEMkMy
NyAvKiBMaXN0QnV0dG9uQXJyb3dAMngucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNTE2Njk4RjIwRkY5OTE2MDA5RDJDMjcgLyogTGlzdEJ1dHRv
bkFycm93QDJ4LnBuZyAqLzsgfTsKIAkJRTUxNzY3MDMyMEI4OEMxNDAwRDQxMTY3IC8qIERhdGFM
aXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNTE3NjcwMjIwQjg4QzE0MDBENDExNjcgLyogRGF0YUxpc3RTdWdn
ZXN0aW9uSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFNTFENkExRjI0RTFFMjU1MDA4OTFDRkEgLyogRGF0ZVRpbWVGaWVsZHNT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTUx
RDZBMUQyNEUxRTI1NTAwODkxQ0ZBIC8qIERhdGVUaW1lRmllbGRzU3RhdGUuaCAqLzsgfTsKQEAg
LTE2NjYzLDYgKzE2NjY0LDggQEAKIAkJRTRGOUVFRjExNTZEODRDNDAwRDIzRTdFIC8qIFN0eWxl
U2hlZXRDb250ZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVNo
ZWV0Q29udGVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRGQjRCMzUyMzlC
RUIxMDAwM0MzMzZBIC8qIExheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFNTA2MjA4MzI1NDA5MTlCMDBDNDMwOTEgLyogQ29udGFj
dHNSZXF1ZXN0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250YWN0c1JlcXVlc3REYXRhLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU1MTE5NEJEMjcwRTdFNEEwMDY0RkNCQSAvKiBT
aGFkb3dQc2V1ZG9JZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93UHNldWRvSWRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU1MTE5NEJFMjcwRTdFNEEwMDY0RkNCQSAvKiBTaGFk
b3dQc2V1ZG9JZHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93UHNldWRvSWRzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTUxNjY5OEYyMEZGOTkxNjAwOUQyQzI3IC8q
IExpc3RCdXR0b25BcnJvd0AyeC5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAiTGlzdEJ1dHRvbkFycm93QDJ4LnBu
ZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU1MTc2NzAyMjBCODhDMTQwMEQ0MTE2
NyAvKiBEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRh
TGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFNTFBODFERTE3Mjk4RDc3MDBCRkNBNjEgLyogSlNQZXJmb3JtYW5jZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BlcmZvcm1hbmNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NjYwLDYgKzE5NjYzLDggQEAKIAkJCQlFNEUyNDM4MjFE
QUI5NTNFMDBDMjZFNEIgLyogbWV0ZXJFbGVtZW50U2hhZG93LmNzcyAqLywKIAkJCQlBNzE1RTY1
MDEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcCAqLywKIAkJCQlB
NzE1RTY1MTEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggKi8sCisJ
CQkJRTUxMTk0QkUyNzBFN0U0QTAwNjRGQ0JBIC8qIFNoYWRvd1BzZXVkb0lkcy5jcHAgKi8sCisJ
CQkJRTUxMTk0QkQyNzBFN0U0QTAwNjRGQ0JBIC8qIFNoYWRvd1BzZXVkb0lkcy5oICovLAogCQkJ
CTQxNTBGOUYwMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQuY3BwICovLAog
CQkJCTQxNTBGOUVGMTJCNkUwRTcwMDA4Qzg2MCAvKiBTbGlkZXJUaHVtYkVsZW1lbnQuaCAqLywK
IAkJCQk0NTEyNTAyMDE1RENFMzdEMDAyRjg0RTIgLyogU3BpbkJ1dHRvbkVsZW1lbnQuY3BwICov
LApAQCAtMzUxOTAsNiArMzUxOTUsNyBAQAogCQkJCTQxQkJBODY2MjU3RTM3M0IwMEFDN0Y2RCAv
KiBTRnJhbWVVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzREQ0NTAxMkY1RUExQjAwMEQ5
MTkwIC8qIFNoYWRvd0JsdXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOEM0MEU4MjAzMUIw
MEIyNTk2NSAvKiBTaGFkb3dEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNTExOTRCRjI3MEU3
RTRBMDA2NEZDQkEgLyogU2hhZG93UHNldWRvSWRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNkQx
Njk2NDEzNDZCNEMxMDAwRUI3NzAgLyogU2hhZG93Um9vdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDU2QTdBQzgyNTZDNEY0ODAwMkY5RERDIC8qIFNoYWRvd1Jvb3RJbml0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NkRGRjQ5ODFEQzI2MDMxMDBCODBCNDggLyogU2hhZG93Um9vdE1vZGUuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuY3BwCmluZGV4IDFkZWQxMzA0MzkzNmQ4MmY2Zjk0NmNhNTA2MWQ2NDZjNmQzYjU2NmQu
LjhjMDE4ZDg1Y2U0ZmI2Mzg3ZmIwZTE5ZTliMzlmZjNhMTZlNGRlMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTUwLDYgKzUw
LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNoYWRvd1BzZXVkb0lkcy5oIgogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdGVwUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0
LmgiCkBAIC0zMTcsOSArMzE4LDggQEAgdm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNy
ZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGEKICAgICAgICAg
bV9kYXRlVGltZUVkaXRFbGVtZW50ID0gRGF0ZVRpbWVFZGl0RWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50LCAqdGhpcyk7CiAgICAgICAgIGVsZW1lbnQudXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBl
bmRDaGlsZChzb3VyY2UsICptX2RhdGVUaW1lRWRpdEVsZW1lbnQpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
dmFsdWVDb250YWluZXJQc2V1ZG8oIi13ZWJraXQtZGF0ZS1hbmQtdGltZS12YWx1ZSIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgYXV0byB2YWx1ZUNvbnRhaW5l
ciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgICAgICB2YWx1ZUNvbnRh
aW5lci0+c2V0UHNldWRvKHZhbHVlQ29udGFpbmVyUHNldWRvKTsKKyAgICAgICAgdmFsdWVDb250
YWluZXItPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdERhdGVBbmRUaW1lVmFsdWUo
KSk7CiAgICAgICAgIGVsZW1lbnQudXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChz
b3VyY2UsIHZhbHVlQ29udGFpbmVyKTsKICAgICB9CiAgICAgdXBkYXRlSW5uZXJUZXh0VmFsdWUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggN2Y2OWQ5Mjc5ODQ1
NGMxYWJlN2ZiZGYzYmJkYmMzMjQ5ZTI2M2JhYy4uMjY5ODNmODU0Yzc0YzJhNzMxOTk2ODZkYWQy
YmM4MDI4ZWNjNTMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgogI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKICNpbmNsdWRlICJTY29wZWRFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSAiU2hh
ZG93UHNldWRvSWRzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlVzZXJH
ZXN0dXJlSW5kaWNhdG9yLmgiCiAKQEAgLTE0MCwxNCArMTQxLDExIEBAIHZvaWQgQ29sb3JJbnB1
dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFi
aWxpdHkoQ29uCiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+
c2hhZG93Um9vdCgpKTsKIAotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gd2Via2l0Q29sb3JTd2F0Y2hOYW1lKCItd2Via2l0LWNvbG9yLXN3YXRj
aCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdENvbG9yU3dhdGNoV3Jh
cHBlck5hbWUoIi13ZWJraXQtY29sb3Itc3dhdGNoLXdyYXBwZXIiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0KICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50KCkt
PmRvY3VtZW50KCk7CiAgICAgYXV0byB3cmFwcGVyRWxlbWVudCA9IEhUTUxEaXZFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwotICAgIHdyYXBwZXJFbGVtZW50LT5zZXRQc2V1ZG8od2Via2l0Q29s
b3JTd2F0Y2hXcmFwcGVyTmFtZSk7CisgICAgd3JhcHBlckVsZW1lbnQtPnNldFBzZXVkbyhTaGFk
b3dQc2V1ZG9JZHM6OndlYmtpdENvbG9yU3dhdGNoV3JhcHBlcigpKTsKICAgICBhdXRvIGNvbG9y
U3dhdGNoID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgY29sb3JTd2F0
Y2gtPnNldFBzZXVkbyh3ZWJraXRDb2xvclN3YXRjaE5hbWUpOworICAgIGNvbG9yU3dhdGNoLT5z
ZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRDb2xvclN3YXRjaCgpKTsKICAgICB3cmFw
cGVyRWxlbWVudC0+YXBwZW5kQ2hpbGQoc291cmNlLCBjb2xvclN3YXRjaCk7CiAgICAgZWxlbWVu
dCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNvdXJjZSwgd3JhcHBlckVs
ZW1lbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCBlMGZmNTM5
NjNiNTcwY2IxZGZmZDMwNDkxOWNkYWY3YzRhMTM3NDA0Li5mNTBiYjVkZDM5NDA0YTE1ZDBiNzY3
NGQ4NWE1NzNmMjg1NjA5MjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJ
bnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAK
QEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgorI2luY2x1ZGUgIlNoYWRvd1BzZXVkb0lkcy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
ICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lz
dGVtLmg+CkBAIC02Niw2ICs2Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAorLy8gRklYTUU6IFRoaXMgY2FuIGxpa2VseSBiZSBhbiBIVE1M
RGl2RWxlbWVudC4KIGNsYXNzIFVwbG9hZEJ1dHRvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRN
TElucHV0RWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTkxJTkUoVXBsb2Fk
QnV0dG9uRWxlbWVudCk7CiBwdWJsaWM6CkBAIC05Myw5ICs5NSw4IEBAIFJlZjxVcGxvYWRCdXR0
b25FbGVtZW50PiBVcGxvYWRCdXR0b25FbGVtZW50OjpjcmVhdGVJbnRlcm5hbChEb2N1bWVudCYg
ZG9jdW1lbnQsCiB7CiAgICAgYXV0byBidXR0b24gPSBhZG9wdFJlZigqbmV3IFVwbG9hZEJ1dHRv
bkVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVk
PGNvbnN0IEF0b21TdHJpbmc+IGJ1dHRvbk5hbWUoImJ1dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNv
bnN0IEF0b21TdHJpbmc+IGZpbGVTZWxlY3RvckJ1dHRvbk5hbWUoImZpbGUtc2VsZWN0b3ItYnV0
dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIGJ1dHRvbi0+c2V0
VHlwZShidXR0b25OYW1lKTsKLSAgICBidXR0b24tPnNldFBzZXVkbyhmaWxlU2VsZWN0b3JCdXR0
b25OYW1lKTsKKyAgICBidXR0b24tPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OmZpbGVTZWxl
Y3RvckJ1dHRvbigpKTsKICAgICBidXR0b24tPnNldFZhbHVlKHZhbHVlKTsKICAgICByZXR1cm4g
YnV0dG9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAppbmRl
eCA0ZjI5YTI0OGYzZTdkMTY5N2RiNjhiNjg3ZjM2MTIwMGQwMTYwZjBmLi4zYjE2M2I4NDFmNWUz
ZjYwNWZlYzU1ZmFlMjRhYWMxMjk3OGY1NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxL
ZXlnZW5FbGVtZW50LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhUTUxTZWxlY3RF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJTU0xL
ZXlHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJTaGFkb3dQc2V1ZG9JZHMuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CkBAIC01MSw4ICs1Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEtleWdl
blNlbGVjdEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgewogICAgICAg
ICBhdXRvIGVsZW1lbnQgPSBhZG9wdFJlZigqbmV3IEtleWdlblNlbGVjdEVsZW1lbnQoZG9jdW1l
bnQpKTsKLSAgICAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBwc2V1ZG9JZCgiLXdlYmtpdC1rZXlnZW4tc2VsZWN0IiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotICAgICAgICBlbGVtZW50LT5zZXRQc2V1ZG8ocHNldWRvSWQp
OworICAgICAgICBlbGVtZW50LT5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRLZXln
ZW5TZWxlY3QoKSk7CiAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKaW5kZXggYjIxMmU4ODAwNDM5NGQxZGUxNDkz
YjBiODNjNjU4NzIxM2U0YzdkYS4uOGNlYjg4YTNiMTA3YmRmNjQ5YTVmMjJhMDBhODJlOTQyNGNl
MmVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlck1ldGVyLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJTaGFkb3dQc2V1ZG9JZHMuaCIKICNp
bmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMTkwLDE1ICsxOTEsMTUgQEAg
c3RhdGljIHZvaWQgc2V0VmFsdWVDbGFzcyhIVE1MRWxlbWVudCYgZWxlbWVudCwgSFRNTE1ldGVy
RWxlbWVudDo6R2F1Z2VSZWdpb24gZ2EKICAgICBzd2l0Y2ggKGdhdWdlUmVnaW9uKSB7CiAgICAg
Y2FzZSBIVE1MTWV0ZXJFbGVtZW50OjpHYXVnZVJlZ2lvbk9wdGltdW06CiAgICAgICAgIGVsZW1l
bnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAib3B0aW11bSIpOwotICAgICAg
ICBlbGVtZW50LnNldFBzZXVkbygiLXdlYmtpdC1tZXRlci1vcHRpbXVtLXZhbHVlIik7CisgICAg
ICAgIGVsZW1lbnQuc2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Via2l0TWV0ZXJPcHRpbXVt
VmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEhUTUxNZXRlckVsZW1lbnQ6Okdh
dWdlUmVnaW9uU3Vib3B0aW1hbDoKICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjpjbGFzc0F0dHIsICJzdWJvcHRpbXVtIik7Ci0gICAgICAgIGVsZW1lbnQuc2V0UHNldWRv
KCItd2Via2l0LW1ldGVyLXN1Ym9wdGltdW0tdmFsdWUiKTsKKyAgICAgICAgZWxlbWVudC5zZXRQ
c2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlclN1Ym9wdGltdW1WYWx1ZSgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgSFRNTE1ldGVyRWxlbWVudDo6R2F1Z2VSZWdpb25FdmVu
TGVzc0dvb2Q6CiAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NB
dHRyLCAiZXZlbi1sZXNzLWdvb2QiKTsKLSAgICAgICAgZWxlbWVudC5zZXRQc2V1ZG8oIi13ZWJr
aXQtbWV0ZXItZXZlbi1sZXNzLWdvb2QtdmFsdWUiKTsKKyAgICAgICAgZWxlbWVudC5zZXRQc2V1
ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlckV2ZW5MZXNzR29vZFZhbHVlKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0yMzQsMTIgKzIzNSwxMiBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OmRpZEFkZFVzZXJB
Z2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYgcm9vdCkKICAgICAvLyBQc2V1ZG9zIGFyZSBzZXQg
dG8gYWxsb3cgYXV0aG9yIHN0eWxpbmcuCiAgICAgYXV0byBpbm5lciA9IEhUTUxEaXZFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgaW5uZXItPnNldElkQXR0cmlidXRlKCJpbm5lciIp
OwotICAgIGlubmVyLT5zZXRQc2V1ZG8oIi13ZWJraXQtbWV0ZXItaW5uZXItZWxlbWVudCIpOwor
ICAgIGlubmVyLT5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlcklubmVyRWxl
bWVudCgpKTsKICAgICByb290LmFwcGVuZENoaWxkKGlubmVyKTsKIAogICAgIGF1dG8gYmFyID0g
SFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICBiYXItPnNldElkQXR0cmli
dXRlKCJiYXIiKTsKLSAgICBiYXItPnNldFBzZXVkbygiLXdlYmtpdC1tZXRlci1iYXIiKTsKKyAg
ICBiYXItPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdE1ldGVyQmFyKCkpOwogICAg
IGlubmVyLT5hcHBlbmRDaGlsZChiYXIpOwogCiAgICAgbV92YWx1ZSA9IEhUTUxEaXZFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
bmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3Bw
CmluZGV4IDRiMWUzYTI5YzBhNDM2ZTQ2ZWI1NmMxOWU4YWMxOTdiMDliZTRjNDguLmVjNDcwODFm
MTcyZTIzMTg0NGQ4ZDAwYzNlNzQxMjY2YjI2NjhlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFu
Z2VJbnB1dFR5cGUuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU2xpZGVy
LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjb3Bl
ZEV2ZW50UXVldWUuaCIKKyNpbmNsdWRlICJTaGFkb3dQc2V1ZG9JZHMuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2xpZGVyVGh1bWJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
U3RlcFJhbmdlLmgiCkBAIC0yNDksMTAgKzI1MCw5IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNy
ZWF0ZVNoYWRvd1N1YnRyZWVBbmRVcGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoQ29u
CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+dXNlckFnZW50
U2hhZG93Um9vdCgpKTsKIAotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gd2Via2l0U2xpZGVyUnVubmFibGVUcmFja05hbWUoIi13ZWJraXQtc2xp
ZGVyLXJ1bm5hYmxlLXRyYWNrIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwog
ICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKTsKICAgICBhdXRv
IHRyYWNrID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgdHJhY2stPnNl
dFBzZXVkbyh3ZWJraXRTbGlkZXJSdW5uYWJsZVRyYWNrTmFtZSk7CisgICAgdHJhY2stPnNldFBz
ZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdFNsaWRlclJ1bm5hYmxlVHJhY2soKSk7CiAgICAg
dHJhY2stPmFwcGVuZENoaWxkKHNvdXJjZSwgU2xpZGVyVGh1bWJFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpKTsKICAgICBhdXRvIGNvbnRhaW5lciA9IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCk7CiAgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChzb3VyY2UsIHRyYWNr
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAppbmRleCBiNTVhMGY1Nzlh
ZjBkNmY1OTNkY2IyOWVkZjNiOTFiYTcwYzhiYTI1Li5iY2U2YmRlZTkzMjEwMDdkZjhmNWUyM2Nk
YjY4NmI3OWIxZjM4MWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKICNpbmNsdWRl
ICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyU2VhcmNoRmllbGQuaCIKKyNpbmNs
dWRlICJTaGFkb3dQc2V1ZG9JZHMuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVk
ZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAKQEAgLTY1LDE1ICs2NiwxMiBAQCB2b2lk
IFNlYXJjaElucHV0VHlwZTo6YWRkU2VhcmNoUmVzdWx0KCkKIAogc3RhdGljIHZvaWQgdXBkYXRl
UmVzdWx0QnV0dG9uUHNldWRvVHlwZShTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50JiBy
ZXN1bHRCdXR0b24sIGludCBtYXhSZXN1bHRzKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0U2VhcmNoRGVjb3JhdGlvbk5hbWUo
Ii13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiB3ZWJraXRTZWFyY2hSZXN1bHRzRGVjb3JhdGlvbk5hbWUoIi13ZWJraXQtc2VhcmNoLXJl
c3VsdHMtZGVjb3JhdGlvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtp
dFNlYXJjaFJlc3VsdHNCdXR0b25OYW1lKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBpZiAoIW1heFJlc3VsdHMp
Ci0gICAgICAgIHJlc3VsdEJ1dHRvbi5zZXRQc2V1ZG8od2Via2l0U2VhcmNoUmVzdWx0c0RlY29y
YXRpb25OYW1lKTsKKyAgICAgICAgcmVzdWx0QnV0dG9uLnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9J
ZHM6OndlYmtpdFNlYXJjaFJlc3VsdHNEZWNvcmF0aW9uKCkpOwogICAgIGVsc2UgaWYgKG1heFJl
c3VsdHMgPCAwKQotICAgICAgICByZXN1bHRCdXR0b24uc2V0UHNldWRvKHdlYmtpdFNlYXJjaERl
Y29yYXRpb25OYW1lKTsKKyAgICAgICAgcmVzdWx0QnV0dG9uLnNldFBzZXVkbyhTaGFkb3dQc2V1
ZG9JZHM6OndlYmtpdFNlYXJjaERlY29yYXRpb24oKSk7CiAgICAgZWxzZQotICAgICAgICByZXN1
bHRCdXR0b24uc2V0UHNldWRvKHdlYmtpdFNlYXJjaFJlc3VsdHNCdXR0b25OYW1lKTsKKyAgICAg
ICAgcmVzdWx0QnV0dG9uLnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdFNlYXJjaFJl
c3VsdHNCdXR0b24oKSk7CiB9CiAKIHZvaWQgU2VhcmNoSW5wdXRUeXBlOjphdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHAKaW5kZXggMWU1MzVlN2IxMTFmYjI0ZjNjZmI1OGRmNTA5YTlkMTAw
MjMyYjQxMS4uZGVhZGFjMTY0OTUxOTgxNTAwMDc3MDY4YTliNjAzYTY1ZjdhNDc4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNTUsNiArNTUsNyBA
QAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRE
aXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNoYWRv
d1BzZXVkb0lkcy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKQEAgLTM0OCw5ICsz
NDksOCBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZUFuZFVw
ZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eQogICAgIH0KIAogICAgIGlmIChzaG91bGRI
YXZlQ2Fwc0xvY2tJbmRpY2F0b3IpIHsKLSAgICAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRDYXBzTG9ja0luZGljYXRvck5hbWUoIi13
ZWJraXQtY2Fwcy1sb2NrLWluZGljYXRvciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKICAgICAgICAgbV9jYXBzTG9ja0luZGljYXRvciA9IEhUTUxEaXZFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOwotICAgICAgICBtX2NhcHNMb2NrSW5kaWNhdG9yLT5zZXRQc2V1ZG8od2Vi
a2l0Q2Fwc0xvY2tJbmRpY2F0b3JOYW1lKTsKKyAgICAgICAgbV9jYXBzTG9ja0luZGljYXRvci0+
c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Via2l0Q2Fwc0xvY2tJbmRpY2F0b3IoKSk7CiAK
ICAgICAgICAgYm9vbCBzaG91bGREcmF3Q2Fwc0xvY2tJbmRpY2F0b3IgPSB0aGlzLT5zaG91bGRE
cmF3Q2Fwc0xvY2tJbmRpY2F0b3IoKTsKICAgICAgICAgbV9jYXBzTG9ja0luZGljYXRvci0+c2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIHNob3VsZERyYXdDYXBzTG9j
a0luZGljYXRvciA/IENTU1ZhbHVlQmxvY2sgOiBDU1NWYWx1ZU5vbmUsIHRydWUpOwpAQCAtNDU2
LDExICs0NTYsMTAgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZURhdGFMaXN0RHJv
cGRvd25JbmRpY2F0b3IoKQogICAgIGlmICghbV9jb250YWluZXIpCiAgICAgICAgIGNyZWF0ZUNv
bnRhaW5lcigpOwogCi0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiB3ZWJraXRMaXN0QnV0dG9uTmFtZSgiLXdlYmtpdC1saXN0LWJ1dHRvbiIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkV2ZW50QWxsb3dlZFNjb3BlIGFsbG93ZWRTY29wZSgqbV9jb250YWluZXIpOwogICAgIG1f
ZGF0YUxpc3REcm9wZG93bkluZGljYXRvciA9IERhdGFMaXN0QnV0dG9uRWxlbWVudDo6Y3JlYXRl
KGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSwgKnRoaXMpOwogICAgIG1fY29udGFpbmVyLT5hcHBlbmRD
aGlsZCgqbV9kYXRhTGlzdERyb3Bkb3duSW5kaWNhdG9yKTsKLSAgICBtX2RhdGFMaXN0RHJvcGRv
d25JbmRpY2F0b3ItPnNldFBzZXVkbyh3ZWJraXRMaXN0QnV0dG9uTmFtZSk7CisgICAgbV9kYXRh
TGlzdERyb3Bkb3duSW5kaWNhdG9yLT5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRM
aXN0QnV0dG9uKCkpOwogICAgIG1fZGF0YUxpc3REcm9wZG93bkluZGljYXRvci0+c2V0SW5saW5l
U3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlTm9uZSwgdHJ1ZSk7CiB9
CiAKQEAgLTUyOSwxMyArNTI4LDEzIEBAIHN0YXRpYyBBdG9tU3RyaW5nIGF1dG9GaWxsQnV0dG9u
VHlwZVRvQXV0b0ZpbGxCdXR0b25Qc2V1ZG9DbGFzc05hbWUoQXV0b0ZpbGxCdXR0CiB7CiAgICAg
c3dpdGNoIChhdXRvRmlsbEJ1dHRvblR5cGUpIHsKICAgICBjYXNlIEF1dG9GaWxsQnV0dG9uVHlw
ZTo6Q29udGFjdHM6Ci0gICAgICAgIHJldHVybiB7ICItd2Via2l0LWNvbnRhY3RzLWF1dG8tZmls
bC1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCB9OworICAgICAgICBy
ZXR1cm4gU2hhZG93UHNldWRvSWRzOjp3ZWJraXRDb250YWN0c0F1dG9GaWxsQnV0dG9uKCk7CiAg
ICAgY2FzZSBBdXRvRmlsbEJ1dHRvblR5cGU6OkNyZWRlbnRpYWxzOgotICAgICAgICByZXR1cm4g
eyAiLXdlYmtpdC1jcmVkZW50aWFscy1hdXRvLWZpbGwtYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwgfTsKKyAgICAgICAgcmV0dXJuIFNoYWRvd1BzZXVkb0lkczo6d2Vi
a2l0Q3JlZGVudGlhbHNBdXRvRmlsbEJ1dHRvbigpOwogICAgIGNhc2UgQXV0b0ZpbGxCdXR0b25U
eXBlOjpTdHJvbmdQYXNzd29yZDoKLSAgICAgICAgcmV0dXJuIHsgIi13ZWJraXQtc3Ryb25nLXBh
c3N3b3JkLWF1dG8tZmlsbC1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCB9OworICAgICAgICByZXR1cm4gU2hhZG93UHNldWRvSWRzOjp3ZWJraXRTdHJvbmdQYXNzd29y
ZEF1dG9GaWxsQnV0dG9uKCk7CiAgICAgY2FzZSBBdXRvRmlsbEJ1dHRvblR5cGU6OkNyZWRpdENh
cmQ6Ci0gICAgICAgIHJldHVybiB7ICItd2Via2l0LWNyZWRpdC1jYXJkLWF1dG8tZmlsbC1idXR0
b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCB9OworICAgICAgICByZXR1cm4g
U2hhZG93UHNldWRvSWRzOjp3ZWJraXRDcmVkaXRDYXJkQXV0b0ZpbGxCdXR0b24oKTsKICAgICBj
YXNlIEF1dG9GaWxsQnV0dG9uVHlwZTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybiBlbXB0eUF0b20oKTsKQEAgLTU0NiwxMyArNTQ1LDEzIEBAIHN0
YXRpYyBBdG9tU3RyaW5nIGF1dG9GaWxsQnV0dG9uVHlwZVRvQXV0b0ZpbGxCdXR0b25Qc2V1ZG9D
bGFzc05hbWUoQXV0b0ZpbGxCdXR0CiAKIHN0YXRpYyBib29sIGlzQXV0b0ZpbGxCdXR0b25UeXBl
Q2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGUsIEF1dG9GaWxsQnV0dG9uVHlwZSBh
dXRvRmlsbEJ1dHRvblR5cGUpCiB7Ci0gICAgaWYgKGF0dHJpYnV0ZSA9PSAiLXdlYmtpdC1jb250
YWN0cy1hdXRvLWZpbGwtYnV0dG9uIiAmJiBhdXRvRmlsbEJ1dHRvblR5cGUgIT0gQXV0b0ZpbGxC
dXR0b25UeXBlOjpDb250YWN0cykKKyAgICBpZiAoYXR0cmlidXRlID09IFNoYWRvd1BzZXVkb0lk
czo6d2Via2l0Q29udGFjdHNBdXRvRmlsbEJ1dHRvbigpICYmIGF1dG9GaWxsQnV0dG9uVHlwZSAh
PSBBdXRvRmlsbEJ1dHRvblR5cGU6OkNvbnRhY3RzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICBpZiAoYXR0cmlidXRlID09ICItd2Via2l0LWNyZWRlbnRpYWxzLWF1dG8tZmlsbC1idXR0b24i
ICYmIGF1dG9GaWxsQnV0dG9uVHlwZSAhPSBBdXRvRmlsbEJ1dHRvblR5cGU6OkNyZWRlbnRpYWxz
KQorICAgIGlmIChhdHRyaWJ1dGUgPT0gU2hhZG93UHNldWRvSWRzOjp3ZWJraXRDcmVkZW50aWFs
c0F1dG9GaWxsQnV0dG9uKCkgJiYgYXV0b0ZpbGxCdXR0b25UeXBlICE9IEF1dG9GaWxsQnV0dG9u
VHlwZTo6Q3JlZGVudGlhbHMpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChhdHRyaWJ1
dGUgPT0gIi13ZWJraXQtc3Ryb25nLXBhc3N3b3JkLWF1dG8tZmlsbC1idXR0b24iICYmIGF1dG9G
aWxsQnV0dG9uVHlwZSAhPSBBdXRvRmlsbEJ1dHRvblR5cGU6OlN0cm9uZ1Bhc3N3b3JkKQorICAg
IGlmIChhdHRyaWJ1dGUgPT0gU2hhZG93UHNldWRvSWRzOjp3ZWJraXRTdHJvbmdQYXNzd29yZEF1
dG9GaWxsQnV0dG9uKCkgJiYgYXV0b0ZpbGxCdXR0b25UeXBlICE9IEF1dG9GaWxsQnV0dG9uVHlw
ZTo6U3Ryb25nUGFzc3dvcmQpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChhdHRyaWJ1
dGUgPT0gIi13ZWJraXQtY3JlZGl0LWNhcmQtYXV0by1maWxsLWJ1dHRvbiIgJiYgYXV0b0ZpbGxC
dXR0b25UeXBlICE9IEF1dG9GaWxsQnV0dG9uVHlwZTo6Q3JlZGl0Q2FyZCkKKyAgICBpZiAoYXR0
cmlidXRlID09IFNoYWRvd1BzZXVkb0lkczo6d2Via2l0Q3JlZGl0Q2FyZEF1dG9GaWxsQnV0dG9u
KCkgJiYgYXV0b0ZpbGxCdXR0b25UeXBlICE9IEF1dG9GaWxsQnV0dG9uVHlwZTo6Q3JlZGl0Q2Fy
ZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNzkwLDcg
Kzc4OSw3IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVDb250YWluZXIoKQogCiAg
ICAgbV9jb250YWluZXIgPSBUZXh0Q29udHJvbElubmVyQ29udGFpbmVyOjpjcmVhdGUoZWxlbWVu
dCgpLT5kb2N1bWVudCgpKTsKICAgICBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+
YXBwZW5kQ2hpbGQoKm1fY29udGFpbmVyKTsKLSAgICBtX2NvbnRhaW5lci0+c2V0UHNldWRvKHdl
YmtpdFRleHRmaWVsZERlY29yYXRpb25Db250YWluZXJOYW1lKTsKKyAgICBtX2NvbnRhaW5lci0+
c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Via2l0VGV4dGZpZWxkRGVjb3JhdGlvbkNvbnRh
aW5lcigpKTsKIAogICAgIG1faW5uZXJCbG9jayA9IFRleHRDb250cm9sSW5uZXJFbGVtZW50Ojpj
cmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTsKICAgICBtX2NvbnRhaW5lci0+YXBwZW5kQ2hp
bGQoKm1faW5uZXJCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlk
YXRpb25NZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2Uu
Y3BwCmluZGV4IDlhMjNiMGViNzU3YjhjMGE5MGI3ZmY0YmU3ODk0MmYxM2E1ZGZlZTUuLjFmYjM4
OGI4ZDg4NTY1MWM3NGVhODhlYjFmNjJmYzdkNWQ4MGVkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaGFkb3dQc2V1ZG9JZHMuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRleHQu
aCIKQEAgLTE4OSw0NSArMTkwLDM2IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnVi
YmxlVHJlZSgpCiAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0
RGlzYWxsb3dlZFNjb3BlOwogICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2Vk
U2NvcGUgYWxsb3dlZFNjb3BlKHNoYWRvd1Jvb3QpOwogCi0gICAgc3RhdGljIE1haW5UaHJlYWRO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRWYWxpZGF0aW9uQnViYmxlTmFt
ZSgiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21T
dHJpbmc+IHdlYmtpdFZhbGlkYXRpb25CdWJibGVBcnJvd0NsaXBwZXJOYW1lKCItd2Via2l0LXZh
bGlkYXRpb24tYnViYmxlLWFycm93LWNsaXBwZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiB3ZWJraXRWYWxpZGF0aW9uQnViYmxlQXJyb3dOYW1lKCItd2Via2l0LXZhbGlkYXRp
b24tYnViYmxlLWFycm93IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAg
IHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0
VmFsaWRhdGlvbkJ1YmJsZU1lc3NhZ2VOYW1lKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLW1l
c3NhZ2UiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE1h
aW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRWYWxpZGF0aW9u
QnViYmxlSWNvbk5hbWUoIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtaWNvbiIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFZhbGlkYXRpb25CdWJibGVUZXh0QmxvY2tO
YW1lKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLXRleHQtYmxvY2siLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRWYWxpZGF0aW9uQnViYmxlSGVhZGluZ05hbWUoIi13
ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtaGVhZGluZyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21TdHJpbmc+IHdlYmtpdFZhbGlkYXRpb25CdWJibGVCb2R5TmFtZSgiLXdlYmtpdC12YWxpZGF0
aW9uLWJ1YmJsZS1ib2R5IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotCiAg
ICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbV9lbGVtZW50LT5kb2N1bWVudCgpOwogICAgIG1fYnVi
YmxlID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgc2hhZG93Um9vdC0+
YXBwZW5kQ2hpbGQoKm1fYnViYmxlKTsKLSAgICBtX2J1YmJsZS0+c2V0UHNldWRvKHdlYmtpdFZh
bGlkYXRpb25CdWJibGVOYW1lKTsKKyAgICBtX2J1YmJsZS0+c2V0UHNldWRvKFNoYWRvd1BzZXVk
b0lkczo6d2Via2l0VmFsaWRhdGlvbkJ1YmJsZSgpKTsKICAgICAvLyBOZWVkIHRvIGZvcmNlIHBv
c2l0aW9uOmFic29sdXRlIGJlY2F1c2UgUmVuZGVyTWVudUxpc3QgZG9lc24ndCBhc3N1bWUgaXQK
ICAgICAvLyBjb250YWlucyBub24tYWJzb2x1dGUgb3Igbm9uLWZpeGVkIHJlbmRlcmVycyBhcyBj
aGlsZHJlbi4KICAgICBtX2J1YmJsZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eVBvc2l0aW9uLCBDU1NWYWx1ZUFic29sdXRlKTsKIAogICAgIGF1dG8gY2xpcHBlciA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIG1fYnViYmxlLT5hcHBlbmRDaGlsZChj
bGlwcGVyKTsKLSAgICBjbGlwcGVyLT5zZXRQc2V1ZG8od2Via2l0VmFsaWRhdGlvbkJ1YmJsZUFy
cm93Q2xpcHBlck5hbWUpOworICAgIGNsaXBwZXItPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6
OndlYmtpdFZhbGlkYXRpb25CdWJibGVBcnJvd0NsaXBwZXIoKSk7CiAgICAgYXV0byBidWJibGVB
cnJvdyA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGNsaXBwZXItPmFw
cGVuZENoaWxkKGJ1YmJsZUFycm93KTsKLSAgICBidWJibGVBcnJvdy0+c2V0UHNldWRvKHdlYmtp
dFZhbGlkYXRpb25CdWJibGVBcnJvd05hbWUpOworICAgIGJ1YmJsZUFycm93LT5zZXRQc2V1ZG8o
U2hhZG93UHNldWRvSWRzOjp3ZWJraXRWYWxpZGF0aW9uQnViYmxlQXJyb3coKSk7CiAKICAgICBh
dXRvIG1lc3NhZ2UgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBtX2J1
YmJsZS0+YXBwZW5kQ2hpbGQobWVzc2FnZSk7Ci0gICAgbWVzc2FnZS0+c2V0UHNldWRvKHdlYmtp
dFZhbGlkYXRpb25CdWJibGVNZXNzYWdlTmFtZSk7CisgICAgbWVzc2FnZS0+c2V0UHNldWRvKFNo
YWRvd1BzZXVkb0lkczo6d2Via2l0VmFsaWRhdGlvbkJ1YmJsZU1lc3NhZ2UoKSk7CiAgICAgYXV0
byBpY29uID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgbWVzc2FnZS0+
YXBwZW5kQ2hpbGQoaWNvbik7Ci0gICAgaWNvbi0+c2V0UHNldWRvKHdlYmtpdFZhbGlkYXRpb25C
dWJibGVJY29uTmFtZSk7CisgICAgaWNvbi0+c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Vi
a2l0VmFsaWRhdGlvbkJ1YmJsZUljb24oKSk7CiAgICAgYXV0byB0ZXh0QmxvY2sgPSBIVE1MRGl2
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBtZXNzYWdlLT5hcHBlbmRDaGlsZCh0ZXh0
QmxvY2spOwotICAgIHRleHRCbG9jay0+c2V0UHNldWRvKHdlYmtpdFZhbGlkYXRpb25CdWJibGVU
ZXh0QmxvY2tOYW1lKTsKKyAgICB0ZXh0QmxvY2stPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6
OndlYmtpdFZhbGlkYXRpb25CdWJibGVUZXh0QmxvY2soKSk7CiAgICAgbV9tZXNzYWdlSGVhZGlu
ZyA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIHRleHRCbG9jay0+YXBw
ZW5kQ2hpbGQoKm1fbWVzc2FnZUhlYWRpbmcpOwotICAgIG1fbWVzc2FnZUhlYWRpbmctPnNldFBz
ZXVkbyh3ZWJraXRWYWxpZGF0aW9uQnViYmxlSGVhZGluZ05hbWUpOworICAgIG1fbWVzc2FnZUhl
YWRpbmctPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdFZhbGlkYXRpb25CdWJibGVI
ZWFkaW5nKCkpOwogICAgIG1fbWVzc2FnZUJvZHkgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKICAgICB0ZXh0QmxvY2stPmFwcGVuZENoaWxkKCptX21lc3NhZ2VCb2R5KTsKLSAg
ICBtX21lc3NhZ2VCb2R5LT5zZXRQc2V1ZG8od2Via2l0VmFsaWRhdGlvbkJ1YmJsZUJvZHlOYW1l
KTsKKyAgICBtX21lc3NhZ2VCb2R5LT5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRW
YWxpZGF0aW9uQnViYmxlQm9keSgpKTsKIAogICAgIHNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVy
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRWRp
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVFZGl0RWxl
bWVudC5jcHAKaW5kZXggZGRjYWI3ZDAzNDlkM2JhN2IyODE2ZTA1MGVlZTg4YmJlMWRlMzcxZS4u
OWNiOGU5ZThlMjQ5MjhjN2ZmMTI1ODllNzdiNTdmOTFkZDJjZmY4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVFZGl0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVFZGl0RWxlbWVudC5jcHAKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlICJEYXRlVGltZVN5bWJvbGljRmllbGRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKKyNpbmNsdWRl
ICJTaGFkb3dQc2V1ZG9JZHMuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBA
IC0xNjcsOSArMTY4LDkgQEAgdm9pZCBEYXRlVGltZUVkaXRCdWlsZGVyOjp2aXNpdEZpZWxkKERh
dGVUaW1lRm9ybWF0OjpGaWVsZFR5cGUgZmllbGRUeXBlLCBpbnQgY28KIHZvaWQgRGF0ZVRpbWVF
ZGl0QnVpbGRlcjo6dmlzaXRMaXRlcmFsKGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBBU1NF
UlQodGV4dC5sZW5ndGgoKSk7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9tU3RyaW5nPiB0ZXh0UHNldWRvSWQoIi13ZWJraXQtZGF0ZXRpbWUtZWRpdC10ZXh0
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworCiAgICAgYXV0byBlbGVtZW50
ID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShtX2VkaXRFbGVtZW50LmRvY3VtZW50KCkpOwotICAg
IGVsZW1lbnQtPnNldFBzZXVkbyh0ZXh0UHNldWRvSWQpOworICAgIGVsZW1lbnQtPnNldFBzZXVk
byhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdERhdGV0aW1lRWRpdFRleHQoKSk7CiAKICAgICAvLyBJ
ZiB0aGUgbGl0ZXJhbCBiZWdpbnMvZW5kcyB3aXRoIGEgc3BhY2UsIHRoZSBnYXAgYmV0d2VlbiB0
d28gZmllbGRzIHdpbGwgYXBwZWFyCiAgICAgLy8gZXhhZ2dlcmF0ZWQgZHVlIHRvIHRoZSBwcmVz
ZW5jZSBvZiBhIDFweCBwYWRkaW5nIGFyb3VuZCBlYWNoIGZpZWxkLiBUaGlzIGNhbgpAQCAtMjMz
LDE4ICsyMzQsMTUgQEAgRGF0ZVRpbWVGaWVsZEVsZW1lbnQqIERhdGVUaW1lRWRpdEVsZW1lbnQ6
OmZvY3VzZWRGaWVsZEVsZW1lbnQoKSBjb25zdAogUmVmPERhdGVUaW1lRWRpdEVsZW1lbnQ+IERh
dGVUaW1lRWRpdEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEVkaXRDb250cm9s
T3duZXImIGVkaXRDb250cm9sT3duZXIpCiB7CiAgICAgYXV0byBlbGVtZW50ID0gYWRvcHRSZWYo
Km5ldyBEYXRlVGltZUVkaXRFbGVtZW50KGRvY3VtZW50LCBlZGl0Q29udHJvbE93bmVyKSk7Ci0g
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBkYXRl
VGltZUVkaXRQc2V1ZG9JZCgiLXdlYmtpdC1kYXRldGltZS1lZGl0IiwgQXRvbVN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGVsZW1lbnQtPnNldFBzZXVkbyhkYXRlVGltZUVkaXRQ
c2V1ZG9JZCk7CisgICAgZWxlbWVudC0+c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Via2l0
RGF0ZXRpbWVFZGl0KCkpOwogICAgIHJldHVybiBlbGVtZW50OwogfQogCiB2b2lkIERhdGVUaW1l
RWRpdEVsZW1lbnQ6OmxheW91dChjb25zdCBMYXlvdXRQYXJhbWV0ZXJzJiBsYXlvdXRQYXJhbWV0
ZXJzKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gZmllbGRzV3JhcHBlclBzZXVkb0lkKCItd2Via2l0LWRhdGV0aW1lLWVkaXQtZmllbGRz
LXdyYXBwZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0KICAgICBpZiAo
IWZpcnN0Q2hpbGQoKSkgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBIVE1MRGl2RWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KCkpOwotICAgICAgICBlbGVtZW50LT5zZXRQc2V1ZG8oZmllbGRzV3Jh
cHBlclBzZXVkb0lkKTsKKyAgICAgICAgZWxlbWVudC0+c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lk
czo6d2Via2l0RGF0ZXRpbWVFZGl0RmllbGRzV3JhcHBlcigpKTsKICAgICAgICAgYXBwZW5kQ2hp
bGQoZWxlbWVudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAKaW5kZXggYzAyMWFlZWNiYzAxOWZjMTdmZTllZThj
ODNhNjQyMmE5ZDM2MWYyMS4uM2E2ZDRhYzllODc4NDU1YzUyNjI2ZGVlOGY0ODBkOTIyZTAxNzc4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNv
bnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJD
b250cm9sLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkhUTUxTdW1tYXJ5RWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckRldGFpbHNNYXJr
ZXIuaCIKKyNpbmNsdWRlICJTaGFkb3dQc2V1ZG9JZHMuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCw4ICs0NSw3IEBAIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEZXRhaWxzTWFya2VyQ29udHJvbCk7CiBSZWY8RGV0
YWlsc01hcmtlckNvbnRyb2w+IERldGFpbHNNYXJrZXJDb250cm9sOjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50KQogewogICAgIGF1dG8gY29udHJvbCA9IGFkb3B0UmVmKCpuZXcgRGV0YWlsc01h
cmtlckNvbnRyb2woZG9jdW1lbnQpKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdERldGFpbHNNYXJrZXJOYW1lKCItd2Via2l0LWRl
dGFpbHMtbWFya2VyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGNv
bnRyb2wtPnNldFBzZXVkbyh3ZWJraXREZXRhaWxzTWFya2VyTmFtZSk7CisgICAgY29udHJvbC0+
c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Via2l0RGV0YWlsc01hcmtlcigpKTsKICAgICBy
ZXR1cm4gY29udHJvbDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNw
cAppbmRleCBlY2U4ZjRjYzRmY2I2NTYxYzRmMDc5MTY1M2FiZTBkMTU3MWEyOWNkLi4zNDgxOTZm
YTIyMDJiOTBlMmQ4NTgzYzRiMjE3ZGY2NTcyZTRjZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50LmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclZp
ZGVvLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisj
aW5jbHVkZSAiU2hhZG93UHNldWRvSWRzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2lu
Y2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUdlbmVyaWMu
aCIKQEAgLTY4LDggKzY5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIFJlZjxNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MTWVkaWFFbGVt
ZW50JiBtZWRpYUVsZW1lbnQpCiB7CiAgICAgYXV0byBlbGVtZW50ID0gYWRvcHRSZWYoKm5ldyBN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KGRvY3VtZW50LCBtZWRpYUVsZW1l
bnQpKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IHdlYmtpdE1lZGlhVGV4dFRyYWNrQ29udGFpbmVyTmFtZSgiLXdlYmtpdC1tZWRpYS10ZXh0
LXRyYWNrLWNvbnRhaW5lciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAg
ICBlbGVtZW50LT5zZXRQc2V1ZG8od2Via2l0TWVkaWFUZXh0VHJhY2tDb250YWluZXJOYW1lKTsK
KyAgICBlbGVtZW50LT5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZWRpYVRleHRU
cmFja0NvbnRhaW5lcigpKTsKICAgICBlbGVtZW50LT5oaWRlKCk7CiAgICAgcmV0dXJuIGVsZW1l
bnQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFk
b3dFbGVtZW50LmNwcAppbmRleCA3YmJkOTlkNDAxM2EyNTIwYTIyYjdjZDY5MTY0NTNhZGMyOTZh
NTYzLi5lNmY3OTljOTNiZDBhNmVlNjdjYWNlNmRiZjU0Y2E3ZjIxOWU4NTQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93RWxlbWVudC5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1M
UHJvZ3Jlc3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyUHJvZ3Jlc3MuaCIKKyNpbmNsdWRl
ICJTaGFkb3dQc2V1ZG9JZHMuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05MSwyNSArOTIsMjIgQEAgdm9pZCBQcm9ncmVzc1Zh
bHVlRWxlbWVudDo6c2V0V2lkdGhQZXJjZW50YWdlKGRvdWJsZSB3aWR0aCkKIAogUmVmPFByb2dy
ZXNzSW5uZXJFbGVtZW50PiBQcm9ncmVzc0lubmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21TdHJpbmc+IHdlYmtpdFByb2dyZXNzSW5uZXJFbGVtZW50TmFtZSgiLXdlYmtpdC1wcm9ncmVz
cy1pbm5lci1lbGVtZW50IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAg
IFJlZjxQcm9ncmVzc0lubmVyRWxlbWVudD4gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBQcm9ncmVz
c0lubmVyRWxlbWVudChkb2N1bWVudCkpOwotICAgIHJlc3VsdC0+c2V0UHNldWRvKHdlYmtpdFBy
b2dyZXNzSW5uZXJFbGVtZW50TmFtZSk7CisgICAgcmVzdWx0LT5zZXRQc2V1ZG8oU2hhZG93UHNl
dWRvSWRzOjp3ZWJraXRQcm9ncmVzc0lubmVyRWxlbWVudCgpKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCiBSZWY8UHJvZ3Jlc3NCYXJFbGVtZW50PiBQcm9ncmVzc0JhckVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRQcm9ncmVzc0Jhck5hbWUoIi13ZWJraXQtcHJv
Z3Jlc3MtYmFyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIFJlZjxQ
cm9ncmVzc0JhckVsZW1lbnQ+IHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgUHJvZ3Jlc3NCYXJFbGVt
ZW50KGRvY3VtZW50KSk7Ci0gICAgcmVzdWx0LT5zZXRQc2V1ZG8od2Via2l0UHJvZ3Jlc3NCYXJO
YW1lKTsKKyAgICByZXN1bHQtPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdFByb2dy
ZXNzQmFyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFJlZjxQcm9ncmVzc1ZhbHVlRWxl
bWVudD4gUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7
Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3
ZWJraXRQcm9ncmVzc1ZhbHVlTmFtZSgiLXdlYmtpdC1wcm9ncmVzcy12YWx1ZSIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBSZWY8UHJvZ3Jlc3NWYWx1ZUVsZW1lbnQ+
IHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQoZG9jdW1lbnQpKTsK
LSAgICByZXN1bHQtPnNldFBzZXVkbyh3ZWJraXRQcm9ncmVzc1ZhbHVlTmFtZSk7CisgICAgcmVz
dWx0LT5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRQcm9ncmVzc1ZhbHVlKCkpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NoYWRvd1BzZXVkb0lkcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9T
aGFkb3dQc2V1ZG9JZHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwOGE0MTMxZTVkM2ZhOWI3ZTQ5Yjk1Njcx
M2ExOTI1YTBhMTBmNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TaGFkb3dQc2V1ZG9JZHMuY3BwCkBAIC0wLDAgKzEsMzQ0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYWRvd1BzZXVkb0lkcy5oIgorCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBTaGFkb3dQc2V1ZG9JZHMg
eworCitjb25zdCBBdG9tU3RyaW5nJiBjdWUoKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gY3VlKCJjdWUiLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIGN1ZTsKK30KKworY29uc3QgQXRvbVN0cmlu
ZyYgZmlsZVNlbGVjdG9yQnV0dG9uKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVz
dHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGZpbGVTZWxlY3RvckJ1dHRvbigiZmlsZS1zZWxlY3Rv
ci1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJu
IGZpbGVTZWxlY3RvckJ1dHRvbjsKK30KKworY29uc3QgQXRvbVN0cmluZyYgcGxhY2Vob2xkZXIo
KQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gcGxhY2Vob2xkZXIoInBsYWNlaG9sZGVyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIHJldHVybiBwbGFjZWhvbGRlcjsKK30KKworY29uc3QgQXRvbVN0cmluZyYg
d2Via2l0Q29udGFjdHNBdXRvRmlsbEJ1dHRvbigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWRO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRDb250YWN0c0F1dG9GaWxsQnV0
dG9uKCItd2Via2l0LWNvbnRhY3RzLWF1dG8tZmlsbC1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHdlYmtpdENvbnRhY3RzQXV0b0ZpbGxCdXR0
b247Cit9CisKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdENyZWRlbnRpYWxzQXV0b0ZpbGxCdXR0
b24oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0
cmluZz4gd2Via2l0Q3JlZGVudGlhbHNBdXRvRmlsbEJ1dHRvbigiLXdlYmtpdC1jcmVkZW50aWFs
cy1hdXRvLWZpbGwtYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsc0F1dG9GaWxsQnV0dG9uOworfQorCitjb25zdCBB
dG9tU3RyaW5nJiB3ZWJraXRDcmVkaXRDYXJkQXV0b0ZpbGxCdXR0b24oKQoreworICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0Q3JlZGl0
Q2FyZEF1dG9GaWxsQnV0dG9uKCItd2Via2l0LWNyZWRpdC1jYXJkLWF1dG8tZmlsbC1idXR0b24i
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHdlYmtpdENy
ZWRpdENhcmRBdXRvRmlsbEJ1dHRvbjsKK30KKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0U3Ry
b25nUGFzc3dvcmRBdXRvRmlsbEJ1dHRvbigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRTdHJvbmdQYXNzd29yZEF1dG9GaWxs
QnV0dG9uKCItd2Via2l0LXN0cm9uZy1wYXNzd29yZC1hdXRvLWZpbGwtYnV0dG9uIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB3ZWJraXRTdHJvbmdQYXNz
d29yZEF1dG9GaWxsQnV0dG9uOworfQorCitjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRDYXBzTG9j
a0luZGljYXRvcigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25z
dCBBdG9tU3RyaW5nPiB3ZWJraXRDYXBzTG9ja0luZGljYXRvcigiLXdlYmtpdC1jYXBzLWxvY2st
aW5kaWNhdG9yIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVy
biB3ZWJraXRDYXBzTG9ja0luZGljYXRvcjsKK30KKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0
Q29sb3JTd2F0Y2goKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gd2Via2l0Q29sb3JTd2F0Y2goIi13ZWJraXQtY29sb3Itc3dhdGNoIiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB3ZWJraXRDb2xv
clN3YXRjaDsKK30KKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0Q29sb3JTd2F0Y2hXcmFwcGVy
KCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IHdlYmtpdENvbG9yU3dhdGNoV3JhcHBlcigiLXdlYmtpdC1jb2xvci1zd2F0Y2gtd3JhcHBl
ciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gd2Via2l0
Q29sb3JTd2F0Y2hXcmFwcGVyOworfQorCitjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXREYXRldGlt
ZUVkaXQoKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gd2Via2l0RGF0ZXRpbWVFZGl0KCItd2Via2l0LWRhdGV0aW1lLWVkaXQiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHdlYmtpdERhdGV0aW1l
RWRpdDsKK30KKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0RGF0ZXRpbWVFZGl0VGV4dCgpCit7
CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3
ZWJraXREYXRldGltZUVkaXRUZXh0KCItd2Via2l0LWRhdGV0aW1lLWVkaXQtdGV4dCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gd2Via2l0RGF0ZXRpbWVF
ZGl0VGV4dDsKK30KKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0RGF0ZXRpbWVFZGl0RmllbGRz
V3JhcHBlcigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiB3ZWJraXREYXRldGltZUVkaXRGaWVsZHNXcmFwcGVyKCItd2Via2l0LWRhdGV0
aW1lLWVkaXQtZmllbGRzLXdyYXBwZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgcmV0dXJuIHdlYmtpdERhdGV0aW1lRWRpdEZpZWxkc1dyYXBwZXI7Cit9CisKK2Nv
bnN0IEF0b21TdHJpbmcmIHdlYmtpdERhdGVBbmRUaW1lVmFsdWUoKQoreworICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0RGF0ZUFuZFRp
bWVWYWx1ZSgiLXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVlIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB3ZWJraXREYXRlQW5kVGltZVZhbHVlOworfQor
Citjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXREZXRhaWxzTWFya2VyKCkKK3sKKyAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdERldGFpbHNN
YXJrZXIoIi13ZWJraXQtZGV0YWlscy1tYXJrZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgcmV0dXJuIHdlYmtpdERldGFpbHNNYXJrZXI7Cit9CisKK2NvbnN0IEF0
b21TdHJpbmcmIHdlYmtpdEdlbmVyaWNDdWVSb290KCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVh
ZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdEdlbmVyaWNDdWVSb290KCIt
d2Via2l0LWdlbmVyaWMtY3VlLXJvb3QiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgcmV0dXJuIHdlYmtpdEdlbmVyaWNDdWVSb290OworfQorCitjb25zdCBBdG9tU3Ry
aW5nJiB3ZWJraXRJbm5lclNwaW5CdXR0b24oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0SW5uZXJTcGluQnV0dG9uKCItd2Vi
a2l0LWlubmVyLXNwaW4tYnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIHJldHVybiB3ZWJraXRJbm5lclNwaW5CdXR0b247Cit9CisKK2NvbnN0IEF0b21TdHJp
bmcmIHdlYmtpdEtleWdlblNlbGVjdCgpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRLZXlnZW5TZWxlY3QoIi13ZWJraXQta2V5
Z2VuLXNlbGVjdCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1
cm4gd2Via2l0S2V5Z2VuU2VsZWN0OworfQorCitjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRMaXN0
QnV0dG9uKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21TdHJpbmc+IHdlYmtpdExpc3RCdXR0b24oIi13ZWJraXQtbGlzdC1idXR0b24iLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHdlYmtpdExpc3RCdXR0b247
Cit9CisKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdE1lZGlhU2xpZGVyVGh1bWIoKQoreworICAg
IHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0
TWVkaWFTbGlkZXJUaHVtYigiLXdlYmtpdC1tZWRpYS1zbGlkZXItdGh1bWIiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHdlYmtpdE1lZGlhU2xpZGVyVGh1
bWI7Cit9CisKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdE1lZGlhU2xpZGVyQ29udGFpbmVyKCkK
K3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IHdlYmtpdE1lZGlhU2xpZGVyQ29udGFpbmVyKCItd2Via2l0LW1lZGlhLXNsaWRlci1jb250YWlu
ZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHdlYmtp
dE1lZGlhU2xpZGVyQ29udGFpbmVyOworfQorCitjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRNZWRp
YVRleHRUcmFja0NvbnRhaW5lcigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRNZWRpYVRleHRUcmFja0NvbnRhaW5lcigiLXdl
YmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICByZXR1cm4gd2Via2l0TWVkaWFUZXh0VHJhY2tDb250YWluZXI7Cit9
CisKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdE1lZGlhVGV4dFRyYWNrRGlzcGxheSgpCit7Cisg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJr
aXRNZWRpYVRleHRUcmFja0Rpc3BsYXkoIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5
IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB3ZWJraXRN
ZWRpYVRleHRUcmFja0Rpc3BsYXk7Cit9CisKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdE1lZGlh
VGV4dFRyYWNrRGlzcGxheUJhY2tkcm9wKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdE1lZGlhVGV4dFRyYWNrRGlzcGxheSgi
LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXktYmFja2Ryb3AiLCBBdG9tU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHdlYmtpdE1lZGlhVGV4dFRyYWNrRGlz
cGxheTsKK30KKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0TWVkaWFUZXh0VHJhY2tSZWdpb24o
KQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gd2Via2l0TWVkaWFUZXh0VHJhY2tSZWdpb24oIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1y
ZWdpb24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHdl
YmtpdE1lZGlhVGV4dFRyYWNrUmVnaW9uOworfQorCitjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRN
ZWRpYVRleHRUcmFja1JlZ2lvbkNvbnRhaW5lcigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWRO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRNZWRpYVRleHRUcmFja1JlZ2lv
bkNvbnRhaW5lcigiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXJlZ2lvbi1jb250YWluZXIiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHdlYmtpdE1lZGlh
VGV4dFRyYWNrUmVnaW9uQ29udGFpbmVyOworfQorCitjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRN
ZXRlckJhcigpCit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiB3ZWJraXRNZXRlckJhcigiLXdlYmtpdC1tZXRlci1iYXIiLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHdlYmtpdE1ldGVyQmFyOworfQor
Citjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRNZXRlcklubmVyRWxlbWVudCgpCit7CisgICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRNZXRl
cklubmVyRWxlbWVudCgiLXdlYmtpdC1tZXRlci1pbm5lci1lbGVtZW50IiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB3ZWJraXRNZXRlcklubmVyRWxlbWVu
dDsKK30KKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0TWV0ZXJPcHRpbXVtVmFsdWUoKQorewor
ICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Vi
a2l0TWV0ZXJPcHRpbXVtVmFsdWUoIi13ZWJraXQtbWV0ZXItb3B0aW11bS12YWx1ZSIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gd2Via2l0TWV0ZXJPcHRp
bXVtVmFsdWU7Cit9CisKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdE1ldGVyU3Vib3B0aW11bVZh
bHVlKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21T
dHJpbmc+IHdlYmtpdE1ldGVyU3Vib3B0aW11bVZhbHVlKCItd2Via2l0LW1ldGVyLXN1Ym9wdGlt
dW0tdmFsdWUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJu
IHdlYmtpdE1ldGVyU3Vib3B0aW11bVZhbHVlOworfQorCitjb25zdCBBdG9tU3RyaW5nJiB3ZWJr
aXRNZXRlckV2ZW5MZXNzR29vZFZhbHVlKCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdE1ldGVyRXZlbkxlc3NHb29kVmFsdWUo
Ii13ZWJraXQtbWV0ZXItZXZlbi1sZXNzLWdvb2QtdmFsdWUiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHdlYmtpdE1ldGVyRXZlbkxlc3NHb29kVmFsdWU7
Cit9CisKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdFBsdWdpblJlcGxhY2VtZW50KCkKK3sKKyAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtp
dFBsdWdpblJlcGxhY2VtZW50KCItd2Via2l0LXBsdWdpbi1yZXBsYWNlbWVudCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gd2Via2l0UGx1Z2luUmVwbGFj
ZW1lbnQ7Cit9CisKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdFByb2dyZXNzQmFyKCkKK3sKKyAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtp
dFByb2dyZXNzQmFyKCItd2Via2l0LXByb2dyZXNzLWJhciIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gd2Via2l0UHJvZ3Jlc3NCYXI7Cit9CisKK2NvbnN0
IEF0b21TdHJpbmcmIHdlYmtpdFByb2dyZXNzVmFsdWUoKQoreworICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0UHJvZ3Jlc3NWYWx1ZSgi
LXdlYmtpdC1wcm9ncmVzcy12YWx1ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICByZXR1cm4gd2Via2l0UHJvZ3Jlc3NWYWx1ZTsKK30KKworY29uc3QgQXRvbVN0cmlu
ZyYgd2Via2l0UHJvZ3Jlc3NJbm5lckVsZW1lbnQoKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0UHJvZ3Jlc3NJbm5lckVsZW1l
bnQoIi13ZWJraXQtcHJvZ3Jlc3MtaW5uZXItZWxlbWVudCIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gd2Via2l0UHJvZ3Jlc3NJbm5lckVsZW1lbnQ7Cit9
CisKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdFNlYXJjaERlY29yYXRpb24oKQoreworICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0U2Vh
cmNoRGVjb3JhdGlvbigiLXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gd2Via2l0U2VhcmNoRGVjb3JhdGlvbjsK
K30KKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0U2VhcmNoUmVzdWx0c0J1dHRvbigpCit7Cisg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJr
aXRTZWFyY2hSZXN1bHRzQnV0dG9uKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gd2Via2l0U2VhcmNo
UmVzdWx0c0J1dHRvbjsKK30KKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0U2VhcmNoUmVzdWx0
c0RlY29yYXRpb24oKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gd2Via2l0U2VhcmNoUmVzdWx0c0RlY29yYXRpb24oIi13ZWJraXQtc2Vh
cmNoLXJlc3VsdHMtZGVjb3JhdGlvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICByZXR1cm4gd2Via2l0U2VhcmNoUmVzdWx0c0RlY29yYXRpb247Cit9CisKK2NvbnN0
IEF0b21TdHJpbmcmIHdlYmtpdFNlYXJjaENhbmNlbEJ1dHRvbigpCit7CisgICAgc3RhdGljIE1h
aW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRTZWFyY2hDYW5j
ZWxCdXR0b24oIi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24iLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHdlYmtpdFNlYXJjaENhbmNlbEJ1dHRvbjsK
K30KKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0U2xpZGVyUnVubmFibGVUcmFjaygpCit7Cisg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJr
aXRTbGlkZXJSdW5uYWJsZVRyYWNrKCItd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gd2Via2l0U2xpZGVy
UnVubmFibGVUcmFjazsKK30KKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0U2xpZGVyVGh1bWIo
KQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmlu
Zz4gd2Via2l0U2xpZGVyVGh1bWIoIi13ZWJraXQtc2xpZGVyLXRodW1iIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB3ZWJraXRTbGlkZXJUaHVtYjsKK30K
KworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0U2xpZGVyQ29udGFpbmVyKCkKK3sKKyAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFNsaWRl
ckNvbnRhaW5lcigiLXdlYmtpdC1zbGlkZXItY29udGFpbmVyIiwgQXRvbVN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB3ZWJraXRTbGlkZXJDb250YWluZXI7Cit9CisK
K2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdFRleHRmaWVsZERlY29yYXRpb25Db250YWluZXIoKQor
eworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
d2Via2l0VGV4dGZpZWxkRGVjb3JhdGlvbkNvbnRhaW5lcigiLXdlYmtpdC10ZXh0ZmllbGQtZGVj
b3JhdGlvbi1jb250YWluZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Cisg
ICAgcmV0dXJuIHdlYmtpdFRleHRmaWVsZERlY29yYXRpb25Db250YWluZXI7Cit9CisKK2NvbnN0
IEF0b21TdHJpbmcmIHdlYmtpdFZhbGlkYXRpb25CdWJibGUoKQoreworICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0VmFsaWRhdGlvbkJ1
YmJsZSgiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICByZXR1cm4gd2Via2l0VmFsaWRhdGlvbkJ1YmJsZTsKK30KKworY29u
c3QgQXRvbVN0cmluZyYgd2Via2l0VmFsaWRhdGlvbkJ1YmJsZUFycm93Q2xpcHBlcigpCit7Cisg
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJr
aXRWYWxpZGF0aW9uQnViYmxlQXJyb3dDbGlwcGVyKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxl
LWFycm93LWNsaXBwZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
cmV0dXJuIHdlYmtpdFZhbGlkYXRpb25CdWJibGVBcnJvd0NsaXBwZXI7Cit9CisKK2NvbnN0IEF0
b21TdHJpbmcmIHdlYmtpdFZhbGlkYXRpb25CdWJibGVBcnJvdygpCit7CisgICAgc3RhdGljIE1h
aW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB3ZWJraXRWYWxpZGF0aW9u
QnViYmxlQXJyb3coIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtYXJyb3ciLCBBdG9tU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHdlYmtpdFZhbGlkYXRpb25CdWJi
bGVBcnJvdzsKK30KKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0VmFsaWRhdGlvbkJ1YmJsZU1l
c3NhZ2UoKQoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gd2Via2l0VmFsaWRhdGlvbkJ1YmJsZU1lc3NhZ2UoIi13ZWJraXQtdmFsaWRhdGlv
bi1idWJibGUtbWVzc2FnZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAg
ICByZXR1cm4gd2Via2l0VmFsaWRhdGlvbkJ1YmJsZU1lc3NhZ2U7Cit9CisKK2NvbnN0IEF0b21T
dHJpbmcmIHdlYmtpdFZhbGlkYXRpb25CdWJibGVJY29uKCkKK3sKKyAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFZhbGlkYXRpb25CdWJi
bGVJY29uKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLWljb24iLCBBdG9tU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHdlYmtpdFZhbGlkYXRpb25CdWJibGVJY29u
OworfQorCitjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRWYWxpZGF0aW9uQnViYmxlVGV4dEJsb2Nr
KCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IHdlYmtpdFZhbGlkYXRpb25CdWJibGVUZXh0QmxvY2soIi13ZWJraXQtdmFsaWRhdGlvbi1i
dWJibGUtdGV4dC1ibG9jayIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAg
ICByZXR1cm4gd2Via2l0VmFsaWRhdGlvbkJ1YmJsZVRleHRCbG9jazsKK30KKworY29uc3QgQXRv
bVN0cmluZyYgd2Via2l0VmFsaWRhdGlvbkJ1YmJsZUhlYWRpbmcoKQoreworICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gd2Via2l0VmFsaWRhdGlv
bkJ1YmJsZUhlYWRpbmcoIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtaGVhZGluZyIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gd2Via2l0VmFsaWRhdGlv
bkJ1YmJsZUhlYWRpbmc7Cit9CisKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdFZhbGlkYXRpb25C
dWJibGVCb2R5KCkKK3sKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHdlYmtpdFZhbGlkYXRpb25CdWJibGVCb2R5KCItd2Via2l0LXZhbGlkYXRp
b24tYnViYmxlLWJvZHkiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAg
cmV0dXJuIHdlYmtpdFZhbGlkYXRpb25CdWJibGVCb2R5OworfQorCit9IC8vIG5hbWVzcGFjZSBT
aGFkb3dQc2V1ZG9JZAorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TaGFkb3dQc2V1ZG9JZHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NoYWRvd1BzZXVkb0lkcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNzdjN2NkMDQ2YzMw
YzJkN2RjNTQzNjczMjFhNTQyYmU4YTdkMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TaGFkb3dQc2V1ZG9JZHMuaApAQCAtMCwwICsxLDExMiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgU2hhZG93UHNldWRvSWRzIHsKKworY29uc3Qg
QXRvbVN0cmluZyYgY3VlKCk7CisKK2NvbnN0IEF0b21TdHJpbmcmIGZpbGVTZWxlY3RvckJ1dHRv
bigpOworCitjb25zdCBBdG9tU3RyaW5nJiBwbGFjZWhvbGRlcigpOworCitjb25zdCBBdG9tU3Ry
aW5nJiB3ZWJraXRDb250YWN0c0F1dG9GaWxsQnV0dG9uKCk7Citjb25zdCBBdG9tU3RyaW5nJiB3
ZWJraXRDcmVkZW50aWFsc0F1dG9GaWxsQnV0dG9uKCk7Citjb25zdCBBdG9tU3RyaW5nJiB3ZWJr
aXRDcmVkaXRDYXJkQXV0b0ZpbGxCdXR0b24oKTsKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdFN0
cm9uZ1Bhc3N3b3JkQXV0b0ZpbGxCdXR0b24oKTsKKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0
Q2Fwc0xvY2tJbmRpY2F0b3IoKTsKKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0Q29sb3JTd2F0
Y2goKTsKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdENvbG9yU3dhdGNoV3JhcHBlcigpOworCitj
b25zdCBBdG9tU3RyaW5nJiB3ZWJraXREYXRldGltZUVkaXQoKTsKK2NvbnN0IEF0b21TdHJpbmcm
IHdlYmtpdERhdGV0aW1lRWRpdFRleHQoKTsKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdERhdGV0
aW1lRWRpdEZpZWxkc1dyYXBwZXIoKTsKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdERhdGVBbmRU
aW1lVmFsdWUoKTsKKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0RGV0YWlsc01hcmtlcigpOwor
Citjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRHZW5lcmljQ3VlUm9vdCgpOworCitjb25zdCBBdG9t
U3RyaW5nJiB3ZWJraXRJbm5lclNwaW5CdXR0b24oKTsKKworY29uc3QgQXRvbVN0cmluZyYgd2Vi
a2l0S2V5Z2VuU2VsZWN0KCk7CisKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdExpc3RCdXR0b24o
KTsKKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0TWVkaWFTbGlkZXJUaHVtYigpOworY29uc3Qg
QXRvbVN0cmluZyYgd2Via2l0TWVkaWFTbGlkZXJDb250YWluZXIoKTsKKworY29uc3QgQXRvbVN0
cmluZyYgd2Via2l0TWVkaWFUZXh0VHJhY2tDb250YWluZXIoKTsKKworY29uc3QgQXRvbVN0cmlu
ZyYgd2Via2l0TWVkaWFUZXh0VHJhY2tEaXNwbGF5KCk7Citjb25zdCBBdG9tU3RyaW5nJiB3ZWJr
aXRNZWRpYVRleHRUcmFja0Rpc3BsYXlCYWNrZHJvcCgpOworCitjb25zdCBBdG9tU3RyaW5nJiB3
ZWJraXRNZWRpYVRleHRUcmFja1JlZ2lvbigpOworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0TWVk
aWFUZXh0VHJhY2tSZWdpb25Db250YWluZXIoKTsKKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0
TWV0ZXJCYXIoKTsKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdE1ldGVySW5uZXJFbGVtZW50KCk7
Citjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRNZXRlck9wdGltdW1WYWx1ZSgpOworY29uc3QgQXRv
bVN0cmluZyYgd2Via2l0TWV0ZXJTdWJvcHRpbXVtVmFsdWUoKTsKK2NvbnN0IEF0b21TdHJpbmcm
IHdlYmtpdE1ldGVyRXZlbkxlc3NHb29kVmFsdWUoKTsKKworY29uc3QgQXRvbVN0cmluZyYgd2Vi
a2l0UGx1Z2luUmVwbGFjZW1lbnQoKTsKKworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0UHJvZ3Jl
c3NCYXIoKTsKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdFByb2dyZXNzVmFsdWUoKTsKK2NvbnN0
IEF0b21TdHJpbmcmIHdlYmtpdFByb2dyZXNzSW5uZXJFbGVtZW50KCk7CisKK2NvbnN0IEF0b21T
dHJpbmcmIHdlYmtpdFNlYXJjaERlY29yYXRpb24oKTsKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtp
dFNlYXJjaFJlc3VsdHNCdXR0b24oKTsKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdFNlYXJjaFJl
c3VsdHNEZWNvcmF0aW9uKCk7CisKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdFNlYXJjaENhbmNl
bEJ1dHRvbigpOworCitjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRTbGlkZXJSdW5uYWJsZVRyYWNr
KCk7CisKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdFNsaWRlclRodW1iKCk7Citjb25zdCBBdG9t
U3RyaW5nJiB3ZWJraXRTbGlkZXJDb250YWluZXIoKTsKKworY29uc3QgQXRvbVN0cmluZyYgd2Vi
a2l0VGV4dGZpZWxkRGVjb3JhdGlvbkNvbnRhaW5lcigpOworCitjb25zdCBBdG9tU3RyaW5nJiB3
ZWJraXRWYWxpZGF0aW9uQnViYmxlKCk7Citjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRWYWxpZGF0
aW9uQnViYmxlQXJyb3dDbGlwcGVyKCk7Citjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRWYWxpZGF0
aW9uQnViYmxlQXJyb3coKTsKK2NvbnN0IEF0b21TdHJpbmcmIHdlYmtpdFZhbGlkYXRpb25CdWJi
bGVNZXNzYWdlKCk7Citjb25zdCBBdG9tU3RyaW5nJiB3ZWJraXRWYWxpZGF0aW9uQnViYmxlSWNv
bigpOworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0VmFsaWRhdGlvbkJ1YmJsZVRleHRCbG9jaygp
OworY29uc3QgQXRvbVN0cmluZyYgd2Via2l0VmFsaWRhdGlvbkJ1YmJsZUhlYWRpbmcoKTsKK2Nv
bnN0IEF0b21TdHJpbmcmIHdlYmtpdFZhbGlkYXRpb25CdWJibGVCb2R5KCk7CisKK30gLy8gbmFt
ZXNwYWNlIFNoYWRvd1BzZXVkb0lkCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IGRi
YWE4ZDk1ZjM2MTM4Mjc0MTNlMDFkYzY2Y2YxZTFlNjVhYjZiNTQuLjlkMTc0Y2Y3ZWEzM2FlN2I2
MGU2NTM3NDMyOWIwZGQzMDgyOGI0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUg
IlJlbmRlckZsZXhpYmxlQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJTaGFkb3dQc2V1ZG9JZHMuaCIKICNpbmNsdWRl
ICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3RlcFJhbmdlLmgiCiAjaW5jbHVkZSAiU3R5bGVS
ZXNvbHZlci5oIgpAQCAtNTg5LDkgKzU5MCw2IEBAIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gU2xpZGVyVGh1bWJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QKIHsK
ICAgICAvLyBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgY29tcHV0ZSBzdHlsZS4gVGhpcyBpcyBqdXN0
IGEgaGFjayB0byBwaWNrIHNoYWRvdyBwc2V1ZG8gaWQgd2hlbiBob3N0IHN0eWxlIGlzIGtub3du
LgogCi0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiBzbGlkZXJUaHVtYlNoYWRvd1BzZXVkb0lkKCItd2Via2l0LXNsaWRlci10aHVtYiIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1lZGlhU2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9J
ZCgiLXdlYmtpdC1tZWRpYS1zbGlkZXItdGh1bWIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7Ci0KICAgICBpZiAoIWhvc3RTdHlsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIApAQCAtNjAyLDEwICs2MDAsMTAgQEAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVu
dFN0eWxlPiBTbGlkZXJUaHVtYkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdAogICAg
IGNhc2UgTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQ6CiAgICAgY2FzZSBNZWRpYUZ1bGxTY3Jl
ZW5Wb2x1bWVTbGlkZXJQYXJ0OgogICAgIGNhc2UgTWVkaWFGdWxsU2NyZWVuVm9sdW1lU2xpZGVy
VGh1bWJQYXJ0OgotICAgICAgICBtX3NoYWRvd1BzZXVkb0lkID0gbWVkaWFTbGlkZXJUaHVtYlNo
YWRvd1BzZXVkb0lkOworICAgICAgICBtX3NoYWRvd1BzZXVkb0lkID0gU2hhZG93UHNldWRvSWRz
Ojp3ZWJraXRNZWRpYVNsaWRlclRodW1iKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
Ci0gICAgICAgIG1fc2hhZG93UHNldWRvSWQgPSBzbGlkZXJUaHVtYlNoYWRvd1BzZXVkb0lkOwor
ICAgICAgICBtX3NoYWRvd1BzZXVkb0lkID0gU2hhZG93UHNldWRvSWRzOjp3ZWJraXRTbGlkZXJU
aHVtYigpOwogICAgIH0KIAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC02NDMsOSArNjQx
LDYgQEAgc3RkOjpvcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJF
bGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY28KIHsKICAgICAvLyBUaGlzIGRvZXNuJ3QgYWN0
dWFsbHkgY29tcHV0ZSBzdHlsZS4gVGhpcyBpcyBqdXN0IGEgaGFjayB0byBwaWNrIHNoYWRvdyBw
c2V1ZG8gaWQgd2hlbiBob3N0IHN0eWxlIGlzIGtub3duLgogCi0gICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtZWRpYVNsaWRlckNvbnRhaW5lcigi
LXdlYmtpdC1tZWRpYS1zbGlkZXItY29udGFpbmVyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gc2xpZGVyQ29udGFpbmVyKCItd2Via2l0LXNsaWRlci1jb250YWluZXIiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0KICAgICBpZiAoIWhvc3RTdHlsZSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtNjU2LDEwICs2NTEsMTAgQEAgc3RkOjpv
cHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpyZXNv
bHZlQ3VzdG9tU3R5bGUoY28KICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyVGh1bWJQYXJ0Ogog
ICAgIGNhc2UgTWVkaWFGdWxsU2NyZWVuVm9sdW1lU2xpZGVyUGFydDoKICAgICBjYXNlIE1lZGlh
RnVsbFNjcmVlblZvbHVtZVNsaWRlclRodW1iUGFydDoKLSAgICAgICAgbV9zaGFkb3dQc2V1ZG9J
ZCA9IG1lZGlhU2xpZGVyQ29udGFpbmVyOworICAgICAgICBtX3NoYWRvd1BzZXVkb0lkID0gU2hh
ZG93UHNldWRvSWRzOjp3ZWJraXRNZWRpYVNsaWRlckNvbnRhaW5lcigpOwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgotICAgICAgICBtX3NoYWRvd1BzZXVkb0lkID0gc2xpZGVyQ29udGFp
bmVyOworICAgICAgICBtX3NoYWRvd1BzZXVkb0lkID0gU2hhZG93UHNldWRvSWRzOjp3ZWJraXRT
bGlkZXJDb250YWluZXIoKTsKICAgICB9CiAKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCmluZGV4
IGQ5MDQyNDBmM2RiYTA2ODQwYTA0ZWI2YTNjYTcwYmJhNmY4ZmFiZTkuLmE4MDViNjUxM2YxMmNk
ZmZjMGZmMTE2ZjA2NGMzMjMzM2MxYmVhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNjcm9s
bGJhclRoZW1lLmgiCisjaW5jbHVkZSAiU2hhZG93UHNldWRvSWRzLmgiCiAjaW5jbHVkZSAiV2hl
ZWxFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgpAQCAtNjEsOCArNjIsNyBAQCBpbmxpbmUgU3BpbkJ1dHRvbkVsZW1lbnQ6OlNw
aW5CdXR0b25FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgU3BpbkJ1dHRvbk93bmVyJgogUmVm
PFNwaW5CdXR0b25FbGVtZW50PiBTcGluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgU3BpbkJ1dHRvbk93bmVyJiBzcGluQnV0dG9uT3duZXIpCiB7CiAgICAgYXV0byBl
bGVtZW50ID0gYWRvcHRSZWYoKm5ldyBTcGluQnV0dG9uRWxlbWVudChkb2N1bWVudCwgc3BpbkJ1
dHRvbk93bmVyKSk7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiB3ZWJraXRJbm5lclNwaW5CdXR0b25OYW1lKCItd2Via2l0LWlubmVyLXNwaW4t
YnV0dG9uIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGVsZW1lbnQt
PnNldFBzZXVkbyh3ZWJraXRJbm5lclNwaW5CdXR0b25OYW1lKTsKKyAgICBlbGVtZW50LT5zZXRQ
c2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRJbm5lclNwaW5CdXR0b24oKSk7CiAgICAgcmV0
dXJuIGVsZW1lbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IGJkMjc2MDcxNGI3YzA5YzAyZmQ3
NGM5ZTY1OGFiNDkzZGM1MWFlNWUuLjA3NDM1NWY5ODRkZWJhZmRmY2QwOWQ4NGIzYzlkYzljMmIy
OThmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlJlbmRl
clRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTaGFkb3dQc2V1ZG9JZHMuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRleHRF
dmVudC5oIgpAQCAtMjA0LDggKzIwNSw3IEBAIGlubGluZSBUZXh0Q29udHJvbFBsYWNlaG9sZGVy
RWxlbWVudDo6VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQoRG9jdW1lbnQmIGRvCiBSZWY8
VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIGF1dG8gZWxlbWVudCA9IGFk
b3B0UmVmKCpuZXcgVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQoZG9jdW1lbnQpKTsKLSAg
ICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHBsYWNl
aG9sZGVyTmFtZSgicGxhY2Vob2xkZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7Ci0gICAgZWxlbWVudC0+c2V0UHNldWRvKHBsYWNlaG9sZGVyTmFtZSk7CisgICAgZWxlbWVu
dC0+c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6cGxhY2Vob2xkZXIoKSk7CiAgICAgcmV0dXJu
IGVsZW1lbnQ7CiB9CiAKQEAgLTI5Niw5ICsyOTYsOSBAQCBpbmxpbmUgU2VhcmNoRmllbGRDYW5j
ZWxCdXR0b25FbGVtZW50OjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQm
CiBSZWY8U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50PiBTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgYXV0byBlbGVt
ZW50ID0gYWRvcHRSZWYoKm5ldyBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQoZG9jdW1l
bnQpKTsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IHdlYmtpdFNlYXJjaENhbmNlbEJ1dHRvbk5hbWUoIi13ZWJraXQtc2VhcmNoLWNhbmNlbC1i
dXR0b24iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisKICAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGJ1dHRvbk5hbWUoImJ1
dHRvbiIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBlbGVtZW50LT5z
ZXRQc2V1ZG8od2Via2l0U2VhcmNoQ2FuY2VsQnV0dG9uTmFtZSk7CisgICAgZWxlbWVudC0+c2V0
UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Via2l0U2VhcmNoQ2FuY2VsQnV0dG9uKCkpOwogI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oYXJpYV9sYWJlbEF0dHIsIEFYU2VhcmNoRmllbGRDYW5jZWxCdXR0b25U
ZXh0KCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Z
b3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1lvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IGEzMzExNjc1MTdhYWZhNmFjMDZm
NDRlMDY1ZTZlNTk3NTQ3NzlhNGIuLjdhNzkyMmU4YTJiMWM2YTE0ZmFmY2M4YWEzYWIxYmVjZDY4
N2QzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lvdVR1YmVFbWJl
ZFNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1lvdVR1
YmVFbWJlZFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiWW91
VHViZUVtYmVkU2hhZG93RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93Lmgi
CisjaW5jbHVkZSAiU2hhZG93UHNldWRvSWRzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsOCArMzcsNyBAQCBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoWW91VHViZUVtYmVkU2hhZG93RWxlbWVudCk7CiBSZWY8WW91
VHViZUVtYmVkU2hhZG93RWxlbWVudD4gWW91VHViZUVtYmVkU2hhZG93RWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvIGVsZW1lbnQgPSBhZG9wdFJlZigqbmV3
IFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQoZG9jdW1lbnQpKTsKLSAgICBzdGF0aWMgTWFpblRo
cmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHdlYmtpdFBsdWdpblJlcGxhY2Vt
ZW50TmFtZSgiLXdlYmtpdC1wbHVnaW4tcmVwbGFjZW1lbnQiLCBBdG9tU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgZWxlbWVudC0+c2V0UHNldWRvKHdlYmtpdFBsdWdpblJlcGxh
Y2VtZW50TmFtZSk7CisgICAgZWxlbWVudC0+c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Vi
a2l0UGx1Z2luUmVwbGFjZW1lbnQoKSk7CiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCBhOWZiZTE2Yjk1YjIy
M2ExNjRmMDQ5MTU2MDdhOTA3MmE0N2IwMzQ2Li45NWQ4NDM0ZGE0MDE1ZTU2NDZmMjA2ZjRmNzEy
ZDkyOWIwZDhmMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKKyNpbmNsdWRl
ICJTaGFkb3dQc2V1ZG9JZHMuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFRy
YWNrLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgpAQCAtNjMsMjQgKzY0LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRleHRUcmFj
a0N1ZSk7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoVGV4dFRyYWNrQ3VlQm94KTsKIAot
Y29uc3QgQXRvbVN0cmluZyYgVGV4dFRyYWNrQ3VlOjpjdWVTaGFkb3dQc2V1ZG9JZCgpCi17Ci0g
ICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjdWUo
ImN1ZSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gY3Vl
OwotfQotCi1jb25zdCBBdG9tU3RyaW5nJiBUZXh0VHJhY2tDdWU6OmN1ZUJveFNoYWRvd1BzZXVk
b0lkKCkKLXsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21T
dHJpbmc+IHRyYWNrRGlzcGxheUJveFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1lZGlhLXRleHQt
dHJhY2stZGlzcGxheSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBy
ZXR1cm4gdHJhY2tEaXNwbGF5Qm94U2hhZG93UHNldWRvSWQ7Ci19Ci0KLWNvbnN0IEF0b21TdHJp
bmcmIFRleHRUcmFja0N1ZTo6Y3VlQmFja2Ryb3BTaGFkb3dQc2V1ZG9JZCgpCi17Ci0gICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBjdWVCYWNrZHJv
cFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheS1iYWNrZHJv
cCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICByZXR1cm4gY3VlQmFj
a2Ryb3BTaGFkb3dQc2V1ZG9JZDsKLX0KLQogc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIGN1
ZUF0dHJpYnV0TmFtZSgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IGN1ZVRhZyhudWxsQXRvbSgpLCAiY3VlIiwgbnVsbEF0b20oKSk7CkBAIC0xMDksNyArOTIs
NyBAQCBUZXh0VHJhY2tDdWVCb3g6OlRleHRUcmFja0N1ZUJveChEb2N1bWVudCYgZG9jdW1lbnQs
IFRleHRUcmFja0N1ZSYgY3VlKQogCiB2b2lkIFRleHRUcmFja0N1ZUJveDo6aW5pdGlhbGl6ZSgp
CiB7Ci0gICAgc2V0UHNldWRvKFRleHRUcmFja0N1ZTo6Y3VlQm94U2hhZG93UHNldWRvSWQoKSk7
CisgICAgc2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Via2l0TWVkaWFUZXh0VHJhY2tEaXNw
bGF5KCkpOwogfQogCiBUZXh0VHJhY2tDdWUqIFRleHRUcmFja0N1ZUJveDo6Z2V0Q3VlKCkgY29u
c3QKQEAgLTE2OSwxMCArMTUyLDEwIEBAIHN0YXRpYyBPcHRpb25TZXQ8UmVxdWlyZWROb2Rlcz4g
dGFnUHNldWRvT2JqZWN0cyhOb2RlJiBub2RlKQogCiAgICAgYXV0byYgZWxlbWVudCA9IGRvd25j
YXN0PEVsZW1lbnQ+KG5vZGUpOwogICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oY3VlQXR0cmlidXROYW1lKCkpKSB7Ci0gICAgICAgIGVsZW1lbnQuc2V0
UHNldWRvKFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQoKSk7CisgICAgICAgIGVsZW1l
bnQuc2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6Y3VlKCkpOwogICAgICAgICBub2RlVHlwZXMg
PSB7IFJlcXVpcmVkTm9kZXM6OkN1ZSB9OwogICAgIH0gZWxzZSBpZiAoZWxlbWVudC5oYXNBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUoKSkp
IHsKLSAgICAgICAgZWxlbWVudC5zZXRQc2V1ZG8oVGV4dFRyYWNrQ3VlOjpjdWVCYWNrZHJvcFNo
YWRvd1BzZXVkb0lkKCkpOworICAgICAgICBlbGVtZW50LnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9J
ZHM6OndlYmtpdE1lZGlhVGV4dFRyYWNrRGlzcGxheUJhY2tkcm9wKCkpOwogICAgICAgICBub2Rl
VHlwZXMgPSB7IFJlcXVpcmVkTm9kZXM6OkN1ZUJhY2tncm91bmQgfTsKICAgICB9CiAKQEAgLTUw
NCw5ICs0ODcsOCBAQCB2b2lkIFRleHRUcmFja0N1ZTo6cmVidWlsZERpc3BsYXlUcmVlKCkKICAg
ICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkV2ZW50QWxsb3dlZFNjb3BlIGFsbG93ZWRTY29wZUZv
clJlZmVyZW5jZVRyZWUoKm1fY3VlTm9kZSk7CiAKICAgICBpZiAoIW1fZGlzcGxheVRyZWUpIHsK
LSAgICAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5n
PiB3ZWJraXRHZW5lcmljQ3VlUm9vdE5hbWUoIi13ZWJraXQtZ2VuZXJpYy1jdWUtcm9vdCIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgbV9kaXNwbGF5VHJlZSA9
IFRleHRUcmFja0N1ZUJveDo6Y3JlYXRlKG93bmVyRG9jdW1lbnQoKSwgKnRoaXMpOwotICAgICAg
ICBtX2Rpc3BsYXlUcmVlLT5zZXRQc2V1ZG8od2Via2l0R2VuZXJpY0N1ZVJvb3ROYW1lKTsKKyAg
ICAgICAgbV9kaXNwbGF5VHJlZS0+c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Via2l0R2Vu
ZXJpY0N1ZVJvb3QoKSk7CiAgICAgfQogCiAgICAgbV9kaXNwbGF5VHJlZS0+cmVtb3ZlQ2hpbGRy
ZW4oKTsKQEAgLTUxOCw3ICs1MDAsNyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6cmVidWlsZERpc3Bs
YXlUcmVlKCkKICAgICAgICAgaWYgKGF1dG8gcGFnZSA9IG93bmVyRG9jdW1lbnQoKS5wYWdlKCkp
IHsKICAgICAgICAgICAgIGF1dG8gc3R5bGUgPSBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoSFRN
TE5hbWVzOjpzdHlsZVRhZywgb3duZXJEb2N1bWVudCgpLCBmYWxzZSk7CiAgICAgICAgICAgICBz
dHlsZS0+c2V0VGV4dENvbnRlbnQobWFrZVN0cmluZyhwYWdlLT5jYXB0aW9uVXNlclByZWZlcmVu
Y2VzU3R5bGVTaGVldCgpLAotICAgICAgICAgICAgICAgICIgOjoiLCBUZXh0VHJhY2tDdWU6OmN1
ZVNoYWRvd1BzZXVkb0lkKCksICJ7Zm9udC1zaXplOiIsIG1fZm9udFNpemUsIG1fZm9udFNpemVJ
c0ltcG9ydGFudCA/ICJweCAhaW1wb3J0YW50fSIgOiAicHh9IikpOworICAgICAgICAgICAgICAg
ICIgOjoiLCBTaGFkb3dQc2V1ZG9JZHM6OmN1ZSgpLCAie2ZvbnQtc2l6ZToiLCBtX2ZvbnRTaXpl
LCBtX2ZvbnRTaXplSXNJbXBvcnRhbnQgPyAicHggIWltcG9ydGFudH0iIDogInB4fSIpKTsKICAg
ICAgICAgICAgIG1fZGlzcGxheVRyZWUtPmFwcGVuZENoaWxkKHN0eWxlKTsKICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCmluZGV4IDE3Mjll
NzlkZjRiZTE5NWE2ZTI4Y2QyNzY2NjEzNDMwMjRhNDZmOGUuLmY1NDRjNGZhMTYyN2IwNDA0YzA1
NDU4MDBmNjVlMGU5ZDYzZWU2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuaApAQCAtNjUsMTAgKzY1LDYgQEAgcHJpdmF0ZToKIGNsYXNzIFRleHRUcmFja0N1ZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja0N1ZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJ
bmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKFRleHRUcmFja0N1ZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIGN1ZVNoYWRvd1BzZXVkb0lkKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGN1
ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYg
Y3VlQm94U2hhZG93UHNldWRvSWQoKTsKLQogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8VGV4
dFRyYWNrQ3VlPj4gY3JlYXRlKERvY3VtZW50JiwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBE
b2N1bWVudEZyYWdtZW50Jik7CiAKICAgICBUZXh0VHJhY2sqIHRyYWNrKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKaW5kZXggZThhNjg4ZmMxZjg1NTA4MjdhZWMwYjUw
ZmViZTVlN2I4ZThmNGM5ZC4uODg0NDc3OTg0MGQ2MzhjODk4MGE2OTg5Y2JiYzQ1NDU2NzEwMmY2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcApAQCAtNDUsNiArNDUsNyBAQAog
I2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW5kZXJWVFRDdWUuaCIKICNp
bmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKKyNpbmNsdWRlICJTaGFkb3dQc2V1ZG9J
ZHMuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCiAjaW5jbHVk
ZSAiVGV4dFRyYWNrQ3VlR2VuZXJpYy5oIgpAQCAtMTAwOCw5ICsxMDA5LDkgQEAgUmVmUHRyPFRl
eHRUcmFja0N1ZUJveD4gVlRUQ3VlOjpnZXREaXNwbGF5VHJlZShjb25zdCBJbnRTaXplJiB2aWRl
b1NpemUsIGludCBmb24KICAgICAvLyBiYWNrZ3JvdW5kIGJveC4KIAogICAgIC8vIE5vdGU6IFRo
aXMgaXMgY29udGFpbmVkIGJ5IGRlZmF1bHQgaW4gbV9jdWVIaWdobGlnaHRCb3guCi0gICAgbV9j
dWVIaWdobGlnaHRCb3gtPnNldFBzZXVkbyhjdWVTaGFkb3dQc2V1ZG9JZCgpKTsKKyAgICBtX2N1
ZUhpZ2hsaWdodEJveC0+c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6Y3VlKCkpOwogCi0gICAg
bV9jdWVCYWNrZHJvcEJveC0+c2V0UHNldWRvKGN1ZUJhY2tkcm9wU2hhZG93UHNldWRvSWQoKSk7
CisgICAgbV9jdWVCYWNrZHJvcEJveC0+c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Via2l0
TWVkaWFUZXh0VHJhY2tEaXNwbGF5QmFja2Ryb3AoKSk7CiAgICAgbV9jdWVCYWNrZHJvcEJveC0+
YXBwZW5kQ2hpbGQoKm1fY3VlSGlnaGxpZ2h0Qm94KTsKICAgICBkaXNwbGF5VHJlZS0+YXBwZW5k
Q2hpbGQoKm1fY3VlQmFja2Ryb3BCb3gpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJl
Z2lvbi5jcHAKaW5kZXggYTE5OWJiMDg5OWFlM2FhMTkwNTJlODE3YjMxNTMzZDY3YWM2YmViMC4u
ODNmNWY3OTQ1Mjg2MDJlZWQyMWYwZTU5OTg4MTA3YWQ0ODVjZDA2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVlRUUmVnaW9uLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkhU
TUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVy
RWxlbWVudC5oIgorI2luY2x1ZGUgIlNoYWRvd1BzZXVkb0lkcy5oIgogI2luY2x1ZGUgIlZUVEN1
ZS5oIgogI2luY2x1ZGUgIlZUVFNjYW5uZXIuaCIKICNpbmNsdWRlICJXZWJWVFRQYXJzZXIuaCIK
QEAgLTI2NywyMCArMjY4LDYgQEAgY29uc3QgQXRvbVN0cmluZyYgVlRUUmVnaW9uOjp0ZXh0VHJh
Y2tDdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcygpCiAgICAgcmV0dXJuIHRyYWNrUmVnaW9uQ3Vl
Q29udGFpbmVyU2Nyb2xsaW5nQ2xhc3M7CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIFZUVFJlZ2lv
bjo6dGV4dFRyYWNrQ3VlQ29udGFpbmVyU2hhZG93UHNldWRvSWQoKQotewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdHJhY2tSZWdpb25DdWVD
b250YWluZXJQc2V1ZG9JZCgiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXJlZ2lvbi1jb250YWlu
ZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0KLSAgICByZXR1cm4gdHJh
Y2tSZWdpb25DdWVDb250YWluZXJQc2V1ZG9JZDsKLX0KLQotY29uc3QgQXRvbVN0cmluZyYgVlRU
UmVnaW9uOjp0ZXh0VHJhY2tSZWdpb25TaGFkb3dQc2V1ZG9JZCgpCi17Ci0gICAgc3RhdGljIE1h
aW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiB0cmFja1JlZ2lvblNoYWRv
d1BzZXVkb0lkKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcmVnaW9uIiwgQXRvbVN0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotCi0gICAgcmV0dXJuIHRyYWNrUmVnaW9uU2hhZG93UHNl
dWRvSWQ7Ci19Ci0KIHZvaWQgVlRUUmVnaW9uOjphcHBlbmRUZXh0VHJhY2tDdWVCb3goUmVmPFRl
eHRUcmFja0N1ZUJveD4mJiBkaXNwbGF5Qm94KQogewogICAgIEFTU0VSVChtX2N1ZUNvbnRhaW5l
cik7CkBAIC0zNDIsNyArMzI5LDcgQEAgSFRNTERpdkVsZW1lbnQmIFZUVFJlZ2lvbjo6Z2V0RGlz
cGxheVRyZWUoKQogewogICAgIGlmICghbV9yZWdpb25EaXNwbGF5VHJlZSkgewogICAgICAgICBt
X3JlZ2lvbkRpc3BsYXlUcmVlID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb3duY2FzdDxEb2N1
bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwotICAgICAgICBtX3JlZ2lvbkRpc3Bs
YXlUcmVlLT5zZXRQc2V1ZG8odGV4dFRyYWNrUmVnaW9uU2hhZG93UHNldWRvSWQoKSk7CisgICAg
ICAgIG1fcmVnaW9uRGlzcGxheVRyZWUtPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtp
dE1lZGlhVGV4dFRyYWNrUmVnaW9uKCkpOwogICAgICAgICBtX3JlY2FsY3VsYXRlU3R5bGVzID0g
dHJ1ZTsKICAgICB9CiAKQEAgLTM4OSw3ICszNzYsNyBAQCB2b2lkIFZUVFJlZ2lvbjo6cHJlcGFy
ZVJlZ2lvbkRpc3BsYXlUcmVlKCkKICAgICAvLyBncmFkdWFsbHkgc2Nyb2xsZWQgb3V0IGFzIG11
bHRpcGxlIGN1ZXMgYXJlIGFwcGVuZGVkIHRvIHRoZSByZWdpb24uCiAgICAgaWYgKCFtX2N1ZUNv
bnRhaW5lcikgewogICAgICAgICBtX2N1ZUNvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVh
dGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAgICAg
ICAgbV9jdWVDb250YWluZXItPnNldFBzZXVkbyh0ZXh0VHJhY2tDdWVDb250YWluZXJTaGFkb3dQ
c2V1ZG9JZCgpKTsKKyAgICAgICAgbV9jdWVDb250YWluZXItPnNldFBzZXVkbyhTaGFkb3dQc2V1
ZG9JZHM6OndlYmtpdE1lZGlhVGV4dFRyYWNrUmVnaW9uQ29udGFpbmVyKCkpOwogICAgICAgICBt
X3JlZ2lvbkRpc3BsYXlUcmVlLT5hcHBlbmRDaGlsZCgqbV9jdWVDb250YWluZXIpOwogICAgIH0K
ICAgICBtX2N1ZUNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRv
cCwgMC4wZiwgQ1NTVW5pdFR5cGU6OkNTU19QWCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRS
ZWdpb24uaAppbmRleCBiOTkwM2FiMDE5MGIyZTNjZjNhM2EzNGRkNTE5MDA3NjMxNDIwMzc2Li4w
NTE2NDVkYzM0YTY3ZjMwMGRkMmI4MjU2MzMxYzMxMzBhMzhmYmRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVlRUUmVnaW9uLmgKQEAgLTExOCw5ICsxMTgsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBwYXJzZVNldHRpbmdWYWx1ZShSZWdpb25TZXR0aW5nLCBWVFRTY2FubmVyJik7CiAKLSAg
ICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgdGV4dFRyYWNrQ3VlQ29udGFpbmVyU2hhZG93UHNl
dWRvSWQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgdGV4dFRyYWNrQ3VlQ29udGFp
bmVyU2Nyb2xsaW5nQ2xhc3MoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgdGV4dFRy
YWNrUmVnaW9uU2hhZG93UHNldWRvSWQoKTsKIAogICAgIFN0cmluZyBtX2lkOwogICAgIFN0cmlu
ZyBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRleCAwYmExYzhiMTIxMjczZmQzOWQ3NjkxZGM4MmMy
NDMyNjMzYmI2MDgzLi4wYzMyY2RlMDlmMzg2NDljYmQ2NjdhMTdiMTVkYmI1ZWUwMzEzNDgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQu
aCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIlNoYWRvd1BzZXVkb0lkcy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIK
ICNpbmNsdWRlICJVc2VyU3R5bGVTaGVldFR5cGVzLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpA
QCAtNjA4LDEyICs2MDksMTIgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFG
OjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0CiAgICAgU3RyaW5nIGZvbnROYW1l
ID0gY2FwdGlvbnNEZWZhdWx0Rm9udENTUygpOwogICAgIFN0cmluZyBiYWNrZ3JvdW5kID0gY2Fw
dGlvbnNCYWNrZ3JvdW5kQ1NTKCk7CiAgICAgaWYgKCFiYWNrZ3JvdW5kLmlzRW1wdHkoKSB8fCAh
Y2FwdGlvbnNDb2xvci5pc0VtcHR5KCkgfHwgIWVkZ2VTdHlsZS5pc0VtcHR5KCkgfHwgIWZvbnRO
YW1lLmlzRW1wdHkoKSkKLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5k
KCIgOjoiLCBUZXh0VHJhY2tDdWU6OmN1ZVNoYWRvd1BzZXVkb0lkKCksICd7JywgYmFja2dyb3Vu
ZCwgY2FwdGlvbnNDb2xvciwgZWRnZVN0eWxlLCBmb250TmFtZSwgJ30nKTsKKyAgICAgICAgY2Fw
dGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgOjoiLCBTaGFkb3dQc2V1ZG9JZHM6OmN1
ZSgpLCAneycsIGJhY2tncm91bmQsIGNhcHRpb25zQ29sb3IsIGVkZ2VTdHlsZSwgZm9udE5hbWUs
ICd9Jyk7CiAKICAgICBTdHJpbmcgd2luZG93Q29sb3IgPSBjYXB0aW9uc1dpbmRvd0NTUygpOwog
ICAgIFN0cmluZyB3aW5kb3dDb3JuZXJSYWRpdXMgPSB3aW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVz
Q1NTKCk7CiAgICAgaWYgKCF3aW5kb3dDb2xvci5pc0VtcHR5KCkgfHwgIXdpbmRvd0Nvcm5lclJh
ZGl1cy5pc0VtcHR5KCkpCi0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVu
ZCgiIDo6IiwgVGV4dFRyYWNrQ3VlOjpjdWVCYWNrZHJvcFNoYWRvd1BzZXVkb0lkKCksICd7Jywg
d2luZG93Q29sb3IsIHdpbmRvd0Nvcm5lclJhZGl1cywgJ30nKTsKKyAgICAgICAgY2FwdGlvbnNP
dmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgOjoiLCBTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdE1l
ZGlhVGV4dFRyYWNrRGlzcGxheUJhY2tkcm9wKCksICd7Jywgd2luZG93Q29sb3IsIHdpbmRvd0Nv
cm5lclJhZGl1cywgJ30nKTsKICNlbmRpZiAvLyBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJB
TUVXT1JLKQogCiAgICAgTE9HKE1lZGlhLCAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6
OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlU2V0dGluZyBzdHlsZSB0bzpcbiVzIiwgY2FwdGlv
bnNPdmVycmlkZVN0eWxlU2hlZXQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1J1bGVEYXRhLmNwcAppbmRleCAyMTI5YTY3N2I3MWQwZWQ0ZTUwY2VmYWNmM2U4MjNlMWVk
Mzc2MDY4Li44OGI0MzMyZGY5MWMzZGU5ZDc4MGJiNWJlMDgwNjYyNzNjYjEzYjg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvUnVsZURhdGEuY3BwCkBAIC0zOCwxNSArMzgsMTIgQEAKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlNl
bGVjdG9yRmlsdGVyLmgiCisjaW5jbHVkZSAiU2hhZG93UHNldWRvSWRzLmgiCiAjaW5jbHVkZSAi
U3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgogI2luY2x1ZGUgIlN0eWxl
UnVsZUltcG9ydC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogCi0jaWYgRU5B
QkxFKFZJREVPKQotI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBTdHlsZSB7CiAKQEAgLTE0MSw3ICsxMzgsNyBAQCBzdGF0
aWMgaW5saW5lIFByb3BlcnR5QWxsb3dsaXN0VHlwZSBkZXRlcm1pbmVQcm9wZXJ0eUFsbG93bGlz
dFR5cGUoY29uc3QgQ1NTU2VsZQogewogICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIGNvbXBv
bmVudCA9IHNlbGVjdG9yOyBjb21wb25lbnQ7IGNvbXBvbmVudCA9IGNvbXBvbmVudC0+dGFnSGlz
dG9yeSgpKSB7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgICAgICBpZiAoY29tcG9uZW50LT5tYXRj
aCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50ICYmIChjb21wb25lbnQtPnBzZXVkb0Vs
ZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRDdWUgfHwgY29tcG9uZW50
LT52YWx1ZSgpID09IFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQoKSkpCisgICAgICAg
IGlmIChjb21wb25lbnQtPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQgJiYg
KGNvbXBvbmVudC0+cHNldWRvRWxlbWVudFR5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxl
bWVudEN1ZSB8fCBjb21wb25lbnQtPnZhbHVlKCkgPT0gU2hhZG93UHNldWRvSWRzOjpjdWUoKSkp
CiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlBbGxvd2xpc3RDdWU7CiAjZW5kaWYKICAgICAg
ICAgaWYgKGNvbXBvbmVudC0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCAm
JiBjb21wb25lbnQtPnBzZXVkb0VsZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0Vs
ZW1lbnRNYXJrZXIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>