<?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>185393</bug_id>
          
          <creation_ts>2018-05-07 14:11:25 -0700</creation_ts>
          <short_desc>Abstract logic to log console messages and send CSP violation reports into a client</short_desc>
          <delta_ts>2018-05-07 20:51:13 -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>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>185366</dependson>
    
    <dependson>185380</dependson>
          <blocked>185410</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1421435</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-07 14:11:25 -0700</bug_when>
    <thetext>Towards supporting logging of console messages for CSP parse errors and CSP violations as well as the sending of CSP reports from NetworkProcess and workers we should abstract the logic to perform these operations into a client the the ContentSecurityPolicy object can delegate to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421437</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-07 14:12:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/40036053&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421471</commentid>
    <comment_count>2</comment_count>
      <attachid>339760</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-07 15:32:19 -0700</bug_when>
    <thetext>Created attachment 339760
Patch

This patch depends on the patches for bug 185366 and bug 185380.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421493</commentid>
    <comment_count>3</comment_count>
      <attachid>339760</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-05-07 16:25:34 -0700</bug_when>
    <thetext>Comment on attachment 339760
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=339760&amp;action=review

r=me

&gt; Source/WebKit/NetworkProcess/NetworkLoadChecker.h:77
&gt; +    WebCore::ContentSecurityPolicy* contentSecurityPolicy();

Perhaps m_contentSecurityPolicy doesn&apos;t need to be mutable if this can be non-const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421506</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-07 16:42:31 -0700</bug_when>
    <thetext>Attachment 339760 did not pass style-queue:


ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:94:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421572</commentid>
    <comment_count>5</comment_count>
      <attachid>339785</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-07 18:16:11 -0700</bug_when>
    <thetext>Created attachment 339785
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421575</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-07 18:19:01 -0700</bug_when>
    <thetext>Attachment 339785 did not pass style-queue:


ERROR: Source/WebCore/page/csp/ContentSecurityPolicy.cpp:94:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421613</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-07 20:51:13 -0700</bug_when>
    <thetext>Committed r231476: &lt;https://trac.webkit.org/changeset/231476&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339760</attachid>
            <date>2018-05-07 15:32:19 -0700</date>
            <delta_ts>2018-05-07 18:16:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185393-20180507153218.patch</filename>
            <type>text/plain</type>
            <size>46008</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU1NGI5MzY0NmFjMzM1
