<?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>51799</bug_id>
          
          <creation_ts>2011-01-02 00:55:54 -0800</creation_ts>
          <short_desc>ContextShadow can avoid code duplication for getting the CTM</short_desc>
          <delta_ts>2011-01-03 17:37:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Helder Correia">helder</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ariya.hidayat</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>mrobinson</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>328375</commentid>
    <comment_count>0</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-02 00:55:54 -0800</bug_when>
    <thetext>Currently, ContextShadow defines its own getTransformationMatrixFromContext(), which does exactly the same as GraphicsContext::getCTM(). This can be avoided by passing GraphicsContext instead of PlatformContext to beginShadowLayer(). Additionally, there are two calls to getTransformation...() in beginShadowLayer(): one in adjustBlurDistance() and another in calculateLayerBoundingRect(). There&apos;s no reason for this and it can be optimized. Finally, endShadowLayer() would be cleaner from an API POV if no argument was required. There&apos;s no need to pass the context once again shortly after the user has called beginShadowLayer() and drawn some primitives. All it takes is to store the pointer to the context in beginShadowLayer().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328376</commentid>
    <comment_count>1</comment_count>
      <attachid>77773</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-02 01:03:01 -0800</bug_when>
    <thetext>Created attachment 77773
Untested with GTK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328397</commentid>
    <comment_count>2</comment_count>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2011-01-02 08:47:07 -0800</bug_when>
    <thetext>endShadowLayer() change is probably better splitted in another patch, it has nothing to do with the other changes.

I&apos;m undecided whether adding more member variables to ContextShadow class is justified in this case. The size of the class impacts the performance of Graphics Context, especially during save/restore, which happens way more often than just dealing with shadow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328403</commentid>
    <comment_count>3</comment_count>
      <attachid>77773</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-02 11:10:47 -0800</bug_when>
    <thetext>Comment on attachment 77773
Untested with GTK

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

&gt; WebCore/platform/graphics/ContextShadow.cpp:86
&gt; -bool ContextShadow::mustUseContextShadow(PlatformContext context)
&gt; +bool ContextShadow::mustUseContextShadow(const GraphicsContext* context)

I think this method belongs in platform-specific code. Different platforms may make different decisions about when to use ContextShadow.

