<?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>97548</bug_id>
          
          <creation_ts>2012-09-25 03:31:13 -0700</creation_ts>
          <short_desc>[Qt] r122720 causes performance regression with DirectFB on ARMv7</short_desc>
          <delta_ts>2012-10-08 06:44:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zoltan Horvath">zoltan</reporter>
          <assigned_to name="Zoltan Horvath">zoltan</assigned_to>
          <cc>abecsi</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>gustavo</cc>
    
    <cc>hausmann</cc>
    
    <cc>jbriance</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kbalazs</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>philn</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>727469</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-09-25 03:31:13 -0700</bug_when>
    <thetext>Commit: http://trac.webkit.org/changeset/122720
Bug: https://bugs.webkit.org/show_bug.cgi?id=88785
Thread about the regression: http://lists.webkit.org/pipermail/webkit-qt/2012-September/003111.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731489</commentid>
    <comment_count>1</comment_count>
      <attachid>166428</attachid>
    <who name="Stephane Cerveau">scerveau</who>
    <bug_when>2012-10-01 01:54:12 -0700</bug_when>
    <thetext>Created attachment 166428
Revert patch from july 2012: Change NativeImagePtr from QPixmap* to QImage*

I revert from patch:

- 62cc457176734d84d4827f0e0bf59ed425d7ef7d
- bd883b59bc785c680f03a6c3a1b28cc6ea48390a
- 7a62d58c41f7959a96737d4d65ea129d9f26d3e8
- 2973e24f23a2dd9d5f483f39b77264b791d96fd3 ( main commit)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731662</commentid>
    <comment_count>2</comment_count>
      <attachid>166467</attachid>
    <who name="Stephane Cerveau">scerveau</who>
    <bug_when>2012-10-01 06:59:16 -0700</bug_when>
    <thetext>Created attachment 166467
update to build with opengl

Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp is now building.
Revert eae63a44dc6d532fa30225ef8ee9335b90ef4475</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736365</commentid>
    <comment_count>3</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-07 06:26:16 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=166467) [details]
&gt; update to build with opengl
&gt; 
&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp is now building.
&gt; Revert eae63a44dc6d532fa30225ef8ee9335b90ef4475

Why didn&apos;t you set it for review (r?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736462</commentid>
    <comment_count>4</comment_count>
      <attachid>167495</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-10-07 19:49:18 -0700</bug_when>
    <thetext>Created attachment 167495
proposed revert</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736465</commentid>
    <comment_count>5</comment_count>
      <attachid>167495</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-07 19:59:22 -0700</bug_when>
    <thetext>Comment on attachment 167495
proposed revert

Attachment 167495 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14196744</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736467</commentid>
    <comment_count>6</comment_count>
      <attachid>167497</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-10-07 20:06:17 -0700</bug_when>
    <thetext>Created attachment 167497
proposed revert, gtk+efl build fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736653</commentid>
    <comment_count>7</comment_count>
      <attachid>167497</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-10-08 06:26:39 -0700</bug_when>
    <thetext>Comment on attachment 167497
proposed revert, gtk+efl build fixed

I did the revert locally to have a better idea and this looks good.
One thing is that we might have to apply this extra chunk when we cherry pick this patch to the QtWebKit 2.3 branch:

--- b/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp
+++ b/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp
@@ -491,13 +491,8 @@
         qtImage = QImage::fromData(reinterpret_cast&lt;const uchar*&gt;(image-&gt;data()-&gt;data()), image-&gt;data()-&gt;size());
     else {
         QPixmap* nativePixmap = image-&gt;nativeImageForCurrentFrame();
-#if HAVE(QT5)
         // With QPA, we can avoid a deep copy.
         qtImage = *nativePixmap-&gt;handle()-&gt;buffer();
-#else
-        // This might be a deep copy, depending on other references to the pixmap.
-        qtImage = nativePixmap-&gt;toImage();
-#endif
     }
 
     AlphaOp alphaOp = AlphaDoNothing;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736662</commentid>
    <comment_count>8</comment_count>
      <attachid>167497</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-08 06:44:09 -0700</bug_when>
    <thetext>Comment on attachment 167497
proposed revert, gtk+efl build fixed

Clearing flags on attachment: 167497

Committed r130636: &lt;http://trac.webkit.org/changeset/130636&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736663</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-08 06:44:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166428</attachid>
            <date>2012-10-01 01:54:12 -0700</date>
            <delta_ts>2012-10-07 19:49:18 -0700</delta_ts>
            <desc>Revert patch from july 2012: Change NativeImagePtr from QPixmap* to QImage*</desc>
            <filename>patch_qimage_qpixmap.patch</filename>
            <type>text/plain</type>
            <size>56032</size>
            <attacher name="Stephane Cerveau">scerveau</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IGZiYTIzYmQuLjdiYWJkYTQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZApAQCAtMjY3NSw2ICsyNjc1LDEwIEBAIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L2NvbnNvbGUtY2QuaHRtbAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTA3MDYKIGluc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS1mcmFtZXMuaHRtbAogCisjIFtR
VF0gUkVHUkVTU0lPTiAocjEyMjcyMCk6IHN2Zy9maWx0ZXJzL2ZlU3BlY3VsYXJMaWdodC1wcmVt
dWx0aXBsaWVkLnN2ZworIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTEzOTAKK3N2Zy9maWx0ZXJzL2ZlU3BlY3VsYXJMaWdodC1wcmVtdWx0aXBsaWVkLnN2ZworCiAj
IFtRdF0gUkVHUkVTU0lPTihyMTIyNzY4LCByMTIyNzcxKTogVGhleSBicm9rZSBqcXVlcnkvZGF0
YS5odG1sIGFuZCBpbnNwZWN0b3IvZWxlbWVudHMvZWRpdC1kb20tYWN0aW9ucy5odG1sCiAjIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTQ3NgogaW5zcGVjdG9yL2Vs
ZW1lbnRzL2VkaXQtZG9tLWFjdGlvbnMuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU4YjYxMTMuLjkxNTc1
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTI2NDgxLDE3ICsyNjQ4MSw2IEBACiAKIDIwMTItMDctMTYgIFpv
bHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKLSAgICAgICAgVW5yZXZpZXdlZC4g
UmVtb3ZlIHVubmVjZXNzYXJ5IGV4ZWN1dGFibGUgYml0cyBhZnRlciByMTIyNzIwLgotCi0gICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKLSAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcDoKLSAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHA6Ci0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvSW1hZ2VRdC5jcHA6Ci0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFn
ZVF0Lmg6Ci0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVHJhbnNwYXJlbmN5TGF5ZXIu
aDoKLQotMjAxMi0wNy0xNiAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KLQog
ICAgICAgICBbUXRdIENoYW5nZSBOYXRpdmVJbWFnZVB0ciBmcm9tIFFQaXhtYXAqIHRvIFFJbWFn
ZSoKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4Nzg1
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCmluZGV4IGJhNGU4MGQuLmQ4ZGU3ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjEx
MSw3ICsyMTExLDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9u
LmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmggXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBcCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvTmF0aXZlSW1hZ2VRdC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGls
bEltYWdlUXQuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVHJhbnNwYXJlbmN5TGF5ZXIu
aCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKaW5kZXggYTJkYWFkYS4u
YjBlNWY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1
bnRpbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1l
LmNwcApAQCAtMTQ2LDggKzE0Niw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFvYmplY3RBcmct
PmluaGVyaXRzKCZKU0hUTUxJbWFnZUVsZW1lbnQ6OnNfaW5mbykpCiAgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIAotICAgICAgICAvLyB3ZSBub3cga25vdyB0aGF0IHdlIGhhdmUg
YSB2YWxpZCA8aW1nPiBlbGVtZW50IGFzIHRoZSBhcmd1bWVudCwgd2UgY2FuIGF0dGFjaCB0aGUg
aW1hZ2UgdG8gaXQuCi0gICAgICAgIFJlZlB0cjxTdGlsbEltYWdlPiBzdGlsbEltYWdlID0gV2Vi
Q29yZTo6U3RpbGxJbWFnZTo6Y3JlYXRlKGluc3RhbmNlLT50b0ltYWdlKCkpOworICAgICAgICAv
LyB3ZSBub3cga25vdyB0aGF0IHdlIGhhdmUgYSB2YWxpZCA8aW1nPiBlbGVtZW50IGFzIHRoZSBh
cmd1bWVudCwgd2UgY2FuIGF0dGFjaCB0aGUgcGl4bWFwIHRvIGl0LgorICAgICAgICBQYXNzUmVm
UHRyPFN0aWxsSW1hZ2U+IHN0aWxsSW1hZ2UgPSBXZWJDb3JlOjpTdGlsbEltYWdlOjpjcmVhdGUo
aW5zdGFuY2UtPnRvUGl4bWFwKCkpOwogICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1M
SW1hZ2VFbGVtZW50Kj4ob2JqZWN0QXJnKS0+aW1wbCgpKTsKICAgICAgICAgaW1hZ2VFbGVtZW50
LT5zZXRDYWNoZWRJbWFnZShuZXcgQ2FjaGVkSW1hZ2Uoc3RpbGxJbWFnZS5nZXQoKSkpOwogICAg
ICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihpbnN0YW5jZS0+cm9vdE9iamVjdCgpLT5nbG9iYWxPYmplY3QoKSk7CkBAIC0zODMs
MTMgKzM4MywxMyBAQCBRVmFyaWFudCBRdFBpeG1hcEluc3RhbmNlOjp2YXJpYW50RnJvbU9iamVj
dChKU09iamVjdCogb2JqZWN0LCBRTWV0YVR5cGU6OlR5cGUgaAogICAgICAgICBpZiAoIWltYWdl
KQogICAgICAgICAgICAgZ290byByZXR1cm5FbXB0eVZhcmlhbnQ7CiAKLSAgICAgICAgUUltYWdl
KiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAg
ICAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICBRUGl4bWFwKiBwaXhtYXAgPSBpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgaWYgKCFwaXhtYXApCiAgICAg
ICAgICAgICBnb3RvIHJldHVybkVtcHR5VmFyaWFudDsKIAogICAgICAgICByZXR1cm4gKGhpbnQg
PT0gc3RhdGljX2Nhc3Q8UU1ldGFUeXBlOjpUeXBlPihxTWV0YVR5cGVJZDxRUGl4bWFwPigpKSkK
LSAgICAgICAgICAgICAgICAgID8gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRUGl4bWFwPihRUGl4bWFw
Ojpmcm9tSW1hZ2UoKm5hdGl2ZUltYWdlKSkKLSAgICAgICAgICAgICAgICAgIDogUVZhcmlhbnQ6
OmZyb21WYWx1ZTxRSW1hZ2U+KCpuYXRpdmVJbWFnZSk7CisgICAgICAgICAgICAgICAgICA/IFFW
YXJpYW50Ojpmcm9tVmFsdWU8UVBpeG1hcD4oKnBpeG1hcCkKKyAgICAgICAgICAgICAgICAgIDog
UVZhcmlhbnQ6OmZyb21WYWx1ZTxRSW1hZ2U+KHBpeG1hcC0+dG9JbWFnZSgpKTsKICAgICB9CiAK
ICAgICBpZiAob2JqZWN0LT5pbmhlcml0cygmUXRQaXhtYXBSdW50aW1lT2JqZWN0OjpzX2luZm8p
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IGU3OGE5ZDMuLmRkOTcwZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC0zNiw3ICszNiw3IEBACiBPQkpD
X0NMQVNTIE5TSW1hZ2U7CiAjZWxpZiBQTEFURk9STShRVCkKIFFUX0JFR0lOX05BTUVTUEFDRQot
Y2xhc3MgUUltYWdlOworY2xhc3MgUVBpeG1hcDsKIFFUX0VORF9OQU1FU1BBQ0UKICNlbGlmIFBM
QVRGT1JNKFdJTikKIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyogSEJJVE1BUDsKQEAgLTYyLDcg
KzYyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFBMQVRGT1JNKE1BQykKICAgICB0eXBl
ZGVmIFJldGFpblB0cjxOU0ltYWdlPiBEcmFnSW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9STShRVCkK
LSAgICB0eXBlZGVmIFFJbWFnZSogRHJhZ0ltYWdlUmVmOworICAgIHR5cGVkZWYgUVBpeG1hcCog
RHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgIHR5cGVkZWYgSEJJVE1BUCBE
cmFnSW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9STShXWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYTJmNGQ2OC4uNmQ0NGVh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKQEAgLTUwMSw3ICs1MDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKFFUKQotICAgICAgICB2b2lkIHB1c2hUcmFuc3BhcmVuY3lMYXllcklu
dGVybmFsKGNvbnN0IFFSZWN0JiwgcXJlYWwsIFFJbWFnZSYpOworICAgICAgICB2b2lkIHB1c2hU
cmFuc3BhcmVuY3lMYXllckludGVybmFsKGNvbnN0IFFSZWN0ICZyZWN0LCBxcmVhbCBvcGFjaXR5
LCBRUGl4bWFwJiBhbHBoYU1hc2spOwogICAgICAgICB2b2lkIHRha2VPd25lcnNoaXBPZlBsYXRm
b3JtQ29udGV4dCgpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oCmluZGV4IGJhOTUzZjUuLmE2Yjk0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuaApAQCAtNTIsNiArNTIsMTAgQEAgdHlwZWRlZiBTSVpFKiBMUFNJWkU7
CiB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18gKkhCSVRNQVA7CiAjZW5kaWYKIAorI2lmIFBMQVRG
T1JNKFFUKQorI2luY2x1ZGUgPFFQaXhtYXA+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKEdUSykK
IHR5cGVkZWYgc3RydWN0IF9HZGtQaXhidWYgR2RrUGl4YnVmOwogI2VuZGlmCkBAIC0xNTMsNyAr
MTU3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKLSAgICBzdGF0aWMg
dm9pZCBzZXRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFFJbWFnZSYp
OworICAgIHN0YXRpYyB2b2lkIHNldFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSwg
Y29uc3QgUVBpeG1hcCYpOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA5MTNhM2U3Li5lZDYyNWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTQzLDcgKzQz
LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKICNlbGlmIFBM
QVRGT1JNKFFUKQogI2luY2x1ZGUgPHFnbG9iYWwuaD4KIFFUX0JFR0lOX05BTUVTUEFDRQotY2xh
c3MgUUltYWdlOworY2xhc3MgUVBpeG1hcDsKIFFUX0VORF9OQU1FU1BBQ0UKICNlbGlmIFVTRShD
QUlSTykKICNpbmNsdWRlICJOYXRpdmVJbWFnZUNhaXJvLmgiCkBAIC05MCw3ICs5MCw3IEBAIGNs
YXNzIEltYWdlRGVjb2RlcjsKIHR5cGVkZWYgSW1hZ2VEZWNvZGVyKiBOYXRpdmVJbWFnZVNvdXJj
ZVB0cjsKIHR5cGVkZWYgdm9pZCogTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBQTEFURk9STShRVCkK
LXR5cGVkZWYgUUltYWdlKiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVkZWYgUVBpeG1hcCogTmF0aXZl
SW1hZ2VQdHI7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCmluZGV4IDdh
MGU1ZWUuLjgzYmRmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCkBAIC0yOSwxMCArMjksNiBA
QAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
Ci0jaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8UUltYWdlPgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEludFNpemU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lclF0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lclF0LmNw
cAppbmRleCBkNmU2ZTJhLi41MDNjMTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJRdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyUXQuY3Bw
CkBAIC0zNiw2ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogSW1hZ2VHU3RyZWFt
ZXI6OkltYWdlR1N0cmVhbWVyKEdzdEJ1ZmZlciogYnVmZmVyLCBHc3RDYXBzKiBjYXBzKQogICAg
IDogbV9pbWFnZSgwKQogeworICAgIFFQaXhtYXAqIHN1cmZhY2UgPSBuZXcgUVBpeG1hcDsKICAg
ICBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQ7CiAgICAgSW50U2l6ZSBzaXplOwogICAgIGludCBwaXhl
bEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IsIHN0cmlk
ZTsKQEAgLTY4LDcgKzY5LDggQEAgSW1hZ2VHU3RyZWFtZXI6OkltYWdlR1N0cmVhbWVyKEdzdEJ1
ZmZlciogYnVmZmVyLCBHc3RDYXBzKiBjYXBzKQogICAgIGltYWdlLmludmVydFBpeGVscyhpbnZl
cnRNb2RlKTsKICNlbmRpZgogCi0gICAgbV9pbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUobmV3
IFFJbWFnZShpbWFnZSkpOworICAgIHN1cmZhY2UtPmNvbnZlcnRGcm9tSW1hZ2UoaW1hZ2UpOwor
ICAgIG1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKHN1cmZhY2UpOwogCiAjaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKICAgICBpZiAoR3N0VmlkZW9Dcm9wTWV0YSogY3JvcE1ldGEgPSBnc3Rf
YnVmZmVyX2dldF92aWRlb19jcm9wX21ldGEoYnVmZmVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAK
aW5kZXggODk1Zjc2Ni4uODQ3MjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTI5LDcg
KzI5LDYgQEAKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVF0LmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2lu
Y2x1ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCkBAIC00NjksNyArNDY4LDcgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFn
ZVdpZHRoLCBpbnQgaW1hZ2VIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hlaWdodCwgUVBhaW50ZXIqIGNvbnRl
eHQpCiB7Ci0gICAgUUltYWdlIGltYWdlKGltYWdlUGl4ZWxzLCBpbWFnZVdpZHRoLCBpbWFnZUhl
aWdodCwgTmF0aXZlSW1hZ2VRdDo6ZGVmYXVsdEZvcm1hdEZvckFscGhhRW5hYmxlZEltYWdlcygp
KTsKKyAgICBRSW1hZ2UgaW1hZ2UoaW1hZ2VQaXhlbHMsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0
LCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVsdGlwbGllZCk7CiAgICAgY29udGV4dC0+c2F2
ZSgpOwogICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgwLCBpbWFnZUhlaWdodCk7CiAgICAgY29udGV4
dC0+c2NhbGUoMSwgLTEpOwpAQCAtNDk2LDE2ICs0OTUsMjMgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKICAgICBpZiAoIWltYWdlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBRSW1hZ2UgbmF0aXZlSW1hZ2U7CisgICAgUUltYWdlIHF0
SW1hZ2U7CiAgICAgLy8gSXMgaW1hZ2UgYWxyZWFkeSBsb2FkZWQ/IElmIG5vdCwgbG9hZCBpdC4K
ICAgICBpZiAoaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgbmF0aXZlSW1hZ2UgPSBRSW1hZ2U6OmZy
b21EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWNoYXIqPihpbWFnZS0+ZGF0YSgpLT5kYXRh
KCkpLCBpbWFnZS0+ZGF0YSgpLT5zaXplKCkpOwotICAgIGVsc2UKLSAgICAgICAgbmF0aXZlSW1h
Z2UgPSAqaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0KKyAgICAgICAgcXRJ
bWFnZSA9IFFJbWFnZTo6ZnJvbURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1Y2hhcio+KGlt
YWdlLT5kYXRhKCktPmRhdGEoKSksIGltYWdlLT5kYXRhKCktPnNpemUoKSk7CisgICAgZWxzZSB7
CisgICAgICAgIFFQaXhtYXAqIG5hdGl2ZVBpeG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOworI2lmIEhBVkUoUVQ1KQorICAgICAgICAvLyBXaXRoIFFQQSwgd2UgY2Fu
IGF2b2lkIGEgZGVlcCBjb3B5LgorICAgICAgICBxdEltYWdlID0gKm5hdGl2ZVBpeG1hcC0+aGFu
ZGxlKCktPmJ1ZmZlcigpOworI2Vsc2UKKyAgICAgICAgLy8gVGhpcyBtaWdodCBiZSBhIGRlZXAg
Y29weSwgZGVwZW5kaW5nIG9uIG90aGVyIHJlZmVyZW5jZXMgdG8gdGhlIHBpeG1hcC4KKyAgICAg
ICAgcXRJbWFnZSA9IG5hdGl2ZVBpeG1hcC0+dG9JbWFnZSgpOworI2VuZGlmCisgICAgfQogCiAg
ICAgQWxwaGFPcCBhbHBoYU9wID0gQWxwaGFEb05vdGhpbmc7Ci0gICAgc3dpdGNoIChuYXRpdmVJ
bWFnZS5mb3JtYXQoKSkgeworICAgIHN3aXRjaCAocXRJbWFnZS5mb3JtYXQoKSkgewogICAgIGNh
c2UgUUltYWdlOjpGb3JtYXRfUkdCMzI6CiAgICAgICAgIC8vIEZvciBvcGFxdWUgaW1hZ2VzLCB3
ZSBzaG91bGQgbm90IHByZW11bHRpcGx5IG9yIHVubXVsdGlwbHkgYWxwaGEuCiAgICAgICAgIGJy
ZWFrOwpAQCAtNTE5LDcgKzUyNSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdl
RGF0YShJbWFnZSogaW1hZ2UsCiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IC8vIFRoZSBpbWFnZSBoYXMgYSBmb3JtYXQgdGhhdCBpcyBub3Qgc3VwcG9ydGVkIGluIHBhY2tQ
aXhlbHMuIFdlIGhhdmUgdG8gY29udmVydCBpdCBoZXJlLgotICAgICAgICBuYXRpdmVJbWFnZSA9
IG5hdGl2ZUltYWdlLmNvbnZlcnRUb0Zvcm1hdChwcmVtdWx0aXBseUFscGhhID8gUUltYWdlOjpG
b3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQgOiBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAg
ICAgICBxdEltYWdlID0gcXRJbWFnZS5jb252ZXJ0VG9Gb3JtYXQocHJlbXVsdGlwbHlBbHBoYSA/
IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkIDogUUltYWdlOjpGb3JtYXRfQVJH
QjMyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC01MzAsNyArNTM2LDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKIAogICAgIG91dHB1
dFZlY3Rvci5yZXNpemUocGFja2VkU2l6ZSk7CiAKLSAgICByZXR1cm4gcGFja1BpeGVscyhuYXRp
dmVJbWFnZS5jb25zdEJpdHMoKSwgU291cmNlRm9ybWF0QkdSQTgsIGltYWdlLT53aWR0aCgpLCBp
bWFnZS0+aGVpZ2h0KCksIDAsIGZvcm1hdCwgdHlwZSwgYWxwaGFPcCwgb3V0cHV0VmVjdG9yLmRh
dGEoKSk7CisgICAgcmV0dXJuIHBhY2tQaXhlbHMocXRJbWFnZS5jb25zdEJpdHMoKSwgU291cmNl
Rm9ybWF0QkdSQTgsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCksIDAsIGZvcm1hdCwg
dHlwZSwgYWxwaGFPcCwgb3V0cHV0VmVjdG9yLmRhdGEoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250ZXh0TG9zdENh
bGxiYWNrPikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAppbmRleCAyMmQ1YjAyLi5hNzNmOTZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRR
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0UXQuY3BwCkBAIC0xMDIxLDcgKzEwMjEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
Y2xlYXJQbGF0Zm9ybVNoYWRvdygpCiAgICAgbV9kYXRhLT5zaGFkb3ctPmNsZWFyKCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwdXNoVHJhbnNwYXJlbmN5TGF5ZXJJbnRlcm5hbChjb25z
dCBRUmVjdCAmcmVjdCwgcXJlYWwgb3BhY2l0eSwgUUltYWdlJiBhbHBoYU1hc2spCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cHVzaFRyYW5zcGFyZW5jeUxheWVySW50ZXJuYWwoY29uc3QgUVJlY3Qg
JnJlY3QsIHFyZWFsIG9wYWNpdHksIFFQaXhtYXAmIGFscGhhTWFzaykKIHsKICAgICBRUGFpbnRl
ciogcCA9IG1fZGF0YS0+cCgpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiAg
ICAgICAgIGggPSBpbnQocUJvdW5kKHFyZWFsKDApLCBkZXZpY2VDbGlwLmhlaWdodCgpLCAocXJl
YWwpaCkgKyAyKTsKICAgICB9CiAKLSAgICBRSW1hZ2UgZW1wdHlBbHBoYU1hc2s7CisgICAgUVBp
eG1hcCBlbXB0eUFscGhhTWFzazsKICAgICBtX2RhdGEtPmxheWVycy5wdXNoKG5ldyBUcmFuc3Bh
cmVuY3lMYXllcihwLCBRUmVjdCh4LCB5LCB3LCBoKSwgb3BhY2l0eSwgZW1wdHlBbHBoYU1hc2sp
KTsKICAgICArK21fZGF0YS0+bGF5ZXJDb3VudDsKIH0KQEAgLTEwNzAsNyArMTA3MCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCkKICAgICBp
ZiAoIWxheWVyLT5hbHBoYU1hc2suaXNOdWxsKCkpIHsKICAgICAgICAgbGF5ZXItPnBhaW50ZXIu
cmVzZXRUcmFuc2Zvcm0oKTsKICAgICAgICAgbGF5ZXItPnBhaW50ZXIuc2V0Q29tcG9zaXRpb25N
b2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfRGVzdGluYXRpb25Jbik7Ci0gICAgICAgIGxh
eWVyLT5wYWludGVyLmRyYXdJbWFnZShRUG9pbnQoKSwgbGF5ZXItPmFscGhhTWFzayk7CisgICAg
ICAgIGxheWVyLT5wYWludGVyLmRyYXdQaXhtYXAoUVBvaW50KCksIGxheWVyLT5hbHBoYU1hc2sp
OwogICAgIH0gZWxzZQogICAgICAgICAtLW1fZGF0YS0+bGF5ZXJDb3VudDsgLy8gc2VlIHRoZSBj
b21tZW50IGZvciBsYXllckNvdW50CiAgICAgbGF5ZXItPnBhaW50ZXIuZW5kKCk7CkBAIC0xMDc5
LDcgKzEwNzksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVu
Y3lMYXllcigpCiAgICAgcC0+c2F2ZSgpOwogICAgIHAtPnJlc2V0VHJhbnNmb3JtKCk7CiAgICAg
cC0+c2V0T3BhY2l0eShsYXllci0+b3BhY2l0eSk7Ci0gICAgcC0+ZHJhd0ltYWdlKGxheWVyLT5v
ZmZzZXQsIGxheWVyLT5pbWFnZSk7CisgICAgcC0+ZHJhd1BpeG1hcChsYXllci0+b2Zmc2V0LCBs
YXllci0+cGl4bWFwKTsKICAgICBwLT5yZXN0b3JlKCk7CiAKICAgICBkZWxldGUgbGF5ZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZl
ckRhdGFRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZm
ZXJEYXRhUXQuaAppbmRleCA5NDA2NWQzLi45Y2Y3ODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlckRhdGFRdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyRGF0YVF0LmgKQEAgLTI1
LDggKzI1LDggQEAKIAogI2luY2x1ZGUgIkltYWdlLmgiCiAKLSNpbmNsdWRlIDxRSW1hZ2U+CiAj
aW5jbHVkZSA8UVBhaW50ZXI+CisjaW5jbHVkZSA8UVBpeG1hcD4KIAogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zOSw3ICszOSw5IEBAIGNsYXNz
IEltYWdlQnVmZmVyRGF0YSB7CiBwdWJsaWM6CiAgICAgSW1hZ2VCdWZmZXJEYXRhKGNvbnN0IElu
dFNpemUmKTsKIAotICAgIFFJbWFnZSBtX25hdGl2ZUltYWdlOworICAgIFFJbWFnZSB0b1FJbWFn
ZSgpIGNvbnN0OworCisgICAgUVBpeG1hcCBtX3BpeG1hcDsKICAgICBPd25QdHI8UVBhaW50ZXI+
IG1fcGFpbnRlcjsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAppbmRl
eCAzMmRkMzlhLi5iOWI5ZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUg
Ik1JTUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVF0LmgiCiAjaW5jbHVk
ZSAiU3RpbGxJbWFnZVF0LmgiCiAjaW5jbHVkZSAiVHJhbnNwYXJlbmN5TGF5ZXIuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00MywyMiArNDIsMjMgQEAKICNpbmNsdWRlIDxR
SW1hZ2U+CiAjaW5jbHVkZSA8UUltYWdlV3JpdGVyPgogI2luY2x1ZGUgPFFQYWludGVyPgorI2lu
Y2x1ZGUgPFFQaXhtYXA+CiAjaW5jbHVkZSA8bWF0aC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmIHNpemUp
Ci0gICAgOiBtX25hdGl2ZUltYWdlKHNpemUsIE5hdGl2ZUltYWdlUXQ6OmRlZmF1bHRGb3JtYXRG
b3JBbHBoYUVuYWJsZWRJbWFnZXMoKSkKKyAgICA6IG1fcGl4bWFwKHNpemUpCiB7Ci0gICAgaWYg
KG1fbmF0aXZlSW1hZ2UuaXNOdWxsKCkpCisgICAgaWYgKG1fcGl4bWFwLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX25hdGl2ZUltYWdlLmZpbGwoUUNvbG9yKFF0Ojp0cmFuc3Bh
cmVudCkpOworICAgIG1fcGl4bWFwLmZpbGwoUUNvbG9yKFF0Ojp0cmFuc3BhcmVudCkpOwogCiAg
ICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBuZXcgUVBhaW50ZXI7CiAgICAgbV9wYWludGVyID0gYWRv
cHRQdHIocGFpbnRlcik7CiAKLSAgICBpZiAoIXBhaW50ZXItPmJlZ2luKCZtX25hdGl2ZUltYWdl
KSkKKyAgICBpZiAoIXBhaW50ZXItPmJlZ2luKCZtX3BpeG1hcCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFNpbmNlIEltYWdlQnVmZmVyIGlzIHVzZWQgbWFpbmx5IGZvciBDYW52YXMsIGV4
cGxpY2l0bHkgaW5pdGlhbGl6ZQpAQCAtNzYsNyArNzYsMjIgQEAgSW1hZ2VCdWZmZXJEYXRhOjpJ
bWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBwYWludGVyLT5zZXRCcnVz
aChicnVzaCk7CiAgICAgcGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21w
b3NpdGlvbk1vZGVfU291cmNlT3Zlcik7CiAgICAgCi0gICAgbV9pbWFnZSA9IFN0aWxsSW1hZ2U6
OmNyZWF0ZUZvclJlbmRlcmluZygmbV9uYXRpdmVJbWFnZSk7CisgICAgbV9pbWFnZSA9IFN0aWxs
SW1hZ2U6OmNyZWF0ZUZvclJlbmRlcmluZygmbV9waXhtYXApOworfQorCitRSW1hZ2UgSW1hZ2VC
dWZmZXJEYXRhOjp0b1FJbWFnZSgpIGNvbnN0Cit7CisgICAgUVBhaW50RW5naW5lKiBwYWludEVu
Z2luZSA9IG1fcGl4bWFwLnBhaW50RW5naW5lKCk7CisgICAgaWYgKCFwYWludEVuZ2luZSB8fCBw
YWludEVuZ2luZS0+dHlwZSgpICE9IFFQYWludEVuZ2luZTo6UmFzdGVyKQorICAgICAgICByZXR1
cm4gbV9waXhtYXAudG9JbWFnZSgpOworCisgICAgLy8gUVJhc3RlclBpeG1hcERhdGE6OnRvSW1h
Z2UoKSB3aWxsIGRlZXAtY29weSB0aGUgYmFja2luZyBRSW1hZ2UgaWYgdGhlcmUncyBhbiBhY3Rp
dmUgUVBhaW50ZXIgb24gaXQuCisgICAgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHdlIGRv
bid0IHdhbnQgdGhhdCBoZXJlLCBzbyB3ZSB0ZW1wb3JhcmlseSByZWRpcmVjdCB0aGUgcGFpbnQg
ZW5naW5lLgorICAgIFFQYWludERldmljZSogY3VycmVudFBhaW50RGV2aWNlID0gcGFpbnRFbmdp
bmUtPnBhaW50RGV2aWNlKCk7CisgICAgcGFpbnRFbmdpbmUtPnNldFBhaW50RGV2aWNlKDApOwor
ICAgIFFJbWFnZSBpbWFnZSA9IG1fcGl4bWFwLnRvSW1hZ2UoKTsKKyAgICBwYWludEVuZ2luZS0+
c2V0UGFpbnREZXZpY2UoY3VycmVudFBhaW50RGV2aWNlKTsKKyAgICByZXR1cm4gaW1hZ2U7CiB9
CiAKIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCAv
KiByZXNvbHV0aW9uU2NhbGUgKi8sIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIERlZmVycmFs
TW9kZSwgYm9vbCYgc3VjY2VzcykKQEAgLTEwNSw5ICsxMjAsOSBAQCBHcmFwaGljc0NvbnRleHQq
IEltYWdlQnVmZmVyOjpjb250ZXh0KCkgY29uc3QKIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlQnVm
ZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7CiAg
ICAgaWYgKGNvcHlCZWhhdmlvciA9PSBDb3B5QmFja2luZ1N0b3JlKQotICAgICAgICByZXR1cm4g
U3RpbGxJbWFnZTo6Y3JlYXRlKG1fZGF0YS5tX25hdGl2ZUltYWdlKTsKKyAgICAgICAgcmV0dXJu
IFN0aWxsSW1hZ2U6OmNyZWF0ZShtX2RhdGEubV9waXhtYXApOwogCi0gICAgcmV0dXJuIFN0aWxs
SW1hZ2U6OmNyZWF0ZUZvclJlbmRlcmluZygmbV9kYXRhLm1fbmF0aXZlSW1hZ2UpOworICAgIHJl
dHVybiBTdGlsbEltYWdlOjpjcmVhdGVGb3JSZW5kZXJpbmcoJm1fZGF0YS5tX3BpeG1hcCk7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKQEAgLTEzNCwxMiArMTQ5LDEyIEBAIHZvaWQgSW1hZ2VC
dWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjCiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGZsb2F0UmVjdCkgY29uc3QKIHsKLSAgICBRSW1hZ2Uq
IG5hdGl2ZUltYWdlID0gbV9kYXRhLm1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7CisgICAgUVBpeG1hcCogbmF0aXZlSW1hZ2UgPSBtX2RhdGEubV9pbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1
cm47CiAKICAgICBJbnRSZWN0IHJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGZsb2F0UmVjdCk7Ci0g
ICAgUUltYWdlIGFscGhhTWFzayA9ICpuYXRpdmVJbWFnZTsKKyAgICBRUGl4bWFwIGFscGhhTWFz
ayA9ICpuYXRpdmVJbWFnZTsKIAogICAgIGNvbnRleHQtPnB1c2hUcmFuc3BhcmVuY3lMYXllcklu
dGVybmFsKHJlY3QsIDEuMCwgYWxwaGFNYXNrKTsKIH0KQEAgLTE1MCw3ICsxNjUsNyBAQCB2b2lk
IEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGlu
dD4mIGxvb2tVcFRhYmxlKQogICAgIGlmIChpc1BhaW50aW5nKQogICAgICAgICBtX2RhdGEubV9w
YWludGVyLT5lbmQoKTsKIAotICAgIFFJbWFnZSBpbWFnZSA9IG1fZGF0YS5tX25hdGl2ZUltYWdl
LmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAgIFFJbWFnZSBpbWFn
ZSA9IG1fZGF0YS50b1FJbWFnZSgpLmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdC
MzIpOwogICAgIEFTU0VSVCghaW1hZ2UuaXNOdWxsKCkpOwogCiAgICAgdWNoYXIqIGJpdHMgPSBp
bWFnZS5iaXRzKCk7CkBAIC0xNjcsMTAgKzE4MiwxMCBAQCB2b2lkIEltYWdlQnVmZmVyOjpwbGF0
Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgbV9kYXRhLm1fbmF0aXZlSW1hZ2UgPSBpbWFnZTsKKyAg
ICBtX2RhdGEubV9waXhtYXAgPSBRUGl4bWFwOjpmcm9tSW1hZ2UoaW1hZ2UpOwogCiAgICAgaWYg
KGlzUGFpbnRpbmcpCi0gICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPmJlZ2luKCZtX2RhdGEubV9u
YXRpdmVJbWFnZSk7CisgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPmJlZ2luKCZtX2RhdGEubV9w
aXhtYXApOwogfQogCiB0ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KQEAgLTIwOSw3ICsy
MjQsNyBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZQogICAgIGludCBudW1Sb3dzID0gZW5keSAt
IG9yaWdpbnk7CiAKICAgICAvLyBOT1RFOiBGb3IgdW5tdWx0aXBsaWVkIGRhdGEsIHdlIHVuZG8g
dGhlIHByZW11bHRpcGxpY2F0aW9uIGJlbG93LgotICAgIFFJbWFnZSBpbWFnZSA9IGltYWdlRGF0
YS5tX25hdGl2ZUltYWdlLmNvbnZlcnRUb0Zvcm1hdChOYXRpdmVJbWFnZVF0OjpkZWZhdWx0Rm9y
bWF0Rm9yQWxwaGFFbmFibGVkSW1hZ2VzKCkpOworICAgIFFJbWFnZSBpbWFnZSA9IGltYWdlRGF0
YS50b1FJbWFnZSgpLmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVs
dGlwbGllZCk7CiAKICAgICBBU1NFUlQoIWltYWdlLmlzTnVsbCgpKTsKIApAQCAtMzQzLDcgKzM1
OCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVk
LCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAKICAgICBib29sIGlzUGFpbnRpbmcgPSBt
X2RhdGEubV9wYWludGVyLT5pc0FjdGl2ZSgpOwogICAgIGlmICghaXNQYWludGluZykKLSAgICAg
ICAgbV9kYXRhLm1fcGFpbnRlci0+YmVnaW4oJm1fZGF0YS5tX25hdGl2ZUltYWdlKTsKKyAgICAg
ICAgbV9kYXRhLm1fcGFpbnRlci0+YmVnaW4oJm1fZGF0YS5tX3BpeG1hcCk7CiAgICAgZWxzZSB7
CiAgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnNhdmUoKTsKIApAQCAtMzYyLDcgKzM3Nyw3IEBA
IHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50
OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnJlc3Rv
cmUoKTsKIH0KIAotc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoY29uc3QgUUltYWdlJiBpbWFnZSwg
Y29uc3QgU3RyaW5nJiBmb3JtYXQsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgUUJ5dGVBcnJheSYg
ZGF0YSkKK3N0YXRpYyBib29sIGVuY29kZUltYWdlKGNvbnN0IFFQaXhtYXAmIHBpeG1hcCwgY29u
c3QgU3RyaW5nJiBmb3JtYXQsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgUUJ5dGVBcnJheSYgZGF0
YSkKIHsKICAgICBpbnQgY29tcHJlc3Npb25RdWFsaXR5ID0gMTAwOwogICAgIGlmIChxdWFsaXR5
ICYmICpxdWFsaXR5ID49IDAuMCAmJiAqcXVhbGl0eSA8PSAxLjApCkBAIC0zNzAsNyArMzg1LDcg
QEAgc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoY29uc3QgUUltYWdlJiBpbWFnZSwgY29uc3QgU3Ry
aW5nJiBmb3JtYXQsIGNvbnN0IGRvdWJsZSoKIAogICAgIFFCdWZmZXIgYnVmZmVyKCZkYXRhKTsK
ICAgICBidWZmZXIub3BlbihRQnVmZmVyOjpXcml0ZU9ubHkpOwotICAgIGJvb2wgc3VjY2VzcyA9
IGltYWdlLnNhdmUoJmJ1ZmZlciwgZm9ybWF0LnV0ZjgoKS5kYXRhKCksIGNvbXByZXNzaW9uUXVh
bGl0eSk7CisgICAgYm9vbCBzdWNjZXNzID0gcGl4bWFwLnNhdmUoJmJ1ZmZlciwgZm9ybWF0LnV0
ZjgoKS5kYXRhKCksIGNvbXByZXNzaW9uUXVhbGl0eSk7CiAgICAgYnVmZmVyLmNsb3NlKCk7CiAK
ICAgICByZXR1cm4gc3VjY2VzczsKQEAgLTM4MiwxMCArMzk3LDEwIEBAIFN0cmluZyBJbWFnZUJ1
ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVh
bGl0eSwgQ29vCiAKICAgICAvLyBRSW1hZ2VXcml0ZXIgZG9lcyBub3Qgc3VwcG9ydCBtaW1ldHlw
ZXMuIEl0IGRvZXMgc3VwcG9ydCBRdCBpbWFnZSBmb3JtYXRzIChwbmcsCiAgICAgLy8gZ2lmLCBq
cGVnLi4uLCB4cG0pIHNvIHNraXAgdGhlIGltYWdlLyB0byBnZXQgdGhlIFF0IGltYWdlIGZvcm1h
dCB1c2VkIHRvIGVuY29kZQotICAgIC8vIHRoZSBtX25hdGl2ZUltYWdlIGltYWdlLgorICAgIC8v
IHRoZSBtX3BpeG1hcCBpbWFnZS4KIAogICAgIFFCeXRlQXJyYXkgZGF0YTsKLSAgICBpZiAoIWVu
Y29kZUltYWdlKG1fZGF0YS5tX25hdGl2ZUltYWdlLCBtaW1lVHlwZS5zdWJzdHJpbmcoc2l6ZW9m
ICJpbWFnZSIpLCBxdWFsaXR5LCBkYXRhKSkKKyAgICBpZiAoIWVuY29kZUltYWdlKG1fZGF0YS5t
X3BpeG1hcCwgbWltZVR5cGUuc3Vic3RyaW5nKHNpemVvZiAiaW1hZ2UiKSwgcXVhbGl0eSwgZGF0
YSkpCiAgICAgICAgIHJldHVybiAiZGF0YTosIjsKIAogICAgIHJldHVybiAiZGF0YToiICsgbWlt
ZVR5cGUgKyAiO2Jhc2U2NCwiICsgZGF0YS50b0Jhc2U2NCgpLmRhdGEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcApp
bmRleCBmMDM5ZTQzLi5lMDM2MzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwCkBAIC0yNzIsNyArMjcyLDkgQEAg
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiAgICAg
ZWxzZQogICAgICAgICBmb3JtYXQgPSBRSW1hZ2U6OkZvcm1hdF9SR0IzMjsKIAotICAgIHJldHVy
biBuZXcgUUltYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8dWNoYXIqPihtX2J5dGVzKSwgbV9zaXplLndp
ZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgc2l6ZW9mKFBpeGVsRGF0YSkgKiBtX3NpemUud2lkdGgo
KSwgZm9ybWF0KTsKKyAgICBRSW1hZ2UgaW1nKHJlaW50ZXJwcmV0X2Nhc3Q8dWNoYXIqPihtX2J5
dGVzKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgc2l6ZW9mKFBpeGVsRGF0YSkg
KiBtX3NpemUud2lkdGgoKSwgZm9ybWF0KTsKKworICAgIHJldHVybiBuZXcgUVBpeG1hcChRUGl4
bWFwOjpmcm9tSW1hZ2UoaW1nKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKaW5kZXggMTBmZTFmZS4uZTA5OGUwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKQEAgLTM3
LDcgKzM3LDYgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1h
Z2VRdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2hhZG93Qmx1
ci5oIgogI2luY2x1ZGUgIlN0aWxsSW1hZ2VRdC5oIgpAQCAtNTYsNyArNTUsNyBAQAogUV9HVUlf
RVhQT1JUIFFQaXhtYXAgcXRfcGl4bWFwRnJvbVdpbkhCSVRNQVAoSEJJVE1BUCwgaW50IGhiaXRt
YXBGb3JtYXQgPSAwKTsKICNlbmRpZgogCi10eXBlZGVmIFFIYXNoPFFCeXRlQXJyYXksIFFJbWFn
ZT4gV2ViR3JhcGhpY0hhc2g7Cit0eXBlZGVmIFFIYXNoPFFCeXRlQXJyYXksIFFQaXhtYXA+IFdl
YkdyYXBoaWNIYXNoOwogUV9HTE9CQUxfU1RBVElDKFdlYkdyYXBoaWNIYXNoLCBfZ3JhcGhpY3Mp
CiAKIHN0YXRpYyB2b2lkIGVhcmx5Q2xlYXJHcmFwaGljcygpCkBAIC03MCwyOCArNjksMjggQEAg
c3RhdGljIFdlYkdyYXBoaWNIYXNoKiBncmFwaGljcygpCiAKICAgICBpZiAoaGFzaC0+aXNFbXB0
eSgpKSB7CiAKLSAgICAgICAgLy8gcHJldmVudCB+UUltYWdlIHJ1bm5pbmcgYWZ0ZXIgflFBcHBs
aWNhdGlvbiAobGVha3MgbmF0aXZlIGltYWdlcykKKyAgICAgICAgLy8gcHJldmVudCB+UVBpeG1h
cCBydW5uaW5nIGFmdGVyIH5RQXBwbGljYXRpb24gKGxlYWtzIG5hdGl2ZSBwaXhtYXBzKQogICAg
ICAgICBxQWRkUG9zdFJvdXRpbmUoZWFybHlDbGVhckdyYXBoaWNzKTsKIAogICAgICAgICAvLyBR
V2ViU2V0dGluZ3M6Ok1pc3NpbmdJbWFnZUdyYXBoaWMKLSAgICAgICAgaGFzaC0+aW5zZXJ0KCJt
aXNzaW5nSW1hZ2UiLCBRSW1hZ2UoUUxhdGluMVN0cmluZygiOndlYmtpdC9yZXNvdXJjZXMvbWlz
c2luZ0ltYWdlLnBuZyIpKSk7CisgICAgICAgIGhhc2gtPmluc2VydCgibWlzc2luZ0ltYWdlIiwg
UVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6d2Via2l0L3Jlc291cmNlcy9taXNzaW5nSW1hZ2UucG5n
IikpKTsKICAgICAgICAgLy8gUVdlYlNldHRpbmdzOjpNaXNzaW5nUGx1Z2luR3JhcGhpYwotICAg
ICAgICBoYXNoLT5pbnNlcnQoIm51bGxQbHVnaW4iLCBRSW1hZ2UoUUxhdGluMVN0cmluZygiOndl
YmtpdC9yZXNvdXJjZXMvbnVsbFBsdWdpbi5wbmciKSkpOworICAgICAgICBoYXNoLT5pbnNlcnQo
Im51bGxQbHVnaW4iLCBRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2VzL251
bGxQbHVnaW4ucG5nIikpKTsKICAgICAgICAgLy8gUVdlYlNldHRpbmdzOjpEZWZhdWx0RnJhbWVJ
Y29uR3JhcGhpYwotICAgICAgICBoYXNoLT5pbnNlcnQoInVybEljb24iLCBRSW1hZ2UoUUxhdGlu
MVN0cmluZygiOndlYmtpdC9yZXNvdXJjZXMvdXJsSWNvbi5wbmciKSkpOworICAgICAgICBoYXNo
LT5pbnNlcnQoInVybEljb24iLCBRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3Vy
Y2VzL3VybEljb24ucG5nIikpKTsKICAgICAgICAgLy8gUVdlYlNldHRpbmdzOjpUZXh0QXJlYVNp
emVHcmlwQ29ybmVyR3JhcGhpYwotICAgICAgICBoYXNoLT5pbnNlcnQoInRleHRBcmVhUmVzaXpl
Q29ybmVyIiwgUUltYWdlKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2VzL3RleHRBcmVh
UmVzaXplQ29ybmVyLnBuZyIpKSk7CisgICAgICAgIGhhc2gtPmluc2VydCgidGV4dEFyZWFSZXNp
emVDb3JuZXIiLCBRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2VzL3RleHRB
cmVhUmVzaXplQ29ybmVyLnBuZyIpKSk7CiAgICAgICAgIC8vIFFXZWJTZXR0aW5nczo6RGVsZXRl
QnV0dG9uR3JhcGhpYwotICAgICAgICBoYXNoLT5pbnNlcnQoImRlbGV0ZUJ1dHRvbiIsIFFJbWFn
ZShRTGF0aW4xU3RyaW5nKCI6d2Via2l0L3Jlc291cmNlcy9kZWxldGVCdXR0b24ucG5nIikpKTsK
KyAgICAgICAgaGFzaC0+aW5zZXJ0KCJkZWxldGVCdXR0b24iLCBRUGl4bWFwKFFMYXRpbjFTdHJp
bmcoIjp3ZWJraXQvcmVzb3VyY2VzL2RlbGV0ZUJ1dHRvbi5wbmciKSkpOwogICAgICAgICAvLyBR
V2ViU2V0dGluZ3M6OklucHV0U3BlZWNoQnV0dG9uR3JhcGhpYwotICAgICAgICBoYXNoLT5pbnNl
cnQoImlucHV0U3BlZWNoIiwgUUltYWdlKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2Vz
L2lucHV0U3BlZWNoLnBuZyIpKSk7CisgICAgICAgIGhhc2gtPmluc2VydCgiaW5wdXRTcGVlY2gi
LCBRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2VzL2lucHV0U3BlZWNoLnBu
ZyIpKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGhhc2g7CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24g
bG9hZHMgcmVzb3VyY2VzIGludG8gV2ViS2l0Ci1zdGF0aWMgUUltYWdlIGxvYWRSZXNvdXJjZUlt
YWdlKGNvbnN0IGNoYXIgKm5hbWUpCitzdGF0aWMgUVBpeG1hcCBsb2FkUmVzb3VyY2VQaXhtYXAo
Y29uc3QgY2hhciAqbmFtZSkKIHsKICAgICByZXR1cm4gZ3JhcGhpY3MoKS0+dmFsdWUobmFtZSk7
CiB9CkBAIC0xMTgsMjMgKzExNywyMyBAQCBib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVh
ck1ldGFkYXRhKQogCiBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3Vy
Y2UoY29uc3QgY2hhciogbmFtZSkKIHsKLSAgICByZXR1cm4gU3RpbGxJbWFnZTo6Y3JlYXRlKGxv
YWRSZXNvdXJjZUltYWdlKG5hbWUpKTsKKyAgICByZXR1cm4gU3RpbGxJbWFnZTo6Y3JlYXRlKGxv
YWRSZXNvdXJjZVBpeG1hcChuYW1lKSk7CiB9CiAKLXZvaWQgSW1hZ2U6OnNldFBsYXRmb3JtUmVz
b3VyY2UoY29uc3QgY2hhciogbmFtZSwgY29uc3QgUUltYWdlJiBpbWFnZSkKK3ZvaWQgSW1hZ2U6
OnNldFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSwgY29uc3QgUVBpeG1hcCYgcGl4
bWFwKQogewogICAgIFdlYkdyYXBoaWNIYXNoKiBoID0gZ3JhcGhpY3MoKTsKLSAgICBpZiAoaW1h
Z2UuaXNOdWxsKCkpCisgICAgaWYgKHBpeG1hcC5pc051bGwoKSkKICAgICAgICAgaC0+cmVtb3Zl
KG5hbWUpOwogICAgIGVsc2UKLSAgICAgICAgaC0+aW5zZXJ0KG5hbWUsIGltYWdlKTsKKyAgICAg
ICAgaC0+aW5zZXJ0KG5hbWUsIHBpeG1hcCk7CiB9CiAKIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewotICAgIFFJbWFnZSogZnJhbWVJbWFn
ZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZUltYWdlKSAv
LyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KKyAgICBRUGl4
bWFwKiBmcmFtZVBpeG1hcCA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYg
KCFmcmFtZVBpeG1hcCkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFn
ZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05f
U0FNUExJTkcpCkBAIC0xNDksMzggKzE0OCwzNCBAQCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAg
ICAgaWYgKCFkci53aWR0aCgpIHx8ICFkci5oZWlnaHQoKSB8fCAhdHIud2lkdGgoKSB8fCAhdHIu
aGVpZ2h0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFFJbWFnZSBpbWFnZSA9ICpmcmFtZUlt
YWdlOwotICAgIGlmICh0ci54KCkgfHwgdHIueSgpIHx8IHRyLndpZHRoKCkgIT0gaW1hZ2Uud2lk
dGgoKSB8fCB0ci5oZWlnaHQoKSAhPSBpbWFnZS5oZWlnaHQoKSkKLSAgICAgICAgaW1hZ2UgPSBp
bWFnZS5jb3B5KHRyKTsKKyAgICBRUGl4bWFwIHBpeG1hcCA9ICpmcmFtZVBpeG1hcDsKKyAgICBp
ZiAodHIueCgpIHx8IHRyLnkoKSB8fCB0ci53aWR0aCgpICE9IHBpeG1hcC53aWR0aCgpIHx8IHRy
LmhlaWdodCgpICE9IHBpeG1hcC5oZWlnaHQoKSkKKyAgICAgICAgcGl4bWFwID0gcGl4bWFwLmNv
cHkodHIpOwogCiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0eHQt
PmNvbXBvc2l0ZU9wZXJhdGlvbigpOwogCi0gICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9u
KCFpbWFnZS5oYXNBbHBoYUNoYW5uZWwoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8g
Q29tcG9zaXRlQ29weSA6IG9wKTsKKyAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIXBp
eG1hcC5oYXNBbHBoYSgpICYmIG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBDb21wb3NpdGVD
b3B5IDogb3ApOwogCiAgICAgUVBhaW50ZXIqIHAgPSBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKTsK
ICAgICBRVHJhbnNmb3JtIHRyYW5zZm9ybShwYXR0ZXJuVHJhbnNmb3JtKTsKIAotICAgIC8vIElm
IHRoaXMgd291bGQgZHJhdyBtb3JlIHRoYW4gb25lIHNjYWxlZCB0aWxlLCB3ZSBzY2FsZSB0aGUg
aW1hZ2UgZmlyc3QgYW5kIHRoZW4gdXNlIHRoZSByZXN1bHQgdG8gZHJhdy4KKyAgICAvLyBJZiB0
aGlzIHdvdWxkIGRyYXcgbW9yZSB0aGFuIG9uZSBzY2FsZWQgdGlsZSwgd2Ugc2NhbGUgdGhlIHBp
eG1hcCBmaXJzdCBhbmQgdGhlbiB1c2UgdGhlIHJlc3VsdCB0byBkcmF3LgogICAgIGlmICh0cmFu
c2Zvcm0udHlwZSgpID09IFFUcmFuc2Zvcm06OlR4U2NhbGUpIHsKICAgICAgICAgUVJlY3RGIHRp
bGVSZWN0SW5UYXJnZXRDb29yZHMgPSAodHJhbnNmb3JtICogUVRyYW5zZm9ybSgpLnRyYW5zbGF0
ZShwaGFzZS54KCksIHBoYXNlLnkoKSkpLm1hcFJlY3QodHIpOwogCiAgICAgICAgIGJvb2wgdGls
ZVdpbGxCZVBhaW50ZWRPbmx5T25jZSA9IHRpbGVSZWN0SW5UYXJnZXRDb29yZHMuY29udGFpbnMo
ZHIpOwogICAgICAgICBpZiAoIXRpbGVXaWxsQmVQYWludGVkT25seU9uY2UpIHsKLSAgICAgICAg
ICAgIFFTaXplRiBzY2FsZWRTaXplKGZsb2F0KGltYWdlLndpZHRoKCkpICogdHJhbnNmb3JtLm0x
MSgpLCBmbG9hdChpbWFnZS5oZWlnaHQoKSkgKiB0cmFuc2Zvcm0ubTIyKCkpOwotICAgICAgICAg
ICAgUUltYWdlIHNjYWxlZEltYWdlOwotICAgICAgICAgICAgaWYgKGltYWdlLmhhc0FscGhhQ2hh
bm5lbCgpKSB7Ci0gICAgICAgICAgICAgICAgc2NhbGVkSW1hZ2UgPSBRSW1hZ2Uoc2NhbGVkU2l6
ZS50b1NpemUoKSwgTmF0aXZlSW1hZ2VRdDo6ZGVmYXVsdEZvcm1hdEZvckFscGhhRW5hYmxlZElt
YWdlcygpKTsKLSAgICAgICAgICAgICAgICBzY2FsZWRJbWFnZS5maWxsKFF0Ojp0cmFuc3BhcmVu
dCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzY2FsZWRJbWFnZSA9IFFJ
bWFnZShzY2FsZWRTaXplLnRvU2l6ZSgpLCBOYXRpdmVJbWFnZVF0OjpkZWZhdWx0Rm9ybWF0Rm9y
T3BhcXVlSW1hZ2VzKCkpOwotCisgICAgICAgICAgICBRU2l6ZUYgc2NhbGVkU2l6ZShmbG9hdChw
aXhtYXAud2lkdGgoKSkgKiB0cmFuc2Zvcm0ubTExKCksIGZsb2F0KHBpeG1hcC5oZWlnaHQoKSkg
KiB0cmFuc2Zvcm0ubTIyKCkpOworICAgICAgICAgICAgUVBpeG1hcCBzY2FsZWRQaXhtYXAoc2Nh
bGVkU2l6ZS50b1NpemUoKSk7CisgICAgICAgICAgICBpZiAocGl4bWFwLmhhc0FscGhhKCkpCisg
ICAgICAgICAgICAgICAgc2NhbGVkUGl4bWFwLmZpbGwoUXQ6OnRyYW5zcGFyZW50KTsKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBRUGFpbnRlciBwYWludGVyKCZzY2FsZWRJbWFnZSk7
CisgICAgICAgICAgICAgICAgUVBhaW50ZXIgcGFpbnRlcigmc2NhbGVkUGl4bWFwKTsKICAgICAg
ICAgICAgICAgICBwYWludGVyLnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRp
b25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgcGFpbnRlci5zZXRSZW5kZXJIaW50cyhw
LT5yZW5kZXJIaW50cygpKTsKLSAgICAgICAgICAgICAgICBwYWludGVyLmRyYXdJbWFnZShRUmVj
dCgwLCAwLCBzY2FsZWRJbWFnZS53aWR0aCgpLCBzY2FsZWRJbWFnZS5oZWlnaHQoKSksIGltYWdl
KTsKKyAgICAgICAgICAgICAgICBwYWludGVyLmRyYXdQaXhtYXAoUVJlY3QoMCwgMCwgc2NhbGVk
UGl4bWFwLndpZHRoKCksIHNjYWxlZFBpeG1hcC5oZWlnaHQoKSksIHBpeG1hcCk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpbWFnZSA9IHNjYWxlZEltYWdlOworICAgICAgICAgICAgcGl4
bWFwID0gc2NhbGVkUGl4bWFwOwogICAgICAgICAgICAgdHJhbnNmb3JtID0gUVRyYW5zZm9ybTo6
ZnJvbVRyYW5zbGF0ZSh0cmFuc2Zvcm0uZHgoKSwgdHJhbnNmb3JtLmR5KCkpOwogICAgICAgICB9
CiAgICAgfQpAQCAtMTg5LDcgKzE4NCw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICB0
cmFuc2Zvcm0gKj0gUVRyYW5zZm9ybSgpLnRyYW5zbGF0ZShwaGFzZS54KCksIHBoYXNlLnkoKSk7
CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSh0ci54KCksIHRyLnkoKSk7CiAKLSAgICBRQnJ1c2gg
YihpbWFnZSk7CisgICAgUUJydXNoIGIocGl4bWFwKTsKICAgICBiLnNldFRyYW5zZm9ybSh0cmFu
c2Zvcm0pOwogICAgIHAtPmZpbGxSZWN0KGRyLCBiKTsKIApAQCAtMTk5LDcgKzE5NCw3IEBAIHZv
aWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRo
aXMpOwogfQogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUUltYWdlKiBpbWFnZSwgSW1hZ2VP
YnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUVBpeG1hcCogcGl4
bWFwLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAg
ICwgbV9jdXJyZW50RnJhbWUoMCkKICAgICAsIG1fZnJhbWVzKDApCkBAIC0yMTcsMTQgKzIxMiwx
NCBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUUltYWdlKiBpbWFnZSwgSW1hZ2VPYnNlcnZl
ciogb2JzZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUodHJ1ZSkKICAgICAsIG1faGF2ZUZy
YW1lQ291bnQodHJ1ZSkKIHsKLSAgICBpbnQgd2lkdGggPSBpbWFnZS0+d2lkdGgoKTsKLSAgICBp
bnQgaGVpZ2h0ID0gaW1hZ2UtPmhlaWdodCgpOworICAgIGludCB3aWR0aCA9IHBpeG1hcC0+d2lk
dGgoKTsKKyAgICBpbnQgaGVpZ2h0ID0gcGl4bWFwLT5oZWlnaHQoKTsKICAgICBtX2RlY29kZWRT
aXplID0gd2lkdGggKiBoZWlnaHQgKiA0OwogICAgIG1fc2l6ZSA9IEludFNpemUod2lkdGgsIGhl
aWdodCk7CiAKICAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUg
PSBpbWFnZTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0gaW1hZ2UtPmhhc0FscGhhQ2hh
bm5lbCgpOworICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBwaXhtYXA7CisgICAgbV9mcmFtZXNb
MF0ubV9oYXNBbHBoYSA9IHBpeG1hcC0+aGFzQWxwaGEoKTsKICAgICBtX2ZyYW1lc1swXS5tX2hh
dmVNZXRhZGF0YSA9IHRydWU7CiAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiB9CkBAIC0yNDUs
OCArMjQwLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0LAogICAgIGlmIChub3JtYWxpemVkU3JjLmlzRW1wdHkoKSB8
fCBub3JtYWxpemVkRHN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUUltYWdl
KiBpbWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0KKyAgICBRUGl4bWFwKiBp
bWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFpbWFnZSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yNjAsMTkgKzI1NCwxOSBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCiAjZW5kaWYK
IAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIHByZXZpb3VzT3BlcmF0b3IgPSBjdHh0LT5jb21wb3Np
dGVPcGVyYXRpb24oKTsKLSAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIWltYWdlLT5o
YXNBbHBoYUNoYW5uZWwoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRl
Q29weSA6IG9wKTsKKyAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIWltYWdlLT5oYXNB
bHBoYSgpICYmIG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBDb21wb3NpdGVDb3B5IDogb3Ap
OwogCiAgICAgaWYgKGN0eHQtPmhhc1NoYWRvdygpKSB7CiAgICAgICAgIFNoYWRvd0JsdXIqIHNo
YWRvdyA9IGN0eHQtPnNoYWRvd0JsdXIoKTsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFk
b3dDb250ZXh0ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGN0eHQsIG5vcm1hbGl6ZWREc3Qp
OwogICAgICAgICBpZiAoc2hhZG93Q29udGV4dCkgewogICAgICAgICAgICAgUVBhaW50ZXIqIHNo
YWRvd1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICAgICAg
ICAgIHNoYWRvd1BhaW50ZXItPmRyYXdJbWFnZShub3JtYWxpemVkRHN0LCAqaW1hZ2UsIG5vcm1h
bGl6ZWRTcmMpOworICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZHJhd1BpeG1hcChub3JtYWxp
emVkRHN0LCAqaW1hZ2UsIG5vcm1hbGl6ZWRTcmMpOwogICAgICAgICAgICAgc2hhZG93LT5lbmRT
aGFkb3dMYXllcihjdHh0KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGN0eHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5kcmF3SW1hZ2Uobm9ybWFsaXplZERzdCwgKmltYWdlLCBub3JtYWxpemVkU3Jj
KTsKKyAgICBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1BpeG1hcChub3JtYWxpemVkRHN0
LCAqaW1hZ2UsIG5vcm1hbGl6ZWRTcmMpOwogCiAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0
aW9uKHByZXZpb3VzT3BlcmF0b3IpOwogCkBAIC0yODgsMjQgKzI4MiwyNCBAQCB2b2lkIEJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBRSW1hZ2UqIGZyYW1lSW1hZ2UgPSBmcmFtZUF0SW5kZXgo
MCk7Ci0gICAgaWYgKCFmcmFtZUltYWdlIHx8IGZyYW1lSW1hZ2UtPndpZHRoKCkgIT0gMSB8fCBm
cmFtZUltYWdlLT5oZWlnaHQoKSAhPSAxKQorICAgIFFQaXhtYXAqIGZyYW1lUGl4bWFwID0gZnJh
bWVBdEluZGV4KDApOworICAgIGlmICghZnJhbWVQaXhtYXAgfHwgZnJhbWVQaXhtYXAtPndpZHRo
KCkgIT0gMSB8fCBmcmFtZVBpeG1hcC0+aGVpZ2h0KCkgIT0gMSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOwotICAgIG1fc29saWRDb2xvciA9IFFDb2xvcjo6
ZnJvbVJnYmEoZnJhbWVJbWFnZS0+cGl4ZWwoMCwgMCkpOworICAgIG1fc29saWRDb2xvciA9IFFD
b2xvcjo6ZnJvbVJnYmEoZnJhbWVQaXhtYXAtPnRvSW1hZ2UoKS5waXhlbCgwLCAwKSk7CiB9CiAK
ICNpZiBPUyhXSU5ET1dTKQogUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gQml0bWFwSW1hZ2U6OmNy
ZWF0ZShIQklUTUFQIGhCaXRtYXApCiB7CiAjaWYgSEFWRShRVDUpCi0gICAgUUltYWdlKiBuYXRp
dmVJbWFnZSA9IG5ldyBRSW1hZ2UocXRfcGl4bWFwRnJvbVdpbkhCSVRNQVAoaEJpdG1hcCkudG9J
bWFnZSgpKTsKKyAgICBRUGl4bWFwKiBxUGl4bWFwID0gbmV3IFFQaXhtYXAocXRfcGl4bWFwRnJv
bVdpbkhCSVRNQVAoaEJpdG1hcCkpOwogI2Vsc2UKLSAgICBRSW1hZ2UqIG5hdGl2ZUltYWdlID0g
bmV3IFFJbWFnZShRUGl4bWFwOjpmcm9tV2luSEJJVE1BUChoQml0bWFwKS50b0ltYWdlKCkpOwor
ICAgIFFQaXhtYXAqIHFQaXhtYXAgPSBuZXcgUVBpeG1hcChRUGl4bWFwOjpmcm9tV2luSEJJVE1B
UChoQml0bWFwKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKG5h
dGl2ZUltYWdlKTsKKyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShxUGl4bWFwKTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9OYXRpdmVJbWFnZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9O
YXRpdmVJbWFnZVF0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZDFkMmMuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTmF0aXZlSW1h
Z2VRdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBab2x0YW4gSG9ydmF0aCAoem9sdGFuQHdlYmtpdC5vcmcpIDIwMTIgVW5pdmVyc2l0
eSBvZiBTemVnZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBVTklWRVJTSVRZIE9GIFNaRUdFRCBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFVOSVZFUlNJVFkgT0YgU1pFR0VEIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBOYXRpdmVJbWFnZVF0X2gKLSNkZWZpbmUgTmF0
aXZlSW1hZ2VRdF9oCi0KLSNpbmNsdWRlIDxRSW1hZ2U+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgTmF0aXZlSW1hZ2VRdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFFJbWFnZTo6Rm9y
bWF0IGRlZmF1bHRGb3JtYXRGb3JBbHBoYUVuYWJsZWRJbWFnZXMoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkOwotICAgIH0KLQotICAg
IHN0YXRpYyBRSW1hZ2U6OkZvcm1hdCBkZWZhdWx0Rm9ybWF0Rm9yT3BhcXVlSW1hZ2VzKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBRSW1hZ2U6OkZvcm1hdF9SR0IzMjsKLSAgICB9Ci19OwotCi19
Ci0KLSNlbmRpZiAvLyBOYXRpdmVJbWFnZVF0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdGhRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwCmluZGV4IDJlYWFmZjhmLi4zYjBjYTFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdGhRdC5jcHAKQEAgLTM1LDcg
KzM1LDYgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUXQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlN0cm9rZVN0eWxlQXBw
bGllci5oIgogI2luY2x1ZGUgPFFQYWludGVyUGF0aD4KQEAgLTExOSw3ICsxMTgsNyBAQCBib29s
IFBhdGg6OmNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBXaW5kUnVsZSBydWxlKSBj
b25zdAogCiBzdGF0aWMgR3JhcGhpY3NDb250ZXh0KiBzY3JhdGNoQ29udGV4dCgpCiB7Ci0gICAg
c3RhdGljIFFJbWFnZSBpbWFnZSgxLCAxLCBOYXRpdmVJbWFnZVF0OjpkZWZhdWx0Rm9ybWF0Rm9y
QWxwaGFFbmFibGVkSW1hZ2VzKCkpOworICAgIHN0YXRpYyBRSW1hZ2UgaW1hZ2UoMSwgMSwgUUlt
YWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQpOwogICAgIHN0YXRpYyBRUGFpbnRlciBw
YWludGVyKCZpbWFnZSk7CiAgICAgc3RhdGljIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IG5l
dyBHcmFwaGljc0NvbnRleHQoJnBhaW50ZXIpOwogICAgIHJldHVybiBjb250ZXh0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0dGVyblF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdHRlcm5RdC5jcHAKaW5kZXgg
NWM5NDEyMi4uN2FhZTYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvUGF0dGVyblF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9QYXR0ZXJuUXQuY3BwCkBAIC0zMywxMiArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBRQnJ1c2ggUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKCkgY29uc3QKIHsK
LSAgICBRSW1hZ2UqIGltYWdlID0gdGlsZUltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7Ci0gICAgaWYgKCFpbWFnZSkKKyAgICBRUGl4bWFwKiBwaXhtYXAgPSB0aWxlSW1hZ2Uo
KS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIXBpeG1hcCkKICAgICAg
ICAgcmV0dXJuIFFCcnVzaCgpOwogCiAgICAgLy8gUXQgbWVyZ2VzIHBhdHRlciBzcGFjZSBhbmQg
dXNlciBzcGFjZSBpdHNlbGYKLSAgICBRQnJ1c2ggYnJ1c2goKmltYWdlKTsKKyAgICBRQnJ1c2gg
YnJ1c2goKnBpeG1hcCk7CiAgICAgYnJ1c2guc2V0VHJhbnNmb3JtKG1fcGF0dGVyblNwYWNlVHJh
bnNmb3JtYXRpb24pOwogCiAgICAgcmV0dXJuIGJydXNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKaW5kZXggMDQxMjUyMC4u
ODA2NjZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
U3RpbGxJbWFnZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9TdGlsbEltYWdlUXQuY3BwCkBAIC0zNiw0MSArMzYsNDEgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TdGlsbEltYWdlOjpTdGlsbEltYWdlKGNvbnN0IFFJbWFnZSYgaW1hZ2UpCi0gICAg
OiBtX2ltYWdlKG5ldyBRSW1hZ2UoaW1hZ2UpKQotICAgICwgbV9vd25zSW1hZ2UodHJ1ZSkKK1N0
aWxsSW1hZ2U6OlN0aWxsSW1hZ2UoY29uc3QgUVBpeG1hcCYgcGl4bWFwKQorICAgIDogbV9waXht
YXAobmV3IFFQaXhtYXAocGl4bWFwKSkKKyAgICAsIG1fb3duc1BpeG1hcCh0cnVlKQoge30KIAot
U3RpbGxJbWFnZTo6U3RpbGxJbWFnZShjb25zdCBRSW1hZ2UqIGltYWdlKQotICAgIDogbV9pbWFn
ZShpbWFnZSkKLSAgICAsIG1fb3duc0ltYWdlKGZhbHNlKQorU3RpbGxJbWFnZTo6U3RpbGxJbWFn
ZShjb25zdCBRUGl4bWFwKiBwaXhtYXApCisgICAgOiBtX3BpeG1hcChwaXhtYXApCisgICAgLCBt
X293bnNQaXhtYXAoZmFsc2UpCiB7fQogCiBTdGlsbEltYWdlOjp+U3RpbGxJbWFnZSgpCiB7Ci0g
ICAgaWYgKG1fb3duc0ltYWdlKQotICAgICAgICBkZWxldGUgbV9pbWFnZTsKKyAgICBpZiAobV9v
d25zUGl4bWFwKQorICAgICAgICBkZWxldGUgbV9waXhtYXA7CiB9CiAKIGJvb2wgU3RpbGxJbWFn
ZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEoKQogewotICAgIHJldHVybiBtX2ltYWdlLT5oYXNBbHBo
YUNoYW5uZWwoKTsKKyAgICByZXR1cm4gbV9waXhtYXAtPmhhc0FscGhhKCk7CiB9CiAKIEludFNp
emUgU3RpbGxJbWFnZTo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEludFNpemUobV9pbWFn
ZS0+d2lkdGgoKSwgbV9pbWFnZS0+aGVpZ2h0KCkpOworICAgIHJldHVybiBJbnRTaXplKG1fcGl4
bWFwLT53aWR0aCgpLCBtX3BpeG1hcC0+aGVpZ2h0KCkpOwogfQogCiBOYXRpdmVJbWFnZVB0ciBT
dGlsbEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7Ci0gICAgcmV0dXJuIGNv
bnN0X2Nhc3Q8TmF0aXZlSW1hZ2VQdHI+KG1faW1hZ2UpOworICAgIHJldHVybiBjb25zdF9jYXN0
PE5hdGl2ZUltYWdlUHRyPihtX3BpeG1hcCk7CiB9CiAKIHZvaWQgU3RpbGxJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAogICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciBvcCkKIHsKLSAgICBpZiAobV9pbWFnZS0+aXNOdWxsKCkpCisgICAgaWYgKG1fcGl4bWFw
LT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IG5vcm1hbGl6ZWRT
cmMgPSBzcmMubm9ybWFsaXplZCgpOwpAQCAtODQsMTIgKzg0LDEyIEBAIHZvaWQgU3RpbGxJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAogICAg
ICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93
TGF5ZXIoY3R4dCwgbm9ybWFsaXplZERzdCk7CiAgICAgICAgIGlmIChzaGFkb3dDb250ZXh0KSB7
CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvd0NvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpOwotICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZHJhd0ltYWdlKG5v
cm1hbGl6ZWREc3QsICptX2ltYWdlLCBub3JtYWxpemVkU3JjKTsKKyAgICAgICAgICAgIHNoYWRv
d1BhaW50ZXItPmRyYXdQaXhtYXAobm9ybWFsaXplZERzdCwgKm1fcGl4bWFwLCBub3JtYWxpemVk
U3JjKTsKICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY3R4dCk7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd0ltYWdlKG5vcm1h
bGl6ZWREc3QsICptX2ltYWdlLCBub3JtYWxpemVkU3JjKTsKKyAgICBjdHh0LT5wbGF0Zm9ybUNv
bnRleHQoKS0+ZHJhd1BpeG1hcChub3JtYWxpemVkRHN0LCAqbV9waXhtYXAsIG5vcm1hbGl6ZWRT
cmMpOwogICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3Rp
bGxJbWFnZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbElt
YWdlUXQuaAppbmRleCA4YzllYzBkLi4yNmRmNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaApAQCAtMzQsMTQgKzM0LDE0IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFN0aWxsSW1hZ2UgOiBwdWJsaWMgSW1h
Z2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RpbGxJbWFnZT4g
Y3JlYXRlKGNvbnN0IFFJbWFnZSYgaW1hZ2UpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
aWxsSW1hZ2U+IGNyZWF0ZShjb25zdCBRUGl4bWFwJiBwaXhtYXApCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RpbGxJbWFnZShpbWFnZSkpOworICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGlsbEltYWdlKHBpeG1hcCkpOwogICAgICAgICB9CiAK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RpbGxJbWFnZT4gY3JlYXRlRm9yUmVuZGVyaW5n
KGNvbnN0IFFJbWFnZSogaW1hZ2UpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0aWxsSW1h
Z2U+IGNyZWF0ZUZvclJlbmRlcmluZyhjb25zdCBRUGl4bWFwKiBwaXhtYXApCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RpbGxJbWFnZShpbWFnZSkpOworICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGlsbEltYWdlKHBpeG1hcCkpOwogICAgICAg
ICB9CiAKICAgICAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhhc0FscGhhKCk7CkBAIC01
NiwxMiArNTYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFN0aWxsSW1hZ2UoY29uc3QgUUltYWdl
Jik7Ci0gICAgICAgIFN0aWxsSW1hZ2UoY29uc3QgUUltYWdlKik7CisgICAgICAgIFN0aWxsSW1h
Z2UoY29uc3QgUVBpeG1hcCYgcGl4bWFwKTsKKyAgICAgICAgU3RpbGxJbWFnZShjb25zdCBRUGl4
bWFwKiBwaXhtYXApOwogICAgICAgICB2aXJ0dWFsIH5TdGlsbEltYWdlKCk7CiAgICAgICAgIAot
ICAgICAgICBjb25zdCBRSW1hZ2UqIG1faW1hZ2U7Ci0gICAgICAgIGJvb2wgbV9vd25zSW1hZ2U7
CisgICAgICAgIGNvbnN0IFFQaXhtYXAqIG1fcGl4bWFwOworICAgICAgICBib29sIG1fb3duc1Bp
eG1hcDsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9UcmFuc3BhcmVuY3lMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvVHJhbnNwYXJlbmN5TGF5ZXIuaAppbmRleCA1OTc0MDE3Li5mMTNkZWIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9UcmFuc3BhcmVu
Y3lMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1RyYW5z
cGFyZW5jeUxheWVyLmgKQEAgLTM2LDI0ICszNiwyNCBAQAogI2lmbmRlZiBUcmFuc3BhcmVuY3lM
YXllcl9oCiAjZGVmaW5lIFRyYW5zcGFyZW5jeUxheWVyX2gKIAotI2luY2x1ZGUgPE5hdGl2ZUlt
YWdlUXQuaD4KICNpbmNsdWRlIDxRUGFpbnRFbmdpbmU+CiAjaW5jbHVkZSA8UVBhaW50ZXI+Cisj
aW5jbHVkZSA8UVBpeG1hcD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgVHJhbnNw
YXJlbmN5TGF5ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFRyYW5zcGFyZW5jeUxheWVyKGNvbnN0IFFQYWludGVyKiBwLCBjb25zdCBRUmVjdCAmcmVjdCwg
cXJlYWwgb3BhY2l0eSwgUUltYWdlJiBhbHBoYU1hc2spCi0gICAgICAgIDogaW1hZ2UocmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpLCBOYXRpdmVJbWFnZVF0OjpkZWZhdWx0Rm9ybWF0Rm9yQWxw
aGFFbmFibGVkSW1hZ2VzKCkpCisgICAgVHJhbnNwYXJlbmN5TGF5ZXIoY29uc3QgUVBhaW50ZXIq
IHAsIGNvbnN0IFFSZWN0ICZyZWN0LCBxcmVhbCBvcGFjaXR5LCBRUGl4bWFwJiBhbHBoYU1hc2sp
CisgICAgICAgIDogcGl4bWFwKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkKICAgICAgICAg
LCBvcGFjaXR5KG9wYWNpdHkpCiAgICAgICAgICwgYWxwaGFNYXNrKGFscGhhTWFzaykKICAgICAg
ICAgLCBzYXZlQ291bnRlcigxKSAvLyBzZWUgdGhlIGNvbW1lbnQgZm9yIHNhdmVDb3VudGVyCiAg
ICAgewogICAgICAgICBvZmZzZXQgPSByZWN0LnRvcExlZnQoKTsKLSAgICAgICAgaW1hZ2UuZmls
bChRdDo6dHJhbnNwYXJlbnQpOwotICAgICAgICBwYWludGVyLmJlZ2luKCZpbWFnZSk7CisgICAg
ICAgIHBpeG1hcC5maWxsKFF0Ojp0cmFuc3BhcmVudCk7CisgICAgICAgIHBhaW50ZXIuYmVnaW4o
JnBpeG1hcCk7CiAgICAgICAgIHBhaW50ZXIuc2V0UmVuZGVySGludHMocC0+cmVuZGVySGludHMo
KSk7CiAgICAgICAgIHBhaW50ZXIudHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICBwYWludGVy
LnNldFBlbihwLT5wZW4oKSk7CkBAIC02NywxMiArNjcsMTIgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAKLSAgICBRSW1hZ2UgaW1hZ2U7CisgICAgUVBpeG1hcCBwaXhtYXA7CiAgICAgUVBvaW50
IG9mZnNldDsKICAgICBRUGFpbnRlciBwYWludGVyOwogICAgIHFyZWFsIG9wYWNpdHk7CiAgICAg
Ly8gZm9yIGNsaXBUb0ltYWdlQnVmZmVyCi0gICAgUUltYWdlIGFscGhhTWFzazsKKyAgICBRUGl4
bWFwIGFscGhhTWFzazsKICAgICAvLyBzYXZlQ291bnRlciBpcyBvbmx5IHVzZWQgaW4gY29tYmlu
YXRpb24gd2l0aCBhbHBoYU1hc2sKICAgICAvLyBvdGhlcndpc2UsIGl0cyB2YWx1ZSBpcyB1bnNw
ZWNpZmllZAogICAgIGludCBzYXZlQ291bnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZVF0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFj
ZVF0LmNwcAppbmRleCBlMWIyNzU4Li43MzRhMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VRdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NT
dXJmYWNlUXQuY3BwCkBAIC01Miw3ICs1Miw4IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IEdyYXBoaWNz
U3VyZmFjZTo6Y3JlYXRlUmVhZE9ubHlJbWFnZShjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGlu
dCBzdHJpZGU7CiAgICAgUUltYWdlOjpGb3JtYXQgZm9ybWF0ID0gKGZsYWdzKCkgJiBTdXBwb3J0
c0FscGhhKSA/IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkIDogUUltYWdlOjpG
b3JtYXRfUkdCMzI7CiAgICAgY2hhciogZGF0YSA9IHBsYXRmb3JtTG9jayhyZWN0LCAmc3RyaWRl
LCBSZXRhaW5QaXhlbHMgfCBSZWFkT25seSk7Ci0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVh
dGUobmV3IFFJbWFnZShyZWludGVycHJldF9jYXN0PHVjaGFyKj4oZGF0YSksIHJlY3Qud2lkdGgo
KSwgcmVjdC5oZWlnaHQoKSwgc3RyaWRlLCBmb3JtYXQsIGRpZFJlbGVhc2VJbWFnZSwgdGhpcykp
OworICAgIFFJbWFnZSBpbWFnZShyZWludGVycHJldF9jYXN0PHVjaGFyKj4oZGF0YSksIHJlY3Qu
d2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgc3RyaWRlLCBmb3JtYXQsIGRpZFJlbGVhc2VJbWFnZSwg
dGhpcyk7CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUobmV3IFFQaXhtYXAoUVBpeG1h
cDo6ZnJvbUltYWdlKGltYWdlKSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4
IDI4ZDMzODEuLmIyZTdiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0zNyw3ICszNyw2
IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUXQu
aCIKICNpZiBIQVZFKFFUNSkKICNpbmNsdWRlIDxRT3BlbkdMQ29udGV4dD4KICNlbHNlCkBAIC0z
ODMsNyArMzgyLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihp
bnQgdmFsdWUsIGludCBwb2ludFNpemUsIGNvbnN0IEZsb2F0UG8KICAgICBJbnRSZWN0IHNvdXJj
ZVJlY3QoSW50UG9pbnQ6Onplcm8oKSwgc2l6ZSk7CiAgICAgSW50UmVjdCB0YXJnZXRSZWN0KHJv
dW5kZWRJbnRQb2ludCh0YXJnZXRQb2ludCksIHNpemUpOwogCi0gICAgUUltYWdlIGltYWdlKHNp
emUsIE5hdGl2ZUltYWdlUXQ6OmRlZmF1bHRGb3JtYXRGb3JBbHBoYUVuYWJsZWRJbWFnZXMoKSk7
CisgICAgUUltYWdlIGltYWdlKHNpemUsIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBs
aWVkKTsKICAgICBRUGFpbnRlciBwYWludGVyKCZpbWFnZSk7CiAgICAgcGFpbnRlci5maWxsUmVj
dChzb3VyY2VSZWN0LCBRdDo6Ymx1ZSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBz
cGVlZCwgdGhpcyB3aWxsIHBhaW50IHJlZC4KICAgICBwYWludGVyLnNldEZvbnQoZm9udCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCmluZGV4IDliMGM5YTUuLmQ1MDE5
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCkBAIC0yMSwxMCAr
MjEsNiBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oIgogCiAjaW5jbHVk
ZSAiRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCIKLSNpZiBQTEFURk9STShRVCkKLSNpbmNsdWRlICJO
YXRpdmVJbWFnZVF0LmgiCi0jZW5kaWYKLQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzIsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2
b2lkIEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6dXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCog
ZGF0YSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9m
ZnNldCwgaW50IGJ5dGVzUGVyTGluZSkKIHsKICNpZiBQTEFURk9STShRVCkKLSAgICBRSW1hZ2Ug
aW1hZ2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1Y2hhcio+KGRhdGEpLCB0YXJnZXRSZWN0Lndp
ZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIGJ5dGVzUGVyTGluZSwgTmF0aXZlSW1hZ2VRdDo6
ZGVmYXVsdEZvcm1hdEZvckFscGhhRW5hYmxlZEltYWdlcygpKTsKKyAgICBRSW1hZ2UgaW1hZ2Uo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1Y2hhcio+KGRhdGEpLCB0YXJnZXRSZWN0LndpZHRoKCks
IHRhcmdldFJlY3QuaGVpZ2h0KCksIGJ5dGVzUGVyTGluZSwgUUltYWdlOjpGb3JtYXRfQVJHQjMy
X1ByZW11bHRpcGxpZWQpOwogCiAgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBtX2ltYWdlLT5jb250
ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIHBhaW50ZXItPnNhdmUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAppbmRleCA4ZWRiYmUzLi5jYWFiZTA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCkBAIC01MCw3
ICs1MCw2IEBACiAKICNpbmNsdWRlIDxRR3VpQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UUNsaXBi
b2FyZD4KLSNpbmNsdWRlIDxRSW1hZ2U+CiAjaW5jbHVkZSA8UUxpc3Q+CiAjaW5jbHVkZSA8UU1p
bWVEYXRhPgogI2luY2x1ZGUgPFFTdHJpbmdMaXN0PgpAQCAtMjQ0LDcgKzI0Myw3IEBAIERyYWdJ
bWFnZVJlZiBDbGlwYm9hcmRRdDo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JiBkcmFnTG9jKSBj
b25zdAogICAgIGlmICghbV9kcmFnSW1hZ2UpCiAgICAgICAgIHJldHVybiAwOwogICAgIGRyYWdM
b2MgPSBtX2RyYWdMb2M7Ci0gICAgcmV0dXJuIG5ldyBRSW1hZ2UoKm1fZHJhZ0ltYWdlLT5pbWFn
ZSgpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKTsKKyAgICByZXR1cm4gbV9kcmFnSW1h
Z2UtPmltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiB9CiAKIApAQCAtMjc0
LDkgKzI3Myw5IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShF
bGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvCiAgICAgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gZ2V0Q2FjaGVkSW1hZ2UoZWxlbWVudCk7CiAgICAgaWYgKCFjYWNoZWRJbWFn
ZSB8fCAhY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC0+cmVuZGVyZXIoKSkg
fHwgIWNhY2hlZEltYWdlLT5pc0xvYWRlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgUUltYWdl
KiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQtPnJlbmRlcmVy
KCkpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlmIChpbWFnZSkKLSAgICAg
ICAgbV93cml0YWJsZURhdGEtPnNldEltYWdlRGF0YSgqaW1hZ2UpOworICAgIFFQaXhtYXAqIHBp
eG1hcCA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQtPnJlbmRlcmVyKCkp
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmIChwaXhtYXApCisgICAgICAg
IG1fd3JpdGFibGVEYXRhLT5zZXRJbWFnZURhdGEoKnBpeG1hcCk7CiAKICAgICBRTGlzdDxRVXJs
PiB1cmxzOwogICAgIHVybHMuYXBwZW5kKHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9DdXJzb3JRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9D
dXJzb3JRdC5jcHAKaW5kZXggMTY4YTJmNS4uZTc4NTRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvQ3Vyc29yUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L0N1cnNvclF0LmNwcApAQCAtMzcsOCArMzcsNiBAQAogCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKIAotI2luY2x1ZGUgPFFJbWFnZT4KLSNpbmNsdWRlIDxRUGl4bWFwPgogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKQEAgLTc3LDExICs3NSwxMCBA
QCBDdXJzb3ImIEN1cnNvcjo6b3BlcmF0b3I9KGNvbnN0IEN1cnNvciYgb3RoZXIpCiAjaWZuZGVm
IFFUX05PX0NVUlNPUgogc3RhdGljIFFDdXJzb3IqIGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFnZSog
aW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQogewotICAgIFFJbWFnZSogbmF0aXZlSW1h
Z2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoIW5hdGl2
ZUltYWdlKQorICAgIGlmICghaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIEludFBvaW50IGVmZmVjdGl2ZUhvdFNwb3QgPSBkZXRlcm1p
bmVIb3RTcG90KGltYWdlLCBob3RTcG90KTsKLSAgICByZXR1cm4gbmV3IFFDdXJzb3IoUVBpeG1h
cDo6ZnJvbUltYWdlKCpuYXRpdmVJbWFnZSksIGVmZmVjdGl2ZUhvdFNwb3QueCgpLCBlZmZlY3Rp
dmVIb3RTcG90LnkoKSk7CisgICAgcmV0dXJuIG5ldyBRQ3Vyc29yKCooaW1hZ2UtPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkpLCBlZmZlY3RpdmVIb3RTcG90LngoKSwgZWZmZWN0aXZlSG90
U3BvdC55KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L0RyYWdJbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdJ
bWFnZVF0LmNwcAppbmRleCBlOTNhYzcwLi4wZTdjZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9EcmFnSW1hZ2VRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvRHJhZ0ltYWdlUXQuY3BwCkBAIC0yOSw4ICsyOSw2IEBACiAjaW5jbHVkZSAiQ2Fj
aGVkSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogCi0jaW5jbHVkZSA8UUltYWdlPgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIEludFNpemUgZHJhZ0ltYWdlU2l6ZShEcmFnSW1hZ2VSZWYg
aW1hZ2UpCkBAIC02OCw3ICs2Niw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9t
SW1hZ2UoSW1hZ2UqIGltYWdlLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0pCiAgICAgaWYg
KCFpbWFnZSB8fCAhaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgcmV0dXJuIG5ldyBRSW1hZ2UoKmltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpKTsKKyAgICByZXR1cm4gbmV3IFFQaXhtYXAoKmltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpKTsKIH0KIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUljb25Gb3JDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUGFzdGVib2FyZFF0LmNwcAppbmRleCBjNmUzZDAxLi5kNmY0ZTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKQEAgLTE2NiwxMCArMTY2LDEw
IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJikKICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JS
ZW5kZXJlcihub2RlLT5yZW5kZXJlcigpKTsKICAgICBBU1NFUlQoaW1hZ2UpOwogCi0gICAgUUlt
YWdlKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwot
ICAgIGlmICghaW1hZ2UpCisgICAgUVBpeG1hcCogcGl4bWFwID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFwaXhtYXApCiAgICAgICAgIHJldHVybjsKLSAg
ICBRR3VpQXBwbGljYXRpb246OmNsaXBib2FyZCgpLT5zZXRJbWFnZSgqbmF0aXZlSW1hZ2UsIFFD
bGlwYm9hcmQ6OkNsaXBib2FyZCk7CisgICAgUUd1aUFwcGxpY2F0aW9uOjpjbGlwYm9hcmQoKS0+
c2V0UGl4bWFwKCpwaXhtYXAsIFFDbGlwYm9hcmQ6OkNsaXBib2FyZCk7CiAjZW5kaWYKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggZGFjNDE2NS4uYjNjYzJkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0xNzM0LDkgKzE3MzQsOSBAQCBRV2ViSGl0VGVz
dFJlc3VsdFByaXZhdGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZShjb25zdCBXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0CiAgICAgYm91bmRpbmdSZWN0ID0gaW5uZXJOb25TaGFyZWROb2RlID8gaW5u
ZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpIDog
SW50UmVjdCgpOwogICAgIFdlYkNvcmU6OkltYWdlICppbWcgPSBoaXRUZXN0LmltYWdlKCk7CiAg
ICAgaWYgKGltZykgewotICAgICAgICBRSW1hZ2UgKnBpeCA9IGltZy0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKKyAgICAgICAgUVBpeG1hcCAqcGl4ID0gaW1nLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwogICAgICAgICBpZiAocGl4KQotICAgICAgICAgICAgcGl4bWFwID0g
UVBpeG1hcDo6ZnJvbUltYWdlKCpwaXgpOworICAgICAgICAgICAgcGl4bWFwID0gKnBpeDsKICAg
ICB9CiAgICAgV2ViQ29yZTo6RnJhbWUgKndmcmFtZSA9IGhpdFRlc3QudGFyZ2V0RnJhbWUoKTsK
ICAgICBpZiAod2ZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmhp
c3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnkuY3BwCmluZGV4IDcx
MmMyOGYuLjE1ZDRhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAKQEAgLTE1
OCw3ICsxNTgsNyBAQCBRRGF0ZVRpbWUgUVdlYkhpc3RvcnlJdGVtOjpsYXN0VmlzaXRlZCgpIGNv
bnN0CiBRSWNvbiBRV2ViSGlzdG9yeUl0ZW06Omljb24oKSBjb25zdAogewogICAgIGlmIChkLT5p
dGVtKQotICAgICAgICByZXR1cm4gUVBpeG1hcDo6ZnJvbUltYWdlKCpXZWJDb3JlOjppY29uRGF0
YWJhc2UoKS5zeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGQtPml0ZW0tPnVybCgpLCBX
ZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpKTsKKyAgICAgICAgcmV0dXJuICpXZWJDb3JlOjppY29u
RGF0YWJhc2UoKS5zeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGQtPml0ZW0tPnVybCgp
LCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwogCiAgICAgcmV0dXJuIFFJY29uKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIGIvU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAppbmRleCAwNzliYTBmLi4xZWRjMDU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKQEAgLTgyMywxMiArODIzLDEyIEBA
IHZvaWQgUVdlYlNldHRpbmdzOjpjbGVhckljb25EYXRhYmFzZSgpCiBRSWNvbiBRV2ViU2V0dGlu
Z3M6Omljb25Gb3JVcmwoY29uc3QgUVVybCYgdXJsKQogewogICAgIFdlYkNvcmU6OmluaXRpYWxp
emVXZWJDb3JlUXQoKTsKLSAgICBRSW1hZ2UqIGljb24gPSBXZWJDb3JlOjppY29uRGF0YWJhc2Uo
KS5zeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKFdlYkNvcmU6OktVUkwodXJsKS5zdHJp
bmcoKSwKKyAgICBRUGl4bWFwKiBpY29uID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hy
b25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChXZWJDb3JlOjpLVVJMKHVybCkuc3RyaW5nKCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkludFNpemUoMTYsIDE2KSk7
CiAgICAgaWYgKCFpY29uKQotICAgICAgICByZXR1cm4gUUljb24oKTsKKyAgICAgICAgcmV0dXJu
IFFQaXhtYXAoKTsKIAotICAgIHJldHVybiBRUGl4bWFwOjpmcm9tSW1hZ2UoKmljb24pOworICAg
IHJldHVybiogaWNvbjsKIH0KIAogLyoKQEAgLTg3MSw3ICs4NzEsNyBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogcmVzb3VyY2VOYW1lRm9yV2ViR3JhcGhpYyhRV2ViU2V0dGluZ3M6OldlYkdyYXBoaWMg
dHlwZSkKIHZvaWQgUVdlYlNldHRpbmdzOjpzZXRXZWJHcmFwaGljKFdlYkdyYXBoaWMgdHlwZSwg
Y29uc3QgUVBpeG1hcCYgZ3JhcGhpYykKIHsKICAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29y
ZVF0KCk7Ci0gICAgV2ViQ29yZTo6SW1hZ2U6OnNldFBsYXRmb3JtUmVzb3VyY2UocmVzb3VyY2VO
YW1lRm9yV2ViR3JhcGhpYyh0eXBlKSwgZ3JhcGhpYy50b0ltYWdlKCkpOworICAgIFdlYkNvcmU6
OkltYWdlOjpzZXRQbGF0Zm9ybVJlc291cmNlKHJlc291cmNlTmFtZUZvcldlYkdyYXBoaWModHlw
ZSksIGdyYXBoaWMpOwogfQogCiAvKiEKQEAgLTg4NiwxMCArODg2LDEwIEBAIFFQaXhtYXAgUVdl
YlNldHRpbmdzOjp3ZWJHcmFwaGljKFdlYkdyYXBoaWMgdHlwZSkKICAgICBSZWZQdHI8V2ViQ29y
ZTo6SW1hZ2U+IGltZyA9IFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShyZXNv
dXJjZU5hbWVGb3JXZWJHcmFwaGljKHR5cGUpKTsKICAgICBpZiAoIWltZykKICAgICAgICAgcmV0
dXJuIFFQaXhtYXAoKTsKLSAgICBRSW1hZ2UqIGltYWdlID0gaW1nLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOwotICAgIGlmICghaW1hZ2UpCisgICAgUVBpeG1hcCogcGl4bWFwID0gaW1n
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICghcGl4bWFwKQogICAgICAg
ICByZXR1cm4gUVBpeG1hcCgpOwotICAgIHJldHVybiBRUGl4bWFwOjpmcm9tSW1hZ2UoKmltYWdl
KTsKKyAgICByZXR1cm4gKnBpeG1hcDsKIH0KIAogLyohCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5jcHAKaW5kZXggOGI2NDhjMS4uY2I2MzI4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNw
cApAQCAtOTcsOSArOTcsOSBAQCB2b2lkIERyYWdDbGllbnRRdDo6c3RhcnREcmFnKERyYWdJbWFn
ZVJlZiBkcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UAogICAgIGlmICh2aWV3
KSB7CiAgICAgICAgIFFEcmFnKiBkcmFnID0gbmV3IFFEcmFnKHZpZXcpOwogICAgICAgICBpZiAo
ZHJhZ0ltYWdlKQotICAgICAgICAgICAgZHJhZy0+c2V0UGl4bWFwKFFQaXhtYXA6OmZyb21JbWFn
ZSgqZHJhZ0ltYWdlKSk7CisgICAgICAgICAgICBkcmFnLT5zZXRQaXhtYXAoKmRyYWdJbWFnZSk7
CiAgICAgICAgIGVsc2UgaWYgKGNsaXBib2FyZERhdGEgJiYgY2xpcGJvYXJkRGF0YS0+aGFzSW1h
Z2UoKSkKLSAgICAgICAgICAgIGRyYWctPnNldFBpeG1hcChRUGl4bWFwOjpmcm9tSW1hZ2UocXZh
cmlhbnRfY2FzdDxRSW1hZ2U+KGNsaXBib2FyZERhdGEtPmltYWdlRGF0YSgpKSkpOworICAgICAg
ICAgICAgZHJhZy0+c2V0UGl4bWFwKHF2YXJpYW50X2Nhc3Q8UVBpeG1hcD4oY2xpcGJvYXJkRGF0
YS0+aW1hZ2VEYXRhKCkpKTsKICAgICAgICAgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uTWFz
ayA9IGNsaXBib2FyZC0+c291cmNlT3BlcmF0aW9uKCk7CiAgICAgICAgIGRyYWctPnNldE1pbWVE
YXRhKGNsaXBib2FyZERhdGEpOwogICAgICAgICBRdDo6RHJvcEFjdGlvbiBhY3R1YWxEcm9wQWN0
aW9uID0gZHJhZy0+ZXhlYyhkcmFnT3BlcmF0aW9uc1RvRHJvcEFjdGlvbnMoZHJhZ09wZXJhdGlv
bk1hc2spKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5p
dFdlYkNvcmVRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJD
b3JlUXQuY3BwCmluZGV4IGM2M2NjYjAuLjVhYzQ0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcApAQCAtODMsOSArODMsOSBAQCB2
b2lkIGluaXRpYWxpemVXZWJDb3JlUXQoKQogI2VuZGlmCiAKICAgICAvLyBRV2ViU2V0dGluZ3M6
OlNlYXJjaENhbmNlbEJ1dHRvbkdyYXBoaWMKLSAgICBJbWFnZTo6c2V0UGxhdGZvcm1SZXNvdXJj
ZSgic2VhcmNoQ2FuY2VsQnV0dG9uIiwgUUFwcGxpY2F0aW9uOjpzdHlsZSgpLT5zdGFuZGFyZFBp
eG1hcChRU3R5bGU6OlNQX0RpYWxvZ0Nsb3NlQnV0dG9uKS50b0ltYWdlKCkpOworICAgIEltYWdl
OjpzZXRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hDYW5jZWxCdXR0b24iLCBRQXBwbGljYXRpb246
OnN0eWxlKCktPnN0YW5kYXJkUGl4bWFwKFFTdHlsZTo6U1BfRGlhbG9nQ2xvc2VCdXR0b24pKTsK
ICAgICAvLyBRV2ViU2V0dGluZ3M6OlNlYXJjaENhbmNlbEJ1dHRvblByZXNzZWRHcmFwaGljCi0g
ICAgSW1hZ2U6OnNldFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaENhbmNlbEJ1dHRvblByZXNzZWQi
LCBRQXBwbGljYXRpb246OnN0eWxlKCktPnN0YW5kYXJkUGl4bWFwKFFTdHlsZTo6U1BfRGlhbG9n
Q2xvc2VCdXR0b24pLnRvSW1hZ2UoKSk7CisgICAgSW1hZ2U6OnNldFBsYXRmb3JtUmVzb3VyY2Uo
InNlYXJjaENhbmNlbEJ1dHRvblByZXNzZWQiLCBRQXBwbGljYXRpb246OnN0eWxlKCktPnN0YW5k
YXJkUGl4bWFwKFFTdHlsZTo6U1BfRGlhbG9nQ2xvc2VCdXR0b24pKTsKIAogICAgIGluaXRpYWxp
emVkID0gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9TaGFy
ZWFibGVCaXRtYXBRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvU2hhcmVhYmxlQml0
bWFwUXQuY3BwCmluZGV4IDg4ZTRkM2EuLmE3YWI4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogCi0jaW5jbHVkZSAi
TmF0aXZlSW1hZ2VRdC5oIgogI2luY2x1ZGUgPFFJbWFnZT4KICNpbmNsdWRlIDxRUGFpbnRlcj4K
ICNpbmNsdWRlIDxRdEdsb2JhbD4KQEAgLTQyLDcgKzQxLDcgQEAgUUltYWdlIFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlUUltYWdlKCkKIHsKICAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYg
aW4gcmVsZWFzZVNoYXJlZE1lbW9yeURhdGEKICAgICByZXR1cm4gUUltYWdlKHJlaW50ZXJwcmV0
X2Nhc3Q8dWNoYXIqPihkYXRhKCkpLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBt
X3NpemUud2lkdGgoKSAqIDQsCi0gICAgICAgICAgICAgICAgICBtX2ZsYWdzICYgU3VwcG9ydHNB
bHBoYSA/IE5hdGl2ZUltYWdlUXQ6OmRlZmF1bHRGb3JtYXRGb3JBbHBoYUVuYWJsZWRJbWFnZXMo
KSA6IE5hdGl2ZUltYWdlUXQ6OmRlZmF1bHRGb3JtYXRGb3JPcGFxdWVJbWFnZXMoKSwKKyAgICAg
ICAgICAgICAgICAgIG1fZmxhZ3MgJiBTdXBwb3J0c0FscGhhID8gUUltYWdlOjpGb3JtYXRfQVJH
QjMyX1ByZW11bHRpcGxpZWQgOiBRSW1hZ2U6OkZvcm1hdF9SR0IzMiwKICAgICAgICAgICAgICAg
ICAgIHJlbGVhc2VTaGFyZWRNZW1vcnlEYXRhLCB0aGlzKTsKIH0KIApAQCAtNTMsOCArNTIsOCBA
QCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZVNoYXJlZE1lbW9yeURhdGEodm9pZCogdHlw
ZWxlc3NCaXRtYXApCiAKIFBhc3NSZWZQdHI8SW1hZ2U+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
SW1hZ2UoKQogewotICAgIFFJbWFnZSogaW1hZ2UgPSBuZXcgUUltYWdlKGNyZWF0ZVFJbWFnZSgp
KTsKLSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShpbWFnZSk7CisgICAgUVBpeG1hcCog
cGl4bWFwID0gbmV3IFFQaXhtYXAoUVBpeG1hcDo6ZnJvbUltYWdlKGNyZWF0ZVFJbWFnZSgpKSk7
CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUocGl4bWFwKTsKIH0KIAogUGFzc093blB0
cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkljb25EYXRh
YmFzZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJJY29uRGF0
YWJhc2VDbGllbnQuY3BwCmluZGV4IGFmZGZhNmYuLjU5MmJiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcApA
QCAtOTAsMTEgKzkwLDExIEBAIFFJbWFnZSBRdFdlYkljb25EYXRhYmFzZUNsaWVudDo6aWNvbklt
YWdlRm9yUGFnZVVSTChjb25zdCBXVEY6OlN0cmluZyYgcGFnZVVSTCwKIAogICAgIFdlYkNvcmU6
OkludFNpemUgc2l6ZShpY29uU2l6ZS53aWR0aCgpLCBpY29uU2l6ZS5oZWlnaHQoKSk7CiAKLSAg
ICBRSW1hZ2UqIG5hdGl2ZUltYWdlID0gbV9pY29uRGF0YWJhc2UtPm5hdGl2ZUltYWdlRm9yUGFn
ZVVSTChwYWdlVVJMLCBzaXplKTsKKyAgICBRUGl4bWFwKiBuYXRpdmVJbWFnZSA9IG1faWNvbkRh
dGFiYXNlLT5uYXRpdmVJbWFnZUZvclBhZ2VVUkwocGFnZVVSTCwgc2l6ZSk7CiAgICAgaWYgKCFu
YXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIFFJbWFnZSgpOwogCi0gICAgcmV0dXJuICpuYXRp
dmVJbWFnZTsKKyAgICByZXR1cm4gbmF0aXZlSW1hZ2UtPnRvSW1hZ2UoKTsKIH0KIAogdm9pZCBR
dFdlYkljb25EYXRhYmFzZUNsaWVudDo6cmV0YWluSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
JiBwYWdlVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9xdC9XZWJEcmFnQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJEcmFnQ2xpZW50UXQuY3BwCmluZGV4IGQ5ZTZkMWQuLmJi
ZGI2MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvcXQvV2ViRHJhZ0NsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3F0L1dlYkRyYWdDbGllbnRRdC5jcHAKQEAgLTM4LDE1ICszOCwxNSBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRp
YyBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydFFJbWFnZVRvU2hhcmVhYmxlQml0
bWFwKFFJbWFnZSogaW1hZ2UpCitzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNv
bnZlcnRRUGl4bWFwVG9TaGFyZWFibGVCaXRtYXAoUVBpeG1hcCogcGl4bWFwKQogewotICAgIGlm
ICghaW1hZ2UpCisgICAgaWYgKCFwaXhtYXApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoSW50U2l6ZShpbWFnZS0+c2l6ZSgpKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0Fs
cGhhKTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKHBpeG1hcC0+c2l6ZSgpKSwgU2hhcmVhYmxlQml0
bWFwOjpTdXBwb3J0c0FscGhhKTsKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGlj
c0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCi0gICAgZ3JhcGhp
Y3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd0ltYWdlKDAsIDAsICppbWFnZSk7Cisg
ICAgZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1BpeG1hcCgwLCAwLCAq
cGl4bWFwKTsKICAgICByZXR1cm4gYml0bWFwLnJlbGVhc2UoKTsKIH0KIApAQCAtNTcsNyArNTcs
NyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYgZHJhZ0ltYWdl
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaQogICAgIHN0YXRpY19jYXN0PENsaXBib2FyZFF0
Kj4oY2xpcGJvYXJkKS0+aW52YWxpZGF0ZVdyaXRhYmxlRGF0YSgpOwogICAgIERyYWdEYXRhIGRy
YWdEYXRhKGNsaXBib2FyZERhdGEsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJh
Z09wZXJhdGlvbk1hc2spOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0g
Y29udmVydFFJbWFnZVRvU2hhcmVhYmxlQml0bWFwKGRyYWdJbWFnZSk7CisgICAgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gYml0bWFwID0gY29udmVydFFQaXhtYXBUb1NoYXJlYWJsZUJpdG1hcChk
cmFnSW1hZ2UpOwogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAo
Yml0bWFwICYmICFiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpKQogICAgICAgICByZXR1cm47
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166467</attachid>
            <date>2012-10-01 06:59:16 -0700</date>
            <delta_ts>2012-10-07 19:49:18 -0700</delta_ts>
            <desc>update to build with opengl</desc>
            <filename>patch_qpixmap_qimage.patch</filename>
            <type>text/plain</type>
            <size>60461</size>
            <attacher name="Stephane Cerveau">scerveau</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCmluZGV4IGJhNGU4MGQuLmQ4ZGU3ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjExMSw3
ICsyMTExLDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgg
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmggXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3F0L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBcCi0gICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvTmF0aXZlSW1hZ2VRdC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbElt
YWdlUXQuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVHJhbnNwYXJlbmN5TGF5ZXIuaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKaW5kZXggYTJkYWFkYS4uYjBl
NWY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRp
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNw
cApAQCAtMTQ2LDggKzE0Niw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFvYmplY3RBcmctPmlu
aGVyaXRzKCZKU0hUTUxJbWFnZUVsZW1lbnQ6OnNfaW5mbykpCiAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIAotICAgICAgICAvLyB3ZSBub3cga25vdyB0aGF0IHdlIGhhdmUgYSB2
YWxpZCA8aW1nPiBlbGVtZW50IGFzIHRoZSBhcmd1bWVudCwgd2UgY2FuIGF0dGFjaCB0aGUgaW1h
Z2UgdG8gaXQuCi0gICAgICAgIFJlZlB0cjxTdGlsbEltYWdlPiBzdGlsbEltYWdlID0gV2ViQ29y
ZTo6U3RpbGxJbWFnZTo6Y3JlYXRlKGluc3RhbmNlLT50b0ltYWdlKCkpOworICAgICAgICAvLyB3
ZSBub3cga25vdyB0aGF0IHdlIGhhdmUgYSB2YWxpZCA8aW1nPiBlbGVtZW50IGFzIHRoZSBhcmd1
bWVudCwgd2UgY2FuIGF0dGFjaCB0aGUgcGl4bWFwIHRvIGl0LgorICAgICAgICBQYXNzUmVmUHRy
PFN0aWxsSW1hZ2U+IHN0aWxsSW1hZ2UgPSBXZWJDb3JlOjpTdGlsbEltYWdlOjpjcmVhdGUoaW5z
dGFuY2UtPnRvUGl4bWFwKCkpOwogICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1MSW1h
Z2VFbGVtZW50Kj4ob2JqZWN0QXJnKS0+aW1wbCgpKTsKICAgICAgICAgaW1hZ2VFbGVtZW50LT5z
ZXRDYWNoZWRJbWFnZShuZXcgQ2FjaGVkSW1hZ2Uoc3RpbGxJbWFnZS5nZXQoKSkpOwogICAgICAg
ICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihpbnN0YW5jZS0+cm9vdE9iamVjdCgpLT5nbG9iYWxPYmplY3QoKSk7CkBAIC0zODMsMTMg
KzM4MywxMyBAQCBRVmFyaWFudCBRdFBpeG1hcEluc3RhbmNlOjp2YXJpYW50RnJvbU9iamVjdChK
U09iamVjdCogb2JqZWN0LCBRTWV0YVR5cGU6OlR5cGUgaAogICAgICAgICBpZiAoIWltYWdlKQog
ICAgICAgICAgICAgZ290byByZXR1cm5FbXB0eVZhcmlhbnQ7CiAKLSAgICAgICAgUUltYWdlKiBu
YXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgICAg
ICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICBRUGl4bWFwKiBwaXhtYXAgPSBpbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgaWYgKCFwaXhtYXApCiAgICAgICAg
ICAgICBnb3RvIHJldHVybkVtcHR5VmFyaWFudDsKIAogICAgICAgICByZXR1cm4gKGhpbnQgPT0g
c3RhdGljX2Nhc3Q8UU1ldGFUeXBlOjpUeXBlPihxTWV0YVR5cGVJZDxRUGl4bWFwPigpKSkKLSAg
ICAgICAgICAgICAgICAgID8gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRUGl4bWFwPihRUGl4bWFwOjpm
cm9tSW1hZ2UoKm5hdGl2ZUltYWdlKSkKLSAgICAgICAgICAgICAgICAgIDogUVZhcmlhbnQ6OmZy
b21WYWx1ZTxRSW1hZ2U+KCpuYXRpdmVJbWFnZSk7CisgICAgICAgICAgICAgICAgICA/IFFWYXJp
YW50Ojpmcm9tVmFsdWU8UVBpeG1hcD4oKnBpeG1hcCkKKyAgICAgICAgICAgICAgICAgIDogUVZh
cmlhbnQ6OmZyb21WYWx1ZTxRSW1hZ2U+KHBpeG1hcC0+dG9JbWFnZSgpKTsKICAgICB9CiAKICAg
ICBpZiAob2JqZWN0LT5pbmhlcml0cygmUXRQaXhtYXBSdW50aW1lT2JqZWN0OjpzX2luZm8pKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IGU3OGE5ZDMuLmRkOTcwZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC0zNiw3ICszNiw3IEBACiBPQkpDX0NM
QVNTIE5TSW1hZ2U7CiAjZWxpZiBQTEFURk9STShRVCkKIFFUX0JFR0lOX05BTUVTUEFDRQotY2xh
c3MgUUltYWdlOworY2xhc3MgUVBpeG1hcDsKIFFUX0VORF9OQU1FU1BBQ0UKICNlbGlmIFBMQVRG
T1JNKFdJTikKIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyogSEJJVE1BUDsKQEAgLTYyLDcgKzYy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFBMQVRGT1JNKE1BQykKICAgICB0eXBlZGVm
IFJldGFpblB0cjxOU0ltYWdlPiBEcmFnSW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9STShRVCkKLSAg
ICB0eXBlZGVmIFFJbWFnZSogRHJhZ0ltYWdlUmVmOworICAgIHR5cGVkZWYgUVBpeG1hcCogRHJh
Z0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgIHR5cGVkZWYgSEJJVE1BUCBEcmFn
SW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9STShXWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYTJmNGQ2OC4uNmQ0NGVhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKQEAgLTUwMSw3ICs1MDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKFFUKQotICAgICAgICB2b2lkIHB1c2hUcmFuc3BhcmVuY3lMYXllckludGVy
bmFsKGNvbnN0IFFSZWN0JiwgcXJlYWwsIFFJbWFnZSYpOworICAgICAgICB2b2lkIHB1c2hUcmFu
c3BhcmVuY3lMYXllckludGVybmFsKGNvbnN0IFFSZWN0ICZyZWN0LCBxcmVhbCBvcGFjaXR5LCBR
UGl4bWFwJiBhbHBoYU1hc2spOwogICAgICAgICB2b2lkIHRha2VPd25lcnNoaXBPZlBsYXRmb3Jt
Q29udGV4dCgpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IGJhOTUzZjUuLmE2Yjk0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaApAQCAtNTIsNiArNTIsMTAgQEAgdHlwZWRlZiBTSVpFKiBMUFNJWkU7CiB0
eXBlZGVmIHN0cnVjdCBIQklUTUFQX18gKkhCSVRNQVA7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KFFUKQorI2luY2x1ZGUgPFFQaXhtYXA+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKEdUSykKIHR5
cGVkZWYgc3RydWN0IF9HZGtQaXhidWYgR2RrUGl4YnVmOwogI2VuZGlmCkBAIC0xNTMsNyArMTU3
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKLSAgICBzdGF0aWMgdm9p
ZCBzZXRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFFJbWFnZSYpOwor
ICAgIHN0YXRpYyB2b2lkIHNldFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSwgY29u
c3QgUVBpeG1hcCYpOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA5MTNhM2U3Li5lZDYyNWJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTQzLDcgKzQzLDcg
QEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkRhdGEqIENGRGF0YVJlZjsKICNlbGlmIFBMQVRG
T1JNKFFUKQogI2luY2x1ZGUgPHFnbG9iYWwuaD4KIFFUX0JFR0lOX05BTUVTUEFDRQotY2xhc3Mg
UUltYWdlOworY2xhc3MgUVBpeG1hcDsKIFFUX0VORF9OQU1FU1BBQ0UKICNlbGlmIFVTRShDQUlS
TykKICNpbmNsdWRlICJOYXRpdmVJbWFnZUNhaXJvLmgiCkBAIC05MCw3ICs5MCw3IEBAIGNsYXNz
IEltYWdlRGVjb2RlcjsKIHR5cGVkZWYgSW1hZ2VEZWNvZGVyKiBOYXRpdmVJbWFnZVNvdXJjZVB0
cjsKIHR5cGVkZWYgdm9pZCogTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBQTEFURk9STShRVCkKLXR5
cGVkZWYgUUltYWdlKiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVkZWYgUVBpeG1hcCogTmF0aXZlSW1h
Z2VQdHI7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCmluZGV4IDdhMGU1
ZWUuLjgzYmRmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCkBAIC0yOSwxMCArMjksNiBAQAog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi0j
aWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8UUltYWdlPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEludFNpemU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lclF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lclF0LmNwcApp
bmRleCBkNmU2ZTJhLi41MDNjMTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJRdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyUXQuY3BwCkBA
IC0zNiw2ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogSW1hZ2VHU3RyZWFtZXI6
OkltYWdlR1N0cmVhbWVyKEdzdEJ1ZmZlciogYnVmZmVyLCBHc3RDYXBzKiBjYXBzKQogICAgIDog
bV9pbWFnZSgwKQogeworICAgIFFQaXhtYXAqIHN1cmZhY2UgPSBuZXcgUVBpeG1hcDsKICAgICBH
c3RWaWRlb0Zvcm1hdCBmb3JtYXQ7CiAgICAgSW50U2l6ZSBzaXplOwogICAgIGludCBwaXhlbEFz
cGVjdFJhdGlvTnVtZXJhdG9yLCBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IsIHN0cmlkZTsK
QEAgLTY4LDcgKzY5LDggQEAgSW1hZ2VHU3RyZWFtZXI6OkltYWdlR1N0cmVhbWVyKEdzdEJ1ZmZl
ciogYnVmZmVyLCBHc3RDYXBzKiBjYXBzKQogICAgIGltYWdlLmludmVydFBpeGVscyhpbnZlcnRN
b2RlKTsKICNlbmRpZgogCi0gICAgbV9pbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUobmV3IFFJ
bWFnZShpbWFnZSkpOworICAgIHN1cmZhY2UtPmNvbnZlcnRGcm9tSW1hZ2UoaW1hZ2UpOworICAg
IG1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKHN1cmZhY2UpOwogCiAjaWZkZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKICAgICBpZiAoR3N0VmlkZW9Dcm9wTWV0YSogY3JvcE1ldGEgPSBnc3RfYnVm
ZmVyX2dldF92aWRlb19jcm9wX21ldGEoYnVmZmVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5k
ZXggODk1Zjc2Ni4uODQ3MjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTI5LDcgKzI5
LDYgQEAKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
ICNpbmNsdWRlICJJbWFnZURhdGEuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVF0LmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2luY2x1
ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCkBAIC00NjksNyArNDY4LDcgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBh
aW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnZVdp
ZHRoLCBpbnQgaW1hZ2VIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hlaWdodCwgUVBhaW50ZXIqIGNvbnRleHQp
CiB7Ci0gICAgUUltYWdlIGltYWdlKGltYWdlUGl4ZWxzLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdo
dCwgTmF0aXZlSW1hZ2VRdDo6ZGVmYXVsdEZvcm1hdEZvckFscGhhRW5hYmxlZEltYWdlcygpKTsK
KyAgICBRSW1hZ2UgaW1hZ2UoaW1hZ2VQaXhlbHMsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBR
SW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVsdGlwbGllZCk7CiAgICAgY29udGV4dC0+c2F2ZSgp
OwogICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgwLCBpbWFnZUhlaWdodCk7CiAgICAgY29udGV4dC0+
c2NhbGUoMSwgLTEpOwpAQCAtNDk2LDE2ICs0OTUsMjMgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKICAgICBpZiAoIWltYWdlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBRSW1hZ2UgbmF0aXZlSW1hZ2U7CisgICAgUUltYWdlIHF0SW1h
Z2U7CiAgICAgLy8gSXMgaW1hZ2UgYWxyZWFkeSBsb2FkZWQ/IElmIG5vdCwgbG9hZCBpdC4KICAg
ICBpZiAoaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgbmF0aXZlSW1hZ2UgPSBRSW1hZ2U6OmZyb21E
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWNoYXIqPihpbWFnZS0+ZGF0YSgpLT5kYXRhKCkp
LCBpbWFnZS0+ZGF0YSgpLT5zaXplKCkpOwotICAgIGVsc2UKLSAgICAgICAgbmF0aXZlSW1hZ2Ug
PSAqaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0KKyAgICAgICAgcXRJbWFn
ZSA9IFFJbWFnZTo6ZnJvbURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1Y2hhcio+KGltYWdl
LT5kYXRhKCktPmRhdGEoKSksIGltYWdlLT5kYXRhKCktPnNpemUoKSk7CisgICAgZWxzZSB7Cisg
ICAgICAgIFFQaXhtYXAqIG5hdGl2ZVBpeG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOworI2lmIEhBVkUoUVQ1KQorICAgICAgICAvLyBXaXRoIFFQQSwgd2UgY2FuIGF2
b2lkIGEgZGVlcCBjb3B5LgorICAgICAgICBxdEltYWdlID0gKm5hdGl2ZVBpeG1hcC0+aGFuZGxl
KCktPmJ1ZmZlcigpOworI2Vsc2UKKyAgICAgICAgLy8gVGhpcyBtaWdodCBiZSBhIGRlZXAgY29w
eSwgZGVwZW5kaW5nIG9uIG90aGVyIHJlZmVyZW5jZXMgdG8gdGhlIHBpeG1hcC4KKyAgICAgICAg
cXRJbWFnZSA9IG5hdGl2ZVBpeG1hcC0+dG9JbWFnZSgpOworI2VuZGlmCisgICAgfQogCiAgICAg
QWxwaGFPcCBhbHBoYU9wID0gQWxwaGFEb05vdGhpbmc7Ci0gICAgc3dpdGNoIChuYXRpdmVJbWFn
ZS5mb3JtYXQoKSkgeworICAgIHN3aXRjaCAocXRJbWFnZS5mb3JtYXQoKSkgewogICAgIGNhc2Ug
UUltYWdlOjpGb3JtYXRfUkdCMzI6CiAgICAgICAgIC8vIEZvciBvcGFxdWUgaW1hZ2VzLCB3ZSBz
aG91bGQgbm90IHByZW11bHRpcGx5IG9yIHVubXVsdGlwbHkgYWxwaGEuCiAgICAgICAgIGJyZWFr
OwpAQCAtNTE5LDcgKzUyNSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0
YShJbWFnZSogaW1hZ2UsCiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8v
IFRoZSBpbWFnZSBoYXMgYSBmb3JtYXQgdGhhdCBpcyBub3Qgc3VwcG9ydGVkIGluIHBhY2tQaXhl
bHMuIFdlIGhhdmUgdG8gY29udmVydCBpdCBoZXJlLgotICAgICAgICBuYXRpdmVJbWFnZSA9IG5h
dGl2ZUltYWdlLmNvbnZlcnRUb0Zvcm1hdChwcmVtdWx0aXBseUFscGhhID8gUUltYWdlOjpGb3Jt
YXRfQVJHQjMyX1ByZW11bHRpcGxpZWQgOiBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAgICAg
ICBxdEltYWdlID0gcXRJbWFnZS5jb252ZXJ0VG9Gb3JtYXQocHJlbXVsdGlwbHlBbHBoYSA/IFFJ
bWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkIDogUUltYWdlOjpGb3JtYXRfQVJHQjMy
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC01MzAsNyArNTM2LDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKIAogICAgIG91dHB1dFZl
Y3Rvci5yZXNpemUocGFja2VkU2l6ZSk7CiAKLSAgICByZXR1cm4gcGFja1BpeGVscyhuYXRpdmVJ
bWFnZS5jb25zdEJpdHMoKSwgU291cmNlRm9ybWF0QkdSQTgsIGltYWdlLT53aWR0aCgpLCBpbWFn
ZS0+aGVpZ2h0KCksIDAsIGZvcm1hdCwgdHlwZSwgYWxwaGFPcCwgb3V0cHV0VmVjdG9yLmRhdGEo
KSk7CisgICAgcmV0dXJuIHBhY2tQaXhlbHMocXRJbWFnZS5jb25zdEJpdHMoKSwgU291cmNlRm9y
bWF0QkdSQTgsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCksIDAsIGZvcm1hdCwgdHlw
ZSwgYWxwaGFPcCwgb3V0cHV0VmVjdG9yLmRhdGEoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250ZXh0TG9zdENhbGxi
YWNrPikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dFF0LmNwcAppbmRleCAyMmQ1YjAyLi5hNzNmOTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0UXQuY3BwCkBAIC0xMDIxLDcgKzEwMjEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xl
YXJQbGF0Zm9ybVNoYWRvdygpCiAgICAgbV9kYXRhLT5zaGFkb3ctPmNsZWFyKCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpwdXNoVHJhbnNwYXJlbmN5TGF5ZXJJbnRlcm5hbChjb25zdCBR
UmVjdCAmcmVjdCwgcXJlYWwgb3BhY2l0eSwgUUltYWdlJiBhbHBoYU1hc2spCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6cHVzaFRyYW5zcGFyZW5jeUxheWVySW50ZXJuYWwoY29uc3QgUVJlY3QgJnJl
Y3QsIHFyZWFsIG9wYWNpdHksIFFQaXhtYXAmIGFscGhhTWFzaykKIHsKICAgICBRUGFpbnRlciog
cCA9IG1fZGF0YS0+cCgpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiAgICAg
ICAgIGggPSBpbnQocUJvdW5kKHFyZWFsKDApLCBkZXZpY2VDbGlwLmhlaWdodCgpLCAocXJlYWwp
aCkgKyAyKTsKICAgICB9CiAKLSAgICBRSW1hZ2UgZW1wdHlBbHBoYU1hc2s7CisgICAgUVBpeG1h
cCBlbXB0eUFscGhhTWFzazsKICAgICBtX2RhdGEtPmxheWVycy5wdXNoKG5ldyBUcmFuc3BhcmVu
Y3lMYXllcihwLCBRUmVjdCh4LCB5LCB3LCBoKSwgb3BhY2l0eSwgZW1wdHlBbHBoYU1hc2spKTsK
ICAgICArK21fZGF0YS0+bGF5ZXJDb3VudDsKIH0KQEAgLTEwNzAsNyArMTA3MCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCkKICAgICBpZiAo
IWxheWVyLT5hbHBoYU1hc2suaXNOdWxsKCkpIHsKICAgICAgICAgbGF5ZXItPnBhaW50ZXIucmVz
ZXRUcmFuc2Zvcm0oKTsKICAgICAgICAgbGF5ZXItPnBhaW50ZXIuc2V0Q29tcG9zaXRpb25Nb2Rl
KFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfRGVzdGluYXRpb25Jbik7Ci0gICAgICAgIGxheWVy
LT5wYWludGVyLmRyYXdJbWFnZShRUG9pbnQoKSwgbGF5ZXItPmFscGhhTWFzayk7CisgICAgICAg
IGxheWVyLT5wYWludGVyLmRyYXdQaXhtYXAoUVBvaW50KCksIGxheWVyLT5hbHBoYU1hc2spOwog
ICAgIH0gZWxzZQogICAgICAgICAtLW1fZGF0YS0+bGF5ZXJDb3VudDsgLy8gc2VlIHRoZSBjb21t
ZW50IGZvciBsYXllckNvdW50CiAgICAgbGF5ZXItPnBhaW50ZXIuZW5kKCk7CkBAIC0xMDc5LDcg
KzEwNzksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lM
YXllcigpCiAgICAgcC0+c2F2ZSgpOwogICAgIHAtPnJlc2V0VHJhbnNmb3JtKCk7CiAgICAgcC0+
c2V0T3BhY2l0eShsYXllci0+b3BhY2l0eSk7Ci0gICAgcC0+ZHJhd0ltYWdlKGxheWVyLT5vZmZz
ZXQsIGxheWVyLT5pbWFnZSk7CisgICAgcC0+ZHJhd1BpeG1hcChsYXllci0+b2Zmc2V0LCBsYXll
ci0+cGl4bWFwKTsKICAgICBwLT5yZXN0b3JlKCk7CiAKICAgICBkZWxldGUgbGF5ZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlckRh
dGFRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJE
YXRhUXQuaAppbmRleCA5NDA2NWQzLi45Y2Y3ODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlckRhdGFRdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyRGF0YVF0LmgKQEAgLTI1LDgg
KzI1LDggQEAKIAogI2luY2x1ZGUgIkltYWdlLmgiCiAKLSNpbmNsdWRlIDxRSW1hZ2U+CiAjaW5j
bHVkZSA8UVBhaW50ZXI+CisjaW5jbHVkZSA8UVBpeG1hcD4KIAogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zOSw3ICszOSw5IEBAIGNsYXNzIElt
YWdlQnVmZmVyRGF0YSB7CiBwdWJsaWM6CiAgICAgSW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNp
emUmKTsKIAotICAgIFFJbWFnZSBtX25hdGl2ZUltYWdlOworICAgIFFJbWFnZSB0b1FJbWFnZSgp
IGNvbnN0OworCisgICAgUVBpeG1hcCBtX3BpeG1hcDsKICAgICBPd25QdHI8UVBhaW50ZXI+IG1f
cGFpbnRlcjsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAppbmRleCAz
MmRkMzlhLi5iOWI5ZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVF0LmgiCiAjaW5jbHVkZSAi
U3RpbGxJbWFnZVF0LmgiCiAjaW5jbHVkZSAiVHJhbnNwYXJlbmN5TGF5ZXIuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00MywyMiArNDIsMjMgQEAKICNpbmNsdWRlIDxRSW1h
Z2U+CiAjaW5jbHVkZSA8UUltYWdlV3JpdGVyPgogI2luY2x1ZGUgPFFQYWludGVyPgorI2luY2x1
ZGUgPFFQaXhtYXA+CiAjaW5jbHVkZSA8bWF0aC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmIHNpemUpCi0g
ICAgOiBtX25hdGl2ZUltYWdlKHNpemUsIE5hdGl2ZUltYWdlUXQ6OmRlZmF1bHRGb3JtYXRGb3JB
bHBoYUVuYWJsZWRJbWFnZXMoKSkKKyAgICA6IG1fcGl4bWFwKHNpemUpCiB7Ci0gICAgaWYgKG1f
bmF0aXZlSW1hZ2UuaXNOdWxsKCkpCisgICAgaWYgKG1fcGl4bWFwLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX25hdGl2ZUltYWdlLmZpbGwoUUNvbG9yKFF0Ojp0cmFuc3BhcmVu
dCkpOworICAgIG1fcGl4bWFwLmZpbGwoUUNvbG9yKFF0Ojp0cmFuc3BhcmVudCkpOwogCiAgICAg
UVBhaW50ZXIqIHBhaW50ZXIgPSBuZXcgUVBhaW50ZXI7CiAgICAgbV9wYWludGVyID0gYWRvcHRQ
dHIocGFpbnRlcik7CiAKLSAgICBpZiAoIXBhaW50ZXItPmJlZ2luKCZtX25hdGl2ZUltYWdlKSkK
KyAgICBpZiAoIXBhaW50ZXItPmJlZ2luKCZtX3BpeG1hcCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIFNpbmNlIEltYWdlQnVmZmVyIGlzIHVzZWQgbWFpbmx5IGZvciBDYW52YXMsIGV4cGxp
Y2l0bHkgaW5pdGlhbGl6ZQpAQCAtNzYsNyArNzYsMjIgQEAgSW1hZ2VCdWZmZXJEYXRhOjpJbWFn
ZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBwYWludGVyLT5zZXRCcnVzaChi
cnVzaCk7CiAgICAgcGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3Np
dGlvbk1vZGVfU291cmNlT3Zlcik7CiAgICAgCi0gICAgbV9pbWFnZSA9IFN0aWxsSW1hZ2U6OmNy
ZWF0ZUZvclJlbmRlcmluZygmbV9uYXRpdmVJbWFnZSk7CisgICAgbV9pbWFnZSA9IFN0aWxsSW1h
Z2U6OmNyZWF0ZUZvclJlbmRlcmluZygmbV9waXhtYXApOworfQorCitRSW1hZ2UgSW1hZ2VCdWZm
ZXJEYXRhOjp0b1FJbWFnZSgpIGNvbnN0Cit7CisgICAgUVBhaW50RW5naW5lKiBwYWludEVuZ2lu
ZSA9IG1fcGl4bWFwLnBhaW50RW5naW5lKCk7CisgICAgaWYgKCFwYWludEVuZ2luZSB8fCBwYWlu
dEVuZ2luZS0+dHlwZSgpICE9IFFQYWludEVuZ2luZTo6UmFzdGVyKQorICAgICAgICByZXR1cm4g
bV9waXhtYXAudG9JbWFnZSgpOworCisgICAgLy8gUVJhc3RlclBpeG1hcERhdGE6OnRvSW1hZ2Uo
KSB3aWxsIGRlZXAtY29weSB0aGUgYmFja2luZyBRSW1hZ2UgaWYgdGhlcmUncyBhbiBhY3RpdmUg
UVBhaW50ZXIgb24gaXQuCisgICAgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHdlIGRvbid0
IHdhbnQgdGhhdCBoZXJlLCBzbyB3ZSB0ZW1wb3JhcmlseSByZWRpcmVjdCB0aGUgcGFpbnQgZW5n
aW5lLgorICAgIFFQYWludERldmljZSogY3VycmVudFBhaW50RGV2aWNlID0gcGFpbnRFbmdpbmUt
PnBhaW50RGV2aWNlKCk7CisgICAgcGFpbnRFbmdpbmUtPnNldFBhaW50RGV2aWNlKDApOworICAg
IFFJbWFnZSBpbWFnZSA9IG1fcGl4bWFwLnRvSW1hZ2UoKTsKKyAgICBwYWludEVuZ2luZS0+c2V0
UGFpbnREZXZpY2UoY3VycmVudFBhaW50RGV2aWNlKTsKKyAgICByZXR1cm4gaW1hZ2U7CiB9CiAK
IEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCAvKiBy
ZXNvbHV0aW9uU2NhbGUgKi8sIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIERlZmVycmFsTW9k
ZSwgYm9vbCYgc3VjY2VzcykKQEAgLTEwNSw5ICsxMjAsOSBAQCBHcmFwaGljc0NvbnRleHQqIElt
YWdlQnVmZmVyOjpjb250ZXh0KCkgY29uc3QKIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVy
Ojpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAg
aWYgKGNvcHlCZWhhdmlvciA9PSBDb3B5QmFja2luZ1N0b3JlKQotICAgICAgICByZXR1cm4gU3Rp
bGxJbWFnZTo6Y3JlYXRlKG1fZGF0YS5tX25hdGl2ZUltYWdlKTsKKyAgICAgICAgcmV0dXJuIFN0
aWxsSW1hZ2U6OmNyZWF0ZShtX2RhdGEubV9waXhtYXApOwogCi0gICAgcmV0dXJuIFN0aWxsSW1h
Z2U6OmNyZWF0ZUZvclJlbmRlcmluZygmbV9kYXRhLm1fbmF0aXZlSW1hZ2UpOworICAgIHJldHVy
biBTdGlsbEltYWdlOjpjcmVhdGVGb3JSZW5kZXJpbmcoJm1fZGF0YS5tX3BpeG1hcCk7CiB9CiAK
IHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwKQEAgLTEzNCwxMiArMTQ5LDEyIEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjCiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGZsb2F0UmVjdCkgY29uc3QKIHsKLSAgICBRSW1hZ2UqIG5h
dGl2ZUltYWdlID0gbV9kYXRhLm1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CisgICAgUVBpeG1hcCogbmF0aXZlSW1hZ2UgPSBtX2RhdGEubV9pbWFnZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm47
CiAKICAgICBJbnRSZWN0IHJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGZsb2F0UmVjdCk7Ci0gICAg
UUltYWdlIGFscGhhTWFzayA9ICpuYXRpdmVJbWFnZTsKKyAgICBRUGl4bWFwIGFscGhhTWFzayA9
ICpuYXRpdmVJbWFnZTsKIAogICAgIGNvbnRleHQtPnB1c2hUcmFuc3BhcmVuY3lMYXllckludGVy
bmFsKHJlY3QsIDEuMCwgYWxwaGFNYXNrKTsKIH0KQEAgLTE1MCw3ICsxNjUsNyBAQCB2b2lkIElt
YWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4m
IGxvb2tVcFRhYmxlKQogICAgIGlmIChpc1BhaW50aW5nKQogICAgICAgICBtX2RhdGEubV9wYWlu
dGVyLT5lbmQoKTsKIAotICAgIFFJbWFnZSBpbWFnZSA9IG1fZGF0YS5tX25hdGl2ZUltYWdlLmNv
bnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAgIFFJbWFnZSBpbWFnZSA9
IG1fZGF0YS50b1FJbWFnZSgpLmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdCMzIp
OwogICAgIEFTU0VSVCghaW1hZ2UuaXNOdWxsKCkpOwogCiAgICAgdWNoYXIqIGJpdHMgPSBpbWFn
ZS5iaXRzKCk7CkBAIC0xNjcsMTAgKzE4MiwxMCBAQCB2b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9y
bVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKQogICAg
ICAgICB9CiAgICAgfQogCi0gICAgbV9kYXRhLm1fbmF0aXZlSW1hZ2UgPSBpbWFnZTsKKyAgICBt
X2RhdGEubV9waXhtYXAgPSBRUGl4bWFwOjpmcm9tSW1hZ2UoaW1hZ2UpOwogCiAgICAgaWYgKGlz
UGFpbnRpbmcpCi0gICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPmJlZ2luKCZtX2RhdGEubV9uYXRp
dmVJbWFnZSk7CisgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPmJlZ2luKCZtX2RhdGEubV9waXht
YXApOwogfQogCiB0ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KQEAgLTIwOSw3ICsyMjQs
NyBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZQogICAgIGludCBudW1Sb3dzID0gZW5keSAtIG9y
aWdpbnk7CiAKICAgICAvLyBOT1RFOiBGb3IgdW5tdWx0aXBsaWVkIGRhdGEsIHdlIHVuZG8gdGhl
IHByZW11bHRpcGxpY2F0aW9uIGJlbG93LgotICAgIFFJbWFnZSBpbWFnZSA9IGltYWdlRGF0YS5t
X25hdGl2ZUltYWdlLmNvbnZlcnRUb0Zvcm1hdChOYXRpdmVJbWFnZVF0OjpkZWZhdWx0Rm9ybWF0
Rm9yQWxwaGFFbmFibGVkSW1hZ2VzKCkpOworICAgIFFJbWFnZSBpbWFnZSA9IGltYWdlRGF0YS50
b1FJbWFnZSgpLmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVsdGlw
bGllZCk7CiAKICAgICBBU1NFUlQoIWltYWdlLmlzTnVsbCgpKTsKIApAQCAtMzQzLDcgKzM1OCw3
IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBV
aW50OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAKICAgICBib29sIGlzUGFpbnRpbmcgPSBtX2Rh
dGEubV9wYWludGVyLT5pc0FjdGl2ZSgpOwogICAgIGlmICghaXNQYWludGluZykKLSAgICAgICAg
bV9kYXRhLm1fcGFpbnRlci0+YmVnaW4oJm1fZGF0YS5tX25hdGl2ZUltYWdlKTsKKyAgICAgICAg
bV9kYXRhLm1fcGFpbnRlci0+YmVnaW4oJm1fZGF0YS5tX3BpeG1hcCk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnNhdmUoKTsKIApAQCAtMzYyLDcgKzM3Nyw3IEBAIHZv
aWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENs
YW1wZWRBcnJheSogc291cmNlLCBjCiAgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnJlc3RvcmUo
KTsKIH0KIAotc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoY29uc3QgUUltYWdlJiBpbWFnZSwgY29u
c3QgU3RyaW5nJiBmb3JtYXQsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgUUJ5dGVBcnJheSYgZGF0
YSkKK3N0YXRpYyBib29sIGVuY29kZUltYWdlKGNvbnN0IFFQaXhtYXAmIHBpeG1hcCwgY29uc3Qg
U3RyaW5nJiBmb3JtYXQsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgUUJ5dGVBcnJheSYgZGF0YSkK
IHsKICAgICBpbnQgY29tcHJlc3Npb25RdWFsaXR5ID0gMTAwOwogICAgIGlmIChxdWFsaXR5ICYm
ICpxdWFsaXR5ID49IDAuMCAmJiAqcXVhbGl0eSA8PSAxLjApCkBAIC0zNzAsNyArMzg1LDcgQEAg
c3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoY29uc3QgUUltYWdlJiBpbWFnZSwgY29uc3QgU3RyaW5n
JiBmb3JtYXQsIGNvbnN0IGRvdWJsZSoKIAogICAgIFFCdWZmZXIgYnVmZmVyKCZkYXRhKTsKICAg
ICBidWZmZXIub3BlbihRQnVmZmVyOjpXcml0ZU9ubHkpOwotICAgIGJvb2wgc3VjY2VzcyA9IGlt
YWdlLnNhdmUoJmJ1ZmZlciwgZm9ybWF0LnV0ZjgoKS5kYXRhKCksIGNvbXByZXNzaW9uUXVhbGl0
eSk7CisgICAgYm9vbCBzdWNjZXNzID0gcGl4bWFwLnNhdmUoJmJ1ZmZlciwgZm9ybWF0LnV0Zjgo
KS5kYXRhKCksIGNvbXByZXNzaW9uUXVhbGl0eSk7CiAgICAgYnVmZmVyLmNsb3NlKCk7CiAKICAg
ICByZXR1cm4gc3VjY2VzczsKQEAgLTM4MiwxMCArMzk3LDEwIEBAIFN0cmluZyBJbWFnZUJ1ZmZl
cjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0
eSwgQ29vCiAKICAgICAvLyBRSW1hZ2VXcml0ZXIgZG9lcyBub3Qgc3VwcG9ydCBtaW1ldHlwZXMu
IEl0IGRvZXMgc3VwcG9ydCBRdCBpbWFnZSBmb3JtYXRzIChwbmcsCiAgICAgLy8gZ2lmLCBqcGVn
Li4uLCB4cG0pIHNvIHNraXAgdGhlIGltYWdlLyB0byBnZXQgdGhlIFF0IGltYWdlIGZvcm1hdCB1
c2VkIHRvIGVuY29kZQotICAgIC8vIHRoZSBtX25hdGl2ZUltYWdlIGltYWdlLgorICAgIC8vIHRo
ZSBtX3BpeG1hcCBpbWFnZS4KIAogICAgIFFCeXRlQXJyYXkgZGF0YTsKLSAgICBpZiAoIWVuY29k
ZUltYWdlKG1fZGF0YS5tX25hdGl2ZUltYWdlLCBtaW1lVHlwZS5zdWJzdHJpbmcoc2l6ZW9mICJp
bWFnZSIpLCBxdWFsaXR5LCBkYXRhKSkKKyAgICBpZiAoIWVuY29kZUltYWdlKG1fZGF0YS5tX3Bp
eG1hcCwgbWltZVR5cGUuc3Vic3RyaW5nKHNpemVvZiAiaW1hZ2UiKSwgcXVhbGl0eSwgZGF0YSkp
CiAgICAgICAgIHJldHVybiAiZGF0YTosIjsKIAogICAgIHJldHVybiAiZGF0YToiICsgbWltZVR5
cGUgKyAiO2Jhc2U2NCwiICsgZGF0YS50b0Jhc2U2NCgpLmRhdGEoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcAppbmRl
eCBmMDM5ZTQzLi5lMDM2MzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwCkBAIC0yNzIsNyArMjcyLDkgQEAgTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiAgICAgZWxz
ZQogICAgICAgICBmb3JtYXQgPSBRSW1hZ2U6OkZvcm1hdF9SR0IzMjsKIAotICAgIHJldHVybiBu
ZXcgUUltYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8dWNoYXIqPihtX2J5dGVzKSwgbV9zaXplLndpZHRo
KCksIG1fc2l6ZS5oZWlnaHQoKSwgc2l6ZW9mKFBpeGVsRGF0YSkgKiBtX3NpemUud2lkdGgoKSwg
Zm9ybWF0KTsKKyAgICBRSW1hZ2UgaW1nKHJlaW50ZXJwcmV0X2Nhc3Q8dWNoYXIqPihtX2J5dGVz
KSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgc2l6ZW9mKFBpeGVsRGF0YSkgKiBt
X3NpemUud2lkdGgoKSwgZm9ybWF0KTsKKworICAgIHJldHVybiBuZXcgUVBpeG1hcChRUGl4bWFw
Ojpmcm9tSW1hZ2UoaW1nKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKaW5kZXggMTBmZTFmZS4uZTA5OGUwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKQEAgLTM3LDcg
KzM3LDYgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VR
dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2hhZG93Qmx1ci5o
IgogI2luY2x1ZGUgIlN0aWxsSW1hZ2VRdC5oIgpAQCAtNTYsNyArNTUsNyBAQAogUV9HVUlfRVhQ
T1JUIFFQaXhtYXAgcXRfcGl4bWFwRnJvbVdpbkhCSVRNQVAoSEJJVE1BUCwgaW50IGhiaXRtYXBG
b3JtYXQgPSAwKTsKICNlbmRpZgogCi10eXBlZGVmIFFIYXNoPFFCeXRlQXJyYXksIFFJbWFnZT4g
V2ViR3JhcGhpY0hhc2g7Cit0eXBlZGVmIFFIYXNoPFFCeXRlQXJyYXksIFFQaXhtYXA+IFdlYkdy
YXBoaWNIYXNoOwogUV9HTE9CQUxfU1RBVElDKFdlYkdyYXBoaWNIYXNoLCBfZ3JhcGhpY3MpCiAK
IHN0YXRpYyB2b2lkIGVhcmx5Q2xlYXJHcmFwaGljcygpCkBAIC03MCwyOCArNjksMjggQEAgc3Rh
dGljIFdlYkdyYXBoaWNIYXNoKiBncmFwaGljcygpCiAKICAgICBpZiAoaGFzaC0+aXNFbXB0eSgp
KSB7CiAKLSAgICAgICAgLy8gcHJldmVudCB+UUltYWdlIHJ1bm5pbmcgYWZ0ZXIgflFBcHBsaWNh
dGlvbiAobGVha3MgbmF0aXZlIGltYWdlcykKKyAgICAgICAgLy8gcHJldmVudCB+UVBpeG1hcCBy
dW5uaW5nIGFmdGVyIH5RQXBwbGljYXRpb24gKGxlYWtzIG5hdGl2ZSBwaXhtYXBzKQogICAgICAg
ICBxQWRkUG9zdFJvdXRpbmUoZWFybHlDbGVhckdyYXBoaWNzKTsKIAogICAgICAgICAvLyBRV2Vi
U2V0dGluZ3M6Ok1pc3NpbmdJbWFnZUdyYXBoaWMKLSAgICAgICAgaGFzaC0+aW5zZXJ0KCJtaXNz
aW5nSW1hZ2UiLCBRSW1hZ2UoUUxhdGluMVN0cmluZygiOndlYmtpdC9yZXNvdXJjZXMvbWlzc2lu
Z0ltYWdlLnBuZyIpKSk7CisgICAgICAgIGhhc2gtPmluc2VydCgibWlzc2luZ0ltYWdlIiwgUVBp
eG1hcChRTGF0aW4xU3RyaW5nKCI6d2Via2l0L3Jlc291cmNlcy9taXNzaW5nSW1hZ2UucG5nIikp
KTsKICAgICAgICAgLy8gUVdlYlNldHRpbmdzOjpNaXNzaW5nUGx1Z2luR3JhcGhpYwotICAgICAg
ICBoYXNoLT5pbnNlcnQoIm51bGxQbHVnaW4iLCBRSW1hZ2UoUUxhdGluMVN0cmluZygiOndlYmtp
dC9yZXNvdXJjZXMvbnVsbFBsdWdpbi5wbmciKSkpOworICAgICAgICBoYXNoLT5pbnNlcnQoIm51
bGxQbHVnaW4iLCBRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2VzL251bGxQ
bHVnaW4ucG5nIikpKTsKICAgICAgICAgLy8gUVdlYlNldHRpbmdzOjpEZWZhdWx0RnJhbWVJY29u
R3JhcGhpYwotICAgICAgICBoYXNoLT5pbnNlcnQoInVybEljb24iLCBRSW1hZ2UoUUxhdGluMVN0
cmluZygiOndlYmtpdC9yZXNvdXJjZXMvdXJsSWNvbi5wbmciKSkpOworICAgICAgICBoYXNoLT5p
bnNlcnQoInVybEljb24iLCBRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2Vz
L3VybEljb24ucG5nIikpKTsKICAgICAgICAgLy8gUVdlYlNldHRpbmdzOjpUZXh0QXJlYVNpemVH
cmlwQ29ybmVyR3JhcGhpYwotICAgICAgICBoYXNoLT5pbnNlcnQoInRleHRBcmVhUmVzaXplQ29y
bmVyIiwgUUltYWdlKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2VzL3RleHRBcmVhUmVz
aXplQ29ybmVyLnBuZyIpKSk7CisgICAgICAgIGhhc2gtPmluc2VydCgidGV4dEFyZWFSZXNpemVD
b3JuZXIiLCBRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2VzL3RleHRBcmVh
UmVzaXplQ29ybmVyLnBuZyIpKSk7CiAgICAgICAgIC8vIFFXZWJTZXR0aW5nczo6RGVsZXRlQnV0
dG9uR3JhcGhpYwotICAgICAgICBoYXNoLT5pbnNlcnQoImRlbGV0ZUJ1dHRvbiIsIFFJbWFnZShR
TGF0aW4xU3RyaW5nKCI6d2Via2l0L3Jlc291cmNlcy9kZWxldGVCdXR0b24ucG5nIikpKTsKKyAg
ICAgICAgaGFzaC0+aW5zZXJ0KCJkZWxldGVCdXR0b24iLCBRUGl4bWFwKFFMYXRpbjFTdHJpbmco
Ijp3ZWJraXQvcmVzb3VyY2VzL2RlbGV0ZUJ1dHRvbi5wbmciKSkpOwogICAgICAgICAvLyBRV2Vi
U2V0dGluZ3M6OklucHV0U3BlZWNoQnV0dG9uR3JhcGhpYwotICAgICAgICBoYXNoLT5pbnNlcnQo
ImlucHV0U3BlZWNoIiwgUUltYWdlKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2VzL2lu
cHV0U3BlZWNoLnBuZyIpKSk7CisgICAgICAgIGhhc2gtPmluc2VydCgiaW5wdXRTcGVlY2giLCBR
UGl4bWFwKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2VzL2lucHV0U3BlZWNoLnBuZyIp
KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGhhc2g7CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24gbG9h
ZHMgcmVzb3VyY2VzIGludG8gV2ViS2l0Ci1zdGF0aWMgUUltYWdlIGxvYWRSZXNvdXJjZUltYWdl
KGNvbnN0IGNoYXIgKm5hbWUpCitzdGF0aWMgUVBpeG1hcCBsb2FkUmVzb3VyY2VQaXhtYXAoY29u
c3QgY2hhciAqbmFtZSkKIHsKICAgICByZXR1cm4gZ3JhcGhpY3MoKS0+dmFsdWUobmFtZSk7CiB9
CkBAIC0xMTgsMjMgKzExNywyMyBAQCBib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1l
dGFkYXRhKQogCiBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
Y29uc3QgY2hhciogbmFtZSkKIHsKLSAgICByZXR1cm4gU3RpbGxJbWFnZTo6Y3JlYXRlKGxvYWRS
ZXNvdXJjZUltYWdlKG5hbWUpKTsKKyAgICByZXR1cm4gU3RpbGxJbWFnZTo6Y3JlYXRlKGxvYWRS
ZXNvdXJjZVBpeG1hcChuYW1lKSk7CiB9CiAKLXZvaWQgSW1hZ2U6OnNldFBsYXRmb3JtUmVzb3Vy
Y2UoY29uc3QgY2hhciogbmFtZSwgY29uc3QgUUltYWdlJiBpbWFnZSkKK3ZvaWQgSW1hZ2U6OnNl
dFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSwgY29uc3QgUVBpeG1hcCYgcGl4bWFw
KQogewogICAgIFdlYkdyYXBoaWNIYXNoKiBoID0gZ3JhcGhpY3MoKTsKLSAgICBpZiAoaW1hZ2Uu
aXNOdWxsKCkpCisgICAgaWYgKHBpeG1hcC5pc051bGwoKSkKICAgICAgICAgaC0+cmVtb3ZlKG5h
bWUpOwogICAgIGVsc2UKLSAgICAgICAgaC0+aW5zZXJ0KG5hbWUsIGltYWdlKTsKKyAgICAgICAg
aC0+aW5zZXJ0KG5hbWUsIHBpeG1hcCk7CiB9CiAKIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewotICAgIFFJbWFnZSogZnJhbWVJbWFnZSA9
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZUltYWdlKSAvLyBJ
ZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KKyAgICBRUGl4bWFw
KiBmcmFtZVBpeG1hcCA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFm
cmFtZVBpeG1hcCkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5
ZXQuCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FN
UExJTkcpCkBAIC0xNDksMzggKzE0OCwzNCBAQCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAg
aWYgKCFkci53aWR0aCgpIHx8ICFkci5oZWlnaHQoKSB8fCAhdHIud2lkdGgoKSB8fCAhdHIuaGVp
Z2h0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFFJbWFnZSBpbWFnZSA9ICpmcmFtZUltYWdl
OwotICAgIGlmICh0ci54KCkgfHwgdHIueSgpIHx8IHRyLndpZHRoKCkgIT0gaW1hZ2Uud2lkdGgo
KSB8fCB0ci5oZWlnaHQoKSAhPSBpbWFnZS5oZWlnaHQoKSkKLSAgICAgICAgaW1hZ2UgPSBpbWFn
ZS5jb3B5KHRyKTsKKyAgICBRUGl4bWFwIHBpeG1hcCA9ICpmcmFtZVBpeG1hcDsKKyAgICBpZiAo
dHIueCgpIHx8IHRyLnkoKSB8fCB0ci53aWR0aCgpICE9IHBpeG1hcC53aWR0aCgpIHx8IHRyLmhl
aWdodCgpICE9IHBpeG1hcC5oZWlnaHQoKSkKKyAgICAgICAgcGl4bWFwID0gcGl4bWFwLmNvcHko
dHIpOwogCiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0eHQtPmNv
bXBvc2l0ZU9wZXJhdGlvbigpOwogCi0gICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCFp
bWFnZS5oYXNBbHBoYUNoYW5uZWwoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29t
cG9zaXRlQ29weSA6IG9wKTsKKyAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIXBpeG1h
cC5oYXNBbHBoYSgpICYmIG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBDb21wb3NpdGVDb3B5
IDogb3ApOwogCiAgICAgUVBhaW50ZXIqIHAgPSBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKICAg
ICBRVHJhbnNmb3JtIHRyYW5zZm9ybShwYXR0ZXJuVHJhbnNmb3JtKTsKIAotICAgIC8vIElmIHRo
aXMgd291bGQgZHJhdyBtb3JlIHRoYW4gb25lIHNjYWxlZCB0aWxlLCB3ZSBzY2FsZSB0aGUgaW1h
Z2UgZmlyc3QgYW5kIHRoZW4gdXNlIHRoZSByZXN1bHQgdG8gZHJhdy4KKyAgICAvLyBJZiB0aGlz
IHdvdWxkIGRyYXcgbW9yZSB0aGFuIG9uZSBzY2FsZWQgdGlsZSwgd2Ugc2NhbGUgdGhlIHBpeG1h
cCBmaXJzdCBhbmQgdGhlbiB1c2UgdGhlIHJlc3VsdCB0byBkcmF3LgogICAgIGlmICh0cmFuc2Zv
cm0udHlwZSgpID09IFFUcmFuc2Zvcm06OlR4U2NhbGUpIHsKICAgICAgICAgUVJlY3RGIHRpbGVS
ZWN0SW5UYXJnZXRDb29yZHMgPSAodHJhbnNmb3JtICogUVRyYW5zZm9ybSgpLnRyYW5zbGF0ZShw
aGFzZS54KCksIHBoYXNlLnkoKSkpLm1hcFJlY3QodHIpOwogCiAgICAgICAgIGJvb2wgdGlsZVdp
bGxCZVBhaW50ZWRPbmx5T25jZSA9IHRpbGVSZWN0SW5UYXJnZXRDb29yZHMuY29udGFpbnMoZHIp
OwogICAgICAgICBpZiAoIXRpbGVXaWxsQmVQYWludGVkT25seU9uY2UpIHsKLSAgICAgICAgICAg
IFFTaXplRiBzY2FsZWRTaXplKGZsb2F0KGltYWdlLndpZHRoKCkpICogdHJhbnNmb3JtLm0xMSgp
LCBmbG9hdChpbWFnZS5oZWlnaHQoKSkgKiB0cmFuc2Zvcm0ubTIyKCkpOwotICAgICAgICAgICAg
UUltYWdlIHNjYWxlZEltYWdlOwotICAgICAgICAgICAgaWYgKGltYWdlLmhhc0FscGhhQ2hhbm5l
bCgpKSB7Ci0gICAgICAgICAgICAgICAgc2NhbGVkSW1hZ2UgPSBRSW1hZ2Uoc2NhbGVkU2l6ZS50
b1NpemUoKSwgTmF0aXZlSW1hZ2VRdDo6ZGVmYXVsdEZvcm1hdEZvckFscGhhRW5hYmxlZEltYWdl
cygpKTsKLSAgICAgICAgICAgICAgICBzY2FsZWRJbWFnZS5maWxsKFF0Ojp0cmFuc3BhcmVudCk7
Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzY2FsZWRJbWFnZSA9IFFJbWFn
ZShzY2FsZWRTaXplLnRvU2l6ZSgpLCBOYXRpdmVJbWFnZVF0OjpkZWZhdWx0Rm9ybWF0Rm9yT3Bh
cXVlSW1hZ2VzKCkpOwotCisgICAgICAgICAgICBRU2l6ZUYgc2NhbGVkU2l6ZShmbG9hdChwaXht
YXAud2lkdGgoKSkgKiB0cmFuc2Zvcm0ubTExKCksIGZsb2F0KHBpeG1hcC5oZWlnaHQoKSkgKiB0
cmFuc2Zvcm0ubTIyKCkpOworICAgICAgICAgICAgUVBpeG1hcCBzY2FsZWRQaXhtYXAoc2NhbGVk
U2l6ZS50b1NpemUoKSk7CisgICAgICAgICAgICBpZiAocGl4bWFwLmhhc0FscGhhKCkpCisgICAg
ICAgICAgICAgICAgc2NhbGVkUGl4bWFwLmZpbGwoUXQ6OnRyYW5zcGFyZW50KTsKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBRUGFpbnRlciBwYWludGVyKCZzY2FsZWRJbWFnZSk7Cisg
ICAgICAgICAgICAgICAgUVBhaW50ZXIgcGFpbnRlcigmc2NhbGVkUGl4bWFwKTsKICAgICAgICAg
ICAgICAgICBwYWludGVyLnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25N
b2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgcGFpbnRlci5zZXRSZW5kZXJIaW50cyhwLT5y
ZW5kZXJIaW50cygpKTsKLSAgICAgICAgICAgICAgICBwYWludGVyLmRyYXdJbWFnZShRUmVjdCgw
LCAwLCBzY2FsZWRJbWFnZS53aWR0aCgpLCBzY2FsZWRJbWFnZS5oZWlnaHQoKSksIGltYWdlKTsK
KyAgICAgICAgICAgICAgICBwYWludGVyLmRyYXdQaXhtYXAoUVJlY3QoMCwgMCwgc2NhbGVkUGl4
bWFwLndpZHRoKCksIHNjYWxlZFBpeG1hcC5oZWlnaHQoKSksIHBpeG1hcCk7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpbWFnZSA9IHNjYWxlZEltYWdlOworICAgICAgICAgICAgcGl4bWFw
ID0gc2NhbGVkUGl4bWFwOwogICAgICAgICAgICAgdHJhbnNmb3JtID0gUVRyYW5zZm9ybTo6ZnJv
bVRyYW5zbGF0ZSh0cmFuc2Zvcm0uZHgoKSwgdHJhbnNmb3JtLmR5KCkpOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMTg5LDcgKzE4NCw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICB0cmFu
c2Zvcm0gKj0gUVRyYW5zZm9ybSgpLnRyYW5zbGF0ZShwaGFzZS54KCksIHBoYXNlLnkoKSk7CiAg
ICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSh0ci54KCksIHRyLnkoKSk7CiAKLSAgICBRQnJ1c2ggYihp
bWFnZSk7CisgICAgUUJydXNoIGIocGl4bWFwKTsKICAgICBiLnNldFRyYW5zZm9ybSh0cmFuc2Zv
cm0pOwogICAgIHAtPmZpbGxSZWN0KGRyLCBiKTsKIApAQCAtMTk5LDcgKzE5NCw3IEBAIHZvaWQg
SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMp
OwogfQogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUUltYWdlKiBpbWFnZSwgSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUVBpeG1hcCogcGl4bWFw
LCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwg
bV9jdXJyZW50RnJhbWUoMCkKICAgICAsIG1fZnJhbWVzKDApCkBAIC0yMTcsMTQgKzIxMiwxNCBA
QCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUUltYWdlKiBpbWFnZSwgSW1hZ2VPYnNlcnZlciog
b2JzZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1l
Q291bnQodHJ1ZSkKIHsKLSAgICBpbnQgd2lkdGggPSBpbWFnZS0+d2lkdGgoKTsKLSAgICBpbnQg
aGVpZ2h0ID0gaW1hZ2UtPmhlaWdodCgpOworICAgIGludCB3aWR0aCA9IHBpeG1hcC0+d2lkdGgo
KTsKKyAgICBpbnQgaGVpZ2h0ID0gcGl4bWFwLT5oZWlnaHQoKTsKICAgICBtX2RlY29kZWRTaXpl
ID0gd2lkdGggKiBoZWlnaHQgKiA0OwogICAgIG1fc2l6ZSA9IEludFNpemUod2lkdGgsIGhlaWdo
dCk7CiAKICAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBp
bWFnZTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0gaW1hZ2UtPmhhc0FscGhhQ2hhbm5l
bCgpOworICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBwaXhtYXA7CisgICAgbV9mcmFtZXNbMF0u
bV9oYXNBbHBoYSA9IHBpeG1hcC0+aGFzQWxwaGEoKTsKICAgICBtX2ZyYW1lc1swXS5tX2hhdmVN
ZXRhZGF0YSA9IHRydWU7CiAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiB9CkBAIC0yNDUsOCAr
MjQwLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0LAogICAgIGlmIChub3JtYWxpemVkU3JjLmlzRW1wdHkoKSB8fCBu
b3JtYWxpemVkRHN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUUltYWdlKiBp
bWFnZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0KKyAgICBRUGl4bWFwKiBpbWFn
ZSA9IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0yNjAsMTkgKzI1NCwxOSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCiAjZW5kaWYKIAog
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIHByZXZpb3VzT3BlcmF0b3IgPSBjdHh0LT5jb21wb3NpdGVP
cGVyYXRpb24oKTsKLSAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIWltYWdlLT5oYXNB
bHBoYUNoYW5uZWwoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29w
eSA6IG9wKTsKKyAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIWltYWdlLT5oYXNBbHBo
YSgpICYmIG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBDb21wb3NpdGVDb3B5IDogb3ApOwog
CiAgICAgaWYgKGN0eHQtPmhhc1NoYWRvdygpKSB7CiAgICAgICAgIFNoYWRvd0JsdXIqIHNoYWRv
dyA9IGN0eHQtPnNoYWRvd0JsdXIoKTsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dD
b250ZXh0ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGN0eHQsIG5vcm1hbGl6ZWREc3QpOwog
ICAgICAgICBpZiAoc2hhZG93Q29udGV4dCkgewogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRv
d1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICAgICAgICAg
IHNoYWRvd1BhaW50ZXItPmRyYXdJbWFnZShub3JtYWxpemVkRHN0LCAqaW1hZ2UsIG5vcm1hbGl6
ZWRTcmMpOworICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZHJhd1BpeG1hcChub3JtYWxpemVk
RHN0LCAqaW1hZ2UsIG5vcm1hbGl6ZWRTcmMpOwogICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFk
b3dMYXllcihjdHh0KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGN0eHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5kcmF3SW1hZ2Uobm9ybWFsaXplZERzdCwgKmltYWdlLCBub3JtYWxpemVkU3JjKTsK
KyAgICBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1BpeG1hcChub3JtYWxpemVkRHN0LCAq
aW1hZ2UsIG5vcm1hbGl6ZWRTcmMpOwogCiAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9u
KHByZXZpb3VzT3BlcmF0b3IpOwogCkBAIC0yODgsMjQgKzI4MiwyNCBAQCB2b2lkIEJpdG1hcElt
YWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBRSW1hZ2UqIGZyYW1lSW1hZ2UgPSBmcmFtZUF0SW5kZXgoMCk7
Ci0gICAgaWYgKCFmcmFtZUltYWdlIHx8IGZyYW1lSW1hZ2UtPndpZHRoKCkgIT0gMSB8fCBmcmFt
ZUltYWdlLT5oZWlnaHQoKSAhPSAxKQorICAgIFFQaXhtYXAqIGZyYW1lUGl4bWFwID0gZnJhbWVB
dEluZGV4KDApOworICAgIGlmICghZnJhbWVQaXhtYXAgfHwgZnJhbWVQaXhtYXAtPndpZHRoKCkg
IT0gMSB8fCBmcmFtZVBpeG1hcC0+aGVpZ2h0KCkgIT0gMSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOwotICAgIG1fc29saWRDb2xvciA9IFFDb2xvcjo6ZnJv
bVJnYmEoZnJhbWVJbWFnZS0+cGl4ZWwoMCwgMCkpOworICAgIG1fc29saWRDb2xvciA9IFFDb2xv
cjo6ZnJvbVJnYmEoZnJhbWVQaXhtYXAtPnRvSW1hZ2UoKS5waXhlbCgwLCAwKSk7CiB9CiAKICNp
ZiBPUyhXSU5ET1dTKQogUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gQml0bWFwSW1hZ2U6OmNyZWF0
ZShIQklUTUFQIGhCaXRtYXApCiB7CiAjaWYgSEFWRShRVDUpCi0gICAgUUltYWdlKiBuYXRpdmVJ
bWFnZSA9IG5ldyBRSW1hZ2UocXRfcGl4bWFwRnJvbVdpbkhCSVRNQVAoaEJpdG1hcCkudG9JbWFn
ZSgpKTsKKyAgICBRUGl4bWFwKiBxUGl4bWFwID0gbmV3IFFQaXhtYXAocXRfcGl4bWFwRnJvbVdp
bkhCSVRNQVAoaEJpdG1hcCkpOwogI2Vsc2UKLSAgICBRSW1hZ2UqIG5hdGl2ZUltYWdlID0gbmV3
IFFJbWFnZShRUGl4bWFwOjpmcm9tV2luSEJJVE1BUChoQml0bWFwKS50b0ltYWdlKCkpOworICAg
IFFQaXhtYXAqIHFQaXhtYXAgPSBuZXcgUVBpeG1hcChRUGl4bWFwOjpmcm9tV2luSEJJVE1BUCho
Qml0bWFwKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKG5hdGl2
ZUltYWdlKTsKKyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShxUGl4bWFwKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9O
YXRpdmVJbWFnZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9OYXRp
dmVJbWFnZVF0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZDFkMmMuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTmF0aXZlSW1hZ2VR
dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBab2x0YW4gSG9ydmF0aCAoem9sdGFuQHdlYmtpdC5vcmcpIDIwMTIgVW5pdmVyc2l0eSBv
ZiBTemVnZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBV
TklWRVJTSVRZIE9GIFNaRUdFRCBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFVO
SVZFUlNJVFkgT0YgU1pFR0VEIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBOYXRpdmVJbWFnZVF0X2gKLSNkZWZpbmUgTmF0aXZl
SW1hZ2VRdF9oCi0KLSNpbmNsdWRlIDxRSW1hZ2U+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgTmF0aXZlSW1hZ2VRdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFFJbWFnZTo6Rm9ybWF0
IGRlZmF1bHRGb3JtYXRGb3JBbHBoYUVuYWJsZWRJbWFnZXMoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkOwotICAgIH0KLQotICAgIHN0
YXRpYyBRSW1hZ2U6OkZvcm1hdCBkZWZhdWx0Rm9ybWF0Rm9yT3BhcXVlSW1hZ2VzKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBRSW1hZ2U6OkZvcm1hdF9SR0IzMjsKLSAgICB9Ci19OwotCi19Ci0K
LSNlbmRpZiAvLyBOYXRpdmVJbWFnZVF0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L1BhdGhRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9QYXRoUXQuY3BwCmluZGV4IDJlYWFmZjhmLi4zYjBjYTFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdGhRdC5jcHAKQEAgLTM1LDcgKzM1
LDYgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUXQuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlN0cm9rZVN0eWxlQXBwbGll
ci5oIgogI2luY2x1ZGUgPFFQYWludGVyUGF0aD4KQEAgLTExOSw3ICsxMTgsNyBAQCBib29sIFBh
dGg6OmNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBXaW5kUnVsZSBydWxlKSBjb25z
dAogCiBzdGF0aWMgR3JhcGhpY3NDb250ZXh0KiBzY3JhdGNoQ29udGV4dCgpCiB7Ci0gICAgc3Rh
dGljIFFJbWFnZSBpbWFnZSgxLCAxLCBOYXRpdmVJbWFnZVF0OjpkZWZhdWx0Rm9ybWF0Rm9yQWxw
aGFFbmFibGVkSW1hZ2VzKCkpOworICAgIHN0YXRpYyBRSW1hZ2UgaW1hZ2UoMSwgMSwgUUltYWdl
OjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQpOwogICAgIHN0YXRpYyBRUGFpbnRlciBwYWlu
dGVyKCZpbWFnZSk7CiAgICAgc3RhdGljIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IG5ldyBH
cmFwaGljc0NvbnRleHQoJnBhaW50ZXIpOwogICAgIHJldHVybiBjb250ZXh0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0dGVyblF0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdHRlcm5RdC5jcHAKaW5kZXggNWM5
NDEyMi4uN2FhZTYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvUGF0dGVyblF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9QYXR0ZXJuUXQuY3BwCkBAIC0zMywxMiArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBRQnJ1c2ggUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKCkgY29uc3QKIHsKLSAg
ICBRSW1hZ2UqIGltYWdlID0gdGlsZUltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7Ci0gICAgaWYgKCFpbWFnZSkKKyAgICBRUGl4bWFwKiBwaXhtYXAgPSB0aWxlSW1hZ2UoKS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIXBpeG1hcCkKICAgICAgICAg
cmV0dXJuIFFCcnVzaCgpOwogCiAgICAgLy8gUXQgbWVyZ2VzIHBhdHRlciBzcGFjZSBhbmQgdXNl
ciBzcGFjZSBpdHNlbGYKLSAgICBRQnJ1c2ggYnJ1c2goKmltYWdlKTsKKyAgICBRQnJ1c2ggYnJ1
c2goKnBpeG1hcCk7CiAgICAgYnJ1c2guc2V0VHJhbnNmb3JtKG1fcGF0dGVyblNwYWNlVHJhbnNm
b3JtYXRpb24pOwogCiAgICAgcmV0dXJuIGJydXNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKaW5kZXggMDQxMjUyMC4uODA2
NjZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3Rp
bGxJbWFnZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9T
dGlsbEltYWdlUXQuY3BwCkBAIC0zNiw0MSArMzYsNDEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1TdGlsbEltYWdlOjpTdGlsbEltYWdlKGNvbnN0IFFJbWFnZSYgaW1hZ2UpCi0gICAgOiBt
X2ltYWdlKG5ldyBRSW1hZ2UoaW1hZ2UpKQotICAgICwgbV9vd25zSW1hZ2UodHJ1ZSkKK1N0aWxs
SW1hZ2U6OlN0aWxsSW1hZ2UoY29uc3QgUVBpeG1hcCYgcGl4bWFwKQorICAgIDogbV9waXhtYXAo
bmV3IFFQaXhtYXAocGl4bWFwKSkKKyAgICAsIG1fb3duc1BpeG1hcCh0cnVlKQoge30KIAotU3Rp
bGxJbWFnZTo6U3RpbGxJbWFnZShjb25zdCBRSW1hZ2UqIGltYWdlKQotICAgIDogbV9pbWFnZShp
bWFnZSkKLSAgICAsIG1fb3duc0ltYWdlKGZhbHNlKQorU3RpbGxJbWFnZTo6U3RpbGxJbWFnZShj
b25zdCBRUGl4bWFwKiBwaXhtYXApCisgICAgOiBtX3BpeG1hcChwaXhtYXApCisgICAgLCBtX293
bnNQaXhtYXAoZmFsc2UpCiB7fQogCiBTdGlsbEltYWdlOjp+U3RpbGxJbWFnZSgpCiB7Ci0gICAg
aWYgKG1fb3duc0ltYWdlKQotICAgICAgICBkZWxldGUgbV9pbWFnZTsKKyAgICBpZiAobV9vd25z
UGl4bWFwKQorICAgICAgICBkZWxldGUgbV9waXhtYXA7CiB9CiAKIGJvb2wgU3RpbGxJbWFnZTo6
Y3VycmVudEZyYW1lSGFzQWxwaGEoKQogewotICAgIHJldHVybiBtX2ltYWdlLT5oYXNBbHBoYUNo
YW5uZWwoKTsKKyAgICByZXR1cm4gbV9waXhtYXAtPmhhc0FscGhhKCk7CiB9CiAKIEludFNpemUg
U3RpbGxJbWFnZTo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEludFNpemUobV9pbWFnZS0+
d2lkdGgoKSwgbV9pbWFnZS0+aGVpZ2h0KCkpOworICAgIHJldHVybiBJbnRTaXplKG1fcGl4bWFw
LT53aWR0aCgpLCBtX3BpeG1hcC0+aGVpZ2h0KCkpOwogfQogCiBOYXRpdmVJbWFnZVB0ciBTdGls
bEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7Ci0gICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8TmF0aXZlSW1hZ2VQdHI+KG1faW1hZ2UpOworICAgIHJldHVybiBjb25zdF9jYXN0PE5h
dGl2ZUltYWdlUHRyPihtX3BpeG1hcCk7CiB9CiAKIHZvaWQgU3RpbGxJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAogICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCkKIHsKLSAgICBpZiAobV9pbWFnZS0+aXNOdWxsKCkpCisgICAgaWYgKG1fcGl4bWFwLT5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IG5vcm1hbGl6ZWRTcmMg
PSBzcmMubm9ybWFsaXplZCgpOwpAQCAtODQsMTIgKzg0LDEyIEBAIHZvaWQgU3RpbGxJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAogICAgICAg
ICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5
ZXIoY3R4dCwgbm9ybWFsaXplZERzdCk7CiAgICAgICAgIGlmIChzaGFkb3dDb250ZXh0KSB7CiAg
ICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvd0NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpOwotICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZHJhd0ltYWdlKG5vcm1h
bGl6ZWREc3QsICptX2ltYWdlLCBub3JtYWxpemVkU3JjKTsKKyAgICAgICAgICAgIHNoYWRvd1Bh
aW50ZXItPmRyYXdQaXhtYXAobm9ybWFsaXplZERzdCwgKm1fcGl4bWFwLCBub3JtYWxpemVkU3Jj
KTsKICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY3R4dCk7CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd0ltYWdlKG5vcm1hbGl6
ZWREc3QsICptX2ltYWdlLCBub3JtYWxpemVkU3JjKTsKKyAgICBjdHh0LT5wbGF0Zm9ybUNvbnRl
eHQoKS0+ZHJhd1BpeG1hcChub3JtYWxpemVkRHN0LCAqbV9waXhtYXAsIG5vcm1hbGl6ZWRTcmMp
OwogICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJ
bWFnZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdl
UXQuaAppbmRleCA4YzllYzBkLi4yNmRmNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaApAQCAtMzQsMTQgKzM0LDE0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFN0aWxsSW1hZ2UgOiBwdWJsaWMgSW1hZ2Ug
ewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RpbGxJbWFnZT4gY3Jl
YXRlKGNvbnN0IFFJbWFnZSYgaW1hZ2UpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0aWxs
SW1hZ2U+IGNyZWF0ZShjb25zdCBRUGl4bWFwJiBwaXhtYXApCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RpbGxJbWFnZShpbWFnZSkpOworICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTdGlsbEltYWdlKHBpeG1hcCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RpbGxJbWFnZT4gY3JlYXRlRm9yUmVuZGVyaW5nKGNv
bnN0IFFJbWFnZSogaW1hZ2UpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0aWxsSW1hZ2U+
IGNyZWF0ZUZvclJlbmRlcmluZyhjb25zdCBRUGl4bWFwKiBwaXhtYXApCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RpbGxJbWFnZShpbWFnZSkpOworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGlsbEltYWdlKHBpeG1hcCkpOwogICAgICAgICB9
CiAKICAgICAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhhc0FscGhhKCk7CkBAIC01Niwx
MiArNTYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZHJh
dyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFN0aWxsSW1hZ2UoY29uc3QgUUltYWdlJik7
Ci0gICAgICAgIFN0aWxsSW1hZ2UoY29uc3QgUUltYWdlKik7CisgICAgICAgIFN0aWxsSW1hZ2Uo
Y29uc3QgUVBpeG1hcCYgcGl4bWFwKTsKKyAgICAgICAgU3RpbGxJbWFnZShjb25zdCBRUGl4bWFw
KiBwaXhtYXApOwogICAgICAgICB2aXJ0dWFsIH5TdGlsbEltYWdlKCk7CiAgICAgICAgIAotICAg
ICAgICBjb25zdCBRSW1hZ2UqIG1faW1hZ2U7Ci0gICAgICAgIGJvb2wgbV9vd25zSW1hZ2U7Cisg
ICAgICAgIGNvbnN0IFFQaXhtYXAqIG1fcGl4bWFwOworICAgICAgICBib29sIG1fb3duc1BpeG1h
cDsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9UcmFuc3BhcmVuY3lMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvVHJhbnNwYXJlbmN5TGF5ZXIuaAppbmRleCA1OTc0MDE3Li5mMTNkZWIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9UcmFuc3BhcmVuY3lM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1RyYW5zcGFy
ZW5jeUxheWVyLmgKQEAgLTM2LDI0ICszNiwyNCBAQAogI2lmbmRlZiBUcmFuc3BhcmVuY3lMYXll
cl9oCiAjZGVmaW5lIFRyYW5zcGFyZW5jeUxheWVyX2gKIAotI2luY2x1ZGUgPE5hdGl2ZUltYWdl
UXQuaD4KICNpbmNsdWRlIDxRUGFpbnRFbmdpbmU+CiAjaW5jbHVkZSA8UVBhaW50ZXI+CisjaW5j
bHVkZSA8UVBpeG1hcD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgVHJhbnNwYXJl
bmN5TGF5ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFRy
YW5zcGFyZW5jeUxheWVyKGNvbnN0IFFQYWludGVyKiBwLCBjb25zdCBRUmVjdCAmcmVjdCwgcXJl
YWwgb3BhY2l0eSwgUUltYWdlJiBhbHBoYU1hc2spCi0gICAgICAgIDogaW1hZ2UocmVjdC53aWR0
aCgpLCByZWN0LmhlaWdodCgpLCBOYXRpdmVJbWFnZVF0OjpkZWZhdWx0Rm9ybWF0Rm9yQWxwaGFF
bmFibGVkSW1hZ2VzKCkpCisgICAgVHJhbnNwYXJlbmN5TGF5ZXIoY29uc3QgUVBhaW50ZXIqIHAs
IGNvbnN0IFFSZWN0ICZyZWN0LCBxcmVhbCBvcGFjaXR5LCBRUGl4bWFwJiBhbHBoYU1hc2spCisg
ICAgICAgIDogcGl4bWFwKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkKICAgICAgICAgLCBv
cGFjaXR5KG9wYWNpdHkpCiAgICAgICAgICwgYWxwaGFNYXNrKGFscGhhTWFzaykKICAgICAgICAg
LCBzYXZlQ291bnRlcigxKSAvLyBzZWUgdGhlIGNvbW1lbnQgZm9yIHNhdmVDb3VudGVyCiAgICAg
ewogICAgICAgICBvZmZzZXQgPSByZWN0LnRvcExlZnQoKTsKLSAgICAgICAgaW1hZ2UuZmlsbChR
dDo6dHJhbnNwYXJlbnQpOwotICAgICAgICBwYWludGVyLmJlZ2luKCZpbWFnZSk7CisgICAgICAg
IHBpeG1hcC5maWxsKFF0Ojp0cmFuc3BhcmVudCk7CisgICAgICAgIHBhaW50ZXIuYmVnaW4oJnBp
eG1hcCk7CiAgICAgICAgIHBhaW50ZXIuc2V0UmVuZGVySGludHMocC0+cmVuZGVySGludHMoKSk7
CiAgICAgICAgIHBhaW50ZXIudHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICBwYWludGVyLnNl
dFBlbihwLT5wZW4oKSk7CkBAIC02NywxMiArNjcsMTIgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAKLSAgICBRSW1hZ2UgaW1hZ2U7CisgICAgUVBpeG1hcCBwaXhtYXA7CiAgICAgUVBvaW50IG9m
ZnNldDsKICAgICBRUGFpbnRlciBwYWludGVyOwogICAgIHFyZWFsIG9wYWNpdHk7CiAgICAgLy8g
Zm9yIGNsaXBUb0ltYWdlQnVmZmVyCi0gICAgUUltYWdlIGFscGhhTWFzazsKKyAgICBRUGl4bWFw
IGFscGhhTWFzazsKICAgICAvLyBzYXZlQ291bnRlciBpcyBvbmx5IHVzZWQgaW4gY29tYmluYXRp
b24gd2l0aCBhbHBoYU1hc2sKICAgICAvLyBvdGhlcndpc2UsIGl0cyB2YWx1ZSBpcyB1bnNwZWNp
ZmllZAogICAgIGludCBzYXZlQ291bnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZVF0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZVF0
LmNwcAppbmRleCBlMWIyNzU4Li43MzRhMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VRdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NTdXJm
YWNlUXQuY3BwCkBAIC01Miw3ICs1Miw4IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IEdyYXBoaWNzU3Vy
ZmFjZTo6Y3JlYXRlUmVhZE9ubHlJbWFnZShjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGludCBz
dHJpZGU7CiAgICAgUUltYWdlOjpGb3JtYXQgZm9ybWF0ID0gKGZsYWdzKCkgJiBTdXBwb3J0c0Fs
cGhhKSA/IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkIDogUUltYWdlOjpGb3Jt
YXRfUkdCMzI7CiAgICAgY2hhciogZGF0YSA9IHBsYXRmb3JtTG9jayhyZWN0LCAmc3RyaWRlLCBS
ZXRhaW5QaXhlbHMgfCBSZWFkT25seSk7Ci0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUo
bmV3IFFJbWFnZShyZWludGVycHJldF9jYXN0PHVjaGFyKj4oZGF0YSksIHJlY3Qud2lkdGgoKSwg
cmVjdC5oZWlnaHQoKSwgc3RyaWRlLCBmb3JtYXQsIGRpZFJlbGVhc2VJbWFnZSwgdGhpcykpOwor
ICAgIFFJbWFnZSBpbWFnZShyZWludGVycHJldF9jYXN0PHVjaGFyKj4oZGF0YSksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSwgc3RyaWRlLCBmb3JtYXQsIGRpZFJlbGVhc2VJbWFnZSwgdGhp
cyk7CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUobmV3IFFQaXhtYXAoUVBpeG1hcDo6
ZnJvbUltYWdlKGltYWdlKSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IDI4
ZDMzODEuLjU3ZTE4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0yMiw2ICsyMiw3IEBA
CiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyU2hh
ZGVyTWFuYWdlci5oIgpAQCAtMzcsNyArMzgsNiBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShR
VCkKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVF0LmgiCiAjaWYgSEFWRShRVDUpCiAjaW5jbHVkZSA8
UU9wZW5HTENvbnRleHQ+CiAjZWxzZQpAQCAtNTEsMTIgKzUxLDYgQEAKICNpbmNsdWRlIDxHTC9n
bHguaD4KICNlbmRpZgogCi0jaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVz
LmgiCi0jaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKLSNpbmNsdWRlIDxjYWlyby5oPgotI2VuZGlm
Ci0KICNkZWZpbmUgR0xfQ01EKC4uLikgZG8geyBfX1ZBX0FSR1NfXzsgQVNTRVJUX0FSRyhfX1ZB
X0FSR1NfXywgIWdsR2V0RXJyb3IoKSk7IH0gd2hpbGUgKDApCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBzdHJ1Y3QgVGV4dHVyZU1hcHBlckdMRGF0YSB7CkBAIC0zODMsNyArMzc3LDcgQEAgdm9pZCBU
ZXh0dXJlTWFwcGVyR0w6OmRyYXdSZXBhaW50Q291bnRlcihpbnQgdmFsdWUsIGludCBwb2ludFNp
emUsIGNvbnN0IEZsb2F0UG8KICAgICBJbnRSZWN0IHNvdXJjZVJlY3QoSW50UG9pbnQ6Onplcm8o
KSwgc2l6ZSk7CiAgICAgSW50UmVjdCB0YXJnZXRSZWN0KHJvdW5kZWRJbnRQb2ludCh0YXJnZXRQ
b2ludCksIHNpemUpOwogCi0gICAgUUltYWdlIGltYWdlKHNpemUsIE5hdGl2ZUltYWdlUXQ6OmRl
ZmF1bHRGb3JtYXRGb3JBbHBoYUVuYWJsZWRJbWFnZXMoKSk7CisgICAgUUltYWdlIGltYWdlKHNp
emUsIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkKTsKICAgICBRUGFpbnRlciBw
YWludGVyKCZpbWFnZSk7CiAgICAgcGFpbnRlci5maWxsUmVjdChzb3VyY2VSZWN0LCBRdDo6Ymx1
ZSk7IC8vIFNpbmNlIHdlIHdvbid0IHN3YXAgUitCIGZvciBzcGVlZCwgdGhpcyB3aWxsIHBhaW50
IHJlZC4KICAgICBwYWludGVyLnNldEZvbnQoZm9udCk7CkBAIC02MjcsMjggKzYyMSw2IEBAIGJv
b2wgQml0bWFwVGV4dHVyZUdMOjpjYW5SZXVzZVdpdGgoY29uc3QgSW50U2l6ZSYgY29udGVudHNT
aXplLCBGbGFncykKICNkZWZpbmUgREVGQVVMVF9URVhUVVJFX1BJWEVMX1RSQU5TRkVSX1RZUEUg
R0xfVU5TSUdORURfQllURQogI2VuZGlmCiAKLXN0YXRpYyB2b2lkIHN3aXp6bGVCR1JBVG9SR0JB
KHVpbnQzMl90KiBkYXRhLCBjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3RyaWRlID0gMCkKLXsK
LSAgICBzdHJpZGUgPSBzdHJpZGUgPyBzdHJpZGUgOiByZWN0LndpZHRoKCk7Ci0gICAgZm9yIChp
bnQgeSA9IHJlY3QueSgpOyB5IDwgcmVjdC5tYXhZKCk7ICsreSkgewotICAgICAgICB1aW50MzJf
dCogcCA9IGRhdGEgKyB5ICogc3RyaWRlOwotICAgICAgICBmb3IgKGludCB4ID0gcmVjdC54KCk7
IHggPCByZWN0Lm1heFgoKTsgKyt4KQotICAgICAgICAgICAgcFt4XSA9ICgocFt4XSA8PCAxNikg
JiAweGZmMDAwMCkgfCAoKHBbeF0gPj4gMTYpICYgMHhmZikgfCAocFt4XSAmIDB4ZmYwMGZmMDAp
OwotICAgIH0KLX0KLQotc3RhdGljIGJvb2wgZHJpdmVyU3VwcG9ydHNCR1JBU3dpenpsaW5nKCkK
LXsKLSNpZiBkZWZpbmVkKFRFWE1BUF9PUEVOR0xfRVNfMikKLSNpZm5kZWYgR0xfQkdSQQotI2Rl
ZmluZSBHTF9CR1JBIDAKLSNlbmRpZgotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVsaWFibGUg
ZGV0ZWN0aW9uLiBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODExMDMuCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vsc2UKLSAgICByZXR1cm4gdHJ1ZTsKLSNl
bmRpZgotfQogCiBzdGF0aWMgYm9vbCBkcml2ZXJTdXBwb3J0c1N1YkltYWdlKCkKIHsKQEAgLTY2
OSwzMSArNjQxLDIzIEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjpkaWRSZXNldCgpCiAgICAgaWYg
KG1fdGV4dHVyZVNpemUgPT0gY29udGVudFNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
R0x1aW50IGZvcm1hdCA9IGRyaXZlclN1cHBvcnRzQkdSQVN3aXp6bGluZygpID8gR0xfQkdSQSA6
IEdMX1JHQkE7Ci0KICAgICBtX3RleHR1cmVTaXplID0gY29udGVudFNpemUoKTsKICAgICBHTF9D
TUQoZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2lkKSk7CiAgICAgR0xfQ01EKGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVB
UikpOwogICAgIEdMX0NNRChnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpKTsKICAgICBHTF9DTUQoZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKSk7CiAgICAg
R0xfQ01EKGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwg
R0xfQ0xBTVBfVE9fRURHRSkpOwotICAgIEdMX0NNRChnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgR0xfUkdCQSwgbV90ZXh0dXJlU2l6ZS53aWR0aCgpLCBtX3RleHR1cmVTaXplLmhlaWdo
dCgpLCAwLCBmb3JtYXQsIERFRkFVTFRfVEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9UWVBFLCAwKSk7
CisgICAgR0xfQ01EKGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBtX3Rl
eHR1cmVTaXplLndpZHRoKCksIG1fdGV4dHVyZVNpemUuaGVpZ2h0KCksIDAsIEdMX1JHQkEsIERF
RkFVTFRfVEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9UWVBFLCAwKSk7CiB9CiAKIAogdm9pZCBCaXRt
YXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIGRhdGEsIGNvbnN0IEludFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1Bl
ckxpbmUpCiB7Ci0gICAgR0x1aW50IGdsRm9ybWF0ID0gR0xfUkdCQTsKICAgICBHTF9DTUQoZ2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2lkKSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBi
eXRlc1BlclBpeGVsID0gNDsKLSAgICBpZiAoZHJpdmVyU3VwcG9ydHNCR1JBU3dpenpsaW5nKCkp
Ci0gICAgICAgIGdsRm9ybWF0ID0gR0xfQkdSQTsKLSAgICBlbHNlCi0gICAgICAgIHN3aXp6bGVC
R1JBVG9SR0JBKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHZvaWQqPihk
YXRhKSksIEludFJlY3Qoc291cmNlT2Zmc2V0LCB0YXJnZXRSZWN0LnNpemUoKSksIGJ5dGVzUGVy
TGluZSAvIGJ5dGVzUGVyUGl4ZWwpOwotCi0gICAgaWYgKGJ5dGVzUGVyTGluZSA9PSB0YXJnZXRS
ZWN0LndpZHRoKCkgLyA0ICYmIHNvdXJjZU9mZnNldCA9PSBJbnRQb2ludDo6emVybygpKSB7Ci0g
ICAgICAgIEdMX0NNRChnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVj
dC54KCksIHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVp
Z2h0KCksIGdsRm9ybWF0LCBERUZBVUxUX1RFWFRVUkVfUElYRUxfVFJBTlNGRVJfVFlQRSwgKGNv
bnN0IGNoYXIqKWRhdGEpKTsKKyAgICBpZiAoYnl0ZXNQZXJMaW5lID09IHRhcmdldFJlY3Qud2lk
dGgoKSAqIGJ5dGVzUGVyUGl4ZWwgJiYgc291cmNlT2Zmc2V0ID09IEludFBvaW50Ojp6ZXJvKCkp
IHsKKyAgICAgICAgR0xfQ01EKGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCB0YXJn
ZXRSZWN0LngoKSwgdGFyZ2V0UmVjdC55KCksIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVj
dC5oZWlnaHQoKSwgR0xfUkdCQSwgREVGQVVMVF9URVhUVVJFX1BJWEVMX1RSQU5TRkVSX1RZUEUs
IChjb25zdCBjaGFyKilkYXRhKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTcxMSw3
ICs2NzUsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoY29uc3Qgdm9p
ZCogZGF0YSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdAogICAgICAgICAgICAgZHN0ICs9IHRh
cmdldEJ5dGVzUGVyTGluZTsKICAgICAgICAgfQogCi0gICAgICAgIEdMX0NNRChnbFRleFN1Yklt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0
YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIGdsRm9ybWF0LCBERUZBVUxU
X1RFWFRVUkVfUElYRUxfVFJBTlNGRVJfVFlQRSwgdGVtcG9yYXJ5RGF0YS5kYXRhKCkpKTsKKyAg
ICAgICAgR0xfQ01EKGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCB0YXJnZXRSZWN0
LngoKSwgdGFyZ2V0UmVjdC55KCksIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWln
aHQoKSwgR0xfUkdCQSwgREVGQVVMVF9URVhUVVJFX1BJWEVMX1RSQU5TRkVSX1RZUEUsIHRlbXBv
cmFyeURhdGEuZGF0YSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTcyMCw3ICs2
ODQsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCog
ZGF0YSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdAogICAgIEdMX0NNRChnbFBpeGVsU3RvcmVp
KEdMX1VOUEFDS19ST1dfTEVOR1RILCBieXRlc1BlckxpbmUgLyBieXRlc1BlclBpeGVsKSk7CiAg
ICAgR0xfQ01EKGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XUywgc291cmNlT2Zmc2V0
LnkoKSkpOwogICAgIEdMX0NNRChnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMUywg
c291cmNlT2Zmc2V0LngoKSkpOwotICAgIEdMX0NNRChnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0LndpZHRo
KCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIGdsRm9ybWF0LCBERUZBVUxUX1RFWFRVUkVfUElYRUxf
VFJBTlNGRVJfVFlQRSwgKGNvbnN0IGNoYXIqKWRhdGEpKTsKKyAgICBHTF9DTUQoZ2xUZXhTdWJJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwg
dGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpLCBHTF9SR0JBLCBERUZBVUxU
X1RFWFRVUkVfUElYRUxfVFJBTlNGRVJfVFlQRSwgKGNvbnN0IGNoYXIqKWRhdGEpKTsKICAgICBH
TF9DTUQoZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgMCkpOwogICAgIEdMX0NN
RChnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1JPV1MsIDApKTsKICAgICBHTF9DTUQoZ2xQ
aXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9QSVhFTFMsIDApKTsKQEAgLTczMSwyMyArNjk1LDEy
IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhJbWFnZSogaW1hZ2UsIGNv
bnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAg
cmV0dXJuOwotICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lSW1hZ2UpCi0gICAgICAgIHJldHVy
bjsKIAotICAgIGludCBieXRlc1BlckxpbmU7Ci0gICAgY29uc3QgY2hhciogaW1hZ2VEYXRhOwor
ICAgIFZlY3Rvcjx1aW50OF90PiBpbWFnZURhdGE7CisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OmV4
dHJhY3RJbWFnZURhdGEoaW1hZ2UsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0Nv
bnRleHQzRDo6VU5TSUdORURfQllURSwgZmFsc2UgLyogZmxpcFkgKi8sIHRydWUgLyogcHJlbXVs
dGlwbHlBbHBoYSAqLywgZmFsc2UgLyogaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgKi8sIGlt
YWdlRGF0YSk7CiAKLSNpZiBQTEFURk9STShRVCkKLSAgICBpbWFnZURhdGEgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihmcmFtZUltYWdlLT5jb25zdEJpdHMoKSk7Ci0gICAgYnl0ZXNQ
ZXJMaW5lID0gZnJhbWVJbWFnZS0+Ynl0ZXNQZXJMaW5lKCk7Ci0jZWxpZiBVU0UoQ0FJUk8pCi0g
ICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJhbWVJbWFnZS0+c3VyZmFjZSgpOwotICAg
IGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwotICAgIGJ5dGVzUGVyTGluZSA9IGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKLSNlbmRpZgotCi0gICAgdXBkYXRlQ29udGVu
dHMoaW1hZ2VEYXRhLCB0YXJnZXRSZWN0LCBvZmZzZXQsIGJ5dGVzUGVyTGluZSk7CisgICAgY29u
c3QgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IDQ7CisgICAgdXBkYXRlQ29udGVudHMoaW1hZ2VE
YXRhLmRhdGEoKSwgdGFyZ2V0UmVjdCwgb2Zmc2V0LCBpbWFnZS0+d2lkdGgoKSAqIGJ5dGVzUGVy
UGl4ZWwpOwogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckltYWdlQnVmZmVyLmNwcAppbmRleCA5YjBjOWE1Li5kNTAxOWU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdl
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcApAQCAtMjEsMTAgKzIxLDYgQEAKICNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCIKIAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdFJl
bmRlcmVyLmgiCi0jaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VRdC5oIgot
I2VuZGlmCi0KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUikKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTMyLDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBCaXRtYXBUZXh0dXJl
SW1hZ2VCdWZmZXI6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIGRhdGEsIGNvbnN0IEludFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1Bl
ckxpbmUpCiB7CiAjaWYgUExBVEZPUk0oUVQpCi0gICAgUUltYWdlIGltYWdlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWNoYXIqPihkYXRhKSwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0
LmhlaWdodCgpLCBieXRlc1BlckxpbmUsIE5hdGl2ZUltYWdlUXQ6OmRlZmF1bHRGb3JtYXRGb3JB
bHBoYUVuYWJsZWRJbWFnZXMoKSk7CisgICAgUUltYWdlIGltYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWNoYXIqPihkYXRhKSwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdo
dCgpLCBieXRlc1BlckxpbmUsIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkKTsK
IAogICAgIFFQYWludGVyKiBwYWludGVyID0gbV9pbWFnZS0+Y29udGV4dCgpLT5wbGF0Zm9ybUNv
bnRleHQoKTsKICAgICBwYWludGVyLT5zYXZlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9DbGlwYm9hcmRRdC5jcHAKaW5kZXggOGVkYmJlMy4uY2FhYmUwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAtNTAsNyArNTAsNiBAQAogCiAjaW5j
bHVkZSA8UUd1aUFwcGxpY2F0aW9uPgogI2luY2x1ZGUgPFFDbGlwYm9hcmQ+Ci0jaW5jbHVkZSA8
UUltYWdlPgogI2luY2x1ZGUgPFFMaXN0PgogI2luY2x1ZGUgPFFNaW1lRGF0YT4KICNpbmNsdWRl
IDxRU3RyaW5nTGlzdD4KQEAgLTI0NCw3ICsyNDMsNyBAQCBEcmFnSW1hZ2VSZWYgQ2xpcGJvYXJk
UXQ6OmNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYgZHJhZ0xvYykgY29uc3QKICAgICBpZiAoIW1f
ZHJhZ0ltYWdlKQogICAgICAgICByZXR1cm4gMDsKICAgICBkcmFnTG9jID0gbV9kcmFnTG9jOwot
ICAgIHJldHVybiBuZXcgUUltYWdlKCptX2RyYWdJbWFnZS0+aW1hZ2UoKS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKSk7CisgICAgcmV0dXJuIG1fZHJhZ0ltYWdlLT5pbWFnZSgpLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogfQogCiAKQEAgLTI3NCw5ICsyNzMsOSBAQCB2b2lk
IENsaXBib2FyZFF0OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRWxlbWVudCogZWxlbWVudCwg
Y29uc3QgS1VSTCYgdXJsLCBjbwogICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGdldENh
Y2hlZEltYWdlKGVsZW1lbnQpOwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdl
LT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQtPnJlbmRlcmVyKCkpIHx8ICFjYWNoZWRJbWFnZS0+
aXNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFFJbWFnZSogaW1hZ2UgPSBjYWNoZWRJ
bWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LT5yZW5kZXJlcigpKS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoaW1hZ2UpCi0gICAgICAgIG1fd3JpdGFibGVEYXRh
LT5zZXRJbWFnZURhdGEoKmltYWdlKTsKKyAgICBRUGl4bWFwKiBwaXhtYXAgPSBjYWNoZWRJbWFn
ZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LT5yZW5kZXJlcigpKS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKKyAgICBpZiAocGl4bWFwKQorICAgICAgICBtX3dyaXRhYmxlRGF0YS0+
c2V0SW1hZ2VEYXRhKCpwaXhtYXApOwogCiAgICAgUUxpc3Q8UVVybD4gdXJsczsKICAgICB1cmxz
LmFwcGVuZCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ3Vy
c29yUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ3Vyc29yUXQuY3BwCmluZGV4
IDE2OGEyZjUuLmU3ODU0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L0N1cnNvclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DdXJzb3JRdC5j
cHAKQEAgLTM3LDggKzM3LDYgQEAKIAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKLSNp
bmNsdWRlIDxRSW1hZ2U+Ci0jaW5jbHVkZSA8UVBpeG1hcD4KICNpbmNsdWRlIDxzdGRpby5oPgog
I2luY2x1ZGUgPHN0ZGxpYi5oPgogCkBAIC03NywxMSArNzUsMTAgQEAgQ3Vyc29yJiBDdXJzb3I6
Om9wZXJhdG9yPShjb25zdCBDdXJzb3ImIG90aGVyKQogI2lmbmRlZiBRVF9OT19DVVJTT1IKIHN0
YXRpYyBRQ3Vyc29yKiBjcmVhdGVDdXN0b21DdXJzb3IoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRQ
b2ludCYgaG90U3BvdCkKIHsKLSAgICBRSW1hZ2UqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICBpZiAo
IWltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsK
ICAgICBJbnRQb2ludCBlZmZlY3RpdmVIb3RTcG90ID0gZGV0ZXJtaW5lSG90U3BvdChpbWFnZSwg
aG90U3BvdCk7Ci0gICAgcmV0dXJuIG5ldyBRQ3Vyc29yKFFQaXhtYXA6OmZyb21JbWFnZSgqbmF0
aXZlSW1hZ2UpLCBlZmZlY3RpdmVIb3RTcG90LngoKSwgZWZmZWN0aXZlSG90U3BvdC55KCkpOwor
ICAgIHJldHVybiBuZXcgUUN1cnNvcigqKGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpKSwgZWZmZWN0aXZlSG90U3BvdC54KCksIGVmZmVjdGl2ZUhvdFNwb3QueSgpKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EcmFnSW1hZ2VR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EcmFnSW1hZ2VRdC5jcHAKaW5kZXgg
ZTkzYWM3MC4uMGU3Y2UwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQv
RHJhZ0ltYWdlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdJbWFn
ZVF0LmNwcApAQCAtMjksOCArMjksNiBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5j
bHVkZSAiSW1hZ2UuaCIKIAotI2luY2x1ZGUgPFFJbWFnZT4KLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBJbnRTaXplIGRyYWdJbWFnZVNpemUoRHJhZ0ltYWdlUmVmIGltYWdlKQpAQCAtNjgsNyAr
NjYsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFn
ZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtKQogICAgIGlmICghaW1hZ2UgfHwgIWltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IHJldHVybiBuZXcgUUltYWdlKCppbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7
CisgICAgcmV0dXJuIG5ldyBRUGl4bWFwKCppbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSk7CiB9CiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1h
Z2UoQ2FjaGVkSW1hZ2UqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQv
UGFzdGVib2FyZFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRR
dC5jcHAKaW5kZXggYzZlM2QwMS4uZDZmNGUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC0xNjYsMTAgKzE2NiwxMCBAQCB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCiAg
ICAgSW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIobm9kZS0+cmVu
ZGVyZXIoKSk7CiAgICAgQVNTRVJUKGltYWdlKTsKIAotICAgIFFJbWFnZSogbmF0aXZlSW1hZ2Ug
PSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoIWltYWdlKQor
ICAgIFFQaXhtYXAqIHBpeG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OworICAgIGlmICghcGl4bWFwKQogICAgICAgICByZXR1cm47Ci0gICAgUUd1aUFwcGxpY2F0aW9u
OjpjbGlwYm9hcmQoKS0+c2V0SW1hZ2UoKm5hdGl2ZUltYWdlLCBRQ2xpcGJvYXJkOjpDbGlwYm9h
cmQpOworICAgIFFHdWlBcHBsaWNhdGlvbjo6Y2xpcGJvYXJkKCktPnNldFBpeG1hcCgqcGl4bWFw
LCBRQ2xpcGJvYXJkOjpDbGlwYm9hcmQpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
ZnJhbWUuY3BwCmluZGV4IGRhYzQxNjUuLmIzY2MyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZy
YW1lLmNwcApAQCAtMTczNCw5ICsxNzM0LDkgQEAgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlOjpR
V2ViSGl0VGVzdFJlc3VsdFByaXZhdGUoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdAogICAg
IGJvdW5kaW5nUmVjdCA9IGlubmVyTm9uU2hhcmVkTm9kZSA/IGlubmVyTm9uU2hhcmVkTm9kZS0+
cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSA6IEludFJlY3QoKTsKICAgICBX
ZWJDb3JlOjpJbWFnZSAqaW1nID0gaGl0VGVzdC5pbWFnZSgpOwogICAgIGlmIChpbWcpIHsKLSAg
ICAgICAgUUltYWdlICpwaXggPSBpbWctPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cisg
ICAgICAgIFFQaXhtYXAgKnBpeCA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
ICAgICAgICAgaWYgKHBpeCkKLSAgICAgICAgICAgIHBpeG1hcCA9IFFQaXhtYXA6OmZyb21JbWFn
ZSgqcGl4KTsKKyAgICAgICAgICAgIHBpeG1hcCA9ICpwaXg7CiAgICAgfQogICAgIFdlYkNvcmU6
OkZyYW1lICp3ZnJhbWUgPSBoaXRUZXN0LnRhcmdldEZyYW1lKCk7CiAgICAgaWYgKHdmcmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5LmNwcAppbmRleCA3MTJjMjhmLi4xNWQ0YWQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnkuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgUURh
dGVUaW1lIFFXZWJIaXN0b3J5SXRlbTo6bGFzdFZpc2l0ZWQoKSBjb25zdAogUUljb24gUVdlYkhp
c3RvcnlJdGVtOjppY29uKCkgY29uc3QKIHsKICAgICBpZiAoZC0+aXRlbSkKLSAgICAgICAgcmV0
dXJuIFFQaXhtYXA6OmZyb21JbWFnZSgqV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25v
dXNOYXRpdmVJY29uRm9yUGFnZVVSTChkLT5pdGVtLT51cmwoKSwgV2ViQ29yZTo6SW50U2l6ZSgx
NiwgMTYpKSk7CisgICAgICAgIHJldHVybiAqV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hy
b25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChkLT5pdGVtLT51cmwoKSwgV2ViQ29yZTo6SW50U2l6
ZSgxNiwgMTYpKTsKIAogICAgIHJldHVybiBRSWNvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJzZXR0aW5ncy5jcHAKaW5kZXggMDc5YmEwZi4uMWVkYzA1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2Vic2V0dGluZ3MuY3BwCkBAIC04MjMsMTIgKzgyMywxMiBAQCB2b2lkIFFXZWJTZXR0aW5n
czo6Y2xlYXJJY29uRGF0YWJhc2UoKQogUUljb24gUVdlYlNldHRpbmdzOjppY29uRm9yVXJsKGNv
bnN0IFFVcmwmIHVybCkKIHsKICAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7Ci0g
ICAgUUltYWdlKiBpY29uID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNOYXRp
dmVJY29uRm9yUGFnZVVSTChXZWJDb3JlOjpLVVJMKHVybCkuc3RyaW5nKCksCisgICAgUVBpeG1h
cCogaWNvbiA9IFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzTmF0aXZlSWNvbkZv
clBhZ2VVUkwoV2ViQ29yZTo6S1VSTCh1cmwpLnN0cmluZygpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwogICAgIGlmICghaWNvbikK
LSAgICAgICAgcmV0dXJuIFFJY29uKCk7CisgICAgICAgIHJldHVybiBRUGl4bWFwKCk7CiAKLSAg
ICByZXR1cm4gUVBpeG1hcDo6ZnJvbUltYWdlKCppY29uKTsKKyAgICByZXR1cm4qIGljb247CiB9
CiAKIC8qCkBAIC04NzEsNyArODcxLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc291cmNlTmFt
ZUZvcldlYkdyYXBoaWMoUVdlYlNldHRpbmdzOjpXZWJHcmFwaGljIHR5cGUpCiB2b2lkIFFXZWJT
ZXR0aW5nczo6c2V0V2ViR3JhcGhpYyhXZWJHcmFwaGljIHR5cGUsIGNvbnN0IFFQaXhtYXAmIGdy
YXBoaWMpCiB7CiAgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOwotICAgIFdlYkNv
cmU6OkltYWdlOjpzZXRQbGF0Zm9ybVJlc291cmNlKHJlc291cmNlTmFtZUZvcldlYkdyYXBoaWMo
dHlwZSksIGdyYXBoaWMudG9JbWFnZSgpKTsKKyAgICBXZWJDb3JlOjpJbWFnZTo6c2V0UGxhdGZv
cm1SZXNvdXJjZShyZXNvdXJjZU5hbWVGb3JXZWJHcmFwaGljKHR5cGUpLCBncmFwaGljKTsKIH0K
IAogLyohCkBAIC04ODYsMTAgKzg4NiwxMCBAQCBRUGl4bWFwIFFXZWJTZXR0aW5nczo6d2ViR3Jh
cGhpYyhXZWJHcmFwaGljIHR5cGUpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBpbWcgPSBX
ZWJDb3JlOjpJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UocmVzb3VyY2VOYW1lRm9yV2ViR3Jh
cGhpYyh0eXBlKSk7CiAgICAgaWYgKCFpbWcpCiAgICAgICAgIHJldHVybiBRUGl4bWFwKCk7Ci0g
ICAgUUltYWdlKiBpbWFnZSA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAg
ICBpZiAoIWltYWdlKQorICAgIFFQaXhtYXAqIHBpeG1hcCA9IGltZy0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIXBpeG1hcCkKICAgICAgICAgcmV0dXJuIFFQaXhtYXAo
KTsKLSAgICByZXR1cm4gUVBpeG1hcDo6ZnJvbUltYWdlKCppbWFnZSk7CisgICAgcmV0dXJuICpw
aXhtYXA7CiB9CiAKIC8qIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9EcmFnQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50UXQuY3BwCmluZGV4IDhiNjQ4YzEuLmNiNjMyODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5jcHAKQEAgLTk3LDkgKzk3LDkg
QEAgdm9pZCBEcmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYgZHJhZ0ltYWdlLCBj
b25zdCBJbnRQb2ludCYsIGNvbnN0IEludFAKICAgICBpZiAodmlldykgewogICAgICAgICBRRHJh
ZyogZHJhZyA9IG5ldyBRRHJhZyh2aWV3KTsKICAgICAgICAgaWYgKGRyYWdJbWFnZSkKLSAgICAg
ICAgICAgIGRyYWctPnNldFBpeG1hcChRUGl4bWFwOjpmcm9tSW1hZ2UoKmRyYWdJbWFnZSkpOwor
ICAgICAgICAgICAgZHJhZy0+c2V0UGl4bWFwKCpkcmFnSW1hZ2UpOwogICAgICAgICBlbHNlIGlm
IChjbGlwYm9hcmREYXRhICYmIGNsaXBib2FyZERhdGEtPmhhc0ltYWdlKCkpCi0gICAgICAgICAg
ICBkcmFnLT5zZXRQaXhtYXAoUVBpeG1hcDo6ZnJvbUltYWdlKHF2YXJpYW50X2Nhc3Q8UUltYWdl
PihjbGlwYm9hcmREYXRhLT5pbWFnZURhdGEoKSkpKTsKKyAgICAgICAgICAgIGRyYWctPnNldFBp
eG1hcChxdmFyaWFudF9jYXN0PFFQaXhtYXA+KGNsaXBib2FyZERhdGEtPmltYWdlRGF0YSgpKSk7
CiAgICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbk1hc2sgPSBjbGlwYm9hcmQtPnNv
dXJjZU9wZXJhdGlvbigpOwogICAgICAgICBkcmFnLT5zZXRNaW1lRGF0YShjbGlwYm9hcmREYXRh
KTsKICAgICAgICAgUXQ6OkRyb3BBY3Rpb24gYWN0dWFsRHJvcEFjdGlvbiA9IGRyYWctPmV4ZWMo
ZHJhZ09wZXJhdGlvbnNUb0Ryb3BBY3Rpb25zKGRyYWdPcGVyYXRpb25NYXNrKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcAppbmRleCBj
NjNjY2IwLi41YWM0NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0luaXRXZWJDb3JlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvSW5pdFdlYkNvcmVRdC5jcHAKQEAgLTgzLDkgKzgzLDkgQEAgdm9pZCBpbml0aWFsaXplV2Vi
Q29yZVF0KCkKICNlbmRpZgogCiAgICAgLy8gUVdlYlNldHRpbmdzOjpTZWFyY2hDYW5jZWxCdXR0
b25HcmFwaGljCi0gICAgSW1hZ2U6OnNldFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaENhbmNlbEJ1
dHRvbiIsIFFBcHBsaWNhdGlvbjo6c3R5bGUoKS0+c3RhbmRhcmRQaXhtYXAoUVN0eWxlOjpTUF9E
aWFsb2dDbG9zZUJ1dHRvbikudG9JbWFnZSgpKTsKKyAgICBJbWFnZTo6c2V0UGxhdGZvcm1SZXNv
dXJjZSgic2VhcmNoQ2FuY2VsQnV0dG9uIiwgUUFwcGxpY2F0aW9uOjpzdHlsZSgpLT5zdGFuZGFy
ZFBpeG1hcChRU3R5bGU6OlNQX0RpYWxvZ0Nsb3NlQnV0dG9uKSk7CiAgICAgLy8gUVdlYlNldHRp
bmdzOjpTZWFyY2hDYW5jZWxCdXR0b25QcmVzc2VkR3JhcGhpYwotICAgIEltYWdlOjpzZXRQbGF0
Zm9ybVJlc291cmNlKCJzZWFyY2hDYW5jZWxCdXR0b25QcmVzc2VkIiwgUUFwcGxpY2F0aW9uOjpz
dHlsZSgpLT5zdGFuZGFyZFBpeG1hcChRU3R5bGU6OlNQX0RpYWxvZ0Nsb3NlQnV0dG9uKS50b0lt
YWdlKCkpOworICAgIEltYWdlOjpzZXRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hDYW5jZWxCdXR0
b25QcmVzc2VkIiwgUUFwcGxpY2F0aW9uOjpzdHlsZSgpLT5zdGFuZGFyZFBpeG1hcChRU3R5bGU6
OlNQX0RpYWxvZ0Nsb3NlQnV0dG9uKSk7CiAKICAgICBpbml0aWFsaXplZCA9IHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcAppbmRleCA4
OGU0ZDNhLi5hN2FiOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvU2hh
cmVhYmxlQml0bWFwUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFi
bGVCaXRtYXBRdC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKIAotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUXQuaCIK
ICNpbmNsdWRlIDxRSW1hZ2U+CiAjaW5jbHVkZSA8UVBhaW50ZXI+CiAjaW5jbHVkZSA8UXRHbG9i
YWw+CkBAIC00Miw3ICs0MSw3IEBAIFFJbWFnZSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVFJbWFn
ZSgpCiB7CiAgICAgcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIGluIHJlbGVhc2VTaGFyZWRN
ZW1vcnlEYXRhCiAgICAgcmV0dXJuIFFJbWFnZShyZWludGVycHJldF9jYXN0PHVjaGFyKj4oZGF0
YSgpKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgbV9zaXplLndpZHRoKCkgKiA0
LAotICAgICAgICAgICAgICAgICAgbV9mbGFncyAmIFN1cHBvcnRzQWxwaGEgPyBOYXRpdmVJbWFn
ZVF0OjpkZWZhdWx0Rm9ybWF0Rm9yQWxwaGFFbmFibGVkSW1hZ2VzKCkgOiBOYXRpdmVJbWFnZVF0
OjpkZWZhdWx0Rm9ybWF0Rm9yT3BhcXVlSW1hZ2VzKCksCisgICAgICAgICAgICAgICAgICBtX2Zs
YWdzICYgU3VwcG9ydHNBbHBoYSA/IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVk
IDogUUltYWdlOjpGb3JtYXRfUkdCMzIsCiAgICAgICAgICAgICAgICAgICByZWxlYXNlU2hhcmVk
TWVtb3J5RGF0YSwgdGhpcyk7CiB9CiAKQEAgLTUzLDggKzUyLDggQEAgdm9pZCBTaGFyZWFibGVC
aXRtYXA6OnJlbGVhc2VTaGFyZWRNZW1vcnlEYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwKQogCiBQ
YXNzUmVmUHRyPEltYWdlPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKCkKIHsKLSAgICBR
SW1hZ2UqIGltYWdlID0gbmV3IFFJbWFnZShjcmVhdGVRSW1hZ2UoKSk7Ci0gICAgcmV0dXJuIEJp
dG1hcEltYWdlOjpjcmVhdGUoaW1hZ2UpOworICAgIFFQaXhtYXAqIHBpeG1hcCA9IG5ldyBRUGl4
bWFwKFFQaXhtYXA6OmZyb21JbWFnZShjcmVhdGVRSW1hZ2UoKSkpOworICAgIHJldHVybiBCaXRt
YXBJbWFnZTo6Y3JlYXRlKHBpeG1hcCk7CiB9CiAKIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0
PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcApp
bmRleCBhZmRmYTZmLi41OTJiYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAKQEAgLTkwLDExICs5MCwxMSBA
QCBRSW1hZ2UgUXRXZWJJY29uRGF0YWJhc2VDbGllbnQ6Omljb25JbWFnZUZvclBhZ2VVUkwoY29u
c3QgV1RGOjpTdHJpbmcmIHBhZ2VVUkwsCiAKICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoaWNv
blNpemUud2lkdGgoKSwgaWNvblNpemUuaGVpZ2h0KCkpOwogCi0gICAgUUltYWdlKiBuYXRpdmVJ
bWFnZSA9IG1faWNvbkRhdGFiYXNlLT5uYXRpdmVJbWFnZUZvclBhZ2VVUkwocGFnZVVSTCwgc2l6
ZSk7CisgICAgUVBpeG1hcCogbmF0aXZlSW1hZ2UgPSBtX2ljb25EYXRhYmFzZS0+bmF0aXZlSW1h
Z2VGb3JQYWdlVVJMKHBhZ2VVUkwsIHNpemUpOwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAg
ICAgIHJldHVybiBRSW1hZ2UoKTsKIAotICAgIHJldHVybiAqbmF0aXZlSW1hZ2U7CisgICAgcmV0
dXJuIG5hdGl2ZUltYWdlLT50b0ltYWdlKCk7CiB9CiAKIHZvaWQgUXRXZWJJY29uRGF0YWJhc2VD
bGllbnQ6OnJldGFpbkljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViRHJh
Z0NsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
cXQvV2ViRHJhZ0NsaWVudFF0LmNwcAppbmRleCBkOWU2ZDFkLi5iYmRiNjM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYkRyYWdDbGll
bnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9x
dC9XZWJEcmFnQ2xpZW50UXQuY3BwCkBAIC0zOCwxNSArMzgsMTUgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgUGFzc1JlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGNvbnZlcnRRSW1hZ2VUb1NoYXJlYWJsZUJpdG1hcChRSW1hZ2UqIGltYWdl
KQorc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UVBpeG1hcFRvU2hh
cmVhYmxlQml0bWFwKFFQaXhtYXAqIHBpeG1hcCkKIHsKLSAgICBpZiAoIWltYWdlKQorICAgIGlm
ICghcGl4bWFwKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoaW1h
Z2UtPnNpemUoKSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CisgICAgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoSW50U2l6ZShwaXhtYXAtPnNpemUoKSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBo
YSk7CiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFw
LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCktPmRyYXdJbWFnZSgwLCAwLCAqaW1hZ2UpOworICAgIGdyYXBoaWNzQ29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdQaXhtYXAoMCwgMCwgKnBpeG1hcCk7CiAgICAgcmV0
dXJuIGJpdG1hcC5yZWxlYXNlKCk7CiB9CiAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBXZWJEcmFn
Q2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlUmVmIGRyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2kKICAgICBzdGF0aWNfY2FzdDxDbGlwYm9hcmRRdCo+KGNsaXBib2FyZCktPmlu
dmFsaWRhdGVXcml0YWJsZURhdGEoKTsKICAgICBEcmFnRGF0YSBkcmFnRGF0YShjbGlwYm9hcmRE
YXRhLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRyYWdPcGVyYXRpb25NYXNrKTsK
IAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IGNvbnZlcnRRSW1hZ2VUb1No
YXJlYWJsZUJpdG1hcChkcmFnSW1hZ2UpOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJp
dG1hcCA9IGNvbnZlcnRRUGl4bWFwVG9TaGFyZWFibGVCaXRtYXAoZHJhZ0ltYWdlKTsKICAgICBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJpdG1hcCAmJiAhYml0bWFw
LT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkKICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167495</attachid>
            <date>2012-10-07 19:49:18 -0700</date>
            <delta_ts>2012-10-07 20:06:17 -0700</delta_ts>
            <desc>proposed revert</desc>
            <filename>revert.patch</filename>
            <type>text/plain</type>
            <size>55432</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZjA0ZGEyLi4zMmJjYzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTAg
QEAKKzIwMTItMTAtMDggIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1F0XSByMTIyNzIwIGNhdXNlcyBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHdpdGggRGly
ZWN0RkIgb24gQVJNdjcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk3NTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV2ZXJ0IHRoZSByZXN0IG9mIHIxMjI3MjAuIFRoaXMgY2hhbmdlIG1vZGlmaWVzIHRo
ZSBOYXRpdmVJbWFnZVB0ciBmcm9tIFFJbWFnZSogdG8gUVBpeG1hcCouCisKKyAgICAgICAgQ292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGJyaWRnZS9xdC9xdF9waXhtYXBy
dW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmFzc2lnblRvSFRNTEltYWdlRWxl
bWVudCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcFJ1bnRpbWU6OnRvUXQpOgor
ICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChHcmFw
aGljc0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAg
ICAgIChJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZUdTdHJlYW1lclF0LmNwcDoKKyAgICAgICAgKEltYWdlR1N0cmVhbWVyOjpJbWFn
ZUdTdHJlYW1lcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0M0RRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1h
Z2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnB1c2hUcmFuc3BhcmVu
Y3lMYXllckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YmVn
aW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJEYXRhUXQuaDoKKyAgICAgICAgKEltYWdlQnVmZmVy
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OkltYWdlQnVmZmVyRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6dG9R
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmdldEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFy
cmF5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L0ltYWdlRGVjb2RlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3Bw
OgorICAgICAgICAoZ3JhcGhpY3MpOgorICAgICAgICAobG9hZFJlc291cmNlUGl4bWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZTo6c2V0UGxhdGZvcm1SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1h
cEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvUGF0dGVyblF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRm
b3JtUGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0aWxsSW1hZ2U6OlN0aWxsSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6flN0aWxsSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
U3RpbGxJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6U3Rp
bGxJbWFnZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGlsbEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGlsbEltYWdlOjpkcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0aWxsSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGlsbElt
YWdlOjpjcmVhdGVGb3JSZW5kZXJpbmcpOgorICAgICAgICAoU3RpbGxJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVHJhbnNwYXJlbmN5TGF5ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyYW5zcGFyZW5jeUxheWVyOjpUcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChU
cmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
cXQvR3JhcGhpY3NTdXJmYWNlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlOjpjcmVhdGVSZWFkT25seUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1
cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Ns
aXBib2FyZFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpjcmVhdGVEcmFn
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OmRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvQ3Vyc29yUXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlQ3VzdG9tQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9EcmFn
SW1hZ2VRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKwogMjAxMi0xMC0wNyAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NvdXBdIENsZWFuIHVwIFJl
c291cmNlRXJyb3IgY3JlYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9waXhtYXBydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXht
YXBydW50aW1lLmNwcAppbmRleCAxNTA3MjRiLi4yYmM1YzJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCkBAIC0xMzUsOCArMTM1LDggQEAgc3Rh
dGljIEpTVmFsdWVSZWYgYXNzaWduVG9IVE1MSW1hZ2VFbGVtZW50KEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW4KIAogICAgIFFWYXJpYW50JiBkYXRhID0gKnN0YXRpY19jYXN0
PFFWYXJpYW50Kj4oSlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCkpOwogCi0gICAgLy8gV2Ugbm93
IGtub3cgdGhhdCB3ZSBoYXZlIGEgdmFsaWQgPGltZz4gZWxlbWVudCBhcyB0aGUgYXJndW1lbnQs
IHdlIGNhbiBhdHRhY2ggdGhlIGltYWdlIHRvIGl0LgotICAgIFJlZlB0cjxTdGlsbEltYWdlPiBz
dGlsbEltYWdlID0gV2ViQ29yZTo6U3RpbGxJbWFnZTo6Y3JlYXRlKHRvSW1hZ2UoZGF0YSkpOwor
ICAgIC8vIFdlIG5vdyBrbm93IHRoYXQgd2UgaGF2ZSBhIHZhbGlkIDxpbWc+IGVsZW1lbnQgYXMg
dGhlIGFyZ3VtZW50LCB3ZSBjYW4gYXR0YWNoIHRoZSBwaXhtYXAgdG8gaXQuCisgICAgUmVmUHRy
PFN0aWxsSW1hZ2U+IHN0aWxsSW1hZ2UgPSBXZWJDb3JlOjpTdGlsbEltYWdlOjpjcmVhdGUodG9Q
aXhtYXAoZGF0YSkpOwogICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IHN0YXRp
Y19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihzdGF0aWNfY2FzdDxKU0hUTUxJbWFnZUVsZW1lbnQq
Pihqc09iamVjdCktPmltcGwoKSk7CiAgICAgaW1hZ2VFbGVtZW50LT5zZXRDYWNoZWRJbWFnZShu
ZXcgQ2FjaGVkSW1hZ2Uoc3RpbGxJbWFnZS5nZXQoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKQEAgLTIzMSwxMyArMjMxLDEzIEBAIFFWYXJpYW50IFF0UGl4
bWFwUnVudGltZTo6dG9RdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqLCBR
TWV0YVR5cGU6CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIGVtcHR5VmFyaWFudEZv
ckhpbnQoaGludCk7CiAKLSAgICBRSW1hZ2UqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICBRUGl4bWFw
KiBwaXhtYXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAo
IXBpeG1hcCkKICAgICAgICAgcmV0dXJuIGVtcHR5VmFyaWFudEZvckhpbnQoaGludCk7CiAKICAg
ICByZXR1cm4gKGhpbnQgPT0gc3RhdGljX2Nhc3Q8UU1ldGFUeXBlOjpUeXBlPihxTWV0YVR5cGVJ
ZDxRUGl4bWFwPigpKSkKLSAgICAgICAgICAgICAgPyBRVmFyaWFudDo6ZnJvbVZhbHVlPFFQaXht
YXA+KFFQaXhtYXA6OmZyb21JbWFnZSgqbmF0aXZlSW1hZ2UpKQotICAgICAgICAgICAgICA6IFFW
YXJpYW50Ojpmcm9tVmFsdWU8UUltYWdlPigqbmF0aXZlSW1hZ2UpOworICAgICAgICA/IFFWYXJp
YW50Ojpmcm9tVmFsdWU8UVBpeG1hcD4oKnBpeG1hcCkKKyAgICAgICAgOiBRVmFyaWFudDo6ZnJv
bVZhbHVlPFFJbWFnZT4ocGl4bWFwLT50b0ltYWdlKCkpOwogfQogCiBib29sIFF0UGl4bWFwUnVu
dGltZTo6Y2FuSGFuZGxlKFFNZXRhVHlwZTo6VHlwZSBoaW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnSW1hZ2UuaAppbmRleCBlNzhhOWQzLi5kZDk3MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnSW1hZ2UuaApAQCAtMzYsNyArMzYsNyBAQAogT0JKQ19DTEFTUyBOU0ltYWdlOwogI2VsaWYg
UExBVEZPUk0oUVQpCiBRVF9CRUdJTl9OQU1FU1BBQ0UKLWNsYXNzIFFJbWFnZTsKK2NsYXNzIFFQ
aXhtYXA7CiBRVF9FTkRfTkFNRVNQQUNFCiAjZWxpZiBQTEFURk9STShXSU4pCiB0eXBlZGVmIHN0
cnVjdCBIQklUTUFQX18qIEhCSVRNQVA7CkBAIC02Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgdHlwZWRlZiBSZXRhaW5QdHI8TlNJbWFnZT4g
RHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgdHlwZWRlZiBRSW1hZ2UqIERy
YWdJbWFnZVJlZjsKKyAgICB0eXBlZGVmIFFQaXhtYXAqIERyYWdJbWFnZVJlZjsKICNlbGlmIFBM
QVRGT1JNKFdJTikKICAgICB0eXBlZGVmIEhCSVRNQVAgRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExB
VEZPUk0oV1gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCmluZGV4IDE2OTQ3ZmIuLmQ0YThjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00OTksNyArNDk5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKLSAg
ICAgICAgdm9pZCBwdXNoVHJhbnNwYXJlbmN5TGF5ZXJJbnRlcm5hbChjb25zdCBRUmVjdCYsIHFy
ZWFsLCBRSW1hZ2UmKTsKKyAgICAgICAgdm9pZCBwdXNoVHJhbnNwYXJlbmN5TGF5ZXJJbnRlcm5h
bChjb25zdCBRUmVjdCYsIHFyZWFsLCBRUGl4bWFwJik7CiAgICAgICAgIHZvaWQgdGFrZU93bmVy
c2hpcE9mUGxhdGZvcm1Db250ZXh0KCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggZmViNmUyYi4uNWU3MDBjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC01Myw2ICs1MywxMCBAQCB0eXBlZGVmIFNJ
WkUqIExQU0laRTsKIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRpZgog
CisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8UVBpeG1hcD4KKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oR1RLKQogdHlwZWRlZiBzdHJ1Y3QgX0dka1BpeGJ1ZiBHZGtQaXhidWY7CiAjZW5kaWYK
QEAgLTE1NCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQot
ICAgIHN0YXRpYyB2b2lkIHNldFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSwgY29u
c3QgUUltYWdlJik7CisgICAgc3RhdGljIHZvaWQgc2V0UGxhdGZvcm1SZXNvdXJjZShjb25zdCBj
aGFyKiBuYW1lLCBjb25zdCBRUGl4bWFwJik7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCmluZGV4IDUwY2RlNWQuLmM5
OGY4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlUHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2VQdHIuaApAQCAtMzYsNyArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0lt
YWdlUmVmOwogI2VsaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8cWdsb2JhbC5oPgogUVRfQkVH
SU5fTkFNRVNQQUNFCi1jbGFzcyBRSW1hZ2U7CitjbGFzcyBRUGl4bWFwOwogUVRfRU5EX05BTUVT
UEFDRQogI2VsaWYgVVNFKENBSVJPKQogI2luY2x1ZGUgIk5hdGl2ZUltYWdlQ2Fpcm8uaCIKQEAg
LTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFVTRShDRykKIHR5cGVkZWYg
Q0dJbWFnZVJlZiBOYXRpdmVJbWFnZVB0cjsKICNlbGlmIFBMQVRGT1JNKFFUKQotdHlwZWRlZiBR
SW1hZ2UqIE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiBRUGl4bWFwKiBOYXRpdmVJbWFnZVB0cjsK
ICNlbGlmIFBMQVRGT1JNKE9QRU5WRykKIGNsYXNzIFRpbGVkSW1hZ2VPcGVuVkc7CiB0eXBlZGVm
IFRpbGVkSW1hZ2VPcGVuVkcqIE5hdGl2ZUltYWdlUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaApp
bmRleCA3YTBlNWVlLi44M2JkZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaApAQCAtMjksMTAg
KzI5LDYgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAotI2lmIFBMQVRGT1JNKFFUKQotI2luY2x1ZGUgPFFJbWFnZT4KLSNlbmRpZgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRTaXplOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJRdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFt
ZXJRdC5jcHAKaW5kZXggZDZlNmUyYS4uMzc1MDI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyUXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1l
clF0LmNwcApAQCAtNjcsOCArNjcsOSBAQCBJbWFnZUdTdHJlYW1lcjo6SW1hZ2VHU3RyZWFtZXIo
R3N0QnVmZmVyKiBidWZmZXIsIEdzdENhcHMqIGNhcHMpCiAjaWYgR19CWVRFX09SREVSID09IEdf
TElUVExFX0VORElBTgogICAgIGltYWdlLmludmVydFBpeGVscyhpbnZlcnRNb2RlKTsKICNlbmRp
ZgotCi0gICAgbV9pbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUobmV3IFFJbWFnZShpbWFnZSkp
OworICAgIFFQaXhtYXAqIHN1cmZhY2UgPSBuZXcgUVBpeG1hcDsKKyAgICBzdXJmYWNlLT5jb252
ZXJ0RnJvbUltYWdlKGltYWdlKTsKKyAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShz
dXJmYWNlKTsKIAogI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgaWYgKEdzdFZpZGVvQ3Jv
cE1ldGEqIGNyb3BNZXRhID0gZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fY3JvcF9tZXRhKGJ1ZmZlcikp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHQzRFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4IGNiZDUxOTIuLjhhYzEyMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dDNEUXQuY3BwCkBAIC00ODUsMTYgKzQ4NSwxOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdlLAogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFFJbWFnZSBuYXRpdmVJbWFnZTsKKyAgICBRSW1hZ2UgcXRJbWFn
ZTsKICAgICAvLyBJcyBpbWFnZSBhbHJlYWR5IGxvYWRlZD8gSWYgbm90LCBsb2FkIGl0LgogICAg
IGlmIChpbWFnZS0+ZGF0YSgpKQotICAgICAgICBuYXRpdmVJbWFnZSA9IFFJbWFnZTo6ZnJvbURh
dGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1Y2hhcio+KGltYWdlLT5kYXRhKCktPmRhdGEoKSks
IGltYWdlLT5kYXRhKCktPnNpemUoKSk7Ci0gICAgZWxzZQotICAgICAgICBuYXRpdmVJbWFnZSA9
ICppbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLQorICAgICAgICBxdEltYWdl
ID0gUUltYWdlOjpmcm9tRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVjaGFyKj4oaW1hZ2Ut
PmRhdGEoKS0+ZGF0YSgpKSwgaW1hZ2UtPmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgUVBpeG1hcCogbmF0aXZlUGl4bWFwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CisgICAgICAgIC8vIFdpdGggUVBBLCB3ZSBjYW4gYXZvaWQgYSBkZWVwIGNvcHku
CisgICAgICAgIHF0SW1hZ2UgPSAqbmF0aXZlUGl4bWFwLT5oYW5kbGUoKS0+YnVmZmVyKCk7Cisg
ICAgfQogCiAgICAgQWxwaGFPcCBhbHBoYU9wID0gQWxwaGFEb05vdGhpbmc7Ci0gICAgc3dpdGNo
IChuYXRpdmVJbWFnZS5mb3JtYXQoKSkgeworICAgIHN3aXRjaCAocXRJbWFnZS5mb3JtYXQoKSkg
ewogICAgIGNhc2UgUUltYWdlOjpGb3JtYXRfUkdCMzI6CiAgICAgICAgIC8vIEZvciBvcGFxdWUg
aW1hZ2VzLCB3ZSBzaG91bGQgbm90IHByZW11bHRpcGx5IG9yIHVubXVsdGlwbHkgYWxwaGEuCiAg
ICAgICAgIGJyZWFrOwpAQCAtNTA4LDcgKzUxMCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIC8vIFRoZSBpbWFnZSBoYXMgYSBmb3JtYXQgdGhhdCBpcyBub3Qgc3VwcG9ydGVk
IGluIHBhY2tQaXhlbHMuIFdlIGhhdmUgdG8gY29udmVydCBpdCBoZXJlLgotICAgICAgICBuYXRp
dmVJbWFnZSA9IG5hdGl2ZUltYWdlLmNvbnZlcnRUb0Zvcm1hdChwcmVtdWx0aXBseUFscGhhID8g
UUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQgOiBRSW1hZ2U6OkZvcm1hdF9BUkdC
MzIpOworICAgICAgICBxdEltYWdlID0gcXRJbWFnZS5jb252ZXJ0VG9Gb3JtYXQocHJlbXVsdGlw
bHlBbHBoYSA/IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkIDogUUltYWdlOjpG
b3JtYXRfQVJHQjMyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC01MTksNyArNTIxLDcg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKIAog
ICAgIG91dHB1dFZlY3Rvci5yZXNpemUocGFja2VkU2l6ZSk7CiAKLSAgICByZXR1cm4gcGFja1Bp
eGVscyhuYXRpdmVJbWFnZS5jb25zdEJpdHMoKSwgU291cmNlRm9ybWF0QkdSQTgsIGltYWdlLT53
aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCksIDAsIGZvcm1hdCwgdHlwZSwgYWxwaGFPcCwgb3V0cHV0
VmVjdG9yLmRhdGEoKSk7CisgICAgcmV0dXJuIHBhY2tQaXhlbHMocXRJbWFnZS5jb25zdEJpdHMo
KSwgU291cmNlRm9ybWF0QkdSQTgsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCksIDAs
IGZvcm1hdCwgdHlwZSwgYWxwaGFPcCwgb3V0cHV0VmVjdG9yLmRhdGEoKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250
ZXh0TG9zdENhbGxiYWNrPikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAppbmRleCA1YzhhM2FlLi5jOGIzNWE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC0xMDY2LDcgKzEwNjYsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6Y2xlYXJQbGF0Zm9ybVNoYWRvdygpCiAgICAgbV9kYXRhLT5zaGFkb3ctPmNsZWFy
KCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwdXNoVHJhbnNwYXJlbmN5TGF5ZXJJbnRl
cm5hbChjb25zdCBRUmVjdCAmcmVjdCwgcXJlYWwgb3BhY2l0eSwgUUltYWdlJiBhbHBoYU1hc2sp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cHVzaFRyYW5zcGFyZW5jeUxheWVySW50ZXJuYWwoY29u
c3QgUVJlY3QgJnJlY3QsIHFyZWFsIG9wYWNpdHksIFFQaXhtYXAmIGFscGhhTWFzaykKIHsKICAg
ICBRUGFpbnRlciogcCA9IG1fZGF0YS0+cCgpOwogCkBAIC0xMTAxLDcgKzExMDEsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9w
YWNpdHkpCiAgICAgICAgIGggPSBpbnQocUJvdW5kKHFyZWFsKDApLCBkZXZpY2VDbGlwLmhlaWdo
dCgpLCAocXJlYWwpaCkgKyAyKTsKICAgICB9CiAKLSAgICBRSW1hZ2UgZW1wdHlBbHBoYU1hc2s7
CisgICAgUVBpeG1hcCBlbXB0eUFscGhhTWFzazsKICAgICBtX2RhdGEtPmxheWVycy5wdXNoKG5l
dyBUcmFuc3BhcmVuY3lMYXllcihwLCBRUmVjdCh4LCB5LCB3LCBoKSwgb3BhY2l0eSwgZW1wdHlB
bHBoYU1hc2spKTsKICAgICArK21fZGF0YS0+bGF5ZXJDb3VudDsKIH0KQEAgLTExMTUsNyArMTEx
NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVy
KCkKICAgICBpZiAoIWxheWVyLT5hbHBoYU1hc2suaXNOdWxsKCkpIHsKICAgICAgICAgbGF5ZXIt
PnBhaW50ZXIucmVzZXRUcmFuc2Zvcm0oKTsKICAgICAgICAgbGF5ZXItPnBhaW50ZXIuc2V0Q29t
cG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfRGVzdGluYXRpb25Jbik7Ci0g
ICAgICAgIGxheWVyLT5wYWludGVyLmRyYXdJbWFnZShRUG9pbnQoKSwgbGF5ZXItPmFscGhhTWFz
ayk7CisgICAgICAgIGxheWVyLT5wYWludGVyLmRyYXdQaXhtYXAoUVBvaW50KCksIGxheWVyLT5h
bHBoYU1hc2spOwogICAgIH0gZWxzZQogICAgICAgICAtLW1fZGF0YS0+bGF5ZXJDb3VudDsgLy8g
c2VlIHRoZSBjb21tZW50IGZvciBsYXllckNvdW50CiAgICAgbGF5ZXItPnBhaW50ZXIuZW5kKCk7
CkBAIC0xMTI0LDcgKzExMjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1U
cmFuc3BhcmVuY3lMYXllcigpCiAgICAgcC0+c2F2ZSgpOwogICAgIHAtPnJlc2V0VHJhbnNmb3Jt
KCk7CiAgICAgcC0+c2V0T3BhY2l0eShsYXllci0+b3BhY2l0eSk7Ci0gICAgcC0+ZHJhd0ltYWdl
KGxheWVyLT5vZmZzZXQsIGxheWVyLT5pbWFnZSk7CisgICAgcC0+ZHJhd1BpeG1hcChsYXllci0+
b2Zmc2V0LCBsYXllci0+cGl4bWFwKTsKICAgICBwLT5yZXN0b3JlKCk7CiAKICAgICBkZWxldGUg
bGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9J
bWFnZUJ1ZmZlckRhdGFRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
SW1hZ2VCdWZmZXJEYXRhUXQuaAppbmRleCA5NDA2NWQzLi45Y2Y3ODJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlckRhdGFRdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyRGF0YVF0
LmgKQEAgLTI1LDggKzI1LDggQEAKIAogI2luY2x1ZGUgIkltYWdlLmgiCiAKLSNpbmNsdWRlIDxR
SW1hZ2U+CiAjaW5jbHVkZSA8UVBhaW50ZXI+CisjaW5jbHVkZSA8UVBpeG1hcD4KIAogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zOSw3ICszOSw5
IEBAIGNsYXNzIEltYWdlQnVmZmVyRGF0YSB7CiBwdWJsaWM6CiAgICAgSW1hZ2VCdWZmZXJEYXRh
KGNvbnN0IEludFNpemUmKTsKIAotICAgIFFJbWFnZSBtX25hdGl2ZUltYWdlOworICAgIFFJbWFn
ZSB0b1FJbWFnZSgpIGNvbnN0OworCisgICAgUVBpeG1hcCBtX3BpeG1hcDsKICAgICBPd25QdHI8
UVBhaW50ZXI+IG1fcGFpbnRlcjsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0
LmNwcAppbmRleCAzMmRkMzlhLi5iOWI5ZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcApAQCAtMzIsNyArMzIsNiBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgog
I2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVF0Lmgi
CiAjaW5jbHVkZSAiU3RpbGxJbWFnZVF0LmgiCiAjaW5jbHVkZSAiVHJhbnNwYXJlbmN5TGF5ZXIu
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00MywyMiArNDIsMjMgQEAKICNp
bmNsdWRlIDxRSW1hZ2U+CiAjaW5jbHVkZSA8UUltYWdlV3JpdGVyPgogI2luY2x1ZGUgPFFQYWlu
dGVyPgorI2luY2x1ZGUgPFFQaXhtYXA+CiAjaW5jbHVkZSA8bWF0aC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIEltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNp
emUmIHNpemUpCi0gICAgOiBtX25hdGl2ZUltYWdlKHNpemUsIE5hdGl2ZUltYWdlUXQ6OmRlZmF1
bHRGb3JtYXRGb3JBbHBoYUVuYWJsZWRJbWFnZXMoKSkKKyAgICA6IG1fcGl4bWFwKHNpemUpCiB7
Ci0gICAgaWYgKG1fbmF0aXZlSW1hZ2UuaXNOdWxsKCkpCisgICAgaWYgKG1fcGl4bWFwLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX25hdGl2ZUltYWdlLmZpbGwoUUNvbG9yKFF0
Ojp0cmFuc3BhcmVudCkpOworICAgIG1fcGl4bWFwLmZpbGwoUUNvbG9yKFF0Ojp0cmFuc3BhcmVu
dCkpOwogCiAgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBuZXcgUVBhaW50ZXI7CiAgICAgbV9wYWlu
dGVyID0gYWRvcHRQdHIocGFpbnRlcik7CiAKLSAgICBpZiAoIXBhaW50ZXItPmJlZ2luKCZtX25h
dGl2ZUltYWdlKSkKKyAgICBpZiAoIXBhaW50ZXItPmJlZ2luKCZtX3BpeG1hcCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIFNpbmNlIEltYWdlQnVmZmVyIGlzIHVzZWQgbWFpbmx5IGZvciBD
YW52YXMsIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZQpAQCAtNzYsNyArNzYsMjIgQEAgSW1hZ2VCdWZm
ZXJEYXRhOjpJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBwYWludGVy
LT5zZXRCcnVzaChicnVzaCk7CiAgICAgcGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWlu
dGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlT3Zlcik7CiAgICAgCi0gICAgbV9pbWFnZSA9IFN0
aWxsSW1hZ2U6OmNyZWF0ZUZvclJlbmRlcmluZygmbV9uYXRpdmVJbWFnZSk7CisgICAgbV9pbWFn
ZSA9IFN0aWxsSW1hZ2U6OmNyZWF0ZUZvclJlbmRlcmluZygmbV9waXhtYXApOworfQorCitRSW1h
Z2UgSW1hZ2VCdWZmZXJEYXRhOjp0b1FJbWFnZSgpIGNvbnN0Cit7CisgICAgUVBhaW50RW5naW5l
KiBwYWludEVuZ2luZSA9IG1fcGl4bWFwLnBhaW50RW5naW5lKCk7CisgICAgaWYgKCFwYWludEVu
Z2luZSB8fCBwYWludEVuZ2luZS0+dHlwZSgpICE9IFFQYWludEVuZ2luZTo6UmFzdGVyKQorICAg
ICAgICByZXR1cm4gbV9waXhtYXAudG9JbWFnZSgpOworCisgICAgLy8gUVJhc3RlclBpeG1hcERh
dGE6OnRvSW1hZ2UoKSB3aWxsIGRlZXAtY29weSB0aGUgYmFja2luZyBRSW1hZ2UgaWYgdGhlcmUn
cyBhbiBhY3RpdmUgUVBhaW50ZXIgb24gaXQuCisgICAgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNv
bnMsIHdlIGRvbid0IHdhbnQgdGhhdCBoZXJlLCBzbyB3ZSB0ZW1wb3JhcmlseSByZWRpcmVjdCB0
aGUgcGFpbnQgZW5naW5lLgorICAgIFFQYWludERldmljZSogY3VycmVudFBhaW50RGV2aWNlID0g
cGFpbnRFbmdpbmUtPnBhaW50RGV2aWNlKCk7CisgICAgcGFpbnRFbmdpbmUtPnNldFBhaW50RGV2
aWNlKDApOworICAgIFFJbWFnZSBpbWFnZSA9IG1fcGl4bWFwLnRvSW1hZ2UoKTsKKyAgICBwYWlu
dEVuZ2luZS0+c2V0UGFpbnREZXZpY2UoY3VycmVudFBhaW50RGV2aWNlKTsKKyAgICByZXR1cm4g
aW1hZ2U7CiB9CiAKIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXpl
LCBmbG9hdCAvKiByZXNvbHV0aW9uU2NhbGUgKi8sIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUs
IERlZmVycmFsTW9kZSwgYm9vbCYgc3VjY2VzcykKQEAgLTEwNSw5ICsxMjAsOSBAQCBHcmFwaGlj
c0NvbnRleHQqIEltYWdlQnVmZmVyOjpjb250ZXh0KCkgY29uc3QKIFBhc3NSZWZQdHI8SW1hZ2U+
IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNv
bnN0CiB7CiAgICAgaWYgKGNvcHlCZWhhdmlvciA9PSBDb3B5QmFja2luZ1N0b3JlKQotICAgICAg
ICByZXR1cm4gU3RpbGxJbWFnZTo6Y3JlYXRlKG1fZGF0YS5tX25hdGl2ZUltYWdlKTsKKyAgICAg
ICAgcmV0dXJuIFN0aWxsSW1hZ2U6OmNyZWF0ZShtX2RhdGEubV9waXhtYXApOwogCi0gICAgcmV0
dXJuIFN0aWxsSW1hZ2U6OmNyZWF0ZUZvclJlbmRlcmluZygmbV9kYXRhLm1fbmF0aXZlSW1hZ2Up
OworICAgIHJldHVybiBTdGlsbEltYWdlOjpjcmVhdGVGb3JSZW5kZXJpbmcoJm1fZGF0YS5tX3Bp
eG1hcCk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0
Q29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKQEAgLTEzNCwxMiArMTQ5LDEyIEBAIHZv
aWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjCiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGZsb2F0UmVjdCkgY29uc3QKIHsKLSAg
ICBRSW1hZ2UqIG5hdGl2ZUltYWdlID0gbV9kYXRhLm1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CisgICAgUVBpeG1hcCogbmF0aXZlSW1hZ2UgPSBtX2RhdGEubV9pbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAg
ICAgICByZXR1cm47CiAKICAgICBJbnRSZWN0IHJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGZsb2F0
UmVjdCk7Ci0gICAgUUltYWdlIGFscGhhTWFzayA9ICpuYXRpdmVJbWFnZTsKKyAgICBRUGl4bWFw
IGFscGhhTWFzayA9ICpuYXRpdmVJbWFnZTsKIAogICAgIGNvbnRleHQtPnB1c2hUcmFuc3BhcmVu
Y3lMYXllckludGVybmFsKHJlY3QsIDEuMCwgYWxwaGFNYXNrKTsKIH0KQEAgLTE1MCw3ICsxNjUs
NyBAQCB2b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qg
VmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKQogICAgIGlmIChpc1BhaW50aW5nKQogICAgICAgICBt
X2RhdGEubV9wYWludGVyLT5lbmQoKTsKIAotICAgIFFJbWFnZSBpbWFnZSA9IG1fZGF0YS5tX25h
dGl2ZUltYWdlLmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAgIFFJ
bWFnZSBpbWFnZSA9IG1fZGF0YS50b1FJbWFnZSgpLmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZv
cm1hdF9BUkdCMzIpOwogICAgIEFTU0VSVCghaW1hZ2UuaXNOdWxsKCkpOwogCiAgICAgdWNoYXIq
IGJpdHMgPSBpbWFnZS5iaXRzKCk7CkBAIC0xNjcsMTAgKzE4MiwxMCBAQCB2b2lkIEltYWdlQnVm
ZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxvb2tV
cFRhYmxlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9kYXRhLm1fbmF0aXZlSW1hZ2UgPSBp
bWFnZTsKKyAgICBtX2RhdGEubV9waXhtYXAgPSBRUGl4bWFwOjpmcm9tSW1hZ2UoaW1hZ2UpOwog
CiAgICAgaWYgKGlzUGFpbnRpbmcpCi0gICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPmJlZ2luKCZt
X2RhdGEubV9uYXRpdmVJbWFnZSk7CisgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPmJlZ2luKCZt
X2RhdGEubV9waXhtYXApOwogfQogCiB0ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KQEAg
LTIwOSw3ICsyMjQsNyBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURh
dGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZQogICAgIGludCBudW1Sb3dz
ID0gZW5keSAtIG9yaWdpbnk7CiAKICAgICAvLyBOT1RFOiBGb3IgdW5tdWx0aXBsaWVkIGRhdGEs
IHdlIHVuZG8gdGhlIHByZW11bHRpcGxpY2F0aW9uIGJlbG93LgotICAgIFFJbWFnZSBpbWFnZSA9
IGltYWdlRGF0YS5tX25hdGl2ZUltYWdlLmNvbnZlcnRUb0Zvcm1hdChOYXRpdmVJbWFnZVF0Ojpk
ZWZhdWx0Rm9ybWF0Rm9yQWxwaGFFbmFibGVkSW1hZ2VzKCkpOworICAgIFFJbWFnZSBpbWFnZSA9
IGltYWdlRGF0YS50b1FJbWFnZSgpLmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdC
MzJfUHJlbXVsdGlwbGllZCk7CiAKICAgICBBU1NFUlQoIWltYWdlLmlzTnVsbCgpKTsKIApAQCAt
MzQzLDcgKzM1OCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBt
dWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAKICAgICBib29sIGlzUGFp
bnRpbmcgPSBtX2RhdGEubV9wYWludGVyLT5pc0FjdGl2ZSgpOwogICAgIGlmICghaXNQYWludGlu
ZykKLSAgICAgICAgbV9kYXRhLm1fcGFpbnRlci0+YmVnaW4oJm1fZGF0YS5tX25hdGl2ZUltYWdl
KTsKKyAgICAgICAgbV9kYXRhLm1fcGFpbnRlci0+YmVnaW4oJm1fZGF0YS5tX3BpeG1hcCk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnNhdmUoKTsKIApAQCAtMzYyLDcg
KzM3Nyw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBs
aWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAgICAgICAgIG1fZGF0YS5tX3BhaW50
ZXItPnJlc3RvcmUoKTsKIH0KIAotc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoY29uc3QgUUltYWdl
JiBpbWFnZSwgY29uc3QgU3RyaW5nJiBmb3JtYXQsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgUUJ5
dGVBcnJheSYgZGF0YSkKK3N0YXRpYyBib29sIGVuY29kZUltYWdlKGNvbnN0IFFQaXhtYXAmIHBp
eG1hcCwgY29uc3QgU3RyaW5nJiBmb3JtYXQsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgUUJ5dGVB
cnJheSYgZGF0YSkKIHsKICAgICBpbnQgY29tcHJlc3Npb25RdWFsaXR5ID0gMTAwOwogICAgIGlm
IChxdWFsaXR5ICYmICpxdWFsaXR5ID49IDAuMCAmJiAqcXVhbGl0eSA8PSAxLjApCkBAIC0zNzAs
NyArMzg1LDcgQEAgc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoY29uc3QgUUltYWdlJiBpbWFnZSwg
Y29uc3QgU3RyaW5nJiBmb3JtYXQsIGNvbnN0IGRvdWJsZSoKIAogICAgIFFCdWZmZXIgYnVmZmVy
KCZkYXRhKTsKICAgICBidWZmZXIub3BlbihRQnVmZmVyOjpXcml0ZU9ubHkpOwotICAgIGJvb2wg
c3VjY2VzcyA9IGltYWdlLnNhdmUoJmJ1ZmZlciwgZm9ybWF0LnV0ZjgoKS5kYXRhKCksIGNvbXBy
ZXNzaW9uUXVhbGl0eSk7CisgICAgYm9vbCBzdWNjZXNzID0gcGl4bWFwLnNhdmUoJmJ1ZmZlciwg
Zm9ybWF0LnV0ZjgoKS5kYXRhKCksIGNvbXByZXNzaW9uUXVhbGl0eSk7CiAgICAgYnVmZmVyLmNs
b3NlKCk7CiAKICAgICByZXR1cm4gc3VjY2VzczsKQEAgLTM4MiwxMCArMzk3LDEwIEBAIFN0cmlu
ZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRv
dWJsZSogcXVhbGl0eSwgQ29vCiAKICAgICAvLyBRSW1hZ2VXcml0ZXIgZG9lcyBub3Qgc3VwcG9y
dCBtaW1ldHlwZXMuIEl0IGRvZXMgc3VwcG9ydCBRdCBpbWFnZSBmb3JtYXRzIChwbmcsCiAgICAg
Ly8gZ2lmLCBqcGVnLi4uLCB4cG0pIHNvIHNraXAgdGhlIGltYWdlLyB0byBnZXQgdGhlIFF0IGlt
YWdlIGZvcm1hdCB1c2VkIHRvIGVuY29kZQotICAgIC8vIHRoZSBtX25hdGl2ZUltYWdlIGltYWdl
LgorICAgIC8vIHRoZSBtX3BpeG1hcCBpbWFnZS4KIAogICAgIFFCeXRlQXJyYXkgZGF0YTsKLSAg
ICBpZiAoIWVuY29kZUltYWdlKG1fZGF0YS5tX25hdGl2ZUltYWdlLCBtaW1lVHlwZS5zdWJzdHJp
bmcoc2l6ZW9mICJpbWFnZSIpLCBxdWFsaXR5LCBkYXRhKSkKKyAgICBpZiAoIWVuY29kZUltYWdl
KG1fZGF0YS5tX3BpeG1hcCwgbWltZVR5cGUuc3Vic3RyaW5nKHNpemVvZiAiaW1hZ2UiKSwgcXVh
bGl0eSwgZGF0YSkpCiAgICAgICAgIHJldHVybiAiZGF0YTosIjsKIAogICAgIHJldHVybiAiZGF0
YToiICsgbWltZVR5cGUgKyAiO2Jhc2U2NCwiICsgZGF0YS50b0Jhc2U2NCgpLmRhdGEoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2Rl
clF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2Rl
clF0LmNwcAppbmRleCBkNDVlNjFjLi5hN2Q5Zjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwCkBAIC0yNzIsNyAr
MjcyLDkgQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNv
bnN0CiAgICAgZWxzZQogICAgICAgICBmb3JtYXQgPSBRSW1hZ2U6OkZvcm1hdF9SR0IzMjsKIAot
ICAgIHJldHVybiBuZXcgUUltYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8dWNoYXIqPihtX2J5dGVzKSwg
bV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgc2l6ZW9mKFBpeGVsRGF0YSkgKiBtX3Np
emUud2lkdGgoKSwgZm9ybWF0KTsKKyAgICBRSW1hZ2UgaW1nKHJlaW50ZXJwcmV0X2Nhc3Q8dWNo
YXIqPihtX2J5dGVzKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgc2l6ZW9mKFBp
eGVsRGF0YSkgKiBtX3NpemUud2lkdGgoKSwgZm9ybWF0KTsKKworICAgIHJldHVybiBuZXcgUVBp
eG1hcChRUGl4bWFwOjpmcm9tSW1hZ2UoaW1nKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKaW5kZXggNWJlMzFjZS4uZmMwMWM0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VR
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5j
cHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCi0jaW5jbHVkZSAi
TmF0aXZlSW1hZ2VRdC5oIgogI2luY2x1ZGUgIlNoYWRvd0JsdXIuaCIKICNpbmNsdWRlICJTdGls
bEltYWdlUXQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTU2LDcgKzU1
LDcgQEAKIFFfR1VJX0VYUE9SVCBRUGl4bWFwIHF0X3BpeG1hcEZyb21XaW5IQklUTUFQKEhCSVRN
QVAsIGludCBoYml0bWFwRm9ybWF0ID0gMCk7CiAjZW5kaWYKIAotdHlwZWRlZiBRSGFzaDxRQnl0
ZUFycmF5LCBRSW1hZ2U+IFdlYkdyYXBoaWNIYXNoOwordHlwZWRlZiBRSGFzaDxRQnl0ZUFycmF5
LCBRUGl4bWFwPiBXZWJHcmFwaGljSGFzaDsKIFFfR0xPQkFMX1NUQVRJQyhXZWJHcmFwaGljSGFz
aCwgX2dyYXBoaWNzKQogCiBzdGF0aWMgdm9pZCBlYXJseUNsZWFyR3JhcGhpY3MoKQpAQCAtNzAs
MjggKzY5LDI4IEBAIHN0YXRpYyBXZWJHcmFwaGljSGFzaCogZ3JhcGhpY3MoKQogCiAgICAgaWYg
KGhhc2gtPmlzRW1wdHkoKSkgewogCi0gICAgICAgIC8vIHByZXZlbnQgflFJbWFnZSBydW5uaW5n
IGFmdGVyIH5RQXBwbGljYXRpb24gKGxlYWtzIG5hdGl2ZSBpbWFnZXMpCisgICAgICAgIC8vIHBy
ZXZlbnQgflFQaXhtYXAgcnVubmluZyBhZnRlciB+UUFwcGxpY2F0aW9uIChsZWFrcyBuYXRpdmUg
cGl4bWFwcykKICAgICAgICAgcUFkZFBvc3RSb3V0aW5lKGVhcmx5Q2xlYXJHcmFwaGljcyk7CiAK
ICAgICAgICAgLy8gUVdlYlNldHRpbmdzOjpNaXNzaW5nSW1hZ2VHcmFwaGljCi0gICAgICAgIGhh
c2gtPmluc2VydCgibWlzc2luZ0ltYWdlIiwgUUltYWdlKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQv
cmVzb3VyY2VzL21pc3NpbmdJbWFnZS5wbmciKSkpOworICAgICAgICBoYXNoLT5pbnNlcnQoIm1p
c3NpbmdJbWFnZSIsIFFQaXhtYXAoUUxhdGluMVN0cmluZygiOndlYmtpdC9yZXNvdXJjZXMvbWlz
c2luZ0ltYWdlLnBuZyIpKSk7CiAgICAgICAgIC8vIFFXZWJTZXR0aW5nczo6TWlzc2luZ1BsdWdp
bkdyYXBoaWMKLSAgICAgICAgaGFzaC0+aW5zZXJ0KCJudWxsUGx1Z2luIiwgUUltYWdlKFFMYXRp
bjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2VzL251bGxQbHVnaW4ucG5nIikpKTsKKyAgICAgICAg
aGFzaC0+aW5zZXJ0KCJudWxsUGx1Z2luIiwgUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6d2Via2l0
L3Jlc291cmNlcy9udWxsUGx1Z2luLnBuZyIpKSk7CiAgICAgICAgIC8vIFFXZWJTZXR0aW5nczo6
RGVmYXVsdEZyYW1lSWNvbkdyYXBoaWMKLSAgICAgICAgaGFzaC0+aW5zZXJ0KCJ1cmxJY29uIiwg
UUltYWdlKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2VzL3VybEljb24ucG5nIikpKTsK
KyAgICAgICAgaGFzaC0+aW5zZXJ0KCJ1cmxJY29uIiwgUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6
d2Via2l0L3Jlc291cmNlcy91cmxJY29uLnBuZyIpKSk7CiAgICAgICAgIC8vIFFXZWJTZXR0aW5n
czo6VGV4dEFyZWFTaXplR3JpcENvcm5lckdyYXBoaWMKLSAgICAgICAgaGFzaC0+aW5zZXJ0KCJ0
ZXh0QXJlYVJlc2l6ZUNvcm5lciIsIFFJbWFnZShRTGF0aW4xU3RyaW5nKCI6d2Via2l0L3Jlc291
cmNlcy90ZXh0QXJlYVJlc2l6ZUNvcm5lci5wbmciKSkpOworICAgICAgICBoYXNoLT5pbnNlcnQo
InRleHRBcmVhUmVzaXplQ29ybmVyIiwgUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6d2Via2l0L3Jl
c291cmNlcy90ZXh0QXJlYVJlc2l6ZUNvcm5lci5wbmciKSkpOwogICAgICAgICAvLyBRV2ViU2V0
dGluZ3M6OkRlbGV0ZUJ1dHRvbkdyYXBoaWMKLSAgICAgICAgaGFzaC0+aW5zZXJ0KCJkZWxldGVC
dXR0b24iLCBRSW1hZ2UoUUxhdGluMVN0cmluZygiOndlYmtpdC9yZXNvdXJjZXMvZGVsZXRlQnV0
dG9uLnBuZyIpKSk7CisgICAgICAgIGhhc2gtPmluc2VydCgiZGVsZXRlQnV0dG9uIiwgUVBpeG1h
cChRTGF0aW4xU3RyaW5nKCI6d2Via2l0L3Jlc291cmNlcy9kZWxldGVCdXR0b24ucG5nIikpKTsK
ICAgICAgICAgLy8gUVdlYlNldHRpbmdzOjpJbnB1dFNwZWVjaEJ1dHRvbkdyYXBoaWMKLSAgICAg
ICAgaGFzaC0+aW5zZXJ0KCJpbnB1dFNwZWVjaCIsIFFJbWFnZShRTGF0aW4xU3RyaW5nKCI6d2Vi
a2l0L3Jlc291cmNlcy9pbnB1dFNwZWVjaC5wbmciKSkpOworICAgICAgICBoYXNoLT5pbnNlcnQo
ImlucHV0U3BlZWNoIiwgUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6d2Via2l0L3Jlc291cmNlcy9p
bnB1dFNwZWVjaC5wbmciKSkpOwogICAgIH0KIAogICAgIHJldHVybiBoYXNoOwogfQogCiAvLyBU
aGlzIGZ1bmN0aW9uIGxvYWRzIHJlc291cmNlcyBpbnRvIFdlYktpdAotc3RhdGljIFFJbWFnZSBs
b2FkUmVzb3VyY2VJbWFnZShjb25zdCBjaGFyICpuYW1lKQorc3RhdGljIFFQaXhtYXAgbG9hZFJl
c291cmNlUGl4bWFwKGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgICAgcmV0dXJuIGdyYXBoaWNzKCkt
PnZhbHVlKG5hbWUpOwogfQpAQCAtMTE4LDIzICsxMTcsMjMgQEAgYm9vbCBGcmFtZURhdGE6OmNs
ZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKIAogUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQ
bGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCiB7Ci0gICAgcmV0dXJuIFN0aWxsSW1h
Z2U6OmNyZWF0ZShsb2FkUmVzb3VyY2VJbWFnZShuYW1lKSk7CisgICAgcmV0dXJuIFN0aWxsSW1h
Z2U6OmNyZWF0ZShsb2FkUmVzb3VyY2VQaXhtYXAobmFtZSkpOwogfQogCi12b2lkIEltYWdlOjpz
ZXRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFFJbWFnZSYgaW1hZ2Up
Cit2b2lkIEltYWdlOjpzZXRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0
IFFQaXhtYXAmIHBpeG1hcCkKIHsKICAgICBXZWJHcmFwaGljSGFzaCogaCA9IGdyYXBoaWNzKCk7
Ci0gICAgaWYgKGltYWdlLmlzTnVsbCgpKQorICAgIGlmIChwaXhtYXAuaXNOdWxsKCkpCiAgICAg
ICAgIGgtPnJlbW92ZShuYW1lKTsKICAgICBlbHNlCi0gICAgICAgIGgtPmluc2VydChuYW1lLCBp
bWFnZSk7CisgICAgICAgIGgtPmluc2VydChuYW1lLCBwaXhtYXApOwogfQogCiB2b2lkIEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICBRSW1h
Z2UqIGZyYW1lSW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlmICgh
ZnJhbWVJbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5
ZXQuCisgICAgUVBpeG1hcCogZnJhbWVQaXhtYXAgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOworICAgIGlmICghZnJhbWVQaXhtYXApIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0
IGhhdmUgYW4gaW1hZ2UgeWV0LgogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoSU1BR0Vf
REVDT0RFUl9ET1dOX1NBTVBMSU5HKQpAQCAtMTQ5LDM4ICsxNDgsMzQgQEAgdm9pZCBJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdAogICAgIGlmICghZHIud2lkdGgoKSB8fCAhZHIuaGVpZ2h0KCkgfHwgIXRyLndp
ZHRoKCkgfHwgIXRyLmhlaWdodCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBRSW1hZ2UgaW1h
Z2UgPSAqZnJhbWVJbWFnZTsKLSAgICBpZiAodHIueCgpIHx8IHRyLnkoKSB8fCB0ci53aWR0aCgp
ICE9IGltYWdlLndpZHRoKCkgfHwgdHIuaGVpZ2h0KCkgIT0gaW1hZ2UuaGVpZ2h0KCkpCi0gICAg
ICAgIGltYWdlID0gaW1hZ2UuY29weSh0cik7CisgICAgUVBpeG1hcCBwaXhtYXAgPSAqZnJhbWVQ
aXhtYXA7CisgICAgaWYgKHRyLngoKSB8fCB0ci55KCkgfHwgdHIud2lkdGgoKSAhPSBwaXhtYXAu
d2lkdGgoKSB8fCB0ci5oZWlnaHQoKSAhPSBwaXhtYXAuaGVpZ2h0KCkpCisgICAgICAgIHBpeG1h
cCA9IHBpeG1hcC5jb3B5KHRyKTsKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIHByZXZpb3VzT3Bl
cmF0b3IgPSBjdHh0LT5jb21wb3NpdGVPcGVyYXRpb24oKTsKIAotICAgIGN0eHQtPnNldENvbXBv
c2l0ZU9wZXJhdGlvbighaW1hZ2UuaGFzQWxwaGFDaGFubmVsKCkgJiYgb3AgPT0gQ29tcG9zaXRl
U291cmNlT3ZlciA/IENvbXBvc2l0ZUNvcHkgOiBvcCk7CisgICAgY3R4dC0+c2V0Q29tcG9zaXRl
T3BlcmF0aW9uKCFwaXhtYXAuaGFzQWxwaGEoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVy
ID8gQ29tcG9zaXRlQ29weSA6IG9wKTsKIAogICAgIFFQYWludGVyKiBwID0gY3R4dC0+cGxhdGZv
cm1Db250ZXh0KCk7CiAgICAgUVRyYW5zZm9ybSB0cmFuc2Zvcm0ocGF0dGVyblRyYW5zZm9ybSk7
CiAKLSAgICAvLyBJZiB0aGlzIHdvdWxkIGRyYXcgbW9yZSB0aGFuIG9uZSBzY2FsZWQgdGlsZSwg
d2Ugc2NhbGUgdGhlIGltYWdlIGZpcnN0IGFuZCB0aGVuIHVzZSB0aGUgcmVzdWx0IHRvIGRyYXcu
CisgICAgLy8gSWYgdGhpcyB3b3VsZCBkcmF3IG1vcmUgdGhhbiBvbmUgc2NhbGVkIHRpbGUsIHdl
IHNjYWxlIHRoZSBwaXhtYXAgZmlyc3QgYW5kIHRoZW4gdXNlIHRoZSByZXN1bHQgdG8gZHJhdy4K
ICAgICBpZiAodHJhbnNmb3JtLnR5cGUoKSA9PSBRVHJhbnNmb3JtOjpUeFNjYWxlKSB7CiAgICAg
ICAgIFFSZWN0RiB0aWxlUmVjdEluVGFyZ2V0Q29vcmRzID0gKHRyYW5zZm9ybSAqIFFUcmFuc2Zv
cm0oKS50cmFuc2xhdGUocGhhc2UueCgpLCBwaGFzZS55KCkpKS5tYXBSZWN0KHRyKTsKIAogICAg
ICAgICBib29sIHRpbGVXaWxsQmVQYWludGVkT25seU9uY2UgPSB0aWxlUmVjdEluVGFyZ2V0Q29v
cmRzLmNvbnRhaW5zKGRyKTsKICAgICAgICAgaWYgKCF0aWxlV2lsbEJlUGFpbnRlZE9ubHlPbmNl
KSB7Ci0gICAgICAgICAgICBRU2l6ZUYgc2NhbGVkU2l6ZShmbG9hdChpbWFnZS53aWR0aCgpKSAq
IHRyYW5zZm9ybS5tMTEoKSwgZmxvYXQoaW1hZ2UuaGVpZ2h0KCkpICogdHJhbnNmb3JtLm0yMigp
KTsKLSAgICAgICAgICAgIFFJbWFnZSBzY2FsZWRJbWFnZTsKLSAgICAgICAgICAgIGlmIChpbWFn
ZS5oYXNBbHBoYUNoYW5uZWwoKSkgewotICAgICAgICAgICAgICAgIHNjYWxlZEltYWdlID0gUUlt
YWdlKHNjYWxlZFNpemUudG9TaXplKCksIE5hdGl2ZUltYWdlUXQ6OmRlZmF1bHRGb3JtYXRGb3JB
bHBoYUVuYWJsZWRJbWFnZXMoKSk7Ci0gICAgICAgICAgICAgICAgc2NhbGVkSW1hZ2UuZmlsbChR
dDo6dHJhbnNwYXJlbnQpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc2Nh
bGVkSW1hZ2UgPSBRSW1hZ2Uoc2NhbGVkU2l6ZS50b1NpemUoKSwgTmF0aXZlSW1hZ2VRdDo6ZGVm
YXVsdEZvcm1hdEZvck9wYXF1ZUltYWdlcygpKTsKLQorICAgICAgICAgICAgUVNpemVGIHNjYWxl
ZFNpemUoZmxvYXQocGl4bWFwLndpZHRoKCkpICogdHJhbnNmb3JtLm0xMSgpLCBmbG9hdChwaXht
YXAuaGVpZ2h0KCkpICogdHJhbnNmb3JtLm0yMigpKTsKKyAgICAgICAgICAgIFFQaXhtYXAgc2Nh
bGVkUGl4bWFwKHNjYWxlZFNpemUudG9TaXplKCkpOworICAgICAgICAgICAgaWYgKHBpeG1hcC5o
YXNBbHBoYSgpKQorICAgICAgICAgICAgICAgIHNjYWxlZFBpeG1hcC5maWxsKFF0Ojp0cmFuc3Bh
cmVudCk7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgUVBhaW50ZXIgcGFpbnRlcigm
c2NhbGVkSW1hZ2UpOworICAgICAgICAgICAgICAgIFFQYWludGVyIHBhaW50ZXIoJnNjYWxlZFBp
eG1hcCk7CiAgICAgICAgICAgICAgICAgcGFpbnRlci5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50
ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2UpOwogICAgICAgICAgICAgICAgIHBhaW50ZXIuc2V0
UmVuZGVySGludHMocC0+cmVuZGVySGludHMoKSk7Ci0gICAgICAgICAgICAgICAgcGFpbnRlci5k
cmF3SW1hZ2UoUVJlY3QoMCwgMCwgc2NhbGVkSW1hZ2Uud2lkdGgoKSwgc2NhbGVkSW1hZ2UuaGVp
Z2h0KCkpLCBpbWFnZSk7CisgICAgICAgICAgICAgICAgcGFpbnRlci5kcmF3UGl4bWFwKFFSZWN0
KDAsIDAsIHNjYWxlZFBpeG1hcC53aWR0aCgpLCBzY2FsZWRQaXhtYXAuaGVpZ2h0KCkpLCBwaXht
YXApOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaW1hZ2UgPSBzY2FsZWRJbWFnZTsKKyAg
ICAgICAgICAgIHBpeG1hcCA9IHNjYWxlZFBpeG1hcDsKICAgICAgICAgICAgIHRyYW5zZm9ybSA9
IFFUcmFuc2Zvcm06OmZyb21UcmFuc2xhdGUodHJhbnNmb3JtLmR4KCksIHRyYW5zZm9ybS5keSgp
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE4OSw3ICsxODQsNyBAQCB2b2lkIEltYWdlOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3Qs
IGNvbnN0CiAgICAgdHJhbnNmb3JtICo9IFFUcmFuc2Zvcm0oKS50cmFuc2xhdGUocGhhc2UueCgp
LCBwaGFzZS55KCkpOwogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUodHIueCgpLCB0ci55KCkpOwog
Ci0gICAgUUJydXNoIGIoaW1hZ2UpOworICAgIFFCcnVzaCBiKHBpeG1hcCk7CiAgICAgYi5zZXRU
cmFuc2Zvcm0odHJhbnNmb3JtKTsKICAgICBwLT5maWxsUmVjdChkciwgYik7CiAKQEAgLTE5OSw3
ICsxOTQsNyBAQCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgICAgIGltYWdlT2JzZXJ2ZXIo
KS0+ZGlkRHJhdyh0aGlzKTsKIH0KIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFFJbWFnZSog
aW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdl
KFFQaXhtYXAqIHBpeG1hcCwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShv
YnNlcnZlcikKICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAgICAgLCBtX2ZyYW1lcygwKQpAQCAt
MjE3LDE0ICsyMTIsMTQgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFFJbWFnZSogaW1hZ2Us
IEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCiAg
ICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCiB7Ci0gICAgaW50IHdpZHRoID0gaW1hZ2UtPndp
ZHRoKCk7Ci0gICAgaW50IGhlaWdodCA9IGltYWdlLT5oZWlnaHQoKTsKKyAgICBpbnQgd2lkdGgg
PSBwaXhtYXAtPndpZHRoKCk7CisgICAgaW50IGhlaWdodCA9IHBpeG1hcC0+aGVpZ2h0KCk7CiAg
ICAgbV9kZWNvZGVkU2l6ZSA9IHdpZHRoICogaGVpZ2h0ICogNDsKICAgICBtX3NpemUgPSBJbnRT
aXplKHdpZHRoLCBoZWlnaHQpOwogCiAgICAgbV9mcmFtZXMuZ3JvdygxKTsKLSAgICBtX2ZyYW1l
c1swXS5tX2ZyYW1lID0gaW1hZ2U7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IGltYWdl
LT5oYXNBbHBoYUNoYW5uZWwoKTsKKyAgICBtX2ZyYW1lc1swXS5tX2ZyYW1lID0gcGl4bWFwOwor
ICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSBwaXhtYXAtPmhhc0FscGhhKCk7CiAgICAgbV9m
cmFtZXNbMF0ubV9oYXZlTWV0YWRhdGEgPSB0cnVlOwogICAgIGNoZWNrRm9yU29saWRDb2xvcigp
OwogfQpAQCAtMjQ1LDggKzI0MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwKICAgICBpZiAobm9ybWFsaXplZFNy
Yy5pc0VtcHR5KCkgfHwgbm9ybWFsaXplZERzdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFFJbWFnZSogaW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotCisg
ICAgUVBpeG1hcCogaW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlm
ICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjYwLDE5ICsyNTQsMTkgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0LAogI2VuZGlmCiAKICAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0g
Y3R4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCk7Ci0gICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0
aW9uKCFpbWFnZS0+aGFzQWxwaGFDaGFubmVsKCkgJiYgb3AgPT0gQ29tcG9zaXRlU291cmNlT3Zl
ciA/IENvbXBvc2l0ZUNvcHkgOiBvcCk7CisgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9u
KCFpbWFnZS0+aGFzQWxwaGEoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9z
aXRlQ29weSA6IG9wKTsKIAogICAgIGlmIChjdHh0LT5oYXNTaGFkb3coKSkgewogICAgICAgICBT
aGFkb3dCbHVyKiBzaGFkb3cgPSBjdHh0LT5zaGFkb3dCbHVyKCk7CiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjdHh0LCBu
b3JtYWxpemVkRHN0KTsKICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKICAgICAgICAgICAg
IFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCk7Ci0gICAgICAgICAgICBzaGFkb3dQYWludGVyLT5kcmF3SW1hZ2Uobm9ybWFsaXplZERzdCwg
KmltYWdlLCBub3JtYWxpemVkU3JjKTsKKyAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmRyYXdQ
aXhtYXAobm9ybWFsaXplZERzdCwgKmltYWdlLCBub3JtYWxpemVkU3JjKTsKICAgICAgICAgICAg
IHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY3R4dCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBj
dHh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd0ltYWdlKG5vcm1hbGl6ZWREc3QsICppbWFnZSwg
bm9ybWFsaXplZFNyYyk7CisgICAgY3R4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdQaXhtYXAo
bm9ybWFsaXplZERzdCwgKmltYWdlLCBub3JtYWxpemVkU3JjKTsKIAogICAgIGN0eHQtPnNldENv
bXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIApAQCAtMjg4LDIwICsyODIsMjAg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICBpZiAoZnJhbWVD
b3VudCgpID4gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUUltYWdlKiBmcmFtZUltYWdlID0g
ZnJhbWVBdEluZGV4KDApOwotICAgIGlmICghZnJhbWVJbWFnZSB8fCBmcmFtZUltYWdlLT53aWR0
aCgpICE9IDEgfHwgZnJhbWVJbWFnZS0+aGVpZ2h0KCkgIT0gMSkKKyAgICBRUGl4bWFwKiBmcmFt
ZVBpeG1hcCA9IGZyYW1lQXRJbmRleCgwKTsKKyAgICBpZiAoIWZyYW1lUGl4bWFwIHx8IGZyYW1l
UGl4bWFwLT53aWR0aCgpICE9IDEgfHwgZnJhbWVQaXhtYXAtPmhlaWdodCgpICE9IDEpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1faXNTb2xpZENvbG9yID0gdHJ1ZTsKLSAgICBtX3NvbGlkQ29s
b3IgPSBRQ29sb3I6OmZyb21SZ2JhKGZyYW1lSW1hZ2UtPnBpeGVsKDAsIDApKTsKKyAgICBtX3Nv
bGlkQ29sb3IgPSBRQ29sb3I6OmZyb21SZ2JhKGZyYW1lUGl4bWFwLT50b0ltYWdlKCkucGl4ZWwo
MCwgMCkpOwogfQogCiAjaWYgT1MoV0lORE9XUykKIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IEJp
dG1hcEltYWdlOjpjcmVhdGUoSEJJVE1BUCBoQml0bWFwKQogewotICAgIFFJbWFnZSogbmF0aXZl
SW1hZ2UgPSBuZXcgUUltYWdlKHF0X3BpeG1hcEZyb21XaW5IQklUTUFQKGhCaXRtYXApLnRvSW1h
Z2UoKSk7CisgICAgUVBpeG1hcCogcVBpeG1hcCA9IG5ldyBRUGl4bWFwKHF0X3BpeG1hcEZyb21X
aW5IQklUTUFQKGhCaXRtYXApKTsKIAotICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKG5h
dGl2ZUltYWdlKTsKKyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShxUGl4bWFwKTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9QYXR0ZXJuUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0
dGVyblF0LmNwcAppbmRleCA1Yzk0MTIyLi43YWFlNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXR0ZXJuUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdHRlcm5RdC5jcHAKQEAgLTMzLDEyICszMywxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFFCcnVzaCBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBh
dHRlcm4oKSBjb25zdAogewotICAgIFFJbWFnZSogaW1hZ2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoIWltYWdlKQorICAgIFFQaXhtYXAqIHBp
eG1hcCA9IHRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlm
ICghcGl4bWFwKQogICAgICAgICByZXR1cm4gUUJydXNoKCk7CiAKICAgICAvLyBRdCBtZXJnZXMg
cGF0dGVyIHNwYWNlIGFuZCB1c2VyIHNwYWNlIGl0c2VsZgotICAgIFFCcnVzaCBicnVzaCgqaW1h
Z2UpOworICAgIFFCcnVzaCBicnVzaCgqcGl4bWFwKTsKICAgICBicnVzaC5zZXRUcmFuc2Zvcm0o
bV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbik7CiAKICAgICByZXR1cm4gYnJ1c2g7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNw
cAppbmRleCAwNDEyNTIwLi44MDY2NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKQEAgLTM2LDQxICszNiw0MSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0aWxsSW1hZ2U6OlN0aWxsSW1hZ2UoY29uc3QgUUlt
YWdlJiBpbWFnZSkKLSAgICA6IG1faW1hZ2UobmV3IFFJbWFnZShpbWFnZSkpCi0gICAgLCBtX293
bnNJbWFnZSh0cnVlKQorU3RpbGxJbWFnZTo6U3RpbGxJbWFnZShjb25zdCBRUGl4bWFwJiBwaXht
YXApCisgICAgOiBtX3BpeG1hcChuZXcgUVBpeG1hcChwaXhtYXApKQorICAgICwgbV9vd25zUGl4
bWFwKHRydWUpCiB7fQogCi1TdGlsbEltYWdlOjpTdGlsbEltYWdlKGNvbnN0IFFJbWFnZSogaW1h
Z2UpCi0gICAgOiBtX2ltYWdlKGltYWdlKQotICAgICwgbV9vd25zSW1hZ2UoZmFsc2UpCitTdGls
bEltYWdlOjpTdGlsbEltYWdlKGNvbnN0IFFQaXhtYXAqIHBpeG1hcCkKKyAgICA6IG1fcGl4bWFw
KHBpeG1hcCkKKyAgICAsIG1fb3duc1BpeG1hcChmYWxzZSkKIHt9CiAKIFN0aWxsSW1hZ2U6On5T
dGlsbEltYWdlKCkKIHsKLSAgICBpZiAobV9vd25zSW1hZ2UpCi0gICAgICAgIGRlbGV0ZSBtX2lt
YWdlOworICAgIGlmIChtX293bnNQaXhtYXApCisgICAgICAgIGRlbGV0ZSBtX3BpeG1hcDsKIH0K
IAogYm9vbCBTdGlsbEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSgpCiB7Ci0gICAgcmV0dXJu
IG1faW1hZ2UtPmhhc0FscGhhQ2hhbm5lbCgpOworICAgIHJldHVybiBtX3BpeG1hcC0+aGFzQWxw
aGEoKTsKIH0KIAogSW50U2l6ZSBTdGlsbEltYWdlOjpzaXplKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gSW50U2l6ZShtX2ltYWdlLT53aWR0aCgpLCBtX2ltYWdlLT5oZWlnaHQoKSk7CisgICAgcmV0
dXJuIEludFNpemUobV9waXhtYXAtPndpZHRoKCksIG1fcGl4bWFwLT5oZWlnaHQoKSk7CiB9CiAK
IE5hdGl2ZUltYWdlUHRyIFN0aWxsSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkK
IHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxOYXRpdmVJbWFnZVB0cj4obV9pbWFnZSk7CisgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8TmF0aXZlSW1hZ2VQdHI+KG1fcGl4bWFwKTsKIH0KIAogdm9pZCBT
dGlsbEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewotICAgIGlmIChtX2ltYWdlLT5pc051bGwoKSkK
KyAgICBpZiAobV9waXhtYXAtPmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBGbG9h
dFJlY3Qgbm9ybWFsaXplZFNyYyA9IHNyYy5ub3JtYWxpemVkKCk7CkBAIC04NCwxMiArODQsMTIg
QEAgdm9pZCBTdGlsbEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkc3QsCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNo
YWRvdy0+YmVnaW5TaGFkb3dMYXllcihjdHh0LCBub3JtYWxpemVkRHN0KTsKICAgICAgICAgaWYg
KHNoYWRvd0NvbnRleHQpIHsKICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0g
c2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgICAgICAgICBzaGFkb3dQYWlu
dGVyLT5kcmF3SW1hZ2Uobm9ybWFsaXplZERzdCwgKm1faW1hZ2UsIG5vcm1hbGl6ZWRTcmMpOwor
ICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZHJhd1BpeG1hcChub3JtYWxpemVkRHN0LCAqbV9w
aXhtYXAsIG5vcm1hbGl6ZWRTcmMpOwogICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXll
cihjdHh0KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGN0eHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5kcmF3SW1hZ2Uobm9ybWFsaXplZERzdCwgKm1faW1hZ2UsIG5vcm1hbGl6ZWRTcmMpOworICAg
IGN0eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3UGl4bWFwKG5vcm1hbGl6ZWREc3QsICptX3Bp
eG1hcCwgbm9ybWFsaXplZFNyYyk7CiAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBy
ZXZpb3VzT3BlcmF0b3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oCmluZGV4IDhjOWVjMGQuLjA2MDliNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oCkBA
IC0zNCwxNCArMzQsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU3RpbGxJ
bWFnZSA6IHB1YmxpYyBJbWFnZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdGlsbEltYWdlPiBjcmVhdGUoY29uc3QgUUltYWdlJiBpbWFnZSkKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RpbGxJbWFnZT4gY3JlYXRlKGNvbnN0IFFQaXhtYXAmIHBpeG1hcCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGlsbEltYWdlKGlt
YWdlKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0aWxsSW1hZ2UocGl4bWFw
KSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGlsbEltYWdlPiBj
cmVhdGVGb3JSZW5kZXJpbmcoY29uc3QgUUltYWdlKiBpbWFnZSkKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RpbGxJbWFnZT4gY3JlYXRlRm9yUmVuZGVyaW5nKGNvbnN0IFFQaXhtYXAqIHBp
eG1hcCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGlsbElt
YWdlKGltYWdlKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0aWxsSW1hZ2Uo
cGl4bWFwKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1l
SGFzQWxwaGEoKTsKQEAgLTU2LDEyICs1NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3RpbGxJ
bWFnZShjb25zdCBRSW1hZ2UmKTsKLSAgICAgICAgU3RpbGxJbWFnZShjb25zdCBRSW1hZ2UqKTsK
KyAgICAgICAgU3RpbGxJbWFnZShjb25zdCBRUGl4bWFwJik7CisgICAgICAgIFN0aWxsSW1hZ2Uo
Y29uc3QgUVBpeG1hcCopOwogICAgICAgICB2aXJ0dWFsIH5TdGlsbEltYWdlKCk7CiAgICAgICAg
IAotICAgICAgICBjb25zdCBRSW1hZ2UqIG1faW1hZ2U7Ci0gICAgICAgIGJvb2wgbV9vd25zSW1h
Z2U7CisgICAgICAgIGNvbnN0IFFQaXhtYXAqIG1fcGl4bWFwOworICAgICAgICBib29sIG1fb3du
c1BpeG1hcDsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9UcmFuc3BhcmVuY3lMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvVHJhbnNwYXJlbmN5TGF5ZXIuaAppbmRleCA1OTc0MDE3Li5mMTNkZWIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9UcmFuc3Bh
cmVuY3lMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1Ry
YW5zcGFyZW5jeUxheWVyLmgKQEAgLTM2LDI0ICszNiwyNCBAQAogI2lmbmRlZiBUcmFuc3BhcmVu
Y3lMYXllcl9oCiAjZGVmaW5lIFRyYW5zcGFyZW5jeUxheWVyX2gKIAotI2luY2x1ZGUgPE5hdGl2
ZUltYWdlUXQuaD4KICNpbmNsdWRlIDxRUGFpbnRFbmdpbmU+CiAjaW5jbHVkZSA8UVBhaW50ZXI+
CisjaW5jbHVkZSA8UVBpeG1hcD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgVHJh
bnNwYXJlbmN5TGF5ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIFRyYW5zcGFyZW5jeUxheWVyKGNvbnN0IFFQYWludGVyKiBwLCBjb25zdCBRUmVjdCAmcmVj
dCwgcXJlYWwgb3BhY2l0eSwgUUltYWdlJiBhbHBoYU1hc2spCi0gICAgICAgIDogaW1hZ2UocmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBOYXRpdmVJbWFnZVF0OjpkZWZhdWx0Rm9ybWF0Rm9y
QWxwaGFFbmFibGVkSW1hZ2VzKCkpCisgICAgVHJhbnNwYXJlbmN5TGF5ZXIoY29uc3QgUVBhaW50
ZXIqIHAsIGNvbnN0IFFSZWN0ICZyZWN0LCBxcmVhbCBvcGFjaXR5LCBRUGl4bWFwJiBhbHBoYU1h
c2spCisgICAgICAgIDogcGl4bWFwKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkKICAgICAg
ICAgLCBvcGFjaXR5KG9wYWNpdHkpCiAgICAgICAgICwgYWxwaGFNYXNrKGFscGhhTWFzaykKICAg
ICAgICAgLCBzYXZlQ291bnRlcigxKSAvLyBzZWUgdGhlIGNvbW1lbnQgZm9yIHNhdmVDb3VudGVy
CiAgICAgewogICAgICAgICBvZmZzZXQgPSByZWN0LnRvcExlZnQoKTsKLSAgICAgICAgaW1hZ2Uu
ZmlsbChRdDo6dHJhbnNwYXJlbnQpOwotICAgICAgICBwYWludGVyLmJlZ2luKCZpbWFnZSk7Cisg
ICAgICAgIHBpeG1hcC5maWxsKFF0Ojp0cmFuc3BhcmVudCk7CisgICAgICAgIHBhaW50ZXIuYmVn
aW4oJnBpeG1hcCk7CiAgICAgICAgIHBhaW50ZXIuc2V0UmVuZGVySGludHMocC0+cmVuZGVySGlu
dHMoKSk7CiAgICAgICAgIHBhaW50ZXIudHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICBwYWlu
dGVyLnNldFBlbihwLT5wZW4oKSk7CkBAIC02NywxMiArNjcsMTIgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKLSAgICBRSW1hZ2UgaW1hZ2U7CisgICAgUVBpeG1hcCBwaXhtYXA7CiAgICAgUVBv
aW50IG9mZnNldDsKICAgICBRUGFpbnRlciBwYWludGVyOwogICAgIHFyZWFsIG9wYWNpdHk7CiAg
ICAgLy8gZm9yIGNsaXBUb0ltYWdlQnVmZmVyCi0gICAgUUltYWdlIGFscGhhTWFzazsKKyAgICBR
UGl4bWFwIGFscGhhTWFzazsKICAgICAvLyBzYXZlQ291bnRlciBpcyBvbmx5IHVzZWQgaW4gY29t
YmluYXRpb24gd2l0aCBhbHBoYU1hc2sKICAgICAvLyBvdGhlcndpc2UsIGl0cyB2YWx1ZSBpcyB1
bnNwZWNpZmllZAogICAgIGludCBzYXZlQ291bnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZVF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3Vy
ZmFjZVF0LmNwcAppbmRleCBlMWIyNzU4Li43MzRhMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VRdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhp
Y3NTdXJmYWNlUXQuY3BwCkBAIC01Miw3ICs1Miw4IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IEdyYXBo
aWNzU3VyZmFjZTo6Y3JlYXRlUmVhZE9ubHlJbWFnZShjb25zdCBJbnRSZWN0JiByZWN0KQogICAg
IGludCBzdHJpZGU7CiAgICAgUUltYWdlOjpGb3JtYXQgZm9ybWF0ID0gKGZsYWdzKCkgJiBTdXBw
b3J0c0FscGhhKSA/IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkIDogUUltYWdl
OjpGb3JtYXRfUkdCMzI7CiAgICAgY2hhciogZGF0YSA9IHBsYXRmb3JtTG9jayhyZWN0LCAmc3Ry
aWRlLCBSZXRhaW5QaXhlbHMgfCBSZWFkT25seSk7Ci0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpj
cmVhdGUobmV3IFFJbWFnZShyZWludGVycHJldF9jYXN0PHVjaGFyKj4oZGF0YSksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSwgc3RyaWRlLCBmb3JtYXQsIGRpZFJlbGVhc2VJbWFnZSwgdGhp
cykpOworICAgIFFJbWFnZSBpbWFnZShyZWludGVycHJldF9jYXN0PHVjaGFyKj4oZGF0YSksIHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgc3RyaWRlLCBmb3JtYXQsIGRpZFJlbGVhc2VJbWFn
ZSwgdGhpcyk7CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUobmV3IFFQaXhtYXAoUVBp
eG1hcDo6ZnJvbUltYWdlKGltYWdlKSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmlu
ZGV4IDg3M2Y5MDQuLjkxNjliZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC02OTcsOCAr
Njk3LDkgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFn
ZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KICAgICBjb25zdCBjaGFyKiBpbWFnZURh
dGE7CiAKICNpZiBQTEFURk9STShRVCkKLSAgICBpbWFnZURhdGEgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihmcmFtZUltYWdlLT5jb25zdEJpdHMoKSk7Ci0gICAgYnl0ZXNQZXJMaW5l
ID0gZnJhbWVJbWFnZS0+Ynl0ZXNQZXJMaW5lKCk7CisgICAgUUltYWdlIHFJbWFnZSA9IGZyYW1l
SW1hZ2UtPnRvSW1hZ2UoKTsKKyAgICBpbWFnZURhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihxSW1hZ2UuY29uc3RCaXRzKCkpOworICAgIGJ5dGVzUGVyTGluZSA9IHFJbWFnZS5i
eXRlc1BlckxpbmUoKTsKICNlbGlmIFVTRShDQUlSTykKICAgICBjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UgPSBmcmFtZUltYWdlLT5zdXJmYWNlKCk7CiAgICAgaW1hZ2VEYXRhID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNl
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCmluZGV4IDkyODI5NTku
LmZjOWI0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCkBAIC0y
MSwxMCArMjEsNyBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oIgogCiAj
aW5jbHVkZSAiRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCIKLSNpZiBQTEFURk9STShRVCkKICNpbmNs
dWRlICJOYXRpdmVJbWFnZVF0LmgiCi0jZW5kaWYKLQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
KQogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvQ2xpcGJvYXJkUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJv
YXJkUXQuY3BwCmluZGV4IDhkODRkNzIuLjYyMTJmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKQEAgLTUwLDcgKzUwLDYgQEAKIAogI2luY2x1ZGUgPFFD
bGlwYm9hcmQ+CiAjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgotI2luY2x1ZGUgPFFJbWFnZT4K
ICNpbmNsdWRlIDxRTGlzdD4KICNpbmNsdWRlIDxRTWltZURhdGE+CiAjaW5jbHVkZSA8UVN0cmlu
Z0xpc3Q+CkBAIC0yNDQsNyArMjQzLDcgQEAgRHJhZ0ltYWdlUmVmIENsaXBib2FyZFF0OjpjcmVh
dGVEcmFnSW1hZ2UoSW50UG9pbnQmIGRyYWdMb2MpIGNvbnN0CiAgICAgaWYgKCFtX2RyYWdJbWFn
ZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgZHJhZ0xvYyA9IG1fZHJhZ0xvYzsKLSAgICByZXR1
cm4gbmV3IFFJbWFnZSgqbV9kcmFnSW1hZ2UtPmltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkpOworICAgIHJldHVybiBtX2RyYWdJbWFnZS0+aW1hZ2UoKS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKIH0KIAogCkBAIC0yNzQsOSArMjczLDkgQEAgdm9pZCBDbGlwYm9h
cmRRdDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtV
UkwmIHVybCwgY28KICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBnZXRDYWNoZWRJbWFn
ZShlbGVtZW50KTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8ICFjYWNoZWRJbWFnZS0+aW1hZ2VG
b3JSZW5kZXJlcihlbGVtZW50LT5yZW5kZXJlcigpKSB8fCAhY2FjaGVkSW1hZ2UtPmlzTG9hZGVk
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBRSW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmlt
YWdlRm9yUmVuZGVyZXIoZWxlbWVudC0+cmVuZGVyZXIoKSktPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7Ci0gICAgaWYgKGltYWdlKQotICAgICAgICBtX3dyaXRhYmxlRGF0YS0+c2V0SW1h
Z2VEYXRhKCppbWFnZSk7CisgICAgUVBpeG1hcCogcGl4bWFwID0gY2FjaGVkSW1hZ2UtPmltYWdl
Rm9yUmVuZGVyZXIoZWxlbWVudC0+cmVuZGVyZXIoKSktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CisgICAgaWYgKHBpeG1hcCkKKyAgICAgICAgbV93cml0YWJsZURhdGEtPnNldEltYWdl
RGF0YSgqcGl4bWFwKTsKIAogICAgIFFMaXN0PFFVcmw+IHVybHM7CiAgICAgdXJscy5hcHBlbmQo
dXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0LmNwcAppbmRleCAxNjhhMmY1
Li5lNzg1NGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DdXJzb3JR
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ3Vyc29yUXQuY3BwCkBAIC0z
Nyw4ICszNyw2IEBACiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCi0jaW5jbHVkZSA8
UUltYWdlPgotI2luY2x1ZGUgPFFQaXhtYXA+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRl
IDxzdGRsaWIuaD4KIApAQCAtNzcsMTEgKzc1LDEwIEBAIEN1cnNvciYgQ3Vyc29yOjpvcGVyYXRv
cj0oY29uc3QgQ3Vyc29yJiBvdGhlcikKICNpZm5kZWYgUVRfTk9fQ1VSU09SCiBzdGF0aWMgUUN1
cnNvciogY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGhv
dFNwb3QpCiB7Ci0gICAgUUltYWdlKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwotICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgaWYgKCFpbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSW50
UG9pbnQgZWZmZWN0aXZlSG90U3BvdCA9IGRldGVybWluZUhvdFNwb3QoaW1hZ2UsIGhvdFNwb3Qp
OwotICAgIHJldHVybiBuZXcgUUN1cnNvcihRUGl4bWFwOjpmcm9tSW1hZ2UoKm5hdGl2ZUltYWdl
KSwgZWZmZWN0aXZlSG90U3BvdC54KCksIGVmZmVjdGl2ZUhvdFNwb3QueSgpKTsKKyAgICByZXR1
cm4gbmV3IFFDdXJzb3IoKihpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSksIGVm
ZmVjdGl2ZUhvdFNwb3QueCgpLCBlZmZlY3RpdmVIb3RTcG90LnkoKSk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0ltYWdlUXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0ltYWdlUXQuY3BwCmluZGV4IGU5M2FjNzAu
LjBlN2NlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdJbWFn
ZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EcmFnSW1hZ2VRdC5jcHAK
QEAgLTI5LDggKzI5LDYgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCiAKLSNpbmNsdWRlIDxRSW1hZ2U+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW50
U2l6ZSBkcmFnSW1hZ2VTaXplKERyYWdJbWFnZVJlZiBpbWFnZSkKQEAgLTY4LDcgKzY2LDcgQEAg
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uRW51bSkKICAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4g
bmV3IFFJbWFnZSgqaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpOworICAgIHJl
dHVybiBuZXcgUVBpeG1hcCgqaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpOwog
fQogCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlKENhY2hl
ZEltYWdlKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9h
cmRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCmlu
ZGV4IGEwYmViNDguLjk2ZGVhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1Bhc3RlYm9hcmRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFz
dGVib2FyZFF0LmNwcApAQCAtMTY4LDEwICsxNjgsMTAgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogICAgIEltYWdl
KiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKG5vZGUtPnJlbmRlcmVyKCkp
OwogICAgIEFTU0VSVChpbWFnZSk7CiAKLSAgICBRSW1hZ2UqIG5hdGl2ZUltYWdlID0gaW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFpbWFnZSkKKyAgICBRUGl4
bWFwKiBwaXhtYXAgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBp
ZiAoIXBpeG1hcCkKICAgICAgICAgcmV0dXJuOwotICAgIFFHdWlBcHBsaWNhdGlvbjo6Y2xpcGJv
YXJkKCktPnNldEltYWdlKCpuYXRpdmVJbWFnZSwgUUNsaXBib2FyZDo6Q2xpcGJvYXJkKTsKKyAg
ICBRR3VpQXBwbGljYXRpb246OmNsaXBib2FyZCgpLT5zZXRQaXhtYXAoKnBpeG1hcCwgUUNsaXBi
b2FyZDo6Q2xpcGJvYXJkKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2ViZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNw
cAppbmRleCAwZTZlMGUzLi4wYWNjZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAK
QEAgLTE2MTEsOSArMTYxMSw5IEBAIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRl
c3RSZXN1bHRQcml2YXRlKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQKICAgICBib3VuZGlu
Z1JlY3QgPSBpbm5lck5vblNoYXJlZE5vZGUgPyBpbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVy
KCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkgOiBJbnRSZWN0KCk7CiAgICAgV2ViQ29yZTo6
SW1hZ2UgKmltZyA9IGhpdFRlc3QuaW1hZ2UoKTsKICAgICBpZiAoaW1nKSB7Ci0gICAgICAgIFFJ
bWFnZSAqcGl4ID0gaW1nLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICBR
UGl4bWFwICpwaXggPSBpbWctPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAg
IGlmIChwaXgpCi0gICAgICAgICAgICBwaXhtYXAgPSBRUGl4bWFwOjpmcm9tSW1hZ2UoKnBpeCk7
CisgICAgICAgICAgICBwaXhtYXAgPSAqcGl4OwogICAgIH0KICAgICBXZWJDb3JlOjpGcmFtZSAq
d2ZyYW1lID0gaGl0VGVzdC50YXJnZXRGcmFtZSgpOwogICAgIGlmICh3ZnJhbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAKaW5kZXggNGJmNjM1OC4uZjc4NDk2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJoaXN0b3J5LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIFFEYXRlVGltZSBR
V2ViSGlzdG9yeUl0ZW06Omxhc3RWaXNpdGVkKCkgY29uc3QKIFFJY29uIFFXZWJIaXN0b3J5SXRl
bTo6aWNvbigpIGNvbnN0CiB7CiAgICAgaWYgKGQtPml0ZW0pCi0gICAgICAgIHJldHVybiBRUGl4
bWFwOjpmcm9tSW1hZ2UoKldlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzTmF0aXZl
SWNvbkZvclBhZ2VVUkwoZC0+aXRlbS0+dXJsKCksIFdlYkNvcmU6OkludFNpemUoMTYsIDE2KSkp
OworICAgICAgICByZXR1cm4gKldlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzTmF0
aXZlSWNvbkZvclBhZ2VVUkwoZC0+aXRlbS0+dXJsKCksIFdlYkNvcmU6OkludFNpemUoMTYsIDE2
KSk7CiAKICAgICByZXR1cm4gUUljb24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGlu
Z3MuY3BwCmluZGV4IGViZWNjN2YuLmJhNzE4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNl
dHRpbmdzLmNwcApAQCAtNzIzLDEyICs3MjMsMTIgQEAgdm9pZCBRV2ViU2V0dGluZ3M6OmNsZWFy
SWNvbkRhdGFiYXNlKCkKIFFJY29uIFFXZWJTZXR0aW5nczo6aWNvbkZvclVybChjb25zdCBRVXJs
JiB1cmwpCiB7CiAgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOwotICAgIFFJbWFn
ZSogaWNvbiA9IFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzTmF0aXZlSWNvbkZv
clBhZ2VVUkwoV2ViQ29yZTo6S1VSTCh1cmwpLnN0cmluZygpLAorICAgIFFQaXhtYXAqIGljb24g
PSBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJM
KFdlYkNvcmU6OktVUkwodXJsKS5zdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViQ29yZTo6SW50U2l6ZSgxNiwgMTYpKTsKICAgICBpZiAoIWljb24pCiAgICAgICAg
IHJldHVybiBRSWNvbigpOwogCi0gICAgcmV0dXJuIFFQaXhtYXA6OmZyb21JbWFnZSgqaWNvbik7
CisgICAgcmV0dXJuKiBpY29uOwogfQogCiAvKgpAQCAtNzcxLDcgKzc3MSw3IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiByZXNvdXJjZU5hbWVGb3JXZWJHcmFwaGljKFFXZWJTZXR0aW5nczo6V2ViR3Jh
cGhpYyB0eXBlKQogdm9pZCBRV2ViU2V0dGluZ3M6OnNldFdlYkdyYXBoaWMoV2ViR3JhcGhpYyB0
eXBlLCBjb25zdCBRUGl4bWFwJiBncmFwaGljKQogewogICAgIFdlYkNvcmU6OmluaXRpYWxpemVX
ZWJDb3JlUXQoKTsKLSAgICBXZWJDb3JlOjpJbWFnZTo6c2V0UGxhdGZvcm1SZXNvdXJjZShyZXNv
dXJjZU5hbWVGb3JXZWJHcmFwaGljKHR5cGUpLCBncmFwaGljLnRvSW1hZ2UoKSk7CisgICAgV2Vi
Q29yZTo6SW1hZ2U6OnNldFBsYXRmb3JtUmVzb3VyY2UocmVzb3VyY2VOYW1lRm9yV2ViR3JhcGhp
Yyh0eXBlKSwgZ3JhcGhpYyk7CiB9CiAKIC8qIQpAQCAtNzg2LDEwICs3ODYsMTAgQEAgUVBpeG1h
cCBRV2ViU2V0dGluZ3M6OndlYkdyYXBoaWMoV2ViR3JhcGhpYyB0eXBlKQogICAgIFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZT4gaW1nID0gV2ViQ29yZTo6SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNl
KHJlc291cmNlTmFtZUZvcldlYkdyYXBoaWModHlwZSkpOwogICAgIGlmICghaW1nKQogICAgICAg
ICByZXR1cm4gUVBpeG1hcCgpOwotICAgIFFJbWFnZSogaW1hZ2UgPSBpbWctPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFpbWFnZSkKKyAgICBRUGl4bWFwKiBwaXhtYXAg
PSBpbWctPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFwaXhtYXApCiAg
ICAgICAgIHJldHVybiBRUGl4bWFwKCk7Ci0gICAgcmV0dXJuIFFQaXhtYXA6OmZyb21JbWFnZSgq
aW1hZ2UpOworICAgIHJldHVybiAqcGl4bWFwOwogfQogCiAvKiEKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXgg
Mjk1NWQ3OC4uYjg5YjkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0x
MC0wOCAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbUXRd
IHIxMjI3MjAgY2F1c2VzIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gd2l0aCBEaXJlY3RGQiBvbiBB
Uk12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc1
NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXZl
cnQgdGhlIHJlc3Qgb2YgcjEyMjcyMC4gVGhpcyBjaGFuZ2UgbW9kaWZpZXMgdGhlIE5hdGl2ZUlt
YWdlUHRyIGZyb20gUUltYWdlKiB0byBRUGl4bWFwKi4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChR
V2ViSGl0VGVzdFJlc3VsdFByaXZhdGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSk6CisgICAg
ICAgICogQXBpL3F3ZWJoaXN0b3J5LmNwcDoKKyAgICAgICAgKFFXZWJIaXN0b3J5SXRlbTo6aWNv
bik6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGlu
Z3M6Omljb25Gb3JVcmwpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRXZWJHcmFwaGljKToK
KyAgICAgICAgKFFXZWJTZXR0aW5nczo6d2ViR3JhcGhpYyk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHJhZ0NsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGllbnRRdDo6
c3RhcnREcmFnKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQpOgorCiAyMDEyLTEwLTA3ICBD
YWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5v
cmc+CiAKICAgICAgICAgUmVuYW1lIGZpcnN0L3NlY29uZCB0byBrZXkvdmFsdWUgaW4gSGFzaE1h
cCBpdGVyYXRvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RHJhZ0NsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0Ns
aWVudFF0LmNwcAppbmRleCA4YjY0OGMxLi5jYjYzMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCkBAIC05Nyw5ICs5Nyw5IEBAIHZv
aWQgRHJhZ0NsaWVudFF0OjpzdGFydERyYWcoRHJhZ0ltYWdlUmVmIGRyYWdJbWFnZSwgY29uc3Qg
SW50UG9pbnQmLCBjb25zdCBJbnRQCiAgICAgaWYgKHZpZXcpIHsKICAgICAgICAgUURyYWcqIGRy
YWcgPSBuZXcgUURyYWcodmlldyk7CiAgICAgICAgIGlmIChkcmFnSW1hZ2UpCi0gICAgICAgICAg
ICBkcmFnLT5zZXRQaXhtYXAoUVBpeG1hcDo6ZnJvbUltYWdlKCpkcmFnSW1hZ2UpKTsKKyAgICAg
ICAgICAgIGRyYWctPnNldFBpeG1hcCgqZHJhZ0ltYWdlKTsKICAgICAgICAgZWxzZSBpZiAoY2xp
cGJvYXJkRGF0YSAmJiBjbGlwYm9hcmREYXRhLT5oYXNJbWFnZSgpKQotICAgICAgICAgICAgZHJh
Zy0+c2V0UGl4bWFwKFFQaXhtYXA6OmZyb21JbWFnZShxdmFyaWFudF9jYXN0PFFJbWFnZT4oY2xp
cGJvYXJkRGF0YS0+aW1hZ2VEYXRhKCkpKSk7CisgICAgICAgICAgICBkcmFnLT5zZXRQaXhtYXAo
cXZhcmlhbnRfY2FzdDxRUGl4bWFwPihjbGlwYm9hcmREYXRhLT5pbWFnZURhdGEoKSkpOwogICAg
ICAgICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrID0gY2xpcGJvYXJkLT5zb3VyY2VP
cGVyYXRpb24oKTsKICAgICAgICAgZHJhZy0+c2V0TWltZURhdGEoY2xpcGJvYXJkRGF0YSk7CiAg
ICAgICAgIFF0OjpEcm9wQWN0aW9uIGFjdHVhbERyb3BBY3Rpb24gPSBkcmFnLT5leGVjKGRyYWdP
cGVyYXRpb25zVG9Ecm9wQWN0aW9ucyhkcmFnT3BlcmF0aW9uTWFzaykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHAKaW5kZXggYzYzY2Ni
MC4uNWFjNDQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9J
bml0V2ViQ29yZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0lu
aXRXZWJDb3JlUXQuY3BwCkBAIC04Myw5ICs4Myw5IEBAIHZvaWQgaW5pdGlhbGl6ZVdlYkNvcmVR
dCgpCiAjZW5kaWYKIAogICAgIC8vIFFXZWJTZXR0aW5nczo6U2VhcmNoQ2FuY2VsQnV0dG9uR3Jh
cGhpYwotICAgIEltYWdlOjpzZXRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hDYW5jZWxCdXR0b24i
LCBRQXBwbGljYXRpb246OnN0eWxlKCktPnN0YW5kYXJkUGl4bWFwKFFTdHlsZTo6U1BfRGlhbG9n
Q2xvc2VCdXR0b24pLnRvSW1hZ2UoKSk7CisgICAgSW1hZ2U6OnNldFBsYXRmb3JtUmVzb3VyY2Uo
InNlYXJjaENhbmNlbEJ1dHRvbiIsIFFBcHBsaWNhdGlvbjo6c3R5bGUoKS0+c3RhbmRhcmRQaXht
YXAoUVN0eWxlOjpTUF9EaWFsb2dDbG9zZUJ1dHRvbikpOwogICAgIC8vIFFXZWJTZXR0aW5nczo6
U2VhcmNoQ2FuY2VsQnV0dG9uUHJlc3NlZEdyYXBoaWMKLSAgICBJbWFnZTo6c2V0UGxhdGZvcm1S
ZXNvdXJjZSgic2VhcmNoQ2FuY2VsQnV0dG9uUHJlc3NlZCIsIFFBcHBsaWNhdGlvbjo6c3R5bGUo
KS0+c3RhbmRhcmRQaXhtYXAoUVN0eWxlOjpTUF9EaWFsb2dDbG9zZUJ1dHRvbikudG9JbWFnZSgp
KTsKKyAgICBJbWFnZTo6c2V0UGxhdGZvcm1SZXNvdXJjZSgic2VhcmNoQ2FuY2VsQnV0dG9uUHJl
c3NlZCIsIFFBcHBsaWNhdGlvbjo6c3R5bGUoKS0+c3RhbmRhcmRQaXhtYXAoUVN0eWxlOjpTUF9E
aWFsb2dDbG9zZUJ1dHRvbikpOwogCiAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDQyZmNiNTMuLmQzNGMyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAx
Mi0xMC0wOCAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBb
UXRdIHIxMjI3MjAgY2F1c2VzIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gd2l0aCBEaXJlY3RGQiBv
biBBUk12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTc1NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXZlcnQgdGhlIHJlc3Qgb2YgcjEyMjcyMC4gVGhpcyBjaGFuZ2UgbW9kaWZpZXMgdGhlIE5hdGl2
ZUltYWdlUHRyIGZyb20gUUltYWdlKiB0byBRUGl4bWFwKi4KKworICAgICAgICBDb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UXRXZWJJY29uRGF0YWJhc2VDbGllbnQ6Omljb25JbWFnZUZvclBhZ2VVUkwp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViRHJhZ0NsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFFQaXhtYXBUb1NoYXJlYWJsZUJpdG1hcCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0
b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6YWRvcHRJbWFn
ZUJhY2tpbmdTdG9yZSk6CisKIDIwMTItMTAtMDcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBG
aWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZW5hbWUgZmly
c3Qvc2Vjb25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAKaW5kZXggNmNhZGIwOC4uODc0
ZTFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1h
cFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQu
Y3BwCkBAIC01Myw4ICs1Myw4IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlU2hhcmVk
TWVtb3J5RGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCkKIAogUGFzc1JlZlB0cjxJbWFnZT4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSgpCiB7Ci0gICAgUUltYWdlKiBpbWFnZSA9IG5ldyBR
SW1hZ2UoY3JlYXRlUUltYWdlKCkpOwotICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKGlt
YWdlKTsKKyAgICBRUGl4bWFwKiBwaXhtYXAgPSBuZXcgUVBpeG1hcChRUGl4bWFwOjpmcm9tSW1h
Z2UoY3JlYXRlUUltYWdlKCkpKTsKKyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShwaXht
YXApOwogfQogCiBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVHcmFwaGljc0NvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAKaW5kZXggYWZkZmE2Zi4uNTkyYmIz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFi
YXNlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJJY29u
RGF0YWJhc2VDbGllbnQuY3BwCkBAIC05MCwxMSArOTAsMTEgQEAgUUltYWdlIFF0V2ViSWNvbkRh
dGFiYXNlQ2xpZW50OjppY29uSW1hZ2VGb3JQYWdlVVJMKGNvbnN0IFdURjo6U3RyaW5nJiBwYWdl
VVJMLAogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKGljb25TaXplLndpZHRoKCksIGljb25T
aXplLmhlaWdodCgpKTsKIAotICAgIFFJbWFnZSogbmF0aXZlSW1hZ2UgPSBtX2ljb25EYXRhYmFz
ZS0+bmF0aXZlSW1hZ2VGb3JQYWdlVVJMKHBhZ2VVUkwsIHNpemUpOworICAgIFFQaXhtYXAqIG5h
dGl2ZUltYWdlID0gbV9pY29uRGF0YWJhc2UtPm5hdGl2ZUltYWdlRm9yUGFnZVVSTChwYWdlVVJM
LCBzaXplKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gUUltYWdlKCk7
CiAKLSAgICByZXR1cm4gKm5hdGl2ZUltYWdlOworICAgIHJldHVybiBuYXRpdmVJbWFnZS0+dG9J
bWFnZSgpOwogfQogCiB2b2lkIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjpyZXRhaW5JY29uRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYkRyYWdDbGllbnRRdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYkRyYWdDbGllbnRRdC5j
cHAKaW5kZXggZDllNmQxZC4uYmJkYjYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJEcmFnQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViRHJhZ0NsaWVudFF0LmNw
cApAQCAtMzgsMTUgKzM4LDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0
UUltYWdlVG9TaGFyZWFibGVCaXRtYXAoUUltYWdlKiBpbWFnZSkKK3N0YXRpYyBQYXNzUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gY29udmVydFFQaXhtYXBUb1NoYXJlYWJsZUJpdG1hcChRUGl4bWFw
KiBwaXhtYXApCiB7Ci0gICAgaWYgKCFpbWFnZSkKKyAgICBpZiAoIXBpeG1hcCkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFi
bGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGltYWdlLT5zaXplKCkpLCBTaGFyZWFi
bGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJp
dG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUocGl4bWFwLT5z
aXplKCkpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwogICAgIE93blB0cjxHcmFw
aGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250
ZXh0KCk7CiAKLSAgICBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3SW1h
Z2UoMCwgMCwgKmltYWdlKTsKKyAgICBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5kcmF3UGl4bWFwKDAsIDAsICpwaXhtYXApOwogICAgIHJldHVybiBiaXRtYXAucmVsZWFzZSgp
OwogfQogCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERy
YWdJbWFnZVJlZiBkcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpCiAgICAgc3Rh
dGljX2Nhc3Q8Q2xpcGJvYXJkUXQqPihjbGlwYm9hcmQpLT5pbnZhbGlkYXRlV3JpdGFibGVEYXRh
KCk7CiAgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoY2xpcGJvYXJkRGF0YSwgY2xpZW50UG9zaXRpb24s
IGdsb2JhbFBvc2l0aW9uLCBkcmFnT3BlcmF0aW9uTWFzayk7CiAKLSAgICBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBiaXRtYXAgPSBjb252ZXJ0UUltYWdlVG9TaGFyZWFibGVCaXRtYXAoZHJhZ0lt
YWdlKTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBjb252ZXJ0UVBpeG1h
cFRvU2hhcmVhYmxlQml0bWFwKGRyYWdJbWFnZSk7CiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUgaGFuZGxlOwogICAgIGlmIChiaXRtYXAgJiYgIWJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRs
ZSkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yLmNwcAppbmRleCBiYTViNDY5Li4xMjNlMjljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCkBAIC00
NTEsNyArNDUxLDcgQEAgaW50NjRfdCBMYXllclRyZWVDb29yZGluYXRvcjo6YWRvcHRJbWFnZUJh
Y2tpbmdTdG9yZShJbWFnZSogaW1hZ2UpCiAgICAgaW50NjRfdCBrZXkgPSAwOwogCiAjaWYgUExB
VEZPUk0oUVQpCi0gICAgUUltYWdlKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOworICAgIFFQaXhtYXAqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAg
ICByZXR1cm4gSW52YWxpZFdlYkxheWVySUQ7Cg==
</data>
<flag name="commit-queue"
          id="180184"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167497</attachid>
            <date>2012-10-07 20:06:17 -0700</date>
            <delta_ts>2012-10-08 06:44:09 -0700</delta_ts>
            <desc>proposed revert, gtk+efl build fixed</desc>
            <filename>revert.patch</filename>
            <type>text/plain</type>
            <size>54834</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZjA0ZGEyLi5lMjE4NzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkg
QEAKKzIwMTItMTAtMDggIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1F0XSByMTIyNzIwIGNhdXNlcyBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHdpdGggRGly
ZWN0RkIgb24gQVJNdjcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk3NTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV2ZXJ0IHRoZSByZXN0IG9mIHIxMjI3MjAuIFRoaXMgY2hhbmdlIG1vZGlmaWVzIHRo
ZSBOYXRpdmVJbWFnZVB0ciBmcm9tIFFJbWFnZSogdG8gUVBpeG1hcCouCisKKyAgICAgICAgQ292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGJyaWRnZS9xdC9xdF9waXhtYXBy
dW50aW1lLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmFzc2lnblRvSFRNTEltYWdlRWxl
bWVudCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpRdFBpeG1hcFJ1bnRpbWU6OnRvUXQpOgor
ICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChHcmFw
aGljc0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAg
ICAgIChJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZUdTdHJlYW1lclF0LmNwcDoKKyAgICAgICAgKEltYWdlR1N0cmVhbWVyOjpJbWFn
ZUdTdHJlYW1lcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0M0RRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1h
Z2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnB1c2hUcmFuc3BhcmVu
Y3lMYXllckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YmVn
aW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJEYXRhUXQuaDoKKyAgICAgICAgKEltYWdlQnVmZmVy
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OkltYWdlQnVmZmVyRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6dG9R
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmdldEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFy
cmF5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L0ltYWdlRGVjb2RlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmFzTmV3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3Bw
OgorICAgICAgICAoZ3JhcGhpY3MpOgorICAgICAgICAobG9hZFJlc291cmNlUGl4bWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZTo6c2V0UGxhdGZvcm1SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1h
cEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvUGF0dGVyblF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRm
b3JtUGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0aWxsSW1hZ2U6OlN0aWxsSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6flN0aWxsSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
U3RpbGxJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6U3Rp
bGxJbWFnZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGlsbEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGlsbEltYWdlOjpkcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0aWxsSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGlsbElt
YWdlOjpjcmVhdGVGb3JSZW5kZXJpbmcpOgorICAgICAgICAoU3RpbGxJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVHJhbnNwYXJlbmN5TGF5ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyYW5zcGFyZW5jeUxheWVyOjpUcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChU
cmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
cXQvR3JhcGhpY3NTdXJmYWNlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlOjpjcmVhdGVSZWFkT25seUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1
cmVHTDo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0NsaXBib2FyZFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpjcmVhdGVEcmFnSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6
CisgICAgICAgICogcGxhdGZvcm0vcXQvQ3Vyc29yUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ3VzdG9tQ3Vyc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9EcmFnSW1hZ2VRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjp3cml0ZUltYWdlKToKKwogMjAxMi0xMC0wNyAgTWFydGluIFJvYmluc29uICA8bXJv
Ymluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NvdXBdIENsZWFuIHVwIFJlc291cmNlRXJy
b3IgY3JlYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXht
YXBydW50aW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1l
LmNwcAppbmRleCAxNTA3MjRiLi4yYmM1YzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCkBAIC0xMzUsOCArMTM1LDggQEAgc3RhdGljIEpTVmFs
dWVSZWYgYXNzaWduVG9IVE1MSW1hZ2VFbGVtZW50KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW4KIAogICAgIFFWYXJpYW50JiBkYXRhID0gKnN0YXRpY19jYXN0PFFWYXJpYW50
Kj4oSlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCkpOwogCi0gICAgLy8gV2Ugbm93IGtub3cgdGhh
dCB3ZSBoYXZlIGEgdmFsaWQgPGltZz4gZWxlbWVudCBhcyB0aGUgYXJndW1lbnQsIHdlIGNhbiBh
dHRhY2ggdGhlIGltYWdlIHRvIGl0LgotICAgIFJlZlB0cjxTdGlsbEltYWdlPiBzdGlsbEltYWdl
ID0gV2ViQ29yZTo6U3RpbGxJbWFnZTo6Y3JlYXRlKHRvSW1hZ2UoZGF0YSkpOworICAgIC8vIFdl
IG5vdyBrbm93IHRoYXQgd2UgaGF2ZSBhIHZhbGlkIDxpbWc+IGVsZW1lbnQgYXMgdGhlIGFyZ3Vt
ZW50LCB3ZSBjYW4gYXR0YWNoIHRoZSBwaXhtYXAgdG8gaXQuCisgICAgUmVmUHRyPFN0aWxsSW1h
Z2U+IHN0aWxsSW1hZ2UgPSBXZWJDb3JlOjpTdGlsbEltYWdlOjpjcmVhdGUodG9QaXhtYXAoZGF0
YSkpOwogICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IHN0YXRpY19jYXN0PEhU
TUxJbWFnZUVsZW1lbnQqPihzdGF0aWNfY2FzdDxKU0hUTUxJbWFnZUVsZW1lbnQqPihqc09iamVj
dCktPmltcGwoKSk7CiAgICAgaW1hZ2VFbGVtZW50LT5zZXRDYWNoZWRJbWFnZShuZXcgQ2FjaGVk
SW1hZ2Uoc3RpbGxJbWFnZS5nZXQoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKQEAgLTIzMSwxMyArMjMxLDEzIEBAIFFWYXJpYW50IFF0UGl4bWFwUnVudGlt
ZTo6dG9RdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqLCBRTWV0YVR5cGU6
CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIGVtcHR5VmFyaWFudEZvckhpbnQoaGlu
dCk7CiAKLSAgICBRSW1hZ2UqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICBRUGl4bWFwKiBwaXhtYXAg
PSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIXBpeG1hcCkK
ICAgICAgICAgcmV0dXJuIGVtcHR5VmFyaWFudEZvckhpbnQoaGludCk7CiAKICAgICByZXR1cm4g
KGhpbnQgPT0gc3RhdGljX2Nhc3Q8UU1ldGFUeXBlOjpUeXBlPihxTWV0YVR5cGVJZDxRUGl4bWFw
PigpKSkKLSAgICAgICAgICAgICAgPyBRVmFyaWFudDo6ZnJvbVZhbHVlPFFQaXhtYXA+KFFQaXht
YXA6OmZyb21JbWFnZSgqbmF0aXZlSW1hZ2UpKQotICAgICAgICAgICAgICA6IFFWYXJpYW50Ojpm
cm9tVmFsdWU8UUltYWdlPigqbmF0aXZlSW1hZ2UpOworICAgICAgICA/IFFWYXJpYW50Ojpmcm9t
VmFsdWU8UVBpeG1hcD4oKnBpeG1hcCkKKyAgICAgICAgOiBRVmFyaWFudDo6ZnJvbVZhbHVlPFFJ
bWFnZT4ocGl4bWFwLT50b0ltYWdlKCkpOwogfQogCiBib29sIFF0UGl4bWFwUnVudGltZTo6Y2Fu
SGFuZGxlKFFNZXRhVHlwZTo6VHlwZSBoaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2Uu
aAppbmRleCBlNzhhOWQzLi5kZDk3MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2Uu
aApAQCAtMzYsNyArMzYsNyBAQAogT0JKQ19DTEFTUyBOU0ltYWdlOwogI2VsaWYgUExBVEZPUk0o
UVQpCiBRVF9CRUdJTl9OQU1FU1BBQ0UKLWNsYXNzIFFJbWFnZTsKK2NsYXNzIFFQaXhtYXA7CiBR
VF9FTkRfTkFNRVNQQUNFCiAjZWxpZiBQTEFURk9STShXSU4pCiB0eXBlZGVmIHN0cnVjdCBIQklU
TUFQX18qIEhCSVRNQVA7CkBAIC02Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgdHlwZWRlZiBSZXRhaW5QdHI8TlNJbWFnZT4gRHJhZ0ltYWdl
UmVmOwogI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgdHlwZWRlZiBRSW1hZ2UqIERyYWdJbWFnZVJl
ZjsKKyAgICB0eXBlZGVmIFFQaXhtYXAqIERyYWdJbWFnZVJlZjsKICNlbGlmIFBMQVRGT1JNKFdJ
TikKICAgICB0eXBlZGVmIEhCSVRNQVAgRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0oV1gp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCmluZGV4IDE2OTQ3ZmIuLmQ0YThjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00OTksNyArNDk5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKLSAgICAgICAgdm9p
ZCBwdXNoVHJhbnNwYXJlbmN5TGF5ZXJJbnRlcm5hbChjb25zdCBRUmVjdCYsIHFyZWFsLCBRSW1h
Z2UmKTsKKyAgICAgICAgdm9pZCBwdXNoVHJhbnNwYXJlbmN5TGF5ZXJJbnRlcm5hbChjb25zdCBR
UmVjdCYsIHFyZWFsLCBRUGl4bWFwJik7CiAgICAgICAgIHZvaWQgdGFrZU93bmVyc2hpcE9mUGxh
dGZvcm1Db250ZXh0KCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKaW5kZXggZmViNmUyYi4uNWU3MDBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oCkBAIC01Myw2ICs1MywxMCBAQCB0eXBlZGVmIFNJWkUqIExQU0la
RTsKIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRpZgogCisjaWYgUExB
VEZPUk0oUVQpCisjaW5jbHVkZSA8UVBpeG1hcD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oR1RL
KQogdHlwZWRlZiBzdHJ1Y3QgX0dka1BpeGJ1ZiBHZGtQaXhidWY7CiAjZW5kaWYKQEAgLTE1NCw3
ICsxNTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQotICAgIHN0YXRp
YyB2b2lkIHNldFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSwgY29uc3QgUUltYWdl
Jik7CisgICAgc3RhdGljIHZvaWQgc2V0UGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyKiBuYW1l
LCBjb25zdCBRUGl4bWFwJik7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCmluZGV4IDUwY2RlNWQuLmM5OGY4YzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIu
aApAQCAtMzYsNyArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwog
I2VsaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8cWdsb2JhbC5oPgogUVRfQkVHSU5fTkFNRVNQ
QUNFCi1jbGFzcyBRSW1hZ2U7CitjbGFzcyBRUGl4bWFwOwogUVRfRU5EX05BTUVTUEFDRQogI2Vs
aWYgVVNFKENBSVJPKQogI2luY2x1ZGUgIk5hdGl2ZUltYWdlQ2Fpcm8uaCIKQEAgLTU3LDcgKzU3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFVTRShDRykKIHR5cGVkZWYgQ0dJbWFnZVJl
ZiBOYXRpdmVJbWFnZVB0cjsKICNlbGlmIFBMQVRGT1JNKFFUKQotdHlwZWRlZiBRSW1hZ2UqIE5h
dGl2ZUltYWdlUHRyOwordHlwZWRlZiBRUGl4bWFwKiBOYXRpdmVJbWFnZVB0cjsKICNlbGlmIFBM
QVRGT1JNKE9QRU5WRykKIGNsYXNzIFRpbGVkSW1hZ2VPcGVuVkc7CiB0eXBlZGVmIFRpbGVkSW1h
Z2VPcGVuVkcqIE5hdGl2ZUltYWdlUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaAppbmRleCA3YTBl
NWVlLi44M2JkZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaApAQCAtMjksMTAgKzI5LDYgQEAK
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAot
I2lmIFBMQVRGT1JNKFFUKQotI2luY2x1ZGUgPFFJbWFnZT4KLSNlbmRpZgotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBJbnRTaXplOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJRdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJRdC5jcHAK
aW5kZXggZDZlNmUyYS4uMzc1MDI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lclF0LmNwcApA
QCAtNjcsOCArNjcsOSBAQCBJbWFnZUdTdHJlYW1lcjo6SW1hZ2VHU3RyZWFtZXIoR3N0QnVmZmVy
KiBidWZmZXIsIEdzdENhcHMqIGNhcHMpCiAjaWYgR19CWVRFX09SREVSID09IEdfTElUVExFX0VO
RElBTgogICAgIGltYWdlLmludmVydFBpeGVscyhpbnZlcnRNb2RlKTsKICNlbmRpZgotCi0gICAg
bV9pbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUobmV3IFFJbWFnZShpbWFnZSkpOworICAgIFFQ
aXhtYXAqIHN1cmZhY2UgPSBuZXcgUVBpeG1hcDsKKyAgICBzdXJmYWNlLT5jb252ZXJ0RnJvbUlt
YWdlKGltYWdlKTsKKyAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShzdXJmYWNlKTsK
IAogI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgaWYgKEdzdFZpZGVvQ3JvcE1ldGEqIGNy
b3BNZXRhID0gZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fY3JvcF9tZXRhKGJ1ZmZlcikpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
RFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dDNEUXQuY3BwCmluZGV4IGNiZDUxOTIuLjhhYzEyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQu
Y3BwCkBAIC00ODUsMTYgKzQ4NSwxOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFn
ZURhdGEoSW1hZ2UqIGltYWdlLAogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIFFJbWFnZSBuYXRpdmVJbWFnZTsKKyAgICBRSW1hZ2UgcXRJbWFnZTsKICAgICAv
LyBJcyBpbWFnZSBhbHJlYWR5IGxvYWRlZD8gSWYgbm90LCBsb2FkIGl0LgogICAgIGlmIChpbWFn
ZS0+ZGF0YSgpKQotICAgICAgICBuYXRpdmVJbWFnZSA9IFFJbWFnZTo6ZnJvbURhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1Y2hhcio+KGltYWdlLT5kYXRhKCktPmRhdGEoKSksIGltYWdlLT5k
YXRhKCktPnNpemUoKSk7Ci0gICAgZWxzZQotICAgICAgICBuYXRpdmVJbWFnZSA9ICppbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLQorICAgICAgICBxdEltYWdlID0gUUltYWdl
Ojpmcm9tRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVjaGFyKj4oaW1hZ2UtPmRhdGEoKS0+
ZGF0YSgpKSwgaW1hZ2UtPmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUVBp
eG1hcCogbmF0aXZlUGl4bWFwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CisgICAgICAgIC8vIFdpdGggUVBBLCB3ZSBjYW4gYXZvaWQgYSBkZWVwIGNvcHkuCisgICAgICAg
IHF0SW1hZ2UgPSAqbmF0aXZlUGl4bWFwLT5oYW5kbGUoKS0+YnVmZmVyKCk7CisgICAgfQogCiAg
ICAgQWxwaGFPcCBhbHBoYU9wID0gQWxwaGFEb05vdGhpbmc7Ci0gICAgc3dpdGNoIChuYXRpdmVJ
bWFnZS5mb3JtYXQoKSkgeworICAgIHN3aXRjaCAocXRJbWFnZS5mb3JtYXQoKSkgewogICAgIGNh
c2UgUUltYWdlOjpGb3JtYXRfUkdCMzI6CiAgICAgICAgIC8vIEZvciBvcGFxdWUgaW1hZ2VzLCB3
ZSBzaG91bGQgbm90IHByZW11bHRpcGx5IG9yIHVubXVsdGlwbHkgYWxwaGEuCiAgICAgICAgIGJy
ZWFrOwpAQCAtNTA4LDcgKzUxMCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdl
RGF0YShJbWFnZSogaW1hZ2UsCiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IC8vIFRoZSBpbWFnZSBoYXMgYSBmb3JtYXQgdGhhdCBpcyBub3Qgc3VwcG9ydGVkIGluIHBhY2tQ
aXhlbHMuIFdlIGhhdmUgdG8gY29udmVydCBpdCBoZXJlLgotICAgICAgICBuYXRpdmVJbWFnZSA9
IG5hdGl2ZUltYWdlLmNvbnZlcnRUb0Zvcm1hdChwcmVtdWx0aXBseUFscGhhID8gUUltYWdlOjpG
b3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQgOiBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAg
ICAgICBxdEltYWdlID0gcXRJbWFnZS5jb252ZXJ0VG9Gb3JtYXQocHJlbXVsdGlwbHlBbHBoYSA/
IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkIDogUUltYWdlOjpGb3JtYXRfQVJH
QjMyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC01MTksNyArNTIxLDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKIAogICAgIG91dHB1
dFZlY3Rvci5yZXNpemUocGFja2VkU2l6ZSk7CiAKLSAgICByZXR1cm4gcGFja1BpeGVscyhuYXRp
dmVJbWFnZS5jb25zdEJpdHMoKSwgU291cmNlRm9ybWF0QkdSQTgsIGltYWdlLT53aWR0aCgpLCBp
bWFnZS0+aGVpZ2h0KCksIDAsIGZvcm1hdCwgdHlwZSwgYWxwaGFPcCwgb3V0cHV0VmVjdG9yLmRh
dGEoKSk7CisgICAgcmV0dXJuIHBhY2tQaXhlbHMocXRJbWFnZS5jb25zdEJpdHMoKSwgU291cmNl
Rm9ybWF0QkdSQTgsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCksIDAsIGZvcm1hdCwg
dHlwZSwgYWxwaGFPcCwgb3V0cHV0VmVjdG9yLmRhdGEoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250ZXh0TG9zdENh
bGxiYWNrPikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAppbmRleCA1YzhhM2FlLi5jOGIzNWE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRR
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0UXQuY3BwCkBAIC0xMDY2LDcgKzEwNjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
Y2xlYXJQbGF0Zm9ybVNoYWRvdygpCiAgICAgbV9kYXRhLT5zaGFkb3ctPmNsZWFyKCk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwdXNoVHJhbnNwYXJlbmN5TGF5ZXJJbnRlcm5hbChjb25z
dCBRUmVjdCAmcmVjdCwgcXJlYWwgb3BhY2l0eSwgUUltYWdlJiBhbHBoYU1hc2spCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cHVzaFRyYW5zcGFyZW5jeUxheWVySW50ZXJuYWwoY29uc3QgUVJlY3Qg
JnJlY3QsIHFyZWFsIG9wYWNpdHksIFFQaXhtYXAmIGFscGhhTWFzaykKIHsKICAgICBRUGFpbnRl
ciogcCA9IG1fZGF0YS0+cCgpOwogCkBAIC0xMTAxLDcgKzExMDEsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiAg
ICAgICAgIGggPSBpbnQocUJvdW5kKHFyZWFsKDApLCBkZXZpY2VDbGlwLmhlaWdodCgpLCAocXJl
YWwpaCkgKyAyKTsKICAgICB9CiAKLSAgICBRSW1hZ2UgZW1wdHlBbHBoYU1hc2s7CisgICAgUVBp
eG1hcCBlbXB0eUFscGhhTWFzazsKICAgICBtX2RhdGEtPmxheWVycy5wdXNoKG5ldyBUcmFuc3Bh
cmVuY3lMYXllcihwLCBRUmVjdCh4LCB5LCB3LCBoKSwgb3BhY2l0eSwgZW1wdHlBbHBoYU1hc2sp
KTsKICAgICArK21fZGF0YS0+bGF5ZXJDb3VudDsKIH0KQEAgLTExMTUsNyArMTExNSw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCkKICAgICBp
ZiAoIWxheWVyLT5hbHBoYU1hc2suaXNOdWxsKCkpIHsKICAgICAgICAgbGF5ZXItPnBhaW50ZXIu
cmVzZXRUcmFuc2Zvcm0oKTsKICAgICAgICAgbGF5ZXItPnBhaW50ZXIuc2V0Q29tcG9zaXRpb25N
b2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfRGVzdGluYXRpb25Jbik7Ci0gICAgICAgIGxh
eWVyLT5wYWludGVyLmRyYXdJbWFnZShRUG9pbnQoKSwgbGF5ZXItPmFscGhhTWFzayk7CisgICAg
ICAgIGxheWVyLT5wYWludGVyLmRyYXdQaXhtYXAoUVBvaW50KCksIGxheWVyLT5hbHBoYU1hc2sp
OwogICAgIH0gZWxzZQogICAgICAgICAtLW1fZGF0YS0+bGF5ZXJDb3VudDsgLy8gc2VlIHRoZSBj
b21tZW50IGZvciBsYXllckNvdW50CiAgICAgbGF5ZXItPnBhaW50ZXIuZW5kKCk7CkBAIC0xMTI0
LDcgKzExMjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVu
Y3lMYXllcigpCiAgICAgcC0+c2F2ZSgpOwogICAgIHAtPnJlc2V0VHJhbnNmb3JtKCk7CiAgICAg
cC0+c2V0T3BhY2l0eShsYXllci0+b3BhY2l0eSk7Ci0gICAgcC0+ZHJhd0ltYWdlKGxheWVyLT5v
ZmZzZXQsIGxheWVyLT5pbWFnZSk7CisgICAgcC0+ZHJhd1BpeG1hcChsYXllci0+b2Zmc2V0LCBs
YXllci0+cGl4bWFwKTsKICAgICBwLT5yZXN0b3JlKCk7CiAKICAgICBkZWxldGUgbGF5ZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZl
ckRhdGFRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZm
ZXJEYXRhUXQuaAppbmRleCA5NDA2NWQzLi45Y2Y3ODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlckRhdGFRdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyRGF0YVF0LmgKQEAgLTI1
LDggKzI1LDggQEAKIAogI2luY2x1ZGUgIkltYWdlLmgiCiAKLSNpbmNsdWRlIDxRSW1hZ2U+CiAj
aW5jbHVkZSA8UVBhaW50ZXI+CisjaW5jbHVkZSA8UVBpeG1hcD4KIAogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zOSw3ICszOSw5IEBAIGNsYXNz
IEltYWdlQnVmZmVyRGF0YSB7CiBwdWJsaWM6CiAgICAgSW1hZ2VCdWZmZXJEYXRhKGNvbnN0IElu
dFNpemUmKTsKIAotICAgIFFJbWFnZSBtX25hdGl2ZUltYWdlOworICAgIFFJbWFnZSB0b1FJbWFn
ZSgpIGNvbnN0OworCisgICAgUVBpeG1hcCBtX3BpeG1hcDsKICAgICBPd25QdHI8UVBhaW50ZXI+
IG1fcGFpbnRlcjsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAppbmRl
eCAzMmRkMzlhLi5iOWI5ZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUg
Ik1JTUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVF0LmgiCiAjaW5jbHVk
ZSAiU3RpbGxJbWFnZVF0LmgiCiAjaW5jbHVkZSAiVHJhbnNwYXJlbmN5TGF5ZXIuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00MywyMiArNDIsMjMgQEAKICNpbmNsdWRlIDxR
SW1hZ2U+CiAjaW5jbHVkZSA8UUltYWdlV3JpdGVyPgogI2luY2x1ZGUgPFFQYWludGVyPgorI2lu
Y2x1ZGUgPFFQaXhtYXA+CiAjaW5jbHVkZSA8bWF0aC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEltYWdlQnVmZmVyRGF0YTo6SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmIHNpemUp
Ci0gICAgOiBtX25hdGl2ZUltYWdlKHNpemUsIE5hdGl2ZUltYWdlUXQ6OmRlZmF1bHRGb3JtYXRG
b3JBbHBoYUVuYWJsZWRJbWFnZXMoKSkKKyAgICA6IG1fcGl4bWFwKHNpemUpCiB7Ci0gICAgaWYg
KG1fbmF0aXZlSW1hZ2UuaXNOdWxsKCkpCisgICAgaWYgKG1fcGl4bWFwLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX25hdGl2ZUltYWdlLmZpbGwoUUNvbG9yKFF0Ojp0cmFuc3Bh
cmVudCkpOworICAgIG1fcGl4bWFwLmZpbGwoUUNvbG9yKFF0Ojp0cmFuc3BhcmVudCkpOwogCiAg
ICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBuZXcgUVBhaW50ZXI7CiAgICAgbV9wYWludGVyID0gYWRv
cHRQdHIocGFpbnRlcik7CiAKLSAgICBpZiAoIXBhaW50ZXItPmJlZ2luKCZtX25hdGl2ZUltYWdl
KSkKKyAgICBpZiAoIXBhaW50ZXItPmJlZ2luKCZtX3BpeG1hcCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFNpbmNlIEltYWdlQnVmZmVyIGlzIHVzZWQgbWFpbmx5IGZvciBDYW52YXMsIGV4
cGxpY2l0bHkgaW5pdGlhbGl6ZQpAQCAtNzYsNyArNzYsMjIgQEAgSW1hZ2VCdWZmZXJEYXRhOjpJ
bWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBwYWludGVyLT5zZXRCcnVz
aChicnVzaCk7CiAgICAgcGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21w
b3NpdGlvbk1vZGVfU291cmNlT3Zlcik7CiAgICAgCi0gICAgbV9pbWFnZSA9IFN0aWxsSW1hZ2U6
OmNyZWF0ZUZvclJlbmRlcmluZygmbV9uYXRpdmVJbWFnZSk7CisgICAgbV9pbWFnZSA9IFN0aWxs
SW1hZ2U6OmNyZWF0ZUZvclJlbmRlcmluZygmbV9waXhtYXApOworfQorCitRSW1hZ2UgSW1hZ2VC
dWZmZXJEYXRhOjp0b1FJbWFnZSgpIGNvbnN0Cit7CisgICAgUVBhaW50RW5naW5lKiBwYWludEVu
Z2luZSA9IG1fcGl4bWFwLnBhaW50RW5naW5lKCk7CisgICAgaWYgKCFwYWludEVuZ2luZSB8fCBw
YWludEVuZ2luZS0+dHlwZSgpICE9IFFQYWludEVuZ2luZTo6UmFzdGVyKQorICAgICAgICByZXR1
cm4gbV9waXhtYXAudG9JbWFnZSgpOworCisgICAgLy8gUVJhc3RlclBpeG1hcERhdGE6OnRvSW1h
Z2UoKSB3aWxsIGRlZXAtY29weSB0aGUgYmFja2luZyBRSW1hZ2UgaWYgdGhlcmUncyBhbiBhY3Rp
dmUgUVBhaW50ZXIgb24gaXQuCisgICAgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHdlIGRv
bid0IHdhbnQgdGhhdCBoZXJlLCBzbyB3ZSB0ZW1wb3JhcmlseSByZWRpcmVjdCB0aGUgcGFpbnQg
ZW5naW5lLgorICAgIFFQYWludERldmljZSogY3VycmVudFBhaW50RGV2aWNlID0gcGFpbnRFbmdp
bmUtPnBhaW50RGV2aWNlKCk7CisgICAgcGFpbnRFbmdpbmUtPnNldFBhaW50RGV2aWNlKDApOwor
ICAgIFFJbWFnZSBpbWFnZSA9IG1fcGl4bWFwLnRvSW1hZ2UoKTsKKyAgICBwYWludEVuZ2luZS0+
c2V0UGFpbnREZXZpY2UoY3VycmVudFBhaW50RGV2aWNlKTsKKyAgICByZXR1cm4gaW1hZ2U7CiB9
CiAKIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCAv
KiByZXNvbHV0aW9uU2NhbGUgKi8sIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIERlZmVycmFs
TW9kZSwgYm9vbCYgc3VjY2VzcykKQEAgLTEwNSw5ICsxMjAsOSBAQCBHcmFwaGljc0NvbnRleHQq
IEltYWdlQnVmZmVyOjpjb250ZXh0KCkgY29uc3QKIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlQnVm
ZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7CiAg
ICAgaWYgKGNvcHlCZWhhdmlvciA9PSBDb3B5QmFja2luZ1N0b3JlKQotICAgICAgICByZXR1cm4g
U3RpbGxJbWFnZTo6Y3JlYXRlKG1fZGF0YS5tX25hdGl2ZUltYWdlKTsKKyAgICAgICAgcmV0dXJu
IFN0aWxsSW1hZ2U6OmNyZWF0ZShtX2RhdGEubV9waXhtYXApOwogCi0gICAgcmV0dXJuIFN0aWxs
SW1hZ2U6OmNyZWF0ZUZvclJlbmRlcmluZygmbV9kYXRhLm1fbmF0aXZlSW1hZ2UpOworICAgIHJl
dHVybiBTdGlsbEltYWdlOjpjcmVhdGVGb3JSZW5kZXJpbmcoJm1fZGF0YS5tX3BpeG1hcCk7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKQEAgLTEzNCwxMiArMTQ5LDEyIEBAIHZvaWQgSW1hZ2VC
dWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjCiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGZsb2F0UmVjdCkgY29uc3QKIHsKLSAgICBRSW1hZ2Uq
IG5hdGl2ZUltYWdlID0gbV9kYXRhLm1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7CisgICAgUVBpeG1hcCogbmF0aXZlSW1hZ2UgPSBtX2RhdGEubV9pbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1
cm47CiAKICAgICBJbnRSZWN0IHJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGZsb2F0UmVjdCk7Ci0g
ICAgUUltYWdlIGFscGhhTWFzayA9ICpuYXRpdmVJbWFnZTsKKyAgICBRUGl4bWFwIGFscGhhTWFz
ayA9ICpuYXRpdmVJbWFnZTsKIAogICAgIGNvbnRleHQtPnB1c2hUcmFuc3BhcmVuY3lMYXllcklu
dGVybmFsKHJlY3QsIDEuMCwgYWxwaGFNYXNrKTsKIH0KQEAgLTE1MCw3ICsxNjUsNyBAQCB2b2lk
IEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGlu
dD4mIGxvb2tVcFRhYmxlKQogICAgIGlmIChpc1BhaW50aW5nKQogICAgICAgICBtX2RhdGEubV9w
YWludGVyLT5lbmQoKTsKIAotICAgIFFJbWFnZSBpbWFnZSA9IG1fZGF0YS5tX25hdGl2ZUltYWdl
LmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAgIFFJbWFnZSBpbWFn
ZSA9IG1fZGF0YS50b1FJbWFnZSgpLmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdC
MzIpOwogICAgIEFTU0VSVCghaW1hZ2UuaXNOdWxsKCkpOwogCiAgICAgdWNoYXIqIGJpdHMgPSBp
bWFnZS5iaXRzKCk7CkBAIC0xNjcsMTAgKzE4MiwxMCBAQCB2b2lkIEltYWdlQnVmZmVyOjpwbGF0
Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgbV9kYXRhLm1fbmF0aXZlSW1hZ2UgPSBpbWFnZTsKKyAg
ICBtX2RhdGEubV9waXhtYXAgPSBRUGl4bWFwOjpmcm9tSW1hZ2UoaW1hZ2UpOwogCiAgICAgaWYg
KGlzUGFpbnRpbmcpCi0gICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPmJlZ2luKCZtX2RhdGEubV9u
YXRpdmVJbWFnZSk7CisgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPmJlZ2luKCZtX2RhdGEubV9w
aXhtYXApOwogfQogCiB0ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KQEAgLTIwOSw3ICsy
MjQsNyBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZQogICAgIGludCBudW1Sb3dzID0gZW5keSAt
IG9yaWdpbnk7CiAKICAgICAvLyBOT1RFOiBGb3IgdW5tdWx0aXBsaWVkIGRhdGEsIHdlIHVuZG8g
dGhlIHByZW11bHRpcGxpY2F0aW9uIGJlbG93LgotICAgIFFJbWFnZSBpbWFnZSA9IGltYWdlRGF0
YS5tX25hdGl2ZUltYWdlLmNvbnZlcnRUb0Zvcm1hdChOYXRpdmVJbWFnZVF0OjpkZWZhdWx0Rm9y
bWF0Rm9yQWxwaGFFbmFibGVkSW1hZ2VzKCkpOworICAgIFFJbWFnZSBpbWFnZSA9IGltYWdlRGF0
YS50b1FJbWFnZSgpLmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVs
dGlwbGllZCk7CiAKICAgICBBU1NFUlQoIWltYWdlLmlzTnVsbCgpKTsKIApAQCAtMzQzLDcgKzM1
OCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVk
LCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAKICAgICBib29sIGlzUGFpbnRpbmcgPSBt
X2RhdGEubV9wYWludGVyLT5pc0FjdGl2ZSgpOwogICAgIGlmICghaXNQYWludGluZykKLSAgICAg
ICAgbV9kYXRhLm1fcGFpbnRlci0+YmVnaW4oJm1fZGF0YS5tX25hdGl2ZUltYWdlKTsKKyAgICAg
ICAgbV9kYXRhLm1fcGFpbnRlci0+YmVnaW4oJm1fZGF0YS5tX3BpeG1hcCk7CiAgICAgZWxzZSB7
CiAgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnNhdmUoKTsKIApAQCAtMzYyLDcgKzM3Nyw3IEBA
IHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50
OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnJlc3Rv
cmUoKTsKIH0KIAotc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoY29uc3QgUUltYWdlJiBpbWFnZSwg
Y29uc3QgU3RyaW5nJiBmb3JtYXQsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgUUJ5dGVBcnJheSYg
ZGF0YSkKK3N0YXRpYyBib29sIGVuY29kZUltYWdlKGNvbnN0IFFQaXhtYXAmIHBpeG1hcCwgY29u
c3QgU3RyaW5nJiBmb3JtYXQsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgUUJ5dGVBcnJheSYgZGF0
YSkKIHsKICAgICBpbnQgY29tcHJlc3Npb25RdWFsaXR5ID0gMTAwOwogICAgIGlmIChxdWFsaXR5
ICYmICpxdWFsaXR5ID49IDAuMCAmJiAqcXVhbGl0eSA8PSAxLjApCkBAIC0zNzAsNyArMzg1LDcg
QEAgc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoY29uc3QgUUltYWdlJiBpbWFnZSwgY29uc3QgU3Ry
aW5nJiBmb3JtYXQsIGNvbnN0IGRvdWJsZSoKIAogICAgIFFCdWZmZXIgYnVmZmVyKCZkYXRhKTsK
ICAgICBidWZmZXIub3BlbihRQnVmZmVyOjpXcml0ZU9ubHkpOwotICAgIGJvb2wgc3VjY2VzcyA9
IGltYWdlLnNhdmUoJmJ1ZmZlciwgZm9ybWF0LnV0ZjgoKS5kYXRhKCksIGNvbXByZXNzaW9uUXVh
bGl0eSk7CisgICAgYm9vbCBzdWNjZXNzID0gcGl4bWFwLnNhdmUoJmJ1ZmZlciwgZm9ybWF0LnV0
ZjgoKS5kYXRhKCksIGNvbXByZXNzaW9uUXVhbGl0eSk7CiAgICAgYnVmZmVyLmNsb3NlKCk7CiAK
ICAgICByZXR1cm4gc3VjY2VzczsKQEAgLTM4MiwxMCArMzk3LDEwIEBAIFN0cmluZyBJbWFnZUJ1
ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVh
bGl0eSwgQ29vCiAKICAgICAvLyBRSW1hZ2VXcml0ZXIgZG9lcyBub3Qgc3VwcG9ydCBtaW1ldHlw
ZXMuIEl0IGRvZXMgc3VwcG9ydCBRdCBpbWFnZSBmb3JtYXRzIChwbmcsCiAgICAgLy8gZ2lmLCBq
cGVnLi4uLCB4cG0pIHNvIHNraXAgdGhlIGltYWdlLyB0byBnZXQgdGhlIFF0IGltYWdlIGZvcm1h
dCB1c2VkIHRvIGVuY29kZQotICAgIC8vIHRoZSBtX25hdGl2ZUltYWdlIGltYWdlLgorICAgIC8v
IHRoZSBtX3BpeG1hcCBpbWFnZS4KIAogICAgIFFCeXRlQXJyYXkgZGF0YTsKLSAgICBpZiAoIWVu
Y29kZUltYWdlKG1fZGF0YS5tX25hdGl2ZUltYWdlLCBtaW1lVHlwZS5zdWJzdHJpbmcoc2l6ZW9m
ICJpbWFnZSIpLCBxdWFsaXR5LCBkYXRhKSkKKyAgICBpZiAoIWVuY29kZUltYWdlKG1fZGF0YS5t
X3BpeG1hcCwgbWltZVR5cGUuc3Vic3RyaW5nKHNpemVvZiAiaW1hZ2UiKSwgcXVhbGl0eSwgZGF0
YSkpCiAgICAgICAgIHJldHVybiAiZGF0YTosIjsKIAogICAgIHJldHVybiAiZGF0YToiICsgbWlt
ZVR5cGUgKyAiO2Jhc2U2NCwiICsgZGF0YS50b0Jhc2U2NCgpLmRhdGEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcApp
bmRleCBkNDVlNjFjLi5hN2Q5Zjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwCkBAIC0yNzIsNyArMjcyLDkgQEAg
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiAgICAg
ZWxzZQogICAgICAgICBmb3JtYXQgPSBRSW1hZ2U6OkZvcm1hdF9SR0IzMjsKIAotICAgIHJldHVy
biBuZXcgUUltYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8dWNoYXIqPihtX2J5dGVzKSwgbV9zaXplLndp
ZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgc2l6ZW9mKFBpeGVsRGF0YSkgKiBtX3NpemUud2lkdGgo
KSwgZm9ybWF0KTsKKyAgICBRSW1hZ2UgaW1nKHJlaW50ZXJwcmV0X2Nhc3Q8dWNoYXIqPihtX2J5
dGVzKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgc2l6ZW9mKFBpeGVsRGF0YSkg
KiBtX3NpemUud2lkdGgoKSwgZm9ybWF0KTsKKworICAgIHJldHVybiBuZXcgUVBpeG1hcChRUGl4
bWFwOjpmcm9tSW1hZ2UoaW1nKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKaW5kZXggNWJlMzFjZS4uZmMwMWM0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKQEAgLTM3
LDcgKzM3LDYgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1h
Z2VRdC5oIgogI2luY2x1ZGUgIlNoYWRvd0JsdXIuaCIKICNpbmNsdWRlICJTdGlsbEltYWdlUXQu
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTU2LDcgKzU1LDcgQEAKIFFf
R1VJX0VYUE9SVCBRUGl4bWFwIHF0X3BpeG1hcEZyb21XaW5IQklUTUFQKEhCSVRNQVAsIGludCBo
Yml0bWFwRm9ybWF0ID0gMCk7CiAjZW5kaWYKIAotdHlwZWRlZiBRSGFzaDxRQnl0ZUFycmF5LCBR
SW1hZ2U+IFdlYkdyYXBoaWNIYXNoOwordHlwZWRlZiBRSGFzaDxRQnl0ZUFycmF5LCBRUGl4bWFw
PiBXZWJHcmFwaGljSGFzaDsKIFFfR0xPQkFMX1NUQVRJQyhXZWJHcmFwaGljSGFzaCwgX2dyYXBo
aWNzKQogCiBzdGF0aWMgdm9pZCBlYXJseUNsZWFyR3JhcGhpY3MoKQpAQCAtNzAsMjggKzY5LDI4
IEBAIHN0YXRpYyBXZWJHcmFwaGljSGFzaCogZ3JhcGhpY3MoKQogCiAgICAgaWYgKGhhc2gtPmlz
RW1wdHkoKSkgewogCi0gICAgICAgIC8vIHByZXZlbnQgflFJbWFnZSBydW5uaW5nIGFmdGVyIH5R
QXBwbGljYXRpb24gKGxlYWtzIG5hdGl2ZSBpbWFnZXMpCisgICAgICAgIC8vIHByZXZlbnQgflFQ
aXhtYXAgcnVubmluZyBhZnRlciB+UUFwcGxpY2F0aW9uIChsZWFrcyBuYXRpdmUgcGl4bWFwcykK
ICAgICAgICAgcUFkZFBvc3RSb3V0aW5lKGVhcmx5Q2xlYXJHcmFwaGljcyk7CiAKICAgICAgICAg
Ly8gUVdlYlNldHRpbmdzOjpNaXNzaW5nSW1hZ2VHcmFwaGljCi0gICAgICAgIGhhc2gtPmluc2Vy
dCgibWlzc2luZ0ltYWdlIiwgUUltYWdlKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2Vz
L21pc3NpbmdJbWFnZS5wbmciKSkpOworICAgICAgICBoYXNoLT5pbnNlcnQoIm1pc3NpbmdJbWFn
ZSIsIFFQaXhtYXAoUUxhdGluMVN0cmluZygiOndlYmtpdC9yZXNvdXJjZXMvbWlzc2luZ0ltYWdl
LnBuZyIpKSk7CiAgICAgICAgIC8vIFFXZWJTZXR0aW5nczo6TWlzc2luZ1BsdWdpbkdyYXBoaWMK
LSAgICAgICAgaGFzaC0+aW5zZXJ0KCJudWxsUGx1Z2luIiwgUUltYWdlKFFMYXRpbjFTdHJpbmco
Ijp3ZWJraXQvcmVzb3VyY2VzL251bGxQbHVnaW4ucG5nIikpKTsKKyAgICAgICAgaGFzaC0+aW5z
ZXJ0KCJudWxsUGx1Z2luIiwgUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6d2Via2l0L3Jlc291cmNl
cy9udWxsUGx1Z2luLnBuZyIpKSk7CiAgICAgICAgIC8vIFFXZWJTZXR0aW5nczo6RGVmYXVsdEZy
YW1lSWNvbkdyYXBoaWMKLSAgICAgICAgaGFzaC0+aW5zZXJ0KCJ1cmxJY29uIiwgUUltYWdlKFFM
YXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2VzL3VybEljb24ucG5nIikpKTsKKyAgICAgICAg
aGFzaC0+aW5zZXJ0KCJ1cmxJY29uIiwgUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6d2Via2l0L3Jl
c291cmNlcy91cmxJY29uLnBuZyIpKSk7CiAgICAgICAgIC8vIFFXZWJTZXR0aW5nczo6VGV4dEFy
ZWFTaXplR3JpcENvcm5lckdyYXBoaWMKLSAgICAgICAgaGFzaC0+aW5zZXJ0KCJ0ZXh0QXJlYVJl
c2l6ZUNvcm5lciIsIFFJbWFnZShRTGF0aW4xU3RyaW5nKCI6d2Via2l0L3Jlc291cmNlcy90ZXh0
QXJlYVJlc2l6ZUNvcm5lci5wbmciKSkpOworICAgICAgICBoYXNoLT5pbnNlcnQoInRleHRBcmVh
UmVzaXplQ29ybmVyIiwgUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6d2Via2l0L3Jlc291cmNlcy90
ZXh0QXJlYVJlc2l6ZUNvcm5lci5wbmciKSkpOwogICAgICAgICAvLyBRV2ViU2V0dGluZ3M6OkRl
bGV0ZUJ1dHRvbkdyYXBoaWMKLSAgICAgICAgaGFzaC0+aW5zZXJ0KCJkZWxldGVCdXR0b24iLCBR
SW1hZ2UoUUxhdGluMVN0cmluZygiOndlYmtpdC9yZXNvdXJjZXMvZGVsZXRlQnV0dG9uLnBuZyIp
KSk7CisgICAgICAgIGhhc2gtPmluc2VydCgiZGVsZXRlQnV0dG9uIiwgUVBpeG1hcChRTGF0aW4x
U3RyaW5nKCI6d2Via2l0L3Jlc291cmNlcy9kZWxldGVCdXR0b24ucG5nIikpKTsKICAgICAgICAg
Ly8gUVdlYlNldHRpbmdzOjpJbnB1dFNwZWVjaEJ1dHRvbkdyYXBoaWMKLSAgICAgICAgaGFzaC0+
aW5zZXJ0KCJpbnB1dFNwZWVjaCIsIFFJbWFnZShRTGF0aW4xU3RyaW5nKCI6d2Via2l0L3Jlc291
cmNlcy9pbnB1dFNwZWVjaC5wbmciKSkpOworICAgICAgICBoYXNoLT5pbnNlcnQoImlucHV0U3Bl
ZWNoIiwgUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6d2Via2l0L3Jlc291cmNlcy9pbnB1dFNwZWVj
aC5wbmciKSkpOwogICAgIH0KIAogICAgIHJldHVybiBoYXNoOwogfQogCiAvLyBUaGlzIGZ1bmN0
aW9uIGxvYWRzIHJlc291cmNlcyBpbnRvIFdlYktpdAotc3RhdGljIFFJbWFnZSBsb2FkUmVzb3Vy
Y2VJbWFnZShjb25zdCBjaGFyICpuYW1lKQorc3RhdGljIFFQaXhtYXAgbG9hZFJlc291cmNlUGl4
bWFwKGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgICAgcmV0dXJuIGdyYXBoaWNzKCktPnZhbHVlKG5h
bWUpOwogfQpAQCAtMTE4LDIzICsxMTcsMjMgQEAgYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wg
Y2xlYXJNZXRhZGF0YSkKIAogUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJl
c291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCiB7Ci0gICAgcmV0dXJuIFN0aWxsSW1hZ2U6OmNyZWF0
ZShsb2FkUmVzb3VyY2VJbWFnZShuYW1lKSk7CisgICAgcmV0dXJuIFN0aWxsSW1hZ2U6OmNyZWF0
ZShsb2FkUmVzb3VyY2VQaXhtYXAobmFtZSkpOwogfQogCi12b2lkIEltYWdlOjpzZXRQbGF0Zm9y
bVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFFJbWFnZSYgaW1hZ2UpCit2b2lkIElt
YWdlOjpzZXRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFFQaXhtYXAm
IHBpeG1hcCkKIHsKICAgICBXZWJHcmFwaGljSGFzaCogaCA9IGdyYXBoaWNzKCk7Ci0gICAgaWYg
KGltYWdlLmlzTnVsbCgpKQorICAgIGlmIChwaXhtYXAuaXNOdWxsKCkpCiAgICAgICAgIGgtPnJl
bW92ZShuYW1lKTsKICAgICBlbHNlCi0gICAgICAgIGgtPmluc2VydChuYW1lLCBpbWFnZSk7Cisg
ICAgICAgIGgtPmluc2VydChuYW1lLCBwaXhtYXApOwogfQogCiB2b2lkIEltYWdlOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICBRSW1hZ2UqIGZyYW1l
SW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlmICghZnJhbWVJbWFn
ZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCisgICAg
UVBpeG1hcCogZnJhbWVQaXhtYXAgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAg
IGlmICghZnJhbWVQaXhtYXApIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4g
aW1hZ2UgeWV0LgogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9E
T1dOX1NBTVBMSU5HKQpAQCAtMTQ5LDM4ICsxNDgsMzQgQEAgdm9pZCBJbWFnZTo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dAogICAgIGlmICghZHIud2lkdGgoKSB8fCAhZHIuaGVpZ2h0KCkgfHwgIXRyLndpZHRoKCkgfHwg
IXRyLmhlaWdodCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBRSW1hZ2UgaW1hZ2UgPSAqZnJh
bWVJbWFnZTsKLSAgICBpZiAodHIueCgpIHx8IHRyLnkoKSB8fCB0ci53aWR0aCgpICE9IGltYWdl
LndpZHRoKCkgfHwgdHIuaGVpZ2h0KCkgIT0gaW1hZ2UuaGVpZ2h0KCkpCi0gICAgICAgIGltYWdl
ID0gaW1hZ2UuY29weSh0cik7CisgICAgUVBpeG1hcCBwaXhtYXAgPSAqZnJhbWVQaXhtYXA7Cisg
ICAgaWYgKHRyLngoKSB8fCB0ci55KCkgfHwgdHIud2lkdGgoKSAhPSBwaXhtYXAud2lkdGgoKSB8
fCB0ci5oZWlnaHQoKSAhPSBwaXhtYXAuaGVpZ2h0KCkpCisgICAgICAgIHBpeG1hcCA9IHBpeG1h
cC5jb3B5KHRyKTsKIAogICAgIENvbXBvc2l0ZU9wZXJhdG9yIHByZXZpb3VzT3BlcmF0b3IgPSBj
dHh0LT5jb21wb3NpdGVPcGVyYXRpb24oKTsKIAotICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJh
dGlvbighaW1hZ2UuaGFzQWxwaGFDaGFubmVsKCkgJiYgb3AgPT0gQ29tcG9zaXRlU291cmNlT3Zl
ciA/IENvbXBvc2l0ZUNvcHkgOiBvcCk7CisgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9u
KCFwaXhtYXAuaGFzQWxwaGEoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9z
aXRlQ29weSA6IG9wKTsKIAogICAgIFFQYWludGVyKiBwID0gY3R4dC0+cGxhdGZvcm1Db250ZXh0
KCk7CiAgICAgUVRyYW5zZm9ybSB0cmFuc2Zvcm0ocGF0dGVyblRyYW5zZm9ybSk7CiAKLSAgICAv
LyBJZiB0aGlzIHdvdWxkIGRyYXcgbW9yZSB0aGFuIG9uZSBzY2FsZWQgdGlsZSwgd2Ugc2NhbGUg
dGhlIGltYWdlIGZpcnN0IGFuZCB0aGVuIHVzZSB0aGUgcmVzdWx0IHRvIGRyYXcuCisgICAgLy8g
SWYgdGhpcyB3b3VsZCBkcmF3IG1vcmUgdGhhbiBvbmUgc2NhbGVkIHRpbGUsIHdlIHNjYWxlIHRo
ZSBwaXhtYXAgZmlyc3QgYW5kIHRoZW4gdXNlIHRoZSByZXN1bHQgdG8gZHJhdy4KICAgICBpZiAo
dHJhbnNmb3JtLnR5cGUoKSA9PSBRVHJhbnNmb3JtOjpUeFNjYWxlKSB7CiAgICAgICAgIFFSZWN0
RiB0aWxlUmVjdEluVGFyZ2V0Q29vcmRzID0gKHRyYW5zZm9ybSAqIFFUcmFuc2Zvcm0oKS50cmFu
c2xhdGUocGhhc2UueCgpLCBwaGFzZS55KCkpKS5tYXBSZWN0KHRyKTsKIAogICAgICAgICBib29s
IHRpbGVXaWxsQmVQYWludGVkT25seU9uY2UgPSB0aWxlUmVjdEluVGFyZ2V0Q29vcmRzLmNvbnRh
aW5zKGRyKTsKICAgICAgICAgaWYgKCF0aWxlV2lsbEJlUGFpbnRlZE9ubHlPbmNlKSB7Ci0gICAg
ICAgICAgICBRU2l6ZUYgc2NhbGVkU2l6ZShmbG9hdChpbWFnZS53aWR0aCgpKSAqIHRyYW5zZm9y
bS5tMTEoKSwgZmxvYXQoaW1hZ2UuaGVpZ2h0KCkpICogdHJhbnNmb3JtLm0yMigpKTsKLSAgICAg
ICAgICAgIFFJbWFnZSBzY2FsZWRJbWFnZTsKLSAgICAgICAgICAgIGlmIChpbWFnZS5oYXNBbHBo
YUNoYW5uZWwoKSkgewotICAgICAgICAgICAgICAgIHNjYWxlZEltYWdlID0gUUltYWdlKHNjYWxl
ZFNpemUudG9TaXplKCksIE5hdGl2ZUltYWdlUXQ6OmRlZmF1bHRGb3JtYXRGb3JBbHBoYUVuYWJs
ZWRJbWFnZXMoKSk7Ci0gICAgICAgICAgICAgICAgc2NhbGVkSW1hZ2UuZmlsbChRdDo6dHJhbnNw
YXJlbnQpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc2NhbGVkSW1hZ2Ug
PSBRSW1hZ2Uoc2NhbGVkU2l6ZS50b1NpemUoKSwgTmF0aXZlSW1hZ2VRdDo6ZGVmYXVsdEZvcm1h
dEZvck9wYXF1ZUltYWdlcygpKTsKLQorICAgICAgICAgICAgUVNpemVGIHNjYWxlZFNpemUoZmxv
YXQocGl4bWFwLndpZHRoKCkpICogdHJhbnNmb3JtLm0xMSgpLCBmbG9hdChwaXhtYXAuaGVpZ2h0
KCkpICogdHJhbnNmb3JtLm0yMigpKTsKKyAgICAgICAgICAgIFFQaXhtYXAgc2NhbGVkUGl4bWFw
KHNjYWxlZFNpemUudG9TaXplKCkpOworICAgICAgICAgICAgaWYgKHBpeG1hcC5oYXNBbHBoYSgp
KQorICAgICAgICAgICAgICAgIHNjYWxlZFBpeG1hcC5maWxsKFF0Ojp0cmFuc3BhcmVudCk7CiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgUVBhaW50ZXIgcGFpbnRlcigmc2NhbGVkSW1h
Z2UpOworICAgICAgICAgICAgICAgIFFQYWludGVyIHBhaW50ZXIoJnNjYWxlZFBpeG1hcCk7CiAg
ICAgICAgICAgICAgICAgcGFpbnRlci5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBv
c2l0aW9uTW9kZV9Tb3VyY2UpOwogICAgICAgICAgICAgICAgIHBhaW50ZXIuc2V0UmVuZGVySGlu
dHMocC0+cmVuZGVySGludHMoKSk7Ci0gICAgICAgICAgICAgICAgcGFpbnRlci5kcmF3SW1hZ2Uo
UVJlY3QoMCwgMCwgc2NhbGVkSW1hZ2Uud2lkdGgoKSwgc2NhbGVkSW1hZ2UuaGVpZ2h0KCkpLCBp
bWFnZSk7CisgICAgICAgICAgICAgICAgcGFpbnRlci5kcmF3UGl4bWFwKFFSZWN0KDAsIDAsIHNj
YWxlZFBpeG1hcC53aWR0aCgpLCBzY2FsZWRQaXhtYXAuaGVpZ2h0KCkpLCBwaXhtYXApOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaW1hZ2UgPSBzY2FsZWRJbWFnZTsKKyAgICAgICAgICAg
IHBpeG1hcCA9IHNjYWxlZFBpeG1hcDsKICAgICAgICAgICAgIHRyYW5zZm9ybSA9IFFUcmFuc2Zv
cm06OmZyb21UcmFuc2xhdGUodHJhbnNmb3JtLmR4KCksIHRyYW5zZm9ybS5keSgpKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTE4OSw3ICsxODQsNyBAQCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAg
ICAgdHJhbnNmb3JtICo9IFFUcmFuc2Zvcm0oKS50cmFuc2xhdGUocGhhc2UueCgpLCBwaGFzZS55
KCkpOwogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUodHIueCgpLCB0ci55KCkpOwogCi0gICAgUUJy
dXNoIGIoaW1hZ2UpOworICAgIFFCcnVzaCBiKHBpeG1hcCk7CiAgICAgYi5zZXRUcmFuc2Zvcm0o
dHJhbnNmb3JtKTsKICAgICBwLT5maWxsUmVjdChkciwgYik7CiAKQEAgLTE5OSw3ICsxOTQsNyBA
QCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJh
dyh0aGlzKTsKIH0KIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFFJbWFnZSogaW1hZ2UsIElt
YWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFFQaXhtYXAq
IHBpeG1hcCwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikK
ICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAgICAgLCBtX2ZyYW1lcygwKQpAQCAtMjE3LDE0ICsy
MTIsMTQgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFFJbWFnZSogaW1hZ2UsIEltYWdlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCiAgICAgLCBtX2hh
dmVGcmFtZUNvdW50KHRydWUpCiB7Ci0gICAgaW50IHdpZHRoID0gaW1hZ2UtPndpZHRoKCk7Ci0g
ICAgaW50IGhlaWdodCA9IGltYWdlLT5oZWlnaHQoKTsKKyAgICBpbnQgd2lkdGggPSBwaXhtYXAt
PndpZHRoKCk7CisgICAgaW50IGhlaWdodCA9IHBpeG1hcC0+aGVpZ2h0KCk7CiAgICAgbV9kZWNv
ZGVkU2l6ZSA9IHdpZHRoICogaGVpZ2h0ICogNDsKICAgICBtX3NpemUgPSBJbnRTaXplKHdpZHRo
LCBoZWlnaHQpOwogCiAgICAgbV9mcmFtZXMuZ3JvdygxKTsKLSAgICBtX2ZyYW1lc1swXS5tX2Zy
YW1lID0gaW1hZ2U7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IGltYWdlLT5oYXNBbHBo
YUNoYW5uZWwoKTsKKyAgICBtX2ZyYW1lc1swXS5tX2ZyYW1lID0gcGl4bWFwOworICAgIG1fZnJh
bWVzWzBdLm1faGFzQWxwaGEgPSBwaXhtYXAtPmhhc0FscGhhKCk7CiAgICAgbV9mcmFtZXNbMF0u
bV9oYXZlTWV0YWRhdGEgPSB0cnVlOwogICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwogfQpAQCAt
MjQ1LDggKzI0MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBj
dHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwKICAgICBpZiAobm9ybWFsaXplZFNyYy5pc0VtcHR5
KCkgfHwgbm9ybWFsaXplZERzdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFFJ
bWFnZSogaW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotCisgICAgUVBpeG1h
cCogaW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghaW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIApAQCAtMjYwLDE5ICsyNTQsMTkgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAogI2Vu
ZGlmCiAKICAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0gY3R4dC0+Y29t
cG9zaXRlT3BlcmF0aW9uKCk7Ci0gICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCFpbWFn
ZS0+aGFzQWxwaGFDaGFubmVsKCkgJiYgb3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciA/IENvbXBv
c2l0ZUNvcHkgOiBvcCk7CisgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCFpbWFnZS0+
aGFzQWxwaGEoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6
IG9wKTsKIAogICAgIGlmIChjdHh0LT5oYXNTaGFkb3coKSkgewogICAgICAgICBTaGFkb3dCbHVy
KiBzaGFkb3cgPSBjdHh0LT5zaGFkb3dCbHVyKCk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCog
c2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjdHh0LCBub3JtYWxpemVk
RHN0KTsKICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKICAgICAgICAgICAgIFFQYWludGVy
KiBzaGFkb3dQYWludGVyID0gc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAg
ICAgICAgICBzaGFkb3dQYWludGVyLT5kcmF3SW1hZ2Uobm9ybWFsaXplZERzdCwgKmltYWdlLCBu
b3JtYWxpemVkU3JjKTsKKyAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmRyYXdQaXhtYXAobm9y
bWFsaXplZERzdCwgKmltYWdlLCBub3JtYWxpemVkU3JjKTsKICAgICAgICAgICAgIHNoYWRvdy0+
ZW5kU2hhZG93TGF5ZXIoY3R4dCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjdHh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+ZHJhd0ltYWdlKG5vcm1hbGl6ZWREc3QsICppbWFnZSwgbm9ybWFsaXpl
ZFNyYyk7CisgICAgY3R4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdQaXhtYXAobm9ybWFsaXpl
ZERzdCwgKmltYWdlLCBub3JtYWxpemVkU3JjKTsKIAogICAgIGN0eHQtPnNldENvbXBvc2l0ZU9w
ZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIApAQCAtMjg4LDIwICsyODIsMjAgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICBpZiAoZnJhbWVDb3VudCgpID4g
MSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUUltYWdlKiBmcmFtZUltYWdlID0gZnJhbWVBdElu
ZGV4KDApOwotICAgIGlmICghZnJhbWVJbWFnZSB8fCBmcmFtZUltYWdlLT53aWR0aCgpICE9IDEg
fHwgZnJhbWVJbWFnZS0+aGVpZ2h0KCkgIT0gMSkKKyAgICBRUGl4bWFwKiBmcmFtZVBpeG1hcCA9
IGZyYW1lQXRJbmRleCgwKTsKKyAgICBpZiAoIWZyYW1lUGl4bWFwIHx8IGZyYW1lUGl4bWFwLT53
aWR0aCgpICE9IDEgfHwgZnJhbWVQaXhtYXAtPmhlaWdodCgpICE9IDEpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1faXNTb2xpZENvbG9yID0gdHJ1ZTsKLSAgICBtX3NvbGlkQ29sb3IgPSBRQ29s
b3I6OmZyb21SZ2JhKGZyYW1lSW1hZ2UtPnBpeGVsKDAsIDApKTsKKyAgICBtX3NvbGlkQ29sb3Ig
PSBRQ29sb3I6OmZyb21SZ2JhKGZyYW1lUGl4bWFwLT50b0ltYWdlKCkucGl4ZWwoMCwgMCkpOwog
fQogCiAjaWYgT1MoV0lORE9XUykKIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdl
OjpjcmVhdGUoSEJJVE1BUCBoQml0bWFwKQogewotICAgIFFJbWFnZSogbmF0aXZlSW1hZ2UgPSBu
ZXcgUUltYWdlKHF0X3BpeG1hcEZyb21XaW5IQklUTUFQKGhCaXRtYXApLnRvSW1hZ2UoKSk7Cisg
ICAgUVBpeG1hcCogcVBpeG1hcCA9IG5ldyBRUGl4bWFwKHF0X3BpeG1hcEZyb21XaW5IQklUTUFQ
KGhCaXRtYXApKTsKIAotICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKG5hdGl2ZUltYWdl
KTsKKyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShxUGl4bWFwKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXR0ZXJu
UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0dGVyblF0LmNw
cAppbmRleCA1Yzk0MTIyLi43YWFlNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9QYXR0ZXJuUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L1BhdHRlcm5RdC5jcHAKQEAgLTMzLDEyICszMywxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFFCcnVzaCBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oKSBj
b25zdAogewotICAgIFFJbWFnZSogaW1hZ2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKLSAgICBpZiAoIWltYWdlKQorICAgIFFQaXhtYXAqIHBpeG1hcCA9IHRp
bGVJbWFnZSgpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICghcGl4bWFw
KQogICAgICAgICByZXR1cm4gUUJydXNoKCk7CiAKICAgICAvLyBRdCBtZXJnZXMgcGF0dGVyIHNw
YWNlIGFuZCB1c2VyIHNwYWNlIGl0c2VsZgotICAgIFFCcnVzaCBicnVzaCgqaW1hZ2UpOworICAg
IFFCcnVzaCBicnVzaCgqcGl4bWFwKTsKICAgICBicnVzaC5zZXRUcmFuc2Zvcm0obV9wYXR0ZXJu
U3BhY2VUcmFuc2Zvcm1hdGlvbik7CiAKICAgICByZXR1cm4gYnJ1c2g7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAppbmRleCAw
NDEyNTIwLi44MDY2NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKQEAgLTM2LDQxICszNiw0MSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVN0aWxsSW1hZ2U6OlN0aWxsSW1hZ2UoY29uc3QgUUltYWdlJiBpbWFn
ZSkKLSAgICA6IG1faW1hZ2UobmV3IFFJbWFnZShpbWFnZSkpCi0gICAgLCBtX293bnNJbWFnZSh0
cnVlKQorU3RpbGxJbWFnZTo6U3RpbGxJbWFnZShjb25zdCBRUGl4bWFwJiBwaXhtYXApCisgICAg
OiBtX3BpeG1hcChuZXcgUVBpeG1hcChwaXhtYXApKQorICAgICwgbV9vd25zUGl4bWFwKHRydWUp
CiB7fQogCi1TdGlsbEltYWdlOjpTdGlsbEltYWdlKGNvbnN0IFFJbWFnZSogaW1hZ2UpCi0gICAg
OiBtX2ltYWdlKGltYWdlKQotICAgICwgbV9vd25zSW1hZ2UoZmFsc2UpCitTdGlsbEltYWdlOjpT
dGlsbEltYWdlKGNvbnN0IFFQaXhtYXAqIHBpeG1hcCkKKyAgICA6IG1fcGl4bWFwKHBpeG1hcCkK
KyAgICAsIG1fb3duc1BpeG1hcChmYWxzZSkKIHt9CiAKIFN0aWxsSW1hZ2U6On5TdGlsbEltYWdl
KCkKIHsKLSAgICBpZiAobV9vd25zSW1hZ2UpCi0gICAgICAgIGRlbGV0ZSBtX2ltYWdlOworICAg
IGlmIChtX293bnNQaXhtYXApCisgICAgICAgIGRlbGV0ZSBtX3BpeG1hcDsKIH0KIAogYm9vbCBT
dGlsbEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSgpCiB7Ci0gICAgcmV0dXJuIG1faW1hZ2Ut
Pmhhc0FscGhhQ2hhbm5lbCgpOworICAgIHJldHVybiBtX3BpeG1hcC0+aGFzQWxwaGEoKTsKIH0K
IAogSW50U2l6ZSBTdGlsbEltYWdlOjpzaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gSW50U2l6
ZShtX2ltYWdlLT53aWR0aCgpLCBtX2ltYWdlLT5oZWlnaHQoKSk7CisgICAgcmV0dXJuIEludFNp
emUobV9waXhtYXAtPndpZHRoKCksIG1fcGl4bWFwLT5oZWlnaHQoKSk7CiB9CiAKIE5hdGl2ZUlt
YWdlUHRyIFN0aWxsSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKIHsKLSAgICBy
ZXR1cm4gY29uc3RfY2FzdDxOYXRpdmVJbWFnZVB0cj4obV9pbWFnZSk7CisgICAgcmV0dXJuIGNv
bnN0X2Nhc3Q8TmF0aXZlSW1hZ2VQdHI+KG1fcGl4bWFwKTsKIH0KIAogdm9pZCBTdGlsbEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wKQogewotICAgIGlmIChtX2ltYWdlLT5pc051bGwoKSkKKyAgICBpZiAo
bV9waXhtYXAtPmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBGbG9hdFJlY3Qgbm9y
bWFsaXplZFNyYyA9IHNyYy5ub3JtYWxpemVkKCk7CkBAIC04NCwxMiArODQsMTIgQEAgdm9pZCBT
dGlsbEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3QsCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVn
aW5TaGFkb3dMYXllcihjdHh0LCBub3JtYWxpemVkRHN0KTsKICAgICAgICAgaWYgKHNoYWRvd0Nv
bnRleHQpIHsKICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93Q29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgICAgICAgICBzaGFkb3dQYWludGVyLT5kcmF3
SW1hZ2Uobm9ybWFsaXplZERzdCwgKm1faW1hZ2UsIG5vcm1hbGl6ZWRTcmMpOworICAgICAgICAg
ICAgc2hhZG93UGFpbnRlci0+ZHJhd1BpeG1hcChub3JtYWxpemVkRHN0LCAqbV9waXhtYXAsIG5v
cm1hbGl6ZWRTcmMpOwogICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihjdHh0KTsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGN0eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3SW1h
Z2Uobm9ybWFsaXplZERzdCwgKm1faW1hZ2UsIG5vcm1hbGl6ZWRTcmMpOworICAgIGN0eHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5kcmF3UGl4bWFwKG5vcm1hbGl6ZWREc3QsICptX3BpeG1hcCwgbm9y
bWFsaXplZFNyYyk7CiAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3Bl
cmF0b3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9TdGlsbEltYWdlUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L1N0aWxsSW1hZ2VRdC5oCmluZGV4IDhjOWVjMGQuLjA2MDliNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5oCkBAIC0zNCwxNCAr
MzQsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU3RpbGxJbWFnZSA6IHB1
YmxpYyBJbWFnZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGls
bEltYWdlPiBjcmVhdGUoY29uc3QgUUltYWdlJiBpbWFnZSkKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U3RpbGxJbWFnZT4gY3JlYXRlKGNvbnN0IFFQaXhtYXAmIHBpeG1hcCkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGlsbEltYWdlKGltYWdlKSk7Cisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0aWxsSW1hZ2UocGl4bWFwKSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGlsbEltYWdlPiBjcmVhdGVGb3JS
ZW5kZXJpbmcoY29uc3QgUUltYWdlKiBpbWFnZSkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RpbGxJbWFnZT4gY3JlYXRlRm9yUmVuZGVyaW5nKGNvbnN0IFFQaXhtYXAqIHBpeG1hcCkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGlsbEltYWdlKGltYWdl
KSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0aWxsSW1hZ2UocGl4bWFwKSk7
CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lSGFzQWxwaGEo
KTsKQEAgLTU2LDEyICs1NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU3RpbGxJbWFnZShjb25z
dCBRSW1hZ2UmKTsKLSAgICAgICAgU3RpbGxJbWFnZShjb25zdCBRSW1hZ2UqKTsKKyAgICAgICAg
U3RpbGxJbWFnZShjb25zdCBRUGl4bWFwJik7CisgICAgICAgIFN0aWxsSW1hZ2UoY29uc3QgUVBp
eG1hcCopOwogICAgICAgICB2aXJ0dWFsIH5TdGlsbEltYWdlKCk7CiAgICAgICAgIAotICAgICAg
ICBjb25zdCBRSW1hZ2UqIG1faW1hZ2U7Ci0gICAgICAgIGJvb2wgbV9vd25zSW1hZ2U7CisgICAg
ICAgIGNvbnN0IFFQaXhtYXAqIG1fcGl4bWFwOworICAgICAgICBib29sIG1fb3duc1BpeG1hcDsK
ICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9UcmFuc3BhcmVuY3lMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvVHJhbnNwYXJlbmN5TGF5ZXIuaAppbmRleCA1OTc0MDE3Li5mMTNkZWIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9UcmFuc3BhcmVuY3lMYXll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1RyYW5zcGFyZW5j
eUxheWVyLmgKQEAgLTM2LDI0ICszNiwyNCBAQAogI2lmbmRlZiBUcmFuc3BhcmVuY3lMYXllcl9o
CiAjZGVmaW5lIFRyYW5zcGFyZW5jeUxheWVyX2gKIAotI2luY2x1ZGUgPE5hdGl2ZUltYWdlUXQu
aD4KICNpbmNsdWRlIDxRUGFpbnRFbmdpbmU+CiAjaW5jbHVkZSA8UVBhaW50ZXI+CisjaW5jbHVk
ZSA8UVBpeG1hcD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgVHJhbnNwYXJlbmN5
TGF5ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFRyYW5z
cGFyZW5jeUxheWVyKGNvbnN0IFFQYWludGVyKiBwLCBjb25zdCBRUmVjdCAmcmVjdCwgcXJlYWwg
b3BhY2l0eSwgUUltYWdlJiBhbHBoYU1hc2spCi0gICAgICAgIDogaW1hZ2UocmVjdC53aWR0aCgp
LCByZWN0LmhlaWdodCgpLCBOYXRpdmVJbWFnZVF0OjpkZWZhdWx0Rm9ybWF0Rm9yQWxwaGFFbmFi
bGVkSW1hZ2VzKCkpCisgICAgVHJhbnNwYXJlbmN5TGF5ZXIoY29uc3QgUVBhaW50ZXIqIHAsIGNv
bnN0IFFSZWN0ICZyZWN0LCBxcmVhbCBvcGFjaXR5LCBRUGl4bWFwJiBhbHBoYU1hc2spCisgICAg
ICAgIDogcGl4bWFwKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkKICAgICAgICAgLCBvcGFj
aXR5KG9wYWNpdHkpCiAgICAgICAgICwgYWxwaGFNYXNrKGFscGhhTWFzaykKICAgICAgICAgLCBz
YXZlQ291bnRlcigxKSAvLyBzZWUgdGhlIGNvbW1lbnQgZm9yIHNhdmVDb3VudGVyCiAgICAgewog
ICAgICAgICBvZmZzZXQgPSByZWN0LnRvcExlZnQoKTsKLSAgICAgICAgaW1hZ2UuZmlsbChRdDo6
dHJhbnNwYXJlbnQpOwotICAgICAgICBwYWludGVyLmJlZ2luKCZpbWFnZSk7CisgICAgICAgIHBp
eG1hcC5maWxsKFF0Ojp0cmFuc3BhcmVudCk7CisgICAgICAgIHBhaW50ZXIuYmVnaW4oJnBpeG1h
cCk7CiAgICAgICAgIHBhaW50ZXIuc2V0UmVuZGVySGludHMocC0+cmVuZGVySGludHMoKSk7CiAg
ICAgICAgIHBhaW50ZXIudHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICBwYWludGVyLnNldFBl
bihwLT5wZW4oKSk7CkBAIC02NywxMiArNjcsMTIgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
LSAgICBRSW1hZ2UgaW1hZ2U7CisgICAgUVBpeG1hcCBwaXhtYXA7CiAgICAgUVBvaW50IG9mZnNl
dDsKICAgICBRUGFpbnRlciBwYWludGVyOwogICAgIHFyZWFsIG9wYWNpdHk7CiAgICAgLy8gZm9y
IGNsaXBUb0ltYWdlQnVmZmVyCi0gICAgUUltYWdlIGFscGhhTWFzazsKKyAgICBRUGl4bWFwIGFs
cGhhTWFzazsKICAgICAvLyBzYXZlQ291bnRlciBpcyBvbmx5IHVzZWQgaW4gY29tYmluYXRpb24g
d2l0aCBhbHBoYU1hc2sKICAgICAvLyBvdGhlcndpc2UsIGl0cyB2YWx1ZSBpcyB1bnNwZWNpZmll
ZAogICAgIGludCBzYXZlQ291bnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZVF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZVF0LmNw
cAppbmRleCBlMWIyNzU4Li43MzRhMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VRdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NTdXJmYWNl
UXQuY3BwCkBAIC01Miw3ICs1Miw4IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IEdyYXBoaWNzU3VyZmFj
ZTo6Y3JlYXRlUmVhZE9ubHlJbWFnZShjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGludCBzdHJp
ZGU7CiAgICAgUUltYWdlOjpGb3JtYXQgZm9ybWF0ID0gKGZsYWdzKCkgJiBTdXBwb3J0c0FscGhh
KSA/IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkIDogUUltYWdlOjpGb3JtYXRf
UkdCMzI7CiAgICAgY2hhciogZGF0YSA9IHBsYXRmb3JtTG9jayhyZWN0LCAmc3RyaWRlLCBSZXRh
aW5QaXhlbHMgfCBSZWFkT25seSk7Ci0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUobmV3
IFFJbWFnZShyZWludGVycHJldF9jYXN0PHVjaGFyKj4oZGF0YSksIHJlY3Qud2lkdGgoKSwgcmVj
dC5oZWlnaHQoKSwgc3RyaWRlLCBmb3JtYXQsIGRpZFJlbGVhc2VJbWFnZSwgdGhpcykpOworICAg
IFFJbWFnZSBpbWFnZShyZWludGVycHJldF9jYXN0PHVjaGFyKj4oZGF0YSksIHJlY3Qud2lkdGgo
KSwgcmVjdC5oZWlnaHQoKSwgc3RyaWRlLCBmb3JtYXQsIGRpZFJlbGVhc2VJbWFnZSwgdGhpcyk7
CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUobmV3IFFQaXhtYXAoUVBpeG1hcDo6ZnJv
bUltYWdlKGltYWdlKSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IDg3M2Y5
MDQuLjkxNjliZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC02OTcsOCArNjk3LDkgQEAg
dm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3Qg
SW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KICAgICBjb25zdCBjaGFyKiBpbWFnZURhdGE7CiAKICNp
ZiBQTEFURk9STShRVCkKLSAgICBpbWFnZURhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihmcmFtZUltYWdlLT5jb25zdEJpdHMoKSk7Ci0gICAgYnl0ZXNQZXJMaW5lID0gZnJhbWVJ
bWFnZS0+Ynl0ZXNQZXJMaW5lKCk7CisgICAgUUltYWdlIHFJbWFnZSA9IGZyYW1lSW1hZ2UtPnRv
SW1hZ2UoKTsKKyAgICBpbWFnZURhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihx
SW1hZ2UuY29uc3RCaXRzKCkpOworICAgIGJ5dGVzUGVyTGluZSA9IHFJbWFnZS5ieXRlc1Blckxp
bmUoKTsKICNlbGlmIFVTRShDQUlSTykKICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBm
cmFtZUltYWdlLT5zdXJmYWNlKCk7CiAgICAgaW1hZ2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKaW5kZXggOGQ4NGQ3Mi4uNjIx
MmY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAt
NTAsNyArNTAsNiBAQAogCiAjaW5jbHVkZSA8UUNsaXBib2FyZD4KICNpbmNsdWRlIDxRR3VpQXBw
bGljYXRpb24+Ci0jaW5jbHVkZSA8UUltYWdlPgogI2luY2x1ZGUgPFFMaXN0PgogI2luY2x1ZGUg
PFFNaW1lRGF0YT4KICNpbmNsdWRlIDxRU3RyaW5nTGlzdD4KQEAgLTI0NCw3ICsyNDMsNyBAQCBE
cmFnSW1hZ2VSZWYgQ2xpcGJvYXJkUXQ6OmNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYgZHJhZ0xv
YykgY29uc3QKICAgICBpZiAoIW1fZHJhZ0ltYWdlKQogICAgICAgICByZXR1cm4gMDsKICAgICBk
cmFnTG9jID0gbV9kcmFnTG9jOwotICAgIHJldHVybiBuZXcgUUltYWdlKCptX2RyYWdJbWFnZS0+
aW1hZ2UoKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7CisgICAgcmV0dXJuIG1fZHJh
Z0ltYWdlLT5pbWFnZSgpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogfQogCiAKQEAg
LTI3NCw5ICsyNzMsOSBAQCB2b2lkIENsaXBib2FyZFF0OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1h
Z2UoRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjbwogICAgIENhY2hlZEltYWdl
KiBjYWNoZWRJbWFnZSA9IGdldENhY2hlZEltYWdlKGVsZW1lbnQpOwogICAgIGlmICghY2FjaGVk
SW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQtPnJlbmRlcmVy
KCkpIHx8ICFjYWNoZWRJbWFnZS0+aXNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFFJ
bWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LT5yZW5k
ZXJlcigpKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoaW1hZ2UpCi0g
ICAgICAgIG1fd3JpdGFibGVEYXRhLT5zZXRJbWFnZURhdGEoKmltYWdlKTsKKyAgICBRUGl4bWFw
KiBwaXhtYXAgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LT5yZW5kZXJl
cigpKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAocGl4bWFwKQorICAg
ICAgICBtX3dyaXRhYmxlRGF0YS0+c2V0SW1hZ2VEYXRhKCpwaXhtYXApOwogCiAgICAgUUxpc3Q8
UVVybD4gdXJsczsKICAgICB1cmxzLmFwcGVuZCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvQ3Vyc29yUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvQ3Vyc29yUXQuY3BwCmluZGV4IDE2OGEyZjUuLmU3ODU0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0N1cnNvclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9DdXJzb3JRdC5jcHAKQEAgLTM3LDggKzM3LDYgQEAKIAogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAKLSNpbmNsdWRlIDxRSW1hZ2U+Ci0jaW5jbHVkZSA8UVBpeG1hcD4K
ICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCkBAIC03NywxMSArNzUs
MTAgQEAgQ3Vyc29yJiBDdXJzb3I6Om9wZXJhdG9yPShjb25zdCBDdXJzb3ImIG90aGVyKQogI2lm
bmRlZiBRVF9OT19DVVJTT1IKIHN0YXRpYyBRQ3Vyc29yKiBjcmVhdGVDdXN0b21DdXJzb3IoSW1h
Z2UqIGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkKIHsKLSAgICBRSW1hZ2UqIG5hdGl2
ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFu
YXRpdmVJbWFnZSkKKyAgICBpZiAoIWltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
KQogICAgICAgICByZXR1cm4gMDsKICAgICBJbnRQb2ludCBlZmZlY3RpdmVIb3RTcG90ID0gZGV0
ZXJtaW5lSG90U3BvdChpbWFnZSwgaG90U3BvdCk7Ci0gICAgcmV0dXJuIG5ldyBRQ3Vyc29yKFFQ
aXhtYXA6OmZyb21JbWFnZSgqbmF0aXZlSW1hZ2UpLCBlZmZlY3RpdmVIb3RTcG90LngoKSwgZWZm
ZWN0aXZlSG90U3BvdC55KCkpOworICAgIHJldHVybiBuZXcgUUN1cnNvcigqKGltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKSwgZWZmZWN0aXZlSG90U3BvdC54KCksIGVmZmVjdGl2
ZUhvdFNwb3QueSgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9EcmFnSW1hZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9E
cmFnSW1hZ2VRdC5jcHAKaW5kZXggZTkzYWM3MC4uMGU3Y2UwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0ltYWdlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L0RyYWdJbWFnZVF0LmNwcApAQCAtMjksOCArMjksNiBAQAogI2luY2x1ZGUg
IkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKIAotI2luY2x1ZGUgPFFJbWFnZT4K
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnRTaXplIGRyYWdJbWFnZVNpemUoRHJhZ0ltYWdl
UmVmIGltYWdlKQpAQCAtNjgsNyArNjYsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdl
RnJvbUltYWdlKEltYWdlKiBpbWFnZSwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtKQogICAg
IGlmICghaW1hZ2UgfHwgIWltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBuZXcgUUltYWdlKCppbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSk7CisgICAgcmV0dXJuIG5ldyBRUGl4bWFwKCppbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7CiB9CiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKaW5kZXggYTBiZWI0OC4uOTZkZWFjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC0xNjgsMTAgKzE2
OCwxMCBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VS
TCYsIGNvbnN0IFN0cmluZyYpCiAgICAgSW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdl
Rm9yUmVuZGVyZXIobm9kZS0+cmVuZGVyZXIoKSk7CiAgICAgQVNTRVJUKGltYWdlKTsKIAotICAg
IFFJbWFnZSogbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKLSAgICBpZiAoIWltYWdlKQorICAgIFFQaXhtYXAqIHBpeG1hcCA9IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICghcGl4bWFwKQogICAgICAgICByZXR1cm47
Ci0gICAgUUd1aUFwcGxpY2F0aW9uOjpjbGlwYm9hcmQoKS0+c2V0SW1hZ2UoKm5hdGl2ZUltYWdl
LCBRQ2xpcGJvYXJkOjpDbGlwYm9hcmQpOworICAgIFFHdWlBcHBsaWNhdGlvbjo6Y2xpcGJvYXJk
KCktPnNldFBpeG1hcCgqcGl4bWFwLCBRQ2xpcGJvYXJkOjpDbGlwYm9hcmQpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCmluZGV4IDBlNmUwZTMuLjBhY2NkMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcApAQCAtMTYxMSw5ICsxNjExLDkgQEAgUVdlYkhp
dFRlc3RSZXN1bHRQcml2YXRlOjpRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUoY29uc3QgV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdAogICAgIGJvdW5kaW5nUmVjdCA9IGlubmVyTm9uU2hhcmVkTm9kZSA/
IGlubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3Qo
KSA6IEludFJlY3QoKTsKICAgICBXZWJDb3JlOjpJbWFnZSAqaW1nID0gaGl0VGVzdC5pbWFnZSgp
OwogICAgIGlmIChpbWcpIHsKLSAgICAgICAgUUltYWdlICpwaXggPSBpbWctPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIFFQaXhtYXAgKnBpeCA9IGltZy0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgaWYgKHBpeCkKLSAgICAgICAgICAgIHBpeG1h
cCA9IFFQaXhtYXA6OmZyb21JbWFnZSgqcGl4KTsKKyAgICAgICAgICAgIHBpeG1hcCA9ICpwaXg7
CiAgICAgfQogICAgIFdlYkNvcmU6OkZyYW1lICp3ZnJhbWUgPSBoaXRUZXN0LnRhcmdldEZyYW1l
KCk7CiAgICAgaWYgKHdmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJoaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5LmNwcAppbmRl
eCA0YmY2MzU4Li5mNzg0OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
aGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnkuY3BwCkBA
IC0xNTgsNyArMTU4LDcgQEAgUURhdGVUaW1lIFFXZWJIaXN0b3J5SXRlbTo6bGFzdFZpc2l0ZWQo
KSBjb25zdAogUUljb24gUVdlYkhpc3RvcnlJdGVtOjppY29uKCkgY29uc3QKIHsKICAgICBpZiAo
ZC0+aXRlbSkKLSAgICAgICAgcmV0dXJuIFFQaXhtYXA6OmZyb21JbWFnZSgqV2ViQ29yZTo6aWNv
bkRhdGFiYXNlKCkuc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChkLT5pdGVtLT51cmwo
KSwgV2ViQ29yZTo6SW50U2l6ZSgxNiwgMTYpKSk7CisgICAgICAgIHJldHVybiAqV2ViQ29yZTo6
aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChkLT5pdGVtLT51
cmwoKSwgV2ViQ29yZTo6SW50U2l6ZSgxNiwgMTYpKTsKIAogICAgIHJldHVybiBRSWNvbigpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKaW5kZXggZWJlY2M3Zi4uYmE3MTg3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCkBAIC03MjMsMTIgKzcyMywx
MiBAQCB2b2lkIFFXZWJTZXR0aW5nczo6Y2xlYXJJY29uRGF0YWJhc2UoKQogUUljb24gUVdlYlNl
dHRpbmdzOjppY29uRm9yVXJsKGNvbnN0IFFVcmwmIHVybCkKIHsKICAgICBXZWJDb3JlOjppbml0
aWFsaXplV2ViQ29yZVF0KCk7Ci0gICAgUUltYWdlKiBpY29uID0gV2ViQ29yZTo6aWNvbkRhdGFi
YXNlKCkuc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChXZWJDb3JlOjpLVVJMKHVybCku
c3RyaW5nKCksCisgICAgUVBpeG1hcCogaWNvbiA9IFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5
bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoV2ViQ29yZTo6S1VSTCh1cmwpLnN0cmluZygp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpJbnRTaXplKDE2LCAx
NikpOwogICAgIGlmICghaWNvbikKICAgICAgICAgcmV0dXJuIFFJY29uKCk7CiAKLSAgICByZXR1
cm4gUVBpeG1hcDo6ZnJvbUltYWdlKCppY29uKTsKKyAgICByZXR1cm4qIGljb247CiB9CiAKIC8q
CkBAIC03NzEsNyArNzcxLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc291cmNlTmFtZUZvcldl
YkdyYXBoaWMoUVdlYlNldHRpbmdzOjpXZWJHcmFwaGljIHR5cGUpCiB2b2lkIFFXZWJTZXR0aW5n
czo6c2V0V2ViR3JhcGhpYyhXZWJHcmFwaGljIHR5cGUsIGNvbnN0IFFQaXhtYXAmIGdyYXBoaWMp
CiB7CiAgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOwotICAgIFdlYkNvcmU6Oklt
YWdlOjpzZXRQbGF0Zm9ybVJlc291cmNlKHJlc291cmNlTmFtZUZvcldlYkdyYXBoaWModHlwZSks
IGdyYXBoaWMudG9JbWFnZSgpKTsKKyAgICBXZWJDb3JlOjpJbWFnZTo6c2V0UGxhdGZvcm1SZXNv
dXJjZShyZXNvdXJjZU5hbWVGb3JXZWJHcmFwaGljKHR5cGUpLCBncmFwaGljKTsKIH0KIAogLyoh
CkBAIC03ODYsMTAgKzc4NiwxMCBAQCBRUGl4bWFwIFFXZWJTZXR0aW5nczo6d2ViR3JhcGhpYyhX
ZWJHcmFwaGljIHR5cGUpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBpbWcgPSBXZWJDb3Jl
OjpJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UocmVzb3VyY2VOYW1lRm9yV2ViR3JhcGhpYyh0
eXBlKSk7CiAgICAgaWYgKCFpbWcpCiAgICAgICAgIHJldHVybiBRUGl4bWFwKCk7Ci0gICAgUUlt
YWdlKiBpbWFnZSA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAo
IWltYWdlKQorICAgIFFQaXhtYXAqIHBpeG1hcCA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKKyAgICBpZiAoIXBpeG1hcCkKICAgICAgICAgcmV0dXJuIFFQaXhtYXAoKTsKLSAg
ICByZXR1cm4gUVBpeG1hcDo6ZnJvbUltYWdlKCppbWFnZSk7CisgICAgcmV0dXJuICpwaXhtYXA7
CiB9CiAKIC8qIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAyOTU1ZDc4Li5iODliOTJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTEwLTA4ICBab2x0YW4gSG9ydmF0aCAgPHpvbHRh
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gcjEyMjcyMCBjYXVzZXMgcGVyZm9ybWFuY2Ug
cmVncmVzc2lvbiB3aXRoIERpcmVjdEZCIG9uIEFSTXY3CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJldmVydCB0aGUgcmVzdCBvZiByMTIyNzIwLiBUaGlz
IGNoYW5nZSBtb2RpZmllcyB0aGUgTmF0aXZlSW1hZ2VQdHIgZnJvbSBRSW1hZ2UqIHRvIFFQaXht
YXAqLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBB
cGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdl
YkhpdFRlc3RSZXN1bHRQcml2YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3BwOgor
ICAgICAgICAoUVdlYkhpc3RvcnlJdGVtOjppY29uKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRp
bmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6aWNvbkZvclVybCk6CisgICAgICAgIChR
V2ViU2V0dGluZ3M6OnNldFdlYkdyYXBoaWMpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjp3ZWJH
cmFwaGljKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudFF0OjpzdGFydERyYWcpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6
ZVdlYkNvcmVRdCk6CisKIDIwMTItMTAtMDcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxo
byAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZW5hbWUgZmlyc3Qv
c2Vjb25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwIGIvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCmluZGV4IDhiNjQ4YzEuLmNi
NjMyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0Ns
aWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGll
bnRRdC5jcHAKQEAgLTk3LDkgKzk3LDkgQEAgdm9pZCBEcmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyhE
cmFnSW1hZ2VSZWYgZHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFAKICAgICBp
ZiAodmlldykgewogICAgICAgICBRRHJhZyogZHJhZyA9IG5ldyBRRHJhZyh2aWV3KTsKICAgICAg
ICAgaWYgKGRyYWdJbWFnZSkKLSAgICAgICAgICAgIGRyYWctPnNldFBpeG1hcChRUGl4bWFwOjpm
cm9tSW1hZ2UoKmRyYWdJbWFnZSkpOworICAgICAgICAgICAgZHJhZy0+c2V0UGl4bWFwKCpkcmFn
SW1hZ2UpOwogICAgICAgICBlbHNlIGlmIChjbGlwYm9hcmREYXRhICYmIGNsaXBib2FyZERhdGEt
Pmhhc0ltYWdlKCkpCi0gICAgICAgICAgICBkcmFnLT5zZXRQaXhtYXAoUVBpeG1hcDo6ZnJvbUlt
YWdlKHF2YXJpYW50X2Nhc3Q8UUltYWdlPihjbGlwYm9hcmREYXRhLT5pbWFnZURhdGEoKSkpKTsK
KyAgICAgICAgICAgIGRyYWctPnNldFBpeG1hcChxdmFyaWFudF9jYXN0PFFQaXhtYXA+KGNsaXBi
b2FyZERhdGEtPmltYWdlRGF0YSgpKSk7CiAgICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ09wZXJh
dGlvbk1hc2sgPSBjbGlwYm9hcmQtPnNvdXJjZU9wZXJhdGlvbigpOwogICAgICAgICBkcmFnLT5z
ZXRNaW1lRGF0YShjbGlwYm9hcmREYXRhKTsKICAgICAgICAgUXQ6OkRyb3BBY3Rpb24gYWN0dWFs
RHJvcEFjdGlvbiA9IGRyYWctPmV4ZWMoZHJhZ09wZXJhdGlvbnNUb0Ryb3BBY3Rpb25zKGRyYWdP
cGVyYXRpb25NYXNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0luaXRXZWJDb3JlUXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9J
bml0V2ViQ29yZVF0LmNwcAppbmRleCBjNjNjY2IwLi41YWM0NDlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHAKQEAgLTgzLDkgKzgz
LDkgQEAgdm9pZCBpbml0aWFsaXplV2ViQ29yZVF0KCkKICNlbmRpZgogCiAgICAgLy8gUVdlYlNl
dHRpbmdzOjpTZWFyY2hDYW5jZWxCdXR0b25HcmFwaGljCi0gICAgSW1hZ2U6OnNldFBsYXRmb3Jt
UmVzb3VyY2UoInNlYXJjaENhbmNlbEJ1dHRvbiIsIFFBcHBsaWNhdGlvbjo6c3R5bGUoKS0+c3Rh
bmRhcmRQaXhtYXAoUVN0eWxlOjpTUF9EaWFsb2dDbG9zZUJ1dHRvbikudG9JbWFnZSgpKTsKKyAg
ICBJbWFnZTo6c2V0UGxhdGZvcm1SZXNvdXJjZSgic2VhcmNoQ2FuY2VsQnV0dG9uIiwgUUFwcGxp
Y2F0aW9uOjpzdHlsZSgpLT5zdGFuZGFyZFBpeG1hcChRU3R5bGU6OlNQX0RpYWxvZ0Nsb3NlQnV0
dG9uKSk7CiAgICAgLy8gUVdlYlNldHRpbmdzOjpTZWFyY2hDYW5jZWxCdXR0b25QcmVzc2VkR3Jh
cGhpYwotICAgIEltYWdlOjpzZXRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hDYW5jZWxCdXR0b25Q
cmVzc2VkIiwgUUFwcGxpY2F0aW9uOjpzdHlsZSgpLT5zdGFuZGFyZFBpeG1hcChRU3R5bGU6OlNQ
X0RpYWxvZ0Nsb3NlQnV0dG9uKS50b0ltYWdlKCkpOworICAgIEltYWdlOjpzZXRQbGF0Zm9ybVJl
c291cmNlKCJzZWFyY2hDYW5jZWxCdXR0b25QcmVzc2VkIiwgUUFwcGxpY2F0aW9uOjpzdHlsZSgp
LT5zdGFuZGFyZFBpeG1hcChRU3R5bGU6OlNQX0RpYWxvZ0Nsb3NlQnV0dG9uKSk7CiAKICAgICBp
bml0aWFsaXplZCA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDJmY2I1My4uZDM0YzIwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTEwLTA4ICBab2x0YW4gSG9ydmF0aCAgPHpv
bHRhbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gcjEyMjcyMCBjYXVzZXMgcGVyZm9ybWFu
Y2UgcmVncmVzc2lvbiB3aXRoIERpcmVjdEZCIG9uIEFSTXY3CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzU0OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJldmVydCB0aGUgcmVzdCBvZiByMTIyNzIwLiBU
aGlzIGNoYW5nZSBtb2RpZmllcyB0aGUgTmF0aXZlSW1hZ2VQdHIgZnJvbSBRSW1hZ2UqIHRvIFFQ
aXhtYXAqLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAg
KiBTaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJJ
Y29uRGF0YWJhc2VDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkljb25EYXRhYmFz
ZUNsaWVudDo6aWNvbkltYWdlRm9yUGFnZVVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9xdC9XZWJEcmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb252
ZXJ0UVBpeG1hcFRvU2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0Ns
aWVudDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZUNvb3JkaW5hdG9yOjphZG9wdEltYWdlQmFja2luZ1N0b3JlKToKKwogMjAxMi0xMC0w
NyAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9z
c2Eub3JnPgogCiAgICAgICAgIFJlbmFtZSBmaXJzdC9zZWNvbmQgdG8ga2V5L3ZhbHVlIGluIEhh
c2hNYXAgaXRlcmF0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvU2hh
cmVhYmxlQml0bWFwUXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJp
dG1hcFF0LmNwcAppbmRleCA2Y2FkYjA4Li44NzRlMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAKQEAgLTUzLDggKzUzLDggQEAgdm9pZCBT
aGFyZWFibGVCaXRtYXA6OnJlbGVhc2VTaGFyZWRNZW1vcnlEYXRhKHZvaWQqIHR5cGVsZXNzQml0
bWFwKQogCiBQYXNzUmVmUHRyPEltYWdlPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKCkK
IHsKLSAgICBRSW1hZ2UqIGltYWdlID0gbmV3IFFJbWFnZShjcmVhdGVRSW1hZ2UoKSk7Ci0gICAg
cmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoaW1hZ2UpOworICAgIFFQaXhtYXAqIHBpeG1hcCA9
IG5ldyBRUGl4bWFwKFFQaXhtYXA6OmZyb21JbWFnZShjcmVhdGVRSW1hZ2UoKSkpOworICAgIHJl
dHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKHBpeG1hcCk7CiB9CiAKIFBhc3NPd25QdHI8R3JhcGhp
Y3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJJY29uRGF0YWJhc2VDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xp
ZW50LmNwcAppbmRleCBhZmRmYTZmLi41OTJiYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAKQEAgLTkwLDEx
ICs5MCwxMSBAQCBRSW1hZ2UgUXRXZWJJY29uRGF0YWJhc2VDbGllbnQ6Omljb25JbWFnZUZvclBh
Z2VVUkwoY29uc3QgV1RGOjpTdHJpbmcmIHBhZ2VVUkwsCiAKICAgICBXZWJDb3JlOjpJbnRTaXpl
IHNpemUoaWNvblNpemUud2lkdGgoKSwgaWNvblNpemUuaGVpZ2h0KCkpOwogCi0gICAgUUltYWdl
KiBuYXRpdmVJbWFnZSA9IG1faWNvbkRhdGFiYXNlLT5uYXRpdmVJbWFnZUZvclBhZ2VVUkwocGFn
ZVVSTCwgc2l6ZSk7CisgICAgUVBpeG1hcCogbmF0aXZlSW1hZ2UgPSBtX2ljb25EYXRhYmFzZS0+
bmF0aXZlSW1hZ2VGb3JQYWdlVVJMKHBhZ2VVUkwsIHNpemUpOwogICAgIGlmICghbmF0aXZlSW1h
Z2UpCiAgICAgICAgIHJldHVybiBRSW1hZ2UoKTsKIAotICAgIHJldHVybiAqbmF0aXZlSW1hZ2U7
CisgICAgcmV0dXJuIG5hdGl2ZUltYWdlLT50b0ltYWdlKCk7CiB9CiAKIHZvaWQgUXRXZWJJY29u
RGF0YWJhc2VDbGllbnQ6OnJldGFpbkljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVS
TCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
cXQvV2ViRHJhZ0NsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvcXQvV2ViRHJhZ0NsaWVudFF0LmNwcAppbmRleCBkOWU2ZDFkLi5iYmRiNjM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dl
YkRyYWdDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9xdC9XZWJEcmFnQ2xpZW50UXQuY3BwCkBAIC0zOCwxNSArMzgsMTUgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRRSW1hZ2VUb1NoYXJlYWJsZUJpdG1hcChRSW1h
Z2UqIGltYWdlKQorc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UVBp
eG1hcFRvU2hhcmVhYmxlQml0bWFwKFFQaXhtYXAqIHBpeG1hcCkKIHsKLSAgICBpZiAoIWltYWdl
KQorICAgIGlmICghcGl4bWFwKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKElu
dFNpemUoaW1hZ2UtPnNpemUoKSksIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7Cisg
ICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUoSW50U2l6ZShwaXhtYXAtPnNpemUoKSksIFNoYXJlYWJsZUJpdG1hcDo6U3Vw
cG9ydHNBbHBoYSk7CiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0
ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAotICAgIGdyYXBoaWNzQ29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdJbWFnZSgwLCAwLCAqaW1hZ2UpOworICAgIGdyYXBo
aWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdQaXhtYXAoMCwgMCwgKnBpeG1hcCk7
CiAgICAgcmV0dXJuIGJpdG1hcC5yZWxlYXNlKCk7CiB9CiAKQEAgLTU3LDcgKzU3LDcgQEAgdm9p
ZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlUmVmIGRyYWdJbWFnZSwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2kKICAgICBzdGF0aWNfY2FzdDxDbGlwYm9hcmRRdCo+KGNsaXBi
b2FyZCktPmludmFsaWRhdGVXcml0YWJsZURhdGEoKTsKICAgICBEcmFnRGF0YSBkcmFnRGF0YShj
bGlwYm9hcmREYXRhLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRyYWdPcGVyYXRp
b25NYXNrKTsKIAotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IGNvbnZlcnRR
SW1hZ2VUb1NoYXJlYWJsZUJpdG1hcChkcmFnSW1hZ2UpOworICAgIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IGNvbnZlcnRRUGl4bWFwVG9TaGFyZWFibGVCaXRtYXAoZHJhZ0ltYWdl
KTsKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJpdG1hcCAm
JiAhYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCmluZGV4
IGJhNWI0NjkuLjEyM2UyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvci5jcHAKQEAgLTQ1MSw3ICs0NTEsNyBAQCBpbnQ2NF90IExheWVy
VHJlZUNvb3JkaW5hdG9yOjphZG9wdEltYWdlQmFja2luZ1N0b3JlKEltYWdlKiBpbWFnZSkKICAg
ICBpbnQ2NF90IGtleSA9IDA7CiAKICNpZiBQTEFURk9STShRVCkKLSAgICBRSW1hZ2UqIG5hdGl2
ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgUVBpeG1h
cCogbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIAog
ICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBJbnZhbGlkV2ViTGF5ZXJJRDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>