MDk3N2UyNGI1ZjcwZGEwYmMyYWRiMmIxMS4uODA5MmUxNWMyNDQ4NTk3YmExNmRlNTI4ZjNmNTVi
NGI5NDk4NTA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY2IEBACiAyMDE4LTA1LTA3ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBBYnN0cmFjdCBsb2dpYyB0
byBsb2cgY29uc29sZSBtZXNzYWdlcyBhbmQgc2VuZCBDU1AgdmlvbGF0aW9uIHJlcG9ydHMgaW50
byBhIGNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg1MzkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDAzNjA1Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXJzdCBwYXNzIGF0IGFkZGlu
ZyBpbmZyYXN0cnVjdHVyZSB0byBzdXBwb3J0aW5nIENTUCByZXBvcnRpbmcgZnJvbSBOZXR3b3Jr
UHJvY2VzcyBhbmQgd29ya2Vycy4KKyAgICAgICAgUmVwbGFjZXMgdGhlIGV4aXN0aW5nIENvbnRl
bnRTZWN1cml0eVBvbGljeSBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgRnJhbWUgd2l0aCBvbmUg
dGhhdAorICAgICAgICB0YWtlcyBhIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudCB0byBkZWxl
Z2F0ZSB0byBmb3IgbG9nZ2luZyBhbmQgc2VuZGluZyByZXBvcnRzLiBXZSB3aWxsIGxvb2sKKyAg
ICAgICAgdG8gcmVtb3ZlIENvbnRlbnRTZWN1cml0eVBvbGljeSBjb25zdHJ1Y3RvciB0aGF0IHRh
a2VzIGEgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBpbiBhIGZvbGxvdyB1cC4KKworICAgICAgICBT
dGFuZGFyZGl6ZSBvbiBpbnN0YW50aWF0aW5nIGEgQ29udGVudFNlY3VyaXR5UG9saWN5IHdpdGgg
dGhlIGZ1bGwgVVJMIHRvIHJlc291cmNlIHRoYXQgaXQgcHJvdGVjdHMKKyAgICAgICAgaW5zdGVh
ZCBvZiB0YWtpbmcgb25seSB0aGUgU2VjdXJpdHlPcmlnaW4gb2YgdGhpcyBVUkwuIEJ5IHRha2lu
ZyB0aGUgZnVsbCBVUkwgdGhlIENvbnRlbnRTZWN1cml0eVBvbGljeQorICAgICAgICBvYmplY3Qg
aXMgbm93IGNhcGFibGUgb2YgcmVzb2x2aW5nIGEgcmVsYXRpdmUgcmVwb3J0IFVSTCB3aXRob3V0
IG5lZWRpbmcgYSBEb2N1bWVudC9TY3JpcHRFeGVjdXRpb25Db250ZXh0LgorCisgICAgICAgIFdl
IGFyZSB1bmRlcnV0aWxpemluZyB0aGUgQ1NQSW5mbyBzdHJ1Y3QgYW5kIENvbnRlbnRTZWN1cml0
eVBvbGljeUNsaWVudDo6d2lsbFNlbmRDU1BWaW9sYXRpb25SZXBvcnQoKQorICAgICAgICBkZWxl
Z2F0ZSBjYWxsYmFjayBpbiB0aGlzIHBhdGNoLiBXZSB3aWxsIG1ha2UgdXNlIG9mIHRoaXMgZnVu
Y3Rpb25hbGl0eSBpbiBhIHN1YnNlcXVlbnQgcGF0Y2ggdG8KKyAgICAgICAgc3VwcG9ydCBjb2xs
ZWN0aW5nIHNjcmlwdCBzdGF0ZSAoZS5nLiBzb3VyY2UgbGluZSBudW1iZXIpIHdoZW4gcmVwb3J0
aW5nIENTUCB2aW9sYXRpb25zIGluIHdvcmtlcgorICAgICAgICB0aHJlYWRzLiBXZSBhbHNvIG5v
IGxvbmdlciBnbyB0aHJvdWdoIHRoZSB1bm5lY2Vzc2FyeSBtb3Rpb25zIHRvIHRyeSB0byBjb2xs
ZWN0IHNjcmlwdCBzdGF0ZSBmb3IgYQorICAgICAgICBmcmFtZS1hbmNlc3RvcnMgdmlvbGF0aW9u
IChzaW5jZSBEb2N1bWVudExvYWRlciBleHRlbmRzIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVu
dCBhbmQgZG9lcyBub3QKKyAgICAgICAgaW1wbGVtZW50IENvbnRlbnRTZWN1cml0eVBvbGljeUNs
aWVudDo6d2lsbFNlbmRDU1BWaW9sYXRpb25SZXBvcnQoKSkuIFRoZSBmcmFtZS1hbmNlc3RvcnMg
ZGlyZWN0aXZlCisgICAgICAgIGlzIGNoZWNrZWQgYmVmb3JlIGEgZG9jdW1lbnQgaXMgcGFyc2Vk
IGFuZCBleGVjdXRlcyBzY3JpcHQ7ID0+IHRoZXJlIHdpbGwgbmV2ZXIgYmUgYW55IHNjcmlwdCBz
dGF0ZQorICAgICAgICB0byBjb2xsZWN0OyA9PiBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHRyeSB0
byBjb2xsZWN0IGl0IGFzIHdlIGN1cnJlbnRseSBkby4KKworICAgICAgICAqIFNvdXJjZXMudHh0
OiBBZGQgZmlsZSBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuY3BwLiBTZWUgdGhlIHJlbWFy
a3MgZm9yIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5jcHAKKyAgICAgICAgYmVsb3cgb24g
d2h5IHdlIGhhdmUgdGhpcyBmaWxlLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogQWRkIGZpbGVzIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC57aCwgY3Bw
fS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOiBQYXNzIHRoZSBVUkwgb2YgdGhlIHByb3RlY3RlZCBk
b2N1bWVudC4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjphZGRDb25zb2xlTWVzc2FnZSk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkaXNwYXRjaFNlY3Vy
aXR5UG9saWN5VmlvbGF0aW9uRXZlbnQpOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDogRml4IHR5
cG8gaW4gY29tbWVudC4KKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKTogUGFzcyB0aGUgVVJMIG9mIHRoZSB3b3JrZXIgc2Ny
aXB0LgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eSk6IEFkZGVkIG92ZXJsb2FkIHRoYXQgdGFrZXMgYSBVUkwmJiBhbmQgYW4gb3B0aW9uYWwKKyAg
ICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Ki4KKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeTo6ZGVwcmVjYXRlZFVSTEZvclJlcG9ydGluZyBjb25zdCk6IEV4
dHJhY3RlZCBhbmQgc2ltcGxpZmllZCBzdHJpcFVSTEZvclVzZUluUmVwb3J0KCkKKyAgICAgICAg
aW50byB0aGlzIG1lbWJlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uIGNvbnN0KTogTW9kaWZpZWQgdG8gbWFrZSB1c2Ug
b2YgdGhlIGNsaWVudCwgaWYgd2UgaGF2ZQorICAgICAgICBvbmUgYW5kIHJlbW92ZWQgY29kZSBm
b3IgaGFuZGxpbmcgYSBDb250ZW50U2VjdXJpdHlQb2xpY3kgdGhhdCB3YXMgaW5zdGFudGlhdGVk
IHdpdGggYSBGcmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6
bG9nVG9Db25zb2xlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzdHJpcFVSTEZv
clVzZUluUmVwb3J0KTogRGVsZXRlZDsgaW5jb3Jwb3JhdGVkIGludG8gQ29udGVudFNlY3VyaXR5
UG9saWN5OjpkZXByZWNhdGVkVVJMRm9yUmVwb3J0aW5nKCkuCisgICAgICAgICogcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5Q2xpZW50LmNwcDogQWRkZWQuIFRoaXMgZmlsZSBleGlzdHMgc28gdGhhdCB3ZSBj
YW4gZGVmaW5lIHRoZSB2aXJ0dWFsCisgICAgICAgIGRlc3RydWN0b3Igb3V0LW9mLWxpbmUgYW5k
IGV4cG9ydCB0aGlzIGFic3RyYWN0IGNsYXNzIHNvIGFzIHRvIGF2b2lkIHRoZSBuZWVkIGZvciB0
aGUgdnRhYmxlIHRvIGJlCisgICAgICAgIGRlZmluZWQgaW4gdGhlIHRyYW5zbGF0aW9uIHVuaXQg
b2YgZWFjaCBkZXJpdmVkIGNsYXNzLgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlOjpvcGVyYXRvciBTZWN1cml0eU9yaWdpbkRhdGEgY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaDoKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZSk6IEluc3RhbnRpYXRlIHRoZSBDb250ZW50
U2VjdXJpdHlQb2xpY3kgb2JqZWN0IHdpdGggdGhlCisgICAgICAgIFVSTCBvZiB0aGUgd29ya2Vy
IHNjcmlwdC4KKworMjAxOC0wNS0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CisKICAgICAgICAgQ1NQIHJlZmVycmVyIGluY29ycmVjdCBmb3IgZG9jdW1lbnQgYmxvY2tlZCBk
dWUgdG8gdmlvbGF0aW9uIG9mIGl0cyBmcmFtZS1hbmNlc3RvcnMgZGlyZWN0aXZlCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUzODAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBkOTdiZWI4MTg2ZTk4NGRkODM0NGU1MDBiYWUyMDAzMWFhYTI4Njc4Li5iNjFlMWYzMmIz
ZTRlNjY0MjhhNzQyZDgyNzliY2ViZmM5M2RhZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBA
CiAyMDE4LTA1LTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAorICAgICAg
ICBBYnN0cmFjdCBsb2dpYyB0byBsb2cgY29uc29sZSBtZXNzYWdlcyBhbmQgc2VuZCBDU1Agdmlv
bGF0aW9uIHJlcG9ydHMgaW50byBhIGNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1MzkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDAz
NjA1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
b3Igbm93LCBidWlsZCBhIFVSTCBmcm9tIHRoZSBzb3VyY2Ugb3JpZ2luIGFzc29jaWF0ZWQgd2l0
aCB0aGUgTmV0d29ya1Jlc291cmNlTG9hZGVyCisgICAgICAgIGFuZCBwYXNzIHRoaXMgdG8gdGhl
IENvbnRlbnRTZWN1cml0eVBvbGljeSBjb25zdHJ1Y3Rvci4KKworICAgICAgICBBZGRpdGlvbmFs
bHksIG1ha2UgTmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3koKSBub24t
Y29uc3Qgc2luY2UgaXQgcmV0dXJucworICAgICAgICBhIG5vbi1jb25zdCBwb2ludGVyIHRvIGEg
Q29udGVudFNlY3VyaXR5UG9saWN5IG9iamVjdDsgPT4gY2FsbGVycyBjYW4gbXV0YXRlIHRoaXMg
b2JqZWN0CisgICAgICAgIHJpZ2h0IGZyb20gdW5kZXIgTmV0d29ya0xvYWRDaGVja2VyLiBNYWtp
bmcgdGhpcyBub24tY29uc3QgbWFrZXMgdGhpcyBjbGVhciB0byBhIHJlYWRlci4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3kgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5o
OgorCisyMDE4LTA1LTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKwogICAg
ICAgICBDU1Agc2hvdWxkIGJlIHBhc3NlZCB0aGUgcmVmZXJyZXIKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTM2NwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4
IGU4MDNhN2MxMDRkZDE0ZjNhMDBkMmQyYTk5ZTcyOWQ0NDc2N2UxNjQuLjk0ZTAxMGExZTNlNWJh
MzE0NzQ5ODJlZGJhNmJjZjdlZTg5Zjg2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNDMwLDYgKzE0
MzAsNyBAQCBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKIHBhZ2UvYW5pbWF0
aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAogCiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuY3BwCitwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuY3BwCiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuY3BwCiBwYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWMwYzdiNzM2ZGFmYjRhZDQxZDdhYjQ2MWVkMWRl
MDllMTc3ZjkzNC4uOWE3YzJlODBlM2EyZTcyZjgwYTIwM2M4OWJlYjE4NmUwODhjZjM1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNDA3NSw2ICs0MDc1LDcgQEAKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJQ0Ux
ODY2NDUxRjcyRTVCNDAwQTBDQUI2IC8qIE1hcmtlZFRleHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTg2NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBN
YXJrZWRUZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0UyODQ5ODcxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRTI4NDk4NjFDQTM2MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTmFtZXMuaCAqLzsgfTsKKwkJQ0U1RkEyNTUyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0U1RkEyNTMyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0
eVBvbGljeUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUNFNkRBREZBMUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFNkRBREY4MUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDRTc5OUY5ODFDNkE0NkJDMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0U3OTlGOTYxQzZBNDZCQzAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3QuaCAqLzsgfTsKIAkJQ0U3OTlGOUMxQzZBNEJDRDAwOTdCNTE4IC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNzk5RjlBMUM2QTRCQ0QwMDk3QjUxOCAvKiBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmggKi87IH07CkBAIC00MDk2LDYgKzQwOTcsNyBA
QAogCQlDRUVGQ0Q3QTE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VFRkNENzgxOURC
MzFGNzAwMzg3NkQ3IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRUVGQ0Q3QzE5REIzM0RDMDAzODc2RDcg
LyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcgLyogUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0VGNDE4Q0YxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJn
dW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RUY0MThDRDExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRUZENURCNDIwOUVCRUQ0
MDA3ODhCNjcgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRkQ1REIyMjA5RUJFRDQwMDc4OEI2
NyAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuY3BwICovOyB9OwogCQlEMDAwRUJBMzEx
QkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwMDBFQkExMTFCREFGRDQwMEM0Nzcy
NiAvKiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUQwMDBFRDI4MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJm
cmFtZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRDAwMEVEMjYxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRDAxQTI3QUUxMEM5QkZE
ODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwMUEyN0FDMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNw
bGl0U3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTEzNDIzLDYgKzEzNDI1LDcgQEAKIAkJQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8q
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmg7IHBh
dGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDsgcGF0
aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNUNCMUIzMTRFREFCNkYwMEJCMjc5NSAvKiBFdmVudFNl
bmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFNlbmRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTVGQTI1MzIwOUU0OEM1MDA1MUQ3MDAgLyog
Q29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1
cml0eVBvbGljeUNsaWVudC5oOyBwYXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTZEODkyOTRDN0FBQ0UwQUQ4OUIz
REQgLyogTWF0aE1MTWVuY2xvc2VFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hdGhNTE1lbmNsb3NlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRTZEQURGNzFDNTkxRTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHA7IHBhdGggPSBjc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0U2REFERjgxQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaDsgcGF0aCA9IGNzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEzNDYyLDYgKzEzNDY1LDcgQEAKIAkJQ0VGNDE4Q0MxMTc5Njc4QzAwOUQxMTJDIC8qIFZp
ZXdwb3J0QXJndW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFZpZXdwb3J0QXJndW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VG
NDE4Q0QxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdwb3J0QXJndW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNFRjU5QjI1MUNBMEUxMUQwMDVDM0UxMyAvKiBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcDsgcGF0aCA9IGNzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRUZENURCMjIwOUVCRUQ0MDA3ODhCNjcgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5jcHA7
IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDAwMEVCQTAxMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVy
U3RhdGVNYWNoaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZy
YW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDAwMEVCQTExMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMDBFRDI1MTFDMUI5Q0QwMEM0NzcyNiAv
KiBTdWJmcmFtZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdWJmcmFtZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDc1
NSw2ICsyNDc1OSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5N0M0NzFEOTEyRjkyNUJDMDA4
NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCAqLywKIAkJCQk5N0M0NzFEQTEyRjky
NUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmggKi8sCisJCQkJQ0VGRDVEQjIy
MDlFQkVENDAwNzg4QjY3IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5jcHAgKi8sCisJ
CQkJQ0U1RkEyNTMyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVu
dC5oICovLAogCQkJCUNFRjU5QjI1MUNBMEUxMUQwMDVDM0UxMyAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmUuY3BwICovLAogCQkJCUNFNzk5RkEyMUM2QTUwM0EwMDk3QjUxOCAvKiBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaCAqLywKIAkJCQlDRTc5OUY5OTFDNkE0QkNE
MDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgKi8sCkBA
IC0yNzEwOCw2ICsyNzExNCw3IEBACiAJCQkJQTg5OTQzMjgwQjQyMzM4ODAwRDdDODAyIC8qIEJp
dG1hcEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzZENkM3OTEyMkI4QTNEMDAxRkQxRjcg
LyogQmxvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RDZDN0MxMjJCOEEzRDAwMUZEMUY3IC8q
IEJsb2JCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRTVGQTI1NTIwOUU0OEM1MDA1MUQ3
MDAgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MTVENzUxNjFFNjhGN0M4MDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRURFRjFGNDEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYkRhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxRDMxQ0REMTkxOTYwMjAwMDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtMzEzMTUsNiArMzEzMjIsNyBAQAogCQkJCUJFMTZDNTkyMTdD
RkUxNzIwMDg1MkMwNCAvKiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA3RTlFMTMwMThGNjJCMzcwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVBVkYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NDE3OTExNjZFODU1RjAwOTQx
NkMyIC8qIEluYmFuZFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRUZENURCNDIw
OUVCRUQ0MDA3ODhCNjcgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTA3QjQ0MkQ2MTY2QzcwQjAwMDU1NkNBRCAvKiBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3QUE2QjZCMTY2RDJDMDcwMEQ0NTY3
MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTA3MzY3REUwMTcyQ0E2ODIwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5
QVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZjU5
NmEwNzZkZjE5NDU0ZmI2NzQ4ZTdhNGJmZDI4YmNmNTk5YzM3Mi4uMjQ5Y2ZmNDU5NWI5YWIzYmFj
Nzc0NDUxMGNmMDlkNzNkZmM4ZTBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01NDk5
LDcgKzU0OTksNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAg
ICAgLy8gVGhpcyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURv
Y3VtZW50KCkuCiAgICAgICAgIHNldENvb2tpZVVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0
eVN0cmluZygpKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3Jp
Z2luUG9saWN5OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKSk7Ci0gICAg
ICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1
cml0eVBvbGljeT4oKnRoaXMpKTsKKyAgICAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0
ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBQYXJzZWRVUkxTdHJp
bmcsIGVtcHR5U3RyaW5nKCkgfSwgKnRoaXMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNTUxOCw3ICs1NTE4LDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgp
CiAgICAgICAgIGlzU2VjdXJpdHlPcmlnaW5VbmlxdWUgPSBsb2FkZXIgJiYgbG9hZGVyLT5yZXNw
b25zZSgpLnRhaW50aW5nKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6Ok9wYXF1ZTsK
IAogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVh
dGUoaXNTZWN1cml0eU9yaWdpblVuaXF1ZSA/IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUo
KSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpKSk7Ci0gICAgc2V0Q29udGVudFNlY3Vy
aXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PigqdGhpcykp
OworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRT
ZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKIAogICAgIFN0cmluZyBvdmVy
cmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLm92
ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAgICAgaWYgKCFvdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeS5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCmluZGV4IGMxODRiYmRhZWZhZDA5MGUwN2ZlNjE4MzBkNWVlMGVhZWNlN2VhZjcuLjk1
NGJhNzc3MzQ2YTA0YmU2NmM0MGE5NGM2NzAxZWQwMzEyMjFmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIk1l
bW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRNZXRyaWNzLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgorI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJQb2xpY3lDaGVja2Vy
LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKQEAgLTcyLDYgKzczLDcgQEAKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9s
aWN5LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNzY3LDcgKzc2OSw3IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IENvbXBsZXRpCiAgICAgCiAgICAgYXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKIAotICAgIENv
bnRlbnRTZWN1cml0eVBvbGljeSBjb250ZW50U2VjdXJpdHlQb2xpY3koU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSh1cmwpLCBtX2ZyYW1lKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kgY29udGVu
dFNlY3VyaXR5UG9saWN5KFVSTCB7IHVybCB9LCB0aGlzKTsKICAgICBjb250ZW50U2VjdXJpdHlQ
b2xpY3kuZGlkUmVjZWl2ZUhlYWRlcnMoQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzIHsgcmVzcG9uc2UgfSwgbV9yZXF1ZXN0Lmh0dHBSZWZlcnJlcigpKTsKICAgICBpZiAoIWNv
bnRlbnRTZWN1cml0eVBvbGljeS5hbGxvd0ZyYW1lQW5jZXN0b3JzKCptX2ZyYW1lLCB1cmwpKSB7
CiAgICAgICAgIHN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQ
b2xpY3lEZW5pZWQoaWRlbnRpZmllciwgcmVzcG9uc2UpOwpAQCAtMjAwOSw0ICsyMDExLDE5IEBA
IFByZXZpZXdDb252ZXJ0ZXIqIERvY3VtZW50TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyKCkgY29u
c3QKIAogI2VuZGlmCiAKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2UgbWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsIG1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQorewor
ICAgIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPihtX2ZyYW1lLT5kb2N1bWVu
dCgpKS0+YWRkQ29uc29sZU1lc3NhZ2UobWVzc2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBtZXNz
YWdlLCByZXF1ZXN0SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNlbmRD
U1BWaW9sYXRpb25SZXBvcnQoVVJMJiYgcmVwb3J0VVJMLCBSZWY8Rm9ybURhdGE+JiYgcmVwb3J0
KQoreworICAgIFBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQoKm1fZnJhbWUsIFdURk1v
dmUocmVwb3J0VVJMKSwgV1RGTW92ZShyZXBvcnQpLCBWaW9sYXRpb25SZXBvcnRUeXBlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3kpOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpkaXNwYXRjaFNl
Y3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoUmVmPFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZl
bnQ+JiYgdmlvbGF0aW9uRXZlbnQpCit7CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1
ZURvY3VtZW50RXZlbnQoV1RGTW92ZSh2aW9sYXRpb25FdmVudCkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDE4
MDk0ZWM3MWE1MjM2OWIwNTJmZWZlMTk1ZjA4ZWRiZTM1NTYzOWYuLjAwZjZkY2EzNTVlM2QxOWM0
YWU4YTZhOGI2NjZmYzdjM2I1OWNmNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZUNs
aWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRXcml0ZXIuaCIK
ICNpbmNsdWRlICJGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJMaW5rSWNv
bi5oIgpAQCAtMTA3LDcgKzEwOCwxMSBAQCBlbnVtIGNsYXNzIFBvcFVwUG9saWN5IHsKICAgICBC
bG9jaywKIH07CiAKLWNsYXNzIERvY3VtZW50TG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RG9j
dW1lbnRMb2FkZXI+LCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLCBwcml2YXRlIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKK2NsYXNzIERvY3VtZW50TG9hZGVyCisgICAgOiBwdWJs
aWMgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj4KKyAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0
aW9uT2JzZXJ2ZXIKKyAgICAsIHB1YmxpYyBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKKyAg
ICAsIHByaXZhdGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBDb250ZW50RmlsdGVyOwogcHVibGljOgpAQCAt
NDA0LDYgKzQwOSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5RmluaXNoZWRMb2FkaW5n
QXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4pOwogI2VuZGlmCiAKKyAgICAvLyBDb250ZW50U2Vj
dXJpdHlQb2xpY3lDbGllbnQKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQg
bG9uZyByZXF1ZXN0SWRlbnRpZmllcikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KFVSTCYmLCBSZWY8Rm9ybURhdGE+JiYpIGZpbmFsOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzcGF0Y2hTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50
KFJlZjxTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50PiYmKSBmaW5hbDsKKwogICAgIFJlZjxD
YWNoZWRSZXNvdXJjZUxvYWRlcj4gbV9jYWNoZWRSZXNvdXJjZUxvYWRlcjsKIAogICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX21haW5SZXNvdXJjZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMzMwYjZlZmVlYWY0OWZh
MzFmMjZkN2NiYjgwZGRjYTg5NGM3YTIzOS4uYzZmNjdkZTEzNzgyYTczMjBjNTA2MzA1OTkzOTg5
YjBhYzIyNTRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTExMiw3ICsxMTIsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBGcmFtZUxvYWRlckNsaWVu
dCB7CiBwdWJsaWM6CiAgICAgLy8gQW4gaW5saW5lIGZ1bmN0aW9uIGNhbm5vdCBiZSB0aGUgZmly
c3Qgbm9uLWFic3RyYWN0IHZpcnR1YWwgZnVuY3Rpb24gZGVjbGFyZWQKICAgICAvLyBpbiB0aGUg
Y2xhc3MgYXMgaXQgcmVzdWx0cyBpbiB0aGUgdnRhYmxlIGJlaW5nIGdlbmVyYXRlZCBhcyBhIHdl
YWsgc3ltYm9sLgotICAgIC8vIFRoaXMgaHVydHMgcGVyZm9ybWFuY2UgKGluIE1hYyBPUyBYIGF0
IGxlYXN0LCB3aGVuIGxvYWRpZyBmcmFtZXdvcmtzKSwgc28gd2UKKyAgICAvLyBUaGlzIGh1cnRz
IHBlcmZvcm1hbmNlIChpbiBNYWMgT1MgWCBhdCBsZWFzdCwgd2hlbiBsb2FkaW5nIGZyYW1ld29y
a3MpLCBzbyB3ZQogICAgIC8vIGRvbid0IHdhbnQgdG8gZG8gaXQgaW4gV2ViS2l0LgogICAgIHZp
cnR1YWwgYm9vbCBoYXNIVE1MVmlldygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggZDZmNWRjOTNhZWNjNjViMzI5
M2Q3NTgzMTUwODM5MDU5ZTIxMTMzMi4uZTFkNjBlYjkwZTdiNzM0OTdjMWFhZGMxYjM0ZWQ3YzM1
YzQ2YWU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVuCiAg
ICAgQVNTRVJUKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAKICAgICBhdXRvIHNlY3VyaXR5T3Jp
Z2luQ29weSA9IHNlY3VyaXR5T3JpZ2luLT5pc29sYXRlZENvcHkoKTsKLSAgICBhdXRvIGNvbnRl
bnRTZWN1cml0eVBvbGljeUNvcHkgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBv
bGljeT4oc2VjdXJpdHlPcmlnaW5Db3B5KTsKKyAgICBhdXRvIGNvbnRlbnRTZWN1cml0eVBvbGlj
eUNvcHkgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oZ2xvYmFsU2Nv
cGUudXJsKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkt
PmNvcHlTdGF0ZUZyb20oY29udGVudFNlY3VyaXR5UG9saWN5KTsKICAgICBjb250ZW50U2VjdXJp
dHlQb2xpY3lDb3B5LT5jb3B5VXBncmFkZUluc2VjdXJlUmVxdWVzdFN0YXRlRnJvbSgqY29udGVu
dFNlY3VyaXR5UG9saWN5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggZWZiNWI2Mzg2ODg3NWQ0MDFkOTczYTA0N2M5MWE4
MDZkZmRmMjQ3Zi4uYzc4YzVmYjk4ZGJjYWRkMjY0NjIwOWJkN2MxZTlmY2RkYmU4NGJmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUsIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnRl
bnRTZWN1cml0eVBvbGljeS5oIgogCisjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5Q2xp
ZW50LmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmgiCiAjaW5j
bHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIgogI2luY2x1ZGUgIkNv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgiCkBAIC04OCwxOSArODksMTkgQEAg
c3RhdGljIFN0cmluZyBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihjb25zdCBjaGFyKiBlZmZl
Y3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9
CiAKLUNvbnRlbnRTZWN1cml0eVBvbGljeTo6Q29udGVudFNlY3VyaXR5UG9saWN5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgOiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgLCBtX3NhbmRib3hG
bGFncyhTYW5kYm94Tm9uZSkKK0NvbnRlbnRTZWN1cml0eVBvbGljeTo6Q29udGVudFNlY3VyaXR5
UG9saWN5KFVSTCYmIHByb3RlY3RlZFVSTCwgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50KiBj
bGllbnQpCisgICAgOiBtX2NsaWVudCB7IGNsaWVudCB9CisgICAgLCBtX3Byb3RlY3RlZFVSTCB7
IFdURk1vdmUocHJvdGVjdGVkVVJMKSB9CiB7Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgdXBkYXRlU291cmNlU2VsZigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigpKTsKKyAgICB1cGRhdGVTb3VyY2VTZWxmKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUobV9wcm90ZWN0ZWRVUkwpLmdldCgpKTsKIH0KIAotQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU2VjdXJpdHlPcmln
aW4mIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBGcmFtZSogZnJhbWUpCi0gICAgOiBtX2ZyYW1lKGZy
YW1lKQotICAgICwgbV9zYW5kYm94RmxhZ3MoU2FuZGJveE5vbmUpCitDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OkNvbnRlbnRTZWN1cml0eVBvbGljeShVUkwmJiBwcm90ZWN0ZWRVUkwsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgOiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgLCBtX3Byb3RlY3Rl
ZFVSTCB7IFdURk1vdmUocHJvdGVjdGVkVVJMKSB9CiB7Ci0gICAgdXBkYXRlU291cmNlU2VsZihz
ZWN1cml0eU9yaWdpbik7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2VjdXJp
dHlPcmlnaW4oKSk7CisgICAgdXBkYXRlU291cmNlU2VsZigqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5zZWN1cml0eU9yaWdpbigpKTsKIH0KIAogQ29udGVudFNlY3VyaXR5UG9saWN5Ojp+Q29udGVu
dFNlY3VyaXR5UG9saWN5KCkgPSBkZWZhdWx0OwpAQCAtNjAyLDEzICs2MDMsMTMgQEAgYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93QmFzZVVSSShjb25zdCBVUkwmIHVybCwgYm9vbCBv
dmVycmlkZUNvbnRlbnRTZWMKICAgICByZXR1cm4gYWxsUG9saWNpZXNBbGxvdyhXVEZNb3ZlKGhh
bmRsZVZpb2xhdGVkRGlyZWN0aXZlKSwgJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yQmFzZVVSSSwgdXJsKTsKIH0KIAotc3RhdGljIFN0cmlu
ZyBzdHJpcFVSTEZvclVzZUluUmVwb3J0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1
cmwpCitTdHJpbmcgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkZXByZWNhdGVkVVJMRm9yUmVwb3J0
aW5nKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICghdXJsLmlzVmFsaWQoKSkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmICghdXJs
LmlzSGllcmFyY2hpY2FsKCkgfHwgdXJsLnByb3RvY29sSXMoImZpbGUiKSkKICAgICAgICAgcmV0
dXJuIHVybC5wcm90b2NvbCgpLnRvU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRvY3VtZW50LnNlY3Vy
aXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpID8gdXJsLnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJl
cigpIDogU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpLmdldCgpLnRvU3RyaW5nKCk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFNlY3VyaXR5T3JpZ2luRGF0YT4oKm1fc2VsZlNvdXJjZSkuc2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwpID8gdXJsLnN0cmlwcGVkRm9yVXNlQXNSZWZl
cnJlcigpIDogU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpLT50b1N0cmluZygpOwogfQogCiB2
b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYg
dmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYg
ZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IFVSTCYgYmxvY2tlZFVSTCwgY29uc3Qg
U3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBjb25zdApAQCAt
NjM2LDQ4ICs2MzcsNDQgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xh
dGlvbihjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWMKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgc2VuZGluZyByZXBvcnRzIGZyb20gd29ya2VyLgot
ICAgIGlmICghaXM8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgIW1fZnJh
bWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVCghbV9mcmFtZSB8fCBlZmZlY3RpdmVW
aW9sYXRlZERpcmVjdGl2ZSA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6
ZnJhbWVBbmNlc3RvcnMpOwotCi0gICAgYXV0byYgZG9jdW1lbnQgPSBpczxEb2N1bWVudD4obV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KSA/IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KSA6ICptX2ZyYW1lLT5kb2N1bWVudCgpOwotICAgIGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKTsKLSAgICBBU1NFUlQoIW1fZnJhbWUgfHwgbV9mcmFtZSA9PSBmcmFt
ZSk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIGRvY3Vt
ZW50VVJJOwotICAgIFN0cmluZyBibG9ja2VkVVJJOwotICAgIGlmIChpczxEb2N1bWVudD4obV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KSkgewotICAgICAgICBkb2N1bWVudFVSSSA9IGRvY3VtZW50
LnVybCgpLnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpOwotICAgICAgICBibG9ja2VkVVJJID0g
c3RyaXBVUkxGb3JVc2VJblJlcG9ydChkb2N1bWVudCwgYmxvY2tlZFVSTCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgLy8gVGhlIFVSTCBvZiB8ZG9jdW1lbnR8IG1heSBub3QgaGF2ZSBiZWVuIGlu
aXRpYWxpemVkIChzYXksIHdoZW4gcmVwb3J0aW5nIGEgZnJhbWUtYW5jZXN0b3JzIHZpb2xhdGlv
bikuCi0gICAgICAgIC8vIFNvLCB3ZSB1c2UgdGhlIFVSTCBvZiB0aGUgYmxvY2tlZCBkb2N1bWVu
dCBmb3IgdGhlIHByb3RlY3RlZCBkb2N1bWVudCBVUkwuCi0gICAgICAgIGRvY3VtZW50VVJJID0g
YmxvY2tlZFVSTDsKLSAgICAgICAgYmxvY2tlZFVSSSA9IGJsb2NrZWRVUkw7CisgICAgQ1NQSW5m
byBpbmZvOworICAgIGluZm8uZG9jdW1lbnRVUkkgPSBibG9ja2VkVVJMOworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPndpbGxTZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KGluZm8p
OworICAgIGVsc2UgeworICAgICAgICBpZiAoIWlzPERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8mIGRvY3VtZW50
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAg
ICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CisgICAgICAgIGlmICghZnJhbWUpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaW5mby5kb2N1bWVudFVSSSA9IGRvY3VtZW50
LnVybCgpLnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpOworCisgICAgICAgIGF1dG8gc3RhY2sg
PSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3Rh
dGUoKSwgMik7CisgICAgICAgIGF1dG8qIGNhbGxGcmFtZSA9IHN0YWNrLT5maXJzdE5vbk5hdGl2
ZUNhbGxGcmFtZSgpOworICAgICAgICBpZiAoY2FsbEZyYW1lICYmIGNhbGxGcmFtZS0+bGluZU51
bWJlcigpKSB7CisgICAgICAgICAgICBpbmZvLnNvdXJjZUZpbGUgPSBkZXByZWNhdGVkVVJMRm9y
UmVwb3J0aW5nKFVSTCB7IFVSTCB7IH0sIGNhbGxGcmFtZS0+c291cmNlVVJMKCkgfSk7CisgICAg
ICAgICAgICBpbmZvLmxpbmVOdW1iZXIgPSBjYWxsRnJhbWUtPmxpbmVOdW1iZXIoKTsKKyAgICAg
ICAgICAgIGluZm8uY29sdW1uTnVtYmVyID0gY2FsbEZyYW1lLT5jb2x1bW5OdW1iZXIoKTsKKyAg
ICAgICAgfQogICAgIH0KLSAgICBTdHJpbmcgdmlvbGF0ZWREaXJlY3RpdmVUZXh0ID0gdmlvbGF0
ZWREaXJlY3RpdmU7Ci0gICAgU3RyaW5nIG9yaWdpbmFsUG9saWN5ID0gdmlvbGF0ZWREaXJlY3Rp
dmVMaXN0LmhlYWRlcigpOworCisgICAgU3RyaW5nIGJsb2NrZWRVUkkgPSBkZXByZWNhdGVkVVJM
Rm9yUmVwb3J0aW5nKGJsb2NrZWRVUkwpOwogICAgIC8vIEZJWE1FOiBJcyBpdCBwb2xpY3kgdG8g
bm90IHVzZSB0aGUgc3RhdHVzIGNvZGUgZm9yIEhUVFBTLCBvciBpcyB0aGF0IGEgYnVnPwotICAg
IHVuc2lnbmVkIHNob3J0IHN0YXR1c0NvZGUgPSBtX3NlbGZTb3VyY2VQcm90b2NvbCA9PSAiaHR0
cCIgPyBtX2h0dHBTdGF0dXNDb2RlIDogMDsKLQotICAgIFN0cmluZyBzb3VyY2VGaWxlOwotICAg
IGludCBsaW5lTnVtYmVyID0gMDsKLSAgICBpbnQgY29sdW1uTnVtYmVyID0gMDsKLSAgICBhdXRv
IHN0YWNrID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3Vy
cmVudFN0YXRlKCksIDIpOwotICAgIGF1dG8qIGNhbGxGcmFtZSA9IHN0YWNrLT5maXJzdE5vbk5h
dGl2ZUNhbGxGcmFtZSgpOwotICAgIGlmIChjYWxsRnJhbWUgJiYgY2FsbEZyYW1lLT5saW5lTnVt
YmVyKCkpIHsKLSAgICAgICAgc291cmNlRmlsZSA9IHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoZG9j
dW1lbnQsIFVSTChVUkwoKSwgY2FsbEZyYW1lLT5zb3VyY2VVUkwoKSkpOwotICAgICAgICBsaW5l
TnVtYmVyID0gY2FsbEZyYW1lLT5saW5lTnVtYmVyKCk7Ci0gICAgICAgIGNvbHVtbk51bWJlciA9
IGNhbGxGcmFtZS0+Y29sdW1uTnVtYmVyKCk7Ci0gICAgfQorICAgIHVuc2lnbmVkIHNob3J0IGh0
dHBTdGF0dXNDb2RlID0gbV9zZWxmU291cmNlUHJvdG9jb2wgPT0gImh0dHAiID8gbV9odHRwU3Rh
dHVzQ29kZSA6IDA7CiAKICAgICAvLyAxLiBEaXNwYXRjaCB2aW9sYXRpb24gZXZlbnQuCiAgICAg
Ym9vbCBjYW5CdWJibGUgPSBmYWxzZTsKICAgICBib29sIGNhbmNlbGFibGUgPSBmYWxzZTsKLSAg
ICBkb2N1bWVudC5lbnF1ZXVlRG9jdW1lbnRFdmVudChTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlY3VyaXR5cG9saWN5dmlvbGF0aW9uRXZlbnQsIGNh
bkJ1YmJsZSwgY2FuY2VsYWJsZSwgZG9jdW1lbnRVUkksIG1fcmVmZXJyZXIsIGJsb2NrZWRVUkks
IHZpb2xhdGVkRGlyZWN0aXZlVGV4dCwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUsIG9yaWdp
bmFsUG9saWN5LCBzb3VyY2VGaWxlLCBzdGF0dXNDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpKTsKKyAgICBhdXRvIHZpb2xhdGlvbkV2ZW50ID0gU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25F
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zZWN1cml0eXBvbGljeXZpb2xhdGlvbkV2ZW50LCBj
YW5CdWJibGUsCisgICAgICAgIGNhbmNlbGFibGUsIGluZm8uZG9jdW1lbnRVUkksIG1fcmVmZXJy
ZXIsIGJsb2NrZWRVUkksIHZpb2xhdGVkRGlyZWN0aXZlLCBlZmZlY3RpdmVWaW9sYXRlZERpcmVj
dGl2ZSwKKyAgICAgICAgdmlvbGF0ZWREaXJlY3RpdmVMaXN0LmhlYWRlcigpLCBpbmZvLnNvdXJj
ZUZpbGUsIGh0dHBTdGF0dXNDb2RlLCBpbmZvLmxpbmVOdW1iZXIsIGluZm8uY29sdW1uTnVtYmVy
KTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaXNwYXRjaFNlY3VyaXR5
UG9saWN5VmlvbGF0aW9uRXZlbnQoV1RGTW92ZSh2aW9sYXRpb25FdmVudCkpOworICAgIGVsc2UK
KyAgICAgICAgZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLmVu
cXVldWVEb2N1bWVudEV2ZW50KFdURk1vdmUodmlvbGF0aW9uRXZlbnQpKTsKIAogICAgIC8vIDIu
IFNlbmQgdmlvbGF0aW9uIHJlcG9ydCAoaWYgYXBwbGljYWJsZSkuCiAgICAgYXV0byYgcmVwb3J0
VVJJcyA9IHZpb2xhdGVkRGlyZWN0aXZlTGlzdC5yZXBvcnRVUklzKCk7CkBAIC02OTUsMjUgKzY5
MiwzMiBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0
IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWREaXJlYwogICAgIC8vIGhhcm1sZXNzIGluZm9ybWF0
aW9uLgogCiAgICAgYXV0byBjc3BSZXBvcnQgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAg
IGNzcFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZG9jdW1lbnQtdXJpIiksIGRvY3Vt
ZW50VVJJKTsKKyAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImRvY3VtZW50
LXVyaSIpLCBpbmZvLmRvY3VtZW50VVJJKTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJ
SUxpdGVyYWwoInJlZmVycmVyIiksIG1fcmVmZXJyZXIpOwotICAgIGNzcFJlcG9ydC0+c2V0U3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgidmlvbGF0ZWQtZGlyZWN0aXZlIiksIHZpb2xhdGVkRGlyZWN0aXZl
VGV4dCk7CisgICAgY3NwUmVwb3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJ2aW9sYXRlZC1k
aXJlY3RpdmUiKSwgdmlvbGF0ZWREaXJlY3RpdmUpOwogICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgiZWZmZWN0aXZlLWRpcmVjdGl2ZSIpLCBlZmZlY3RpdmVWaW9sYXRlZERp
cmVjdGl2ZSk7Ci0gICAgY3NwUmVwb3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJvcmlnaW5h
bC1wb2xpY3kiKSwgb3JpZ2luYWxQb2xpY3kpOworICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5nKEFT
Q0lJTGl0ZXJhbCgib3JpZ2luYWwtcG9saWN5IiksIHZpb2xhdGVkRGlyZWN0aXZlTGlzdC5oZWFk
ZXIoKSk7CiAgICAgY3NwUmVwb3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJibG9ja2VkLXVy
aSIpLCBibG9ja2VkVVJJKTsKLSAgICBjc3BSZXBvcnQtPnNldEludGVnZXIoQVNDSUlMaXRlcmFs
KCJzdGF0dXMtY29kZSIpLCBzdGF0dXNDb2RlKTsKLSAgICBpZiAoIXNvdXJjZUZpbGUuaXNOdWxs
KCkpIHsKLSAgICAgICAgY3NwUmVwb3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzb3VyY2Ut
ZmlsZSIpLCBzb3VyY2VGaWxlKTsKLSAgICAgICAgY3NwUmVwb3J0LT5zZXRJbnRlZ2VyKEFTQ0lJ
TGl0ZXJhbCgibGluZS1udW1iZXIiKSwgbGluZU51bWJlcik7Ci0gICAgICAgIGNzcFJlcG9ydC0+
c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImNvbHVtbi1udW1iZXIiKSwgY29sdW1uTnVtYmVyKTsK
KyAgICBjc3BSZXBvcnQtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJzdGF0dXMtY29kZSIpLCBo
dHRwU3RhdHVzQ29kZSk7CisgICAgaWYgKCFpbmZvLnNvdXJjZUZpbGUuaXNOdWxsKCkpIHsKKyAg
ICAgICAgY3NwUmVwb3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzb3VyY2UtZmlsZSIpLCBp
bmZvLnNvdXJjZUZpbGUpOworICAgICAgICBjc3BSZXBvcnQtPnNldEludGVnZXIoQVNDSUlMaXRl
cmFsKCJsaW5lLW51bWJlciIpLCBpbmZvLmxpbmVOdW1iZXIpOworICAgICAgICBjc3BSZXBvcnQt
PnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJjb2x1bW4tbnVtYmVyIiksIGluZm8uY29sdW1uTnVt
YmVyKTsKICAgICB9CiAKICAgICBhdXRvIHJlcG9ydE9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgcmVwb3J0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJjc3AtcmVw
b3J0IiksIFdURk1vdmUoY3NwUmVwb3J0KSk7CiAKICAgICBhdXRvIHJlcG9ydCA9IEZvcm1EYXRh
OjpjcmVhdGUocmVwb3J0T2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCkpOwotICAgIGZvciAo
Y29uc3QgYXV0byYgdXJsIDogcmVwb3J0VVJJcykKLSAgICAgICAgUGluZ0xvYWRlcjo6c2VuZFZp
b2xhdGlvblJlcG9ydCgqZnJhbWUsIGlzPERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpID8gZG9jdW1lbnQuY29tcGxldGVVUkwodXJsKSA6IGRvY3VtZW50LmNvbXBsZXRlVVJMKHVy
bCwgYmxvY2tlZFVSTCksIHJlcG9ydC5jb3B5UmVmKCksIFZpb2xhdGlvblJlcG9ydFR5cGU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeSk7CisKKyAgICBpZiAobV9jbGllbnQpIHsKKyAgICAgICAgZm9y
IChjb25zdCBhdXRvJiB1cmwgOiByZXBvcnRVUklzKQorICAgICAgICAgICAgbV9jbGllbnQtPnNl
bmRDU1BWaW9sYXRpb25SZXBvcnQoVVJMIHsgbV9wcm90ZWN0ZWRVUkwsIHVybCB9LCByZXBvcnQu
Y29weVJlZigpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25j
YXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgZm9yIChj
b25zdCBhdXRvJiB1cmwgOiByZXBvcnRVUklzKQorICAgICAgICAgICAgUGluZ0xvYWRlcjo6c2Vu
ZFZpb2xhdGlvblJlcG9ydCgqZG9jdW1lbnQuZnJhbWUoKSwgVVJMIHsgbV9wcm90ZWN0ZWRVUkws
IHVybCB9LCByZXBvcnQuY29weVJlZigpLCBWaW9sYXRpb25SZXBvcnRUeXBlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3kpOworICAgIH0KIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJl
cG9ydFVuc3VwcG9ydGVkRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKQEAgLTgw
NSwxMCArODA5LDEwIEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpsb2dUb0NvbnNvbGUo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTQzMTc+IENvbnRlbnRTZWN1
cml0eVBvbGljeTo6bG9nVG9Db25zb2xlIHNob3VsZCBpbmNsdWRlIGEgY29sdW1uIG51bWJlcgot
ICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgaWYgKG1fY2xpZW50KQorICAg
ICAgICBtX2NsaWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHks
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UsIDApOworICAgIGVsc2UgaWYgKG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJv
ciwgbWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUub25lQmFzZWRJbnQoKSwgMCwgc3Rh
dGUpOwotICAgIGVsc2UgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+KG1fZnJhbWUtPmRvY3VtZW50
KCkpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxl
dmVsOjpFcnJvciwgbWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUub25lQmFzZWRJbnQo
KSwgMCwgc3RhdGUpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0Qmxv
Y2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4
dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgKaW5kZXggN2QxNzk4MDA2ZWVhZjAyZjEwZTk1NmY5Njc0MzAxMjllMzYxMjk4OC4uNTQz
ZWMwOTNjNDcwNTJjY2IxOGE3MTQ2OWI2Zjg2YzM4ZDM0MWIxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAgLTI4LDExICsyOCwxMSBA
QAogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIgogI2luY2x1ZGUgIkNv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIgorI2luY2x1ZGUgIlNlY3VyaXR5
Q29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW5IYXNoLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKQEAgLTU3LDE1ICs1Nywx
NSBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiBjbGFzcyBVUkw7CitzdHJ1Y3QgQ29udGVudFNlY3VyaXR5
UG9saWN5Q2xpZW50OwogCiB0eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4+IENTUERpcmVjdGl2ZUxpc3RWZWN0b3I7Ci10eXBl
ZGVmIGludCBTYW5kYm94RmxhZ3M7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeSB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQ29udGVu
dFNlY3VyaXR5UG9saWN5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU2VjdXJpdHlPcmlnaW4m
LCBjb25zdCBGcmFtZSogPSBudWxscHRyKTsKKyAgICBleHBsaWNpdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3koVVJMJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBDb250ZW50U2VjdXJpdHlQb2xpY3koVVJMJiYsIENvbnRlbnRTZWN1cml0eVBv
bGljeUNsaWVudCogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+Q29udGVudFNlY3Vy
aXR5UG9saWN5KCk7CiAKICAgICB2b2lkIGNvcHlTdGF0ZUZyb20oY29uc3QgQ29udGVudFNlY3Vy
aXR5UG9saWN5Kik7CkBAIC0xNzMsNiArMTczLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0
ZVNvdXJjZVNlbGYoY29uc3QgU2VjdXJpdHlPcmlnaW4mKTsKICAgICB2b2lkIGFwcGx5UG9saWN5
VG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAKKyAgICAvLyBJbXBsZW1lbnRzIHRoZSBkZXBy
ZWNhdGVkIENTUDIgInN0cmlwIHVyaSBmb3IgcmVwb3J0aW5nIiBhbGdvcml0aG0gZnJvbSA8aHR0
cHM6Ly93d3cudzMub3JnL1RSL0NTUDIvI3Zpb2xhdGlvbi1yZXBvcnRzPi4KKyAgICBTdHJpbmcg
ZGVwcmVjYXRlZFVSTEZvclJlcG9ydGluZyhjb25zdCBVUkwmKSBjb25zdDsKKwogICAgIGNvbnN0
IFRleHRFbmNvZGluZyYgZG9jdW1lbnRFbmNvZGluZygpIGNvbnN0OwogCiAgICAgZW51bSBjbGFz
cyBEaXNwb3NpdGlvbiB7CkBAIC0yMDMsMTYgKzIwNiwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUs
IGNvbnN0IFN0cmluZyYgdmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3QmIHZpb2xhdGVkRGlyZWN0aXZlTGlzdCwgY29uc3QgVVJMJiBibG9j
a2VkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzb3VyY2VQb3NpdGlvbiwgSlNDOjpFeGVjU3RhdGUq
KSBjb25zdDsKICAgICB2b2lkIHJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rv
cihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpIGNvbnN0OwogCi0gICAgLy8gV2UgY2FuIG5l
dmVyIGhhdmUgYm90aCBhIHNjcmlwdCBleGVjdXRpb24gY29udGV4dCBhbmQgYSBmcmFtZS4KKyAg
ICAvLyBXZSBjYW4gbmV2ZXIgaGF2ZSBib3RoIGEgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IGFu
ZCBhIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC4KICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgeyBudWxscHRyIH07Ci0gICAgY29uc3QgRnJh
bWUqIG1fZnJhbWUgeyBudWxscHRyIH07CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50
KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKKyAgICBVUkwgbV9wcm90ZWN0ZWRVUkw7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZT4gbV9zZWxmU291cmNlOwog
ICAgIFN0cmluZyBtX3NlbGZTb3VyY2VQcm90b2NvbDsKICAgICBDU1BEaXJlY3RpdmVMaXN0VmVj
dG9yIG1fcG9saWNpZXM7CiAgICAgU3RyaW5nIG1fbGFzdFBvbGljeUV2YWxEaXNhYmxlZEVycm9y
TWVzc2FnZTsKICAgICBTdHJpbmcgbV9sYXN0UG9saWN5V2ViQXNzZW1ibHlEaXNhYmxlZEVycm9y
TWVzc2FnZTsKICAgICBTdHJpbmcgbV9yZWZlcnJlcjsKLSAgICBTYW5kYm94RmxhZ3MgbV9zYW5k
Ym94RmxhZ3M7CisgICAgU2FuZGJveEZsYWdzIG1fc2FuZGJveEZsYWdzIHsgU2FuZGJveE5vbmUg
fTsKICAgICBib29sIG1fb3ZlcnJpZGVJbmxpbmVTdHlsZUFsbG93ZWQgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9pc1JlcG9ydGluZ0VuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3VwZ3JhZGVJ
bnNlY3VyZVJlcXVlc3RzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2OGQ5
YjFhNGRhMDE1MzEzMDVjODcwMTRmYmFlZTY1YmJiZDc1MjAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuY3BwCkBA
IC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Ojp+Q29udGVudFNlY3VyaXR5UG9saWN5Q2xp
ZW50KCkgPSBkZWZhdWx0OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDk3MmZkYzE0OTlkNmFmYzZmZDRjNWMwOGU2MjQ2YmUwNmQ5NDg2MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eUNsaWVudC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZvcm1EYXRh
OworY2xhc3MgU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDsKK2NsYXNzIFVSTDsKKworc3Ry
dWN0IFdFQkNPUkVfRVhQT1JUIENTUEluZm8geworICAgIFN0cmluZyBkb2N1bWVudFVSSTsKKyAg
ICBTdHJpbmcgc291cmNlRmlsZTsKKyAgICBpbnQgbGluZU51bWJlciB7IDAgfTsKKyAgICBpbnQg
Y29sdW1uTnVtYmVyIHsgMCB9OworfTsKKworc3RydWN0IFdFQkNPUkVfRVhQT1JUIENvbnRlbnRT
ZWN1cml0eVBvbGljeUNsaWVudCB7CisgICAgLy8gQW4gaW5saW5lIGZ1bmN0aW9uIGNhbm5vdCBi
ZSB0aGUgZmlyc3Qgbm9uLWFic3RyYWN0IHZpcnR1YWwgZnVuY3Rpb24gZGVjbGFyZWQKKyAgICAv
LyBpbiB0aGUgY2xhc3MgYXMgaXQgcmVzdWx0cyBpbiB0aGUgdnRhYmxlIGJlaW5nIGdlbmVyYXRl
ZCBhcyBhIHdlYWsgc3ltYm9sLgorICAgIC8vIFRoaXMgaHVydHMgcGVyZm9ybWFuY2UgKGluIE1h
YyBPUyBYIGF0IGxlYXN0LCB3aGVuIGxvYWRpbmcgZnJhbWV3b3JrcyksIHNvIHdlCisgICAgLy8g
ZG9uJ3Qgd2FudCB0byBkbyBpdCBpbiBXZWJLaXQuCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB+Q29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCkgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIHdpbGxTZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KENTUEluZm8mKSB7IH07CisgICAgdmly
dHVhbCB2b2lkIHNlbmRDU1BWaW9sYXRpb25SZXBvcnQoVVJMJiYsIFJlZjxGb3JtRGF0YT4mJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZl
bnQoUmVmPFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQ+JiYpID0gMDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCmluZGV4IDdhNDMzM2Q1ZDZhZjg4OTYyODhi
MjA3OTU2NTA0YjZjM2Y3NzliY2QuLmJjYWM2NjQ0ODhiNjEyNTBiNTgwZjY3Nzk3NDJkN2ZmNzBm
MTI3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZS5oIgogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAiVVJMLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwOCw0ICsxMDksOSBAQCBib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZTo6aXNTY2hlbWVPbmx5KCkgY29uc3QKICAgICByZXR1cm4gbV9o
b3N0LmlzRW1wdHkoKTsKIH0KIAorQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpvcGVyYXRv
ciBTZWN1cml0eU9yaWdpbkRhdGEoKSBjb25zdAoreworICAgIHJldHVybiB7IG1fc2NoZW1lLCBt
X2hvc3QsIG1fcG9ydCB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCmlu
ZGV4IDI4YTFhNjgzMGZlOTk5YmExMDJiMmQ1MTViYzQxMGE2MDM0MWI1NDAuLjU2Y2YwZGM5ZTlm
NzRiZWQxYWQzYTM4Nzc2MGZlN2FjNjY5NDI5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCkBAIC0zMiw2ICszMiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5Owog
Y2xhc3MgVVJMOworc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAogY2xhc3MgQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQw
LDYgKzQxLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBtYXRjaGVzKGNvbnN0IFVSTCYsIGJvb2wg
ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgPSBmYWxzZSkgY29uc3Q7CiAKKyAgICBvcGVyYXRv
ciBTZWN1cml0eU9yaWdpbkRhdGEoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBib29sIHNjaGVt
ZU1hdGNoZXMoY29uc3QgVVJMJikgY29uc3Q7CiAgICAgYm9vbCBob3N0TWF0Y2hlcyhjb25zdCBV
UkwmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5j
cHAKaW5kZXggZWIyYTdiNmUyMWRmMmQ4OWQyNDU1MTYwYjExOGU2OTA1ZDYyOTM5Ny4uZjMyZWYy
ZTJkNzI1NGI5ZTdkMzI1NWFiZmYzMTBlNDExNmUyMTMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgV29ya2VyR2xv
YmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBSZWY8U2VjdXJpdHlP
cmlnaW4+JiYgb3JpZ2kKICAgICAgICAgb3JpZ2luLT5ncmFudFN0b3JhZ2VBY2Nlc3NGcm9tRmls
ZVVSTHNRdWlyaygpOwogCiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmln
aW5Qb2xpY3k6OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbikpKTsKLSAgICBzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KCp0aGlzKSk7
CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNl
Y3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOwogfQogCiBXb3JrZXJHbG9iYWxT
Y29wZTo6fldvcmtlckdsb2JhbFNjb3BlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAppbmRleCAwMTkwY2QyODI2ZGI1NzQzMjdl
MzYyZjFlNTQzNThhMDJmNDgyYTc5Li5mNzUyMDRhNzUwNzYwN2IzMzE4NTljNjQ5ZGIwNDA3OWI5
YTI0NjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENoZWNrZXIuY3BwCkBAIC0zMTEsMTAgKzMxMSwxMSBAQCBib29sIE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6ZG9lc05vdE5lZWRDT1JTQ2hlY2soY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgcmV0
dXJuIG1faXNTYW1lT3JpZ2luUmVxdWVzdDsKIH0KIAotQ29udGVudFNlY3VyaXR5UG9saWN5KiBO
ZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0CitDb250ZW50
U2VjdXJpdHlQb2xpY3kqIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29udGVudFNlY3VyaXR5UG9saWN5
KCkKIHsKICAgICBpZiAoIW1fY29udGVudFNlY3VyaXR5UG9saWN5ICYmIG1fY3NwUmVzcG9uc2VI
ZWFkZXJzKSB7Ci0gICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KCptX29yaWdpbik7CisgICAgICAgIC8vIEZJWE1F
OiBQYXNzIHRoZSBVUkwgb2YgdGhlIHByb3RlY3RlZCByZXNvdXJjZSBpbnN0ZWFkIG9mIGl0cyBv
cmlnaW4uCisgICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IFVSTCB7IH0sIG1fb3JpZ2luLT50b1N0cmlu
ZygpIH0sIHRoaXMpOwogICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS0+ZGlkUmVjZWl2
ZUhlYWRlcnMoKm1fY3NwUmVzcG9uc2VIZWFkZXJzLCBTdHJpbmcgeyBtX3JlZmVycmVyIH0sIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0UGFyc2luZ0Vycm9yczo6Tm8pOwogICAgIH0KICAg
ICByZXR1cm4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3kuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCA5MTBjZjk4YzJk
NTg4Nzc5N2IwZTEzMmMyYjg5YWM1MjMxN2I5MWJiLi5kNzU1ZjI4Yzk1ZjBhMjIxYjUwMWQ4ZTY4
OTEyYjM0NTdkOWUzMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDaGVja2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdv
cmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeUNs
aWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgpAQCAtNDAsNyArNDEsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyOwogCi1jbGFzcyBOZXR3b3JrTG9hZENoZWNrZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxOZXR3b3JrTG9hZENoZWNrZXI+IHsKK2NsYXNzIE5ldHdvcmtMb2FkQ2hl
Y2tlcgorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya0xvYWRDaGVja2VyPgorICAgICwg
cHVibGljIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxOZXR3b3JrTG9hZENoZWNrZXI+IGNyZWF0ZShXZWJDb3JlOjpGZXRjaE9w
dGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OkhUVFBI
ZWFkZXJNYXAmJiBvcmlnaW5hbEhlYWRlcnMsIFdlYkNvcmU6OlVSTCYmIHVybCwgUmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwgV2ViQ29yZTo6UHJlZmxpZ2h0
UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXIpCiAgICAgewpAQCAtNzEs
NyArNzQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihXZWJD
b3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJN
YXAmJiwgV2ViQ29yZTo6VVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwg
V2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlcik7CiAKLSAgICBXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0
OworICAgIFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9s
aWN5KCk7CiAgICAgYm9vbCBpc0NoZWNraW5nKCkgY29uc3QgeyByZXR1cm4gISFtX2NvcnNQcmVm
bGlnaHRDaGVja2VyOyB9CiAgICAgYm9vbCBpc1JlZGlyZWN0ZWQoKSBjb25zdCB7IHJldHVybiBt
X3JlZGlyZWN0Q291bnQ7IH0KIApAQCAtOTAsNiArOTMsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyYpPiYmKTsK
ICNlbmRpZgogCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBDb250ZW50U2VjdXJpdHlQb2xpY3lD
bGllbnQgY2FsbGJhY2tzLgorICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVu
dGlmaWVyID0gMCkgZmluYWwgeyB9OworICAgIHZvaWQgc2VuZENTUFZpb2xhdGlvblJlcG9ydChX
ZWJDb3JlOjpVUkwmJiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbCB7IH07CisgICAg
dm9pZCBkaXNwYXRjaFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoUmVmPFdlYkNvcmU6OlNl
Y3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQ+JiYpIGZpbmFsIHsgfTsKKwogICAgIFdlYkNvcmU6
OkZldGNoT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nl
c3Npb25JRDsK
</data>
<flag name="review"
          id="358001"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339785</attachid>
            <date>2018-05-07 18:16:11 -0700</date>
            <delta_ts>2018-05-07 18:16:11 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>Bug185393-For-EWS.patch</filename>
            <type>text/plain</type>
            <size>43282</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMTQ3MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBACisyMDE4LTA1LTA3ICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBYnN0cmFjdCBsb2dpYyB0byBs