&gt; WebCore/platform/graphics/ContextShadow.cpp:178
&gt; -void ContextShadow::adjustBlurDistance(const PlatformContext context)
&gt; +void ContextShadow::adjustBlurDistance(const AffineTransform&amp; transform)
&gt;  {
&gt;      // Adjust blur if we&apos;re scaling, since the radius must not be affected by transformations.
&gt; -    const AffineTransform transform(getTransformationMatrixFromContext(context));
&gt; -
&gt;      if (transform.isIdentity())
&gt;          return;

This method is wrong. It should return false if shadows don&apos;t ignore transforms.

&gt; WebCore/platform/graphics/ContextShadow.cpp:-207
&gt; -    const AffineTransform transform(getTransformationMatrixFromContext(context));

Getting the CTM is pretty cheap, so I don&apos;t really see the need to pass the transform around.

&gt; WebCore/platform/graphics/cairo/ContextShadowCairo.cpp:92
&gt; -PlatformContext ContextShadow::beginShadowLayer(PlatformContext context, const FloatRect&amp; layerArea)
&gt; +PlatformContext ContextShadow::beginShadowLayer(const GraphicsContext* context, const FloatRect&amp; layerArea)

We don&apos;t normally treat the GraphicsContext* as const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328405</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-02 11:13:57 -0800</bug_when>
    <thetext>(In reply to comment #2)

&gt; I&apos;m undecided whether adding more member variables to ContextShadow class is justified in this case. The size of the class impacts the performance of Graphics Context, especially during save/restore, which happens way more often than just dealing with shadow.

It&apos;s not clear to me why ContextShadow has to be part of the state, copied by value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328408</commentid>
    <comment_count>5</comment_count>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2011-01-02 11:30:03 -0800</bug_when>
    <thetext>&gt; It&apos;s not clear to me why ContextShadow has to be part of the state, copied by value.

Because back then when it was really small, the easiest thing to do was to attach it to the state.

I guess right now it&apos;s just easier to instantiate it as it is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328409</commentid>
    <comment_count>6</comment_count>
      <attachid>77773</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-02 11:45:29 -0800</bug_when>
    <thetext>Comment on attachment 77773
Untested with GTK

According to the comments above the review of the patch should be denied.

Is this bug still valid?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328454</commentid>
    <comment_count>7</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-02 17:20:51 -0800</bug_when>
    <thetext>(In reply to comment #3) 
&gt; I think this method belongs in platform-specific code. Different platforms may make different decisions about when to use ContextShadow.

I agree. I can prepare a separate patch fixing that. 

&gt; This method is wrong. It should return false if shadows don&apos;t ignore transforms.

You mean the blur distance should only be adjusted when we&apos;re working on a canvas?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328471</commentid>
    <comment_count>8</comment_count>
      <attachid>77788</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-02 20:00:04 -0800</bug_when>
    <thetext>Created attachment 77788
Stick to elimination of getTransformationMatrixFromContext()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328483</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-02 22:38:44 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; This method is wrong. It should return false if shadows don&apos;t ignore transforms.
&gt; 
&gt; You mean the blur distance should only be adjusted when we&apos;re working on a canvas?

Right. I make this change in the patch in bug 22102.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328492</commentid>
    <comment_count>10</comment_count>
      <attachid>77794</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-03 00:45:06 -0800</bug_when>
    <thetext>Created attachment 77794
Attept to fix Cairo-based build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328494</commentid>
    <comment_count>11</comment_count>
      <attachid>77795</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-03 00:54:50 -0800</bug_when>
    <thetext>Created attachment 77795
Attempt 2 to fix Cairo-based build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328828</commentid>
    <comment_count>12</comment_count>
      <attachid>77795</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-03 16:21:24 -0800</bug_when>
    <thetext>Comment on attachment 77795
Attempt 2 to fix Cairo-based build

Clearing flags on attachment: 77795

Committed r74947: &lt;http://trac.webkit.org/changeset/74947&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328829</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-03 16:21:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328836</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-03 16:41:12 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74947 might have broken GTK Linux 32-bit Release and GTK Linux 64-bit Debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328839</commentid>
    <comment_count>15</comment_count>
      <attachid>77853</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2011-01-03 16:48:29 -0800</bug_when>
    <thetext>Created attachment 77853
Fix GTK build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328842</commentid>
    <comment_count>16</comment_count>
      <attachid>77853</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-03 17:04:22 -0800</bug_when>
    <thetext>Comment on attachment 77853
Fix GTK build

Looks like the EWS can’t apply this patch, so I suspect it’s not going to make it in the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328849</commentid>
    <comment_count>17</comment_count>
      <attachid>77853</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-03 17:37:24 -0800</bug_when>
    <thetext>Comment on attachment 77853
Fix GTK build

I made this build fix in r 74950</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77773</attachid>
            <date>2011-01-02 01:03:01 -0800</date>
            <delta_ts>2011-01-02 19:59:59 -0800</delta_ts>
            <desc>Untested with GTK</desc>
            <filename>bug-51799-20110102010259.patch</filename>
            <type>text/plain</type>
            <size>31003</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmZiYTBlYTQwYjdjOWI3YmI0ZDJjOGUyZjBkOTcxNWUxZmMwYTcwZi4uZTkyM2NhZGMxYTNhOTk5
NTJmYzAyNWRiMTAxMTJkNDI1MjJlZjYwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxMS0wMS0wMiAgSGVs
ZGVyIENvcnJlaWEgIDxoZWxkZXJAc2VuY2hhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb250ZXh0U2hhZG93IGNhbiBnZXQgdGhlIENUTSBv
bmx5IG9uY2UgYW5kIGF2b2lkIGNvZGUgZHVwbGljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNzk5CisKKyAgICAgICAgQ3VycmVudGx5LCBD
b250ZXh0U2hhZG93IGRlZmluZXMgaXRzIG93bgorICAgICAgICBnZXRUcmFuc2Zvcm1hdGlvbk1h
dHJpeEZyb21Db250ZXh0KCksIHdoaWNoIGRvZXMgZXhhY3RseSB0aGUgc2FtZSBhcworICAgICAg
ICBHcmFwaGljc0NvbnRleHQ6OmdldENUTSgpLiBUaGlzIGNhbiBiZSBhdm9pZGVkLgorCisgICAg
ICAgIFRoZXJlIGFyZSBhbHNvIHR3byBjYWxscyB0byBnZXRUcmFuc2Zvcm1hdGlvbk1hdHJpeEZy
b21Db250ZXh0KCkgaW4KKyAgICAgICAgYmVnaW5TaGFkb3dMYXllcigpOiBvbmUgaW4gYWRqdXN0
Qmx1ckRpc3RhbmNlKCkgYW5kIGFub3RoZXIgaW4KKyAgICAgICAgY2FsY3VsYXRlTGF5ZXJCb3Vu
ZGluZ1JlY3QoKS4gVGhpcyBjYW4gYmUgYXZvaWRlZC4KKworICAgICAgICBlbmRTaGFkb3dMYXll
cigpIGlzIGNsZWFuZXIgZnJvbSBhbiB1c2VyJ3MgcGVyc3BlY3RpdmUgaWYgbm8gYXJndW1lbnQK
KyAgICAgICAgaXMgcmVxdWlyZWQuCisKKyAgICAgICAgRXhpc3RpbmcgdGVzdHM6IGZhc3QvY2Fu
dmFzL2NhbnZhcypzaGFkb3cqaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
dGV4dFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjptdXN0VXNl
Q29udGV4dFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjphZGp1c3RC
bHVyRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6Y2FsY3VsYXRl
TGF5ZXJCb3VuZGluZ1JlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRT
aGFkb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRU
aWxpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkcmF3R2x5cGhzU2hhZG93KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpkcmF3UGF0aFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd0dseXBoc1NoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
Q29udGV4dFNoYWRvd1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmJl
Z2luU2hhZG93TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6ZW5kU2hh
ZG93TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmF3VGV4dENvbW1vbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvU3RpbGxJbWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0aWxsSW1hZ2U6OmRyYXcp
OgorCiAyMDExLTAxLTAxICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b250ZXh0U2hhZG93LmNwcAppbmRleCA5NWFhZDQ2OWMzOWM3OGMzZDhlNDVmOTFlNDVhZjU4NWM0
NDg4ZjI4Li4zYzljNmJjNWViZmVlNjM1YmZlOTllNDI3YjEzMDBiYTMyMWIxZWQ0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAKQEAgLTI5LDcgKzI5LDkg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb250ZXh0U2hhZG93LmgiCiAKKyNp
bmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKKyNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtODEsNyArODMs
NyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmNsZWFyKCkKICAgICBtX29mZnNldCA9IEZsb2F0U2l6
ZSgpOwogfQogCi1ib29sIENvbnRleHRTaGFkb3c6Om11c3RVc2VDb250ZXh0U2hhZG93KFBsYXRm
b3JtQ29udGV4dCBjb250ZXh0KQorYm9vbCBDb250ZXh0U2hhZG93OjptdXN0VXNlQ29udGV4dFNo
YWRvdyhjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8gV2UgY2FuJ3Qg
YXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhlIHNoYWRvdyBoYXMgYmx1ci4KICAgICBpZiAo
bV90eXBlID09IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpCkBAIC05MSw4ICs5Myw3IEBAIGJv
b2wgQ29udGV4dFNoYWRvdzo6bXVzdFVzZUNvbnRleHRTaGFkb3coUGxhdGZvcm1Db250ZXh0IGNv
bnRleHQpCiAgICAgaWYgKCFzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgLy8gV2UgY2FuIGF2b2lkIENvbnRleHRTaGFkb3csIHNpbmNlIHRoZXJl
IGFyZSBubyB0cmFuc2Zvcm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGNhbnZhcy4KLSAgICBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtKGdldFRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbUNv
bnRleHQoY29udGV4dCkpOwotICAgIGlmICh0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKQorICAgIGlm
IChjb250ZXh0LT5nZXRDVE0oKS5pc0lkZW50aXR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAvLyBPdGhlcndpc2UsIG5vIGNoYW5jZSBhdm9pZGluZyBDb250ZXh0U2hhZG93LgogICAg
IHJldHVybiB0cnVlOwpAQCAtMTcwLDE1ICsxNzEsMTMgQEAgdm9pZCBDb250ZXh0U2hhZG93Ojpi
bHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNp
emUKICAgICB9CiB9CiAKLXZvaWQgQ29udGV4dFNoYWRvdzo6YWRqdXN0Qmx1ckRpc3RhbmNlKGNv
bnN0IFBsYXRmb3JtQ29udGV4dCBjb250ZXh0KQordm9pZCBDb250ZXh0U2hhZG93OjphZGp1c3RC
bHVyRGlzdGFuY2UoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiB7CiAgICAgLy8g
QWRqdXN0IGJsdXIgaWYgd2UncmUgc2NhbGluZywgc2luY2UgdGhlIHJhZGl1cyBtdXN0IG5vdCBi
ZSBhZmZlY3RlZCBieSB0cmFuc2Zvcm1hdGlvbnMuCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
IHRyYW5zZm9ybShnZXRUcmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KGNvbnRleHQpKTsK
LQogICAgIGlmICh0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICAvLyBDYWxjdWxhbGUgdHJhbnNmb3JtZWQgdW5pdCB2ZWN0b3JzLgorICAgIC8vIENhbGN1bGF0
ZSB0cmFuc2Zvcm1lZCB1bml0IHZlY3RvcnMuCiAgICAgY29uc3QgRmxvYXRRdWFkIHVuaXRRdWFk
KEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMSwgMCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZsb2F0UG9pbnQoMCwgMSksIEZsb2F0UG9pbnQoMSwgMSkpOwogICAgIGNvbnN0
IEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFVuaXRRdWFkID0gdHJhbnNmb3JtLm1hcFF1YWQodW5pdFF1
YWQpOwpAQCAtMTk4LDEzICsxOTcsMTIgQEAgdm9pZCBDb250ZXh0U2hhZG93OjphZGp1c3RCbHVy
RGlzdGFuY2UoY29uc3QgUGxhdGZvcm1Db250ZXh0IGNvbnRleHQpCiAgICAgbV9ibHVyRGlzdGFu
Y2UgPSByb3VuZGYoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYmx1ckRpc3RhbmNlKSAvIHNjYWxlKTsK
IH0KIAotSW50UmVjdCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChj
b25zdCBQbGF0Zm9ybUNvbnRleHQgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEs
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorSW50UmVjdCBDb250ZXh0U2hhZG93OjpjYWxjdWxh
dGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50
UmVjdCYgY2xpcFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogewogICAg
IC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJyZWQgYW5kL29yIHRyYW5z
Zm9ybWVkIGxheWVyLgogICAgIEZsb2F0UmVjdCBsYXllckZsb2F0UmVjdDsKICAgICBmbG9hdCBp
bmZsYXRpb24gPSAwOwogCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybShnZXRU
cmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KGNvbnRleHQpKTsKICAgICBpZiAobV9zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcyAmJiAhdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkgewogICAgICAg
ICBGbG9hdFF1YWQgdHJhbnNmb3JtZWRQb2x5Z29uID0gdHJhbnNmb3JtLm1hcFF1YWQoRmxvYXRR
dWFkKGxheWVyQXJlYSkpOwogICAgICAgICB0cmFuc2Zvcm1lZFBvbHlnb24ubW92ZShtX29mZnNl
dCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCmluZGV4IGU1ZTVh
OGU1MjZmMjgzYjg3MTY5Y2Y0ODYxYzRmZjVkMjk3NTc0ZGMuLjI5NjAzODU3NWY0ZWEzZjE3OGQ0
Yzg0YjQxOGNiOWM0YTk2YWFlNWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29udGV4dFNoYWRvdy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4
dFNoYWRvdy5oCkBAIC0yOSwxMCArMjksOCBAQAogI2lmbmRlZiBDb250ZXh0U2hhZG93X2gKICNk
ZWZpbmUgQ29udGV4dFNoYWRvd19oCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNp
bmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJSZWZDb3VudGVk
LmgiCiAKQEAgLTQ4LDYgKzQ2LDkgQEAgUVRfRU5EX05BTUVTUEFDRQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIEFmZmluZVRyYW5zZm9ybTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsK
KwogI2lmIFBMQVRGT1JNKENBSVJPKQogdHlwZWRlZiBjYWlyb19zdXJmYWNlX3QqIFBsYXRmb3Jt
SW1hZ2U7CiB0eXBlZGVmIGNhaXJvX3QqIFBsYXRmb3JtQ29udGV4dDsKQEAgLTgyLDcgKzgzLDcg
QEAgcHVibGljOgogICAgIENvbnRleHRTaGFkb3coKTsKICAgICBDb250ZXh0U2hhZG93KGNvbnN0
IENvbG9yJiwgZmxvYXQgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCk7CiAKLSAgICBi
b29sIG11c3RVc2VDb250ZXh0U2hhZG93KFBsYXRmb3JtQ29udGV4dCk7CisgICAgYm9vbCBtdXN0
VXNlQ29udGV4dFNoYWRvdyhjb25zdCBHcmFwaGljc0NvbnRleHQqKTsKICAgICB2b2lkIGNsZWFy
KCk7CiAKICAgICAvLyBUaGUgcGFpciBiZWdpblNoYWRvd0xheWVyIGFuZCBlbmRTaGFkb3dMYXll
ciBjcmVhdGVzIGEgdGVtcG9yYXJ5IGltYWdlCkBAIC0xMDcsMTAgKzEwOCw5IEBAIHB1YmxpYzoK
ICAgICAvLyBvcmlnaW5hbCBjb250ZXh0LiBJZiBibHVyIHJhZGl1cyBpcyBzcGVjaWZpZWQsIHRo
ZSBzaGFkb3cgd2lsbCBiZQogICAgIC8vIGZpbHRlcmVkIGZpcnN0LgogCi0gICAgUGxhdGZvcm1D
b250ZXh0IGJlZ2luU2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGxheWVyQXJlYSk7Ci0gICAgdm9pZCBlbmRTaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQpOwor
ICAgIFBsYXRmb3JtQ29udGV4dCBiZWdpblNoYWRvd0xheWVyKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhKTsKKyAgICB2b2lkIGVuZFNoYWRvd0xheWVy
KCk7CiAgICAgc3RhdGljIHZvaWQgcHVyZ2VTY3JhdGNoQnVmZmVyKCk7Ci0gICAgc3RhdGljIEFm
ZmluZVRyYW5zZm9ybSBnZXRUcmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KFBsYXRmb3Jt
Q29udGV4dCk7CiAKICAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgZW5h
YmxlKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBlbmFibGU7IH0KICAgICBib29sIHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dzSWdub3JlVHJh
bnNmb3JtczsgfQpAQCAtMTIyLDYgKzEyMiw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRl
OgorICAgIEdyYXBoaWNzQ29udGV4dCogbV9jb250ZXh0OwogICAgIFBsYXRmb3JtSW1hZ2UgbV9s
YXllckltYWdlOyAvLyBCdWZmZXIgdG8gd2hlcmUgdGhlIHRlbXBvcmFyeSBzaGFkb3cgd2lsbCBi
ZSBkcmF3biB0by4KICAgICBQbGF0Zm9ybUNvbnRleHQgbV9sYXllckNvbnRleHQ7IC8vIENvbnRl
eHQgdXNlZCB0byBwYWludCB0aGUgc2hhZG93IHRvIHRoZSBsYXllciBpbWFnZS4KICAgICBGbG9h
dFJlY3QgbV9zb3VyY2VSZWN0OyAvLyBTdWItcmVjdCBvZiBtX2xheWVySW1hZ2UgdGhhdCBjb250
YWlucyB0aGUgc2hhZG93IHBpeGVscy4KQEAgLTEyOSwxMiArMTMwLDEyIEBAIHByaXZhdGU6CiAg
ICAgRmxvYXRQb2ludCBtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uOyAvLyBUcmFuc2xhdGlvbiB0
byBhcHBseSB0byBtX2xheWVyQ29udGV4dCBmb3IgdGhlIHNoYWRvdyB0byBiZSBjb3JyZWN0bHkg
Y2xpcHBlZC4KICAgICBib29sIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiAKLSAgICB2b2lk
IGFkanVzdEJsdXJEaXN0YW5jZShjb25zdCBQbGF0Zm9ybUNvbnRleHQpOworICAgIHZvaWQgYWRq
dXN0Qmx1ckRpc3RhbmNlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwogICAgIHZvaWQgYmx1ckxh
eWVySW1hZ2UodW5zaWduZWQgY2hhciosIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgaW50IHN0
cmlkZSk7Ci0gICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0
Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCk7CisgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBG
bG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYpOwogCiAjaWYgUExBVEZPUk0oQ0FJUk8pCi0gICAgdm9pZCBkcmF3UmVjdFNo
YWRvd1dpdGhvdXRUaWxpbmcoUGxhdGZvcm1Db250ZXh0IGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IHNoYWRvd1JlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEludFNpemUm
IHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBJ
bnRTaXplJiBib3R0b21SaWdodFJhZGl1cywgZmxvYXQgYWxwaGEpOworICAgIHZvaWQgZHJhd1Jl
Y3RTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJl
Y3QmIHNoYWRvd1JlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEludFNp
emUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25z
dCBJbnRTaXplJiBib3R0b21SaWdodFJhZGl1cywgZmxvYXQgYWxwaGEpOwogI2VuZGlmCiB9Owog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFk
b3dDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFk
b3dDYWlyby5jcHAKaW5kZXggYzUyY2MzYTkwYmNmZTE1NjVkYjNkZmU1ODlmMzcxY2RlNWQwY2Fl
Ni4uOGEzMTJhNGQ3ZGE3ZTZlMzQ4ZDc1YmVjN2FjMTA2YzA2OGZjNjY2YyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNw
cApAQCAtODksMTMgKzg5LDE1IEBAIEFmZmluZVRyYW5zZm9ybSBDb250ZXh0U2hhZG93OjpnZXRU
cmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KFBsYXRmb3JtQ29udGV4CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0ueXksIHRyYW5zZm9ybS54MCwgdHJhbnNmb3JtLnkw
KTsKIH0KIAotUGxhdGZvcm1Db250ZXh0IENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIo
UGxhdGZvcm1Db250ZXh0IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhKQorUGxh
dGZvcm1Db250ZXh0IENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKIHsKLSAgICBh
ZGp1c3RCbHVyRGlzdGFuY2UoY29udGV4dCk7CisgICAgbV9jb250ZXh0ID0gY29uc3RfY2FzdDxH
cmFwaGljc0NvbnRleHQqPihjb250ZXh0KTsKKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0gdHJh
bnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKCk7CisgICAgYWRqdXN0Qmx1ckRpc3RhbmNlKHRyYW5z
Zm9ybSk7CiAKICAgICBkb3VibGUgeDEsIHgyLCB5MSwgeTI7Ci0gICAgY2Fpcm9fY2xpcF9leHRl
bnRzKGNvbnRleHQsICZ4MSwgJnkxLCAmeDIsICZ5Mik7Ci0gICAgSW50UmVjdCBsYXllclJlY3Qg
PSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFyZWEsIEludFJlY3Qo
eDEsIHkxLCB4MiAtIHgxLCB5MiAtIHkxKSk7CisgICAgY2Fpcm9fY2xpcF9leHRlbnRzKGNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLCAmeDEsICZ5MSwgJngyLCAmeTIpOworICAgIEludFJlY3Qg
bGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QobGF5ZXJBcmVhLCBJbnRSZWN0
KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSksIHRyYW5zZm9ybSk7CiAKICAgICAvLyBEb24ndCBw
YWludCBpZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbi4KICAgICBpZiAo
bGF5ZXJSZWN0LmlzRW1wdHkoKSkKQEAgLTExMyw3ICsxMTUsNyBAQCBQbGF0Zm9ybUNvbnRleHQg
Q29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgY29udGV4dCwg
Y29uc3QgRgogICAgIHJldHVybiBtX2xheWVyQ29udGV4dDsKIH0KIAotdm9pZCBDb250ZXh0U2hh
ZG93OjplbmRTaGFkb3dMYXllcihjYWlyb190KiBjcikKK3ZvaWQgQ29udGV4dFNoYWRvdzo6ZW5k
U2hhZG93TGF5ZXIoKQogewogICAgIGNhaXJvX2Rlc3Ryb3kobV9sYXllckNvbnRleHQpOwogICAg
IG1fbGF5ZXJDb250ZXh0ID0gMDsKQEAgLTEyNiw2ICsxMjgsNyBAQCB2b2lkIENvbnRleHRTaGFk
b3c6OmVuZFNoYWRvd0xheWVyKGNhaXJvX3QqIGNyKQogICAgICAgICBjYWlyb19zdXJmYWNlX21h
cmtfZGlydHkobV9sYXllckltYWdlKTsKICAgICB9CiAKKyAgICBjYWlyb190KiBjciA9IG1fY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgc2V0U291
cmNlUkdCQUZyb21Db2xvcihjciwgbV9jb2xvcik7CiAgICAgY2Fpcm9fbWFza19zdXJmYWNlKGNy
LCBtX2xheWVySW1hZ2UsIG1fbGF5ZXJPcmlnaW4ueCgpLCBtX2xheWVyT3JpZ2luLnkoKSk7CkBA
IC0xMzUsOSArMTM4LDkgQEAgdm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihjYWly
b190KiBjcikKICAgICBzY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lkIENv
bnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhQbGF0Zm9ybUNvbnRleHQg
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVm
dFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJv
dHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzLCBmbG9hdCBh
bHBoYSkKK3ZvaWQgQ29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGNv
bnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwg
Y29uc3QgSW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRp
dXMsIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRv
bVJpZ2h0UmFkaXVzLCBmbG9hdCBhbHBoYSkKIHsKLSAgICBiZWdpblNoYWRvd0xheWVyKGNvbnRl
eHQsIHNoYWRvd1JlY3QpOworICAgIGJlZ2luU2hhZG93TGF5ZXIobV9jb250ZXh0LCBzaGFkb3dS
ZWN0KTsKIAogICAgIGlmICghbV9sYXllckNvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTE0
OSw3ICsxNTIsNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRp
bGluZyhQbGF0Zm9ybUNvbnRleHQgY29udGV4dCwgY29uc3QgSQogICAgIGNhaXJvX3NldF9zb3Vy
Y2VfcmdiYShtX2xheWVyQ29udGV4dCwgMCwgMCwgMCwgYWxwaGEpOwogICAgIGNhaXJvX2ZpbGwo
bV9sYXllckNvbnRleHQpOwogCi0gICAgZW5kU2hhZG93TGF5ZXIoY29udGV4dCk7CisgICAgZW5k
U2hhZG93TGF5ZXIoKTsKIH0KIAogc3RhdGljIGlubGluZSBGbG9hdFBvaW50IGdldFBoYXNlKGNv
bnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCmluZGV4IDBkOTJhZGE1MDhiMWFk
NjgwN2IyMzg3NWIwYmY3MzUxMjM2NmY3OTkuLjRmMjI5OWNkY2QzY2U4ZWUxZDI4NWE1MTZlN2I4
N2Q5MDJjNWYwZmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyby5jcHAKQEAgLTg2LDExICs4NiwxMSBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjYWlyb190KiBjb250ZXh0LAogICAg
IGNhaXJvX3RleHRfZXh0ZW50c190IGV4dGVudHM7CiAgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfZ2x5
cGhfZXh0ZW50cyhmb250LT5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCksIGdseXBocywgbnVt
R2x5cGhzLCAmZXh0ZW50cyk7CiAgICAgRmxvYXRSZWN0IGZvbnRFeHRlbnRzUmVjdChwb2ludC54
KCksIHBvaW50LnkoKSAtIGV4dGVudHMuaGVpZ2h0LCBleHRlbnRzLndpZHRoLCBleHRlbnRzLmhl
aWdodCk7Ci0gICAgY2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dM
YXllcihjb250ZXh0LCBmb250RXh0ZW50c1JlY3QpOworICAgIGNhaXJvX3QqIHNoYWRvd0NvbnRl
eHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoZ3JhcGhpY3NDb250ZXh0LCBmb250RXh0ZW50
c1JlY3QpOwogICAgIGlmIChzaGFkb3dDb250ZXh0KSB7CiAgICAgICAgIHByZXBhcmVDb250ZXh0
Rm9yR2x5cGhEcmF3aW5nKHNoYWRvd0NvbnRleHQsIGZvbnQsIHBvaW50KTsKICAgICAgICAgZHJh
d0dseXBoc1RvQ29udGV4dChzaGFkb3dDb250ZXh0LCBmb250LCBnbHlwaHMsIG51bUdseXBocyk7
Ci0gICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY29udGV4dCk7CisgICAgICAgIHNoYWRv
dy0+ZW5kU2hhZG93TGF5ZXIoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggNTg4
NWVhOWI3OTVhMWFlYzE1MWM1MWVhZmRlYWZlNzQ5OWQ1ODY5OC4uNDcyZTRjMGE5MjdiZmNkZDI4
NDM2Y2IzNDI0MDkxMzdiZDMxNDAwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTE2NSw3ICsxNjUs
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBQYXRoRHJhd2luZ1N0eWxlIGRyYQogICAgICAgICBzb2xpZEZpZ3VyZUV4dGVudHMu
dW5pdGUoZmlsbEV4dGVudHMpOwogICAgIH0KIAotICAgIGNhaXJvX3QqIHNoYWRvd0NvbnRleHQg
PSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoY2Fpcm9Db250ZXh0LCBzb2xpZEZpZ3VyZUV4dGVu
dHMpOworICAgIGNhaXJvX3QqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5
ZXIoY29udGV4dCwgc29saWRGaWd1cmVFeHRlbnRzKTsKICAgICBpZiAoIXNoYWRvd0NvbnRleHQp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBkcmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5
bGUgZHJhCiAgICAgaWYgKGRyYXdpbmdTdHlsZSAmIFN0cm9rZSkKICAgICAgICAgc2V0UGxhdGZv
cm1TdHJva2UoY29udGV4dCwgc2hhZG93Q29udGV4dCk7CiAKLSAgICBzaGFkb3ctPmVuZFNoYWRv
d0xheWVyKGNhaXJvQ29udGV4dCk7CisgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcigpOwogfQog
CiBzdGF0aWMgdm9pZCBmaWxsQ3VycmVudENhaXJvUGF0aChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNhaXJvX3QqIGNhaXJvQ29udGV4dCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDBhYzM5NTU4OTE4YWU3YjUyZWZiMTllNTQyZmFi
OWFhMzlhMDk0YjYuLmMxYzIwY2VjYzAwZjJmMTlkODVhYWU4N2Q0Yjc3MjNiYzU2MGFlN2YgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcApAQCAt
MTM4LDEzICsxMzgsMTMgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KICAgICBDb250ZXh0U2hh
ZG93KiBzaGFkb3cgPSBjb250ZXh0LT5jb250ZXh0U2hhZG93KCk7CiAgICAgQVNTRVJUKHNoYWRv
dyk7CiAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6Ok5vU2hhZG93KSB7
Ci0gICAgICAgIGNhaXJvX3QqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5
ZXIoY3IsIGRzdFJlY3QpOworICAgICAgICBjYWlyb190KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93
LT5iZWdpblNoYWRvd0xheWVyKGNvbnRleHQsIGRzdFJlY3QpOwogICAgICAgICBpZiAoc2hhZG93
Q29udGV4dCkgewogICAgICAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0NvbnRleHQsIGRz
dFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CiAgICAgICAgICAgICBjYWlyb19zZXRfc291cmNlKHNo
YWRvd0NvbnRleHQsIHBhdHRlcm4pOwogICAgICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKHNoYWRv
d0NvbnRleHQsIDAsIDAsIGRzdFJlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQoKSk7CiAgICAg
ICAgICAgICBjYWlyb19maWxsKHNoYWRvd0NvbnRleHQpOwotICAgICAgICAgICAgc2hhZG93LT5l
bmRTaGFkb3dMYXllcihjcik7CisgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKCk7
CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ZvbnRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0
ay5jcHAKaW5kZXggZWFiZDkxMzRlNjBkMGQ4MGYwNDE3OGQ0MmMxNWJiM2MyYjc1MWI5YS4uM2E2
YzVjZTA4Y2YxNTU4YzJkNGU5OTEzNDA2NDM4NzQ2NGIxYmJhMSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgdm9p
ZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjYWly
b190KiBjb250ZXh0LAogCiAgICAgRmxvYXRSZWN0IGV4dGVudHMoZ2V0UGFuZ29SZWdpb25FeHRl
bnRzKHJlbmRlclJlZ2lvbikpOwogICAgIGV4dGVudHMuc2V0TG9jYXRpb24oRmxvYXRQb2ludChw
b2ludC54KCksIHBvaW50LnkoKSAtIGV4dGVudHMuaGVpZ2h0KCkpKTsKLSAgICBjYWlyb190KiBz
aGFkb3dDb250ZXh0ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGNvbnRleHQsIGV4dGVudHMp
OworICAgIGNhaXJvX3QqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIo
Z3JhcGhpY3NDb250ZXh0LCBleHRlbnRzKTsKICAgICBpZiAoc2hhZG93Q29udGV4dCkgewogICAg
ICAgICBjYWlyb190cmFuc2xhdGUoc2hhZG93Q29udGV4dCwgcG9pbnQueCgpLCBwb2ludC55KCkp
OwogICAgICAgICBwYW5nb19jYWlyb19zaG93X2xheW91dF9saW5lKHNoYWRvd0NvbnRleHQsIGxh
eW91dExpbmUpOwpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFk
b3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNhaXJvX3QqIGNvbnRleHQsCiAg
ICAgICAgIGNhaXJvX2NsaXAoY29udGV4dCk7CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjb250
ZXh0LCAtdG90YWxPZmZzZXQueCgpLCAtdG90YWxPZmZzZXQueSgpKTsKIAotICAgICAgICBzaGFk
b3ctPmVuZFNoYWRvd0xheWVyKGNvbnRleHQpOworICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xh
eWVyKCk7CiAgICAgICAgIGNhaXJvX3Jlc3RvcmUoY29udGV4dCk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCmluZGV4IGUw
ZTc0MjIyNTQwZjViNmZiZWZmY2Y0ZmM2YjQ1MDdiZWEzMzI0NWIuLjgzYjRlZWJiNTg0OWFmMTE5
NmY0OGFkZDIwOGE0MWMzMTFmMGQ4OWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDb250ZXh0U2hhZG93LmgiCiAKKyNpbmNsdWRlICJBZmZpbmVU
cmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlIDxRUGFp
bnRlcj4KICNpbmNsdWRlIDxRVGltZXJFdmVudD4KIApAQCAtMTAwLDE5ICsxMDIsMTcgQEAgdm9p
ZCBTaGFkb3dCdWZmZXI6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqIGV2ZW50KQogICAgIFFPYmpl
Y3Q6OnRpbWVyRXZlbnQoZXZlbnQpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gQ29udGV4dFNoYWRv
dzo6Z2V0VHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4dChQbGF0Zm9ybUNvbnRleHQgY29u
dGV4dCkKLXsKLSAgICBjb25zdCBRVHJhbnNmb3JtJiB0cmFuc2Zvcm0gPSBjb250ZXh0LT50cmFu
c2Zvcm0oKTsKLSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKHRyYW5zZm9ybS5tMTEoKSwgdHJh
bnNmb3JtLm0xMigpLCB0cmFuc2Zvcm0ubTIxKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICB0cmFuc2Zvcm0ubTIyKCksIHRyYW5zZm9ybS5keCgpLCB0cmFuc2Zvcm0uZHkoKSk7Ci19Ci0K
IFFfR0xPQkFMX1NUQVRJQyhTaGFkb3dCdWZmZXIsIHNjcmF0Y2hTaGFkb3dCdWZmZXIpCiAKLVBs
YXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29u
dGV4dCBwLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKK1BsYXRmb3JtQ29udGV4dCBDb250
ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpCiB7CisgICAgbV9jb250ZXh0ID0gY29uc3Rf
Y2FzdDxHcmFwaGljc0NvbnRleHQqPihjb250ZXh0KTsKKworICAgIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSB0cmFuc2Zvcm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKICAgICAvLyBTZXQgbV9ibHVyRGlz
dGFuY2UuCi0gICAgYWRqdXN0Qmx1ckRpc3RhbmNlKHApOworICAgIGFkanVzdEJsdXJEaXN0YW5j
ZSh0cmFuc2Zvcm0pOworCisgICAgUGxhdGZvcm1Db250ZXh0IHAgPSBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKIAogICAgIFFSZWN0IGNsaXBSZWN0OwogICAgIGlmIChwLT5oYXNDbGlwcGlu
ZygpKQpAQCAtMTI2LDcgKzEyNiw3IEBAIFBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93Ojpi
ZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBwLCBjb25zdCBGbG9hdFJlCiAKICAgICAv
LyBTZXQgbV9sYXllck9yaWdpbiwgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbiwgbV9zb3VyY2VS
ZWN0LgogICAgIEludFJlY3QgY2xpcChjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJl
Y3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOwotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0g
Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QocCwgbGF5ZXJBcmVhLCBjbGlwKTsKKyAgICBJbnRS
ZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGxheWVyQXJlYSwgY2xp
cCwgdHJhbnNmb3JtKTsKIAogICAgIC8vIERvbid0IHBhaW50IGlmIHdlIGFyZSB0b3RhbGx5IG91
dHNpZGUgdGhlIGNsaXAgcmVnaW9uLgogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQpAQCAt
MTQzLDcgKzE0Myw3IEBAIFBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRv
d0xheWVyKFBsYXRmb3JtQ29udGV4dCBwLCBjb25zdCBGbG9hdFJlCiAgICAgcmV0dXJuIG1fbGF5
ZXJDb250ZXh0OwogfQogCi12b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKFBsYXRm
b3JtQ29udGV4dCBwKQordm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcigpCiB7CiAg
ICAgbV9sYXllckNvbnRleHQtPmVuZCgpOwogICAgIGRlbGV0ZSBtX2xheWVyQ29udGV4dDsKQEAg
LTE2Miw3ICsxNjIsNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKFBsYXRm
b3JtQ29udGV4dCBwKQogICAgICAgICBwLmVuZCgpOwogICAgIH0KIAotICAgIHAtPmRyYXdJbWFn
ZShtX2xheWVyT3JpZ2luLCBtX2xheWVySW1hZ2UsIG1fc291cmNlUmVjdCk7CisgICAgbV9jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd0ltYWdlKG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJJ
bWFnZSwgbV9zb3VyY2VSZWN0KTsKIAogICAgIHNjcmF0Y2hTaGFkb3dCdWZmZXIoKS0+c2NoZWR1
bGVQdXJnZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9G
b250UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwCmluZGV4
IDEzMWFlOTNjMjg0ODgzYTk1YWNkNjBkYWEzNDk2YzI1ZTMxNzBhZjIuLjJiMWM5NDE2NDQwMmM0
NjhhN2I4ZTU5Y2RmZTk5NmE2MzgxZTExOTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvRm9udFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0ZvbnRRdC5jcHAKQEAgLTE0NiwyMCArMTQ2LDIwIEBAIHN0YXRpYyB2b2lkIGRyYXdUZXh0Q29t
bW9uKEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0
CiAKICAgICAgICAgICAgIGlmIChjdHhTaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpO
b1NoYWRvdykgewogICAgICAgICAgICAgICAgIENvbnRleHRTaGFkb3cqIGN0eFNoYWRvdyA9IGN0
eC0+Y29udGV4dFNoYWRvdygpOwotICAgICAgICAgICAgICAgIGlmICghY3R4U2hhZG93LT5tdXN0
VXNlQ29udGV4dFNoYWRvdyhwKSkgeworICAgICAgICAgICAgICAgIGlmICghY3R4U2hhZG93LT5t
dXN0VXNlQ29udGV4dFNoYWRvdyhjdHgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHAtPnNhdmUo
KTsKICAgICAgICAgICAgICAgICAgICAgcC0+c2V0UGVuKGN0eFNoYWRvdy0+bV9jb2xvcik7CiAg
ICAgICAgICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShjdHhTaGFkb3ctPm9mZnNldCgpKTsKICAg
ICAgICAgICAgICAgICAgICAgbGluZS5kcmF3KHAsIHB0KTsKICAgICAgICAgICAgICAgICAgICAg
cC0+cmVzdG9yZSgpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gY3R4U2hhZG93LT5iZWdpblNoYWRvd0xheWVy
KHAsIGJvdW5kaW5nUmVjdCk7CisgICAgICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQ
YWludGVyID0gY3R4U2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGN0eCwgYm91bmRpbmdSZWN0KTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFNpbmNlIGl0IHdpbGwgYmUgYmx1cnJlZCBhbnl3YXksIHdlIGRvbid0IGNh
cmUgYWJvdXQgcmVuZGVyIGhpbnRzLgogICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFp
bnRlci0+c2V0Rm9udChwLT5mb250KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93
UGFpbnRlci0+c2V0UGVuKGN0eFNoYWRvdy0+bV9jb2xvcik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5lLmRyYXcoc2hhZG93UGFpbnRlciwgcHQpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgY3R4U2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGN0eFNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIwNCwxMyArMjA0LDEzIEBAIHN0YXRp
YyB2b2lkIGRyYXdUZXh0Q29tbW9uKEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBUZXh0UnVu
JiBydW4sIGNvbnN0IEZsb2F0CiAjZWxzZQogICAgICAgICAgICAgICAgIFFSZWN0RiBib3VuZGlu
Z1JlY3QocHQueCgpLCBwb2ludC55KCkgLSBmbS5hc2NlbnQoKSwgZm0ud2lkdGgoc3RyaW5nKSwg
Zm0uaGVpZ2h0KCkpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1Bh
aW50ZXIgPSBjdHhTaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKKyAg
ICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IGN0eFNoYWRvdy0+YmVnaW5T
aGFkb3dMYXllcihjdHgsIGJvdW5kaW5nUmVjdCk7CiAgICAgICAgICAgICAgICAgaWYgKHNoYWRv
d1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2UgaXQgd2lsbCBiZSBibHVy
cmVkIGFueXdheSwgd2UgZG9uJ3QgY2FyZSBhYm91dCByZW5kZXIgaGludHMuCiAgICAgICAgICAg
ICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldEZvbnQocC0+Zm9udCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0UGVuKGN0eFNoYWRvdy0+bV9jb2xvcik7CiAgICAg
ICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmRyYXdUZXh0KHB0LCBzdHJpbmcsIGZsYWdz
LCBydW4ucGFkZGluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgY3R4U2hhZG93LT5lbmRTaGFk
b3dMYXllcihwKTsKKyAgICAgICAgICAgICAgICAgICAgY3R4U2hhZG93LT5lbmRTaGFkb3dMYXll
cigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlm
IChjdHgtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2UpIHsKQEAgLTIyNSwxMiAr
MjI1LDEyIEBAIHN0YXRpYyB2b2lkIGRyYXdUZXh0Q29tbW9uKEdyYXBoaWNzQ29udGV4dCogY3R4
LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0CiAjZWxzZQogICAgICAgICAgICAgICAg
IFFSZWN0RiBib3VuZGluZ1JlY3QocHQueCgpLCBwb2ludC55KCkgLSBmbS5hc2NlbnQoKSwgZm0u
d2lkdGgoc3RyaW5nKSwgZm0uaGVpZ2h0KCkpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgUVBh
aW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBjdHhTaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgYm91
bmRpbmdSZWN0KTsKKyAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IGN0
eFNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjdHgsIGJvdW5kaW5nUmVjdCk7CiAgICAgICAgICAg
ICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ug
aXQgd2lsbCBiZSBibHVycmVkIGFueXdheSwgd2UgZG9uJ3QgY2FyZSBhYm91dCByZW5kZXIgaGlu
dHMuCiAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldEZvbnQocC0+Zm9udCgp
KTsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c3Ryb2tlUGF0aCh0ZXh0U3Ry
b2tlUGF0aCwgUVBlbihjdHhTaGFkb3ctPm1fY29sb3IpKTsKLSAgICAgICAgICAgICAgICAgICAg
Y3R4U2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsKKyAgICAgICAgICAgICAgICAgICAgY3R4U2hh
ZG93LT5lbmRTaGFkb3dMYXllcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dFF0LmNwcAppbmRleCAwY2Y2ZjIyMzA0NDJhNjZkOWRkNjg3NDRjZDA3MjFlMWY0NTFm
NDBhLi4zYzUyYzRmMWZlMmJjOGM3Njc5ODhiYmZjNzFlOTIzOGVhNzFkMTY4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAt
NTEwLDEzICs1MTAsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBh
dGgmIHBhdGgpCiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250
ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0gICAgICAgIGlmIChzaGFkb3ct
Pm11c3RVc2VDb250ZXh0U2hhZG93KHApIHx8IG1fc3RhdGUuZmlsbFBhdHRlcm4gfHwgbV9zdGF0
ZS5maWxsR3JhZGllbnQpCisgICAgICAgIGlmIChzaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93
KHRoaXMpIHx8IG1fc3RhdGUuZmlsbFBhdHRlcm4gfHwgbV9zdGF0ZS5maWxsR3JhZGllbnQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5i
ZWdpblNoYWRvd0xheWVyKHAsIHBsYXRmb3JtUGF0aC5jb250cm9sUG9pbnRSZWN0KCkpOworICAg
ICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5
ZXIodGhpcywgcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKSk7CiAgICAgICAgICAgICBp
ZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENv
bXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAg
ICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3IobV9k
YXRhLT5zaGFkb3cubV9jb2xvcikpOwotICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93
TGF5ZXIocCk7CisgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcigpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQg
PSBzaGFkb3ctPm9mZnNldCgpOwpAQCAtNTQ4LDE1ICs1NDgsMTUgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEtPmhh
c1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFk
b3coKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3cocCkgfHwgbV9z
dGF0ZS5zdHJva2VQYXR0ZXJuIHx8IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpCisgICAgICAgIGlm
IChzaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KHRoaXMpIHx8IG1fc3RhdGUuc3Ryb2tlUGF0
dGVybiB8fCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50KQogICAgICAgICB7CiAgICAgICAgICAgICBG
bG9hdFJlY3QgYm91bmRpbmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKTsK
ICAgICAgICAgICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRlckxpbWl0KCkgKyBwZW4u
d2lkdGhGKCkpOwotICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ct
PmJlZ2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKKyAgICAgICAgICAgIFFQYWludGVy
KiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIGJvdW5kaW5n
UmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAg
IHNoYWRvd1BhaW50ZXItPnNldE9wYWNpdHkoc3RhdGljX2Nhc3Q8cXJlYWw+KG1fZGF0YS0+c2hh
ZG93Lm1fY29sb3IuYWxwaGEoKSkgLyAyNTUpOwogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50
ZXItPnN0cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBwZW4pOwotICAgICAgICAgICAgICAgIHNoYWRv
dy0+ZW5kU2hhZG93TGF5ZXIocCk7CisgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dM
YXllcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUVBl
biBzaGFkb3dQZW4ocGVuKTsKQEAgLTY2MywzMyArNjYzLDMzIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIEFmZmluZVRyYW5z
Zm9ybSBhZmZpbmU7CiAgICAgICAgIFFCcnVzaCBicnVzaChtX3N0YXRlLmZpbGxQYXR0ZXJuLT5j
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oYWZmaW5lKSk7CiAgICAgICAgIFFQaXhtYXAqIGltYWdlID0g
bV9zdGF0ZS5maWxsUGF0dGVybi0+dGlsZUltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7Ci0gICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gbV9kYXRhLT5oYXNTaGFk
b3coKSA/IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCkgOiAwOwor
ICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IG1fZGF0YS0+aGFzU2hhZG93KCkgPyBz
aGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpIDogMDsKICAgICAg
ICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgIGRyYXdSZXBlYXRQYXR0ZXJuKHNo
YWRvd1BhaW50ZXIsIGltYWdlLCBub3JtYWxpemVkUmVjdCwgbV9zdGF0ZS5maWxsUGF0dGVybi0+
cmVwZWF0WCgpLCBtX3N0YXRlLmZpbGxQYXR0ZXJuLT5yZXBlYXRZKCkpOwogICAgICAgICAgICAg
c2hhZG93UGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1v
ZGVfU291cmNlSW4pOwogICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFs
aXplZFJlY3QsIHNoYWRvdy0+bV9jb2xvcik7Ci0gICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRv
d0xheWVyKHApOworICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcigpOwogICAgICAg
ICB9CiAgICAgICAgIGRyYXdSZXBlYXRQYXR0ZXJuKHAsIGltYWdlLCBub3JtYWxpemVkUmVjdCwg
bV9zdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WCgpLCBtX3N0YXRlLmZpbGxQYXR0ZXJuLT5yZXBl
YXRZKCkpOwogICAgIH0gZWxzZSBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQpIHsKICAgICAgICAg
UUJydXNoIGJydXNoKCptX3N0YXRlLmZpbGxHcmFkaWVudC0+cGxhdGZvcm1HcmFkaWVudCgpKTsK
ICAgICAgICAgYnJ1c2guc2V0VHJhbnNmb3JtKG1fc3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVu
dFNwYWNlVHJhbnNmb3JtKCkpOwotICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IG1f
ZGF0YS0+aGFzU2hhZG93KCkgPyBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgbm9ybWFsaXpl
ZFJlY3QpIDogMDsKKyAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBtX2RhdGEtPmhh
c1NoYWRvdygpID8gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIG5vcm1hbGl6ZWRSZWN0
KSA6IDA7CiAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICBzaGFkb3dQ
YWludGVyLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOwogICAgICAgICAgICAgc2hh
ZG93UGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVf
U291cmNlSW4pOwogICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXpl
ZFJlY3QsIHNoYWRvdy0+bV9jb2xvcik7Ci0gICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xh
eWVyKHApOworICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcigpOwogICAgICAgICB9
CiAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBicnVzaCk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKLSAgICAgICAgICAgIGlmIChz
aGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KHApKSB7Ci0gICAgICAgICAgICAgICAgUVBhaW50
ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgbm9ybWFsaXpl
ZFJlY3QpOworICAgICAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3codGhp
cykpIHsKKyAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+
YmVnaW5TaGFkb3dMYXllcih0aGlzLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICAgICAg
aWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+
c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5tX2NvbG9yLmFscGhhKCkpIC8g
MjU1KTsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFs
aXplZFJlY3QsIHAtPmJydXNoKCkpOwotICAgICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNo
YWRvd0xheWVyKHApOworICAgICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVy
KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAvLyBTb2xpZCByZWN0YW5nbGUgZmlsbCB3aXRoIG5vIGJsdXIgc2hhZG93IG9yIHRyYW5z
Zm9ybWF0aW9ucyBhcHBsaWVkIGNhbiBiZSBkb25lCkBAIC03MTYsMTIgKzcxNiwxMiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yUwogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAg
ICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotICAgICAgICBp
ZiAoc2hhZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhwKSkgewotICAgICAgICAgICAgUVBhaW50
ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgbm9ybWFsaXpl
ZFJlY3QpOworICAgICAgICBpZiAoc2hhZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyh0aGlzKSkg
eworICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hh
ZG93TGF5ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpOwogICAgICAgICAgICAgaWYgKHNoYWRvd1Bh
aW50ZXIpIHsKICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRDb21wb3NpdGlvbk1v
ZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2UpOwogICAgICAgICAgICAgICAgIHNo
YWRvd1BhaW50ZXItPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBzaGFkb3ctPm1fY29sb3IpOwot
ICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CisgICAgICAgICAgICAg
ICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hh
ZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9jb2xvcik7CkBAIC03NDAsMTIgKzc0MCwxMiBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IEludFNpemUmIHRvcExlZgogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAg
ICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hh
ZG93ID0gY29udGV4dFNoYWRvdygpOwotICAgICAgICBpZiAoc2hhZG93LT5tdXN0VXNlQ29udGV4
dFNoYWRvdyhwKSkgewotICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFk
b3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcmVjdCk7CisgICAgICAgIGlmIChzaGFkb3ctPm11c3RV
c2VDb250ZXh0U2hhZG93KHRoaXMpKSB7CisgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFp
bnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcih0aGlzLCByZWN0KTsKICAgICAgICAgICAg
IGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0
Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKICAgICAg
ICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBR
Q29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcikpOwotICAgICAgICAgICAgICAgIHNoYWRvdy0+
ZW5kU2hhZG93TGF5ZXIocCk7CisgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXll
cigpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcC0+dHJh
bnNsYXRlKG1fZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0ltYWdlUXQuY3BwCmluZGV4IGY3MTNkMzczZTcwZTA3MDMwNDQ4NzNkNTFmMGU1MmY0NThl
MjI2OTAuLjEwOTAzMzI2OTZlNDZlZWIyNDI2NmIzNDFkNTc4ZTc1YWY4ZTZkOTUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcApAQCAtMjA5LDExICsyMDksMTEgQEAg
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0LAogCiAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY3R4dC0+Y29udGV4dFNo
YWRvdygpOwogICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpOb1NoYWRv
dykgewotICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFk
b3dMYXllcihwYWludGVyLCBub3JtYWxpemVkRHN0KTsKKyAgICAgICAgUVBhaW50ZXIqIHNoYWRv
d1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoY3R4dCwgbm9ybWFsaXplZERzdCk7
CiAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICBzaGFkb3dQYWludGVy
LT5zZXRPcGFjaXR5KHN0YXRpY19jYXN0PHFyZWFsPihzaGFkb3ctPm1fY29sb3IuYWxwaGEoKSkg
LyAyNTUpOwogICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZHJhd1BpeG1hcChub3JtYWxpemVk
RHN0LCAqaW1hZ2UsIG5vcm1hbGl6ZWRTcmMpOwotICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFk
b3dMYXllcihwYWludGVyKTsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoKTsK
ICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9TdGlsbEltYWdlUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGls
bEltYWdlUXQuY3BwCmluZGV4IDUxYzk0OTllZjc5NjQzY2ZhMmY4NGYzMWI5OWJiYjRjYTJmOTAw
N2EuLmI3YjBjZDM1Y2UwN2FlNTI0NDFlNjA5YWNmOTY1NTgzZWNhZWI2OWYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKQEAgLTc0LDE5ICs3NCwx
NyBAQCB2b2lkIFN0aWxsSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdCwKICAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0g
Y3R4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCk7CiAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0
aW9uKG9wKTsKIAotICAgIFFQYWludGVyKiBwYWludGVyID0gY3R4dC0+cGxhdGZvcm1Db250ZXh0
KCk7Ci0KICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBjdHh0LT5jb250ZXh0U2hhZG93KCk7
CiAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6Ok5vU2hhZG93KSB7Ci0g
ICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVy
KHBhaW50ZXIsIG5vcm1hbGl6ZWREc3QpOworICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRl
ciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjdHh0LCBub3JtYWxpemVkRHN0KTsKICAgICAg
ICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldE9w
YWNpdHkoc3RhdGljX2Nhc3Q8cXJlYWw+KHNoYWRvdy0+bV9jb2xvci5hbHBoYSgpKSAvIDI1NSk7
CiAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5kcmF3UGl4bWFwKG5vcm1hbGl6ZWREc3QsICpt
X3BpeG1hcCwgbm9ybWFsaXplZFNyYyk7Ci0gICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xh
eWVyKHBhaW50ZXIpOworICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcigpOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgcGFpbnRlci0+ZHJhd1BpeG1hcChub3JtYWxpemVkRHN0LCAq
bV9waXhtYXAsIG5vcm1hbGl6ZWRTcmMpOworICAgIGN0eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5k
cmF3UGl4bWFwKG5vcm1hbGl6ZWREc3QsICptX3BpeG1hcCwgbm9ybWFsaXplZFNyYyk7CiAgICAg
Y3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0b3IpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77788</attachid>
            <date>2011-01-02 20:00:04 -0800</date>
            <delta_ts>2011-01-03 00:45:02 -0800</delta_ts>
            <desc>Stick to elimination of getTransformationMatrixFromContext()</desc>
            <filename>bug-51799-20110102200003.patch</filename>
            <type>text/plain</type>
            <size>30842</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmZiYTBlYTQwYjdjOWI3YmI0ZDJjOGUyZjBkOTcxNWUxZmMwYTcwZi4uMDk2YjI5ZjVhMmM2MmU2
OGY2NTcxY2E5MTI2Mjg5Yzc5ZGY1ZmZhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMS0wMS0wMiAgSGVs
ZGVyIENvcnJlaWEgIDxoZWxkZXJAc2VuY2hhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb250ZXh0U2hhZG93IGNhbiBhdm9pZCBjb2RlIGR1
cGxpY2F0aW9uIGZvciBnZXR0aW5nIHRoZSBDVE0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNzk5CisKKyAgICAgICAgQ29udGV4dFNoYWRvdyBkZWZp
bmVzIGl0cyBvd24gZ2V0VHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4dCgpCisgICAgICAg
IHdoaWNoIGRvZXMgZXhhY3RseSB0aGUgc2FtZSBhcyBHcmFwaGljc0NvbnRleHQ6OmdldENUTSgp
LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzOiBmYXN0L2NhbnZhcy9jYW52YXMqc2hhZG93Kmh0
bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6bXVzdFVzZUNvbnRleHRTaGFkb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6YWRqdXN0Qmx1ckRpc3RhbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGV4dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0dseXBoc1NoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2d0ay9Gb250R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFk
b3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJh
d1RleHRDb21tb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdGlsbEltYWdlOjpkcmF3KToKKwogMjAxMS0wMS0wMSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hh
ZG93LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAKaW5k
ZXggOTVhYWQ0NjljMzljNzhjM2Q4ZTQ1ZjkxZTQ1YWY1ODVjNDQ4OGYyOC4uNzYzZTU5NTQ3YTE5
ZTgzZGJlZGI2ODFmYTc1YWQ4NGNiY2Y4ODg5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbnRleHRTaGFkb3cuY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ29udGV4dFNoYWRvdy5oIgogCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTgxLDcgKzgzLDcgQEAgdm9pZCBDb250ZXh0U2hh
ZG93OjpjbGVhcigpCiAgICAgbV9vZmZzZXQgPSBGbG9hdFNpemUoKTsKIH0KIAotYm9vbCBDb250
ZXh0U2hhZG93OjptdXN0VXNlQ29udGV4dFNoYWRvdyhQbGF0Zm9ybUNvbnRleHQgY29udGV4dCkK
K2Jvb2wgQ29udGV4dFNoYWRvdzo6bXVzdFVzZUNvbnRleHRTaGFkb3coR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KQogewogICAgIC8vIFdlIGNhbid0IGF2b2lkIENvbnRleHRTaGFkb3csIHNpbmNl
IHRoZSBzaGFkb3cgaGFzIGJsdXIuCiAgICAgaWYgKG1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpC
bHVyU2hhZG93KQpAQCAtOTEsOCArOTMsNyBAQCBib29sIENvbnRleHRTaGFkb3c6Om11c3RVc2VD
b250ZXh0U2hhZG93KFBsYXRmb3JtQ29udGV4dCBjb250ZXh0KQogICAgIGlmICghc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIFdlIGNhbiBh
dm9pZCBDb250ZXh0U2hhZG93LCBzaW5jZSB0aGVyZSBhcmUgbm8gdHJhbnNmb3JtYXRpb25zIHRv
IGFwcGx5IHRvIHRoZSBjYW52YXMuCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9y
bShnZXRUcmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KGNvbnRleHQpKTsKLSAgICBpZiAo
dHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKKyAgICBpZiAoY29udGV4dC0+Z2V0Q1RNKCkuaXNJZGVu
dGl0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gT3RoZXJ3aXNlLCBubyBjaGFu
Y2UgYXZvaWRpbmcgQ29udGV4dFNoYWRvdy4KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3MCwxNSAr
MTcxLDE1IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6Ymx1ckxheWVySW1hZ2UodW5zaWduZWQgY2hh
ciogaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBzaXplCiAgICAgfQogfQogCi12b2lkIENvbnRl
eHRTaGFkb3c6OmFkanVzdEJsdXJEaXN0YW5jZShjb25zdCBQbGF0Zm9ybUNvbnRleHQgY29udGV4
dCkKK3ZvaWQgQ29udGV4dFNoYWRvdzo6YWRqdXN0Qmx1ckRpc3RhbmNlKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKIHsKLSAgICAvLyBBZGp1c3QgYmx1ciBpZiB3ZSdyZSBzY2FsaW5nLCBzaW5j
ZSB0aGUgcmFkaXVzIG11c3Qgbm90IGJlIGFmZmVjdGVkIGJ5IHRyYW5zZm9ybWF0aW9ucy4KLSAg
ICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtKGdldFRyYW5zZm9ybWF0aW9uTWF0cml4
RnJvbUNvbnRleHQoY29udGV4dCkpOworICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zv
cm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKIAorICAgIC8vIEFkanVzdCBibHVyIGlmIHdlJ3JlIHNj
YWxpbmcsIHNpbmNlIHRoZSByYWRpdXMgbXVzdCBub3QgYmUgYWZmZWN0ZWQgYnkgdHJhbnNmb3Jt
YXRpb25zLgogICAgIGlmICh0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICAvLyBDYWxjdWxhbGUgdHJhbnNmb3JtZWQgdW5pdCB2ZWN0b3JzLgorICAgIC8vIENh
bGN1bGF0ZSB0cmFuc2Zvcm1lZCB1bml0IHZlY3RvcnMuCiAgICAgY29uc3QgRmxvYXRRdWFkIHVu
aXRRdWFkKEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMSwgMCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQoMCwgMSksIEZsb2F0UG9pbnQoMSwgMSkpOwogICAg
IGNvbnN0IEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFVuaXRRdWFkID0gdHJhbnNmb3JtLm1hcFF1YWQo
dW5pdFF1YWQpOwpAQCAtMTk4LDEzICsxOTksMTMgQEAgdm9pZCBDb250ZXh0U2hhZG93OjphZGp1
c3RCbHVyRGlzdGFuY2UoY29uc3QgUGxhdGZvcm1Db250ZXh0IGNvbnRleHQpCiAgICAgbV9ibHVy
RGlzdGFuY2UgPSByb3VuZGYoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYmx1ckRpc3RhbmNlKSAvIHNj
YWxlKTsKIH0KIAotSW50UmVjdCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5n
UmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXll
ckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorSW50UmVjdCBDb250ZXh0U2hhZG93Ojpj
YWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICAv
LyBDYWxjdWxhdGUgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBibHVycmVkIGFuZC9vciB0cmFuc2Zv
cm1lZCBsYXllci4KICAgICBGbG9hdFJlY3QgbGF5ZXJGbG9hdFJlY3Q7CiAgICAgZmxvYXQgaW5m
bGF0aW9uID0gMDsKIAotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0oZ2V0VHJh
bnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4dChjb250ZXh0KSk7CisgICAgY29uc3QgQWZmaW5l
VHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOwogICAgIGlmIChtX3NoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zICYmICF0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7CiAgICAgICAg
IEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFBvbHlnb24gPSB0cmFuc2Zvcm0ubWFwUXVhZChGbG9hdFF1
YWQobGF5ZXJBcmVhKSk7CiAgICAgICAgIHRyYW5zZm9ybWVkUG9seWdvbi5tb3ZlKG1fb2Zmc2V0
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmgKaW5kZXggZTVlNWE4
ZTUyNmYyODNiODcxNjljZjQ4NjFjNGZmNWQyOTc1NzRkYy4uYTFmYmE1YzgyYTE0MzYwYWE1NmE0
NDcyYzE5N2IzMWMyMWY4YjQ2NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db250ZXh0U2hhZG93LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0
U2hhZG93LmgKQEAgLTI5LDEwICsyOSw4IEBACiAjaWZuZGVmIENvbnRleHRTaGFkb3dfaAogI2Rl
ZmluZSBDb250ZXh0U2hhZG93X2gKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2lu
Y2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlJlZkNvdW50ZWQu
aCIKIApAQCAtNDgsNiArNDYsOSBAQCBRVF9FTkRfTkFNRVNQQUNFCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3MgR3JhcGhpY3NDb250ZXh0Owor
CiAjaWYgUExBVEZPUk0oQ0FJUk8pCiB0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogUGxhdGZvcm1J
bWFnZTsKIHR5cGVkZWYgY2Fpcm9fdCogUGxhdGZvcm1Db250ZXh0OwpAQCAtODIsNyArODMsNyBA
QCBwdWJsaWM6CiAgICAgQ29udGV4dFNoYWRvdygpOwogICAgIENvbnRleHRTaGFkb3coY29uc3Qg
Q29sb3ImLCBmbG9hdCByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KTsKIAotICAgIGJv
b2wgbXVzdFVzZUNvbnRleHRTaGFkb3coUGxhdGZvcm1Db250ZXh0KTsKKyAgICBib29sIG11c3RV
c2VDb250ZXh0U2hhZG93KEdyYXBoaWNzQ29udGV4dCopOwogICAgIHZvaWQgY2xlYXIoKTsKIAog
ICAgIC8vIFRoZSBwYWlyIGJlZ2luU2hhZG93TGF5ZXIgYW5kIGVuZFNoYWRvd0xheWVyIGNyZWF0
ZXMgYSB0ZW1wb3JhcnkgaW1hZ2UKQEAgLTEwNywxMCArMTA4LDkgQEAgcHVibGljOgogICAgIC8v
IG9yaWdpbmFsIGNvbnRleHQuIElmIGJsdXIgcmFkaXVzIGlzIHNwZWNpZmllZCwgdGhlIHNoYWRv
dyB3aWxsIGJlCiAgICAgLy8gZmlsdGVyZWQgZmlyc3QuCiAKLSAgICBQbGF0Zm9ybUNvbnRleHQg
YmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJB
cmVhKTsKLSAgICB2b2lkIGVuZFNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCk7CisgICAgUGxh
dGZvcm1Db250ZXh0IGJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiBsYXllckFyZWEpOworICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250
ZXh0Kik7CiAgICAgc3RhdGljIHZvaWQgcHVyZ2VTY3JhdGNoQnVmZmVyKCk7Ci0gICAgc3RhdGlj
IEFmZmluZVRyYW5zZm9ybSBnZXRUcmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KFBsYXRm
b3JtQ29udGV4dCk7CiAKICAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wg
ZW5hYmxlKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBlbmFibGU7IH0KICAgICBib29s
IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtczsgfQpAQCAtMTI5LDEyICsxMjksMTIgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBv
aW50IG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb247IC8vIFRyYW5zbGF0aW9uIHRvIGFwcGx5IHRv
IG1fbGF5ZXJDb250ZXh0IGZvciB0aGUgc2hhZG93IHRvIGJlIGNvcnJlY3RseSBjbGlwcGVkLgog
ICAgIGJvb2wgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKIAotICAgIHZvaWQgYWRqdXN0Qmx1
ckRpc3RhbmNlKGNvbnN0IFBsYXRmb3JtQ29udGV4dCk7CisgICAgdm9pZCBhZGp1c3RCbHVyRGlz
dGFuY2UoR3JhcGhpY3NDb250ZXh0Kik7CiAgICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25l
ZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBpbnQgc3RyaWRlKTsKLSAgICBJbnRS
ZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKyAgICBJ
bnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAKICNpZiBQ
TEFURk9STShDQUlSTykKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhQbGF0
Zm9ybUNvbnRleHQgY29udGV4dCwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgSW50
U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0
IEludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0UmFk
aXVzLCBmbG9hdCBhbHBoYSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgSW50U2l6
ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IElu
dFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVz
LCBmbG9hdCBhbHBoYSk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcAppbmRleCBjNTJjYzNhOTBi
Y2ZlMTU2NWRiM2RmZTU4OWYzNzFjZGU1ZDBjYWU2Li41NjNhMjQyMjUyN2RkYjJlYWYyODg2MmUy
NTcxNTA4YmQzNzM1MDkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwCkBAIC04MSwyMCArODEsMTIgQEAgc3RhdGlj
IGNhaXJvX3N1cmZhY2VfdCogZ2V0U2NyYXRjaEJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQog
ICAgIHJldHVybiBzY3JhdGNoQnVmZmVyOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gQ29udGV4dFNo
YWRvdzo6Z2V0VHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4dChQbGF0Zm9ybUNvbnRleHQg
Y29udGV4dCkKLXsKLSAgICBjYWlyb19tYXRyaXhfdCB0cmFuc2Zvcm07Ci0gICAgY2Fpcm9fZ2V0
X21hdHJpeChjb250ZXh0LCAmdHJhbnNmb3JtKTsKLSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3Jt
KHRyYW5zZm9ybS54eCwgdHJhbnNmb3JtLnl4LCB0cmFuc2Zvcm0ueHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFuc2Zvcm0ueXksIHRyYW5zZm9ybS54MCwgdHJhbnNmb3JtLnkwKTsK
LX0KLQotUGxhdGZvcm1Db250ZXh0IENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIoUGxh
dGZvcm1Db250ZXh0IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhKQorUGxhdGZv
cm1Db250ZXh0IENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKIHsKICAgICBhZGp1c3RCbHVy
RGlzdGFuY2UoY29udGV4dCk7CiAKICAgICBkb3VibGUgeDEsIHgyLCB5MSwgeTI7Ci0gICAgY2Fp
cm9fY2xpcF9leHRlbnRzKGNvbnRleHQsICZ4MSwgJnkxLCAmeDIsICZ5Mik7CisgICAgY2Fpcm9f
Y2xpcF9leHRlbnRzKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCAmeDEsICZ5MSwgJngyLCAm
eTIpOwogICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3Qo
Y29udGV4dCwgbGF5ZXJBcmVhLCBJbnRSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkpOwog
CiAgICAgLy8gRG9uJ3QgcGFpbnQgaWYgd2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCBy
ZWdpb24uCkBAIC0xMTMsNyArMTA1LDcgQEAgUGxhdGZvcm1Db250ZXh0IENvbnRleHRTaGFkb3c6
OmJlZ2luU2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0IGNvbnRleHQsIGNvbnN0IEYKICAgICBy
ZXR1cm4gbV9sYXllckNvbnRleHQ7CiB9CiAKLXZvaWQgQ29udGV4dFNoYWRvdzo6ZW5kU2hhZG93
TGF5ZXIoY2Fpcm9fdCogY3IpCit2b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBjYWlyb19kZXN0cm95KG1fbGF5ZXJDb250
ZXh0KTsKICAgICBtX2xheWVyQ29udGV4dCA9IDA7CkBAIC0xMjYsNiArMTE4LDcgQEAgdm9pZCBD
b250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihjYWlyb190KiBjcikKICAgICAgICAgY2Fpcm9f
c3VyZmFjZV9tYXJrX2RpcnR5KG1fbGF5ZXJJbWFnZSk7CiAgICAgfQogCisgICAgY2Fpcm9fdCog
Y3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAg
ICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNyLCBtX2NvbG9yKTsKICAgICBjYWlyb19tYXNrX3N1
cmZhY2UoY3IsIG1fbGF5ZXJJbWFnZSwgbV9sYXllck9yaWdpbi54KCksIG1fbGF5ZXJPcmlnaW4u
eSgpKTsKQEAgLTEzNSw3ICsxMjgsNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xh
eWVyKGNhaXJvX3QqIGNyKQogICAgIHNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAK
LXZvaWQgQ29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKFBsYXRmb3Jt
Q29udGV4dCBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBJbnRTaXpl
JiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgSW50
U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMs
IGZsb2F0IGFscGhhKQordm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRU
aWxpbmcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzaGFkb3dSZWN0
LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBJbnRTaXplJiB0b3BSaWdodFJh
ZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90
dG9tUmlnaHRSYWRpdXMsIGZsb2F0IGFscGhhKQogewogICAgIGJlZ2luU2hhZG93TGF5ZXIoY29u
dGV4dCwgc2hhZG93UmVjdCk7CiAKQEAgLTIyOSwxMCArMjIyLDEwIEBAIHZvaWQgQ29udGV4dFNo
YWRvdzo6ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiByZWN0CiAgICAgLy8gUmVkdWNlIHRoZSBzaXplIG9mIHdoYXQgd2UgaGF2ZSB0byBkcmF3
IHdpdGggdGhlIGNsaXAgYXJlYS4KICAgICBkb3VibGUgeDEsIHgyLCB5MSwgeTI7CiAgICAgY2Fp
cm9fY2xpcF9leHRlbnRzKGNyLCAmeDEsICZ5MSwgJngyLCAmeTIpOwotICAgIGNhbGN1bGF0ZUxh
eWVyQm91bmRpbmdSZWN0KGNyLCBzaGFkb3dSZWN0LCBJbnRSZWN0KHgxLCB5MSwgeDIgLSB4MSwg
eTIgLSB5MSkpOworICAgIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnRleHQsIHNoYWRv
d1JlY3QsIEludFJlY3QoeDEsIHkxLCB4MiAtIHgxLCB5MiAtIHkxKSk7CiAKICAgICBpZiAoKHNo
YWRvd1RlbXBsYXRlU2l6ZS53aWR0aCgpICogc2hhZG93VGVtcGxhdGVTaXplLmhlaWdodCgpID4g
bV9zb3VyY2VSZWN0LndpZHRoKCkgKiBtX3NvdXJjZVJlY3QuaGVpZ2h0KCkpKSB7Ci0gICAgICAg
IGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjciwgcmVjdCwgdG9wTGVmdFJhZGl1cywgdG9w
UmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzLCBjb250ZXh0
LT5nZXRBbHBoYSgpKTsKKyAgICAgICAgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnRl
eHQsIHJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVz
LCBib3R0b21SaWdodFJhZGl1cywgY29udGV4dC0+Z2V0QWxwaGEoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
LmNwcAppbmRleCAwZDkyYWRhNTA4YjFhZDY4MDdiMjM4NzViMGJmNzM1MTIzNjZmNzk5Li43YTk4
NDVjMTBlMWJmMGY4YTAxOWNlODEyMzQwYzllMWJhNDdkNzVjIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBAIC04NiwxMSArODYsMTEgQEAgc3Rh
dGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY2Fpcm9fdCogY29udGV4dCwKICAgICBjYWlyb190ZXh0X2V4dGVudHNfdCBleHRlbnRzOwog
ICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoZm9udC0+cGxhdGZvcm1EYXRhKCku
c2NhbGVkRm9udCgpLCBnbHlwaHMsIG51bUdseXBocywgJmV4dGVudHMpOwogICAgIEZsb2F0UmVj
dCBmb250RXh0ZW50c1JlY3QocG9pbnQueCgpLCBwb2ludC55KCkgLSBleHRlbnRzLmhlaWdodCwg
ZXh0ZW50cy53aWR0aCwgZXh0ZW50cy5oZWlnaHQpOwotICAgIGNhaXJvX3QqIHNoYWRvd0NvbnRl
eHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoY29udGV4dCwgZm9udEV4dGVudHNSZWN0KTsK
KyAgICBjYWlyb190KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGdy
YXBoaWNzQ29udGV4dCwgZm9udEV4dGVudHNSZWN0KTsKICAgICBpZiAoc2hhZG93Q29udGV4dCkg
ewogICAgICAgICBwcmVwYXJlQ29udGV4dEZvckdseXBoRHJhd2luZyhzaGFkb3dDb250ZXh0LCBm
b250LCBwb2ludCk7CiAgICAgICAgIGRyYXdHbHlwaHNUb0NvbnRleHQoc2hhZG93Q29udGV4dCwg
Zm9udCwgZ2x5cGhzLCBudW1HbHlwaHMpOwotICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVy
KGNvbnRleHQpOworICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKGdyYXBoaWNzQ29udGV4
dCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDU4ODVlYTliNzk1YTFhZWMxNTFj
NTFlYWZkZWFmZTc0OTlkNTg2OTguLmE3ODNlMmJiYTJmYzk5YzMxY2I0MmU4NzViYjc5NDZjMzEz
YTMxZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUGF0aERyYXdp
bmdTdHlsZSBkcmEKICAgICAgICAgc29saWRGaWd1cmVFeHRlbnRzLnVuaXRlKGZpbGxFeHRlbnRz
KTsKICAgICB9CiAKLSAgICBjYWlyb190KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LT5iZWdpblNo
YWRvd0xheWVyKGNhaXJvQ29udGV4dCwgc29saWRGaWd1cmVFeHRlbnRzKTsKKyAgICBjYWlyb190
KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGNvbnRleHQsIHNvbGlk
RmlndXJlRXh0ZW50cyk7CiAgICAgaWYgKCFzaGFkb3dDb250ZXh0KQogICAgICAgICByZXR1cm47
CiAKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3co
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBQYXRoRHJhd2luZ1N0eWxlIGRyYQogICAgIGlmIChk
cmF3aW5nU3R5bGUgJiBTdHJva2UpCiAgICAgICAgIHNldFBsYXRmb3JtU3Ryb2tlKGNvbnRleHQs
IHNoYWRvd0NvbnRleHQpOwogCi0gICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihjYWlyb0NvbnRl
eHQpOworICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY29udGV4dCk7CiB9CiAKIHN0YXRpYyB2
b2lkIGZpbGxDdXJyZW50Q2Fpcm9QYXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY2Fpcm9f
dCogY2Fpcm9Db250ZXh0KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUNhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VDYWlyby5jcHAKaW5kZXggMGFjMzk1NTg5MThhZTdiNTJlZmIxOWU1NDJmYWI5YWEzOWEwOTRi
Ni4uZTUxZDY1YTNmZGQxZjU5NjUxMmM1OTRmZmU5YTA3OWU2MjI3M2UwMCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC0xMzgsMTMgKzEz
OCwxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgIENvbnRleHRTaGFkb3cqIHNoYWRv
dyA9IGNvbnRleHQtPmNvbnRleHRTaGFkb3coKTsKICAgICBBU1NFUlQoc2hhZG93KTsKICAgICBp
ZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Tm9TaGFkb3cpIHsKLSAgICAgICAg
Y2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjciwgZHN0
UmVjdCk7CisgICAgICAgIGNhaXJvX3QqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2luU2hh
ZG93TGF5ZXIoY29udGV4dCwgZHN0UmVjdCk7CiAgICAgICAgIGlmIChzaGFkb3dDb250ZXh0KSB7
CiAgICAgICAgICAgICBjYWlyb190cmFuc2xhdGUoc2hhZG93Q29udGV4dCwgZHN0UmVjdC54KCks
IGRzdFJlY3QueSgpKTsKICAgICAgICAgICAgIGNhaXJvX3NldF9zb3VyY2Uoc2hhZG93Q29udGV4
dCwgcGF0dGVybik7CiAgICAgICAgICAgICBjYWlyb19yZWN0YW5nbGUoc2hhZG93Q29udGV4dCwg
MCwgMCwgZHN0UmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpKTsKICAgICAgICAgICAgIGNh
aXJvX2ZpbGwoc2hhZG93Q29udGV4dCk7Ci0gICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xh
eWVyKGNyKTsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY29udGV4dCk7CiAg
ICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL0ZvbnRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5j
cHAKaW5kZXggZWFiZDkxMzRlNjBkMGQ4MGYwNDE3OGQ0MmMxNWJiM2MyYjc1MWI5YS4uODdmY2Nj
OGE4M2FjZGZjMDU3MjRiMmIwNDQ3ODdiNWQ1ZmI2YzQ5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvRm9udEd0ay5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgdm9pZCBk
cmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjYWlyb190
KiBjb250ZXh0LAogCiAgICAgRmxvYXRSZWN0IGV4dGVudHMoZ2V0UGFuZ29SZWdpb25FeHRlbnRz
KHJlbmRlclJlZ2lvbikpOwogICAgIGV4dGVudHMuc2V0TG9jYXRpb24oRmxvYXRQb2ludChwb2lu
dC54KCksIHBvaW50LnkoKSAtIGV4dGVudHMuaGVpZ2h0KCkpKTsKLSAgICBjYWlyb190KiBzaGFk
b3dDb250ZXh0ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGNvbnRleHQsIGV4dGVudHMpOwor
ICAgIGNhaXJvX3QqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoZ3Jh
cGhpY3NDb250ZXh0LCBleHRlbnRzKTsKICAgICBpZiAoc2hhZG93Q29udGV4dCkgewogICAgICAg
ICBjYWlyb190cmFuc2xhdGUoc2hhZG93Q29udGV4dCwgcG9pbnQueCgpLCBwb2ludC55KCkpOwog
ICAgICAgICBwYW5nb19jYWlyb19zaG93X2xheW91dF9saW5lKHNoYWRvd0NvbnRleHQsIGxheW91
dExpbmUpOwpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3co
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNhaXJvX3QqIGNvbnRleHQsCiAgICAg
ICAgIGNhaXJvX2NsaXAoY29udGV4dCk7CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjb250ZXh0
LCAtdG90YWxPZmZzZXQueCgpLCAtdG90YWxPZmZzZXQueSgpKTsKIAotICAgICAgICBzaGFkb3ct
PmVuZFNoYWRvd0xheWVyKGNvbnRleHQpOworICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVy
KGdyYXBoaWNzQ29udGV4dCk7CiAgICAgICAgIGNhaXJvX3Jlc3RvcmUoY29udGV4dCk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hh
ZG93UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQu
Y3BwCmluZGV4IGUwZTc0MjIyNTQwZjViNmZiZWZmY2Y0ZmM2YjQ1MDdiZWEzMzI0NWIuLjgzNGNh
NjJiOGNjZmJjNWQyMDNhZWZmODM3ZTNmY2U3OTU4ZWMxZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAKQEAgLTI4LDYgKzI4LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb250ZXh0U2hhZG93LmgiCiAKKyNpbmNs
dWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlIDxRUGFpbnRlcj4KICNpbmNsdWRlIDxRVGltZXJFdmVudD4KIApAQCAtMTAwLDE5ICsx
MDIsMTQgQEAgdm9pZCBTaGFkb3dCdWZmZXI6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqIGV2ZW50
KQogICAgIFFPYmplY3Q6OnRpbWVyRXZlbnQoZXZlbnQpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0g
Q29udGV4dFNoYWRvdzo6Z2V0VHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4dChQbGF0Zm9y
bUNvbnRleHQgY29udGV4dCkKLXsKLSAgICBjb25zdCBRVHJhbnNmb3JtJiB0cmFuc2Zvcm0gPSBj
b250ZXh0LT50cmFuc2Zvcm0oKTsKLSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKHRyYW5zZm9y
bS5tMTEoKSwgdHJhbnNmb3JtLm0xMigpLCB0cmFuc2Zvcm0ubTIxKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFuc2Zvcm0ubTIyKCksIHRyYW5zZm9ybS5keCgpLCB0cmFuc2Zvcm0u
ZHkoKSk7Ci19Ci0KIFFfR0xPQkFMX1NUQVRJQyhTaGFkb3dCdWZmZXIsIHNjcmF0Y2hTaGFkb3dC
dWZmZXIpCiAKLVBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVy
KFBsYXRmb3JtQ29udGV4dCBwLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKK1BsYXRmb3Jt
Q29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpCiB7CiAgICAgLy8gU2V0IG1fYmx1
ckRpc3RhbmNlLgotICAgIGFkanVzdEJsdXJEaXN0YW5jZShwKTsKKyAgICBhZGp1c3RCbHVyRGlz
dGFuY2UoY29udGV4dCk7CisKKyAgICBQbGF0Zm9ybUNvbnRleHQgcCA9IGNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpOwogCiAgICAgUVJlY3QgY2xpcFJlY3Q7CiAgICAgaWYgKHAtPmhhc0NsaXBw
aW5nKCkpCkBAIC0xMjYsNyArMTIzLDcgQEAgUGxhdGZvcm1Db250ZXh0IENvbnRleHRTaGFkb3c6
OmJlZ2luU2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0IHAsIGNvbnN0IEZsb2F0UmUKIAogICAg
IC8vIFNldCBtX2xheWVyT3JpZ2luLCBtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uLCBtX3NvdXJj
ZVJlY3QuCiAgICAgSW50UmVjdCBjbGlwKGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlw
UmVjdC53aWR0aCgpLCBjbGlwUmVjdC5oZWlnaHQoKSk7Ci0gICAgSW50UmVjdCBsYXllclJlY3Qg
PSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChwLCBsYXllckFyZWEsIGNsaXApOworICAgIElu
dFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29udGV4dCwgbGF5
ZXJBcmVhLCBjbGlwKTsKIAogICAgIC8vIERvbid0IHBhaW50IGlmIHdlIGFyZSB0b3RhbGx5IG91
dHNpZGUgdGhlIGNsaXAgcmVnaW9uLgogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQpAQCAt
MTQzLDcgKzE0MCw3IEBAIFBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRv
d0xheWVyKFBsYXRmb3JtQ29udGV4dCBwLCBjb25zdCBGbG9hdFJlCiAgICAgcmV0dXJuIG1fbGF5
ZXJDb250ZXh0OwogfQogCi12b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKFBsYXRm
b3JtQ29udGV4dCBwKQordm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgbV9sYXllckNvbnRleHQtPmVuZCgpOwogICAgIGRl
bGV0ZSBtX2xheWVyQ29udGV4dDsKQEAgLTE2Miw3ICsxNTksNyBAQCB2b2lkIENvbnRleHRTaGFk
b3c6OmVuZFNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBwKQogICAgICAgICBwLmVuZCgpOwog
ICAgIH0KIAotICAgIHAtPmRyYXdJbWFnZShtX2xheWVyT3JpZ2luLCBtX2xheWVySW1hZ2UsIG1f
c291cmNlUmVjdCk7CisgICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdJbWFnZSht
X2xheWVyT3JpZ2luLCBtX2xheWVySW1hZ2UsIG1fc291cmNlUmVjdCk7CiAKICAgICBzY3JhdGNo
U2hhZG93QnVmZmVyKCktPnNjaGVkdWxlUHVyZ2UoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvRm9udFF0LmNwcAppbmRleCAxMzFhZTkzYzI4NDg4M2E5NWFjZDYwZGFhMzQ5NmMyNWUz
MTcwYWYyLi45NjlhMmFhNWFkODY3MzAxOTBiZTViZWUyYTc1NTEwODgxYzkwYjhhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwCkBAIC0xNDYsMjAgKzE0NiwyMCBAQCBz
dGF0aWMgdm9pZCBkcmF3VGV4dENvbW1vbihHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBGbG9hdAogCiAgICAgICAgICAgICBpZiAoY3R4U2hhZG93LT5tX3R5
cGUgIT0gQ29udGV4dFNoYWRvdzo6Tm9TaGFkb3cpIHsKICAgICAgICAgICAgICAgICBDb250ZXh0
U2hhZG93KiBjdHhTaGFkb3cgPSBjdHgtPmNvbnRleHRTaGFkb3coKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIWN0eFNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3cocCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIWN0eFNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3coY3R4KSkgewogICAgICAg
ICAgICAgICAgICAgICBwLT5zYXZlKCk7CiAgICAgICAgICAgICAgICAgICAgIHAtPnNldFBlbihj
dHhTaGFkb3ctPm1fY29sb3IpOwogICAgICAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUoY3R4
U2hhZG93LT5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGxpbmUuZHJhdyhwLCBwdCk7
CiAgICAgICAgICAgICAgICAgICAgIHAtPnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IGN0eFNo
YWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBib3VuZGluZ1JlY3QpOworICAgICAgICAgICAgICAg
ICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IGN0eFNoYWRvdy0+YmVnaW5TaGFkb3dMYXll
cihjdHgsIGJvdW5kaW5nUmVjdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzaGFkb3dQYWlu
dGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSBpdCB3aWxsIGJlIGJsdXJy
ZWQgYW55d2F5LCB3ZSBkb24ndCBjYXJlIGFib3V0IHJlbmRlciBoaW50cy4KICAgICAgICAgICAg
ICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldEZvbnQocC0+Zm9udCgpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldFBlbihjdHhTaGFkb3ctPm1fY29sb3Ip
OwogICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5kcmF3KHNoYWRvd1BhaW50ZXIsIHB0KTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGN0eFNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjdHhTaGFkb3ctPmVuZFNoYWRvd0xheWVyKGN0eCk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBA
IC0yMDQsMTMgKzIwNCwxMyBAQCBzdGF0aWMgdm9pZCBkcmF3VGV4dENvbW1vbihHcmFwaGljc0Nv
bnRleHQqIGN0eCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdAogI2Vsc2UKICAgICAg
ICAgICAgICAgICBRUmVjdEYgYm91bmRpbmdSZWN0KHB0LngoKSwgcG9pbnQueSgpIC0gZm0uYXNj
ZW50KCksIGZtLndpZHRoKHN0cmluZyksIGZtLmhlaWdodCgpKTsKICNlbmRpZgotICAgICAgICAg
ICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gY3R4U2hhZG93LT5iZWdpblNoYWRvd0xh
eWVyKHAsIGJvdW5kaW5nUmVjdCk7CisgICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1Bh
aW50ZXIgPSBjdHhTaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoY3R4LCBib3VuZGluZ1JlY3QpOwog
ICAgICAgICAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIFNpbmNlIGl0IHdpbGwgYmUgYmx1cnJlZCBhbnl3YXksIHdlIGRvbid0IGNhcmUgYWJvdXQg
cmVuZGVyIGhpbnRzLgogICAgICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRGb250
KHAtPmZvbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldFBlbihj
dHhTaGFkb3ctPm1fY29sb3IpOwogICAgICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5k
cmF3VGV4dChwdCwgc3RyaW5nLCBmbGFncywgcnVuLnBhZGRpbmcoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGN0eFNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CisgICAgICAgICAgICAgICAgICAg
IGN0eFNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY3R4KTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoY3R4LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRl
eHRNb2RlU3Ryb2tlKSB7CkBAIC0yMjUsMTIgKzIyNSwxMiBAQCBzdGF0aWMgdm9pZCBkcmF3VGV4
dENvbW1vbihHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBG
bG9hdAogI2Vsc2UKICAgICAgICAgICAgICAgICBRUmVjdEYgYm91bmRpbmdSZWN0KHB0LngoKSwg
cG9pbnQueSgpIC0gZm0uYXNjZW50KCksIGZtLndpZHRoKHN0cmluZyksIGZtLmhlaWdodCgpKTsK
ICNlbmRpZgotICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gY3R4U2hh
ZG93LT5iZWdpblNoYWRvd0xheWVyKHAsIGJvdW5kaW5nUmVjdCk7CisgICAgICAgICAgICAgICAg
UVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBjdHhTaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoY3R4
LCBib3VuZGluZ1JlY3QpOwogICAgICAgICAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIGl0IHdpbGwgYmUgYmx1cnJlZCBhbnl3YXksIHdl
IGRvbid0IGNhcmUgYWJvdXQgcmVuZGVyIGhpbnRzLgogICAgICAgICAgICAgICAgICAgICBzaGFk
b3dQYWludGVyLT5zZXRGb250KHAtPmZvbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgIHNoYWRv
d1BhaW50ZXItPnN0cm9rZVBhdGgodGV4dFN0cm9rZVBhdGgsIFFQZW4oY3R4U2hhZG93LT5tX2Nv
bG9yKSk7Ci0gICAgICAgICAgICAgICAgICAgIGN0eFNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7
CisgICAgICAgICAgICAgICAgICAgIGN0eFNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY3R4KTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXggMGNmNmYy
MjMwNDQyYTY2ZDlkZDY4NzQ0Y2QwNzIxZTFmNDUxZjQwYS4uOGVjYjY2Njk2MjVjNzlmMmQ2NzBm
MTk1M2FhNDRmNzcxMGMzMGYwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKQEAgLTUxMCwxMyArNTEwLDEzIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgaWYgKG1fZGF0
YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4
dFNoYWRvdygpOwotICAgICAgICBpZiAoc2hhZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhwKSB8
fCBtX3N0YXRlLmZpbGxQYXR0ZXJuIHx8IG1fc3RhdGUuZmlsbEdyYWRpZW50KQorICAgICAgICBp
ZiAoc2hhZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyh0aGlzKSB8fCBtX3N0YXRlLmZpbGxQYXR0
ZXJuIHx8IG1fc3RhdGUuZmlsbEdyYWRpZW50KQogICAgICAgICB7Ci0gICAgICAgICAgICBRUGFp
bnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBwbGF0Zm9y
bVBhdGguY29udHJvbFBvaW50UmVjdCgpKTsKKyAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQ
YWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIHBsYXRmb3JtUGF0aC5jb250
cm9sUG9pbnRSZWN0KCkpOwogICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAg
ICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNv
bXBvc2l0aW9uTW9kZV9Tb3VyY2UpOwogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZp
bGxQYXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKLSAg
ICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOworICAgICAgICAgICAgICAg
IHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIodGhpcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7CkBA
IC01NDgsMTUgKzU0OCwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25z
dCBQYXRoJiBwYXRoKQogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAg
Q29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotICAgICAgICBpZiAoc2hh
ZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhwKSB8fCBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gfHwg
bV9zdGF0ZS5zdHJva2VHcmFkaWVudCkKKyAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRl
eHRTaGFkb3codGhpcykgfHwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuIHx8IG1fc3RhdGUuc3Ryb2tl
R3JhZGllbnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3Qg
PSBwbGF0Zm9ybVBhdGguY29udHJvbFBvaW50UmVjdCgpOwogICAgICAgICAgICAgYm91bmRpbmdS
ZWN0LmluZmxhdGUocGVuLm1pdGVyTGltaXQoKSArIHBlbi53aWR0aEYoKSk7Ci0gICAgICAgICAg
ICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBi
b3VuZGluZ1JlY3QpOworICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFk
b3ctPmJlZ2luU2hhZG93TGF5ZXIodGhpcywgYm91bmRpbmdSZWN0KTsKICAgICAgICAgICAgIGlm
IChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0T3Bh
Y2l0eShzdGF0aWNfY2FzdDxxcmVhbD4obV9kYXRhLT5zaGFkb3cubV9jb2xvci5hbHBoYSgpKSAv
IDI1NSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c3Ryb2tlUGF0aChwbGF0Zm9y
bVBhdGgsIHBlbik7Ci0gICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsK
KyAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHRoaXMpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUVBlbiBzaGFkb3dQZW4ocGVuKTsK
QEAgLTY2MywzMyArNjYzLDMzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBhZmZpbmU7CiAgICAg
ICAgIFFCcnVzaCBicnVzaChtX3N0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRl
cm4oYWZmaW5lKSk7CiAgICAgICAgIFFQaXhtYXAqIGltYWdlID0gbV9zdGF0ZS5maWxsUGF0dGVy
bi0+dGlsZUltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIFFQ
YWludGVyKiBzaGFkb3dQYWludGVyID0gbV9kYXRhLT5oYXNTaGFkb3coKSA/IHNoYWRvdy0+YmVn
aW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCkgOiAwOworICAgICAgICBRUGFpbnRlciog
c2hhZG93UGFpbnRlciA9IG1fZGF0YS0+aGFzU2hhZG93KCkgPyBzaGFkb3ctPmJlZ2luU2hhZG93
TGF5ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpIDogMDsKICAgICAgICAgaWYgKHNoYWRvd1BhaW50
ZXIpIHsKICAgICAgICAgICAgIGRyYXdSZXBlYXRQYXR0ZXJuKHNoYWRvd1BhaW50ZXIsIGltYWdl
LCBub3JtYWxpemVkUmVjdCwgbV9zdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WCgpLCBtX3N0YXRl
LmZpbGxQYXR0ZXJuLT5yZXBlYXRZKCkpOwogICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0
Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlSW4pOwogICAg
ICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHNoYWRvdy0+
bV9jb2xvcik7Ci0gICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOworICAgICAg
ICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcih0aGlzKTsKICAgICAgICAgfQogICAgICAgICBk
cmF3UmVwZWF0UGF0dGVybihwLCBpbWFnZSwgbm9ybWFsaXplZFJlY3QsIG1fc3RhdGUuZmlsbFBh
dHRlcm4tPnJlcGVhdFgoKSwgbV9zdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WSgpKTsKICAgICB9
IGVsc2UgaWYgKG1fc3RhdGUuZmlsbEdyYWRpZW50KSB7CiAgICAgICAgIFFCcnVzaCBicnVzaCgq
bV9zdGF0ZS5maWxsR3JhZGllbnQtPnBsYXRmb3JtR3JhZGllbnQoKSk7CiAgICAgICAgIGJydXNo
LnNldFRyYW5zZm9ybShtX3N0YXRlLmZpbGxHcmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9y
bSgpKTsKLSAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBtX2RhdGEtPmhhc1NoYWRv
dygpID8gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHAsIG5vcm1hbGl6ZWRSZWN0KSA6IDA7Cisg
ICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gbV9kYXRhLT5oYXNTaGFkb3coKSA/IHNo
YWRvdy0+YmVnaW5TaGFkb3dMYXllcih0aGlzLCBub3JtYWxpemVkUmVjdCkgOiAwOwogICAgICAg
ICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJl
Y3Qobm9ybWFsaXplZFJlY3QsIGJydXNoKTsKICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNl
dENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZUluKTsKICAg
ICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBzaGFkb3ct
Pm1fY29sb3IpOwotICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsKKyAgICAg
ICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIodGhpcyk7CiAgICAgICAgIH0KICAgICAgICAg
cC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIGJydXNoKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewotICAgICAgICAgICAgaWYgKHNoYWRvdy0+bXVz
dFVzZUNvbnRleHRTaGFkb3cocCkpIHsKLSAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93
UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7Cisg
ICAgICAgICAgICBpZiAoc2hhZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyh0aGlzKSkgeworICAg
ICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRv
d0xheWVyKHRoaXMsIG5vcm1hbGl6ZWRSZWN0KTsKICAgICAgICAgICAgICAgICBpZiAoc2hhZG93
UGFpbnRlcikgewogICAgICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRPcGFjaXR5
KHN0YXRpY19jYXN0PHFyZWFsPihzaGFkb3ctPm1fY29sb3IuYWxwaGEoKSkgLyAyNTUpOwogICAg
ICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwg
cC0+YnJ1c2goKSk7Ci0gICAgICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIo
cCk7CisgICAgICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIodGhpcyk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAv
LyBTb2xpZCByZWN0YW5nbGUgZmlsbCB3aXRoIG5vIGJsdXIgc2hhZG93IG9yIHRyYW5zZm9ybWF0
aW9ucyBhcHBsaWVkIGNhbiBiZSBkb25lCkBAIC03MTYsMTIgKzcxNiwxMiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYg
Y29sb3IsIENvbG9yUwogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAg
Q29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotICAgICAgICBpZiAoc2hh
ZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhwKSkgewotICAgICAgICAgICAgUVBhaW50ZXIqIHNo
YWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgbm9ybWFsaXplZFJlY3Qp
OworICAgICAgICBpZiAoc2hhZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyh0aGlzKSkgeworICAg
ICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5
ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpOwogICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIp
IHsKICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBh
aW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2UpOwogICAgICAgICAgICAgICAgIHNoYWRvd1Bh
aW50ZXItPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBzaGFkb3ctPm1fY29sb3IpOwotICAgICAg
ICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CisgICAgICAgICAgICAgICAgc2hh
ZG93LT5lbmRTaGFkb3dMYXllcih0aGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRv
dy0+b2Zmc2V0KCkpLCBzaGFkb3ctPm1fY29sb3IpOwpAQCAtNzQwLDEyICs3NDAsMTIgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBJbnRTaXplJiB0b3BMZWYKICAgICBRUGFpbnRlciogcCA9IG1fZGF0YS0+cCgpOwogICAg
IGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRv
dyA9IGNvbnRleHRTaGFkb3coKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRT
aGFkb3cocCkpIHsKLSAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93
LT5iZWdpblNoYWRvd0xheWVyKHAsIHJlY3QpOworICAgICAgICBpZiAoc2hhZG93LT5tdXN0VXNl
Q29udGV4dFNoYWRvdyh0aGlzKSkgeworICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50
ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIodGhpcywgcmVjdCk7CiAgICAgICAgICAgICBp
ZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENv
bXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAg
ICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNv
bG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKLSAgICAgICAgICAgICAgICBzaGFkb3ctPmVu
ZFNoYWRvd0xheWVyKHApOworICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIo
dGhpcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwLT50
cmFuc2xhdGUobV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvSW1hZ2VRdC5jcHAKaW5kZXggZjcxM2QzNzNlNzBlMDcwMzA0NDg3M2Q1MWYwZTUyZjQ1
OGUyMjY5MC4uNDlhZmQyOWY3NGFiMWY0OWY3MWJmOTc3YzlhOGJiNmZjZDJiNGI1YyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCkBAIC0yMDksMTEgKzIwOSwxMSBA
QCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkc3QsCiAKICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBjdHh0LT5jb250ZXh0
U2hhZG93KCk7CiAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6Ok5vU2hh
ZG93KSB7Ci0gICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNo
YWRvd0xheWVyKHBhaW50ZXIsIG5vcm1hbGl6ZWREc3QpOworICAgICAgICBRUGFpbnRlciogc2hh
ZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjdHh0LCBub3JtYWxpemVkRHN0
KTsKICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgIHNoYWRvd1BhaW50
ZXItPnNldE9wYWNpdHkoc3RhdGljX2Nhc3Q8cXJlYWw+KHNoYWRvdy0+bV9jb2xvci5hbHBoYSgp
KSAvIDI1NSk7CiAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5kcmF3UGl4bWFwKG5vcm1hbGl6
ZWREc3QsICppbWFnZSwgbm9ybWFsaXplZFNyYyk7Ci0gICAgICAgICAgICBzaGFkb3ctPmVuZFNo
YWRvd0xheWVyKHBhaW50ZXIpOworICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihj
dHh0KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9TdGlsbEltYWdlUXQuY3BwCmluZGV4IDUxYzk0OTllZjc5NjQzY2ZhMmY4NGYzMWI5OWJiYjRj
YTJmOTAwN2EuLjNiMDg5OTU4Y2E3M2Q1ZjI1OGUxZTQzNzY4NTdiNTA4NmE2NWRlNzQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKQEAgLTc0LDE5
ICs3NCwxNyBAQCB2b2lkIFN0aWxsSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdCwKICAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJh
dG9yID0gY3R4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCk7CiAgICAgY3R4dC0+c2V0Q29tcG9zaXRl
T3BlcmF0aW9uKG9wKTsKIAotICAgIFFQYWludGVyKiBwYWludGVyID0gY3R4dC0+cGxhdGZvcm1D
b250ZXh0KCk7Ci0KICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBjdHh0LT5jb250ZXh0U2hh
ZG93KCk7CiAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6Ok5vU2hhZG93
KSB7Ci0gICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRv
d0xheWVyKHBhaW50ZXIsIG5vcm1hbGl6ZWREc3QpOworICAgICAgICBRUGFpbnRlciogc2hhZG93
UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjdHh0LCBub3JtYWxpemVkRHN0KTsK
ICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXIt
PnNldE9wYWNpdHkoc3RhdGljX2Nhc3Q8cXJlYWw+KHNoYWRvdy0+bV9jb2xvci5hbHBoYSgpKSAv
IDI1NSk7CiAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5kcmF3UGl4bWFwKG5vcm1hbGl6ZWRE
c3QsICptX3BpeG1hcCwgbm9ybWFsaXplZFNyYyk7Ci0gICAgICAgICAgICBzaGFkb3ctPmVuZFNo
YWRvd0xheWVyKHBhaW50ZXIpOworICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihj
dHh0KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHBhaW50ZXItPmRyYXdQaXhtYXAobm9ybWFs
aXplZERzdCwgKm1fcGl4bWFwLCBub3JtYWxpemVkU3JjKTsKKyAgICBjdHh0LT5wbGF0Zm9ybUNv
bnRleHQoKS0+ZHJhd1BpeG1hcChub3JtYWxpemVkRHN0LCAqbV9waXhtYXAsIG5vcm1hbGl6ZWRT
cmMpOwogICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsK
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77794</attachid>
            <date>2011-01-03 00:45:06 -0800</date>
            <delta_ts>2011-01-03 00:54:46 -0800</delta_ts>
            <desc>Attept to fix Cairo-based build</desc>
            <filename>bug-51799-20110103004505.patch</filename>
            <type>text/plain</type>
            <size>31608</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmZiYTBlYTQwYjdjOWI3YmI0ZDJjOGUyZjBkOTcxNWUxZmMwYTcwZi4uMDk2YjI5ZjVhMmM2MmU2
OGY2NTcxY2E5MTI2Mjg5Yzc5ZGY1ZmZhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMS0wMS0wMiAgSGVs
ZGVyIENvcnJlaWEgIDxoZWxkZXJAc2VuY2hhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb250ZXh0U2hhZG93IGNhbiBhdm9pZCBjb2RlIGR1
cGxpY2F0aW9uIGZvciBnZXR0aW5nIHRoZSBDVE0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNzk5CisKKyAgICAgICAgQ29udGV4dFNoYWRvdyBkZWZp
bmVzIGl0cyBvd24gZ2V0VHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4dCgpCisgICAgICAg
IHdoaWNoIGRvZXMgZXhhY3RseSB0aGUgc2FtZSBhcyBHcmFwaGljc0NvbnRleHQ6OmdldENUTSgp
LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzOiBmYXN0L2NhbnZhcy9jYW52YXMqc2hhZG93Kmh0
bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6bXVzdFVzZUNvbnRleHRTaGFkb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6YWRqdXN0Qmx1ckRpc3RhbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGV4dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0dseXBoc1NoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2d0ay9Gb250R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFk
b3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJh
d1RleHRDb21tb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdGlsbEltYWdlOjpkcmF3KToKKwogMjAxMS0wMS0wMSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hh
ZG93LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAKaW5k
ZXggOTVhYWQ0NjljMzljNzhjM2Q4ZTQ1ZjkxZTQ1YWY1ODVjNDQ4OGYyOC4uNzYzZTU5NTQ3YTE5
ZTgzZGJlZGI2ODFmYTc1YWQ4NGNiY2Y4ODg5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbnRleHRTaGFkb3cuY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ29udGV4dFNoYWRvdy5oIgogCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTgxLDcgKzgzLDcgQEAgdm9pZCBDb250ZXh0U2hh
ZG93OjpjbGVhcigpCiAgICAgbV9vZmZzZXQgPSBGbG9hdFNpemUoKTsKIH0KIAotYm9vbCBDb250
ZXh0U2hhZG93OjptdXN0VXNlQ29udGV4dFNoYWRvdyhQbGF0Zm9ybUNvbnRleHQgY29udGV4dCkK
K2Jvb2wgQ29udGV4dFNoYWRvdzo6bXVzdFVzZUNvbnRleHRTaGFkb3coR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KQogewogICAgIC8vIFdlIGNhbid0IGF2b2lkIENvbnRleHRTaGFkb3csIHNpbmNl
IHRoZSBzaGFkb3cgaGFzIGJsdXIuCiAgICAgaWYgKG1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpC
bHVyU2hhZG93KQpAQCAtOTEsOCArOTMsNyBAQCBib29sIENvbnRleHRTaGFkb3c6Om11c3RVc2VD
b250ZXh0U2hhZG93KFBsYXRmb3JtQ29udGV4dCBjb250ZXh0KQogICAgIGlmICghc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIFdlIGNhbiBh
dm9pZCBDb250ZXh0U2hhZG93LCBzaW5jZSB0aGVyZSBhcmUgbm8gdHJhbnNmb3JtYXRpb25zIHRv
IGFwcGx5IHRvIHRoZSBjYW52YXMuCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9y
bShnZXRUcmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KGNvbnRleHQpKTsKLSAgICBpZiAo
dHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKKyAgICBpZiAoY29udGV4dC0+Z2V0Q1RNKCkuaXNJZGVu
dGl0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gT3RoZXJ3aXNlLCBubyBjaGFu
Y2UgYXZvaWRpbmcgQ29udGV4dFNoYWRvdy4KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3MCwxNSAr
MTcxLDE1IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6Ymx1ckxheWVySW1hZ2UodW5zaWduZWQgY2hh
ciogaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBzaXplCiAgICAgfQogfQogCi12b2lkIENvbnRl
eHRTaGFkb3c6OmFkanVzdEJsdXJEaXN0YW5jZShjb25zdCBQbGF0Zm9ybUNvbnRleHQgY29udGV4
dCkKK3ZvaWQgQ29udGV4dFNoYWRvdzo6YWRqdXN0Qmx1ckRpc3RhbmNlKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKIHsKLSAgICAvLyBBZGp1c3QgYmx1ciBpZiB3ZSdyZSBzY2FsaW5nLCBzaW5j
ZSB0aGUgcmFkaXVzIG11c3Qgbm90IGJlIGFmZmVjdGVkIGJ5IHRyYW5zZm9ybWF0aW9ucy4KLSAg
ICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtKGdldFRyYW5zZm9ybWF0aW9uTWF0cml4
RnJvbUNvbnRleHQoY29udGV4dCkpOworICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zv
cm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKIAorICAgIC8vIEFkanVzdCBibHVyIGlmIHdlJ3JlIHNj
YWxpbmcsIHNpbmNlIHRoZSByYWRpdXMgbXVzdCBub3QgYmUgYWZmZWN0ZWQgYnkgdHJhbnNmb3Jt
YXRpb25zLgogICAgIGlmICh0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICAvLyBDYWxjdWxhbGUgdHJhbnNmb3JtZWQgdW5pdCB2ZWN0b3JzLgorICAgIC8vIENh
bGN1bGF0ZSB0cmFuc2Zvcm1lZCB1bml0IHZlY3RvcnMuCiAgICAgY29uc3QgRmxvYXRRdWFkIHVu
aXRRdWFkKEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMSwgMCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQoMCwgMSksIEZsb2F0UG9pbnQoMSwgMSkpOwogICAg
IGNvbnN0IEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFVuaXRRdWFkID0gdHJhbnNmb3JtLm1hcFF1YWQo
dW5pdFF1YWQpOwpAQCAtMTk4LDEzICsxOTksMTMgQEAgdm9pZCBDb250ZXh0U2hhZG93OjphZGp1
c3RCbHVyRGlzdGFuY2UoY29uc3QgUGxhdGZvcm1Db250ZXh0IGNvbnRleHQpCiAgICAgbV9ibHVy
RGlzdGFuY2UgPSByb3VuZGYoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYmx1ckRpc3RhbmNlKSAvIHNj
YWxlKTsKIH0KIAotSW50UmVjdCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5n
UmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXll
ckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorSW50UmVjdCBDb250ZXh0U2hhZG93Ojpj
YWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICAv
LyBDYWxjdWxhdGUgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBibHVycmVkIGFuZC9vciB0cmFuc2Zv
cm1lZCBsYXllci4KICAgICBGbG9hdFJlY3QgbGF5ZXJGbG9hdFJlY3Q7CiAgICAgZmxvYXQgaW5m
bGF0aW9uID0gMDsKIAotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0oZ2V0VHJh
bnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4dChjb250ZXh0KSk7CisgICAgY29uc3QgQWZmaW5l
VHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOwogICAgIGlmIChtX3NoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zICYmICF0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7CiAgICAgICAg
IEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFBvbHlnb24gPSB0cmFuc2Zvcm0ubWFwUXVhZChGbG9hdFF1
YWQobGF5ZXJBcmVhKSk7CiAgICAgICAgIHRyYW5zZm9ybWVkUG9seWdvbi5tb3ZlKG1fb2Zmc2V0
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmgKaW5kZXggZTVlNWE4
ZTUyNmYyODNiODcxNjljZjQ4NjFjNGZmNWQyOTc1NzRkYy4uYTFmYmE1YzgyYTE0MzYwYWE1NmE0
NDcyYzE5N2IzMWMyMWY4YjQ2NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db250ZXh0U2hhZG93LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0
U2hhZG93LmgKQEAgLTI5LDEwICsyOSw4IEBACiAjaWZuZGVmIENvbnRleHRTaGFkb3dfaAogI2Rl
ZmluZSBDb250ZXh0U2hhZG93X2gKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2lu
Y2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlJlZkNvdW50ZWQu
aCIKIApAQCAtNDgsNiArNDYsOSBAQCBRVF9FTkRfTkFNRVNQQUNFCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3MgR3JhcGhpY3NDb250ZXh0Owor
CiAjaWYgUExBVEZPUk0oQ0FJUk8pCiB0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogUGxhdGZvcm1J
bWFnZTsKIHR5cGVkZWYgY2Fpcm9fdCogUGxhdGZvcm1Db250ZXh0OwpAQCAtODIsNyArODMsNyBA
QCBwdWJsaWM6CiAgICAgQ29udGV4dFNoYWRvdygpOwogICAgIENvbnRleHRTaGFkb3coY29uc3Qg
Q29sb3ImLCBmbG9hdCByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KTsKIAotICAgIGJv
b2wgbXVzdFVzZUNvbnRleHRTaGFkb3coUGxhdGZvcm1Db250ZXh0KTsKKyAgICBib29sIG11c3RV
c2VDb250ZXh0U2hhZG93KEdyYXBoaWNzQ29udGV4dCopOwogICAgIHZvaWQgY2xlYXIoKTsKIAog
ICAgIC8vIFRoZSBwYWlyIGJlZ2luU2hhZG93TGF5ZXIgYW5kIGVuZFNoYWRvd0xheWVyIGNyZWF0
ZXMgYSB0ZW1wb3JhcnkgaW1hZ2UKQEAgLTEwNywxMCArMTA4LDkgQEAgcHVibGljOgogICAgIC8v
IG9yaWdpbmFsIGNvbnRleHQuIElmIGJsdXIgcmFkaXVzIGlzIHNwZWNpZmllZCwgdGhlIHNoYWRv
dyB3aWxsIGJlCiAgICAgLy8gZmlsdGVyZWQgZmlyc3QuCiAKLSAgICBQbGF0Zm9ybUNvbnRleHQg
YmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJB
cmVhKTsKLSAgICB2b2lkIGVuZFNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCk7CisgICAgUGxh
dGZvcm1Db250ZXh0IGJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiBsYXllckFyZWEpOworICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250
ZXh0Kik7CiAgICAgc3RhdGljIHZvaWQgcHVyZ2VTY3JhdGNoQnVmZmVyKCk7Ci0gICAgc3RhdGlj
IEFmZmluZVRyYW5zZm9ybSBnZXRUcmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KFBsYXRm
b3JtQ29udGV4dCk7CiAKICAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wg
ZW5hYmxlKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBlbmFibGU7IH0KICAgICBib29s
IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtczsgfQpAQCAtMTI5LDEyICsxMjksMTIgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBv
aW50IG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb247IC8vIFRyYW5zbGF0aW9uIHRvIGFwcGx5IHRv
IG1fbGF5ZXJDb250ZXh0IGZvciB0aGUgc2hhZG93IHRvIGJlIGNvcnJlY3RseSBjbGlwcGVkLgog
ICAgIGJvb2wgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKIAotICAgIHZvaWQgYWRqdXN0Qmx1
ckRpc3RhbmNlKGNvbnN0IFBsYXRmb3JtQ29udGV4dCk7CisgICAgdm9pZCBhZGp1c3RCbHVyRGlz
dGFuY2UoR3JhcGhpY3NDb250ZXh0Kik7CiAgICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25l
ZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBpbnQgc3RyaWRlKTsKLSAgICBJbnRS
ZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKyAgICBJ
bnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAKICNpZiBQ
TEFURk9STShDQUlSTykKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhQbGF0
Zm9ybUNvbnRleHQgY29udGV4dCwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgSW50
U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0
IEludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0UmFk
aXVzLCBmbG9hdCBhbHBoYSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgSW50U2l6
ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IElu
dFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVz
LCBmbG9hdCBhbHBoYSk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcAppbmRleCBjNTJjYzNhOTBi
Y2ZlMTU2NWRiM2RmZTU4OWYzNzFjZGU1ZDBjYWU2Li45ZTA3ZjM2YWRhNWQ1ODU4NTRlY2U2NDY2
MWE3ZmRhNThmODkyNmYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGV4dFNoYWRvdy5oIgogCisjaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJPd25QdHJDYWlyby5oIgogI2luY2x1ZGUgIlBh
dGguaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtODEsMjAgKzgzLDEyIEBAIHN0YXRpYyBjYWly
b19zdXJmYWNlX3QqIGdldFNjcmF0Y2hCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBy
ZXR1cm4gc2NyYXRjaEJ1ZmZlcjsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIENvbnRleHRTaGFkb3c6
OmdldFRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbUNvbnRleHQoUGxhdGZvcm1Db250ZXh0IGNvbnRl
eHQpCi17Ci0gICAgY2Fpcm9fbWF0cml4X3QgdHJhbnNmb3JtOwotICAgIGNhaXJvX2dldF9tYXRy
aXgoY29udGV4dCwgJnRyYW5zZm9ybSk7Ci0gICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSh0cmFu
c2Zvcm0ueHgsIHRyYW5zZm9ybS55eCwgdHJhbnNmb3JtLnh5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHJhbnNmb3JtLnl5LCB0cmFuc2Zvcm0ueDAsIHRyYW5zZm9ybS55MCk7Ci19Ci0K
LVBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3Jt
Q29udGV4dCBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKK1BsYXRmb3JtQ29u
dGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpCiB7CiAgICAgYWRqdXN0Qmx1ckRpc3Rh
bmNlKGNvbnRleHQpOwogCiAgICAgZG91YmxlIHgxLCB4MiwgeTEsIHkyOwotICAgIGNhaXJvX2Ns
aXBfZXh0ZW50cyhjb250ZXh0LCAmeDEsICZ5MSwgJngyLCAmeTIpOworICAgIGNhaXJvX2NsaXBf
ZXh0ZW50cyhjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgJngxLCAmeTEsICZ4MiwgJnkyKTsK
ICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnRl
eHQsIGxheWVyQXJlYSwgSW50UmVjdCh4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEpKTsKIAogICAg
IC8vIERvbid0IHBhaW50IGlmIHdlIGFyZSB0b3RhbGx5IG91dHNpZGUgdGhlIGNsaXAgcmVnaW9u
LgpAQCAtMTEzLDcgKzEwNyw3IEBAIFBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdp
blNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBGCiAgICAgcmV0dXJu
IG1fbGF5ZXJDb250ZXh0OwogfQogCi12b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVy
KGNhaXJvX3QqIGNyKQordm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgY2Fpcm9fZGVzdHJveShtX2xheWVyQ29udGV4dCk7
CiAgICAgbV9sYXllckNvbnRleHQgPSAwOwpAQCAtMTI2LDYgKzEyMCw3IEBAIHZvaWQgQ29udGV4
dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIoY2Fpcm9fdCogY3IpCiAgICAgICAgIGNhaXJvX3N1cmZh
Y2VfbWFya19kaXJ0eShtX2xheWVySW1hZ2UpOwogICAgIH0KIAorICAgIGNhaXJvX3QqIGNyID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgc2V0
U291cmNlUkdCQUZyb21Db2xvcihjciwgbV9jb2xvcik7CiAgICAgY2Fpcm9fbWFza19zdXJmYWNl
KGNyLCBtX2xheWVySW1hZ2UsIG1fbGF5ZXJPcmlnaW4ueCgpLCBtX2xheWVyT3JpZ2luLnkoKSk7
CkBAIC0xMzUsNyArMTMwLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihj
YWlyb190KiBjcikKICAgICBzY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lk
IENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhQbGF0Zm9ybUNvbnRl
eHQgY29udGV4dCwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgSW50U2l6ZSYgdG9w
TGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEludFNpemUm
IGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzLCBmbG9h
dCBhbHBoYSkKK3ZvaWQgQ29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5n
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29u
c3QgSW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMs
IGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJp
Z2h0UmFkaXVzLCBmbG9hdCBhbHBoYSkKIHsKICAgICBiZWdpblNoYWRvd0xheWVyKGNvbnRleHQs
IHNoYWRvd1JlY3QpOwogCkBAIC0yMjksMTAgKzIyNCwxMCBAQCB2b2lkIENvbnRleHRTaGFkb3c6
OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYg
cmVjdAogICAgIC8vIFJlZHVjZSB0aGUgc2l6ZSBvZiB3aGF0IHdlIGhhdmUgdG8gZHJhdyB3aXRo
IHRoZSBjbGlwIGFyZWEuCiAgICAgZG91YmxlIHgxLCB4MiwgeTEsIHkyOwogICAgIGNhaXJvX2Ns
aXBfZXh0ZW50cyhjciwgJngxLCAmeTEsICZ4MiwgJnkyKTsKLSAgICBjYWxjdWxhdGVMYXllckJv
dW5kaW5nUmVjdChjciwgc2hhZG93UmVjdCwgSW50UmVjdCh4MSwgeTEsIHgyIC0geDEsIHkyIC0g
eTEpKTsKKyAgICBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBzaGFkb3dSZWN0
LCBJbnRSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkpOwogCiAgICAgaWYgKChzaGFkb3dU
ZW1wbGF0ZVNpemUud2lkdGgoKSAqIHNoYWRvd1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IG1fc291
cmNlUmVjdC53aWR0aCgpICogbV9zb3VyY2VSZWN0LmhlaWdodCgpKSkgewotICAgICAgICBkcmF3
UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoY3IsIHJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0
UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cywgY29udGV4dC0+Z2V0
QWxwaGEoKSk7CisgICAgICAgIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjb250ZXh0LCBy
ZWN0LCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90
dG9tUmlnaHRSYWRpdXMsIGNvbnRleHQtPmdldEFscGhhKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAK
aW5kZXggMGQ5MmFkYTUwOGIxYWQ2ODA3YjIzODc1YjBiZjczNTEyMzY2Zjc5OS4uMmQ3OTQ5OTgw
MjRjMDdhNDEzZWZmMDU0ZmU0Y2EwODUyN2IzZWY4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgdm9p
ZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjYWly
b190KiBjb250ZXh0LAogICAgIGlmICghKGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2Rl
KCkgJiBUZXh0TW9kZUZpbGwpIHx8IHNoYWRvdy0+bV90eXBlID09IENvbnRleHRTaGFkb3c6Ok5v
U2hhZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXNoYWRvdy0+bXVzdFVzZUNvbnRl
eHRTaGFkb3coY29udGV4dCkpIHsKKyAgICBpZiAoIXNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFk
b3coZ3JhcGhpY3NDb250ZXh0KSkgewogICAgICAgICAvLyBPcHRpbWl6ZSBub24tYmx1cnJ5IHNo
YWRvd3MsIGJ5IGp1c3QgZHJhd2luZyB0ZXh0IHdpdGhvdXQgdGhlIENvbnRleHRTaGFkb3cuCiAg
ICAgICAgIGNhaXJvX3NhdmUoY29udGV4dCk7CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjb250
ZXh0LCBzaGFkb3ctPm1fb2Zmc2V0LndpZHRoKCksIHNoYWRvdy0+bV9vZmZzZXQuaGVpZ2h0KCkp
OwpAQCAtODYsMTEgKzg2LDExIEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNhaXJvX3QqIGNvbnRleHQsCiAgICAgY2Fpcm9f
dGV4dF9leHRlbnRzX3QgZXh0ZW50czsKICAgICBjYWlyb19zY2FsZWRfZm9udF9nbHlwaF9leHRl
bnRzKGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSwgZ2x5cGhzLCBudW1HbHlwaHMs
ICZleHRlbnRzKTsKICAgICBGbG9hdFJlY3QgZm9udEV4dGVudHNSZWN0KHBvaW50LngoKSwgcG9p
bnQueSgpIC0gZXh0ZW50cy5oZWlnaHQsIGV4dGVudHMud2lkdGgsIGV4dGVudHMuaGVpZ2h0KTsK
LSAgICBjYWlyb190KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGNv
bnRleHQsIGZvbnRFeHRlbnRzUmVjdCk7CisgICAgY2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNo
YWRvdy0+YmVnaW5TaGFkb3dMYXllcihncmFwaGljc0NvbnRleHQsIGZvbnRFeHRlbnRzUmVjdCk7
CiAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKICAgICAgICAgcHJlcGFyZUNvbnRleHRGb3JHbHlw
aERyYXdpbmcoc2hhZG93Q29udGV4dCwgZm9udCwgcG9pbnQpOwogICAgICAgICBkcmF3R2x5cGhz
VG9Db250ZXh0KHNoYWRvd0NvbnRleHQsIGZvbnQsIGdseXBocywgbnVtR2x5cGhzKTsKLSAgICAg
ICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihjb250ZXh0KTsKKyAgICAgICAgc2hhZG93LT5lbmRT
aGFkb3dMYXllcihncmFwaGljc0NvbnRleHQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApp
bmRleCA1ODg1ZWE5Yjc5NWExYWVjMTUxYzUxZWFmZGVhZmU3NDk5ZDU4Njk4Li5hNzgzZTJiYmEy
ZmM5OWMzMWNiNDJlODc1YmI3OTQ2YzMxM2EzMWY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTY1
LDcgKzE2NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUgZHJhCiAgICAgICAgIHNvbGlkRmlndXJl
RXh0ZW50cy51bml0ZShmaWxsRXh0ZW50cyk7CiAgICAgfQogCi0gICAgY2Fpcm9fdCogc2hhZG93
Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjYWlyb0NvbnRleHQsIHNvbGlkRmln
dXJlRXh0ZW50cyk7CisgICAgY2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5T
aGFkb3dMYXllcihjb250ZXh0LCBzb2xpZEZpZ3VyZUV4dGVudHMpOwogICAgIGlmICghc2hhZG93
Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUGF0aERy
YXdpbmdTdHlsZSBkcmEKICAgICBpZiAoZHJhd2luZ1N0eWxlICYgU3Ryb2tlKQogICAgICAgICBz
ZXRQbGF0Zm9ybVN0cm9rZShjb250ZXh0LCBzaGFkb3dDb250ZXh0KTsKIAotICAgIHNoYWRvdy0+
ZW5kU2hhZG93TGF5ZXIoY2Fpcm9Db250ZXh0KTsKKyAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVy
KGNvbnRleHQpOwogfQogCiBzdGF0aWMgdm9pZCBmaWxsQ3VycmVudENhaXJvUGF0aChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNhaXJvX3QqIGNhaXJvQ29udGV4dCkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDBhYzM5NTU4OTE4YWU3
YjUyZWZiMTllNTQyZmFiOWFhMzlhMDk0YjYuLmU1MWQ2NWEzZmRkMWY1OTY1MTJjNTk0ZmZlOWEw
NzllNjIyNzNlMDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUNhaXJvLmNwcApAQCAtMTM4LDEzICsxMzgsMTMgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8K
ICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0LT5jb250ZXh0U2hhZG93KCk7CiAg
ICAgQVNTRVJUKHNoYWRvdyk7CiAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFk
b3c6Ok5vU2hhZG93KSB7Ci0gICAgICAgIGNhaXJvX3QqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ct
PmJlZ2luU2hhZG93TGF5ZXIoY3IsIGRzdFJlY3QpOworICAgICAgICBjYWlyb190KiBzaGFkb3dD
b250ZXh0ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGNvbnRleHQsIGRzdFJlY3QpOwogICAg
ICAgICBpZiAoc2hhZG93Q29udGV4dCkgewogICAgICAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKHNo
YWRvd0NvbnRleHQsIGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CiAgICAgICAgICAgICBjYWly
b19zZXRfc291cmNlKHNoYWRvd0NvbnRleHQsIHBhdHRlcm4pOwogICAgICAgICAgICAgY2Fpcm9f
cmVjdGFuZ2xlKHNoYWRvd0NvbnRleHQsIDAsIDAsIGRzdFJlY3Qud2lkdGgoKSwgZHN0UmVjdC5o
ZWlnaHQoKSk7CiAgICAgICAgICAgICBjYWlyb19maWxsKHNoYWRvd0NvbnRleHQpOwotICAgICAg
ICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihjcik7CisgICAgICAgICAgICBzaGFkb3ctPmVu
ZFNoYWRvd0xheWVyKGNvbnRleHQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCmluZGV4IGVhYmQ5MTM0ZTYwZDBkODBmMDQxNzhk
NDJjMTViYjNjMmI3NTFiOWEuLjg3ZmNjYzhhODNhY2RmYzA1NzI0YjJiMDQ0Nzg3YjVkNWZiNmM0
OTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCkBAIC0yNDAs
NyArMjQwLDcgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgY2Fpcm9fdCogY29udGV4dCwKIAogICAgIEZsb2F0UmVjdCBleHRl
bnRzKGdldFBhbmdvUmVnaW9uRXh0ZW50cyhyZW5kZXJSZWdpb24pKTsKICAgICBleHRlbnRzLnNl
dExvY2F0aW9uKEZsb2F0UG9pbnQocG9pbnQueCgpLCBwb2ludC55KCkgLSBleHRlbnRzLmhlaWdo
dCgpKSk7Ci0gICAgY2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dM
YXllcihjb250ZXh0LCBleHRlbnRzKTsKKyAgICBjYWlyb190KiBzaGFkb3dDb250ZXh0ID0gc2hh
ZG93LT5iZWdpblNoYWRvd0xheWVyKGdyYXBoaWNzQ29udGV4dCwgZXh0ZW50cyk7CiAgICAgaWYg
KHNoYWRvd0NvbnRleHQpIHsKICAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0NvbnRleHQs
IHBvaW50LngoKSwgcG9pbnQueSgpKTsKICAgICAgICAgcGFuZ29fY2Fpcm9fc2hvd19sYXlvdXRf
bGluZShzaGFkb3dDb250ZXh0LCBsYXlvdXRMaW5lKTsKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGF0
aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjYWlyb190KiBjb250ZXh0LAogICAgICAgICBjYWlyb19jbGlwKGNvbnRleHQpOwogICAgICAg
ICBjYWlyb190cmFuc2xhdGUoY29udGV4dCwgLXRvdGFsT2Zmc2V0LngoKSwgLXRvdGFsT2Zmc2V0
LnkoKSk7CiAKLSAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihjb250ZXh0KTsKKyAgICAg
ICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihncmFwaGljc0NvbnRleHQpOwogICAgICAgICBjYWly
b19yZXN0b3JlKGNvbnRleHQpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcAppbmRleCBlMGU3NDIyMjU0MGY1YjZmYmVmZmNm
NGZjNmI0NTA3YmVhMzMyNDViLi44MzRjYTYyYjhjY2ZiYzVkMjAzYWVmZjgzN2UzZmNlNzk1OGVj
MWVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFk
b3dRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93
UXQuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q29udGV4dFNoYWRvdy5oIgogCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSA8UVBhaW50ZXI+CiAjaW5jbHVkZSA8UVRp
bWVyRXZlbnQ+CiAKQEAgLTEwMCwxOSArMTAyLDE0IEBAIHZvaWQgU2hhZG93QnVmZmVyOjp0aW1l
ckV2ZW50KFFUaW1lckV2ZW50KiBldmVudCkKICAgICBRT2JqZWN0Ojp0aW1lckV2ZW50KGV2ZW50
KTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIENvbnRleHRTaGFkb3c6OmdldFRyYW5zZm9ybWF0aW9u
TWF0cml4RnJvbUNvbnRleHQoUGxhdGZvcm1Db250ZXh0IGNvbnRleHQpCi17Ci0gICAgY29uc3Qg
UVRyYW5zZm9ybSYgdHJhbnNmb3JtID0gY29udGV4dC0+dHJhbnNmb3JtKCk7Ci0gICAgcmV0dXJu
IEFmZmluZVRyYW5zZm9ybSh0cmFuc2Zvcm0ubTExKCksIHRyYW5zZm9ybS5tMTIoKSwgdHJhbnNm
b3JtLm0yMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLm0yMigpLCB0
cmFuc2Zvcm0uZHgoKSwgdHJhbnNmb3JtLmR5KCkpOwotfQotCiBRX0dMT0JBTF9TVEFUSUMoU2hh
ZG93QnVmZmVyLCBzY3JhdGNoU2hhZG93QnVmZmVyKQogCi1QbGF0Zm9ybUNvbnRleHQgQ29udGV4
dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRS
ZWN0JiBsYXllckFyZWEpCitQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFk
b3dMYXllcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJB
cmVhKQogewogICAgIC8vIFNldCBtX2JsdXJEaXN0YW5jZS4KLSAgICBhZGp1c3RCbHVyRGlzdGFu
Y2UocCk7CisgICAgYWRqdXN0Qmx1ckRpc3RhbmNlKGNvbnRleHQpOworCisgICAgUGxhdGZvcm1D
b250ZXh0IHAgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKIAogICAgIFFSZWN0IGNsaXBS
ZWN0OwogICAgIGlmIChwLT5oYXNDbGlwcGluZygpKQpAQCAtMTI2LDcgKzEyMyw3IEBAIFBsYXRm
b3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4
dCBwLCBjb25zdCBGbG9hdFJlCiAKICAgICAvLyBTZXQgbV9sYXllck9yaWdpbiwgbV9sYXllckNv
bnRleHRUcmFuc2xhdGlvbiwgbV9zb3VyY2VSZWN0LgogICAgIEludFJlY3QgY2xpcChjbGlwUmVj
dC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkp
OwotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QocCwg
bGF5ZXJBcmVhLCBjbGlwKTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVy
Qm91bmRpbmdSZWN0KGNvbnRleHQsIGxheWVyQXJlYSwgY2xpcCk7CiAKICAgICAvLyBEb24ndCBw
YWludCBpZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbi4KICAgICBpZiAo
bGF5ZXJSZWN0LmlzRW1wdHkoKSkKQEAgLTE0Myw3ICsxNDAsNyBAQCBQbGF0Zm9ybUNvbnRleHQg
Q29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3Qg
RmxvYXRSZQogICAgIHJldHVybiBtX2xheWVyQ29udGV4dDsKIH0KIAotdm9pZCBDb250ZXh0U2hh
ZG93OjplbmRTaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCkKK3ZvaWQgQ29udGV4dFNoYWRv
dzo6ZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIG1fbGF5
ZXJDb250ZXh0LT5lbmQoKTsKICAgICBkZWxldGUgbV9sYXllckNvbnRleHQ7CkBAIC0xNjIsNyAr
MTU5LDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRl
eHQgcCkKICAgICAgICAgcC5lbmQoKTsKICAgICB9CiAKLSAgICBwLT5kcmF3SW1hZ2UobV9sYXll
ck9yaWdpbiwgbV9sYXllckltYWdlLCBtX3NvdXJjZVJlY3QpOworICAgIGNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5kcmF3SW1hZ2UobV9sYXllck9yaWdpbiwgbV9sYXllckltYWdlLCBtX3Nv
dXJjZVJlY3QpOwogCiAgICAgc2NyYXRjaFNoYWRvd0J1ZmZlcigpLT5zY2hlZHVsZVB1cmdlKCk7
CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAKaW5kZXggMTMxYWU5M2My
ODQ4ODNhOTVhY2Q2MGRhYTM0OTZjMjVlMzE3MGFmMi4uOTY5YTJhYTVhZDg2NzMwMTkwYmU1YmVl
MmE3NTUxMDg4MWM5MGI4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9Gb250UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNw
cApAQCAtMTQ2LDIwICsxNDYsMjAgQEAgc3RhdGljIHZvaWQgZHJhd1RleHRDb21tb24oR3JhcGhp
Y3NDb250ZXh0KiBjdHgsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXQKIAogICAgICAg
ICAgICAgaWYgKGN0eFNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6Ok5vU2hhZG93KSB7
CiAgICAgICAgICAgICAgICAgQ29udGV4dFNoYWRvdyogY3R4U2hhZG93ID0gY3R4LT5jb250ZXh0
U2hhZG93KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjdHhTaGFkb3ctPm11c3RVc2VDb250ZXh0
U2hhZG93KHApKSB7CisgICAgICAgICAgICAgICAgaWYgKCFjdHhTaGFkb3ctPm11c3RVc2VDb250
ZXh0U2hhZG93KGN0eCkpIHsKICAgICAgICAgICAgICAgICAgICAgcC0+c2F2ZSgpOwogICAgICAg
ICAgICAgICAgICAgICBwLT5zZXRQZW4oY3R4U2hhZG93LT5tX2NvbG9yKTsKICAgICAgICAgICAg
ICAgICAgICAgcC0+dHJhbnNsYXRlKGN0eFNoYWRvdy0+b2Zmc2V0KCkpOwogICAgICAgICAgICAg
ICAgICAgICBsaW5lLmRyYXcocCwgcHQpOwogICAgICAgICAgICAgICAgICAgICBwLT5yZXN0b3Jl
KCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUVBhaW50
ZXIqIHNoYWRvd1BhaW50ZXIgPSBjdHhTaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgYm91bmRp
bmdSZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBj
dHhTaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoY3R4LCBib3VuZGluZ1JlY3QpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gU2luY2UgaXQgd2lsbCBiZSBibHVycmVkIGFueXdheSwgd2UgZG9uJ3QgY2FyZSBhYm91dCBy
ZW5kZXIgaGludHMuCiAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRG
b250KHAtPmZvbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5z
ZXRQZW4oY3R4U2hhZG93LT5tX2NvbG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUu
ZHJhdyhzaGFkb3dQYWludGVyLCBwdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjdHhTaGFk
b3ctPmVuZFNoYWRvd0xheWVyKHApOworICAgICAgICAgICAgICAgICAgICAgICAgY3R4U2hhZG93
LT5lbmRTaGFkb3dMYXllcihjdHgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjA0LDEzICsyMDQsMTMgQEAgc3RhdGljIHZvaWQg
ZHJhd1RleHRDb21tb24oR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QgRmxvYXQKICNlbHNlCiAgICAgICAgICAgICAgICAgUVJlY3RGIGJvdW5kaW5nUmVjdChw
dC54KCksIHBvaW50LnkoKSAtIGZtLmFzY2VudCgpLCBmbS53aWR0aChzdHJpbmcpLCBmbS5oZWln
aHQoKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9
IGN0eFNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBib3VuZGluZ1JlY3QpOworICAgICAgICAg
ICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gY3R4U2hhZG93LT5iZWdpblNoYWRvd0xh
eWVyKGN0eCwgYm91bmRpbmdSZWN0KTsKICAgICAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRl
cikgewogICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSBpdCB3aWxsIGJlIGJsdXJyZWQgYW55
d2F5LCB3ZSBkb24ndCBjYXJlIGFib3V0IHJlbmRlciBoaW50cy4KICAgICAgICAgICAgICAgICAg
ICAgc2hhZG93UGFpbnRlci0+c2V0Rm9udChwLT5mb250KCkpOwogICAgICAgICAgICAgICAgICAg
ICBzaGFkb3dQYWludGVyLT5zZXRQZW4oY3R4U2hhZG93LT5tX2NvbG9yKTsKICAgICAgICAgICAg
ICAgICAgICAgc2hhZG93UGFpbnRlci0+ZHJhd1RleHQocHQsIHN0cmluZywgZmxhZ3MsIHJ1bi5w
YWRkaW5nKCkpOwotICAgICAgICAgICAgICAgICAgICBjdHhTaGFkb3ctPmVuZFNoYWRvd0xheWVy
KHApOworICAgICAgICAgICAgICAgICAgICBjdHhTaGFkb3ctPmVuZFNoYWRvd0xheWVyKGN0eCk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGN0
eC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSkgewpAQCAtMjI1LDEyICsyMjUs
MTIgQEAgc3RhdGljIHZvaWQgZHJhd1RleHRDb21tb24oR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNv
bnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXQKICNlbHNlCiAgICAgICAgICAgICAgICAgUVJl
Y3RGIGJvdW5kaW5nUmVjdChwdC54KCksIHBvaW50LnkoKSAtIGZtLmFzY2VudCgpLCBmbS53aWR0
aChzdHJpbmcpLCBmbS5oZWlnaHQoKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBRUGFpbnRl
ciogc2hhZG93UGFpbnRlciA9IGN0eFNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBib3VuZGlu
Z1JlY3QpOworICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gY3R4U2hh
ZG93LT5iZWdpblNoYWRvd0xheWVyKGN0eCwgYm91bmRpbmdSZWN0KTsKICAgICAgICAgICAgICAg
ICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSBpdCB3
aWxsIGJlIGJsdXJyZWQgYW55d2F5LCB3ZSBkb24ndCBjYXJlIGFib3V0IHJlbmRlciBoaW50cy4K
ICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Rm9udChwLT5mb250KCkpOwog
ICAgICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zdHJva2VQYXRoKHRleHRTdHJva2VQ
YXRoLCBRUGVuKGN0eFNoYWRvdy0+bV9jb2xvcikpOwotICAgICAgICAgICAgICAgICAgICBjdHhT
aGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOworICAgICAgICAgICAgICAgICAgICBjdHhTaGFkb3ct
PmVuZFNoYWRvd0xheWVyKGN0eCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0UXQuY3BwCmluZGV4IDBjZjZmMjIzMDQ0MmE2NmQ5ZGQ2ODc0NGNkMDcyMWUxZjQ1MWY0
MGEuLjhlY2I2NjY5NjI1Yzc5ZjJkNjcwZjE5NTNhYTQ0Zjc3MTBjMzBmMDYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC01
MTAsMTMgKzUxMCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0
aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRl
eHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3coKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+
bXVzdFVzZUNvbnRleHRTaGFkb3cocCkgfHwgbV9zdGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0YXRl
LmZpbGxHcmFkaWVudCkKKyAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3co
dGhpcykgfHwgbV9zdGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0YXRlLmZpbGxHcmFkaWVudCkKICAg
ICAgICAgewotICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJl
Z2luU2hhZG93TGF5ZXIocCwgcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKSk7CisgICAg
ICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXll
cih0aGlzLCBwbGF0Zm9ybVBhdGguY29udHJvbFBvaW50UmVjdCgpKTsKICAgICAgICAgICAgIGlm
IChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Q29t
cG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKICAgICAgICAg
ICAgICAgICBzaGFkb3dQYWludGVyLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihtX2Rh
dGEtPnNoYWRvdy5tX2NvbG9yKSk7Ci0gICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dM
YXllcihwKTsKKyAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHRoaXMpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUVBvaW50RiBvZmZz
ZXQgPSBzaGFkb3ctPm9mZnNldCgpOwpAQCAtNTQ4LDE1ICs1NDgsMTUgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEt
Pmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRT
aGFkb3coKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3cocCkgfHwg
bV9zdGF0ZS5zdHJva2VQYXR0ZXJuIHx8IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpCisgICAgICAg
IGlmIChzaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KHRoaXMpIHx8IG1fc3RhdGUuc3Ryb2tl
UGF0dGVybiB8fCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50KQogICAgICAgICB7CiAgICAgICAgICAg
ICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3Qo
KTsKICAgICAgICAgICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRlckxpbWl0KCkgKyBw
ZW4ud2lkdGhGKCkpOwotICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFk
b3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKKyAgICAgICAgICAgIFFQYWlu
dGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIGJvdW5k
aW5nUmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAg
ICAgIHNoYWRvd1BhaW50ZXItPnNldE9wYWNpdHkoc3RhdGljX2Nhc3Q8cXJlYWw+KG1fZGF0YS0+
c2hhZG93Lm1fY29sb3IuYWxwaGEoKSkgLyAyNTUpOwogICAgICAgICAgICAgICAgIHNoYWRvd1Bh
aW50ZXItPnN0cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBwZW4pOwotICAgICAgICAgICAgICAgIHNo
YWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CisgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFk
b3dMYXllcih0aGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIFFQZW4gc2hhZG93UGVuKHBlbik7CkBAIC02NjMsMzMgKzY2MywzMyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBBZmZp
bmVUcmFuc2Zvcm0gYWZmaW5lOwogICAgICAgICBRQnJ1c2ggYnJ1c2gobV9zdGF0ZS5maWxsUGF0
dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGFmZmluZSkpOwogICAgICAgICBRUGl4bWFwKiBp
bWFnZSA9IG1fc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOwotICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IG1fZGF0YS0+
aGFzU2hhZG93KCkgPyBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgbm9ybWFsaXplZFJlY3Qp
IDogMDsKKyAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBtX2RhdGEtPmhhc1NoYWRv
dygpID8gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIG5vcm1hbGl6ZWRSZWN0KSA6IDA7
CiAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICBkcmF3UmVwZWF0UGF0
dGVybihzaGFkb3dQYWludGVyLCBpbWFnZSwgbm9ybWFsaXplZFJlY3QsIG1fc3RhdGUuZmlsbFBh
dHRlcm4tPnJlcGVhdFgoKSwgbV9zdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WSgpKTsKICAgICAg
ICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9z
aXRpb25Nb2RlX1NvdXJjZUluKTsKICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZpbGxSZWN0
KG5vcm1hbGl6ZWRSZWN0LCBzaGFkb3ctPm1fY29sb3IpOwotICAgICAgICAgICAgc2hhZG93LT5l
bmRTaGFkb3dMYXllcihwKTsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIodGhp
cyk7CiAgICAgICAgIH0KICAgICAgICAgZHJhd1JlcGVhdFBhdHRlcm4ocCwgaW1hZ2UsIG5vcm1h
bGl6ZWRSZWN0LCBtX3N0YXRlLmZpbGxQYXR0ZXJuLT5yZXBlYXRYKCksIG1fc3RhdGUuZmlsbFBh
dHRlcm4tPnJlcGVhdFkoKSk7CiAgICAgfSBlbHNlIGlmIChtX3N0YXRlLmZpbGxHcmFkaWVudCkg
ewogICAgICAgICBRQnJ1c2ggYnJ1c2goKm1fc3RhdGUuZmlsbEdyYWRpZW50LT5wbGF0Zm9ybUdy
YWRpZW50KCkpOwogICAgICAgICBicnVzaC5zZXRUcmFuc2Zvcm0obV9zdGF0ZS5maWxsR3JhZGll
bnQtPmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7Ci0gICAgICAgIFFQYWludGVyKiBzaGFkb3dQ
YWludGVyID0gbV9kYXRhLT5oYXNTaGFkb3coKSA/IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihw
LCBub3JtYWxpemVkUmVjdCkgOiAwOworICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9
IG1fZGF0YS0+aGFzU2hhZG93KCkgPyBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIodGhpcywgbm9y
bWFsaXplZFJlY3QpIDogMDsKICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAg
ICAgIHNoYWRvd1BhaW50ZXItPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBicnVzaCk7CiAgICAg
ICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBv
c2l0aW9uTW9kZV9Tb3VyY2VJbik7CiAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxsUmVj
dChub3JtYWxpemVkUmVjdCwgc2hhZG93LT5tX2NvbG9yKTsKLSAgICAgICAgICAgIHNoYWRvdy0+
ZW5kU2hhZG93TGF5ZXIocCk7CisgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHRo
aXMpOwogICAgICAgICB9CiAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBicnVz
aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKLSAg
ICAgICAgICAgIGlmIChzaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KHApKSB7Ci0gICAgICAg
ICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5
ZXIocCwgbm9ybWFsaXplZFJlY3QpOworICAgICAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNv
bnRleHRTaGFkb3codGhpcykpIHsKKyAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFp
bnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcih0aGlzLCBub3JtYWxpemVkUmVjdCk7CiAg
ICAgICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAg
c2hhZG93UGFpbnRlci0+c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5tX2Nv
bG9yLmFscGhhKCkpIC8gMjU1KTsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+
ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHAtPmJydXNoKCkpOwotICAgICAgICAgICAgICAgICAg
ICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOworICAgICAgICAgICAgICAgICAgICBzaGFkb3ct
PmVuZFNoYWRvd0xheWVyKHRoaXMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gU29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBi
bHVyIHNoYWRvdyBvciB0cmFuc2Zvcm1hdGlvbnMgYXBwbGllZCBjYW4gYmUgZG9uZQpAQCAtNzE2
LDEyICs3MTYsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclMKIAogICAgIGlmIChtX2RhdGEt
Pmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRT
aGFkb3coKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3cocCkpIHsK
LSAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRv
d0xheWVyKHAsIG5vcm1hbGl6ZWRSZWN0KTsKKyAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNv
bnRleHRTaGFkb3codGhpcykpIHsKKyAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVy
ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIG5vcm1hbGl6ZWRSZWN0KTsKICAgICAg
ICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRl
ci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsK
ICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwg
c2hhZG93LT5tX2NvbG9yKTsKLSAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVy
KHApOworICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIodGhpcyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFs
aXplZFJlY3QudHJhbnNsYXRlZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93LT5tX2NvbG9yKTsK
QEAgLTc0MCwxMiArNzQwLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmCiAgICAgUVBhaW50
ZXIqIHAgPSBtX2RhdGEtPnAoKTsKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAg
ICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0gICAgICAgIGlm
IChzaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KHApKSB7Ci0gICAgICAgICAgICBRUGFpbnRl
ciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCByZWN0KTsKKyAg
ICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3codGhpcykpIHsKKyAgICAgICAg
ICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHRo
aXMsIHJlY3QpOwogICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAg
ICAgICBzaGFkb3dQYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0
aW9uTW9kZV9Tb3VyY2UpOwogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZpbGxQYXRo
KHBhdGgucGxhdGZvcm1QYXRoKCksIFFDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKSk7Ci0g
ICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsKKyAgICAgICAgICAgICAg
ICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHRoaXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG1fZGF0YS0+c2hhZG93Lm9mZnNldCgp
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCmluZGV4IGY3MTNkMzcz
ZTcwZTA3MDMwNDQ4NzNkNTFmMGU1MmY0NThlMjI2OTAuLjQ5YWZkMjlmNzRhYjFmNDlmNzFiZjk3
N2M5YThiYjZmY2QyYjRiNWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvSW1hZ2VRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0
LmNwcApAQCAtMjA5LDExICsyMDksMTEgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAogCiAgICAgQ29udGV4dFNoYWRv
dyogc2hhZG93ID0gY3R4dC0+Y29udGV4dFNoYWRvdygpOwogICAgIGlmIChzaGFkb3ctPm1fdHlw
ZSAhPSBDb250ZXh0U2hhZG93OjpOb1NoYWRvdykgewotICAgICAgICBRUGFpbnRlciogc2hhZG93
UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwYWludGVyLCBub3JtYWxpemVkRHN0
KTsKKyAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93
TGF5ZXIoY3R4dCwgbm9ybWFsaXplZERzdCk7CiAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7
CiAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRPcGFjaXR5KHN0YXRpY19jYXN0PHFyZWFs
PihzaGFkb3ctPm1fY29sb3IuYWxwaGEoKSkgLyAyNTUpOwogICAgICAgICAgICAgc2hhZG93UGFp
bnRlci0+ZHJhd1BpeG1hcChub3JtYWxpemVkRHN0LCAqaW1hZ2UsIG5vcm1hbGl6ZWRTcmMpOwot
ICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwYWludGVyKTsKKyAgICAgICAgICAg
IHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY3R4dCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAppbmRleCA1MWM5NDk5
ZWY3OTY0M2NmYTJmODRmMzFiOTliYmI0Y2EyZjkwMDdhLi4zYjA4OTk1OGNhNzNkNWYyNThlMWU0
Mzc2ODU3YjUwODZhNjVkZTc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L1N0aWxsSW1hZ2VRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9T
dGlsbEltYWdlUXQuY3BwCkBAIC03NCwxOSArNzQsMTcgQEAgdm9pZCBTdGlsbEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCiAgICAgQ29tcG9z
aXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0eHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigp
OwogICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCk7CiAKLSAgICBRUGFpbnRlciog
cGFpbnRlciA9IGN0eHQtPnBsYXRmb3JtQ29udGV4dCgpOwotCiAgICAgQ29udGV4dFNoYWRvdyog
c2hhZG93ID0gY3R4dC0+Y29udGV4dFNoYWRvdygpOwogICAgIGlmIChzaGFkb3ctPm1fdHlwZSAh
PSBDb250ZXh0U2hhZG93OjpOb1NoYWRvdykgewotICAgICAgICBRUGFpbnRlciogc2hhZG93UGFp
bnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwYWludGVyLCBub3JtYWxpemVkRHN0KTsK
KyAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5
ZXIoY3R4dCwgbm9ybWFsaXplZERzdCk7CiAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAg
ICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRPcGFjaXR5KHN0YXRpY19jYXN0PHFyZWFsPihz
aGFkb3ctPm1fY29sb3IuYWxwaGEoKSkgLyAyNTUpOwogICAgICAgICAgICAgc2hhZG93UGFpbnRl
ci0+ZHJhd1BpeG1hcChub3JtYWxpemVkRHN0LCAqbV9waXhtYXAsIG5vcm1hbGl6ZWRTcmMpOwot
ICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwYWludGVyKTsKKyAgICAgICAgICAg
IHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY3R4dCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBw
YWludGVyLT5kcmF3UGl4bWFwKG5vcm1hbGl6ZWREc3QsICptX3BpeG1hcCwgbm9ybWFsaXplZFNy
Yyk7CisgICAgY3R4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdQaXhtYXAobm9ybWFsaXplZERz
dCwgKm1fcGl4bWFwLCBub3JtYWxpemVkU3JjKTsKICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVy
YXRpb24ocHJldmlvdXNPcGVyYXRvcik7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77795</attachid>
            <date>2011-01-03 00:54:50 -0800</date>
            <delta_ts>2011-01-03 16:48:24 -0800</delta_ts>
            <desc>Attempt 2 to fix Cairo-based build</desc>
            <filename>bug-51799-20110103005449.patch</filename>
            <type>text/plain</type>
            <size>32229</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmZiYTBlYTQwYjdjOWI3YmI0ZDJjOGUyZjBkOTcxNWUxZmMwYTcwZi4uMDk2YjI5ZjVhMmM2MmU2
OGY2NTcxY2E5MTI2Mjg5Yzc5ZGY1ZmZhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMS0wMS0wMiAgSGVs
ZGVyIENvcnJlaWEgIDxoZWxkZXJAc2VuY2hhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb250ZXh0U2hhZG93IGNhbiBhdm9pZCBjb2RlIGR1
cGxpY2F0aW9uIGZvciBnZXR0aW5nIHRoZSBDVE0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNzk5CisKKyAgICAgICAgQ29udGV4dFNoYWRvdyBkZWZp
bmVzIGl0cyBvd24gZ2V0VHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4dCgpCisgICAgICAg
IHdoaWNoIGRvZXMgZXhhY3RseSB0aGUgc2FtZSBhcyBHcmFwaGljc0NvbnRleHQ6OmdldENUTSgp
LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzOiBmYXN0L2NhbnZhcy9jYW52YXMqc2hhZG93Kmh0
bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6bXVzdFVzZUNvbnRleHRTaGFkb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6YWRqdXN0Qmx1ckRpc3RhbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGV4dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0dseXBoc1NoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2d0ay9Gb250R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFk
b3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJh
d1RleHRDb21tb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdGlsbEltYWdlOjpkcmF3KToKKwogMjAxMS0wMS0wMSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hh
ZG93LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAKaW5k
ZXggOTVhYWQ0NjljMzljNzhjM2Q4ZTQ1ZjkxZTQ1YWY1ODVjNDQ4OGYyOC4uNzYzZTU5NTQ3YTE5
ZTgzZGJlZGI2ODFmYTc1YWQ4NGNiY2Y4ODg5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbnRleHRTaGFkb3cuY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ29udGV4dFNoYWRvdy5oIgogCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTgxLDcgKzgzLDcgQEAgdm9pZCBDb250ZXh0U2hh
ZG93OjpjbGVhcigpCiAgICAgbV9vZmZzZXQgPSBGbG9hdFNpemUoKTsKIH0KIAotYm9vbCBDb250
ZXh0U2hhZG93OjptdXN0VXNlQ29udGV4dFNoYWRvdyhQbGF0Zm9ybUNvbnRleHQgY29udGV4dCkK
K2Jvb2wgQ29udGV4dFNoYWRvdzo6bXVzdFVzZUNvbnRleHRTaGFkb3coR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KQogewogICAgIC8vIFdlIGNhbid0IGF2b2lkIENvbnRleHRTaGFkb3csIHNpbmNl
IHRoZSBzaGFkb3cgaGFzIGJsdXIuCiAgICAgaWYgKG1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpC
bHVyU2hhZG93KQpAQCAtOTEsOCArOTMsNyBAQCBib29sIENvbnRleHRTaGFkb3c6Om11c3RVc2VD
b250ZXh0U2hhZG93KFBsYXRmb3JtQ29udGV4dCBjb250ZXh0KQogICAgIGlmICghc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIFdlIGNhbiBh
dm9pZCBDb250ZXh0U2hhZG93LCBzaW5jZSB0aGVyZSBhcmUgbm8gdHJhbnNmb3JtYXRpb25zIHRv
IGFwcGx5IHRvIHRoZSBjYW52YXMuCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9y
bShnZXRUcmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KGNvbnRleHQpKTsKLSAgICBpZiAo
dHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKKyAgICBpZiAoY29udGV4dC0+Z2V0Q1RNKCkuaXNJZGVu
dGl0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gT3RoZXJ3aXNlLCBubyBjaGFu
Y2UgYXZvaWRpbmcgQ29udGV4dFNoYWRvdy4KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3MCwxNSAr
MTcxLDE1IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6Ymx1ckxheWVySW1hZ2UodW5zaWduZWQgY2hh
ciogaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBzaXplCiAgICAgfQogfQogCi12b2lkIENvbnRl
eHRTaGFkb3c6OmFkanVzdEJsdXJEaXN0YW5jZShjb25zdCBQbGF0Zm9ybUNvbnRleHQgY29udGV4
dCkKK3ZvaWQgQ29udGV4dFNoYWRvdzo6YWRqdXN0Qmx1ckRpc3RhbmNlKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKIHsKLSAgICAvLyBBZGp1c3QgYmx1ciBpZiB3ZSdyZSBzY2FsaW5nLCBzaW5j
ZSB0aGUgcmFkaXVzIG11c3Qgbm90IGJlIGFmZmVjdGVkIGJ5IHRyYW5zZm9ybWF0aW9ucy4KLSAg
ICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtKGdldFRyYW5zZm9ybWF0aW9uTWF0cml4
RnJvbUNvbnRleHQoY29udGV4dCkpOworICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zv
cm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKIAorICAgIC8vIEFkanVzdCBibHVyIGlmIHdlJ3JlIHNj
YWxpbmcsIHNpbmNlIHRoZSByYWRpdXMgbXVzdCBub3QgYmUgYWZmZWN0ZWQgYnkgdHJhbnNmb3Jt
YXRpb25zLgogICAgIGlmICh0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICAvLyBDYWxjdWxhbGUgdHJhbnNmb3JtZWQgdW5pdCB2ZWN0b3JzLgorICAgIC8vIENh
bGN1bGF0ZSB0cmFuc2Zvcm1lZCB1bml0IHZlY3RvcnMuCiAgICAgY29uc3QgRmxvYXRRdWFkIHVu
aXRRdWFkKEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMSwgMCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQoMCwgMSksIEZsb2F0UG9pbnQoMSwgMSkpOwogICAg
IGNvbnN0IEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFVuaXRRdWFkID0gdHJhbnNmb3JtLm1hcFF1YWQo
dW5pdFF1YWQpOwpAQCAtMTk4LDEzICsxOTksMTMgQEAgdm9pZCBDb250ZXh0U2hhZG93OjphZGp1
c3RCbHVyRGlzdGFuY2UoY29uc3QgUGxhdGZvcm1Db250ZXh0IGNvbnRleHQpCiAgICAgbV9ibHVy
RGlzdGFuY2UgPSByb3VuZGYoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYmx1ckRpc3RhbmNlKSAvIHNj
YWxlKTsKIH0KIAotSW50UmVjdCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5n
UmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXll
ckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorSW50UmVjdCBDb250ZXh0U2hhZG93Ojpj
YWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICAv
LyBDYWxjdWxhdGUgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBibHVycmVkIGFuZC9vciB0cmFuc2Zv
cm1lZCBsYXllci4KICAgICBGbG9hdFJlY3QgbGF5ZXJGbG9hdFJlY3Q7CiAgICAgZmxvYXQgaW5m
bGF0aW9uID0gMDsKIAotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0oZ2V0VHJh
bnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4dChjb250ZXh0KSk7CisgICAgY29uc3QgQWZmaW5l
VHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOwogICAgIGlmIChtX3NoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zICYmICF0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7CiAgICAgICAg
IEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFBvbHlnb24gPSB0cmFuc2Zvcm0ubWFwUXVhZChGbG9hdFF1
YWQobGF5ZXJBcmVhKSk7CiAgICAgICAgIHRyYW5zZm9ybWVkUG9seWdvbi5tb3ZlKG1fb2Zmc2V0
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmgKaW5kZXggZTVlNWE4
ZTUyNmYyODNiODcxNjljZjQ4NjFjNGZmNWQyOTc1NzRkYy4uYTFmYmE1YzgyYTE0MzYwYWE1NmE0
NDcyYzE5N2IzMWMyMWY4YjQ2NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db250ZXh0U2hhZG93LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0
U2hhZG93LmgKQEAgLTI5LDEwICsyOSw4IEBACiAjaWZuZGVmIENvbnRleHRTaGFkb3dfaAogI2Rl
ZmluZSBDb250ZXh0U2hhZG93X2gKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2lu
Y2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlJlZkNvdW50ZWQu
aCIKIApAQCAtNDgsNiArNDYsOSBAQCBRVF9FTkRfTkFNRVNQQUNFCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3MgR3JhcGhpY3NDb250ZXh0Owor
CiAjaWYgUExBVEZPUk0oQ0FJUk8pCiB0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogUGxhdGZvcm1J
bWFnZTsKIHR5cGVkZWYgY2Fpcm9fdCogUGxhdGZvcm1Db250ZXh0OwpAQCAtODIsNyArODMsNyBA
QCBwdWJsaWM6CiAgICAgQ29udGV4dFNoYWRvdygpOwogICAgIENvbnRleHRTaGFkb3coY29uc3Qg
Q29sb3ImLCBmbG9hdCByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KTsKIAotICAgIGJv
b2wgbXVzdFVzZUNvbnRleHRTaGFkb3coUGxhdGZvcm1Db250ZXh0KTsKKyAgICBib29sIG11c3RV
c2VDb250ZXh0U2hhZG93KEdyYXBoaWNzQ29udGV4dCopOwogICAgIHZvaWQgY2xlYXIoKTsKIAog
ICAgIC8vIFRoZSBwYWlyIGJlZ2luU2hhZG93TGF5ZXIgYW5kIGVuZFNoYWRvd0xheWVyIGNyZWF0
ZXMgYSB0ZW1wb3JhcnkgaW1hZ2UKQEAgLTEwNywxMCArMTA4LDkgQEAgcHVibGljOgogICAgIC8v
IG9yaWdpbmFsIGNvbnRleHQuIElmIGJsdXIgcmFkaXVzIGlzIHNwZWNpZmllZCwgdGhlIHNoYWRv
dyB3aWxsIGJlCiAgICAgLy8gZmlsdGVyZWQgZmlyc3QuCiAKLSAgICBQbGF0Zm9ybUNvbnRleHQg
YmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJB
cmVhKTsKLSAgICB2b2lkIGVuZFNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCk7CisgICAgUGxh
dGZvcm1Db250ZXh0IGJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiBsYXllckFyZWEpOworICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250
ZXh0Kik7CiAgICAgc3RhdGljIHZvaWQgcHVyZ2VTY3JhdGNoQnVmZmVyKCk7Ci0gICAgc3RhdGlj
IEFmZmluZVRyYW5zZm9ybSBnZXRUcmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KFBsYXRm
b3JtQ29udGV4dCk7CiAKICAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wg
ZW5hYmxlKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBlbmFibGU7IH0KICAgICBib29s
IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtczsgfQpAQCAtMTI5LDEyICsxMjksMTIgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBv
aW50IG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb247IC8vIFRyYW5zbGF0aW9uIHRvIGFwcGx5IHRv
IG1fbGF5ZXJDb250ZXh0IGZvciB0aGUgc2hhZG93IHRvIGJlIGNvcnJlY3RseSBjbGlwcGVkLgog
ICAgIGJvb2wgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKIAotICAgIHZvaWQgYWRqdXN0Qmx1
ckRpc3RhbmNlKGNvbnN0IFBsYXRmb3JtQ29udGV4dCk7CisgICAgdm9pZCBhZGp1c3RCbHVyRGlz
dGFuY2UoR3JhcGhpY3NDb250ZXh0Kik7CiAgICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25l
ZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBpbnQgc3RyaWRlKTsKLSAgICBJbnRS
ZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKyAgICBJ
bnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAKICNpZiBQ
TEFURk9STShDQUlSTykKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhQbGF0
Zm9ybUNvbnRleHQgY29udGV4dCwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgSW50
U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0
IEludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0UmFk
aXVzLCBmbG9hdCBhbHBoYSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgSW50U2l6
ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IElu
dFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVz
LCBmbG9hdCBhbHBoYSk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcAppbmRleCBjNTJjYzNhOTBi
Y2ZlMTU2NWRiM2RmZTU4OWYzNzFjZGU1ZDBjYWU2Li5lOGVmMGM2MTRhMTdhMzBkNGIwYTliMzc0
YTc1ZGM3Yzc1MDIxYmJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGV4dFNoYWRvdy5oIgogCisjaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJPd25QdHJDYWlyby5oIgogI2luY2x1ZGUgIlBh
dGguaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtODEsMjAgKzgzLDEyIEBAIHN0YXRpYyBjYWly
b19zdXJmYWNlX3QqIGdldFNjcmF0Y2hCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBy
ZXR1cm4gc2NyYXRjaEJ1ZmZlcjsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIENvbnRleHRTaGFkb3c6
OmdldFRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbUNvbnRleHQoUGxhdGZvcm1Db250ZXh0IGNvbnRl
eHQpCi17Ci0gICAgY2Fpcm9fbWF0cml4X3QgdHJhbnNmb3JtOwotICAgIGNhaXJvX2dldF9tYXRy
aXgoY29udGV4dCwgJnRyYW5zZm9ybSk7Ci0gICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSh0cmFu
c2Zvcm0ueHgsIHRyYW5zZm9ybS55eCwgdHJhbnNmb3JtLnh5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHJhbnNmb3JtLnl5LCB0cmFuc2Zvcm0ueDAsIHRyYW5zZm9ybS55MCk7Ci19Ci0K
LVBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3Jt
Q29udGV4dCBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKK1BsYXRmb3JtQ29u
dGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpCiB7CiAgICAgYWRqdXN0Qmx1ckRpc3Rh
bmNlKGNvbnRleHQpOwogCiAgICAgZG91YmxlIHgxLCB4MiwgeTEsIHkyOwotICAgIGNhaXJvX2Ns
aXBfZXh0ZW50cyhjb250ZXh0LCAmeDEsICZ5MSwgJngyLCAmeTIpOworICAgIGNhaXJvX2NsaXBf
ZXh0ZW50cyhjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgJngxLCAmeTEsICZ4MiwgJnkyKTsK
ICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnRl
eHQsIGxheWVyQXJlYSwgSW50UmVjdCh4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEpKTsKIAogICAg
IC8vIERvbid0IHBhaW50IGlmIHdlIGFyZSB0b3RhbGx5IG91dHNpZGUgdGhlIGNsaXAgcmVnaW9u
LgpAQCAtMTEzLDcgKzEwNyw3IEBAIFBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdp
blNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBGCiAgICAgcmV0dXJu
IG1fbGF5ZXJDb250ZXh0OwogfQogCi12b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVy
KGNhaXJvX3QqIGNyKQordm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgY2Fpcm9fZGVzdHJveShtX2xheWVyQ29udGV4dCk7
CiAgICAgbV9sYXllckNvbnRleHQgPSAwOwpAQCAtMTI2LDYgKzEyMCw3IEBAIHZvaWQgQ29udGV4
dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIoY2Fpcm9fdCogY3IpCiAgICAgICAgIGNhaXJvX3N1cmZh
Y2VfbWFya19kaXJ0eShtX2xheWVySW1hZ2UpOwogICAgIH0KIAorICAgIGNhaXJvX3QqIGNyID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgc2V0
U291cmNlUkdCQUZyb21Db2xvcihjciwgbV9jb2xvcik7CiAgICAgY2Fpcm9fbWFza19zdXJmYWNl
KGNyLCBtX2xheWVySW1hZ2UsIG1fbGF5ZXJPcmlnaW4ueCgpLCBtX2xheWVyT3JpZ2luLnkoKSk7
CkBAIC0xMzUsNyArMTMwLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihj
YWlyb190KiBjcikKICAgICBzY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lk
IENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhQbGF0Zm9ybUNvbnRl
eHQgY29udGV4dCwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgSW50U2l6ZSYgdG9w
TGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEludFNpemUm
IGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzLCBmbG9h
dCBhbHBoYSkKK3ZvaWQgQ29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5n
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29u
c3QgSW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMs
IGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJp
Z2h0UmFkaXVzLCBmbG9hdCBhbHBoYSkKIHsKICAgICBiZWdpblNoYWRvd0xheWVyKGNvbnRleHQs
IHNoYWRvd1JlY3QpOwogCkBAIC0yMDEsNyArMTk2LDcgQEAgdm9pZCBDb250ZXh0U2hhZG93Ojpk
cmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJl
Y3QKICAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlm
ICgoIWNvbnRleHQtPmdldENUTSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkp
IHx8IChyYWRpdXNUd2ljZSA+IHJlY3Qud2lkdGgoKSkKICAgICAgICAgfHwgKHJhZGl1c1R3aWNl
ID4gcmVjdC5oZWlnaHQoKSkgfHwgKG1fdHlwZSAhPSBCbHVyU2hhZG93KSkgewotICAgICAgICBk
cmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoY3IsIHJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJp
Z2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cywgY29udGV4dC0+
Z2V0QWxwaGEoKSk7CisgICAgICAgIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjb250ZXh0
LCByZWN0LCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywg
Ym90dG9tUmlnaHRSYWRpdXMsIGNvbnRleHQtPmdldEFscGhhKCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0yMjksMTAgKzIyNCwxMCBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmRyYXdS
ZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdAog
ICAgIC8vIFJlZHVjZSB0aGUgc2l6ZSBvZiB3aGF0IHdlIGhhdmUgdG8gZHJhdyB3aXRoIHRoZSBj
bGlwIGFyZWEuCiAgICAgZG91YmxlIHgxLCB4MiwgeTEsIHkyOwogICAgIGNhaXJvX2NsaXBfZXh0
ZW50cyhjciwgJngxLCAmeTEsICZ4MiwgJnkyKTsKLSAgICBjYWxjdWxhdGVMYXllckJvdW5kaW5n
UmVjdChjciwgc2hhZG93UmVjdCwgSW50UmVjdCh4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEpKTsK
KyAgICBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBzaGFkb3dSZWN0LCBJbnRS
ZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkpOwogCiAgICAgaWYgKChzaGFkb3dUZW1wbGF0
ZVNpemUud2lkdGgoKSAqIHNoYWRvd1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IG1fc291cmNlUmVj
dC53aWR0aCgpICogbV9zb3VyY2VSZWN0LmhlaWdodCgpKSkgewotICAgICAgICBkcmF3UmVjdFNo
YWRvd1dpdGhvdXRUaWxpbmcoY3IsIHJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVz
LCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cywgY29udGV4dC0+Z2V0QWxwaGEo
KSk7CisgICAgICAgIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjb250ZXh0LCByZWN0LCB0
b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmln
aHRSYWRpdXMsIGNvbnRleHQtPmdldEFscGhhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKaW5kZXgg
MGQ5MmFkYTUwOGIxYWQ2ODA3YjIzODc1YjBiZjczNTEyMzY2Zjc5OS4uMmQ3OTQ5OTgwMjRjMDdh
NDEzZWZmMDU0ZmU0Y2EwODUyN2IzZWY4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBkcmF3
R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjYWlyb190KiBj
b250ZXh0LAogICAgIGlmICghKGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBU
ZXh0TW9kZUZpbGwpIHx8IHNoYWRvdy0+bV90eXBlID09IENvbnRleHRTaGFkb3c6Ok5vU2hhZG93
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFk
b3coY29udGV4dCkpIHsKKyAgICBpZiAoIXNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3coZ3Jh
cGhpY3NDb250ZXh0KSkgewogICAgICAgICAvLyBPcHRpbWl6ZSBub24tYmx1cnJ5IHNoYWRvd3Ms
IGJ5IGp1c3QgZHJhd2luZyB0ZXh0IHdpdGhvdXQgdGhlIENvbnRleHRTaGFkb3cuCiAgICAgICAg
IGNhaXJvX3NhdmUoY29udGV4dCk7CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjb250ZXh0LCBz
aGFkb3ctPm1fb2Zmc2V0LndpZHRoKCksIHNoYWRvdy0+bV9vZmZzZXQuaGVpZ2h0KCkpOwpAQCAt
ODYsMTEgKzg2LDExIEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsIGNhaXJvX3QqIGNvbnRleHQsCiAgICAgY2Fpcm9fdGV4dF9l
eHRlbnRzX3QgZXh0ZW50czsKICAgICBjYWlyb19zY2FsZWRfZm9udF9nbHlwaF9leHRlbnRzKGZv
bnQtPnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSwgZ2x5cGhzLCBudW1HbHlwaHMsICZleHRl
bnRzKTsKICAgICBGbG9hdFJlY3QgZm9udEV4dGVudHNSZWN0KHBvaW50LngoKSwgcG9pbnQueSgp
IC0gZXh0ZW50cy5oZWlnaHQsIGV4dGVudHMud2lkdGgsIGV4dGVudHMuaGVpZ2h0KTsKLSAgICBj
YWlyb190KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGNvbnRleHQs
IGZvbnRFeHRlbnRzUmVjdCk7CisgICAgY2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+
YmVnaW5TaGFkb3dMYXllcihncmFwaGljc0NvbnRleHQsIGZvbnRFeHRlbnRzUmVjdCk7CiAgICAg
aWYgKHNoYWRvd0NvbnRleHQpIHsKICAgICAgICAgcHJlcGFyZUNvbnRleHRGb3JHbHlwaERyYXdp
bmcoc2hhZG93Q29udGV4dCwgZm9udCwgcG9pbnQpOwogICAgICAgICBkcmF3R2x5cGhzVG9Db250
ZXh0KHNoYWRvd0NvbnRleHQsIGZvbnQsIGdseXBocywgbnVtR2x5cGhzKTsKLSAgICAgICAgc2hh
ZG93LT5lbmRTaGFkb3dMYXllcihjb250ZXh0KTsKKyAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dM
YXllcihncmFwaGljc0NvbnRleHQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCA1
ODg1ZWE5Yjc5NWExYWVjMTUxYzUxZWFmZGVhZmU3NDk5ZDU4Njk4Li5hNzgzZTJiYmEyZmM5OWMz
MWNiNDJlODc1YmI3OTQ2YzMxM2EzMWY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTY1LDcgKzE2
NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUgZHJhCiAgICAgICAgIHNvbGlkRmlndXJlRXh0ZW50
cy51bml0ZShmaWxsRXh0ZW50cyk7CiAgICAgfQogCi0gICAgY2Fpcm9fdCogc2hhZG93Q29udGV4
dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjYWlyb0NvbnRleHQsIHNvbGlkRmlndXJlRXh0
ZW50cyk7CisgICAgY2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dM
YXllcihjb250ZXh0LCBzb2xpZEZpZ3VyZUV4dGVudHMpOwogICAgIGlmICghc2hhZG93Q29udGV4
dCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUGF0aERyYXdpbmdT
dHlsZSBkcmEKICAgICBpZiAoZHJhd2luZ1N0eWxlICYgU3Ryb2tlKQogICAgICAgICBzZXRQbGF0
Zm9ybVN0cm9rZShjb250ZXh0LCBzaGFkb3dDb250ZXh0KTsKIAotICAgIHNoYWRvdy0+ZW5kU2hh
ZG93TGF5ZXIoY2Fpcm9Db250ZXh0KTsKKyAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKGNvbnRl
eHQpOwogfQogCiBzdGF0aWMgdm9pZCBmaWxsQ3VycmVudENhaXJvUGF0aChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNhaXJvX3QqIGNhaXJvQ29udGV4dCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDBhYzM5NTU4OTE4YWU3YjUyZWZi
MTllNTQyZmFiOWFhMzlhMDk0YjYuLmU1MWQ2NWEzZmRkMWY1OTY1MTJjNTk0ZmZlOWEwNzllNjIy
NzNlMDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VD
YWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJv
LmNwcApAQCAtMTM4LDEzICsxMzgsMTMgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KICAgICBD
b250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0LT5jb250ZXh0U2hhZG93KCk7CiAgICAgQVNT
RVJUKHNoYWRvdyk7CiAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6Ok5v
U2hhZG93KSB7Ci0gICAgICAgIGNhaXJvX3QqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2lu
U2hhZG93TGF5ZXIoY3IsIGRzdFJlY3QpOworICAgICAgICBjYWlyb190KiBzaGFkb3dDb250ZXh0
ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGNvbnRleHQsIGRzdFJlY3QpOwogICAgICAgICBp
ZiAoc2hhZG93Q29udGV4dCkgewogICAgICAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0Nv
bnRleHQsIGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CiAgICAgICAgICAgICBjYWlyb19zZXRf
c291cmNlKHNoYWRvd0NvbnRleHQsIHBhdHRlcm4pOwogICAgICAgICAgICAgY2Fpcm9fcmVjdGFu
Z2xlKHNoYWRvd0NvbnRleHQsIDAsIDAsIGRzdFJlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQo
KSk7CiAgICAgICAgICAgICBjYWlyb19maWxsKHNoYWRvd0NvbnRleHQpOwotICAgICAgICAgICAg
c2hhZG93LT5lbmRTaGFkb3dMYXllcihjcik7CisgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRv
d0xheWVyKGNvbnRleHQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCmluZGV4IGVhYmQ5MTM0ZTYwZDBkODBmMDQxNzhkNDJjMTVi
YjNjMmI3NTFiOWEuLjg3ZmNjYzhhODNhY2RmYzA1NzI0YjJiMDQ0Nzg3YjVkNWZiNmM0OTQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCkBAIC0yNDAsNyArMjQw
LDcgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY2Fpcm9fdCogY29udGV4dCwKIAogICAgIEZsb2F0UmVjdCBleHRlbnRzKGdl
dFBhbmdvUmVnaW9uRXh0ZW50cyhyZW5kZXJSZWdpb24pKTsKICAgICBleHRlbnRzLnNldExvY2F0
aW9uKEZsb2F0UG9pbnQocG9pbnQueCgpLCBwb2ludC55KCkgLSBleHRlbnRzLmhlaWdodCgpKSk7
Ci0gICAgY2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihj
b250ZXh0LCBleHRlbnRzKTsKKyAgICBjYWlyb190KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LT5i
ZWdpblNoYWRvd0xheWVyKGdyYXBoaWNzQ29udGV4dCwgZXh0ZW50cyk7CiAgICAgaWYgKHNoYWRv
d0NvbnRleHQpIHsKICAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0NvbnRleHQsIHBvaW50
LngoKSwgcG9pbnQueSgpKTsKICAgICAgICAgcGFuZ29fY2Fpcm9fc2hvd19sYXlvdXRfbGluZShz
aGFkb3dDb250ZXh0LCBsYXlvdXRMaW5lKTsKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGF0aWMgdm9p
ZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjYWly
b190KiBjb250ZXh0LAogICAgICAgICBjYWlyb19jbGlwKGNvbnRleHQpOwogICAgICAgICBjYWly
b190cmFuc2xhdGUoY29udGV4dCwgLXRvdGFsT2Zmc2V0LngoKSwgLXRvdGFsT2Zmc2V0LnkoKSk7
CiAKLSAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihjb250ZXh0KTsKKyAgICAgICAgc2hh
ZG93LT5lbmRTaGFkb3dMYXllcihncmFwaGljc0NvbnRleHQpOwogICAgICAgICBjYWlyb19yZXN0
b3JlKGNvbnRleHQpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvQ29udGV4dFNoYWRvd1F0LmNwcAppbmRleCBlMGU3NDIyMjU0MGY1YjZmYmVmZmNmNGZjNmI0
NTA3YmVhMzMyNDViLi44MzRjYTYyYjhjY2ZiYzVkMjAzYWVmZjgzN2UzZmNlNzk1OGVjMWVmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3Bw
CkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGV4
dFNoYWRvdy5oIgogCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSA8UVBhaW50ZXI+CiAjaW5jbHVkZSA8UVRpbWVyRXZl
bnQ+CiAKQEAgLTEwMCwxOSArMTAyLDE0IEBAIHZvaWQgU2hhZG93QnVmZmVyOjp0aW1lckV2ZW50
KFFUaW1lckV2ZW50KiBldmVudCkKICAgICBRT2JqZWN0Ojp0aW1lckV2ZW50KGV2ZW50KTsKIH0K
IAotQWZmaW5lVHJhbnNmb3JtIENvbnRleHRTaGFkb3c6OmdldFRyYW5zZm9ybWF0aW9uTWF0cml4
RnJvbUNvbnRleHQoUGxhdGZvcm1Db250ZXh0IGNvbnRleHQpCi17Ci0gICAgY29uc3QgUVRyYW5z
Zm9ybSYgdHJhbnNmb3JtID0gY29udGV4dC0+dHJhbnNmb3JtKCk7Ci0gICAgcmV0dXJuIEFmZmlu
ZVRyYW5zZm9ybSh0cmFuc2Zvcm0ubTExKCksIHRyYW5zZm9ybS5tMTIoKSwgdHJhbnNmb3JtLm0y
MSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLm0yMigpLCB0cmFuc2Zv
cm0uZHgoKSwgdHJhbnNmb3JtLmR5KCkpOwotfQotCiBRX0dMT0JBTF9TVEFUSUMoU2hhZG93QnVm
ZmVyLCBzY3JhdGNoU2hhZG93QnVmZmVyKQogCi1QbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRv
dzo6YmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZWN0JiBs
YXllckFyZWEpCitQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXll
cihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhKQog
ewogICAgIC8vIFNldCBtX2JsdXJEaXN0YW5jZS4KLSAgICBhZGp1c3RCbHVyRGlzdGFuY2UocCk7
CisgICAgYWRqdXN0Qmx1ckRpc3RhbmNlKGNvbnRleHQpOworCisgICAgUGxhdGZvcm1Db250ZXh0
IHAgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKIAogICAgIFFSZWN0IGNsaXBSZWN0Owog
ICAgIGlmIChwLT5oYXNDbGlwcGluZygpKQpAQCAtMTI2LDcgKzEyMyw3IEBAIFBsYXRmb3JtQ29u
dGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBwLCBj
b25zdCBGbG9hdFJlCiAKICAgICAvLyBTZXQgbV9sYXllck9yaWdpbiwgbV9sYXllckNvbnRleHRU
cmFuc2xhdGlvbiwgbV9zb3VyY2VSZWN0LgogICAgIEludFJlY3QgY2xpcChjbGlwUmVjdC54KCks
IGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOwotICAg
IEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QocCwgbGF5ZXJB
cmVhLCBjbGlwKTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRp
bmdSZWN0KGNvbnRleHQsIGxheWVyQXJlYSwgY2xpcCk7CiAKICAgICAvLyBEb24ndCBwYWludCBp
ZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbi4KICAgICBpZiAobGF5ZXJS
ZWN0LmlzRW1wdHkoKSkKQEAgLTE0Myw3ICsxNDAsNyBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4
dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRS
ZQogICAgIHJldHVybiBtX2xheWVyQ29udGV4dDsKIH0KIAotdm9pZCBDb250ZXh0U2hhZG93Ojpl
bmRTaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCkKK3ZvaWQgQ29udGV4dFNoYWRvdzo6ZW5k
U2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIG1fbGF5ZXJDb250
ZXh0LT5lbmQoKTsKICAgICBkZWxldGUgbV9sYXllckNvbnRleHQ7CkBAIC0xNjIsNyArMTU5LDcg
QEAgdm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCkK
ICAgICAgICAgcC5lbmQoKTsKICAgICB9CiAKLSAgICBwLT5kcmF3SW1hZ2UobV9sYXllck9yaWdp
biwgbV9sYXllckltYWdlLCBtX3NvdXJjZVJlY3QpOworICAgIGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5kcmF3SW1hZ2UobV9sYXllck9yaWdpbiwgbV9sYXllckltYWdlLCBtX3NvdXJjZVJl
Y3QpOwogCiAgICAgc2NyYXRjaFNoYWRvd0J1ZmZlcigpLT5zY2hlZHVsZVB1cmdlKCk7CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAKaW5kZXggMTMxYWU5M2MyODQ4ODNh
OTVhY2Q2MGRhYTM0OTZjMjVlMzE3MGFmMi4uOTY5YTJhYTVhZDg2NzMwMTkwYmU1YmVlMmE3NTUx
MDg4MWM5MGI4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250
UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcApAQCAt
MTQ2LDIwICsxNDYsMjAgQEAgc3RhdGljIHZvaWQgZHJhd1RleHRDb21tb24oR3JhcGhpY3NDb250
ZXh0KiBjdHgsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXQKIAogICAgICAgICAgICAg
aWYgKGN0eFNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6Ok5vU2hhZG93KSB7CiAgICAg
ICAgICAgICAgICAgQ29udGV4dFNoYWRvdyogY3R4U2hhZG93ID0gY3R4LT5jb250ZXh0U2hhZG93
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjdHhTaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93
KHApKSB7CisgICAgICAgICAgICAgICAgaWYgKCFjdHhTaGFkb3ctPm11c3RVc2VDb250ZXh0U2hh
ZG93KGN0eCkpIHsKICAgICAgICAgICAgICAgICAgICAgcC0+c2F2ZSgpOwogICAgICAgICAgICAg
ICAgICAgICBwLT5zZXRQZW4oY3R4U2hhZG93LT5tX2NvbG9yKTsKICAgICAgICAgICAgICAgICAg
ICAgcC0+dHJhbnNsYXRlKGN0eFNoYWRvdy0+b2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgICAg
ICBsaW5lLmRyYXcocCwgcHQpOwogICAgICAgICAgICAgICAgICAgICBwLT5yZXN0b3JlKCk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNo
YWRvd1BhaW50ZXIgPSBjdHhTaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0
KTsKKyAgICAgICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBjdHhTaGFk
b3ctPmJlZ2luU2hhZG93TGF5ZXIoY3R4LCBib3VuZGluZ1JlY3QpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2lu
Y2UgaXQgd2lsbCBiZSBibHVycmVkIGFueXdheSwgd2UgZG9uJ3QgY2FyZSBhYm91dCByZW5kZXIg
aGludHMuCiAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRGb250KHAt
PmZvbnQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRQZW4o
Y3R4U2hhZG93LT5tX2NvbG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUuZHJhdyhz
aGFkb3dQYWludGVyLCBwdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjdHhTaGFkb3ctPmVu
ZFNoYWRvd0xheWVyKHApOworICAgICAgICAgICAgICAgICAgICAgICAgY3R4U2hhZG93LT5lbmRT
aGFkb3dMYXllcihjdHgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQpAQCAtMjA0LDEzICsyMDQsMTMgQEAgc3RhdGljIHZvaWQgZHJhd1Rl
eHRDb21tb24oR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
RmxvYXQKICNlbHNlCiAgICAgICAgICAgICAgICAgUVJlY3RGIGJvdW5kaW5nUmVjdChwdC54KCks
IHBvaW50LnkoKSAtIGZtLmFzY2VudCgpLCBmbS53aWR0aChzdHJpbmcpLCBmbS5oZWlnaHQoKSk7
CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IGN0eFNo
YWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBib3VuZGluZ1JlY3QpOworICAgICAgICAgICAgICAg
IFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gY3R4U2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGN0
eCwgYm91bmRpbmdSZWN0KTsKICAgICAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewog
ICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSBpdCB3aWxsIGJlIGJsdXJyZWQgYW55d2F5LCB3
ZSBkb24ndCBjYXJlIGFib3V0IHJlbmRlciBoaW50cy4KICAgICAgICAgICAgICAgICAgICAgc2hh
ZG93UGFpbnRlci0+c2V0Rm9udChwLT5mb250KCkpOwogICAgICAgICAgICAgICAgICAgICBzaGFk
b3dQYWludGVyLT5zZXRQZW4oY3R4U2hhZG93LT5tX2NvbG9yKTsKICAgICAgICAgICAgICAgICAg
ICAgc2hhZG93UGFpbnRlci0+ZHJhd1RleHQocHQsIHN0cmluZywgZmxhZ3MsIHJ1bi5wYWRkaW5n
KCkpOwotICAgICAgICAgICAgICAgICAgICBjdHhTaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwor
ICAgICAgICAgICAgICAgICAgICBjdHhTaGFkb3ctPmVuZFNoYWRvd0xheWVyKGN0eCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGN0eC0+dGV4
dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSkgewpAQCAtMjI1LDEyICsyMjUsMTIgQEAg
c3RhdGljIHZvaWQgZHJhd1RleHRDb21tb24oR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IFRl
eHRSdW4mIHJ1biwgY29uc3QgRmxvYXQKICNlbHNlCiAgICAgICAgICAgICAgICAgUVJlY3RGIGJv
dW5kaW5nUmVjdChwdC54KCksIHBvaW50LnkoKSAtIGZtLmFzY2VudCgpLCBmbS53aWR0aChzdHJp
bmcpLCBmbS5oZWlnaHQoKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hh
ZG93UGFpbnRlciA9IGN0eFNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBib3VuZGluZ1JlY3Qp
OworICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gY3R4U2hhZG93LT5i
ZWdpblNoYWRvd0xheWVyKGN0eCwgYm91bmRpbmdSZWN0KTsKICAgICAgICAgICAgICAgICBpZiAo
c2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSBpdCB3aWxsIGJl
IGJsdXJyZWQgYW55d2F5LCB3ZSBkb24ndCBjYXJlIGFib3V0IHJlbmRlciBoaW50cy4KICAgICAg
ICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Rm9udChwLT5mb250KCkpOwogICAgICAg
ICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zdHJva2VQYXRoKHRleHRTdHJva2VQYXRoLCBR
UGVuKGN0eFNoYWRvdy0+bV9jb2xvcikpOwotICAgICAgICAgICAgICAgICAgICBjdHhTaGFkb3ct
PmVuZFNoYWRvd0xheWVyKHApOworICAgICAgICAgICAgICAgICAgICBjdHhTaGFkb3ctPmVuZFNo
YWRvd0xheWVyKGN0eCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
UXQuY3BwCmluZGV4IDBjZjZmMjIzMDQ0MmE2NmQ5ZGQ2ODc0NGNkMDcyMWUxZjQ1MWY0MGEuLjhl
Y2I2NjY5NjI1Yzc5ZjJkNjcwZjE5NTNhYTQ0Zjc3MTBjMzBmMDYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC01MTAsMTMg
KzUxMCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0
aCkKIAogICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFk
b3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3coKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVz
ZUNvbnRleHRTaGFkb3cocCkgfHwgbV9zdGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0YXRlLmZpbGxH
cmFkaWVudCkKKyAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3codGhpcykg
fHwgbV9zdGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0YXRlLmZpbGxHcmFkaWVudCkKICAgICAgICAg
ewotICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hh
ZG93TGF5ZXIocCwgcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKSk7CisgICAgICAgICAg
ICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcih0aGlz
LCBwbGF0Zm9ybVBhdGguY29udHJvbFBvaW50UmVjdCgpKTsKICAgICAgICAgICAgIGlmIChzaGFk
b3dQYWludGVyKSB7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Q29tcG9zaXRp
b25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKICAgICAgICAgICAgICAg
ICBzaGFkb3dQYWludGVyLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihtX2RhdGEtPnNo
YWRvdy5tX2NvbG9yKSk7Ci0gICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihw
KTsKKyAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHRoaXMpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQgPSBz
aGFkb3ctPm9mZnNldCgpOwpAQCAtNTQ4LDE1ICs1NDgsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEtPmhhc1No
YWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3co
KTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3cocCkgfHwgbV9zdGF0
ZS5zdHJva2VQYXR0ZXJuIHx8IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpCisgICAgICAgIGlmIChz
aGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KHRoaXMpIHx8IG1fc3RhdGUuc3Ryb2tlUGF0dGVy
biB8fCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50KQogICAgICAgICB7CiAgICAgICAgICAgICBGbG9h
dFJlY3QgYm91bmRpbmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKTsKICAg
ICAgICAgICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRlckxpbWl0KCkgKyBwZW4ud2lk
dGhGKCkpOwotICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJl
Z2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKKyAgICAgICAgICAgIFFQYWludGVyKiBz
aGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIGJvdW5kaW5nUmVj
dCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNo
YWRvd1BhaW50ZXItPnNldE9wYWNpdHkoc3RhdGljX2Nhc3Q8cXJlYWw+KG1fZGF0YS0+c2hhZG93
Lm1fY29sb3IuYWxwaGEoKSkgLyAyNTUpOwogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXIt
PnN0cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBwZW4pOwotICAgICAgICAgICAgICAgIHNoYWRvdy0+
ZW5kU2hhZG93TGF5ZXIocCk7CisgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXll
cih0aGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFFQ
ZW4gc2hhZG93UGVuKHBlbik7CkBAIC02NjMsMzMgKzY2MywzMyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gYWZmaW5lOwogICAgICAgICBRQnJ1c2ggYnJ1c2gobV9zdGF0ZS5maWxsUGF0dGVybi0+
Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGFmZmluZSkpOwogICAgICAgICBRUGl4bWFwKiBpbWFnZSA9
IG1fc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOwotICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IG1fZGF0YS0+aGFzU2hh
ZG93KCkgPyBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgbm9ybWFsaXplZFJlY3QpIDogMDsK
KyAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBtX2RhdGEtPmhhc1NoYWRvdygpID8g
c2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIG5vcm1hbGl6ZWRSZWN0KSA6IDA7CiAgICAg
ICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICBkcmF3UmVwZWF0UGF0dGVybihz
aGFkb3dQYWludGVyLCBpbWFnZSwgbm9ybWFsaXplZFJlY3QsIG1fc3RhdGUuZmlsbFBhdHRlcm4t
PnJlcGVhdFgoKSwgbV9zdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WSgpKTsKICAgICAgICAgICAg
IHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25N
b2RlX1NvdXJjZUluKTsKICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZpbGxSZWN0KG5vcm1h
bGl6ZWRSZWN0LCBzaGFkb3ctPm1fY29sb3IpOwotICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFk
b3dMYXllcihwKTsKKyAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIodGhpcyk7CiAg
ICAgICAgIH0KICAgICAgICAgZHJhd1JlcGVhdFBhdHRlcm4ocCwgaW1hZ2UsIG5vcm1hbGl6ZWRS
ZWN0LCBtX3N0YXRlLmZpbGxQYXR0ZXJuLT5yZXBlYXRYKCksIG1fc3RhdGUuZmlsbFBhdHRlcm4t
PnJlcGVhdFkoKSk7CiAgICAgfSBlbHNlIGlmIChtX3N0YXRlLmZpbGxHcmFkaWVudCkgewogICAg
ICAgICBRQnJ1c2ggYnJ1c2goKm1fc3RhdGUuZmlsbEdyYWRpZW50LT5wbGF0Zm9ybUdyYWRpZW50
KCkpOwogICAgICAgICBicnVzaC5zZXRUcmFuc2Zvcm0obV9zdGF0ZS5maWxsR3JhZGllbnQtPmdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7Ci0gICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVy
ID0gbV9kYXRhLT5oYXNTaGFkb3coKSA/IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3Jt
YWxpemVkUmVjdCkgOiAwOworICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IG1fZGF0
YS0+aGFzU2hhZG93KCkgPyBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIodGhpcywgbm9ybWFsaXpl
ZFJlY3QpIDogMDsKICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgIHNo
YWRvd1BhaW50ZXItPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBicnVzaCk7CiAgICAgICAgICAg
ICBzaGFkb3dQYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9u
TW9kZV9Tb3VyY2VJbik7CiAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxsUmVjdChub3Jt
YWxpemVkUmVjdCwgc2hhZG93LT5tX2NvbG9yKTsKLSAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hh
ZG93TGF5ZXIocCk7CisgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHRoaXMpOwog
ICAgICAgICB9CiAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBicnVzaCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKLSAgICAgICAg
ICAgIGlmIChzaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KHApKSB7Ci0gICAgICAgICAgICAg
ICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwg
bm9ybWFsaXplZFJlY3QpOworICAgICAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRT
aGFkb3codGhpcykpIHsKKyAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9
IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcih0aGlzLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAg
ICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93
UGFpbnRlci0+c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5tX2NvbG9yLmFs
cGhhKCkpIC8gMjU1KTsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJl
Y3Qobm9ybWFsaXplZFJlY3QsIHAtPmJydXNoKCkpOwotICAgICAgICAgICAgICAgICAgICBzaGFk
b3ctPmVuZFNoYWRvd0xheWVyKHApOworICAgICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNo
YWRvd0xheWVyKHRoaXMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgLy8gU29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVyIHNo
YWRvdyBvciB0cmFuc2Zvcm1hdGlvbnMgYXBwbGllZCBjYW4gYmUgZG9uZQpAQCAtNzE2LDEyICs3
MTYsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclMKIAogICAgIGlmIChtX2RhdGEtPmhhc1No
YWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3co
KTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3cocCkpIHsKLSAgICAg
ICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVy
KHAsIG5vcm1hbGl6ZWRSZWN0KTsKKyAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRT
aGFkb3codGhpcykpIHsKKyAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hh
ZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIG5vcm1hbGl6ZWRSZWN0KTsKICAgICAgICAgICAg
IGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0
Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKICAgICAg
ICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgc2hhZG93
LT5tX2NvbG9yKTsKLSAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwor
ICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIodGhpcyk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJl
Y3QudHJhbnNsYXRlZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93LT5tX2NvbG9yKTsKQEAgLTc0
MCwxMiArNzQwLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29u
c3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmCiAgICAgUVBhaW50ZXIqIHAg
PSBtX2RhdGEtPnAoKTsKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBD
b250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0gICAgICAgIGlmIChzaGFk
b3ctPm11c3RVc2VDb250ZXh0U2hhZG93KHApKSB7Ci0gICAgICAgICAgICBRUGFpbnRlciogc2hh
ZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCByZWN0KTsKKyAgICAgICAg
aWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3codGhpcykpIHsKKyAgICAgICAgICAgIFFQ
YWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIHJl
Y3QpOwogICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICBz
aGFkb3dQYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9k
ZV9Tb3VyY2UpOwogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZpbGxQYXRoKHBhdGgu
cGxhdGZvcm1QYXRoKCksIFFDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKSk7Ci0gICAgICAg
ICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsKKyAgICAgICAgICAgICAgICBzaGFk
b3ctPmVuZFNoYWRvd0xheWVyKHRoaXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG1fZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCmluZGV4IGY3MTNkMzczZTcwZTA3
MDMwNDQ4NzNkNTFmMGU1MmY0NThlMjI2OTAuLjQ5YWZkMjlmNzRhYjFmNDlmNzFiZjk3N2M5YThi
YjZmY2QyYjRiNWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1h
Z2VRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcApA
QCAtMjA5LDExICsyMDksMTEgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAogCiAgICAgQ29udGV4dFNoYWRvdyogc2hh
ZG93ID0gY3R4dC0+Y29udGV4dFNoYWRvdygpOwogICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBD
b250ZXh0U2hhZG93OjpOb1NoYWRvdykgewotICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRl
ciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwYWludGVyLCBub3JtYWxpemVkRHN0KTsKKyAg
ICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIo
Y3R4dCwgbm9ybWFsaXplZERzdCk7CiAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAg
ICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRPcGFjaXR5KHN0YXRpY19jYXN0PHFyZWFsPihzaGFk
b3ctPm1fY29sb3IuYWxwaGEoKSkgLyAyNTUpOwogICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+
ZHJhd1BpeG1hcChub3JtYWxpemVkRHN0LCAqaW1hZ2UsIG5vcm1hbGl6ZWRTcmMpOwotICAgICAg
ICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwYWludGVyKTsKKyAgICAgICAgICAgIHNoYWRv
dy0+ZW5kU2hhZG93TGF5ZXIoY3R4dCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAppbmRleCA1MWM5NDk5ZWY3OTY0
M2NmYTJmODRmMzFiOTliYmI0Y2EyZjkwMDdhLi4zYjA4OTk1OGNhNzNkNWYyNThlMWU0Mzc2ODU3
YjUwODZhNjVkZTc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0
aWxsSW1hZ2VRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbElt
YWdlUXQuY3BwCkBAIC03NCwxOSArNzQsMTcgQEAgdm9pZCBTdGlsbEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCiAgICAgQ29tcG9zaXRlT3Bl
cmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0eHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpOwogICAg
IGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCk7CiAKLSAgICBRUGFpbnRlciogcGFpbnRl
ciA9IGN0eHQtPnBsYXRmb3JtQ29udGV4dCgpOwotCiAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93
ID0gY3R4dC0+Y29udGV4dFNoYWRvdygpOwogICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250
ZXh0U2hhZG93OjpOb1NoYWRvdykgewotICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9
IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwYWludGVyLCBub3JtYWxpemVkRHN0KTsKKyAgICAg
ICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoY3R4
dCwgbm9ybWFsaXplZERzdCk7CiAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAg
ICAgICBzaGFkb3dQYWludGVyLT5zZXRPcGFjaXR5KHN0YXRpY19jYXN0PHFyZWFsPihzaGFkb3ct
Pm1fY29sb3IuYWxwaGEoKSkgLyAyNTUpOwogICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZHJh
d1BpeG1hcChub3JtYWxpemVkRHN0LCAqbV9waXhtYXAsIG5vcm1hbGl6ZWRTcmMpOwotICAgICAg
ICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwYWludGVyKTsKKyAgICAgICAgICAgIHNoYWRv
dy0+ZW5kU2hhZG93TGF5ZXIoY3R4dCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwYWludGVy
LT5kcmF3UGl4bWFwKG5vcm1hbGl6ZWREc3QsICptX3BpeG1hcCwgbm9ybWFsaXplZFNyYyk7Cisg
ICAgY3R4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdQaXhtYXAobm9ybWFsaXplZERzdCwgKm1f
cGl4bWFwLCBub3JtYWxpemVkU3JjKTsKICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
cHJldmlvdXNPcGVyYXRvcik7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77853</attachid>
            <date>2011-01-03 16:48:29 -0800</date>
            <delta_ts>2011-01-03 17:37:23 -0800</delta_ts>
            <desc>Fix GTK build</desc>
            <filename>bug-51799-20110103164827.patch</filename>
            <type>text/plain</type>
            <size>32683</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmZiYTBlYTQwYjdjOWI3YmI0ZDJjOGUyZjBkOTcxNWUxZmMwYTcwZi4uMDk2YjI5ZjVhMmM2MmU2
OGY2NTcxY2E5MTI2Mjg5Yzc5ZGY1ZmZhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMS0wMS0wMiAgSGVs
ZGVyIENvcnJlaWEgIDxoZWxkZXJAc2VuY2hhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb250ZXh0U2hhZG93IGNhbiBhdm9pZCBjb2RlIGR1
cGxpY2F0aW9uIGZvciBnZXR0aW5nIHRoZSBDVE0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNzk5CisKKyAgICAgICAgQ29udGV4dFNoYWRvdyBkZWZp
bmVzIGl0cyBvd24gZ2V0VHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4dCgpCisgICAgICAg
IHdoaWNoIGRvZXMgZXhhY3RseSB0aGUgc2FtZSBhcyBHcmFwaGljc0NvbnRleHQ6OmdldENUTSgp
LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzOiBmYXN0L2NhbnZhcy9jYW52YXMqc2hhZG93Kmh0
bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6bXVzdFVzZUNvbnRleHRTaGFkb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6YWRqdXN0Qmx1ckRpc3RhbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGV4dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0dseXBoc1NoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2d0ay9Gb250R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFk
b3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJh
d1RleHRDb21tb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdGlsbEltYWdlOjpkcmF3KToKKwogMjAxMS0wMS0wMSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hh
ZG93LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAKaW5k
ZXggOTVhYWQ0NjljMzljNzhjM2Q4ZTQ1ZjkxZTQ1YWY1ODVjNDQ4OGYyOC4uNzYzZTU5NTQ3YTE5
ZTgzZGJlZGI2ODFmYTc1YWQ4NGNiY2Y4ODg5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbnRleHRTaGFkb3cuY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ29udGV4dFNoYWRvdy5oIgogCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTgxLDcgKzgzLDcgQEAgdm9pZCBDb250ZXh0U2hh
ZG93OjpjbGVhcigpCiAgICAgbV9vZmZzZXQgPSBGbG9hdFNpemUoKTsKIH0KIAotYm9vbCBDb250
ZXh0U2hhZG93OjptdXN0VXNlQ29udGV4dFNoYWRvdyhQbGF0Zm9ybUNvbnRleHQgY29udGV4dCkK
K2Jvb2wgQ29udGV4dFNoYWRvdzo6bXVzdFVzZUNvbnRleHRTaGFkb3coR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KQogewogICAgIC8vIFdlIGNhbid0IGF2b2lkIENvbnRleHRTaGFkb3csIHNpbmNl
IHRoZSBzaGFkb3cgaGFzIGJsdXIuCiAgICAgaWYgKG1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpC
bHVyU2hhZG93KQpAQCAtOTEsOCArOTMsNyBAQCBib29sIENvbnRleHRTaGFkb3c6Om11c3RVc2VD
b250ZXh0U2hhZG93KFBsYXRmb3JtQ29udGV4dCBjb250ZXh0KQogICAgIGlmICghc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIFdlIGNhbiBh
dm9pZCBDb250ZXh0U2hhZG93LCBzaW5jZSB0aGVyZSBhcmUgbm8gdHJhbnNmb3JtYXRpb25zIHRv
IGFwcGx5IHRvIHRoZSBjYW52YXMuCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9y
bShnZXRUcmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KGNvbnRleHQpKTsKLSAgICBpZiAo
dHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKKyAgICBpZiAoY29udGV4dC0+Z2V0Q1RNKCkuaXNJZGVu
dGl0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gT3RoZXJ3aXNlLCBubyBjaGFu
Y2UgYXZvaWRpbmcgQ29udGV4dFNoYWRvdy4KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3MCwxNSAr
MTcxLDE1IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6Ymx1ckxheWVySW1hZ2UodW5zaWduZWQgY2hh
ciogaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBzaXplCiAgICAgfQogfQogCi12b2lkIENvbnRl
eHRTaGFkb3c6OmFkanVzdEJsdXJEaXN0YW5jZShjb25zdCBQbGF0Zm9ybUNvbnRleHQgY29udGV4
dCkKK3ZvaWQgQ29udGV4dFNoYWRvdzo6YWRqdXN0Qmx1ckRpc3RhbmNlKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKIHsKLSAgICAvLyBBZGp1c3QgYmx1ciBpZiB3ZSdyZSBzY2FsaW5nLCBzaW5j
ZSB0aGUgcmFkaXVzIG11c3Qgbm90IGJlIGFmZmVjdGVkIGJ5IHRyYW5zZm9ybWF0aW9ucy4KLSAg
ICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtKGdldFRyYW5zZm9ybWF0aW9uTWF0cml4
RnJvbUNvbnRleHQoY29udGV4dCkpOworICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zv
cm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKIAorICAgIC8vIEFkanVzdCBibHVyIGlmIHdlJ3JlIHNj
YWxpbmcsIHNpbmNlIHRoZSByYWRpdXMgbXVzdCBub3QgYmUgYWZmZWN0ZWQgYnkgdHJhbnNmb3Jt
YXRpb25zLgogICAgIGlmICh0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICAvLyBDYWxjdWxhbGUgdHJhbnNmb3JtZWQgdW5pdCB2ZWN0b3JzLgorICAgIC8vIENh
bGN1bGF0ZSB0cmFuc2Zvcm1lZCB1bml0IHZlY3RvcnMuCiAgICAgY29uc3QgRmxvYXRRdWFkIHVu
aXRRdWFkKEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMSwgMCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQoMCwgMSksIEZsb2F0UG9pbnQoMSwgMSkpOwogICAg
IGNvbnN0IEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFVuaXRRdWFkID0gdHJhbnNmb3JtLm1hcFF1YWQo
dW5pdFF1YWQpOwpAQCAtMTk4LDEzICsxOTksMTMgQEAgdm9pZCBDb250ZXh0U2hhZG93OjphZGp1
c3RCbHVyRGlzdGFuY2UoY29uc3QgUGxhdGZvcm1Db250ZXh0IGNvbnRleHQpCiAgICAgbV9ibHVy
RGlzdGFuY2UgPSByb3VuZGYoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYmx1ckRpc3RhbmNlKSAvIHNj
YWxlKTsKIH0KIAotSW50UmVjdCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5n
UmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXll
ckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorSW50UmVjdCBDb250ZXh0U2hhZG93Ojpj
YWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICAv
LyBDYWxjdWxhdGUgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBibHVycmVkIGFuZC9vciB0cmFuc2Zv
cm1lZCBsYXllci4KICAgICBGbG9hdFJlY3QgbGF5ZXJGbG9hdFJlY3Q7CiAgICAgZmxvYXQgaW5m
bGF0aW9uID0gMDsKIAotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0oZ2V0VHJh
bnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4dChjb250ZXh0KSk7CisgICAgY29uc3QgQWZmaW5l
VHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOwogICAgIGlmIChtX3NoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zICYmICF0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7CiAgICAgICAg
IEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFBvbHlnb24gPSB0cmFuc2Zvcm0ubWFwUXVhZChGbG9hdFF1
YWQobGF5ZXJBcmVhKSk7CiAgICAgICAgIHRyYW5zZm9ybWVkUG9seWdvbi5tb3ZlKG1fb2Zmc2V0
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmgKaW5kZXggZTVlNWE4
ZTUyNmYyODNiODcxNjljZjQ4NjFjNGZmNWQyOTc1NzRkYy4uYTFmYmE1YzgyYTE0MzYwYWE1NmE0
NDcyYzE5N2IzMWMyMWY4YjQ2NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db250ZXh0U2hhZG93LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0
U2hhZG93LmgKQEAgLTI5LDEwICsyOSw4IEBACiAjaWZuZGVmIENvbnRleHRTaGFkb3dfaAogI2Rl
ZmluZSBDb250ZXh0U2hhZG93X2gKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2lu
Y2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlJlZkNvdW50ZWQu
aCIKIApAQCAtNDgsNiArNDYsOSBAQCBRVF9FTkRfTkFNRVNQQUNFCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3MgR3JhcGhpY3NDb250ZXh0Owor
CiAjaWYgUExBVEZPUk0oQ0FJUk8pCiB0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogUGxhdGZvcm1J
bWFnZTsKIHR5cGVkZWYgY2Fpcm9fdCogUGxhdGZvcm1Db250ZXh0OwpAQCAtODIsNyArODMsNyBA
QCBwdWJsaWM6CiAgICAgQ29udGV4dFNoYWRvdygpOwogICAgIENvbnRleHRTaGFkb3coY29uc3Qg
Q29sb3ImLCBmbG9hdCByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KTsKIAotICAgIGJv
b2wgbXVzdFVzZUNvbnRleHRTaGFkb3coUGxhdGZvcm1Db250ZXh0KTsKKyAgICBib29sIG11c3RV
c2VDb250ZXh0U2hhZG93KEdyYXBoaWNzQ29udGV4dCopOwogICAgIHZvaWQgY2xlYXIoKTsKIAog
ICAgIC8vIFRoZSBwYWlyIGJlZ2luU2hhZG93TGF5ZXIgYW5kIGVuZFNoYWRvd0xheWVyIGNyZWF0
ZXMgYSB0ZW1wb3JhcnkgaW1hZ2UKQEAgLTEwNywxMCArMTA4LDkgQEAgcHVibGljOgogICAgIC8v
IG9yaWdpbmFsIGNvbnRleHQuIElmIGJsdXIgcmFkaXVzIGlzIHNwZWNpZmllZCwgdGhlIHNoYWRv
dyB3aWxsIGJlCiAgICAgLy8gZmlsdGVyZWQgZmlyc3QuCiAKLSAgICBQbGF0Zm9ybUNvbnRleHQg
YmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJB
cmVhKTsKLSAgICB2b2lkIGVuZFNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCk7CisgICAgUGxh
dGZvcm1Db250ZXh0IGJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiBsYXllckFyZWEpOworICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250
ZXh0Kik7CiAgICAgc3RhdGljIHZvaWQgcHVyZ2VTY3JhdGNoQnVmZmVyKCk7Ci0gICAgc3RhdGlj
IEFmZmluZVRyYW5zZm9ybSBnZXRUcmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KFBsYXRm
b3JtQ29udGV4dCk7CiAKICAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wg
ZW5hYmxlKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBlbmFibGU7IH0KICAgICBib29s
IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtczsgfQpAQCAtMTI5LDEyICsxMjksMTIgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBv
aW50IG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb247IC8vIFRyYW5zbGF0aW9uIHRvIGFwcGx5IHRv
IG1fbGF5ZXJDb250ZXh0IGZvciB0aGUgc2hhZG93IHRvIGJlIGNvcnJlY3RseSBjbGlwcGVkLgog
ICAgIGJvb2wgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKIAotICAgIHZvaWQgYWRqdXN0Qmx1
ckRpc3RhbmNlKGNvbnN0IFBsYXRmb3JtQ29udGV4dCk7CisgICAgdm9pZCBhZGp1c3RCbHVyRGlz
dGFuY2UoR3JhcGhpY3NDb250ZXh0Kik7CiAgICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25l
ZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBpbnQgc3RyaWRlKTsKLSAgICBJbnRS
ZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKyAgICBJ
bnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAKICNpZiBQ
TEFURk9STShDQUlSTykKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhQbGF0
Zm9ybUNvbnRleHQgY29udGV4dCwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgSW50
U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0
IEludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0UmFk
aXVzLCBmbG9hdCBhbHBoYSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgSW50U2l6
ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IElu
dFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVz
LCBmbG9hdCBhbHBoYSk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcAppbmRleCBjNTJjYzNhOTBi
Y2ZlMTU2NWRiM2RmZTU4OWYzNzFjZGU1ZDBjYWU2Li5lOGVmMGM2MTRhMTdhMzBkNGIwYTliMzc0
YTc1ZGM3Yzc1MDIxYmJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGV4dFNoYWRvdy5oIgogCisjaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJPd25QdHJDYWlyby5oIgogI2luY2x1ZGUgIlBh
dGguaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtODEsMjAgKzgzLDEyIEBAIHN0YXRpYyBjYWly
b19zdXJmYWNlX3QqIGdldFNjcmF0Y2hCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBy
ZXR1cm4gc2NyYXRjaEJ1ZmZlcjsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIENvbnRleHRTaGFkb3c6
OmdldFRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbUNvbnRleHQoUGxhdGZvcm1Db250ZXh0IGNvbnRl
eHQpCi17Ci0gICAgY2Fpcm9fbWF0cml4X3QgdHJhbnNmb3JtOwotICAgIGNhaXJvX2dldF9tYXRy
aXgoY29udGV4dCwgJnRyYW5zZm9ybSk7Ci0gICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSh0cmFu
c2Zvcm0ueHgsIHRyYW5zZm9ybS55eCwgdHJhbnNmb3JtLnh5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHJhbnNmb3JtLnl5LCB0cmFuc2Zvcm0ueDAsIHRyYW5zZm9ybS55MCk7Ci19Ci0K
LVBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3Jt
Q29udGV4dCBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKK1BsYXRmb3JtQ29u
dGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpCiB7CiAgICAgYWRqdXN0Qmx1ckRpc3Rh
bmNlKGNvbnRleHQpOwogCiAgICAgZG91YmxlIHgxLCB4MiwgeTEsIHkyOwotICAgIGNhaXJvX2Ns
aXBfZXh0ZW50cyhjb250ZXh0LCAmeDEsICZ5MSwgJngyLCAmeTIpOworICAgIGNhaXJvX2NsaXBf
ZXh0ZW50cyhjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgJngxLCAmeTEsICZ4MiwgJnkyKTsK
ICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnRl
eHQsIGxheWVyQXJlYSwgSW50UmVjdCh4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEpKTsKIAogICAg
IC8vIERvbid0IHBhaW50IGlmIHdlIGFyZSB0b3RhbGx5IG91dHNpZGUgdGhlIGNsaXAgcmVnaW9u
LgpAQCAtMTEzLDcgKzEwNyw3IEBAIFBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdp
blNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBGCiAgICAgcmV0dXJu
IG1fbGF5ZXJDb250ZXh0OwogfQogCi12b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVy
KGNhaXJvX3QqIGNyKQordm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgY2Fpcm9fZGVzdHJveShtX2xheWVyQ29udGV4dCk7
CiAgICAgbV9sYXllckNvbnRleHQgPSAwOwpAQCAtMTI2LDYgKzEyMCw3IEBAIHZvaWQgQ29udGV4
dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIoY2Fpcm9fdCogY3IpCiAgICAgICAgIGNhaXJvX3N1cmZh
Y2VfbWFya19kaXJ0eShtX2xheWVySW1hZ2UpOwogICAgIH0KIAorICAgIGNhaXJvX3QqIGNyID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgc2V0
U291cmNlUkdCQUZyb21Db2xvcihjciwgbV9jb2xvcik7CiAgICAgY2Fpcm9fbWFza19zdXJmYWNl
KGNyLCBtX2xheWVySW1hZ2UsIG1fbGF5ZXJPcmlnaW4ueCgpLCBtX2xheWVyT3JpZ2luLnkoKSk7
CkBAIC0xMzUsNyArMTMwLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihj
YWlyb190KiBjcikKICAgICBzY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lk
IENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhQbGF0Zm9ybUNvbnRl
eHQgY29udGV4dCwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgSW50U2l6ZSYgdG9w
TGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEludFNpemUm
IGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzLCBmbG9h
dCBhbHBoYSkKK3ZvaWQgQ29udGV4dFNoYWRvdzo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5n
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29u
c3QgSW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMs
IGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJp
Z2h0UmFkaXVzLCBmbG9hdCBhbHBoYSkKIHsKICAgICBiZWdpblNoYWRvd0xheWVyKGNvbnRleHQs
IHNoYWRvd1JlY3QpOwogCkBAIC0yMDEsNyArMTk2LDcgQEAgdm9pZCBDb250ZXh0U2hhZG93Ojpk
cmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJl
Y3QKICAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlm
ICgoIWNvbnRleHQtPmdldENUTSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkp
IHx8IChyYWRpdXNUd2ljZSA+IHJlY3Qud2lkdGgoKSkKICAgICAgICAgfHwgKHJhZGl1c1R3aWNl
ID4gcmVjdC5oZWlnaHQoKSkgfHwgKG1fdHlwZSAhPSBCbHVyU2hhZG93KSkgewotICAgICAgICBk
cmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoY3IsIHJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJp
Z2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cywgY29udGV4dC0+
Z2V0QWxwaGEoKSk7CisgICAgICAgIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjb250ZXh0
LCByZWN0LCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywg
Ym90dG9tUmlnaHRSYWRpdXMsIGNvbnRleHQtPmdldEFscGhhKCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0yMjksMTAgKzIyNCwxMCBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmRyYXdS
ZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdAog
ICAgIC8vIFJlZHVjZSB0aGUgc2l6ZSBvZiB3aGF0IHdlIGhhdmUgdG8gZHJhdyB3aXRoIHRoZSBj
bGlwIGFyZWEuCiAgICAgZG91YmxlIHgxLCB4MiwgeTEsIHkyOwogICAgIGNhaXJvX2NsaXBfZXh0
ZW50cyhjciwgJngxLCAmeTEsICZ4MiwgJnkyKTsKLSAgICBjYWxjdWxhdGVMYXllckJvdW5kaW5n
UmVjdChjciwgc2hhZG93UmVjdCwgSW50UmVjdCh4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEpKTsK
KyAgICBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBzaGFkb3dSZWN0LCBJbnRS
ZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkpOwogCiAgICAgaWYgKChzaGFkb3dUZW1wbGF0
ZVNpemUud2lkdGgoKSAqIHNoYWRvd1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IG1fc291cmNlUmVj
dC53aWR0aCgpICogbV9zb3VyY2VSZWN0LmhlaWdodCgpKSkgewotICAgICAgICBkcmF3UmVjdFNo
YWRvd1dpdGhvdXRUaWxpbmcoY3IsIHJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVz
LCBib3R0b21MZWZ0UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cywgY29udGV4dC0+Z2V0QWxwaGEo
KSk7CisgICAgICAgIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjb250ZXh0LCByZWN0LCB0
b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cywgYm90dG9tUmln
aHRSYWRpdXMsIGNvbnRleHQtPmdldEFscGhhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKaW5kZXgg
MGQ5MmFkYTUwOGIxYWQ2ODA3YjIzODc1YjBiZjczNTEyMzY2Zjc5OS4uMmQ3OTQ5OTgwMjRjMDdh
NDEzZWZmMDU0ZmU0Y2EwODUyN2IzZWY4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBkcmF3
R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjYWlyb190KiBj
b250ZXh0LAogICAgIGlmICghKGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBU
ZXh0TW9kZUZpbGwpIHx8IHNoYWRvdy0+bV90eXBlID09IENvbnRleHRTaGFkb3c6Ok5vU2hhZG93
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFk
b3coY29udGV4dCkpIHsKKyAgICBpZiAoIXNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3coZ3Jh
cGhpY3NDb250ZXh0KSkgewogICAgICAgICAvLyBPcHRpbWl6ZSBub24tYmx1cnJ5IHNoYWRvd3Ms
IGJ5IGp1c3QgZHJhd2luZyB0ZXh0IHdpdGhvdXQgdGhlIENvbnRleHRTaGFkb3cuCiAgICAgICAg
IGNhaXJvX3NhdmUoY29udGV4dCk7CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjb250ZXh0LCBz
aGFkb3ctPm1fb2Zmc2V0LndpZHRoKCksIHNoYWRvdy0+bV9vZmZzZXQuaGVpZ2h0KCkpOwpAQCAt
ODYsMTEgKzg2LDExIEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsIGNhaXJvX3QqIGNvbnRleHQsCiAgICAgY2Fpcm9fdGV4dF9l
eHRlbnRzX3QgZXh0ZW50czsKICAgICBjYWlyb19zY2FsZWRfZm9udF9nbHlwaF9leHRlbnRzKGZv
bnQtPnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSwgZ2x5cGhzLCBudW1HbHlwaHMsICZleHRl
bnRzKTsKICAgICBGbG9hdFJlY3QgZm9udEV4dGVudHNSZWN0KHBvaW50LngoKSwgcG9pbnQueSgp
IC0gZXh0ZW50cy5oZWlnaHQsIGV4dGVudHMud2lkdGgsIGV4dGVudHMuaGVpZ2h0KTsKLSAgICBj
YWlyb190KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGNvbnRleHQs
IGZvbnRFeHRlbnRzUmVjdCk7CisgICAgY2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+
YmVnaW5TaGFkb3dMYXllcihncmFwaGljc0NvbnRleHQsIGZvbnRFeHRlbnRzUmVjdCk7CiAgICAg
aWYgKHNoYWRvd0NvbnRleHQpIHsKICAgICAgICAgcHJlcGFyZUNvbnRleHRGb3JHbHlwaERyYXdp
bmcoc2hhZG93Q29udGV4dCwgZm9udCwgcG9pbnQpOwogICAgICAgICBkcmF3R2x5cGhzVG9Db250
ZXh0KHNoYWRvd0NvbnRleHQsIGZvbnQsIGdseXBocywgbnVtR2x5cGhzKTsKLSAgICAgICAgc2hh
ZG93LT5lbmRTaGFkb3dMYXllcihjb250ZXh0KTsKKyAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dM
YXllcihncmFwaGljc0NvbnRleHQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCA1
ODg1ZWE5Yjc5NWExYWVjMTUxYzUxZWFmZGVhZmU3NDk5ZDU4Njk4Li5hNzgzZTJiYmEyZmM5OWMz
MWNiNDJlODc1YmI3OTQ2YzMxM2EzMWY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTY1LDcgKzE2
NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUgZHJhCiAgICAgICAgIHNvbGlkRmlndXJlRXh0ZW50
cy51bml0ZShmaWxsRXh0ZW50cyk7CiAgICAgfQogCi0gICAgY2Fpcm9fdCogc2hhZG93Q29udGV4
dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjYWlyb0NvbnRleHQsIHNvbGlkRmlndXJlRXh0
ZW50cyk7CisgICAgY2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dM
YXllcihjb250ZXh0LCBzb2xpZEZpZ3VyZUV4dGVudHMpOwogICAgIGlmICghc2hhZG93Q29udGV4
dCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUGF0aERyYXdpbmdT
dHlsZSBkcmEKICAgICBpZiAoZHJhd2luZ1N0eWxlICYgU3Ryb2tlKQogICAgICAgICBzZXRQbGF0
Zm9ybVN0cm9rZShjb250ZXh0LCBzaGFkb3dDb250ZXh0KTsKIAotICAgIHNoYWRvdy0+ZW5kU2hh
ZG93TGF5ZXIoY2Fpcm9Db250ZXh0KTsKKyAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKGNvbnRl
eHQpOwogfQogCiBzdGF0aWMgdm9pZCBmaWxsQ3VycmVudENhaXJvUGF0aChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNhaXJvX3QqIGNhaXJvQ29udGV4dCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDBhYzM5NTU4OTE4YWU3YjUyZWZi
MTllNTQyZmFiOWFhMzlhMDk0YjYuLmU1MWQ2NWEzZmRkMWY1OTY1MTJjNTk0ZmZlOWEwNzllNjIy
NzNlMDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VD
YWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJv
LmNwcApAQCAtMTM4LDEzICsxMzgsMTMgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KICAgICBD
b250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0LT5jb250ZXh0U2hhZG93KCk7CiAgICAgQVNT
RVJUKHNoYWRvdyk7CiAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6Ok5v
U2hhZG93KSB7Ci0gICAgICAgIGNhaXJvX3QqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2lu
U2hhZG93TGF5ZXIoY3IsIGRzdFJlY3QpOworICAgICAgICBjYWlyb190KiBzaGFkb3dDb250ZXh0
ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGNvbnRleHQsIGRzdFJlY3QpOwogICAgICAgICBp
ZiAoc2hhZG93Q29udGV4dCkgewogICAgICAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0Nv
bnRleHQsIGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CiAgICAgICAgICAgICBjYWlyb19zZXRf
c291cmNlKHNoYWRvd0NvbnRleHQsIHBhdHRlcm4pOwogICAgICAgICAgICAgY2Fpcm9fcmVjdGFu
Z2xlKHNoYWRvd0NvbnRleHQsIDAsIDAsIGRzdFJlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQo
KSk7CiAgICAgICAgICAgICBjYWlyb19maWxsKHNoYWRvd0NvbnRleHQpOwotICAgICAgICAgICAg
c2hhZG93LT5lbmRTaGFkb3dMYXllcihjcik7CisgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRv
d0xheWVyKGNvbnRleHQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCmluZGV4IGVhYmQ5MTM0ZTYwZDBkODBmMDQxNzhkNDJjMTVi
YjNjMmI3NTFiOWEuLmZkZjkxZGI0ZTE4ZWEzOWYyMjIxZDYyZDhhZjlkYjcyYmZjMmRiZGQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCkBAIC0yMjUsNyArMjI1
LDcgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY2Fpcm9fdCogY29udGV4dCwKICAgICBGbG9hdFBvaW50IHRvdGFsT2Zmc2V0
KHBvaW50ICsgc2hhZG93LT5tX29mZnNldCk7CiAKICAgICAvLyBPcHRpbWl6ZSBub24tYmx1cnJ5
IHNoYWRvd3MsIGJ5IGp1c3QgZHJhd2luZyB0ZXh0IHdpdGhvdXQgdGhlIENvbnRleHRTaGFkb3cu
Ci0gICAgaWYgKCFzaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KGNvbnRleHQpKSB7CisgICAg
aWYgKCFzaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KGdyYXBoaWNzQ29udGV4dCkpIHsKICAg
ICAgICAgY2Fpcm9fc2F2ZShjb250ZXh0KTsKICAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNvbnRl
eHQsIHRvdGFsT2Zmc2V0LngoKSwgdG90YWxPZmZzZXQueSgpKTsKIApAQCAtMjQwLDcgKzI0MCw3
IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNhaXJvX3QqIGNvbnRleHQsCiAKICAgICBGbG9hdFJlY3QgZXh0ZW50cyhnZXRQ
YW5nb1JlZ2lvbkV4dGVudHMocmVuZGVyUmVnaW9uKSk7CiAgICAgZXh0ZW50cy5zZXRMb2NhdGlv
bihGbG9hdFBvaW50KHBvaW50LngoKSwgcG9pbnQueSgpIC0gZXh0ZW50cy5oZWlnaHQoKSkpOwot
ICAgIGNhaXJvX3QqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoY29u
dGV4dCwgZXh0ZW50cyk7CisgICAgY2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVn
aW5TaGFkb3dMYXllcihncmFwaGljc0NvbnRleHQsIGV4dGVudHMpOwogICAgIGlmIChzaGFkb3dD
b250ZXh0KSB7CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShzaGFkb3dDb250ZXh0LCBwb2ludC54
KCksIHBvaW50LnkoKSk7CiAgICAgICAgIHBhbmdvX2NhaXJvX3Nob3dfbGF5b3V0X2xpbmUoc2hh
ZG93Q29udGV4dCwgbGF5b3V0TGluZSk7CkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIHZvaWQg
ZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY2Fpcm9f
dCogY29udGV4dCwKICAgICAgICAgY2Fpcm9fY2xpcChjb250ZXh0KTsKICAgICAgICAgY2Fpcm9f
dHJhbnNsYXRlKGNvbnRleHQsIC10b3RhbE9mZnNldC54KCksIC10b3RhbE9mZnNldC55KCkpOwog
Ci0gICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY29udGV4dCk7CisgICAgICAgIHNoYWRv
dy0+ZW5kU2hhZG93TGF5ZXIoZ3JhcGhpY3NDb250ZXh0KTsKICAgICAgICAgY2Fpcm9fcmVzdG9y
ZShjb250ZXh0KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0NvbnRleHRTaGFkb3dRdC5jcHAKaW5kZXggZTBlNzQyMjI1NDBmNWI2ZmJlZmZjZjRmYzZiNDUw
N2JlYTMzMjQ1Yi4uODM0Y2E2MmI4Y2NmYmM1ZDIwM2FlZmY4MzdlM2ZjZTc5NThlYzFlZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcApA
QCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnRleHRT
aGFkb3cuaCIKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgPFFQYWludGVyPgogI2luY2x1ZGUgPFFUaW1lckV2ZW50
PgogCkBAIC0xMDAsMTkgKzEwMiwxNCBAQCB2b2lkIFNoYWRvd0J1ZmZlcjo6dGltZXJFdmVudChR
VGltZXJFdmVudCogZXZlbnQpCiAgICAgUU9iamVjdDo6dGltZXJFdmVudChldmVudCk7CiB9CiAK
LUFmZmluZVRyYW5zZm9ybSBDb250ZXh0U2hhZG93OjpnZXRUcmFuc2Zvcm1hdGlvbk1hdHJpeEZy
b21Db250ZXh0KFBsYXRmb3JtQ29udGV4dCBjb250ZXh0KQotewotICAgIGNvbnN0IFFUcmFuc2Zv
cm0mIHRyYW5zZm9ybSA9IGNvbnRleHQtPnRyYW5zZm9ybSgpOwotICAgIHJldHVybiBBZmZpbmVU
cmFuc2Zvcm0odHJhbnNmb3JtLm0xMSgpLCB0cmFuc2Zvcm0ubTEyKCksIHRyYW5zZm9ybS5tMjEo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5tMjIoKSwgdHJhbnNmb3Jt
LmR4KCksIHRyYW5zZm9ybS5keSgpKTsKLX0KLQogUV9HTE9CQUxfU1RBVElDKFNoYWRvd0J1ZmZl
ciwgc2NyYXRjaFNoYWRvd0J1ZmZlcikKIAotUGxhdGZvcm1Db250ZXh0IENvbnRleHRTaGFkb3c6
OmJlZ2luU2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0IHAsIGNvbnN0IEZsb2F0UmVjdCYgbGF5
ZXJBcmVhKQorUGxhdGZvcm1Db250ZXh0IENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKIHsK
ICAgICAvLyBTZXQgbV9ibHVyRGlzdGFuY2UuCi0gICAgYWRqdXN0Qmx1ckRpc3RhbmNlKHApOwor
ICAgIGFkanVzdEJsdXJEaXN0YW5jZShjb250ZXh0KTsKKworICAgIFBsYXRmb3JtQ29udGV4dCBw
ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBRUmVjdCBjbGlwUmVjdDsKICAg
ICBpZiAocC0+aGFzQ2xpcHBpbmcoKSkKQEAgLTEyNiw3ICsxMjMsNyBAQCBQbGF0Zm9ybUNvbnRl
eHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCwgY29u
c3QgRmxvYXRSZQogCiAgICAgLy8gU2V0IG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJDb250ZXh0VHJh
bnNsYXRpb24sIG1fc291cmNlUmVjdC4KICAgICBJbnRSZWN0IGNsaXAoY2xpcFJlY3QueCgpLCBj
bGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKLSAgICBJ
bnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KHAsIGxheWVyQXJl
YSwgY2xpcCk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5n
UmVjdChjb250ZXh0LCBsYXllckFyZWEsIGNsaXApOwogCiAgICAgLy8gRG9uJ3QgcGFpbnQgaWYg
d2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCByZWdpb24uCiAgICAgaWYgKGxheWVyUmVj
dC5pc0VtcHR5KCkpCkBAIC0xNDMsNyArMTQwLDcgQEAgUGxhdGZvcm1Db250ZXh0IENvbnRleHRT
aGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0IHAsIGNvbnN0IEZsb2F0UmUK
ICAgICByZXR1cm4gbV9sYXllckNvbnRleHQ7CiB9CiAKLXZvaWQgQ29udGV4dFNoYWRvdzo6ZW5k
U2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0IHApCit2b2lkIENvbnRleHRTaGFkb3c6OmVuZFNo
YWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBtX2xheWVyQ29udGV4
dC0+ZW5kKCk7CiAgICAgZGVsZXRlIG1fbGF5ZXJDb250ZXh0OwpAQCAtMTYyLDcgKzE1OSw3IEBA
IHZvaWQgQ29udGV4dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0IHApCiAg
ICAgICAgIHAuZW5kKCk7CiAgICAgfQogCi0gICAgcC0+ZHJhd0ltYWdlKG1fbGF5ZXJPcmlnaW4s
IG1fbGF5ZXJJbWFnZSwgbV9zb3VyY2VSZWN0KTsKKyAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKS0+ZHJhd0ltYWdlKG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJJbWFnZSwgbV9zb3VyY2VSZWN0
KTsKIAogICAgIHNjcmF0Y2hTaGFkb3dCdWZmZXIoKS0+c2NoZWR1bGVQdXJnZSgpOwogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwCmluZGV4IDEzMWFlOTNjMjg0ODgzYTk1
YWNkNjBkYWEzNDk2YzI1ZTMxNzBhZjIuLjk2OWEyYWE1YWQ4NjczMDE5MGJlNWJlZTJhNzU1MTA4
ODFjOTBiOGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAKQEAgLTE0
NiwyMCArMTQ2LDIwIEBAIHN0YXRpYyB2b2lkIGRyYXdUZXh0Q29tbW9uKEdyYXBoaWNzQ29udGV4
dCogY3R4LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0CiAKICAgICAgICAgICAgIGlm
IChjdHhTaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpOb1NoYWRvdykgewogICAgICAg
ICAgICAgICAgIENvbnRleHRTaGFkb3cqIGN0eFNoYWRvdyA9IGN0eC0+Y29udGV4dFNoYWRvdygp
OwotICAgICAgICAgICAgICAgIGlmICghY3R4U2hhZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhw
KSkgeworICAgICAgICAgICAgICAgIGlmICghY3R4U2hhZG93LT5tdXN0VXNlQ29udGV4dFNoYWRv
dyhjdHgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHAtPnNhdmUoKTsKICAgICAgICAgICAgICAg
ICAgICAgcC0+c2V0UGVuKGN0eFNoYWRvdy0+bV9jb2xvcik7CiAgICAgICAgICAgICAgICAgICAg
IHAtPnRyYW5zbGF0ZShjdHhTaGFkb3ctPm9mZnNldCgpKTsKICAgICAgICAgICAgICAgICAgICAg
bGluZS5kcmF3KHAsIHB0KTsKICAgICAgICAgICAgICAgICAgICAgcC0+cmVzdG9yZSgpOwogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFk
b3dQYWludGVyID0gY3R4U2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHAsIGJvdW5kaW5nUmVjdCk7
CisgICAgICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gY3R4U2hhZG93
LT5iZWdpblNoYWRvd0xheWVyKGN0eCwgYm91bmRpbmdSZWN0KTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNl
IGl0IHdpbGwgYmUgYmx1cnJlZCBhbnl3YXksIHdlIGRvbid0IGNhcmUgYWJvdXQgcmVuZGVyIGhp
bnRzLgogICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Rm9udChwLT5m
b250KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0UGVuKGN0
eFNoYWRvdy0+bV9jb2xvcik7CiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLmRyYXcoc2hh
ZG93UGFpbnRlciwgcHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgY3R4U2hhZG93LT5lbmRT
aGFkb3dMYXllcihwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eFNoYWRvdy0+ZW5kU2hh
ZG93TGF5ZXIoY3R4KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KQEAgLTIwNCwxMyArMjA0LDEzIEBAIHN0YXRpYyB2b2lkIGRyYXdUZXh0
Q29tbW9uKEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZs
b2F0CiAjZWxzZQogICAgICAgICAgICAgICAgIFFSZWN0RiBib3VuZGluZ1JlY3QocHQueCgpLCBw
b2ludC55KCkgLSBmbS5hc2NlbnQoKSwgZm0ud2lkdGgoc3RyaW5nKSwgZm0uaGVpZ2h0KCkpOwog
I2VuZGlmCi0gICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBjdHhTaGFk
b3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKKyAgICAgICAgICAgICAgICBR
UGFpbnRlciogc2hhZG93UGFpbnRlciA9IGN0eFNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjdHgs
IGJvdW5kaW5nUmVjdCk7CiAgICAgICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAg
ICAgICAgICAgICAgICAgICAgLy8gU2luY2UgaXQgd2lsbCBiZSBibHVycmVkIGFueXdheSwgd2Ug
ZG9uJ3QgY2FyZSBhYm91dCByZW5kZXIgaGludHMuCiAgICAgICAgICAgICAgICAgICAgIHNoYWRv
d1BhaW50ZXItPnNldEZvbnQocC0+Zm9udCgpKTsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93
UGFpbnRlci0+c2V0UGVuKGN0eFNoYWRvdy0+bV9jb2xvcik7CiAgICAgICAgICAgICAgICAgICAg
IHNoYWRvd1BhaW50ZXItPmRyYXdUZXh0KHB0LCBzdHJpbmcsIGZsYWdzLCBydW4ucGFkZGluZygp
KTsKLSAgICAgICAgICAgICAgICAgICAgY3R4U2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsKKyAg
ICAgICAgICAgICAgICAgICAgY3R4U2hhZG93LT5lbmRTaGFkb3dMYXllcihjdHgpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChjdHgtPnRleHRE
cmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2UpIHsKQEAgLTIyNSwxMiArMjI1LDEyIEBAIHN0
YXRpYyB2b2lkIGRyYXdUZXh0Q29tbW9uKEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBUZXh0
UnVuJiBydW4sIGNvbnN0IEZsb2F0CiAjZWxzZQogICAgICAgICAgICAgICAgIFFSZWN0RiBib3Vu
ZGluZ1JlY3QocHQueCgpLCBwb2ludC55KCkgLSBmbS5hc2NlbnQoKSwgZm0ud2lkdGgoc3RyaW5n
KSwgZm0uaGVpZ2h0KCkpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRv
d1BhaW50ZXIgPSBjdHhTaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsK
KyAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IGN0eFNoYWRvdy0+YmVn
aW5TaGFkb3dMYXllcihjdHgsIGJvdW5kaW5nUmVjdCk7CiAgICAgICAgICAgICAgICAgaWYgKHNo
YWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2UgaXQgd2lsbCBiZSBi
bHVycmVkIGFueXdheSwgd2UgZG9uJ3QgY2FyZSBhYm91dCByZW5kZXIgaGludHMuCiAgICAgICAg
ICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldEZvbnQocC0+Zm9udCgpKTsKICAgICAgICAg
ICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c3Ryb2tlUGF0aCh0ZXh0U3Ryb2tlUGF0aCwgUVBl
bihjdHhTaGFkb3ctPm1fY29sb3IpKTsKLSAgICAgICAgICAgICAgICAgICAgY3R4U2hhZG93LT5l
bmRTaGFkb3dMYXllcihwKTsKKyAgICAgICAgICAgICAgICAgICAgY3R4U2hhZG93LT5lbmRTaGFk
b3dMYXllcihjdHgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0
LmNwcAppbmRleCAwY2Y2ZjIyMzA0NDJhNjZkOWRkNjg3NDRjZDA3MjFlMWY0NTFmNDBhLi44ZWNi
NjY2OTYyNWM3OWYyZDY3MGYxOTUzYWE0NGY3NzEwYzMwZjA2IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtNTEwLDEzICs1
MTAsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250ZXh0U2hhZG93
KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0gICAgICAgIGlmIChzaGFkb3ctPm11c3RVc2VD
b250ZXh0U2hhZG93KHApIHx8IG1fc3RhdGUuZmlsbFBhdHRlcm4gfHwgbV9zdGF0ZS5maWxsR3Jh
ZGllbnQpCisgICAgICAgIGlmIChzaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KHRoaXMpIHx8
IG1fc3RhdGUuZmlsbFBhdHRlcm4gfHwgbV9zdGF0ZS5maWxsR3JhZGllbnQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRv
d0xheWVyKHAsIHBsYXRmb3JtUGF0aC5jb250cm9sUG9pbnRSZWN0KCkpOworICAgICAgICAgICAg
UVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIodGhpcywg
cGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKSk7CiAgICAgICAgICAgICBpZiAoc2hhZG93
UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9u
TW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAg
c2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3IobV9kYXRhLT5zaGFk
b3cubV9jb2xvcikpOwotICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7
CisgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcih0aGlzKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hh
ZG93LT5vZmZzZXQoKTsKQEAgLTU0OCwxNSArNTQ4LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFk
b3coKSkgewogICAgICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7
Ci0gICAgICAgIGlmIChzaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KHApIHx8IG1fc3RhdGUu
c3Ryb2tlUGF0dGVybiB8fCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50KQorICAgICAgICBpZiAoc2hh
ZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyh0aGlzKSB8fCBtX3N0YXRlLnN0cm9rZVBhdHRlcm4g
fHwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudCkKICAgICAgICAgewogICAgICAgICAgICAgRmxvYXRS
ZWN0IGJvdW5kaW5nUmVjdCA9IHBsYXRmb3JtUGF0aC5jb250cm9sUG9pbnRSZWN0KCk7CiAgICAg
ICAgICAgICBib3VuZGluZ1JlY3QuaW5mbGF0ZShwZW4ubWl0ZXJMaW1pdCgpICsgcGVuLndpZHRo
RigpKTsKLSAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdp
blNoYWRvd0xheWVyKHAsIGJvdW5kaW5nUmVjdCk7CisgICAgICAgICAgICBRUGFpbnRlciogc2hh
ZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcih0aGlzLCBib3VuZGluZ1JlY3Qp
OwogICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICBzaGFk
b3dQYWludGVyLT5zZXRPcGFjaXR5KHN0YXRpY19jYXN0PHFyZWFsPihtX2RhdGEtPnNoYWRvdy5t
X2NvbG9yLmFscGhhKCkpIC8gMjU1KTsKICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5z
dHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgcGVuKTsKLSAgICAgICAgICAgICAgICBzaGFkb3ctPmVu
ZFNoYWRvd0xheWVyKHApOworICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIo
dGhpcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBRUGVu
IHNoYWRvd1BlbihwZW4pOwpAQCAtNjYzLDMzICs2NjMsMzMgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgQWZmaW5lVHJhbnNm
b3JtIGFmZmluZTsKICAgICAgICAgUUJydXNoIGJydXNoKG1fc3RhdGUuZmlsbFBhdHRlcm4tPmNy
ZWF0ZVBsYXRmb3JtUGF0dGVybihhZmZpbmUpKTsKICAgICAgICAgUVBpeG1hcCogaW1hZ2UgPSBt
X3N0YXRlLmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKLSAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBtX2RhdGEtPmhhc1NoYWRv
dygpID8gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHAsIG5vcm1hbGl6ZWRSZWN0KSA6IDA7Cisg
ICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gbV9kYXRhLT5oYXNTaGFkb3coKSA/IHNo
YWRvdy0+YmVnaW5TaGFkb3dMYXllcih0aGlzLCBub3JtYWxpemVkUmVjdCkgOiAwOwogICAgICAg
ICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgZHJhd1JlcGVhdFBhdHRlcm4oc2hh
ZG93UGFpbnRlciwgaW1hZ2UsIG5vcm1hbGl6ZWRSZWN0LCBtX3N0YXRlLmZpbGxQYXR0ZXJuLT5y
ZXBlYXRYKCksIG1fc3RhdGUuZmlsbFBhdHRlcm4tPnJlcGVhdFkoKSk7CiAgICAgICAgICAgICBz
aGFkb3dQYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9k
ZV9Tb3VyY2VJbik7CiAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxsUmVjdChub3JtYWxp
emVkUmVjdCwgc2hhZG93LT5tX2NvbG9yKTsKLSAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93
TGF5ZXIocCk7CisgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHRoaXMpOwogICAg
ICAgICB9CiAgICAgICAgIGRyYXdSZXBlYXRQYXR0ZXJuKHAsIGltYWdlLCBub3JtYWxpemVkUmVj
dCwgbV9zdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WCgpLCBtX3N0YXRlLmZpbGxQYXR0ZXJuLT5y
ZXBlYXRZKCkpOwogICAgIH0gZWxzZSBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQpIHsKICAgICAg
ICAgUUJydXNoIGJydXNoKCptX3N0YXRlLmZpbGxHcmFkaWVudC0+cGxhdGZvcm1HcmFkaWVudCgp
KTsKICAgICAgICAgYnJ1c2guc2V0VHJhbnNmb3JtKG1fc3RhdGUuZmlsbEdyYWRpZW50LT5ncmFk
aWVudFNwYWNlVHJhbnNmb3JtKCkpOwotICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9
IG1fZGF0YS0+aGFzU2hhZG93KCkgPyBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgbm9ybWFs
aXplZFJlY3QpIDogMDsKKyAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBtX2RhdGEt
Pmhhc1NoYWRvdygpID8gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIG5vcm1hbGl6ZWRS
ZWN0KSA6IDA7CiAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICBzaGFk
b3dQYWludGVyLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOwogICAgICAgICAgICAg
c2hhZG93UGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1v
ZGVfU291cmNlSW4pOwogICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFs
aXplZFJlY3QsIHNoYWRvdy0+bV9jb2xvcik7Ci0gICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRv
d0xheWVyKHApOworICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcih0aGlzKTsKICAg
ICAgICAgfQogICAgICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7Ci0gICAgICAgICAg
ICBpZiAoc2hhZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhwKSkgewotICAgICAgICAgICAgICAg
IFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHAsIG5v
cm1hbGl6ZWRSZWN0KTsKKyAgICAgICAgICAgIGlmIChzaGFkb3ctPm11c3RVc2VDb250ZXh0U2hh
ZG93KHRoaXMpKSB7CisgICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBz
aGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpOwogICAgICAgICAg
ICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1Bh
aW50ZXItPnNldE9wYWNpdHkoc3RhdGljX2Nhc3Q8cXJlYWw+KHNoYWRvdy0+bV9jb2xvci5hbHBo
YSgpKSAvIDI1NSk7CiAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZpbGxSZWN0
KG5vcm1hbGl6ZWRSZWN0LCBwLT5icnVzaCgpKTsKLSAgICAgICAgICAgICAgICAgICAgc2hhZG93
LT5lbmRTaGFkb3dMYXllcihwKTsKKyAgICAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFk
b3dMYXllcih0aGlzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIC8vIFNvbGlkIHJlY3RhbmdsZSBmaWxsIHdpdGggbm8gYmx1ciBzaGFk
b3cgb3IgdHJhbnNmb3JtYXRpb25zIGFwcGxpZWQgY2FuIGJlIGRvbmUKQEAgLTcxNiwxMiArNzE2
LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFk
b3coKSkgewogICAgICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7
Ci0gICAgICAgIGlmIChzaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KHApKSB7Ci0gICAgICAg
ICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihw
LCBub3JtYWxpemVkUmVjdCk7CisgICAgICAgIGlmIChzaGFkb3ctPm11c3RVc2VDb250ZXh0U2hh
ZG93KHRoaXMpKSB7CisgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRv
dy0+YmVnaW5TaGFkb3dMYXllcih0aGlzLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICBp
ZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENv
bXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAg
ICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHNoYWRvdy0+
bV9jb2xvcik7Ci0gICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsKKyAg
ICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHRoaXMpOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0
LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9jb2xvcik7CkBAIC03NDAs
MTIgKzc0MCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZgogICAgIFFQYWludGVyKiBwID0g
bV9kYXRhLT5wKCk7CiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29u
dGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotICAgICAgICBpZiAoc2hhZG93
LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhwKSkgewotICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRv
d1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcmVjdCk7CisgICAgICAgIGlm
IChzaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KHRoaXMpKSB7CisgICAgICAgICAgICBRUGFp
bnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcih0aGlzLCByZWN0
KTsKICAgICAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICAgICAgc2hh
ZG93UGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVf
U291cmNlKTsKICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxsUGF0aChwYXRoLnBs
YXRmb3JtUGF0aCgpLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcikpOwotICAgICAgICAg
ICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CisgICAgICAgICAgICAgICAgc2hhZG93
LT5lbmRTaGFkb3dMYXllcih0aGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShtX2RhdGEtPnNoYWRvdy5vZmZzZXQoKSk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAppbmRleCBmNzEzZDM3M2U3MGUwNzAz
MDQ0ODczZDUxZjBlNTJmNDU4ZTIyNjkwLi40OWFmZDI5Zjc0YWIxZjQ5ZjcxYmY5NzdjOWE4YmI2
ZmNkMmI0YjVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdl
UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKQEAg
LTIwOSwxMSArMjA5LDExIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwKIAogICAgIENvbnRleHRTaGFkb3cqIHNoYWRv
dyA9IGN0eHQtPmNvbnRleHRTaGFkb3coKTsKICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29u
dGV4dFNoYWRvdzo6Tm9TaGFkb3cpIHsKLSAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIg
PSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocGFpbnRlciwgbm9ybWFsaXplZERzdCk7CisgICAg
ICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGN0
eHQsIG5vcm1hbGl6ZWREc3QpOwogICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAg
ICAgICAgc2hhZG93UGFpbnRlci0+c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93
LT5tX2NvbG9yLmFscGhhKCkpIC8gMjU1KTsKICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmRy
YXdQaXhtYXAobm9ybWFsaXplZERzdCwgKmltYWdlLCBub3JtYWxpemVkU3JjKTsKLSAgICAgICAg
ICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocGFpbnRlcik7CisgICAgICAgICAgICBzaGFkb3ct
PmVuZFNoYWRvd0xheWVyKGN0eHQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKaW5kZXggNTFjOTQ5OWVmNzk2NDNj
ZmEyZjg0ZjMxYjk5YmJiNGNhMmY5MDA3YS4uM2IwODk5NThjYTczZDVmMjU4ZTFlNDM3Njg1N2I1
MDg2YTY1ZGU3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGls
bEltYWdlUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFn
ZVF0LmNwcApAQCAtNzQsMTkgKzc0LDE3IEBAIHZvaWQgU3RpbGxJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAogICAgIENvbXBvc2l0ZU9wZXJh
dG9yIHByZXZpb3VzT3BlcmF0b3IgPSBjdHh0LT5jb21wb3NpdGVPcGVyYXRpb24oKTsKICAgICBj
dHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwogCi0gICAgUVBhaW50ZXIqIHBhaW50ZXIg
PSBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLQogICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9
IGN0eHQtPmNvbnRleHRTaGFkb3coKTsKICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4
dFNoYWRvdzo6Tm9TaGFkb3cpIHsKLSAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBz
aGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocGFpbnRlciwgbm9ybWFsaXplZERzdCk7CisgICAgICAg
IFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGN0eHQs
IG5vcm1hbGl6ZWREc3QpOwogICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAg
ICAgc2hhZG93UGFpbnRlci0+c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5t
X2NvbG9yLmFscGhhKCkpIC8gMjU1KTsKICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmRyYXdQ
aXhtYXAobm9ybWFsaXplZERzdCwgKm1fcGl4bWFwLCBub3JtYWxpemVkU3JjKTsKLSAgICAgICAg
ICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocGFpbnRlcik7CisgICAgICAgICAgICBzaGFkb3ct
PmVuZFNoYWRvd0xheWVyKGN0eHQpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcGFpbnRlci0+
ZHJhd1BpeG1hcChub3JtYWxpemVkRHN0LCAqbV9waXhtYXAsIG5vcm1hbGl6ZWRTcmMpOworICAg
IGN0eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3UGl4bWFwKG5vcm1hbGl6ZWREc3QsICptX3Bp
eG1hcCwgbm9ybWFsaXplZFNyYyk7CiAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBy
ZXZpb3VzT3BlcmF0b3IpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>