<?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>235951</bug_id>
          
          <creation_ts>2022-02-01 07:20:04 -0800</creation_ts>
          <short_desc>LibWebRTCCodecs should not need to create IOSurfaces</short_desc>
          <delta_ts>2022-02-02 05:22:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>235952</blocked>
    
    <blocked>235953</blocked>
    
    <blocked>235954</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1835952</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-01 07:20:04 -0800</bug_when>
    <thetext>LibWebRTCCodecs should not need to create IOSurfaces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835955</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-01 07:20:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/88326654&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835969</commentid>
    <comment_count>2</comment_count>
      <attachid>450528</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-01 08:04:41 -0800</bug_when>
    <thetext>Created attachment 450528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835993</commentid>
    <comment_count>3</comment_count>
      <attachid>450535</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-01 08:53:34 -0800</bug_when>
    <thetext>Created attachment 450535
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836003</commentid>
    <comment_count>4</comment_count>
      <attachid>450528</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-01 09:13:55 -0800</bug_when>
    <thetext>Comment on attachment 450528
Patch

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

&gt; Source/ThirdParty/libwebrtc/ChangeLog:9
&gt; +        Introduce helper routines to copy a webrtc VideoFrame in a bufer and get a CVPixelBuffer from a webrtc VideoFrame.

s/bufer/buffer/

&gt; Source/WebCore/platform/cocoa/SharedVideoFrameInfo.mm:187
&gt; +    if (CVPixelBufferGetWidthOfPlane(rawPixelBuffer, 1) != m_widthPlaneB || CVPixelBufferGetHeightOfPlane(rawPixelBuffer, 1) != m_heightPlaneB)

This leaves the buffer base address locked. Maybe use `makeScopeExit` to unlock instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836011</commentid>
    <comment_count>5</comment_count>
      <attachid>450539</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-01 09:20:33 -0800</bug_when>
    <thetext>Created attachment 450539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836015</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-01 09:22:16 -0800</bug_when>
    <thetext>(In reply to Eric Carlson from comment #4)
&gt; Comment on attachment 450528 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=450528&amp;action=review
&gt; 
&gt; &gt; Source/ThirdParty/libwebrtc/ChangeLog:9
&gt; &gt; +        Introduce helper routines to copy a webrtc VideoFrame in a bufer and get a CVPixelBuffer from a webrtc VideoFrame.
&gt; 
&gt; s/bufer/buffer/

Fixed

&gt; &gt; Source/WebCore/platform/cocoa/SharedVideoFrameInfo.mm:187
&gt; &gt; +    if (CVPixelBufferGetWidthOfPlane(rawPixelBuffer, 1) != m_widthPlaneB || CVPixelBufferGetHeightOfPlane(rawPixelBuffer, 1) != m_heightPlaneB)
&gt; 
&gt; This leaves the buffer base address locked. Maybe use `makeScopeExit` to
&gt; unlock instead?

Right, fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836093</commentid>
    <comment_count>7</comment_count>
      <attachid>450539</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-02-01 12:13:51 -0800</bug_when>
    <thetext>Comment on attachment 450539
Patch

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

&gt; Source/ThirdParty/libwebrtc/ChangeLog:9
&gt; +        Introduce helper routines to copy a webrtc VideoFrame in a memory buffer and get a CVPixelBuffer from a webrtc VideoFrame.

s/in a memory buffer/into a memory buffer/

&gt; Source/WebCore/platform/cocoa/SharedVideoFrameInfo.h:79
&gt; +

Nit: extra blank line.

&gt; Source/WebCore/platform/cocoa/SharedVideoFrameInfo.mm:210
&gt; +    CVPixelBufferUnlockBaseAddress(rawPixelBuffer, 0);

This is unnecessary.

&gt; Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:70
&gt;          for (auto decoder : decoders.values())

`auto&amp;`?

&gt; Source/WebKit/WebProcess/GPU/webrtc/SharedVideoFrame.cpp:71
&gt; +    if (!m_storage || m_storage-&gt;size() &lt; size) {

Should we also reallocate if m_storage is (significantly?) larger than needed?

&gt; Source/WebKit/WebProcess/GPU/webrtc/SharedVideoFrame.cpp:135
&gt; +

Nit: extra blank

&gt; Source/WebKit/WebProcess/GPU/webrtc/SharedVideoFrame.h:96
&gt; +

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836345</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-01 23:26:08 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/platform/cocoa/SharedVideoFrameInfo.mm:210
&gt; &gt; +    CVPixelBufferUnlockBaseAddress(rawPixelBuffer, 0);
&gt; 
&gt; This is unnecessary.

OK

&gt; &gt; Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:70
&gt; &gt;          for (auto decoder : decoders.values())
&gt; 
&gt; `auto&amp;`?

decoder is a pointer so auto is fine here.

&gt; &gt; Source/WebKit/WebProcess/GPU/webrtc/SharedVideoFrame.cpp:71
&gt; &gt; +    if (!m_storage || m_storage-&gt;size() &lt; size) {
&gt; 
&gt; Should we also reallocate if m_storage is (significantly?) larger than
&gt; needed?

Good question. I guess we should consider it.
What would be a reasonable heuristic?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836348</commentid>
    <comment_count>9</comment_count>
      <attachid>450616</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-01 23:28:06 -0800</bug_when>
    <thetext>Created attachment 450616
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836387</commentid>
    <comment_count>10</comment_count>
      <attachid>450628</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-02 02:23:57 -0800</bug_when>
    <thetext>Created attachment 450628
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836413</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-02 05:22:11 -0800</bug_when>
    <thetext>Committed r288951 (246680@main): &lt;https://commits.webkit.org/246680@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450628.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450528</attachid>
            <date>2022-02-01 08:04:41 -0800</date>
            <delta_ts>2022-02-01 08:58:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235951-20220201170439.patch</filename>
            <type>text/plain</type>
            <size>67047</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA1N2NlZjA3M2ZlZjIxZDA5ZWUyYWU1MzNmYjBmMWY0NGI5NDA0OWM1Li5jYWYw
ZjcyYWIzNjAxOWU5OWQwNjczNGJlY2UxZTg4MTFjODRlMWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMi0wMSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTGliV2ViUlRDQ29kZWNzIHNob3Vs
ZCBub3QgbmVlZCB0byBjcmVhdGUgSU9TdXJmYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1OTUxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
ODMyNjY1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbnRyb2R1Y2UgaGVscGVyIHJvdXRpbmVzIHRvIGNvcHkgYSB3ZWJydGMgVmlkZW9GcmFtZSBp
biBhIGJ1ZmVyIGFuZCBnZXQgYSBDVlBpeGVsQnVmZmVyIGZyb20gYSB3ZWJydGMgVmlkZW9GcmFt
ZS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwOgorICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwOgorICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2Rr
L1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tOgorCiAyMDIyLTAxLTI3ICBNaWNoYWVsIFNhYm9mZiAg
PG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIGNvbS5hcHBsZS5XZWJLaXQuV2ViQXV0aG4u
eHBjIGZhaWxzIHRvIGJ1aWxkIHdpdGggc3lzdGVtIGNvbnRlbnQgcGF0aApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGIzYzgwOWRjYTg5NWI0YjFjMjA1MDUwZjI5Mjg0N2ZiNGI3M2EyZDIuLjM1NzhlN2Q3OGNmYTA5
OTIwMTkwZmRkOTQ2MzBiZjYzNzFjZDZlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAyMi0wMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAg
TGliV2ViUlRDQ29kZWNzIHNob3VsZCBub3QgbmVlZCB0byBjcmVhdGUgSU9TdXJmYWNlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1OTUxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84ODMyNjY1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgU2hhcmVkVmlkZW9GcmFtZUluZm8gYXMg
YSBoZWxwZXIgY2xhc3MgdG8gc2VyaWFsaXplIGEgQ1ZQaXhlbEJ1ZmZlciBpbnRvIG1lbW9yeSBh
bmQgY3JlYXRlIGEgQ1ZQaXhlbEJ1ZmZlciBmcm9tIHJlYWRpbmcgbWVtb3J5LgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3Rpbmcgd2VicnRjIHRlc3RzLgorCisgICAgICAgICogU291cmNlc0Nv
Y29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8uaDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8ubW06IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oOgorCiAyMDIyLTAxLTMw
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0
cmVhbWVyXSBHc3RTdHJ1Y3R1cmUgdG8gSlNPTiBzZXJpYWxpemF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBh
MzQ1Mjk5ZjAzYTU1Yjk3ZTg5MTYwNDdhOGE2MjVjNTBhMjA5ODMuLjU0NWNjMDhiN2U2YzM2NTEx
MTYxNmRiZTkzYWQyOTIxYWJjYmYyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjIt
MDItMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIExpYldl
YlJUQ0NvZGVjcyBzaG91bGQgbm90IG5lZWQgdG8gY3JlYXRlIElPU3VyZmFjZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk1MQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODgzMjY2NTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIgYW5kIFNo
YXJlZFZpZGVvRnJhbWVSZWFkZXIgdG8gc3VwcG9ydCBzaGFyZWQgbWVtb3J5IHNlbmRpbmcgb2Yg
Q1ZQaXhlbEJ1ZmZlcnMgdGhhdCBhcmUgbm9uIElPU3VyZmFjZSBiYWNrZWQuCisgICAgICAgIFRv
IGRvIHNvLCB3ZSBtYWtlIHVzZSBvZiBTaGFyZWRWaWRlb0ZyYW1lSW5mbyBmcm9tIFdlYkNvcmUu
CisgICAgICAgIFdoYXQgd2UgZG8gaXM6CisgICAgICAgIC0gV2hlbiBnZXR0aW5nIGEgZnJhbWUs
IGFsbG9jYXRlIGEgc2hhcmVkIG1lbW9yeSB0aGF0IGlzIGJpZyBlbm91Z2ggdG8gY29weSBpdHMg
ZGF0YSBhbmQgaW5mbyBpbiBpdC4gQ3JlYXRlIGEgc2VtYXBob3JlIHRvIHN5bmMgcmVhZGVyIGFu
ZCB3cml0ZXIuCisgICAgICAgIC0gSWYgd2UgYWxsb2NhdGUgc2hhcmVkIG1lbW9yeS9zZW1waG9y
ZSwgc2VuZCB0aGVtIG92ZXIgSVBDIHRvIHRoZSBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyLgorICAg
ICAgICAtIFdhaXQgZm9yIHNlbWFwaG9yZSB0byB0ZWxsIHVzIHJlYWRlciBpcyBmaW5lIGZvciB3
cml0aW5nLgorICAgICAgICAtIFdyaXRlIFNoYXJlZFZpZGVvRnJhbWVJbmZvIGludG8gdGhlIHNo
YXJlZCBtZW1vcnksIHRoZW4gY29weSB0aGUgcmF3IGJ5dGVzIGludG8gdGhlIHNoYXJlZCBtZW1v
cnkuCisgICAgICAgIC0gU2VuZCB0aHJvdWdoIElQQyB0aGUgdmlkZW8gZnJhbWUsIG5vIE1hY1Nl
bmRSaWdodCBtZWFucyB0byByZWFkIHRoZSBzaGFyZWQgbWVtb3J5LgorICAgICAgICBPbiByZWFk
ZXIgc2lkZSwgZm9yIGV2ZXJ5IGZyYW1lIHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBJT1N1cmZhY2Us
IHdlIHJlYWQgdGhlIHNoYXJlZCBtZW1vcnksIGNyZWF0ZSBhbiBJT1N1cmZhY2UgZnJvbSBpdCBh
bmQgbm90aWZ5IFdlYlByb2Nlc3MgdGhhdCBpdCBjYW4gd3JpdGUgdGhlIG5leHQgZnJhbWUuCisK
KyAgICAgICAgSW4gbWVtb3J5IGJ1ZmZlcnMgYXJlIHVzZWQgZm9yIGJsYWNrIGZyYW1lcyBhdCBs
ZWFzdC4KKyAgICAgICAgd2VicnRjL3ZpZGVvLW11dGUuaHRtbCBjb3ZlcnMgdGhlIHBhdGNoLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbToK
KyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFt
ZS5jcHA6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRl
b0ZyYW1lLmg6IEFkZGVkLgorCiAyMDIyLTAxLTMxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlciBzaG91
bGQgb25seSBiZSB1c2VkIG9uY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAppbmRleCBkZmU4YmE4
N2M2YmVkNjg5ZjdmMDQ0ZDM4OGI3YzIxYjE5OTM2NTE4Li5jYTU0NzNhNjJhZDk4YmY2YjRlMGNl
YjYwMjg4NTY0NWQ5MGY3ZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCkBAIC0zMzAsNCAr
MzMwLDUgQEAgX19aTjNydGM2VGhyZWFkMTJzb2NrZXRzZXJ2ZXJFdgogX19aTjZ3ZWJydGMzMndl
YnJ0Y19zZXF1ZW5jZV9jaGVja2VyX2ludGVybmFsMTlTZXF1ZW5jZUNoZWNrZXJJbXBsQzJFdgog
X19aTkszcnRjMTRSVENDZXJ0aWZpY2F0ZTE3R2V0U1NMQ2VydGlmaWNhdGVFdgogX19aVFZONndl
YnJ0YzMwV3JhcHBpbmdBc3luY0Ruc1Jlc29sdmVyUmVzdWx0RQotCitfX1pONndlYnJ0YzIwcGl4
ZWxCdWZmZXJGcm9tRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFCitfX1pONndlYnJ0YzE0Y29weVZp
ZGVvRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFUGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4
cAppbmRleCBkZmU4YmE4N2M2YmVkNjg5ZjdmMDQ0ZDM4OGI3YzIxYjE5OTM2NTE4Li5jYTU0NzNh
NjJhZDk4YmY2YjRlMGNlYjYwMjg4NTY0NWQ5MGY3ZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5p
T1NzaW0uZXhwCkBAIC0zMzAsNCArMzMwLDUgQEAgX19aTjNydGM2VGhyZWFkMTJzb2NrZXRzZXJ2
ZXJFdgogX19aTjZ3ZWJydGMzMndlYnJ0Y19zZXF1ZW5jZV9jaGVja2VyX2ludGVybmFsMTlTZXF1
ZW5jZUNoZWNrZXJJbXBsQzJFdgogX19aTkszcnRjMTRSVENDZXJ0aWZpY2F0ZTE3R2V0U1NMQ2Vy
dGlmaWNhdGVFdgogX19aVFZONndlYnJ0YzMwV3JhcHBpbmdBc3luY0Ruc1Jlc29sdmVyUmVzdWx0
RQotCitfX1pONndlYnJ0YzIwcGl4ZWxCdWZmZXJGcm9tRnJhbWVFUktOU18xMFZpZGVvRnJhbWVF
CitfX1pONndlYnJ0YzE0Y29weVZpZGVvRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFUGgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJy
dGMubWFjLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9s
aWJ3ZWJydGMubWFjLmV4cAppbmRleCBkZmU4YmE4N2M2YmVkNjg5ZjdmMDQ0ZDM4OGI3YzIxYjE5
OTM2NTE4Li5jYTU0NzNhNjJhZDk4YmY2YjRlMGNlYjYwMjg4NTY0NWQ5MGY3ZDIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRj
Lm1hYy5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25z
L2xpYndlYnJ0Yy5tYWMuZXhwCkBAIC0zMzAsNCArMzMwLDUgQEAgX19aTjNydGM2VGhyZWFkMTJz
b2NrZXRzZXJ2ZXJFdgogX19aTjZ3ZWJydGMzMndlYnJ0Y19zZXF1ZW5jZV9jaGVja2VyX2ludGVy
bmFsMTlTZXF1ZW5jZUNoZWNrZXJJbXBsQzJFdgogX19aTkszcnRjMTRSVENDZXJ0aWZpY2F0ZTE3
R2V0U1NMQ2VydGlmaWNhdGVFdgogX19aVFZONndlYnJ0YzMwV3JhcHBpbmdBc3luY0Ruc1Jlc29s
dmVyUmVzdWx0RQotCitfX1pONndlYnJ0YzIwcGl4ZWxCdWZmZXJGcm9tRnJhbWVFUktOU18xMFZp
ZGVvRnJhbWVFCitfX1pONndlYnJ0YzE0Y29weVZpZGVvRnJhbWVFUktOU18xMFZpZGVvRnJhbWVF
UGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCmluZGV4IDNlYTA0
ZmQ1OGY0YzY1ZmVjMzU3NWJhNTAxZDM2MDk1YjY5YTYzZjcuLmEyM2ZhYTZlZDU3ZGY3YzMyMmM2
NzBiNzczNWNhYjgzYzY2MTU5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRV
dGlsaXRpZXMuaApAQCAtNDgsNiArNDgsOCBAQCBib29sIGlzSDI2NEhhcmR3YXJlRW5jb2RlckFs
bG93ZWQoKTsKIAogZW51bSBjbGFzcyBCdWZmZXJUeXBlIHsgSTQyMCwgSTAxMCB9OwogQ1ZQaXhl
bEJ1ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiwg
Y29uc3Qgc3RkOjpmdW5jdGlvbjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBCdWZm
ZXJUeXBlKT4mIGNyZWF0ZVBpeGVsQnVmZmVyKSBDRl9SRVRVUk5TX1JFVEFJTkVEOworQ1ZQaXhl
bEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJikgQ0ZfUkVU
VVJOU19SRVRBSU5FRDsKIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZm
ZXI+IHBpeGVsQnVmZmVyVG9GcmFtZShDVlBpeGVsQnVmZmVyUmVmKTsKK2Jvb2wgY29weVZpZGVv
RnJhbWUoY29uc3QgVmlkZW9GcmFtZSYsIHVpbnQ4X3QqKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRV
dGlsaXRpZXMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQppbmRleCA0OTgxMmU3ZDIzN2U4YWJhMWIyM2Q1
OTU0NDAxOGU4ODZlMDY4YTBjLi43ZjZmYmIxMWU3NjkzYWQ2NmRmOTI0YjkzZjRkMjhlN2VlODll
MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQpAQCAt
MTc1LDQgKzE3NSw1MiBAQCBDVlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZy
YW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBzdGQ6OgogICAgIHJldHVybiBDVlBp
eGVsQnVmZmVyUmV0YWluKHJ0Y1BpeGVsQnVmZmVyLnBpeGVsQnVmZmVyKTsKIH0KIAorQ1ZQaXhl
bEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSkK
K3sKKyAgICBhdXRvIGJ1ZmZlciA9IGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpOworICAgIGlm
IChidWZmZXItPnR5cGUoKSAhPSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gKmZyYW1lQnVmZmVyID0gc3RhdGljX2Nh
c3Q8T2JqQ0ZyYW1lQnVmZmVyKj4oYnVmZmVyLmdldCgpKS0+d3JhcHBlZF9mcmFtZV9idWZmZXIo
KTsKKyAgICBpZiAoIVtmcmFtZUJ1ZmZlciBpc0tpbmRPZkNsYXNzOltSVENDVlBpeGVsQnVmZmVy
IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byAqcnRjUGl4ZWxC
dWZmZXIgPSAoUlRDQ1ZQaXhlbEJ1ZmZlciAqKWZyYW1lQnVmZmVyOworICAgIHJldHVybiBDVlBp
eGVsQnVmZmVyUmV0YWluKHJ0Y1BpeGVsQnVmZmVyLnBpeGVsQnVmZmVyKTsKK30KKworYm9vbCBj
b3B5VmlkZW9GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSwgdWludDhfdCogZGF0YSkKK3sK
KyAgICBhdXRvIGJ1ZmZlciA9IGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpOworICAgIGlmIChi
dWZmZXItPnR5cGUoKSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHR5cGUgPSBidWZmZXItPnR5cGUoKTsKKyAgICBp
ZiAodHlwZSA9PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTQyMCkgeworICAgICAgICBhdXRv
KiBpNDIwRnJhbWUgPSBidWZmZXItPkdldEk0MjAoKTsKKyAgICAgICAgYXV0byogZGF0YVkgPSBk
YXRhOworICAgICAgICBhdXRvIHN0cmlkZVkgPSBpNDIwRnJhbWUtPndpZHRoKCk7CisgICAgICAg
IGF1dG8gc3RyaWRlVVYgPSBpNDIwRnJhbWUtPndpZHRoKCkgLyAyOworICAgICAgICBhdXRvKiBk
YXRhVVYgPSBkYXRhICsgKGk0MjBGcmFtZS0+d2lkdGgoKSAqIGk0MjBGcmFtZS0+aGVpZ2h0KCkp
OworICAgICAgICByZXR1cm4gIWxpYnl1djo6STQyMFRvTlYxMihpNDIwRnJhbWUtPkRhdGFZKCks
IGk0MjBGcmFtZS0+U3RyaWRlWSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpNDIwRnJhbWUtPkRhdGFVKCksIGk0MjBGcmFtZS0+U3RyaWRlVSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpNDIwRnJhbWUtPkRhdGFWKCksIGk0MjBGcmFtZS0+U3Ry
aWRlVigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWSwgc3RyaWRl
WSwgZGF0YVVWLCBzdHJpZGVVViwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aTQyMEZyYW1lLT53aWR0aCgpLCBpNDIwRnJhbWUtPmhlaWdodCgpKTsKKyAgICB9CisgICAgaWYg
KHR5cGUgPT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0kwMTApIHsKKyAgICAgICAgYXV0byog
aTAxMEZyYW1lID0gYnVmZmVyLT5HZXRJMDEwKCk7CisgICAgICAgIGF1dG8qIGRhdGFZID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGRhdGEpOworICAgICAgICBhdXRvIHN0cmlkZVkgPSBp
MDEwRnJhbWUtPndpZHRoKCk7CisgICAgICAgIGF1dG8gc3RyaWRlVVYgPSBpMDEwRnJhbWUtPndp
ZHRoKCkgLyAyOworICAgICAgICBhdXRvKiBkYXRhVVYgPSBkYXRhWSArIChpMDEwRnJhbWUtPndp
ZHRoKCkgKiBpMDEwRnJhbWUtPmhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuICFsaWJ5dXY6Okkw
MTBUb1AwMTAoaTAxMEZyYW1lLT5EYXRhWSgpLCBpMDEwRnJhbWUtPlN0cmlkZVkoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTAxMEZyYW1lLT5EYXRhVSgpLCBpMDEwRnJh
bWUtPlN0cmlkZVUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTAxMEZy
YW1lLT5EYXRhVigpLCBpMDEwRnJhbWUtPlN0cmlkZVYoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YVksIHN0cmlkZVksIGRhdGFVViwgc3RyaWRlVVYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkwMTBGcmFtZS0+d2lkdGgoKSwgaTAxMEZyYW1l
LT5oZWlnaHQoKSk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggNDEwYzZmNGFkNWIyMTU5MDQ1ZDE1MmM2NjFiNTBmMTUzNDY4NDY3
ZC4uNTg1ZWE0NTM3ZmNmNjU5ZDE4OTk0NzdjN2MyNTJiNGFjNzllMTA0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC0yNjgsNiArMjY4LDcgQEAgcGxhdGZvcm0vY29jb2EvUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KIHBsYXRmb3JtL2NvY29hL1Bvd2VyU291cmNlTm90
aWZpZXIubW0KIHBsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tCiBw
bGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbQorcGxhdGZvcm0v
Y29jb2EvU2hhcmVkVmlkZW9GcmFtZVV0aWxpdGllcy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2Nv
Y29hL1NlYXJjaFBvcHVwTWVudUNvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJD
b2NvYS5tbQogcGxhdGZvcm0vY29jb2EvU3lzdGVtVmVyc2lvbi5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIyOThiZGU3ZWJi
N2RlMjc4Mjg3NWJlMzE5MzE2MzM3YjMwZmI2NjEuLjNmNDNkN2IzODI2NmVjNjA3ZjE3YTk5Mjgy
NTk0Zjc5MmY5ZWM4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMTEsMTAgKzEyMTEsMTIgQEAKIAkJNDFEMTI5REIxRjNE
MTQzODAwRDE1RTQ3IC8qIEZldGNoSGVhZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGNTRGODMxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVh
ZGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxRDI4RDBEMjEzOUUwNTgwMEY0MjA2RiAvKiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQyOEQwQjIx
MzlFMDFEMDBGNDIwNkYgLyogTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuY3BwICovOyB9OwogCQk0
MUQ0MUM2NzIyNTY4NzRGMDA2OTc5NDIgLyogU2VydmljZVdvcmtlckludGVybmFscy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDQxQzY1MjI1Njg1
OTIwMDY5Nzk0MiAvKiBTZXJ2aWNlV29ya2VySW50ZXJuYWxzLm1tICovOyB9OworCQk0MURDMDRG
RTI3QTgzQzkzMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREMwNEZCMjdBODNDOTIwMDhDRjk2
OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxREU3QzdDMjIyREExNDMwMDUzMkI2NSAvKiBTdG9yYWdl
UXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MURFN0M3QjIyMkRBMTNFMDA1MzJCNjUgLyogU3RvcmFnZVF1b3RhTWFuYWdlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxREVFRkIw
MjcxOUIyOTAwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MURFRUZBQzI3MTlCMjg4MDBD
QjhENzQgLyogVmlkZW9GcmFtZVJlcXVlc3RDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3NCAv
KiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxREVFRkI0MjcxOUJBMTkwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRh
dGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MURFRkNCNjFFNTZDMUJEMDAwRDlFNUYgLyogSlNET01NYXBMaWtlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MURFRkNCNDFFNTZDMUI5MDAwRDlFNUYg
LyogSlNET01NYXBMaWtlLmggKi87IH07CisJCTQxREYyRDVFMjdBOTQ1MkEwMEYyNUEyMSAvKiBT
aGFyZWRWaWRlb0ZyYW1lSW5mby5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxREMwNEZEMjdBODNDOTMwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1l
SW5mby5tbSAqLzsgfTsKIAkJNDFFMTJFOUYyNEZFNzRFMjAwOTNGRkI0IC8qIFdlYlNvY2tldElk
ZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRTEyRTlEMjRGRTc0RTIwMDkzRkZCNCAvKiBXZWJTb2NrZXRJZGVudGlmaWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFFMUIxRDEwRkY1
OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJh
Y3RXb3JrZXIuaCAqLzsgfTsKIAkJNDFFMkYxOTkyNzRGQUVDRjAwQTA4OUVFIC8qIE5hdmlnYXRp
b25QcmVsb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFFMkYxOTcyNzRGQUVDQjAwQTA4OUVFIC8qIE5hdmlnYXRpb25QcmVsb2FkTWFu
YWdlci5oICovOyB9OwpAQCAtODkxOCw2ICs4OTIwLDggQEAKIAkJNDFENDFDNjUyMjU2ODU5MjAw
Njk3OTQyIC8qIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VySW50ZXJuYWxzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUQ1MUJCMjFFNEUyRTgxMDAxMzFBNUIgLyogTGliV2ViUlRD
QXVkaW9Gb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRD
QXVkaW9Gb3JtYXQuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb0Zvcm1hdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQ2QkQ5ODI1MUIzQURBMDA1NUE3QjcgLyog
SFRNTE1lZGlhRWxlbWVudCtBdWRpb091dHB1dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
IkhUTUxNZWRpYUVsZW1lbnQrQXVkaW9PdXRwdXQuaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFEQzA0RkIyN0E4M0M5MjAwOENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWVJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFZpZGVvRnJhbWVJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxREMwNEZEMjdBODNDOTMwMDhDRjk2
OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFNoYXJlZFZpZGVvRnJhbWVJbmZvLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MURFN0M3QTIyMkRBMTNEMDA1MzJCNjUgLyogU3RvcmFnZVF1b3RhTWFuYWdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlUXVvdGFN
YW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFERTdDN0IyMjJEQTEz
RTAwNTMyQjY1IC8qIFN0b3JhZ2VRdW90YU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RvcmFnZVF1b3RhTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MURFRUZBQzI3MTlCMjg4MDBDQjhENzQgLyogVmlkZW9GcmFtZVJlcXVlc3RDYWxs
YmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjgxNiw2ICsyNjgyMCw4IEBACiAJCQkJMEU3MDU4
RjMxQkM1Q0NENzAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNvY29hLmggKi8sCiAJCQkJMEU3
MDU4RUQxQkM1QkMxOTAwNDVBNTA3IC8qIFNlYXJjaFBvcHVwTWVudUNvY29hLm1tICovLAogCQkJ
CTFBNEE5NTUxMEI0RURDRkYwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXJDb2NvYS5tbSAqLywKKwkJ
CQk0MURDMDRGRDI3QTgzQzkzMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8ubW0gKi8s
CisJCQkJNDFEQzA0RkIyN0E4M0M5MjAwOENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWVJbmZvLmgg
Ki8sCiAJCQkJQzE2OTJERDQyM0QyM0FFMDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkuaCAqLywK
IAkJCQlDMTY5MkREMTIzRDIzQUJEMDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5tbSAqLywKIAkJ
CQk1RDU5NzVCMTE5NjM1RjExMDBEMDA4NzggLyogU3lzdGVtVmVyc2lvbi5oICovLApAQCAtMzU0
NDksNiArMzU0NTUsNyBAQAogCQkJCUE4MEU3QjBDMEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxU
aXRsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDc1NkQ0MTQyMzlBNEYwMDQxNDE2
MSAvKiBKU0hUTUxUcmFja0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBODVCMjExMEEx
QjI1ODcwMEQ4Qzg3QyAvKiBKU0hUTUxVTGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQxREMwNEZFMjdBODNDOTMwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkU0QUJDRDUxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25F
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTQxNzBDRDY4MjY5MDBGQURBNzUgLyog
SlNIVE1MVmlkZW9FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MUJFMjBEMzExRjRCQzMy
MDA5MTVERkEgLyogSlNJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzkwNjYsNiArMzkw
NzMsNyBAQAogCQkJCURFNUY4NDM4MUZBMTg2RTkwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzM1
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURFNUY4NDM5MUZBMTg2RTkwMDZEQjYzQSAvKiBVbmlm
aWVkU291cmNlMzM2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURFNUY4NDNBMUZBMTg2RTkwMDZE
QjYzQSAvKiBVbmlmaWVkU291cmNlMzM3LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxREYyRDVF
MjdBOTQ1MkEwMEYyNUEyMSAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5tbSBpbiBTb3VyY2VzICov
LAogCQkJCURFNUY4NDNCMUZBMTg2RTkwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzM4LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCURFNUY4NDNDMUZBMTg2RTkwMDZEQjYzQSAvKiBVbmlmaWVkU291
cmNlMzM5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURFNUY4NDNEMUZBMTg2RTkwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlMzQwLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGVlOGE5NmQyZTNhMjJiZmZjNTJmMzY5MGQ5MmJmZThmMTgyOGQ3NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLmgK
QEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZP
Uk0oQ09DT0EpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Nw
YW4uaD4KKwordHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciogQ1ZQaXhlbEJ1ZmZlclJlZjsKK3R5
cGVkZWYgc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqIENWUGl4ZWxCdWZmZXJQb29sUmVmOwor
CituYW1lc3BhY2Ugd2VicnRjIHsKK2NsYXNzIFZpZGVvRnJhbWU7Cit9CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkVmlkZW9GcmFtZUluZm8geworcHVibGljOgorICAgIFNo
YXJlZFZpZGVvRnJhbWVJbmZvKCkgPSBkZWZhdWx0OworICAgIFNoYXJlZFZpZGVvRnJhbWVJbmZv
KE9TVHlwZSwgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgdWludDMyX3QgYnl0ZXNQ
ZXJSb3csIHVpbnQzMl90IHdpZHRoUGxhbmVCID0gMCwgdWludDMyX3QgaGVpZ2h0UGxhbmVCID0g
MCwgdWludDMyX3QgYnl0ZXNQZXJSb3dQbGFuZUIgPSAwKTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZW5jb2RlKHVpbnQ4X3QqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lSW5mbz4gZGVjb2RlKFNwYW48Y29uc3QgdWludDhfdD4p
OworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNoYXJlZFZpZGVvRnJhbWVJbmZvIGZyb21D
VlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
d3JpdGVQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmLCB1aW50OF90KiBkYXRhKTsKKworI2lm
IFVTRShMSUJXRUJSVEMpCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNoYXJlZFZpZGVvRnJh
bWVJbmZvIGZyb21WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgd3JpdGVWaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFt
ZSYsIHVpbnQ4X3QqIGRhdGEpOworI2VuZGlmCisKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qg
c3RvcmFnZVNpemUoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21NZW1vcnkoY29uc3QgdWludDhfdCog
ZGF0YSwgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgPSBudWxscHRyKTsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNSZWFkV3JpdGVTdXBwb3J0ZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclBvb2xSZWY+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXJQ
b29sKCkgY29uc3Q7CisKKyAgICBPU1R5cGUgYnVmZmVyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyVHlwZTsgfQorICAgIHVpbnQzMl90IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0
aDsgfTsKKyAgICB1aW50MzJfdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfTsK
KworcHJpdmF0ZToKKyAgICBPU1R5cGUgbV9idWZmZXJUeXBlIHsgMCB9OworICAgIHVpbnQzMl90
IG1fd2lkdGggeyAwIH07CisgICAgdWludDMyX3QgbV9oZWlnaHQgeyAwIH07CisgICAgdWludDMy
X3QgbV9ieXRlc1BlclJvdyB7IDAgfTsKKyAgICB1aW50MzJfdCBtX3dpZHRoUGxhbmVCIHsgMCB9
OworICAgIHVpbnQzMl90IG1faGVpZ2h0UGxhbmVCIHsgMCB9OworICAgIHVpbnQzMl90IG1fYnl0
ZXNQZXJSb3dQbGFuZUIgeyAwIH07Cit9OworCisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IFNo
YXJlZFZpZGVvRnJhbWVJbmZvRW5jb2RpbmdMZW5ndGggPSBzaXplb2YoU2hhcmVkVmlkZW9GcmFt
ZUluZm8pOworCitpbmxpbmUgU2hhcmVkVmlkZW9GcmFtZUluZm86OlNoYXJlZFZpZGVvRnJhbWVJ
bmZvKE9TVHlwZSBidWZmZXJUeXBlLCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCB1
aW50MzJfdCBieXRlc1BlclJvdywgdWludDMyX3Qgd2lkdGhQbGFuZUIsIHVpbnQzMl90IGhlaWdo
dFBsYW5lQiwgdWludDMyX3QgYnl0ZXNQZXJSb3dQbGFuZUIpCisgICAgOiBtX2J1ZmZlclR5cGUo
YnVmZmVyVHlwZSkKKyAgICAsIG1fd2lkdGgod2lkdGgpCisgICAgLCBtX2hlaWdodChoZWlnaHQp
CisgICAgLCBtX2J5dGVzUGVyUm93KGJ5dGVzUGVyUm93KQorICAgICwgbV93aWR0aFBsYW5lQih3
aWR0aFBsYW5lQikKKyAgICAsIG1faGVpZ2h0UGxhbmVCKGhlaWdodFBsYW5lQikKKyAgICAsIG1f
Ynl0ZXNQZXJSb3dQbGFuZUIoYnl0ZXNQZXJSb3dQbGFuZUIpCit7Cit9CisKK30KKworI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZDUzNjVkZjYx
MWM0YzU3MDQ2OWVhYzE5ZjA1NzhjYmIxNzJhYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5tbQpAQCAtMCwwICsx
LDI5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lSW5mby5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJD
VlV0aWxpdGllcy5oIgorI2luY2x1ZGUgIklPU3VyZmFjZS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudENvZGVycy5oPgorCisjaWYgVVNFKEFDQ0VMRVJBVEUpCisjaW5jbHVkZSA8QWNjZWxl
cmF0ZS9BY2NlbGVyYXRlLmg+CisjZW5kaWYKKworI2lmIFVTRShMSUJXRUJSVEMpCisKK0FMTE9X
X1VOVVNFRF9QQVJBTUVURVJTX0JFR0lOCisjaW5jbHVkZSA8d2VicnRjL2FwaS92aWRlby92aWRl
b19mcmFtZS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5o
PgorQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfRU5ECisKKyNlbmRpZiAvLyBVU0UoTElCV0VCUlRD
KQorCisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVkZSAiQ29y
ZVZpZGVvU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTaGFyZWRWaWRlb0Zy
YW1lSW5mbyBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZnJvbUNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlcikKK3sKKyAgICBhdXRvIHR5cGUgPSBDVlBpeGVsQnVmZmVyR2V0
UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKTsKKyAgICBpZiAodHlwZSA9PSBrQ1ZQaXhlbEZv
cm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZSB8fCB0eXBlID09IGtDVlBpeGVs
Rm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UpCisgICAgICAgIHJldHVybiB7
IHR5cGUsIHN0YXRpY19jYXN0PHVpbnQzMl90PihDVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBsYW5l
KHBpeGVsQnVmZmVyLCAwKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihDVlBpeGVsQnVmZmVyR2V0
SGVpZ2h0T2ZQbGFuZShwaXhlbEJ1ZmZlciwgMCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oQ1ZQ
aXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbEJ1ZmZlciwgMCkpLCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFuZShwaXhlbEJ1ZmZlciwg
MSkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodE9mUGxhbmUo
cGl4ZWxCdWZmZXIsIDEpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KENWUGl4ZWxCdWZmZXJHZXRC
eXRlc1BlclJvd09mUGxhbmUocGl4ZWxCdWZmZXIsIDEpKSB9OworICAgIHJldHVybiB7IHR5cGUs
IHN0YXRpY19jYXN0PHVpbnQzMl90PihDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIp
KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxCdWZm
ZXIpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvdyhw
aXhlbEJ1ZmZlcikpIH07Cit9CisKK2Jvb2wgU2hhcmVkVmlkZW9GcmFtZUluZm86OmlzUmVhZFdy
aXRlU3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9idWZmZXJUeXBlID09IGtDVlBp
eGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJWaWRlb1JhbmdlCisjaWYgVVNFKEFDQ0VM
RVJBVEUpCisgICAgICAgICAgICB8fCBtX2J1ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBl
XzMyQkdSQQorI2VuZGlmCisgICAgICAgICAgICB8fCBtX2J1ZmZlclR5cGUgPT0ga0NWUGl4ZWxG
b3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZQorICAgICAgICAgICAgfHwgbV9i
dWZmZXJUeXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJh
bmdlOworfQorCitzaXplX3QgU2hhcmVkVmlkZW9GcmFtZUluZm86OnN0b3JhZ2VTaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gKG1fYnl0ZXNQZXJSb3cgKiBtX2hlaWdodCkgKyAobV9ieXRlc1Bl
clJvd1BsYW5lQiAqIG1faGVpZ2h0UGxhbmVCKSArIHNpemVvZihTaGFyZWRWaWRlb0ZyYW1lSW5m
byk7Cit9CisKK3ZvaWQgU2hhcmVkVmlkZW9GcmFtZUluZm86OmVuY29kZSh1aW50OF90KiBkZXN0
aW5hdGlvbikKK3sKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7CisgICAg
ZW5jb2RlciA8PCAodWludDMyX3QpbV9idWZmZXJUeXBlOworICAgIGVuY29kZXIgPDwgbV93aWR0
aDsKKyAgICBlbmNvZGVyIDw8IG1faGVpZ2h0OworICAgIGVuY29kZXIgPDwgbV9ieXRlc1BlclJv
dzsKKyAgICBlbmNvZGVyIDw8IG1fd2lkdGhQbGFuZUI7CisgICAgZW5jb2RlciA8PCBtX2hlaWdo
dFBsYW5lQjsKKyAgICBlbmNvZGVyIDw8IG1fYnl0ZXNQZXJSb3dQbGFuZUI7CisgICAgQVNTRVJU
KHNpemVvZihTaGFyZWRWaWRlb0ZyYW1lSW5mbykgPT0gZW5jb2Rlci5idWZmZXJTaXplKCkpOwor
ICAgIHN0ZDo6bWVtY3B5KGRlc3RpbmF0aW9uLCBlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1
ZmZlclNpemUoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZUluZm8+IFNo
YXJlZFZpZGVvRnJhbWVJbmZvOjpkZWNvZGUoU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKQorewor
ICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihzcGFuKTsKKworICAgIHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IGJ1ZmZlclR5cGU7CisgICAgZGVjb2RlciA+PiBidWZmZXJUeXBl
OworICAgIGlmICghYnVmZmVyVHlwZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHdpZHRoOworICAgIGRlY29kZXIgPj4gd2lkdGg7
CisgICAgaWYgKCF3aWR0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGhlaWdodDsKKyAgICBkZWNvZGVyID4+IGhlaWdodDsKKyAg
ICBpZiAoIWhlaWdodCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IGJ5dGVzUGVyUm93OworICAgIGRlY29kZXIgPj4gYnl0ZXNQZXJS
b3c7CisgICAgaWYgKCFieXRlc1BlclJvdykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHdpZHRoUGxhbmVCOworICAgIGRlY29kZXIg
Pj4gd2lkdGhQbGFuZUI7CisgICAgaWYgKCF3aWR0aFBsYW5lQikKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGhlaWdodFBsYW5lQjsK
KyAgICBkZWNvZGVyID4+IGhlaWdodFBsYW5lQjsKKyAgICBpZiAoIWhlaWdodFBsYW5lQikKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGJ5dGVzUGVyUm93UGxhbmVCOworICAgIGRlY29kZXIgPj4gYnl0ZXNQZXJSb3dQbGFuZUI7Cisg
ICAgaWYgKCFieXRlc1BlclJvd1BsYW5lQikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIHJldHVybiBTaGFyZWRWaWRlb0ZyYW1lSW5mbyB7ICpidWZmZXJUeXBlLCAqd2lkdGgs
ICpoZWlnaHQsICpieXRlc1BlclJvdyAsICp3aWR0aFBsYW5lQiwgKmhlaWdodFBsYW5lQiwgKmJ5
dGVzUGVyUm93UGxhbmVCIH07Cit9CisKK1JldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBTaGFy
ZWRWaWRlb0ZyYW1lSW5mbzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tTWVtb3J5KGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIENWUGl4ZWxCdWZmZXJQb29sUmVmIGJ1ZmZlclBvb2wpCit7CisgICAgQVNTRVJU
KGlzUmVhZFdyaXRlU3VwcG9ydGVkKCkpOworICAgIGlmIChtX2J1ZmZlclR5cGUgPT0ga0NWUGl4
ZWxGb3JtYXRUeXBlXzMyQkdSQSkgeworI2lmIFVTRShBQ0NFTEVSQVRFKQorICAgICAgICBJbnRT
aXplIHNpemUgeyBzdGF0aWNfY2FzdDxpbnQ+KG1fd2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KG1f
aGVpZ2h0KSB9OworICAgICAgICBhdXRvIGlvU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHNp
emUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBJT1N1cmZhY2U6OkZvcm1hdDo6QkdS
QSk7CisKKyAgICAgICAgSU9TdXJmYWNlOjpMb2NrZXIgbG9jaygqaW9TdXJmYWNlKTsKKyAgICAg
ICAgdkltYWdlX0J1ZmZlciBzcmM7CisgICAgICAgIHNyYy53aWR0aCA9IG1fd2lkdGg7CisgICAg
ICAgIHNyYy5oZWlnaHQgPSBtX2hlaWdodDsKKyAgICAgICAgc3JjLnJvd0J5dGVzID0gbV9ieXRl
c1BlclJvdzsKKyAgICAgICAgc3JjLmRhdGEgPSBjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRhKTsK
KworICAgICAgICB2SW1hZ2VfQnVmZmVyIGRlc3Q7CisgICAgICAgIGRlc3Qud2lkdGggPSBtX3dp
ZHRoOworICAgICAgICBkZXN0LmhlaWdodCA9IG1faGVpZ2h0OworICAgICAgICBkZXN0LnJvd0J5
dGVzID0gaW9TdXJmYWNlLT5ieXRlc1BlclJvdygpOworICAgICAgICBkZXN0LmRhdGEgPSBsb2Nr
LnN1cmZhY2VCYXNlQWRkcmVzcygpOworCisgICAgICAgIHZJbWFnZVVucHJlbXVsdGlwbHlEYXRh
X0JHUkE4ODg4KCZzcmMsICZkZXN0LCBrdkltYWdlTm9GbGFncyk7CisKKyAgICAgICAgYXV0byBw
aXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIoaW9TdXJmYWNlLT5zdXJm
YWNlKCkpOworICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKCpwaXhlbEJ1ZmZlcik7CisjZWxzZQorICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgImNyZWF0ZUlPU3VyZmFjZUZyb21TaGFyZWRN
ZW1vcnkgY2Fubm90IGNvbnZlcnQgdG8gSU9TdXJmYWNlIik7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworI2VuZGlmCisgICAgfQorCisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiByYXdQaXhlbEJ1ZmZl
ciA9IG51bGxwdHI7CisgICAgaWYgKGJ1ZmZlclBvb2wpIHsKKyAgICAgICAgYXV0byBzdGF0dXMg
PSBDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGJ1ZmZlclBvb2wsICZyYXdQaXhlbEJ1ZmZlcik7CisgICAgICAgIGlmIChzdGF0dXMgIT0gbm9F
cnIgfHwgIXJhd1BpeGVsQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAgICAgQVNTRVJUKENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUocmF3UGl4ZWxCdWZmZXIs
IDApID09IG1fd2lkdGgpOworICAgICAgICBBU1NFUlQoQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodE9m
UGxhbmUocmF3UGl4ZWxCdWZmZXIsIDApID09IG1faGVpZ2h0KTsKKyAgICAgICAgQVNTRVJUKENW
UGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocmF3UGl4ZWxCdWZmZXIpID09IG1fYnVmZmVy
VHlwZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVy
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fd2lkdGgsIG1faGVpZ2h0LCBtX2J1ZmZlclR5
cGUsIG51bGxwdHIsICZyYXdQaXhlbEJ1ZmZlcik7CisgICAgICAgIGlmIChzdGF0dXMgIT0gbm9F
cnIgfHwgIXJhd1BpeGVsQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0Q0YocmF3UGl4ZWxCdWZmZXIpOworICAg
IGF1dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhyYXdQaXhlbEJ1ZmZl
ciwgMCk7CisgICAgaWYgKHN0YXR1cyAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBpZiAoQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFuZShyYXdQaXhlbEJ1ZmZlciwg
MSkgIT0gbV93aWR0aFBsYW5lQiB8fCBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQbGFuZShyYXdQ
aXhlbEJ1ZmZlciwgMSkgIT0gbV9oZWlnaHRQbGFuZUIpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgYXV0byogcGxhbmVBID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KENWUGl4ZWxCdWZm
ZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUocmF3UGl4ZWxCdWZmZXIsIDApKTsKKyAgICB1aW50MzJf
dCBieXRlc1BlclJvd1BsYW5lQSA9IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUo
cmF3UGl4ZWxCdWZmZXIsIDApOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2hlaWdo
dDsgKytpKSB7CisgICAgICAgIHN0ZDo6bWVtY3B5KHBsYW5lQSwgZGF0YSwgc3RkOjptaW4oYnl0
ZXNQZXJSb3dQbGFuZUEsIG1fYnl0ZXNQZXJSb3cpKTsKKyAgICAgICAgcGxhbmVBICs9IGJ5dGVz
UGVyUm93UGxhbmVBOworICAgICAgICBkYXRhICs9IG1fYnl0ZXNQZXJSb3c7CisgICAgfQorCisg
ICAgYXV0byogcGxhbmVCID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KENWUGl4ZWxCdWZmZXJHZXRC
YXNlQWRkcmVzc09mUGxhbmUocmF3UGl4ZWxCdWZmZXIsIDEpKTsKKyAgICB1aW50MzJfdCBieXRl
c1BlclJvd1BsYW5lQiA9IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUocmF3UGl4
ZWxCdWZmZXIsIDEpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2hlaWdodFBsYW5l
QjsgKytpKSB7CisgICAgICAgIHN0ZDo6bWVtY3B5KHBsYW5lQiwgZGF0YSwgc3RkOjptaW4oYnl0
ZXNQZXJSb3dQbGFuZUIsIG1fYnl0ZXNQZXJSb3dQbGFuZUIpKTsKKyAgICAgICAgcGxhbmVCICs9
IGJ5dGVzUGVyUm93UGxhbmVCOworICAgICAgICBkYXRhICs9IG1fYnl0ZXNQZXJSb3dQbGFuZUI7
CisgICAgfQorCisgICAgQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNzKHJhd1BpeGVsQnVm
ZmVyLCAwKTsKKyAgICByZXR1cm4gcGl4ZWxCdWZmZXI7Cit9CisKK2Jvb2wgU2hhcmVkVmlkZW9G
cmFtZUluZm86OndyaXRlUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwg
dWludDhfdCogZGF0YSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IENWUGl4ZWxCdWZmZXJMb2NrQmFz
ZUFkZHJlc3MocGl4ZWxCdWZmZXIsIGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seSk7CisgICAg
aWYgKHJlc3VsdCAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBhdXRvIHNjb3BlID0gbWFrZVNjb3BlRXhpdChbJnBpeGVsQnVmZmVyXSB7CisgICAgICAg
IENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhwaXhlbEJ1ZmZlciwga0NWUGl4ZWxCdWZm
ZXJMb2NrX1JlYWRPbmx5KTsKKyAgICB9KTsKKworICAgIGVuY29kZShkYXRhKTsKKyAgICBkYXRh
ICs9IHNpemVvZihTaGFyZWRWaWRlb0ZyYW1lSW5mbyk7CisKKyAgICBpZiAobV9idWZmZXJUeXBl
ID09IGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIHsKKyNpZiBVU0UoQUNDRUxFUkFURSkKKyAg
ICAgICAgdkltYWdlX0J1ZmZlciBzcmM7CisgICAgICAgIHNyYy53aWR0aCA9IG1fd2lkdGg7Cisg
ICAgICAgIHNyYy5oZWlnaHQgPSBtX2hlaWdodDsKKyAgICAgICAgc3JjLnJvd0J5dGVzID0gbV9i
eXRlc1BlclJvdzsKKyAgICAgICAgc3JjLmRhdGEgPSBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJl
c3MocGl4ZWxCdWZmZXIpOworCisgICAgICAgIHZJbWFnZV9CdWZmZXIgZGVzdDsKKyAgICAgICAg
ZGVzdC53aWR0aCA9IG1fd2lkdGg7CisgICAgICAgIGRlc3QuaGVpZ2h0ID0gbV9oZWlnaHQ7Cisg
ICAgICAgIGRlc3Qucm93Qnl0ZXMgPSBtX2J5dGVzUGVyUm93OworICAgICAgICBkZXN0LmRhdGEg
PSBkYXRhOworCisgICAgICAgIHZJbWFnZVVucHJlbXVsdGlwbHlEYXRhX0JHUkE4ODg4KCZzcmMs
ICZkZXN0LCBrdkltYWdlTm9GbGFncyk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZWxzZQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICB9CisKKyAgICBjb25zdCB1aW50OF90
ICpwbGFuZUEgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90ICo+KENWUGl4ZWxCdWZmZXJHZXRC
YXNlQWRkcmVzc09mUGxhbmUocGl4ZWxCdWZmZXIsIDApKTsKKyAgICBjb25zdCB1aW50OF90ICpw
bGFuZUIgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90ICo+KENWUGl4ZWxCdWZmZXJHZXRCYXNl
QWRkcmVzc09mUGxhbmUocGl4ZWxCdWZmZXIsIDEpKTsKKworICAgIHNpemVfdCBwbGFuZUFTaXpl
ID0gbV9oZWlnaHQgKiBtX2J5dGVzUGVyUm93OworICAgIHN0ZDo6bWVtY3B5KGRhdGEsIHBsYW5l
QSwgcGxhbmVBU2l6ZSk7CisgICAgc2l6ZV90IHBsYW5lQlNpemUgPSBtX2hlaWdodFBsYW5lQiAq
IG1fYnl0ZXNQZXJSb3dQbGFuZUI7CisgICAgc3RkOjptZW1jcHkoZGF0YSArIHBsYW5lQVNpemUs
IHBsYW5lQiwgcGxhbmVCU2l6ZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJQb29sUmVmPiBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlclBvb2woKSBjb25zdAoreworICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlSU9TdXJm
YWNlQ1ZQaXhlbEJ1ZmZlclBvb2wobV93aWR0aCwgbV9oZWlnaHQsIG1fYnVmZmVyVHlwZSk7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuICpyZXN1bHQ7
Cit9CisKKyNpZiBVU0UoTElCV0VCUlRDKQorU2hhcmVkVmlkZW9GcmFtZUluZm8gU2hhcmVkVmlk
ZW9GcmFtZUluZm86OmZyb21WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJh
bWUpCit7CisgICAgYXV0byBidWZmZXIgPSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKTsKKyAg
ICBpZiAoYnVmZmVyLT50eXBlKCkgPT0gd2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjpr
TmF0aXZlKQorICAgICAgICByZXR1cm4gU2hhcmVkVmlkZW9GcmFtZUluZm8geyB9OworCisgICAg
YXV0byB0eXBlID0gYnVmZmVyLT50eXBlKCk7CisKKyAgICBpZiAodHlwZSA9PSB3ZWJydGM6OlZp
ZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJNDIwKQorICAgICAgICByZXR1cm4gU2hhcmVkVmlkZW9G
cmFtZUluZm8geyBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdl
LAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpLCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUuaGVpZ2h0KCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
ZnJhbWUud2lkdGgoKSksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUu
d2lkdGgoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS5oZWlnaHQoKSksIHN0YXRpY19j
YXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSAvIDIgfTsKKworICAgIGlmICh0eXBlID09IHdl
YnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0kwMTApCisgICAgICAgIHJldHVybiBTaGFy
ZWRWaWRlb0ZyYW1lSW5mbyB7IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFy
RnVsbFJhbmdlLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRo
KCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUuaGVpZ2h0KCkpLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZnJhbWUud2lkdGgoKSAqIDIpLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGZyYW1lLndpZHRoKCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUuaGVpZ2h0
KCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSkgfTsKKworICAgIHJldHVy
biBTaGFyZWRWaWRlb0ZyYW1lSW5mbyB7IH07Cit9CisKK2Jvb2wgU2hhcmVkVmlkZW9GcmFtZUlu
Zm86OndyaXRlVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLCB1aW50
OF90KiBkYXRhKQoreworICAgIEFTU0VSVChtX2J1ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRU
eXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZSB8fCBtX2J1ZmZlclR5cGUgPT0ga0NWUGl4
ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2UpOworICAgIHJldHVybiB3
ZWJydGM6OmNvcHlWaWRlb0ZyYW1lKGZyYW1lLCBkYXRhKTsKK30KKyNlbmRpZgorCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNw
cAppbmRleCBiNTAzOTgxNzUzMDQwNWFiMDBhYjBiYzcyODk3NTc0ZTNkOGMzNWU4Li5jNWIyZGRm
OWU2Y2M0MDhhMGM4ZjYyMDAyOWExYWIxY2NmN2MxMzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCkBAIC04NSw3
ICs4NSw3IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gdHJhbnNm
ZXJCR1JBUGl4ZWxCdWZmZXJUb0lPU3VyZmFjZShDVlBpCiAjZW5kaWYKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKE1lZGlh
U2FtcGxlJiBzYW1wbGUpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90
ZVZpZGVvU2FtcGxlOjpjcmVhdGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgU2hvdWxkQ2hlY2tGb3JJ
T1N1cmZhY2Ugc2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2UpCiB7CiAgICAgQVNTRVJUKHNhbXBsZS5w
bGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gUGxhdGZvcm1TYW1wbGU6OkNNU2FtcGxlQnVmZmVyVHlw
ZSk7CiAKQEAgLTk3LDcgKzk3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxl
PiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKE1lZGlhU2FtcGxlJiBzYW1wbGUKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGlvU3VyZmFjZTsKICAgICBhdXRvIHN1cmZhY2UgPSBD
VlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlKGltYWdlQnVmZmVyLmdldCgpKTsKLSAgICBpZiAoIXN1
cmZhY2UpIHsKKyAgICBpZiAoIXN1cmZhY2UgJiYgc2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2UgPT0g
U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6OlllcykgewogICAgICAgICAvLyBTcGVjaWFsIGNhc2Ug
Zm9yIGNhbnZhcyBkYXRhIHRoYXQgaXMgUkdCQSwgbm90IElPU3VyZmFjZSBiYWNrZWQuCiAgICAg
ICAgIGF1dG8gcGl4ZWxGb3JtYXRUeXBlID0gQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlw
ZShpbWFnZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmIChwaXhlbEZvcm1hdFR5cGUgIT0ga0NW
UGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgewpAQCAtMTE1LDEwICsxMTUsMTAgQEAgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKE1lZGlh
U2FtcGxlJiBzYW1wbGUKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2Ft
cGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgV1RGTW92ZShpbWFnZUJ1ZmZlciks
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgp
LCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpKSk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gUmVtb3RlVmlkZW9TYW1wbGU6OmNy
ZWF0ZShSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiBpbWFnZUJ1ZmZlciwgTWVkaWFUaW1l
JiYgcHJlc2VudGF0aW9uVGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24p
CitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxlOjpj
cmVhdGUoUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYgaW1hZ2VCdWZmZXIsIE1lZGlhVGlt
ZSYmIHByZXNlbnRhdGlvblRpbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9u
LCBTaG91bGRDaGVja0ZvcklPU3VyZmFjZSBzaG91bGRDaGVja0ZvcklPU3VyZmFjZSkKIHsKICAg
ICBhdXRvIHN1cmZhY2UgPSBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlKGltYWdlQnVmZmVyLmdl
dCgpKTsKLSAgICBpZiAoIXN1cmZhY2UpIHsKKyAgICBpZiAoIXN1cmZhY2UgJiYgc2hvdWxkQ2hl
Y2tGb3JJT1N1cmZhY2UgPT0gU2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6OlllcykgewogICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIlJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGU6IENW
UGl4ZWxCdWZmZXJHZXRJT1N1cmZhY2UgcmV0dXJuZWQgbnVsbHB0ciIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAppbmRleCAwODFlMjM1NjVhY2M0ODQwYTgwNGM3ZDA3
NGU2ZGYyMDU5ODM5ZjE3Li5jZDEwZDljMDVjYjhhMWQ4NmU2NDNkNWEzZmFhYWU1Yzc0ZjA4Nzk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZp
ZGVvU2FtcGxlLmgKQEAgLTQ2LDkgKzQ2LDEyIEBAIHB1YmxpYzoKICAgICBSZW1vdGVWaWRlb1Nh
bXBsZSYgb3BlcmF0b3I9KFJlbW90ZVZpZGVvU2FtcGxlJiYpID0gZGVmYXVsdDsKICAgICB+UmVt
b3RlVmlkZW9TYW1wbGUoKSA9IGRlZmF1bHQ7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBjcmVhdGUoTWVkaWFTYW1wbGUmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2Ft
cGxlPiBjcmVhdGUoUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYsIE1lZGlhVGltZSYmIHBy
ZXNlbnRhdGlvblRpbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uID0gTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb246Ok5vbmUpOworICAgIGVudW0gY2xhc3MgU2hvdWxkQ2hlY2tGb3JJT1N1
cmZhY2UgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gY3JlYXRlKE1lZGlhU2FtcGxlJiwgU2hvdWxkQ2hlY2tG
b3JJT1N1cmZhY2UgPSBTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6WWVzKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBjcmVhdGUo
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYsIE1lZGlhVGltZSYmIHByZXNlbnRhdGlvblRp
bWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246Ok5vbmUsIFNob3VsZENoZWNrRm9ySU9TdXJmYWNlID0gU2hvdWxkQ2hlY2tGb3JJT1N1cmZh
Y2U6Olllcyk7CisKICAgICBXRUJDT1JFX0VYUE9SVCBJT1N1cmZhY2VSZWYgc3VyZmFjZSgpIGNv
bnN0OworICAgIENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2ltYWdlQnVmZmVyLmdldCgpOyB9CiAKICAgICB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5KGNv
bnN0IFByb2Nlc3NJZGVudGl0eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgKaW5kZXggZWVjOGQ2NmZhYWJhZmI3
OTliMGZkZWRjNDU5YzRkYjVhN2YyMmUzYi4uYzc3MmNiNzc2MGYyZDU4MjlhZmNkMmI4NWY1OTEz
YTMwYzAwNzQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaApAQCAtMzEsMTEgKzMxLDE0IEBACiAjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIK
KyNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KIAog
bmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKK2NsYXNz
IFNlbWFwaG9yZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNiArNTMsNyBAQCB1
c2luZyBMb2NhbEVuY29kZXIgPSB2b2lkKjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgU2hhcmVkVmlkZW9GcmFtZVJlYWRlcjsK
IAogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHkgOiBwdWJsaWMgSVBDOjpDb25uZWN0aW9uOjpU
aHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVkIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKQEAgLTgxLDE2ICs4NSwyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZUVu
Y29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWln
aHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQgbWF4Qml0cmF0ZSwgdW5zaWduZWQg
bWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJhbWVyYXRlKTsKICAgICB2b2lkIGVuY29kZUZyYW1l
KFJUQ0VuY29kZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmLCB1aW50
MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSk7CiAgICAgdm9pZCBz
ZXRFbmNvZGVSYXRlcyhSVENFbmNvZGVySWRlbnRpZmllciwgdWludDMyX3QgYml0UmF0ZSwgdWlu
dDMyX3QgZnJhbWVSYXRlKTsKKyAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUo
UlRDRW5jb2RlcklkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYpOworICAgIHZvaWQgc2V0U2hh
cmVkVmlkZW9GcmFtZU1lbW9yeShSVENFbmNvZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUmKTsKICAgICB2b2lkIHNldFJUQ0xvZ2dpbmdMZXZlbChXVEZMb2dMZXZl
bCk7CiAKLSAgICBDRkRpY3Rpb25hcnlSZWYgaW9TdXJmYWNlUGl4ZWxCdWZmZXJDcmVhdGlvbk9w
dGlvbnMoSU9TdXJmYWNlUmVmKTsKLQogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKIAorICAgIHN0cnVjdCBFbmNvZGVyIHsKKyAgICAg
ICAgd2VicnRjOjpMb2NhbEVuY29kZXIgd2VicnRjRW5jb2RlciB7IG51bGxwdHIgfTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI+IGZyYW1lUmVhZGVyOwor
ICAgIH07CisgICAgRW5jb2RlciogZmluZEVuY29kZXJXaXRob3V0TG9jayhSVENFbmNvZGVySWRl
bnRpZmllcik7CisKICAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAgIEhhc2hNYXA8UlRDRGVj
b2RlcklkZW50aWZpZXIsIHdlYnJ0Yzo6TG9jYWxEZWNvZGVyPiBtX2RlY29kZXJzIFdURl9HVUFS
REVEX0JZX0xPQ0sobV9sb2NrKTsgLy8gT25seSBtb2RpZmllZCBvbiB0aGUgbGliV2ViUlRDQ29k
ZWNzUXVldWUgYnV0IG1heSBnZXQgYWNjZXNzZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0gICAg
SGFzaE1hcDxSVENFbmNvZGVySWRlbnRpZmllciwgd2VicnRjOjpMb2NhbEVuY29kZXI+IG1fZW5j
b2RlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOyAvLyBPbmx5IG1vZGlmaWVkIG9uIHRo
ZSBsaWJXZWJSVENDb2RlY3NRdWV1ZSBidXQgbWF5IGdldCBhY2Nlc3NlZCBmcm9tIHRoZSBtYWlu
IHRocmVhZC4KLQorICAgIEhhc2hNYXA8UlRDRW5jb2RlcklkZW50aWZpZXIsIEVuY29kZXI+IG1f
ZW5jb2RlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOyAvLyBPbmx5IG1vZGlmaWVkIG9u
IHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZSBidXQgbWF5IGdldCBhY2Nlc3NlZCBmcm9tIHRoZSBt
YWluIHRocmVhZC4KICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29k
ZWNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggODEzMjk1MDBlNmU5ZDUzZmYyNzRmNTNlNzJjMmY2
MmEwM2IyZWUwOS4uNmJiMjA4NjM4ZGMyMmE4OWVmYjg5YzlhZjkwNmEwM2VhNjllNzQ0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNiw2ICszNiw4IEBAIG1lc3NhZ2Vz
IC0+IExpYldlYlJUQ0NvZGVjc1Byb3h5IE5vdFJlZkNvdW50ZWQgewogICAgIEluaXRpYWxpemVF
bmNvZGVyKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIHVpbnQxNl90IHdpZHRoLCB1
aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQgbWF4Qml0cmF0
ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJhbWVyYXRlKQogICAgIEVuY29k
ZUZyYW1lKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlIHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1wLCBib29sIHNob3VsZEVuY29kZUFz
S2V5RnJhbWUpCiAgICAgU2V0RW5jb2RlUmF0ZXMoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmll
ciBpZCwgdWludDMyX3QgYml0UmF0ZSwgdWludDMyX3QgZnJhbWVSYXRlKQorICAgIFNldFNoYXJl
ZFZpZGVvRnJhbWVTZW1hcGhvcmUoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgSVBD
OjpTZW1hcGhvcmUgc2VtYXBob3JlKQorICAgIFNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoV2Vi
S2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSBzdG9yYWdlSGFuZGxlKQogICAgIFNldFJUQ0xvZ2dpbmdMZXZlbChXVEZMb2dMZXZlbCBs
ZXZlbCkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3NQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
TGliV2ViUlRDQ29kZWNzUHJveHkubW0KaW5kZXggMzBmYTMwY2IzZGM5YzliNDAxZjBjNGVjZmNl
MjEwODFlYzQ2ZTVjMS4uYmFiZmMyOWNhNzJiZmJlZGY4ZDU0ODQ1YTIzNzVmZmU0YzBhYThjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2Rl
Y3NQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5Lm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJHUFVQcm9jZXNzLmgi
CiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGliV2ViUlRD
Q29kZWNzUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiU2hhcmVkVmlkZW9GcmFtZS5oIgogI2lt
cG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NWVXRpbGl0
aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xpYldlYlJUQ1Byb3ZpZGVyLmg+CkBAIC02OSw4ICs3
MCw4IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNsb3NlKCkKICAgICAgICAgZm9yIChh
dXRvIGRlY29kZXIgOiBkZWNvZGVycy52YWx1ZXMoKSkKICAgICAgICAgICAgIHdlYnJ0Yzo6cmVs
ZWFzZUxvY2FsRGVjb2RlcihkZWNvZGVyKTsKICAgICAgICAgYXV0byBlbmNvZGVycyA9IFdURk1v
dmUobV9lbmNvZGVycyk7Ci0gICAgICAgIGZvciAoYXV0byBlbmNvZGVyIDogZW5jb2RlcnMudmFs
dWVzKCkpCi0gICAgICAgICAgICB3ZWJydGM6OnJlbGVhc2VMb2NhbEVuY29kZXIoZW5jb2Rlcik7
CisgICAgICAgIGZvciAoYXV0byYgZW5jb2RlciA6IGVuY29kZXJzLnZhbHVlcygpKQorICAgICAg
ICAgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxFbmNvZGVyKGVuY29kZXIud2VicnRjRW5jb2Rlcik7
CiAgICAgfSk7CiB9CiAKQEAgLTE1OSw3ICsxNjAsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1By
b3h5OjpjcmVhdGVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6Q29t
cGxldGVkRW5jb2RpbmcgeyBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyBidWZmZXIs
IHNpemUgfSwgaW5mbyB9LCAwKTsKICAgICB9KS5nZXQoKSk7CiAgICAgd2VicnRjOjpzZXRMb2Nh
bEVuY29kZXJMb3dMYXRlbmN5KGVuY29kZXIsIHVzZUxvd0xhdGVuY3kpOwotICAgIG1fZW5jb2Rl
cnMuYWRkKGlkZW50aWZpZXIsIGVuY29kZXIpOworICAgIG1fZW5jb2RlcnMuYWRkKGlkZW50aWZp
ZXIsIEVuY29kZXIgeyBlbmNvZGVyLCBudWxscHRyIH0pOwogfQogCiB2b2lkIExpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjpyZWxlYXNlRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVy
KQpAQCAtMTY3LDIxICsxNjgsMzAgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6cmVsZWFz
ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBBU1NFUlQoIWlz
TWFpblJ1bkxvb3AoKSk7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIEFTU0VS
VChtX2VuY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLSAgICBpZiAoYXV0byBlbmNvZGVy
ID0gbV9lbmNvZGVycy50YWtlKGlkZW50aWZpZXIpKQotICAgICAgICB3ZWJydGM6OnJlbGVhc2VM
b2NhbEVuY29kZXIoZW5jb2Rlcik7CisgICAgYXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy50YWtl
KGlkZW50aWZpZXIpOworICAgIGlmIChlbmNvZGVyLndlYnJ0Y0VuY29kZXIpCisgICAgICAgIHdl
YnJ0Yzo6cmVsZWFzZUxvY2FsRW5jb2RlcihlbmNvZGVyLndlYnJ0Y0VuY29kZXIpOwogfQogCiAv
LyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBmdW5jdGlvbiBhY2Nlc3NlcyBtX2VuY29k
ZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBy
dW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQogLy8gYW5kIG1fZW5jb2RlcnMgb25seSBn
ZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KLXZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6Omlu
aXRpYWxpemVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQxNl90
IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQg
bWF4Qml0cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJhbWVyYXRlKSBX
VEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit2b2lkIExpYldlYlJUQ0NvZGVjc1By
b3h5Ojppbml0aWFsaXplRW5jb2RlcihSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1
aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBzdGFydEJpdHJhdGUsIHVu
c2lnbmVkIG1heEJpdHJhdGUsIHVuc2lnbmVkIG1pbkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1l
cmF0ZSkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgQVNTRVJUKG1fZW5j
b2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIGF1dG8gZW5jb2RlciA9IG1fZW5jb2Rl
cnMuZ2V0KGlkZW50aWZpZXIpOworICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhv
dXRMb2NrKGlkZW50aWZpZXIpOwogICAgIGlmICghZW5jb2RlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgd2VicnRjOjppbml0aWFsaXplTG9jYWxFbmNvZGVyKGVuY29kZXIsIHdpZHRoLCBoZWln
aHQsIHN0YXJ0Qml0cmF0ZSwgbWF4Qml0cmF0ZSwgbWluQml0cmF0ZSwgbWF4RnJhbWVyYXRlKTsK
KyAgICB3ZWJydGM6OmluaXRpYWxpemVMb2NhbEVuY29kZXIoZW5jb2Rlci0+d2VicnRjRW5jb2Rl
ciwgd2lkdGgsIGhlaWdodCwgc3RhcnRCaXRyYXRlLCBtYXhCaXRyYXRlLCBtaW5CaXRyYXRlLCBt
YXhGcmFtZXJhdGUpOworfQorCitMaWJXZWJSVENDb2RlY3NQcm94eTo6RW5jb2RlciogTGliV2Vi
UlRDQ29kZWNzUHJveHk6OmZpbmRFbmNvZGVyV2l0aG91dExvY2soUlRDRW5jb2RlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUworeworICAg
IEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKKyAgICBBU1NFUlQobV9lbmNvZGVycy5jb250YWlu
cyhpZGVudGlmaWVyKSk7CisgICAgYXV0byBpdGVyYXRvciA9IG1fZW5jb2RlcnMuZmluZChpZGVu
dGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9lbmNvZGVycy5lbmQoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZpdGVyYXRvci0+dmFsdWU7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgd2VicnRjOjpWaWRlb1JvdGF0aW9uIHRvV2ViUlRDVmlkZW9Sb3RhdGlvbihXZWJD
b3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKQEAgLTIwMiwzNCArMjEy
LDY2IEBAIHN0YXRpYyBpbmxpbmUgd2VicnRjOjpWaWRlb1JvdGF0aW9uIHRvV2ViUlRDVmlkZW9S
b3RhdGlvbihXZWJDb3JlOjpNZWRpYVNhbXBsZTo6CiAKIC8vIEZvciBwZXJmb3JtYW5jZSByZWFz
b25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vzc2VzIG1fZW5jb2RlcnMgd2l0aG91dCBsb2NraW5nLiBU
aGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJUQ0Nv
ZGVjc1F1ZXVlCiAvLyBhbmQgbV9lbmNvZGVycyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlzIHF1
ZXVlLgotdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2Rlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiBzYW1wbGUs
IHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKSBXVEZfSUdO
T1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5Ojpl
bmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1v
dGVWaWRlb1NhbXBsZSYmIHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1wLCBib29sIHNob3VsZEVu
Y29kZUFzS2V5RnJhbWUpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotICAgIEFT
U0VSVChtX2VuY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKLSAgICBhdXRvIGVuY29kZXIg
PSBtX2VuY29kZXJzLmdldChpZGVudGlmaWVyKTsKKyAgICBhdXRvKiBlbmNvZGVyID0gZmluZEVu
Y29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsKICAgICBpZiAoIWVuY29kZXIpCiAgICAgICAg
IHJldHVybjsKIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICBpZiAoIXNhbXBsZS5z
dXJmYWNlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29y
ZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzYW1wbGUuc3VyZmFjZSgpKTsKKyAgICBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7CisgICAgaWYgKHNhbXBsZS5zdXJmYWNlKCkp
IHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZl
cihzYW1wbGUuc3VyZmFjZSgpKSkKKyAgICAgICAgICAgIHBpeGVsQnVmZmVyID0gV1RGTW92ZSgq
YnVmZmVyKTsKKyAgICB9IGVsc2UgaWYgKGVuY29kZXItPmZyYW1lUmVhZGVyKQorICAgICAgICBw
aXhlbEJ1ZmZlciA9IGVuY29kZXItPmZyYW1lUmVhZGVyLT5yZWFkKCk7CisKICAgICBpZiAoIXBp
eGVsQnVmZmVyKQogICAgICAgICByZXR1cm47Ci0gICAgd2VicnRjOjplbmNvZGVMb2NhbEVuY29k
ZXJGcmFtZShlbmNvZGVyLCBwaXhlbEJ1ZmZlci0+Z2V0KCksIHNhbXBsZS50aW1lKCkudG9UaW1l
U2NhbGUoMTAwMDAwMCkudGltZVZhbHVlKCksIHRpbWVTdGFtcCwgdG9XZWJSVENWaWRlb1JvdGF0
aW9uKHNhbXBsZS5yb3RhdGlvbigpKSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSk7CisKKyAgICB3
ZWJydGM6OmVuY29kZUxvY2FsRW5jb2RlckZyYW1lKGVuY29kZXItPndlYnJ0Y0VuY29kZXIsIHBp
eGVsQnVmZmVyLmdldCgpLCBzYW1wbGUudGltZSgpLnRvVGltZVNjYWxlKDEwMDAwMDApLnRpbWVW
YWx1ZSgpLCB0aW1lU3RhbXAsIHRvV2ViUlRDVmlkZW9Sb3RhdGlvbihzYW1wbGUucm90YXRpb24o
KSksIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpOwogI2VuZGlmCiB9CiAKIC8vIEZvciBwZXJmb3Jt
YW5jZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vzc2VzIG1fZW5jb2RlcnMgd2l0aG91dCBs
b2NraW5nLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxp
YldlYlJUQ0NvZGVjc1F1ZXVlCiAvLyBhbmQgbV9lbmNvZGVycyBvbmx5IGdldCBtb2RpZmllZCBv
biB0aGlzIHF1ZXVlLgotdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6c2V0RW5jb2RlUmF0ZXMo
UlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgYml0UmF0ZSwgdWludDMy
X3QgZnJhbWVSYXRlKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit2b2lkIExp
YldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRFbmNvZGVSYXRlcyhSVENFbmNvZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpCiB7Ci0gICAg
QVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotICAgIGF1dG8gZW5jb2RlciA9IG1fZW5jb2RlcnMu
Z2V0KGlkZW50aWZpZXIpOworICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRM
b2NrKGlkZW50aWZpZXIpOwogICAgIGlmICghZW5jb2RlcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgd2VicnRjOjpzZXRMb2NhbEVuY29kZXJSYXRlcyhlbmNvZGVyLCBiaXRSYXRlLCBmcmFtZVJh
dGUpOworICAgIHdlYnJ0Yzo6c2V0TG9jYWxFbmNvZGVyUmF0ZXMoZW5jb2Rlci0+d2VicnRjRW5j
b2RlciwgYml0UmF0ZSwgZnJhbWVSYXRlKTsKK30KKworLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNv
bnMsIHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRo
aXMgaXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29k
ZWNzUXVldWUKKy8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVl
dWUuCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBo
b3JlKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYgc2Vt
YXBob3JlKQoreworICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlk
ZW50aWZpZXIpOworICAgIGlmICghZW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFlbmNvZGVyLT5mcmFtZVJlYWRlcikKKyAgICAgICAgZW5jb2Rlci0+ZnJhbWVSZWFkZXIgPSBt
YWtlVW5pcXVlPFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI+KCk7CisgICAgZW5jb2Rlci0+ZnJhbWVS
ZWFkZXItPnNldFNlbWFwaG9yZShXVEZNb3ZlKHNlbWFwaG9yZSkpOworfQorCisvLyBGb3IgcGVy
Zm9ybWFuY2UgcmVhc29ucywgdGhpcyBmdW5jdGlvbiBhY2Nlc3NlcyBtX2VuY29kZXJzIHdpdGhv
dXQgbG9ja2luZy4gVGhpcyBpcyBzYWZlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBydW5zIG9uIHRo
ZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQorLy8gYW5kIG1fZW5jb2RlcnMgb25seSBnZXQgbW9kaWZp
ZWQgb24gdGhpcyBxdWV1ZS4KK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnNldFNoYXJlZFZp
ZGVvRnJhbWVNZW1vcnkoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSkKK3sKKyAgICBhdXRvKiBlbmNvZGVyID0g
ZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsKKyAgICBpZiAoIWVuY29kZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaXBj
SGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAg
aWYgKCFtZW1vcnkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZW5jb2Rlci0+ZnJhbWVS
ZWFkZXIpCisgICAgICAgIGVuY29kZXItPmZyYW1lUmVhZGVyID0gbWFrZVVuaXF1ZTxTaGFyZWRW
aWRlb0ZyYW1lUmVhZGVyPigpOworICAgIGVuY29kZXItPmZyYW1lUmVhZGVyLT5zZXRTaGFyZWRN
ZW1vcnkobWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpOwogfQogCiBib29sIExpYldlYlJUQ0NvZGVj
c1Byb3h5OjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKaW5kZXggN2JmZWUwODNmY2Y5MjI3YzdmNWY4NDk2ZDk3ZWU4YWI5MGU1YWExZi4u
ZjU3ZDg1M2ZmYmY0YzI4Mzc0ZGY4YjFmNzY3Mzc3NmVkM2Y4ZWQ0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dApAQCAtMjQ0LDYgKzI0NCw4IEBAIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKIFNoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZS5jcHAKIAorV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJl
ZFZpZGVvRnJhbWUuY3BwCisKIFVJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0K
IFVJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5tbQogVUlQcm9jZXNzL0hpZ2hQZXJm
b3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzc5MTE4YmQyZjNlMDMyY2E4N2MwNzRk
MmU2YjBkYmU1NDliNjdlYi4uNzkxNzgxYzk2MDFkMzM4MmMyMWZjNTY1NTkwMDRlNTgzNzk2MzIz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC00MTUwLDYgKzQxNTAsOCBAQAogCQk0MUQxMjlEOTFGM0QxMDE0MDBEMTVFNDcgLyogV2Vi
Q2FjaGVTdG9yYWdlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2FjaGVTdG9yYWdlUHJv
dmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFENUM2RDgyMzhFQjIwRDAw
QjlCM0NCIC8qIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDVDNkQ5MjM4RUIyMEUwMEI5QjNDQiAvKiBTZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxREMwNEY4MjdBODE2QkIwMDhDRjk2OCAvKiBTaGFyZWRWaWRl
b0ZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFZpZGVvRnJhbWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFEQzA0RjkyN0E4MTZCQjAwOENGOTY4IC8qIFNoYXJlZFZpZGVv
RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkVmlkZW9GcmFtZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxREM0NTk0MUUzRDZFMUUwMEIxMUY1MSAvKiBOZXR3
b3JrUlRDUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29y
a1JUQ1Byb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxREM0NTk1MUUz
RDZFMUUwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFEQzQ1OTgxRTNENkVENjAwQjExRjUxIC8qIE5ldHdvcmtSVENQ
cm92aWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3b3JrUlRDUHJv
dmlkZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MjAwLDcg
KzcyMDIsNiBAQAogCQkJCTdBRkJEMzZFMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0
aWxzLmNwcCAqLywKIAkJCQk3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lV
dGlscy5oICovLAogCQkJCUJDQzQzQUI4MTI3Qjk1REMwMDMxN0YxNiAvKiBQbGF0Zm9ybVBvcHVw
TWVudURhdGEuY3BwICovLAotCQkJCUJDQzQzQUI5MTI3Qjk1REMwMDMxN0YxNiAvKiBQbGF0Zm9y
bVBvcHVwTWVudURhdGEuaCAqLywKIAkJCQk0OUVDQTQxQjIzRkNBNDg2MDAyMzM1OEQgLyogUG9s
aWN5RGVjaXNpb24uaCAqLywKIAkJCQlFMThDOTJGMzEyREI5RTcxMDBDRjJBRUIgLyogUHJpbnRJ
bmZvLmNwcCAqLywKIAkJCQlFMUNDMUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmgg
Ki8sCkBAIC03MjIwLDYgKzcyMjEsNyBAQAogCQkJCTJENjVEMTk2Mjc0QjhFODQwMDlDNDEwMSAv
KiBTY3JvbGxpbmdBY2NlbGVyYXRpb25DdXJ2ZS5jcHAgKi8sCiAJCQkJMkQ2NUQxOTUyNzRCOEU4
NDAwOUM0MTAxIC8qIFNjcm9sbGluZ0FjY2VsZXJhdGlvbkN1cnZlLmggKi8sCiAJCQkJNUM4MEIz
REQyMzY5MEYxMDAwODZFNkRFIC8qIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3Bw
ICovLAorCQkJCUJDQzQzQUI5MTI3Qjk1REMwMDMxN0YxNiAvKiBQbGF0Zm9ybVBvcHVwTWVudURh
dGEuaCAqLywKIAkJCQk1QzgwQjNEQjIzNjkwRDhEMDA4NkU2REUgLyogU2VydmljZVdvcmtlcklu
aXRpYWxpemF0aW9uRGF0YS5oICovLAogCQkJCTFBRkRFNjU3MTk1NEE0MkIwMEM0OEZGQSAvKiBT
ZXNzaW9uU3RhdGUuY3BwICovLAogCQkJCTFBRkRFNjU4MTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNz
aW9uU3RhdGUuaCAqLywKQEAgLTkyMDAsNiArOTIwMiw4IEBACiAJCQkJNDFGQ0Q2QkMyM0NFMDMx
ODAwQzYyNTY3IC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklkZW50aWZpZXIuaCAqLywKIAkJ
CQk0MTAyNEZDMTIzQ0YxMDQ1MDBGREY5OEUgLyogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFu
YWdlci5jcHAgKi8sCiAJCQkJNDEwMjRGQzAyM0NGMTA0NTAwRkRGOThFIC8qIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXIuaCAqLywKKwkJCQk0MURDMDRGOTI3QTgxNkJCMDA4Q0Y5Njgg
LyogU2hhcmVkVmlkZW9GcmFtZS5jcHAgKi8sCisJCQkJNDFEQzA0RjgyN0E4MTZCQjAwOENGOTY4
IC8qIFNoYXJlZFZpZGVvRnJhbWUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gd2VicnRjOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IDlkNWZkMGQxNTYyY2I0
NDc3NjA3OTg1OTg1ZjFkNmY5Mjk1Y2UyZGQuLmFlMjJkODkzNzM0ZmM1MWY5NjhmNzQ3ZjdlZGRi
MTcxYjk4YTBkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgTGli
V2ViUlRDQ29kZWNzOjplbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbk9uTWFpblRocmVhZFdpdGhM
b2NrKCkKICAgICBtX2Nvbm5lY3Rpb24tPmFkZFRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6TGliV2ViUlRDQ29kZWNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogCiAgICAg
aWYgKG1fbG9nZ2luZ0xldmVsKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpTZXRSVENMb2dnaW5nTGV2ZWwoKm1fbG9nZ2luZ0xldmVs
KSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29k
ZWNzUHJveHk6OlNldFJUQ0xvZ2dpbmdMZXZlbCB7ICptX2xvZ2dpbmdMZXZlbCB9LCAwKTsKIH0K
IAogLy8gTWF5IGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFkLgpAQCAtNDE4LDYgKzQxOCwyMiBAQCBp
bnQzMl90IExpYldlYlJUQ0NvZGVjczo6aW5pdGlhbGl6ZUVuY29kZXIoRW5jb2RlciYgZW5jb2Rl
ciwgdWludDE2X3Qgd2lkdGgsIHVpbgogICAgIHJldHVybiAwOwogfQogCitib29sIExpYldlYlJU
Q0NvZGVjczo6Y29weVNoYXJlZFZpZGVvRnJhbWUoRW5jb2RlciYgZW5jb2RlciwgQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlcikKK3sKKyAgICByZXR1cm4gZW5jb2Rlci5zaGFyZWRWaWRlb0Zy
YW1lV3JpdGVyLndyaXRlKHBpeGVsQnVmZmVyLAorICAgICAgICBbJmVuY29kZXJdKGF1dG8mIHNl
bWFwaG9yZSkgeyBlbmNvZGVyLmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjpTZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlIHsgZW5jb2Rlci5pZGVudGlm
aWVyLCBzZW1hcGhvcmUgfSwgMCk7IH0sCisgICAgICAgIFsmZW5jb2Rlcl0oYXV0byYgaGFuZGxl
KSB7IGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJv
eHk6OlNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkgeyBlbmNvZGVyLmlkZW50aWZpZXIsIGhhbmRs
ZSB9LCAwKTsgfQorICAgICk7Cit9CisKK2Jvb2wgTGliV2ViUlRDQ29kZWNzOjpjb3B5U2hhcmVk
VmlkZW9GcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZy
YW1lKQoreworICAgIHJldHVybiBlbmNvZGVyLnNoYXJlZFZpZGVvRnJhbWVXcml0ZXIud3JpdGUo
ZnJhbWUsCisgICAgICAgIFsmZW5jb2Rlcl0oYXV0byYgc2VtYXBob3JlKSB7IGVuY29kZXIuY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlNldFNoYXJlZFZp
ZGVvRnJhbWVTZW1hcGhvcmUgeyBlbmNvZGVyLmlkZW50aWZpZXIsIHNlbWFwaG9yZSB9LCAwKTsg
fSwKKyAgICAgICAgWyZlbmNvZGVyXShhdXRvJiBoYW5kbGUpIHsgZW5jb2Rlci5jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6U2V0U2hhcmVkVmlkZW9GcmFt
ZU1lbW9yeSB7IGVuY29kZXIuaWRlbnRpZmllciwgaGFuZGxlIH0sIDApOyB9CisgICAgKTsKK30K
KwogaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlG
cmFtZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uTG9jayB9OwpAQCAtNDI1
LDMzICs0NDEsMTcgQEAgaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYKICAgICBpZiAoIWVuY29kZXIu
Y29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKIAot
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBhZG9wdENGKHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJG
cm9tRnJhbWUoZnJhbWUsIFtdKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2VicnRjOjpC
dWZmZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZmZXJSZWYgewotICAgICAgICBPU1R5
cGUgcG9vbEJ1ZmZlclR5cGU7Ci0gICAgICAgIHN3aXRjaCAoYnVmZmVyVHlwZSkgewotICAgICAg
ICBjYXNlIHdlYnJ0Yzo6QnVmZmVyVHlwZTo6STQyMDoKLSAgICAgICAgICAgIHBvb2xCdWZmZXJU
eXBlID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIHdlYnJ0Yzo6QnVmZmVyVHlwZTo6STAxMDoK
LSAgICAgICAgICAgIHBvb2xCdWZmZXJUeXBlID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JD
cjEwQmlQbGFuYXJGdWxsUmFuZ2U7Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byBwaXhlbEJ1ZmZl
clBvb2wgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5waXhlbEJ1
ZmZlclBvb2wod2lkdGgsIGhlaWdodCwgcG9vbEJ1ZmZlclR5cGUpOwotICAgICAgICBpZiAoIXBp
eGVsQnVmZmVyUG9vbCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHJl
dHVybiBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyRnJvbVBvb2wocGl4ZWxCdWZmZXJQb29s
KS52YWx1ZV9vcihudWxscHRyKS5sZWFrUmVmKCk7Ci0gICAgfSkpOwotCi0gICAgaWYgKCFwaXhl
bEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKLQotICAg
IGF1dG8gc2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShwaXhlbEJ1ZmZlci5nZXQo
KSwgTWVkaWFUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpICogMTAwMCwgMTAwMDAwMCksIHRvTWVk
aWFTYW1wbGVWaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkpKTsKLSAgICBpZiAoIXNhbXBs
ZSkgewotICAgICAgICAvLyBGSVhNRTogT3B0aW1pemUgdGhpcyBjb2RlIHBhdGgsIGN1cnJlbnRs
eSB3ZSBoYXZlIG5vbiBCR1JBIGZvciBtdXRlZCBmcmFtZXMgYXQgbGVhc3QuCi0gICAgICAgIHNh
bXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoY29udmVydFRvQkdSQShwaXhlbEJ1ZmZl
ci5nZXQoKSksIE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBfdXMoKSAqIDEwMDAsIDEwMDAwMDAp
LCB0b01lZGlhU2FtcGxlVmlkZW9Sb3RhdGlvbihmcmFtZS5yb3RhdGlvbigpKSk7Ci0gICAgICAg
IGlmICghc2FtcGxlKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJV
bmFibGUgdG8gY29udmVydCByZW1vdGUgdmlkZW8gc2FtcGxlIik7CisgICAgYXV0byBidWZmZXIg
PSBhZG9wdENGKHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUpKTsKKyAgICBpZiAo
IWJ1ZmZlcikgeworICAgICAgICAvLyBidWZmZXIgaXMgbm90IG5hdGl2ZSwgd2UgbmVlZCB0byBj
b3B5IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4KKyAgICAgICAgaWYgKCFjb3B5U2hhcmVkVmlkZW9G
cmFtZShlbmNvZGVyLCBmcmFtZSkpCisgICAgICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NP
REVDX0VSUk9SOworICAgIH0KKyAgICBhdXRvIHNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpj
cmVhdGUoYnVmZmVyLmdldCgpLCBNZWRpYVRpbWUoZnJhbWUudGltZXN0YW1wX3VzKCkgKiAxMDAw
LCAxMDAwMDAwKSwgdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24oZnJhbWUucm90YXRpb24oKSks
IFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6Tm8pOworICAgIGlm
ICghc2FtcGxlLT5zdXJmYWNlKCkpIHsKKyAgICAgICAgLy8gYnVmZmVyIGlzIG5vdCBJT1N1cmZh
Y2UsIHdlIG5lZWQgdG8gY29weSB0byBzaGFyZWQgdmlkZW8gZnJhbWUuCisgICAgICAgIGlmICgh
Y29weVNoYXJlZFZpZGVvRnJhbWUoZW5jb2RlciwgYnVmZmVyLmdldCgpKSkKICAgICAgICAgICAg
IHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7Ci0gICAgICAgIH0KICAgICB9CiAKICAg
ICBlbmNvZGVyLmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5
OjpFbmNvZGVGcmFtZSB7IGVuY29kZXIuaWRlbnRpZmllciwgKnNhbXBsZSwgZnJhbWUudGltZXN0
YW1wKCksIHNob3VsZEVuY29kZUFzS2V5RnJhbWUgfSwgMCk7CkBAIC01MzUsNiArNTM1LDcgQEAg
dm9pZCBMaWJXZWJSVENDb2RlY3M6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24mKQogICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlRW5jb2RlciB7IGVuY29kZXItPmlkZW50aWZp
ZXIsIGZvcm1hdE5hbWVGcm9tV2ViUlRDQ29kZWNUeXBlKGVuY29kZXItPmNvZGVjVHlwZSksIGVu
Y29kZXItPnBhcmFtZXRlcnMsIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkud2ViUlRDSDI2NExvd0xhdGVuY3lFbmNvZGVyRW5hYmxlZCgpIH0sIDApOwogICAgICAgICAg
ICAgaWYgKGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YSkKICAgICAgICAgICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpJbml0aWFsaXpl
RW5jb2RlciB7IGVuY29kZXItPmlkZW50aWZpZXIsIGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0
YS0+d2lkdGgsIGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YS0+aGVpZ2h0LCBlbmNvZGVyLT5p
bml0aWFsaXphdGlvbkRhdGEtPnN0YXJ0Qml0UmF0ZSwgZW5jb2Rlci0+aW5pdGlhbGl6YXRpb25E
YXRhLT5tYXhCaXRSYXRlLCBlbmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEtPm1pbkJpdFJhdGUs
IGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YS0+bWF4RnJhbWVSYXRlIH0sIDApOworICAgICAg
ICAgICAgZW5jb2Rlci0+c2hhcmVkVmlkZW9GcmFtZVdyaXRlciA9IHsgfTsKICAgICAgICAgICAg
IGVuY29kZXItPmNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb24uZ2V0KCk7CiAgICAgICAgIH0KICAg
ICAgICAgZm9yIChhdXRvJiBkZWNvZGVyIDogbV9kZWNvZGVycy52YWx1ZXMoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
aAppbmRleCA0MDgzM2UwMzBlZjViMGVlODk0ZDdmNDRiZTk4Y2Q2Nzk4MWY0YTJjLi41NjkxZTM4
Mzc3NDE2Nzg1YTdkNDEyNGFkMTQ0OTQwZTc3OGIyYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaApAQCAtMzAsOSAr
MzAsMTEgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSVBDU2Vt
YXBob3JlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUlRDRGVj
b2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BpeGVsQnVmZmVy
Q29uZm9ybWVyQ1YuaD4KICNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8d2VicnRjL2FwaS92aWRl
by92aWRlb19jb2RlY190eXBlLmg+CkBAIC0xMDEsNiArMTAzLDcgQEAgcHVibGljOgogICAgICAg
ICB2b2lkKiBlbmNvZGVkSW1hZ2VDYWxsYmFjayBXVEZfR1VBUkRFRF9CWV9MT0NLKGVuY29kZWRJ
bWFnZUNhbGxiYWNrTG9jaykgeyBudWxscHRyIH07CiAgICAgICAgIExvY2sgZW5jb2RlZEltYWdl
Q2FsbGJhY2tMb2NrOwogICAgICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9u
OworICAgICAgICBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyIHNoYXJlZFZpZGVvRnJhbWVXcml0ZXI7
CiAgICAgfTsKIAogICAgIEVuY29kZXIqIGNyZWF0ZUVuY29kZXIoVHlwZSwgY29uc3Qgc3RkOjpt
YXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiYpOwpAQCAtMTM1LDYgKzEzOCw5IEBAIHByaXZh
dGU6CiAgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpOwogCisgICAgYm9v
bCBjb3B5U2hhcmVkVmlkZW9GcmFtZShFbmNvZGVyJiwgQ1ZQaXhlbEJ1ZmZlclJlZik7CisgICAg
Ym9vbCBjb3B5U2hhcmVkVmlkZW9GcmFtZShFbmNvZGVyJiwgY29uc3Qgd2VicnRjOjpWaWRlb0Zy
YW1lJik7CisKIHByaXZhdGU6CiAgICAgSGFzaE1hcDxSVENEZWNvZGVySWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+PiBtX2RlY29kZXJzOwogICAgIEhhc2hTZXQ8UlRDRGVjb2Rl
cklkZW50aWZpZXI+IG1fZGVjb2RpbmdFcnJvcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ2MzcwN2VhMDJhOTAzYWM2MTIwNTA0MGExZjEyNzVkODAyNjY5NzgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1l
LmNwcApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRWaWRlb0Zy
YW1lLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKKwor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFZpZGVvRnJhbWVJ
bmZvLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2Jvb2wgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcjo6d2Fp
dChjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiBuZXdTZW1hcGhvcmVDYWxs
YmFjaykKK3sKKyAgICBpZiAoIW1fc2VtYXBob3JlKSB7CisgICAgICAgIG1fc2VtYXBob3JlID0g
bWFrZVVuaXF1ZTxJUEM6OlNlbWFwaG9yZT4oKTsKKyAgICAgICAgbmV3U2VtYXBob3JlQ2FsbGJh
Y2soKm1fc2VtYXBob3JlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBtX3NlbWFwaG9yZS0+d2FpdCgpOworfQorCitib29sIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6
OmFsbG9jYXRlU3RvcmFnZShzaXplX3Qgc2l6ZSwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCit7CisgICAgbV9z
dG9yYWdlID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplKTsKKyAgICBpZiAoIW1fc3RvcmFn
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFu
ZGxlOworICAgIG1fc3RvcmFnZS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uOjpSZWFkT25seSk7CisKKyAgICBhdXRvIGRhdGFTaXplID0gaGFuZGxlLnNpemUo
KTsKKyAgICBuZXdNZW1vcnlDYWxsYmFjayhTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1v
dmUoaGFuZGxlKSwgZGF0YVNpemUgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU2hh
cmVkVmlkZW9GcmFtZVdyaXRlcjo6cHJlcGFyZVdyaXRpbmcoY29uc3QgU2hhcmVkVmlkZW9GcmFt
ZUluZm8mIGluZm8sIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mIG5ld1Nl
bWFwaG9yZUNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlJik+JiBuZXdNZW1vcnlDYWxsYmFjaykKK3sKKyAgICBpZiAoIWluZm8uaXNSZWFk
V3JpdGVTdXBwb3J0ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCF3YWl0
KG5ld1NlbWFwaG9yZUNhbGxiYWNrKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6
ZV90IHNpemUgPSBpbmZvLnN0b3JhZ2VTaXplKCk7CisgICAgaWYgKCFtX3N0b3JhZ2UgfHwgbV9z
dG9yYWdlLT5zaXplKCkgPCBzaXplKSB7CisgICAgICAgIGlmICghYWxsb2NhdGVTdG9yYWdlKHNp
emUsIG5ld01lbW9yeUNhbGxiYWNrKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcjo6d3Jp
dGUoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6
OlNlbWFwaG9yZSYpPiYgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mIG5ld01lbW9yeUNhbGxiYWNrKQorewor
ICAgIGF1dG8gaW5mbyA9IFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpmcm9tQ1ZQaXhlbEJ1ZmZlcihw
aXhlbEJ1ZmZlcik7CisgICAgaWYgKCFwcmVwYXJlV3JpdGluZyhpbmZvLCBuZXdTZW1hcGhvcmVD
YWxsYmFjaywgbmV3TWVtb3J5Q2FsbGJhY2spKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gaW5mby53cml0ZVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLCBzdGF0aWNfY2FzdDx1
aW50OF90Kj4obV9zdG9yYWdlLT5kYXRhKCkpKTsKK30KKworI2lmIFVTRShMSUJXRUJSVEMpCiti
b29sIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRlKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFt
ZSYgZnJhbWUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mIG5ld1NlbWFw
aG9yZUNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlJik+JiBuZXdNZW1vcnlDYWxsYmFjaykKK3sKKyAgICBhdXRvIGluZm8gPSBTaGFyZWRW
aWRlb0ZyYW1lSW5mbzo6ZnJvbVZpZGVvRnJhbWUoZnJhbWUpOworICAgIGlmICghcHJlcGFyZVdy
aXRpbmcoaW5mbywgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIG5ld01lbW9yeUNhbGxiYWNrKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGluZm8ud3JpdGVWaWRlb0ZyYW1lKGZy
YW1lLCBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9zdG9yYWdlLT5kYXRhKCkpKTsKK30KKyNlbmRp
ZgorCitSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gU2hhcmVkVmlkZW9GcmFtZVJlYWRlcjo6
cmVhZCgpCit7CisgICAgaWYgKCFtX3N0b3JhZ2UpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICBhdXRvIHNjb3BlID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICBtX3NlbWFwaG9yZS5z
aWduYWwoKTsKKyAgICB9KTsKKworICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4obV9zdG9yYWdlLT5kYXRhKCkpOworICAgIGF1dG8gaW5mbyA9IFNoYXJlZFZpZGVv
RnJhbWVJbmZvOjpkZWNvZGUoeyBkYXRhLCBtX3N0b3JhZ2UtPnNpemUoKSB9KTsKKyAgICBpZiAo
IWluZm8pCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoIWluZm8tPmlzUmVhZFdyaXRl
U3VwcG9ydGVkKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAobV9zdG9yYWdlLT5z
aXplKCkgPCBpbmZvLT5zdG9yYWdlU2l6ZSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
cmV0dXJuIGluZm8tPmNyZWF0ZVBpeGVsQnVmZmVyRnJvbU1lbW9yeShkYXRhICsgU2hhcmVkVmlk
ZW9GcmFtZUluZm9FbmNvZGluZ0xlbmd0aCwgcGl4ZWxCdWZmZXJQb29sKCppbmZvKSk7Cit9CisK
K0NWUGl4ZWxCdWZmZXJQb29sUmVmIFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI6OnBpeGVsQnVmZmVy
UG9vbChjb25zdCBTaGFyZWRWaWRlb0ZyYW1lSW5mbyYgaW5mbykKK3sKKyAgICBpZiAobV91c2VJ
T1N1cmZhY2VCdWZmZXJQb29sID09IFVzZUlPU3VyZmFjZUJ1ZmZlclBvb2w6Ok5vKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghbV9idWZmZXJQb29sIHx8IG1fYnVmZmVyUG9v
bFR5cGUgIT0gaW5mby5idWZmZXJUeXBlKCkgfHwgbV9idWZmZXJQb29sV2lkdGggIT0gaW5mby53
aWR0aCgpIHx8IG1fYnVmZmVyUG9vbEhlaWdodCAhPSBpbmZvLmhlaWdodCgpKSB7CisgICAgICAg
IG1fYnVmZmVyUG9vbFR5cGUgPSBpbmZvLmJ1ZmZlclR5cGUoKTsKKyAgICAgICAgbV9idWZmZXJQ
b29sV2lkdGggPSBpbmZvLndpZHRoKCk7CisgICAgICAgIG1fYnVmZmVyUG9vbEhlaWdodCA9IGlu
Zm8uaGVpZ2h0KCk7CisgICAgICAgIG1fYnVmZmVyUG9vbCA9IGluZm8uY3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlclBvb2woKTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9idWZmZXJQb29sLmdldCgpOwor
fQorCisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENP
Q09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hh
cmVkVmlkZW9GcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hh
cmVkVmlkZW9GcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyZTk1NjJkZTdlYmJkZmE4ZDY3NTMxYjVkNDdm
MzFhNTAwNjUzMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJJUENT
ZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfX0NW
QnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVy
UG9vbCogQ1ZQaXhlbEJ1ZmZlclBvb2xSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFNoYXJlZFZpZGVvRnJhbWVJbmZvOworfQorCituYW1lc3BhY2Ugd2VicnRjIHsKK2NsYXNzIFZp
ZGVvRnJhbWU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTaGFyZWRWaWRlb0Zy
YW1lV3JpdGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBT
aGFyZWRWaWRlb0ZyYW1lV3JpdGVyKCkgPSBkZWZhdWx0OworCisgICAgYm9vbCB3cml0ZShDVlBp
eGVsQnVmZmVyUmVmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiwgY29u
c3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYpOworI2lm
IFVTRShMSUJXRUJSVEMpCisgICAgYm9vbCB3cml0ZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUm
LCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248
dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYpOworI2VuZGlmCisKK3ByaXZh
dGU6CisgICAgYm9vbCB3YWl0KGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4m
KTsKKyAgICBib29sIGFsbG9jYXRlU3RvcmFnZShzaXplX3QsIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKKyAgICBib29sIHByZXBhcmVXcml0
aW5nKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFZpZGVvRnJhbWVJbmZvJiwgY29uc3QgRnVuY3Rpb248
dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OlNlbWFw
aG9yZT4gbV9zZW1hcGhvcmU7CisgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9zdG9yYWdlOwor
fTsKKworY2xhc3MgU2hhcmVkVmlkZW9GcmFtZVJlYWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBVc2VJT1N1cmZhY2VCdWZmZXJQb29s
IHsgTm8sIFllcyB9OworICAgIGV4cGxpY2l0IFNoYXJlZFZpZGVvRnJhbWVSZWFkZXIoVXNlSU9T
dXJmYWNlQnVmZmVyUG9vbCA9IFVzZUlPU3VyZmFjZUJ1ZmZlclBvb2w6Olllcyk7CisKKyAgICB2
b2lkIHNldFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkgeyBtX3NlbWFwaG9y
ZSA9IFdURk1vdmUoc2VtYXBob3JlKTsgfQorICAgIHZvaWQgc2V0U2hhcmVkTWVtb3J5KFJlZjxT
aGFyZWRNZW1vcnk+JiYgc3RvcmFnZSkgeyBtX3N0b3JhZ2UgPSBXVEZNb3ZlKHN0b3JhZ2UpOyB9
CisKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcmVhZCgpOworCitwcml2YXRlOgor
ICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIHBpeGVsQnVmZmVyUG9vbChjb25zdCBXZWJDb3JlOjpT
aGFyZWRWaWRlb0ZyYW1lSW5mbyYpOworCisgICAgVXNlSU9TdXJmYWNlQnVmZmVyUG9vbCBtX3Vz
ZUlPU3VyZmFjZUJ1ZmZlclBvb2w7CisgICAgSVBDOjpTZW1hcGhvcmUgbV9zZW1hcGhvcmU7Cisg
ICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9zdG9yYWdlOworCisgICAgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJQb29sUmVmPiBtX2J1ZmZlclBvb2w7CisgICAgT1NUeXBlIG1fYnVmZmVyUG9vbFR5
cGUgeyAwIH07CisgICAgdWludDMyX3QgbV9idWZmZXJQb29sV2lkdGggeyAwIH07CisgICAgdWlu
dDMyX3QgbV9idWZmZXJQb29sSGVpZ2h0IHsgMCB9OworfTsKKworaW5saW5lIFNoYXJlZFZpZGVv
RnJhbWVSZWFkZXI6OlNoYXJlZFZpZGVvRnJhbWVSZWFkZXIoVXNlSU9TdXJmYWNlQnVmZmVyUG9v
bCB1c2VJT1N1cmZhY2VCdWZmZXJQb29sKQorICAgIDogbV91c2VJT1N1cmZhY2VCdWZmZXJQb29s
KHVzZUlPU3VyZmFjZUJ1ZmZlclBvb2wpCit7Cit9CisKKworfQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkK
</data>
<flag name="commit-queue"
          id="476952"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450535</attachid>
            <date>2022-02-01 08:53:34 -0800</date>
            <delta_ts>2022-02-01 09:20:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235951-20220201175331.patch</filename>
            <type>text/plain</type>
            <size>70659</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA1N2NlZjA3M2ZlZjIxZDA5ZWUyYWU1MzNmYjBmMWY0NGI5NDA0OWM1Li5jYWYw
ZjcyYWIzNjAxOWU5OWQwNjczNGJlY2UxZTg4MTFjODRlMWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMi0wMSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTGliV2ViUlRDQ29kZWNzIHNob3Vs
ZCBub3QgbmVlZCB0byBjcmVhdGUgSU9TdXJmYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1OTUxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
ODMyNjY1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbnRyb2R1Y2UgaGVscGVyIHJvdXRpbmVzIHRvIGNvcHkgYSB3ZWJydGMgVmlkZW9GcmFtZSBp
biBhIGJ1ZmVyIGFuZCBnZXQgYSBDVlBpeGVsQnVmZmVyIGZyb20gYSB3ZWJydGMgVmlkZW9GcmFt
ZS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwOgorICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwOgorICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvc2Rr
L1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Nkay9X
ZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tOgorCiAyMDIyLTAxLTI3ICBNaWNoYWVsIFNhYm9mZiAg
PG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIGNvbS5hcHBsZS5XZWJLaXQuV2ViQXV0aG4u
eHBjIGZhaWxzIHRvIGJ1aWxkIHdpdGggc3lzdGVtIGNvbnRlbnQgcGF0aApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGIzYzgwOWRjYTg5NWI0YjFjMjA1MDUwZjI5Mjg0N2ZiNGI3M2EyZDIuLmI5NGJlZGZkYzE5MWUw
MTcxZmRhZTczZTMwNjg2MmQ5OWQxYjNiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAor
MjAyMi0wMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAg
TGliV2ViUlRDQ29kZWNzIHNob3VsZCBub3QgbmVlZCB0byBjcmVhdGUgSU9TdXJmYWNlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1OTUxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84ODMyNjY1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgU2hhcmVkVmlkZW9GcmFtZUluZm8gYXMg
YSBoZWxwZXIgY2xhc3MgdG8gc2VyaWFsaXplIGEgQ1ZQaXhlbEJ1ZmZlciBpbnRvIG1lbW9yeSBh
bmQgY3JlYXRlIGEgQ1ZQaXhlbEJ1ZmZlciBmcm9tIHJlYWRpbmcgbWVtb3J5LgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3Rpbmcgd2VicnRjIHRlc3RzLgorCisgICAgICAgICogU291cmNlc0Nv
Y29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8uaDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8ubW06IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oOgorCiAyMDIyLTAxLTMwICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBHc3RTdHJ1Y3R1
cmUgdG8gSlNPTiBzZXJpYWxpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhMzQ1Mjk5ZjAzYTU1Yjk3ZTg5
MTYwNDdhOGE2MjVjNTBhMjA5ODMuLjU0NWNjMDhiN2U2YzM2NTExMTYxNmRiZTkzYWQyOTIxYWJj
YmYyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjItMDItMDEgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIExpYldlYlJUQ0NvZGVjcyBzaG91bGQg
bm90IG5lZWQgdG8gY3JlYXRlIElPU3VyZmFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk1MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODgz
MjY2NTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW50cm9kdWNlIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIgYW5kIFNoYXJlZFZpZGVvRnJhbWVSZWFk
ZXIgdG8gc3VwcG9ydCBzaGFyZWQgbWVtb3J5IHNlbmRpbmcgb2YgQ1ZQaXhlbEJ1ZmZlcnMgdGhh
dCBhcmUgbm9uIElPU3VyZmFjZSBiYWNrZWQuCisgICAgICAgIFRvIGRvIHNvLCB3ZSBtYWtlIHVz
ZSBvZiBTaGFyZWRWaWRlb0ZyYW1lSW5mbyBmcm9tIFdlYkNvcmUuCisgICAgICAgIFdoYXQgd2Ug
ZG8gaXM6CisgICAgICAgIC0gV2hlbiBnZXR0aW5nIGEgZnJhbWUsIGFsbG9jYXRlIGEgc2hhcmVk
IG1lbW9yeSB0aGF0IGlzIGJpZyBlbm91Z2ggdG8gY29weSBpdHMgZGF0YSBhbmQgaW5mbyBpbiBp
dC4gQ3JlYXRlIGEgc2VtYXBob3JlIHRvIHN5bmMgcmVhZGVyIGFuZCB3cml0ZXIuCisgICAgICAg
IC0gSWYgd2UgYWxsb2NhdGUgc2hhcmVkIG1lbW9yeS9zZW1waG9yZSwgc2VuZCB0aGVtIG92ZXIg
SVBDIHRvIHRoZSBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyLgorICAgICAgICAtIFdhaXQgZm9yIHNl
bWFwaG9yZSB0byB0ZWxsIHVzIHJlYWRlciBpcyBmaW5lIGZvciB3cml0aW5nLgorICAgICAgICAt
IFdyaXRlIFNoYXJlZFZpZGVvRnJhbWVJbmZvIGludG8gdGhlIHNoYXJlZCBtZW1vcnksIHRoZW4g
Y29weSB0aGUgcmF3IGJ5dGVzIGludG8gdGhlIHNoYXJlZCBtZW1vcnkuCisgICAgICAgIC0gU2Vu
ZCB0aHJvdWdoIElQQyB0aGUgdmlkZW8gZnJhbWUsIG5vIE1hY1NlbmRSaWdodCBtZWFucyB0byBy
ZWFkIHRoZSBzaGFyZWQgbWVtb3J5LgorICAgICAgICBPbiByZWFkZXIgc2lkZSwgZm9yIGV2ZXJ5
IGZyYW1lIHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBJT1N1cmZhY2UsIHdlIHJlYWQgdGhlIHNoYXJl
ZCBtZW1vcnksIGNyZWF0ZSBhbiBJT1N1cmZhY2UgZnJvbSBpdCBhbmQgbm90aWZ5IFdlYlByb2Nl
c3MgdGhhdCBpdCBjYW4gd3JpdGUgdGhlIG5leHQgZnJhbWUuCisKKyAgICAgICAgSW4gbWVtb3J5
IGJ1ZmZlcnMgYXJlIHVzZWQgZm9yIGJsYWNrIGZyYW1lcyBhdCBsZWFzdC4KKyAgICAgICAgd2Vi
cnRjL3ZpZGVvLW11dGUuaHRtbCBjb3ZlcnMgdGhlIHBhdGNoLgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbToKKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHA6IEFkZGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmg6IEFkZGVkLgor
CiAyMDIyLTAxLTMxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlciBzaG91bGQgb25seSBiZSB1c2VkIG9u
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9u
cy9saWJ3ZWJydGMuaU9TLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1
cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAppbmRleCBkZmU4YmE4N2M2YmVkNjg5ZjdmMDQ0ZDM4
OGI3YzIxYjE5OTM2NTE4Li5jYTU0NzNhNjJhZDk4YmY2YjRlMGNlYjYwMjg4NTY0NWQ5MGY3ZDIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMv
bGlid2VicnRjLmlPUy5leHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZp
Z3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCkBAIC0zMzAsNCArMzMwLDUgQEAgX19aTjNydGM2
VGhyZWFkMTJzb2NrZXRzZXJ2ZXJFdgogX19aTjZ3ZWJydGMzMndlYnJ0Y19zZXF1ZW5jZV9jaGVj
a2VyX2ludGVybmFsMTlTZXF1ZW5jZUNoZWNrZXJJbXBsQzJFdgogX19aTkszcnRjMTRSVENDZXJ0
aWZpY2F0ZTE3R2V0U1NMQ2VydGlmaWNhdGVFdgogX19aVFZONndlYnJ0YzMwV3JhcHBpbmdBc3lu
Y0Ruc1Jlc29sdmVyUmVzdWx0RQotCitfX1pONndlYnJ0YzIwcGl4ZWxCdWZmZXJGcm9tRnJhbWVF
UktOU18xMFZpZGVvRnJhbWVFCitfX1pONndlYnJ0YzE0Y29weVZpZGVvRnJhbWVFUktOU18xMFZp
ZGVvRnJhbWVFUGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25m
aWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cAppbmRleCBkZmU4YmE4N2M2
YmVkNjg5ZjdmMDQ0ZDM4OGI3YzIxYjE5OTM2NTE4Li5jYTU0NzNhNjJhZDk4YmY2YjRlMGNlYjYw
Mjg4NTY0NWQ5MGY3ZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCkBAIC0zMzAs
NCArMzMwLDUgQEAgX19aTjNydGM2VGhyZWFkMTJzb2NrZXRzZXJ2ZXJFdgogX19aTjZ3ZWJydGMz
MndlYnJ0Y19zZXF1ZW5jZV9jaGVja2VyX2ludGVybmFsMTlTZXF1ZW5jZUNoZWNrZXJJbXBsQzJF
dgogX19aTkszcnRjMTRSVENDZXJ0aWZpY2F0ZTE3R2V0U1NMQ2VydGlmaWNhdGVFdgogX19aVFZO
NndlYnJ0YzMwV3JhcHBpbmdBc3luY0Ruc1Jlc29sdmVyUmVzdWx0RQotCitfX1pONndlYnJ0YzIw
cGl4ZWxCdWZmZXJGcm9tRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFCitfX1pONndlYnJ0YzE0Y29w
eVZpZGVvRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFUGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cApp
bmRleCBkZmU4YmE4N2M2YmVkNjg5ZjdmMDQ0ZDM4OGI3YzIxYjE5OTM2NTE4Li5jYTU0NzNhNjJh
ZDk4YmY2YjRlMGNlYjYwMjg4NTY0NWQ5MGY3ZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhw
CkBAIC0zMzAsNCArMzMwLDUgQEAgX19aTjNydGM2VGhyZWFkMTJzb2NrZXRzZXJ2ZXJFdgogX19a
TjZ3ZWJydGMzMndlYnJ0Y19zZXF1ZW5jZV9jaGVja2VyX2ludGVybmFsMTlTZXF1ZW5jZUNoZWNr
ZXJJbXBsQzJFdgogX19aTkszcnRjMTRSVENDZXJ0aWZpY2F0ZTE3R2V0U1NMQ2VydGlmaWNhdGVF
dgogX19aVFZONndlYnJ0YzMwV3JhcHBpbmdBc3luY0Ruc1Jlc29sdmVyUmVzdWx0RQotCitfX1pO
NndlYnJ0YzIwcGl4ZWxCdWZmZXJGcm9tRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFCitfX1pONndl
YnJ0YzE0Y29weVZpZGVvRnJhbWVFUktOU18xMFZpZGVvRnJhbWVFUGgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0
VXRpbGl0aWVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9z
ZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCmluZGV4IDNlYTA0ZmQ1OGY0YzY1ZmVjMzU3NWJh
NTAxZDM2MDk1YjY5YTYzZjcuLmEyM2ZhYTZlZDU3ZGY3YzMyMmM2NzBiNzczNWNhYjgzYzY2MTU5
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaApAQCAtNDgs
NiArNDgsOCBAQCBib29sIGlzSDI2NEhhcmR3YXJlRW5jb2RlckFsbG93ZWQoKTsKIAogZW51bSBj
bGFzcyBCdWZmZXJUeXBlIHsgSTQyMCwgSTAxMCB9OwogQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQ
aXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiwgY29uc3Qgc3RkOjpmdW5jdGlv
bjxDVlBpeGVsQnVmZmVyUmVmKHNpemVfdCwgc2l6ZV90LCBCdWZmZXJUeXBlKT4mIGNyZWF0ZVBp
eGVsQnVmZmVyKSBDRl9SRVRVUk5TX1JFVEFJTkVEOworQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1
ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJikgQ0ZfUkVUVVJOU19SRVRBSU5FRDsKIHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IHBpeGVsQnVmZmVyVG9G
cmFtZShDVlBpeGVsQnVmZmVyUmVmKTsKK2Jvb2wgY29weVZpZGVvRnJhbWUoY29uc3QgVmlkZW9G
cmFtZSYsIHVpbnQ4X3QqKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0
aWxpdGllcy5tbQppbmRleCA0OTgxMmU3ZDIzN2U4YWJhMWIyM2Q1OTU0NDAxOGU4ODZlMDY4YTBj
Li43ZjZmYmIxMWU3NjkzYWQ2NmRmOTI0YjkzZjRkMjhlN2VlODllMGE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktp
dFV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5tbQpAQCAtMTc1LDQgKzE3NSw1MiBAQCBD
VlBpeGVsQnVmZmVyUmVmIGNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJh
bWUmIGZyYW1lLCBjb25zdCBzdGQ6OgogICAgIHJldHVybiBDVlBpeGVsQnVmZmVyUmV0YWluKHJ0
Y1BpeGVsQnVmZmVyLnBpeGVsQnVmZmVyKTsKIH0KIAorQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1
ZmZlckZyb21GcmFtZShjb25zdCBWaWRlb0ZyYW1lJiBmcmFtZSkKK3sKKyAgICBhdXRvIGJ1ZmZl
ciA9IGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpOworICAgIGlmIChidWZmZXItPnR5cGUoKSAh
PSBWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGF1dG8gKmZyYW1lQnVmZmVyID0gc3RhdGljX2Nhc3Q8T2JqQ0ZyYW1lQnVmZmVy
Kj4oYnVmZmVyLmdldCgpKS0+d3JhcHBlZF9mcmFtZV9idWZmZXIoKTsKKyAgICBpZiAoIVtmcmFt
ZUJ1ZmZlciBpc0tpbmRPZkNsYXNzOltSVENDVlBpeGVsQnVmZmVyIGNsYXNzXV0pCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgYXV0byAqcnRjUGl4ZWxCdWZmZXIgPSAoUlRDQ1ZQaXhl
bEJ1ZmZlciAqKWZyYW1lQnVmZmVyOworICAgIHJldHVybiBDVlBpeGVsQnVmZmVyUmV0YWluKHJ0
Y1BpeGVsQnVmZmVyLnBpeGVsQnVmZmVyKTsKK30KKworYm9vbCBjb3B5VmlkZW9GcmFtZShjb25z
dCBWaWRlb0ZyYW1lJiBmcmFtZSwgdWludDhfdCogZGF0YSkKK3sKKyAgICBhdXRvIGJ1ZmZlciA9
IGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpOworICAgIGlmIChidWZmZXItPnR5cGUoKSA9PSBW
aWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBhdXRvIHR5cGUgPSBidWZmZXItPnR5cGUoKTsKKyAgICBpZiAodHlwZSA9PSBWaWRlb0Zy
YW1lQnVmZmVyOjpUeXBlOjprSTQyMCkgeworICAgICAgICBhdXRvKiBpNDIwRnJhbWUgPSBidWZm
ZXItPkdldEk0MjAoKTsKKyAgICAgICAgYXV0byogZGF0YVkgPSBkYXRhOworICAgICAgICBhdXRv
IHN0cmlkZVkgPSBpNDIwRnJhbWUtPndpZHRoKCk7CisgICAgICAgIGF1dG8gc3RyaWRlVVYgPSBp
NDIwRnJhbWUtPndpZHRoKCkgLyAyOworICAgICAgICBhdXRvKiBkYXRhVVYgPSBkYXRhICsgKGk0
MjBGcmFtZS0+d2lkdGgoKSAqIGk0MjBGcmFtZS0+aGVpZ2h0KCkpOworICAgICAgICByZXR1cm4g
IWxpYnl1djo6STQyMFRvTlYxMihpNDIwRnJhbWUtPkRhdGFZKCksIGk0MjBGcmFtZS0+U3RyaWRl
WSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpNDIwRnJhbWUtPkRhdGFV
KCksIGk0MjBGcmFtZS0+U3RyaWRlVSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpNDIwRnJhbWUtPkRhdGFWKCksIGk0MjBGcmFtZS0+U3RyaWRlVigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWSwgc3RyaWRlWSwgZGF0YVVWLCBzdHJpZGVV
ViwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTQyMEZyYW1lLT53aWR0aCgp
LCBpNDIwRnJhbWUtPmhlaWdodCgpKTsKKyAgICB9CisgICAgaWYgKHR5cGUgPT0gVmlkZW9GcmFt
ZUJ1ZmZlcjo6VHlwZTo6a0kwMTApIHsKKyAgICAgICAgYXV0byogaTAxMEZyYW1lID0gYnVmZmVy
LT5HZXRJMDEwKCk7CisgICAgICAgIGF1dG8qIGRhdGFZID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
MTZfdCo+KGRhdGEpOworICAgICAgICBhdXRvIHN0cmlkZVkgPSBpMDEwRnJhbWUtPndpZHRoKCk7
CisgICAgICAgIGF1dG8gc3RyaWRlVVYgPSBpMDEwRnJhbWUtPndpZHRoKCkgLyAyOworICAgICAg
ICBhdXRvKiBkYXRhVVYgPSBkYXRhWSArIChpMDEwRnJhbWUtPndpZHRoKCkgKiBpMDEwRnJhbWUt
PmhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuICFsaWJ5dXY6OkkwMTBUb1AwMTAoaTAxMEZyYW1l
LT5EYXRhWSgpLCBpMDEwRnJhbWUtPlN0cmlkZVkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaTAxMEZyYW1lLT5EYXRhVSgpLCBpMDEwRnJhbWUtPlN0cmlkZVUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTAxMEZyYW1lLT5EYXRhVigpLCBpMDEw
RnJhbWUtPlN0cmlkZVYoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YVksIHN0cmlkZVksIGRhdGFVViwgc3RyaWRlVVYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGkwMTBGcmFtZS0+d2lkdGgoKSwgaTAxMEZyYW1lLT5oZWlnaHQoKSk7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
NDEwYzZmNGFkNWIyMTU5MDQ1ZDE1MmM2NjFiNTBmMTUzNDY4NDY3ZC4uNTg1ZWE0NTM3ZmNmNjU5
ZDE4OTk0NzdjN2MyNTJiNGFjNzllMTA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0y
NjgsNiArMjY4LDcgQEAgcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQubW0KIHBsYXRmb3JtL2NvY29hL1Bvd2VyU291cmNlTm90aWZpZXIubW0KIHBsYXRmb3Jt
L2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbQorcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9G
cmFtZVV0aWxpdGllcy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2NvY29hL1NlYXJjaFBvcHVwTWVu
dUNvY29hLm1tCiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQogcGxhdGZvcm0v
Y29jb2EvU3lzdGVtVmVyc2lvbi5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIyOThiZGU3ZWJiN2RlMjc4Mjg3NWJlMzE5MzE2
MzM3YjMwZmI2NjEuLmIxNTEyYjUxZWM5YjRkMzk3MzM3NDc1NGRhMjBkMjhkZmQ2N2M0NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyMTEsMTAgKzEyMTEsMTIgQEAKIAkJNDFEMTI5REIxRjNEMTQzODAwRDE1RTQ3IC8qIEZl
dGNoSGVhZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFGNTRGODMxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoSGVhZGVycy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRDI4RDBEMjEzOUUwNTgw
MEY0MjA2RiAvKiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQyOEQwQjIxMzlFMDFEMDBGNDIwNkYgLyog
TGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuY3BwICovOyB9OwogCQk0MUQ0MUM2NzIyNTY4NzRGMDA2
OTc5NDIgLyogU2VydmljZVdvcmtlckludGVybmFscy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDQxQzY1MjI1Njg1OTIwMDY5Nzk0MiAvKiBTZXJ2
aWNlV29ya2VySW50ZXJuYWxzLm1tICovOyB9OworCQk0MURDMDRGRTI3QTgzQzkzMDA4Q0Y5Njgg
LyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxREMwNEZCMjdBODNDOTIwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0Zy
YW1lSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxREU3QzdDMjIyREExNDMwMDUzMkI2NSAvKiBTdG9yYWdlUXVvdGFNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MURFN0M3QjIyMkRB
MTNFMDA1MzJCNjUgLyogU3RvcmFnZVF1b3RhTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxREVFRkIwMjcxOUIyOTAwMENCOEQ3NCAv
KiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MURFRUZBQzI3MTlCMjg4MDBDQjhENzQgLyogVmlkZW9GcmFt
ZVJlcXVlc3RDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREVF
RkI0MjcxOUJBMTkwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MURFRkNCNjFFNTZDMUJEMDAw
RDlFNUYgLyogSlNET01NYXBMaWtlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MURFRkNCNDFFNTZDMUI5MDAwRDlFNUYgLyogSlNET01NYXBMaWtlLmgg
Ki87IH07CisJCTQxREYyRDVFMjdBOTQ1MkEwMEYyNUEyMSAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5m
by5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREMw
NEZEMjdBODNDOTMwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5tbSAqLzsgfTsKIAkJ
NDFFMTJFOUYyNEZFNzRFMjAwOTNGRkI0IC8qIFdlYlNvY2tldElkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTEyRTlEMjRGRTc0RTIw
MDkzRkZCNCAvKiBXZWJTb2NrZXRJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8qIEFi
c3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsK
IAkJNDFFMkYxOTkyNzRGQUVDRjAwQTA4OUVFIC8qIE5hdmlnYXRpb25QcmVsb2FkTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMkYxOTcy
NzRGQUVDQjAwQTA4OUVFIC8qIE5hdmlnYXRpb25QcmVsb2FkTWFuYWdlci5oICovOyB9OwpAQCAt
ODkxOCw2ICs4OTIwLDggQEAKIAkJNDFENDFDNjUyMjU2ODU5MjAwNjk3OTQyIC8qIFNlcnZpY2VX
b3JrZXJJbnRlcm5hbHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTZXJ2aWNlV29ya2VySW50ZXJuYWxzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUQ1MUJCMjFFNEUyRTgxMDAxMzFBNUIgLyogTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDQXVkaW9Gb3JtYXQuaDsgcGF0
aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb0Zvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUQ2QkQ5ODI1MUIzQURBMDA1NUE3QjcgLyogSFRNTE1lZGlhRWxlbWVudCtB
dWRpb091dHB1dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIkhUTUxNZWRpYUVsZW1lbnQr
QXVkaW9PdXRwdXQuaWRsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEQzA0RkIy
N0E4M0M5MjAwOENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWVJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFZpZGVvRnJhbWVJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxREMwNEZEMjdBODNDOTMwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0Zy
YW1lSW5mby5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNoYXJl
ZFZpZGVvRnJhbWVJbmZvLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MURFN0M3
QTIyMkRBMTNEMDA1MzJCNjUgLyogU3RvcmFnZVF1b3RhTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlUXVvdGFNYW5hZ2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFERTdDN0IyMjJEQTEzRTAwNTMyQjY1IC8qIFN0b3Jh
Z2VRdW90YU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFn
ZVF1b3RhTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MURFRUZBQzI3
MTlCMjg4MDBDQjhENzQgLyogVmlkZW9GcmFtZVJlcXVlc3RDYWxsYmFjay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yNjgxNiw2ICsyNjgyMCw4IEBACiAJCQkJMEU3MDU4RjMxQkM1Q0NENzAwNDVBNTA3
IC8qIFNlYXJjaFBvcHVwTWVudUNvY29hLmggKi8sCiAJCQkJMEU3MDU4RUQxQkM1QkMxOTAwNDVB
NTA3IC8qIFNlYXJjaFBvcHVwTWVudUNvY29hLm1tICovLAogCQkJCTFBNEE5NTUxMEI0RURDRkYw
MDJEOEMzQyAvKiBTaGFyZWRCdWZmZXJDb2NvYS5tbSAqLywKKwkJCQk0MURDMDRGQjI3QTgzQzky
MDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCAqLywKKwkJCQk0MURDMDRGRDI3QTgz
QzkzMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8ubW0gKi8sCiAJCQkJQzE2OTJERDQy
M0QyM0FFMDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkuaCAqLywKIAkJCQlDMTY5MkREMTIzRDIz
QUJEMDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5tbSAqLywKIAkJCQk1RDU5NzVCMTE5NjM1RjEx
MDBEMDA4NzggLyogU3lzdGVtVmVyc2lvbi5oICovLApAQCAtMzcxODYsNiArMzcxOTIsNyBAQAog
CQkJCUNEMzZDMTZCMjYwQTY1Q0MwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODM0REZBRDAxRjdEQUU1RDAwQzI3MjVCIC8qIFNoYXJlZFN0
cmluZ0hhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RUEzMDk5RUI3OEMwMDU2RTU4MSAv
KiBTaGFyZWRUaW1lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFEQzA0RkUyN0E4M0M5MzAwOENG
OTY4IC8qIFNoYXJlZFZpZGVvRnJhbWVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjdBNjhE
QTI3NUVBOTlDMDA5QjMxQzUgLyogU2hhcmVkV29ya2VyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDY3QTY4RDkyNzVFQTk5ODAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlclByb3h5LmggaW4g
SGVhZGVycyAqLywKIAkJCQk0NjdBNjhEODI3NUVBOTk1MDA5QjMxQzUgLyogU2hhcmVkV29ya2Vy
U2NyaXB0TG9hZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTM4NjYwLDYgKzM4NjY3LDcgQEAKIAkJ
CQk0M0I4NUVENDE4Q0JFQzUyMDBFMzFBRjQgLyogU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBh
dGliaWxpdHlFbGVtZW50TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2QUEwRjlFMThEMkEx
OEIwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFwLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDRDU4REZEMUY5NTY1QTgwMDExMjc5MSAvKiBTZXR0aW5ncy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk0MURGMkQ1RTI3QTk0NTJBMDBGMjVBMjEgLyogU2hhcmVkVmlkZW9GcmFt
ZUluZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTBBODFGOTAyMkE0MDA1MTAyQ0UgLyog
U29mdExpbmtMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUFBMTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUE4MzNDN0NBMEEyQ0YwNkIwMEQ1NzY2NCAvKiBTVkdOYW1lcy5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1Nv
ZnRMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRM
aW5rLmNwcAppbmRleCAzZTA3M2E3ODY1ZGNhODE4M2Q4YmM1ZWU5NzlkMTdiZTkwODUxMDk4Li40
NWNkYzdhOWFjZmIwNGQxM2M4MjQ4ZGUyMTFhMjRmNzdlMzRjNjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuY3BwCkBAIC0zOSw3
ICszOSw5IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRl
bywgQ1ZCdWZmZXJHZXRBdHRhY2htZW50LCBDRlR5cGVSCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShXZWJDb3JlLCBDb3JlVmlkZW8sIENWQnVmZmVyR2V0QXR0YWNobWVudHMsIENGRGlj
dGlvbmFyeVJlZiwgKENWQnVmZmVyUmVmIGJ1ZmZlciwgQ1ZBdHRhY2htZW50TW9kZSBtb2RlKSwg
KGJ1ZmZlciwgbW9kZSkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBD
b3JlVmlkZW8sIENWUGl4ZWxCdWZmZXJHZXRUeXBlSUQsIENGVHlwZUlELCAoKSwgKCkpCiBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlVmlkZW8sIENWUGl4ZWxCdWZm
ZXJHZXRXaWR0aCwgc2l6ZV90LCAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciksIChwaXhl
bEJ1ZmZlcikpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlVmlk
ZW8sIENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUsIHNpemVfdCwgKENWUGl4ZWxCdWZmZXJS
ZWYgcGl4ZWxCdWZmZXIsIHNpemVfdCBwbGFuZUluZGV4KSwgKHBpeGVsQnVmZmVyLCBwbGFuZUlu
ZGV4KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywg
Q1ZQaXhlbEJ1ZmZlckdldEhlaWdodCwgc2l6ZV90LCAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1
ZmZlciksIChwaXhlbEJ1ZmZlcikpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJD
b3JlLCBDb3JlVmlkZW8sIENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lLCBzaXplX3QsIChD
VlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBzaXplX3QgcGxhbmVJbmRleCksIChwaXhlbEJ1
ZmZlciwgcGxhbmVJbmRleCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3Jl
LCBDb3JlVmlkZW8sIENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzcywgdm9pZCosIChDVlBpeGVs
QnVmZmVyUmVmIHBpeGVsQnVmZmVyKSwgKHBpeGVsQnVmZmVyKSkKIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVy
Um93LCBzaXplX3QsIChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKSwgKHBpeGVsQnVmZmVy
KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQ
aXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZSwgc2l6ZV90LCAoQ1ZQaXhlbEJ1ZmZlclJl
ZiBwaXhlbEJ1ZmZlciwgc2l6ZV90IHBsYW5lSW5kZXgpLCAocGl4ZWxCdWZmZXIsIHBsYW5lSW5k
ZXgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVv
U29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRM
aW5rLmgKaW5kZXggYzliNDEzOTFjZmNiOTkzNGMzYmM1MDQzM2YzMThmOGQ5NWM4N2YyYi4uMDM3
MzIwNDk2OTZlZmVlNDFmYTljZDI1NGQzOTdhYzU5MjUwYTYxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5oCkBAIC00NCw4ICs0NCwx
MiBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlVmlkZW8sIENW
UGl4ZWxCdWZmZXJHZXRUeXBlSUQsIENGVHlwZQogI2RlZmluZSBDVlBpeGVsQnVmZmVyR2V0VHlw
ZUlEIHNvZnRMaW5rX0NvcmVWaWRlb19DVlBpeGVsQnVmZmVyR2V0VHlwZUlECiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlVmlkZW8sIENWUGl4ZWxCdWZmZXJHZXRX
aWR0aCwgc2l6ZV90LCAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciksIChwaXhlbEJ1ZmZl
cikpCiAjZGVmaW5lIENWUGl4ZWxCdWZmZXJHZXRXaWR0aCBzb2Z0TGlua19Db3JlVmlkZW9fQ1ZQ
aXhlbEJ1ZmZlckdldFdpZHRoCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3Jl
LCBDb3JlVmlkZW8sIENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUsIHNpemVfdCwgKENWUGl4
ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHNpemVfdCBwbGFuZUluZGV4KSwgKHBpeGVsQnVmZmVy
LCBwbGFuZUluZGV4KSkKKyNkZWZpbmUgQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFuZSBzb2Z0
TGlua19Db3JlVmlkZW9fQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFuZQogU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVvLCBDVlBpeGVsQnVmZmVyR2V0SGVp
Z2h0LCBzaXplX3QsIChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKSwgKHBpeGVsQnVmZmVy
KSkKICNkZWZpbmUgQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodCBzb2Z0TGlua19Db3JlVmlkZW9fQ1ZQ
aXhlbEJ1ZmZlckdldEhlaWdodAorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29y
ZSwgQ29yZVZpZGVvLCBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQbGFuZSwgc2l6ZV90LCAoQ1ZQ
aXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgc2l6ZV90IHBsYW5lSW5kZXgpLCAocGl4ZWxCdWZm
ZXIsIHBsYW5lSW5kZXgpKQorI2RlZmluZSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQbGFuZSBz
b2Z0TGlua19Db3JlVmlkZW9fQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodE9mUGxhbmUKIFNPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdl
dEJhc2VBZGRyZXNzLCB2b2lkKiwgKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpLCAocGl4
ZWxCdWZmZXIpKQogI2RlZmluZSBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3Mgc29mdExpbmtf
Q29yZVZpZGVvX0NWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzcwogU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVvLCBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJS
b3csIHNpemVfdCwgKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpLCAocGl4ZWxCdWZmZXIp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9G
cmFtZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJh
bWVJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGVlOGE5NmQyZTNhMjJiZmZjNTJmMzY5MGQ5MmJmZThmMTgy
OGQ3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1No
YXJlZFZpZGVvRnJhbWVJbmZvLmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1NwYW4uaD4KKwordHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciog
Q1ZQaXhlbEJ1ZmZlclJlZjsKK3R5cGVkZWYgc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqIENW
UGl4ZWxCdWZmZXJQb29sUmVmOworCituYW1lc3BhY2Ugd2VicnRjIHsKK2NsYXNzIFZpZGVvRnJh
bWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkVmlkZW9GcmFtZUlu
Zm8geworcHVibGljOgorICAgIFNoYXJlZFZpZGVvRnJhbWVJbmZvKCkgPSBkZWZhdWx0OworICAg
IFNoYXJlZFZpZGVvRnJhbWVJbmZvKE9TVHlwZSwgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhl
aWdodCwgdWludDMyX3QgYnl0ZXNQZXJSb3csIHVpbnQzMl90IHdpZHRoUGxhbmVCID0gMCwgdWlu
dDMyX3QgaGVpZ2h0UGxhbmVCID0gMCwgdWludDMyX3QgYnl0ZXNQZXJSb3dQbGFuZUIgPSAwKTsK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5jb2RlKHVpbnQ4X3QqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lSW5mbz4gZGVjb2Rl
KFNwYW48Y29uc3QgdWludDhfdD4pOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNoYXJl
ZFZpZGVvRnJhbWVJbmZvIGZyb21DVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYpOworICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgd3JpdGVQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmLCB1
aW50OF90KiBkYXRhKTsKKworI2lmIFVTRShMSUJXRUJSVEMpCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFNoYXJlZFZpZGVvRnJhbWVJbmZvIGZyb21WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6
VmlkZW9GcmFtZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgd3JpdGVWaWRlb0ZyYW1lKGNv
bnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYsIHVpbnQ4X3QqIGRhdGEpOworI2VuZGlmCisKKyAgICBX
RUJDT1JFX0VYUE9SVCBzaXplX3Qgc3RvcmFnZVNpemUoKSBjb25zdDsKKworICAgIFdFQkNPUkVf
RVhQT1JUIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21N
ZW1vcnkoY29uc3QgdWludDhfdCogZGF0YSwgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgPSBudWxscHRy
KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNSZWFkV3JpdGVTdXBwb3J0ZWQoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclBvb2xSZWY+IGNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXJQb29sKCkgY29uc3Q7CisKKyAgICBPU1R5cGUgYnVmZmVyVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyVHlwZTsgfQorICAgIHVpbnQzMl90IHdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV93aWR0aDsgfTsKKyAgICB1aW50MzJfdCBoZWlnaHQoKSBjb25zdCB7
IHJldHVybiBtX2hlaWdodDsgfTsKKworcHJpdmF0ZToKKyAgICBPU1R5cGUgbV9idWZmZXJUeXBl
IHsgMCB9OworICAgIHVpbnQzMl90IG1fd2lkdGggeyAwIH07CisgICAgdWludDMyX3QgbV9oZWln
aHQgeyAwIH07CisgICAgdWludDMyX3QgbV9ieXRlc1BlclJvdyB7IDAgfTsKKyAgICB1aW50MzJf
dCBtX3dpZHRoUGxhbmVCIHsgMCB9OworICAgIHVpbnQzMl90IG1faGVpZ2h0UGxhbmVCIHsgMCB9
OworICAgIHVpbnQzMl90IG1fYnl0ZXNQZXJSb3dQbGFuZUIgeyAwIH07Cit9OworCisKK3N0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IFNoYXJlZFZpZGVvRnJhbWVJbmZvRW5jb2RpbmdMZW5ndGggPSBz
aXplb2YoU2hhcmVkVmlkZW9GcmFtZUluZm8pOworCitpbmxpbmUgU2hhcmVkVmlkZW9GcmFtZUlu
Zm86OlNoYXJlZFZpZGVvRnJhbWVJbmZvKE9TVHlwZSBidWZmZXJUeXBlLCB1aW50MzJfdCB3aWR0
aCwgdWludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBieXRlc1BlclJvdywgdWludDMyX3Qgd2lkdGhQ
bGFuZUIsIHVpbnQzMl90IGhlaWdodFBsYW5lQiwgdWludDMyX3QgYnl0ZXNQZXJSb3dQbGFuZUIp
CisgICAgOiBtX2J1ZmZlclR5cGUoYnVmZmVyVHlwZSkKKyAgICAsIG1fd2lkdGgod2lkdGgpCisg
ICAgLCBtX2hlaWdodChoZWlnaHQpCisgICAgLCBtX2J5dGVzUGVyUm93KGJ5dGVzUGVyUm93KQor
ICAgICwgbV93aWR0aFBsYW5lQih3aWR0aFBsYW5lQikKKyAgICAsIG1faGVpZ2h0UGxhbmVCKGhl
aWdodFBsYW5lQikKKyAgICAsIG1fYnl0ZXNQZXJSb3dQbGFuZUIoYnl0ZXNQZXJSb3dQbGFuZUIp
Cit7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJbmZvLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJiZDUzNjVkZjYxMWM0YzU3MDQ2OWVhYzE5ZjA1NzhjYmIxNzJhYmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0Zy
YW1lSW5mby5tbQpAQCAtMCwwICsxLDI5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRW
aWRlb0ZyYW1lSW5mby5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0o
Q09DT0EpCisKKyNpbmNsdWRlICJDVlV0aWxpdGllcy5oIgorI2luY2x1ZGUgIklPU3VyZmFjZS5o
IgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKyNpbmNsdWRl
IDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5oPgorCisjaWYgVVNFKEFDQ0VMRVJB
VEUpCisjaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+CisjZW5kaWYKKworI2lmIFVT
RShMSUJXRUJSVEMpCisKK0FMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0JFR0lOCisjaW5jbHVkZSA8
d2VicnRjL2FwaS92aWRlby92aWRlb19mcmFtZS5oPgorI2luY2x1ZGUgPHdlYnJ0Yy9zZGsvV2Vi
S2l0L1dlYktpdFV0aWxpdGllcy5oPgorQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfRU5ECisKKyNl
bmRpZiAvLyBVU0UoTElCV0VCUlRDKQorCisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRM
aW5rLmg+CisjaW5jbHVkZSAiQ29yZVZpZGVvU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitTaGFyZWRWaWRlb0ZyYW1lSW5mbyBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZnJvbUNW
UGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcikKK3sKKyAgICBhdXRvIHR5
cGUgPSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKTsKKyAgICBp
ZiAodHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5n
ZSB8fCB0eXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFu
Z2UpCisgICAgICAgIHJldHVybiB7IHR5cGUsIHN0YXRpY19jYXN0PHVpbnQzMl90PihDVlBpeGVs
QnVmZmVyR2V0V2lkdGhPZlBsYW5lKHBpeGVsQnVmZmVyLCAwKSksIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQbGFuZShwaXhlbEJ1ZmZlciwgMCkpLCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhl
bEJ1ZmZlciwgMCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oQ1ZQaXhlbEJ1ZmZlckdldFdpZHRo
T2ZQbGFuZShwaXhlbEJ1ZmZlciwgMSkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oQ1ZQaXhlbEJ1
ZmZlckdldEhlaWdodE9mUGxhbmUocGl4ZWxCdWZmZXIsIDEpKSwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUocGl4ZWxCdWZmZXIsIDEpKSB9
OworICAgIHJldHVybiB7IHR5cGUsIHN0YXRpY19jYXN0PHVpbnQzMl90PihDVlBpeGVsQnVmZmVy
R2V0V2lkdGgocGl4ZWxCdWZmZXIpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KENWUGl4ZWxCdWZm
ZXJHZXRIZWlnaHQocGl4ZWxCdWZmZXIpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KENWUGl4ZWxC
dWZmZXJHZXRCeXRlc1BlclJvdyhwaXhlbEJ1ZmZlcikpIH07Cit9CisKK2Jvb2wgU2hhcmVkVmlk
ZW9GcmFtZUluZm86OmlzUmVhZFdyaXRlU3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9idWZmZXJUeXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJWaWRl
b1JhbmdlCisjaWYgVVNFKEFDQ0VMRVJBVEUpCisgICAgICAgICAgICB8fCBtX2J1ZmZlclR5cGUg
PT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQQorI2VuZGlmCisgICAgICAgICAgICB8fCBtX2J1
ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5n
ZQorICAgICAgICAgICAgfHwgbV9idWZmZXJUeXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZ
cENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlOworfQorCitzaXplX3QgU2hhcmVkVmlkZW9GcmFtZUlu
Zm86OnN0b3JhZ2VTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1fYnl0ZXNQZXJSb3cgKiBt
X2hlaWdodCkgKyAobV9ieXRlc1BlclJvd1BsYW5lQiAqIG1faGVpZ2h0UGxhbmVCKSArIHNpemVv
ZihTaGFyZWRWaWRlb0ZyYW1lSW5mbyk7Cit9CisKK3ZvaWQgU2hhcmVkVmlkZW9GcmFtZUluZm86
OmVuY29kZSh1aW50OF90KiBkZXN0aW5hdGlvbikKK3sKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpF
bmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2RlciA8PCAodWludDMyX3QpbV9idWZmZXJUeXBlOwor
ICAgIGVuY29kZXIgPDwgbV93aWR0aDsKKyAgICBlbmNvZGVyIDw8IG1faGVpZ2h0OworICAgIGVu
Y29kZXIgPDwgbV9ieXRlc1BlclJvdzsKKyAgICBlbmNvZGVyIDw8IG1fd2lkdGhQbGFuZUI7Cisg
ICAgZW5jb2RlciA8PCBtX2hlaWdodFBsYW5lQjsKKyAgICBlbmNvZGVyIDw8IG1fYnl0ZXNQZXJS
b3dQbGFuZUI7CisgICAgQVNTRVJUKHNpemVvZihTaGFyZWRWaWRlb0ZyYW1lSW5mbykgPT0gZW5j
b2Rlci5idWZmZXJTaXplKCkpOworICAgIHN0ZDo6bWVtY3B5KGRlc3RpbmF0aW9uLCBlbmNvZGVy
LmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8U2hh
cmVkVmlkZW9GcmFtZUluZm8+IFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpkZWNvZGUoU3Bhbjxjb25z
dCB1aW50OF90PiBzcGFuKQoreworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rl
cihzcGFuKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGJ1ZmZlclR5cGU7CisgICAg
ZGVjb2RlciA+PiBidWZmZXJUeXBlOworICAgIGlmICghYnVmZmVyVHlwZSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHdpZHRoOwor
ICAgIGRlY29kZXIgPj4gd2lkdGg7CisgICAgaWYgKCF3aWR0aCkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGhlaWdodDsKKyAgICBk
ZWNvZGVyID4+IGhlaWdodDsKKyAgICBpZiAoIWhlaWdodCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGJ5dGVzUGVyUm93OworICAg
IGRlY29kZXIgPj4gYnl0ZXNQZXJSb3c7CisgICAgaWYgKCFieXRlc1BlclJvdykKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHdpZHRo
UGxhbmVCOworICAgIGRlY29kZXIgPj4gd2lkdGhQbGFuZUI7CisgICAgaWYgKCF3aWR0aFBsYW5l
QikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IGhlaWdodFBsYW5lQjsKKyAgICBkZWNvZGVyID4+IGhlaWdodFBsYW5lQjsKKyAgICBp
ZiAoIWhlaWdodFBsYW5lQikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGJ5dGVzUGVyUm93UGxhbmVCOworICAgIGRlY29kZXIgPj4g
Ynl0ZXNQZXJSb3dQbGFuZUI7CisgICAgaWYgKCFieXRlc1BlclJvd1BsYW5lQikKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBTaGFyZWRWaWRlb0ZyYW1lSW5mbyB7
ICpidWZmZXJUeXBlLCAqd2lkdGgsICpoZWlnaHQsICpieXRlc1BlclJvdyAsICp3aWR0aFBsYW5l
QiwgKmhlaWdodFBsYW5lQiwgKmJ5dGVzUGVyUm93UGxhbmVCIH07Cit9CisKK1JldGFpblB0cjxD
VlBpeGVsQnVmZmVyUmVmPiBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6Y3JlYXRlUGl4ZWxCdWZmZXJG
cm9tTWVtb3J5KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIENWUGl4ZWxCdWZmZXJQb29sUmVmIGJ1ZmZl
clBvb2wpCit7CisgICAgQVNTRVJUKGlzUmVhZFdyaXRlU3VwcG9ydGVkKCkpOworICAgIGlmICht
X2J1ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgeworI2lmIFVTRShBQ0NF
TEVSQVRFKQorICAgICAgICBJbnRTaXplIHNpemUgeyBzdGF0aWNfY2FzdDxpbnQ+KG1fd2lkdGgp
LCBzdGF0aWNfY2FzdDxpbnQ+KG1faGVpZ2h0KSB9OworICAgICAgICBhdXRvIGlvU3VyZmFjZSA9
IElPU3VyZmFjZTo6Y3JlYXRlKHNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBJ
T1N1cmZhY2U6OkZvcm1hdDo6QkdSQSk7CisKKyAgICAgICAgSU9TdXJmYWNlOjpMb2NrZXIgbG9j
aygqaW9TdXJmYWNlKTsKKyAgICAgICAgdkltYWdlX0J1ZmZlciBzcmM7CisgICAgICAgIHNyYy53
aWR0aCA9IG1fd2lkdGg7CisgICAgICAgIHNyYy5oZWlnaHQgPSBtX2hlaWdodDsKKyAgICAgICAg
c3JjLnJvd0J5dGVzID0gbV9ieXRlc1BlclJvdzsKKyAgICAgICAgc3JjLmRhdGEgPSBjb25zdF9j
YXN0PHVpbnQ4X3QqPihkYXRhKTsKKworICAgICAgICB2SW1hZ2VfQnVmZmVyIGRlc3Q7CisgICAg
ICAgIGRlc3Qud2lkdGggPSBtX3dpZHRoOworICAgICAgICBkZXN0LmhlaWdodCA9IG1faGVpZ2h0
OworICAgICAgICBkZXN0LnJvd0J5dGVzID0gaW9TdXJmYWNlLT5ieXRlc1BlclJvdygpOworICAg
ICAgICBkZXN0LmRhdGEgPSBsb2NrLnN1cmZhY2VCYXNlQWRkcmVzcygpOworCisgICAgICAgIHZJ
bWFnZVVucHJlbXVsdGlwbHlEYXRhX0JHUkE4ODg4KCZzcmMsICZkZXN0LCBrdkltYWdlTm9GbGFn
cyk7CisKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxC
dWZmZXIoaW9TdXJmYWNlLT5zdXJmYWNlKCkpOworICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKCpwaXhl
bEJ1ZmZlcik7CisjZWxzZQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgImNyZWF0
ZUlPU3VyZmFjZUZyb21TaGFyZWRNZW1vcnkgY2Fubm90IGNvbnZlcnQgdG8gSU9TdXJmYWNlIik7
CisgICAgICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCisgICAgfQorCisgICAgQ1ZQaXhlbEJ1
ZmZlclJlZiByYXdQaXhlbEJ1ZmZlciA9IG51bGxwdHI7CisgICAgaWYgKGJ1ZmZlclBvb2wpIHsK
KyAgICAgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVy
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1ZmZlclBvb2wsICZyYXdQaXhlbEJ1ZmZlcik7CisgICAg
ICAgIGlmIChzdGF0dXMgIT0gbm9FcnIgfHwgIXJhd1BpeGVsQnVmZmVyKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgQVNTRVJUKENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9m
UGxhbmUocmF3UGl4ZWxCdWZmZXIsIDApID09IG1fd2lkdGgpOworICAgICAgICBBU1NFUlQoQ1ZQ
aXhlbEJ1ZmZlckdldEhlaWdodE9mUGxhbmUocmF3UGl4ZWxCdWZmZXIsIDApID09IG1faGVpZ2h0
KTsKKyAgICAgICAgQVNTRVJUKENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocmF3UGl4
ZWxCdWZmZXIpID09IG1fYnVmZmVyVHlwZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBz
dGF0dXMgPSBDVlBpeGVsQnVmZmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fd2lkdGgs
IG1faGVpZ2h0LCBtX2J1ZmZlclR5cGUsIG51bGxwdHIsICZyYXdQaXhlbEJ1ZmZlcik7CisgICAg
ICAgIGlmIChzdGF0dXMgIT0gbm9FcnIgfHwgIXJhd1BpeGVsQnVmZmVyKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0Q0Yo
cmF3UGl4ZWxCdWZmZXIpOworICAgIGF1dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNl
QWRkcmVzcyhyYXdQaXhlbEJ1ZmZlciwgMCk7CisgICAgaWYgKHN0YXR1cyAhPSBub0VycikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQ
bGFuZShyYXdQaXhlbEJ1ZmZlciwgMSkgIT0gbV93aWR0aFBsYW5lQiB8fCBDVlBpeGVsQnVmZmVy
R2V0SGVpZ2h0T2ZQbGFuZShyYXdQaXhlbEJ1ZmZlciwgMSkgIT0gbV9oZWlnaHRQbGFuZUIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byogcGxhbmVBID0gc3RhdGljX2Nhc3Q8
dWludDhfdCo+KENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUocmF3UGl4ZWxCdWZm
ZXIsIDApKTsKKyAgICB1aW50MzJfdCBieXRlc1BlclJvd1BsYW5lQSA9IENWUGl4ZWxCdWZmZXJH
ZXRCeXRlc1BlclJvd09mUGxhbmUocmF3UGl4ZWxCdWZmZXIsIDApOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2hlaWdodDsgKytpKSB7CisgICAgICAgIHN0ZDo6bWVtY3B5KHBsYW5l
QSwgZGF0YSwgc3RkOjptaW4oYnl0ZXNQZXJSb3dQbGFuZUEsIG1fYnl0ZXNQZXJSb3cpKTsKKyAg
ICAgICAgcGxhbmVBICs9IGJ5dGVzUGVyUm93UGxhbmVBOworICAgICAgICBkYXRhICs9IG1fYnl0
ZXNQZXJSb3c7CisgICAgfQorCisgICAgYXV0byogcGxhbmVCID0gc3RhdGljX2Nhc3Q8dWludDhf
dCo+KENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUocmF3UGl4ZWxCdWZmZXIsIDEp
KTsKKyAgICB1aW50MzJfdCBieXRlc1BlclJvd1BsYW5lQiA9IENWUGl4ZWxCdWZmZXJHZXRCeXRl
c1BlclJvd09mUGxhbmUocmF3UGl4ZWxCdWZmZXIsIDEpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2hlaWdodFBsYW5lQjsgKytpKSB7CisgICAgICAgIHN0ZDo6bWVtY3B5KHBsYW5l
QiwgZGF0YSwgc3RkOjptaW4oYnl0ZXNQZXJSb3dQbGFuZUIsIG1fYnl0ZXNQZXJSb3dQbGFuZUIp
KTsKKyAgICAgICAgcGxhbmVCICs9IGJ5dGVzUGVyUm93UGxhbmVCOworICAgICAgICBkYXRhICs9
IG1fYnl0ZXNQZXJSb3dQbGFuZUI7CisgICAgfQorCisgICAgQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jh
c2VBZGRyZXNzKHJhd1BpeGVsQnVmZmVyLCAwKTsKKyAgICByZXR1cm4gcGl4ZWxCdWZmZXI7Cit9
CisKK2Jvb2wgU2hhcmVkVmlkZW9GcmFtZUluZm86OndyaXRlUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDhfdCogZGF0YSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9
IENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MocGl4ZWxCdWZmZXIsIGtDVlBpeGVsQnVmZmVy
TG9ja19SZWFkT25seSk7CisgICAgaWYgKHJlc3VsdCAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHNjb3BlID0gbWFrZVNjb3BlRXhpdChbJnBp
eGVsQnVmZmVyXSB7CisgICAgICAgIENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhwaXhl
bEJ1ZmZlciwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKKyAgICB9KTsKKworICAgIGVu
Y29kZShkYXRhKTsKKyAgICBkYXRhICs9IHNpemVvZihTaGFyZWRWaWRlb0ZyYW1lSW5mbyk7CisK
KyAgICBpZiAobV9idWZmZXJUeXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIHsKKyNp
ZiBVU0UoQUNDRUxFUkFURSkKKyAgICAgICAgdkltYWdlX0J1ZmZlciBzcmM7CisgICAgICAgIHNy
Yy53aWR0aCA9IG1fd2lkdGg7CisgICAgICAgIHNyYy5oZWlnaHQgPSBtX2hlaWdodDsKKyAgICAg
ICAgc3JjLnJvd0J5dGVzID0gbV9ieXRlc1BlclJvdzsKKyAgICAgICAgc3JjLmRhdGEgPSBDVlBp
eGVsQnVmZmVyR2V0QmFzZUFkZHJlc3MocGl4ZWxCdWZmZXIpOworCisgICAgICAgIHZJbWFnZV9C
dWZmZXIgZGVzdDsKKyAgICAgICAgZGVzdC53aWR0aCA9IG1fd2lkdGg7CisgICAgICAgIGRlc3Qu
aGVpZ2h0ID0gbV9oZWlnaHQ7CisgICAgICAgIGRlc3Qucm93Qnl0ZXMgPSBtX2J5dGVzUGVyUm93
OworICAgICAgICBkZXN0LmRhdGEgPSBkYXRhOworCisgICAgICAgIHZJbWFnZVVucHJlbXVsdGlw
bHlEYXRhX0JHUkE4ODg4KCZzcmMsICZkZXN0LCBrdkltYWdlTm9GbGFncyk7CisKKyAgICAgICAg
cmV0dXJuIHRydWU7CisjZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICB9
CisKKyAgICBjb25zdCB1aW50OF90ICpwbGFuZUEgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
ICo+KENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUocGl4ZWxCdWZmZXIsIDApKTsK
KyAgICBjb25zdCB1aW50OF90ICpwbGFuZUIgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90ICo+
KENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUocGl4ZWxCdWZmZXIsIDEpKTsKKwor
ICAgIHNpemVfdCBwbGFuZUFTaXplID0gbV9oZWlnaHQgKiBtX2J5dGVzUGVyUm93OworICAgIHN0
ZDo6bWVtY3B5KGRhdGEsIHBsYW5lQSwgcGxhbmVBU2l6ZSk7CisgICAgc2l6ZV90IHBsYW5lQlNp
emUgPSBtX2hlaWdodFBsYW5lQiAqIG1fYnl0ZXNQZXJSb3dQbGFuZUI7CisgICAgc3RkOjptZW1j
cHkoZGF0YSArIHBsYW5lQVNpemUsIHBsYW5lQiwgcGxhbmVCU2l6ZSk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJQb29sUmVmPiBTaGFyZWRWaWRlb0Zy
YW1lSW5mbzo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlclBvb2woKSBjb25zdAoreworICAgIGF1dG8g
cmVzdWx0ID0gY3JlYXRlSU9TdXJmYWNlQ1ZQaXhlbEJ1ZmZlclBvb2wobV93aWR0aCwgbV9oZWln
aHQsIG1fYnVmZmVyVHlwZSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiB7IH07
CisgICAgcmV0dXJuICpyZXN1bHQ7Cit9CisKKyNpZiBVU0UoTElCV0VCUlRDKQorU2hhcmVkVmlk
ZW9GcmFtZUluZm8gU2hhcmVkVmlkZW9GcmFtZUluZm86OmZyb21WaWRlb0ZyYW1lKGNvbnN0IHdl
YnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUpCit7CisgICAgYXV0byBidWZmZXIgPSBmcmFtZS52aWRl
b19mcmFtZV9idWZmZXIoKTsKKyAgICBpZiAoYnVmZmVyLT50eXBlKCkgPT0gd2VicnRjOjpWaWRl
b0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKQorICAgICAgICByZXR1cm4gU2hhcmVkVmlkZW9G
cmFtZUluZm8geyB9OworCisgICAgYXV0byB0eXBlID0gYnVmZmVyLT50eXBlKCk7CisKKyAgICBp
ZiAodHlwZSA9PSB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJNDIwKQorICAgICAg
ICByZXR1cm4gU2hhcmVkVmlkZW9GcmFtZUluZm8geyBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBD
YkNyOEJpUGxhbmFyRnVsbFJhbmdlLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGZyYW1lLndpZHRoKCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUuaGVpZ2h0KCkpLCBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSksCisgICAgICAgICAgICBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFt
ZS5oZWlnaHQoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSAvIDIgfTsK
KworICAgIGlmICh0eXBlID09IHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0kwMTAp
CisgICAgICAgIHJldHVybiBTaGFyZWRWaWRlb0ZyYW1lSW5mbyB7IGtDVlBpeGVsRm9ybWF0VHlw
ZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUuaGVp
Z2h0KCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSAqIDIpLAorICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZnJhbWUuaGVpZ2h0KCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lk
dGgoKSkgfTsKKworICAgIHJldHVybiBTaGFyZWRWaWRlb0ZyYW1lSW5mbyB7IH07Cit9CisKK2Jv
b2wgU2hhcmVkVmlkZW9GcmFtZUluZm86OndyaXRlVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZp
ZGVvRnJhbWUmIGZyYW1lLCB1aW50OF90KiBkYXRhKQoreworICAgIEFTU0VSVChtX2J1ZmZlclR5
cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZSB8fCBt
X2J1ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxs
UmFuZ2UpOworICAgIHJldHVybiB3ZWJydGM6OmNvcHlWaWRlb0ZyYW1lKGZyYW1lLCBkYXRhKTsK
K30KKyNlbmRpZgorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFU
Rk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZVZpZGVvU2FtcGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZVZpZGVvU2FtcGxlLmNwcAppbmRleCBiNTAzOTgxNzUzMDQwNWFiMDBhYjBiYzcyODk3
NTc0ZTNkOGMzNWU4Li5jNWIyZGRmOWU2Y2M0MDhhMGM4ZjYyMDAyOWExYWIxY2NmN2MxMzRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1Nh
bXBsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlk
ZW9TYW1wbGUuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVf
cHRyPElPU3VyZmFjZT4gdHJhbnNmZXJCR1JBUGl4ZWxCdWZmZXJUb0lPU3VyZmFjZShDVlBpCiAj
ZW5kaWYKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRl
b1NhbXBsZTo6Y3JlYXRlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCitzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlVmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoTWVkaWFTYW1wbGUmIHNh
bXBsZSwgU2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2Ugc2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2UpCiB7
CiAgICAgQVNTRVJUKHNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnR5cGUgPT0gUGxhdGZvcm1TYW1w
bGU6OkNNU2FtcGxlQnVmZmVyVHlwZSk7CiAKQEAgLTk3LDcgKzk3LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKE1lZGlhU2Ft
cGxlJiBzYW1wbGUKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGlvU3VyZmFjZTsK
ICAgICBhdXRvIHN1cmZhY2UgPSBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlKGltYWdlQnVmZmVy
LmdldCgpKTsKLSAgICBpZiAoIXN1cmZhY2UpIHsKKyAgICBpZiAoIXN1cmZhY2UgJiYgc2hvdWxk
Q2hlY2tGb3JJT1N1cmZhY2UgPT0gU2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6OlllcykgewogICAg
ICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGNhbnZhcyBkYXRhIHRoYXQgaXMgUkdCQSwgbm90IElP
U3VyZmFjZSBiYWNrZWQuCiAgICAgICAgIGF1dG8gcGl4ZWxGb3JtYXRUeXBlID0gQ1ZQaXhlbEJ1
ZmZlckdldFBpeGVsRm9ybWF0VHlwZShpbWFnZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmIChw
aXhlbEZvcm1hdFR5cGUgIT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgewpAQCAtMTE1LDEw
ICsxMTUsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRl
b1NhbXBsZTo6Y3JlYXRlKE1lZGlhU2FtcGxlJiBzYW1wbGUKICAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwg
V1RGTW92ZShpbWFnZUJ1ZmZlciksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzYW1w
bGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCBzYW1wbGUudmlk
ZW9NaXJyb3JlZCgpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4g
UmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiBp
bWFnZUJ1ZmZlciwgTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9uVGltZSwgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gcm90YXRpb24pCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+
IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYg
aW1hZ2VCdWZmZXIsIE1lZGlhVGltZSYmIHByZXNlbnRhdGlvblRpbWUsIE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBTaG91bGRDaGVja0ZvcklPU3VyZmFjZSBzaG91bGRDaGVj
a0ZvcklPU3VyZmFjZSkKIHsKICAgICBhdXRvIHN1cmZhY2UgPSBDVlBpeGVsQnVmZmVyR2V0SU9T
dXJmYWNlKGltYWdlQnVmZmVyLmdldCgpKTsKLSAgICBpZiAoIXN1cmZhY2UpIHsKKyAgICBpZiAo
IXN1cmZhY2UgJiYgc2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2UgPT0gU2hvdWxkQ2hlY2tGb3JJT1N1
cmZhY2U6OlllcykgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIlJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGU6IENWUGl4ZWxCdWZmZXJHZXRJT1N1cmZhY2UgcmV0dXJuZWQgbnVs
bHB0ciIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAppbmRleCAwODFl
MjM1NjVhY2M0ODQwYTgwNGM3ZDA3NGU2ZGYyMDU5ODM5ZjE3Li5jZDEwZDljMDVjYjhhMWQ4NmU2
NDNkNWEzZmFhYWU1Yzc0ZjA4Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKQEAgLTQ2LDkgKzQ2LDEyIEBAIHB1Ymxp
YzoKICAgICBSZW1vdGVWaWRlb1NhbXBsZSYgb3BlcmF0b3I9KFJlbW90ZVZpZGVvU2FtcGxlJiYp
ID0gZGVmYXVsdDsKICAgICB+UmVtb3RlVmlkZW9TYW1wbGUoKSA9IGRlZmF1bHQ7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBj
cmVhdGUoTWVkaWFTYW1wbGUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBjcmVhdGUoUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+JiYsIE1lZGlhVGltZSYmIHByZXNlbnRhdGlvblRpbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUpOworICAgIGVudW0gY2xh
c3MgU2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2UgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gY3JlYXRlKE1lZGlh
U2FtcGxlJiwgU2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2UgPSBTaG91bGRDaGVja0ZvcklPU3VyZmFj
ZTo6WWVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZVZpZGVvU2FtcGxlPiBjcmVhdGUoUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYsIE1lZGlh
VGltZSYmIHByZXNlbnRhdGlvblRpbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uID0gTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUsIFNob3VsZENoZWNrRm9ySU9TdXJmYWNlID0g
U2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2U6Olllcyk7CisKICAgICBXRUJDT1JFX0VYUE9SVCBJT1N1
cmZhY2VSZWYgc3VyZmFjZSgpIGNvbnN0OworICAgIENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2VCdWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOyB9CiAKICAgICB2b2lkIHNl
dE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5LmgK
aW5kZXggZWVjOGQ2NmZhYWJhZmI3OTliMGZkZWRjNDU5YzRkYjVhN2YyMmUzYi4uYzc3MmNiNzc2
MGYyZDU4MjlhZmNkMmI4NWY1OTEzYTMwYzAwNzQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaApAQCAtMzEsMTEg
KzMxLDE0IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlJUQ0RlY29k
ZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKKyNpbmNs
dWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW5j
bHVkZSA8d3RmL0xvY2suaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwog
Y2xhc3MgRGVjb2RlcjsKK2NsYXNzIFNlbWFwaG9yZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNTAsNiArNTMsNyBAQCB1c2luZyBMb2NhbEVuY29kZXIgPSB2b2lkKjsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgU2hh
cmVkVmlkZW9GcmFtZVJlYWRlcjsKIAogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHkgOiBwdWJs
aWMgSVBDOjpDb25uZWN0aW9uOjpUaHJlYWRNZXNzYWdlUmVjZWl2ZXJSZWZDb3VudGVkIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTgxLDE2ICs4NSwyMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgaW5pdGlhbGl6ZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIsIHVpbnQxNl90
IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQg
bWF4Qml0cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJhbWVyYXRlKTsK
ICAgICB2b2lkIGVuY29kZUZyYW1lKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1v
dGVWaWRlb1NhbXBsZSYmLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNL
ZXlGcmFtZSk7CiAgICAgdm9pZCBzZXRFbmNvZGVSYXRlcyhSVENFbmNvZGVySWRlbnRpZmllciwg
dWludDMyX3QgYml0UmF0ZSwgdWludDMyX3QgZnJhbWVSYXRlKTsKKyAgICB2b2lkIHNldFNoYXJl
ZFZpZGVvRnJhbWVTZW1hcGhvcmUoUlRDRW5jb2RlcklkZW50aWZpZXIsIElQQzo6U2VtYXBob3Jl
JiYpOworICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShSVENFbmNvZGVySWRlbnRp
ZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKICAgICB2b2lkIHNldFJUQ0xv
Z2dpbmdMZXZlbChXVEZMb2dMZXZlbCk7CiAKLSAgICBDRkRpY3Rpb25hcnlSZWYgaW9TdXJmYWNl
UGl4ZWxCdWZmZXJDcmVhdGlvbk9wdGlvbnMoSU9TdXJmYWNlUmVmKTsKLQogICAgIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKIAorICAgIHN0
cnVjdCBFbmNvZGVyIHsKKyAgICAgICAgd2VicnRjOjpMb2NhbEVuY29kZXIgd2VicnRjRW5jb2Rl
ciB7IG51bGxwdHIgfTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXJlZFZpZGVvRnJhbWVS
ZWFkZXI+IGZyYW1lUmVhZGVyOworICAgIH07CisgICAgRW5jb2RlciogZmluZEVuY29kZXJXaXRo
b3V0TG9jayhSVENFbmNvZGVySWRlbnRpZmllcik7CisKICAgICBtdXRhYmxlIExvY2sgbV9sb2Nr
OwogICAgIEhhc2hNYXA8UlRDRGVjb2RlcklkZW50aWZpZXIsIHdlYnJ0Yzo6TG9jYWxEZWNvZGVy
PiBtX2RlY29kZXJzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsgLy8gT25seSBtb2RpZmll
ZCBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUgYnV0IG1heSBnZXQgYWNjZXNzZWQgZnJvbSB0
aGUgbWFpbiB0aHJlYWQuCi0gICAgSGFzaE1hcDxSVENFbmNvZGVySWRlbnRpZmllciwgd2VicnRj
OjpMb2NhbEVuY29kZXI+IG1fZW5jb2RlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOyAv
LyBPbmx5IG1vZGlmaWVkIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZSBidXQgbWF5IGdldCBh
Y2Nlc3NlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLQorICAgIEhhc2hNYXA8UlRDRW5jb2Rlcklk
ZW50aWZpZXIsIEVuY29kZXI+IG1fZW5jb2RlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2sp
OyAvLyBPbmx5IG1vZGlmaWVkIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZSBidXQgbWF5IGdl
dCBhY2Nlc3NlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1
ZXVlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggODEzMjk1MDBl
NmU5ZDUzZmYyNzRmNTNlNzJjMmY2MmEwM2IyZWUwOS4uNmJiMjA4NjM4ZGMyMmE4OWVmYjg5Yzlh
ZjkwNmEwM2VhNjllNzQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0z
Niw2ICszNiw4IEBAIG1lc3NhZ2VzIC0+IExpYldlYlJUQ0NvZGVjc1Byb3h5IE5vdFJlZkNvdW50
ZWQgewogICAgIEluaXRpYWxpemVFbmNvZGVyKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIg
aWQsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0
ZSwgdW5zaWduZWQgbWF4Qml0cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4
RnJhbWVyYXRlKQogICAgIEVuY29kZUZyYW1lKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIg
aWQsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlIHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1w
LCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpCiAgICAgU2V0RW5jb2RlUmF0ZXMoV2ViS2l0
OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgdWludDMyX3QgYml0UmF0ZSwgdWludDMyX3QgZnJh
bWVSYXRlKQorICAgIFNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUoV2ViS2l0OjpSVENFbmNv
ZGVySWRlbnRpZmllciBpZCwgSVBDOjpTZW1hcGhvcmUgc2VtYXBob3JlKQorICAgIFNldFNoYXJl
ZFZpZGVvRnJhbWVNZW1vcnkoV2ViS2l0OjpSVENFbmNvZGVySWRlbnRpZmllciBpZCwgV2ViS2l0
OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlKQogICAgIFNldFJUQ0xvZ2dp
bmdMZXZlbChXVEZMb2dMZXZlbCBsZXZlbCkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KaW5kZXggMzBmYTMw
Y2IzZGM5YzliNDAxZjBjNGVjZmNlMjEwODFlYzQ2ZTVjMS4uYmFiZmMyOWNhNzJiZmJlZGY4ZDU0
ODQ1YTIzNzVmZmU0YzBhYThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCkBAIC0zMiw2ICszMiw3IEBACiAj
aW1wb3J0ICJHUFVQcm9jZXNzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NNZXNzYWdlcy5o
IgogI2ltcG9ydCAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiU2hh
cmVkVmlkZW9GcmFtZS5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0NWVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xpYldlYlJUQ1By
b3ZpZGVyLmg+CkBAIC02OSw4ICs3MCw4IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNs
b3NlKCkKICAgICAgICAgZm9yIChhdXRvIGRlY29kZXIgOiBkZWNvZGVycy52YWx1ZXMoKSkKICAg
ICAgICAgICAgIHdlYnJ0Yzo6cmVsZWFzZUxvY2FsRGVjb2RlcihkZWNvZGVyKTsKICAgICAgICAg
YXV0byBlbmNvZGVycyA9IFdURk1vdmUobV9lbmNvZGVycyk7Ci0gICAgICAgIGZvciAoYXV0byBl
bmNvZGVyIDogZW5jb2RlcnMudmFsdWVzKCkpCi0gICAgICAgICAgICB3ZWJydGM6OnJlbGVhc2VM
b2NhbEVuY29kZXIoZW5jb2Rlcik7CisgICAgICAgIGZvciAoYXV0byYgZW5jb2RlciA6IGVuY29k
ZXJzLnZhbHVlcygpKQorICAgICAgICAgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxFbmNvZGVyKGVu
Y29kZXIud2VicnRjRW5jb2Rlcik7CiAgICAgfSk7CiB9CiAKQEAgLTE1OSw3ICsxNjAsNyBAQCB2
b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OkxpYldlYlJUQ0NvZGVjczo6Q29tcGxldGVkRW5jb2RpbmcgeyBpZGVudGlmaWVyLCBJUEM6OkRh
dGFSZWZlcmVuY2UgeyBidWZmZXIsIHNpemUgfSwgaW5mbyB9LCAwKTsKICAgICB9KS5nZXQoKSk7
CiAgICAgd2VicnRjOjpzZXRMb2NhbEVuY29kZXJMb3dMYXRlbmN5KGVuY29kZXIsIHVzZUxvd0xh
dGVuY3kpOwotICAgIG1fZW5jb2RlcnMuYWRkKGlkZW50aWZpZXIsIGVuY29kZXIpOworICAgIG1f
ZW5jb2RlcnMuYWRkKGlkZW50aWZpZXIsIEVuY29kZXIgeyBlbmNvZGVyLCBudWxscHRyIH0pOwog
fQogCiB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpyZWxlYXNlRW5jb2RlcihSVENFbmNvZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyKQpAQCAtMTY3LDIxICsxNjgsMzAgQEAgdm9pZCBMaWJXZWJS
VENDb2RlY3NQcm94eTo6cmVsZWFzZUVuY29kZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKICAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogICAgIEFTU0VSVChtX2VuY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsK
LSAgICBpZiAoYXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy50YWtlKGlkZW50aWZpZXIpKQotICAg
ICAgICB3ZWJydGM6OnJlbGVhc2VMb2NhbEVuY29kZXIoZW5jb2Rlcik7CisgICAgYXV0byBlbmNv
ZGVyID0gbV9lbmNvZGVycy50YWtlKGlkZW50aWZpZXIpOworICAgIGlmIChlbmNvZGVyLndlYnJ0
Y0VuY29kZXIpCisgICAgICAgIHdlYnJ0Yzo6cmVsZWFzZUxvY2FsRW5jb2RlcihlbmNvZGVyLndl
YnJ0Y0VuY29kZXIpOwogfQogCiAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBmdW5j
dGlvbiBhY2Nlc3NlcyBtX2VuY29kZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZlIGJl
Y2F1c2UgdGhpcyBmdW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQogLy8g
YW5kIG1fZW5jb2RlcnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KLXZvaWQgTGli
V2ViUlRDQ29kZWNzUHJveHk6OmluaXRpYWxpemVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0
YXJ0Qml0cmF0ZSwgdW5zaWduZWQgbWF4Qml0cmF0ZSwgdW5zaWduZWQgbWluQml0cmF0ZSwgdWlu
dDMyX3QgbWF4RnJhbWVyYXRlKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit2
b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5Ojppbml0aWFsaXplRW5jb2RlcihSVENFbmNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNp
Z25lZCBzdGFydEJpdHJhdGUsIHVuc2lnbmVkIG1heEJpdHJhdGUsIHVuc2lnbmVkIG1pbkJpdHJh
dGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3Ao
KSk7Ci0gICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgIGF1
dG8gZW5jb2RlciA9IG1fZW5jb2RlcnMuZ2V0KGlkZW50aWZpZXIpOworICAgIGF1dG8qIGVuY29k
ZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIpOwogICAgIGlmICghZW5jb2Rl
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2VicnRjOjppbml0aWFsaXplTG9jYWxFbmNvZGVy
KGVuY29kZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0Qml0cmF0ZSwgbWF4Qml0cmF0ZSwgbWluQml0
cmF0ZSwgbWF4RnJhbWVyYXRlKTsKKyAgICB3ZWJydGM6OmluaXRpYWxpemVMb2NhbEVuY29kZXIo
ZW5jb2Rlci0+d2VicnRjRW5jb2Rlciwgd2lkdGgsIGhlaWdodCwgc3RhcnRCaXRyYXRlLCBtYXhC
aXRyYXRlLCBtaW5CaXRyYXRlLCBtYXhGcmFtZXJhdGUpOworfQorCitMaWJXZWJSVENDb2RlY3NQ
cm94eTo6RW5jb2RlciogTGliV2ViUlRDQ29kZWNzUHJveHk6OmZpbmRFbmNvZGVyV2l0aG91dExv
Y2soUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikgV1RGX0lHTk9SRVNfVEhSRUFEX1NB
RkVUWV9BTkFMWVNJUworeworICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKKyAgICBBU1NF
UlQobV9lbmNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgYXV0byBpdGVyYXRvciA9
IG1fZW5jb2RlcnMuZmluZChpZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9lbmNv
ZGVycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuICZpdGVyYXRv
ci0+dmFsdWU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgd2VicnRjOjpWaWRlb1JvdGF0aW9uIHRvV2Vi
UlRDVmlkZW9Sb3RhdGlvbihXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3Rh
dGlvbikKQEAgLTIwMiwzNCArMjEyLDY2IEBAIHN0YXRpYyBpbmxpbmUgd2VicnRjOjpWaWRlb1Jv
dGF0aW9uIHRvV2ViUlRDVmlkZW9Sb3RhdGlvbihXZWJDb3JlOjpNZWRpYVNhbXBsZTo6CiAKIC8v
IEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vzc2VzIG1fZW5jb2Rl
cnMgd2l0aG91dCBsb2NraW5nLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJ1
bnMgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1ZXVlCiAvLyBhbmQgbV9lbmNvZGVycyBvbmx5IGdl
dCBtb2RpZmllZCBvbiB0aGlzIHF1ZXVlLgotdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZW5j
b2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3Rl
VmlkZW9TYW1wbGUmJiBzYW1wbGUsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNv
ZGVBc0tleUZyYW1lKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit2b2lkIExp
YldlYlJUQ0NvZGVjc1Byb3h5OjplbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHNhbXBsZSwgdWludDMyX3QgdGlt
ZVN0YW1wLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpCiB7Ci0gICAgQVNTRVJUKCFpc01h
aW5SdW5Mb29wKCkpOwotICAgIEFTU0VSVChtX2VuY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIp
KTsKLSAgICBhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLmdldChpZGVudGlmaWVyKTsKKyAgICBh
dXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsKICAgICBp
ZiAoIWVuY29kZXIpCiAgICAgICAgIHJldHVybjsKIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlT
VCkKLSAgICBpZiAoIXNhbXBsZS5zdXJmYWNlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRv
IHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzYW1wbGUuc3VyZmFj
ZSgpKTsKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7CisgICAg
aWYgKHNhbXBsZS5zdXJmYWNlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gV2ViQ29y
ZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZlcihzYW1wbGUuc3VyZmFjZSgpKSkKKyAgICAgICAgICAgIHBp
eGVsQnVmZmVyID0gV1RGTW92ZSgqYnVmZmVyKTsKKyAgICB9IGVsc2UgaWYgKGVuY29kZXItPmZy
YW1lUmVhZGVyKQorICAgICAgICBwaXhlbEJ1ZmZlciA9IGVuY29kZXItPmZyYW1lUmVhZGVyLT5y
ZWFkKCk7CisKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm47Ci0gICAgd2Vi
cnRjOjplbmNvZGVMb2NhbEVuY29kZXJGcmFtZShlbmNvZGVyLCBwaXhlbEJ1ZmZlci0+Z2V0KCks
IHNhbXBsZS50aW1lKCkudG9UaW1lU2NhbGUoMTAwMDAwMCkudGltZVZhbHVlKCksIHRpbWVTdGFt
cCwgdG9XZWJSVENWaWRlb1JvdGF0aW9uKHNhbXBsZS5yb3RhdGlvbigpKSwgc2hvdWxkRW5jb2Rl
QXNLZXlGcmFtZSk7CisKKyAgICB3ZWJydGM6OmVuY29kZUxvY2FsRW5jb2RlckZyYW1lKGVuY29k
ZXItPndlYnJ0Y0VuY29kZXIsIHBpeGVsQnVmZmVyLmdldCgpLCBzYW1wbGUudGltZSgpLnRvVGlt
ZVNjYWxlKDEwMDAwMDApLnRpbWVWYWx1ZSgpLCB0aW1lU3RhbXAsIHRvV2ViUlRDVmlkZW9Sb3Rh
dGlvbihzYW1wbGUucm90YXRpb24oKSksIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpOwogI2VuZGlm
CiB9CiAKIC8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vzc2Vz
IG1fZW5jb2RlcnMgd2l0aG91dCBsb2NraW5nLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlzIGZ1
bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1ZXVlCiAvLyBhbmQgbV9lbmNvZGVy
cyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlzIHF1ZXVlLgotdm9pZCBMaWJXZWJSVENDb2RlY3NQ
cm94eTo6c2V0RW5jb2RlUmF0ZXMoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWlu
dDMyX3QgYml0UmF0ZSwgdWludDMyX3QgZnJhbWVSYXRlKSBXVEZfSUdOT1JFU19USFJFQURfU0FG
RVRZX0FOQUxZU0lTCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRFbmNvZGVSYXRlcyhS
VENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJf
dCBmcmFtZVJhdGUpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotICAgIGF1dG8g
ZW5jb2RlciA9IG1fZW5jb2RlcnMuZ2V0KGlkZW50aWZpZXIpOworICAgIGF1dG8qIGVuY29kZXIg
PSBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIpOwogICAgIGlmICghZW5jb2RlcikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgd2VicnRjOjpzZXRMb2NhbEVuY29kZXJSYXRlcyhlbmNv
ZGVyLCBiaXRSYXRlLCBmcmFtZVJhdGUpOworICAgIHdlYnJ0Yzo6c2V0TG9jYWxFbmNvZGVyUmF0
ZXMoZW5jb2Rlci0+d2VicnRjRW5jb2RlciwgYml0UmF0ZSwgZnJhbWVSYXRlKTsKK30KKworLy8g
Rm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVy
cyB3aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVu
cyBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUKKy8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0
IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUuCit2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRT
aGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKQoreworICAgIGF1dG8qIGVuY29kZXIgPSBmaW5k
RW5jb2RlcldpdGhvdXRMb2NrKGlkZW50aWZpZXIpOworICAgIGlmICghZW5jb2RlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFlbmNvZGVyLT5mcmFtZVJlYWRlcikKKyAgICAgICAgZW5j
b2Rlci0+ZnJhbWVSZWFkZXIgPSBtYWtlVW5pcXVlPFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI+KCk7
CisgICAgZW5jb2Rlci0+ZnJhbWVSZWFkZXItPnNldFNlbWFwaG9yZShXVEZNb3ZlKHNlbWFwaG9y
ZSkpOworfQorCisvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBmdW5jdGlvbiBhY2Nl
c3NlcyBtX2VuY29kZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZlIGJlY2F1c2UgdGhp
cyBmdW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQorLy8gYW5kIG1fZW5j
b2RlcnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KK3ZvaWQgTGliV2ViUlRDQ29k
ZWNzUHJveHk6OnNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoUlRDRW5jb2RlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGlwY0hhbmRsZSkKK3sK
KyAgICBhdXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsK
KyAgICBpZiAoIWVuY29kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbWVtb3J5ID0g
U2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSk7CisgICAgaWYgKCFtZW1vcnkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICghZW5jb2Rlci0+ZnJhbWVSZWFkZXIpCisgICAgICAgIGVuY29kZXItPmZyYW1lUmVhZGVy
ID0gbWFrZVVuaXF1ZTxTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyPigpOworICAgIGVuY29kZXItPmZy
YW1lUmVhZGVyLT5zZXRTaGFyZWRNZW1vcnkobWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpOwogfQog
CiBib29sIExpYldlYlJUQ0NvZGVjc1Byb3h5OjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQcmVzc3Vy
ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggN2JmZWUwODNmY2Y5MjI3YzdmNWY4
NDk2ZDk3ZWU4YWI5MGU1YWExZi4uZjU3ZDg1M2ZmYmY0YzI4Mzc0ZGY4YjFmNzY3Mzc3NmVkM2Y4
ZWQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjQ0LDYgKzI0NCw4IEBAIFNoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KIFNoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKIFNo
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZS5jcHAKIAorV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwCisKIFVJUHJvY2Vzcy9fV0tXZWJW
aWV3UHJpbnRGb3JtYXR0ZXIubW0KIFVJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5t
bQogVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzc5
MTE4YmQyZjNlMDMyY2E4N2MwNzRkMmU2YjBkYmU1NDliNjdlYi4uNzkxNzgxYzk2MDFkMzM4MmMy
MWZjNTY1NTkwMDRlNTgzNzk2MzIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MTUwLDYgKzQxNTAsOCBAQAogCQk0MUQxMjlEOTFG
M0QxMDE0MDBEMTVFNDcgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFENUM2RDgyMzhFQjIwRDAwQjlCM0NCIC8qIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDVDNkQ5MjM4
RUIyMEUwMEI5QjNDQiAvKiBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxREMwNEY4MjdBODE2QkIw
MDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFZpZGVv
RnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEQzA0RjkyN0E4MTZCQjAw
OENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVk
VmlkZW9GcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxREM0NTk0MUUz
RDZFMUUwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmV0d29ya1JUQ1Byb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxREM0NTk1MUUzRDZFMUUwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1JUQ1Byb3Zp
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEQzQ1OTgxRTNENkVENjAw
QjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBOZXR3b3JrUlRDUHJvdmlkZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC03MjAwLDcgKzcyMDIsNiBAQAogCQkJCTdBRkJEMzZFMjFFNTQ2RTMwMDVE
QkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLywKIAkJCQk3QUZCRDM2RDIxRTU0NkUzMDA1
REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovLAogCQkJCUJDQzQzQUI4MTI3Qjk1REMwMDMx
N0YxNiAvKiBQbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwICovLAotCQkJCUJDQzQzQUI5MTI3Qjk1
REMwMDMxN0YxNiAvKiBQbGF0Zm9ybVBvcHVwTWVudURhdGEuaCAqLywKIAkJCQk0OUVDQTQxQjIz
RkNBNDg2MDAyMzM1OEQgLyogUG9saWN5RGVjaXNpb24uaCAqLywKIAkJCQlFMThDOTJGMzEyREI5
RTcxMDBDRjJBRUIgLyogUHJpbnRJbmZvLmNwcCAqLywKIAkJCQlFMUNDMUI4RTEyRDdFQURGMDA2
MjU4MzggLyogUHJpbnRJbmZvLmggKi8sCkBAIC03MjIwLDYgKzcyMjEsNyBAQAogCQkJCTJENjVE
MTk2Mjc0QjhFODQwMDlDNDEwMSAvKiBTY3JvbGxpbmdBY2NlbGVyYXRpb25DdXJ2ZS5jcHAgKi8s
CiAJCQkJMkQ2NUQxOTUyNzRCOEU4NDAwOUM0MTAxIC8qIFNjcm9sbGluZ0FjY2VsZXJhdGlvbkN1
cnZlLmggKi8sCiAJCQkJNUM4MEIzREQyMzY5MEYxMDAwODZFNkRFIC8qIFNlcnZpY2VXb3JrZXJJ
bml0aWFsaXphdGlvbkRhdGEuY3BwICovLAorCQkJCUJDQzQzQUI5MTI3Qjk1REMwMDMxN0YxNiAv
KiBQbGF0Zm9ybVBvcHVwTWVudURhdGEuaCAqLywKIAkJCQk1QzgwQjNEQjIzNjkwRDhEMDA4NkU2
REUgLyogU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5oICovLAogCQkJCTFBRkRFNjU3
MTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuY3BwICovLAogCQkJCTFBRkRFNjU4MTk1
NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCAqLywKQEAgLTkyMDAsNiArOTIwMiw4IEBA
CiAJCQkJNDFGQ0Q2QkMyM0NFMDMxODAwQzYyNTY3IC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cklkZW50aWZpZXIuaCAqLywKIAkJCQk0MTAyNEZDMTIzQ0YxMDQ1MDBGREY5OEUgLyogU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAgKi8sCiAJCQkJNDEwMjRGQzAyM0NGMTA0NTAw
RkRGOThFIC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCAqLywKKwkJCQk0MURD
MDRGOTI3QTgxNkJCMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZS5jcHAgKi8sCisJCQkJNDFE
QzA0RjgyN0E4MTZCQjAwOENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWUuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gd2VicnRjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3Bw
CmluZGV4IDlkNWZkMGQxNTYyY2I0NDc3NjA3OTg1OTg1ZjFkNmY5Mjk1Y2UyZGQuLmFlMjJkODkz
NzM0ZmM1MWY5NjhmNzQ3ZjdlZGRiMTcxYjk4YTBkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMTg3
LDcgKzE4Nyw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjplbnN1cmVHUFVQcm9jZXNzQ29ubmVj
dGlvbk9uTWFpblRocmVhZFdpdGhMb2NrKCkKICAgICBtX2Nvbm5lY3Rpb24tPmFkZFRocmVhZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIHRoaXMpOwogCiAgICAgaWYgKG1fbG9nZ2luZ0xldmVsKQotICAgICAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpTZXRSVENMb2dnaW5n
TGV2ZWwoKm1fbG9nZ2luZ0xldmVsKSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlNldFJUQ0xvZ2dpbmdMZXZlbCB7ICptX2xv
Z2dpbmdMZXZlbCB9LCAwKTsKIH0KIAogLy8gTWF5IGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFkLgpA
QCAtNDE4LDYgKzQxOCwyMiBAQCBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6aW5pdGlhbGl6ZUVu
Y29kZXIoRW5jb2RlciYgZW5jb2RlciwgdWludDE2X3Qgd2lkdGgsIHVpbgogICAgIHJldHVybiAw
OwogfQogCitib29sIExpYldlYlJUQ0NvZGVjczo6Y29weVNoYXJlZFZpZGVvRnJhbWUoRW5jb2Rl
ciYgZW5jb2RlciwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcikKK3sKKyAgICByZXR1cm4g
ZW5jb2Rlci5zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyLndyaXRlKHBpeGVsQnVmZmVyLAorICAgICAg
ICBbJmVuY29kZXJdKGF1dG8mIHNlbWFwaG9yZSkgeyBlbmNvZGVyLmNvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpTZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBo
b3JlIHsgZW5jb2Rlci5pZGVudGlmaWVyLCBzZW1hcGhvcmUgfSwgMCk7IH0sCisgICAgICAgIFsm
ZW5jb2Rlcl0oYXV0byYgaGFuZGxlKSB7IGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkgeyBlbmNv
ZGVyLmlkZW50aWZpZXIsIGhhbmRsZSB9LCAwKTsgfQorICAgICk7Cit9CisKK2Jvb2wgTGliV2Vi
UlRDQ29kZWNzOjpjb3B5U2hhcmVkVmlkZW9GcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCB3
ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lKQoreworICAgIHJldHVybiBlbmNvZGVyLnNoYXJlZFZp
ZGVvRnJhbWVXcml0ZXIud3JpdGUoZnJhbWUsCisgICAgICAgIFsmZW5jb2Rlcl0oYXV0byYgc2Vt
YXBob3JlKSB7IGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29k
ZWNzUHJveHk6OlNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUgeyBlbmNvZGVyLmlkZW50aWZp
ZXIsIHNlbWFwaG9yZSB9LCAwKTsgfSwKKyAgICAgICAgWyZlbmNvZGVyXShhdXRvJiBoYW5kbGUp
IHsgZW5jb2Rlci5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94
eTo6U2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeSB7IGVuY29kZXIuaWRlbnRpZmllciwgaGFuZGxl
IH0sIDApOyB9CisgICAgKTsKK30KKwogaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZy
YW1lKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIGJv
b2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25u
ZWN0aW9uTG9jayB9OwpAQCAtNDI1LDMzICs0NDEsMTcgQEAgaW50MzJfdCBMaWJXZWJSVENDb2Rl
Y3M6OmVuY29kZUZyYW1lKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFt
ZSYKICAgICBpZiAoIWVuY29kZXIuY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuIFdFQlJUQ19W
SURFT19DT0RFQ19FUlJPUjsKIAotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBhZG9wdENGKHdlYnJ0
Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoZnJhbWUsIFtdKHNpemVfdCB3aWR0aCwgc2l6
ZV90IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpIC0+IENWUGl4ZWxCdWZm
ZXJSZWYgewotICAgICAgICBPU1R5cGUgcG9vbEJ1ZmZlclR5cGU7Ci0gICAgICAgIHN3aXRjaCAo
YnVmZmVyVHlwZSkgewotICAgICAgICBjYXNlIHdlYnJ0Yzo6QnVmZmVyVHlwZTo6STQyMDoKLSAg
ICAgICAgICAgIHBvb2xCdWZmZXJUeXBlID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhC
aVBsYW5hckZ1bGxSYW5nZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIHdlYnJ0
Yzo6QnVmZmVyVHlwZTo6STAxMDoKLSAgICAgICAgICAgIHBvb2xCdWZmZXJUeXBlID0ga0NWUGl4
ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2U7Ci0gICAgICAgIH0KLSAg
ICAgICAgYXV0byBwaXhlbEJ1ZmZlclBvb2wgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJX
ZWJSVENDb2RlY3MoKS5waXhlbEJ1ZmZlclBvb2wod2lkdGgsIGhlaWdodCwgcG9vbEJ1ZmZlclR5
cGUpOwotICAgICAgICBpZiAoIXBpeGVsQnVmZmVyUG9vbCkKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyRnJv
bVBvb2wocGl4ZWxCdWZmZXJQb29sKS52YWx1ZV9vcihudWxscHRyKS5sZWFrUmVmKCk7Ci0gICAg
fSkpOwotCi0gICAgaWYgKCFwaXhlbEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURF
T19DT0RFQ19FUlJPUjsKLQotICAgIGF1dG8gc2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNy
ZWF0ZShwaXhlbEJ1ZmZlci5nZXQoKSwgTWVkaWFUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpICog
MTAwMCwgMTAwMDAwMCksIHRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9u
KCkpKTsKLSAgICBpZiAoIXNhbXBsZSkgewotICAgICAgICAvLyBGSVhNRTogT3B0aW1pemUgdGhp
cyBjb2RlIHBhdGgsIGN1cnJlbnRseSB3ZSBoYXZlIG5vbiBCR1JBIGZvciBtdXRlZCBmcmFtZXMg
YXQgbGVhc3QuCi0gICAgICAgIHNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoY29u
dmVydFRvQkdSQShwaXhlbEJ1ZmZlci5nZXQoKSksIE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBf
dXMoKSAqIDEwMDAsIDEwMDAwMDApLCB0b01lZGlhU2FtcGxlVmlkZW9Sb3RhdGlvbihmcmFtZS5y
b3RhdGlvbigpKSk7Ci0gICAgICAgIGlmICghc2FtcGxlKSB7Ci0gICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihXZWJSVEMsICJVbmFibGUgdG8gY29udmVydCByZW1vdGUgdmlkZW8gc2FtcGxl
Iik7CisgICAgYXV0byBidWZmZXIgPSBhZG9wdENGKHdlYnJ0Yzo6cGl4ZWxCdWZmZXJGcm9tRnJh
bWUoZnJhbWUpKTsKKyAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICAvLyBidWZmZXIgaXMgbm90
IG5hdGl2ZSwgd2UgbmVlZCB0byBjb3B5IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4KKyAgICAgICAg
aWYgKCFjb3B5U2hhcmVkVmlkZW9GcmFtZShlbmNvZGVyLCBmcmFtZSkpCisgICAgICAgICAgICBy
ZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOworICAgIH0KKyAgICBhdXRvIHNhbXBsZSA9
IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoYnVmZmVyLmdldCgpLCBNZWRpYVRpbWUoZnJhbWUu
dGltZXN0YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAwKSwgdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRp
b24oZnJhbWUucm90YXRpb24oKSksIFJlbW90ZVZpZGVvU2FtcGxlOjpTaG91bGRDaGVja0ZvcklP
U3VyZmFjZTo6Tm8pOworICAgIGlmICghc2FtcGxlLT5zdXJmYWNlKCkpIHsKKyAgICAgICAgLy8g
YnVmZmVyIGlzIG5vdCBJT1N1cmZhY2UsIHdlIG5lZWQgdG8gY29weSB0byBzaGFyZWQgdmlkZW8g
ZnJhbWUuCisgICAgICAgIGlmICghY29weVNoYXJlZFZpZGVvRnJhbWUoZW5jb2RlciwgYnVmZmVy
LmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7Ci0g
ICAgICAgIH0KICAgICB9CiAKICAgICBlbmNvZGVyLmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpFbmNvZGVGcmFtZSB7IGVuY29kZXIuaWRlbnRpZmllciwg
KnNhbXBsZSwgZnJhbWUudGltZXN0YW1wKCksIHNob3VsZEVuY29kZUFzS2V5RnJhbWUgfSwgMCk7
CkBAIC01MzUsNiArNTM1LDcgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3M6OmdwdVByb2Nlc3NDb25u
ZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKQogICAgICAgICAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3JlYXRlRW5jb2Rl
ciB7IGVuY29kZXItPmlkZW50aWZpZXIsIGZvcm1hdE5hbWVGcm9tV2ViUlRDQ29kZWNUeXBlKGVu
Y29kZXItPmNvZGVjVHlwZSksIGVuY29kZXItPnBhcmFtZXRlcnMsIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDSDI2NExvd0xhdGVuY3lFbmNvZGVyRW5hYmxl
ZCgpIH0sIDApOwogICAgICAgICAgICAgaWYgKGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YSkK
ICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjpJbml0aWFsaXplRW5jb2RlciB7IGVuY29kZXItPmlkZW50aWZpZXIsIGVuY29k
ZXItPmluaXRpYWxpemF0aW9uRGF0YS0+d2lkdGgsIGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0
YS0+aGVpZ2h0LCBlbmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEtPnN0YXJ0Qml0UmF0ZSwgZW5j
b2Rlci0+aW5pdGlhbGl6YXRpb25EYXRhLT5tYXhCaXRSYXRlLCBlbmNvZGVyLT5pbml0aWFsaXph
dGlvbkRhdGEtPm1pbkJpdFJhdGUsIGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YS0+bWF4RnJh
bWVSYXRlIH0sIDApOworICAgICAgICAgICAgZW5jb2Rlci0+c2hhcmVkVmlkZW9GcmFtZVdyaXRl
ciA9IHsgfTsKICAgICAgICAgICAgIGVuY29kZXItPmNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb24u
Z2V0KCk7CiAgICAgICAgIH0KICAgICAgICAgZm9yIChhdXRvJiBkZWNvZGVyIDogbV9kZWNvZGVy
cy52YWx1ZXMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAppbmRleCA0MDgzM2UwMzBlZjViMGVlODk0ZDdmNDRiZTk4
Y2Q2Nzk4MWY0YTJjLi41NjkxZTM4Mzc3NDE2Nzg1YTdkNDEyNGFkMTQ0OTQwZTc3OGIyYmY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MuaApAQCAtMzAsOSArMzAsMTEgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNv
ZGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaD4KICNpbmNsdWRlIDxtYXA+CiAjaW5j
bHVkZSA8d2VicnRjL2FwaS92aWRlby92aWRlb19jb2RlY190eXBlLmg+CkBAIC0xMDEsNiArMTAz
LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkKiBlbmNvZGVkSW1hZ2VDYWxsYmFjayBXVEZfR1VB
UkRFRF9CWV9MT0NLKGVuY29kZWRJbWFnZUNhbGxiYWNrTG9jaykgeyBudWxscHRyIH07CiAgICAg
ICAgIExvY2sgZW5jb2RlZEltYWdlQ2FsbGJhY2tMb2NrOwogICAgICAgICBSZWZQdHI8SVBDOjpD
b25uZWN0aW9uPiBjb25uZWN0aW9uOworICAgICAgICBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyIHNo
YXJlZFZpZGVvRnJhbWVXcml0ZXI7CiAgICAgfTsKIAogICAgIEVuY29kZXIqIGNyZWF0ZUVuY29k
ZXIoVHlwZSwgY29uc3Qgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiYpOwpAQCAt
MTM1LDYgKzEzOCw5IEBAIHByaXZhdGU6CiAgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNs
aWVudAogICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29u
bmVjdGlvbiYpOwogCisgICAgYm9vbCBjb3B5U2hhcmVkVmlkZW9GcmFtZShFbmNvZGVyJiwgQ1ZQ
aXhlbEJ1ZmZlclJlZik7CisgICAgYm9vbCBjb3B5U2hhcmVkVmlkZW9GcmFtZShFbmNvZGVyJiwg
Y29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJik7CisKIHByaXZhdGU6CiAgICAgSGFzaE1hcDxSVENE
ZWNvZGVySWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+PiBtX2RlY29kZXJzOwog
ICAgIEhhc2hTZXQ8UlRDRGVjb2RlcklkZW50aWZpZXI+IG1fZGVjb2RpbmdFcnJvcnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVv
RnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2MzcwN2VhMDJhOTAzYWM2MTIwNTA0MGExZjEyNzVkODAy
NjY5NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZFZpZGVvRnJhbWVJbmZvLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2Jvb2wgU2hhcmVk
VmlkZW9GcmFtZVdyaXRlcjo6d2FpdChjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3Jl
Jik+JiBuZXdTZW1hcGhvcmVDYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fc2VtYXBob3JlKSB7Cisg
ICAgICAgIG1fc2VtYXBob3JlID0gbWFrZVVuaXF1ZTxJUEM6OlNlbWFwaG9yZT4oKTsKKyAgICAg
ICAgbmV3U2VtYXBob3JlQ2FsbGJhY2soKm1fc2VtYXBob3JlKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIHJldHVybiBtX3NlbWFwaG9yZS0+d2FpdCgpOworfQorCitib29sIFNo
YXJlZFZpZGVvRnJhbWVXcml0ZXI6OmFsbG9jYXRlU3RvcmFnZShzaXplX3Qgc2l6ZSwgY29uc3Qg
RnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5
Q2FsbGJhY2spCit7CisgICAgbV9zdG9yYWdlID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXpl
KTsKKyAgICBpZiAoIW1fc3RvcmFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU2hh
cmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIG1fc3RvcmFnZS0+Y3JlYXRlSGFuZGxlKGhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisKKyAgICBhdXRvIGRh
dGFTaXplID0gaGFuZGxlLnNpemUoKTsKKyAgICBuZXdNZW1vcnlDYWxsYmFjayhTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgZGF0YVNpemUgfSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcjo6cHJlcGFyZVdyaXRpbmco
Y29uc3QgU2hhcmVkVmlkZW9GcmFtZUluZm8mIGluZm8sIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBD
OjpTZW1hcGhvcmUmKT4mIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiBuZXdNZW1vcnlDYWxsYmFjaykKK3sK
KyAgICBpZiAoIWluZm8uaXNSZWFkV3JpdGVTdXBwb3J0ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCF3YWl0KG5ld1NlbWFwaG9yZUNhbGxiYWNrKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgc2l6ZV90IHNpemUgPSBpbmZvLnN0b3JhZ2VTaXplKCk7CisgICAg
aWYgKCFtX3N0b3JhZ2UgfHwgbV9zdG9yYWdlLT5zaXplKCkgPCBzaXplKSB7CisgICAgICAgIGlm
ICghYWxsb2NhdGVTdG9yYWdlKHNpemUsIG5ld01lbW9yeUNhbGxiYWNrKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU2hhcmVk
VmlkZW9GcmFtZVdyaXRlcjo6d3JpdGUoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgY29u
c3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYgbmV3U2VtYXBob3JlQ2FsbGJhY2ss
IGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mIG5l
d01lbW9yeUNhbGxiYWNrKQoreworICAgIGF1dG8gaW5mbyA9IFNoYXJlZFZpZGVvRnJhbWVJbmZv
Ojpmcm9tQ1ZQaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcik7CisgICAgaWYgKCFwcmVwYXJlV3JpdGlu
ZyhpbmZvLCBuZXdTZW1hcGhvcmVDYWxsYmFjaywgbmV3TWVtb3J5Q2FsbGJhY2spKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaW5mby53cml0ZVBpeGVsQnVmZmVyKHBpeGVs
QnVmZmVyLCBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9zdG9yYWdlLT5kYXRhKCkpKTsKK30KKwor
I2lmIFVTRShMSUJXRUJSVEMpCitib29sIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRlKGNv
bnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpT
ZW1hcGhvcmUmKT4mIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiBuZXdNZW1vcnlDYWxsYmFjaykKK3sKKyAg
ICBhdXRvIGluZm8gPSBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZnJvbVZpZGVvRnJhbWUoZnJhbWUp
OworICAgIGlmICghcHJlcGFyZVdyaXRpbmcoaW5mbywgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIG5l
d01lbW9yeUNhbGxiYWNrKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGlu
Zm8ud3JpdGVWaWRlb0ZyYW1lKGZyYW1lLCBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9zdG9yYWdl
LT5kYXRhKCkpKTsKK30KKyNlbmRpZgorCitSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gU2hh
cmVkVmlkZW9GcmFtZVJlYWRlcjo6cmVhZCgpCit7CisgICAgaWYgKCFtX3N0b3JhZ2UpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIHNjb3BlID0gbWFrZVNjb3BlRXhpdChbJl0gewor
ICAgICAgICBtX3NlbWFwaG9yZS5zaWduYWwoKTsKKyAgICB9KTsKKworICAgIGF1dG8qIGRhdGEg
PSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obV9zdG9yYWdlLT5kYXRhKCkpOworICAgIGF1
dG8gaW5mbyA9IFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpkZWNvZGUoeyBkYXRhLCBtX3N0b3JhZ2Ut
PnNpemUoKSB9KTsKKyAgICBpZiAoIWluZm8pCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBp
ZiAoIWluZm8tPmlzUmVhZFdyaXRlU3VwcG9ydGVkKCkpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBpZiAobV9zdG9yYWdlLT5zaXplKCkgPCBpbmZvLT5zdG9yYWdlU2l6ZSgpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIGluZm8tPmNyZWF0ZVBpeGVsQnVmZmVyRnJvbU1l
bW9yeShkYXRhICsgU2hhcmVkVmlkZW9GcmFtZUluZm9FbmNvZGluZ0xlbmd0aCwgcGl4ZWxCdWZm
ZXJQb29sKCppbmZvKSk7Cit9CisKK0NWUGl4ZWxCdWZmZXJQb29sUmVmIFNoYXJlZFZpZGVvRnJh
bWVSZWFkZXI6OnBpeGVsQnVmZmVyUG9vbChjb25zdCBTaGFyZWRWaWRlb0ZyYW1lSW5mbyYgaW5m
bykKK3sKKyAgICBpZiAobV91c2VJT1N1cmZhY2VCdWZmZXJQb29sID09IFVzZUlPU3VyZmFjZUJ1
ZmZlclBvb2w6Ok5vKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghbV9idWZm
ZXJQb29sIHx8IG1fYnVmZmVyUG9vbFR5cGUgIT0gaW5mby5idWZmZXJUeXBlKCkgfHwgbV9idWZm
ZXJQb29sV2lkdGggIT0gaW5mby53aWR0aCgpIHx8IG1fYnVmZmVyUG9vbEhlaWdodCAhPSBpbmZv
LmhlaWdodCgpKSB7CisgICAgICAgIG1fYnVmZmVyUG9vbFR5cGUgPSBpbmZvLmJ1ZmZlclR5cGUo
KTsKKyAgICAgICAgbV9idWZmZXJQb29sV2lkdGggPSBpbmZvLndpZHRoKCk7CisgICAgICAgIG1f
YnVmZmVyUG9vbEhlaWdodCA9IGluZm8uaGVpZ2h0KCk7CisgICAgICAgIG1fYnVmZmVyUG9vbCA9
IGluZm8uY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlclBvb2woKTsKKyAgICB9CisKKyAgICByZXR1cm4g
bV9idWZmZXJQb29sLmdldCgpOworfQorCisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyZTk1NjJk
ZTdlYmJkZmE4ZDY3NTMxYjVkNDdmMzFhNTAwNjUzMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmgKQEAgLTAs
MCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09D
T0EpCisKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnku
aCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
Cit0eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOwordHlwZWRlZiBz
dHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCogQ1ZQaXhlbEJ1ZmZlclBvb2xSZWY7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZFZpZGVvRnJhbWVJbmZvOworfQorCituYW1lc3Bh
Y2Ugd2VicnRjIHsKK2NsYXNzIFZpZGVvRnJhbWU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyKCkgPSBkZWZhdWx0Owor
CisgICAgYm9vbCB3cml0ZShDVlBpeGVsQnVmZmVyUmVmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQ
Qzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYpPiYpOworI2lmIFVTRShMSUJXRUJSVEMpCisgICAgYm9vbCB3cml0ZShjb25z
dCB3ZWJydGM6OlZpZGVvRnJhbWUmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3Jl
Jik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYp
PiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgYm9vbCB3YWl0KGNvbnN0IEZ1bmN0aW9uPHZv
aWQoSVBDOjpTZW1hcGhvcmUmKT4mKTsKKyAgICBib29sIGFsbG9jYXRlU3RvcmFnZShzaXplX3Qs
IGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsK
KyAgICBib29sIHByZXBhcmVXcml0aW5nKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFZpZGVvRnJhbWVJ
bmZvJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0
aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OlNlbWFwaG9yZT4gbV9zZW1hcGhvcmU7CisgICAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gbV9zdG9yYWdlOworfTsKKworY2xhc3MgU2hhcmVkVmlkZW9GcmFtZVJlYWRlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBV
c2VJT1N1cmZhY2VCdWZmZXJQb29sIHsgTm8sIFllcyB9OworICAgIGV4cGxpY2l0IFNoYXJlZFZp
ZGVvRnJhbWVSZWFkZXIoVXNlSU9TdXJmYWNlQnVmZmVyUG9vbCA9IFVzZUlPU3VyZmFjZUJ1ZmZl
clBvb2w6Olllcyk7CisKKyAgICB2b2lkIHNldFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmIHNl
bWFwaG9yZSkgeyBtX3NlbWFwaG9yZSA9IFdURk1vdmUoc2VtYXBob3JlKTsgfQorICAgIHZvaWQg
c2V0U2hhcmVkTWVtb3J5KFJlZjxTaGFyZWRNZW1vcnk+JiYgc3RvcmFnZSkgeyBtX3N0b3JhZ2Ug
PSBXVEZNb3ZlKHN0b3JhZ2UpOyB9CisKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4g
cmVhZCgpOworCitwcml2YXRlOgorICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIHBpeGVsQnVmZmVy
UG9vbChjb25zdCBXZWJDb3JlOjpTaGFyZWRWaWRlb0ZyYW1lSW5mbyYpOworCisgICAgVXNlSU9T
dXJmYWNlQnVmZmVyUG9vbCBtX3VzZUlPU3VyZmFjZUJ1ZmZlclBvb2w7CisgICAgSVBDOjpTZW1h
cGhvcmUgbV9zZW1hcGhvcmU7CisgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9zdG9yYWdlOwor
CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJQb29sUmVmPiBtX2J1ZmZlclBvb2w7CisgICAg
T1NUeXBlIG1fYnVmZmVyUG9vbFR5cGUgeyAwIH07CisgICAgdWludDMyX3QgbV9idWZmZXJQb29s
V2lkdGggeyAwIH07CisgICAgdWludDMyX3QgbV9idWZmZXJQb29sSGVpZ2h0IHsgMCB9OworfTsK
KworaW5saW5lIFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI6OlNoYXJlZFZpZGVvRnJhbWVSZWFkZXIo
VXNlSU9TdXJmYWNlQnVmZmVyUG9vbCB1c2VJT1N1cmZhY2VCdWZmZXJQb29sKQorICAgIDogbV91
c2VJT1N1cmZhY2VCdWZmZXJQb29sKHVzZUlPU3VyZmFjZUJ1ZmZlclBvb2wpCit7Cit9CisKKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450539</attachid>
            <date>2022-02-01 09:20:33 -0800</date>
            <delta_ts>2022-02-01 23:28:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235951-20220201182028.patch</filename>
            <type>text/plain</type>
            <size>70790</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA1N2NlZjA3M2ZlZjIxZDA5ZWUyYWU1MzNmYjBmMWY0NGI5NDA0OWM1Li5kYTVm
Yzc2MTI5MWE1Y2MzNGYyYzljMTk1ZDJiOGViOWE5ZTZkNjAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMi0wMSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTGliV2ViUlRDQ29kZWNzIHNob3Vs
ZCBub3QgbmVlZCB0byBjcmVhdGUgSU9TdXJmYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1OTUxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
ODMyNjY1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbnRyb2R1Y2UgaGVscGVyIHJvdXRpbmVzIHRvIGNvcHkgYSB3ZWJydGMgVmlkZW9GcmFtZSBp
biBhIG1lbW9yeSBidWZmZXIgYW5kIGdldCBhIENWUGl4ZWxCdWZmZXIgZnJvbSBhIHdlYnJ0YyBW
aWRlb0ZyYW1lLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHA6
CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHA6CisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAgICogU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oOgorICAgICAgICAqIFNvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW06CisKIDIwMjItMDEtMjcgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgY29tLmFwcGxlLldlYktpdC5X
ZWJBdXRobi54cGMgZmFpbHMgdG8gYnVpbGQgd2l0aCBzeXN0ZW0gY29udGVudCBwYXRoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggYjNjODA5ZGNhODk1YjRiMWMyMDUwNTBmMjkyODQ3ZmI0YjczYTJkMi4uYjk0YmVk
ZmRjMTkxZTAxNzFmZGFlNzNlMzA2ODYyZDk5ZDFiM2JiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI0IEBACisyMDIyLTAyLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBMaWJXZWJSVENDb2RlY3Mgc2hvdWxkIG5vdCBuZWVkIHRvIGNyZWF0ZSBJT1N1cmZh
Y2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU5
NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4MzI2NjU0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBTaGFyZWRWaWRlb0ZyYW1l
SW5mbyBhcyBhIGhlbHBlciBjbGFzcyB0byBzZXJpYWxpemUgYSBDVlBpeGVsQnVmZmVyIGludG8g
bWVtb3J5IGFuZCBjcmVhdGUgYSBDVlBpeGVsQnVmZmVyIGZyb20gcmVhZGluZyBtZW1vcnkuCisK
KyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB3ZWJydGMgdGVzdHMuCisKKyAgICAgICAgKiBT
b3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5tbTog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmg6CisKIDIwMjItMDEtMzAgIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIEdz
dFN0cnVjdHVyZSB0byBKU09OIHNlcmlhbGl6YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGEzNDUyOTlmMDNh
NTViOTdlODkxNjA0N2E4YTYyNWM1MGEyMDk4My4uNTQ1Y2MwOGI3ZTZjMzY1MTExNjE2ZGJlOTNh
ZDI5MjFhYmNiZjI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAyMi0wMi0wMSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTGliV2ViUlRDQ29kZWNz
IHNob3VsZCBub3QgbmVlZCB0byBjcmVhdGUgSU9TdXJmYWNlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1OTUxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84ODMyNjY1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbnRyb2R1Y2UgU2hhcmVkVmlkZW9GcmFtZVdyaXRlciBhbmQgU2hhcmVkVmlkZW9G
cmFtZVJlYWRlciB0byBzdXBwb3J0IHNoYXJlZCBtZW1vcnkgc2VuZGluZyBvZiBDVlBpeGVsQnVm
ZmVycyB0aGF0IGFyZSBub24gSU9TdXJmYWNlIGJhY2tlZC4KKyAgICAgICAgVG8gZG8gc28sIHdl
IG1ha2UgdXNlIG9mIFNoYXJlZFZpZGVvRnJhbWVJbmZvIGZyb20gV2ViQ29yZS4KKyAgICAgICAg
V2hhdCB3ZSBkbyBpczoKKyAgICAgICAgLSBXaGVuIGdldHRpbmcgYSBmcmFtZSwgYWxsb2NhdGUg
YSBzaGFyZWQgbWVtb3J5IHRoYXQgaXMgYmlnIGVub3VnaCB0byBjb3B5IGl0cyBkYXRhIGFuZCBp
bmZvIGluIGl0LiBDcmVhdGUgYSBzZW1hcGhvcmUgdG8gc3luYyByZWFkZXIgYW5kIHdyaXRlci4K
KyAgICAgICAgLSBJZiB3ZSBhbGxvY2F0ZSBzaGFyZWQgbWVtb3J5L3NlbXBob3JlLCBzZW5kIHRo
ZW0gb3ZlciBJUEMgdG8gdGhlIFNoYXJlZFZpZGVvRnJhbWVSZWFkZXIuCisgICAgICAgIC0gV2Fp
dCBmb3Igc2VtYXBob3JlIHRvIHRlbGwgdXMgcmVhZGVyIGlzIGZpbmUgZm9yIHdyaXRpbmcuCisg
ICAgICAgIC0gV3JpdGUgU2hhcmVkVmlkZW9GcmFtZUluZm8gaW50byB0aGUgc2hhcmVkIG1lbW9y
eSwgdGhlbiBjb3B5IHRoZSByYXcgYnl0ZXMgaW50byB0aGUgc2hhcmVkIG1lbW9yeS4KKyAgICAg
ICAgLSBTZW5kIHRocm91Z2ggSVBDIHRoZSB2aWRlbyBmcmFtZSwgbm8gTWFjU2VuZFJpZ2h0IG1l
YW5zIHRvIHJlYWQgdGhlIHNoYXJlZCBtZW1vcnkuCisgICAgICAgIE9uIHJlYWRlciBzaWRlLCBm
b3IgZXZlcnkgZnJhbWUgdGhhdCBkb2VzIG5vdCBoYXZlIGFuIElPU3VyZmFjZSwgd2UgcmVhZCB0
aGUgc2hhcmVkIG1lbW9yeSwgY3JlYXRlIGFuIElPU3VyZmFjZSBmcm9tIGl0IGFuZCBub3RpZnkg
V2ViUHJvY2VzcyB0aGF0IGl0IGNhbiB3cml0ZSB0aGUgbmV4dCBmcmFtZS4KKworICAgICAgICBJ
biBtZW1vcnkgYnVmZmVycyBhcmUgdXNlZCBmb3IgYmxhY2sgZnJhbWVzIGF0IGxlYXN0LgorICAg
ICAgICB3ZWJydGMvdmlkZW8tbXV0ZS5odG1sIGNvdmVycyB0aGUgcGF0Y2guCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAgICAgICAq
IFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcDogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaDog
QWRkZWQuCisKIDIwMjItMDEtMzEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyIHNob3VsZCBvbmx5IGJl
IHVzZWQgb25jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZp
Z3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGRmZThiYTg3YzZiZWQ2ODlm
N2YwNDRkMzg4YjdjMjFiMTk5MzY1MTguLmNhNTQ3M2E2MmFkOThiZjZiNGUwY2ViNjAyODg1NjQ1
ZDkwZjdkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1
cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTMzMCw0ICszMzAsNSBAQCBf
X1pOM3J0YzZUaHJlYWQxMnNvY2tldHNlcnZlckV2CiBfX1pONndlYnJ0YzMyd2VicnRjX3NlcXVl
bmNlX2NoZWNrZXJfaW50ZXJuYWwxOVNlcXVlbmNlQ2hlY2tlckltcGxDMkV2CiBfX1pOSzNydGMx
NFJUQ0NlcnRpZmljYXRlMTdHZXRTU0xDZXJ0aWZpY2F0ZUV2CiBfX1pUVk42d2VicnRjMzBXcmFw
cGluZ0FzeW5jRG5zUmVzb2x2ZXJSZXN1bHRFCi0KK19fWk42d2VicnRjMjBwaXhlbEJ1ZmZlckZy
b21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUUKK19fWk42d2VicnRjMTRjb3B5VmlkZW9GcmFtZUVS
S05TXzEwVmlkZW9GcmFtZUVQaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCmluZGV4IGRm
ZThiYTg3YzZiZWQ2ODlmN2YwNDRkMzg4YjdjMjFiMTk5MzY1MTguLmNhNTQ3M2E2MmFkOThiZjZi
NGUwY2ViNjAyODg1NjQ1ZDkwZjdkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAK
QEAgLTMzMCw0ICszMzAsNSBAQCBfX1pOM3J0YzZUaHJlYWQxMnNvY2tldHNlcnZlckV2CiBfX1pO
NndlYnJ0YzMyd2VicnRjX3NlcXVlbmNlX2NoZWNrZXJfaW50ZXJuYWwxOVNlcXVlbmNlQ2hlY2tl
ckltcGxDMkV2CiBfX1pOSzNydGMxNFJUQ0NlcnRpZmljYXRlMTdHZXRTU0xDZXJ0aWZpY2F0ZUV2
CiBfX1pUVk42d2VicnRjMzBXcmFwcGluZ0FzeW5jRG5zUmVzb2x2ZXJSZXN1bHRFCi0KK19fWk42
d2VicnRjMjBwaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUUKK19fWk42d2Vi
cnRjMTRjb3B5VmlkZW9GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUVQaApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhw
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5t
YWMuZXhwCmluZGV4IGRmZThiYTg3YzZiZWQ2ODlmN2YwNDRkMzg4YjdjMjFiMTk5MzY1MTguLmNh
NTQ3M2E2MmFkOThiZjZiNGUwY2ViNjAyODg1NjQ1ZDkwZjdkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRj
Lm1hYy5leHAKQEAgLTMzMCw0ICszMzAsNSBAQCBfX1pOM3J0YzZUaHJlYWQxMnNvY2tldHNlcnZl
ckV2CiBfX1pONndlYnJ0YzMyd2VicnRjX3NlcXVlbmNlX2NoZWNrZXJfaW50ZXJuYWwxOVNlcXVl
bmNlQ2hlY2tlckltcGxDMkV2CiBfX1pOSzNydGMxNFJUQ0NlcnRpZmljYXRlMTdHZXRTU0xDZXJ0
aWZpY2F0ZUV2CiBfX1pUVk42d2VicnRjMzBXcmFwcGluZ0FzeW5jRG5zUmVzb2x2ZXJSZXN1bHRF
Ci0KK19fWk42d2VicnRjMjBwaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUUK
K19fWk42d2VicnRjMTRjb3B5VmlkZW9GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUVQaApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRVdGlsaXRpZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKaW5kZXggM2VhMDRmZDU4ZjRjNjVm
ZWMzNTc1YmE1MDFkMzYwOTViNjlhNjNmNy4uYTIzZmFhNmVkNTdkZjdjMzIyYzY3MGI3NzM1Y2Fi
ODNjNjYxNTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5o
CkBAIC00OCw2ICs0OCw4IEBAIGJvb2wgaXNIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCgpOwog
CiBlbnVtIGNsYXNzIEJ1ZmZlclR5cGUgeyBJNDIwLCBJMDEwIH07CiBDVlBpeGVsQnVmZmVyUmVm
IGNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6
OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYg
Y3JlYXRlUGl4ZWxCdWZmZXIpIENGX1JFVFVSTlNfUkVUQUlORUQ7CitDVlBpeGVsQnVmZmVyUmVm
IHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmKSBDRl9SRVRVUk5TX1JFVEFJ
TkVEOwogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxC
dWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYpOworYm9vbCBjb3B5VmlkZW9GcmFtZShjb25z
dCBWaWRlb0ZyYW1lJiwgdWludDhfdCopOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5t
bSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tCmluZGV4IDQ5ODEyZTdkMjM3ZThhYmExYjIzZDU5NTQ0MDE4ZTg4
NmUwNjhhMGMuLjdmNmZiYjExZTc2OTNhZDY2ZGY5MjRiOTNmNGQyOGU3ZWU4OWUwYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0VXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCkBAIC0xNzUsNCArMTc1
LDUyIEBAIENWUGl4ZWxCdWZmZXJSZWYgY3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoY29uc3Qg
VmlkZW9GcmFtZSYgZnJhbWUsIGNvbnN0IHN0ZDo6CiAgICAgcmV0dXJuIENWUGl4ZWxCdWZmZXJS
ZXRhaW4ocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpOwogfQogCitDVlBpeGVsQnVmZmVyUmVm
IHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lKQoreworICAgIGF1
dG8gYnVmZmVyID0gZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7CisgICAgaWYgKGJ1ZmZlci0+
dHlwZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byAqZnJhbWVCdWZmZXIgPSBzdGF0aWNfY2FzdDxPYmpDRnJh
bWVCdWZmZXIqPihidWZmZXIuZ2V0KCkpLT53cmFwcGVkX2ZyYW1lX2J1ZmZlcigpOworICAgIGlm
ICghW2ZyYW1lQnVmZmVyIGlzS2luZE9mQ2xhc3M6W1JUQ0NWUGl4ZWxCdWZmZXIgY2xhc3NdXSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvICpydGNQaXhlbEJ1ZmZlciA9IChS
VENDVlBpeGVsQnVmZmVyICopZnJhbWVCdWZmZXI7CisgICAgcmV0dXJuIENWUGl4ZWxCdWZmZXJS
ZXRhaW4ocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpOworfQorCitib29sIGNvcHlWaWRlb0Zy
YW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCB1aW50OF90KiBkYXRhKQoreworICAgIGF1dG8g
YnVmZmVyID0gZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7CisgICAgaWYgKGJ1ZmZlci0+dHlw
ZSgpID09IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGF1dG8gdHlwZSA9IGJ1ZmZlci0+dHlwZSgpOworICAgIGlmICh0eXBlID09
IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJNDIwKSB7CisgICAgICAgIGF1dG8qIGk0MjBGcmFt
ZSA9IGJ1ZmZlci0+R2V0STQyMCgpOworICAgICAgICBhdXRvKiBkYXRhWSA9IGRhdGE7CisgICAg
ICAgIGF1dG8gc3RyaWRlWSA9IGk0MjBGcmFtZS0+d2lkdGgoKTsKKyAgICAgICAgYXV0byBzdHJp
ZGVVViA9IGk0MjBGcmFtZS0+d2lkdGgoKSAvIDI7CisgICAgICAgIGF1dG8qIGRhdGFVViA9IGRh
dGEgKyAoaTQyMEZyYW1lLT53aWR0aCgpICogaTQyMEZyYW1lLT5oZWlnaHQoKSk7CisgICAgICAg
IHJldHVybiAhbGlieXV2OjpJNDIwVG9OVjEyKGk0MjBGcmFtZS0+RGF0YVkoKSwgaTQyMEZyYW1l
LT5TdHJpZGVZKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk0MjBGcmFt
ZS0+RGF0YVUoKSwgaTQyMEZyYW1lLT5TdHJpZGVVKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGk0MjBGcmFtZS0+RGF0YVYoKSwgaTQyMEZyYW1lLT5TdHJpZGVWKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFZLCBzdHJpZGVZLCBkYXRhVVYs
IHN0cmlkZVVWLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpNDIwRnJhbWUt
PndpZHRoKCksIGk0MjBGcmFtZS0+aGVpZ2h0KCkpOworICAgIH0KKyAgICBpZiAodHlwZSA9PSBW
aWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTAxMCkgeworICAgICAgICBhdXRvKiBpMDEwRnJhbWUg
PSBidWZmZXItPkdldEkwMTAoKTsKKyAgICAgICAgYXV0byogZGF0YVkgPSByZWludGVycHJldF9j
YXN0PHVpbnQxNl90Kj4oZGF0YSk7CisgICAgICAgIGF1dG8gc3RyaWRlWSA9IGkwMTBGcmFtZS0+
d2lkdGgoKTsKKyAgICAgICAgYXV0byBzdHJpZGVVViA9IGkwMTBGcmFtZS0+d2lkdGgoKSAvIDI7
CisgICAgICAgIGF1dG8qIGRhdGFVViA9IGRhdGFZICsgKGkwMTBGcmFtZS0+d2lkdGgoKSAqIGkw
MTBGcmFtZS0+aGVpZ2h0KCkpOworICAgICAgICByZXR1cm4gIWxpYnl1djo6STAxMFRvUDAxMChp
MDEwRnJhbWUtPkRhdGFZKCksIGkwMTBGcmFtZS0+U3RyaWRlWSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpMDEwRnJhbWUtPkRhdGFVKCksIGkwMTBGcmFtZS0+U3RyaWRl
VSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMDEwRnJhbWUtPkRhdGFW
KCksIGkwMTBGcmFtZS0+U3RyaWRlVigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhWSwgc3RyaWRlWSwgZGF0YVVWLCBzdHJpZGVVViwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaTAxMEZyYW1lLT53aWR0aCgpLCBpMDEwRnJhbWUtPmhlaWdodCgp
KTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAppbmRleCA0MTBjNmY0YWQ1YjIxNTkwNDVkMTUyYzY2MWI1MGYxNTM0Njg0NjdkLi41ODVlYTQ1
MzdmY2Y2NTlkMTg5OTQ3N2M3YzI1MmI0YWM3OWUxMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKQEAgLTI2OCw2ICsyNjgsNyBAQCBwbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5tbQogcGxhdGZvcm0vY29jb2EvUG93ZXJTb3VyY2VOb3RpZmllci5tbQog
cGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EubW0KIHBsYXRmb3JtL2Nv
Y29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCitwbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRWaWRlb0ZyYW1lVXRpbGl0aWVzLm1tIEBuby11bmlmeQogcGxhdGZvcm0vY29jb2EvU2VhcmNo
UG9wdXBNZW51Q29jb2EubW0KIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCiBw
bGF0Zm9ybS9jb2NvYS9TeXN0ZW1WZXJzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjI5OGJkZTdlYmI3ZGUyNzgyODc1
YmUzMTkzMTYzMzdiMzBmYjY2MS4uYjE1MTJiNTFlYzliNGQzOTczMzc0NzU0ZGEyMGQyOGRmZDY3
YzQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTIxMSwxMCArMTIxMSwxMiBAQAogCQk0MUQxMjlEQjFGM0QxNDM4MDBEMTVF
NDcgLyogRmV0Y2hIZWFkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUY1NEY4MzFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFEMjhEMEQy
MTM5RTA1ODAwRjQyMDZGIC8qIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDI4RDBCMjEzOUUwMUQwMEY0
MjA2RiAvKiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAgKi87IH07CiAJCTQxRDQxQzY3MjI1
Njg3NEYwMDY5Nzk0MiAvKiBTZXJ2aWNlV29ya2VySW50ZXJuYWxzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFENDFDNjUyMjU2ODU5MjAwNjk3OTQy
IC8qIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMubW0gKi87IH07CisJCTQxREMwNEZFMjdBODNDOTMw
MDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEQzA0RkIyN0E4M0M5MjAwOENGOTY4IC8qIFNoYXJl
ZFZpZGVvRnJhbWVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDFERTdDN0MyMjJEQTE0MzAwNTMyQjY1IC8qIFN0b3JhZ2VRdW90YU1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREU3
QzdCMjIyREExM0UwMDUzMkI2NSAvKiBTdG9yYWdlUXVvdGFNYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFERUVGQjAyNzE5QjI5MDAw
Q0I4RDc0IC8qIFZpZGVvRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREVFRkFDMjcxOUIyODgwMENCOEQ3NCAvKiBW
aWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFERUVGQjYyNzE5QkExQTAwQ0I4RDc0IC8qIFZpZGVvRnJh
bWVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFERUVGQjQyNzE5QkExOTAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVNZXRhZGF0YS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxREVGQ0I2MUU1
NkMxQkQwMDBEOUU1RiAvKiBKU0RPTU1hcExpa2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREVGQ0I0MUU1NkMxQjkwMDBEOUU1RiAvKiBKU0RPTU1h
cExpa2UuaCAqLzsgfTsKKwkJNDFERjJENUUyN0E5NDUyQTAwRjI1QTIxIC8qIFNoYXJlZFZpZGVv
RnJhbWVJbmZvLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFEQzA0RkQyN0E4M0M5MzAwOENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWVJbmZvLm1tICov
OyB9OwogCQk0MUUxMkU5RjI0RkU3NEUyMDA5M0ZGQjQgLyogV2ViU29ja2V0SWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMTJFOUQy
NEZFNzRFMjAwOTNGRkI0IC8qIFdlYlNvY2tldElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZC
M0IgLyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRTFCMUNCMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5o
ICovOyB9OwogCQk0MUUyRjE5OTI3NEZBRUNGMDBBMDg5RUUgLyogTmF2aWdhdGlvblByZWxvYWRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUUyRjE5NzI3NEZBRUNCMDBBMDg5RUUgLyogTmF2aWdhdGlvblByZWxvYWRNYW5hZ2VyLmggKi87
IH07CkBAIC04OTE4LDYgKzg5MjAsOCBAQAogCQk0MUQ0MUM2NTIyNTY4NTkyMDA2OTc5NDIgLyog
U2VydmljZVdvcmtlckludGVybmFscy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxRDUxQkIyMUU0RTJFODEwMDEzMUE1QiAvKiBMaWJXZWJSVENBdWRpb0Zvcm1h
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENBdWRpb0Zvcm1h
dC5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvRm9ybWF0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxRDZCRDk4MjUxQjNBREEwMDU1QTdCNyAvKiBIVE1MTWVkaWFF
bGVtZW50K0F1ZGlvT3V0cHV0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiSFRNTE1lZGlh
RWxlbWVudCtBdWRpb091dHB1dC5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MURDMDRGQjI3QTgzQzkyMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkVmlkZW9GcmFtZUluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEQzA0RkQyN0E4M0M5MzAwOENGOTY4IC8qIFNoYXJl
ZFZpZGVvRnJhbWVJbmZvLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU2hhcmVkVmlkZW9GcmFtZUluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxREU3QzdBMjIyREExM0QwMDUzMkI2NSAvKiBTdG9yYWdlUXVvdGFNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VRdW90YU1hbmFnZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MURFN0M3QjIyMkRBMTNFMDA1MzJCNjUg
LyogU3RvcmFnZVF1b3RhTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdG9yYWdlUXVvdGFNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
REVFRkFDMjcxOUIyODgwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFZpZGVvRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI2ODE2LDYgKzI2ODIwLDggQEAKIAkJCQkwRTcwNThGMzFCQzVDQ0Q3
MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EuaCAqLywKIAkJCQkwRTcwNThFRDFCQzVC
QzE5MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gKi8sCiAJCQkJMUE0QTk1NTEw
QjRFRENGRjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlckNvY29hLm1tICovLAorCQkJCTQxREMwNEZC
MjdBODNDOTIwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5oICovLAorCQkJCTQxREMw
NEZEMjdBODNDOTMwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5tbSAqLywKIAkJCQlD
MTY5MkRENDIzRDIzQUUwMDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICovLAogCQkJCUMxNjky
REQxMjNEMjNBQkQwMDZFODhGNyAvKiBTeXN0ZW1CYXR0ZXJ5Lm1tICovLAogCQkJCTVENTk3NUIx
MTk2MzVGMTEwMEQwMDg3OCAvKiBTeXN0ZW1WZXJzaW9uLmggKi8sCkBAIC0zNzE4Niw2ICszNzE5
Miw3IEBACiAJCQkJQ0QzNkMxNkIyNjBBNjVDQzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRpbmdBcmJp
dHJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyog
U2hhcmVkU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAw
NTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MURDMDRGRTI3QTgz
QzkzMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ2N0E2OERBMjc1RUE5OUMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJv
eHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzg2NjAsNiArMzg2Njcs
NyBAQAogCQkJCTQzQjg1RUQ0MThDQkVDNTIwMEUzMUFGNCAvKiBTZWxlY3RvclBzZXVkb0NsYXNz
QW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjZBQTBG
OUUxOEQyQTE4QjAwNDE5MzgxIC8qIFNlbGVjdG9yUHNldWRvRWxlbWVudFR5cGVNYXAuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NENThERkQxRjk1NjVBODAwMTEyNzkxIC8qIFNldHRpbmdzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTQxREYyRDVFMjdBOTQ1MkEwMEYyNUEyMSAvKiBTaGFyZWRW
aWRlb0ZyYW1lSW5mby5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxMEE4MUY5MDIyQTQwMDUx
MDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDOEI1QUEx
ODA0N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTgzM0M3Q0EwQTJDRjA2QjAwRDU3NjY0IC8qIFNWR05hbWVzLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29y
ZVZpZGVvU29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZp
ZGVvU29mdExpbmsuY3BwCmluZGV4IDNlMDczYTc4NjVkY2E4MTgzZDhiYzVlZTk3OWQxN2JlOTA4
NTEwOTguLjQ1Y2RjN2E5YWNmYjA0ZDEzYzgyNDhkZTIxMWEyNGY3N2UzNGM2ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAK
QEAgLTM5LDcgKzM5LDkgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwg
Q29yZVZpZGVvLCBDVkJ1ZmZlckdldEF0dGFjaG1lbnQsIENGVHlwZVIKIFNPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZCdWZmZXJHZXRBdHRhY2htZW50
cywgQ0ZEaWN0aW9uYXJ5UmVmLCAoQ1ZCdWZmZXJSZWYgYnVmZmVyLCBDVkF0dGFjaG1lbnRNb2Rl
IG1vZGUpLCAoYnVmZmVyLCBtb2RlKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdl
YkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlSUQsICgpLCAo
KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQ
aXhlbEJ1ZmZlckdldFdpZHRoLCBzaXplX3QsIChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVy
KSwgKHBpeGVsQnVmZmVyKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUs
IENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFuZSwgc2l6ZV90LCAoQ1ZQaXhl
bEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgc2l6ZV90IHBsYW5lSW5kZXgpLCAocGl4ZWxCdWZmZXIs
IHBsYW5lSW5kZXgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29y
ZVZpZGVvLCBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0LCBzaXplX3QsIChDVlBpeGVsQnVmZmVyUmVm
IHBpeGVsQnVmZmVyKSwgKHBpeGVsQnVmZmVyKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodE9mUGxhbmUsIHNp
emVfdCwgKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHNpemVfdCBwbGFuZUluZGV4KSwg
KHBpeGVsQnVmZmVyLCBwbGFuZUluZGV4KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNF
KFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzLCB2b2lkKiwg
KENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpLCAocGl4ZWxCdWZmZXIpKQogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBDVlBpeGVsQnVmZmVyR2V0
Qnl0ZXNQZXJSb3csIHNpemVfdCwgKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpLCAocGl4
ZWxCdWZmZXIpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZp
ZGVvLCBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3dPZlBsYW5lLCBzaXplX3QsIChDVlBpeGVs
QnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBzaXplX3QgcGxhbmVJbmRleCksIChwaXhlbEJ1ZmZlciwg
cGxhbmVJbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9D
b3JlVmlkZW9Tb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZp
ZGVvU29mdExpbmsuaAppbmRleCBjOWI0MTM5MWNmY2I5OTM0YzNiYzUwNDMzZjMxOGY4ZDk1Yzg3
ZjJiLi4wMzczMjA0OTY5NmVmZWU0MWZhOWNkMjU0ZDM5N2FjNTkyNTBhNjE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmgKQEAgLTQ0
LDggKzQ0LDEyIEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVW
aWRlbywgQ1ZQaXhlbEJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlCiAjZGVmaW5lIENWUGl4ZWxCdWZm
ZXJHZXRUeXBlSUQgc29mdExpbmtfQ29yZVZpZGVvX0NWUGl4ZWxCdWZmZXJHZXRUeXBlSUQKIFNP
RlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1
ZmZlckdldFdpZHRoLCBzaXplX3QsIChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKSwgKHBp
eGVsQnVmZmVyKSkKICNkZWZpbmUgQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoIHNvZnRMaW5rX0NvcmVW
aWRlb19DVlBpeGVsQnVmZmVyR2V0V2lkdGgKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFuZSwgc2l6ZV90
LCAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgc2l6ZV90IHBsYW5lSW5kZXgpLCAocGl4
ZWxCdWZmZXIsIHBsYW5lSW5kZXgpKQorI2RlZmluZSBDVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBs
YW5lIHNvZnRMaW5rX0NvcmVWaWRlb19DVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBsYW5lCiBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlVmlkZW8sIENWUGl4ZWxCdWZm
ZXJHZXRIZWlnaHQsIHNpemVfdCwgKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpLCAocGl4
ZWxCdWZmZXIpKQogI2RlZmluZSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0IHNvZnRMaW5rX0NvcmVW
aWRlb19DVlBpeGVsQnVmZmVyR2V0SGVpZ2h0CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihXZWJDb3JlLCBDb3JlVmlkZW8sIENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lLCBzaXpl
X3QsIChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBzaXplX3QgcGxhbmVJbmRleCksIChw
aXhlbEJ1ZmZlciwgcGxhbmVJbmRleCkpCisjZGVmaW5lIENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRP
ZlBsYW5lIHNvZnRMaW5rX0NvcmVWaWRlb19DVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQbGFuZQog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVvLCBDVlBpeGVs
QnVmZmVyR2V0QmFzZUFkZHJlc3MsIHZvaWQqLCAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZl
ciksIChwaXhlbEJ1ZmZlcikpCiAjZGVmaW5lIENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzcyBz
b2Z0TGlua19Db3JlVmlkZW9fQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlVmlkZW8sIENWUGl4ZWxCdWZmZXJHZXRC
eXRlc1BlclJvdywgc2l6ZV90LCAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciksIChwaXhl
bEJ1ZmZlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRWaWRlb0ZyYW1lSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVk
VmlkZW9GcmFtZUluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZWU4YTk2ZDJlM2EyMmJmZmM1MmYzNjkwZDky
YmZlOGYxODI4ZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8uaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3Bhbi5oPgorCit0eXBlZGVmIHN0cnVjdCBfX0NW
QnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVy
UG9vbCogQ1ZQaXhlbEJ1ZmZlclBvb2xSZWY7CisKK25hbWVzcGFjZSB3ZWJydGMgeworY2xhc3Mg
VmlkZW9GcmFtZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRWaWRl
b0ZyYW1lSW5mbyB7CitwdWJsaWM6CisgICAgU2hhcmVkVmlkZW9GcmFtZUluZm8oKSA9IGRlZmF1
bHQ7CisgICAgU2hhcmVkVmlkZW9GcmFtZUluZm8oT1NUeXBlLCB1aW50MzJfdCB3aWR0aCwgdWlu
dDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBieXRlc1BlclJvdywgdWludDMyX3Qgd2lkdGhQbGFuZUIg
PSAwLCB1aW50MzJfdCBoZWlnaHRQbGFuZUIgPSAwLCB1aW50MzJfdCBieXRlc1BlclJvd1BsYW5l
QiA9IDApOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmNvZGUodWludDhfdCopOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWVJbmZv
PiBkZWNvZGUoU3Bhbjxjb25zdCB1aW50OF90Pik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU2hhcmVkVmlkZW9GcmFtZUluZm8gZnJvbUNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJl
Zik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB3cml0ZVBpeGVsQnVmZmVyKENWUGl4ZWxCdWZm
ZXJSZWYsIHVpbnQ4X3QqIGRhdGEpOworCisjaWYgVVNFKExJQldFQlJUQykKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgU2hhcmVkVmlkZW9GcmFtZUluZm8gZnJvbVZpZGVvRnJhbWUoY29uc3Qg
d2VicnRjOjpWaWRlb0ZyYW1lJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB3cml0ZVZpZGVv
RnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiwgdWludDhfdCogZGF0YSk7CisjZW5kaWYK
KworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzdG9yYWdlU2l6ZSgpIGNvbnN0OworCisgICAg
V0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNyZWF0ZVBpeGVsQnVm
ZmVyRnJvbU1lbW9yeShjb25zdCB1aW50OF90KiBkYXRhLCBDVlBpeGVsQnVmZmVyUG9vbFJlZiA9
IG51bGxwdHIpOworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1JlYWRXcml0ZVN1cHBvcnRl
ZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUG9v
bFJlZj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlclBvb2woKSBjb25zdDsKKworICAgIE9TVHlwZSBi
dWZmZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJUeXBlOyB9CisgICAgdWludDMyX3Qg
d2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9OworICAgIHVpbnQzMl90IGhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9OworCitwcml2YXRlOgorICAgIE9TVHlwZSBtX2J1
ZmZlclR5cGUgeyAwIH07CisgICAgdWludDMyX3QgbV93aWR0aCB7IDAgfTsKKyAgICB1aW50MzJf
dCBtX2hlaWdodCB7IDAgfTsKKyAgICB1aW50MzJfdCBtX2J5dGVzUGVyUm93IHsgMCB9OworICAg
IHVpbnQzMl90IG1fd2lkdGhQbGFuZUIgeyAwIH07CisgICAgdWludDMyX3QgbV9oZWlnaHRQbGFu
ZUIgeyAwIH07CisgICAgdWludDMyX3QgbV9ieXRlc1BlclJvd1BsYW5lQiB7IDAgfTsKK307CisK
Kworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgU2hhcmVkVmlkZW9GcmFtZUluZm9FbmNvZGluZ0xl
bmd0aCA9IHNpemVvZihTaGFyZWRWaWRlb0ZyYW1lSW5mbyk7CisKK2lubGluZSBTaGFyZWRWaWRl
b0ZyYW1lSW5mbzo6U2hhcmVkVmlkZW9GcmFtZUluZm8oT1NUeXBlIGJ1ZmZlclR5cGUsIHVpbnQz
Ml90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGJ5dGVzUGVyUm93LCB1aW50MzJf
dCB3aWR0aFBsYW5lQiwgdWludDMyX3QgaGVpZ2h0UGxhbmVCLCB1aW50MzJfdCBieXRlc1BlclJv
d1BsYW5lQikKKyAgICA6IG1fYnVmZmVyVHlwZShidWZmZXJUeXBlKQorICAgICwgbV93aWR0aCh3
aWR0aCkKKyAgICAsIG1faGVpZ2h0KGhlaWdodCkKKyAgICAsIG1fYnl0ZXNQZXJSb3coYnl0ZXNQ
ZXJSb3cpCisgICAgLCBtX3dpZHRoUGxhbmVCKHdpZHRoUGxhbmVCKQorICAgICwgbV9oZWlnaHRQ
bGFuZUIoaGVpZ2h0UGxhbmVCKQorICAgICwgbV9ieXRlc1BlclJvd1BsYW5lQihieXRlc1BlclJv
d1BsYW5lQikKK3sKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJ
bmZvLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUlu
Zm8ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjFlZjJjZWJjNzllNzc0Zjg5NzE1NmE5ZjcxYmI1NmU0NGM0NjZm
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJl
ZFZpZGVvRnJhbWVJbmZvLm1tCkBAIC0wLDAgKzEsMjk5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlNoYXJlZFZpZGVvRnJhbWVJbmZvLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQ
TEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIkNWVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiSU9T
dXJmYWNlLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgor
I2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+CisKKyNpZiBVU0Uo
QUNDRUxFUkFURSkKKyNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUuaD4KKyNlbmRpZgor
CisjaWYgVVNFKExJQldFQlJUQykKKworQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KKyNp
bmNsdWRlIDx3ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmg+CisjaW5jbHVkZSA8d2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmg+CitBTExPV19VTlVTRURfUEFSQU1FVEVSU19F
TkQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1NoYXJlZFZpZGVvRnJhbWVJbmZvIFNoYXJlZFZpZGVvRnJhbWVJbmZv
Ojpmcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKQoreworICAg
IGF1dG8gdHlwZSA9IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIp
OworICAgIGlmICh0eXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJW
aWRlb1JhbmdlIHx8IHR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5h
ckZ1bGxSYW5nZSkKKyAgICAgICAgcmV0dXJuIHsgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUocGl4ZWxCdWZmZXIsIDApKSwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVsQnVmZmVyLCAw
KSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3dPZlBs
YW5lKHBpeGVsQnVmZmVyLCAwKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihDVlBpeGVsQnVmZmVy
R2V0V2lkdGhPZlBsYW5lKHBpeGVsQnVmZmVyLCAxKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihD
VlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQbGFuZShwaXhlbEJ1ZmZlciwgMSkpLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbEJ1ZmZl
ciwgMSkpIH07CisgICAgcmV0dXJuIHsgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KENWUGl4
ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcikpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oQ1ZQ
aXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
Q1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93KHBpeGVsQnVmZmVyKSkgfTsKK30KKworYm9vbCBT
aGFyZWRWaWRlb0ZyYW1lSW5mbzo6aXNSZWFkV3JpdGVTdXBwb3J0ZWQoKSBjb25zdAoreworICAg
IHJldHVybiBtX2J1ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBs
YW5hclZpZGVvUmFuZ2UKKyNpZiBVU0UoQUNDRUxFUkFURSkKKyAgICAgICAgICAgIHx8IG1fYnVm
ZmVyVHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBCisjZW5kaWYKKyAgICAgICAgICAg
IHx8IG1fYnVmZmVyVHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFy
RnVsbFJhbmdlCisgICAgICAgICAgICB8fCBtX2J1ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRU
eXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2U7Cit9CisKK3NpemVfdCBTaGFyZWRWaWRl
b0ZyYW1lSW5mbzo6c3RvcmFnZVNpemUoKSBjb25zdAoreworICAgIHJldHVybiAobV9ieXRlc1Bl
clJvdyAqIG1faGVpZ2h0KSArIChtX2J5dGVzUGVyUm93UGxhbmVCICogbV9oZWlnaHRQbGFuZUIp
ICsgc2l6ZW9mKFNoYXJlZFZpZGVvRnJhbWVJbmZvKTsKK30KKwordm9pZCBTaGFyZWRWaWRlb0Zy
YW1lSW5mbzo6ZW5jb2RlKHVpbnQ4X3QqIGRlc3RpbmF0aW9uKQoreworICAgIFdURjo6UGVyc2lz
dGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8ICh1aW50MzJfdCltX2J1ZmZl
clR5cGU7CisgICAgZW5jb2RlciA8PCBtX3dpZHRoOworICAgIGVuY29kZXIgPDwgbV9oZWlnaHQ7
CisgICAgZW5jb2RlciA8PCBtX2J5dGVzUGVyUm93OworICAgIGVuY29kZXIgPDwgbV93aWR0aFBs
YW5lQjsKKyAgICBlbmNvZGVyIDw8IG1faGVpZ2h0UGxhbmVCOworICAgIGVuY29kZXIgPDwgbV9i
eXRlc1BlclJvd1BsYW5lQjsKKyAgICBBU1NFUlQoc2l6ZW9mKFNoYXJlZFZpZGVvRnJhbWVJbmZv
KSA9PSBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgc3RkOjptZW1jcHkoZGVzdGluYXRpb24s
IGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKK30KKworc3RkOjpvcHRp
b25hbDxTaGFyZWRWaWRlb0ZyYW1lSW5mbz4gU2hhcmVkVmlkZW9GcmFtZUluZm86OmRlY29kZShT
cGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pCit7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBkZWNvZGVyKHNwYW4pOworCisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gYnVmZmVyVHlw
ZTsKKyAgICBkZWNvZGVyID4+IGJ1ZmZlclR5cGU7CisgICAgaWYgKCFidWZmZXJUeXBlKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
d2lkdGg7CisgICAgZGVjb2RlciA+PiB3aWR0aDsKKyAgICBpZiAoIXdpZHRoKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaGVpZ2h0
OworICAgIGRlY29kZXIgPj4gaGVpZ2h0OworICAgIGlmICghaGVpZ2h0KQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gYnl0ZXNQZXJS
b3c7CisgICAgZGVjb2RlciA+PiBieXRlc1BlclJvdzsKKyAgICBpZiAoIWJ5dGVzUGVyUm93KQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gd2lkdGhQbGFuZUI7CisgICAgZGVjb2RlciA+PiB3aWR0aFBsYW5lQjsKKyAgICBpZiAoIXdp
ZHRoUGxhbmVCKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gaGVpZ2h0UGxhbmVCOworICAgIGRlY29kZXIgPj4gaGVpZ2h0UGxhbmVC
OworICAgIGlmICghaGVpZ2h0UGxhbmVCKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gYnl0ZXNQZXJSb3dQbGFuZUI7CisgICAgZGVj
b2RlciA+PiBieXRlc1BlclJvd1BsYW5lQjsKKyAgICBpZiAoIWJ5dGVzUGVyUm93UGxhbmVCKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIFNoYXJlZFZpZGVvRnJh
bWVJbmZvIHsgKmJ1ZmZlclR5cGUsICp3aWR0aCwgKmhlaWdodCwgKmJ5dGVzUGVyUm93ICwgKndp
ZHRoUGxhbmVCLCAqaGVpZ2h0UGxhbmVCLCAqYnl0ZXNQZXJSb3dQbGFuZUIgfTsKK30KKworUmV0
YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpjcmVhdGVQaXhl
bEJ1ZmZlckZyb21NZW1vcnkoY29uc3QgdWludDhfdCogZGF0YSwgQ1ZQaXhlbEJ1ZmZlclBvb2xS
ZWYgYnVmZmVyUG9vbCkKK3sKKyAgICBBU1NFUlQoaXNSZWFkV3JpdGVTdXBwb3J0ZWQoKSk7Cisg
ICAgaWYgKG1fYnVmZmVyVHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB7CisjaWYg
VVNFKEFDQ0VMRVJBVEUpCisgICAgICAgIEludFNpemUgc2l6ZSB7IHN0YXRpY19jYXN0PGludD4o
bV93aWR0aCksIHN0YXRpY19jYXN0PGludD4obV9oZWlnaHQpIH07CisgICAgICAgIGF1dG8gaW9T
dXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIElPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBKTsKKworICAgICAgICBJT1N1cmZhY2U6Okxv
Y2tlciBsb2NrKCppb1N1cmZhY2UpOworICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKKyAgICAg
ICAgc3JjLndpZHRoID0gbV93aWR0aDsKKyAgICAgICAgc3JjLmhlaWdodCA9IG1faGVpZ2h0Owor
ICAgICAgICBzcmMucm93Qnl0ZXMgPSBtX2J5dGVzUGVyUm93OworICAgICAgICBzcmMuZGF0YSA9
IGNvbnN0X2Nhc3Q8dWludDhfdCo+KGRhdGEpOworCisgICAgICAgIHZJbWFnZV9CdWZmZXIgZGVz
dDsKKyAgICAgICAgZGVzdC53aWR0aCA9IG1fd2lkdGg7CisgICAgICAgIGRlc3QuaGVpZ2h0ID0g
bV9oZWlnaHQ7CisgICAgICAgIGRlc3Qucm93Qnl0ZXMgPSBpb1N1cmZhY2UtPmJ5dGVzUGVyUm93
KCk7CisgICAgICAgIGRlc3QuZGF0YSA9IGxvY2suc3VyZmFjZUJhc2VBZGRyZXNzKCk7CisKKyAg
ICAgICAgdkltYWdlVW5wcmVtdWx0aXBseURhdGFfQkdSQTg4ODgoJnNyYywgJmRlc3QsIGt2SW1h
Z2VOb0ZsYWdzKTsKKworICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRl
Q1ZQaXhlbEJ1ZmZlcihpb1N1cmZhY2UtPnN1cmZhY2UoKSk7CisgICAgICAgIGlmICghcGl4ZWxC
dWZmZXIpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFdURk1v
dmUoKnBpeGVsQnVmZmVyKTsKKyNlbHNlCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
LCAiY3JlYXRlSU9TdXJmYWNlRnJvbVNoYXJlZE1lbW9yeSBjYW5ub3QgY29udmVydCB0byBJT1N1
cmZhY2UiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKKyAgICB9CisKKyAgICBD
VlBpeGVsQnVmZmVyUmVmIHJhd1BpeGVsQnVmZmVyID0gbnVsbHB0cjsKKyAgICBpZiAoYnVmZmVy
UG9vbCkgeworICAgICAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRlUGl4
ZWxCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVyUG9vbCwgJnJhd1BpeGVsQnVmZmVy
KTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBub0VyciB8fCAhcmF3UGl4ZWxCdWZmZXIpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBBU1NFUlQoQ1ZQaXhlbEJ1ZmZlckdl
dFdpZHRoT2ZQbGFuZShyYXdQaXhlbEJ1ZmZlciwgMCkgPT0gbV93aWR0aCk7CisgICAgICAgIEFT
U0VSVChDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQbGFuZShyYXdQaXhlbEJ1ZmZlciwgMCkgPT0g
bV9oZWlnaHQpOworICAgICAgICBBU1NFUlQoQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlw
ZShyYXdQaXhlbEJ1ZmZlcikgPT0gbV9idWZmZXJUeXBlKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
bV93aWR0aCwgbV9oZWlnaHQsIG1fYnVmZmVyVHlwZSwgbnVsbHB0ciwgJnJhd1BpeGVsQnVmZmVy
KTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBub0VyciB8fCAhcmF3UGl4ZWxCdWZmZXIpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0g
YWRvcHRDRihyYXdQaXhlbEJ1ZmZlcik7CisgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVy
TG9ja0Jhc2VBZGRyZXNzKHJhd1BpeGVsQnVmZmVyLCAwKTsKKyAgICBpZiAoc3RhdHVzICE9IG5v
RXJyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gc2NvcGUgPSBtYWtlU2Nv
cGVFeGl0KFsmcmF3UGl4ZWxCdWZmZXJdIHsKKyAgICAgICAgQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jh
c2VBZGRyZXNzKHJhd1BpeGVsQnVmZmVyLCAwKTsKKyAgICB9KTsKKworICAgIGlmIChDVlBpeGVs
QnVmZmVyR2V0V2lkdGhPZlBsYW5lKHJhd1BpeGVsQnVmZmVyLCAxKSAhPSBtX3dpZHRoUGxhbmVC
IHx8IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHJhd1BpeGVsQnVmZmVyLCAxKSAhPSBt
X2hlaWdodFBsYW5lQikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBwbGFu
ZUEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQ
bGFuZShyYXdQaXhlbEJ1ZmZlciwgMCkpOworICAgIHVpbnQzMl90IGJ5dGVzUGVyUm93UGxhbmVB
ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShyYXdQaXhlbEJ1ZmZlciwgMCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faGVpZ2h0OyArK2kpIHsKKyAgICAgICAg
c3RkOjptZW1jcHkocGxhbmVBLCBkYXRhLCBzdGQ6Om1pbihieXRlc1BlclJvd1BsYW5lQSwgbV9i
eXRlc1BlclJvdykpOworICAgICAgICBwbGFuZUEgKz0gYnl0ZXNQZXJSb3dQbGFuZUE7CisgICAg
ICAgIGRhdGEgKz0gbV9ieXRlc1BlclJvdzsKKyAgICB9CisKKyAgICBhdXRvKiBwbGFuZUIgPSBz
dGF0aWNfY2FzdDx1aW50OF90Kj4oQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShy
YXdQaXhlbEJ1ZmZlciwgMSkpOworICAgIHVpbnQzMl90IGJ5dGVzUGVyUm93UGxhbmVCID0gQ1ZQ
aXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShyYXdQaXhlbEJ1ZmZlciwgMSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faGVpZ2h0UGxhbmVCOyArK2kpIHsKKyAgICAgICAg
c3RkOjptZW1jcHkocGxhbmVCLCBkYXRhLCBzdGQ6Om1pbihieXRlc1BlclJvd1BsYW5lQiwgbV9i
eXRlc1BlclJvd1BsYW5lQikpOworICAgICAgICBwbGFuZUIgKz0gYnl0ZXNQZXJSb3dQbGFuZUI7
CisgICAgICAgIGRhdGEgKz0gbV9ieXRlc1BlclJvd1BsYW5lQjsKKyAgICB9CisKKyAgICBDVlBp
eGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmF3UGl4ZWxCdWZmZXIsIDApOworICAgIHJldHVy
biBwaXhlbEJ1ZmZlcjsKK30KKworYm9vbCBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6d3JpdGVQaXhl
bEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCB1aW50OF90KiBkYXRhKQorewor
ICAgIGF1dG8gcmVzdWx0ID0gQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhwaXhlbEJ1ZmZl
ciwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKKyAgICBpZiAocmVzdWx0ICE9IGtDVlJl
dHVyblN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gc2NvcGUgPSBt
YWtlU2NvcGVFeGl0KFsmcGl4ZWxCdWZmZXJdIHsKKyAgICAgICAgQ1ZQaXhlbEJ1ZmZlclVubG9j
a0Jhc2VBZGRyZXNzKHBpeGVsQnVmZmVyLCBrQ1ZQaXhlbEJ1ZmZlckxvY2tfUmVhZE9ubHkpOwor
ICAgIH0pOworCisgICAgZW5jb2RlKGRhdGEpOworICAgIGRhdGEgKz0gc2l6ZW9mKFNoYXJlZFZp
ZGVvRnJhbWVJbmZvKTsKKworICAgIGlmIChtX2J1ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRU
eXBlXzMyQkdSQSkgeworI2lmIFVTRShBQ0NFTEVSQVRFKQorICAgICAgICB2SW1hZ2VfQnVmZmVy
IHNyYzsKKyAgICAgICAgc3JjLndpZHRoID0gbV93aWR0aDsKKyAgICAgICAgc3JjLmhlaWdodCA9
IG1faGVpZ2h0OworICAgICAgICBzcmMucm93Qnl0ZXMgPSBtX2J5dGVzUGVyUm93OworICAgICAg
ICBzcmMuZGF0YSA9IENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzcyhwaXhlbEJ1ZmZlcik7CisK
KyAgICAgICAgdkltYWdlX0J1ZmZlciBkZXN0OworICAgICAgICBkZXN0LndpZHRoID0gbV93aWR0
aDsKKyAgICAgICAgZGVzdC5oZWlnaHQgPSBtX2hlaWdodDsKKyAgICAgICAgZGVzdC5yb3dCeXRl
cyA9IG1fYnl0ZXNQZXJSb3c7CisgICAgICAgIGRlc3QuZGF0YSA9IGRhdGE7CisKKyAgICAgICAg
dkltYWdlVW5wcmVtdWx0aXBseURhdGFfQkdSQTg4ODgoJnNyYywgJmRlc3QsIGt2SW1hZ2VOb0Zs
YWdzKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorICAgIH0KKworICAgIGNvbnN0IHVpbnQ4X3QgKnBsYW5lQSA9IHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QgKj4oQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShw
aXhlbEJ1ZmZlciwgMCkpOworICAgIGNvbnN0IHVpbnQ4X3QgKnBsYW5lQiA9IHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QgKj4oQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShwaXhl
bEJ1ZmZlciwgMSkpOworCisgICAgc2l6ZV90IHBsYW5lQVNpemUgPSBtX2hlaWdodCAqIG1fYnl0
ZXNQZXJSb3c7CisgICAgc3RkOjptZW1jcHkoZGF0YSwgcGxhbmVBLCBwbGFuZUFTaXplKTsKKyAg
ICBzaXplX3QgcGxhbmVCU2l6ZSA9IG1faGVpZ2h0UGxhbmVCICogbV9ieXRlc1BlclJvd1BsYW5l
QjsKKyAgICBzdGQ6Om1lbWNweShkYXRhICsgcGxhbmVBU2l6ZSwgcGxhbmVCLCBwbGFuZUJTaXpl
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclBvb2xS
ZWY+IFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyUG9vbCgpIGNv
bnN0Cit7CisgICAgYXV0byByZXN1bHQgPSBjcmVhdGVJT1N1cmZhY2VDVlBpeGVsQnVmZmVyUG9v
bChtX3dpZHRoLCBtX2hlaWdodCwgbV9idWZmZXJUeXBlKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gKnJlc3VsdDsKK30KKworI2lmIFVTRShMSUJX
RUJSVEMpCitTaGFyZWRWaWRlb0ZyYW1lSW5mbyBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZnJvbVZp
ZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSkKK3sKKyAgICBhdXRvIGJ1
ZmZlciA9IGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpOworICAgIGlmIChidWZmZXItPnR5cGUo
KSA9PSB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpCisgICAgICAgIHJl
dHVybiBTaGFyZWRWaWRlb0ZyYW1lSW5mbyB7IH07CisKKyAgICBhdXRvIHR5cGUgPSBidWZmZXIt
PnR5cGUoKTsKKworICAgIGlmICh0eXBlID09IHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlw
ZTo6a0k0MjApCisgICAgICAgIHJldHVybiBTaGFyZWRWaWRlb0ZyYW1lSW5mbyB7IGtDVlBpeGVs
Rm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UsCisgICAgICAgICAgICBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90Pihm
cmFtZS5oZWlnaHQoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSwKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGZyYW1lLmhlaWdodCgpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1l
LndpZHRoKCkpIC8gMiB9OworCisgICAgaWYgKHR5cGUgPT0gd2VicnRjOjpWaWRlb0ZyYW1lQnVm
ZmVyOjpUeXBlOjprSTAxMCkKKyAgICAgICAgcmV0dXJuIFNoYXJlZFZpZGVvRnJhbWVJbmZvIHsg
a0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2UsCisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSksIHN0YXRpY19jYXN0PHVp
bnQzMl90PihmcmFtZS5oZWlnaHQoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0
aCgpICogMiksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgo
KSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS5oZWlnaHQoKSksIHN0YXRpY19jYXN0PHVp
bnQzMl90PihmcmFtZS53aWR0aCgpKSB9OworCisgICAgcmV0dXJuIFNoYXJlZFZpZGVvRnJhbWVJ
bmZvIHsgfTsKK30KKworYm9vbCBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6d3JpdGVWaWRlb0ZyYW1l
KGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIHVpbnQ4X3QqIGRhdGEpCit7CisgICAg
QVNTRVJUKG1fYnVmZmVyVHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxh
bmFyRnVsbFJhbmdlIHx8IG1fYnVmZmVyVHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBD
YkNyMTBCaVBsYW5hckZ1bGxSYW5nZSk7CisgICAgcmV0dXJuIHdlYnJ0Yzo6Y29weVZpZGVvRnJh
bWUoZnJhbWUsIGRhdGEpOworfQorI2VuZGlmCisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCmluZGV4IGI1MDM5ODE3NTMw
NDA1YWIwMGFiMGJjNzI4OTc1NzRlM2Q4YzM1ZTguLmM1YjJkZGY5ZTZjYzQwOGEwYzhmNjIwMDI5
YTFhYjFjY2Y3YzEzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIGlu
bGluZSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiB0cmFuc2ZlckJHUkFQaXhlbEJ1ZmZlclRv
SU9TdXJmYWNlKENWUGkKICNlbmRpZgogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9T
YW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3N0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0
ZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBTaG91bGRDaGVja0ZvcklPU3VyZmFjZSBzaG91bGRDaGVj
a0ZvcklPU3VyZmFjZSkKIHsKICAgICBBU1NFUlQoc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlw
ZSA9PSBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKTsKIApAQCAtOTcsNyArOTcs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxl
OjpjcmVhdGUoTWVkaWFTYW1wbGUmIHNhbXBsZQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPElPU3Vy
ZmFjZT4gaW9TdXJmYWNlOwogICAgIGF1dG8gc3VyZmFjZSA9IENWUGl4ZWxCdWZmZXJHZXRJT1N1
cmZhY2UoaW1hZ2VCdWZmZXIuZ2V0KCkpOwotICAgIGlmICghc3VyZmFjZSkgeworICAgIGlmICgh
c3VyZmFjZSAmJiBzaG91bGRDaGVja0ZvcklPU3VyZmFjZSA9PSBTaG91bGRDaGVja0ZvcklPU3Vy
ZmFjZTo6WWVzKSB7CiAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgY2FudmFzIGRhdGEgdGhh
dCBpcyBSR0JBLCBub3QgSU9TdXJmYWNlIGJhY2tlZC4KICAgICAgICAgYXV0byBwaXhlbEZvcm1h
dFR5cGUgPSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKGltYWdlQnVmZmVyLmdldCgp
KTsKICAgICAgICAgaWYgKHBpeGVsRm9ybWF0VHlwZSAhPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJC
R1JBKSB7CkBAIC0xMTUsMTAgKzExNSwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9T
YW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoTWVkaWFTYW1wbGUmIHNhbXBsZQogICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRl
b1NhbXBsZShzdXJmYWNlLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0
aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiYmIGltYWdlQnVmZmVyLCBNZWRpYVRpbWUmJiBwcmVzZW50YXRpb25UaW1l
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVWaWRlb1NhbXBsZT4gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4mJiBpbWFnZUJ1ZmZlciwgTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9uVGlt
ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIFNob3VsZENoZWNrRm9ySU9T
dXJmYWNlIHNob3VsZENoZWNrRm9ySU9TdXJmYWNlKQogewogICAgIGF1dG8gc3VyZmFjZSA9IENW
UGl4ZWxCdWZmZXJHZXRJT1N1cmZhY2UoaW1hZ2VCdWZmZXIuZ2V0KCkpOwotICAgIGlmICghc3Vy
ZmFjZSkgeworICAgIGlmICghc3VyZmFjZSAmJiBzaG91bGRDaGVja0ZvcklPU3VyZmFjZSA9PSBT
aG91bGRDaGVja0ZvcklPU3VyZmFjZTo6WWVzKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhLCAiUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZTogQ1ZQaXhlbEJ1ZmZlckdldElPU3Vy
ZmFjZSByZXR1cm5lZCBudWxscHRyIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVv
U2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1Nh
bXBsZS5oCmluZGV4IDA4MWUyMzU2NWFjYzQ4NDBhODA0YzdkMDc0ZTZkZjIwNTk4MzlmMTcuLmNk
MTBkOWMwNWNiOGExZDg2ZTY0M2Q1YTNmYWFhZTVjNzRmMDg3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaApAQCAtNDYs
OSArNDYsMTIgQEAgcHVibGljOgogICAgIFJlbW90ZVZpZGVvU2FtcGxlJiBvcGVyYXRvcj0oUmVt
b3RlVmlkZW9TYW1wbGUmJikgPSBkZWZhdWx0OwogICAgIH5SZW1vdGVWaWRlb1NhbXBsZSgpID0g
ZGVmYXVsdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlVmlkZW9TYW1wbGU+IGNyZWF0ZShNZWRpYVNhbXBsZSYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IGNyZWF0ZShSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiwgTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9uVGltZSwgTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9u
ZSk7CisgICAgZW51bSBjbGFzcyBTaG91bGRDaGVja0ZvcklPU3VyZmFjZSB7IE5vLCBZZXMgfTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2Ft
cGxlPiBjcmVhdGUoTWVkaWFTYW1wbGUmLCBTaG91bGRDaGVja0ZvcklPU3VyZmFjZSA9IFNob3Vs
ZENoZWNrRm9ySU9TdXJmYWNlOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IGNyZWF0ZShSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclJlZj4mJiwgTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9uVGltZSwgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgU2hvdWxkQ2hl
Y2tGb3JJT1N1cmZhY2UgPSBTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6WWVzKTsKKwogICAgIFdF
QkNPUkVfRVhQT1JUIElPU3VyZmFjZVJlZiBzdXJmYWNlKCkgY29uc3Q7CisgICAgQ1ZQaXhlbEJ1
ZmZlclJlZiBpbWFnZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7
IH0KIAogICAgIHZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkuaAppbmRleCBlZWM4ZDY2ZmFhYmFmYjc5OWIwZmRlZGM0NTljNGRiNWE3
ZjIyZTNiLi5jNzcyY2I3NzYwZjJkNTgyOWFmY2QyYjg1ZjU5MTNhMzBjMDA3NDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQ
cm94eS5oCkBAIC0zMSwxMSArMzEsMTQgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgIlNoYXJlZFZp
ZGVvRnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNs
YXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOworY2xhc3MgU2VtYXBob3JlOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw2ICs1Myw3IEBAIHVzaW5nIExvY2FsRW5jb2RlciA9
IHZvaWQqOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M7CitjbGFzcyBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOwogCiBjbGFzcyBMaWJXZWJSVEND
b2RlY3NQcm94eSA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZl
clJlZkNvdW50ZWQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtODEsMTYgKzg1
LDIxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplRW5jb2RlcihSVENFbmNvZGVySWRl
bnRpZmllciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRC
aXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJf
dCBtYXhGcmFtZXJhdGUpOwogICAgIHZvaWQgZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9v
bCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKICAgICB2b2lkIHNldEVuY29kZVJhdGVzKFJUQ0Vu
Y29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpOwor
ICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZShSVENFbmNvZGVySWRlbnRpZmll
ciwgSVBDOjpTZW1hcGhvcmUmJik7CisgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5
KFJUQ0VuY29kZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwog
ICAgIHZvaWQgc2V0UlRDTG9nZ2luZ0xldmVsKFdURkxvZ0xldmVsKTsKIAotICAgIENGRGljdGlv
bmFyeVJlZiBpb1N1cmZhY2VQaXhlbEJ1ZmZlckNyZWF0aW9uT3B0aW9ucyhJT1N1cmZhY2VSZWYp
OwotCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOwogCisgICAgc3RydWN0IEVuY29kZXIgeworICAgICAgICB3ZWJydGM6OkxvY2FsRW5j
b2RlciB3ZWJydGNFbmNvZGVyIHsgbnVsbHB0ciB9OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2hhcmVkVmlkZW9GcmFtZVJlYWRlcj4gZnJhbWVSZWFkZXI7CisgICAgfTsKKyAgICBFbmNvZGVy
KiBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKFJUQ0VuY29kZXJJZGVudGlmaWVyKTsKKwogICAgIG11
dGFibGUgTG9jayBtX2xvY2s7CiAgICAgSGFzaE1hcDxSVENEZWNvZGVySWRlbnRpZmllciwgd2Vi
cnRjOjpMb2NhbERlY29kZXI+IG1fZGVjb2RlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2sp
OyAvLyBPbmx5IG1vZGlmaWVkIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZSBidXQgbWF5IGdl
dCBhY2Nlc3NlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBIYXNoTWFwPFJUQ0VuY29kZXJJ
ZGVudGlmaWVyLCB3ZWJydGM6OkxvY2FsRW5jb2Rlcj4gbV9lbmNvZGVycyBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fbG9jayk7IC8vIE9ubHkgbW9kaWZpZWQgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1
ZXVlIGJ1dCBtYXkgZ2V0IGFjY2Vzc2VkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotCisgICAgSGFz
aE1hcDxSVENFbmNvZGVySWRlbnRpZmllciwgRW5jb2Rlcj4gbV9lbmNvZGVycyBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fbG9jayk7IC8vIE9ubHkgbW9kaWZpZWQgb24gdGhlIGxpYldlYlJUQ0NvZGVj
c1F1ZXVlIGJ1dCBtYXkgZ2V0IGFjY2Vzc2VkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogICAgIFJl
ZjxXb3JrUXVldWU+IG1fcXVldWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5p
bgppbmRleCA4MTMyOTUwMGU2ZTlkNTNmZjI3NGY1M2U3MmMyZjYyYTAzYjJlZTA5Li42YmIyMDg2
MzhkYzIyYTg5ZWZiODljOWFmOTA2YTAzZWE2OWU3NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHku
bWVzc2FnZXMuaW4KQEAgLTM2LDYgKzM2LDggQEAgbWVzc2FnZXMgLT4gTGliV2ViUlRDQ29kZWNz
UHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgSW5pdGlhbGl6ZUVuY29kZXIoV2ViS2l0OjpSVENF
bmNvZGVySWRlbnRpZmllciBpZCwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5z
aWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRy
YXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpCiAgICAgRW5jb2RlRnJhbWUoV2ViS2l0OjpSVENF
bmNvZGVySWRlbnRpZmllciBpZCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCB1
aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKICAgICBTZXRF
bmNvZGVSYXRlcyhXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCB1aW50MzJfdCBiaXRS
YXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpCisgICAgU2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9y
ZShXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCBJUEM6OlNlbWFwaG9yZSBzZW1hcGhv
cmUpCisgICAgU2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShXZWJLaXQ6OlJUQ0VuY29kZXJJZGVu
dGlmaWVyIGlkLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUp
CiAgICAgU2V0UlRDTG9nZ2luZ0xldmVsKFdURkxvZ0xldmVsIGxldmVsKQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94
eS5tbQppbmRleCAzMGZhMzBjYjNkYzljOWI0MDFmMGM0ZWNmY2UyMTA4MWVjNDZlNWMxLi5iYWJm
YzI5Y2E3MmJmYmVkZjhkNTQ4NDVhMjM3NWZmZTRjMGFhOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KQEAg
LTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkdQVVByb2Nlc3MuaCIKICNpbXBvcnQgIkxpYldlYlJU
Q0NvZGVjc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2Vz
LmgiCisjaW1wb3J0ICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ1ZVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTGliV2ViUlRDUHJvdmlkZXIuaD4KQEAgLTY5LDggKzcwLDggQEAgdm9pZCBMaWJXZWJS
VENDb2RlY3NQcm94eTo6Y2xvc2UoKQogICAgICAgICBmb3IgKGF1dG8gZGVjb2RlciA6IGRlY29k
ZXJzLnZhbHVlcygpKQogICAgICAgICAgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxEZWNvZGVyKGRl
Y29kZXIpOwogICAgICAgICBhdXRvIGVuY29kZXJzID0gV1RGTW92ZShtX2VuY29kZXJzKTsKLSAg
ICAgICAgZm9yIChhdXRvIGVuY29kZXIgOiBlbmNvZGVycy52YWx1ZXMoKSkKLSAgICAgICAgICAg
IHdlYnJ0Yzo6cmVsZWFzZUxvY2FsRW5jb2RlcihlbmNvZGVyKTsKKyAgICAgICAgZm9yIChhdXRv
JiBlbmNvZGVyIDogZW5jb2RlcnMudmFsdWVzKCkpCisgICAgICAgICAgICB3ZWJydGM6OnJlbGVh
c2VMb2NhbEVuY29kZXIoZW5jb2Rlci53ZWJydGNFbmNvZGVyKTsKICAgICB9KTsKIH0KIApAQCAt
MTU5LDcgKzE2MCw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUVuY29kZXIo
UlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QKICAgICAgICAgY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjpDb21wbGV0ZWRFbmNvZGluZyB7IGlk
ZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSB7IGJ1ZmZlciwgc2l6ZSB9LCBpbmZvIH0sIDAp
OwogICAgIH0pLmdldCgpKTsKICAgICB3ZWJydGM6OnNldExvY2FsRW5jb2Rlckxvd0xhdGVuY3ko
ZW5jb2RlciwgdXNlTG93TGF0ZW5jeSk7Ci0gICAgbV9lbmNvZGVycy5hZGQoaWRlbnRpZmllciwg
ZW5jb2Rlcik7CisgICAgbV9lbmNvZGVycy5hZGQoaWRlbnRpZmllciwgRW5jb2RlciB7IGVuY29k
ZXIsIG51bGxwdHIgfSk7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnJlbGVhc2VF
bmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC0xNjcsMjEgKzE2OCwz
MCBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpyZWxlYXNlRW5jb2RlcihSVENFbmNvZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFp
bnMoaWRlbnRpZmllcikpOwotICAgIGlmIChhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLnRha2Uo
aWRlbnRpZmllcikpCi0gICAgICAgIHdlYnJ0Yzo6cmVsZWFzZUxvY2FsRW5jb2RlcihlbmNvZGVy
KTsKKyAgICBhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLnRha2UoaWRlbnRpZmllcik7CisgICAg
aWYgKGVuY29kZXIud2VicnRjRW5jb2RlcikKKyAgICAgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxF
bmNvZGVyKGVuY29kZXIud2VicnRjRW5jb2Rlcik7CiB9CiAKIC8vIEZvciBwZXJmb3JtYW5jZSBy
ZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vzc2VzIG1fZW5jb2RlcnMgd2l0aG91dCBsb2NraW5n
LiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJU
Q0NvZGVjc1F1ZXVlCiAvLyBhbmQgbV9lbmNvZGVycyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlz
IHF1ZXVlLgotdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6aW5pdGlhbGl6ZUVuY29kZXIoUlRD
RW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhl
aWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25l
ZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpIFdURl9JR05PUkVTX1RIUkVBRF9T
QUZFVFlfQU5BTFlTSVMKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmluaXRpYWxpemVFbmNv
ZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQxNl90IHdpZHRoLCB1aW50
MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQgbWF4Qml0cmF0ZSwg
dW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJhbWVyYXRlKQogewotICAgIEFTU0VS
VCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBBU1NFUlQobV9lbmNvZGVycy5jb250YWlucyhpZGVu
dGlmaWVyKSk7Ci0gICAgYXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy5nZXQoaWRlbnRpZmllcik7
CisgICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmllcik7
CiAgICAgaWYgKCFlbmNvZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJydGM6OmluaXRp
YWxpemVMb2NhbEVuY29kZXIoZW5jb2Rlciwgd2lkdGgsIGhlaWdodCwgc3RhcnRCaXRyYXRlLCBt
YXhCaXRyYXRlLCBtaW5CaXRyYXRlLCBtYXhGcmFtZXJhdGUpOworICAgIHdlYnJ0Yzo6aW5pdGlh
bGl6ZUxvY2FsRW5jb2RlcihlbmNvZGVyLT53ZWJydGNFbmNvZGVyLCB3aWR0aCwgaGVpZ2h0LCBz
dGFydEJpdHJhdGUsIG1heEJpdHJhdGUsIG1pbkJpdHJhdGUsIG1heEZyYW1lcmF0ZSk7Cit9CisK
K0xpYldlYlJUQ0NvZGVjc1Byb3h5OjpFbmNvZGVyKiBMaWJXZWJSVENDb2RlY3NQcm94eTo6Zmlu
ZEVuY29kZXJXaXRob3V0TG9jayhSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKSBXVEZf
SUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit7CisgICAgQVNTRVJUKCFpc01haW5SdW5M
b29wKCkpOworICAgIEFTU0VSVChtX2VuY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAg
ICBhdXRvIGl0ZXJhdG9yID0gbV9lbmNvZGVycy5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChp
dGVyYXRvciA9PSBtX2VuY29kZXJzLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gJml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogc3RhdGljIGlubGluZSB3ZWJydGM6OlZp
ZGVvUm90YXRpb24gdG9XZWJSVENWaWRlb1JvdGF0aW9uKFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uIHJvdGF0aW9uKQpAQCAtMjAyLDM0ICsyMTIsNjYgQEAgc3RhdGljIGlubGlu
ZSB3ZWJydGM6OlZpZGVvUm90YXRpb24gdG9XZWJSVENWaWRlb1JvdGF0aW9uKFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlOjoKIAogLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgZnVuY3Rpb24g
YWNjZXNzZXMgbV9lbmNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMgc2FmZSBiZWNhdXNl
IHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUKIC8vIGFuZCBt
X2VuY29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUuCi12b2lkIExpYldlYlJU
Q0NvZGVjc1Byb3h5OjplbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHNhbXBsZSwgdWludDMyX3QgdGltZVN0YW1w
LCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlf
QU5BTFlTSVMKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmVuY29kZUZyYW1lKFJUQ0VuY29k
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgc2Ft
cGxlLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKIHsK
LSAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgQVNTRVJUKG1fZW5jb2RlcnMuY29u
dGFpbnMoaWRlbnRpZmllcikpOwotICAgIGF1dG8gZW5jb2RlciA9IG1fZW5jb2RlcnMuZ2V0KGlk
ZW50aWZpZXIpOworICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKGlk
ZW50aWZpZXIpOwogICAgIGlmICghZW5jb2RlcikKICAgICAgICAgcmV0dXJuOwogCiAjaWYgIVBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIGlmICghc2FtcGxlLnN1cmZhY2UoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVm
ZmVyKHNhbXBsZS5zdXJmYWNlKCkpOworICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBw
aXhlbEJ1ZmZlcjsKKyAgICBpZiAoc2FtcGxlLnN1cmZhY2UoKSkgeworICAgICAgICBpZiAoYXV0
byBidWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKHNhbXBsZS5zdXJmYWNlKCkp
KQorICAgICAgICAgICAgcGl4ZWxCdWZmZXIgPSBXVEZNb3ZlKCpidWZmZXIpOworICAgIH0gZWxz
ZSBpZiAoZW5jb2Rlci0+ZnJhbWVSZWFkZXIpCisgICAgICAgIHBpeGVsQnVmZmVyID0gZW5jb2Rl
ci0+ZnJhbWVSZWFkZXItPnJlYWQoKTsKKwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAg
IHJldHVybjsKLSAgICB3ZWJydGM6OmVuY29kZUxvY2FsRW5jb2RlckZyYW1lKGVuY29kZXIsIHBp
eGVsQnVmZmVyLT5nZXQoKSwgc2FtcGxlLnRpbWUoKS50b1RpbWVTY2FsZSgxMDAwMDAwKS50aW1l
VmFsdWUoKSwgdGltZVN0YW1wLCB0b1dlYlJUQ1ZpZGVvUm90YXRpb24oc2FtcGxlLnJvdGF0aW9u
KCkpLCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKKworICAgIHdlYnJ0Yzo6ZW5jb2RlTG9jYWxF
bmNvZGVyRnJhbWUoZW5jb2Rlci0+d2VicnRjRW5jb2RlciwgcGl4ZWxCdWZmZXIuZ2V0KCksIHNh
bXBsZS50aW1lKCkudG9UaW1lU2NhbGUoMTAwMDAwMCkudGltZVZhbHVlKCksIHRpbWVTdGFtcCwg
dG9XZWJSVENWaWRlb1JvdGF0aW9uKHNhbXBsZS5yb3RhdGlvbigpKSwgc2hvdWxkRW5jb2RlQXNL
ZXlGcmFtZSk7CiAjZW5kaWYKIH0KIAogLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMg
ZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMgc2Fm
ZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUK
IC8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUuCi12b2lk
IExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRFbmNvZGVSYXRlcyhSVENFbmNvZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpIFdURl9J
R05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6
OnNldEVuY29kZVJhdGVzKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90
IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblJ1bkxv
b3AoKSk7Ci0gICAgYXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy5nZXQoaWRlbnRpZmllcik7Cisg
ICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmllcik7CiAg
ICAgaWYgKCFlbmNvZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJydGM6OnNldExvY2Fs
RW5jb2RlclJhdGVzKGVuY29kZXIsIGJpdFJhdGUsIGZyYW1lUmF0ZSk7CisgICAgd2VicnRjOjpz
ZXRMb2NhbEVuY29kZXJSYXRlcyhlbmNvZGVyLT53ZWJydGNFbmNvZGVyLCBiaXRSYXRlLCBmcmFt
ZVJhdGUpOworfQorCisvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBmdW5jdGlvbiBh
Y2Nlc3NlcyBtX2VuY29kZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZlIGJlY2F1c2Ug
dGhpcyBmdW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQorLy8gYW5kIG1f
ZW5jb2RlcnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KK3ZvaWQgTGliV2ViUlRD
Q29kZWNzUHJveHk6OnNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUoUlRDRW5jb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisgICAgYXV0
byogZW5jb2RlciA9IGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmllcik7CisgICAgaWYg
KCFlbmNvZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWVuY29kZXItPmZyYW1lUmVh
ZGVyKQorICAgICAgICBlbmNvZGVyLT5mcmFtZVJlYWRlciA9IG1ha2VVbmlxdWU8U2hhcmVkVmlk
ZW9GcmFtZVJlYWRlcj4oKTsKKyAgICBlbmNvZGVyLT5mcmFtZVJlYWRlci0+c2V0U2VtYXBob3Jl
KFdURk1vdmUoc2VtYXBob3JlKSk7Cit9CisKKy8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0
aGlzIGZ1bmN0aW9uIGFjY2Vzc2VzIG1fZW5jb2RlcnMgd2l0aG91dCBsb2NraW5nLiBUaGlzIGlz
IHNhZmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1
ZXVlCisvLyBhbmQgbV9lbmNvZGVycyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlzIHF1ZXVlLgor
dm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6c2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShSVENF
bmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYgaXBjSGFuZGxlKQoreworICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRM
b2NrKGlkZW50aWZpZXIpOworICAgIGlmICghZW5jb2RlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBtZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBpZiAoIW1lbW9yeSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFlbmNvZGVyLT5mcmFtZVJlYWRlcikKKyAgICAgICAgZW5j
b2Rlci0+ZnJhbWVSZWFkZXIgPSBtYWtlVW5pcXVlPFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI+KCk7
CisgICAgZW5jb2Rlci0+ZnJhbWVSZWFkZXItPnNldFNoYXJlZE1lbW9yeShtZW1vcnkucmVsZWFz
ZU5vbk51bGwoKSk7CiB9CiAKIGJvb2wgTGliV2ViUlRDQ29kZWNzUHJveHk6OmFsbG93c0V4aXRV
bmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA3YmZl
ZTA4M2ZjZjkyMjdjN2Y1Zjg0OTZkOTdlZThhYjkwZTVhYTFmLi5mNTdkODUzZmZiZjRjMjgzNzRk
ZjhiMWY3NjczNzc2ZWQzZjhlZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNDQsNiAr
MjQ0LDggQEAgU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5tbQogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRy
YW5zYWN0aW9uLmNwcAogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdVSVN0
YXRlLmNwcAogCitXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAKKwog
VUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbQogVUlQcm9jZXNzL0FwcGxpY2F0
aW9uU3RhdGVUcmFja2VyLm1tCiBVSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2Fn
ZVNhbXBsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA3NzkxMThiZDJmM2UwMzJjYTg3YzA3NGQyZTZiMGRiZTU0OWI2N2ViLi43
OTE3ODFjOTYwMWQzMzgyYzIxZmM1NjU1OTAwNGU1ODM3OTYzMjMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQxNTAsNiArNDE1MCw4
IEBACiAJCTQxRDEyOUQ5MUYzRDEwMTQwMEQxNUU0NyAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUQ1QzZEODIzOEVCMjBEMDBCOUIzQ0IgLyogU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFENUM2RDkyMzhFQjIwRTAwQjlCM0NCIC8qIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFEQzA0RjgyN0E4MTZCQjAwOENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2hhcmVkVmlkZW9GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MURDMDRGOTI3QTgxNkJCMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTaGFyZWRWaWRlb0ZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFEQzQ1OTQxRTNENkUxRTAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrUlRDUHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEQzQ1OTUxRTNENkUxRTAwQjExRjUxIC8qIE5l
dHdvcmtSVENQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MURDNDU5ODFFM0Q2RUQ2MDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyMDAsNyArNzIwMiw2IEBACiAJCQkJN0FG
QkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovLAogCQkJCTdB
RkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi8sCiAJCQkJQkND
NDNBQjgxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAgKi8sCi0J
CQkJQkNDNDNBQjkxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5oICov
LAogCQkJCTQ5RUNBNDFCMjNGQ0E0ODYwMDIzMzU4RCAvKiBQb2xpY3lEZWNpc2lvbi5oICovLAog
CQkJCUUxOEM5MkYzMTJEQjlFNzEwMENGMkFFQiAvKiBQcmludEluZm8uY3BwICovLAogCQkJCUUx
Q0MxQjhFMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm8uaCAqLywKQEAgLTcyMjAsNiArNzIy
MSw3IEBACiAJCQkJMkQ2NUQxOTYyNzRCOEU4NDAwOUM0MTAxIC8qIFNjcm9sbGluZ0FjY2VsZXJh
dGlvbkN1cnZlLmNwcCAqLywKIAkJCQkyRDY1RDE5NTI3NEI4RTg0MDA5QzQxMDEgLyogU2Nyb2xs
aW5nQWNjZWxlcmF0aW9uQ3VydmUuaCAqLywKIAkJCQk1QzgwQjNERDIzNjkwRjEwMDA4NkU2REUg
LyogU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5jcHAgKi8sCisJCQkJQkNDNDNBQjkx
MjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5oICovLAogCQkJCTVDODBC
M0RCMjM2OTBEOEQwMDg2RTZERSAvKiBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmgg
Ki8sCiAJCQkJMUFGREU2NTcxOTU0QTQyQjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0ZS5jcHAgKi8s
CiAJCQkJMUFGREU2NTgxOTU0QTQyQjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0ZS5oICovLApAQCAt
OTIwMCw2ICs5MjAyLDggQEAKIAkJCQk0MUZDRDZCQzIzQ0UwMzE4MDBDNjI1NjcgLyogU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVySWRlbnRpZmllci5oICovLAogCQkJCTQxMDI0RkMxMjNDRjEwNDUw
MEZERjk4RSAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcCAqLywKIAkJCQk0
MTAyNEZDMDIzQ0YxMDQ1MDBGREY5OEUgLyogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
ci5oICovLAorCQkJCTQxREMwNEY5MjdBODE2QkIwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1l
LmNwcCAqLywKKwkJCQk0MURDMDRGODI3QTgxNkJCMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFt
ZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSB3ZWJydGM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xp
YldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggOWQ1ZmQwZDE1NjJjYjQ0Nzc2MDc5ODU5ODVmMWQ2Zjky
OTVjZTJkZC4uYWUyMmQ4OTM3MzRmYzUxZjk2OGY3NDdmN2VkZGIxNzFiOThhMGRhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3MuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3M6OmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uT25NYWluVGhyZWFkV2l0aExvY2soKQogICAgIG1fY29ubmVj
dGlvbi0+YWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7CiAKICAgICBpZiAobV9sb2dnaW5nTGV2ZWwp
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJv
eHk6OlNldFJUQ0xvZ2dpbmdMZXZlbCgqbV9sb2dnaW5nTGV2ZWwpLCAwKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6U2V0UlRDTG9n
Z2luZ0xldmVsIHsgKm1fbG9nZ2luZ0xldmVsIH0sIDApOwogfQogCiAvLyBNYXkgYmUgY2FsbGVk
IG9uIGFueSB0aHJlYWQuCkBAIC00MTgsNiArNDE4LDIyIEBAIGludDMyX3QgTGliV2ViUlRDQ29k
ZWNzOjppbml0aWFsaXplRW5jb2RlcihFbmNvZGVyJiBlbmNvZGVyLCB1aW50MTZfdCB3aWR0aCwg
dWluCiAgICAgcmV0dXJuIDA7CiB9CiAKK2Jvb2wgTGliV2ViUlRDQ29kZWNzOjpjb3B5U2hhcmVk
VmlkZW9GcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVy
KQoreworICAgIHJldHVybiBlbmNvZGVyLnNoYXJlZFZpZGVvRnJhbWVXcml0ZXIud3JpdGUocGl4
ZWxCdWZmZXIsCisgICAgICAgIFsmZW5jb2Rlcl0oYXV0byYgc2VtYXBob3JlKSB7IGVuY29kZXIu
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlNldFNoYXJl
ZFZpZGVvRnJhbWVTZW1hcGhvcmUgeyBlbmNvZGVyLmlkZW50aWZpZXIsIHNlbWFwaG9yZSB9LCAw
KTsgfSwKKyAgICAgICAgWyZlbmNvZGVyXShhdXRvJiBoYW5kbGUpIHsgZW5jb2Rlci5jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6U2V0U2hhcmVkVmlkZW9G
cmFtZU1lbW9yeSB7IGVuY29kZXIuaWRlbnRpZmllciwgaGFuZGxlIH0sIDApOyB9CisgICAgKTsK
K30KKworYm9vbCBMaWJXZWJSVENDb2RlY3M6OmNvcHlTaGFyZWRWaWRlb0ZyYW1lKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUpCit7CisgICAgcmV0dXJu
IGVuY29kZXIuc2hhcmVkVmlkZW9GcmFtZVdyaXRlci53cml0ZShmcmFtZSwKKyAgICAgICAgWyZl
bmNvZGVyXShhdXRvJiBzZW1hcGhvcmUpIHsgZW5jb2Rlci5jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6U2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZSB7
IGVuY29kZXIuaWRlbnRpZmllciwgc2VtYXBob3JlIH0sIDApOyB9LAorICAgICAgICBbJmVuY29k
ZXJdKGF1dG8mIGhhbmRsZSkgeyBlbmNvZGVyLmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Okxp
YldlYlJUQ0NvZGVjc1Byb3h5OjpTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5IHsgZW5jb2Rlci5p
ZGVudGlmaWVyLCBoYW5kbGUgfSwgMCk7IH0KKyAgICApOworfQorCiBpbnQzMl90IExpYldlYlJU
Q0NvZGVjczo6ZW5jb2RlRnJhbWUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgd2VicnRjOjpWaWRl
b0ZyYW1lJiBmcmFtZSwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQogewogICAgIExvY2tl
ciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25Mb2NrIH07CkBAIC00MjUsMzMgKzQ0MSwxNyBAQCBpbnQz
Ml90IExpYldlYlJUQ0NvZGVjczo6ZW5jb2RlRnJhbWUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
d2VicnRjOjpWaWRlb0ZyYW1lJgogICAgIGlmICghZW5jb2Rlci5jb25uZWN0aW9uKQogICAgICAg
ICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwogCi0gICAgYXV0byBwaXhlbEJ1ZmZl
ciA9IGFkb3B0Q0Yod2VicnRjOjpjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSwgW10o
c2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUgYnVmZmVyVHlw
ZSkgLT4gQ1ZQaXhlbEJ1ZmZlclJlZiB7Ci0gICAgICAgIE9TVHlwZSBwb29sQnVmZmVyVHlwZTsK
LSAgICAgICAgc3dpdGNoIChidWZmZXJUeXBlKSB7Ci0gICAgICAgIGNhc2Ugd2VicnRjOjpCdWZm
ZXJUeXBlOjpJNDIwOgotICAgICAgICAgICAgcG9vbEJ1ZmZlclR5cGUgPSBrQ1ZQaXhlbEZvcm1h
dFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVsbFJhbmdlOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2Ugd2VicnRjOjpCdWZmZXJUeXBlOjpJMDEwOgotICAgICAgICAgICAgcG9vbEJ1
ZmZlclR5cGUgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5n
ZTsKLSAgICAgICAgfQotICAgICAgICBhdXRvIHBpeGVsQnVmZmVyUG9vbCA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmxpYldlYlJUQ0NvZGVjcygpLnBpeGVsQnVmZmVyUG9vbCh3aWR0aCwgaGVp
Z2h0LCBwb29sQnVmZmVyVHlwZSk7Ci0gICAgICAgIGlmICghcGl4ZWxCdWZmZXJQb29sKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmNyZWF0
ZUNWUGl4ZWxCdWZmZXJGcm9tUG9vbChwaXhlbEJ1ZmZlclBvb2wpLnZhbHVlX29yKG51bGxwdHIp
LmxlYWtSZWYoKTsKLSAgICB9KSk7Ci0KLSAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICBy
ZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwotCi0gICAgYXV0byBzYW1wbGUgPSBSZW1v
dGVWaWRlb1NhbXBsZTo6Y3JlYXRlKHBpeGVsQnVmZmVyLmdldCgpLCBNZWRpYVRpbWUoZnJhbWUu
dGltZXN0YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAwKSwgdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRp
b24oZnJhbWUucm90YXRpb24oKSkpOwotICAgIGlmICghc2FtcGxlKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBPcHRpbWl6ZSB0aGlzIGNvZGUgcGF0aCwgY3VycmVudGx5IHdlIGhhdmUgbm9uIEJHUkEg
Zm9yIG11dGVkIGZyYW1lcyBhdCBsZWFzdC4KLSAgICAgICAgc2FtcGxlID0gUmVtb3RlVmlkZW9T
YW1wbGU6OmNyZWF0ZShjb252ZXJ0VG9CR1JBKHBpeGVsQnVmZmVyLmdldCgpKSwgTWVkaWFUaW1l
KGZyYW1lLnRpbWVzdGFtcF91cygpICogMTAwMCwgMTAwMDAwMCksIHRvTWVkaWFTYW1wbGVWaWRl
b1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkpKTsKLSAgICAgICAgaWYgKCFzYW1wbGUpIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0byBjb252ZXJ0IHJl
bW90ZSB2aWRlbyBzYW1wbGUiKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0Q0Yod2VicnRjOjpw
aXhlbEJ1ZmZlckZyb21GcmFtZShmcmFtZSkpOworICAgIGlmICghYnVmZmVyKSB7CisgICAgICAg
IC8vIGJ1ZmZlciBpcyBub3QgbmF0aXZlLCB3ZSBuZWVkIHRvIGNvcHkgdG8gc2hhcmVkIHZpZGVv
IGZyYW1lLgorICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRlb0ZyYW1lKGVuY29kZXIsIGZyYW1l
KSkKKyAgICAgICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CisgICAgfQor
ICAgIGF1dG8gc2FtcGxlID0gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShidWZmZXIuZ2V0KCks
IE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBfdXMoKSAqIDEwMDAsIDEwMDAwMDApLCB0b01lZGlh
U2FtcGxlVmlkZW9Sb3RhdGlvbihmcmFtZS5yb3RhdGlvbigpKSwgUmVtb3RlVmlkZW9TYW1wbGU6
OlNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpObyk7CisgICAgaWYgKCFzYW1wbGUtPnN1cmZhY2Uo
KSkgeworICAgICAgICAvLyBidWZmZXIgaXMgbm90IElPU3VyZmFjZSwgd2UgbmVlZCB0byBjb3B5
IHRvIHNoYXJlZCB2aWRlbyBmcmFtZS4KKyAgICAgICAgaWYgKCFjb3B5U2hhcmVkVmlkZW9GcmFt
ZShlbmNvZGVyLCBidWZmZXIuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURF
T19DT0RFQ19FUlJPUjsKLSAgICAgICAgfQogICAgIH0KIAogICAgIGVuY29kZXIuY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZUZyYW1lIHsgZW5j
b2Rlci5pZGVudGlmaWVyLCAqc2FtcGxlLCBmcmFtZS50aW1lc3RhbXAoKSwgc2hvdWxkRW5jb2Rl
QXNLZXlGcmFtZSB9LCAwKTsKQEAgLTUzNSw2ICs1MzUsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVj
czo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpCiAg
ICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1By
b3h5OjpDcmVhdGVFbmNvZGVyIHsgZW5jb2Rlci0+aWRlbnRpZmllciwgZm9ybWF0TmFtZUZyb21X
ZWJSVENDb2RlY1R5cGUoZW5jb2Rlci0+Y29kZWNUeXBlKSwgZW5jb2Rlci0+cGFyYW1ldGVycywg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENIMjY0TG93TGF0
ZW5jeUVuY29kZXJFbmFibGVkKCkgfSwgMCk7CiAgICAgICAgICAgICBpZiAoZW5jb2Rlci0+aW5p
dGlhbGl6YXRpb25EYXRhKQogICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkluaXRpYWxpemVFbmNvZGVyIHsgZW5jb2Rlci0+
aWRlbnRpZmllciwgZW5jb2Rlci0+aW5pdGlhbGl6YXRpb25EYXRhLT53aWR0aCwgZW5jb2Rlci0+
aW5pdGlhbGl6YXRpb25EYXRhLT5oZWlnaHQsIGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YS0+
c3RhcnRCaXRSYXRlLCBlbmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEtPm1heEJpdFJhdGUsIGVu
Y29kZXItPmluaXRpYWxpemF0aW9uRGF0YS0+bWluQml0UmF0ZSwgZW5jb2Rlci0+aW5pdGlhbGl6
YXRpb25EYXRhLT5tYXhGcmFtZVJhdGUgfSwgMCk7CisgICAgICAgICAgICBlbmNvZGVyLT5zaGFy
ZWRWaWRlb0ZyYW1lV3JpdGVyID0geyB9OwogICAgICAgICAgICAgZW5jb2Rlci0+Y29ubmVjdGlv
biA9IG1fY29ubmVjdGlvbi5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBmb3IgKGF1dG8mIGRl
Y29kZXIgOiBtX2RlY29kZXJzLnZhbHVlcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IDQwODMzZTAzMGVm
NWIwZWU4OTRkN2Y0NGJlOThjZDY3OTgxZjRhMmMuLjU2OTFlMzgzNzc0MTY3ODVhN2Q0MTI0YWQx
NDQ5NDBlNzc4YjJiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0zMCw5ICszMCwxMSBAQAogI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlJUQ0VuY29kZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2hhcmVkVmlkZW9G
cmFtZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oPgogI2lu
Y2x1ZGUgPG1hcD4KICNpbmNsdWRlIDx3ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2NvZGVjX3R5cGUu
aD4KQEAgLTEwMSw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQqIGVuY29kZWRJbWFn
ZUNhbGxiYWNrIFdURl9HVUFSREVEX0JZX0xPQ0soZW5jb2RlZEltYWdlQ2FsbGJhY2tMb2NrKSB7
IG51bGxwdHIgfTsKICAgICAgICAgTG9jayBlbmNvZGVkSW1hZ2VDYWxsYmFja0xvY2s7CiAgICAg
ICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb247CisgICAgICAgIFNoYXJlZFZp
ZGVvRnJhbWVXcml0ZXIgc2hhcmVkVmlkZW9GcmFtZVdyaXRlcjsKICAgICB9OwogCiAgICAgRW5j
b2RlciogY3JlYXRlRW5jb2RlcihUeXBlLCBjb25zdCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3Rk
OjpzdHJpbmc+Jik7CkBAIC0xMzUsNiArMTM4LDkgQEAgcHJpdmF0ZToKICAgICAvLyBHUFVQcm9j
ZXNzQ29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENs
b3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJik7CiAKKyAgICBib29sIGNvcHlTaGFyZWRWaWRlb0Zy
YW1lKEVuY29kZXImLCBDVlBpeGVsQnVmZmVyUmVmKTsKKyAgICBib29sIGNvcHlTaGFyZWRWaWRl
b0ZyYW1lKEVuY29kZXImLCBjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmKTsKKwogcHJpdmF0ZToK
ICAgICBIYXNoTWFwPFJUQ0RlY29kZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4+IG1fZGVjb2RlcnM7CiAgICAgSGFzaFNldDxSVENEZWNvZGVySWRlbnRpZmllcj4gbV9kZWNv
ZGluZ0Vycm9yczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDYzNzA3ZWEwMmE5MDNhYzYx
MjA1MDQwYTFmMTI3NWQ4MDI2Njk3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwCkBAIC0wLDAgKzEsMTM5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkVmlkZW9GcmFtZUluZm8uaD4KKyNpbmNsdWRlIDx3
dGYvU2NvcGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworYm9vbCBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3YWl0KGNvbnN0IEZ1bmN0aW9uPHZv
aWQoSVBDOjpTZW1hcGhvcmUmKT4mIG5ld1NlbWFwaG9yZUNhbGxiYWNrKQoreworICAgIGlmICgh
bV9zZW1hcGhvcmUpIHsKKyAgICAgICAgbV9zZW1hcGhvcmUgPSBtYWtlVW5pcXVlPElQQzo6U2Vt
YXBob3JlPigpOworICAgICAgICBuZXdTZW1hcGhvcmVDYWxsYmFjaygqbV9zZW1hcGhvcmUpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIG1fc2VtYXBob3JlLT53YWl0
KCk7Cit9CisKK2Jvb2wgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcjo6YWxsb2NhdGVTdG9yYWdlKHNp
emVfdCBzaXplLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlJik+JiBuZXdNZW1vcnlDYWxsYmFjaykKK3sKKyAgICBtX3N0b3JhZ2UgPSBTaGFyZWRNZW1v
cnk6OmFsbG9jYXRlKHNpemUpOworICAgIGlmICghbV9zdG9yYWdlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgbV9zdG9yYWdl
LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5
KTsKKworICAgIGF1dG8gZGF0YVNpemUgPSBoYW5kbGUuc2l6ZSgpOworICAgIG5ld01lbW9yeUNh
bGxiYWNrKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBkYXRhU2l6
ZSB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVy
OjpwcmVwYXJlV3JpdGluZyhjb25zdCBTaGFyZWRWaWRlb0ZyYW1lSW5mbyYgaW5mbywgY29uc3Qg
RnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIGNv
bnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mIG5ld01l
bW9yeUNhbGxiYWNrKQoreworICAgIGlmICghaW5mby5pc1JlYWRXcml0ZVN1cHBvcnRlZCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXdhaXQobmV3U2VtYXBob3JlQ2FsbGJh
Y2spKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3Qgc2l6ZSA9IGluZm8uc3Rv
cmFnZVNpemUoKTsKKyAgICBpZiAoIW1fc3RvcmFnZSB8fCBtX3N0b3JhZ2UtPnNpemUoKSA8IHNp
emUpIHsKKyAgICAgICAgaWYgKCFhbGxvY2F0ZVN0b3JhZ2Uoc2l6ZSwgbmV3TWVtb3J5Q2FsbGJh
Y2spKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZShDVlBpeGVsQnVmZmVyUmVm
IHBpeGVsQnVmZmVyLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiBuZXdT
ZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCit7CisgICAgYXV0byBpbmZvID0gU2hh
cmVkVmlkZW9GcmFtZUluZm86OmZyb21DVlBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyKTsKKyAgICBp
ZiAoIXByZXBhcmVXcml0aW5nKGluZm8sIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBuZXdNZW1vcnlD
YWxsYmFjaykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBpbmZvLndyaXRl
UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIsIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX3N0b3JhZ2Ut
PmRhdGEoKSkpOworfQorCisjaWYgVVNFKExJQldFQlJUQykKK2Jvb2wgU2hhcmVkVmlkZW9GcmFt
ZVdyaXRlcjo6d3JpdGUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3QgRnVu
Y3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIGNvbnN0
IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mIG5ld01lbW9y
eUNhbGxiYWNrKQoreworICAgIGF1dG8gaW5mbyA9IFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpmcm9t
VmlkZW9GcmFtZShmcmFtZSk7CisgICAgaWYgKCFwcmVwYXJlV3JpdGluZyhpbmZvLCBuZXdTZW1h
cGhvcmVDYWxsYmFjaywgbmV3TWVtb3J5Q2FsbGJhY2spKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gaW5mby53cml0ZVZpZGVvRnJhbWUoZnJhbWUsIHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihtX3N0b3JhZ2UtPmRhdGEoKSkpOworfQorI2VuZGlmCisKK1JldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOjpyZWFkKCkKK3sKKyAgICBpZiAo
IW1fc3RvcmFnZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gc2NvcGUgPSBtYWtl
U2NvcGVFeGl0KFsmXSB7CisgICAgICAgIG1fc2VtYXBob3JlLnNpZ25hbCgpOworICAgIH0pOwor
CisgICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX3N0b3JhZ2Ut
PmRhdGEoKSk7CisgICAgYXV0byBpbmZvID0gU2hhcmVkVmlkZW9GcmFtZUluZm86OmRlY29kZSh7
IGRhdGEsIG1fc3RvcmFnZS0+c2l6ZSgpIH0pOworICAgIGlmICghaW5mbykKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIGlmICghaW5mby0+aXNSZWFkV3JpdGVTdXBwb3J0ZWQoKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChtX3N0b3JhZ2UtPnNpemUoKSA8IGluZm8tPnN0b3Jh
Z2VTaXplKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gaW5mby0+Y3JlYXRl
UGl4ZWxCdWZmZXJGcm9tTWVtb3J5KGRhdGEgKyBTaGFyZWRWaWRlb0ZyYW1lSW5mb0VuY29kaW5n
TGVuZ3RoLCBwaXhlbEJ1ZmZlclBvb2woKmluZm8pKTsKK30KKworQ1ZQaXhlbEJ1ZmZlclBvb2xS
ZWYgU2hhcmVkVmlkZW9GcmFtZVJlYWRlcjo6cGl4ZWxCdWZmZXJQb29sKGNvbnN0IFNoYXJlZFZp
ZGVvRnJhbWVJbmZvJiBpbmZvKQoreworICAgIGlmIChtX3VzZUlPU3VyZmFjZUJ1ZmZlclBvb2wg
PT0gVXNlSU9TdXJmYWNlQnVmZmVyUG9vbDo6Tm8pCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgaWYgKCFtX2J1ZmZlclBvb2wgfHwgbV9idWZmZXJQb29sVHlwZSAhPSBpbmZvLmJ1ZmZl
clR5cGUoKSB8fCBtX2J1ZmZlclBvb2xXaWR0aCAhPSBpbmZvLndpZHRoKCkgfHwgbV9idWZmZXJQ
b29sSGVpZ2h0ICE9IGluZm8uaGVpZ2h0KCkpIHsKKyAgICAgICAgbV9idWZmZXJQb29sVHlwZSA9
IGluZm8uYnVmZmVyVHlwZSgpOworICAgICAgICBtX2J1ZmZlclBvb2xXaWR0aCA9IGluZm8ud2lk
dGgoKTsKKyAgICAgICAgbV9idWZmZXJQb29sSGVpZ2h0ID0gaW5mby5oZWlnaHQoKTsKKyAgICAg
ICAgbV9idWZmZXJQb29sID0gaW5mby5jcmVhdGVDb21wYXRpYmxlQnVmZmVyUG9vbCgpOworICAg
IH0KKworICAgIHJldHVybiBtX2J1ZmZlclBvb2wuZ2V0KCk7Cit9CisKKworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDJlOTU2MmRlN2ViYmRmYThkNjc1MzFiNWQ0N2YzMWE1MDA2NTMxYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZp
ZGVvRnJhbWUuaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgorI2luY2x1
ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIqIENWUGl4ZWxCdWZm
ZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKiBDVlBpeGVsQnVmZmVy
UG9vbFJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkVmlkZW9GcmFtZUlu
Zm87Cit9CisKK25hbWVzcGFjZSB3ZWJydGMgeworY2xhc3MgVmlkZW9GcmFtZTsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZFZpZGVvRnJhbWVXcml0
ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIHdyaXRlKENWUGl4ZWxCdWZmZXJSZWYsIGNvbnN0
IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CisjaWYgVVNFKExJQldFQlJUQykKKyAg
ICBib29sIHdyaXRlKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYsIGNvbnN0IEZ1bmN0aW9uPHZv
aWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlJik+Jik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBib29sIHdhaXQo
Y29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYpOworICAgIGJvb2wgYWxsb2Nh
dGVTdG9yYWdlKHNpemVfdCwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYpPiYpOworICAgIGJvb2wgcHJlcGFyZVdyaXRpbmcoY29uc3QgV2ViQ29yZTo6
U2hhcmVkVmlkZW9GcmFtZUluZm8mLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3Jl
Jik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYp
PiYpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPElQQzo6U2VtYXBob3JlPiBtX3NlbWFwaG9yZTsK
KyAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtX3N0b3JhZ2U7Cit9OworCitjbGFzcyBTaGFyZWRW
aWRlb0ZyYW1lUmVhZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBlbnVtIGNsYXNzIFVzZUlPU3VyZmFjZUJ1ZmZlclBvb2wgeyBObywgWWVzIH07CisgICAg
ZXhwbGljaXQgU2hhcmVkVmlkZW9GcmFtZVJlYWRlcihVc2VJT1N1cmZhY2VCdWZmZXJQb29sID0g
VXNlSU9TdXJmYWNlQnVmZmVyUG9vbDo6WWVzKTsKKworICAgIHZvaWQgc2V0U2VtYXBob3JlKElQ
Qzo6U2VtYXBob3JlJiYgc2VtYXBob3JlKSB7IG1fc2VtYXBob3JlID0gV1RGTW92ZShzZW1hcGhv
cmUpOyB9CisgICAgdm9pZCBzZXRTaGFyZWRNZW1vcnkoUmVmPFNoYXJlZE1lbW9yeT4mJiBzdG9y
YWdlKSB7IG1fc3RvcmFnZSA9IFdURk1vdmUoc3RvcmFnZSk7IH0KKworICAgIFJldGFpblB0cjxD
VlBpeGVsQnVmZmVyUmVmPiByZWFkKCk7CisKK3ByaXZhdGU6CisgICAgQ1ZQaXhlbEJ1ZmZlclBv
b2xSZWYgcGl4ZWxCdWZmZXJQb29sKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFZpZGVvRnJhbWVJbmZv
Jik7CisKKyAgICBVc2VJT1N1cmZhY2VCdWZmZXJQb29sIG1fdXNlSU9TdXJmYWNlQnVmZmVyUG9v
bDsKKyAgICBJUEM6OlNlbWFwaG9yZSBtX3NlbWFwaG9yZTsKKyAgICBSZWZQdHI8U2hhcmVkTWVt
b3J5PiBtX3N0b3JhZ2U7CisKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclBvb2xSZWY+IG1f
YnVmZmVyUG9vbDsKKyAgICBPU1R5cGUgbV9idWZmZXJQb29sVHlwZSB7IDAgfTsKKyAgICB1aW50
MzJfdCBtX2J1ZmZlclBvb2xXaWR0aCB7IDAgfTsKKyAgICB1aW50MzJfdCBtX2J1ZmZlclBvb2xI
ZWlnaHQgeyAwIH07Cit9OworCitpbmxpbmUgU2hhcmVkVmlkZW9GcmFtZVJlYWRlcjo6U2hhcmVk
VmlkZW9GcmFtZVJlYWRlcihVc2VJT1N1cmZhY2VCdWZmZXJQb29sIHVzZUlPU3VyZmFjZUJ1ZmZl
clBvb2wpCisgICAgOiBtX3VzZUlPU3VyZmFjZUJ1ZmZlclBvb2wodXNlSU9TdXJmYWNlQnVmZmVy
UG9vbCkKK3sKK30KKworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450616</attachid>
            <date>2022-02-01 23:28:06 -0800</date>
            <delta_ts>2022-02-02 02:23:52 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235951-20220202082804.patch</filename>
            <type>text/plain</type>
            <size>70786</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA1N2NlZjA3M2ZlZjIxZDA5ZWUyYWU1MzNmYjBmMWY0NGI5NDA0OWM1Li41ZTdj
MWI3NGFlMzVmMWIzYzM4MTMyNDk5MTE5MWI2ZmZlYWY2NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMi0wMSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTGliV2ViUlRDQ29kZWNzIHNob3Vs
ZCBub3QgbmVlZCB0byBjcmVhdGUgSU9TdXJmYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1OTUxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
ODMyNjY1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAg
SW50cm9kdWNlIGhlbHBlciByb3V0aW5lcyB0byBjb3B5IGEgd2VicnRjIFZpZGVvRnJhbWUgaW50
byBhIG1lbW9yeSBidWZmZXIgYW5kIGdldCBhIENWUGl4ZWxCdWZmZXIgZnJvbSBhIHdlYnJ0YyBW
aWRlb0ZyYW1lLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHA6
CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHA6CisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAgICogU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oOgorICAgICAgICAqIFNvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW06CisKIDIwMjItMDEtMjcgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgY29tLmFwcGxlLldlYktpdC5X
ZWJBdXRobi54cGMgZmFpbHMgdG8gYnVpbGQgd2l0aCBzeXN0ZW0gY29udGVudCBwYXRoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggYjNjODA5ZGNhODk1YjRiMWMyMDUwNTBmMjkyODQ3ZmI0YjczYTJkMi4uOTYyNTIy
MjhiYjg5ZjRhMjdkZjUzYmU0NTNlYjQ0ZGVhZjFlN2VhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI0IEBACisyMDIyLTAyLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBMaWJXZWJSVENDb2RlY3Mgc2hvdWxkIG5vdCBuZWVkIHRvIGNyZWF0ZSBJT1N1cmZh
Y2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU5
NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4MzI2NjU0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBJbnRyb2R1Y2UgU2hhcmVkVmlkZW9GcmFtZUlu
Zm8gYXMgYSBoZWxwZXIgY2xhc3MgdG8gc2VyaWFsaXplIGEgQ1ZQaXhlbEJ1ZmZlciBpbnRvIG1l
bW9yeSBhbmQgY3JlYXRlIGEgQ1ZQaXhlbEJ1ZmZlciBmcm9tIHJlYWRpbmcgbWVtb3J5LgorCisg
ICAgICAgIENvdmVyZWQgYnkgZXhpc3Rpbmcgd2VicnRjIHRlc3RzLgorCisgICAgICAgICogU291
cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8uaDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8ubW06IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oOgorCiAyMDIyLTAxLTMwICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBHc3RT
dHJ1Y3R1cmUgdG8gSlNPTiBzZXJpYWxpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBhMzQ1Mjk5ZjAzYTU1
Yjk3ZTg5MTYwNDdhOGE2MjVjNTBhMjA5ODMuLjk5MThlZGU2ZjhlM2Y2NmEwOGI4MDQxYTQzMTZm
OTRlZWQzOWQ4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjItMDItMDEgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIExpYldlYlJUQ0NvZGVjcyBz
aG91bGQgbm90IG5lZWQgdG8gY3JlYXRlIElPU3VyZmFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTk1MQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODgzMjY2NTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAg
ICAgIEludHJvZHVjZSBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyIGFuZCBTaGFyZWRWaWRlb0ZyYW1l
UmVhZGVyIHRvIHN1cHBvcnQgc2hhcmVkIG1lbW9yeSBzZW5kaW5nIG9mIENWUGl4ZWxCdWZmZXJz
IHRoYXQgYXJlIG5vbiBJT1N1cmZhY2UgYmFja2VkLgorICAgICAgICBUbyBkbyBzbywgd2UgbWFr
ZSB1c2Ugb2YgU2hhcmVkVmlkZW9GcmFtZUluZm8gZnJvbSBXZWJDb3JlLgorICAgICAgICBXaGF0
IHdlIGRvIGlzOgorICAgICAgICAtIFdoZW4gZ2V0dGluZyBhIGZyYW1lLCBhbGxvY2F0ZSBhIHNo
YXJlZCBtZW1vcnkgdGhhdCBpcyBiaWcgZW5vdWdoIHRvIGNvcHkgaXRzIGRhdGEgYW5kIGluZm8g
aW4gaXQuIENyZWF0ZSBhIHNlbWFwaG9yZSB0byBzeW5jIHJlYWRlciBhbmQgd3JpdGVyLgorICAg
ICAgICAtIElmIHdlIGFsbG9jYXRlIHNoYXJlZCBtZW1vcnkvc2VtcGhvcmUsIHNlbmQgdGhlbSBv
dmVyIElQQyB0byB0aGUgU2hhcmVkVmlkZW9GcmFtZVJlYWRlci4KKyAgICAgICAgLSBXYWl0IGZv
ciBzZW1hcGhvcmUgdG8gdGVsbCB1cyByZWFkZXIgaXMgZmluZSBmb3Igd3JpdGluZy4KKyAgICAg
ICAgLSBXcml0ZSBTaGFyZWRWaWRlb0ZyYW1lSW5mbyBpbnRvIHRoZSBzaGFyZWQgbWVtb3J5LCB0
aGVuIGNvcHkgdGhlIHJhdyBieXRlcyBpbnRvIHRoZSBzaGFyZWQgbWVtb3J5LgorICAgICAgICAt
IFNlbmQgdGhyb3VnaCBJUEMgdGhlIHZpZGVvIGZyYW1lLCBubyBNYWNTZW5kUmlnaHQgbWVhbnMg
dG8gcmVhZCB0aGUgc2hhcmVkIG1lbW9yeS4KKyAgICAgICAgT24gcmVhZGVyIHNpZGUsIGZvciBl
dmVyeSBmcmFtZSB0aGF0IGRvZXMgbm90IGhhdmUgYW4gSU9TdXJmYWNlLCB3ZSByZWFkIHRoZSBz
aGFyZWQgbWVtb3J5LCBjcmVhdGUgYW4gSU9TdXJmYWNlIGZyb20gaXQgYW5kIG5vdGlmeSBXZWJQ
cm9jZXNzIHRoYXQgaXQgY2FuIHdyaXRlIHRoZSBuZXh0IGZyYW1lLgorCisgICAgICAgIEluIG1l
bW9yeSBidWZmZXJzIGFyZSB1c2VkIGZvciBibGFjayBmcmFtZXMgYXQgbGVhc3QuCisgICAgICAg
IHdlYnJ0Yy92aWRlby1tdXRlLmh0bWwgY292ZXJzIHRoZSBwYXRjaC4KKworICAgICAgICAqIEdQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICog
R1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICogU291
cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oOiBBZGRl
ZC4KKwogMjAyMi0wMS0zMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIgc2hvdWxkIG9ubHkgYmUgdXNl
ZCBvbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJh
dGlvbnMvbGlid2VicnRjLmlPUy5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29u
ZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKaW5kZXggZGZlOGJhODdjNmJlZDY4OWY3ZjA0
NGQzODhiN2MyMWIxOTkzNjUxOC4uY2E1NDczYTYyYWQ5OGJmNmI0ZTBjZWI2MDI4ODU2NDVkOTBm
N2QyMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRp
b25zL2xpYndlYnJ0Yy5pT1MuZXhwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9D
b25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cApAQCAtMzMwLDQgKzMzMCw1IEBAIF9fWk4z
cnRjNlRocmVhZDEyc29ja2V0c2VydmVyRXYKIF9fWk42d2VicnRjMzJ3ZWJydGNfc2VxdWVuY2Vf
Y2hlY2tlcl9pbnRlcm5hbDE5U2VxdWVuY2VDaGVja2VySW1wbEMyRXYKIF9fWk5LM3J0YzE0UlRD
Q2VydGlmaWNhdGUxN0dldFNTTENlcnRpZmljYXRlRXYKIF9fWlRWTjZ3ZWJydGMzMFdyYXBwaW5n
QXN5bmNEbnNSZXNvbHZlclJlc3VsdEUKLQorX19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZy
YW1lRVJLTlNfMTBWaWRlb0ZyYW1lRQorX19aTjZ3ZWJydGMxNGNvcHlWaWRlb0ZyYW1lRVJLTlNf
MTBWaWRlb0ZyYW1lRVBoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
Q29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAKaW5kZXggZGZlOGJh
ODdjNmJlZDY4OWY3ZjA0NGQzODhiN2MyMWIxOTkzNjUxOC4uY2E1NDczYTYyYWQ5OGJmNmI0ZTBj
ZWI2MDI4ODU2NDVkOTBmN2QyMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cApAQCAt
MzMwLDQgKzMzMCw1IEBAIF9fWk4zcnRjNlRocmVhZDEyc29ja2V0c2VydmVyRXYKIF9fWk42d2Vi
cnRjMzJ3ZWJydGNfc2VxdWVuY2VfY2hlY2tlcl9pbnRlcm5hbDE5U2VxdWVuY2VDaGVja2VySW1w
bEMyRXYKIF9fWk5LM3J0YzE0UlRDQ2VydGlmaWNhdGUxN0dldFNTTENlcnRpZmljYXRlRXYKIF9f
WlRWTjZ3ZWJydGMzMFdyYXBwaW5nQXN5bmNEbnNSZXNvbHZlclJlc3VsdEUKLQorX19aTjZ3ZWJy
dGMyMHBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRQorX19aTjZ3ZWJydGMx
NGNvcHlWaWRlb0ZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVBoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5l
eHAKaW5kZXggZGZlOGJhODdjNmJlZDY4OWY3ZjA0NGQzODhiN2MyMWIxOTkzNjUxOC4uY2E1NDcz
YTYyYWQ5OGJmNmI0ZTBjZWI2MDI4ODU2NDVkOTBmN2QyMyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFj
LmV4cApAQCAtMzMwLDQgKzMzMCw1IEBAIF9fWk4zcnRjNlRocmVhZDEyc29ja2V0c2VydmVyRXYK
IF9fWk42d2VicnRjMzJ3ZWJydGNfc2VxdWVuY2VfY2hlY2tlcl9pbnRlcm5hbDE5U2VxdWVuY2VD
aGVja2VySW1wbEMyRXYKIF9fWk5LM3J0YzE0UlRDQ2VydGlmaWNhdGUxN0dldFNTTENlcnRpZmlj
YXRlRXYKIF9fWlRWTjZ3ZWJydGMzMFdyYXBwaW5nQXN5bmNEbnNSZXNvbHZlclJlc3VsdEUKLQor
X19aTjZ3ZWJydGMyMHBpeGVsQnVmZmVyRnJvbUZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRQorX19a
TjZ3ZWJydGMxNGNvcHlWaWRlb0ZyYW1lRVJLTlNfMTBWaWRlb0ZyYW1lRVBoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dl
YktpdFV0aWxpdGllcy5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaAppbmRleCAzZWEwNGZkNThmNGM2NWZlYzM1
NzViYTUwMWQzNjA5NWI2OWE2M2Y3Li5hMjNmYWE2ZWQ1N2RmN2MzMjJjNjcwYjc3MzVjYWI4M2M2
NjE1OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKQEAg
LTQ4LDYgKzQ4LDggQEAgYm9vbCBpc0gyNjRIYXJkd2FyZUVuY29kZXJBbGxvd2VkKCk7CiAKIGVu
dW0gY2xhc3MgQnVmZmVyVHlwZSB7IEk0MjAsIEkwMTAgfTsKIENWUGl4ZWxCdWZmZXJSZWYgY3Jl
YXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYsIGNvbnN0IHN0ZDo6ZnVu
Y3Rpb248Q1ZQaXhlbEJ1ZmZlclJlZihzaXplX3QsIHNpemVfdCwgQnVmZmVyVHlwZSk+JiBjcmVh
dGVQaXhlbEJ1ZmZlcikgQ0ZfUkVUVVJOU19SRVRBSU5FRDsKK0NWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXJGcm9tRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYpIENGX1JFVFVSTlNfUkVUQUlORUQ7
CiBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBwaXhlbEJ1ZmZl
clRvRnJhbWUoQ1ZQaXhlbEJ1ZmZlclJlZik7Citib29sIGNvcHlWaWRlb0ZyYW1lKGNvbnN0IFZp
ZGVvRnJhbWUmLCB1aW50OF90Kik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9XZWJL
aXRVdGlsaXRpZXMubW0KaW5kZXggNDk4MTJlN2QyMzdlOGFiYTFiMjNkNTk1NDQwMThlODg2ZTA2
OGEwYy4uN2Y2ZmJiMTFlNzY5M2FkNjZkZjkyNGI5M2Y0ZDI4ZTdlZTg5ZTBhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktpdC9X
ZWJLaXRVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW0KQEAgLTE3NSw0ICsxNzUsNTIg
QEAgQ1ZQaXhlbEJ1ZmZlclJlZiBjcmVhdGVQaXhlbEJ1ZmZlckZyb21GcmFtZShjb25zdCBWaWRl
b0ZyYW1lJiBmcmFtZSwgY29uc3Qgc3RkOjoKICAgICByZXR1cm4gQ1ZQaXhlbEJ1ZmZlclJldGFp
bihydGNQaXhlbEJ1ZmZlci5waXhlbEJ1ZmZlcik7CiB9CiAKK0NWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXJGcm9tRnJhbWUoY29uc3QgVmlkZW9GcmFtZSYgZnJhbWUpCit7CisgICAgYXV0byBi
dWZmZXIgPSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKTsKKyAgICBpZiAoYnVmZmVyLT50eXBl
KCkgIT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a05hdGl2ZSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBhdXRvICpmcmFtZUJ1ZmZlciA9IHN0YXRpY19jYXN0PE9iakNGcmFtZUJ1
ZmZlcio+KGJ1ZmZlci5nZXQoKSktPndyYXBwZWRfZnJhbWVfYnVmZmVyKCk7CisgICAgaWYgKCFb
ZnJhbWVCdWZmZXIgaXNLaW5kT2ZDbGFzczpbUlRDQ1ZQaXhlbEJ1ZmZlciBjbGFzc11dKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gKnJ0Y1BpeGVsQnVmZmVyID0gKFJUQ0NW
UGl4ZWxCdWZmZXIgKilmcmFtZUJ1ZmZlcjsKKyAgICByZXR1cm4gQ1ZQaXhlbEJ1ZmZlclJldGFp
bihydGNQaXhlbEJ1ZmZlci5waXhlbEJ1ZmZlcik7Cit9CisKK2Jvb2wgY29weVZpZGVvRnJhbWUo
Y29uc3QgVmlkZW9GcmFtZSYgZnJhbWUsIHVpbnQ4X3QqIGRhdGEpCit7CisgICAgYXV0byBidWZm
ZXIgPSBmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKTsKKyAgICBpZiAoYnVmZmVyLT50eXBlKCkg
PT0gVmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a05hdGl2ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgYXV0byB0eXBlID0gYnVmZmVyLT50eXBlKCk7CisgICAgaWYgKHR5cGUgPT0gVmlk
ZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a0k0MjApIHsKKyAgICAgICAgYXV0byogaTQyMEZyYW1lID0g
YnVmZmVyLT5HZXRJNDIwKCk7CisgICAgICAgIGF1dG8qIGRhdGFZID0gZGF0YTsKKyAgICAgICAg
YXV0byBzdHJpZGVZID0gaTQyMEZyYW1lLT53aWR0aCgpOworICAgICAgICBhdXRvIHN0cmlkZVVW
ID0gaTQyMEZyYW1lLT53aWR0aCgpIC8gMjsKKyAgICAgICAgYXV0byogZGF0YVVWID0gZGF0YSAr
IChpNDIwRnJhbWUtPndpZHRoKCkgKiBpNDIwRnJhbWUtPmhlaWdodCgpKTsKKyAgICAgICAgcmV0
dXJuICFsaWJ5dXY6Okk0MjBUb05WMTIoaTQyMEZyYW1lLT5EYXRhWSgpLCBpNDIwRnJhbWUtPlN0
cmlkZVkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTQyMEZyYW1lLT5E
YXRhVSgpLCBpNDIwRnJhbWUtPlN0cmlkZVUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaTQyMEZyYW1lLT5EYXRhVigpLCBpNDIwRnJhbWUtPlN0cmlkZVYoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVksIHN0cmlkZVksIGRhdGFVViwgc3Ry
aWRlVVYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk0MjBGcmFtZS0+d2lk
dGgoKSwgaTQyMEZyYW1lLT5oZWlnaHQoKSk7CisgICAgfQorICAgIGlmICh0eXBlID09IFZpZGVv
RnJhbWVCdWZmZXI6OlR5cGU6OmtJMDEwKSB7CisgICAgICAgIGF1dG8qIGkwMTBGcmFtZSA9IGJ1
ZmZlci0+R2V0STAxMCgpOworICAgICAgICBhdXRvKiBkYXRhWSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDE2X3QqPihkYXRhKTsKKyAgICAgICAgYXV0byBzdHJpZGVZID0gaTAxMEZyYW1lLT53aWR0
aCgpOworICAgICAgICBhdXRvIHN0cmlkZVVWID0gaTAxMEZyYW1lLT53aWR0aCgpIC8gMjsKKyAg
ICAgICAgYXV0byogZGF0YVVWID0gZGF0YVkgKyAoaTAxMEZyYW1lLT53aWR0aCgpICogaTAxMEZy
YW1lLT5oZWlnaHQoKSk7CisgICAgICAgIHJldHVybiAhbGlieXV2OjpJMDEwVG9QMDEwKGkwMTBG
cmFtZS0+RGF0YVkoKSwgaTAxMEZyYW1lLT5TdHJpZGVZKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGkwMTBGcmFtZS0+RGF0YVUoKSwgaTAxMEZyYW1lLT5TdHJpZGVVKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkwMTBGcmFtZS0+RGF0YVYoKSwg
aTAxMEZyYW1lLT5TdHJpZGVWKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGFZLCBzdHJpZGVZLCBkYXRhVVYsIHN0cmlkZVVWLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpMDEwRnJhbWUtPndpZHRoKCksIGkwMTBGcmFtZS0+aGVpZ2h0KCkpOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDQxMGM2ZjRhZDViMjE1OTA0NWQxNTJjNjYxYjUwZjE1MzQ2ODQ2N2QuLjU4NWVhNDUzN2Zj
ZjY1OWQxODk5NDc3YzdjMjUyYjRhYzc5ZTEwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtMjY4LDYgKzI2OCw3IEBAIHBsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50Lm1tCiBwbGF0Zm9ybS9jb2NvYS9Qb3dlclNvdXJjZU5vdGlmaWVyLm1tCiBwbGF0
Zm9ybS9jb2NvYS9SZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5tbQogcGxhdGZvcm0vY29jb2Ev
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW0KK3BsYXRmb3JtL2NvY29hL1NoYXJlZFZp
ZGVvRnJhbWVVdGlsaXRpZXMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9jb2NvYS9TZWFyY2hQb3B1
cE1lbnVDb2NvYS5tbQogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KIHBsYXRm
b3JtL2NvY29hL1N5c3RlbVZlcnNpb24ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMjk4YmRlN2ViYjdkZTI3ODI4NzViZTMx
OTMxNjMzN2IzMGZiNjYxLi5iMTUxMmI1MWVjOWI0ZDM5NzMzNzQ3NTRkYTIwZDI4ZGZkNjdjNDY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMjExLDEwICsxMjExLDEyIEBACiAJCTQxRDEyOURCMUYzRDE0MzgwMEQxNUU0NyAv
KiBGZXRjaEhlYWRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRjU0RjgzMUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEhlYWRlcnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUQyOEQwRDIxMzlF
MDU4MDBGNDIwNkYgLyogTGliV2ViUlRDU3RhdHNDb2xsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMjhEMEIyMTM5RTAxRDAwRjQyMDZG
IC8qIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcCAqLzsgfTsKIAkJNDFENDFDNjcyMjU2ODc0
RjAwNjk3OTQyIC8qIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQ0MUM2NTIyNTY4NTkyMDA2OTc5NDIgLyog
U2VydmljZVdvcmtlckludGVybmFscy5tbSAqLzsgfTsKKwkJNDFEQzA0RkUyN0E4M0M5MzAwOENG
OTY4IC8qIFNoYXJlZFZpZGVvRnJhbWVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MURDMDRGQjI3QTgzQzkyMDA4Q0Y5NjggLyogU2hhcmVkVmlk
ZW9GcmFtZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0MURFN0M3QzIyMkRBMTQzMDA1MzJCNjUgLyogU3RvcmFnZVF1b3RhTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFERTdDN0Iy
MjJEQTEzRTAwNTMyQjY1IC8qIFN0b3JhZ2VRdW90YU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MURFRUZCMDI3MTlCMjkwMDBDQjhE
NzQgLyogVmlkZW9GcmFtZVJlcXVlc3RDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFERUVGQUMyNzE5QjI4ODAwQ0I4RDc0IC8qIFZpZGVv
RnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0MURFRUZCNjI3MTlCQTFBMDBDQjhENzQgLyogVmlkZW9GcmFtZU1l
dGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MURFRUZCNDI3MTlCQTE5MDBDQjhENzQgLyogVmlkZW9GcmFtZU1ldGFkYXRhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFERUZDQjYxRTU2QzFC
RDAwMEQ5RTVGIC8qIEpTRE9NTWFwTGlrZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFERUZDQjQxRTU2QzFCOTAwMEQ5RTVGIC8qIEpTRE9NTWFwTGlr
ZS5oICovOyB9OworCQk0MURGMkQ1RTI3QTk0NTJBMDBGMjVBMjEgLyogU2hhcmVkVmlkZW9GcmFt
ZUluZm8ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MURDMDRGRDI3QTgzQzkzMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8ubW0gKi87IH07
CiAJCTQxRTEyRTlGMjRGRTc0RTIwMDkzRkZCNCAvKiBXZWJTb2NrZXRJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxMkU5RDI0RkU3
NEUyMDA5M0ZGQjQgLyogV2ViU29ja2V0SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAv
KiBBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFFMUIxQ0IwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggKi87
IH07CiAJCTQxRTJGMTk5Mjc0RkFFQ0YwMEEwODlFRSAvKiBOYXZpZ2F0aW9uUHJlbG9hZE1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTJG
MTk3Mjc0RkFFQ0IwMEEwODlFRSAvKiBOYXZpZ2F0aW9uUHJlbG9hZE1hbmFnZXIuaCAqLzsgfTsK
QEAgLTg5MTgsNiArODkyMCw4IEBACiAJCTQxRDQxQzY1MjI1Njg1OTIwMDY5Nzk0MiAvKiBTZXJ2
aWNlV29ya2VySW50ZXJuYWxzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU2VydmljZVdvcmtlckludGVybmFscy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFENTFCQjIxRTRFMkU4MTAwMTMxQTVCIC8qIExpYldlYlJUQ0F1ZGlvRm9ybWF0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ0F1ZGlvRm9ybWF0Lmg7
IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Gb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFENkJEOTgyNTFCM0FEQTAwNTVBN0I3IC8qIEhUTUxNZWRpYUVsZW1l
bnQrQXVkaW9PdXRwdXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJIVE1MTWVkaWFFbGVt
ZW50K0F1ZGlvT3V0cHV0LmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxREMw
NEZCMjdBODNDOTIwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRWaWRlb0ZyYW1lSW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MURDMDRGRDI3QTgzQzkzMDA4Q0Y5NjggLyogU2hhcmVkVmlk
ZW9GcmFtZUluZm8ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBT
aGFyZWRWaWRlb0ZyYW1lSW5mby5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFE
RTdDN0EyMjJEQTEzRDAwNTMyQjY1IC8qIFN0b3JhZ2VRdW90YU1hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RvcmFnZVF1b3RhTWFuYWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxREU3QzdCMjIyREExM0UwMDUzMkI2NSAvKiBT
dG9yYWdlUXVvdGFNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
b3JhZ2VRdW90YU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFERUVG
QUMyNzE5QjI4ODAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVmlkZW9GcmFtZVJlcXVlc3RDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjY4MTYsNiArMjY4MjAsOCBAQAogCQkJCTBFNzA1OEYzMUJDNUNDRDcwMDQ1
QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5oICovLAogCQkJCTBFNzA1OEVEMUJDNUJDMTkw
MDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5tbSAqLywKIAkJCQkxQTRBOTU1MTBCNEVE
Q0ZGMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyQ29jb2EubW0gKi8sCisJCQkJNDFEQzA0RkIyN0E4
M0M5MjAwOENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWVJbmZvLmggKi8sCisJCQkJNDFEQzA0RkQy
N0E4M0M5MzAwOENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWVJbmZvLm1tICovLAogCQkJCUMxNjky
REQ0MjNEMjNBRTAwMDZFODhGNyAvKiBTeXN0ZW1CYXR0ZXJ5LmggKi8sCiAJCQkJQzE2OTJERDEy
M0QyM0FCRDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gKi8sCiAJCQkJNUQ1OTc1QjExOTYz
NUYxMTAwRDAwODc4IC8qIFN5c3RlbVZlcnNpb24uaCAqLywKQEAgLTM3MTg2LDYgKzM3MTkyLDcg
QEAKIAkJCQlDRDM2QzE2QjI2MEE2NUNDMDBDOEM1MjkgLyogU2hhcmVkUm91dGluZ0FyYml0cmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNERGQUQwMUY3REFFNUQwMEMyNzI1QiAvKiBTaGFy
ZWRTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUVBMzA5OUVCNzhDMDA1NkU1
ODEgLyogU2hhcmVkVGltZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxREMwNEZFMjdBODNDOTMw
MDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3
QTY4REEyNzVFQTk5QzAwOUIzMUM1IC8qIFNoYXJlZFdvcmtlck1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ2N0E2OEQ5Mjc1RUE5OTgwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJQcm94eS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3QTY4RDgyNzVFQTk5NTAwOUIzMUM1IC8qIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODY2MCw2ICszODY2Nyw3IEBA
CiAJCQkJNDNCODVFRDQxOENCRUM1MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRD
b21wYXRpYmlsaXR5RWxlbWVudE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkFBMEY5RTE4
RDJBMThCMDA0MTkzODEgLyogU2VsZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3Q0Q1OERGRDFGOTU2NUE4MDAxMTI3OTEgLyogU2V0dGluZ3MuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDFERjJENUUyN0E5NDUyQTAwRjI1QTIxIC8qIFNoYXJlZFZpZGVv
RnJhbWVJbmZvLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTM4RjEwQTgxRjkwMjJBNDAwNTEwMkNF
IC8qIFNvZnRMaW5rTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREM4QjVBQTE4MDQ3
RkYxMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAq
LywKIAkJCQlBODMzQzdDQTBBMkNGMDZCMDBENTc2NjQgLyogU1ZHTmFtZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlVmlk
ZW9Tb2Z0TGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9T
b2Z0TGluay5jcHAKaW5kZXggM2UwNzNhNzg2NWRjYTgxODNkOGJjNWVlOTc5ZDE3YmU5MDg1MTA5
OC4uNDVjZGM3YTlhY2ZiMDRkMTNjODI0OGRlMjExYTI0Zjc3ZTM0YzY4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcApAQCAt
MzksNyArMzksOSBAQCBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3Jl
VmlkZW8sIENWQnVmZmVyR2V0QXR0YWNobWVudCwgQ0ZUeXBlUgogU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBDVkJ1ZmZlckdldEF0dGFjaG1lbnRzLCBD
RkRpY3Rpb25hcnlSZWYsIChDVkJ1ZmZlclJlZiBidWZmZXIsIENWQXR0YWNobWVudE1vZGUgbW9k
ZSksIChidWZmZXIsIG1vZGUpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29y
ZSwgQ29yZVZpZGVvLCBDVlBpeGVsQnVmZmVyR2V0VHlwZUlELCBDRlR5cGVJRCwgKCksICgpKQog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBDVlBpeGVs
QnVmZmVyR2V0V2lkdGgsIHNpemVfdCwgKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpLCAo
cGl4ZWxCdWZmZXIpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29y
ZVZpZGVvLCBDVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBsYW5lLCBzaXplX3QsIChDVlBpeGVsQnVm
ZmVyUmVmIHBpeGVsQnVmZmVyLCBzaXplX3QgcGxhbmVJbmRleCksIChwaXhlbEJ1ZmZlciwgcGxh
bmVJbmRleCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlVmlk
ZW8sIENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQsIHNpemVfdCwgKENWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXIpLCAocGl4ZWxCdWZmZXIpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uo
V2ViQ29yZSwgQ29yZVZpZGVvLCBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQbGFuZSwgc2l6ZV90
LCAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgc2l6ZV90IHBsYW5lSW5kZXgpLCAocGl4
ZWxCdWZmZXIsIHBsYW5lSW5kZXgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2Vi
Q29yZSwgQ29yZVZpZGVvLCBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3MsIHZvaWQqLCAoQ1ZQ
aXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciksIChwaXhlbEJ1ZmZlcikpCiBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlVmlkZW8sIENWUGl4ZWxCdWZmZXJHZXRCeXRl
c1BlclJvdywgc2l6ZV90LCAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciksIChwaXhlbEJ1
ZmZlcikpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlVmlkZW8s
IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUsIHNpemVfdCwgKENWUGl4ZWxCdWZm
ZXJSZWYgcGl4ZWxCdWZmZXIsIHNpemVfdCBwbGFuZUluZGV4KSwgKHBpeGVsQnVmZmVyLCBwbGFu
ZUluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVW
aWRlb1NvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9T
b2Z0TGluay5oCmluZGV4IGM5YjQxMzkxY2ZjYjk5MzRjM2JjNTA0MzNmMzE4ZjhkOTVjODdmMmIu
LjAzNzMyMDQ5Njk2ZWZlZTQxZmE5Y2QyNTRkMzk3YWM1OTI1MGE2MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZpZGVvU29mdExpbmsuaApAQCAtNDQsOCAr
NDQsMTIgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVv
LCBDVlBpeGVsQnVmZmVyR2V0VHlwZUlELCBDRlR5cGUKICNkZWZpbmUgQ1ZQaXhlbEJ1ZmZlckdl
dFR5cGVJRCBzb2Z0TGlua19Db3JlVmlkZW9fQ1ZQaXhlbEJ1ZmZlckdldFR5cGVJRAogU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVvLCBDVlBpeGVsQnVmZmVy
R2V0V2lkdGgsIHNpemVfdCwgKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpLCAocGl4ZWxC
dWZmZXIpKQogI2RlZmluZSBDVlBpeGVsQnVmZmVyR2V0V2lkdGggc29mdExpbmtfQ29yZVZpZGVv
X0NWUGl4ZWxCdWZmZXJHZXRXaWR0aAorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2Vi
Q29yZSwgQ29yZVZpZGVvLCBDVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBsYW5lLCBzaXplX3QsIChD
VlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBzaXplX3QgcGxhbmVJbmRleCksIChwaXhlbEJ1
ZmZlciwgcGxhbmVJbmRleCkpCisjZGVmaW5lIENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUg
c29mdExpbmtfQ29yZVZpZGVvX0NWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUKIFNPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdl
dEhlaWdodCwgc2l6ZV90LCAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciksIChwaXhlbEJ1
ZmZlcikpCiAjZGVmaW5lIENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQgc29mdExpbmtfQ29yZVZpZGVv
X0NWUGl4ZWxCdWZmZXJHZXRIZWlnaHQKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdl
YkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodE9mUGxhbmUsIHNpemVfdCwg
KENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHNpemVfdCBwbGFuZUluZGV4KSwgKHBpeGVs
QnVmZmVyLCBwbGFuZUluZGV4KSkKKyNkZWZpbmUgQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodE9mUGxh
bmUgc29mdExpbmtfQ29yZVZpZGVvX0NWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lCiBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlVmlkZW8sIENWUGl4ZWxCdWZm
ZXJHZXRCYXNlQWRkcmVzcywgdm9pZCosIChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKSwg
KHBpeGVsQnVmZmVyKSkKICNkZWZpbmUgQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzIHNvZnRM
aW5rX0NvcmVWaWRlb19DVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3MKIFNPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVz
UGVyUm93LCBzaXplX3QsIChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKSwgKHBpeGVsQnVm
ZmVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZp
ZGVvRnJhbWVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRl
b0ZyYW1lSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlZThhOTZkMmUzYTIyYmZmYzUyZjM2OTBkOTJiZmU4
ZjE4MjhkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5oCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CisKK3R5cGVkZWYgc3RydWN0IF9fQ1ZCdWZm
ZXIqIENWUGl4ZWxCdWZmZXJSZWY7Cit0eXBlZGVmIHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29s
KiBDVlBpeGVsQnVmZmVyUG9vbFJlZjsKKworbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBWaWRl
b0ZyYW1lOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNoYXJlZFZpZGVvRnJh
bWVJbmZvIHsKK3B1YmxpYzoKKyAgICBTaGFyZWRWaWRlb0ZyYW1lSW5mbygpID0gZGVmYXVsdDsK
KyAgICBTaGFyZWRWaWRlb0ZyYW1lSW5mbyhPU1R5cGUsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJf
dCBoZWlnaHQsIHVpbnQzMl90IGJ5dGVzUGVyUm93LCB1aW50MzJfdCB3aWR0aFBsYW5lQiA9IDAs
IHVpbnQzMl90IGhlaWdodFBsYW5lQiA9IDAsIHVpbnQzMl90IGJ5dGVzUGVyUm93UGxhbmVCID0g
MCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuY29kZSh1aW50OF90Kik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZUluZm8+IGRl
Y29kZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBT
aGFyZWRWaWRlb0ZyYW1lSW5mbyBmcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHdyaXRlUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJl
ZiwgdWludDhfdCogZGF0YSk7CisKKyNpZiBVU0UoTElCV0VCUlRDKQorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTaGFyZWRWaWRlb0ZyYW1lSW5mbyBmcm9tVmlkZW9GcmFtZShjb25zdCB3ZWJy
dGM6OlZpZGVvRnJhbWUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHdyaXRlVmlkZW9GcmFt
ZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmLCB1aW50OF90KiBkYXRhKTsKKyNlbmRpZgorCisg
ICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHN0b3JhZ2VTaXplKCkgY29uc3Q7CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY3JlYXRlUGl4ZWxCdWZmZXJG
cm9tTWVtb3J5KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIENWUGl4ZWxCdWZmZXJQb29sUmVmID0gbnVs
bHB0cik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzUmVhZFdyaXRlU3VwcG9ydGVkKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJQb29sUmVm
PiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyUG9vbCgpIGNvbnN0OworCisgICAgT1NUeXBlIGJ1ZmZl
clR5cGUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlclR5cGU7IH0KKyAgICB1aW50MzJfdCB3aWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH07CisgICAgdWludDMyX3QgaGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9oZWlnaHQ7IH07CisKK3ByaXZhdGU6CisgICAgT1NUeXBlIG1fYnVmZmVy
VHlwZSB7IDAgfTsKKyAgICB1aW50MzJfdCBtX3dpZHRoIHsgMCB9OworICAgIHVpbnQzMl90IG1f
aGVpZ2h0IHsgMCB9OworICAgIHVpbnQzMl90IG1fYnl0ZXNQZXJSb3cgeyAwIH07CisgICAgdWlu
dDMyX3QgbV93aWR0aFBsYW5lQiB7IDAgfTsKKyAgICB1aW50MzJfdCBtX2hlaWdodFBsYW5lQiB7
IDAgfTsKKyAgICB1aW50MzJfdCBtX2J5dGVzUGVyUm93UGxhbmVCIHsgMCB9OworfTsKKworCitz
dGF0aWMgY29uc3RleHByIHNpemVfdCBTaGFyZWRWaWRlb0ZyYW1lSW5mb0VuY29kaW5nTGVuZ3Ro
ID0gc2l6ZW9mKFNoYXJlZFZpZGVvRnJhbWVJbmZvKTsKKworaW5saW5lIFNoYXJlZFZpZGVvRnJh
bWVJbmZvOjpTaGFyZWRWaWRlb0ZyYW1lSW5mbyhPU1R5cGUgYnVmZmVyVHlwZSwgdWludDMyX3Qg
d2lkdGgsIHVpbnQzMl90IGhlaWdodCwgdWludDMyX3QgYnl0ZXNQZXJSb3csIHVpbnQzMl90IHdp
ZHRoUGxhbmVCLCB1aW50MzJfdCBoZWlnaHRQbGFuZUIsIHVpbnQzMl90IGJ5dGVzUGVyUm93UGxh
bmVCKQorICAgIDogbV9idWZmZXJUeXBlKGJ1ZmZlclR5cGUpCisgICAgLCBtX3dpZHRoKHdpZHRo
KQorICAgICwgbV9oZWlnaHQoaGVpZ2h0KQorICAgICwgbV9ieXRlc1BlclJvdyhieXRlc1BlclJv
dykKKyAgICAsIG1fd2lkdGhQbGFuZUIod2lkdGhQbGFuZUIpCisgICAgLCBtX2hlaWdodFBsYW5l
QihoZWlnaHRQbGFuZUIpCisgICAgLCBtX2J5dGVzUGVyUm93UGxhbmVCKGJ5dGVzUGVyUm93UGxh
bmVCKQoreworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8u
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42MWVmMmNlYmM3OWU3NzRmODk3MTU2YTlmNzFiYjU2ZTQ0YzQ2NmY2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlk
ZW9GcmFtZUluZm8ubW0KQEAgLTAsMCArMSwyOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hh
cmVkVmlkZW9GcmFtZUluZm8uaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRG
T1JNKENPQ09BKQorCisjaW5jbHVkZSAiQ1ZVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJJT1N1cmZh
Y2UuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5j
bHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaD4KKworI2lmIFVTRShBQ0NF
TEVSQVRFKQorI2luY2x1ZGUgPEFjY2VsZXJhdGUvQWNjZWxlcmF0ZS5oPgorI2VuZGlmCisKKyNp
ZiBVU0UoTElCV0VCUlRDKQorCitBTExPV19VTlVTRURfUEFSQU1FVEVSU19CRUdJTgorI2luY2x1
ZGUgPHdlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fZnJhbWUuaD4KKyNpbmNsdWRlIDx3ZWJydGMvc2Rr
L1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaD4KK0FMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAor
CisjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKKworI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFT
b2Z0TGluay5oPgorI2luY2x1ZGUgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworU2hhcmVkVmlkZW9GcmFtZUluZm8gU2hhcmVkVmlkZW9GcmFtZUluZm86OmZy
b21DVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpCit7CisgICAgYXV0
byB0eXBlID0gQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlcik7Cisg
ICAgaWYgKHR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVv
UmFuZ2UgfHwgdHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyRnVs
bFJhbmdlKQorICAgICAgICByZXR1cm4geyB0eXBlLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oQ1ZQ
aXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFuZShwaXhlbEJ1ZmZlciwgMCkpLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodE9mUGxhbmUocGl4ZWxCdWZmZXIsIDApKSwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUo
cGl4ZWxCdWZmZXIsIDApKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KENWUGl4ZWxCdWZmZXJHZXRX
aWR0aE9mUGxhbmUocGl4ZWxCdWZmZXIsIDEpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KENWUGl4
ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVsQnVmZmVyLCAxKSksIHN0YXRpY19jYXN0PHVp
bnQzMl90PihDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3dPZlBsYW5lKHBpeGVsQnVmZmVyLCAx
KSkgfTsKKyAgICByZXR1cm4geyB0eXBlLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oQ1ZQaXhlbEJ1
ZmZlckdldFdpZHRoKHBpeGVsQnVmZmVyKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihDVlBpeGVs
QnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihDVlBp
eGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3cocGl4ZWxCdWZmZXIpKSB9OworfQorCitib29sIFNoYXJl
ZFZpZGVvRnJhbWVJbmZvOjppc1JlYWRXcml0ZVN1cHBvcnRlZCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fYnVmZmVyVHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFy
VmlkZW9SYW5nZQorI2lmIFVTRShBQ0NFTEVSQVRFKQorICAgICAgICAgICAgfHwgbV9idWZmZXJU
eXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEKKyNlbmRpZgorICAgICAgICAgICAgfHwg
bV9idWZmZXJUeXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxs
UmFuZ2UKKyAgICAgICAgICAgIHx8IG1fYnVmZmVyVHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVf
NDIwWXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5nZTsKK30KKworc2l6ZV90IFNoYXJlZFZpZGVvRnJh
bWVJbmZvOjpzdG9yYWdlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX2J5dGVzUGVyUm93
ICogbV9oZWlnaHQpICsgKG1fYnl0ZXNQZXJSb3dQbGFuZUIgKiBtX2hlaWdodFBsYW5lQikgKyBz
aXplb2YoU2hhcmVkVmlkZW9GcmFtZUluZm8pOworfQorCit2b2lkIFNoYXJlZFZpZGVvRnJhbWVJ
bmZvOjplbmNvZGUodWludDhfdCogZGVzdGluYXRpb24pCit7CisgICAgV1RGOjpQZXJzaXN0ZW5j
ZTo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIgPDwgKHVpbnQzMl90KW1fYnVmZmVyVHlw
ZTsKKyAgICBlbmNvZGVyIDw8IG1fd2lkdGg7CisgICAgZW5jb2RlciA8PCBtX2hlaWdodDsKKyAg
ICBlbmNvZGVyIDw8IG1fYnl0ZXNQZXJSb3c7CisgICAgZW5jb2RlciA8PCBtX3dpZHRoUGxhbmVC
OworICAgIGVuY29kZXIgPDwgbV9oZWlnaHRQbGFuZUI7CisgICAgZW5jb2RlciA8PCBtX2J5dGVz
UGVyUm93UGxhbmVCOworICAgIEFTU0VSVChzaXplb2YoU2hhcmVkVmlkZW9GcmFtZUluZm8pID09
IGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICBzdGQ6Om1lbWNweShkZXN0aW5hdGlvbiwgZW5j
b2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworfQorCitzdGQ6Om9wdGlvbmFs
PFNoYXJlZFZpZGVvRnJhbWVJbmZvPiBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZGVjb2RlKFNwYW48
Y29uc3QgdWludDhfdD4gc3BhbikKK3sKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRl
Y29kZXIoc3Bhbik7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBidWZmZXJUeXBlOwor
ICAgIGRlY29kZXIgPj4gYnVmZmVyVHlwZTsKKyAgICBpZiAoIWJ1ZmZlclR5cGUpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiB3aWR0
aDsKKyAgICBkZWNvZGVyID4+IHdpZHRoOworICAgIGlmICghd2lkdGgpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBoZWlnaHQ7Cisg
ICAgZGVjb2RlciA+PiBoZWlnaHQ7CisgICAgaWYgKCFoZWlnaHQpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBieXRlc1BlclJvdzsK
KyAgICBkZWNvZGVyID4+IGJ5dGVzUGVyUm93OworICAgIGlmICghYnl0ZXNQZXJSb3cpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiB3
aWR0aFBsYW5lQjsKKyAgICBkZWNvZGVyID4+IHdpZHRoUGxhbmVCOworICAgIGlmICghd2lkdGhQ
bGFuZUIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBoZWlnaHRQbGFuZUI7CisgICAgZGVjb2RlciA+PiBoZWlnaHRQbGFuZUI7Cisg
ICAgaWYgKCFoZWlnaHRQbGFuZUIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBieXRlc1BlclJvd1BsYW5lQjsKKyAgICBkZWNvZGVy
ID4+IGJ5dGVzUGVyUm93UGxhbmVCOworICAgIGlmICghYnl0ZXNQZXJSb3dQbGFuZUIpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gU2hhcmVkVmlkZW9GcmFtZUlu
Zm8geyAqYnVmZmVyVHlwZSwgKndpZHRoLCAqaGVpZ2h0LCAqYnl0ZXNQZXJSb3cgLCAqd2lkdGhQ
bGFuZUIsICpoZWlnaHRQbGFuZUIsICpieXRlc1BlclJvd1BsYW5lQiB9OworfQorCitSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gU2hhcmVkVmlkZW9GcmFtZUluZm86OmNyZWF0ZVBpeGVsQnVm
ZmVyRnJvbU1lbW9yeShjb25zdCB1aW50OF90KiBkYXRhLCBDVlBpeGVsQnVmZmVyUG9vbFJlZiBi
dWZmZXJQb29sKQoreworICAgIEFTU0VSVChpc1JlYWRXcml0ZVN1cHBvcnRlZCgpKTsKKyAgICBp
ZiAobV9idWZmZXJUeXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIHsKKyNpZiBVU0Uo
QUNDRUxFUkFURSkKKyAgICAgICAgSW50U2l6ZSBzaXplIHsgc3RhdGljX2Nhc3Q8aW50PihtX3dp
ZHRoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2hlaWdodCkgfTsKKyAgICAgICAgYXV0byBpb1N1cmZh
Y2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShzaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgSU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkEpOworCisgICAgICAgIElPU3VyZmFjZTo6TG9ja2Vy
IGxvY2soKmlvU3VyZmFjZSk7CisgICAgICAgIHZJbWFnZV9CdWZmZXIgc3JjOworICAgICAgICBz
cmMud2lkdGggPSBtX3dpZHRoOworICAgICAgICBzcmMuaGVpZ2h0ID0gbV9oZWlnaHQ7CisgICAg
ICAgIHNyYy5yb3dCeXRlcyA9IG1fYnl0ZXNQZXJSb3c7CisgICAgICAgIHNyYy5kYXRhID0gY29u
c3RfY2FzdDx1aW50OF90Kj4oZGF0YSk7CisKKyAgICAgICAgdkltYWdlX0J1ZmZlciBkZXN0Owor
ICAgICAgICBkZXN0LndpZHRoID0gbV93aWR0aDsKKyAgICAgICAgZGVzdC5oZWlnaHQgPSBtX2hl
aWdodDsKKyAgICAgICAgZGVzdC5yb3dCeXRlcyA9IGlvU3VyZmFjZS0+Ynl0ZXNQZXJSb3coKTsK
KyAgICAgICAgZGVzdC5kYXRhID0gbG9jay5zdXJmYWNlQmFzZUFkZHJlc3MoKTsKKworICAgICAg
ICB2SW1hZ2VVbnByZW11bHRpcGx5RGF0YV9CR1JBODg4OCgmc3JjLCAmZGVzdCwga3ZJbWFnZU5v
RmxhZ3MpOworCisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBp
eGVsQnVmZmVyKGlvU3VyZmFjZS0+c3VyZmFjZSgpKTsKKyAgICAgICAgaWYgKCFwaXhlbEJ1ZmZl
cikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gV1RGTW92ZSgq
cGl4ZWxCdWZmZXIpOworI2Vsc2UKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJj
cmVhdGVJT1N1cmZhY2VGcm9tU2hhcmVkTWVtb3J5IGNhbm5vdCBjb252ZXJ0IHRvIElPU3VyZmFj
ZSIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorICAgIH0KKworICAgIENWUGl4
ZWxCdWZmZXJSZWYgcmF3UGl4ZWxCdWZmZXIgPSBudWxscHRyOworICAgIGlmIChidWZmZXJQb29s
KSB7CisgICAgICAgIGF1dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQaXhlbEJ1
ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXJQb29sLCAmcmF3UGl4ZWxCdWZmZXIpOwor
ICAgICAgICBpZiAoc3RhdHVzICE9IG5vRXJyIHx8ICFyYXdQaXhlbEJ1ZmZlcikKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIEFTU0VSVChDVlBpeGVsQnVmZmVyR2V0V2lk
dGhPZlBsYW5lKHJhd1BpeGVsQnVmZmVyLCAwKSA9PSBtX3dpZHRoKTsKKyAgICAgICAgQVNTRVJU
KENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHJhd1BpeGVsQnVmZmVyLCAwKSA9PSBtX2hl
aWdodCk7CisgICAgICAgIEFTU0VSVChDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHJh
d1BpeGVsQnVmZmVyKSA9PSBtX2J1ZmZlclR5cGUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGF1
dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3dp
ZHRoLCBtX2hlaWdodCwgbV9idWZmZXJUeXBlLCBudWxscHRyLCAmcmF3UGl4ZWxCdWZmZXIpOwor
ICAgICAgICBpZiAoc3RhdHVzICE9IG5vRXJyIHx8ICFyYXdQaXhlbEJ1ZmZlcikKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBhZG9w
dENGKHJhd1BpeGVsQnVmZmVyKTsKKyAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJMb2Nr
QmFzZUFkZHJlc3MocmF3UGl4ZWxCdWZmZXIsIDApOworICAgIGlmIChzdGF0dXMgIT0gbm9FcnIp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBzY29wZSA9IG1ha2VTY29wZUV4
aXQoWyZyYXdQaXhlbEJ1ZmZlcl0geworICAgICAgICBDVlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFk
ZHJlc3MocmF3UGl4ZWxCdWZmZXIsIDApOworICAgIH0pOworCisgICAgaWYgKENWUGl4ZWxCdWZm
ZXJHZXRXaWR0aE9mUGxhbmUocmF3UGl4ZWxCdWZmZXIsIDEpICE9IG1fd2lkdGhQbGFuZUIgfHwg
Q1ZQaXhlbEJ1ZmZlckdldEhlaWdodE9mUGxhbmUocmF3UGl4ZWxCdWZmZXIsIDEpICE9IG1faGVp
Z2h0UGxhbmVCKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHBsYW5lQSA9
IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NPZlBsYW5l
KHJhd1BpeGVsQnVmZmVyLCAwKSk7CisgICAgdWludDMyX3QgYnl0ZXNQZXJSb3dQbGFuZUEgPSBD
VlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3dPZlBsYW5lKHJhd1BpeGVsQnVmZmVyLCAwKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9oZWlnaHQ7ICsraSkgeworICAgICAgICBzdGQ6
Om1lbWNweShwbGFuZUEsIGRhdGEsIHN0ZDo6bWluKGJ5dGVzUGVyUm93UGxhbmVBLCBtX2J5dGVz
UGVyUm93KSk7CisgICAgICAgIHBsYW5lQSArPSBieXRlc1BlclJvd1BsYW5lQTsKKyAgICAgICAg
ZGF0YSArPSBtX2J5dGVzUGVyUm93OworICAgIH0KKworICAgIGF1dG8qIHBsYW5lQiA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3QqPihDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NPZlBsYW5lKHJhd1Bp
eGVsQnVmZmVyLCAxKSk7CisgICAgdWludDMyX3QgYnl0ZXNQZXJSb3dQbGFuZUIgPSBDVlBpeGVs
QnVmZmVyR2V0Qnl0ZXNQZXJSb3dPZlBsYW5lKHJhd1BpeGVsQnVmZmVyLCAxKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9oZWlnaHRQbGFuZUI7ICsraSkgeworICAgICAgICBzdGQ6
Om1lbWNweShwbGFuZUIsIGRhdGEsIHN0ZDo6bWluKGJ5dGVzUGVyUm93UGxhbmVCLCBtX2J5dGVz
UGVyUm93UGxhbmVCKSk7CisgICAgICAgIHBsYW5lQiArPSBieXRlc1BlclJvd1BsYW5lQjsKKyAg
ICAgICAgZGF0YSArPSBtX2J5dGVzUGVyUm93UGxhbmVCOworICAgIH0KKworICAgIENWUGl4ZWxC
dWZmZXJVbmxvY2tCYXNlQWRkcmVzcyhyYXdQaXhlbEJ1ZmZlciwgMCk7CisgICAgcmV0dXJuIHBp
eGVsQnVmZmVyOworfQorCitib29sIFNoYXJlZFZpZGVvRnJhbWVJbmZvOjp3cml0ZVBpeGVsQnVm
ZmVyKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQ4X3QqIGRhdGEpCit7CisgICAg
YXV0byByZXN1bHQgPSBDVlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzKHBpeGVsQnVmZmVyLCBr
Q1ZQaXhlbEJ1ZmZlckxvY2tfUmVhZE9ubHkpOworICAgIGlmIChyZXN1bHQgIT0ga0NWUmV0dXJu
U3VjY2VzcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBzY29wZSA9IG1ha2VT
Y29wZUV4aXQoWyZwaXhlbEJ1ZmZlcl0geworICAgICAgICBDVlBpeGVsQnVmZmVyVW5sb2NrQmFz
ZUFkZHJlc3MocGl4ZWxCdWZmZXIsIGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seSk7CisgICAg
fSk7CisKKyAgICBlbmNvZGUoZGF0YSk7CisgICAgZGF0YSArPSBzaXplb2YoU2hhcmVkVmlkZW9G
cmFtZUluZm8pOworCisgICAgaWYgKG1fYnVmZmVyVHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVf
MzJCR1JBKSB7CisjaWYgVVNFKEFDQ0VMRVJBVEUpCisgICAgICAgIHZJbWFnZV9CdWZmZXIgc3Jj
OworICAgICAgICBzcmMud2lkdGggPSBtX3dpZHRoOworICAgICAgICBzcmMuaGVpZ2h0ID0gbV9o
ZWlnaHQ7CisgICAgICAgIHNyYy5yb3dCeXRlcyA9IG1fYnl0ZXNQZXJSb3c7CisgICAgICAgIHNy
Yy5kYXRhID0gQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzKHBpeGVsQnVmZmVyKTsKKworICAg
ICAgICB2SW1hZ2VfQnVmZmVyIGRlc3Q7CisgICAgICAgIGRlc3Qud2lkdGggPSBtX3dpZHRoOwor
ICAgICAgICBkZXN0LmhlaWdodCA9IG1faGVpZ2h0OworICAgICAgICBkZXN0LnJvd0J5dGVzID0g
bV9ieXRlc1BlclJvdzsKKyAgICAgICAgZGVzdC5kYXRhID0gZGF0YTsKKworICAgICAgICB2SW1h
Z2VVbnByZW11bHRpcGx5RGF0YV9CR1JBODg4OCgmc3JjLCAmZGVzdCwga3ZJbWFnZU5vRmxhZ3Mp
OworCisgICAgICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCisgICAgfQorCisgICAgY29uc3QgdWludDhfdCAqcGxhbmVBID0gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCAqPihDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NPZlBsYW5lKHBpeGVs
QnVmZmVyLCAwKSk7CisgICAgY29uc3QgdWludDhfdCAqcGxhbmVCID0gc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCAqPihDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NPZlBsYW5lKHBpeGVsQnVm
ZmVyLCAxKSk7CisKKyAgICBzaXplX3QgcGxhbmVBU2l6ZSA9IG1faGVpZ2h0ICogbV9ieXRlc1Bl
clJvdzsKKyAgICBzdGQ6Om1lbWNweShkYXRhLCBwbGFuZUEsIHBsYW5lQVNpemUpOworICAgIHNp
emVfdCBwbGFuZUJTaXplID0gbV9oZWlnaHRQbGFuZUIgKiBtX2J5dGVzUGVyUm93UGxhbmVCOwor
ICAgIHN0ZDo6bWVtY3B5KGRhdGEgKyBwbGFuZUFTaXplLCBwbGFuZUIsIHBsYW5lQlNpemUpOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JldGFpblB0cjxDVlBpeGVsQnVmZmVyUG9vbFJlZj4g
U2hhcmVkVmlkZW9GcmFtZUluZm86OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXJQb29sKCkgY29uc3QK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZUlPU3VyZmFjZUNWUGl4ZWxCdWZmZXJQb29sKG1f
d2lkdGgsIG1faGVpZ2h0LCBtX2J1ZmZlclR5cGUpOworICAgIGlmICghcmVzdWx0KQorICAgICAg
ICByZXR1cm4geyB9OworICAgIHJldHVybiAqcmVzdWx0OworfQorCisjaWYgVVNFKExJQldFQlJU
QykKK1NoYXJlZFZpZGVvRnJhbWVJbmZvIFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpmcm9tVmlkZW9G
cmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lKQoreworICAgIGF1dG8gYnVmZmVy
ID0gZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7CisgICAgaWYgKGJ1ZmZlci0+dHlwZSgpID09
IHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a05hdGl2ZSkKKyAgICAgICAgcmV0dXJu
IFNoYXJlZFZpZGVvRnJhbWVJbmZvIHsgfTsKKworICAgIGF1dG8gdHlwZSA9IGJ1ZmZlci0+dHlw
ZSgpOworCisgICAgaWYgKHR5cGUgPT0gd2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjpr
STQyMCkKKyAgICAgICAgcmV0dXJuIFNoYXJlZFZpZGVvRnJhbWVJbmZvIHsga0NWUGl4ZWxGb3Jt
YXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hckZ1bGxSYW5nZSwKKyAgICAgICAgICAgIHN0YXRpY19j
YXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1l
LmhlaWdodCgpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpLAorICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkpLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZnJhbWUuaGVpZ2h0KCkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lk
dGgoKSkgLyAyIH07CisKKyAgICBpZiAodHlwZSA9PSB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI6
OlR5cGU6OmtJMDEwKQorICAgICAgICByZXR1cm4gU2hhcmVkVmlkZW9GcmFtZUluZm8geyBrQ1ZQ
aXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyMTBCaVBsYW5hckZ1bGxSYW5nZSwKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGZyYW1lLmhlaWdodCgpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLndpZHRoKCkg
KiAyKSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1lLmhlaWdodCgpKSwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGZyYW1lLndpZHRoKCkpIH07CisKKyAgICByZXR1cm4gU2hhcmVkVmlkZW9GcmFtZUluZm8g
eyB9OworfQorCitib29sIFNoYXJlZFZpZGVvRnJhbWVJbmZvOjp3cml0ZVZpZGVvRnJhbWUoY29u
c3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwgdWludDhfdCogZGF0YSkKK3sKKyAgICBBU1NF
UlQobV9idWZmZXJUeXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJG
dWxsUmFuZ2UgfHwgbV9idWZmZXJUeXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3Ix
MEJpUGxhbmFyRnVsbFJhbmdlKTsKKyAgICByZXR1cm4gd2VicnRjOjpjb3B5VmlkZW9GcmFtZShm
cmFtZSwgZGF0YSk7Cit9CisjZW5kaWYKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKaW5kZXggYjUwMzk4MTc1MzA0MDVh
YjAwYWIwYmM3Mjg5NzU3NGUzZDhjMzVlOC4uYzViMmRkZjllNmNjNDA4YTBjOGY2MjAwMjlhMWFi
MWNjZjdjMTM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVtb3RlVmlkZW9TYW1wbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcApAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgaW5saW5l
IHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IHRyYW5zZmVyQkdSQVBpeGVsQnVmZmVyVG9JT1N1
cmZhY2UoQ1ZQaQogI2VuZGlmCiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBs
ZT4gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShNZWRpYVNhbXBsZSYgc2FtcGxlKQorc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKE1l
ZGlhU2FtcGxlJiBzYW1wbGUsIFNob3VsZENoZWNrRm9ySU9TdXJmYWNlIHNob3VsZENoZWNrRm9y
SU9TdXJmYWNlKQogewogICAgIEFTU0VSVChzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS50eXBlID09
IFBsYXRmb3JtU2FtcGxlOjpDTVNhbXBsZUJ1ZmZlclR5cGUpOwogCkBAIC05Nyw3ICs5Nyw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gUmVtb3RlVmlkZW9TYW1wbGU6OmNy
ZWF0ZShNZWRpYVNhbXBsZSYgc2FtcGxlCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
PiBpb1N1cmZhY2U7CiAgICAgYXV0byBzdXJmYWNlID0gQ1ZQaXhlbEJ1ZmZlckdldElPU3VyZmFj
ZShpbWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAgaWYgKCFzdXJmYWNlKSB7CisgICAgaWYgKCFzdXJm
YWNlICYmIHNob3VsZENoZWNrRm9ySU9TdXJmYWNlID09IFNob3VsZENoZWNrRm9ySU9TdXJmYWNl
OjpZZXMpIHsKICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBjYW52YXMgZGF0YSB0aGF0IGlz
IFJHQkEsIG5vdCBJT1N1cmZhY2UgYmFja2VkLgogICAgICAgICBhdXRvIHBpeGVsRm9ybWF0VHlw
ZSA9IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUoaW1hZ2VCdWZmZXIuZ2V0KCkpOwog
ICAgICAgICBpZiAocGl4ZWxGb3JtYXRUeXBlICE9IGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEp
IHsKQEAgLTExNSwxMCArMTE1LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBs
ZT4gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShNZWRpYVNhbXBsZSYgc2FtcGxlCiAgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2Ft
cGxlKHN1cmZhY2UsIFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24o
KSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
VmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+JiYgaW1hZ2VCdWZmZXIsIE1lZGlhVGltZSYmIHByZXNlbnRhdGlvblRpbWUsIE1l
ZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQorc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKFJldGFpblB0cjxDVlBpeGVs
QnVmZmVyUmVmPiYmIGltYWdlQnVmZmVyLCBNZWRpYVRpbWUmJiBwcmVzZW50YXRpb25UaW1lLCBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgU2hvdWxkQ2hlY2tGb3JJT1N1cmZh
Y2Ugc2hvdWxkQ2hlY2tGb3JJT1N1cmZhY2UpCiB7CiAgICAgYXV0byBzdXJmYWNlID0gQ1ZQaXhl
bEJ1ZmZlckdldElPU3VyZmFjZShpbWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAgaWYgKCFzdXJmYWNl
KSB7CisgICAgaWYgKCFzdXJmYWNlICYmIHNob3VsZENoZWNrRm9ySU9TdXJmYWNlID09IFNob3Vs
ZENoZWNrRm9ySU9TdXJmYWNlOjpZZXMpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWEsICJSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlOiBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNl
IHJldHVybmVkIG51bGxwdHIiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1w
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxl
LmgKaW5kZXggMDgxZTIzNTY1YWNjNDg0MGE4MDRjN2QwNzRlNmRmMjA1OTgzOWYxNy4uY2QxMGQ5
YzA1Y2I4YTFkODZlNjQzZDVhM2ZhYWFlNWM3NGYwODc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCkBAIC00Niw5ICs0
NiwxMiBAQCBwdWJsaWM6CiAgICAgUmVtb3RlVmlkZW9TYW1wbGUmIG9wZXJhdG9yPShSZW1vdGVW
aWRlb1NhbXBsZSYmKSA9IGRlZmF1bHQ7CiAgICAgflJlbW90ZVZpZGVvU2FtcGxlKCkgPSBkZWZh
dWx0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVW
aWRlb1NhbXBsZT4gY3JlYXRlKE1lZGlhU2FtcGxlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gY3JlYXRlKFJldGFpblB0cjxD
VlBpeGVsQnVmZmVyUmVmPiYmLCBNZWRpYVRpbWUmJiBwcmVzZW50YXRpb25UaW1lLCBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lKTsK
KyAgICBlbnVtIGNsYXNzIFNob3VsZENoZWNrRm9ySU9TdXJmYWNlIHsgTm8sIFllcyB9OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+
IGNyZWF0ZShNZWRpYVNhbXBsZSYsIFNob3VsZENoZWNrRm9ySU9TdXJmYWNlID0gU2hvdWxkQ2hl
Y2tGb3JJT1N1cmZhY2U6Olllcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gY3JlYXRlKFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiYmLCBNZWRpYVRpbWUmJiBwcmVzZW50YXRpb25UaW1lLCBNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBTaG91bGRDaGVja0Zv
cklPU3VyZmFjZSA9IFNob3VsZENoZWNrRm9ySU9TdXJmYWNlOjpZZXMpOworCiAgICAgV0VCQ09S
RV9FWFBPUlQgSU9TdXJmYWNlUmVmIHN1cmZhY2UoKSBjb25zdDsKKyAgICBDVlBpeGVsQnVmZmVy
UmVmIGltYWdlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsgfQog
CiAgICAgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3NQcm94eS5oCmluZGV4IGVlYzhkNjZmYWFiYWZiNzk5YjBmZGVkYzQ1OWM0ZGI1YTdmMjJl
M2IuLmM3NzJjYjc3NjBmMmQ1ODI5YWZjZDJiODVmNTkxM2EzMGMwMDc0NDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
LmgKQEAgLTMxLDExICszMSwxNCBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJSVENEZWNvZGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0VuY29kZXJJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSAiU2hhcmVkVmlkZW9G
cmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7CitjbGFzcyBTZW1hcGhvcmU7CiB9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTUwLDYgKzUzLDcgQEAgdXNpbmcgTG9jYWxFbmNvZGVyID0gdm9p
ZCo7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czsKK2NsYXNzIFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI7CiAKIGNsYXNzIExpYldlYlJUQ0NvZGVj
c1Byb3h5IDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6VGhyZWFkTWVzc2FnZVJlY2VpdmVyUmVm
Q291bnRlZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC04MSwxNiArODUsMjEg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVFbmNvZGVyKFJUQ0VuY29kZXJJZGVudGlm
aWVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBzdGFydEJpdHJh
dGUsIHVuc2lnbmVkIG1heEJpdHJhdGUsIHVuc2lnbmVkIG1pbkJpdHJhdGUsIHVpbnQzMl90IG1h
eEZyYW1lcmF0ZSk7CiAgICAgdm9pZCBlbmNvZGVGcmFtZShSVENFbmNvZGVySWRlbnRpZmllciwg
V2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiwgdWludDMyX3QgdGltZVN0YW1wLCBib29sIHNo
b3VsZEVuY29kZUFzS2V5RnJhbWUpOwogICAgIHZvaWQgc2V0RW5jb2RlUmF0ZXMoUlRDRW5jb2Rl
cklkZW50aWZpZXIsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSk7CisgICAg
dm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKFJUQ0VuY29kZXJJZGVudGlmaWVyLCBJ
UEM6OlNlbWFwaG9yZSYmKTsKKyAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoUlRD
RW5jb2RlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CiAgICAg
dm9pZCBzZXRSVENMb2dnaW5nTGV2ZWwoV1RGTG9nTGV2ZWwpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5
UmVmIGlvU3VyZmFjZVBpeGVsQnVmZmVyQ3JlYXRpb25PcHRpb25zKElPU3VyZmFjZVJlZik7Ci0K
ICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M7CiAKKyAgICBzdHJ1Y3QgRW5jb2RlciB7CisgICAgICAgIHdlYnJ0Yzo6TG9jYWxFbmNvZGVy
IHdlYnJ0Y0VuY29kZXIgeyBudWxscHRyIH07CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFy
ZWRWaWRlb0ZyYW1lUmVhZGVyPiBmcmFtZVJlYWRlcjsKKyAgICB9OworICAgIEVuY29kZXIqIGZp
bmRFbmNvZGVyV2l0aG91dExvY2soUlRDRW5jb2RlcklkZW50aWZpZXIpOworCiAgICAgbXV0YWJs
ZSBMb2NrIG1fbG9jazsKICAgICBIYXNoTWFwPFJUQ0RlY29kZXJJZGVudGlmaWVyLCB3ZWJydGM6
OkxvY2FsRGVjb2Rlcj4gbV9kZWNvZGVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7IC8v
IE9ubHkgbW9kaWZpZWQgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1ZXVlIGJ1dCBtYXkgZ2V0IGFj
Y2Vzc2VkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotICAgIEhhc2hNYXA8UlRDRW5jb2RlcklkZW50
aWZpZXIsIHdlYnJ0Yzo6TG9jYWxFbmNvZGVyPiBtX2VuY29kZXJzIFdURl9HVUFSREVEX0JZX0xP
Q0sobV9sb2NrKTsgLy8gT25seSBtb2RpZmllZCBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUg
YnV0IG1heSBnZXQgYWNjZXNzZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCi0KKyAgICBIYXNoTWFw
PFJUQ0VuY29kZXJJZGVudGlmaWVyLCBFbmNvZGVyPiBtX2VuY29kZXJzIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9sb2NrKTsgLy8gT25seSBtb2RpZmllZCBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVl
dWUgYnV0IG1heSBnZXQgYWNjZXNzZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAgICAgUmVmPFdv
cmtRdWV1ZT4gbV9xdWV1ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDgxMzI5NTAwZTZlOWQ1M2ZmMjc0ZjUzZTcyYzJmNjJhMDNiMmVlMDkuLjZiYjIwODYzOGRj
MjJhODllZmI4OWM5YWY5MDZhMDNlYTY5ZTc0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMzYsNiArMzYsOCBAQCBtZXNzYWdlcyAtPiBMaWJXZWJSVENDb2RlY3NQcm94
eSBOb3RSZWZDb3VudGVkIHsKICAgICBJbml0aWFsaXplRW5jb2RlcihXZWJLaXQ6OlJUQ0VuY29k
ZXJJZGVudGlmaWVyIGlkLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNpZ25l
ZCBzdGFydEJpdHJhdGUsIHVuc2lnbmVkIG1heEJpdHJhdGUsIHVuc2lnbmVkIG1pbkJpdHJhdGUs
IHVpbnQzMl90IG1heEZyYW1lcmF0ZSkKICAgICBFbmNvZGVGcmFtZShXZWJLaXQ6OlJUQ0VuY29k
ZXJJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSBzYW1wbGUsIHVpbnQz
Ml90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQogICAgIFNldEVuY29k
ZVJhdGVzKFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIHVpbnQzMl90IGJpdFJhdGUs
IHVpbnQzMl90IGZyYW1lUmF0ZSkKKyAgICBTZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKFdl
YktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXIgaWQsIElQQzo6U2VtYXBob3JlIHNlbWFwaG9yZSkK
KyAgICBTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KFdlYktpdDo6UlRDRW5jb2RlcklkZW50aWZp
ZXIgaWQsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSkKICAg
ICBTZXRSVENMb2dnaW5nTGV2ZWwoV1RGTG9nTGV2ZWwgbGV2ZWwpCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1t
CmluZGV4IDMwZmEzMGNiM2RjOWM5YjQwMWYwYzRlY2ZjZTIxMDgxZWM0NmU1YzEuLmJhYmZjMjlj
YTcyYmZiZWRmOGQ1NDg0NWEyMzc1ZmZlNGMwYWE4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtMzIs
NiArMzIsNyBAQAogI2ltcG9ydCAiR1BVUHJvY2Vzcy5oIgogI2ltcG9ydCAiTGliV2ViUlRDQ29k
ZWNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIkxpYldlYlJUQ0NvZGVjc1Byb3h5TWVzc2FnZXMuaCIK
KyNpbXBvcnQgIlNoYXJlZFZpZGVvRnJhbWUuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9DVlV0aWxpdGllcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9MaWJXZWJSVENQcm92aWRlci5oPgpAQCAtNjksOCArNzAsOCBAQCB2b2lkIExpYldlYlJUQ0Nv
ZGVjc1Byb3h5OjpjbG9zZSgpCiAgICAgICAgIGZvciAoYXV0byBkZWNvZGVyIDogZGVjb2RlcnMu
dmFsdWVzKCkpCiAgICAgICAgICAgICB3ZWJydGM6OnJlbGVhc2VMb2NhbERlY29kZXIoZGVjb2Rl
cik7CiAgICAgICAgIGF1dG8gZW5jb2RlcnMgPSBXVEZNb3ZlKG1fZW5jb2RlcnMpOwotICAgICAg
ICBmb3IgKGF1dG8gZW5jb2RlciA6IGVuY29kZXJzLnZhbHVlcygpKQotICAgICAgICAgICAgd2Vi
cnRjOjpyZWxlYXNlTG9jYWxFbmNvZGVyKGVuY29kZXIpOworICAgICAgICBmb3IgKGF1dG8mIGVu
Y29kZXIgOiBlbmNvZGVycy52YWx1ZXMoKSkKKyAgICAgICAgICAgIHdlYnJ0Yzo6cmVsZWFzZUxv
Y2FsRW5jb2RlcihlbmNvZGVyLndlYnJ0Y0VuY29kZXIpOwogICAgIH0pOwogfQogCkBAIC0xNTks
NyArMTYwLDcgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlRW5jb2RlcihSVENF
bmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdAogICAgICAgICBjb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6OkNvbXBsZXRlZEVuY29kaW5nIHsgaWRlbnRp
ZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgYnVmZmVyLCBzaXplIH0sIGluZm8gfSwgMCk7CiAg
ICAgfSkuZ2V0KCkpOwogICAgIHdlYnJ0Yzo6c2V0TG9jYWxFbmNvZGVyTG93TGF0ZW5jeShlbmNv
ZGVyLCB1c2VMb3dMYXRlbmN5KTsKLSAgICBtX2VuY29kZXJzLmFkZChpZGVudGlmaWVyLCBlbmNv
ZGVyKTsKKyAgICBtX2VuY29kZXJzLmFkZChpZGVudGlmaWVyLCBFbmNvZGVyIHsgZW5jb2Rlciwg
bnVsbHB0ciB9KTsKIH0KIAogdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6cmVsZWFzZUVuY29k
ZXIoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKQEAgLTE2NywyMSArMTY4LDMwIEBA
IHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnJlbGVhc2VFbmNvZGVyKFJUQ0VuY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwogICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBBU1NFUlQobV9lbmNvZGVycy5jb250YWlucyhp
ZGVudGlmaWVyKSk7Ci0gICAgaWYgKGF1dG8gZW5jb2RlciA9IG1fZW5jb2RlcnMudGFrZShpZGVu
dGlmaWVyKSkKLSAgICAgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxFbmNvZGVyKGVuY29kZXIpOwor
ICAgIGF1dG8gZW5jb2RlciA9IG1fZW5jb2RlcnMudGFrZShpZGVudGlmaWVyKTsKKyAgICBpZiAo
ZW5jb2Rlci53ZWJydGNFbmNvZGVyKQorICAgICAgICB3ZWJydGM6OnJlbGVhc2VMb2NhbEVuY29k
ZXIoZW5jb2Rlci53ZWJydGNFbmNvZGVyKTsKIH0KIAogLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNv
bnMsIHRoaXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRo
aXMgaXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29k
ZWNzUXVldWUKIC8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVl
dWUuCi12b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5Ojppbml0aWFsaXplRW5jb2RlcihSVENFbmNv
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0
LCB1bnNpZ25lZCBzdGFydEJpdHJhdGUsIHVuc2lnbmVkIG1heEJpdHJhdGUsIHVuc2lnbmVkIG1p
bkJpdHJhdGUsIHVpbnQzMl90IG1heEZyYW1lcmF0ZSkgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVU
WV9BTkFMWVNJUwordm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6aW5pdGlhbGl6ZUVuY29kZXIo
UlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90
IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNp
Z25lZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpCiB7Ci0gICAgQVNTRVJUKCFp
c01haW5SdW5Mb29wKCkpOwotICAgIEFTU0VSVChtX2VuY29kZXJzLmNvbnRhaW5zKGlkZW50aWZp
ZXIpKTsKLSAgICBhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLmdldChpZGVudGlmaWVyKTsKKyAg
ICBhdXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsKICAg
ICBpZiAoIWVuY29kZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYnJ0Yzo6aW5pdGlhbGl6
ZUxvY2FsRW5jb2RlcihlbmNvZGVyLCB3aWR0aCwgaGVpZ2h0LCBzdGFydEJpdHJhdGUsIG1heEJp
dHJhdGUsIG1pbkJpdHJhdGUsIG1heEZyYW1lcmF0ZSk7CisgICAgd2VicnRjOjppbml0aWFsaXpl
TG9jYWxFbmNvZGVyKGVuY29kZXItPndlYnJ0Y0VuY29kZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0
Qml0cmF0ZSwgbWF4Qml0cmF0ZSwgbWluQml0cmF0ZSwgbWF4RnJhbWVyYXRlKTsKK30KKworTGli
V2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZXIqIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpmaW5kRW5j
b2RlcldpdGhvdXRMb2NrKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIFdURl9JR05P
UkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBBU1NFUlQoIWlzTWFpblJ1bkxvb3Ao
KSk7CisgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIGF1
dG8gaXRlcmF0b3IgPSBtX2VuY29kZXJzLmZpbmQoaWRlbnRpZmllcik7CisgICAgaWYgKGl0ZXJh
dG9yID09IG1fZW5jb2RlcnMuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiAmaXRlcmF0b3ItPnZhbHVlOwogfQogCiBzdGF0aWMgaW5saW5lIHdlYnJ0Yzo6VmlkZW9S
b3RhdGlvbiB0b1dlYlJUQ1ZpZGVvUm90YXRpb24oV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb24gcm90YXRpb24pCkBAIC0yMDIsMzQgKzIxMiw2NiBAQCBzdGF0aWMgaW5saW5lIHdl
YnJ0Yzo6VmlkZW9Sb3RhdGlvbiB0b1dlYlJUQ1ZpZGVvUm90YXRpb24oV2ViQ29yZTo6TWVkaWFT
YW1wbGU6OgogCiAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBmdW5jdGlvbiBhY2Nl
c3NlcyBtX2VuY29kZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZlIGJlY2F1c2UgdGhp
cyBmdW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQogLy8gYW5kIG1fZW5j
b2RlcnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KLXZvaWQgTGliV2ViUlRDQ29k
ZWNzUHJveHk6OmVuY29kZUZyYW1lKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdl
YkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgc2FtcGxlLCB1aW50MzJfdCB0aW1lU3RhbXAsIGJv
b2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFM
WVNJUwordm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZW5jb2RlRnJhbWUoUlRDRW5jb2Rlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiBzYW1wbGUs
IHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKQogewotICAg
IEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBBU1NFUlQobV9lbmNvZGVycy5jb250YWlu
cyhpZGVudGlmaWVyKSk7Ci0gICAgYXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy5nZXQoaWRlbnRp
Zmllcik7CisgICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRp
Zmllcik7CiAgICAgaWYgKCFlbmNvZGVyKQogICAgICAgICByZXR1cm47CiAKICNpZiAhUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCi0gICAgaWYgKCFzYW1wbGUuc3VyZmFjZSgpKQotICAgICAgICByZXR1
cm47Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIo
c2FtcGxlLnN1cmZhY2UoKSk7CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVs
QnVmZmVyOworICAgIGlmIChzYW1wbGUuc3VyZmFjZSgpKSB7CisgICAgICAgIGlmIChhdXRvIGJ1
ZmZlciA9IFdlYkNvcmU6OmNyZWF0ZUNWUGl4ZWxCdWZmZXIoc2FtcGxlLnN1cmZhY2UoKSkpCisg
ICAgICAgICAgICBwaXhlbEJ1ZmZlciA9IFdURk1vdmUoKmJ1ZmZlcik7CisgICAgfSBlbHNlIGlm
IChlbmNvZGVyLT5mcmFtZVJlYWRlcikKKyAgICAgICAgcGl4ZWxCdWZmZXIgPSBlbmNvZGVyLT5m
cmFtZVJlYWRlci0+cmVhZCgpOworCiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwotICAgIHdlYnJ0Yzo6ZW5jb2RlTG9jYWxFbmNvZGVyRnJhbWUoZW5jb2RlciwgcGl4ZWxC
dWZmZXItPmdldCgpLCBzYW1wbGUudGltZSgpLnRvVGltZVNjYWxlKDEwMDAwMDApLnRpbWVWYWx1
ZSgpLCB0aW1lU3RhbXAsIHRvV2ViUlRDVmlkZW9Sb3RhdGlvbihzYW1wbGUucm90YXRpb24oKSks
IHNob3VsZEVuY29kZUFzS2V5RnJhbWUpOworCisgICAgd2VicnRjOjplbmNvZGVMb2NhbEVuY29k
ZXJGcmFtZShlbmNvZGVyLT53ZWJydGNFbmNvZGVyLCBwaXhlbEJ1ZmZlci5nZXQoKSwgc2FtcGxl
LnRpbWUoKS50b1RpbWVTY2FsZSgxMDAwMDAwKS50aW1lVmFsdWUoKSwgdGltZVN0YW1wLCB0b1dl
YlJUQ1ZpZGVvUm90YXRpb24oc2FtcGxlLnJvdGF0aW9uKCkpLCBzaG91bGRFbmNvZGVBc0tleUZy
YW1lKTsKICNlbmRpZgogfQogCiAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBmdW5j
dGlvbiBhY2Nlc3NlcyBtX2VuY29kZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZlIGJl
Y2F1c2UgdGhpcyBmdW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQogLy8g
YW5kIG1fZW5jb2RlcnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KLXZvaWQgTGli
V2ViUlRDQ29kZWNzUHJveHk6OnNldEVuY29kZVJhdGVzKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIHVpbnQzMl90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkgV1RGX0lHTk9S
RVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwordm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6c2V0
RW5jb2RlUmF0ZXMoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgYml0
UmF0ZSwgdWludDMyX3QgZnJhbWVSYXRlKQogewotICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgp
KTsKLSAgICBhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLmdldChpZGVudGlmaWVyKTsKKyAgICBh
dXRvKiBlbmNvZGVyID0gZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsKICAgICBp
ZiAoIWVuY29kZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYnJ0Yzo6c2V0TG9jYWxFbmNv
ZGVyUmF0ZXMoZW5jb2RlciwgYml0UmF0ZSwgZnJhbWVSYXRlKTsKKyAgICB3ZWJydGM6OnNldExv
Y2FsRW5jb2RlclJhdGVzKGVuY29kZXItPndlYnJ0Y0VuY29kZXIsIGJpdFJhdGUsIGZyYW1lUmF0
ZSk7Cit9CisKKy8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vz
c2VzIG1fZW5jb2RlcnMgd2l0aG91dCBsb2NraW5nLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlz
IGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1ZXVlCisvLyBhbmQgbV9lbmNv
ZGVycyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlzIHF1ZXVlLgordm9pZCBMaWJXZWJSVENDb2Rl
Y3NQcm94eTo6c2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZShSVENFbmNvZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKK3sKKyAgICBhdXRvKiBl
bmNvZGVyID0gZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKTsKKyAgICBpZiAoIWVu
Y29kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZW5jb2Rlci0+ZnJhbWVSZWFkZXIp
CisgICAgICAgIGVuY29kZXItPmZyYW1lUmVhZGVyID0gbWFrZVVuaXF1ZTxTaGFyZWRWaWRlb0Zy
YW1lUmVhZGVyPigpOworICAgIGVuY29kZXItPmZyYW1lUmVhZGVyLT5zZXRTZW1hcGhvcmUoV1RG
TW92ZShzZW1hcGhvcmUpKTsKK30KKworLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMg
ZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMgc2Fm
ZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVldWUK
Ky8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUuCit2b2lk
IExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KFJUQ0VuY29k
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiBp
cGNIYW5kbGUpCit7CisgICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyV2l0aG91dExvY2so
aWRlbnRpZmllcik7CisgICAgaWYgKCFlbmNvZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIG1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGlmICghbWVtb3J5KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIWVuY29kZXItPmZyYW1lUmVhZGVyKQorICAgICAgICBlbmNvZGVy
LT5mcmFtZVJlYWRlciA9IG1ha2VVbmlxdWU8U2hhcmVkVmlkZW9GcmFtZVJlYWRlcj4oKTsKKyAg
ICBlbmNvZGVyLT5mcmFtZVJlYWRlci0+c2V0U2hhcmVkTWVtb3J5KG1lbW9yeS5yZWxlYXNlTm9u
TnVsbCgpKTsKIH0KIAogYm9vbCBMaWJXZWJSVENDb2RlY3NQcm94eTo6YWxsb3dzRXhpdFVuZGVy
TWVtb3J5UHJlc3N1cmUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDdiZmVlMDgz
ZmNmOTIyN2M3ZjVmODQ5NmQ5N2VlOGFiOTBlNWFhMWYuLmY1N2Q4NTNmZmJmNGMyODM3NGRmOGIx
Zjc2NzM3NzZlZDNmOGVkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI0NCw2ICsyNDQs
OCBAQCBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1t
CiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNh
Y3Rpb24uY3BwCiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1VJU3RhdGUu
Y3BwCiAKK1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcAorCiBVSVBy
b2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tCiBVSVByb2Nlc3MvQXBwbGljYXRpb25T
dGF0ZVRyYWNrZXIubW0KIFVJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2Ft
cGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDc3OTExOGJkMmYzZTAzMmNhODdjMDc0ZDJlNmIwZGJlNTQ5YjY3ZWIuLjc5MTc4
MWM5NjAxZDMzODJjMjFmYzU2NTU5MDA0ZTU4Mzc5NjMyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDE1MCw2ICs0MTUwLDggQEAK
IAkJNDFEMTI5RDkxRjNEMTAxNDAwRDE1RTQ3IC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxRDVDNkQ4MjM4RUIyMEQwMEI5QjNDQiAvKiBTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUQ1QzZEOTIzOEVCMjBFMDBCOUIzQ0IgLyogU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MURD
MDRGODI3QTgxNkJCMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaGFyZWRWaWRlb0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxREMw
NEY5MjdBODE2QkIwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXJlZFZpZGVvRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MURDNDU5NDFFM0Q2RTFFMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtSVENQcm92aWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MURDNDU5NTFFM0Q2RTFFMDBCMTFGNTEgLyogTmV0d29y
a1JUQ1Byb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5l
dHdvcmtSVENQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxREM0
NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzIwMCw3ICs3MjAyLDYgQEAKIAkJCQk3QUZCRDM2
RTIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5jcHAgKi8sCiAJCQkJN0FGQkQz
NkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLywKIAkJCQlCQ0M0M0FC
ODEyN0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcCAqLywKLQkJCQlC
Q0M0M0FCOTEyN0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmggKi8sCiAJ
CQkJNDlFQ0E0MUIyM0ZDQTQ4NjAwMjMzNThEIC8qIFBvbGljeURlY2lzaW9uLmggKi8sCiAJCQkJ
RTE4QzkyRjMxMkRCOUU3MTAwQ0YyQUVCIC8qIFByaW50SW5mby5jcHAgKi8sCiAJCQkJRTFDQzFC
OEUxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oICovLApAQCAtNzIyMCw2ICs3MjIxLDcg
QEAKIAkJCQkyRDY1RDE5NjI3NEI4RTg0MDA5QzQxMDEgLyogU2Nyb2xsaW5nQWNjZWxlcmF0aW9u
Q3VydmUuY3BwICovLAogCQkJCTJENjVEMTk1Mjc0QjhFODQwMDlDNDEwMSAvKiBTY3JvbGxpbmdB
Y2NlbGVyYXRpb25DdXJ2ZS5oICovLAogCQkJCTVDODBCM0REMjM2OTBGMTAwMDg2RTZERSAvKiBT
ZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmNwcCAqLywKKwkJCQlCQ0M0M0FCOTEyN0I5
NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmggKi8sCiAJCQkJNUM4MEIzREIy
MzY5MEQ4RDAwODZFNkRFIC8qIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuaCAqLywK
IAkJCQkxQUZERTY1NzE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRlLmNwcCAqLywKIAkJ
CQkxQUZERTY1ODE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRlLmggKi8sCkBAIC05MjAw
LDYgKzkyMDIsOCBAQAogCQkJCTQxRkNENkJDMjNDRTAzMTgwMEM2MjU2NyAvKiBTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJJZGVudGlmaWVyLmggKi8sCiAJCQkJNDEwMjRGQzEyM0NGMTA0NTAwRkRG
OThFIC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwICovLAogCQkJCTQxMDI0
RkMwMjNDRjEwNDUwMEZERjk4RSAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgg
Ki8sCisJCQkJNDFEQzA0RjkyN0E4MTZCQjAwOENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWUuY3Bw
ICovLAorCQkJCTQxREMwNEY4MjdBODE2QkIwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IHdlYnJ0YzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLmNwcAppbmRleCA5ZDVmZDBkMTU2MmNiNDQ3NzYwNzk4NTk4NWYxZDZmOTI5NWNl
MmRkLi5hZTIyZDg5MzczNGZjNTFmOTY4Zjc0N2Y3ZWRkYjE3MWI5OGEwZGEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVj
cy5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6ZW5zdXJlR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWRXaXRoTG9jaygpCiAgICAgbV9jb25uZWN0aW9u
LT5hZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKIAogICAgIGlmIChtX2xvZ2dpbmdMZXZlbCkKLSAg
ICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6
U2V0UlRDTG9nZ2luZ0xldmVsKCptX2xvZ2dpbmdMZXZlbCksIDApOworICAgICAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpTZXRSVENMb2dnaW5n
TGV2ZWwgeyAqbV9sb2dnaW5nTGV2ZWwgfSwgMCk7CiB9CiAKIC8vIE1heSBiZSBjYWxsZWQgb24g
YW55IHRocmVhZC4KQEAgLTQxOCw2ICs0MTgsMjIgQEAgaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6
OmluaXRpYWxpemVFbmNvZGVyKEVuY29kZXImIGVuY29kZXIsIHVpbnQxNl90IHdpZHRoLCB1aW4K
ICAgICByZXR1cm4gMDsKIH0KIAorYm9vbCBMaWJXZWJSVENDb2RlY3M6OmNvcHlTaGFyZWRWaWRl
b0ZyYW1lKEVuY29kZXImIGVuY29kZXIsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpCit7
CisgICAgcmV0dXJuIGVuY29kZXIuc2hhcmVkVmlkZW9GcmFtZVdyaXRlci53cml0ZShwaXhlbEJ1
ZmZlciwKKyAgICAgICAgWyZlbmNvZGVyXShhdXRvJiBzZW1hcGhvcmUpIHsgZW5jb2Rlci5jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6U2V0U2hhcmVkVmlk
ZW9GcmFtZVNlbWFwaG9yZSB7IGVuY29kZXIuaWRlbnRpZmllciwgc2VtYXBob3JlIH0sIDApOyB9
LAorICAgICAgICBbJmVuY29kZXJdKGF1dG8mIGhhbmRsZSkgeyBlbmNvZGVyLmNvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpTZXRTaGFyZWRWaWRlb0ZyYW1l
TWVtb3J5IHsgZW5jb2Rlci5pZGVudGlmaWVyLCBoYW5kbGUgfSwgMCk7IH0KKyAgICApOworfQor
Citib29sIExpYldlYlJUQ0NvZGVjczo6Y29weVNoYXJlZFZpZGVvRnJhbWUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSkKK3sKKyAgICByZXR1cm4gZW5j
b2Rlci5zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyLndyaXRlKGZyYW1lLAorICAgICAgICBbJmVuY29k
ZXJdKGF1dG8mIHNlbWFwaG9yZSkgeyBlbmNvZGVyLmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpTZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlIHsgZW5j
b2Rlci5pZGVudGlmaWVyLCBzZW1hcGhvcmUgfSwgMCk7IH0sCisgICAgICAgIFsmZW5jb2Rlcl0o
YXV0byYgaGFuZGxlKSB7IGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2Vi
UlRDQ29kZWNzUHJveHk6OlNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkgeyBlbmNvZGVyLmlkZW50
aWZpZXIsIGhhbmRsZSB9LCAwKTsgfQorICAgICk7Cit9CisKIGludDMyX3QgTGliV2ViUlRDQ29k
ZWNzOjplbmNvZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVvRnJh
bWUmIGZyYW1lLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpCiB7CiAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKQEAgLTQyNSwzMyArNDQxLDE3IEBAIGludDMyX3Qg
TGliV2ViUlRDQ29kZWNzOjplbmNvZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCB3ZWJy
dGM6OlZpZGVvRnJhbWUmCiAgICAgaWYgKCFlbmNvZGVyLmNvbm5lY3Rpb24pCiAgICAgICAgIHJl
dHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CiAKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0g
YWRvcHRDRih3ZWJydGM6OmNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lLCBbXShzaXpl
X3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKSAt
PiBDVlBpeGVsQnVmZmVyUmVmIHsKLSAgICAgICAgT1NUeXBlIHBvb2xCdWZmZXJUeXBlOwotICAg
ICAgICBzd2l0Y2ggKGJ1ZmZlclR5cGUpIHsKLSAgICAgICAgY2FzZSB3ZWJydGM6OkJ1ZmZlclR5
cGU6Okk0MjA6Ci0gICAgICAgICAgICBwb29sQnVmZmVyVHlwZSA9IGtDVlBpeGVsRm9ybWF0VHlw
ZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSB3ZWJydGM6OkJ1ZmZlclR5cGU6OkkwMTA6Ci0gICAgICAgICAgICBwb29sQnVmZmVy
VHlwZSA9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlOwot
ICAgICAgICB9Ci0gICAgICAgIGF1dG8gcGl4ZWxCdWZmZXJQb29sID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCkucGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQs
IHBvb2xCdWZmZXJUeXBlKTsKLSAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpCi0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6Y3JlYXRlQ1ZQ
aXhlbEJ1ZmZlckZyb21Qb29sKHBpeGVsQnVmZmVyUG9vbCkudmFsdWVfb3IobnVsbHB0cikubGVh
a1JlZigpOwotICAgIH0pKTsKLQotICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgIHJldHVy
biBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7Ci0KLSAgICBhdXRvIHNhbXBsZSA9IFJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGUocGl4ZWxCdWZmZXIuZ2V0KCksIE1lZGlhVGltZShmcmFtZS50aW1l
c3RhbXBfdXMoKSAqIDEwMDAsIDEwMDAwMDApLCB0b01lZGlhU2FtcGxlVmlkZW9Sb3RhdGlvbihm
cmFtZS5yb3RhdGlvbigpKSk7Ci0gICAgaWYgKCFzYW1wbGUpIHsKLSAgICAgICAgLy8gRklYTUU6
IE9wdGltaXplIHRoaXMgY29kZSBwYXRoLCBjdXJyZW50bHkgd2UgaGF2ZSBub24gQkdSQSBmb3Ig
bXV0ZWQgZnJhbWVzIGF0IGxlYXN0LgotICAgICAgICBzYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBs
ZTo6Y3JlYXRlKGNvbnZlcnRUb0JHUkEocGl4ZWxCdWZmZXIuZ2V0KCkpLCBNZWRpYVRpbWUoZnJh
bWUudGltZXN0YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAwKSwgdG9NZWRpYVNhbXBsZVZpZGVvUm90
YXRpb24oZnJhbWUucm90YXRpb24oKSkpOwotICAgICAgICBpZiAoIXNhbXBsZSkgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRvIGNvbnZlcnQgcmVtb3Rl
IHZpZGVvIHNhbXBsZSIpOworICAgIGF1dG8gYnVmZmVyID0gYWRvcHRDRih3ZWJydGM6OnBpeGVs
QnVmZmVyRnJvbUZyYW1lKGZyYW1lKSk7CisgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgLy8g
YnVmZmVyIGlzIG5vdCBuYXRpdmUsIHdlIG5lZWQgdG8gY29weSB0byBzaGFyZWQgdmlkZW8gZnJh
bWUuCisgICAgICAgIGlmICghY29weVNoYXJlZFZpZGVvRnJhbWUoZW5jb2RlciwgZnJhbWUpKQor
ICAgICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKKyAgICB9CisgICAg
YXV0byBzYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgTWVk
aWFUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpICogMTAwMCwgMTAwMDAwMCksIHRvTWVkaWFTYW1w
bGVWaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkpLCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hv
dWxkQ2hlY2tGb3JJT1N1cmZhY2U6Ok5vKTsKKyAgICBpZiAoIXNhbXBsZS0+c3VyZmFjZSgpKSB7
CisgICAgICAgIC8vIGJ1ZmZlciBpcyBub3QgSU9TdXJmYWNlLCB3ZSBuZWVkIHRvIGNvcHkgdG8g
c2hhcmVkIHZpZGVvIGZyYW1lLgorICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRlb0ZyYW1lKGVu
Y29kZXIsIGJ1ZmZlci5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NP
REVDX0VSUk9SOwotICAgICAgICB9CiAgICAgfQogCiAgICAgZW5jb2Rlci5jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6RW5jb2RlRnJhbWUgeyBlbmNvZGVy
LmlkZW50aWZpZXIsICpzYW1wbGUsIGZyYW1lLnRpbWVzdGFtcCgpLCBzaG91bGRFbmNvZGVBc0tl
eUZyYW1lIH0sIDApOwpAQCAtNTM1LDYgKzUzNSw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpn
cHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikKICAgICAg
ICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6
OkNyZWF0ZUVuY29kZXIgeyBlbmNvZGVyLT5pZGVudGlmaWVyLCBmb3JtYXROYW1lRnJvbVdlYlJU
Q0NvZGVjVHlwZShlbmNvZGVyLT5jb2RlY1R5cGUpLCBlbmNvZGVyLT5wYXJhbWV0ZXJzLCBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ0gyNjRMb3dMYXRlbmN5
RW5jb2RlckVuYWJsZWQoKSB9LCAwKTsKICAgICAgICAgICAgIGlmIChlbmNvZGVyLT5pbml0aWFs
aXphdGlvbkRhdGEpCiAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6SW5pdGlhbGl6ZUVuY29kZXIgeyBlbmNvZGVyLT5pZGVu
dGlmaWVyLCBlbmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEtPndpZHRoLCBlbmNvZGVyLT5pbml0
aWFsaXphdGlvbkRhdGEtPmhlaWdodCwgZW5jb2Rlci0+aW5pdGlhbGl6YXRpb25EYXRhLT5zdGFy
dEJpdFJhdGUsIGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YS0+bWF4Qml0UmF0ZSwgZW5jb2Rl
ci0+aW5pdGlhbGl6YXRpb25EYXRhLT5taW5CaXRSYXRlLCBlbmNvZGVyLT5pbml0aWFsaXphdGlv
bkRhdGEtPm1heEZyYW1lUmF0ZSB9LCAwKTsKKyAgICAgICAgICAgIGVuY29kZXItPnNoYXJlZFZp
ZGVvRnJhbWVXcml0ZXIgPSB7IH07CiAgICAgICAgICAgICBlbmNvZGVyLT5jb25uZWN0aW9uID0g
bV9jb25uZWN0aW9uLmdldCgpOwogICAgICAgICB9CiAgICAgICAgIGZvciAoYXV0byYgZGVjb2Rl
ciA6IG1fZGVjb2RlcnMudmFsdWVzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKaW5kZXggNDA4MzNlMDMwZWY1YjBl
ZTg5NGQ3ZjQ0YmU5OGNkNjc5ODFmNGEyYy4uNTY5MWUzODM3NzQxNjc4NWE3ZDQxMjRhZDE0NDk0
MGU3NzhiMmJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKQEAgLTMwLDkgKzMwLDExIEBACiAjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVQcm9j
ZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiUlRDRW5jb2RlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1l
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmg+CiAjaW5jbHVk
ZSA8bWFwPgogI2luY2x1ZGUgPHdlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fY29kZWNfdHlwZS5oPgpA
QCAtMTAxLDYgKzEwMyw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCogZW5jb2RlZEltYWdlQ2Fs
bGJhY2sgV1RGX0dVQVJERURfQllfTE9DSyhlbmNvZGVkSW1hZ2VDYWxsYmFja0xvY2spIHsgbnVs
bHB0ciB9OwogICAgICAgICBMb2NrIGVuY29kZWRJbWFnZUNhbGxiYWNrTG9jazsKICAgICAgICAg
UmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbjsKKyAgICAgICAgU2hhcmVkVmlkZW9G
cmFtZVdyaXRlciBzaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOwogICAgIH07CiAKICAgICBFbmNvZGVy
KiBjcmVhdGVFbmNvZGVyKFR5cGUsIGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0
cmluZz4mKTsKQEAgLTEzNSw2ICsxMzgsOSBAQCBwcml2YXRlOgogICAgIC8vIEdQVVByb2Nlc3ND
b25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2Uo
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKTsKIAorICAgIGJvb2wgY29weVNoYXJlZFZpZGVvRnJhbWUo
RW5jb2RlciYsIENWUGl4ZWxCdWZmZXJSZWYpOworICAgIGJvb2wgY29weVNoYXJlZFZpZGVvRnJh
bWUoRW5jb2RlciYsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpOworCiBwcml2YXRlOgogICAg
IEhhc2hNYXA8UlRDRGVjb2RlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4g
bV9kZWNvZGVyczsKICAgICBIYXNoU2V0PFJUQ0RlY29kZXJJZGVudGlmaWVyPiBtX2RlY29kaW5n
RXJyb3JzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
U2hhcmVkVmlkZW9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjM3MDdlYTAyYTkwM2FjNjEyMDUw
NDBhMWYxMjc1ZDgwMjY2OTc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAKQEAgLTAsMCArMSwxMzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgorCisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5oPgorI2luY2x1ZGUgPHd0Zi9T
Y29wZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
Citib29sIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OndhaXQoY29uc3QgRnVuY3Rpb248dm9pZChJ
UEM6OlNlbWFwaG9yZSYpPiYgbmV3U2VtYXBob3JlQ2FsbGJhY2spCit7CisgICAgaWYgKCFtX3Nl
bWFwaG9yZSkgeworICAgICAgICBtX3NlbWFwaG9yZSA9IG1ha2VVbmlxdWU8SVBDOjpTZW1hcGhv
cmU+KCk7CisgICAgICAgIG5ld1NlbWFwaG9yZUNhbGxiYWNrKCptX3NlbWFwaG9yZSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gbV9zZW1hcGhvcmUtPndhaXQoKTsK
K30KKworYm9vbCBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjphbGxvY2F0ZVN0b3JhZ2Uoc2l6ZV90
IHNpemUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUm
KT4mIG5ld01lbW9yeUNhbGxiYWNrKQoreworICAgIG1fc3RvcmFnZSA9IFNoYXJlZE1lbW9yeTo6
YWxsb2NhdGUoc2l6ZSk7CisgICAgaWYgKCFtX3N0b3JhZ2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBtX3N0b3JhZ2UtPmNy
ZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwor
CisgICAgYXV0byBkYXRhU2l6ZSA9IGhhbmRsZS5zaXplKCk7CisgICAgbmV3TWVtb3J5Q2FsbGJh
Y2soU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGRhdGFTaXplIH0p
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OnBy
ZXBhcmVXcml0aW5nKGNvbnN0IFNoYXJlZFZpZGVvRnJhbWVJbmZvJiBpbmZvLCBjb25zdCBGdW5j
dGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiBuZXdTZW1hcGhvcmVDYWxsYmFjaywgY29uc3Qg
RnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5
Q2FsbGJhY2spCit7CisgICAgaWYgKCFpbmZvLmlzUmVhZFdyaXRlU3VwcG9ydGVkKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghd2FpdChuZXdTZW1hcGhvcmVDYWxsYmFjaykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNpemVfdCBzaXplID0gaW5mby5zdG9yYWdl
U2l6ZSgpOworICAgIGlmICghbV9zdG9yYWdlIHx8IG1fc3RvcmFnZS0+c2l6ZSgpIDwgc2l6ZSkg
eworICAgICAgICBpZiAoIWFsbG9jYXRlU3RvcmFnZShzaXplLCBuZXdNZW1vcnlDYWxsYmFjaykp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRlKENWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXIsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mIG5ld1NlbWFw
aG9yZUNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlJik+JiBuZXdNZW1vcnlDYWxsYmFjaykKK3sKKyAgICBhdXRvIGluZm8gPSBTaGFyZWRW
aWRlb0ZyYW1lSW5mbzo6ZnJvbUNWUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpOworICAgIGlmICgh
cHJlcGFyZVdyaXRpbmcoaW5mbywgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIG5ld01lbW9yeUNhbGxi
YWNrKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGluZm8ud3JpdGVQaXhl
bEJ1ZmZlcihwaXhlbEJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fc3RvcmFnZS0+ZGF0
YSgpKSk7Cit9CisKKyNpZiBVU0UoTElCV0VCUlRDKQorYm9vbCBTaGFyZWRWaWRlb0ZyYW1lV3Jp
dGVyOjp3cml0ZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBGdW5jdGlv
bjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiBuZXdTZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVu
Y3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2Fs
bGJhY2spCit7CisgICAgYXV0byBpbmZvID0gU2hhcmVkVmlkZW9GcmFtZUluZm86OmZyb21WaWRl
b0ZyYW1lKGZyYW1lKTsKKyAgICBpZiAoIXByZXBhcmVXcml0aW5nKGluZm8sIG5ld1NlbWFwaG9y
ZUNhbGxiYWNrLCBuZXdNZW1vcnlDYWxsYmFjaykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBpbmZvLndyaXRlVmlkZW9GcmFtZShmcmFtZSwgc3RhdGljX2Nhc3Q8dWludDhf
dCo+KG1fc3RvcmFnZS0+ZGF0YSgpKSk7Cit9CisjZW5kaWYKKworUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+IFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI6OnJlYWQoKQoreworICAgIGlmICghbV9z
dG9yYWdlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBzY29wZSA9IG1ha2VTY29w
ZUV4aXQoWyZdIHsKKyAgICAgICAgbV9zZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgfSk7CisKKyAg
ICBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fc3RvcmFnZS0+ZGF0
YSgpKTsKKyAgICBhdXRvIGluZm8gPSBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZGVjb2RlKHsgZGF0
YSwgbV9zdG9yYWdlLT5zaXplKCkgfSk7CisgICAgaWYgKCFpbmZvKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgaWYgKCFpbmZvLT5pc1JlYWRXcml0ZVN1cHBvcnRlZCgpKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgaWYgKG1fc3RvcmFnZS0+c2l6ZSgpIDwgaW5mby0+c3RvcmFnZVNp
emUoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBpbmZvLT5jcmVhdGVQaXhl
bEJ1ZmZlckZyb21NZW1vcnkoZGF0YSArIFNoYXJlZFZpZGVvRnJhbWVJbmZvRW5jb2RpbmdMZW5n
dGgsIHBpeGVsQnVmZmVyUG9vbCgqaW5mbykpOworfQorCitDVlBpeGVsQnVmZmVyUG9vbFJlZiBT
aGFyZWRWaWRlb0ZyYW1lUmVhZGVyOjpwaXhlbEJ1ZmZlclBvb2woY29uc3QgU2hhcmVkVmlkZW9G
cmFtZUluZm8mIGluZm8pCit7CisgICAgaWYgKG1fdXNlSU9TdXJmYWNlQnVmZmVyUG9vbCA9PSBV
c2VJT1N1cmZhY2VCdWZmZXJQb29sOjpObykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBpZiAoIW1fYnVmZmVyUG9vbCB8fCBtX2J1ZmZlclBvb2xUeXBlICE9IGluZm8uYnVmZmVyVHlw
ZSgpIHx8IG1fYnVmZmVyUG9vbFdpZHRoICE9IGluZm8ud2lkdGgoKSB8fCBtX2J1ZmZlclBvb2xI
ZWlnaHQgIT0gaW5mby5oZWlnaHQoKSkgeworICAgICAgICBtX2J1ZmZlclBvb2xUeXBlID0gaW5m
by5idWZmZXJUeXBlKCk7CisgICAgICAgIG1fYnVmZmVyUG9vbFdpZHRoID0gaW5mby53aWR0aCgp
OworICAgICAgICBtX2J1ZmZlclBvb2xIZWlnaHQgPSBpbmZvLmhlaWdodCgpOworICAgICAgICBt
X2J1ZmZlclBvb2wgPSBpbmZvLmNyZWF0ZUNvbXBhdGlibGVCdWZmZXJQb29sKCk7CisgICAgfQor
CisgICAgcmV0dXJuIG1fYnVmZmVyUG9vbC5nZXQoKTsKK30KKworCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MmU5NTYyZGU3ZWJiZGZhOGQ2NzUzMWI1ZDQ3ZjMxYTUwMDY1MzFjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9G
cmFtZS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IFBMQVRGT1JNKENPQ09BKQorCisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAi
U2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciogQ1ZQaXhlbEJ1ZmZlclJl
ZjsKK3R5cGVkZWYgc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqIENWUGl4ZWxCdWZmZXJQb29s
UmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTaGFyZWRWaWRlb0ZyYW1lSW5mbzsK
K30KKworbmFtZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBWaWRlb0ZyYW1lOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgU2hhcmVkVmlkZW9GcmFtZVdyaXRlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcigp
ID0gZGVmYXVsdDsKKworICAgIGJvb2wgd3JpdGUoQ1ZQaXhlbEJ1ZmZlclJlZiwgY29uc3QgRnVu
Y3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3Qg
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKKyNpZiBVU0UoTElCV0VCUlRDKQorICAgIGJv
b2wgd3JpdGUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiwgY29uc3QgRnVuY3Rpb248dm9pZChJ
UEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUmKT4mKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIGJvb2wgd2FpdChjb25z
dCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+Jik7CisgICAgYm9vbCBhbGxvY2F0ZVN0
b3JhZ2Uoc2l6ZV90LCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlJik+Jik7CisgICAgYm9vbCBwcmVwYXJlV3JpdGluZyhjb25zdCBXZWJDb3JlOjpTaGFy
ZWRWaWRlb0ZyYW1lSW5mbyYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4m
LCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpTZW1hcGhvcmU+IG1fc2VtYXBob3JlOworICAg
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1fc3RvcmFnZTsKK307CisKK2NsYXNzIFNoYXJlZFZpZGVv
RnJhbWVSZWFkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IGVudW0gY2xhc3MgVXNlSU9TdXJmYWNlQnVmZmVyUG9vbCB7IE5vLCBZZXMgfTsKKyAgICBleHBs
aWNpdCBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyKFVzZUlPU3VyZmFjZUJ1ZmZlclBvb2wgPSBVc2VJ
T1N1cmZhY2VCdWZmZXJQb29sOjpZZXMpOworCisgICAgdm9pZCBzZXRTZW1hcGhvcmUoSVBDOjpT
ZW1hcGhvcmUmJiBzZW1hcGhvcmUpIHsgbV9zZW1hcGhvcmUgPSBXVEZNb3ZlKHNlbWFwaG9yZSk7
IH0KKyAgICB2b2lkIHNldFNoYXJlZE1lbW9yeShSZWY8U2hhcmVkTWVtb3J5PiYmIHN0b3JhZ2Up
IHsgbV9zdG9yYWdlID0gV1RGTW92ZShzdG9yYWdlKTsgfQorCisgICAgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+IHJlYWQoKTsKKworcHJpdmF0ZToKKyAgICBDVlBpeGVsQnVmZmVyUG9vbFJl
ZiBwaXhlbEJ1ZmZlclBvb2woY29uc3QgV2ViQ29yZTo6U2hhcmVkVmlkZW9GcmFtZUluZm8mKTsK
KworICAgIFVzZUlPU3VyZmFjZUJ1ZmZlclBvb2wgbV91c2VJT1N1cmZhY2VCdWZmZXJQb29sOwor
ICAgIElQQzo6U2VtYXBob3JlIG1fc2VtYXBob3JlOworICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IG1fc3RvcmFnZTsKKworICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUG9vbFJlZj4gbV9idWZm
ZXJQb29sOworICAgIE9TVHlwZSBtX2J1ZmZlclBvb2xUeXBlIHsgMCB9OworICAgIHVpbnQzMl90
IG1fYnVmZmVyUG9vbFdpZHRoIHsgMCB9OworICAgIHVpbnQzMl90IG1fYnVmZmVyUG9vbEhlaWdo
dCB7IDAgfTsKK307CisKK2lubGluZSBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOjpTaGFyZWRWaWRl
b0ZyYW1lUmVhZGVyKFVzZUlPU3VyZmFjZUJ1ZmZlclBvb2wgdXNlSU9TdXJmYWNlQnVmZmVyUG9v
bCkKKyAgICA6IG1fdXNlSU9TdXJmYWNlQnVmZmVyUG9vbCh1c2VJT1N1cmZhY2VCdWZmZXJQb29s
KQoreworfQorCisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450628</attachid>
            <date>2022-02-02 02:23:57 -0800</date>
            <delta_ts>2022-02-02 05:22:14 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235951-20220202112356.patch</filename>
            <type>text/plain</type>
            <size>70891</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA1N2NlZjA3M2ZlZjIxZDA5ZWUyYWU1MzNmYjBmMWY0NGI5NDA0OWM1Li41ZTdj
MWI3NGFlMzVmMWIzYzM4MTMyNDk5MTE5MWI2ZmZlYWY2NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMi0wMSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTGliV2ViUlRDQ29kZWNzIHNob3Vs
ZCBub3QgbmVlZCB0byBjcmVhdGUgSU9TdXJmYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1OTUxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
ODMyNjY1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAg
SW50cm9kdWNlIGhlbHBlciByb3V0aW5lcyB0byBjb3B5IGEgd2VicnRjIFZpZGVvRnJhbWUgaW50
byBhIG1lbW9yeSBidWZmZXIgYW5kIGdldCBhIENWUGl4ZWxCdWZmZXIgZnJvbSBhIHdlYnJ0YyBW
aWRlb0ZyYW1lLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHA6
CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHA6CisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLm1hYy5leHA6CisgICAgICAgICogU291cmNlL3dl
YnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5oOgorICAgICAgICAqIFNvdXJjZS93ZWJy
dGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMubW06CisKIDIwMjItMDEtMjcgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgY29tLmFwcGxlLldlYktpdC5X
ZWJBdXRobi54cGMgZmFpbHMgdG8gYnVpbGQgd2l0aCBzeXN0ZW0gY29udGVudCBwYXRoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggYzZiMWI2OTgxYzQ0OGE5ODMwYzc4MmRhMTIzMmNkMDIzY2E5NzYwYS4uOWExNDMz
MmRhNWNiNTJkNmFlZDM1Y2VhMTk5ZWMwMzM3YjA5ZjUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI0IEBACisyMDIyLTAyLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBMaWJXZWJSVENDb2RlY3Mgc2hvdWxkIG5vdCBuZWVkIHRvIGNyZWF0ZSBJT1N1cmZh
Y2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU5
NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4MzI2NjU0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBJbnRyb2R1Y2UgU2hhcmVkVmlkZW9GcmFtZUlu
Zm8gYXMgYSBoZWxwZXIgY2xhc3MgdG8gc2VyaWFsaXplIGEgQ1ZQaXhlbEJ1ZmZlciBpbnRvIG1l
bW9yeSBhbmQgY3JlYXRlIGEgQ1ZQaXhlbEJ1ZmZlciBmcm9tIHJlYWRpbmcgbWVtb3J5LgorCisg
ICAgICAgIENvdmVyZWQgYnkgZXhpc3Rpbmcgd2VicnRjIHRlc3RzLgorCisgICAgICAgICogU291
cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8uaDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8ubW06IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oOgorCiAyMDIyLTAyLTAxICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGFyaWZ5IHRoYXQgc29tZSBVVUlE
IHJvdXRpbmVzIGFyZSBkZWRpY2F0ZWQgdG8gVVVJRCB2NApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMTgxZTI4NjFh
OGViYTkxOWQwYTZhYzY0ODFjMzJjNTA5ODFiOWYzLi5iNTU4MTMyNmIxOGI1N2RlN2QzOWRmMDFh
MWM5YmRiOTNlMGQyYTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIyLTAyLTAxICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBMaWJXZWJSVENDb2Rl
Y3Mgc2hvdWxkIG5vdCBuZWVkIHRvIGNyZWF0ZSBJT1N1cmZhY2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU5NTEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzg4MzI2NjU0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKwor
ICAgICAgICBJbnRyb2R1Y2UgU2hhcmVkVmlkZW9GcmFtZVdyaXRlciBhbmQgU2hhcmVkVmlkZW9G
cmFtZVJlYWRlciB0byBzdXBwb3J0IHNoYXJlZCBtZW1vcnkgc2VuZGluZyBvZiBDVlBpeGVsQnVm
ZmVycyB0aGF0IGFyZSBub24gSU9TdXJmYWNlIGJhY2tlZC4KKyAgICAgICAgVG8gZG8gc28sIHdl
IG1ha2UgdXNlIG9mIFNoYXJlZFZpZGVvRnJhbWVJbmZvIGZyb20gV2ViQ29yZS4KKyAgICAgICAg
V2hhdCB3ZSBkbyBpczoKKyAgICAgICAgLSBXaGVuIGdldHRpbmcgYSBmcmFtZSwgYWxsb2NhdGUg
YSBzaGFyZWQgbWVtb3J5IHRoYXQgaXMgYmlnIGVub3VnaCB0byBjb3B5IGl0cyBkYXRhIGFuZCBp
bmZvIGluIGl0LiBDcmVhdGUgYSBzZW1hcGhvcmUgdG8gc3luYyByZWFkZXIgYW5kIHdyaXRlci4K
KyAgICAgICAgLSBJZiB3ZSBhbGxvY2F0ZSBzaGFyZWQgbWVtb3J5L3NlbXBob3JlLCBzZW5kIHRo
ZW0gb3ZlciBJUEMgdG8gdGhlIFNoYXJlZFZpZGVvRnJhbWVSZWFkZXIuCisgICAgICAgIC0gV2Fp
dCBmb3Igc2VtYXBob3JlIHRvIHRlbGwgdXMgcmVhZGVyIGlzIGZpbmUgZm9yIHdyaXRpbmcuCisg
ICAgICAgIC0gV3JpdGUgU2hhcmVkVmlkZW9GcmFtZUluZm8gaW50byB0aGUgc2hhcmVkIG1lbW9y
eSwgdGhlbiBjb3B5IHRoZSByYXcgYnl0ZXMgaW50byB0aGUgc2hhcmVkIG1lbW9yeS4KKyAgICAg
ICAgLSBTZW5kIHRocm91Z2ggSVBDIHRoZSB2aWRlbyBmcmFtZSwgbm8gTWFjU2VuZFJpZ2h0IG1l
YW5zIHRvIHJlYWQgdGhlIHNoYXJlZCBtZW1vcnkuCisgICAgICAgIE9uIHJlYWRlciBzaWRlLCBm
b3IgZXZlcnkgZnJhbWUgdGhhdCBkb2VzIG5vdCBoYXZlIGFuIElPU3VyZmFjZSwgd2UgcmVhZCB0
aGUgc2hhcmVkIG1lbW9yeSwgY3JlYXRlIGFuIElPU3VyZmFjZSBmcm9tIGl0IGFuZCBub3RpZnkg
V2ViUHJvY2VzcyB0aGF0IGl0IGNhbiB3cml0ZSB0aGUgbmV4dCBmcmFtZS4KKworICAgICAgICBJ
biBtZW1vcnkgYnVmZmVycyBhcmUgdXNlZCBmb3IgYmxhY2sgZnJhbWVzIGF0IGxlYXN0LgorICAg
ICAgICB3ZWJydGMvdmlkZW8tbXV0ZS5odG1sIGNvdmVycyB0aGUgcGF0Y2guCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAgICAgICAq
IFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcDogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaDog
QWRkZWQuCisKIDIwMjItMDItMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyIHNob3VsZCBvbmx5IGJl
IHVzZWQgb25jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZp
Z3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1MuZXhwCmluZGV4IGRmZThiYTg3YzZiZWQ2ODlm
N2YwNDRkMzg4YjdjMjFiMTk5MzY1MTguLmNhNTQ3M2E2MmFkOThiZjZiNGUwY2ViNjAyODg1NjQ1
ZDkwZjdkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1
cmF0aW9ucy9saWJ3ZWJydGMuaU9TLmV4cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPUy5leHAKQEAgLTMzMCw0ICszMzAsNSBAQCBf
X1pOM3J0YzZUaHJlYWQxMnNvY2tldHNlcnZlckV2CiBfX1pONndlYnJ0YzMyd2VicnRjX3NlcXVl
bmNlX2NoZWNrZXJfaW50ZXJuYWwxOVNlcXVlbmNlQ2hlY2tlckltcGxDMkV2CiBfX1pOSzNydGMx
NFJUQ0NlcnRpZmljYXRlMTdHZXRTU0xDZXJ0aWZpY2F0ZUV2CiBfX1pUVk42d2VicnRjMzBXcmFw
cGluZ0FzeW5jRG5zUmVzb2x2ZXJSZXN1bHRFCi0KK19fWk42d2VicnRjMjBwaXhlbEJ1ZmZlckZy
b21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUUKK19fWk42d2VicnRjMTRjb3B5VmlkZW9GcmFtZUVS
S05TXzEwVmlkZW9GcmFtZUVQaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5pT1NzaW0uZXhwCmluZGV4IGRm
ZThiYTg3YzZiZWQ2ODlmN2YwNDRkMzg4YjdjMjFiMTk5MzY1MTguLmNhNTQ3M2E2MmFkOThiZjZi
NGUwY2ViNjAyODg1NjQ1ZDkwZjdkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMuaU9Tc2ltLmV4cAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLmlPU3NpbS5leHAK
QEAgLTMzMCw0ICszMzAsNSBAQCBfX1pOM3J0YzZUaHJlYWQxMnNvY2tldHNlcnZlckV2CiBfX1pO
NndlYnJ0YzMyd2VicnRjX3NlcXVlbmNlX2NoZWNrZXJfaW50ZXJuYWwxOVNlcXVlbmNlQ2hlY2tl
ckltcGxDMkV2CiBfX1pOSzNydGMxNFJUQ0NlcnRpZmljYXRlMTdHZXRTU0xDZXJ0aWZpY2F0ZUV2
CiBfX1pUVk42d2VicnRjMzBXcmFwcGluZ0FzeW5jRG5zUmVzb2x2ZXJSZXN1bHRFCi0KK19fWk42
d2VicnRjMjBwaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUUKK19fWk42d2Vi
cnRjMTRjb3B5VmlkZW9GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUVQaApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5tYWMuZXhw
IGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NvbmZpZ3VyYXRpb25zL2xpYndlYnJ0Yy5t
YWMuZXhwCmluZGV4IGRmZThiYTg3YzZiZWQ2ODlmN2YwNDRkMzg4YjdjMjFiMTk5MzY1MTguLmNh
NTQ3M2E2MmFkOThiZjZiNGUwY2ViNjAyODg1NjQ1ZDkwZjdkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMubWFjLmV4cAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRj
Lm1hYy5leHAKQEAgLTMzMCw0ICszMzAsNSBAQCBfX1pOM3J0YzZUaHJlYWQxMnNvY2tldHNlcnZl
ckV2CiBfX1pONndlYnJ0YzMyd2VicnRjX3NlcXVlbmNlX2NoZWNrZXJfaW50ZXJuYWwxOVNlcXVl
bmNlQ2hlY2tlckltcGxDMkV2CiBfX1pOSzNydGMxNFJUQ0NlcnRpZmljYXRlMTdHZXRTU0xDZXJ0
aWZpY2F0ZUV2CiBfX1pUVk42d2VicnRjMzBXcmFwcGluZ0FzeW5jRG5zUmVzb2x2ZXJSZXN1bHRF
Ci0KK19fWk42d2VicnRjMjBwaXhlbEJ1ZmZlckZyb21GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUUK
K19fWk42d2VicnRjMTRjb3B5VmlkZW9GcmFtZUVSS05TXzEwVmlkZW9GcmFtZUVQaApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvc2RrL1dlYktp
dC9XZWJLaXRVdGlsaXRpZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmgKaW5kZXggM2VhMDRmZDU4ZjRjNjVm
ZWMzNTc1YmE1MDFkMzYwOTViNjlhNjNmNy4uYTIzZmFhNmVkNTdkZjdjMzIyYzY3MGI3NzM1Y2Fi
ODNjNjYxNTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5o
CkBAIC00OCw2ICs0OCw4IEBAIGJvb2wgaXNIMjY0SGFyZHdhcmVFbmNvZGVyQWxsb3dlZCgpOwog
CiBlbnVtIGNsYXNzIEJ1ZmZlclR5cGUgeyBJNDIwLCBJMDEwIH07CiBDVlBpeGVsQnVmZmVyUmVm
IGNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmLCBjb25zdCBzdGQ6
OmZ1bmN0aW9uPENWUGl4ZWxCdWZmZXJSZWYoc2l6ZV90LCBzaXplX3QsIEJ1ZmZlclR5cGUpPiYg
Y3JlYXRlUGl4ZWxCdWZmZXIpIENGX1JFVFVSTlNfUkVUQUlORUQ7CitDVlBpeGVsQnVmZmVyUmVm
IHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmKSBDRl9SRVRVUk5TX1JFVEFJ
TkVEOwogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gcGl4ZWxC
dWZmZXJUb0ZyYW1lKENWUGl4ZWxCdWZmZXJSZWYpOworYm9vbCBjb3B5VmlkZW9GcmFtZShjb25z
dCBWaWRlb0ZyYW1lJiwgdWludDhfdCopOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zZGsvV2ViS2l0L1dlYktpdFV0aWxpdGllcy5t
bSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQv
V2ViS2l0VXRpbGl0aWVzLm1tCmluZGV4IDQ5ODEyZTdkMjM3ZThhYmExYjIzZDU5NTQ0MDE4ZTg4
NmUwNjhhMGMuLjdmNmZiYjExZTc2OTNhZDY2ZGY5MjRiOTNmNGQyOGU3ZWU4OWUwYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3Nkay9XZWJL
aXQvV2ViS2l0VXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLm1tCkBAIC0xNzUsNCArMTc1
LDUyIEBAIENWUGl4ZWxCdWZmZXJSZWYgY3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoY29uc3Qg
VmlkZW9GcmFtZSYgZnJhbWUsIGNvbnN0IHN0ZDo6CiAgICAgcmV0dXJuIENWUGl4ZWxCdWZmZXJS
ZXRhaW4ocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpOwogfQogCitDVlBpeGVsQnVmZmVyUmVm
IHBpeGVsQnVmZmVyRnJvbUZyYW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lKQoreworICAgIGF1
dG8gYnVmZmVyID0gZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7CisgICAgaWYgKGJ1ZmZlci0+
dHlwZSgpICE9IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byAqZnJhbWVCdWZmZXIgPSBzdGF0aWNfY2FzdDxPYmpDRnJh
bWVCdWZmZXIqPihidWZmZXIuZ2V0KCkpLT53cmFwcGVkX2ZyYW1lX2J1ZmZlcigpOworICAgIGlm
ICghW2ZyYW1lQnVmZmVyIGlzS2luZE9mQ2xhc3M6W1JUQ0NWUGl4ZWxCdWZmZXIgY2xhc3NdXSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvICpydGNQaXhlbEJ1ZmZlciA9IChS
VENDVlBpeGVsQnVmZmVyICopZnJhbWVCdWZmZXI7CisgICAgcmV0dXJuIENWUGl4ZWxCdWZmZXJS
ZXRhaW4ocnRjUGl4ZWxCdWZmZXIucGl4ZWxCdWZmZXIpOworfQorCitib29sIGNvcHlWaWRlb0Zy
YW1lKGNvbnN0IFZpZGVvRnJhbWUmIGZyYW1lLCB1aW50OF90KiBkYXRhKQoreworICAgIGF1dG8g
YnVmZmVyID0gZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCk7CisgICAgaWYgKGJ1ZmZlci0+dHlw
ZSgpID09IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGF1dG8gdHlwZSA9IGJ1ZmZlci0+dHlwZSgpOworICAgIGlmICh0eXBlID09
IFZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtJNDIwKSB7CisgICAgICAgIGF1dG8qIGk0MjBGcmFt
ZSA9IGJ1ZmZlci0+R2V0STQyMCgpOworICAgICAgICBhdXRvKiBkYXRhWSA9IGRhdGE7CisgICAg
ICAgIGF1dG8gc3RyaWRlWSA9IGk0MjBGcmFtZS0+d2lkdGgoKTsKKyAgICAgICAgYXV0byBzdHJp
ZGVVViA9IGk0MjBGcmFtZS0+d2lkdGgoKSAvIDI7CisgICAgICAgIGF1dG8qIGRhdGFVViA9IGRh
dGEgKyAoaTQyMEZyYW1lLT53aWR0aCgpICogaTQyMEZyYW1lLT5oZWlnaHQoKSk7CisgICAgICAg
IHJldHVybiAhbGlieXV2OjpJNDIwVG9OVjEyKGk0MjBGcmFtZS0+RGF0YVkoKSwgaTQyMEZyYW1l
LT5TdHJpZGVZKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk0MjBGcmFt
ZS0+RGF0YVUoKSwgaTQyMEZyYW1lLT5TdHJpZGVVKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGk0MjBGcmFtZS0+RGF0YVYoKSwgaTQyMEZyYW1lLT5TdHJpZGVWKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFZLCBzdHJpZGVZLCBkYXRhVVYs
IHN0cmlkZVVWLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpNDIwRnJhbWUt
PndpZHRoKCksIGk0MjBGcmFtZS0+aGVpZ2h0KCkpOworICAgIH0KKyAgICBpZiAodHlwZSA9PSBW
aWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprSTAxMCkgeworICAgICAgICBhdXRvKiBpMDEwRnJhbWUg
PSBidWZmZXItPkdldEkwMTAoKTsKKyAgICAgICAgYXV0byogZGF0YVkgPSByZWludGVycHJldF9j
YXN0PHVpbnQxNl90Kj4oZGF0YSk7CisgICAgICAgIGF1dG8gc3RyaWRlWSA9IGkwMTBGcmFtZS0+
d2lkdGgoKTsKKyAgICAgICAgYXV0byBzdHJpZGVVViA9IGkwMTBGcmFtZS0+d2lkdGgoKSAvIDI7
CisgICAgICAgIGF1dG8qIGRhdGFVViA9IGRhdGFZICsgKGkwMTBGcmFtZS0+d2lkdGgoKSAqIGkw
MTBGcmFtZS0+aGVpZ2h0KCkpOworICAgICAgICByZXR1cm4gIWxpYnl1djo6STAxMFRvUDAxMChp
MDEwRnJhbWUtPkRhdGFZKCksIGkwMTBGcmFtZS0+U3RyaWRlWSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpMDEwRnJhbWUtPkRhdGFVKCksIGkwMTBGcmFtZS0+U3RyaWRl
VSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMDEwRnJhbWUtPkRhdGFW
KCksIGkwMTBGcmFtZS0+U3RyaWRlVigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhWSwgc3RyaWRlWSwgZGF0YVVWLCBzdHJpZGVVViwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaTAxMEZyYW1lLT53aWR0aCgpLCBpMDEwRnJhbWUtPmhlaWdodCgp
KTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAppbmRleCA0MTBjNmY0YWQ1YjIxNTkwNDVkMTUyYzY2MWI1MGYxNTM0Njg0NjdkLi41ODVlYTQ1
MzdmY2Y2NTlkMTg5OTQ3N2M3YzI1MmI0YWM3OWUxMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKQEAgLTI2OCw2ICsyNjgsNyBAQCBwbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5tbQogcGxhdGZvcm0vY29jb2EvUG93ZXJTb3VyY2VOb3RpZmllci5tbQog
cGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EubW0KIHBsYXRmb3JtL2Nv
Y29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCitwbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRWaWRlb0ZyYW1lVXRpbGl0aWVzLm1tIEBuby11bmlmeQogcGxhdGZvcm0vY29jb2EvU2VhcmNo
UG9wdXBNZW51Q29jb2EubW0KIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCiBw
bGF0Zm9ybS9jb2NvYS9TeXN0ZW1WZXJzaW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWNiZjg3NmUyNThmYjk3Y2RjOGEz
NjY1MWY0YjcyMDU0ZmQ5YzY0My4uNmY0NGU4MWU5MGQ2ZGJiNzI0NDMyYmZmOTQ2YTY0ZDQ2NjBl
Yzc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTIxMSwxMCArMTIxMSwxMiBAQAogCQk0MUQxMjlEQjFGM0QxNDM4MDBEMTVF
NDcgLyogRmV0Y2hIZWFkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUY1NEY4MzFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFEMjhEMEQy
MTM5RTA1ODAwRjQyMDZGIC8qIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDI4RDBCMjEzOUUwMUQwMEY0
MjA2RiAvKiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAgKi87IH07CiAJCTQxRDQxQzY3MjI1
Njg3NEYwMDY5Nzk0MiAvKiBTZXJ2aWNlV29ya2VySW50ZXJuYWxzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFENDFDNjUyMjU2ODU5MjAwNjk3OTQy
IC8qIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMubW0gKi87IH07CisJCTQxREMwNEZFMjdBODNDOTMw
MDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEQzA0RkIyN0E4M0M5MjAwOENGOTY4IC8qIFNoYXJl
ZFZpZGVvRnJhbWVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDFERTdDN0MyMjJEQTE0MzAwNTMyQjY1IC8qIFN0b3JhZ2VRdW90YU1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREU3
QzdCMjIyREExM0UwMDUzMkI2NSAvKiBTdG9yYWdlUXVvdGFNYW5hZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFERUVGQjAyNzE5QjI5MDAw
Q0I4RDc0IC8qIFZpZGVvRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREVFRkFDMjcxOUIyODgwMENCOEQ3NCAvKiBW
aWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFERUVGQjYyNzE5QkExQTAwQ0I4RDc0IC8qIFZpZGVvRnJh
bWVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFERUVGQjQyNzE5QkExOTAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVNZXRhZGF0YS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxREVGQ0I2MUU1
NkMxQkQwMDBEOUU1RiAvKiBKU0RPTU1hcExpa2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREVGQ0I0MUU1NkMxQjkwMDBEOUU1RiAvKiBKU0RPTU1h
cExpa2UuaCAqLzsgfTsKKwkJNDFERjJENUUyN0E5NDUyQTAwRjI1QTIxIC8qIFNoYXJlZFZpZGVv
RnJhbWVJbmZvLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFEQzA0RkQyN0E4M0M5MzAwOENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWVJbmZvLm1tICov
OyB9OwogCQk0MUUxMkU5RjI0RkU3NEUyMDA5M0ZGQjQgLyogV2ViU29ja2V0SWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMTJFOUQy
NEZFNzRFMjAwOTNGRkI0IC8qIFdlYlNvY2tldElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZC
M0IgLyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRTFCMUNCMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5o
ICovOyB9OwogCQk0MUUyRjE5OTI3NEZBRUNGMDBBMDg5RUUgLyogTmF2aWdhdGlvblByZWxvYWRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUUyRjE5NzI3NEZBRUNCMDBBMDg5RUUgLyogTmF2aWdhdGlvblByZWxvYWRNYW5hZ2VyLmggKi87
IH07CkBAIC04OTE2LDYgKzg5MTgsOCBAQAogCQk0MUQ0MUM2NTIyNTY4NTkyMDA2OTc5NDIgLyog
U2VydmljZVdvcmtlckludGVybmFscy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxRDUxQkIyMUU0RTJFODEwMDEzMUE1QiAvKiBMaWJXZWJSVENBdWRpb0Zvcm1h
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENBdWRpb0Zvcm1h
dC5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvRm9ybWF0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxRDZCRDk4MjUxQjNBREEwMDU1QTdCNyAvKiBIVE1MTWVkaWFF
bGVtZW50K0F1ZGlvT3V0cHV0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiSFRNTE1lZGlh
RWxlbWVudCtBdWRpb091dHB1dC5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MURDMDRGQjI3QTgzQzkyMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkVmlkZW9GcmFtZUluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEQzA0RkQyN0E4M0M5MzAwOENGOTY4IC8qIFNoYXJl
ZFZpZGVvRnJhbWVJbmZvLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU2hhcmVkVmlkZW9GcmFtZUluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxREU3QzdBMjIyREExM0QwMDUzMkI2NSAvKiBTdG9yYWdlUXVvdGFNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VRdW90YU1hbmFnZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MURFN0M3QjIyMkRBMTNFMDA1MzJCNjUg
LyogU3RvcmFnZVF1b3RhTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdG9yYWdlUXVvdGFNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
REVFRkFDMjcxOUIyODgwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFZpZGVvRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI2ODA2LDYgKzI2ODEwLDggQEAKIAkJCQkwRTcwNThGMzFCQzVDQ0Q3
MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EuaCAqLywKIAkJCQkwRTcwNThFRDFCQzVC
QzE5MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EubW0gKi8sCiAJCQkJMUE0QTk1NTEw
QjRFRENGRjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlckNvY29hLm1tICovLAorCQkJCTQxREMwNEZC
MjdBODNDOTIwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5oICovLAorCQkJCTQxREMw
NEZEMjdBODNDOTMwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5tbSAqLywKIAkJCQlD
MTY5MkRENDIzRDIzQUUwMDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICovLAogCQkJCUMxNjky
REQxMjNEMjNBQkQwMDZFODhGNyAvKiBTeXN0ZW1CYXR0ZXJ5Lm1tICovLAogCQkJCTVENTk3NUIx
MTk2MzVGMTEwMEQwMDg3OCAvKiBTeXN0ZW1WZXJzaW9uLmggKi8sCkBAIC0zNzE3Miw2ICszNzE3
OCw3IEBACiAJCQkJQ0QzNkMxNkIyNjBBNjVDQzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRpbmdBcmJp
dHJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzRERkFEMDFGN0RBRTVEMDBDMjcyNUIgLyog
U2hhcmVkU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAw
NTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MURDMDRGRTI3QTgz
QzkzMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ2N0E2OERBMjc1RUE5OUMwMDlCMzFDNSAvKiBTaGFyZWRXb3JrZXJNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0NjdBNjhEOTI3NUVBOTk4MDA5QjMxQzUgLyogU2hhcmVkV29ya2VyUHJv
eHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0E2OEQ4Mjc1RUE5OTUwMDlCMzFDNSAvKiBTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzg2NDYsNiArMzg2NTMs
NyBAQAogCQkJCTQzQjg1RUQ0MThDQkVDNTIwMEUzMUFGNCAvKiBTZWxlY3RvclBzZXVkb0NsYXNz
QW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjZBQTBG
OUUxOEQyQTE4QjAwNDE5MzgxIC8qIFNlbGVjdG9yUHNldWRvRWxlbWVudFR5cGVNYXAuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NENThERkQxRjk1NjVBODAwMTEyNzkxIC8qIFNldHRpbmdzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTQxREYyRDVFMjdBOTQ1MkEwMEYyNUEyMSAvKiBTaGFyZWRW
aWRlb0ZyYW1lSW5mby5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzOEYxMEE4MUY5MDIyQTQwMDUx
MDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDOEI1QUEx
ODA0N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTgzM0M3Q0EwQTJDRjA2QjAwRDU3NjY0IC8qIFNWR05hbWVzLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29y
ZVZpZGVvU29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZp
ZGVvU29mdExpbmsuY3BwCmluZGV4IDNlMDczYTc4NjVkY2E4MTgzZDhiYzVlZTk3OWQxN2JlOTA4
NTEwOTguLjQ1Y2RjN2E5YWNmYjA0ZDEzYzgyNDhkZTIxMWEyNGY3N2UzNGM2ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5jcHAK
QEAgLTM5LDcgKzM5LDkgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwg
Q29yZVZpZGVvLCBDVkJ1ZmZlckdldEF0dGFjaG1lbnQsIENGVHlwZVIKIFNPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZCdWZmZXJHZXRBdHRhY2htZW50
cywgQ0ZEaWN0aW9uYXJ5UmVmLCAoQ1ZCdWZmZXJSZWYgYnVmZmVyLCBDVkF0dGFjaG1lbnRNb2Rl
IG1vZGUpLCAoYnVmZmVyLCBtb2RlKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdl
YkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlSUQsICgpLCAo
KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQ
aXhlbEJ1ZmZlckdldFdpZHRoLCBzaXplX3QsIChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVy
KSwgKHBpeGVsQnVmZmVyKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUs
IENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFuZSwgc2l6ZV90LCAoQ1ZQaXhl
bEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgc2l6ZV90IHBsYW5lSW5kZXgpLCAocGl4ZWxCdWZmZXIs
IHBsYW5lSW5kZXgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29y
ZVZpZGVvLCBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0LCBzaXplX3QsIChDVlBpeGVsQnVmZmVyUmVm
IHBpeGVsQnVmZmVyKSwgKHBpeGVsQnVmZmVyKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09V
UkNFKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodE9mUGxhbmUsIHNp
emVfdCwgKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHNpemVfdCBwbGFuZUluZGV4KSwg
KHBpeGVsQnVmZmVyLCBwbGFuZUluZGV4KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNF
KFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzLCB2b2lkKiwg
KENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpLCAocGl4ZWxCdWZmZXIpKQogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZpZGVvLCBDVlBpeGVsQnVmZmVyR2V0
Qnl0ZXNQZXJSb3csIHNpemVfdCwgKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpLCAocGl4
ZWxCdWZmZXIpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZVZp
ZGVvLCBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3dPZlBsYW5lLCBzaXplX3QsIChDVlBpeGVs
QnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBzaXplX3QgcGxhbmVJbmRleCksIChwaXhlbEJ1ZmZlciwg
cGxhbmVJbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9D
b3JlVmlkZW9Tb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29yZVZp
ZGVvU29mdExpbmsuaAppbmRleCBjOWI0MTM5MWNmY2I5OTM0YzNiYzUwNDMzZjMxOGY4ZDk1Yzg3
ZjJiLi4wMzczMjA0OTY5NmVmZWU0MWZhOWNkMjU0ZDM5N2FjNTkyNTBhNjE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db3JlVmlkZW9Tb2Z0TGluay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvcmVWaWRlb1NvZnRMaW5rLmgKQEAgLTQ0
LDggKzQ0LDEyIEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVW
aWRlbywgQ1ZQaXhlbEJ1ZmZlckdldFR5cGVJRCwgQ0ZUeXBlCiAjZGVmaW5lIENWUGl4ZWxCdWZm
ZXJHZXRUeXBlSUQgc29mdExpbmtfQ29yZVZpZGVvX0NWUGl4ZWxCdWZmZXJHZXRUeXBlSUQKIFNP
RlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1
ZmZlckdldFdpZHRoLCBzaXplX3QsIChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKSwgKHBp
eGVsQnVmZmVyKSkKICNkZWZpbmUgQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoIHNvZnRMaW5rX0NvcmVW
aWRlb19DVlBpeGVsQnVmZmVyR2V0V2lkdGgKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFdlYkNvcmUsIENvcmVWaWRlbywgQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoT2ZQbGFuZSwgc2l6ZV90
LCAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgc2l6ZV90IHBsYW5lSW5kZXgpLCAocGl4
ZWxCdWZmZXIsIHBsYW5lSW5kZXgpKQorI2RlZmluZSBDVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBs
YW5lIHNvZnRMaW5rX0NvcmVWaWRlb19DVlBpeGVsQnVmZmVyR2V0V2lkdGhPZlBsYW5lCiBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlVmlkZW8sIENWUGl4ZWxCdWZm
ZXJHZXRIZWlnaHQsIHNpemVfdCwgKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpLCAocGl4
ZWxCdWZmZXIpKQogI2RlZmluZSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0IHNvZnRMaW5rX0NvcmVW
aWRlb19DVlBpeGVsQnVmZmVyR2V0SGVpZ2h0CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihXZWJDb3JlLCBDb3JlVmlkZW8sIENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lLCBzaXpl
X3QsIChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBzaXplX3QgcGxhbmVJbmRleCksIChw
aXhlbEJ1ZmZlciwgcGxhbmVJbmRleCkpCisjZGVmaW5lIENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRP
ZlBsYW5lIHNvZnRMaW5rX0NvcmVWaWRlb19DVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQbGFuZQog
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZVZpZGVvLCBDVlBpeGVs
QnVmZmVyR2V0QmFzZUFkZHJlc3MsIHZvaWQqLCAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZl
ciksIChwaXhlbEJ1ZmZlcikpCiAjZGVmaW5lIENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzcyBz
b2Z0TGlua19Db3JlVmlkZW9fQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzCiBTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlVmlkZW8sIENWUGl4ZWxCdWZmZXJHZXRC
eXRlc1BlclJvdywgc2l6ZV90LCAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciksIChwaXhl
bEJ1ZmZlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRWaWRlb0ZyYW1lSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVk
VmlkZW9GcmFtZUluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZWU4YTk2ZDJlM2EyMmJmZmM1MmYzNjkwZDky
YmZlOGYxODI4ZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2hhcmVkVmlkZW9GcmFtZUluZm8uaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3Bhbi5oPgorCit0eXBlZGVmIHN0cnVjdCBfX0NW
QnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOwordHlwZWRlZiBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVy
UG9vbCogQ1ZQaXhlbEJ1ZmZlclBvb2xSZWY7CisKK25hbWVzcGFjZSB3ZWJydGMgeworY2xhc3Mg
VmlkZW9GcmFtZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRWaWRl
b0ZyYW1lSW5mbyB7CitwdWJsaWM6CisgICAgU2hhcmVkVmlkZW9GcmFtZUluZm8oKSA9IGRlZmF1
bHQ7CisgICAgU2hhcmVkVmlkZW9GcmFtZUluZm8oT1NUeXBlLCB1aW50MzJfdCB3aWR0aCwgdWlu
dDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBieXRlc1BlclJvdywgdWludDMyX3Qgd2lkdGhQbGFuZUIg
PSAwLCB1aW50MzJfdCBoZWlnaHRQbGFuZUIgPSAwLCB1aW50MzJfdCBieXRlc1BlclJvd1BsYW5l
QiA9IDApOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmNvZGUodWludDhfdCopOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWVJbmZv
PiBkZWNvZGUoU3Bhbjxjb25zdCB1aW50OF90Pik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU2hhcmVkVmlkZW9GcmFtZUluZm8gZnJvbUNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJl
Zik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB3cml0ZVBpeGVsQnVmZmVyKENWUGl4ZWxCdWZm
ZXJSZWYsIHVpbnQ4X3QqIGRhdGEpOworCisjaWYgVVNFKExJQldFQlJUQykKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgU2hhcmVkVmlkZW9GcmFtZUluZm8gZnJvbVZpZGVvRnJhbWUoY29uc3Qg
d2VicnRjOjpWaWRlb0ZyYW1lJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB3cml0ZVZpZGVv
RnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiwgdWludDhfdCogZGF0YSk7CisjZW5kaWYK
KworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzdG9yYWdlU2l6ZSgpIGNvbnN0OworCisgICAg
V0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNyZWF0ZVBpeGVsQnVm
ZmVyRnJvbU1lbW9yeShjb25zdCB1aW50OF90KiBkYXRhLCBDVlBpeGVsQnVmZmVyUG9vbFJlZiA9
IG51bGxwdHIpOworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1JlYWRXcml0ZVN1cHBvcnRl
ZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUG9v
bFJlZj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlclBvb2woKSBjb25zdDsKKworICAgIE9TVHlwZSBi
dWZmZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJUeXBlOyB9CisgICAgdWludDMyX3Qg
d2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9OworICAgIHVpbnQzMl90IGhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9OworCitwcml2YXRlOgorICAgIE9TVHlwZSBtX2J1
ZmZlclR5cGUgeyAwIH07CisgICAgdWludDMyX3QgbV93aWR0aCB7IDAgfTsKKyAgICB1aW50MzJf
dCBtX2hlaWdodCB7IDAgfTsKKyAgICB1aW50MzJfdCBtX2J5dGVzUGVyUm93IHsgMCB9OworICAg
IHVpbnQzMl90IG1fd2lkdGhQbGFuZUIgeyAwIH07CisgICAgdWludDMyX3QgbV9oZWlnaHRQbGFu
ZUIgeyAwIH07CisgICAgdWludDMyX3QgbV9ieXRlc1BlclJvd1BsYW5lQiB7IDAgfTsKK307CisK
Kworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgU2hhcmVkVmlkZW9GcmFtZUluZm9FbmNvZGluZ0xl
bmd0aCA9IHNpemVvZihTaGFyZWRWaWRlb0ZyYW1lSW5mbyk7CisKK2lubGluZSBTaGFyZWRWaWRl
b0ZyYW1lSW5mbzo6U2hhcmVkVmlkZW9GcmFtZUluZm8oT1NUeXBlIGJ1ZmZlclR5cGUsIHVpbnQz
Ml90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGJ5dGVzUGVyUm93LCB1aW50MzJf
dCB3aWR0aFBsYW5lQiwgdWludDMyX3QgaGVpZ2h0UGxhbmVCLCB1aW50MzJfdCBieXRlc1BlclJv
d1BsYW5lQikKKyAgICA6IG1fYnVmZmVyVHlwZShidWZmZXJUeXBlKQorICAgICwgbV93aWR0aCh3
aWR0aCkKKyAgICAsIG1faGVpZ2h0KGhlaWdodCkKKyAgICAsIG1fYnl0ZXNQZXJSb3coYnl0ZXNQ
ZXJSb3cpCisgICAgLCBtX3dpZHRoUGxhbmVCKHdpZHRoUGxhbmVCKQorICAgICwgbV9oZWlnaHRQ
bGFuZUIoaGVpZ2h0UGxhbmVCKQorICAgICwgbV9ieXRlc1BlclJvd1BsYW5lQihieXRlc1BlclJv
d1BsYW5lQikKK3sKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZFZpZGVvRnJhbWVJ
bmZvLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkVmlkZW9GcmFtZUlu
Zm8ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjFlZjJjZWJjNzllNzc0Zjg5NzE1NmE5ZjcxYmI1NmU0NGM0NjZm
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJl
ZFZpZGVvRnJhbWVJbmZvLm1tCkBAIC0wLDAgKzEsMjk5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlNoYXJlZFZpZGVvRnJhbWVJbmZvLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQ
TEFURk9STShDT0NPQSkKKworI2luY2x1ZGUgIkNWVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiSU9T
dXJmYWNlLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgor
I2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmg+CisKKyNpZiBVU0Uo
QUNDRUxFUkFURSkKKyNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUuaD4KKyNlbmRpZgor
CisjaWYgVVNFKExJQldFQlJUQykKKworQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KKyNp
bmNsdWRlIDx3ZWJydGMvYXBpL3ZpZGVvL3ZpZGVvX2ZyYW1lLmg+CisjaW5jbHVkZSA8d2VicnRj
L3Nkay9XZWJLaXQvV2ViS2l0VXRpbGl0aWVzLmg+CitBTExPV19VTlVTRURfUEFSQU1FVEVSU19F
TkQKKworI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCisKKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1NoYXJlZFZpZGVvRnJhbWVJbmZvIFNoYXJlZFZpZGVvRnJhbWVJbmZv
Ojpmcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKQoreworICAg
IGF1dG8gdHlwZSA9IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIp
OworICAgIGlmICh0eXBlID09IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJW
aWRlb1JhbmdlIHx8IHR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5h
ckZ1bGxSYW5nZSkKKyAgICAgICAgcmV0dXJuIHsgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KENWUGl4ZWxCdWZmZXJHZXRXaWR0aE9mUGxhbmUocGl4ZWxCdWZmZXIsIDApKSwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHBpeGVsQnVmZmVyLCAw
KSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3dPZlBs
YW5lKHBpeGVsQnVmZmVyLCAwKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihDVlBpeGVsQnVmZmVy
R2V0V2lkdGhPZlBsYW5lKHBpeGVsQnVmZmVyLCAxKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihD
VlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQbGFuZShwaXhlbEJ1ZmZlciwgMSkpLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShwaXhlbEJ1ZmZl
ciwgMSkpIH07CisgICAgcmV0dXJuIHsgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KENWUGl4
ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcikpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oQ1ZQ
aXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
Q1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93KHBpeGVsQnVmZmVyKSkgfTsKK30KKworYm9vbCBT
aGFyZWRWaWRlb0ZyYW1lSW5mbzo6aXNSZWFkV3JpdGVTdXBwb3J0ZWQoKSBjb25zdAoreworICAg
IHJldHVybiBtX2J1ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBs
YW5hclZpZGVvUmFuZ2UKKyNpZiBVU0UoQUNDRUxFUkFURSkKKyAgICAgICAgICAgIHx8IG1fYnVm
ZmVyVHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBCisjZW5kaWYKKyAgICAgICAgICAg
IHx8IG1fYnVmZmVyVHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFy
RnVsbFJhbmdlCisgICAgICAgICAgICB8fCBtX2J1ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRU
eXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2U7Cit9CisKK3NpemVfdCBTaGFyZWRWaWRl
b0ZyYW1lSW5mbzo6c3RvcmFnZVNpemUoKSBjb25zdAoreworICAgIHJldHVybiAobV9ieXRlc1Bl
clJvdyAqIG1faGVpZ2h0KSArIChtX2J5dGVzUGVyUm93UGxhbmVCICogbV9oZWlnaHRQbGFuZUIp
ICsgc2l6ZW9mKFNoYXJlZFZpZGVvRnJhbWVJbmZvKTsKK30KKwordm9pZCBTaGFyZWRWaWRlb0Zy
YW1lSW5mbzo6ZW5jb2RlKHVpbnQ4X3QqIGRlc3RpbmF0aW9uKQoreworICAgIFdURjo6UGVyc2lz
dGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8ICh1aW50MzJfdCltX2J1ZmZl
clR5cGU7CisgICAgZW5jb2RlciA8PCBtX3dpZHRoOworICAgIGVuY29kZXIgPDwgbV9oZWlnaHQ7
CisgICAgZW5jb2RlciA8PCBtX2J5dGVzUGVyUm93OworICAgIGVuY29kZXIgPDwgbV93aWR0aFBs
YW5lQjsKKyAgICBlbmNvZGVyIDw8IG1faGVpZ2h0UGxhbmVCOworICAgIGVuY29kZXIgPDwgbV9i
eXRlc1BlclJvd1BsYW5lQjsKKyAgICBBU1NFUlQoc2l6ZW9mKFNoYXJlZFZpZGVvRnJhbWVJbmZv
KSA9PSBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgc3RkOjptZW1jcHkoZGVzdGluYXRpb24s
IGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKK30KKworc3RkOjpvcHRp
b25hbDxTaGFyZWRWaWRlb0ZyYW1lSW5mbz4gU2hhcmVkVmlkZW9GcmFtZUluZm86OmRlY29kZShT
cGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pCit7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBkZWNvZGVyKHNwYW4pOworCisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gYnVmZmVyVHlw
ZTsKKyAgICBkZWNvZGVyID4+IGJ1ZmZlclR5cGU7CisgICAgaWYgKCFidWZmZXJUeXBlKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
d2lkdGg7CisgICAgZGVjb2RlciA+PiB3aWR0aDsKKyAgICBpZiAoIXdpZHRoKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaGVpZ2h0
OworICAgIGRlY29kZXIgPj4gaGVpZ2h0OworICAgIGlmICghaGVpZ2h0KQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gYnl0ZXNQZXJS
b3c7CisgICAgZGVjb2RlciA+PiBieXRlc1BlclJvdzsKKyAgICBpZiAoIWJ5dGVzUGVyUm93KQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gd2lkdGhQbGFuZUI7CisgICAgZGVjb2RlciA+PiB3aWR0aFBsYW5lQjsKKyAgICBpZiAoIXdp
ZHRoUGxhbmVCKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gaGVpZ2h0UGxhbmVCOworICAgIGRlY29kZXIgPj4gaGVpZ2h0UGxhbmVC
OworICAgIGlmICghaGVpZ2h0UGxhbmVCKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gYnl0ZXNQZXJSb3dQbGFuZUI7CisgICAgZGVj
b2RlciA+PiBieXRlc1BlclJvd1BsYW5lQjsKKyAgICBpZiAoIWJ5dGVzUGVyUm93UGxhbmVCKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIFNoYXJlZFZpZGVvRnJh
bWVJbmZvIHsgKmJ1ZmZlclR5cGUsICp3aWR0aCwgKmhlaWdodCwgKmJ5dGVzUGVyUm93ICwgKndp
ZHRoUGxhbmVCLCAqaGVpZ2h0UGxhbmVCLCAqYnl0ZXNQZXJSb3dQbGFuZUIgfTsKK30KKworUmV0
YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpjcmVhdGVQaXhl
bEJ1ZmZlckZyb21NZW1vcnkoY29uc3QgdWludDhfdCogZGF0YSwgQ1ZQaXhlbEJ1ZmZlclBvb2xS
ZWYgYnVmZmVyUG9vbCkKK3sKKyAgICBBU1NFUlQoaXNSZWFkV3JpdGVTdXBwb3J0ZWQoKSk7Cisg
ICAgaWYgKG1fYnVmZmVyVHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB7CisjaWYg
VVNFKEFDQ0VMRVJBVEUpCisgICAgICAgIEludFNpemUgc2l6ZSB7IHN0YXRpY19jYXN0PGludD4o
bV93aWR0aCksIHN0YXRpY19jYXN0PGludD4obV9oZWlnaHQpIH07CisgICAgICAgIGF1dG8gaW9T
dXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIElPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBKTsKKworICAgICAgICBJT1N1cmZhY2U6Okxv
Y2tlciBsb2NrKCppb1N1cmZhY2UpOworICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKKyAgICAg
ICAgc3JjLndpZHRoID0gbV93aWR0aDsKKyAgICAgICAgc3JjLmhlaWdodCA9IG1faGVpZ2h0Owor
ICAgICAgICBzcmMucm93Qnl0ZXMgPSBtX2J5dGVzUGVyUm93OworICAgICAgICBzcmMuZGF0YSA9
IGNvbnN0X2Nhc3Q8dWludDhfdCo+KGRhdGEpOworCisgICAgICAgIHZJbWFnZV9CdWZmZXIgZGVz
dDsKKyAgICAgICAgZGVzdC53aWR0aCA9IG1fd2lkdGg7CisgICAgICAgIGRlc3QuaGVpZ2h0ID0g
bV9oZWlnaHQ7CisgICAgICAgIGRlc3Qucm93Qnl0ZXMgPSBpb1N1cmZhY2UtPmJ5dGVzUGVyUm93
KCk7CisgICAgICAgIGRlc3QuZGF0YSA9IGxvY2suc3VyZmFjZUJhc2VBZGRyZXNzKCk7CisKKyAg
ICAgICAgdkltYWdlVW5wcmVtdWx0aXBseURhdGFfQkdSQTg4ODgoJnNyYywgJmRlc3QsIGt2SW1h
Z2VOb0ZsYWdzKTsKKworICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6Y3JlYXRl
Q1ZQaXhlbEJ1ZmZlcihpb1N1cmZhY2UtPnN1cmZhY2UoKSk7CisgICAgICAgIGlmICghcGl4ZWxC
dWZmZXIpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFdURk1v
dmUoKnBpeGVsQnVmZmVyKTsKKyNlbHNlCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
LCAiY3JlYXRlSU9TdXJmYWNlRnJvbVNoYXJlZE1lbW9yeSBjYW5ub3QgY29udmVydCB0byBJT1N1
cmZhY2UiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKKyAgICB9CisKKyAgICBD
VlBpeGVsQnVmZmVyUmVmIHJhd1BpeGVsQnVmZmVyID0gbnVsbHB0cjsKKyAgICBpZiAoYnVmZmVy
UG9vbCkgeworICAgICAgICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRlUGl4
ZWxCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVmZmVyUG9vbCwgJnJhd1BpeGVsQnVmZmVy
KTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBub0VyciB8fCAhcmF3UGl4ZWxCdWZmZXIpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBBU1NFUlQoQ1ZQaXhlbEJ1ZmZlckdl
dFdpZHRoT2ZQbGFuZShyYXdQaXhlbEJ1ZmZlciwgMCkgPT0gbV93aWR0aCk7CisgICAgICAgIEFT
U0VSVChDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQbGFuZShyYXdQaXhlbEJ1ZmZlciwgMCkgPT0g
bV9oZWlnaHQpOworICAgICAgICBBU1NFUlQoQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlw
ZShyYXdQaXhlbEJ1ZmZlcikgPT0gbV9idWZmZXJUeXBlKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBhdXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
bV93aWR0aCwgbV9oZWlnaHQsIG1fYnVmZmVyVHlwZSwgbnVsbHB0ciwgJnJhd1BpeGVsQnVmZmVy
KTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBub0VyciB8fCAhcmF3UGl4ZWxCdWZmZXIpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0g
YWRvcHRDRihyYXdQaXhlbEJ1ZmZlcik7CisgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVy
TG9ja0Jhc2VBZGRyZXNzKHJhd1BpeGVsQnVmZmVyLCAwKTsKKyAgICBpZiAoc3RhdHVzICE9IG5v
RXJyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gc2NvcGUgPSBtYWtlU2Nv
cGVFeGl0KFsmcmF3UGl4ZWxCdWZmZXJdIHsKKyAgICAgICAgQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jh
c2VBZGRyZXNzKHJhd1BpeGVsQnVmZmVyLCAwKTsKKyAgICB9KTsKKworICAgIGlmIChDVlBpeGVs
QnVmZmVyR2V0V2lkdGhPZlBsYW5lKHJhd1BpeGVsQnVmZmVyLCAxKSAhPSBtX3dpZHRoUGxhbmVC
IHx8IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lKHJhd1BpeGVsQnVmZmVyLCAxKSAhPSBt
X2hlaWdodFBsYW5lQikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBwbGFu
ZUEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQ
bGFuZShyYXdQaXhlbEJ1ZmZlciwgMCkpOworICAgIHVpbnQzMl90IGJ5dGVzUGVyUm93UGxhbmVB
ID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShyYXdQaXhlbEJ1ZmZlciwgMCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faGVpZ2h0OyArK2kpIHsKKyAgICAgICAg
c3RkOjptZW1jcHkocGxhbmVBLCBkYXRhLCBzdGQ6Om1pbihieXRlc1BlclJvd1BsYW5lQSwgbV9i
eXRlc1BlclJvdykpOworICAgICAgICBwbGFuZUEgKz0gYnl0ZXNQZXJSb3dQbGFuZUE7CisgICAg
ICAgIGRhdGEgKz0gbV9ieXRlc1BlclJvdzsKKyAgICB9CisKKyAgICBhdXRvKiBwbGFuZUIgPSBz
dGF0aWNfY2FzdDx1aW50OF90Kj4oQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShy
YXdQaXhlbEJ1ZmZlciwgMSkpOworICAgIHVpbnQzMl90IGJ5dGVzUGVyUm93UGxhbmVCID0gQ1ZQ
aXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZShyYXdQaXhlbEJ1ZmZlciwgMSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faGVpZ2h0UGxhbmVCOyArK2kpIHsKKyAgICAgICAg
c3RkOjptZW1jcHkocGxhbmVCLCBkYXRhLCBzdGQ6Om1pbihieXRlc1BlclJvd1BsYW5lQiwgbV9i
eXRlc1BlclJvd1BsYW5lQikpOworICAgICAgICBwbGFuZUIgKz0gYnl0ZXNQZXJSb3dQbGFuZUI7
CisgICAgICAgIGRhdGEgKz0gbV9ieXRlc1BlclJvd1BsYW5lQjsKKyAgICB9CisKKyAgICBDVlBp
eGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmF3UGl4ZWxCdWZmZXIsIDApOworICAgIHJldHVy
biBwaXhlbEJ1ZmZlcjsKK30KKworYm9vbCBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6d3JpdGVQaXhl
bEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCB1aW50OF90KiBkYXRhKQorewor
ICAgIGF1dG8gcmVzdWx0ID0gQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyhwaXhlbEJ1ZmZl
ciwga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKKyAgICBpZiAocmVzdWx0ICE9IGtDVlJl
dHVyblN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gc2NvcGUgPSBt
YWtlU2NvcGVFeGl0KFsmcGl4ZWxCdWZmZXJdIHsKKyAgICAgICAgQ1ZQaXhlbEJ1ZmZlclVubG9j
a0Jhc2VBZGRyZXNzKHBpeGVsQnVmZmVyLCBrQ1ZQaXhlbEJ1ZmZlckxvY2tfUmVhZE9ubHkpOwor
ICAgIH0pOworCisgICAgZW5jb2RlKGRhdGEpOworICAgIGRhdGEgKz0gc2l6ZW9mKFNoYXJlZFZp
ZGVvRnJhbWVJbmZvKTsKKworICAgIGlmIChtX2J1ZmZlclR5cGUgPT0ga0NWUGl4ZWxGb3JtYXRU
eXBlXzMyQkdSQSkgeworI2lmIFVTRShBQ0NFTEVSQVRFKQorICAgICAgICB2SW1hZ2VfQnVmZmVy
IHNyYzsKKyAgICAgICAgc3JjLndpZHRoID0gbV93aWR0aDsKKyAgICAgICAgc3JjLmhlaWdodCA9
IG1faGVpZ2h0OworICAgICAgICBzcmMucm93Qnl0ZXMgPSBtX2J5dGVzUGVyUm93OworICAgICAg
ICBzcmMuZGF0YSA9IENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzcyhwaXhlbEJ1ZmZlcik7CisK
KyAgICAgICAgdkltYWdlX0J1ZmZlciBkZXN0OworICAgICAgICBkZXN0LndpZHRoID0gbV93aWR0
aDsKKyAgICAgICAgZGVzdC5oZWlnaHQgPSBtX2hlaWdodDsKKyAgICAgICAgZGVzdC5yb3dCeXRl
cyA9IG1fYnl0ZXNQZXJSb3c7CisgICAgICAgIGRlc3QuZGF0YSA9IGRhdGE7CisKKyAgICAgICAg
dkltYWdlVW5wcmVtdWx0aXBseURhdGFfQkdSQTg4ODgoJnNyYywgJmRlc3QsIGt2SW1hZ2VOb0Zs
YWdzKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorICAgIH0KKworICAgIGNvbnN0IHVpbnQ4X3QgKnBsYW5lQSA9IHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QgKj4oQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShw
aXhlbEJ1ZmZlciwgMCkpOworICAgIGNvbnN0IHVpbnQ4X3QgKnBsYW5lQiA9IHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QgKj4oQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShwaXhl
bEJ1ZmZlciwgMSkpOworCisgICAgc2l6ZV90IHBsYW5lQVNpemUgPSBtX2hlaWdodCAqIG1fYnl0
ZXNQZXJSb3c7CisgICAgc3RkOjptZW1jcHkoZGF0YSwgcGxhbmVBLCBwbGFuZUFTaXplKTsKKyAg
ICBzaXplX3QgcGxhbmVCU2l6ZSA9IG1faGVpZ2h0UGxhbmVCICogbV9ieXRlc1BlclJvd1BsYW5l
QjsKKyAgICBzdGQ6Om1lbWNweShkYXRhICsgcGxhbmVBU2l6ZSwgcGxhbmVCLCBwbGFuZUJTaXpl
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclBvb2xS
ZWY+IFNoYXJlZFZpZGVvRnJhbWVJbmZvOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyUG9vbCgpIGNv
bnN0Cit7CisgICAgYXV0byByZXN1bHQgPSBjcmVhdGVJT1N1cmZhY2VDVlBpeGVsQnVmZmVyUG9v
bChtX3dpZHRoLCBtX2hlaWdodCwgbV9idWZmZXJUeXBlKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gKnJlc3VsdDsKK30KKworI2lmIFVTRShMSUJX
RUJSVEMpCitTaGFyZWRWaWRlb0ZyYW1lSW5mbyBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZnJvbVZp
ZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSkKK3sKKyAgICBhdXRvIGJ1
ZmZlciA9IGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpOworICAgIGlmIChidWZmZXItPnR5cGUo
KSA9PSB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpCisgICAgICAgIHJl
dHVybiBTaGFyZWRWaWRlb0ZyYW1lSW5mbyB7IH07CisKKyAgICBhdXRvIHR5cGUgPSBidWZmZXIt
PnR5cGUoKTsKKworICAgIGlmICh0eXBlID09IHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlw
ZTo6a0k0MjApCisgICAgICAgIHJldHVybiBTaGFyZWRWaWRlb0ZyYW1lSW5mbyB7IGtDVlBpeGVs
Rm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJGdWxsUmFuZ2UsCisgICAgICAgICAgICBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90Pihm
cmFtZS5oZWlnaHQoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSwKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0aCgpKSwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGZyYW1lLmhlaWdodCgpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZyYW1l
LndpZHRoKCkpIC8gMiB9OworCisgICAgaWYgKHR5cGUgPT0gd2VicnRjOjpWaWRlb0ZyYW1lQnVm
ZmVyOjpUeXBlOjprSTAxMCkKKyAgICAgICAgcmV0dXJuIFNoYXJlZFZpZGVvRnJhbWVJbmZvIHsg
a0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjEwQmlQbGFuYXJGdWxsUmFuZ2UsCisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgoKSksIHN0YXRpY19jYXN0PHVp
bnQzMl90PihmcmFtZS5oZWlnaHQoKSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS53aWR0
aCgpICogMiksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZnJhbWUud2lkdGgo
KSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihmcmFtZS5oZWlnaHQoKSksIHN0YXRpY19jYXN0PHVp
bnQzMl90PihmcmFtZS53aWR0aCgpKSB9OworCisgICAgcmV0dXJuIFNoYXJlZFZpZGVvRnJhbWVJ
bmZvIHsgfTsKK30KKworYm9vbCBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6d3JpdGVWaWRlb0ZyYW1l
KGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIHVpbnQ4X3QqIGRhdGEpCit7CisgICAg
QVNTRVJUKG1fYnVmZmVyVHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxh
bmFyRnVsbFJhbmdlIHx8IG1fYnVmZmVyVHlwZSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBD
YkNyMTBCaVBsYW5hckZ1bGxSYW5nZSk7CisgICAgcmV0dXJuIHdlYnJ0Yzo6Y29weVZpZGVvRnJh
bWUoZnJhbWUsIGRhdGEpOworfQorI2VuZGlmCisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCmluZGV4IGI1MDM5ODE3NTMw
NDA1YWIwMGFiMGJjNzI4OTc1NzRlM2Q4YzM1ZTguLmM1YjJkZGY5ZTZjYzQwOGEwYzhmNjIwMDI5
YTFhYjFjY2Y3YzEzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIGlu
bGluZSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiB0cmFuc2ZlckJHUkFQaXhlbEJ1ZmZlclRv
SU9TdXJmYWNlKENWUGkKICNlbmRpZgogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9T
YW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3N0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0
ZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBTaG91bGRDaGVja0ZvcklPU3VyZmFjZSBzaG91bGRDaGVj
a0ZvcklPU3VyZmFjZSkKIHsKICAgICBBU1NFUlQoc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkudHlw
ZSA9PSBQbGF0Zm9ybVNhbXBsZTo6Q01TYW1wbGVCdWZmZXJUeXBlKTsKIApAQCAtOTcsNyArOTcs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxl
OjpjcmVhdGUoTWVkaWFTYW1wbGUmIHNhbXBsZQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPElPU3Vy
ZmFjZT4gaW9TdXJmYWNlOwogICAgIGF1dG8gc3VyZmFjZSA9IENWUGl4ZWxCdWZmZXJHZXRJT1N1
cmZhY2UoaW1hZ2VCdWZmZXIuZ2V0KCkpOwotICAgIGlmICghc3VyZmFjZSkgeworICAgIGlmICgh
c3VyZmFjZSAmJiBzaG91bGRDaGVja0ZvcklPU3VyZmFjZSA9PSBTaG91bGRDaGVja0ZvcklPU3Vy
ZmFjZTo6WWVzKSB7CiAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgY2FudmFzIGRhdGEgdGhh
dCBpcyBSR0JBLCBub3QgSU9TdXJmYWNlIGJhY2tlZC4KICAgICAgICAgYXV0byBwaXhlbEZvcm1h
dFR5cGUgPSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKGltYWdlQnVmZmVyLmdldCgp
KTsKICAgICAgICAgaWYgKHBpeGVsRm9ybWF0VHlwZSAhPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJC
R1JBKSB7CkBAIC0xMTUsMTAgKzExNSwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9T
YW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoTWVkaWFTYW1wbGUmIHNhbXBsZQogICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRl
b1NhbXBsZShzdXJmYWNlLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0
aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiYmIGltYWdlQnVmZmVyLCBNZWRpYVRpbWUmJiBwcmVzZW50YXRpb25UaW1l
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVWaWRlb1NhbXBsZT4gUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZShSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4mJiBpbWFnZUJ1ZmZlciwgTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9uVGlt
ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIFNob3VsZENoZWNrRm9ySU9T
dXJmYWNlIHNob3VsZENoZWNrRm9ySU9TdXJmYWNlKQogewogICAgIGF1dG8gc3VyZmFjZSA9IENW
UGl4ZWxCdWZmZXJHZXRJT1N1cmZhY2UoaW1hZ2VCdWZmZXIuZ2V0KCkpOwotICAgIGlmICghc3Vy
ZmFjZSkgeworICAgIGlmICghc3VyZmFjZSAmJiBzaG91bGRDaGVja0ZvcklPU3VyZmFjZSA9PSBT
aG91bGRDaGVja0ZvcklPU3VyZmFjZTo6WWVzKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhLCAiUmVtb3RlVmlkZW9TYW1wbGU6OmNyZWF0ZTogQ1ZQaXhlbEJ1ZmZlckdldElPU3Vy
ZmFjZSByZXR1cm5lZCBudWxscHRyIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVv
U2FtcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1Nh
bXBsZS5oCmluZGV4IDA4MWUyMzU2NWFjYzQ4NDBhODA0YzdkMDc0ZTZkZjIwNTk4MzlmMTcuLmNk
MTBkOWMwNWNiOGExZDg2ZTY0M2Q1YTNmYWFhZTVjNzRmMDg3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaApAQCAtNDYs
OSArNDYsMTIgQEAgcHVibGljOgogICAgIFJlbW90ZVZpZGVvU2FtcGxlJiBvcGVyYXRvcj0oUmVt
b3RlVmlkZW9TYW1wbGUmJikgPSBkZWZhdWx0OwogICAgIH5SZW1vdGVWaWRlb1NhbXBsZSgpID0g
ZGVmYXVsdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlVmlkZW9TYW1wbGU+IGNyZWF0ZShNZWRpYVNhbXBsZSYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IGNyZWF0ZShSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiwgTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9uVGltZSwgTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9u
ZSk7CisgICAgZW51bSBjbGFzcyBTaG91bGRDaGVja0ZvcklPU3VyZmFjZSB7IE5vLCBZZXMgfTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2Ft
cGxlPiBjcmVhdGUoTWVkaWFTYW1wbGUmLCBTaG91bGRDaGVja0ZvcklPU3VyZmFjZSA9IFNob3Vs
ZENoZWNrRm9ySU9TdXJmYWNlOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IGNyZWF0ZShSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclJlZj4mJiwgTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9uVGltZSwgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgU2hvdWxkQ2hl
Y2tGb3JJT1N1cmZhY2UgPSBTaG91bGRDaGVja0ZvcklPU3VyZmFjZTo6WWVzKTsKKwogICAgIFdF
QkNPUkVfRVhQT1JUIElPU3VyZmFjZVJlZiBzdXJmYWNlKCkgY29uc3Q7CisgICAgQ1ZQaXhlbEJ1
ZmZlclJlZiBpbWFnZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7
IH0KIAogICAgIHZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzUHJveHkuaAppbmRleCBlZWM4ZDY2ZmFhYmFmYjc5OWIwZmRlZGM0NTljNGRiNWE3
ZjIyZTNiLi5jNzcyY2I3NzYwZjJkNTgyOWFmY2QyYjg1ZjU5MTNhMzBjMDA3NDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQ
cm94eS5oCkBAIC0zMSwxMSArMzEsMTQgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiUlRDRGVjb2RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENFbmNvZGVySWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgIlNoYXJlZFZp
ZGVvRnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNs
YXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOworY2xhc3MgU2VtYXBob3JlOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw2ICs1Myw3IEBAIHVzaW5nIExvY2FsRW5jb2RlciA9
IHZvaWQqOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M7CitjbGFzcyBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOwogCiBjbGFzcyBMaWJXZWJSVEND
b2RlY3NQcm94eSA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OlRocmVhZE1lc3NhZ2VSZWNlaXZl
clJlZkNvdW50ZWQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtODEsMTYgKzg1
LDIxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplRW5jb2RlcihSVENFbmNvZGVySWRl
bnRpZmllciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRC
aXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRyYXRlLCB1aW50MzJf
dCBtYXhGcmFtZXJhdGUpOwogICAgIHZvaWQgZW5jb2RlRnJhbWUoUlRDRW5jb2RlcklkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9v
bCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKICAgICB2b2lkIHNldEVuY29kZVJhdGVzKFJUQ0Vu
Y29kZXJJZGVudGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpOwor
ICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZShSVENFbmNvZGVySWRlbnRpZmll
ciwgSVBDOjpTZW1hcGhvcmUmJik7CisgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5
KFJUQ0VuY29kZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwog
ICAgIHZvaWQgc2V0UlRDTG9nZ2luZ0xldmVsKFdURkxvZ0xldmVsKTsKIAotICAgIENGRGljdGlv
bmFyeVJlZiBpb1N1cmZhY2VQaXhlbEJ1ZmZlckNyZWF0aW9uT3B0aW9ucyhJT1N1cmZhY2VSZWYp
OwotCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOwogCisgICAgc3RydWN0IEVuY29kZXIgeworICAgICAgICB3ZWJydGM6OkxvY2FsRW5j
b2RlciB3ZWJydGNFbmNvZGVyIHsgbnVsbHB0ciB9OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2hhcmVkVmlkZW9GcmFtZVJlYWRlcj4gZnJhbWVSZWFkZXI7CisgICAgfTsKKyAgICBFbmNvZGVy
KiBmaW5kRW5jb2RlcldpdGhvdXRMb2NrKFJUQ0VuY29kZXJJZGVudGlmaWVyKTsKKwogICAgIG11
dGFibGUgTG9jayBtX2xvY2s7CiAgICAgSGFzaE1hcDxSVENEZWNvZGVySWRlbnRpZmllciwgd2Vi
cnRjOjpMb2NhbERlY29kZXI+IG1fZGVjb2RlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2sp
OyAvLyBPbmx5IG1vZGlmaWVkIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZSBidXQgbWF5IGdl
dCBhY2Nlc3NlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KLSAgICBIYXNoTWFwPFJUQ0VuY29kZXJJ
ZGVudGlmaWVyLCB3ZWJydGM6OkxvY2FsRW5jb2Rlcj4gbV9lbmNvZGVycyBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fbG9jayk7IC8vIE9ubHkgbW9kaWZpZWQgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1
ZXVlIGJ1dCBtYXkgZ2V0IGFjY2Vzc2VkIGZyb20gdGhlIG1haW4gdGhyZWFkLgotCisgICAgSGFz
aE1hcDxSVENFbmNvZGVySWRlbnRpZmllciwgRW5jb2Rlcj4gbV9lbmNvZGVycyBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fbG9jayk7IC8vIE9ubHkgbW9kaWZpZWQgb24gdGhlIGxpYldlYlJUQ0NvZGVj
c1F1ZXVlIGJ1dCBtYXkgZ2V0IGFjY2Vzc2VkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogICAgIFJl
ZjxXb3JrUXVldWU+IG1fcXVldWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tZXNzYWdlcy5p
bgppbmRleCA4MTMyOTUwMGU2ZTlkNTNmZjI3NGY1M2U3MmMyZjYyYTAzYjJlZTA5Li42YmIyMDg2
MzhkYzIyYTg5ZWZiODljOWFmOTA2YTAzZWE2OWU3NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHku
bWVzc2FnZXMuaW4KQEAgLTM2LDYgKzM2LDggQEAgbWVzc2FnZXMgLT4gTGliV2ViUlRDQ29kZWNz
UHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgSW5pdGlhbGl6ZUVuY29kZXIoV2ViS2l0OjpSVENF
bmNvZGVySWRlbnRpZmllciBpZCwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5z
aWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25lZCBtaW5CaXRy
YXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpCiAgICAgRW5jb2RlRnJhbWUoV2ViS2l0OjpSVENF
bmNvZGVySWRlbnRpZmllciBpZCwgV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUgc2FtcGxlLCB1
aW50MzJfdCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkKICAgICBTZXRF
bmNvZGVSYXRlcyhXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCB1aW50MzJfdCBiaXRS
YXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpCisgICAgU2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9y
ZShXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyIGlkLCBJUEM6OlNlbWFwaG9yZSBzZW1hcGhv
cmUpCisgICAgU2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShXZWJLaXQ6OlJUQ0VuY29kZXJJZGVu
dGlmaWVyIGlkLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUp
CiAgICAgU2V0UlRDTG9nZ2luZ0xldmVsKFdURkxvZ0xldmVsIGxldmVsKQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94
eS5tbQppbmRleCAzMGZhMzBjYjNkYzljOWI0MDFmMGM0ZWNmY2UyMTA4MWVjNDZlNWMxLi44ZDYz
OWEzNDY5ZDVjMWEwNTlhZWYxNGU0MDJlMmU4OTJiM2IxNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KQEAg
LTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkdQVVByb2Nlc3MuaCIKICNpbXBvcnQgIkxpYldlYlJU
Q0NvZGVjc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMaWJXZWJSVENDb2RlY3NQcm94eU1lc3NhZ2Vz
LmgiCisjaW1wb3J0ICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ1ZVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTGliV2ViUlRDUHJvdmlkZXIuaD4KQEAgLTY5LDggKzcwLDggQEAgdm9pZCBMaWJXZWJS
VENDb2RlY3NQcm94eTo6Y2xvc2UoKQogICAgICAgICBmb3IgKGF1dG8gZGVjb2RlciA6IGRlY29k
ZXJzLnZhbHVlcygpKQogICAgICAgICAgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxEZWNvZGVyKGRl
Y29kZXIpOwogICAgICAgICBhdXRvIGVuY29kZXJzID0gV1RGTW92ZShtX2VuY29kZXJzKTsKLSAg
ICAgICAgZm9yIChhdXRvIGVuY29kZXIgOiBlbmNvZGVycy52YWx1ZXMoKSkKLSAgICAgICAgICAg
IHdlYnJ0Yzo6cmVsZWFzZUxvY2FsRW5jb2RlcihlbmNvZGVyKTsKKyAgICAgICAgZm9yIChhdXRv
JiBlbmNvZGVyIDogZW5jb2RlcnMudmFsdWVzKCkpCisgICAgICAgICAgICB3ZWJydGM6OnJlbGVh
c2VMb2NhbEVuY29kZXIoZW5jb2Rlci53ZWJydGNFbmNvZGVyKTsKICAgICB9KTsKIH0KIApAQCAt
MTU5LDcgKzE2MCw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZUVuY29kZXIo
UlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QKICAgICAgICAgY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzOjpDb21wbGV0ZWRFbmNvZGluZyB7IGlk
ZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSB7IGJ1ZmZlciwgc2l6ZSB9LCBpbmZvIH0sIDAp
OwogICAgIH0pLmdldCgpKTsKICAgICB3ZWJydGM6OnNldExvY2FsRW5jb2Rlckxvd0xhdGVuY3ko
ZW5jb2RlciwgdXNlTG93TGF0ZW5jeSk7Ci0gICAgbV9lbmNvZGVycy5hZGQoaWRlbnRpZmllciwg
ZW5jb2Rlcik7CisgICAgbV9lbmNvZGVycy5hZGQoaWRlbnRpZmllciwgRW5jb2RlciB7IGVuY29k
ZXIsIG51bGxwdHIgfSk7CiB9CiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OnJlbGVhc2VF
bmNvZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC0xNjcsMjEgKzE2OCwy
OSBAQCB2b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpyZWxlYXNlRW5jb2RlcihSVENFbmNvZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29udGFp
bnMoaWRlbnRpZmllcikpOwotICAgIGlmIChhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLnRha2Uo
aWRlbnRpZmllcikpCi0gICAgICAgIHdlYnJ0Yzo6cmVsZWFzZUxvY2FsRW5jb2RlcihlbmNvZGVy
KTsKKyAgICBhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLnRha2UoaWRlbnRpZmllcik7CisgICAg
aWYgKGVuY29kZXIud2VicnRjRW5jb2RlcikKKyAgICAgICAgd2VicnRjOjpyZWxlYXNlTG9jYWxF
bmNvZGVyKGVuY29kZXIud2VicnRjRW5jb2Rlcik7CiB9CiAKIC8vIEZvciBwZXJmb3JtYW5jZSBy
ZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vzc2VzIG1fZW5jb2RlcnMgd2l0aG91dCBsb2NraW5n
LiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJU
Q0NvZGVjc1F1ZXVlCiAvLyBhbmQgbV9lbmNvZGVycyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlz
IHF1ZXVlLgotdm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6aW5pdGlhbGl6ZUVuY29kZXIoUlRD
RW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhl
aWdodCwgdW5zaWduZWQgc3RhcnRCaXRyYXRlLCB1bnNpZ25lZCBtYXhCaXRyYXRlLCB1bnNpZ25l
ZCBtaW5CaXRyYXRlLCB1aW50MzJfdCBtYXhGcmFtZXJhdGUpIFdURl9JR05PUkVTX1RIUkVBRF9T
QUZFVFlfQU5BTFlTSVMKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmluaXRpYWxpemVFbmNv
ZGVyKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQxNl90IHdpZHRoLCB1aW50
MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0cmF0ZSwgdW5zaWduZWQgbWF4Qml0cmF0ZSwg
dW5zaWduZWQgbWluQml0cmF0ZSwgdWludDMyX3QgbWF4RnJhbWVyYXRlKQogewotICAgIEFTU0VS
VCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBBU1NFUlQobV9lbmNvZGVycy5jb250YWlucyhpZGVu
dGlmaWVyKSk7Ci0gICAgYXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy5nZXQoaWRlbnRpZmllcik7
CisgICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmllcik7
CiAgICAgaWYgKCFlbmNvZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJydGM6OmluaXRp
YWxpemVMb2NhbEVuY29kZXIoZW5jb2Rlciwgd2lkdGgsIGhlaWdodCwgc3RhcnRCaXRyYXRlLCBt
YXhCaXRyYXRlLCBtaW5CaXRyYXRlLCBtYXhGcmFtZXJhdGUpOworICAgIHdlYnJ0Yzo6aW5pdGlh
bGl6ZUxvY2FsRW5jb2RlcihlbmNvZGVyLT53ZWJydGNFbmNvZGVyLCB3aWR0aCwgaGVpZ2h0LCBz
dGFydEJpdHJhdGUsIG1heEJpdHJhdGUsIG1pbkJpdHJhdGUsIG1heEZyYW1lcmF0ZSk7Cit9CisK
K0xpYldlYlJUQ0NvZGVjc1Byb3h5OjpFbmNvZGVyKiBMaWJXZWJSVENDb2RlY3NQcm94eTo6Zmlu
ZEVuY29kZXJXaXRob3V0TG9jayhSVENFbmNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKSBXVEZf
SUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCit7CisgICAgQVNTRVJUKCFpc01haW5SdW5M
b29wKCkpOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2VuY29kZXJzLmZpbmQoaWRlbnRpZmllcik7
CisgICAgaWYgKGl0ZXJhdG9yID09IG1fZW5jb2RlcnMuZW5kKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiAmaXRlcmF0b3ItPnZhbHVlOwogfQogCiBzdGF0aWMgaW5saW5l
IHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiB0b1dlYlJUQ1ZpZGVvUm90YXRpb24oV2ViQ29yZTo6TWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCkBAIC0yMDIsMzQgKzIxMSw2OSBAQCBz
dGF0aWMgaW5saW5lIHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiB0b1dlYlJUQ1ZpZGVvUm90YXRpb24o
V2ViQ29yZTo6TWVkaWFTYW1wbGU6OgogCiAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhp
cyBmdW5jdGlvbiBhY2Nlc3NlcyBtX2VuY29kZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBz
YWZlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1
ZQogLy8gYW5kIG1fZW5jb2RlcnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KLXZv
aWQgTGliV2ViUlRDQ29kZWNzUHJveHk6OmVuY29kZUZyYW1lKFJUQ0VuY29kZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgc2FtcGxlLCB1aW50MzJf
dCB0aW1lU3RhbXAsIGJvb2wgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSkgV1RGX0lHTk9SRVNfVEhS
RUFEX1NBRkVUWV9BTkFMWVNJUwordm9pZCBMaWJXZWJSVENDb2RlY3NQcm94eTo6ZW5jb2RlRnJh
bWUoUlRDRW5jb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlVmlkZW9T
YW1wbGUmJiBzYW1wbGUsIHVpbnQzMl90IHRpbWVTdGFtcCwgYm9vbCBzaG91bGRFbmNvZGVBc0tl
eUZyYW1lKQogewotICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICBBU1NFUlQobV9l
bmNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7Ci0gICAgYXV0byBlbmNvZGVyID0gbV9lbmNv
ZGVycy5nZXQoaWRlbnRpZmllcik7CisgICAgQVNTRVJUKGZpbmRFbmNvZGVyV2l0aG91dExvY2so
aWRlbnRpZmllcikpOworICAgIGF1dG8qIGVuY29kZXIgPSBmaW5kRW5jb2RlcldpdGhvdXRMb2Nr
KGlkZW50aWZpZXIpOwogICAgIGlmICghZW5jb2RlcikKICAgICAgICAgcmV0dXJuOwogCiAjaWYg
IVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIGlmICghc2FtcGxlLnN1cmZhY2UoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVs
QnVmZmVyKHNhbXBsZS5zdXJmYWNlKCkpOworICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiBwaXhlbEJ1ZmZlcjsKKyAgICBpZiAoc2FtcGxlLnN1cmZhY2UoKSkgeworICAgICAgICBpZiAo
YXV0byBidWZmZXIgPSBXZWJDb3JlOjpjcmVhdGVDVlBpeGVsQnVmZmVyKHNhbXBsZS5zdXJmYWNl
KCkpKQorICAgICAgICAgICAgcGl4ZWxCdWZmZXIgPSBXVEZNb3ZlKCpidWZmZXIpOworICAgIH0g
ZWxzZSBpZiAoZW5jb2Rlci0+ZnJhbWVSZWFkZXIpCisgICAgICAgIHBpeGVsQnVmZmVyID0gZW5j
b2Rlci0+ZnJhbWVSZWFkZXItPnJlYWQoKTsKKwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAg
ICAgIHJldHVybjsKLSAgICB3ZWJydGM6OmVuY29kZUxvY2FsRW5jb2RlckZyYW1lKGVuY29kZXIs
IHBpeGVsQnVmZmVyLT5nZXQoKSwgc2FtcGxlLnRpbWUoKS50b1RpbWVTY2FsZSgxMDAwMDAwKS50
aW1lVmFsdWUoKSwgdGltZVN0YW1wLCB0b1dlYlJUQ1ZpZGVvUm90YXRpb24oc2FtcGxlLnJvdGF0
aW9uKCkpLCBzaG91bGRFbmNvZGVBc0tleUZyYW1lKTsKKworICAgIHdlYnJ0Yzo6ZW5jb2RlTG9j
YWxFbmNvZGVyRnJhbWUoZW5jb2Rlci0+d2VicnRjRW5jb2RlciwgcGl4ZWxCdWZmZXIuZ2V0KCks
IHNhbXBsZS50aW1lKCkudG9UaW1lU2NhbGUoMTAwMDAwMCkudGltZVZhbHVlKCksIHRpbWVTdGFt
cCwgdG9XZWJSVENWaWRlb1JvdGF0aW9uKHNhbXBsZS5yb3RhdGlvbigpKSwgc2hvdWxkRW5jb2Rl
QXNLZXlGcmFtZSk7CiAjZW5kaWYKIH0KIAogLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRo
aXMgZnVuY3Rpb24gYWNjZXNzZXMgbV9lbmNvZGVycyB3aXRob3V0IGxvY2tpbmcuIFRoaXMgaXMg
c2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcnVucyBvbiB0aGUgbGliV2ViUlRDQ29kZWNzUXVl
dWUKIC8vIGFuZCBtX2VuY29kZXJzIG9ubHkgZ2V0IG1vZGlmaWVkIG9uIHRoaXMgcXVldWUuCi12
b2lkIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpzZXRFbmNvZGVSYXRlcyhSVENFbmNvZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpIFdU
Rl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3ZvaWQgTGliV2ViUlRDQ29kZWNzUHJv
eHk6OnNldEVuY29kZVJhdGVzKFJUQ0VuY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQz
Ml90IGJpdFJhdGUsIHVpbnQzMl90IGZyYW1lUmF0ZSkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblJ1
bkxvb3AoKSk7Ci0gICAgYXV0byBlbmNvZGVyID0gbV9lbmNvZGVycy5nZXQoaWRlbnRpZmllcik7
CisgICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmllcik7
CisgICAgaWYgKCFlbmNvZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJydGM6OnNldExv
Y2FsRW5jb2RlclJhdGVzKGVuY29kZXItPndlYnJ0Y0VuY29kZXIsIGJpdFJhdGUsIGZyYW1lUmF0
ZSk7Cit9CisKKy8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGFjY2Vz
c2VzIG1fZW5jb2RlcnMgd2l0aG91dCBsb2NraW5nLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSB0aGlz
IGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGxpYldlYlJUQ0NvZGVjc1F1ZXVlCisvLyBhbmQgbV9lbmNv
ZGVycyBvbmx5IGdldCBtb2RpZmllZCBvbiB0aGlzIHF1ZXVlLgordm9pZCBMaWJXZWJSVENDb2Rl
Y3NQcm94eTo6c2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZShSVENFbmNvZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKK3sKKyAgICBBU1NFUlQo
ZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVyKSk7CisgICAgYXV0byogZW5jb2RlciA9
IGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmllcik7CiAgICAgaWYgKCFlbmNvZGVyKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJydGM6OnNldExvY2FsRW5jb2RlclJhdGVzKGVuY29k
ZXIsIGJpdFJhdGUsIGZyYW1lUmF0ZSk7CisgICAgaWYgKCFlbmNvZGVyLT5mcmFtZVJlYWRlcikK
KyAgICAgICAgZW5jb2Rlci0+ZnJhbWVSZWFkZXIgPSBtYWtlVW5pcXVlPFNoYXJlZFZpZGVvRnJh
bWVSZWFkZXI+KCk7CisgICAgZW5jb2Rlci0+ZnJhbWVSZWFkZXItPnNldFNlbWFwaG9yZShXVEZN
b3ZlKHNlbWFwaG9yZSkpOworfQorCisvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBm
dW5jdGlvbiBhY2Nlc3NlcyBtX2VuY29kZXJzIHdpdGhvdXQgbG9ja2luZy4gVGhpcyBpcyBzYWZl
IGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBydW5zIG9uIHRoZSBsaWJXZWJSVENDb2RlY3NRdWV1ZQor
Ly8gYW5kIG1fZW5jb2RlcnMgb25seSBnZXQgbW9kaWZpZWQgb24gdGhpcyBxdWV1ZS4KK3ZvaWQg
TGliV2ViUlRDQ29kZWNzUHJveHk6OnNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkoUlRDRW5jb2Rl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmIGlw
Y0hhbmRsZSkKK3sKKyAgICBBU1NFUlQoZmluZEVuY29kZXJXaXRob3V0TG9jayhpZGVudGlmaWVy
KSk7CisgICAgYXV0byogZW5jb2RlciA9IGZpbmRFbmNvZGVyV2l0aG91dExvY2soaWRlbnRpZmll
cik7CisgICAgaWYgKCFlbmNvZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG1lbW9y
eSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGlmICghbWVtb3J5KQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIWVuY29kZXItPmZyYW1lUmVhZGVyKQorICAgICAgICBlbmNvZGVyLT5mcmFtZVJl
YWRlciA9IG1ha2VVbmlxdWU8U2hhcmVkVmlkZW9GcmFtZVJlYWRlcj4oKTsKKyAgICBlbmNvZGVy
LT5mcmFtZVJlYWRlci0+c2V0U2hhcmVkTWVtb3J5KG1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKTsK
IH0KIAogYm9vbCBMaWJXZWJSVENDb2RlY3NQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJl
c3N1cmUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDdiZmVlMDgzZmNmOTIyN2M3
ZjVmODQ5NmQ5N2VlOGFiOTBlNWFhMWYuLmY1N2Q4NTNmZmJmNGMyODM3NGRmOGIxZjc2NzM3NzZl
ZDNmOGVkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI0NCw2ICsyNDQsOCBAQCBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCiBTaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3Bw
CiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1VJU3RhdGUuY3BwCiAKK1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcAorCiBVSVByb2Nlc3MvX1dL
V2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tCiBVSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNr
ZXIubW0KIFVJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDc3OTExOGJkMmYzZTAzMmNhODdjMDc0ZDJlNmIwZGJlNTQ5YjY3ZWIuLjc5MTc4MWM5NjAxZDMz
ODJjMjFmYzU2NTU5MDA0ZTU4Mzc5NjMyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDE1MCw2ICs0MTUwLDggQEAKIAkJNDFEMTI5
RDkxRjNEMTAxNDAwRDE1RTQ3IC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRDVDNkQ4MjM4RUIyMEQwMEI5QjNDQiAvKiBTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQ1QzZE
OTIzOEVCMjBFMDBCOUIzQ0IgLyogU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MURDMDRGODI3QTgx
NkJCMDA4Q0Y5NjggLyogU2hhcmVkVmlkZW9GcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRW
aWRlb0ZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxREMwNEY5MjdBODE2
QkIwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNo
YXJlZFZpZGVvRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MURDNDU5
NDFFM0Q2RTFFMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtSVENQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MURDNDU5NTFFM0Q2RTFFMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3Zp
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtSVENQ
cm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxREM0NTk4MUUzRDZF
RDYwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gTmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzIwMCw3ICs3MjAyLDYgQEAKIAkJCQk3QUZCRDM2RTIxRTU0NkUz
MDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5jcHAgKi8sCiAJCQkJN0FGQkQzNkQyMUU1NDZF
MzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLywKIAkJCQlCQ0M0M0FCODEyN0I5NURD
MDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcCAqLywKLQkJCQlCQ0M0M0FCOTEy
N0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmggKi8sCiAJCQkJNDlFQ0E0
MUIyM0ZDQTQ4NjAwMjMzNThEIC8qIFBvbGljeURlY2lzaW9uLmggKi8sCiAJCQkJRTE4QzkyRjMx
MkRCOUU3MTAwQ0YyQUVCIC8qIFByaW50SW5mby5jcHAgKi8sCiAJCQkJRTFDQzFCOEUxMkQ3RUFE
RjAwNjI1ODM4IC8qIFByaW50SW5mby5oICovLApAQCAtNzIyMCw2ICs3MjIxLDcgQEAKIAkJCQky
RDY1RDE5NjI3NEI4RTg0MDA5QzQxMDEgLyogU2Nyb2xsaW5nQWNjZWxlcmF0aW9uQ3VydmUuY3Bw
ICovLAogCQkJCTJENjVEMTk1Mjc0QjhFODQwMDlDNDEwMSAvKiBTY3JvbGxpbmdBY2NlbGVyYXRp
b25DdXJ2ZS5oICovLAogCQkJCTVDODBCM0REMjM2OTBGMTAwMDg2RTZERSAvKiBTZXJ2aWNlV29y
a2VySW5pdGlhbGl6YXRpb25EYXRhLmNwcCAqLywKKwkJCQlCQ0M0M0FCOTEyN0I5NURDMDAzMTdG
MTYgLyogUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmggKi8sCiAJCQkJNUM4MEIzREIyMzY5MEQ4RDAw
ODZFNkRFIC8qIFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuaCAqLywKIAkJCQkxQUZE
RTY1NzE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRlLmNwcCAqLywKIAkJCQkxQUZERTY1
ODE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRlLmggKi8sCkBAIC05MjAwLDYgKzkyMDIs
OCBAQAogCQkJCTQxRkNENkJDMjNDRTAzMTgwMEM2MjU2NyAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJJZGVudGlmaWVyLmggKi8sCiAJCQkJNDEwMjRGQzEyM0NGMTA0NTAwRkRGOThFIC8qIFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwICovLAogCQkJCTQxMDI0RkMwMjNDRjEw
NDUwMEZERjk4RSAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmggKi8sCisJCQkJ
NDFEQzA0RjkyN0E4MTZCQjAwOENGOTY4IC8qIFNoYXJlZFZpZGVvRnJhbWUuY3BwICovLAorCQkJ
CTQxREMwNEY4MjdBODE2QkIwMDhDRjk2OCAvKiBTaGFyZWRWaWRlb0ZyYW1lLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IHdlYnJ0YzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmNwcAppbmRleCA5ZDVmZDBkMTU2MmNiNDQ3NzYwNzk4NTk4NWYxZDZmOTI5NWNlMmRkLi5hZTIy
ZDg5MzczNGZjNTFmOTY4Zjc0N2Y3ZWRkYjE3MWI5OGEwZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKQEAg
LTE4Nyw3ICsxODcsNyBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6ZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25Pbk1haW5UaHJlYWRXaXRoTG9jaygpCiAgICAgbV9jb25uZWN0aW9uLT5hZGRUaHJl
YWRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjczo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCB0aGlzKTsKIAogICAgIGlmIChtX2xvZ2dpbmdMZXZlbCkKLSAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6U2V0UlRDTG9n
Z2luZ0xldmVsKCptX2xvZ2dpbmdMZXZlbCksIDApOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpTZXRSVENMb2dnaW5nTGV2ZWwgeyAq
bV9sb2dnaW5nTGV2ZWwgfSwgMCk7CiB9CiAKIC8vIE1heSBiZSBjYWxsZWQgb24gYW55IHRocmVh
ZC4KQEAgLTQxOCw2ICs0MTgsMjIgQEAgaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmluaXRpYWxp
emVFbmNvZGVyKEVuY29kZXImIGVuY29kZXIsIHVpbnQxNl90IHdpZHRoLCB1aW4KICAgICByZXR1
cm4gMDsKIH0KIAorYm9vbCBMaWJXZWJSVENDb2RlY3M6OmNvcHlTaGFyZWRWaWRlb0ZyYW1lKEVu
Y29kZXImIGVuY29kZXIsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpCit7CisgICAgcmV0
dXJuIGVuY29kZXIuc2hhcmVkVmlkZW9GcmFtZVdyaXRlci53cml0ZShwaXhlbEJ1ZmZlciwKKyAg
ICAgICAgWyZlbmNvZGVyXShhdXRvJiBzZW1hcGhvcmUpIHsgZW5jb2Rlci5jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6U2V0U2hhcmVkVmlkZW9GcmFtZVNl
bWFwaG9yZSB7IGVuY29kZXIuaWRlbnRpZmllciwgc2VtYXBob3JlIH0sIDApOyB9LAorICAgICAg
ICBbJmVuY29kZXJdKGF1dG8mIGhhbmRsZSkgeyBlbmNvZGVyLmNvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5IHsg
ZW5jb2Rlci5pZGVudGlmaWVyLCBoYW5kbGUgfSwgMCk7IH0KKyAgICApOworfQorCitib29sIExp
YldlYlJUQ0NvZGVjczo6Y29weVNoYXJlZFZpZGVvRnJhbWUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSkKK3sKKyAgICByZXR1cm4gZW5jb2Rlci5zaGFy
ZWRWaWRlb0ZyYW1lV3JpdGVyLndyaXRlKGZyYW1lLAorICAgICAgICBbJmVuY29kZXJdKGF1dG8m
IHNlbWFwaG9yZSkgeyBlbmNvZGVyLmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJU
Q0NvZGVjc1Byb3h5OjpTZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlIHsgZW5jb2Rlci5pZGVu
dGlmaWVyLCBzZW1hcGhvcmUgfSwgMCk7IH0sCisgICAgICAgIFsmZW5jb2Rlcl0oYXV0byYgaGFu
ZGxlKSB7IGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNz
UHJveHk6OlNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkgeyBlbmNvZGVyLmlkZW50aWZpZXIsIGhh
bmRsZSB9LCAwKTsgfQorICAgICk7Cit9CisKIGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjplbmNv
ZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1l
LCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1f
Y29ubmVjdGlvbkxvY2sgfTsKQEAgLTQyNSwzMyArNDQxLDE3IEBAIGludDMyX3QgTGliV2ViUlRD
Q29kZWNzOjplbmNvZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVv
RnJhbWUmCiAgICAgaWYgKCFlbmNvZGVyLmNvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybiBXRUJS
VENfVklERU9fQ09ERUNfRVJST1I7CiAKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gYWRvcHRDRih3
ZWJydGM6OmNyZWF0ZVBpeGVsQnVmZmVyRnJvbUZyYW1lKGZyYW1lLCBbXShzaXplX3Qgd2lkdGgs
IHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSBidWZmZXJUeXBlKSAtPiBDVlBpeGVs
QnVmZmVyUmVmIHsKLSAgICAgICAgT1NUeXBlIHBvb2xCdWZmZXJUeXBlOwotICAgICAgICBzd2l0
Y2ggKGJ1ZmZlclR5cGUpIHsKLSAgICAgICAgY2FzZSB3ZWJydGM6OkJ1ZmZlclR5cGU6Okk0MjA6
Ci0gICAgICAgICAgICBwb29sQnVmZmVyVHlwZSA9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENi
Q3I4QmlQbGFuYXJGdWxsUmFuZ2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSB3
ZWJydGM6OkJ1ZmZlclR5cGU6OkkwMTA6Ci0gICAgICAgICAgICBwb29sQnVmZmVyVHlwZSA9IGtD
VlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3IxMEJpUGxhbmFyRnVsbFJhbmdlOwotICAgICAgICB9
Ci0gICAgICAgIGF1dG8gcGl4ZWxCdWZmZXJQb29sID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
bGliV2ViUlRDQ29kZWNzKCkucGl4ZWxCdWZmZXJQb29sKHdpZHRoLCBoZWlnaHQsIHBvb2xCdWZm
ZXJUeXBlKTsKLSAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlclBvb2wpCi0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6Y3JlYXRlQ1ZQaXhlbEJ1ZmZl
ckZyb21Qb29sKHBpeGVsQnVmZmVyUG9vbCkudmFsdWVfb3IobnVsbHB0cikubGVha1JlZigpOwot
ICAgIH0pKTsKLQotICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgIHJldHVybiBXRUJSVENf
VklERU9fQ09ERUNfRVJST1I7Ci0KLSAgICBhdXRvIHNhbXBsZSA9IFJlbW90ZVZpZGVvU2FtcGxl
OjpjcmVhdGUocGl4ZWxCdWZmZXIuZ2V0KCksIE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBfdXMo
KSAqIDEwMDAsIDEwMDAwMDApLCB0b01lZGlhU2FtcGxlVmlkZW9Sb3RhdGlvbihmcmFtZS5yb3Rh
dGlvbigpKSk7Ci0gICAgaWYgKCFzYW1wbGUpIHsKLSAgICAgICAgLy8gRklYTUU6IE9wdGltaXpl
IHRoaXMgY29kZSBwYXRoLCBjdXJyZW50bHkgd2UgaGF2ZSBub24gQkdSQSBmb3IgbXV0ZWQgZnJh
bWVzIGF0IGxlYXN0LgotICAgICAgICBzYW1wbGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRl
KGNvbnZlcnRUb0JHUkEocGl4ZWxCdWZmZXIuZ2V0KCkpLCBNZWRpYVRpbWUoZnJhbWUudGltZXN0
YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAwKSwgdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24oZnJh
bWUucm90YXRpb24oKSkpOwotICAgICAgICBpZiAoIXNhbXBsZSkgewotICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRvIGNvbnZlcnQgcmVtb3RlIHZpZGVvIHNh
bXBsZSIpOworICAgIGF1dG8gYnVmZmVyID0gYWRvcHRDRih3ZWJydGM6OnBpeGVsQnVmZmVyRnJv
bUZyYW1lKGZyYW1lKSk7CisgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgLy8gYnVmZmVyIGlz
IG5vdCBuYXRpdmUsIHdlIG5lZWQgdG8gY29weSB0byBzaGFyZWQgdmlkZW8gZnJhbWUuCisgICAg
ICAgIGlmICghY29weVNoYXJlZFZpZGVvRnJhbWUoZW5jb2RlciwgZnJhbWUpKQorICAgICAgICAg
ICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKKyAgICB9CisgICAgYXV0byBzYW1w
bGUgPSBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgTWVkaWFUaW1lKGZy
YW1lLnRpbWVzdGFtcF91cygpICogMTAwMCwgMTAwMDAwMCksIHRvTWVkaWFTYW1wbGVWaWRlb1Jv
dGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkpLCBSZW1vdGVWaWRlb1NhbXBsZTo6U2hvdWxkQ2hlY2tG
b3JJT1N1cmZhY2U6Ok5vKTsKKyAgICBpZiAoIXNhbXBsZS0+c3VyZmFjZSgpKSB7CisgICAgICAg
IC8vIGJ1ZmZlciBpcyBub3QgSU9TdXJmYWNlLCB3ZSBuZWVkIHRvIGNvcHkgdG8gc2hhcmVkIHZp
ZGVvIGZyYW1lLgorICAgICAgICBpZiAoIWNvcHlTaGFyZWRWaWRlb0ZyYW1lKGVuY29kZXIsIGJ1
ZmZlci5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9S
OwotICAgICAgICB9CiAgICAgfQogCiAgICAgZW5jb2Rlci5jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6RW5jb2RlRnJhbWUgeyBlbmNvZGVyLmlkZW50aWZp
ZXIsICpzYW1wbGUsIGZyYW1lLnRpbWVzdGFtcCgpLCBzaG91bGRFbmNvZGVBc0tleUZyYW1lIH0s
IDApOwpAQCAtNTM1LDYgKzUzNSw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpncHVQcm9jZXNz
Q29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikKICAgICAgICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZUVu
Y29kZXIgeyBlbmNvZGVyLT5pZGVudGlmaWVyLCBmb3JtYXROYW1lRnJvbVdlYlJUQ0NvZGVjVHlw
ZShlbmNvZGVyLT5jb2RlY1R5cGUpLCBlbmNvZGVyLT5wYXJhbWV0ZXJzLCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ0gyNjRMb3dMYXRlbmN5RW5jb2RlckVu
YWJsZWQoKSB9LCAwKTsKICAgICAgICAgICAgIGlmIChlbmNvZGVyLT5pbml0aWFsaXphdGlvbkRh
dGEpCiAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJS
VENDb2RlY3NQcm94eTo6SW5pdGlhbGl6ZUVuY29kZXIgeyBlbmNvZGVyLT5pZGVudGlmaWVyLCBl
bmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEtPndpZHRoLCBlbmNvZGVyLT5pbml0aWFsaXphdGlv
bkRhdGEtPmhlaWdodCwgZW5jb2Rlci0+aW5pdGlhbGl6YXRpb25EYXRhLT5zdGFydEJpdFJhdGUs
IGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YS0+bWF4Qml0UmF0ZSwgZW5jb2Rlci0+aW5pdGlh
bGl6YXRpb25EYXRhLT5taW5CaXRSYXRlLCBlbmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEtPm1h
eEZyYW1lUmF0ZSB9LCAwKTsKKyAgICAgICAgICAgIGVuY29kZXItPnNoYXJlZFZpZGVvRnJhbWVX
cml0ZXIgPSB7IH07CiAgICAgICAgICAgICBlbmNvZGVyLT5jb25uZWN0aW9uID0gbV9jb25uZWN0
aW9uLmdldCgpOwogICAgICAgICB9CiAgICAgICAgIGZvciAoYXV0byYgZGVjb2RlciA6IG1fZGVj
b2RlcnMudmFsdWVzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKaW5kZXggNDA4MzNlMDMwZWY1YjBlZTg5NGQ3ZjQ0
YmU5OGNkNjc5ODFmNGEyYy4uNTY5MWUzODM3NzQxNjc4NWE3ZDQxMjRhZDE0NDk0MGU3NzhiMmJm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGli
V2ViUlRDQ29kZWNzLmgKQEAgLTMwLDkgKzMwLDExIEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIlJUQ0RlY29kZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRD
RW5jb2RlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmg+CiAjaW5jbHVkZSA8bWFwPgog
I2luY2x1ZGUgPHdlYnJ0Yy9hcGkvdmlkZW8vdmlkZW9fY29kZWNfdHlwZS5oPgpAQCAtMTAxLDYg
KzEwMyw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCogZW5jb2RlZEltYWdlQ2FsbGJhY2sgV1RG
X0dVQVJERURfQllfTE9DSyhlbmNvZGVkSW1hZ2VDYWxsYmFja0xvY2spIHsgbnVsbHB0ciB9Owog
ICAgICAgICBMb2NrIGVuY29kZWRJbWFnZUNhbGxiYWNrTG9jazsKICAgICAgICAgUmVmUHRyPElQ
Qzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbjsKKyAgICAgICAgU2hhcmVkVmlkZW9GcmFtZVdyaXRl
ciBzaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOwogICAgIH07CiAKICAgICBFbmNvZGVyKiBjcmVhdGVF
bmNvZGVyKFR5cGUsIGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4mKTsK
QEAgLTEzNSw2ICsxMzgsOSBAQCBwcml2YXRlOgogICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9u
OjpDbGllbnQKICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mKTsKIAorICAgIGJvb2wgY29weVNoYXJlZFZpZGVvRnJhbWUoRW5jb2RlciYs
IENWUGl4ZWxCdWZmZXJSZWYpOworICAgIGJvb2wgY29weVNoYXJlZFZpZGVvRnJhbWUoRW5jb2Rl
ciYsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpOworCiBwcml2YXRlOgogICAgIEhhc2hNYXA8
UlRDRGVjb2RlcklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gbV9kZWNvZGVy
czsKICAgICBIYXNoU2V0PFJUQ0RlY29kZXJJZGVudGlmaWVyPiBtX2RlY29kaW5nRXJyb3JzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlk
ZW9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRW
aWRlb0ZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjM3MDdlYTAyYTkwM2FjNjEyMDUwNDBhMWYxMjc1
ZDgwMjY2OTc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9TaGFyZWRWaWRlb0ZyYW1lSW5mby5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitib29sIFNo
YXJlZFZpZGVvRnJhbWVXcml0ZXI6OndhaXQoY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFw
aG9yZSYpPiYgbmV3U2VtYXBob3JlQ2FsbGJhY2spCit7CisgICAgaWYgKCFtX3NlbWFwaG9yZSkg
eworICAgICAgICBtX3NlbWFwaG9yZSA9IG1ha2VVbmlxdWU8SVBDOjpTZW1hcGhvcmU+KCk7Cisg
ICAgICAgIG5ld1NlbWFwaG9yZUNhbGxiYWNrKCptX3NlbWFwaG9yZSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gbV9zZW1hcGhvcmUtPndhaXQoKTsKK30KKworYm9v
bCBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjphbGxvY2F0ZVN0b3JhZ2Uoc2l6ZV90IHNpemUsIGNv
bnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mIG5ld01l
bW9yeUNhbGxiYWNrKQoreworICAgIG1fc3RvcmFnZSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUo
c2l6ZSk7CisgICAgaWYgKCFtX3N0b3JhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBtX3N0b3JhZ2UtPmNyZWF0ZUhhbmRs
ZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworCisgICAgYXV0
byBkYXRhU2l6ZSA9IGhhbmRsZS5zaXplKCk7CisgICAgbmV3TWVtb3J5Q2FsbGJhY2soU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGRhdGFTaXplIH0pOworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OnByZXBhcmVXcml0
aW5nKGNvbnN0IFNoYXJlZFZpZGVvRnJhbWVJbmZvJiBpbmZvLCBjb25zdCBGdW5jdGlvbjx2b2lk
KElQQzo6U2VtYXBob3JlJik+JiBuZXdTZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248
dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2sp
Cit7CisgICAgaWYgKCFpbmZvLmlzUmVhZFdyaXRlU3VwcG9ydGVkKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghd2FpdChuZXdTZW1hcGhvcmVDYWxsYmFjaykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHNpemVfdCBzaXplID0gaW5mby5zdG9yYWdlU2l6ZSgpOwor
ICAgIGlmICghbV9zdG9yYWdlIHx8IG1fc3RvcmFnZS0+c2l6ZSgpIDwgc2l6ZSkgeworICAgICAg
ICBpZiAoIWFsbG9jYXRlU3RvcmFnZShzaXplLCBuZXdNZW1vcnlDYWxsYmFjaykpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNo
YXJlZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRlKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIs
IGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mIG5ld1NlbWFwaG9yZUNhbGxi
YWNrLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+
JiBuZXdNZW1vcnlDYWxsYmFjaykKK3sKKyAgICBhdXRvIGluZm8gPSBTaGFyZWRWaWRlb0ZyYW1l
SW5mbzo6ZnJvbUNWUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpOworICAgIGlmICghcHJlcGFyZVdy
aXRpbmcoaW5mbywgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIG5ld01lbW9yeUNhbGxiYWNrKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGluZm8ud3JpdGVQaXhlbEJ1ZmZlcihw
aXhlbEJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fc3RvcmFnZS0+ZGF0YSgpKSk7Cit9
CisKKyNpZiBVU0UoTElCV0VCUlRDKQorYm9vbCBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0
ZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQ
Qzo6U2VtYXBob3JlJik+JiBuZXdTZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9p
ZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCit7
CisgICAgYXV0byBpbmZvID0gU2hhcmVkVmlkZW9GcmFtZUluZm86OmZyb21WaWRlb0ZyYW1lKGZy
YW1lKTsKKyAgICBpZiAoIXByZXBhcmVXcml0aW5nKGluZm8sIG5ld1NlbWFwaG9yZUNhbGxiYWNr
LCBuZXdNZW1vcnlDYWxsYmFjaykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biBpbmZvLndyaXRlVmlkZW9GcmFtZShmcmFtZSwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fc3Rv
cmFnZS0+ZGF0YSgpKSk7Cit9CisjZW5kaWYKKworUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IFNoYXJlZFZpZGVvRnJhbWVSZWFkZXI6OnJlYWQoKQoreworICAgIGlmICghbV9zdG9yYWdlKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBzY29wZSA9IG1ha2VTY29wZUV4aXQoWyZd
IHsKKyAgICAgICAgbV9zZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgfSk7CisKKyAgICBhdXRvKiBk
YXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fc3RvcmFnZS0+ZGF0YSgpKTsKKyAg
ICBhdXRvIGluZm8gPSBTaGFyZWRWaWRlb0ZyYW1lSW5mbzo6ZGVjb2RlKHsgZGF0YSwgbV9zdG9y
YWdlLT5zaXplKCkgfSk7CisgICAgaWYgKCFpbmZvKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgaWYgKCFpbmZvLT5pc1JlYWRXcml0ZVN1cHBvcnRlZCgpKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgaWYgKG1fc3RvcmFnZS0+c2l6ZSgpIDwgaW5mby0+c3RvcmFnZVNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBpbmZvLT5jcmVhdGVQaXhlbEJ1ZmZlckZy
b21NZW1vcnkoZGF0YSArIFNoYXJlZFZpZGVvRnJhbWVJbmZvRW5jb2RpbmdMZW5ndGgsIHBpeGVs
QnVmZmVyUG9vbCgqaW5mbykpOworfQorCitDVlBpeGVsQnVmZmVyUG9vbFJlZiBTaGFyZWRWaWRl
b0ZyYW1lUmVhZGVyOjpwaXhlbEJ1ZmZlclBvb2woY29uc3QgU2hhcmVkVmlkZW9GcmFtZUluZm8m
IGluZm8pCit7CisgICAgaWYgKG1fdXNlSU9TdXJmYWNlQnVmZmVyUG9vbCA9PSBVc2VJT1N1cmZh
Y2VCdWZmZXJQb29sOjpObykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIW1f
YnVmZmVyUG9vbCB8fCBtX2J1ZmZlclBvb2xUeXBlICE9IGluZm8uYnVmZmVyVHlwZSgpIHx8IG1f
YnVmZmVyUG9vbFdpZHRoICE9IGluZm8ud2lkdGgoKSB8fCBtX2J1ZmZlclBvb2xIZWlnaHQgIT0g
aW5mby5oZWlnaHQoKSkgeworICAgICAgICBtX2J1ZmZlclBvb2xUeXBlID0gaW5mby5idWZmZXJU
eXBlKCk7CisgICAgICAgIG1fYnVmZmVyUG9vbFdpZHRoID0gaW5mby53aWR0aCgpOworICAgICAg
ICBtX2J1ZmZlclBvb2xIZWlnaHQgPSBpbmZvLmhlaWdodCgpOworICAgICAgICBtX2J1ZmZlclBv
b2wgPSBpbmZvLmNyZWF0ZUNvbXBhdGlibGVCdWZmZXJQb29sKCk7CisgICAgfQorCisgICAgcmV0
dXJuIG1fYnVmZmVyUG9vbC5nZXQoKTsKK30KKworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKSAmJiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmU5
NTYyZGU3ZWJiZGZhOGQ2NzUzMWI1ZDQ3ZjMxYTUwMDY1MzFjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oCkBA
IC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JN
KENPQ09BKQorCisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVt
b3J5LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKwordHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciogQ1ZQaXhlbEJ1ZmZlclJlZjsKK3R5cGVk
ZWYgc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqIENWUGl4ZWxCdWZmZXJQb29sUmVmOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTaGFyZWRWaWRlb0ZyYW1lSW5mbzsKK30KKworbmFt
ZXNwYWNlIHdlYnJ0YyB7CitjbGFzcyBWaWRlb0ZyYW1lOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgU2hhcmVkVmlkZW9GcmFtZVdyaXRlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcigpID0gZGVmYXVs
dDsKKworICAgIGJvb2wgd3JpdGUoQ1ZQaXhlbEJ1ZmZlclJlZiwgY29uc3QgRnVuY3Rpb248dm9p
ZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUmKT4mKTsKKyNpZiBVU0UoTElCV0VCUlRDKQorICAgIGJvb2wgd3JpdGUo
Y29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFw
aG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUmKT4mKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIGJvb2wgd2FpdChjb25zdCBGdW5jdGlv
bjx2b2lkKElQQzo6U2VtYXBob3JlJik+Jik7CisgICAgYm9vbCBhbGxvY2F0ZVN0b3JhZ2Uoc2l6
ZV90LCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+
Jik7CisgICAgYm9vbCBwcmVwYXJlV3JpdGluZyhjb25zdCBXZWJDb3JlOjpTaGFyZWRWaWRlb0Zy
YW1lSW5mbyYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpTZW1hcGhvcmU+IG1fc2VtYXBob3JlOworICAgIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IG1fc3RvcmFnZTsKK307CisKK2NsYXNzIFNoYXJlZFZpZGVvRnJhbWVSZWFk
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGVudW0gY2xh
c3MgVXNlSU9TdXJmYWNlQnVmZmVyUG9vbCB7IE5vLCBZZXMgfTsKKyAgICBleHBsaWNpdCBTaGFy
ZWRWaWRlb0ZyYW1lUmVhZGVyKFVzZUlPU3VyZmFjZUJ1ZmZlclBvb2wgPSBVc2VJT1N1cmZhY2VC
dWZmZXJQb29sOjpZZXMpOworCisgICAgdm9pZCBzZXRTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUm
JiBzZW1hcGhvcmUpIHsgbV9zZW1hcGhvcmUgPSBXVEZNb3ZlKHNlbWFwaG9yZSk7IH0KKyAgICB2
b2lkIHNldFNoYXJlZE1lbW9yeShSZWY8U2hhcmVkTWVtb3J5PiYmIHN0b3JhZ2UpIHsgbV9zdG9y
YWdlID0gV1RGTW92ZShzdG9yYWdlKTsgfQorCisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+IHJlYWQoKTsKKworcHJpdmF0ZToKKyAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBwaXhlbEJ1
ZmZlclBvb2woY29uc3QgV2ViQ29yZTo6U2hhcmVkVmlkZW9GcmFtZUluZm8mKTsKKworICAgIFVz
ZUlPU3VyZmFjZUJ1ZmZlclBvb2wgbV91c2VJT1N1cmZhY2VCdWZmZXJQb29sOworICAgIElQQzo6
U2VtYXBob3JlIG1fc2VtYXBob3JlOworICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1fc3RvcmFn
ZTsKKworICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUG9vbFJlZj4gbV9idWZmZXJQb29sOwor
ICAgIE9TVHlwZSBtX2J1ZmZlclBvb2xUeXBlIHsgMCB9OworICAgIHVpbnQzMl90IG1fYnVmZmVy
UG9vbFdpZHRoIHsgMCB9OworICAgIHVpbnQzMl90IG1fYnVmZmVyUG9vbEhlaWdodCB7IDAgfTsK
K307CisKK2lubGluZSBTaGFyZWRWaWRlb0ZyYW1lUmVhZGVyOjpTaGFyZWRWaWRlb0ZyYW1lUmVh
ZGVyKFVzZUlPU3VyZmFjZUJ1ZmZlclBvb2wgdXNlSU9TdXJmYWNlQnVmZmVyUG9vbCkKKyAgICA6
IG1fdXNlSU9TdXJmYWNlQnVmZmVyUG9vbCh1c2VJT1N1cmZhY2VCdWZmZXJQb29sKQoreworfQor
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>