b2cgY29uc29sZSBtZXNzYWdlcyBhbmQgc2VuZCBDU1AgdmlvbGF0aW9uIHJlcG9ydHMgaW50byBh
IGNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg1MzkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDAzNjA1Mz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIEZpcnN0IHBhc3MgYXQgYWRkaW5nIGlu
ZnJhc3RydWN0dXJlIHRvIHN1cHBvcnRpbmcgQ1NQIHJlcG9ydGluZyBmcm9tIE5ldHdvcmtQcm9j
ZXNzIGFuZCB3b3JrZXJzLgorICAgICAgICBSZXBsYWNlcyB0aGUgZXhpc3RpbmcgQ29udGVudFNl
Y3VyaXR5UG9saWN5IGNvbnN0cnVjdG9yIHRoYXQgdGFrZXMgYSBGcmFtZSB3aXRoIG9uZSB0aGF0
CisgICAgICAgIHRha2VzIGEgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50IHRvIGRlbGVnYXRl
IHRvIGZvciBsb2dnaW5nIGFuZCBzZW5kaW5nIHJlcG9ydHMuIFdlIHdpbGwgbG9vaworICAgICAg
ICB0byByZW1vdmUgQ29udGVudFNlY3VyaXR5UG9saWN5IGNvbnN0cnVjdG9yIHRoYXQgdGFrZXMg
YSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGluIGEgZm9sbG93IHVwLgorCisgICAgICAgIFN0YW5k
YXJkaXplIG9uIGluc3RhbnRpYXRpbmcgYSBDb250ZW50U2VjdXJpdHlQb2xpY3kgd2l0aCB0aGUg
ZnVsbCBVUkwgdG8gcmVzb3VyY2UgdGhhdCBpdCBwcm90ZWN0cworICAgICAgICBpbnN0ZWFkIG9m
IHRha2luZyBvbmx5IHRoZSBTZWN1cml0eU9yaWdpbiBvZiB0aGlzIFVSTC4gQnkgdGFraW5nIHRo
ZSBmdWxsIFVSTCB0aGUgQ29udGVudFNlY3VyaXR5UG9saWN5CisgICAgICAgIG9iamVjdCBpcyBu
b3cgY2FwYWJsZSBvZiByZXNvbHZpbmcgYSByZWxhdGl2ZSByZXBvcnQgVVJMIHdpdGhvdXQgbmVl
ZGluZyBhIERvY3VtZW50L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuCisKKyAgICAgICAgV2UgYXJl
IHVuZGVydXRpbGl6aW5nIHRoZSBDU1BJbmZvIHN0cnVjdCBhbmQgQ29udGVudFNlY3VyaXR5UG9s
aWN5Q2xpZW50Ojp3aWxsU2VuZENTUFZpb2xhdGlvblJlcG9ydCgpCisgICAgICAgIGRlbGVnYXRl
IGNhbGxiYWNrIGluIHRoaXMgcGF0Y2guIFdlIHdpbGwgbWFrZSB1c2Ugb2YgdGhpcyBmdW5jdGlv
bmFsaXR5IGluIGEgc3Vic2VxdWVudCBwYXRjaCB0bworICAgICAgICBzdXBwb3J0IGNvbGxlY3Rp
bmcgc2NyaXB0IHN0YXRlIChlLmcuIHNvdXJjZSBsaW5lIG51bWJlcikgd2hlbiByZXBvcnRpbmcg
Q1NQIHZpb2xhdGlvbnMgaW4gd29ya2VyCisgICAgICAgIHRocmVhZHMuIFdlIGFsc28gbm8gbG9u
Z2VyIGdvIHRocm91Z2ggdGhlIHVubmVjZXNzYXJ5IG1vdGlvbnMgdG8gdHJ5IHRvIGNvbGxlY3Qg
c2NyaXB0IHN0YXRlIGZvciBhCisgICAgICAgIGZyYW1lLWFuY2VzdG9ycyB2aW9sYXRpb24gKHNp
bmNlIERvY3VtZW50TG9hZGVyIGV4dGVuZHMgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50IGFu
ZCBkb2VzIG5vdAorICAgICAgICBpbXBsZW1lbnQgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50
Ojp3aWxsU2VuZENTUFZpb2xhdGlvblJlcG9ydCgpKS4gVGhlIGZyYW1lLWFuY2VzdG9ycyBkaXJl
Y3RpdmUKKyAgICAgICAgaXMgY2hlY2tlZCBiZWZvcmUgYSBkb2N1bWVudCBpcyBwYXJzZWQgYW5k
IGV4ZWN1dGVzIHNjcmlwdDsgPT4gdGhlcmUgd2lsbCBuZXZlciBiZSBhbnkgc2NyaXB0IHN0YXRl
CisgICAgICAgIHRvIGNvbGxlY3Q7ID0+IGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gdHJ5IHRvIGNv
bGxlY3QgaXQgYXMgd2UgY3VycmVudGx5IGRvLgorCisgICAgICAgICogU291cmNlcy50eHQ6IEFk
ZCBmaWxlIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5jcHAuIFNlZSB0aGUgcmVtYXJrcyBm
b3IgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmNwcAorICAgICAgICBiZWxvdyBvbiB3aHkg
d2UgaGF2ZSB0aGlzIGZpbGUuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBBZGQgZmlsZXMgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LntoLCBjcHB9Lgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
aW5pdFNlY3VyaXR5Q29udGV4dCk6IFBhc3MgdGhlIFVSTCBvZiB0aGUgcHJvdGVjdGVkIGRvY3Vt
ZW50LgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmFkZENvbnNvbGVNZXNzYWdlKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2VuZENTUFZpb2xhdGlvblJlcG9ydCk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpc3BhdGNoU2VjdXJpdHlQ
b2xpY3lWaW9sYXRpb25FdmVudCk6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOiBGaXggdHlwbyBp
biBjb21tZW50LgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlk
Z2U6Ok1haW5UaHJlYWRCcmlkZ2UpOiBQYXNzIHRoZSBVUkwgb2YgdGhlIHdvcmtlciBzY3JpcHQu
CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6Q29udGVudFNlY3VyaXR5UG9saWN5KTog
QWRkZWQgb3ZlcmxvYWQgdGhhdCB0YWtlcyBhIFVSTCYmIGFuZCBhbiBvcHRpb25hbAorICAgICAg
ICBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQqLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5OjpkZXByZWNhdGVkVVJMRm9yUmVwb3J0aW5nIGNvbnN0KTogRXh0cmFj
dGVkIGFuZCBzaW1wbGlmaWVkIHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoKQorICAgICAgICBpbnRv
IHRoaXMgbWVtYmVyIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5OjpyZXBvcnRWaW9sYXRpb24gY29uc3QpOiBNb2RpZmllZCB0byBtYWtlIHVzZSBvZiB0
aGUgY2xpZW50LCBpZiB3ZSBoYXZlCisgICAgICAgIG9uZSBhbmQgcmVtb3ZlZCBjb2RlIGZvciBo
YW5kbGluZyBhIENvbnRlbnRTZWN1cml0eVBvbGljeSB0aGF0IHdhcyBpbnN0YW50aWF0ZWQgd2l0
aCBhIEZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Ojpsb2dU
b0NvbnNvbGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnN0cmlwVVJMRm9yVXNl
SW5SZXBvcnQpOiBEZWxldGVkOyBpbmNvcnBvcmF0ZWQgaW50byBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmRlcHJlY2F0ZWRVUkxGb3JSZXBvcnRpbmcoKS4KKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lDbGllbnQuY3BwOiBBZGRlZC4gVGhpcyBmaWxlIGV4aXN0cyBzbyB0aGF0IHdlIGNhbiBk
ZWZpbmUgdGhlIHZpcnR1YWwKKyAgICAgICAgZGVzdHJ1Y3RvciBvdXQtb2YtbGluZSBhbmQgZXhw
b3J0IHRoaXMgYWJzdHJhY3QgY2xhc3Mgc28gYXMgdG8gYXZvaWQgdGhlIG5lZWQgZm9yIHRoZSB2
dGFibGUgdG8gYmUKKyAgICAgICAgZGVmaW5lZCBpbiB0aGUgdHJhbnNsYXRpb24gdW5pdCBvZiBl
YWNoIGRlcml2ZWQgY2xhc3MuCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2U6Om9wZXJhdG9yIFNlY3VyaXR5T3JpZ2luRGF0YSBjb25zdCk6IEFkZGVkLgorICAgICAg
ICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xv
YmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKTogSW5zdGFudGlhdGUgdGhlIENvbnRlbnRTZWN1
cml0eVBvbGljeSBvYmplY3Qgd2l0aCB0aGUKKyAgICAgICAgVVJMIG9mIHRoZSB3b3JrZXIgc2Ny
aXB0LgorCiAyMDE4LTA1LTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDU1Agc3RhdHVzLWNvZGUgaW5jb3JyZWN0IGZvciBkb2N1bWVudCBibG9ja2VkIGR1
ZSB0byB2aW9sYXRpb24gb2YgaXRzIGZyYW1lLWFuY2VzdG9ycyBkaXJlY3RpdmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTQzMCw2ICsxNDMwLDcgQEAgcGFnZS9hbmltYXRpb24vSW1w
bGljaXRBbmltYXRpb24uY3BwCiBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAK
IAogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5Q2xpZW50LmNwcAogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlLmNwcAogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5j
cHAKIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjMxNDcwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDc1LDYgKzQwNzUsNyBAQAogCQlD
RTA4QzNEMjE1MkI1OTlBMDAyMUI4QzIgLyogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwOEMzRDAxNTJC
NTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQlDRTE4NjY0NTFGNzJFNUI0MDBBMENBQjYgLyog
TWFya2VkVGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0UxODY2NDMxRjcyRTVCNDAwQTBDQUI2IC8qIE1hcmtlZFRleHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTI4NDk4NzFDQTM2MERGMDBC
NEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjg0OTg2MUNBMzYwREYwMEI0
QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oICovOyB9OworCQlD
RTVGQTI1NTIwOUU0OEM1MDA1MUQ3MDAgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTVGQTI1MzIw
OUU0OEM1MDA1MUQ3MDAgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U2REFERkExQzU5MUU2
QTAwM0Y2QTg4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2REFERjgxQzU5MUU2
QTAwM0Y2QTg4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFNzk5Rjk4MUM2
QTQ2QkMwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTc5OUY5NjFDNkE0NkJD
MDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oICovOyB9OwogCQlD
RTc5OUY5QzFDNkE0QkNEMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3
OTlGOUExQzZBNEJDRDAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3QuaCAqLzsgfTsKQEAgLTEzNDIzLDYgKzEzNDI0LDcgQEAKIAkJQ0UyODQ5ODYxQ0EzNjBERjAw
QjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5h
bWVzLmg7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdGIC8q
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
LmNwcDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNUNCMUIzMTRFREFCNkYwMEJCMjc5NSAv
KiBFdmVudFNlbmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFNl
bmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTVGQTI1MzIwOUU0OEM1MDA1
MUQ3MDAgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENv
bnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oOyBwYXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTZEODkyOTRDN0FB
Q0UwQUQ4OUIzREQgLyogTWF0aE1MTWVuY2xvc2VFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hdGhNTE1lbmNsb3NlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRTZEQURGNzFDNTkxRTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHA7IHBhdGggPSBj
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0U2REFERjgxQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaDsgcGF0aCA9IGNzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzNDYyLDYgKzEzNDY0LDcgQEAKIAkJQ0VGNDE4Q0MxMTc5Njc4QzAwOUQx
MTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZpZXdwb3J0QXJndW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0VGNDE4Q0QxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdwb3J0QXJndW1lbnRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFRjU5QjI1MUNBMEUxMUQwMDVDM0UxMyAvKiBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcDsgcGF0aCA9IGNz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDRUZENURCMjIwOUVCRUQ0MDA3ODhCNjcgLyogQ29udGVudFNlY3VyaXR5UG9s
aWN5Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeUNs
aWVudC5jcHA7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAwMEVCQTAxMUJEQUZENDAwQzQ3NzI2IC8qIEZy
YW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRDAwMEVCQTExMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNo
aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9hZGVyU3RhdGVN
YWNoaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMDBFRDI1MTFDMUI5Q0Qw
MEM0NzcyNiAvKiBTdWJmcmFtZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdWJmcmFtZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNDc1NSw2ICsyNDc1OCw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5N0M0NzFEOTEy
RjkyNUJDMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCAqLywKIAkJCQk5N0M0
NzFEQTEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmggKi8sCisJCQkJ
Q0VGRDVEQjIyMDlFQkVENDAwNzg4QjY3IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5j
cHAgKi8sCisJCQkJQ0U1RkEyNTMyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBv
bGljeUNsaWVudC5oICovLAogCQkJCUNFRjU5QjI1MUNBMEUxMUQwMDVDM0UxMyAvKiBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuY3BwICovLAogCQkJCUNFNzk5RkEyMUM2QTUwM0EwMDk3
QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaCAqLywKIAkJCQlDRTc5OUY5
OTFDNkE0QkNEMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5j
cHAgKi8sCkBAIC0yNzEwOCw2ICsyNzExMyw3IEBACiAJCQkJQTg5OTQzMjgwQjQyMzM4ODAwRDdD
ODAyIC8qIEJpdG1hcEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzZENkM3OTEyMkI4QTNE
MDAxRkQxRjcgLyogQmxvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RDZDN0MxMjJCOEEzRDAw
MUZEMUY3IC8qIEJsb2JCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRTVGQTI1NTIwOUU0
OEM1MDA1MUQ3MDAgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMTVENzUxNjFFNjhGN0M4MDBBMzVGQkMgLyogQmxvYkNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRURFRjFGNDEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYkRhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxRDMxQ0REMTkxOTYwMjAwMDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShy
ZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NTAwLDcgKzU1MDAsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJp
dHlDb250ZXh0KCkKICAgICAgICAgLy8gVGhpcyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50LmltcGxl
bWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCkuCiAgICAgICAgIHNldENvb2tpZVVSTChVUkwoUGFy
c2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3JpZ2lu
UG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZVVuaXF1ZSgpKSk7Ci0gICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oKnRoaXMpKTsKKyAgICAgICAgc2V0Q29udGVu
dFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihV
UkwgeyBQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkgfSwgKnRoaXMpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNTUxOSw3ICs1NTE5LDcgQEAgdm9pZCBEb2N1bWVudDo6aW5p
dFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIGlzU2VjdXJpdHlPcmlnaW5VbmlxdWUgPSBkb2N1
bWVudExvYWRlciAmJiBkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS50YWludGluZygpID09IFJl
c291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpPcGFxdWU7CiAKICAgICBzZXRTZWN1cml0eU9yaWdp
blBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKGlzU2VjdXJpdHlPcmlnaW5Vbmlx
dWUgPyBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKG1fdXJsKSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oKnRoaXMpKTsKKyAgICBzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1f
dXJsIH0sICp0aGlzKSk7CiAKICAgICBTdHJpbmcgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xp
Y3kgPSBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBv
bGljeSgpOwogICAgIGlmICghb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kuaXNOdWxsKCkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9u
IDIzMTQ3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgog
I2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJQaW5nTG9hZGVyLmgiCiAjaW5jbHVkZSAiUG9saWN5Q2hlY2tlci5oIgogI2luY2x1ZGUg
IlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC03Miw2
ICs3Myw3IEBACiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgorI2luY2x1
ZGUgIlNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKQEAgLTc2Nyw3ICs3NjksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25z
ZVJlY2VpdmVkKGNvCiAgICAgCiAgICAgYXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKIAotICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeSBjb250ZW50U2VjdXJpdHlQb2xpY3koU2VjdXJpdHlPcmln
aW46OmNyZWF0ZSh1cmwpLCBtX2ZyYW1lKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kgY29u
dGVudFNlY3VyaXR5UG9saWN5KFVSTCB7IHVybCB9LCB0aGlzKTsKICAgICBjb250ZW50U2VjdXJp
dHlQb2xpY3kuZGlkUmVjZWl2ZUhlYWRlcnMoQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzIHsgcmVzcG9uc2UgfSwgbV9yZXF1ZXN0Lmh0dHBSZWZlcnJlcigpKTsKICAgICBpZiAo
IWNvbnRlbnRTZWN1cml0eVBvbGljeS5hbGxvd0ZyYW1lQW5jZXN0b3JzKCptX2ZyYW1lLCB1cmwp
KSB7CiAgICAgICAgIHN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJp
dHlQb2xpY3lEZW5pZWQoaWRlbnRpZmllciwgcmVzcG9uc2UpOwpAQCAtMjAwOSw0ICsyMDExLDE5
IEBAIFByZXZpZXdDb252ZXJ0ZXIqIERvY3VtZW50TG9hZGVyOjpwcmV2aWUKIAogI2VuZGlmCiAK
K3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgbWVz
c2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsIG1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQoreworICAgIHN0YXRpY19jYXN0
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPihtX2ZyYW1lLT5kb2N1bWVudCgpKS0+YWRkQ29uc29s
ZU1lc3NhZ2UobWVzc2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBtZXNzYWdlLCByZXF1ZXN0SWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNlbmRDU1BWaW9sYXRpb25SZXBv
cnQoVVJMJiYgcmVwb3J0VVJMLCBSZWY8Rm9ybURhdGE+JiYgcmVwb3J0KQoreworICAgIFBpbmdM
b2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQoKm1fZnJhbWUsIFdURk1vdmUocmVwb3J0VVJMKSwg
V1RGTW92ZShyZXBvcnQpLCBWaW9sYXRpb25SZXBvcnRUeXBlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3kpOworfQorCit2b2lkIERvY3VtZW50TG9hZGVyOjpkaXNwYXRjaFNlY3VyaXR5UG9saWN5Vmlv
bGF0aW9uRXZlbnQoUmVmPFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQ+JiYgdmlvbGF0aW9u
RXZlbnQpCit7CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZURvY3VtZW50RXZlbnQo
V1RGTW92ZSh2aW9sYXRpb25FdmVudCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjMxNDcw
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJDb250ZW50
U2VjdXJpdHlQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudFdyaXRlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkxpbmtJY29uLmgi
CkBAIC0xMDcsNyArMTA4LDExIEBAIGVudW0gY2xhc3MgUG9wVXBQb2xpY3kgewogICAgIEJsb2Nr
LAogfTsKIAotY2xhc3MgRG9jdW1lbnRMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVu
dExvYWRlcj4sIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIsIHByaXZhdGUgQ2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQgeworY2xhc3MgRG9jdW1lbnRMb2FkZXIKKyAgICA6IHB1YmxpYyBS
ZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPgorICAgICwgcHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlcgorICAgICwgcHVibGljIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudAorICAgICwg
cHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIENvbnRlbnRGaWx0ZXI7CiBwdWJsaWM6CkBAIC00MDQs
NiArNDA5LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZExvYWRpbmdBcHBs
aWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgc3RkOjpvcHRpb25h
bDxBcHBsaWNhdGlvbk1hbmlmZXN0Pik7CiAjZW5kaWYKIAorICAgIC8vIENvbnRlbnRTZWN1cml0
eVBvbGljeUNsaWVudAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBsb25n
IHJlcXVlc3RJZGVudGlmaWVyKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlbmRD
U1BWaW9sYXRpb25SZXBvcnQoVVJMJiYsIFJlZjxGb3JtRGF0YT4mJikgZmluYWw7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaXNwYXRjaFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoUmVm
PFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQ+JiYpIGZpbmFsOworCiAgICAgUmVmPENhY2hl
ZFJlc291cmNlTG9hZGVyPiBtX2NhY2hlZFJlc291cmNlTG9hZGVyOwogCiAgICAgQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIzMTQ3MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXJD
bGllbnQgewogcHVibGljOgogICAgIC8vIEFuIGlubGluZSBmdW5jdGlvbiBjYW5ub3QgYmUgdGhl
IGZpcnN0IG5vbi1hYnN0cmFjdCB2aXJ0dWFsIGZ1bmN0aW9uIGRlY2xhcmVkCiAgICAgLy8gaW4g
dGhlIGNsYXNzIGFzIGl0IHJlc3VsdHMgaW4gdGhlIHZ0YWJsZSBiZWluZyBnZW5lcmF0ZWQgYXMg
YSB3ZWFrIHN5bWJvbC4KLSAgICAvLyBUaGlzIGh1cnRzIHBlcmZvcm1hbmNlIChpbiBNYWMgT1Mg
WCBhdCBsZWFzdCwgd2hlbiBsb2FkaWcgZnJhbWV3b3JrcyksIHNvIHdlCisgICAgLy8gVGhpcyBo
dXJ0cyBwZXJmb3JtYW5jZSAoaW4gTWFjIE9TIFggYXQgbGVhc3QsIHdoZW4gbG9hZGluZyBmcmFt
ZXdvcmtzKSwgc28gd2UKICAgICAvLyBkb24ndCB3YW50IHRvIGRvIGl0IGluIFdlYktpdC4KICAg
ICB2aXJ0dWFsIGJvb2wgaGFzSFRNTFZpZXcoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24gMjMx
NDcwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZQogICAgIEFTU0VSVChjb250ZW50U2VjdXJpdHlQb2xpY3kpOwog
CiAgICAgYXV0byBzZWN1cml0eU9yaWdpbkNvcHkgPSBzZWN1cml0eU9yaWdpbi0+aXNvbGF0ZWRD
b3B5KCk7Ci0gICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KHNlY3VyaXR5T3JpZ2luQ29weSk7CisgICAgYXV0
byBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2Vj
dXJpdHlQb2xpY3k+KGdsb2JhbFNjb3BlLnVybCgpLmlzb2xhdGVkQ29weSgpKTsKICAgICBjb250
ZW50U2VjdXJpdHlQb2xpY3lDb3B5LT5jb3B5U3RhdGVGcm9tKGNvbnRlbnRTZWN1cml0eVBvbGlj
eSk7CiAgICAgY29udGVudFNlY3VyaXR5UG9saWN5Q29weS0+Y29weVVwZ3JhZGVJbnNlY3VyZVJl
cXVlc3RTdGF0ZUZyb20oKmNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNp
b24gMjMxNDcwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKIAorI2luY2x1ZGUgIkNv
bnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3QuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5o
IgpAQCAtODgsMTkgKzg5LDE5IEBAIHN0YXRpYyBTdHJpbmcgY29uc29sZU1lc3NhZ2VGb3JWaW9s
YXRpb24KICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLUNvbnRlbnRTZWN1cml0
eVBvbGljeTo6Q29udGVudFNlY3VyaXR5UG9saWN5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoJnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgLCBtX3NhbmRib3hGbGFncyhTYW5kYm94Tm9uZSkK
K0NvbnRlbnRTZWN1cml0eVBvbGljeTo6Q29udGVudFNlY3VyaXR5UG9saWN5KFVSTCYmIHByb3Rl
Y3RlZFVSTCwgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50KiBjbGllbnQpCisgICAgOiBtX2Ns
aWVudCB7IGNsaWVudCB9CisgICAgLCBtX3Byb3RlY3RlZFVSTCB7IFdURk1vdmUocHJvdGVjdGVk
VVJMKSB9CiB7Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2VjdXJpdHlPcmln
aW4oKSk7Ci0gICAgdXBkYXRlU291cmNlU2VsZigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zZWN1
cml0eU9yaWdpbigpKTsKKyAgICB1cGRhdGVTb3VyY2VTZWxmKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUobV9wcm90ZWN0ZWRVUkwpLmdldCgpKTsKIH0KIAotQ29udGVudFNlY3VyaXR5UG9saWN5OjpD
b250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2lu
LCBjb25zdCBGcmFtZSogZnJhbWUpCi0gICAgOiBtX2ZyYW1lKGZyYW1lKQotICAgICwgbV9zYW5k
Ym94RmxhZ3MoU2FuZGJveE5vbmUpCitDb250ZW50U2VjdXJpdHlQb2xpY3k6OkNvbnRlbnRTZWN1
cml0eVBvbGljeShVUkwmJiBwcm90ZWN0ZWRVUkwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoJnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgLCBtX3Byb3RlY3RlZFVSTCB7IFdURk1vdmUocHJv
dGVjdGVkVVJMKSB9CiB7Ci0gICAgdXBkYXRlU291cmNlU2VsZihzZWN1cml0eU9yaWdpbik7Cisg
ICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSk7CisgICAg
dXBkYXRlU291cmNlU2VsZigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigp
KTsKIH0KIAogQ29udGVudFNlY3VyaXR5UG9saWN5Ojp+Q29udGVudFNlY3VyaXR5UG9saWN5KCkg
PSBkZWZhdWx0OwpAQCAtNjE0LDEzICs2MTUsMTMgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmFsbG93QmFzZVVSSQogICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KFdURk1vdmUoaGFu
ZGxlVmlvbGF0ZWREaXJlY3RpdmUpLCAmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JCYXNlVVJJLCB1cmwpOwogfQogCi1zdGF0aWMgU3RyaW5n
IHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVy
bCkKK1N0cmluZyBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmRlcHJlY2F0ZWRVUkxGb3JSZXBvcnRp
bmcoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKCF1cmwu
aXNIaWVyYXJjaGljYWwoKSB8fCB1cmwucHJvdG9jb2xJcygiZmlsZSIpKQogICAgICAgICByZXR1
cm4gdXJsLnByb3RvY29sKCkudG9TdHJpbmcoKTsKLSAgICByZXR1cm4gZG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCkgPyB1cmwuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVy
KCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkuZ2V0KCkudG9TdHJpbmcoKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8U2VjdXJpdHlPcmlnaW5EYXRhPigqbV9zZWxmU291cmNlKS5zZWN1
cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHVybCkgPyB1cmwuc3RyaXBwZWRGb3JVc2VBc1JlZmVy
cmVyKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCktPnRvU3RyaW5nKCk7CiB9CiAKIHZv
aWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiB2
aW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiBl
ZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgVVJMJiBibG9ja2VkVVJMLCBjb25zdCBT
dHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpIGNvbnN0CkBAIC02
NDgsNDggKzY0OSw0NCBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHNlbmRpbmcgcmVwb3J0
cyBmcm9tIHdvcmtlci4KLSAgICBpZiAoIWlzPERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpICYmICFtX2ZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoIW1fZnJh
bWUgfHwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXM6OmZyYW1lQW5jZXN0b3JzKTsKLQotICAgIGF1dG8mIGRvY3VtZW50ID0g
aXM8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgPyBkb3duY2FzdDxEb2N1bWVu
dD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgOiAqbV9mcmFtZS0+ZG9jdW1lbnQoKTsKLSAg
ICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7Ci0gICAgQVNTRVJUKCFtX2ZyYW1lIHx8
IG1fZnJhbWUgPT0gZnJhbWUpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFN0cmluZyBkb2N1bWVudFVSSTsKLSAgICBTdHJpbmcgYmxvY2tlZFVSSTsKLSAgICBpZiAo
aXM8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpIHsKLSAgICAgICAgZG9jdW1l
bnRVUkkgPSBkb2N1bWVudC51cmwoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKTsKLSAgICAg
ICAgYmxvY2tlZFVSSSA9IHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoZG9jdW1lbnQsIGJsb2NrZWRV
UkwpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFRoZSBVUkwgb2YgfGRvY3VtZW50fCBtYXkg
bm90IGhhdmUgYmVlbiBpbml0aWFsaXplZCAoc2F5LCB3aGVuIHJlcG9ydGluZyBhIGZyYW1lLWFu
Y2VzdG9ycyB2aW9sYXRpb24pLgotICAgICAgICAvLyBTbywgd2UgdXNlIHRoZSBVUkwgb2YgdGhl
IGJsb2NrZWQgZG9jdW1lbnQgZm9yIHRoZSBwcm90ZWN0ZWQgZG9jdW1lbnQgVVJMLgotICAgICAg
ICBkb2N1bWVudFVSSSA9IGJsb2NrZWRVUkw7Ci0gICAgICAgIGJsb2NrZWRVUkkgPSBibG9ja2Vk
VVJMOworICAgIENTUEluZm8gaW5mbzsKKyAgICBpbmZvLmRvY3VtZW50VVJJID0gYmxvY2tlZFVS
TDsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT53aWxsU2VuZENTUFZpb2xh
dGlvblJlcG9ydChpbmZvKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKCFpczxEb2N1bWVudD4o
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKKyAgICAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOworICAgICAg
ICBpZiAoIWZyYW1lKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGluZm8uZG9jdW1l
bnRVUkkgPSBkb2N1bWVudC51cmwoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKTsKKworICAg
ICAgICBhdXRvIHN0YWNrID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTTWFpblRocmVhZEV4ZWNT
dGF0ZTo6Y3VycmVudFN0YXRlKCksIDIpOworICAgICAgICBhdXRvKiBjYWxsRnJhbWUgPSBzdGFj
ay0+Zmlyc3ROb25OYXRpdmVDYWxsRnJhbWUoKTsKKyAgICAgICAgaWYgKGNhbGxGcmFtZSAmJiBj
YWxsRnJhbWUtPmxpbmVOdW1iZXIoKSkgeworICAgICAgICAgICAgaW5mby5zb3VyY2VGaWxlID0g
ZGVwcmVjYXRlZFVSTEZvclJlcG9ydGluZyhVUkwgeyBVUkwgeyB9LCBjYWxsRnJhbWUtPnNvdXJj
ZVVSTCgpIH0pOworICAgICAgICAgICAgaW5mby5saW5lTnVtYmVyID0gY2FsbEZyYW1lLT5saW5l
TnVtYmVyKCk7CisgICAgICAgICAgICBpbmZvLmNvbHVtbk51bWJlciA9IGNhbGxGcmFtZS0+Y29s
dW1uTnVtYmVyKCk7CisgICAgICAgIH0KICAgICB9Ci0gICAgU3RyaW5nIHZpb2xhdGVkRGlyZWN0
aXZlVGV4dCA9IHZpb2xhdGVkRGlyZWN0aXZlOwotICAgIFN0cmluZyBvcmlnaW5hbFBvbGljeSA9
IHZpb2xhdGVkRGlyZWN0aXZlTGlzdC5oZWFkZXIoKTsKLSAgICAvLyBGSVhNRTogSXMgaXQgcG9s
aWN5IHRvIG5vdCB1c2UgdGhlIHN0YXR1cyBjb2RlIGZvciBIVFRQUywgb3IgaXMgdGhhdCBhIGJ1
Zz8KLSAgICB1bnNpZ25lZCBzaG9ydCBzdGF0dXNDb2RlID0gbV9zZWxmU291cmNlUHJvdG9jb2wg
PT0gImh0dHAiID8gbV9odHRwU3RhdHVzQ29kZSA6IDA7CiAKLSAgICBTdHJpbmcgc291cmNlRmls
ZTsKLSAgICBpbnQgbGluZU51bWJlciA9IDA7Ci0gICAgaW50IGNvbHVtbk51bWJlciA9IDA7Ci0g
ICAgYXV0byBzdGFjayA9IGNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU01haW5UaHJlYWRFeGVjU3Rh
dGU6OmN1cnJlbnRTdGF0ZSgpLCAyKTsKLSAgICBhdXRvKiBjYWxsRnJhbWUgPSBzdGFjay0+Zmly
c3ROb25OYXRpdmVDYWxsRnJhbWUoKTsKLSAgICBpZiAoY2FsbEZyYW1lICYmIGNhbGxGcmFtZS0+
bGluZU51bWJlcigpKSB7Ci0gICAgICAgIHNvdXJjZUZpbGUgPSBzdHJpcFVSTEZvclVzZUluUmVw
b3J0KGRvY3VtZW50LCBVUkwoVVJMKCksIGNhbGxGcmFtZS0+c291cmNlVVJMKCkpKTsKLSAgICAg
ICAgbGluZU51bWJlciA9IGNhbGxGcmFtZS0+bGluZU51bWJlcigpOwotICAgICAgICBjb2x1bW5O
dW1iZXIgPSBjYWxsRnJhbWUtPmNvbHVtbk51bWJlcigpOwotICAgIH0KKyAgICBTdHJpbmcgYmxv
Y2tlZFVSSSA9IGRlcHJlY2F0ZWRVUkxGb3JSZXBvcnRpbmcoYmxvY2tlZFVSTCk7CisgICAgLy8g
RklYTUU6IElzIGl0IHBvbGljeSB0byBub3QgdXNlIHRoZSBzdGF0dXMgY29kZSBmb3IgSFRUUFMs
IG9yIGlzIHRoYXQgYSBidWc/CisgICAgdW5zaWduZWQgc2hvcnQgaHR0cFN0YXR1c0NvZGUgPSBt
X3NlbGZTb3VyY2VQcm90b2NvbCA9PSAiaHR0cCIgPyBtX2h0dHBTdGF0dXNDb2RlIDogMDsKIAog
ICAgIC8vIDEuIERpc3BhdGNoIHZpb2xhdGlvbiBldmVudC4KICAgICBib29sIGNhbkJ1YmJsZSA9
IGZhbHNlOwogICAgIGJvb2wgY2FuY2VsYWJsZSA9IGZhbHNlOwotICAgIGRvY3VtZW50LmVucXVl
dWVEb2N1bWVudEV2ZW50KFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuc2VjdXJpdHlwb2xpY3l2aW9sYXRpb25FdmVudCwgY2FuQnViYmxlLCBjYW5jZWxh
YmxlLCBkb2N1bWVudFVSSSwgbV9yZWZlcnJlciwgYmxvY2tlZFVSSSwgdmlvbGF0ZWREaXJlY3Rp
dmVUZXh0LCBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgb3JpZ2luYWxQb2xpY3ksIHNvdXJj
ZUZpbGUsIHN0YXR1c0NvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikpOworICAgIGF1dG8g
dmlvbGF0aW9uRXZlbnQgPSBTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLnNlY3VyaXR5cG9saWN5dmlvbGF0aW9uRXZlbnQsIGNhbkJ1YmJsZSwKKyAgICAg
ICAgY2FuY2VsYWJsZSwgaW5mby5kb2N1bWVudFVSSSwgbV9yZWZlcnJlciwgYmxvY2tlZFVSSSwg
dmlvbGF0ZWREaXJlY3RpdmUsIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLAorICAgICAgICB2
aW9sYXRlZERpcmVjdGl2ZUxpc3QuaGVhZGVyKCksIGluZm8uc291cmNlRmlsZSwgaHR0cFN0YXR1
c0NvZGUsIGluZm8ubGluZU51bWJlciwgaW5mby5jb2x1bW5OdW1iZXIpOworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25F
dmVudChXVEZNb3ZlKHZpb2xhdGlvbkV2ZW50KSk7CisgICAgZWxzZQorICAgICAgICBkb3duY2Fz
dDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuZW5xdWV1ZURvY3VtZW50RXZl
bnQoV1RGTW92ZSh2aW9sYXRpb25FdmVudCkpOwogCiAgICAgLy8gMi4gU2VuZCB2aW9sYXRpb24g
cmVwb3J0IChpZiBhcHBsaWNhYmxlKS4KICAgICBhdXRvJiByZXBvcnRVUklzID0gdmlvbGF0ZWRE
aXJlY3RpdmVMaXN0LnJlcG9ydFVSSXMoKTsKQEAgLTcwNywyNSArNzA0LDMyIEBAIHZvaWQgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXQKICAgICAvLyBoYXJtbGVzcyBpbmZvcm1h
dGlvbi4KIAogICAgIGF1dG8gY3NwUmVwb3J0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAg
ICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImRvY3VtZW50LXVyaSIpLCBkb2N1
bWVudFVSSSk7CisgICAgY3NwUmVwb3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJkb2N1bWVu
dC11cmkiKSwgaW5mby5kb2N1bWVudFVSSSk7CiAgICAgY3NwUmVwb3J0LT5zZXRTdHJpbmcoQVND
SUlMaXRlcmFsKCJyZWZlcnJlciIpLCBtX3JlZmVycmVyKTsKLSAgICBjc3BSZXBvcnQtPnNldFN0
cmluZyhBU0NJSUxpdGVyYWwoInZpb2xhdGVkLWRpcmVjdGl2ZSIpLCB2aW9sYXRlZERpcmVjdGl2
ZVRleHQpOworICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgidmlvbGF0ZWQt
ZGlyZWN0aXZlIiksIHZpb2xhdGVkRGlyZWN0aXZlKTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmlu
ZyhBU0NJSUxpdGVyYWwoImVmZmVjdGl2ZS1kaXJlY3RpdmUiKSwgZWZmZWN0aXZlVmlvbGF0ZWRE
aXJlY3RpdmUpOwotICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgib3JpZ2lu
YWwtcG9saWN5IiksIG9yaWdpbmFsUG9saWN5KTsKKyAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhB
U0NJSUxpdGVyYWwoIm9yaWdpbmFsLXBvbGljeSIpLCB2aW9sYXRlZERpcmVjdGl2ZUxpc3QuaGVh
ZGVyKCkpOwogICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiYmxvY2tlZC11
cmkiKSwgYmxvY2tlZFVSSSk7Ci0gICAgY3NwUmVwb3J0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJh
bCgic3RhdHVzLWNvZGUiKSwgc3RhdHVzQ29kZSk7Ci0gICAgaWYgKCFzb3VyY2VGaWxlLmlzTnVs
bCgpKSB7Ci0gICAgICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic291cmNl
LWZpbGUiKSwgc291cmNlRmlsZSk7Ci0gICAgICAgIGNzcFJlcG9ydC0+c2V0SW50ZWdlcihBU0NJ
SUxpdGVyYWwoImxpbmUtbnVtYmVyIiksIGxpbmVOdW1iZXIpOwotICAgICAgICBjc3BSZXBvcnQt
PnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJjb2x1bW4tbnVtYmVyIiksIGNvbHVtbk51bWJlcik7
CisgICAgY3NwUmVwb3J0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgic3RhdHVzLWNvZGUiKSwg
aHR0cFN0YXR1c0NvZGUpOworICAgIGlmICghaW5mby5zb3VyY2VGaWxlLmlzTnVsbCgpKSB7Cisg
ICAgICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic291cmNlLWZpbGUiKSwg
aW5mby5zb3VyY2VGaWxlKTsKKyAgICAgICAgY3NwUmVwb3J0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0
ZXJhbCgibGluZS1udW1iZXIiKSwgaW5mby5saW5lTnVtYmVyKTsKKyAgICAgICAgY3NwUmVwb3J0
LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiY29sdW1uLW51bWJlciIpLCBpbmZvLmNvbHVtbk51
bWJlcik7CiAgICAgfQogCiAgICAgYXV0byByZXBvcnRPYmplY3QgPSBKU09OOjpPYmplY3Q6OmNy
ZWF0ZSgpOwogICAgIHJlcG9ydE9iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgiY3NwLXJl
cG9ydCIpLCBXVEZNb3ZlKGNzcFJlcG9ydCkpOwogCiAgICAgYXV0byByZXBvcnQgPSBGb3JtRGF0
YTo6Y3JlYXRlKHJlcG9ydE9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpKTsKLSAgICBmb3Ig
KGNvbnN0IGF1dG8mIHVybCA6IHJlcG9ydFVSSXMpCi0gICAgICAgIFBpbmdMb2FkZXI6OnNlbmRW
aW9sYXRpb25SZXBvcnQoKmZyYW1lLCBpczxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KSA/IGRvY3VtZW50LmNvbXBsZXRlVVJMKHVybCkgOiBkb2N1bWVudC5jb21wbGV0ZVVSTCh1
cmwsIGJsb2NrZWRVUkwpLCByZXBvcnQuY29weVJlZigpLCBWaW9sYXRpb25SZXBvcnRUeXBlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3kpOworCisgICAgaWYgKG1fY2xpZW50KSB7CisgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgdXJsIDogcmVwb3J0VVJJcykKKyAgICAgICAgICAgIG1fY2xpZW50LT5z
ZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KFVSTCB7IG1fcHJvdGVjdGVkVVJMLCB1cmwgfSwgcmVwb3J0
LmNvcHlSZWYoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3du
Y2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgdXJsIDogcmVwb3J0VVJJcykKKyAgICAgICAgICAgIFBpbmdMb2FkZXI6OnNl
bmRWaW9sYXRpb25SZXBvcnQoKmRvY3VtZW50LmZyYW1lKCksIFVSTCB7IG1fcHJvdGVjdGVkVVJM
LCB1cmwgfSwgcmVwb3J0LmNvcHlSZWYoKSwgVmlvbGF0aW9uUmVwb3J0VHlwZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5KTsKKyAgICB9CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpy
ZXBvcnRVbnN1cHBvcnRlZERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CkBAIC04
MTcsMTAgKzgyMSwxMCBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6bG9nVG9Db25zb2xl
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8x
MTQzMTc+IENvbnRlbnRTZWN1cml0eVBvbGljeTo6bG9nVG9Db25zb2xlIHNob3VsZCBpbmNsdWRl
IGEgY29sdW1uIG51bWJlcgotICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAg
aWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UsIDApOworICAg
IGVsc2UgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwg
TWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUub25l
QmFzZWRJbnQoKSwgMCwgc3RhdGUpOwotICAgIGVsc2UgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+
ZG9jdW1lbnQoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+
KG1fZnJhbWUtPmRvY3VtZW50KCkpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4
dExpbmUub25lQmFzZWRJbnQoKSwgMCwgc3RhdGUpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6cmVwb3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKGNvbnN0IFN0
cmluZyYgZGlyZWN0aXZlVGV4dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsMTEgKzI4LDExIEBACiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lI
YXNoLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFs
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24u
aD4KIApAQCAtNTcsMTUgKzU3LDE1IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFRleHRFbmNvZGluZzsKIGNsYXNzIFVSTDsKK3N0
cnVjdCBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQ7CiAKIHR5cGVkZWYgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Pj4gQ1NQRGlyZWN0
aXZlTGlzdFZlY3RvcjsKLXR5cGVkZWYgaW50IFNhbmRib3hGbGFnczsKIAogY2xhc3MgQ29udGVu
dFNlY3VyaXR5UG9saWN5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBDb250ZW50U2VjdXJpdHlQb2xpY3koU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRlbnRTZWN1cml0eVBvbGljeShj
b25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IEZyYW1lKiA9IG51bGxwdHIpOworICAgIGV4cGxp
Y2l0IENvbnRlbnRTZWN1cml0eVBvbGljeShVUkwmJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRlbnRTZWN1cml0eVBvbGljeShVUkwm
JiwgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50KiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVf
RVhQT1JUIH5Db250ZW50U2VjdXJpdHlQb2xpY3koKTsKIAogICAgIHZvaWQgY29weVN0YXRlRnJv
bShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kqKTsKQEAgLTE3Myw2ICsxNzMsOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgdXBkYXRlU291cmNlU2VsZihjb25zdCBTZWN1cml0eU9yaWdpbiYpOwog
ICAgIHZvaWQgYXBwbHlQb2xpY3lUb1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIAorICAgIC8v
IEltcGxlbWVudHMgdGhlIGRlcHJlY2F0ZWQgQ1NQMiAic3RyaXAgdXJpIGZvciByZXBvcnRpbmci
IGFsZ29yaXRobSBmcm9tIDxodHRwczovL3d3dy53My5vcmcvVFIvQ1NQMi8jdmlvbGF0aW9uLXJl
cG9ydHM+LgorICAgIFN0cmluZyBkZXByZWNhdGVkVVJMRm9yUmVwb3J0aW5nKGNvbnN0IFVSTCYp
IGNvbnN0OworCiAgICAgY29uc3QgVGV4dEVuY29kaW5nJiBkb2N1bWVudEVuY29kaW5nKCkgY29u
c3Q7CiAKICAgICBlbnVtIGNsYXNzIERpc3Bvc2l0aW9uIHsKQEAgLTIwMywxNiArMjA2LDE3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBlZmZlY3Rp
dmVWaW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiB2aW9sYXRlZERpcmVjdGl2ZSwgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYgdmlvbGF0ZWREaXJlY3RpdmVM
aXN0LCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHNvdXJjZVBvc2l0
aW9uLCBKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIHZvaWQgcmVwb3J0QmxvY2tlZFNjcmlw
dEV4ZWN1dGlvblRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCkgY29uc3Q7
CiAKLSAgICAvLyBXZSBjYW4gbmV2ZXIgaGF2ZSBib3RoIGEgc2NyaXB0IGV4ZWN1dGlvbiBjb250
ZXh0IGFuZCBhIGZyYW1lLgorICAgIC8vIFdlIGNhbiBuZXZlciBoYXZlIGJvdGggYSBzY3JpcHQg
ZXhlY3V0aW9uIGNvbnRleHQgYW5kIGEgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LgogICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7IG51bGxw
dHIgfTsKLSAgICBjb25zdCBGcmFtZSogbV9mcmFtZSB7IG51bGxwdHIgfTsKKyAgICBDb250ZW50
U2VjdXJpdHlQb2xpY3lDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OworICAgIFVSTCBtX3By
b3RlY3RlZFVSTDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlPiBtX3NlbGZTb3VyY2U7CiAgICAgU3RyaW5nIG1fc2VsZlNvdXJjZVByb3RvY29sOwogICAg
IENTUERpcmVjdGl2ZUxpc3RWZWN0b3IgbV9wb2xpY2llczsKICAgICBTdHJpbmcgbV9sYXN0UG9s
aWN5RXZhbERpc2FibGVkRXJyb3JNZXNzYWdlOwogICAgIFN0cmluZyBtX2xhc3RQb2xpY3lXZWJB
c3NlbWJseURpc2FibGVkRXJyb3JNZXNzYWdlOwogICAgIFN0cmluZyBtX3JlZmVycmVyOwotICAg
IFNhbmRib3hGbGFncyBtX3NhbmRib3hGbGFnczsKKyAgICBTYW5kYm94RmxhZ3MgbV9zYW5kYm94
RmxhZ3MgeyBTYW5kYm94Tm9uZSB9OwogICAgIGJvb2wgbV9vdmVycmlkZUlubGluZVN0eWxlQWxs
b3dlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUmVwb3J0aW5nRW5hYmxlZCB7IHRydWUgfTsK
ICAgICBib29sIG1fdXBncmFkZUluc2VjdXJlUmVxdWVzdHMgeyBmYWxzZSB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lD
bGllbnQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb250ZW50U2Vj
dXJpdHlQb2xpY3lDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIENvbnRl
bnRTZWN1cml0eVBvbGljeUNsaWVudDo6d2lsbFNlbmRDU1BWaW9sYXRpb25SZXBvcnQoQ1NQSW5m
byYpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRm9ybURhdGE7CitjbGFzcyBTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Owor
Y2xhc3MgVVJMOworCitzdHJ1Y3QgQ1NQSW5mbyB7CisgICAgU3RyaW5nIGRvY3VtZW50VVJJOwor
ICAgIFN0cmluZyBzb3VyY2VGaWxlOworICAgIGludCBsaW5lTnVtYmVyIHsgMCB9OworICAgIGlu
dCBjb2x1bW5OdW1iZXIgeyAwIH07Cit9OworCitzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgQ29udGVu
dFNlY3VyaXR5UG9saWN5Q2xpZW50IHsKKyAgICAvLyBBbiBpbmxpbmUgZnVuY3Rpb24gY2Fubm90
IGJlIHRoZSBmaXJzdCBub24tYWJzdHJhY3QgdmlydHVhbCBmdW5jdGlvbiBkZWNsYXJlZAorICAg
IC8vIGluIHRoZSBjbGFzcyBhcyBpdCByZXN1bHRzIGluIHRoZSB2dGFibGUgYmVpbmcgZ2VuZXJh
dGVkIGFzIGEgd2VhayBzeW1ib2wuCisgICAgLy8gVGhpcyBodXJ0cyBwZXJmb3JtYW5jZSAoaW4g
TWFjIE9TIFggYXQgbGVhc3QsIHdoZW4gbG9hZGluZyBmcmFtZXdvcmtzKSwgc28gd2UKKyAgICAv
LyBkb24ndCB3YW50IHRvIGRvIGl0IGluIFdlYktpdC4KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFNl
bmRDU1BWaW9sYXRpb25SZXBvcnQoQ1NQSW5mbyYpOworCisgICAgdmlydHVhbCB+Q29udGVudFNl
Y3VyaXR5UG9saWN5Q2xpZW50KCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB2b2lkIGFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiwg
dW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2VuZENTUFZpb2xhdGlvblJlcG9ydChVUkwmJiwgUmVmPEZvcm1EYXRhPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChSZWY8
U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudD4mJikgPSAwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlLmgiCiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKKyNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlICJVUkwuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMTA4LDQgKzEwOSw5IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlOjppc1NjaGUKICAgICByZXR1cm4gbV9ob3N0LmlzRW1wdHkoKTsKIH0KIAorQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlOjpvcGVyYXRvciBTZWN1cml0eU9yaWdpbkRhdGEoKSBjb25z
dAoreworICAgIHJldHVybiB7IG1fc2NoZW1lLCBtX2hvc3QsIG1fcG9ydCB9OworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaAkocmV2aXNpb24gMjMxNDcwKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDb250ZW50U2VjdXJpdHlQb2xpY3k7CiBjbGFzcyBVUkw7CitzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5EYXRhOwogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDAsNiArNDEsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IG1hdGNoZXMoY29uc3QgVVJMJiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSA9IGZh
bHNlKSBjb25zdDsKIAorICAgIG9wZXJhdG9yIFNlY3VyaXR5T3JpZ2luRGF0YSgpIGNvbnN0Owor
CiBwcml2YXRlOgogICAgIGJvb2wgc2NoZW1lTWF0Y2hlcyhjb25zdCBVUkwmKSBjb25zdDsKICAg
ICBib29sIGhvc3RNYXRjaGVzKGNvbnN0IFVSTCYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDIzMTQ3MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04Miw3ICs4Miw3IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29w
ZShjb24KICAgICAgICAgb3JpZ2luLT5ncmFudFN0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWly
aygpOwogCiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6
OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbikpKTsKLSAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3ko
c3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KCp0aGlzKSk7CisgICAgc2V0
Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9s
aWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOwogfQogCiBXb3JrZXJHbG9iYWxTY29wZTo6fldv
cmtlckdsb2JhbFNjb3BlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE4
LTA1LTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBYnN0
cmFjdCBsb2dpYyB0byBsb2cgY29uc29sZSBtZXNzYWdlcyBhbmQgc2VuZCBDU1AgdmlvbGF0aW9u
IHJlcG9ydHMgaW50byBhIGNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg1MzkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDAzNjA1Mz4K
KworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIEZvciBub3cs
IGJ1aWxkIGEgVVJMIGZyb20gdGhlIHNvdXJjZSBvcmlnaW4gYXNzb2NpYXRlZCB3aXRoIHRoZSBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgYW5kIHBhc3MgdGhpcyB0byB0aGUgQ29udGVu
dFNlY3VyaXR5UG9saWN5IGNvbnN0cnVjdG9yLgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgbWFr
ZSBOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIG5vbi1jb25zdCBz
aW5jZSBpdCByZXR1cm5zCisgICAgICAgIGEgbm9uLWNvbnN0IHBvaW50ZXIgdG8gYSBDb250ZW50
U2VjdXJpdHlQb2xpY3kgb2JqZWN0OyA9PiBjYWxsZXJzIGNhbiBtdXRhdGUgdGhpcyBvYmplY3QK
KyAgICAgICAgcmlnaHQgZnJvbSB1bmRlciBOZXR3b3JrTG9hZENoZWNrZXIuIE1ha2luZyB0aGlz
IG5vbi1jb25zdCBtYWtlcyB0aGlzIGNsZWFyIHRvIGEgcmVhZGVyLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmg6CisKIDIw
MTgtMDUtMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzIHNob3VsZCBjYWxsIGl0cyBjb21wbGV0aW9uIGhhbmRsZXIgb24gdGhlIG1haW4gdGhyZWFk
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENoZWNrZXIuY3BwCShyZXZpc2lvbiAyMzE0NzApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMSwxMCAr
MzExLDExIEBAIGJvb2wgTmV0d29ya0xvYWRDaGVja2VyOjpkb2VzTm90TmVlZENPUlMKICAgICBy
ZXR1cm4gbV9pc1NhbWVPcmlnaW5SZXF1ZXN0OwogfQogCi1Db250ZW50U2VjdXJpdHlQb2xpY3kq
IE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29udGVudFNlY3VyaXR5UG9saWN5KCkgY29uc3QKK0NvbnRl
bnRTZWN1cml0eVBvbGljeSogTmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xp
Y3koKQogewogICAgIGlmICghbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgJiYgbV9jc3BSZXNwb25z
ZUhlYWRlcnMpIHsKLSAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oKm1fb3JpZ2luKTsKKyAgICAgICAgLy8gRklY
TUU6IFBhc3MgdGhlIFVSTCBvZiB0aGUgcHJvdGVjdGVkIHJlc291cmNlIGluc3RlYWQgb2YgaXRz
IG9yaWdpbi4KKyAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgVVJMIHsgfSwgbV9vcmlnaW4tPnRvU3Ry
aW5nKCkgfSwgdGhpcyk7CiAgICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5LT5kaWRSZWNl
aXZlSGVhZGVycygqbV9jc3BSZXNwb25zZUhlYWRlcnMsIFN0cmluZyB7IG1fcmVmZXJyZXIgfSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRQYXJzaW5nRXJyb3JzOjpObyk7CiAgICAgfQog
ICAgIHJldHVybiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS5nZXQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAkocmV2aXNp
b24gMjMxNDcwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENo
ZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5
Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CkBAIC00MCw3ICs0MSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXI7CiAKLWNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1
YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtMb2FkQ2hlY2tlcj4geworY2xhc3MgTmV0d29ya0xvYWRD
aGVja2VyCisgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrTG9hZENoZWNrZXI+CisgICAg
LCBwdWJsaWMgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPE5ldHdvcmtMb2FkQ2hlY2tlcj4gY3JlYXRlKFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYmIG9wdGlvbnMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6SFRU
UEhlYWRlck1hcCYmIG9yaWdpbmFsSGVhZGVycywgV2ViQ29yZTo6VVJMJiYgdXJsLCBSZWZQdHI8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBXZWJDb3JlOjpQcmVmbGln
aHRQb2xpY3kgcHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlcikKICAgICB7CkBAIC03
MSw3ICs3NCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTmV0d29ya0xvYWRDaGVja2VyKFdl
YkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6SFRUUEhlYWRl
ck1hcCYmLCBXZWJDb3JlOjpVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYm
LCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyKTsKIAotICAgIFdl
YkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5KCkgY29u
c3Q7CisgICAgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQ
b2xpY3koKTsKICAgICBib29sIGlzQ2hlY2tpbmcoKSBjb25zdCB7IHJldHVybiAhIW1fY29yc1By
ZWZsaWdodENoZWNrZXI7IH0KICAgICBib29sIGlzUmVkaXJlY3RlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVkaXJlY3RDb3VudDsgfQogCkBAIC05MCw2ICs5MywxMSBAQCBwcml2YXRlOgogICAgIHZv
aWQgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzJik+JiYp
OwogI2VuZGlmCiAKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IENvbnRlbnRTZWN1cml0eVBvbGlj
eUNsaWVudCBjYWxsYmFja3MuCisgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElk
ZW50aWZpZXIgPSAwKSBmaW5hbCB7IH07CisgICAgdm9pZCBzZW5kQ1NQVmlvbGF0aW9uUmVwb3J0
KFdlYkNvcmU6OlVSTCYmLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZpbmFsIHsgfTsKKyAg
ICB2b2lkIGRpc3BhdGNoU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChSZWY8V2ViQ29yZTo6
U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudD4mJikgZmluYWwgeyB9OworCiAgICAgV2ViQ29y
ZTo6RmV0Y2hPcHRpb25zIG1fb3B0aW9uczsKICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAgIFBBTDo6U2Vzc2lvbklEIG1f
c2Vzc2lvbklEOwpAQCAtMTA2LDcgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4gbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlcjsK
ICAgICBib29sIG1faXNTYW1lT3JpZ2luUmVxdWVzdCB7IHRydWUgfTsKICAgICBib29sIG1faXNT
aW1wbGVSZXF1ZXN0IHsgdHJ1ZSB9OwotICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50
U2VjdXJpdHlQb2xpY3k7CiAgICAgc2l6ZV90IG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKICAgICBX
ZWJDb3JlOjpVUkwgbV9wcmV2aW91c1VSTDsKICAgICBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3kg
bV9wcmVmbGlnaHRQb2xpY3k7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>