<?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>55150</bug_id>
          
          <creation_ts>2011-02-24 08:30:10 -0800</creation_ts>
          <short_desc>[Cairo] Better separate the concerns of GraphicsContextCairo</short_desc>
          <delta_ts>2011-04-05 12:19:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>alex</cc>
    
    <cc>bfulgham</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>krit</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>357026</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-24 08:30:10 -0800</bug_when>
    <thetext>Since GraphicsContextPlatformPrivate is an increasingly heavyweight class we should fix the member naming and hide it&apos;s members behind getters and setters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362083</commentid>
    <comment_count>1</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-03 16:47:44 -0800</bug_when>
    <thetext>I renamed this bug because I think that instead of just fixing the member naming of the private data of the Cairo context, this bug should track cleaning up the private data in general. I would like to see us split out the private data into two sections, the private data which would be totally internal to the GraphicsContext and into a new PlatformContextCairo (like in the Skia) port which exposes things to external classes such as Font and Image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362708</commentid>
    <comment_count>2</comment_count>
      <attachid>84800</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-04 14:42:36 -0800</bug_when>
    <thetext>Created attachment 84800
Patch introducing PlatformContextCairo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362720</commentid>
    <comment_count>3</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-03-04 14:57:51 -0800</bug_when>
    <thetext>Attachment 84800 did not build on gtk:
Build output: http://queues.webkit.org/results/8087736</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362774</commentid>
    <comment_count>4</comment_count>
      <attachid>84821</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-04 16:05:40 -0800</bug_when>
    <thetext>Created attachment 84821
Patch with missing files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363867</commentid>
    <comment_count>5</comment_count>
      <attachid>84821</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-03-08 00:16:27 -0800</bug_when>
    <thetext>Comment on attachment 84821
Patch with missing files

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

&gt; Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:205
&gt; +    m_data = new GraphicsContextPlatformPrivate(platformContext);;

There&apos;s an additional trailing ; here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364107</commentid>
    <comment_count>6</comment_count>
      <attachid>84821</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2011-03-08 12:33:11 -0800</bug_when>
    <thetext>Comment on attachment 84821
Patch with missing files

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

Looks fine to me.  My only minor nit is that the repeated stanzas of code required to go from cairo_t* to GraphicsContext seem unattractive.

&gt; Source/WebCore/platform/graphics/cairo/PathCairo.cpp:290
&gt; +        GraphicsContext gc(&amp;platformContext);

Would a GraphicsContext constructor from cairo_t make sense here?  Seems inconvenient to have to create these temporaries if this is done in a lot of places.

&gt; Source/WebCore/platform/graphics/cairo/PathCairo.cpp:316
&gt; +    GraphicsContext gc(&amp;platformContext);

Ditto above...

&gt; Source/WebCore/platform/graphics/win/ImageCairoWin.cpp:83
&gt; +    GraphicsContext gc(&amp;platformContext);

Again, declaring a stack temporary just to convert to GraphicsContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364122</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-08 13:02:03 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 84821 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84821&amp;action=review

Thanks for the comments.

&gt; Looks fine to me.  My only minor nit is that the repeated stanzas of code required to go from cairo_t* to GraphicsContext seem unattractive.

Many of them will go away over time as I move more code into PlatformContextCairo. 

&gt; &gt; Source/WebCore/platform/graphics/cairo/PathCairo.cpp:290
&gt; &gt; +        GraphicsContext gc(&amp;platformContext);
&gt; 
&gt; Would a GraphicsContext constructor from cairo_t make sense here?  Seems inconvenient to have to create these temporaries if this is done in a lot of places.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cairo/PathCairo.cpp:316
&gt; &gt; +    GraphicsContext gc(&amp;platformContext);
&gt; 
&gt; Ditto above...
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/win/ImageCairoWin.cpp:83
&gt; &gt; +    GraphicsContext gc(&amp;platformContext);
&gt; 
&gt; Again, declaring a stack temporary just to convert to GraphicsContext.

There are a few options here. We can either allocate the PlatformContext on the stack like we do, or make the PlatformContext reference counted. I believe I attempted the reference counted approach at some point, but found it to be messier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364152</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-08 14:14:20 -0800</bug_when>
    <thetext>(In reply to comment #7)

&gt; There are a few options here. We can either allocate the PlatformContext on the stack like we do, or make the PlatformContext reference counted. I believe I attempted the reference counted approach at some point, but found it to be messier.

I suppose the other option would be to make the GraphicsContextPrivateWinCairo class shared between both ports and have a specialized constructor just for Cairo. I was kind of hoping to remove all Cairo-realted ifdefs from the code eventually. I&apos;ll give this a shot though. It might be fairly clean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364173</commentid>
    <comment_count>9</comment_count>
      <attachid>85096</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-08 14:54:28 -0800</bug_when>
    <thetext>Created attachment 85096
Patch with Carlos&apos; and Brett&apos;s suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376429</commentid>
    <comment_count>10</comment_count>
      <attachid>85096</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-03-30 10:11:16 -0700</bug_when>
    <thetext>Comment on attachment 85096
Patch with Carlos&apos; and Brett&apos;s suggestions

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

LGTM. r=me. Just a minor change before landing:

&gt; Source/WebCore/platform/graphics/win/GraphicsContextCairoWin.cpp:134
&gt; +    cairo_scale(cr, 1.0, -1.0);

can you change it to webkit style and remove the dot please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376648</commentid>
    <comment_count>11</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-30 13:56:57 -0700</bug_when>
    <thetext>Committed r82496: &lt;http://trac.webkit.org/changeset/82496&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376689</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 14:41:25 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82496 might have broken EFL Linux Release (Build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377020</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-03-31 02:55:22 -0700</bug_when>
    <thetext>Reopening and rolling out. This patch and the 8 (so far) consequent &quot;build fixes&quot; heavily broke the 3 GTK buildslaves. It seems there&apos;s a memory leak somewhere, further investigation is needed but for now we need green bots.

Commits:

d39efe2f959a849e808b08726c0e95d4353b6645 r82551
cf8651a8a2919c1dd0aeef863bc5687d0f692122 r82526
3c040019368151ca73ae4782e678da6b204682c4 r82549
cfe6d231f09039ce5f6174ddfbebcc4395427f72 r82548
1f799e21426193c9952386fc0da51a156bd5918e r82544
112fb6e0edeac74b2a8a753352db7273ed7f0ad6 r82541
9a936c79aa9eb5349c742f1bc38e4a5a9237c94d r82513
1ec45f8df5bdda46b2d003d8d428307d64d49092 r82504
03d82ab57a2ba5955e52792bf9daf02f57f46e63 r82496

The affected ports are GTK, WinCairo, EFL and WebKit2GTK.

http://trac.webkit.org/changeset/82553</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378992</commentid>
    <comment_count>14</comment_count>
      <attachid>88107</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-04 13:08:57 -0700</bug_when>
    <thetext>Created attachment 88107
Patch fixing issues with previous version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378996</commentid>
    <comment_count>15</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-04 13:12:34 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=88107) [details]
&gt; Patch fixing issues with previous version

I have uploaded a new version of this patch which:

1. Fixes the build on WinCairo and EFL.
2. Properly initializes m_updatingControlTints when constructing a GraphicsContext with a cairo_t.
3. Makes the PlatformContextCairo destructor virtual, fixing a memory leak.

I&apos;ve tested this patch on GTK+ and WinCairo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378999</commentid>
    <comment_count>16</comment_count>
      <attachid>88107</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-04 13:13:26 -0700</bug_when>
    <thetext>Comment on attachment 88107
Patch fixing issues with previous version

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

Looks sane to me.

&gt; Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:1208
&gt; +    cairo_t* cr = platformContext()-&gt;cr();

seems you might want a cr() method on GraphicsContext itself give how often you call this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379733</commentid>
    <comment_count>17</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-05 10:45:52 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; seems you might want a cr() method on GraphicsContext itself give how often you call this.

Thanks for the review! I will do this in a followup patch in the interest of keeping this one smaller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379797</commentid>
    <comment_count>18</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-04-05 12:19:09 -0700</bug_when>
    <thetext>Committed r82962: &lt;http://trac.webkit.org/changeset/82962&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84800</attachid>
            <date>2011-03-04 14:42:36 -0800</date>
            <delta_ts>2011-03-04 16:05:37 -0800</delta_ts>
            <desc>Patch introducing PlatformContextCairo</desc>
            <filename>bug-55150-20110304144234.patch</filename>
            <type>text/plain</type>
            <size>55159</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAyNDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjMxZDU5MGQ2N2ZkMTAx
ODVhNjI3ZmJlYzMxZGI2MGNjZjM3N2ExLi4zNTFlMTk5MTM2NTFmOGY0YTU5MjY5NzdmMjQzYjQ4
YTExNjA2ZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDMtMDQgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDYWlyb10gQmV0dGVyIHNlcGFyYXRlIHRoZSBj
b25jZXJucyBvZiBHcmFwaGljc0NvbnRleHRDYWlybworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxNTAKKworICAgICAgICBBZGQgYSBQbGF0Zm9ybUNv
bnRleHRDYWlybyB3aGljaCByaWdodCBub3cgc3RvcmVzIHRoZSBjYWlyb190KiBmb3IgYQorICAg
ICAgICBHcmFwaGljc0NvbnRleHRDYWlyby4gTGF0ZXIgcGF0Y2hlcyB3aWxsIG1vdmUgbG9naWMg
Zm9yIHRyYWNraW5nIENvbnRleHRTaGFkb3cKKyAgICAgICAgYW5kIGltYWdlIG1hc2tpbmcgbGF5
ZXJzIGludG8gdGhpcyBQbGF0Zm9ybUNvbnRleHRDYWlybyBjbGFzcy4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIFRoaXMgcGF0Y2ggaXMgb25seSBhIGNvZGUgY2xlYW51cC4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOiBUaGUgcGxhdGZvcm0gY29udGV4dCBpcyBubyBsb25nZXIgYQorICAgICAgICBjYWly
b190LCBidXQgb3VyIG5ldyBjbGFzcyB0aGUgUGxhdGZvcm1Db250ZXh0Q2Fpcm8uCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcDogVXBkYXRl
ZCB0byByZWZsZWN0IG5ldyBjbGFzcy5qCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udENhaXJvLmNwcDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhZGllbnRDYWlyby5jcHA6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDogTW9zdGx5IG1lY2hhbmljYWwKKyAgICAg
ICAgY2hhbmdlcyB3aGljaCBub3cgcmVmZXJlbmNlIHBsYXRmb3JtQ29udGV4dCgpLT5jcigpIHRv
IGdldCB0aGUgY2Fpcm9fdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oOiBOb3cgaG9sZCB0aGUKKyAgICAgICAg
UGxhdGZvcm1Db250ZXh0Q2Fpcm8gaW5zdGVhZCBvZiB0aGUgY2Fpcm9fdC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDogVXBkYXRlIHRvIHJl
ZmxlY3QgbmV3IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
Q2Fpcm8uY3BwOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRo
Q2Fpcm8uY3BwOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0
Zm9ybUNvbnRleHRDYWlyby5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcDogVXBkYXRlIHRvIHJlZmxlY3QgbmV3IGNsYXNzLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcDogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDog
Tm93IGZpbGwgb3V0CisgICAgICAgIG1fZGF0YSB3aXRoIGEgcHJpdmF0ZSBzZWN0aW9uIGNvbnRh
aW5pbmcgdGhlIHBsYXRmb3JtIGNvbnRleHQgaW5zdGVhZCBvZgorICAgICAgICBqdXN0IGEgY2Fp
cm9fdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOiBVcGRhdGUg
dG8gcmVmbGVjdCBuZXcgY2xhc3MuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRl
cmluZ0NvbnRleHQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldpZGdldFJlbmRlcmlu
Z0NvbnRleHQ6On5XaWRnZXRSZW5kZXJpbmdDb250ZXh0KTogRGl0dG8uCisgICAgICAgICogcGx1
Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHA6IERpdHRvLgorCiAyMDExLTAzLTAzICBNYXJ0aW4g
Um9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBYSFRNTE1QIGJ1aWxk
IGJyb2tlbiBhZnRlciByNzgzNDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYTAyMTgxMWVlMzVk
NjdmNTEzNjMzMGJiZTI1MDMwODQzMzljZmM1Ny4uNzFlZjE2NGRiZTBkNDdmOTM3ZTAyZDVmZGYx
NWFlNGY3MTA3YzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTM3MDcsNiArMzcwNyw4IEBA
IHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vT3duUHRyQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGF0aENhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fp
cm8uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKaW5kZXggNGY5NzZiMzNkOTkyMmJlODA2OGExZDg3YTg3MGRlMGQ2Yjg4ZmZk
Yi4uM2EzYjcwZDA1MWU5NTczZWIxMDliNmNkYWI1ZDU3ZDNlNzA2YjIxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQy
LDggKzQyLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0IFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0OwogI2VsaWYgUExBVEZPUk0oQ0FJUk8pCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
b250ZXh0U2hhZG93OworY2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm87CiB9Ci10eXBlZGVmIHN0
cnVjdCBfY2Fpcm8gUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7Cit0eXBlZGVmIFdlYkNvcmU6OlBs
YXRmb3JtQ29udGV4dENhaXJvIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwogI2VsaWYgUExBVEZP
Uk0oT1BFTlZHKQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU3VyZmFjZU9wZW5WRzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRT
aGFkb3dDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
b250ZXh0U2hhZG93Q2Fpcm8uY3BwCmluZGV4IGIwNTg4ZDY1YzU2MjgwOGRmOGNlN2QyMzBkZDFm
YjQzMjY5ZTAwN2YuLjBmOTBjZTRjMDUyZDYxZjU2ZTc5Yjg3Y2QwODhhYzQ0ZjAyMGM1ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRT
aGFkb3dDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIk93blB0ckNhaXJvLmgiCiAjaW5jbHVkZSAiUGF0
aC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKICNpbmNsdWRlIDxjYWlyby5oPgogCkBAIC04OCw3ICs4OSw3IEBAIFBsYXRmb3JtQ29udGV4
dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QKICAgICBhZGp1c3RCbHVyRGlzdGFuY2UoY29udGV4dCk7CiAKICAgICBkb3VibGUg
eDEsIHgyLCB5MSwgeTI7Ci0gICAgY2Fpcm9fY2xpcF9leHRlbnRzKGNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLCAmeDEsICZ5MSwgJngyLCAmeTIpOworICAgIGNhaXJvX2NsaXBfZXh0ZW50cyhj
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgJngxLCAmeTEsICZ4MiwgJnkyKTsKICAg
ICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnRleHQs
IGxheWVyQXJlYSwgSW50UmVjdCh4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEpKTsKIAogICAgIC8v
IERvbid0IHBhaW50IGlmIHdlIGFyZSB0b3RhbGx5IG91dHNpZGUgdGhlIGNsaXAgcmVnaW9uLgpA
QCAtMTIwLDcgKzEyMSw3IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQogICAgICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHko
bV9sYXllckltYWdlKTsKICAgICB9CiAKLSAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpOworICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgc2V0U291cmNlUkdCQUZyb21Db2xv
cihjciwgbV9jb2xvcik7CiAgICAgY2Fpcm9fbWFza19zdXJmYWNlKGNyLCBtX2xheWVySW1hZ2Us
IG1fbGF5ZXJPcmlnaW4ueCgpLCBtX2xheWVyT3JpZ2luLnkoKSk7CkBAIC0xOTgsNyArMTk5LDcg
QEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBpbnQgaW50ZXJuYWxTaGFkb3dIZWlnaHQg
PSByYWRpdXNUd2ljZSArIG1heCh0b3BMZWZ0UmFkaXVzLmhlaWdodCgpLCB0b3BSaWdodFJhZGl1
cy5oZWlnaHQoKSkgKwogICAgICAgICBtYXgoYm90dG9tTGVmdFJhZGl1cy5oZWlnaHQoKSwgYm90
dG9tUmlnaHRSYWRpdXMuaGVpZ2h0KCkpOwogCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpOwogCiAgICAgLy8gZHJhd1NoYWRvd2VkUmVjdCBzdGlsbCBkb2VzIG5vdCB3
b3JrIHdpdGggcm90YXRpb25zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NTA0MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKaW5kZXggMmQ3OTQ5OTgwMjRjMDdhNDEzZWZmMDU0ZmU0
Y2EwODUyN2IzZWY4ZS4uNThhN2ZkMmIwYzgzMWFjMDc4MTUyMDFiYmYxZDNhNDA5YjY1ZGQzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q2Fpcm8uY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKICNp
bmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNp
bmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKQEAgLTY0LDcg
KzY1LDcgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1RvQ29udGV4dChjYWlyb190KiBjb250ZXh0
LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgR2wKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lk
IGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNhaXJv
X3QqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBTaW1wbGVGb250RGF0
YSogZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBpbnQgbnVtR2x5cGhzKQorc3RhdGlj
IHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBHbHlw
aEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlwaHMpCiB7CiAgICAgQ29udGV4dFNoYWRv
dyogc2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LT5jb250ZXh0U2hhZG93KCk7CiAgICAgQVNTRVJU
KHNoYWRvdyk7CkBAIC03NCw2ICs3NSw3IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3co
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNhaXJvX3QqIGNvbnRleHQsCiAKICAg
ICBpZiAoIXNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3coZ3JhcGhpY3NDb250ZXh0KSkgewog
ICAgICAgICAvLyBPcHRpbWl6ZSBub24tYmx1cnJ5IHNoYWRvd3MsIGJ5IGp1c3QgZHJhd2luZyB0
ZXh0IHdpdGhvdXQgdGhlIENvbnRleHRTaGFkb3cuCisgICAgICAgIGNhaXJvX3QqIGNvbnRleHQg
PSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgICAgICBjYWly
b19zYXZlKGNvbnRleHQpOwogICAgICAgICBjYWlyb190cmFuc2xhdGUoY29udGV4dCwgc2hhZG93
LT5tX29mZnNldC53aWR0aCgpLCBzaGFkb3ctPm1fb2Zmc2V0LmhlaWdodCgpKTsKICAgICAgICAg
c2V0U291cmNlUkdCQUZyb21Db2xvcihjb250ZXh0LCBzaGFkb3ctPm1fY29sb3IpOwpAQCAtMTA2
LDkgKzEwOCwxMCBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogICAgICAgICBvZmZzZXQgKz0g
Z2x5cGhCdWZmZXIuYWR2YW5jZUF0KGZyb20gKyBpKTsKICAgICB9CiAKLSAgICBjYWlyb190KiBj
ciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgIGRyYXdHbHlwaHNTaGFkb3coY29u
dGV4dCwgY3IsIHBvaW50LCBmb250LCBnbHlwaHMsIG51bUdseXBocyk7CisgICAgUGxhdGZvcm1D
b250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
OworICAgIGRyYXdHbHlwaHNTaGFkb3coY29udGV4dCwgcG9pbnQsIGZvbnQsIGdseXBocywgbnVt
R2x5cGhzKTsKIAorICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LT5jcigpOwogICAg
IGNhaXJvX3NhdmUoY3IpOwogICAgIHByZXBhcmVDb250ZXh0Rm9yR2x5cGhEcmF3aW5nKGNyLCBm
b250LCBwb2ludCk7CiAgICAgaWYgKGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1v
ZGVGaWxsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFkaWVudENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwCmluZGV4IDRlNmVkMDdlYTM1OWIxY2NjNmMyMmRiM2Yz
YTk3ZmNjOTA4NTg2YWQuLjIyNTA0NmFhM2FhMTM5ZmU0MjlmN2Q5ZjQ5ZWQ1NzY2NmRhYTJjMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRp
ZW50Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYWRpZW50Q2Fpcm8uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDU1NQYXJz
ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNv
bnRleHRDYWlyby5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTg3LDcgKzg4LDcgQEAgdm9pZCBHcmFkaWVudDo6c2V0UGxhdGZvcm1HcmFkaWVudFNwYWNl
VHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZ3JhZGllbnQKIAogdm9pZCBHcmFkaWVu
dDo6ZmlsbChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
IHsKLSAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIGNh
aXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAKICAgICBjb250
ZXh0LT5zYXZlKCk7CiAgICAgY2Fpcm9fc2V0X3NvdXJjZShjciwgcGxhdGZvcm1HcmFkaWVudCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCBlNjlhN2E1YjY0MDBjZTg0NjQw
M2RjYjc3ZTYzYWFkNTI0ZjYzMmFlLi4yZmZjYjNmMTZmYjU4ZWQ2YTk5MmJiN2E5OTM4NWFiODRh
YzU0MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC00Nyw2ICs0Nyw3IEBA
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVk
ZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVk
ZSAiUmVmUHRyQ2Fpcm8uaCIKICNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgogI2luY2x1ZGUg
PGNhaXJvLmg+CkBAIC0xNDgsNyArMTQ5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRo
U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUGF0aERyYXdpbmdTdHlsZSBkcmEKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSBleHRlbnRzIG9mIHRoZSByZW5k
ZXJlZCBzb2xpZCBwYXRocy4KLSAgICBjYWlyb190KiBjYWlyb0NvbnRleHQgPSBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlyb190KiBjYWlyb0NvbnRleHQgPSBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBPd25QdHI8Y2Fpcm9fcGF0aF90PiBwYXRoKGNh
aXJvX2NvcHlfcGF0aChjYWlyb0NvbnRleHQpKTsKIAogICAgIEZsb2F0UmVjdCBzb2xpZEZpZ3Vy
ZUV4dGVudHM7CkBAIC0xOTksMTIgKzIwMCwxMyBAQCBzdGF0aWMgdm9pZCBzdHJva2VDdXJyZW50
Q2Fpcm9QYXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgIGNhaXJvX3QqIGNhaXJvQ29udAog
ICAgIGNhaXJvX25ld19wYXRoKGNhaXJvQ29udGV4dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybUluaXQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGNyKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdChQbGF0Zm9ybUNvbnRleHRDYWlybyogcGxhdGZvcm1D
b250ZXh0KQogewotICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGU7Ci0gICAgbV9kYXRhLT5jciA9IGNhaXJvX3JlZmVyZW5jZShjcik7Ci0gICAgbV9kYXRhLT5z
eW5jQ29udGV4dChjcik7Ci0gICAgc2V0UGFpbnRpbmdEaXNhYmxlZCghY3IpOworICAgIG1fZGF0
YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUocGxhdGZvcm1Db250ZXh0KTs7
CisgICAgaWYgKHBsYXRmb3JtQ29udGV4dCkKKyAgICAgICAgbV9kYXRhLT5zeW5jQ29udGV4dChw
bGF0Zm9ybUNvbnRleHQtPmNyKCkpOworICAgIGVsc2UKKyAgICAgICAgc2V0UGFpbnRpbmdEaXNh
YmxlZCh0cnVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRGVzdHJveSgp
CkBAIC0yMTQsMjAgKzIxNiwyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EZXN0
cm95KCkKIAogQWZmaW5lVHJhbnNmb3JtIEdyYXBoaWNzQ29udGV4dDo6Z2V0Q1RNKCkgY29uc3QK
IHsKLSAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpOworICAgIGNhaXJvX3QqIGNy
ID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fbWF0cml4X3QgbTsKICAgICBj
YWlyb19nZXRfbWF0cml4KGNyLCAmbSk7CiAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybShtLnh4
LCBtLnl4LCBtLnh5LCBtLnl5LCBtLngwLCBtLnkwKTsKIH0KIAotY2Fpcm9fdCogR3JhcGhpY3ND
b250ZXh0OjpwbGF0Zm9ybUNvbnRleHQoKSBjb25zdAorUGxhdGZvcm1Db250ZXh0Q2Fpcm8qIEdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Db250ZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9k
YXRhLT5jcjsKKyAgICByZXR1cm4gbV9kYXRhLT5wbGF0Zm9ybUNvbnRleHQ7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSgpCiB7Ci0gICAgY2Fpcm9fc2F2ZSht
X2RhdGEtPmNyKTsKKyAgICBjYWlyb19zYXZlKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpKTsKICAg
ICBtX2RhdGEtPnNhdmUoKTsKICAgICBtX2RhdGEtPnNoYWRvd1N0YWNrLmFwcGVuZChtX2RhdGEt
PnNoYWRvdyk7CiAgICAgbV9kYXRhLT5tYXNrSW1hZ2VTdGFjay5hcHBlbmQoSW1hZ2VNYXNrSW5m
b3JtYXRpb24oKSk7CkBAIC0yMzUsNyArMjM3LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNh
dmVQbGF0Zm9ybVN0YXRlKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9y
bVN0YXRlKCkKIHsKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCog
Y3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKwogICAgIGNvbnN0IEltYWdlTWFza0luZm9y
bWF0aW9uJiBtYXNrSW5mb3JtYXRpb24gPSBtX2RhdGEtPm1hc2tJbWFnZVN0YWNrLmxhc3QoKTsK
ICAgICBpZiAobWFza0luZm9ybWF0aW9uLmlzVmFsaWQoKSkgewogICAgICAgICBjb25zdCBGbG9h
dFJlY3QmIG1hc2tSZWN0ID0gbWFza0luZm9ybWF0aW9uLm1hc2tSZWN0KCk7CkBAIC0yNTEsNyAr
MjU0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAg
ICAgICAgbV9kYXRhLT5zaGFkb3dTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgfQogCi0gICAgY2Fp
cm9fcmVzdG9yZShtX2RhdGEtPmNyKTsKKyAgICBjYWlyb19yZXN0b3JlKGNyKTsKICAgICBtX2Rh
dGEtPnJlc3RvcmUoKTsKIH0KIApAQCAtMjYxLDcgKzI2NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsK
KyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3Nh
dmUoY3IpOwogCiAgICAgaWYgKGZpbGxDb2xvcigpLmFscGhhKCkpCkBAIC0yODksNyArMjkyLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBwb2ludDEs
IGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAgICAgaWYgKHN0eWxlID09IE5vU3Ryb2tlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9f
dCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAog
ICAgIGZsb2F0IHdpZHRoID0gc3Ryb2tlVGhpY2tuZXNzKCk7CkBAIC0zNzYsNyArMzc5LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbGxpcHNlKGNvbnN0IEludFJlY3QmIHJlY3QpCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9f
dCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCkt
PmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgZmxvYXQgeVJhZGl1cyA9IC41ICogcmVj
dC5oZWlnaHQoKTsKICAgICBmbG9hdCB4UmFkaXVzID0gLjUgKiByZWN0LndpZHRoKCk7CkBAIC00
MTUsNyArNDE4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRS
ZWN0JiByZWN0LCBpbnQgc3RhcnRBbmdsZSwgaW50IGFuZ2xlU3AKICAgICBmbG9hdCBmYSA9IHN0
YXJ0QW5nbGU7CiAgICAgZmxvYXQgZmFsZW4gPSAgZmEgKyBhbmdsZVNwYW47CiAKLSAgICBjYWly
b190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAogICAgIGlmICh3ICE9IGgpCkBAIC00OTIs
NyArNDk1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKHNpemVf
dCBucG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMKICAgICBpZiAobnBvaW50cyA8PSAx
KQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAg
Y2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKIAogICAgIGNhaXJvX3NhdmUo
Y3IpOwogICAgIGNhaXJvX3NldF9hbnRpYWxpYXMoY3IsIHNob3VsZEFudGlhbGlhcyA/IENBSVJP
X0FOVElBTElBU19ERUZBVUxUIDogQ0FJUk9fQU5USUFMSUFTX05PTkUpOwpAQCAtNTIyLDcgKzUy
NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVt
UG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2luCiAgICAgaWYgKG51bVBvaW50cyA8PSAxKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fp
cm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKIAogICAgIGNhaXJvX25ld19wYXRo
KGNyKTsKICAgICBjYWlyb19maWxsX3J1bGVfdCBzYXZlZEZpbGxSdWxlID0gY2Fpcm9fZ2V0X2Zp
bGxfcnVsZShjcik7CkBAIC01NDIsNyArNTQ1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZp
bGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJv
X3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgc2V0UGF0aE9uQ2Fpcm9Db250
ZXh0KGNyLCBwYXRoLnBsYXRmb3JtUGF0aCgpLT5jb250ZXh0KCkpOwogICAgIGZpbGxDdXJyZW50
Q2Fpcm9QYXRoKHRoaXMsIGNyKTsKIH0KQEAgLTU1Miw3ICs1NTUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5j
cjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIHNldFBh
dGhPbkNhaXJvQ29udGV4dChjciwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgpKTsKICAg
ICBzdHJva2VDdXJyZW50Q2Fpcm9QYXRoKHRoaXMsIGNyKTsKIH0KQEAgLTU2Miw3ICs1NjUsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJv
X3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgp
LT5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgcmVj
dC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgIGZpbGxD
dXJyZW50Q2Fpcm9QYXRoKHRoaXMsIGNyKTsKQEAgLTU3OCw3ICs1ODEsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYg
Y29sb3IsIENvbG9yUwogICAgICAgICBtX2RhdGEtPnNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlz
LCBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsKIAogICAgIGlmIChjb2xvci5hbHBoYSgpKQotICAg
ICAgICBmaWxsUmVjdFNvdXJjZU92ZXIobV9kYXRhLT5jciwgcmVjdCwgY29sb3IpOworICAgICAg
ICBmaWxsUmVjdFNvdXJjZU92ZXIocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QsIGNvbG9y
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQpAQCAtNTg2LDcgKzU4OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBw
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgp
LCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19maWxs
X3J1bGVfdCBzYXZlZEZpbGxSdWxlID0gY2Fpcm9fZ2V0X2ZpbGxfcnVsZShjcik7CiAgICAgY2Fp
cm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcpOwpAQCAtNjAwLDcg
KzYwMyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0aChjb25zdCBQYXRoJiBwYXRo
LCBXaW5kUnVsZSBjbGlwUnVsZSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCog
Y3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBzZXRQYXRoT25DYWlyb0NvbnRleHQo
Y3IsIHBhdGgucGxhdGZvcm1QYXRoKCktPmNvbnRleHQoKSk7CiAgICAgY2Fpcm9fc2V0X2ZpbGxf
cnVsZShjciwgY2xpcFJ1bGUgPT0gUlVMRV9FVkVOT0REID8gQ0FJUk9fRklMTF9SVUxFX0VWRU5f
T0REIDogQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcpOwogICAgIGNhaXJvX2NsaXAoY3IpOwpAQCAt
NjM4LDcgKzY0MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0
IFBhdGgmIHBhdGgsIGludCB3aWR0aCwgaW50IC8qIG9mZnNldCAqCiAgICAgYWRqdXN0Rm9jdXNS
aW5nQ29sb3IocmluZ0NvbG9yKTsKICAgICBhZGp1c3RGb2N1c1JpbmdMaW5lV2lkdGgod2lkdGgp
OwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxh
dGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgYXBwZW5kV2Vi
Q29yZVBhdGhUb0NhaXJvQ29udGV4dChjciwgcGF0aCk7CiAgICAgc2V0U291cmNlUkdCQUZyb21D
b2xvcihjciwgcmluZ0NvbG9yKTsKQEAgLTY1NSw3ICs2NTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lk
dGgsIGludAogCiAgICAgdW5zaWduZWQgcmVjdENvdW50ID0gcmVjdHMuc2l6ZSgpOwogCi0gICAg
Y2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250
ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgY2Fpcm9fcHVzaF9ncm91cChj
cik7CiAgICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwpAQCAtNzMyLDcgKzczNSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHRDaGVja2luZyhjb25zdCBGbG9hdFBvaW50JiBv
cmlnaW4sIGZsb2F0IHdpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0g
cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAKICAgICBzd2l0
Y2ggKHN0eWxlKSB7CkBAIC03NjIsNyArNzY1LDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4
dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIGZyZWN0KQogICAgIEZsb2F0
UmVjdCByZXN1bHQ7CiAgICAgZG91YmxlIHggPSBmcmVjdC54KCk7CiAgICAgZG91YmxlIHkgPSBm
cmVjdC55KCk7Ci0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNy
ID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fdXNlcl90b19kZXZpY2UoY3Is
ICZ4LCAmeSk7CiAgICAgeCA9IHJvdW5kKHgpOwogICAgIHkgPSByb3VuZCh5KTsKQEAgLTc5OSw3
ICs4MDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0
IHkpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Y2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250
ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCB4LCB5KTsKICAgICBtX2RhdGEt
PnRyYW5zbGF0ZSh4LCB5KTsKIH0KQEAgLTgyMSw3ICs4MjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1TdHJva2VUaGlja25lc3MoZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKQog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJv
X3NldF9saW5lX3dpZHRoKG1fZGF0YS0+Y3IsIHN0cm9rZVRoaWNrbmVzcyk7CisgICAgY2Fpcm9f
c2V0X2xpbmVfd2lkdGgocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHN0cm9rZVRoaWNrbmVzcyk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKFN0cm9r
ZVN0eWxlIHN0cm9rZVN0eWxlKQpAQCAtODM1LDE2ICs4MzgsMTYgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpCiAg
ICAgc3dpdGNoIChzdHJva2VTdHlsZSkgewogICAgIGNhc2UgTm9TdHJva2U6CiAgICAgICAgIC8v
IEZJWE1FOiBpcyBpdCB0aGUgcmlnaHQgd2F5IHRvIGVtdWxhdGUgTm9TdHJva2U/Ci0gICAgICAg
IGNhaXJvX3NldF9saW5lX3dpZHRoKG1fZGF0YS0+Y3IsIDApOworICAgICAgICBjYWlyb19zZXRf
bGluZV93aWR0aChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgMCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgU29saWRTdHJva2U6Ci0gICAgICAgIGNhaXJvX3NldF9kYXNoKG1fZGF0YS0+Y3Is
IDAsIDAsIDApOworICAgICAgICBjYWlyb19zZXRfZGFzaChwbGF0Zm9ybUNvbnRleHQoKS0+Y3Io
KSwgMCwgMCwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG90dGVkU3Ryb2tlOgotICAg
ICAgICBjYWlyb19zZXRfZGFzaChtX2RhdGEtPmNyLCBkb3RQYXR0ZXJuLCAyLCAwKTsKKyAgICAg
ICAgY2Fpcm9fc2V0X2Rhc2gocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGRvdFBhdHRlcm4sIDIs
IDApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERhc2hlZFN0cm9rZToKLSAgICAgICAgY2Fp
cm9fc2V0X2Rhc2gobV9kYXRhLT5jciwgZGFzaFBhdHRlcm4sIDIsIDApOworICAgICAgICBjYWly
b19zZXRfZGFzaChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgZGFzaFBhdHRlcm4sIDIsIDApOwog
ICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC04NTksNyArODYyLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190
KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+
Y3IoKTsKICAgICBjb25zdCBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSBjYWlyb19tYXRyaXhfdCh0
cmFuc2Zvcm0pOwogICAgIGNhaXJvX3RyYW5zZm9ybShjciwgJm1hdHJpeCk7CiAgICAgbV9kYXRh
LT5jb25jYXRDVE0odHJhbnNmb3JtKTsKQEAgLTg3MCw3ICs4NzMsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNy
ID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigp
OwogICAgIGNvbnN0IGNhaXJvX21hdHJpeF90IG1hdHJpeCA9IGNhaXJvX21hdHJpeF90KHRyYW5z
Zm9ybSk7CiAgICAgY2Fpcm9fc2V0X21hdHJpeChjciwgJm1hdHJpeCk7CiAgICAgbV9kYXRhLT5z
ZXRDVE0odHJhbnNmb3JtKTsKQEAgLTg4MSw3ICs4ODQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHRoaWNr
bmVzcwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpOwogICAgIGNsaXAocmVjdCk7CiAKICAgICBQYXRoIHA7CkBAIC05MjgsNyAr
OTMxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxv
YXQgb3BhY2l0eSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19wdXNoX2dyb3VwKGNyKTsKICAgICBtX2Rh
dGEtPmxheWVycy5hcHBlbmQob3BhY2l0eSk7CiAgICAgbV9kYXRhLT5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKCk7CkBAIC05MzksNyArOTQyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFRy
YW5zcGFyZW5jeUxheWVyKCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3Ig
PSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKIAogICAgIGNhaXJvX3BvcF9ncm91cF90b19zb3Vy
Y2UoY3IpOwogICAgIGNhaXJvX3BhaW50X3dpdGhfYWxwaGEoY3IsIG1fZGF0YS0+bGF5ZXJzLmxh
c3QoKSk7CkBAIC05NTIsNyArOTU1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJv
X3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAKICAgICBjYWlyb19zYXZlKGNyKTsK
ICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgp
LCByZWN0LmhlaWdodCgpKTsKQEAgLTk2Niw3ICs5NjksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IHdpZHRoKQogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNy
ID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigp
OwogICAgIGNhaXJvX3NhdmUoY3IpOwogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgcmVjdC54KCks
IHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgIGNhaXJvX3NldF9s
aW5lX3dpZHRoKGNyLCB3aWR0aCk7CkBAIC05OTEsMTIgKzk5NCwxMiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0TGluZUNhcChMaW5lQ2FwIGxpbmVDYXApCiAgICAgICAgIGNhaXJvQ2FwID0g
Q0FJUk9fTElORV9DQVBfU1FVQVJFOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2Fpcm9f
c2V0X2xpbmVfY2FwKG1fZGF0YS0+Y3IsIGNhaXJvQ2FwKTsKKyAgICBjYWlyb19zZXRfbGluZV9j
YXAocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGNhaXJvQ2FwKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYgZGFzaGVzLCBmbG9hdCBkYXNo
T2Zmc2V0KQogewotICAgIGNhaXJvX3NldF9kYXNoKG1fZGF0YS0+Y3IsIGRhc2hlcy5kYXRhKCks
IGRhc2hlcy5zaXplKCksIGRhc2hPZmZzZXQpOworICAgIGNhaXJvX3NldF9kYXNoKHBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCBkYXNoZXMuZGF0YSgpLCBkYXNoZXMuc2l6ZSgpLCBkYXNoT2Zmc2V0
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExpbmVKb2luKExpbmVKb2luIGxpbmVK
b2luKQpAQCAtMTAxNiw3ICsxMDE5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExpbmVK
b2luKExpbmVKb2luIGxpbmVKb2luKQogICAgICAgICBjYWlyb0pvaW4gPSBDQUlST19MSU5FX0pP
SU5fQkVWRUw7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYWlyb19zZXRfbGluZV9qb2lu
KG1fZGF0YS0+Y3IsIGNhaXJvSm9pbik7CisgICAgY2Fpcm9fc2V0X2xpbmVfam9pbihwbGF0Zm9y
bUNvbnRleHQoKS0+Y3IoKSwgY2Fpcm9Kb2luKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldE1pdGVyTGltaXQoZmxvYXQgbWl0ZXIpCkBAIC0xMDI0LDcgKzEwMjcsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0TWl0ZXJMaW1pdChmbG9hdCBtaXRlcikKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb19zZXRfbWl0ZXJfbGlt
aXQobV9kYXRhLT5jciwgbWl0ZXIpOworICAgIGNhaXJvX3NldF9taXRlcl9saW1pdChwbGF0Zm9y
bUNvbnRleHQoKS0+Y3IoKSwgbWl0ZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
QWxwaGEoZmxvYXQgYWxwaGEpCkBAIC0xMDQyLDcgKzEwNDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fp
cm9fc2V0X29wZXJhdG9yKG1fZGF0YS0+Y3IsIHRvQ2Fpcm9PcGVyYXRvcihvcCkpOworICAgIGNh
aXJvX3NldF9vcGVyYXRvcihwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgdG9DYWlyb09wZXJhdG9y
KG9wKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IFBhdGgmIHBhdGgp
CkBAIC0xMDUwLDcgKzEwNTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBQ
YXRoJiBwYXRoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRm
b3JtQ29udGV4dCgpLT5jcigpOwogICAgIE93blB0cjxjYWlyb19wYXRoX3Q+IHAoY2Fpcm9fY29w
eV9wYXRoKHBhdGgucGxhdGZvcm1QYXRoKCktPmNvbnRleHQoKSkpOwogICAgIGNhaXJvX2FwcGVu
ZF9wYXRoKGNyLCBwLmdldCgpKTsKICAgICBjYWlyb19maWxsX3J1bGVfdCBzYXZlZEZpbGxSdWxl
ID0gY2Fpcm9fZ2V0X2ZpbGxfcnVsZShjcik7CkBAIC0xMDcwLDcgKzEwNzMsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRh
LT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGRv
dWJsZSB4MSwgeTEsIHgyLCB5MjsKICAgICBjYWlyb19jbGlwX2V4dGVudHMoY3IsICZ4MSwgJnkx
LCAmeDIsICZ5Mik7CiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCB4MSwgeTEsIHgyIC0geDEsIHky
IC0geTEpOwpAQCAtMTA4Nyw3ICsxMDkwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJvdGF0
ZShmbG9hdCByYWRpYW5zKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGNhaXJvX3JvdGF0ZShtX2RhdGEtPmNyLCByYWRpYW5zKTsKKyAgICBjYWly
b19yb3RhdGUocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJhZGlhbnMpOwogICAgIG1fZGF0YS0+
cm90YXRlKHJhZGlhbnMpOwogfQogCkBAIC0xMDk2LDcgKzEwOTksNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2NhbGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3NjYWxlKG1fZGF0YS0+Y3Is
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgY2Fpcm9fc2NhbGUocGxhdGZvcm1D
b250ZXh0KCktPmNyKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiAgICAgbV9kYXRh
LT5zY2FsZShzaXplKTsKIH0KIApAQCAtMTEwNSw3ICsxMTA4LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNsaXBPdXQoY29uc3QgSW50UmVjdCYgcikKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7Cisg
ICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBkb3VibGUgeDEs
IHkxLCB4MiwgeTI7CiAgICAgY2Fpcm9fY2xpcF9leHRlbnRzKGNyLCAmeDEsICZ5MSwgJngyLCAm
eTIpOwogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgeDEsIHkxLCB4MiAtIHgxLCB5MiAtIHkxKTsK
QEAgLTExMzIsNyArMTEzNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJl
Y3QoY29uc3QgSW50UmVjdCYgciwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwKICAgICBpZiAoaGFz
U2hhZG93KCkpCiAgICAgICAgIG1fZGF0YS0+c2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHIs
IHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CiAKLSAgICBjYWly
b190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBQYXRoIHBhdGg7CiAgICAgcGF0aC5h
ZGRSb3VuZGVkUmVjdChyLCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmln
aHQpOwpAQCAtMTE3MCw3ICsxMTczLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQogICAgIC8vIFdoZW4gdHJ1ZSwgdXNlIHRo
ZSBkZWZhdWx0IENhaXJvIGJhY2tlbmQgYW50aWFsaWFzIG1vZGUgKHVzdWFsbHkgdGhpcwogICAg
IC8vIGVuYWJsZXMgc3RhbmRhcmQgJ2dyYXlzY2FsZScgYW50aWFsaWFzaW5nKTsgZmFsc2UgdG8g
ZXhwbGljaXRseSBkaXNhYmxlCiAgICAgLy8gYW50aWFsaWFzaW5nLiBUaGlzIGlzIHRoZSBzYW1l
IHN0cmF0ZWd5IGFzIHVzZWQgaW4gZHJhd0NvbnZleFBvbHlnb24oKS4KLSAgICBjYWlyb19zZXRf
YW50aWFsaWFzKG1fZGF0YS0+Y3IsIGVuYWJsZSA/IENBSVJPX0FOVElBTElBU19ERUZBVUxUIDog
Q0FJUk9fQU5USUFMSUFTX05PTkUpOworICAgIGNhaXJvX3NldF9hbnRpYWxpYXMocGxhdGZvcm1D
b250ZXh0KCktPmNyKCksIGVuYWJsZSA/IENBSVJPX0FOVElBTElBU19ERUZBVUxUIDogQ0FJUk9f
QU5USUFMSUFTX05PTkUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSkKQEAgLTExOTYsNyArMTE5OSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwdXNoSW1hZ2VNYXNrKGNhaXJvX3N1cmZhY2VfdCog
c3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiByCiAgICAgLy8gV2Ugd2FudCB0byBhbGxvdyB0aGUg
Y2xpcHBlZCBlbGVtZW50cyB0byBjb21wb3NpdGUgd2l0aCB0aGUgc3VyZmFjZSBhcyBpdAogICAg
IC8vIGlzIG5vdywgYnV0IHRoZXkgYXJlIGlzb2xhdGVkIGluIGFub3RoZXIgZ3JvdXAuIFRvIG1h
a2UgdGhpcyB3b3JrLCB3ZSdyZQogICAgIC8vIGdvaW5nIHRvIGJsaXQgdGhlIGN1cnJlbnQgc3Vy
ZmFjZSBjb250ZW50cyBvbnRvIHRoZSBuZXcgZ3JvdXAgb25jZSB3ZSBwdXNoIGl0LgotICAgIGNh
aXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4
dCgpLT5jcigpOwogICAgIGNhaXJvX3N1cmZhY2VfdCogY3VycmVudFRhcmdldCA9IGNhaXJvX2dl
dF90YXJnZXQoY3IpOwogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2goY3VycmVudFRhcmdldCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCmlu
ZGV4IDkyNGY2OWE5NTBjNzhiYTc5Nzk3ZDExNmIwOGE2NWFjMTcwZjc4ZTMuLjEzMjExMmVjZjhk
NTExMDc1OGU4MWU1NjA1MGEwMzU2OGY4MzRiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNh
aXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQ29udGV4dFNoYWRvdy5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIK
ICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPG1hdGguaD4KQEAgLTY1LDEwICs2NiwxMSBA
QCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX21hc2tSZWN0OwogfTsKIAorCiBjbGFzcyBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUgewogcHVibGljOgotICAgIEdyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZSgpCi0gICAgICAgIDogY3IoMCkKKyAgICBHcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8qIG5ld1BsYXRmb3JtQ29udGV4dCkK
KyAgICAgICAgOiBwbGF0Zm9ybUNvbnRleHQobmV3UGxhdGZvcm1Db250ZXh0KQogI2lmIFBMQVRG
T1JNKEdUSykKICAgICAgICAgLCBleHBvc2UoMCkKICNlbGlmIFBMQVRGT1JNKFdJTikKQEAgLTgy
LDcgKzg0LDYgQEAgcHVibGljOgogCiAgICAgfkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZSgpCiAgICAgewotICAgICAgICBjYWlyb19kZXN0cm95KGNyKTsKICAgICB9CiAKICNpZiBQTEFU
Rk9STShXSU4pCkBAIC05OSw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDVE0oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKCkg
eyBtX3RyYW5zcGFyZW5jeUNvdW50Kys7IH0KICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVy
KCkgeyBtX3RyYW5zcGFyZW5jeUNvdW50LS07IH0KLSAgICB2b2lkIHN5bmNDb250ZXh0KFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0KiBjcik7CisgICAgdm9pZCBzeW5jQ29udGV4dChjYWlyb190KiBj
cik7CiAjZWxzZQogICAgIC8vIE9uIGV2ZXJ5dGhpbmcgZWxzZSwgd2UgZG8gbm90aGluZy4KICAg
ICB2b2lkIHNhdmUoKSB7fQpAQCAtMTE0LDEyICsxMTUsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIHt9CiAgICAgdm9pZCBiZWdpblRyYW5zcGFy
ZW5jeUxheWVyKCkge30KICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCkge30KLSAgICB2
b2lkIHN5bmNDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBjcikge30KKyAgICB2b2lk
IHN5bmNDb250ZXh0KGNhaXJvX3QqIGNyKSB7fQogI2VuZGlmCiAKLSAgICBjYWlyb190KiBjcjsK
KyAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyogcGxhdGZvcm1Db250ZXh0OwogICAgIFZlY3Rvcjxm
bG9hdD4gbGF5ZXJzOwotCiAgICAgQ29udGV4dFNoYWRvdyBzaGFkb3c7CiAgICAgVmVjdG9yPENv
bnRleHRTaGFkb3c+IHNoYWRvd1N0YWNrOwogICAgIFZlY3RvcjxJbWFnZU1hc2tJbmZvcm1hdGlv
bj4gbWFza0ltYWdlU3RhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDllZThhOTQwYWM3
MGNkNGJiYzM5OTQ3ZjdiNjU4M2ZiNTYzYzE4YzMuLjFkNWQ0OTIxODVhODQzNjAxMDA5NTY1YzY3
ODZjNWVmNzVlZjdiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0zNyw3ICszNyw5IEBA
CiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJv
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5o
IgogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC02Niw2
ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW1hZ2VCdWZmZXJEYXRhOjpJbWFnZUJ1
ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICA6IG1fc3VyZmFjZSgwKQorICAgICwg
bV9wbGF0Zm9ybUNvbnRleHQoMCkKIHsKIH0KIApAQCAtODAsOSArODMsOSBAQCBJbWFnZUJ1ZmZl
cjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29sb3JTcGFjZSwgUmVuZGVyaW5n
TW9kZSwgYm9vbCYgcwogICAgIGlmIChjYWlyb19zdXJmYWNlX3N0YXR1cyhtX2RhdGEubV9zdXJm
YWNlKSAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuOyAgLy8gY3JlYXRl
IHdpbGwgbm90aWNlIHdlIGRpZG4ndCBzZXQgbV9pbml0aWFsaXplZCBhbmQgZmFpbC4KIAotICAg
IGNhaXJvX3QqIGNyID0gY2Fpcm9fY3JlYXRlKG1fZGF0YS5tX3N1cmZhY2UpOwotICAgIG1fY29u
dGV4dC5zZXQobmV3IEdyYXBoaWNzQ29udGV4dChjcikpOwotICAgIGNhaXJvX2Rlc3Ryb3koY3Ip
OyAgLy8gVGhlIGNvbnRleHQgaXMgbm93IG93bmVkIGJ5IHRoZSBHcmFwaGljc0NvbnRleHQuCisg
ICAgUmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fZGF0YS5tX3N1
cmZhY2UpKTsKKyAgICBtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuc2V0Q3IoY3IuZ2V0KCkpOwor
ICAgIG1fY29udGV4dC5zZXQobmV3IEdyYXBoaWNzQ29udGV4dCgmbV9kYXRhLm1fcGxhdGZvcm1D
b250ZXh0KSk7CiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CiAKQEAgLTMwMSw3ICszMDQsNyBAQCBz
dGF0aWMgY2Fpcm9fc3RhdHVzX3Qgd3JpdGVGdW5jdGlvbih2b2lkKiBjbG9zdXJlLCBjb25zdCB1
bnNpZ25lZCBjaGFyKiBkYXRhLCB1bgogCiBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqKSBjb25zdAogewotICAgIGNhaXJv
X3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRleHQoKS0+cGxhdGZvcm1D
b250ZXh0KCkpOworICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0
KGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOwogICAgIGlmICghaW1hZ2UpCiAg
ICAgICAgIHJldHVybiAiZGF0YTosIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGEuaAppbmRleCA0OWYxNWRmODkx
M2E5YWRhZWEyOWZiODExZjJiNGQxNGI2MzdiN2JjLi40Mjg2N2QxODA3NTQ3ZTliMTkzNzgwYjE5
NTk1ZTcwNDI1ZmMyM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGEuaApAQCAtMjYsNyArMjYsOSBAQAogI2lm
bmRlZiBJbWFnZUJ1ZmZlckRhdGFfaAogI2RlZmluZSBJbWFnZUJ1ZmZlckRhdGFfaAogCi0jaW5j
bHVkZSAiY2Fpcm8uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgorCit0eXBl
ZGVmIHN0cnVjdCBfY2Fpcm9fc3VyZmFjZSBjYWlyb19zdXJmYWNlX3Q7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMzcsNiArMzksNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2VCdWZmZXJEYXRh
KGNvbnN0IEludFNpemUmKTsKIAogICAgIGNhaXJvX3N1cmZhY2VfdCogbV9zdXJmYWNlOworICAg
IFBsYXRmb3JtQ29udGV4dENhaXJvIG1fcGxhdGZvcm1Db250ZXh0OwogfTsKIAogfSAgLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKaW5kZXggZTUxZDY1YTNmZGQxZjU5NjUxMmM1OTRmZmU5
YTA3OWU2MjI3M2UwMC4uZDNhNTJjZTc0YjUzZjI1NmZjMTQ5YmVkYTg0MzBiOTRlMjVjNDlkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VDYWlyby5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJDb250ZXh0U2hhZG93Lmgi
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5o
IgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgpA
QCAtMTE0LDcgKzExNSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAKICAgICBJbnRTaXpl
IHNlbGZTaXplID0gc2l6ZSgpOwogCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5jcigpOwogICAgIGNvbnRleHQtPnNhdmUoKTsKIAogICAgIC8vIFNldCB0aGUgY29tcG9zaXRp
bmcgb3BlcmF0aW9uLgpAQCAtMTY5LDggKzE3MCw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
CiAgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBp
bWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7Ci0KKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpOwogICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIGltYWdl
LCBzaXplKCksIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgdG9DYWlyb09wZXJh
dG9yKG9wKSwgZGVzdFJlY3QpOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCmlu
ZGV4IDdhMDlhNTIzODA1NDAxMGIwM2M1ZGE1ZGUxYzI0NGYzYjkyMDhlMDEuLjA4YTEwN2RlNGJk
M2QxYmQ0NGFhNGI2MjFmNDg3NWI2MzM3NmUyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIk93blB0ckNhaXJvLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlN0cm9rZVN0eWxlQXBw
bGllci5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CkBAIC0yODUsNyArMjg2LDggQEAgRmxvYXRSZWN0
IFBhdGg6OnN0cm9rZUJvdW5kaW5nUmVjdChTdHJva2VTdHlsZUFwcGxpZXIqIGFwcGxpZXIpCiB7
CiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgpOwogICAgIGlmIChh
cHBsaWVyKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjcik7CisgICAgICAgIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0IHBsYXRmb3JtQ29udGV4dChjcik7CisgICAgICAgIEdyYXBoaWNz
Q29udGV4dCBnYygmcGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAgYXBwbGllci0+c3Ryb2tlU3R5
bGUoJmdjKTsKICAgICB9CiAKQEAgLTMxMCw3ICszMTIsOCBAQCBib29sIFBhdGg6OnN0cm9rZUNv
bnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciogYXBwbGllciwgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQpCiB7CiAgICAgQVNTRVJUKGFwcGxpZXIpOwogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Q
YXRoKCktPmNvbnRleHQoKTsKLSAgICBHcmFwaGljc0NvbnRleHQgZ2MoY3IpOworICAgIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0IHBsYXRmb3JtQ29udGV4dChjcik7CisgICAgR3JhcGhpY3NDb250
ZXh0IGdjKCZwbGF0Zm9ybUNvbnRleHQpOwogICAgIGFwcGxpZXItPnN0cm9rZVN0eWxlKCZnYyk7
CiAKICAgICByZXR1cm4gY2Fpcm9faW5fc3Ryb2tlKGNyLCBwb2ludC54KCksIHBvaW50LnkoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAK
aW5kZXggMjE2ZmI1NjYyNTBiYmNkNjg3ZWZmNDhkODQ3ZTk4NGZjNDUwNGM1OS4uZDE4YzAyYmQ5
NjRiNmE2NDI5ODhkMmJlYjE2ZTc0NzE1MDc5MTE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAj
aW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDb250ZXh0U2hhZG93LmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnRE
YXRhLmgiCkBAIC0yMjAsNyArMjIxLDcgQEAgYm9vbCBGb250OjpjYW5FeHBhbmRBcm91bmRJZGVv
Z3JhcGhzSW5Db21wbGV4VGV4dCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9p
ZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjYWly
b190KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgUGFuZ29MYXlvdXRMaW5lKiBs
YXlvdXRMaW5lLCBQYW5nb1JlZ2lvblR5cGUgcmVuZGVyUmVnaW9uKQorc3RhdGljIHZvaWQgZHJh
d0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsIFBhbmdvTGF5b3V0TGluZSogbGF5b3V0TGluZSwgUGFuZ29SZWdpb25U
eXBlIHJlbmRlclJlZ2lvbikKIHsKICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBncmFwaGlj
c0NvbnRleHQtPmNvbnRleHRTaGFkb3coKTsKICAgICBBU1NFUlQoc2hhZG93KTsKQEAgLTIzMiw2
ICsyMzMsNyBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjYWlyb190KiBjb250ZXh0LAogCiAgICAgLy8gT3B0aW1pemUgbm9u
LWJsdXJyeSBzaGFkb3dzLCBieSBqdXN0IGRyYXdpbmcgdGV4dCB3aXRob3V0IHRoZSBDb250ZXh0
U2hhZG93LgogICAgIGlmICghc2hhZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhncmFwaGljc0Nv
bnRleHQpKSB7CisgICAgICAgIGNhaXJvX3QqIGNvbnRleHQgPSBncmFwaGljc0NvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgICAgICBjYWlyb19zYXZlKGNvbnRleHQpOwogICAg
ICAgICBjYWlyb190cmFuc2xhdGUoY29udGV4dCwgdG90YWxPZmZzZXQueCgpLCB0b3RhbE9mZnNl
dC55KCkpOwogCkBAIC0yNTUsNiArMjU3LDcgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY2Fpcm9fdCogY29udGV4dCwKICAg
ICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueSBiaXRzIGFuZCBwaWVjZXMgb2YgY2hh
cmFjdGVycyBvdXQgb2YgcmFuZ2UgdG8gYmUKICAgICAgICAgLy8gZHJhd24uIFNpbmNlIENvbnRl
eHRTaGFkb3cgZXhwZWN0cyBhIGNvbnNpc3RlbnQgdHJhbnNmb3JtLCB3ZSBoYXZlIHRvIHVuZG8g
dGhlCiAgICAgICAgIC8vIHRyYW5zbGF0aW9uIGJlZm9yZSBjYWxsaW5nIGVuZFNoYWRvd0xheWVy
IGFzIHdlbGwuCisgICAgICAgIGNhaXJvX3QqIGNvbnRleHQgPSBncmFwaGljc0NvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgICAgICBjYWlyb19zYXZlKGNvbnRleHQpOwogICAg
ICAgICBjYWlyb190cmFuc2xhdGUoY29udGV4dCwgdG90YWxPZmZzZXQueCgpLCB0b3RhbE9mZnNl
dC55KCkpOwogICAgICAgICBnZGtfY2Fpcm9fcmVnaW9uKGNvbnRleHQsIHJlbmRlclJlZ2lvbik7
CkBAIC0yNzUsNyArMjc4LDcgQEAgdm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEYKICAgICB9CiAjZW5k
aWYKIAotICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAg
Y2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBQYW5n
b0xheW91dCogbGF5b3V0ID0gcGFuZ29fY2Fpcm9fY3JlYXRlX2xheW91dChjcik7CiAgICAgc2V0
UGFuZ29BdHRyaWJ1dGVzKHRoaXMsIHJ1biwgbGF5b3V0KTsKIApAQCAtMjk0LDcgKzI5Nyw3IEBA
IHZvaWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGCiAgICAgaW50IHJhbmdlc1tdID0ge3N0YXJ0IC0gdXRm
OCwgZW5kIC0gdXRmOH07CiAgICAgcGFydGlhbFJlZ2lvbiA9IGdka19wYW5nb19sYXlvdXRfbGlu
ZV9nZXRfY2xpcF9yZWdpb24obGF5b3V0TGluZSwgMCwgMCwgcmFuZ2VzLCAxKTsKIAotICAgIGRy
YXdHbHlwaHNTaGFkb3coY29udGV4dCwgY3IsIHBvaW50LCBsYXlvdXRMaW5lLCBwYXJ0aWFsUmVn
aW9uKTsKKyAgICBkcmF3R2x5cGhzU2hhZG93KGNvbnRleHQsIHBvaW50LCBsYXlvdXRMaW5lLCBw
YXJ0aWFsUmVnaW9uKTsKIAogICAgIGNhaXJvX3NhdmUoY3IpOwogICAgIGNhaXJvX3RyYW5zbGF0
ZShjciwgcG9pbnQueCgpLCBwb2ludC55KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCmluZGV4IGQ1NmI1MmRlODgwMzNjOWM4N2FhMmMx
ODI4Y2UxZjA2NGU4MzQwNDQuLjdmZGMxZjY3ODU4YTIwNGNiMzQ4NmM3NDIxY2ZjYzE1MDYzNTE1
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29u
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0
ay5jcHAKQEAgLTMzLDkgKzMzLDkgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUGFzc1JlZlB0ci5oIgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENh
aXJvLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBJY29u
OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIFRPRE86IFNjYWxlL2NsaXAgdGhlIGltYWdlIGlmIG5l
Y2Vzc2FyeS4KLSAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwor
ICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAg
Y2Fpcm9fc2F2ZShjcik7CiAgICAgZ2RrX2NhaXJvX3NldF9zb3VyY2VfcGl4YnVmKGNyLCBtX2lj
b24sIHJlY3QueCgpLCByZWN0LnkoKSk7CiAgICAgY2Fpcm9fcGFpbnQoY3IpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENh
aXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRDYWlyb1dpbi5jcHAKaW5kZXggYjJjNzAyZjI2NWQyMzc0NjlkNTA3OTlkODY3YmNi
M2QxOWM4YTU3YS4uNTliYTFkNWIwYzRkZmFmYjFhZTE3MDQxZGM3NmZhZjQyNTE0MmZlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dENhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCkBAIC0zNiw2ICszNiwyMyBAQCB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIFRoaXMgaXMgYSBzcGVj
aWFsaXplZCBwcml2YXRlIHNlY3Rpb24gZm9yIHRoZSBXaW5DYWlybyBHcmFwaGljc0NvbnRleHQs
IHdoaWNoIGtub3dzIGhvdworLy8gdG8gY2xlYW4gdXAgdGhlIGhlYXAgYWxsb2NhdGVkIFBsYXRm
b3JtQ29udGV4dENhaXJvIHRoYXQgd2UgbXVzdCB1c2UgZm9yIHRoZSB0b3AtbGV2ZWwKKy8vIFdp
bkNhaXJvIEdyYXBoaWNzQ29udGV4dC4KK2NsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZVdpbkNhaXJvIDogcHVibGljIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSB7Citw
dWJsaWM6CisgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlV2luQ2Fpcm8oUGxhdGZv
cm1Db250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dCwgSERDIGhkYykKKyAgICAgICAgOiBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUocGxhdGZvcm1Db250ZXh0KQorICAgIHsKKyAgICAg
ICAgbV9oZGMgPSBoZGM7CisgICAgfQorCisgICAgfkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZVdpbkNhaXJvKCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBwbGF0Zm9ybUNvbnRleHQ7Cisg
ICAgfQorfTsKKwogc3RhdGljIGNhaXJvX3QqIGNyZWF0ZUNhaXJvQ29udGV4dFdpdGhIREMoSERD
IGhkYywgYm9vbCBoYXNBbHBoYSkKIHsKICAgICAvLyBQdXQgdGhlIEhEQyBJbiBhZHZhbmNlZCBt
b2RlIHNvIGl0IHdpbGwgaG9ub3IgYWZmaW5lIHRyYW5zZm9ybXMuCkBAIC03MiwxOCArODksMTQg
QEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoSERDIGRjLCBib29sIGhhc0FscGhh
KQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KEhEQyBkYywgYm9vbCBoYXNB
bHBoYSkKIHsKLSAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
OwotCi0gICAgaWYgKGRjKSB7Ci0gICAgICAgIG1fZGF0YS0+Y3IgPSBjcmVhdGVDYWlyb0NvbnRl
eHRXaXRoSERDKGRjLCBoYXNBbHBoYSk7Ci0gICAgICAgIG1fZGF0YS0+bV9oZGMgPSBkYzsKLSAg
ICB9IGVsc2UgeworICAgIGNhaXJvX3QqIGNyID0gMDsKKyAgICBpZiAoZGMpCisgICAgICAgIGNy
ID0gY3JlYXRlQ2Fpcm9Db250ZXh0V2l0aEhEQyhkYywgaGFzQWxwaGEpOworICAgIGVsc2UKICAg
ICAgICAgc2V0UGFpbnRpbmdEaXNhYmxlZCh0cnVlKTsKLSAgICAgICAgbV9kYXRhLT5jciA9IDA7
Ci0gICAgICAgIG1fZGF0YS0+bV9oZGMgPSAwOwotICAgIH0KIAotICAgIGlmIChtX2RhdGEtPmNy
KSB7CisgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZVdpbkNh
aXJvKG5ldyBQbGF0Zm9ybUNvbnRleHRDYWlybyhjciksIGRjKTsKKyAgICBpZiAocGxhdGZvcm1D
b250ZXh0KCktPmNyKCkpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250ZXh0IHN0YXJ0
cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgogICAgICAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihm
aWxsQ29sb3IoKSwgZmlsbENvbG9yU3BhY2UoKSk7CiAgICAgICAgIHNldFBsYXRmb3JtU3Ryb2tl
Q29sb3Ioc3Ryb2tlQ29sb3IoKSwgc3Ryb2tlQ29sb3JTcGFjZSgpKTsKQEAgLTEzMSwyNCArMTQ0
LDI1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRleHQoSERDIGhk
YywgY29uc3QgSW50UmVjdCYgZHN0UmVjdCwgYm9vCiAgICAgLy8gU2NhbGUgdGhlIHRhcmdldCBz
dXJmYWNlIHRvIHRoZSBuZXcgaW1hZ2Ugc2l6ZSwgYW5kIGZsaXAgaXQKICAgICAvLyBzbyB0aGF0
IHdoZW4gd2Ugc2V0IHRoZSBzcmNJbWFnZSBhcyB0aGUgc3VyZmFjZSBpdCB3aWxsIGRyYXcKICAg
ICAvLyByaWdodC1zaWRlLXVwLgotICAgIGNhaXJvX3NhdmUobV9kYXRhLT5jcik7Ci0gICAgY2Fp
cm9fdHJhbnNsYXRlKG1fZGF0YS0+Y3IsIGRzdFJlY3QueCgpLCBkc3RSZWN0LmhlaWdodCgpICsg
ZHN0UmVjdC55KCkpOwotICAgIGNhaXJvX3NjYWxlKG1fZGF0YS0+Y3IsIDEuMCwgLTEuMCk7Ci0g
ICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKG1fZGF0YS0+Y3IsIGltYWdlLCAwLCAwKTsKKyAg
ICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOworICAgIGNhaXJvX3NhdmUo
Y3IpOworICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgZHN0UmVjdC54KCksIGRzdFJlY3QuaGVpZ2h0
KCkgKyBkc3RSZWN0LnkoKSk7CisgICAgY2Fpcm9fc2NhbGUoY3IsIDEuMCwgLTEuMCk7CisgICAg
Y2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBpbWFnZSwgMCwgMCk7CiAKICAgICBpZiAobV9k
YXRhLT5sYXllcnMuc2l6ZSgpKQotICAgICAgICBjYWlyb19wYWludF93aXRoX2FscGhhKG1fZGF0
YS0+Y3IsIG1fZGF0YS0+bGF5ZXJzLmxhc3QoKSk7CisgICAgICAgIGNhaXJvX3BhaW50X3dpdGhf
YWxwaGEoY3IsIG1fZGF0YS0+bGF5ZXJzLmxhc3QoKSk7CiAgICAgZWxzZQotICAgICAgICBjYWly
b19wYWludChtX2RhdGEtPmNyKTsKKyAgICAgICAgY2Fpcm9fcGFpbnQoY3IpOwogICAgICAKICAg
ICAvLyBEZWxldGUgYWxsIG91ciBqdW5rLgogICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShpbWFn
ZSk7CiAgICAgOjpEZWxldGVEQyhoZGMpOwogICAgIDo6RGVsZXRlT2JqZWN0KGJpdG1hcCk7Ci0g
ICAgY2Fpcm9fcmVzdG9yZShtX2RhdGEtPmNyKTsKKyAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OnN5bmNDb250ZXh0KFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0KiBjcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlOjpzeW5jQ29udGV4dChjYWlyb190KiBjcikKIHsKICAgICBpZiAoIWNyKQogICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUNhaXJvV2luLmNwcAppbmRleCA3MGIxMzJlZjM3NWYyODY0YTYxZTk4NTFiYzZmYzc0NzY4
ODg1N2FiLi43ZGQ2N2ZiZmQ1MDU1OGJjNzQyODMwNzI5OGI5ODljNjFmOTgyMWE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9X
aW4uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJC
aXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDxjYWly
by13aW4zMi5oPgogCkBAIC03OCw3ICs3OSw4IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRN
QVBPZlNpemUoSEJJVE1BUCBibXAsIExQU0laRSBzaXplKQogICAgIGNhaXJvX3QqIHRhcmdldFJl
ZiA9IGNhaXJvX2NyZWF0ZShpbWFnZSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGltYWdl
KTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCBnYyh0YXJnZXRSZWYpOworICAgIFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0IHBsYXRmb3JtQ29udGV4dCh0YXJnZXRSZWYpOworICAgIEdyYXBoaWNzQ29u
dGV4dCBnYygmcGxhdGZvcm1Db250ZXh0KTsKIAogICAgIEludFNpemUgaW1hZ2VTaXplID0gQml0
bWFwSW1hZ2U6OnNpemUoKTsKICAgICBpZiAoc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IDFlOWYxNTk0OTFmYzAzMGVkZWViOTIy
ODY5MGMwYzY3MTAzYjY5ODkuLjliMTFjMjc3YzA4OTJlODU5ZmNiNzc4ZTFhMzZkOTczZjQ2MGFk
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk1l
ZGlhQ29udHJvbEVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRl
ICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCkBAIC0yMzQsNyArMjM1
LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRHZGtQaXhidWYoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBHZGtQaXhidWYqIGljb24sIGNvbnMKICAgICAgICAgaWNvbiA9IHNjYWxlZEljb24u
Z2V0KCk7CiAgICAgfQogCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigp
OwogICAgIGNhaXJvX3NhdmUoY3IpOwogICAgIGdka19jYWlyb19zZXRfc291cmNlX3BpeGJ1Zihj
ciwgaWNvbiwgaWNvblJlY3QueCgpLCBpY29uUmVjdC55KCkpOwogICAgIGNhaXJvX3BhaW50KGNy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJp
bmdDb250ZXh0LmNwcAppbmRleCA5ZTY0MGY2ZmFiMzEzYmU1YWM0YzljY2Q2OWI2MDFmZjZlOTEx
NTczLi42ZjczODlkNzA0NWE4NWEwMGVhZmJkNDcwYzM5YWI5NGI4ZDM3MTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRleHQu
Y3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
aCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lR3RrLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTEyOCw3ICsxMjksNyBAQCBXaWRnZXRSZW5kZXJpbmdD
b250ZXh0Ojp+V2lkZ2V0UmVuZGVyaW5nQ29udGV4dCgpCiAgICAgfQogCiAgICAgLy8gRklYTUU6
IEl0J3MgdW5jbGVhciBpZiBpdCBpcyBuZWNlc3NhcnkgdG8gcHJlc2VydmUgdGhlIGN1cnJlbnQg
c291cmNlIGhlcmUuCi0gICAgY2Fpcm9fdCogY2Fpcm9Db250ZXh0ID0gbV9ncmFwaGljc0NvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIGNhaXJvX3QqIGNhaXJvQ29udGV4dCA9IG1fZ3Jh
cGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBSZWZQdHI8Y2Fpcm9f
cGF0dGVybl90PiBwcmV2aW91c1NvdXJjZShjYWlyb19nZXRfc291cmNlKGNhaXJvQ29udGV4dCkp
OwogCiAgICAgLy8gVGhlIGJsaXQgcmVjdGFuZ2xlIGlzIHRoZSBvcmlnaW5hbCB0YXJnZXQgcmVj
dGFuZ2xlIGFkanVzdGVkIGZvciBhbnkgZXh0cmEgc3BhY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5WaWV3R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCmluZGV4IDJlZWQzYTRmY2RhM2I5NjRmYmNkMzQw
OTI0ZDI4MzhiMDA1NDRlMTguLjhmN2U2YjdkMTZhYzA3OTFlM2MxNmVmNmNkYTY5YTNhMTljOTNi
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCkBA
IC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk1v
dXNlRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbHVnaW5EZWJ1Zy5oIgpAQCAtMjE3LDcg
KzIxOCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgICAgICAgICAgLy8gYXZvaWQgZHJhd2luZyBhcnRp
ZmFjdHMuCiAKICAgICAgICAgICAgIC8vIFRoaXMgV291bGQgbm90IHdvcmsgd2l0aG91dCBkb3Vi
bGUgYnVmZmVyaW5nLCBidXQgd2UgYWx3YXlzIHVzZSBpdC4KLSAgICAgICAgICAgIGNhaXJvX3Nl
dF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgY2Fpcm9fZ2V0X2dyb3VwX3RhcmdldChjb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSksCisgICAgICAgICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZh
Y2UoY3IuZ2V0KCksIGNhaXJvX2dldF9ncm91cF90YXJnZXQoY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCktPmNyKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tX3dp
bmRvd1JlY3QueCgpLCAtbV93aW5kb3dSZWN0LnkoKSk7CiAgICAgICAgICAgICBjYWlyb19zZXRf
b3BlcmF0b3IoY3IuZ2V0KCksIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CiAgICAgICAgIH0gZWxz
ZQpAQCAtMjQ0LDcgKzI0NSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGlmIChzeW5jWCkKICAgICAg
ICAgWFN5bmMobV9wbHVnaW5EaXNwbGF5LCBmYWxzZSk7IC8vIHN5bmMgY2hhbmdlcyBieSBwbHVn
aW4KIAotICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAg
Y2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWly
b19zYXZlKGNyKTsKIAogICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgZHJhd2FibGVT
dXJmYWNlLmdldCgpLCBmcmFtZVJlY3QoKS54KCksIGZyYW1lUmVjdCgpLnkoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDIwODEyMWUzODdj
ZjQ1MDIyMzc0NWQ0YjJhM2Y3YmIxMTFjZTEwNDUuLmY1NzU3MDkzMjE0Y2NmYTJhN2VhNDg5ZTU2
ZTIzMzc5ZmY5OTA0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1Bs
dWdpblZpZXdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZp
ZXdXaW4uY3BwCkBAIC04Myw2ICs4Myw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENBSVJP
KQorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSA8Y2Fpcm8td2lu
MzIuaD4KICNlbmRpZgogCkBAIC01NzIsOCArNTczLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwYWlu
dFdpbmRvd2VkUGx1Z2luSW50b0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dAogICAgIC8vIE11c3QgZmx1c2ggZHJhd2luZ3MgdXAgdG8gdGhpcyBwb2ludCB0byB0aGUgYmFj
a2luZyBtZXRhZmlsZSwgb3RoZXJ3aXNlIHRoZQogICAgIC8vIHBsdWdpbiByZWdpb24gd2lsbCBi
ZSBvdmVyd3JpdHRlbiB3aXRoIGFueSBjbGVhciByZWdpb25zIHNwZWNpZmllZCBpbiB0aGUKICAg
ICAvLyBjYWlyby1jb250cm9sbGVkIHBvcnRpb25zIG9mIHRoZSByZW5kZXJpbmcuCi0gICAgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQqIGN0eCA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwot
ICAgIGNhaXJvX3Nob3dfcGFnZShjdHgpOworICAgIGNhaXJvX3Nob3dfcGFnZShjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7CiAjZW5kaWYKIAogICAgIEhEQyBoZGMgPSB3aW5kb3dz
Q29udGV4dC5oZGMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA0ZDNlYzk1ZmI1ZDMzODRkZGE3MzZh
NmIwMzgxZmRkZDVjMjNkMTAwLi5lMDk1YmM1MDYzNTlhMzc2OTAzOTJjMjMyZTA1YTE1MGQ5MDc3
MjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDMtMDQgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDYWlyb10gQmV0dGVyIHNlcGFyYXRlIHRoZSBj
b25jZXJucyBvZiBHcmFwaGljc0NvbnRleHRDYWlybworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxNTAKKworICAgICAgICBBZGQgYSBQbGF0Zm9ybUNv
bnRleHRDYWlybyB3aGljaCByaWdodCBub3cgc3RvcmVzIHRoZSBjYWlyb190KiBmb3IgYQorICAg
ICAgICBHcmFwaGljc0NvbnRleHRDYWlyby4gTGF0ZXIgcGF0Y2hlcyB3aWxsIG1vdmUgbG9naWMg
Zm9yIHRyYWNraW5nIENvbnRleHRTaGFkb3cKKyAgICAgICAgYW5kIGltYWdlIG1hc2tpbmcgbGF5
ZXJzIGludG8gdGhpcyBQbGF0Zm9ybUNvbnRleHRDYWlybyBjbGFzcy4KKworICAgICAgICAqIHdl
YmtpdC93ZWJraXR3ZWJmcmFtZS5jcHA6CisgICAgICAgIChkcmF3X3BhZ2VfY2FsbGJhY2spOgor
ICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19leHBvc2VfZXZlbnQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2RyYXcpOgorCiAy
MDExLTAzLTAzICBMdWthc3ogU2xhY2hjaWFrICA8bC5zbGFjaGNpYWtAc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJmcmFtZS5jcHAKaW5kZXggZmQ5MGE2YzI3MDk0N2ZiNDZkOWQ0ODBkMmVjOTEy
NzAwN2I5NDIxYi4uYTBlNDBiM2EyMTVkMmE1NDk3NDJiMGM4ZTY5MjFhNzIzNDZjNzJhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCkBAIC00NCw2ICs0
NCw3IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cu
aCIKICNpbmNsdWRlICJKU0VsZW1lbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWly
by5oIgogI2luY2x1ZGUgIlByaW50Q29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVt
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgpAQCAtNzY1LDE3ICs3NjYsMTcgQEAg
c3RhdGljIHZvaWQgYmVnaW5fcHJpbnRfY2FsbGJhY2soR3RrUHJpbnRPcGVyYXRpb24qIG9wLCBH
dGtQcmludENvbnRleHQqIGNvbnRleHQKICAgICBndGtfcHJpbnRfb3BlcmF0aW9uX3NldF9uX3Bh
Z2VzKG9wLCBwcmludENvbnRleHQtPnBhZ2VDb3VudCgpKTsKIH0KIAotc3RhdGljIHZvaWQgZHJh
d19wYWdlX2NhbGxiYWNrKEd0a1ByaW50T3BlcmF0aW9uKiBvcCwgR3RrUHJpbnRDb250ZXh0KiBj
b250ZXh0LCBnaW50IHBhZ2VfbnIsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3N0YXRpYyB2b2lkIGRy
YXdfcGFnZV9jYWxsYmFjayhHdGtQcmludE9wZXJhdGlvbiosIEd0a1ByaW50Q29udGV4dCogZ3Rr
UHJpbnRDb250ZXh0LCBnaW50IHBhZ2VOdW1iZXIsIFByaW50Q29udGV4dCogY29yZVByaW50Q29u
dGV4dCkKIHsKLSAgICBQcmludENvbnRleHQqIHByaW50Q29udGV4dCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UHJpbnRDb250ZXh0Kj4odXNlcl9kYXRhKTsKLQotICAgIGlmIChwYWdlX25yID49IHN0YXRp
Y19jYXN0PGdpbnQ+KHByaW50Q29udGV4dC0+cGFnZUNvdW50KCkpKQorICAgIGlmIChwYWdlTnVt
YmVyID49IHN0YXRpY19jYXN0PGdpbnQ+KGNvcmVQcmludENvbnRleHQtPnBhZ2VDb3VudCgpKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fdCogY3IgPSBndGtfcHJpbnRfY29udGV4dF9n
ZXRfY2Fpcm9fY29udGV4dChjb250ZXh0KTsKLSAgICBHcmFwaGljc0NvbnRleHQgY3R4KGNyKTsK
LSAgICBmbG9hdCB3aWR0aCA9IGd0a19wcmludF9jb250ZXh0X2dldF93aWR0aChjb250ZXh0KTsK
LSAgICBwcmludENvbnRleHQtPnNwb29sUGFnZShjdHgsIHBhZ2VfbnIsIHdpZHRoKTsKKyAgICBj
YWlyb190KiBjciA9IGd0a19wcmludF9jb250ZXh0X2dldF9jYWlyb19jb250ZXh0KGd0a1ByaW50
Q29udGV4dCk7CisgICAgZmxvYXQgcGFnZVdpZHRoID0gZ3RrX3ByaW50X2NvbnRleHRfZ2V0X3dp
ZHRoKGd0a1ByaW50Q29udGV4dCk7CisKKyAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyBwbGF0Zm9y
bUNvbnRleHQoY3IpOworICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoJnBsYXRm
b3JtQ29udGV4dCk7CisgICAgY29yZVByaW50Q29udGV4dC0+c3Bvb2xQYWdlKGdyYXBoaWNzQ29u
dGV4dCwgcGFnZU51bWJlciwgcGFnZVdpZHRoKTsKIH0KIAogc3RhdGljIHZvaWQgZW5kX3ByaW50
X2NhbGxiYWNrKEd0a1ByaW50T3BlcmF0aW9uKiBvcCwgR3RrUHJpbnRDb250ZXh0KiBjb250ZXh0
LCBncG9pbnRlciB1c2VyX2RhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAKaW5kZXggNzk2NjVhOTE0NTY3YjM3Zjg1YjkxOTU4YjhlMmU1NzcxZjVkM2FjYi4u
YmVkZThhNzM5NmNjMzgwOWM1YzA5ODJhNGNmY2Y5MjEyZDg1ZDE2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNzAsNiArNzAsNyBAQAogI2luY2x1
ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSGVscGVyLmgiCiAjaW5jbHVk
ZSAiUGFzdGVib2FyZEhlbHBlckd0ay5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJv
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCkBAIC03MDksOCAr
NzEwLDkgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19leHBvc2VfZXZlbnQoR3Rr
V2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50RXhwb3NlKgogICAgICAgICBmcmFtZS0+dmlldygpLT51
cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiAKICAgICAgICAgUmVmUHRy
PGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoZ2RrX2NhaXJvX2NyZWF0ZShldmVudC0+d2luZG93KSk7
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCBjdHgoY3IuZ2V0KCkpOwotICAgICAgICBjdHguc2V0
R2RrRXhwb3NlRXZlbnQoZXZlbnQpOworICAgICAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyBwbGF0
Zm9ybUNvbnRleHQoY3IuZ2V0KCkpOworICAgICAgICBHcmFwaGljc0NvbnRleHQgZ2MoJnBsYXRm
b3JtQ29udGV4dCk7CisgICAgICAgIGdjLnNldEdka0V4cG9zZUV2ZW50KGV2ZW50KTsKIAogICAg
ICAgICBpbnQgcmVjdENvdW50OwogICAgICAgICBHT3duUHRyPEdka1JlY3RhbmdsZT4gcmVjdHM7
CkBAIC03MTksNyArNzIxLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19leHBv
c2VfZXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50RXhwb3NlKgogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHJlY3RDb3VudDsgaSsrKQogICAgICAgICAgICAgcGFpbnRSZWN0cy5h
cHBlbmQoSW50UmVjdChyZWN0cy5nZXQoKVtpXSkpOwogCi0gICAgICAgIHBhaW50V2ViVmlldyhm
cmFtZSwgcHJpdi0+dHJhbnNwYXJlbnQsIGN0eCwgc3RhdGljX2Nhc3Q8SW50UmVjdD4oZXZlbnQt
PmFyZWEpLCBwYWludFJlY3RzKTsKKyAgICAgICAgcGFpbnRXZWJWaWV3KGZyYW1lLCBwcml2LT50
cmFuc3BhcmVudCwgZ2MsIHN0YXRpY19jYXN0PEludFJlY3Q+KGV2ZW50LT5hcmVhKSwgcGFpbnRS
ZWN0cyk7CiAgICAgfQogCiAgICAgcmV0dXJuIEZBTFNFOwpAQCAtNzM2LDcgKzczOCw4IEBAIHN0
YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fp
cm9fdCogY3IpCiAKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUo
KTsKICAgICBpZiAoZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpICYmIGZyYW1lLT52aWV3KCkpIHsK
LSAgICAgICAgR3JhcGhpY3NDb250ZXh0IGN0eChjcik7CisgICAgICAgIFBsYXRmb3JtQ29udGV4
dENhaXJvIHBsYXRmb3JtQ29udGV4dChjci5nZXQoKSk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4
dCBnYygmcGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAgSW50UmVjdCByZWN0ID0gY2xpcFJlY3Q7
CiAgICAgICAgIGNhaXJvX3JlY3RhbmdsZV9saXN0X3QqIHJlY3RMaXN0ID0gY2Fpcm9fY29weV9j
bGlwX3JlY3RhbmdsZV9saXN0KGNyKTsKIApAQCAtNzQ3LDcgKzc1MCw3IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRfd2ViX3ZpZXdfZHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCogY3Ip
CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3RMaXN0LT5udW1fcmVjdGFuZ2xl
czsgaSsrKQogICAgICAgICAgICAgICAgIHJlY3RzLmFwcGVuZChlbmNsb3NpbmdJbnRSZWN0KEZs
b2F0UmVjdChyZWN0TGlzdC0+cmVjdGFuZ2xlc1tpXSkpKTsKICAgICAgICAgfQotICAgICAgICBw
YWludFdlYlZpZXcoZnJhbWUsIHByaXYtPnRyYW5zcGFyZW50LCBjdHgsIHJlY3QsIHJlY3RzKTsK
KyAgICAgICAgcGFpbnRXZWJWaWV3KGZyYW1lLCBwcml2LT50cmFuc3BhcmVudCwgZ2MsIHJlY3Qs
IHJlY3RzKTsKIAogICAgICAgICBjYWlyb19yZWN0YW5nbGVfbGlzdF9kZXN0cm95KHJlY3RMaXN0
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZmNlN2M3ZDllYWNiZWU4ODRkODhjZjgxOWJl
MTI4ZjNhYTYwZDI5OC4uNzkxNWZkNmI3YjMzZGM1ZWUxNjlmMjMyNWFjNDQwMTIxNTE2YTA2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTA0ICBNYXJ0aW4gUm9i
aW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbQ2Fpcm9dIEJldHRlciBzZXBhcmF0ZSB0aGUgY29uY2Vy
bnMgb2YgR3JhcGhpY3NDb250ZXh0Q2Fpcm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU1MTUwCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAg
ICAgIChoZGNGcm9tQ29udGV4dCk6IE1vZGlmeSB0aGlzIG1ldGhvZCB0byB0YWtlIFBsYXRmb3Jt
Q29udGV4dENhaXJvCisgICAgICAgIGluc3RlYWQgb2YgYSBjYWlyb190LgorICAgICAgICAoV2Vi
RnJhbWU6OnNwb29sUGFnZSk6IFVwZGF0ZSB0byByZWZsZWN0IG5ldyBwbGF0Zm9ybSBjb250ZXh0
LgorICAgICAgICAoV2ViRnJhbWU6OnNwb29sUGFnZXMpOiBEaXR0by4KKyAgICAgICAgKiBXZWJG
cmFtZS5oOiBEaXR0by4KKwogMjAxMS0wMy0wMyAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdv
b2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJGcmFtZS5jcHAKaW5kZXggMTZiOWE4ZmNiZjMyZWYxYzc4ZTI4YTczOWIzMDI2ZTcwMWNiYzIx
Mi4uN2U5YjNkODhjZjEwOWNkYzkxNjQ1YjIwMDYxMjhjNzgxZTZkYTQwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkZyYW1lLmNwcApAQCAtMTA5LDYgKzEwOSw3IEBACiAjaWYgUExBVEZPUk0oQ0cpCiAjaW5jbHVk
ZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisj
aW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlIDxjYWlyby13aW4zMi5o
PgogI2VuZGlmCiAKQEAgLTIxODgsOCArMjE4OSw3IEBAIHN0YXRpYyBmbG9hdCBzY2FsZUZhY3Rv
cihIREMgcHJpbnREQywgY29uc3QgSW50UmVjdCYgbWFyZ2luUmVjdCwgY29uc3QgSW50UmVjdCYK
IAogc3RhdGljIEhEQyBoZGNGcm9tQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGN0
eCkKIHsKLSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBjYWlyb19nZXRfdGFyZ2V0KHBj
dHgpOwotICAgIHJldHVybiBjYWlyb193aW4zMl9zdXJmYWNlX2dldF9kYyhzdXJmYWNlKTsKKyAg
ICByZXR1cm4gY2Fpcm9fd2luMzJfc3VyZmFjZV9nZXRfZGMoY2Fpcm9fZ2V0X3RhcmdldChwY3R4
LT5jcigpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWU6OmRyYXdIZWFkZXIoUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQqIHBjdHgsIElXZWJVSURlbGVnYXRlKiB1aSwgY29uc3QgSW50UmVjdCYgcGFnZVJl
Y3QsIGZsb2F0IGhlYWRlckhlaWdodCkKQEAgLTIyNDQsMTMgKzIyNDQsMTQgQEAgdm9pZCBXZWJG
cmFtZTo6c3Bvb2xQYWdlKFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwY3R4LCBHcmFwaGljc0Nv
bnRleHQqIHNwb29sQ3QKICAgICBYRk9STSBvcmlnaW5hbCwgc2NhbGVkOwogICAgIEdldFdvcmxk
VHJhbnNmb3JtKGhkYywgJm9yaWdpbmFsKTsKICAgICAKKyAgICBjYWlyb190KiBjciA9IHBjdHgt
PmNyKCk7CiAgICAgYm9vbCBwcmV2aWV3ID0gKGhkYyAhPSBwcmludERDKTsKICAgICBpZiAocHJl
dmlldykgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcHJldmlldywgdGhlIFdpbmRvd3MgSERD
IHdhcyBzZXQgdG8gYSBub24tc2NhbGVkIHN0YXRlIHNvIHRoYXQgQ2Fpcm8gd2lsbAogICAgICAg
ICAvLyBkcmF3IGNvcnJlY3RseS4gIFdlIG5lZWQgdG8gcmV0YWluIHRoZSBjb3JyZWN0IHByZXZp
ZXcgc2NhbGUgaGVyZSBmb3IgdXNlIHdoZW4gdGhlIENhaXJvCiAgICAgICAgIC8vIGRyYXdpbmcg
Y29tcGxldGVzIHNvIHRoYXQgd2UgY2FuIHNjYWxlIG91ciBHREktYmFzZWQgaGVhZGVyL2Zvb3Rl
ciBjYWxscy4gVGhpcyBpcyBhCiAgICAgICAgIC8vIHdvcmthcm91bmQgZm9yIGEgYnVnIGluIENh
aXJvIChzZWUgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjgx
NjEpCi0gICAgICAgIHNjYWxlZCA9IGJ1aWxkWEZPUk1Gcm9tQ2Fpcm8oaGRjLCBwY3R4KTsKKyAg
ICAgICAgc2NhbGVkID0gYnVpbGRYRk9STUZyb21DYWlybyhoZGMsIGNyKTsKICAgICB9CiAKICAg
ICBmbG9hdCBzY2FsZSA9IHNjYWxlRmFjdG9yKHByaW50REMsIG1hcmdpblJlY3QsIHBhZ2VSZWN0
KTsKQEAgLTIyNjAsMTMgKzIyNjEsMTMgQEAgdm9pZCBXZWJGcmFtZTo6c3Bvb2xQYWdlKFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0KiBwY3R4LCBHcmFwaGljc0NvbnRleHQqIHNwb29sQ3QKIAogICAg
IC8vIFdlIGNhbm5vdCBzY2FsZSB0aGUgZGlzcGxheSBIREMgYmVjYXVzZSB0aGUgcHJpbnQgc3Vy
ZmFjZSBhbHNvIHNjYWxlcyBmb250cywKICAgICAvLyByZXN1bHRpbmcgaW4gaW52YWxpZCBwcmlu
dGluZyAoYW5kIHByaW50IHByZXZpZXcpCi0gICAgY2Fpcm9fc2NhbGUocGN0eCwgc2NhbGUsIHNj
YWxlKTsKLSAgICBjYWlyb190cmFuc2xhdGUocGN0eCwgY2Fpcm9NYXJnaW5SZWN0LngoKSwgY2Fp
cm9NYXJnaW5SZWN0LnkoKSArIGhlYWRlckhlaWdodCk7CisgICAgY2Fpcm9fc2NhbGUoY3IsIHNj
YWxlLCBzY2FsZSk7CisgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCBjYWlyb01hcmdpblJlY3QueCgp
LCBjYWlyb01hcmdpblJlY3QueSgpICsgaGVhZGVySGVpZ2h0KTsKIAogICAgIC8vIE1vZGlmeSBD
YWlybyAob25seSkgdG8gYWNjb3VudCBmb3IgcGFnZSBwb3NpdGlvbi4KLSAgICBjYWlyb190cmFu
c2xhdGUocGN0eCwgLXBhZ2VSZWN0LngoKSwgLXBhZ2VSZWN0LnkoKSk7CisgICAgY2Fpcm9fdHJh
bnNsYXRlKGNyLCAtcGFnZVJlY3QueCgpLCAtcGFnZVJlY3QueSgpKTsKICAgICBjb3JlRnJhbWUt
PnZpZXcoKS0+cGFpbnRDb250ZW50cyhzcG9vbEN0eCwgcGFnZVJlY3QpOwotICAgIGNhaXJvX3Ry
YW5zbGF0ZShwY3R4LCBwYWdlUmVjdC54KCksIHBhZ2VSZWN0LnkoKSk7CisgICAgY2Fpcm9fdHJh
bnNsYXRlKGNyLCBwYWdlUmVjdC54KCksIHBhZ2VSZWN0LnkoKSk7CiAgICAgCiAgICAgaWYgKHBy
ZXZpZXcpIHsKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHByZXZpZXcsIHRoZSBXaW5kb3dzIEhE
QyB3YXMgc2V0IHRvIGEgbm9uLXNjYWxlZCBzdGF0ZSBzbyB0aGF0IENhaXJvIHdvdWxkCkBAIC0y
Mjg3LDggKzIyODgsOCBAQCB2b2lkIFdlYkZyYW1lOjpzcG9vbFBhZ2UoUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQqIHBjdHgsIEdyYXBoaWNzQ29udGV4dCogc3Bvb2xDdAogCiAgICAgU2V0V29ybGRU
cmFuc2Zvcm0oaGRjLCAmb3JpZ2luYWwpOwogCi0gICAgY2Fpcm9fc2hvd19wYWdlKHBjdHgpOwot
ICAgIEFTU0VSVCghY2Fpcm9fc3RhdHVzKHBjdHgpKTsKKyAgICBjYWlyb19zaG93X3BhZ2UoY3Ip
OworICAgIEFTU0VSVCghY2Fpcm9fc3RhdHVzKGNyKSk7CiAgICAgc3Bvb2xDdHgtPnJlc3RvcmUo
KTsKIH0KIApAQCAtMjM0MCwxNyArMjM0MSwyMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkZyYW1lOjpzcG9vbFBhZ2VzKAogICAgIGVsc2UKICAgICAgICAgcHJpbnRTdXJmYWNlID0g
Y2Fpcm9fd2luMzJfcHJpbnRpbmdfc3VyZmFjZV9jcmVhdGUodGFyZ2V0REMpOyAvLyBtZXRhZmls
ZQogICAgIAotICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwY3R4ID0gKFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0KiljYWlyb19jcmVhdGUocHJpbnRTdXJmYWNlKTsKLSAgICBpZiAoIXBjdHgp
IHsKKyAgICBjYWlyb190KiBjciA9IGNhaXJvX2NyZWF0ZShwcmludFN1cmZhY2UpOworICAgIGlm
ICghY3IpIHsKICAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHByaW50U3VyZmFjZSk7ICAg
IAogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIH0KLSAgICAKKworICAgIFBsYXRmb3JtQ29u
dGV4dENhaXJvIHBsYXRmb3JtQ29udGV4dChjcik7CisgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQqIHBjdHggPSAmcGxhdGZvcm1Db250ZXh0OworICAgIGNhaXJvX2Rlc3Ryb3koY3IpOworCiAg
ICAgaWYgKGN0eCkgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcHJldmlldywgdGhlIFdpbmRv
d3MgSERDIHdhcyBzZW50IHdpdGggc2NhbGluZyBpbmZvcm1hdGlvbi4KICAgICAgICAgLy8gUmV0
cmlldmUgaXQgYW5kIHJlc2V0IGl0IHNvIHRoYXQgaXQgZHJhd3MgcHJvcGVybHkuICBUaGlzIGlz
IGEgd29ya2Fyb3VuZAogICAgICAgICAvLyBmb3IgYSBidWcgaW4gQ2Fpcm8gKHNlZSBodHRwczov
L2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE2MSkKLSAgICAgICAgc2V0
Q2Fpcm9UcmFuc2Zvcm1Ub1ByZXZpZXdIREMocGN0eCwgdGFyZ2V0REMpOworICAgICAgICBzZXRD
YWlyb1RyYW5zZm9ybVRvUHJldmlld0hEQyhjciwgdGFyZ2V0REMpOwogICAgIH0KICAgICAKICAg
ICBjYWlyb19zdXJmYWNlX3NldF9mYWxsYmFja19yZXNvbHV0aW9uKHByaW50U3VyZmFjZSwgNzIu
MCwgNzIuMCk7CkBAIC0yMzk0LDcgKzIzOTksNiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkZyYW1lOjpzcG9vbFBhZ2VzKAogICAgICAgICBzcG9vbFBhZ2UocGN0eCwgJnNwb29sQ3R4
LCBwcmludERDLCB1aS5nZXQoKSwgaGVhZGVySGVpZ2h0LCBmb290ZXJIZWlnaHQsIGlpLCBwYWdl
Q291bnQpOwogCiAjaWYgUExBVEZPUk0oQ0FJUk8pCi0gICAgY2Fpcm9fZGVzdHJveShwY3R4KTsK
ICAgICBjYWlyb19zdXJmYWNlX2ZpbmlzaChwcmludFN1cmZhY2UpOwogICAgIEFTU0VSVCghY2Fp
cm9fc3VyZmFjZV9zdGF0dXMocHJpbnRTdXJmYWNlKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0
cm95KHByaW50U3VyZmFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFt
ZS5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuaAppbmRleCA3MWY5ZTUyMTI1MjlkZTc3
NzQ1MzJmYmQ4ZjIyODNhYmQ3N2VkYTQ5Li4yN2Q1ZmEyMWYyODNkOGY2YWM2MDEwY2YzN2VjZjk4
ZWY2MTE1YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmgKQEAgLTY0LDcgKzY0LDEwIEBAIHR5cGVkZWYg
c3RydWN0IE9wYXF1ZUpTVmFsdWUqIEpTT2JqZWN0UmVmOwogI2lmIFBMQVRGT1JNKENHKQogdHlw
ZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwogI2VsaWYgUExB
VEZPUk0oQ0FJUk8pCi10eXBlZGVmIHN0cnVjdCBfY2Fpcm8gUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQ7CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQbGF0Zm9ybUNvbnRleHRDYWlybzsKK30K
K3R5cGVkZWYgY2xhc3MgV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8gUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQ7CiAjZW5kaWYKIAogY2xhc3MgV2ViRnJhbWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84821</attachid>
            <date>2011-03-04 16:05:40 -0800</date>
            <delta_ts>2011-03-08 14:54:26 -0800</delta_ts>
            <desc>Patch with missing files</desc>
            <filename>bug-55150-20110304160537.patch</filename>
            <type>text/plain</type>
            <size>59568</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAyNDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjMxZDU5MGQ2N2ZkMTAx
ODVhNjI3ZmJlYzMxZGI2MGNjZjM3N2ExLi4zNTFlMTk5MTM2NTFmOGY0YTU5MjY5NzdmMjQzYjQ4
YTExNjA2ZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDMtMDQgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDYWlyb10gQmV0dGVyIHNlcGFyYXRlIHRoZSBj
b25jZXJucyBvZiBHcmFwaGljc0NvbnRleHRDYWlybworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxNTAKKworICAgICAgICBBZGQgYSBQbGF0Zm9ybUNv
bnRleHRDYWlybyB3aGljaCByaWdodCBub3cgc3RvcmVzIHRoZSBjYWlyb190KiBmb3IgYQorICAg
ICAgICBHcmFwaGljc0NvbnRleHRDYWlyby4gTGF0ZXIgcGF0Y2hlcyB3aWxsIG1vdmUgbG9naWMg
Zm9yIHRyYWNraW5nIENvbnRleHRTaGFkb3cKKyAgICAgICAgYW5kIGltYWdlIG1hc2tpbmcgbGF5
ZXJzIGludG8gdGhpcyBQbGF0Zm9ybUNvbnRleHRDYWlybyBjbGFzcy4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIFRoaXMgcGF0Y2ggaXMgb25seSBhIGNvZGUgY2xlYW51cC4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOiBUaGUgcGxhdGZvcm0gY29udGV4dCBpcyBubyBsb25nZXIgYQorICAgICAgICBjYWly
b190LCBidXQgb3VyIG5ldyBjbGFzcyB0aGUgUGxhdGZvcm1Db250ZXh0Q2Fpcm8uCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcDogVXBkYXRl
ZCB0byByZWZsZWN0IG5ldyBjbGFzcy5qCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udENhaXJvLmNwcDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhZGllbnRDYWlyby5jcHA6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDogTW9zdGx5IG1lY2hhbmljYWwKKyAgICAg
ICAgY2hhbmdlcyB3aGljaCBub3cgcmVmZXJlbmNlIHBsYXRmb3JtQ29udGV4dCgpLT5jcigpIHRv
IGdldCB0aGUgY2Fpcm9fdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oOiBOb3cgaG9sZCB0aGUKKyAgICAgICAg
UGxhdGZvcm1Db250ZXh0Q2Fpcm8gaW5zdGVhZCBvZiB0aGUgY2Fpcm9fdC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDogVXBkYXRlIHRvIHJl
ZmxlY3QgbmV3IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
Q2Fpcm8uY3BwOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRo
Q2Fpcm8uY3BwOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0
Zm9ybUNvbnRleHRDYWlyby5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcDogVXBkYXRlIHRvIHJlZmxlY3QgbmV3IGNsYXNzLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcDogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDog
Tm93IGZpbGwgb3V0CisgICAgICAgIG1fZGF0YSB3aXRoIGEgcHJpdmF0ZSBzZWN0aW9uIGNvbnRh
aW5pbmcgdGhlIHBsYXRmb3JtIGNvbnRleHQgaW5zdGVhZCBvZgorICAgICAgICBqdXN0IGEgY2Fp
cm9fdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOiBVcGRhdGUg
dG8gcmVmbGVjdCBuZXcgY2xhc3MuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRl
cmluZ0NvbnRleHQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldpZGdldFJlbmRlcmlu
Z0NvbnRleHQ6On5XaWRnZXRSZW5kZXJpbmdDb250ZXh0KTogRGl0dG8uCisgICAgICAgICogcGx1
Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHA6IERpdHRvLgorCiAyMDExLTAzLTAzICBNYXJ0aW4g
Um9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBYSFRNTE1QIGJ1aWxk
IGJyb2tlbiBhZnRlciByNzgzNDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYTAyMTgxMWVlMzVk
NjdmNTEzNjMzMGJiZTI1MDMwODQzMzljZmM1Ny4uNzFlZjE2NGRiZTBkNDdmOTM3ZTAyZDVmZGYx
NWFlNGY3MTA3YzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTM3MDcsNiArMzcwNyw4IEBA
IHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vT3duUHRyQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGF0aENhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fp
cm8uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKaW5kZXggNGY5NzZiMzNkOTkyMmJlODA2OGExZDg3YTg3MGRlMGQ2Yjg4ZmZk
Yi4uM2EzYjcwZDA1MWU5NTczZWIxMDliNmNkYWI1ZDU3ZDNlNzA2YjIxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQy
LDggKzQyLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0IFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0OwogI2VsaWYgUExBVEZPUk0oQ0FJUk8pCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
b250ZXh0U2hhZG93OworY2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm87CiB9Ci10eXBlZGVmIHN0
cnVjdCBfY2Fpcm8gUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7Cit0eXBlZGVmIFdlYkNvcmU6OlBs
YXRmb3JtQ29udGV4dENhaXJvIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwogI2VsaWYgUExBVEZP
Uk0oT1BFTlZHKQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU3VyZmFjZU9wZW5WRzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRT
aGFkb3dDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
b250ZXh0U2hhZG93Q2Fpcm8uY3BwCmluZGV4IGIwNTg4ZDY1YzU2MjgwOGRmOGNlN2QyMzBkZDFm
YjQzMjY5ZTAwN2YuLjBmOTBjZTRjMDUyZDYxZjU2ZTc5Yjg3Y2QwODhhYzQ0ZjAyMGM1ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRT
aGFkb3dDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIk93blB0ckNhaXJvLmgiCiAjaW5jbHVkZSAiUGF0
aC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKICNpbmNsdWRlIDxjYWlyby5oPgogCkBAIC04OCw3ICs4OSw3IEBAIFBsYXRmb3JtQ29udGV4
dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QKICAgICBhZGp1c3RCbHVyRGlzdGFuY2UoY29udGV4dCk7CiAKICAgICBkb3VibGUg
eDEsIHgyLCB5MSwgeTI7Ci0gICAgY2Fpcm9fY2xpcF9leHRlbnRzKGNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLCAmeDEsICZ5MSwgJngyLCAmeTIpOworICAgIGNhaXJvX2NsaXBfZXh0ZW50cyhj
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgJngxLCAmeTEsICZ4MiwgJnkyKTsKICAg
ICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnRleHQs
IGxheWVyQXJlYSwgSW50UmVjdCh4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEpKTsKIAogICAgIC8v
IERvbid0IHBhaW50IGlmIHdlIGFyZSB0b3RhbGx5IG91dHNpZGUgdGhlIGNsaXAgcmVnaW9uLgpA
QCAtMTIwLDcgKzEyMSw3IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQogICAgICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHko
bV9sYXllckltYWdlKTsKICAgICB9CiAKLSAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpOworICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgc2V0U291cmNlUkdCQUZyb21Db2xv
cihjciwgbV9jb2xvcik7CiAgICAgY2Fpcm9fbWFza19zdXJmYWNlKGNyLCBtX2xheWVySW1hZ2Us
IG1fbGF5ZXJPcmlnaW4ueCgpLCBtX2xheWVyT3JpZ2luLnkoKSk7CkBAIC0xOTgsNyArMTk5LDcg
QEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICBpbnQgaW50ZXJuYWxTaGFkb3dIZWlnaHQg
PSByYWRpdXNUd2ljZSArIG1heCh0b3BMZWZ0UmFkaXVzLmhlaWdodCgpLCB0b3BSaWdodFJhZGl1
cy5oZWlnaHQoKSkgKwogICAgICAgICBtYXgoYm90dG9tTGVmdFJhZGl1cy5oZWlnaHQoKSwgYm90
dG9tUmlnaHRSYWRpdXMuaGVpZ2h0KCkpOwogCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpOwogCiAgICAgLy8gZHJhd1NoYWRvd2VkUmVjdCBzdGlsbCBkb2VzIG5vdCB3
b3JrIHdpdGggcm90YXRpb25zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NTA0MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKaW5kZXggMmQ3OTQ5OTgwMjRjMDdhNDEzZWZmMDU0ZmU0
Y2EwODUyN2IzZWY4ZS4uNThhN2ZkMmIwYzgzMWFjMDc4MTUyMDFiYmYxZDNhNDA5YjY1ZGQzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q2Fpcm8uY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKICNp
bmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNp
bmNsdWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKQEAgLTY0LDcg
KzY1LDcgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1RvQ29udGV4dChjYWlyb190KiBjb250ZXh0
LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgR2wKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lk
IGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNhaXJv
X3QqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBTaW1wbGVGb250RGF0
YSogZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBpbnQgbnVtR2x5cGhzKQorc3RhdGlj
IHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBHbHlw
aEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlwaHMpCiB7CiAgICAgQ29udGV4dFNoYWRv
dyogc2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LT5jb250ZXh0U2hhZG93KCk7CiAgICAgQVNTRVJU
KHNoYWRvdyk7CkBAIC03NCw2ICs3NSw3IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3co
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNhaXJvX3QqIGNvbnRleHQsCiAKICAg
ICBpZiAoIXNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3coZ3JhcGhpY3NDb250ZXh0KSkgewog
ICAgICAgICAvLyBPcHRpbWl6ZSBub24tYmx1cnJ5IHNoYWRvd3MsIGJ5IGp1c3QgZHJhd2luZyB0
ZXh0IHdpdGhvdXQgdGhlIENvbnRleHRTaGFkb3cuCisgICAgICAgIGNhaXJvX3QqIGNvbnRleHQg
PSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgICAgICBjYWly
b19zYXZlKGNvbnRleHQpOwogICAgICAgICBjYWlyb190cmFuc2xhdGUoY29udGV4dCwgc2hhZG93
LT5tX29mZnNldC53aWR0aCgpLCBzaGFkb3ctPm1fb2Zmc2V0LmhlaWdodCgpKTsKICAgICAgICAg
c2V0U291cmNlUkdCQUZyb21Db2xvcihjb250ZXh0LCBzaGFkb3ctPm1fY29sb3IpOwpAQCAtMTA2
LDkgKzEwOCwxMCBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogICAgICAgICBvZmZzZXQgKz0g
Z2x5cGhCdWZmZXIuYWR2YW5jZUF0KGZyb20gKyBpKTsKICAgICB9CiAKLSAgICBjYWlyb190KiBj
ciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgIGRyYXdHbHlwaHNTaGFkb3coY29u
dGV4dCwgY3IsIHBvaW50LCBmb250LCBnbHlwaHMsIG51bUdseXBocyk7CisgICAgUGxhdGZvcm1D
b250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
OworICAgIGRyYXdHbHlwaHNTaGFkb3coY29udGV4dCwgcG9pbnQsIGZvbnQsIGdseXBocywgbnVt
R2x5cGhzKTsKIAorICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LT5jcigpOwogICAg
IGNhaXJvX3NhdmUoY3IpOwogICAgIHByZXBhcmVDb250ZXh0Rm9yR2x5cGhEcmF3aW5nKGNyLCBm
b250LCBwb2ludCk7CiAgICAgaWYgKGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1v
ZGVGaWxsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFkaWVudENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwCmluZGV4IDRlNmVkMDdlYTM1OWIxY2NjNmMyMmRiM2Yz
YTk3ZmNjOTA4NTg2YWQuLjIyNTA0NmFhM2FhMTM5ZmU0MjlmN2Q5ZjQ5ZWQ1NzY2NmRhYTJjMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRp
ZW50Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYWRpZW50Q2Fpcm8uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDU1NQYXJz
ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNv
bnRleHRDYWlyby5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTg3LDcgKzg4LDcgQEAgdm9pZCBHcmFkaWVudDo6c2V0UGxhdGZvcm1HcmFkaWVudFNwYWNl
VHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZ3JhZGllbnQKIAogdm9pZCBHcmFkaWVu
dDo6ZmlsbChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
IHsKLSAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIGNh
aXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAKICAgICBjb250
ZXh0LT5zYXZlKCk7CiAgICAgY2Fpcm9fc2V0X3NvdXJjZShjciwgcGxhdGZvcm1HcmFkaWVudCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCBlNjlhN2E1YjY0MDBjZTg0NjQw
M2RjYjc3ZTYzYWFkNTI0ZjYzMmFlLi4yZmZjYjNmMTZmYjU4ZWQ2YTk5MmJiN2E5OTM4NWFiODRh
YzU0MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC00Nyw2ICs0Nyw3IEBA
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVk
ZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVk
ZSAiUmVmUHRyQ2Fpcm8uaCIKICNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgogI2luY2x1ZGUg
PGNhaXJvLmg+CkBAIC0xNDgsNyArMTQ5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRo
U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUGF0aERyYXdpbmdTdHlsZSBkcmEKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSBleHRlbnRzIG9mIHRoZSByZW5k
ZXJlZCBzb2xpZCBwYXRocy4KLSAgICBjYWlyb190KiBjYWlyb0NvbnRleHQgPSBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlyb190KiBjYWlyb0NvbnRleHQgPSBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBPd25QdHI8Y2Fpcm9fcGF0aF90PiBwYXRoKGNh
aXJvX2NvcHlfcGF0aChjYWlyb0NvbnRleHQpKTsKIAogICAgIEZsb2F0UmVjdCBzb2xpZEZpZ3Vy
ZUV4dGVudHM7CkBAIC0xOTksMTIgKzIwMCwxMyBAQCBzdGF0aWMgdm9pZCBzdHJva2VDdXJyZW50
Q2Fpcm9QYXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgIGNhaXJvX3QqIGNhaXJvQ29udAog
ICAgIGNhaXJvX25ld19wYXRoKGNhaXJvQ29udGV4dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybUluaXQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGNyKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdChQbGF0Zm9ybUNvbnRleHRDYWlybyogcGxhdGZvcm1D
b250ZXh0KQogewotICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGU7Ci0gICAgbV9kYXRhLT5jciA9IGNhaXJvX3JlZmVyZW5jZShjcik7Ci0gICAgbV9kYXRhLT5z
eW5jQ29udGV4dChjcik7Ci0gICAgc2V0UGFpbnRpbmdEaXNhYmxlZCghY3IpOworICAgIG1fZGF0
YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUocGxhdGZvcm1Db250ZXh0KTs7
CisgICAgaWYgKHBsYXRmb3JtQ29udGV4dCkKKyAgICAgICAgbV9kYXRhLT5zeW5jQ29udGV4dChw
bGF0Zm9ybUNvbnRleHQtPmNyKCkpOworICAgIGVsc2UKKyAgICAgICAgc2V0UGFpbnRpbmdEaXNh
YmxlZCh0cnVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRGVzdHJveSgp
CkBAIC0yMTQsMjAgKzIxNiwyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EZXN0
cm95KCkKIAogQWZmaW5lVHJhbnNmb3JtIEdyYXBoaWNzQ29udGV4dDo6Z2V0Q1RNKCkgY29uc3QK
IHsKLSAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpOworICAgIGNhaXJvX3QqIGNy
ID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fbWF0cml4X3QgbTsKICAgICBj
YWlyb19nZXRfbWF0cml4KGNyLCAmbSk7CiAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybShtLnh4
LCBtLnl4LCBtLnh5LCBtLnl5LCBtLngwLCBtLnkwKTsKIH0KIAotY2Fpcm9fdCogR3JhcGhpY3ND
b250ZXh0OjpwbGF0Zm9ybUNvbnRleHQoKSBjb25zdAorUGxhdGZvcm1Db250ZXh0Q2Fpcm8qIEdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Db250ZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9k
YXRhLT5jcjsKKyAgICByZXR1cm4gbV9kYXRhLT5wbGF0Zm9ybUNvbnRleHQ7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSgpCiB7Ci0gICAgY2Fpcm9fc2F2ZSht
X2RhdGEtPmNyKTsKKyAgICBjYWlyb19zYXZlKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpKTsKICAg
ICBtX2RhdGEtPnNhdmUoKTsKICAgICBtX2RhdGEtPnNoYWRvd1N0YWNrLmFwcGVuZChtX2RhdGEt
PnNoYWRvdyk7CiAgICAgbV9kYXRhLT5tYXNrSW1hZ2VTdGFjay5hcHBlbmQoSW1hZ2VNYXNrSW5m
b3JtYXRpb24oKSk7CkBAIC0yMzUsNyArMjM3LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNh
dmVQbGF0Zm9ybVN0YXRlKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9y
bVN0YXRlKCkKIHsKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCog
Y3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKwogICAgIGNvbnN0IEltYWdlTWFza0luZm9y
bWF0aW9uJiBtYXNrSW5mb3JtYXRpb24gPSBtX2RhdGEtPm1hc2tJbWFnZVN0YWNrLmxhc3QoKTsK
ICAgICBpZiAobWFza0luZm9ybWF0aW9uLmlzVmFsaWQoKSkgewogICAgICAgICBjb25zdCBGbG9h
dFJlY3QmIG1hc2tSZWN0ID0gbWFza0luZm9ybWF0aW9uLm1hc2tSZWN0KCk7CkBAIC0yNTEsNyAr
MjU0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAg
ICAgICAgbV9kYXRhLT5zaGFkb3dTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgfQogCi0gICAgY2Fp
cm9fcmVzdG9yZShtX2RhdGEtPmNyKTsKKyAgICBjYWlyb19yZXN0b3JlKGNyKTsKICAgICBtX2Rh
dGEtPnJlc3RvcmUoKTsKIH0KIApAQCAtMjYxLDcgKzI2NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsK
KyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3Nh
dmUoY3IpOwogCiAgICAgaWYgKGZpbGxDb2xvcigpLmFscGhhKCkpCkBAIC0yODksNyArMjkyLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBwb2ludDEs
IGNvbnN0IEludFBvaW50JiBwb2ludDIpCiAgICAgaWYgKHN0eWxlID09IE5vU3Ryb2tlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9f
dCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAog
ICAgIGZsb2F0IHdpZHRoID0gc3Ryb2tlVGhpY2tuZXNzKCk7CkBAIC0zNzYsNyArMzc5LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbGxpcHNlKGNvbnN0IEludFJlY3QmIHJlY3QpCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9f
dCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCkt
PmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgZmxvYXQgeVJhZGl1cyA9IC41ICogcmVj
dC5oZWlnaHQoKTsKICAgICBmbG9hdCB4UmFkaXVzID0gLjUgKiByZWN0LndpZHRoKCk7CkBAIC00
MTUsNyArNDE4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRS
ZWN0JiByZWN0LCBpbnQgc3RhcnRBbmdsZSwgaW50IGFuZ2xlU3AKICAgICBmbG9hdCBmYSA9IHN0
YXJ0QW5nbGU7CiAgICAgZmxvYXQgZmFsZW4gPSAgZmEgKyBhbmdsZVNwYW47CiAKLSAgICBjYWly
b190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAogICAgIGlmICh3ICE9IGgpCkBAIC00OTIs
NyArNDk1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKHNpemVf
dCBucG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMKICAgICBpZiAobnBvaW50cyA8PSAx
KQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAg
Y2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKIAogICAgIGNhaXJvX3NhdmUo
Y3IpOwogICAgIGNhaXJvX3NldF9hbnRpYWxpYXMoY3IsIHNob3VsZEFudGlhbGlhcyA/IENBSVJP
X0FOVElBTElBU19ERUZBVUxUIDogQ0FJUk9fQU5USUFMSUFTX05PTkUpOwpAQCAtNTIyLDcgKzUy
NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVt
UG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2luCiAgICAgaWYgKG51bVBvaW50cyA8PSAxKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fp
cm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKIAogICAgIGNhaXJvX25ld19wYXRo
KGNyKTsKICAgICBjYWlyb19maWxsX3J1bGVfdCBzYXZlZEZpbGxSdWxlID0gY2Fpcm9fZ2V0X2Zp
bGxfcnVsZShjcik7CkBAIC01NDIsNyArNTQ1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZp
bGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJv
X3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgc2V0UGF0aE9uQ2Fpcm9Db250
ZXh0KGNyLCBwYXRoLnBsYXRmb3JtUGF0aCgpLT5jb250ZXh0KCkpOwogICAgIGZpbGxDdXJyZW50
Q2Fpcm9QYXRoKHRoaXMsIGNyKTsKIH0KQEAgLTU1Miw3ICs1NTUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5j
cjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIHNldFBh
dGhPbkNhaXJvQ29udGV4dChjciwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgpKTsKICAg
ICBzdHJva2VDdXJyZW50Q2Fpcm9QYXRoKHRoaXMsIGNyKTsKIH0KQEAgLTU2Miw3ICs1NjUsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJv
X3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgp
LT5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgcmVj
dC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgIGZpbGxD
dXJyZW50Q2Fpcm9QYXRoKHRoaXMsIGNyKTsKQEAgLTU3OCw3ICs1ODEsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYg
Y29sb3IsIENvbG9yUwogICAgICAgICBtX2RhdGEtPnNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlz
LCBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsKIAogICAgIGlmIChjb2xvci5hbHBoYSgpKQotICAg
ICAgICBmaWxsUmVjdFNvdXJjZU92ZXIobV9kYXRhLT5jciwgcmVjdCwgY29sb3IpOworICAgICAg
ICBmaWxsUmVjdFNvdXJjZU92ZXIocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QsIGNvbG9y
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQpAQCAtNTg2LDcgKzU4OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBw
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgp
LCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19maWxs
X3J1bGVfdCBzYXZlZEZpbGxSdWxlID0gY2Fpcm9fZ2V0X2ZpbGxfcnVsZShjcik7CiAgICAgY2Fp
cm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcpOwpAQCAtNjAwLDcg
KzYwMyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0aChjb25zdCBQYXRoJiBwYXRo
LCBXaW5kUnVsZSBjbGlwUnVsZSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCog
Y3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBzZXRQYXRoT25DYWlyb0NvbnRleHQo
Y3IsIHBhdGgucGxhdGZvcm1QYXRoKCktPmNvbnRleHQoKSk7CiAgICAgY2Fpcm9fc2V0X2ZpbGxf
cnVsZShjciwgY2xpcFJ1bGUgPT0gUlVMRV9FVkVOT0REID8gQ0FJUk9fRklMTF9SVUxFX0VWRU5f
T0REIDogQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcpOwogICAgIGNhaXJvX2NsaXAoY3IpOwpAQCAt
NjM4LDcgKzY0MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0
IFBhdGgmIHBhdGgsIGludCB3aWR0aCwgaW50IC8qIG9mZnNldCAqCiAgICAgYWRqdXN0Rm9jdXNS
aW5nQ29sb3IocmluZ0NvbG9yKTsKICAgICBhZGp1c3RGb2N1c1JpbmdMaW5lV2lkdGgod2lkdGgp
OwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxh
dGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgYXBwZW5kV2Vi
Q29yZVBhdGhUb0NhaXJvQ29udGV4dChjciwgcGF0aCk7CiAgICAgc2V0U291cmNlUkdCQUZyb21D
b2xvcihjciwgcmluZ0NvbG9yKTsKQEAgLTY1NSw3ICs2NTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lk
dGgsIGludAogCiAgICAgdW5zaWduZWQgcmVjdENvdW50ID0gcmVjdHMuc2l6ZSgpOwogCi0gICAg
Y2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250
ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgY2Fpcm9fcHVzaF9ncm91cChj
cik7CiAgICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwpAQCAtNzMyLDcgKzczNSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHRDaGVja2luZyhjb25zdCBGbG9hdFBvaW50JiBv
cmlnaW4sIGZsb2F0IHdpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0g
cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAKICAgICBzd2l0
Y2ggKHN0eWxlKSB7CkBAIC03NjIsNyArNzY1LDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4
dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIGZyZWN0KQogICAgIEZsb2F0
UmVjdCByZXN1bHQ7CiAgICAgZG91YmxlIHggPSBmcmVjdC54KCk7CiAgICAgZG91YmxlIHkgPSBm
cmVjdC55KCk7Ci0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNy
ID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fdXNlcl90b19kZXZpY2UoY3Is
ICZ4LCAmeSk7CiAgICAgeCA9IHJvdW5kKHgpOwogICAgIHkgPSByb3VuZCh5KTsKQEAgLTc5OSw3
ICs4MDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0
IHkpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Y2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250
ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCB4LCB5KTsKICAgICBtX2RhdGEt
PnRyYW5zbGF0ZSh4LCB5KTsKIH0KQEAgLTgyMSw3ICs4MjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1TdHJva2VUaGlja25lc3MoZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKQog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJv
X3NldF9saW5lX3dpZHRoKG1fZGF0YS0+Y3IsIHN0cm9rZVRoaWNrbmVzcyk7CisgICAgY2Fpcm9f
c2V0X2xpbmVfd2lkdGgocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHN0cm9rZVRoaWNrbmVzcyk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKFN0cm9r
ZVN0eWxlIHN0cm9rZVN0eWxlKQpAQCAtODM1LDE2ICs4MzgsMTYgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpCiAg
ICAgc3dpdGNoIChzdHJva2VTdHlsZSkgewogICAgIGNhc2UgTm9TdHJva2U6CiAgICAgICAgIC8v
IEZJWE1FOiBpcyBpdCB0aGUgcmlnaHQgd2F5IHRvIGVtdWxhdGUgTm9TdHJva2U/Ci0gICAgICAg
IGNhaXJvX3NldF9saW5lX3dpZHRoKG1fZGF0YS0+Y3IsIDApOworICAgICAgICBjYWlyb19zZXRf
bGluZV93aWR0aChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgMCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgU29saWRTdHJva2U6Ci0gICAgICAgIGNhaXJvX3NldF9kYXNoKG1fZGF0YS0+Y3Is
IDAsIDAsIDApOworICAgICAgICBjYWlyb19zZXRfZGFzaChwbGF0Zm9ybUNvbnRleHQoKS0+Y3Io
KSwgMCwgMCwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG90dGVkU3Ryb2tlOgotICAg
ICAgICBjYWlyb19zZXRfZGFzaChtX2RhdGEtPmNyLCBkb3RQYXR0ZXJuLCAyLCAwKTsKKyAgICAg
ICAgY2Fpcm9fc2V0X2Rhc2gocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGRvdFBhdHRlcm4sIDIs
IDApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERhc2hlZFN0cm9rZToKLSAgICAgICAgY2Fp
cm9fc2V0X2Rhc2gobV9kYXRhLT5jciwgZGFzaFBhdHRlcm4sIDIsIDApOworICAgICAgICBjYWly
b19zZXRfZGFzaChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgZGFzaFBhdHRlcm4sIDIsIDApOwog
ICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC04NTksNyArODYyLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190
KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+
Y3IoKTsKICAgICBjb25zdCBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSBjYWlyb19tYXRyaXhfdCh0
cmFuc2Zvcm0pOwogICAgIGNhaXJvX3RyYW5zZm9ybShjciwgJm1hdHJpeCk7CiAgICAgbV9kYXRh
LT5jb25jYXRDVE0odHJhbnNmb3JtKTsKQEAgLTg3MCw3ICs4NzMsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNy
ID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigp
OwogICAgIGNvbnN0IGNhaXJvX21hdHJpeF90IG1hdHJpeCA9IGNhaXJvX21hdHJpeF90KHRyYW5z
Zm9ybSk7CiAgICAgY2Fpcm9fc2V0X21hdHJpeChjciwgJm1hdHJpeCk7CiAgICAgbV9kYXRhLT5z
ZXRDVE0odHJhbnNmb3JtKTsKQEAgLTg4MSw3ICs4ODQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHRoaWNr
bmVzcwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpOwogICAgIGNsaXAocmVjdCk7CiAKICAgICBQYXRoIHA7CkBAIC05MjgsNyAr
OTMxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxv
YXQgb3BhY2l0eSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19wdXNoX2dyb3VwKGNyKTsKICAgICBtX2Rh
dGEtPmxheWVycy5hcHBlbmQob3BhY2l0eSk7CiAgICAgbV9kYXRhLT5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKCk7CkBAIC05MzksNyArOTQyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFRy
YW5zcGFyZW5jeUxheWVyKCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3Ig
PSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKIAogICAgIGNhaXJvX3BvcF9ncm91cF90b19zb3Vy
Y2UoY3IpOwogICAgIGNhaXJvX3BhaW50X3dpdGhfYWxwaGEoY3IsIG1fZGF0YS0+bGF5ZXJzLmxh
c3QoKSk7CkBAIC05NTIsNyArOTU1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJv
X3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAKICAgICBjYWlyb19zYXZlKGNyKTsK
ICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgp
LCByZWN0LmhlaWdodCgpKTsKQEAgLTk2Niw3ICs5NjksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IHdpZHRoKQogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNy
ID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigp
OwogICAgIGNhaXJvX3NhdmUoY3IpOwogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgcmVjdC54KCks
IHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgIGNhaXJvX3NldF9s
aW5lX3dpZHRoKGNyLCB3aWR0aCk7CkBAIC05OTEsMTIgKzk5NCwxMiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0TGluZUNhcChMaW5lQ2FwIGxpbmVDYXApCiAgICAgICAgIGNhaXJvQ2FwID0g
Q0FJUk9fTElORV9DQVBfU1FVQVJFOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2Fpcm9f
c2V0X2xpbmVfY2FwKG1fZGF0YS0+Y3IsIGNhaXJvQ2FwKTsKKyAgICBjYWlyb19zZXRfbGluZV9j
YXAocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGNhaXJvQ2FwKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYgZGFzaGVzLCBmbG9hdCBkYXNo
T2Zmc2V0KQogewotICAgIGNhaXJvX3NldF9kYXNoKG1fZGF0YS0+Y3IsIGRhc2hlcy5kYXRhKCks
IGRhc2hlcy5zaXplKCksIGRhc2hPZmZzZXQpOworICAgIGNhaXJvX3NldF9kYXNoKHBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCBkYXNoZXMuZGF0YSgpLCBkYXNoZXMuc2l6ZSgpLCBkYXNoT2Zmc2V0
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExpbmVKb2luKExpbmVKb2luIGxpbmVK
b2luKQpAQCAtMTAxNiw3ICsxMDE5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExpbmVK
b2luKExpbmVKb2luIGxpbmVKb2luKQogICAgICAgICBjYWlyb0pvaW4gPSBDQUlST19MSU5FX0pP
SU5fQkVWRUw7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYWlyb19zZXRfbGluZV9qb2lu
KG1fZGF0YS0+Y3IsIGNhaXJvSm9pbik7CisgICAgY2Fpcm9fc2V0X2xpbmVfam9pbihwbGF0Zm9y
bUNvbnRleHQoKS0+Y3IoKSwgY2Fpcm9Kb2luKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldE1pdGVyTGltaXQoZmxvYXQgbWl0ZXIpCkBAIC0xMDI0LDcgKzEwMjcsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0TWl0ZXJMaW1pdChmbG9hdCBtaXRlcikKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb19zZXRfbWl0ZXJfbGlt
aXQobV9kYXRhLT5jciwgbWl0ZXIpOworICAgIGNhaXJvX3NldF9taXRlcl9saW1pdChwbGF0Zm9y
bUNvbnRleHQoKS0+Y3IoKSwgbWl0ZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
QWxwaGEoZmxvYXQgYWxwaGEpCkBAIC0xMDQyLDcgKzEwNDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fp
cm9fc2V0X29wZXJhdG9yKG1fZGF0YS0+Y3IsIHRvQ2Fpcm9PcGVyYXRvcihvcCkpOworICAgIGNh
aXJvX3NldF9vcGVyYXRvcihwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgdG9DYWlyb09wZXJhdG9y
KG9wKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IFBhdGgmIHBhdGgp
CkBAIC0xMDUwLDcgKzEwNTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBQ
YXRoJiBwYXRoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRm
b3JtQ29udGV4dCgpLT5jcigpOwogICAgIE93blB0cjxjYWlyb19wYXRoX3Q+IHAoY2Fpcm9fY29w
eV9wYXRoKHBhdGgucGxhdGZvcm1QYXRoKCktPmNvbnRleHQoKSkpOwogICAgIGNhaXJvX2FwcGVu
ZF9wYXRoKGNyLCBwLmdldCgpKTsKICAgICBjYWlyb19maWxsX3J1bGVfdCBzYXZlZEZpbGxSdWxl
ID0gY2Fpcm9fZ2V0X2ZpbGxfcnVsZShjcik7CkBAIC0xMDcwLDcgKzEwNzMsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRh
LT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGRv
dWJsZSB4MSwgeTEsIHgyLCB5MjsKICAgICBjYWlyb19jbGlwX2V4dGVudHMoY3IsICZ4MSwgJnkx
LCAmeDIsICZ5Mik7CiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCB4MSwgeTEsIHgyIC0geDEsIHky
IC0geTEpOwpAQCAtMTA4Nyw3ICsxMDkwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJvdGF0
ZShmbG9hdCByYWRpYW5zKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGNhaXJvX3JvdGF0ZShtX2RhdGEtPmNyLCByYWRpYW5zKTsKKyAgICBjYWly
b19yb3RhdGUocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJhZGlhbnMpOwogICAgIG1fZGF0YS0+
cm90YXRlKHJhZGlhbnMpOwogfQogCkBAIC0xMDk2LDcgKzEwOTksNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2NhbGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3NjYWxlKG1fZGF0YS0+Y3Is
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgY2Fpcm9fc2NhbGUocGxhdGZvcm1D
b250ZXh0KCktPmNyKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiAgICAgbV9kYXRh
LT5zY2FsZShzaXplKTsKIH0KIApAQCAtMTEwNSw3ICsxMTA4LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNsaXBPdXQoY29uc3QgSW50UmVjdCYgcikKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7Cisg
ICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBkb3VibGUgeDEs
IHkxLCB4MiwgeTI7CiAgICAgY2Fpcm9fY2xpcF9leHRlbnRzKGNyLCAmeDEsICZ5MSwgJngyLCAm
eTIpOwogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgeDEsIHkxLCB4MiAtIHgxLCB5MiAtIHkxKTsK
QEAgLTExMzIsNyArMTEzNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJl
Y3QoY29uc3QgSW50UmVjdCYgciwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdCwKICAgICBpZiAoaGFz
U2hhZG93KCkpCiAgICAgICAgIG1fZGF0YS0+c2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHIs
IHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CiAKLSAgICBjYWly
b190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBQYXRoIHBhdGg7CiAgICAgcGF0aC5h
ZGRSb3VuZGVkUmVjdChyLCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmln
aHQpOwpAQCAtMTE3MCw3ICsxMTczLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQogICAgIC8vIFdoZW4gdHJ1ZSwgdXNlIHRo
ZSBkZWZhdWx0IENhaXJvIGJhY2tlbmQgYW50aWFsaWFzIG1vZGUgKHVzdWFsbHkgdGhpcwogICAg
IC8vIGVuYWJsZXMgc3RhbmRhcmQgJ2dyYXlzY2FsZScgYW50aWFsaWFzaW5nKTsgZmFsc2UgdG8g
ZXhwbGljaXRseSBkaXNhYmxlCiAgICAgLy8gYW50aWFsaWFzaW5nLiBUaGlzIGlzIHRoZSBzYW1l
IHN0cmF0ZWd5IGFzIHVzZWQgaW4gZHJhd0NvbnZleFBvbHlnb24oKS4KLSAgICBjYWlyb19zZXRf
YW50aWFsaWFzKG1fZGF0YS0+Y3IsIGVuYWJsZSA/IENBSVJPX0FOVElBTElBU19ERUZBVUxUIDog
Q0FJUk9fQU5USUFMSUFTX05PTkUpOworICAgIGNhaXJvX3NldF9hbnRpYWxpYXMocGxhdGZvcm1D
b250ZXh0KCktPmNyKCksIGVuYWJsZSA/IENBSVJPX0FOVElBTElBU19ERUZBVUxUIDogQ0FJUk9f
QU5USUFMSUFTX05PTkUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSkKQEAgLTExOTYsNyArMTE5OSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwdXNoSW1hZ2VNYXNrKGNhaXJvX3N1cmZhY2VfdCog
c3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiByCiAgICAgLy8gV2Ugd2FudCB0byBhbGxvdyB0aGUg
Y2xpcHBlZCBlbGVtZW50cyB0byBjb21wb3NpdGUgd2l0aCB0aGUgc3VyZmFjZSBhcyBpdAogICAg
IC8vIGlzIG5vdywgYnV0IHRoZXkgYXJlIGlzb2xhdGVkIGluIGFub3RoZXIgZ3JvdXAuIFRvIG1h
a2UgdGhpcyB3b3JrLCB3ZSdyZQogICAgIC8vIGdvaW5nIHRvIGJsaXQgdGhlIGN1cnJlbnQgc3Vy
ZmFjZSBjb250ZW50cyBvbnRvIHRoZSBuZXcgZ3JvdXAgb25jZSB3ZSBwdXNoIGl0LgotICAgIGNh
aXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4
dCgpLT5jcigpOwogICAgIGNhaXJvX3N1cmZhY2VfdCogY3VycmVudFRhcmdldCA9IGNhaXJvX2dl
dF90YXJnZXQoY3IpOwogICAgIGNhaXJvX3N1cmZhY2VfZmx1c2goY3VycmVudFRhcmdldCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCmlu
ZGV4IDkyNGY2OWE5NTBjNzhiYTc5Nzk3ZDExNmIwOGE2NWFjMTcwZjc4ZTMuLjEzMjExMmVjZjhk
NTExMDc1OGU4MWU1NjA1MGEwMzU2OGY4MzRiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNh
aXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQ29udGV4dFNoYWRvdy5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIK
ICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPG1hdGguaD4KQEAgLTY1LDEwICs2NiwxMSBA
QCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX21hc2tSZWN0OwogfTsKIAorCiBjbGFzcyBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUgewogcHVibGljOgotICAgIEdyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZSgpCi0gICAgICAgIDogY3IoMCkKKyAgICBHcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8qIG5ld1BsYXRmb3JtQ29udGV4dCkK
KyAgICAgICAgOiBwbGF0Zm9ybUNvbnRleHQobmV3UGxhdGZvcm1Db250ZXh0KQogI2lmIFBMQVRG
T1JNKEdUSykKICAgICAgICAgLCBleHBvc2UoMCkKICNlbGlmIFBMQVRGT1JNKFdJTikKQEAgLTgy
LDcgKzg0LDYgQEAgcHVibGljOgogCiAgICAgfkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZSgpCiAgICAgewotICAgICAgICBjYWlyb19kZXN0cm95KGNyKTsKICAgICB9CiAKICNpZiBQTEFU
Rk9STShXSU4pCkBAIC05OSw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDVE0oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKCkg
eyBtX3RyYW5zcGFyZW5jeUNvdW50Kys7IH0KICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVy
KCkgeyBtX3RyYW5zcGFyZW5jeUNvdW50LS07IH0KLSAgICB2b2lkIHN5bmNDb250ZXh0KFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0KiBjcik7CisgICAgdm9pZCBzeW5jQ29udGV4dChjYWlyb190KiBj
cik7CiAjZWxzZQogICAgIC8vIE9uIGV2ZXJ5dGhpbmcgZWxzZSwgd2UgZG8gbm90aGluZy4KICAg
ICB2b2lkIHNhdmUoKSB7fQpAQCAtMTE0LDEyICsxMTUsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIHt9CiAgICAgdm9pZCBiZWdpblRyYW5zcGFy
ZW5jeUxheWVyKCkge30KICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCkge30KLSAgICB2
b2lkIHN5bmNDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBjcikge30KKyAgICB2b2lk
IHN5bmNDb250ZXh0KGNhaXJvX3QqIGNyKSB7fQogI2VuZGlmCiAKLSAgICBjYWlyb190KiBjcjsK
KyAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyogcGxhdGZvcm1Db250ZXh0OwogICAgIFZlY3Rvcjxm
bG9hdD4gbGF5ZXJzOwotCiAgICAgQ29udGV4dFNoYWRvdyBzaGFkb3c7CiAgICAgVmVjdG9yPENv
bnRleHRTaGFkb3c+IHNoYWRvd1N0YWNrOwogICAgIFZlY3RvcjxJbWFnZU1hc2tJbmZvcm1hdGlv
bj4gbWFza0ltYWdlU3RhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDllZThhOTQwYWM3
MGNkNGJiYzM5OTQ3ZjdiNjU4M2ZiNTYzYzE4YzMuLjFkNWQ0OTIxODVhODQzNjAxMDA5NTY1YzY3
ODZjNWVmNzVlZjdiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0zNyw3ICszNyw5IEBA
CiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJv
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5o
IgogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC02Niw2
ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW1hZ2VCdWZmZXJEYXRhOjpJbWFnZUJ1
ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICA6IG1fc3VyZmFjZSgwKQorICAgICwg
bV9wbGF0Zm9ybUNvbnRleHQoMCkKIHsKIH0KIApAQCAtODAsOSArODMsOSBAQCBJbWFnZUJ1ZmZl
cjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29sb3JTcGFjZSwgUmVuZGVyaW5n
TW9kZSwgYm9vbCYgcwogICAgIGlmIChjYWlyb19zdXJmYWNlX3N0YXR1cyhtX2RhdGEubV9zdXJm
YWNlKSAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuOyAgLy8gY3JlYXRl
IHdpbGwgbm90aWNlIHdlIGRpZG4ndCBzZXQgbV9pbml0aWFsaXplZCBhbmQgZmFpbC4KIAotICAg
IGNhaXJvX3QqIGNyID0gY2Fpcm9fY3JlYXRlKG1fZGF0YS5tX3N1cmZhY2UpOwotICAgIG1fY29u
dGV4dC5zZXQobmV3IEdyYXBoaWNzQ29udGV4dChjcikpOwotICAgIGNhaXJvX2Rlc3Ryb3koY3Ip
OyAgLy8gVGhlIGNvbnRleHQgaXMgbm93IG93bmVkIGJ5IHRoZSBHcmFwaGljc0NvbnRleHQuCisg
ICAgUmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fZGF0YS5tX3N1
cmZhY2UpKTsKKyAgICBtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuc2V0Q3IoY3IuZ2V0KCkpOwor
ICAgIG1fY29udGV4dC5zZXQobmV3IEdyYXBoaWNzQ29udGV4dCgmbV9kYXRhLm1fcGxhdGZvcm1D
b250ZXh0KSk7CiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CiAKQEAgLTMwMSw3ICszMDQsNyBAQCBz
dGF0aWMgY2Fpcm9fc3RhdHVzX3Qgd3JpdGVGdW5jdGlvbih2b2lkKiBjbG9zdXJlLCBjb25zdCB1
bnNpZ25lZCBjaGFyKiBkYXRhLCB1bgogCiBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqKSBjb25zdAogewotICAgIGNhaXJv
X3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRleHQoKS0+cGxhdGZvcm1D
b250ZXh0KCkpOworICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0
KGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOwogICAgIGlmICghaW1hZ2UpCiAg
ICAgICAgIHJldHVybiAiZGF0YTosIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGEuaAppbmRleCA0OWYxNWRmODkx
M2E5YWRhZWEyOWZiODExZjJiNGQxNGI2MzdiN2JjLi40Mjg2N2QxODA3NTQ3ZTliMTkzNzgwYjE5
NTk1ZTcwNDI1ZmMyM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGEuaApAQCAtMjYsNyArMjYsOSBAQAogI2lm
bmRlZiBJbWFnZUJ1ZmZlckRhdGFfaAogI2RlZmluZSBJbWFnZUJ1ZmZlckRhdGFfaAogCi0jaW5j
bHVkZSAiY2Fpcm8uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgorCit0eXBl
ZGVmIHN0cnVjdCBfY2Fpcm9fc3VyZmFjZSBjYWlyb19zdXJmYWNlX3Q7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMzcsNiArMzksNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2VCdWZmZXJEYXRh
KGNvbnN0IEludFNpemUmKTsKIAogICAgIGNhaXJvX3N1cmZhY2VfdCogbV9zdXJmYWNlOworICAg
IFBsYXRmb3JtQ29udGV4dENhaXJvIG1fcGxhdGZvcm1Db250ZXh0OwogfTsKIAogfSAgLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKaW5kZXggZTUxZDY1YTNmZGQxZjU5NjUxMmM1OTRmZmU5
YTA3OWU2MjI3M2UwMC4uZDNhNTJjZTc0YjUzZjI1NmZjMTQ5YmVkYTg0MzBiOTRlMjVjNDlkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VDYWlyby5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJDb250ZXh0U2hhZG93Lmgi
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5o
IgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgpA
QCAtMTE0LDcgKzExNSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAKICAgICBJbnRTaXpl
IHNlbGZTaXplID0gc2l6ZSgpOwogCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5jcigpOwogICAgIGNvbnRleHQtPnNhdmUoKTsKIAogICAgIC8vIFNldCB0aGUgY29tcG9zaXRp
bmcgb3BlcmF0aW9uLgpAQCAtMTY5LDggKzE3MCw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
CiAgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBp
bWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7Ci0KKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpOwogICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoY3IsIGltYWdl
LCBzaXplKCksIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgdG9DYWlyb09wZXJh
dG9yKG9wKSwgZGVzdFJlY3QpOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCmlu
ZGV4IDdhMDlhNTIzODA1NDAxMGIwM2M1ZGE1ZGUxYzI0NGYzYjkyMDhlMDEuLjA4YTEwN2RlNGJk
M2QxYmQ0NGFhNGI2MjFmNDg3NWI2MzM3NmUyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIk93blB0ckNhaXJvLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlN0cm9rZVN0eWxlQXBw
bGllci5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CkBAIC0yODUsNyArMjg2LDggQEAgRmxvYXRSZWN0
IFBhdGg6OnN0cm9rZUJvdW5kaW5nUmVjdChTdHJva2VTdHlsZUFwcGxpZXIqIGFwcGxpZXIpCiB7
CiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgpOwogICAgIGlmIChh
cHBsaWVyKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjcik7CisgICAgICAgIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0IHBsYXRmb3JtQ29udGV4dChjcik7CisgICAgICAgIEdyYXBoaWNz
Q29udGV4dCBnYygmcGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAgYXBwbGllci0+c3Ryb2tlU3R5
bGUoJmdjKTsKICAgICB9CiAKQEAgLTMxMCw3ICszMTIsOCBAQCBib29sIFBhdGg6OnN0cm9rZUNv
bnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciogYXBwbGllciwgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQpCiB7CiAgICAgQVNTRVJUKGFwcGxpZXIpOwogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Q
YXRoKCktPmNvbnRleHQoKTsKLSAgICBHcmFwaGljc0NvbnRleHQgZ2MoY3IpOworICAgIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0IHBsYXRmb3JtQ29udGV4dChjcik7CisgICAgR3JhcGhpY3NDb250
ZXh0IGdjKCZwbGF0Zm9ybUNvbnRleHQpOwogICAgIGFwcGxpZXItPnN0cm9rZVN0eWxlKCZnYyk7
CiAKICAgICByZXR1cm4gY2Fpcm9faW5fc3Ryb2tlKGNyLCBwb2ludC54KCksIHBvaW50LnkoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0
Zm9ybUNvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmE3NTE2MmQ3NTJiNTMw
YzNmMjJmM2Q4YmI1NjQ5Mjc4ZTg2MzM0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcApAQCAt
MCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5o
IgorCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQbGF0Zm9y
bUNvbnRleHRDYWlybzo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8oY2Fpcm9fdCogY3IpCisgICAgOiBt
X2NyKGNyKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jNmNjZWRhYjIzNGUyZWY1MjY1MGJhZWYzM2U3OWExY2RmMThh
YWY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUGxhdGZvcm1Db250
ZXh0Q2Fpcm9faAorI2RlZmluZSBQbGF0Zm9ybUNvbnRleHRDYWlyb19oCisKKyNpbmNsdWRlICJD
b250ZXh0U2hhZG93LmgiCisjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisvLyBNdWNoIGxpa2UgUGxhdGZvcm1Db250ZXh0U2tpYSBpbiB0aGUgU2tpYSBw
b3J0LCB0aGlzIGNsYXNzIGhvbGRzIGluZm9ybWF0aW9uIHRoYXQKKy8vIHdvdWxkIG5vcm1hbGx5
IGJlIHByaXZhdGUgdG8gR3JhcGhpY3NDb250ZXh0LCBleGNlcHQgdGhhdCB3ZSB3YW50IHRvIGFs
bG93IGFjY2VzcworLy8gdG8gaXQgaW4gRm9udCBhbmQgSW1hZ2UgY29kZS4gVGhpcyBhbGxvd3Mg
dXMgdG8gc2VwYXJhdGUgdGhlIGNvbmNlcm5zIG9mIENhaXJvLXNwZWNpZmljCisvLyBjb2RlIGZy
b20gdGhlIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dC4KKworY2xhc3MgUGxh
dGZvcm1Db250ZXh0Q2Fpcm8geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYXRmb3JtQ29u
dGV4dENhaXJvKTsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyhjYWlyb190Kik7
CisgICAgY2Fpcm9fdCogY3IoKSB7IHJldHVybiBtX2NyLmdldCgpOyB9CisgICAgdm9pZCBzZXRD
cihjYWlyb190KiBjcikgeyBtX2NyID0gY3I7IH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8Y2Fp
cm9fdD4gbV9jcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBs
YXRmb3JtQ29udGV4dENhaXJvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9Gb250R3RrLmNwcAppbmRleCAyMTZmYjU2NjI1MGJiY2Q2ODdlZmY0OGQ4NDdlOTg0
ZmM0NTA0YzU5Li5kMThjMDJiZDk2NGI2YTY0Mjk4OGQyYmViMTZlNzQ3MTUwNzkxMTRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCkBA
IC0zNSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkNvbnRleHRTaGFkb3cuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKQEAgLTIyMCw3ICsyMjEsNyBAQCBib29sIEZvbnQ6
OmNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0KCkKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBQYW5nb0xheW91dExpbmUqIGxheW91dExpbmUsIFBhbmdvUmVnaW9uVHlwZSByZW5kZXJSZWdp
b24pCitzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgUGFuZ29MYXlvdXRMaW5lKiBsYXlv
dXRMaW5lLCBQYW5nb1JlZ2lvblR5cGUgcmVuZGVyUmVnaW9uKQogewogICAgIENvbnRleHRTaGFk
b3cqIHNoYWRvdyA9IGdyYXBoaWNzQ29udGV4dC0+Y29udGV4dFNoYWRvdygpOwogICAgIEFTU0VS
VChzaGFkb3cpOwpAQCAtMjMyLDYgKzIzMyw3IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFk
b3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNhaXJvX3QqIGNvbnRleHQsCiAK
ICAgICAvLyBPcHRpbWl6ZSBub24tYmx1cnJ5IHNoYWRvd3MsIGJ5IGp1c3QgZHJhd2luZyB0ZXh0
IHdpdGhvdXQgdGhlIENvbnRleHRTaGFkb3cuCiAgICAgaWYgKCFzaGFkb3ctPm11c3RVc2VDb250
ZXh0U2hhZG93KGdyYXBoaWNzQ29udGV4dCkpIHsKKyAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9
IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgICAgIGNhaXJv
X3NhdmUoY29udGV4dCk7CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjb250ZXh0LCB0b3RhbE9m
ZnNldC54KCksIHRvdGFsT2Zmc2V0LnkoKSk7CiAKQEAgLTI1NSw2ICsyNTcsNyBAQCBzdGF0aWMg
dm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
YWlyb190KiBjb250ZXh0LAogICAgICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgYW55IGJp
dHMgYW5kIHBpZWNlcyBvZiBjaGFyYWN0ZXJzIG91dCBvZiByYW5nZSB0byBiZQogICAgICAgICAv
LyBkcmF3bi4gU2luY2UgQ29udGV4dFNoYWRvdyBleHBlY3RzIGEgY29uc2lzdGVudCB0cmFuc2Zv
cm0sIHdlIGhhdmUgdG8gdW5kbyB0aGUKICAgICAgICAgLy8gdHJhbnNsYXRpb24gYmVmb3JlIGNh
bGxpbmcgZW5kU2hhZG93TGF5ZXIgYXMgd2VsbC4KKyAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9
IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgICAgIGNhaXJv
X3NhdmUoY29udGV4dCk7CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjb250ZXh0LCB0b3RhbE9m
ZnNldC54KCksIHRvdGFsT2Zmc2V0LnkoKSk7CiAgICAgICAgIGdka19jYWlyb19yZWdpb24oY29u
dGV4dCwgcmVuZGVyUmVnaW9uKTsKQEAgLTI3NSw3ICsyNzgsNyBAQCB2b2lkIEZvbnQ6OmRyYXdD
b21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QgRgogICAgIH0KICNlbmRpZgogCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLT5jcigpOwogICAgIFBhbmdvTGF5b3V0KiBsYXlvdXQgPSBwYW5nb19jYWlyb19jcmVhdGVf
bGF5b3V0KGNyKTsKICAgICBzZXRQYW5nb0F0dHJpYnV0ZXModGhpcywgcnVuLCBsYXlvdXQpOwog
CkBAIC0yOTQsNyArMjk3LDcgQEAgdm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEYKICAgICBpbnQgcmFu
Z2VzW10gPSB7c3RhcnQgLSB1dGY4LCBlbmQgLSB1dGY4fTsKICAgICBwYXJ0aWFsUmVnaW9uID0g
Z2RrX3BhbmdvX2xheW91dF9saW5lX2dldF9jbGlwX3JlZ2lvbihsYXlvdXRMaW5lLCAwLCAwLCBy
YW5nZXMsIDEpOwogCi0gICAgZHJhd0dseXBoc1NoYWRvdyhjb250ZXh0LCBjciwgcG9pbnQsIGxh
eW91dExpbmUsIHBhcnRpYWxSZWdpb24pOworICAgIGRyYXdHbHlwaHNTaGFkb3coY29udGV4dCwg
cG9pbnQsIGxheW91dExpbmUsIHBhcnRpYWxSZWdpb24pOwogCiAgICAgY2Fpcm9fc2F2ZShjcik7
CiAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCBwb2ludC54KCksIHBvaW50LnkoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0ay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0ay5jcHAKaW5kZXggZDU2
YjUyZGU4ODAzM2M5Yzg3YWEyYzE4MjhjZTFmMDY0ZTgzNDA0NC4uN2ZkYzFmNjc4NThhMjA0Y2Iz
NDg2Yzc0MjFjZmNjMTUwNjM1MTVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcApAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRl
ICJQYXNzUmVmUHRyLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCisjaW5jbHVk
ZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExNyw3
ICsxMTcsNyBAQCB2b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVE9ETzogU2NhbGUv
Y2xpcCB0aGUgaW1hZ2UgaWYgbmVjZXNzYXJ5LgotICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7CisgICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBnZGtfY2Fpcm9fc2V0X3Nv
dXJjZV9waXhidWYoY3IsIG1faWNvbiwgcmVjdC54KCksIHJlY3QueSgpKTsKICAgICBjYWlyb19w
YWludChjcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcAppbmRleCBiMmM3MDJmMjY1
ZDIzNzQ2OWQ1MDc5OWQ4NjdiY2IzZDE5YzhhNTdhLi41OWJhMWQ1YjBjNGRmYWZiMWFlMTcwNDFk
Yzc2ZmFmNDI1MTQyZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAKQEAgLTM2
LDYgKzM2LDIzIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorLy8gVGhpcyBpcyBhIHNwZWNpYWxpemVkIHByaXZhdGUgc2VjdGlvbiBmb3IgdGhlIFdpbkNh
aXJvIEdyYXBoaWNzQ29udGV4dCwgd2hpY2gga25vd3MgaG93CisvLyB0byBjbGVhbiB1cCB0aGUg
aGVhcCBhbGxvY2F0ZWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm8gdGhhdCB3ZSBtdXN0IHVzZSBmb3Ig
dGhlIHRvcC1sZXZlbAorLy8gV2luQ2Fpcm8gR3JhcGhpY3NDb250ZXh0LgorY2xhc3MgR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlV2luQ2Fpcm8gOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlIHsKK3B1YmxpYzoKKyAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGVXaW5DYWlybyhQbGF0Zm9ybUNvbnRleHRDYWlybyogcGxhdGZvcm1Db250ZXh0LCBIREMg
aGRjKQorICAgICAgICA6IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShwbGF0Zm9ybUNv
bnRleHQpCisgICAgeworICAgICAgICBtX2hkYyA9IGhkYzsKKyAgICB9CisKKyAgICB+R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlV2luQ2Fpcm8oKQorICAgIHsKKyAgICAgICAgZGVsZXRl
IHBsYXRmb3JtQ29udGV4dDsKKyAgICB9Cit9OworCiBzdGF0aWMgY2Fpcm9fdCogY3JlYXRlQ2Fp
cm9Db250ZXh0V2l0aEhEQyhIREMgaGRjLCBib29sIGhhc0FscGhhKQogewogICAgIC8vIFB1dCB0
aGUgSERDIEluIGFkdmFuY2VkIG1vZGUgc28gaXQgd2lsbCBob25vciBhZmZpbmUgdHJhbnNmb3Jt
cy4KQEAgLTcyLDE4ICs4OSwxNCBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChI
REMgZGMsIGJvb2wgaGFzQWxwaGEpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUlu
aXQoSERDIGRjLCBib29sIGhhc0FscGhhKQogewotICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGU7Ci0KLSAgICBpZiAoZGMpIHsKLSAgICAgICAgbV9kYXRhLT5j
ciA9IGNyZWF0ZUNhaXJvQ29udGV4dFdpdGhIREMoZGMsIGhhc0FscGhhKTsKLSAgICAgICAgbV9k
YXRhLT5tX2hkYyA9IGRjOwotICAgIH0gZWxzZSB7CisgICAgY2Fpcm9fdCogY3IgPSAwOworICAg
IGlmIChkYykKKyAgICAgICAgY3IgPSBjcmVhdGVDYWlyb0NvbnRleHRXaXRoSERDKGRjLCBoYXNB
bHBoYSk7CisgICAgZWxzZQogICAgICAgICBzZXRQYWludGluZ0Rpc2FibGVkKHRydWUpOwotICAg
ICAgICBtX2RhdGEtPmNyID0gMDsKLSAgICAgICAgbV9kYXRhLT5tX2hkYyA9IDA7Ci0gICAgfQog
Ci0gICAgaWYgKG1fZGF0YS0+Y3IpIHsKKyAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlV2luQ2Fpcm8obmV3IFBsYXRmb3JtQ29udGV4dENhaXJvKGNyKSwgZGMp
OworICAgIGlmIChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSkgewogICAgICAgICAvLyBNYWtlIHN1
cmUgdGhlIGNvbnRleHQgc3RhcnRzIGluIHN5bmMgd2l0aCBvdXIgc3RhdGUuCiAgICAgICAgIHNl
dFBsYXRmb3JtRmlsbENvbG9yKGZpbGxDb2xvcigpLCBmaWxsQ29sb3JTcGFjZSgpKTsKICAgICAg
ICAgc2V0UGxhdGZvcm1TdHJva2VDb2xvcihzdHJva2VDb2xvcigpLCBzdHJva2VDb2xvclNwYWNl
KCkpOwpAQCAtMTMxLDI0ICsxNDQsMjUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlbGVhc2VX
aW5kb3dzQ29udGV4dChIREMgaGRjLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBib28KICAgICAv
LyBTY2FsZSB0aGUgdGFyZ2V0IHN1cmZhY2UgdG8gdGhlIG5ldyBpbWFnZSBzaXplLCBhbmQgZmxp
cCBpdAogICAgIC8vIHNvIHRoYXQgd2hlbiB3ZSBzZXQgdGhlIHNyY0ltYWdlIGFzIHRoZSBzdXJm
YWNlIGl0IHdpbGwgZHJhdwogICAgIC8vIHJpZ2h0LXNpZGUtdXAuCi0gICAgY2Fpcm9fc2F2ZSht
X2RhdGEtPmNyKTsKLSAgICBjYWlyb190cmFuc2xhdGUobV9kYXRhLT5jciwgZHN0UmVjdC54KCks
IGRzdFJlY3QuaGVpZ2h0KCkgKyBkc3RSZWN0LnkoKSk7Ci0gICAgY2Fpcm9fc2NhbGUobV9kYXRh
LT5jciwgMS4wLCAtMS4wKTsKLSAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UobV9kYXRhLT5j
ciwgaW1hZ2UsIDAsIDApOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNy
KCk7CisgICAgY2Fpcm9fc2F2ZShjcik7CisgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCBkc3RSZWN0
LngoKSwgZHN0UmVjdC5oZWlnaHQoKSArIGRzdFJlY3QueSgpKTsKKyAgICBjYWlyb19zY2FsZShj
ciwgMS4wLCAtMS4wKTsKKyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIGltYWdlLCAw
LCAwKTsKIAogICAgIGlmIChtX2RhdGEtPmxheWVycy5zaXplKCkpCi0gICAgICAgIGNhaXJvX3Bh
aW50X3dpdGhfYWxwaGEobV9kYXRhLT5jciwgbV9kYXRhLT5sYXllcnMubGFzdCgpKTsKKyAgICAg
ICAgY2Fpcm9fcGFpbnRfd2l0aF9hbHBoYShjciwgbV9kYXRhLT5sYXllcnMubGFzdCgpKTsKICAg
ICBlbHNlCi0gICAgICAgIGNhaXJvX3BhaW50KG1fZGF0YS0+Y3IpOworICAgICAgICBjYWlyb19w
YWludChjcik7CiAgICAgIAogICAgIC8vIERlbGV0ZSBhbGwgb3VyIGp1bmsuCiAgICAgY2Fpcm9f
c3VyZmFjZV9kZXN0cm95KGltYWdlKTsKICAgICA6OkRlbGV0ZURDKGhkYyk7CiAgICAgOjpEZWxl
dGVPYmplY3QoYml0bWFwKTsKLSAgICBjYWlyb19yZXN0b3JlKG1fZGF0YS0+Y3IpOworICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZTo6c3luY0NvbnRleHQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGNyKQordm9pZCBHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OnN5bmNDb250ZXh0KGNhaXJvX3QqIGNyKQogewogICAg
IGlmICghY3IpCiAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IDcwYjEzMmVmMzc1ZjI4
NjRhNjFlOTg1MWJjNmZjNzQ3Njg4ODU3YWIuLjdkZDY3ZmJmZDUwNTU4YmM3NDI4MzA3Mjk4Yjk4
OWM2MWY5ODIxYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJ
bWFnZS5oIgogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlIDxjYWly
by5oPgogI2luY2x1ZGUgPGNhaXJvLXdpbjMyLmg+CiAKQEAgLTc4LDcgKzc5LDggQEAgYm9vbCBC
aXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgTFBTSVpFIHNpemUpCiAg
ICAgY2Fpcm9fdCogdGFyZ2V0UmVmID0gY2Fpcm9fY3JlYXRlKGltYWdlKTsKICAgICBjYWlyb19z
dXJmYWNlX2Rlc3Ryb3koaW1hZ2UpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0IGdjKHRhcmdldFJl
Zik7CisgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQgcGxhdGZvcm1Db250ZXh0KHRhcmdldFJl
Zik7CisgICAgR3JhcGhpY3NDb250ZXh0IGdjKCZwbGF0Zm9ybUNvbnRleHQpOwogCiAgICAgSW50
U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwogICAgIGlmIChzaXplKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggMWU5
ZjE1OTQ5MWZjMDMwZWRlZWI5MjI4NjkwYzBjNjcxMDNiNjk4OS4uOWIxMWMyNzdjMDg5MmU4NTlm
Y2I3NzhlMWEzNmQ5NzNmNDYwYWQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKICNpbmNsdWRlICJQYWlu
dEluZm8uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJl
bmRlckJveC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlRpbWVSYW5n
ZXMuaCIKQEAgLTIzNCw3ICsyMzUsNyBAQCBzdGF0aWMgdm9pZCBwYWludEdka1BpeGJ1ZihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEdka1BpeGJ1ZiogaWNvbiwgY29ucwogICAgICAg
ICBpY29uID0gc2NhbGVkSWNvbi5nZXQoKTsKICAgICB9CiAKLSAgICBjYWlyb190KiBjciA9IGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgZ2RrX2NhaXJv
X3NldF9zb3VyY2VfcGl4YnVmKGNyLCBpY29uLCBpY29uUmVjdC54KCksIGljb25SZWN0LnkoKSk7
CiAgICAgY2Fpcm9fcGFpbnQoY3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDllNjQwZjZmYWIzMTNiZTVh
YzRjOWNjZDY5YjYwMWZmNmU5MTE1NzMuLjZmNzM4OWQ3MDQ1YTg1YTAwZWFmYmQ0NzBjMzlhYjk0
YjhkMzcxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRS
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lk
Z2V0UmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGhlbWVHdGsuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtMTI4LDcgKzEyOSw3
IEBAIFdpZGdldFJlbmRlcmluZ0NvbnRleHQ6On5XaWRnZXRSZW5kZXJpbmdDb250ZXh0KCkKICAg
ICB9CiAKICAgICAvLyBGSVhNRTogSXQncyB1bmNsZWFyIGlmIGl0IGlzIG5lY2Vzc2FyeSB0byBw
cmVzZXJ2ZSB0aGUgY3VycmVudCBzb3VyY2UgaGVyZS4KLSAgICBjYWlyb190KiBjYWlyb0NvbnRl
eHQgPSBtX2dyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgY2Fpcm9fdCog
Y2Fpcm9Db250ZXh0ID0gbV9ncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigp
OwogICAgIFJlZlB0cjxjYWlyb19wYXR0ZXJuX3Q+IHByZXZpb3VzU291cmNlKGNhaXJvX2dldF9z
b3VyY2UoY2Fpcm9Db250ZXh0KSk7CiAKICAgICAvLyBUaGUgYmxpdCByZWN0YW5nbGUgaXMgdGhl
IG9yaWdpbmFsIHRhcmdldCByZWN0YW5nbGUgYWRqdXN0ZWQgZm9yIGFueSBleHRyYSBzcGFjZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAKaW5kZXggMmVl
ZDNhNGZjZGEzYjk2NGZiY2QzNDA5MjRkMjgzOGIwMDU0NGUxOC4uOGY3ZTZiN2QxNmFjMDc5MWUz
YzE2ZWY2Y2RhNjlhM2ExOWM5M2IwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9ndGsvUGx1Z2luVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsv
UGx1Z2luVmlld0d0ay5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJLZXlib2FyZEV2
ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRF
dmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsdWdp
bkRlYnVnLmgiCkBAIC0yMTcsNyArMjE4LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwYWludChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgICAgICAgICAv
LyBhdm9pZCBkcmF3aW5nIGFydGlmYWN0cy4KIAogICAgICAgICAgICAgLy8gVGhpcyBXb3VsZCBu
b3Qgd29yayB3aXRob3V0IGRvdWJsZSBidWZmZXJpbmcsIGJ1dCB3ZSBhbHdheXMgdXNlIGl0Lgot
ICAgICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBjYWlyb19nZXRf
Z3JvdXBfdGFyZ2V0KGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKSwKKyAgICAgICAgICAgIGNh
aXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgY2Fpcm9fZ2V0X2dyb3VwX3RhcmdldChj
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLW1fd2luZG93UmVjdC54KCksIC1tX3dpbmRvd1JlY3QueSgpKTsKICAg
ICAgICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1JfU09V
UkNFKTsKICAgICAgICAgfSBlbHNlCkBAIC0yNDQsNyArMjQ1LDcgQEAgdm9pZCBQbHVnaW5WaWV3
OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAg
ICAgaWYgKHN5bmNYKQogICAgICAgICBYU3luYyhtX3BsdWdpbkRpc3BsYXksIGZhbHNlKTsgLy8g
c3luYyBjaGFuZ2VzIGJ5IHBsdWdpbgogCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLT5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogCiAgICAgY2Fpcm9fc2V0X3NvdXJjZV9z
dXJmYWNlKGNyLCBkcmF3YWJsZVN1cmZhY2UuZ2V0KCksIGZyYW1lUmVjdCgpLngoKSwgZnJhbWVS
ZWN0KCkueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdp
blZpZXdXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5j
cHAKaW5kZXggMjA4MTIxZTM4N2NmNDUwMjIzNzQ1ZDRiMmEzZjdiYjExMWNlMTA0NS4uZjU3NTcw
OTMyMTRjY2ZhMmE3ZWE0ODllNTZlMjMzNzlmZjk5MDRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKQEAgLTgzLDYgKzgzLDcgQEAKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oQ0FJUk8pCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIK
ICNpbmNsdWRlIDxjYWlyby13aW4zMi5oPgogI2VuZGlmCiAKQEAgLTU3Miw4ICs1NzMsNyBAQCB2
b2lkIFBsdWdpblZpZXc6OnBhaW50V2luZG93ZWRQbHVnaW5JbnRvQ29udGV4dChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgLy8gTXVzdCBmbHVzaCBkcmF3aW5ncyB1cCB0byB0
aGlzIHBvaW50IHRvIHRoZSBiYWNraW5nIG1ldGFmaWxlLCBvdGhlcndpc2UgdGhlCiAgICAgLy8g
cGx1Z2luIHJlZ2lvbiB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggYW55IGNsZWFyIHJlZ2lvbnMg
c3BlY2lmaWVkIGluIHRoZQogICAgIC8vIGNhaXJvLWNvbnRyb2xsZWQgcG9ydGlvbnMgb2YgdGhl
IHJlbmRlcmluZy4KLSAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogY3R4ID0gY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgY2Fpcm9fc2hvd19wYWdlKGN0eCk7CisgICAgY2Fpcm9f
c2hvd19wYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpKTsKICNlbmRpZgogCiAg
ICAgSERDIGhkYyA9IHdpbmRvd3NDb250ZXh0LmhkYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDRk
M2VjOTVmYjVkMzM4NGRkYTczNmE2YjAzODFmZGRkNWMyM2QxMDAuLmUwOTViYzUwNjM1OWEzNzY5
MDM5MmMyMzJlMDVhMTUwZDkwNzcyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxMS0wMy0wNCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0NhaXJvXSBC
ZXR0ZXIgc2VwYXJhdGUgdGhlIGNvbmNlcm5zIG9mIEdyYXBoaWNzQ29udGV4dENhaXJvCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTE1MAorCisgICAg
ICAgIEFkZCBhIFBsYXRmb3JtQ29udGV4dENhaXJvIHdoaWNoIHJpZ2h0IG5vdyBzdG9yZXMgdGhl
IGNhaXJvX3QqIGZvciBhCisgICAgICAgIEdyYXBoaWNzQ29udGV4dENhaXJvLiBMYXRlciBwYXRj
aGVzIHdpbGwgbW92ZSBsb2dpYyBmb3IgdHJhY2tpbmcgQ29udGV4dFNoYWRvdworICAgICAgICBh
bmQgaW1hZ2UgbWFza2luZyBsYXllcnMgaW50byB0aGlzIFBsYXRmb3JtQ29udGV4dENhaXJvIGNs
YXNzLgorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcDoKKyAgICAgICAgKGRy
YXdfcGFnZV9jYWxsYmFjayk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X2V4cG9zZV9ldmVudCk6CisgICAgICAgICh3ZWJraXRf
d2ViX3ZpZXdfZHJhdyk6CisKIDIwMTEtMDMtMDMgIEx1a2FzeiBTbGFjaGNpYWsgIDxsLnNsYWNo
Y2lha0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAppbmRleCBmZDkwYTZjMjcw
OTQ3ZmI0NmQ5ZDQ4MGQyZWM5MTI3MDA3Yjk0MjFiLi5hMGU0MGIzYTIxNWQyYTU0OTc0MmIwYzhl
NjkyMWE3MjM0NmM3MmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJm
cmFtZS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNp
bmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRWxlbWVudC5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCkBA
IC03NjUsMTcgKzc2NiwxNyBAQCBzdGF0aWMgdm9pZCBiZWdpbl9wcmludF9jYWxsYmFjayhHdGtQ
cmludE9wZXJhdGlvbiogb3AsIEd0a1ByaW50Q29udGV4dCogY29udGV4dAogICAgIGd0a19wcmlu
dF9vcGVyYXRpb25fc2V0X25fcGFnZXMob3AsIHByaW50Q29udGV4dC0+cGFnZUNvdW50KCkpOwog
fQogCi1zdGF0aWMgdm9pZCBkcmF3X3BhZ2VfY2FsbGJhY2soR3RrUHJpbnRPcGVyYXRpb24qIG9w
LCBHdGtQcmludENvbnRleHQqIGNvbnRleHQsIGdpbnQgcGFnZV9uciwgZ3BvaW50ZXIgdXNlcl9k
YXRhKQorc3RhdGljIHZvaWQgZHJhd19wYWdlX2NhbGxiYWNrKEd0a1ByaW50T3BlcmF0aW9uKiwg
R3RrUHJpbnRDb250ZXh0KiBndGtQcmludENvbnRleHQsIGdpbnQgcGFnZU51bWJlciwgUHJpbnRD
b250ZXh0KiBjb3JlUHJpbnRDb250ZXh0KQogewotICAgIFByaW50Q29udGV4dCogcHJpbnRDb250
ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxQcmludENvbnRleHQqPih1c2VyX2RhdGEpOwotCi0gICAg
aWYgKHBhZ2VfbnIgPj0gc3RhdGljX2Nhc3Q8Z2ludD4ocHJpbnRDb250ZXh0LT5wYWdlQ291bnQo
KSkpCisgICAgaWYgKHBhZ2VOdW1iZXIgPj0gc3RhdGljX2Nhc3Q8Z2ludD4oY29yZVByaW50Q29u
dGV4dC0+cGFnZUNvdW50KCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9
IGd0a19wcmludF9jb250ZXh0X2dldF9jYWlyb19jb250ZXh0KGNvbnRleHQpOwotICAgIEdyYXBo
aWNzQ29udGV4dCBjdHgoY3IpOwotICAgIGZsb2F0IHdpZHRoID0gZ3RrX3ByaW50X2NvbnRleHRf
Z2V0X3dpZHRoKGNvbnRleHQpOwotICAgIHByaW50Q29udGV4dC0+c3Bvb2xQYWdlKGN0eCwgcGFn
ZV9uciwgd2lkdGgpOworICAgIGNhaXJvX3QqIGNyID0gZ3RrX3ByaW50X2NvbnRleHRfZ2V0X2Nh
aXJvX2NvbnRleHQoZ3RrUHJpbnRDb250ZXh0KTsKKyAgICBmbG9hdCBwYWdlV2lkdGggPSBndGtf
cHJpbnRfY29udGV4dF9nZXRfd2lkdGgoZ3RrUHJpbnRDb250ZXh0KTsKKworICAgIFBsYXRmb3Jt
Q29udGV4dENhaXJvIHBsYXRmb3JtQ29udGV4dChjcik7CisgICAgR3JhcGhpY3NDb250ZXh0IGdy
YXBoaWNzQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKKyAgICBjb3JlUHJpbnRDb250ZXh0LT5z
cG9vbFBhZ2UoZ3JhcGhpY3NDb250ZXh0LCBwYWdlTnVtYmVyLCBwYWdlV2lkdGgpOwogfQogCiBz
dGF0aWMgdm9pZCBlbmRfcHJpbnRfY2FsbGJhY2soR3RrUHJpbnRPcGVyYXRpb24qIG9wLCBHdGtQ
cmludENvbnRleHQqIGNvbnRleHQsIGdwb2ludGVyIHVzZXJfZGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA3OTY2NWE5MTQ1NjdiMzdmODViOTE5
NThiOGUyZTU3NzFmNWQzYWNiLi5iZWRlOGE3Mzk2Y2MzODA5YzVjMDk4MmE0Y2ZjZjkyMTJkODVk
MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC03
MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlBhc3RlYm9h
cmRIZWxwZXIuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSGVscGVyR3RrLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJQcm9ncmVzc1Ry
YWNrZXIuaCIKQEAgLTcwOSw4ICs3MTAsOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92
aWV3X2V4cG9zZV9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRFeHBvc2UqCiAgICAg
ICAgIGZyYW1lLT52aWV3KCktPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUo
KTsKIAogICAgICAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihnZGtfY2Fpcm9fY3Jl
YXRlKGV2ZW50LT53aW5kb3cpKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0IGN0eChjci5nZXQo
KSk7Ci0gICAgICAgIGN0eC5zZXRHZGtFeHBvc2VFdmVudChldmVudCk7CisgICAgICAgIFBsYXRm
b3JtQ29udGV4dENhaXJvIHBsYXRmb3JtQ29udGV4dChjci5nZXQoKSk7CisgICAgICAgIEdyYXBo
aWNzQ29udGV4dCBnYygmcGxhdGZvcm1Db250ZXh0KTsKKyAgICAgICAgZ2Muc2V0R2RrRXhwb3Nl
RXZlbnQoZXZlbnQpOwogCiAgICAgICAgIGludCByZWN0Q291bnQ7CiAgICAgICAgIEdPd25QdHI8
R2RrUmVjdGFuZ2xlPiByZWN0czsKQEAgLTcxOSw3ICs3MjEsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0X3dlYl92aWV3X2V4cG9zZV9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRF
eHBvc2UqCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVjdENvdW50OyBpKyspCiAgICAg
ICAgICAgICBwYWludFJlY3RzLmFwcGVuZChJbnRSZWN0KHJlY3RzLmdldCgpW2ldKSk7CiAKLSAg
ICAgICAgcGFpbnRXZWJWaWV3KGZyYW1lLCBwcml2LT50cmFuc3BhcmVudCwgY3R4LCBzdGF0aWNf
Y2FzdDxJbnRSZWN0PihldmVudC0+YXJlYSksIHBhaW50UmVjdHMpOworICAgICAgICBwYWludFdl
YlZpZXcoZnJhbWUsIHByaXYtPnRyYW5zcGFyZW50LCBnYywgc3RhdGljX2Nhc3Q8SW50UmVjdD4o
ZXZlbnQtPmFyZWEpLCBwYWludFJlY3RzKTsKICAgICB9CiAKICAgICByZXR1cm4gRkFMU0U7CkBA
IC03MzYsNyArNzM4LDggQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19kcmF3KEd0
a1dpZGdldCogd2lkZ2V0LCBjYWlyb190KiBjcikKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUo
d2ViVmlldyktPm1haW5GcmFtZSgpOwogICAgIGlmIChmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkg
JiYgZnJhbWUtPnZpZXcoKSkgewotICAgICAgICBHcmFwaGljc0NvbnRleHQgY3R4KGNyKTsKKyAg
ICAgICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8gcGxhdGZvcm1Db250ZXh0KGNyLmdldCgpKTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0IGdjKCZwbGF0Zm9ybUNvbnRleHQpOwogICAgICAgICBJbnRS
ZWN0IHJlY3QgPSBjbGlwUmVjdDsKICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlX2xpc3RfdCogcmVj
dExpc3QgPSBjYWlyb19jb3B5X2NsaXBfcmVjdGFuZ2xlX2xpc3QoY3IpOwogCkBAIC03NDcsNyAr
NzUwLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19kcmF3KEd0a1dpZGdldCog
d2lkZ2V0LCBjYWlyb190KiBjcikKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVj
dExpc3QtPm51bV9yZWN0YW5nbGVzOyBpKyspCiAgICAgICAgICAgICAgICAgcmVjdHMuYXBwZW5k
KGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KHJlY3RMaXN0LT5yZWN0YW5nbGVzW2ldKSkpOwog
ICAgICAgICB9Ci0gICAgICAgIHBhaW50V2ViVmlldyhmcmFtZSwgcHJpdi0+dHJhbnNwYXJlbnQs
IGN0eCwgcmVjdCwgcmVjdHMpOworICAgICAgICBwYWludFdlYlZpZXcoZnJhbWUsIHByaXYtPnRy
YW5zcGFyZW50LCBnYywgcmVjdCwgcmVjdHMpOwogCiAgICAgICAgIGNhaXJvX3JlY3RhbmdsZV9s
aXN0X2Rlc3Ryb3kocmVjdExpc3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBmY2U3Yzdk
OWVhY2JlZTg4NGQ4OGNmODE5YmUxMjhmM2FhNjBkMjk4Li43OTE1ZmQ2YjdiMzNkYzVlZTE2OWYy
MzI1YWM0NDAxMjE1MTZhMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTEtMDMtMDQgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDYWlyb10gQmV0dGVy
IHNlcGFyYXRlIHRoZSBjb25jZXJucyBvZiBHcmFwaGljc0NvbnRleHRDYWlybworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxNTAKKworICAgICAgICAq
IFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKGhkY0Zyb21Db250ZXh0KTogTW9kaWZ5IHRoaXMgbWV0
aG9kIHRvIHRha2UgUGxhdGZvcm1Db250ZXh0Q2Fpcm8KKyAgICAgICAgaW5zdGVhZCBvZiBhIGNh
aXJvX3QuCisgICAgICAgIChXZWJGcmFtZTo6c3Bvb2xQYWdlKTogVXBkYXRlIHRvIHJlZmxlY3Qg
bmV3IHBsYXRmb3JtIGNvbnRleHQuCisgICAgICAgIChXZWJGcmFtZTo6c3Bvb2xQYWdlcyk6IERp
dHRvLgorICAgICAgICAqIFdlYkZyYW1lLmg6IERpdHRvLgorCiAyMDExLTAzLTAzICBQZXRlciBL
YXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1l
cyBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCAxNmI5YThmY2JmMzJlZjFjNzhl
MjhhNzM5YjMwMjZlNzAxY2JjMjEyLi43ZTliM2Q4OGNmMTA5Y2RjOTE2NDViMjAwNjEyOGM3ODFl
NmRhNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCkBAIC0xMDksNiArMTA5LDcgQEAKICNpZiBQ
TEFURk9STShDRykKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjZWxp
ZiBQTEFURk9STShDQUlSTykKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2lu
Y2x1ZGUgPGNhaXJvLXdpbjMyLmg+CiAjZW5kaWYKIApAQCAtMjE4OCw4ICsyMTg5LDcgQEAgc3Rh
dGljIGZsb2F0IHNjYWxlRmFjdG9yKEhEQyBwcmludERDLCBjb25zdCBJbnRSZWN0JiBtYXJnaW5S
ZWN0LCBjb25zdCBJbnRSZWN0JgogCiBzdGF0aWMgSERDIGhkY0Zyb21Db250ZXh0KFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0KiBwY3R4KQogewotICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9
IGNhaXJvX2dldF90YXJnZXQocGN0eCk7Ci0gICAgcmV0dXJuIGNhaXJvX3dpbjMyX3N1cmZhY2Vf
Z2V0X2RjKHN1cmZhY2UpOworICAgIHJldHVybiBjYWlyb193aW4zMl9zdXJmYWNlX2dldF9kYyhj
YWlyb19nZXRfdGFyZ2V0KHBjdHgtPmNyKCkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZTo6ZHJhd0hl
YWRlcihQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGN0eCwgSVdlYlVJRGVsZWdhdGUqIHVpLCBj
b25zdCBJbnRSZWN0JiBwYWdlUmVjdCwgZmxvYXQgaGVhZGVySGVpZ2h0KQpAQCAtMjI0NCwxMyAr
MjI0NCwxNCBAQCB2b2lkIFdlYkZyYW1lOjpzcG9vbFBhZ2UoUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQqIHBjdHgsIEdyYXBoaWNzQ29udGV4dCogc3Bvb2xDdAogICAgIFhGT1JNIG9yaWdpbmFsLCBz
Y2FsZWQ7CiAgICAgR2V0V29ybGRUcmFuc2Zvcm0oaGRjLCAmb3JpZ2luYWwpOwogICAgIAorICAg
IGNhaXJvX3QqIGNyID0gcGN0eC0+Y3IoKTsKICAgICBib29sIHByZXZpZXcgPSAoaGRjICE9IHBy
aW50REMpOwogICAgIGlmIChwcmV2aWV3KSB7CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBwcmV2
aWV3LCB0aGUgV2luZG93cyBIREMgd2FzIHNldCB0byBhIG5vbi1zY2FsZWQgc3RhdGUgc28gdGhh
dCBDYWlybyB3aWxsCiAgICAgICAgIC8vIGRyYXcgY29ycmVjdGx5LiAgV2UgbmVlZCB0byByZXRh
aW4gdGhlIGNvcnJlY3QgcHJldmlldyBzY2FsZSBoZXJlIGZvciB1c2Ugd2hlbiB0aGUgQ2Fpcm8K
ICAgICAgICAgLy8gZHJhd2luZyBjb21wbGV0ZXMgc28gdGhhdCB3ZSBjYW4gc2NhbGUgb3VyIEdE
SS1iYXNlZCBoZWFkZXIvZm9vdGVyIGNhbGxzLiBUaGlzIGlzIGEKICAgICAgICAgLy8gd29ya2Fy
b3VuZCBmb3IgYSBidWcgaW4gQ2Fpcm8gKHNlZSBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yODE2MSkKLSAgICAgICAgc2NhbGVkID0gYnVpbGRYRk9STUZyb21D
YWlybyhoZGMsIHBjdHgpOworICAgICAgICBzY2FsZWQgPSBidWlsZFhGT1JNRnJvbUNhaXJvKGhk
YywgY3IpOwogICAgIH0KIAogICAgIGZsb2F0IHNjYWxlID0gc2NhbGVGYWN0b3IocHJpbnREQywg
bWFyZ2luUmVjdCwgcGFnZVJlY3QpOwpAQCAtMjI2MCwxMyArMjI2MSwxMyBAQCB2b2lkIFdlYkZy
YW1lOjpzcG9vbFBhZ2UoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBjdHgsIEdyYXBoaWNzQ29u
dGV4dCogc3Bvb2xDdAogCiAgICAgLy8gV2UgY2Fubm90IHNjYWxlIHRoZSBkaXNwbGF5IEhEQyBi
ZWNhdXNlIHRoZSBwcmludCBzdXJmYWNlIGFsc28gc2NhbGVzIGZvbnRzLAogICAgIC8vIHJlc3Vs
dGluZyBpbiBpbnZhbGlkIHByaW50aW5nIChhbmQgcHJpbnQgcHJldmlldykKLSAgICBjYWlyb19z
Y2FsZShwY3R4LCBzY2FsZSwgc2NhbGUpOwotICAgIGNhaXJvX3RyYW5zbGF0ZShwY3R4LCBjYWly
b01hcmdpblJlY3QueCgpLCBjYWlyb01hcmdpblJlY3QueSgpICsgaGVhZGVySGVpZ2h0KTsKKyAg
ICBjYWlyb19zY2FsZShjciwgc2NhbGUsIHNjYWxlKTsKKyAgICBjYWlyb190cmFuc2xhdGUoY3Is
IGNhaXJvTWFyZ2luUmVjdC54KCksIGNhaXJvTWFyZ2luUmVjdC55KCkgKyBoZWFkZXJIZWlnaHQp
OwogCiAgICAgLy8gTW9kaWZ5IENhaXJvIChvbmx5KSB0byBhY2NvdW50IGZvciBwYWdlIHBvc2l0
aW9uLgotICAgIGNhaXJvX3RyYW5zbGF0ZShwY3R4LCAtcGFnZVJlY3QueCgpLCAtcGFnZVJlY3Qu
eSgpKTsKKyAgICBjYWlyb190cmFuc2xhdGUoY3IsIC1wYWdlUmVjdC54KCksIC1wYWdlUmVjdC55
KCkpOwogICAgIGNvcmVGcmFtZS0+dmlldygpLT5wYWludENvbnRlbnRzKHNwb29sQ3R4LCBwYWdl
UmVjdCk7Ci0gICAgY2Fpcm9fdHJhbnNsYXRlKHBjdHgsIHBhZ2VSZWN0LngoKSwgcGFnZVJlY3Qu
eSgpKTsKKyAgICBjYWlyb190cmFuc2xhdGUoY3IsIHBhZ2VSZWN0LngoKSwgcGFnZVJlY3QueSgp
KTsKICAgICAKICAgICBpZiAocHJldmlldykgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcHJl
dmlldywgdGhlIFdpbmRvd3MgSERDIHdhcyBzZXQgdG8gYSBub24tc2NhbGVkIHN0YXRlIHNvIHRo
YXQgQ2Fpcm8gd291bGQKQEAgLTIyODcsOCArMjI4OCw4IEBAIHZvaWQgV2ViRnJhbWU6OnNwb29s
UGFnZShQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGN0eCwgR3JhcGhpY3NDb250ZXh0KiBzcG9v
bEN0CiAKICAgICBTZXRXb3JsZFRyYW5zZm9ybShoZGMsICZvcmlnaW5hbCk7CiAKLSAgICBjYWly
b19zaG93X3BhZ2UocGN0eCk7Ci0gICAgQVNTRVJUKCFjYWlyb19zdGF0dXMocGN0eCkpOworICAg
IGNhaXJvX3Nob3dfcGFnZShjcik7CisgICAgQVNTRVJUKCFjYWlyb19zdGF0dXMoY3IpKTsKICAg
ICBzcG9vbEN0eC0+cmVzdG9yZSgpOwogfQogCkBAIC0yMzQwLDE3ICsyMzQxLDIxIEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNwb29sUGFnZXMoCiAgICAgZWxzZQogICAg
ICAgICBwcmludFN1cmZhY2UgPSBjYWlyb193aW4zMl9wcmludGluZ19zdXJmYWNlX2NyZWF0ZSh0
YXJnZXREQyk7IC8vIG1ldGFmaWxlCiAgICAgCi0gICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQq
IHBjdHggPSAoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqKWNhaXJvX2NyZWF0ZShwcmludFN1cmZh
Y2UpOwotICAgIGlmICghcGN0eCkgeworICAgIGNhaXJvX3QqIGNyID0gY2Fpcm9fY3JlYXRlKHBy
aW50U3VyZmFjZSk7CisgICAgaWYgKCFjcikgewogICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ry
b3kocHJpbnRTdXJmYWNlKTsgICAgCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgfQotICAg
IAorCisgICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8gcGxhdGZvcm1Db250ZXh0KGNyKTsKKyAgICBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGN0eCA9ICZwbGF0Zm9ybUNvbnRleHQ7CisgICAgY2Fp
cm9fZGVzdHJveShjcik7CisKICAgICBpZiAoY3R4KSB7CiAgICAgICAgIC8vIElmIHRoaXMgaXMg
YSBwcmV2aWV3LCB0aGUgV2luZG93cyBIREMgd2FzIHNlbnQgd2l0aCBzY2FsaW5nIGluZm9ybWF0
aW9uLgogICAgICAgICAvLyBSZXRyaWV2ZSBpdCBhbmQgcmVzZXQgaXQgc28gdGhhdCBpdCBkcmF3
cyBwcm9wZXJseS4gIFRoaXMgaXMgYSB3b3JrYXJvdW5kCiAgICAgICAgIC8vIGZvciBhIGJ1ZyBp
biBDYWlybyAoc2VlIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lk
PTI4MTYxKQotICAgICAgICBzZXRDYWlyb1RyYW5zZm9ybVRvUHJldmlld0hEQyhwY3R4LCB0YXJn
ZXREQyk7CisgICAgICAgIHNldENhaXJvVHJhbnNmb3JtVG9QcmV2aWV3SERDKGNyLCB0YXJnZXRE
Qyk7CiAgICAgfQogICAgIAogICAgIGNhaXJvX3N1cmZhY2Vfc2V0X2ZhbGxiYWNrX3Jlc29sdXRp
b24ocHJpbnRTdXJmYWNlLCA3Mi4wLCA3Mi4wKTsKQEAgLTIzOTQsNyArMjM5OSw2IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNwb29sUGFnZXMoCiAgICAgICAgIHNwb29s
UGFnZShwY3R4LCAmc3Bvb2xDdHgsIHByaW50REMsIHVpLmdldCgpLCBoZWFkZXJIZWlnaHQsIGZv
b3RlckhlaWdodCwgaWksIHBhZ2VDb3VudCk7CiAKICNpZiBQTEFURk9STShDQUlSTykKLSAgICBj
YWlyb19kZXN0cm95KHBjdHgpOwogICAgIGNhaXJvX3N1cmZhY2VfZmluaXNoKHByaW50U3VyZmFj
ZSk7CiAgICAgQVNTRVJUKCFjYWlyb19zdXJmYWNlX3N0YXR1cyhwcmludFN1cmZhY2UpKTsKICAg
ICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kocHJpbnRTdXJmYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCmlu
ZGV4IDcxZjllNTIxMjUyOWRlNzc3NDUzMmZiZDhmMjI4M2FiZDc3ZWRhNDkuLjI3ZDVmYTIxZjI4
M2Q4ZjZhYzYwMTBjZjM3ZWNmOThlZjYxMTVhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuaApAQCAtNjQs
NyArNjQsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNPYmplY3RSZWY7CiAj
aWYgUExBVEZPUk0oQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQ7CiAjZWxpZiBQTEFURk9STShDQUlSTykKLXR5cGVkZWYgc3RydWN0IF9jYWlybyBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFBsYXRm
b3JtQ29udGV4dENhaXJvOworfQordHlwZWRlZiBjbGFzcyBXZWJDb3JlOjpQbGF0Zm9ybUNvbnRl
eHRDYWlybyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKICNlbmRpZgogCiBjbGFzcyBXZWJGcmFt
ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85096</attachid>
            <date>2011-03-08 14:54:28 -0800</date>
            <delta_ts>2011-04-04 13:08:54 -0700</delta_ts>
            <desc>Patch with Carlos&apos; and Brett&apos;s suggestions</desc>
            <filename>bug-55150-20110308145430.patch</filename>
            <type>text/plain</type>
            <size>57214</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODAyNDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjMxZDU5MGQ2N2ZkMTAx
ODVhNjI3ZmJlYzMxZGI2MGNjZjM3N2ExLi4zNTFlMTk5MTM2NTFmOGY0YTU5MjY5NzdmMjQzYjQ4
YTExNjA2ZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDMtMDQgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDYWlyb10gQmV0dGVyIHNlcGFyYXRlIHRoZSBj
b25jZXJucyBvZiBHcmFwaGljc0NvbnRleHRDYWlybworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxNTAKKworICAgICAgICBBZGQgYSBQbGF0Zm9ybUNv
bnRleHRDYWlybyB3aGljaCByaWdodCBub3cgc3RvcmVzIHRoZSBjYWlyb190KiBmb3IgYQorICAg
ICAgICBHcmFwaGljc0NvbnRleHRDYWlyby4gTGF0ZXIgcGF0Y2hlcyB3aWxsIG1vdmUgbG9naWMg
Zm9yIHRyYWNraW5nIENvbnRleHRTaGFkb3cKKyAgICAgICAgYW5kIGltYWdlIG1hc2tpbmcgbGF5
ZXJzIGludG8gdGhpcyBQbGF0Zm9ybUNvbnRleHRDYWlybyBjbGFzcy4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIFRoaXMgcGF0Y2ggaXMgb25seSBhIGNvZGUgY2xlYW51cC4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOiBUaGUgcGxhdGZvcm0gY29udGV4dCBpcyBubyBsb25nZXIgYQorICAgICAgICBjYWly
b190LCBidXQgb3VyIG5ldyBjbGFzcyB0aGUgUGxhdGZvcm1Db250ZXh0Q2Fpcm8uCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcDogVXBkYXRl
ZCB0byByZWZsZWN0IG5ldyBjbGFzcy5qCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udENhaXJvLmNwcDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhZGllbnRDYWlyby5jcHA6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDogTW9zdGx5IG1lY2hhbmljYWwKKyAgICAg
ICAgY2hhbmdlcyB3aGljaCBub3cgcmVmZXJlbmNlIHBsYXRmb3JtQ29udGV4dCgpLT5jcigpIHRv
IGdldCB0aGUgY2Fpcm9fdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oOiBOb3cgaG9sZCB0aGUKKyAgICAgICAg
UGxhdGZvcm1Db250ZXh0Q2Fpcm8gaW5zdGVhZCBvZiB0aGUgY2Fpcm9fdC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDogVXBkYXRlIHRvIHJl
ZmxlY3QgbmV3IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
Q2Fpcm8uY3BwOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRo
Q2Fpcm8uY3BwOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0
Zm9ybUNvbnRleHRDYWlyby5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcDogVXBkYXRlIHRvIHJlZmxlY3QgbmV3IGNsYXNzLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcDogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDog
Tm93IGZpbGwgb3V0CisgICAgICAgIG1fZGF0YSB3aXRoIGEgcHJpdmF0ZSBzZWN0aW9uIGNvbnRh
aW5pbmcgdGhlIHBsYXRmb3JtIGNvbnRleHQgaW5zdGVhZCBvZgorICAgICAgICBqdXN0IGEgY2Fp
cm9fdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOiBVcGRhdGUg
dG8gcmVmbGVjdCBuZXcgY2xhc3MuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRl
cmluZ0NvbnRleHQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldpZGdldFJlbmRlcmlu
Z0NvbnRleHQ6On5XaWRnZXRSZW5kZXJpbmdDb250ZXh0KTogRGl0dG8uCisgICAgICAgICogcGx1
Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHA6IERpdHRvLgorCiAyMDExLTAzLTAzICBNYXJ0aW4g
Um9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBYSFRNTE1QIGJ1aWxk
IGJyb2tlbiBhZnRlciByNzgzNDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYTAyMTgxMWVlMzVk
NjdmNTEzNjMzMGJiZTI1MDMwODQzMzljZmM1Ny4uNzFlZjE2NGRiZTBkNDdmOTM3ZTAyZDVmZGYx
NWFlNGY3MTA3YzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTM3MDcsNiArMzcwNyw4IEBA
IHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vT3duUHRyQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGF0aENhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fp
cm8uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKaW5kZXggNGY5NzZiMzNkOTkyMmJlODA2OGExZDg3YTg3MGRlMGQ2Yjg4ZmZk
Yi4uMGU0OTQ1NDhhOTIzMjAwOGVjZGQwZDIzNGQ4ZmJmOTkwY2RiZDYyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQy
LDggKzQyLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0IFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0OwogI2VsaWYgUExBVEZPUk0oQ0FJUk8pCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
b250ZXh0U2hhZG93OworY2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm87CiB9Ci10eXBlZGVmIHN0
cnVjdCBfY2Fpcm8gUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7Cit0eXBlZGVmIFdlYkNvcmU6OlBs
YXRmb3JtQ29udGV4dENhaXJvIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwogI2VsaWYgUExBVEZP
Uk0oT1BFTlZHKQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU3VyZmFjZU9wZW5WRzsKQEAg
LTQ4Nyw2ICs0ODgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENBSVJPKQorICAgICAgICBHcmFwaGljc0NvbnRleHQoY2Fpcm9fdCopOwogICAgICAgICB2
b2lkIHB1c2hJbWFnZU1hc2soY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0Jik7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAKaW5kZXggYjA1ODhkNjVjNTYyODA4ZGY4
Y2U3ZDIzMGRkMWZiNDMyNjllMDA3Zi4uMGY5MGNlNGMwNTJkNjFmNTZlNzliODdjZDA4OGFjNDRm
MDIwYzVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiT3duUHRyQ2Fpcm8uaCIKICNp
bmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNs
dWRlICJUaW1lci5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAKQEAgLTg4LDcgKzg5LDcgQEAgUGxh
dGZvcm1Db250ZXh0IENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIGFkanVzdEJsdXJEaXN0YW5jZShjb250ZXh0KTsKIAog
ICAgIGRvdWJsZSB4MSwgeDIsIHkxLCB5MjsKLSAgICBjYWlyb19jbGlwX2V4dGVudHMoY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCksICZ4MSwgJnkxLCAmeDIsICZ5Mik7CisgICAgY2Fpcm9fY2xp
cF9leHRlbnRzKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCAmeDEsICZ5MSwgJngy
LCAmeTIpOwogICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1Jl
Y3QoY29udGV4dCwgbGF5ZXJBcmVhLCBJbnRSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkp
OwogCiAgICAgLy8gRG9uJ3QgcGFpbnQgaWYgd2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xp
cCByZWdpb24uCkBAIC0xMjAsNyArMTIxLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFk
b3dMYXllcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiAgICAgICAgIGNhaXJvX3N1cmZhY2Vf
bWFya19kaXJ0eShtX2xheWVySW1hZ2UpOwogICAgIH0KIAotICAgIGNhaXJvX3QqIGNyID0gY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBzZXRTb3VyY2VS
R0JBRnJvbUNvbG9yKGNyLCBtX2NvbG9yKTsKICAgICBjYWlyb19tYXNrX3N1cmZhY2UoY3IsIG1f
bGF5ZXJJbWFnZSwgbV9sYXllck9yaWdpbi54KCksIG1fbGF5ZXJPcmlnaW4ueSgpKTsKQEAgLTE5
OCw3ICsxOTksNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdAogICAgIGludCBpbnRlcm5hbFNo
YWRvd0hlaWdodCA9IHJhZGl1c1R3aWNlICsgbWF4KHRvcExlZnRSYWRpdXMuaGVpZ2h0KCksIHRv
cFJpZ2h0UmFkaXVzLmhlaWdodCgpKSArCiAgICAgICAgIG1heChib3R0b21MZWZ0UmFkaXVzLmhl
aWdodCgpLCBib3R0b21SaWdodFJhZGl1cy5oZWlnaHQoKSk7CiAKLSAgICBjYWlyb190KiBjciA9
IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAKICAgICAvLyBkcmF3U2hhZG93ZWRSZWN0IHN0aWxs
IGRvZXMgbm90IHdvcmsgd2l0aCByb3RhdGlvbnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCAyZDc5NDk5ODAyNGMwN2E0
MTNlZmYwNTRmZTRjYTA4NTI3YjNlZjhlLi41OGE3ZmQyYjBjODMxYWMwNzgxNTIwMWJiZjFkM2E0
MDliNjVkZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJHbHlwaEJ1
ZmZlci5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5o
IgpAQCAtNjQsNyArNjUsNyBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzVG9Db250ZXh0KGNhaXJv
X3QqIGNvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBHbAogICAgIH0KIH0KIAot
c3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY2Fpcm9fdCogY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IFNp
bXBsZUZvbnREYXRhKiBmb250LCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlw
aHMpCitzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgU2ltcGxlRm9udERhdGEq
IGZvbnQsIEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgaW50IG51bUdseXBocykKIHsKICAgICBD
b250ZXh0U2hhZG93KiBzaGFkb3cgPSBncmFwaGljc0NvbnRleHQtPmNvbnRleHRTaGFkb3coKTsK
ICAgICBBU1NFUlQoc2hhZG93KTsKQEAgLTc0LDYgKzc1LDcgQEAgc3RhdGljIHZvaWQgZHJhd0ds
eXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY2Fpcm9fdCogY29u
dGV4dCwKIAogICAgIGlmICghc2hhZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhncmFwaGljc0Nv
bnRleHQpKSB7CiAgICAgICAgIC8vIE9wdGltaXplIG5vbi1ibHVycnkgc2hhZG93cywgYnkganVz
dCBkcmF3aW5nIHRleHQgd2l0aG91dCB0aGUgQ29udGV4dFNoYWRvdy4KKyAgICAgICAgY2Fpcm9f
dCogY29udGV4dCA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAg
ICAgICAgIGNhaXJvX3NhdmUoY29udGV4dCk7CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjb250
ZXh0LCBzaGFkb3ctPm1fb2Zmc2V0LndpZHRoKCksIHNoYWRvdy0+bV9vZmZzZXQuaGVpZ2h0KCkp
OwogICAgICAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9yKGNvbnRleHQsIHNoYWRvdy0+bV9jb2xv
cik7CkBAIC0xMDYsOSArMTA4LDEwIEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBjb25zCiAgICAgICAg
IG9mZnNldCArPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoZnJvbSArIGkpOwogICAgIH0KIAotICAg
IGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgZHJhd0dseXBo
c1NoYWRvdyhjb250ZXh0LCBjciwgcG9pbnQsIGZvbnQsIGdseXBocywgbnVtR2x5cGhzKTsKKyAg
ICBQbGF0Zm9ybUNvbnRleHRDYWlybyogcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCk7CisgICAgZHJhd0dseXBoc1NoYWRvdyhjb250ZXh0LCBwb2ludCwgZm9udCwg
Z2x5cGhzLCBudW1HbHlwaHMpOwogCisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQt
PmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgcHJlcGFyZUNvbnRleHRGb3JHbHlwaERy
YXdpbmcoY3IsIGZvbnQsIHBvaW50KTsKICAgICBpZiAoY29udGV4dC0+dGV4dERyYXdpbmdNb2Rl
KCkgJiBUZXh0TW9kZUZpbGwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRDYWlyby5jcHAKaW5kZXggNGU2ZWQwN2VhMzU5YjFj
Y2M2YzIyZGIzZjNhOTdmY2M5MDg1ODZhZC4uMjI1MDQ2YWEzYWExMzlmZTQyOWY3ZDlmNDllZDU3
NjY2ZGFhMmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhZGllbnRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhZGllbnRDYWlyby5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1
ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtODcsNyArODgsNyBAQCB2b2lkIEdyYWRpZW50OjpzZXRQbGF0Zm9ybUdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudAogCiB2
b2lkIEdyYWRpZW50OjpmaWxsKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogewotICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCk7CisgICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsK
IAogICAgIGNvbnRleHQtPnNhdmUoKTsKICAgICBjYWlyb19zZXRfc291cmNlKGNyLCBwbGF0Zm9y
bUdyYWRpZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGU2OWE3YTVi
NjQwMGNlODQ2NDAzZGNiNzdlNjNhYWQ1MjRmNjMyYWUuLjBmYzk0ZGZlNWViMGRhZDY2ODdhMWIx
NmNiOGQ1NzBlMGNlN2ExZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTQ3
LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhdGgu
aCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
aCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgi
CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KQEAgLTE0OCw3ICsxNDksNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBQYXRoRHJhd2luZ1N0
eWxlIGRyYQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBDYWxjdWxhdGUgdGhlIGV4dGVudHMg
b2YgdGhlIHJlbmRlcmVkIHNvbGlkIHBhdGhzLgotICAgIGNhaXJvX3QqIGNhaXJvQ29udGV4dCA9
IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIGNhaXJvX3QqIGNhaXJvQ29udGV4dCA9
IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIE93blB0cjxjYWlyb19wYXRo
X3Q+IHBhdGgoY2Fpcm9fY29weV9wYXRoKGNhaXJvQ29udGV4dCkpOwogCiAgICAgRmxvYXRSZWN0
IHNvbGlkRmlndXJlRXh0ZW50czsKQEAgLTE5OSwxMiArMjAwLDE4IEBAIHN0YXRpYyB2b2lkIHN0
cm9rZUN1cnJlbnRDYWlyb1BhdGgoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCAgY2Fpcm9fdCog
Y2Fpcm9Db250CiAgICAgY2Fpcm9fbmV3X3BhdGgoY2Fpcm9Db250ZXh0KTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogY3Ip
CitHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChjYWlyb190KiBjcikKIHsKLSAgICBt
X2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwotICAgIG1fZGF0YS0+
Y3IgPSBjYWlyb19yZWZlcmVuY2UoY3IpOwotICAgIG1fZGF0YS0+c3luY0NvbnRleHQoY3IpOwot
ICAgIHNldFBhaW50aW5nRGlzYWJsZWQoIWNyKTsKKyAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlKG5ldyBQbGF0Zm9ybUNvbnRleHRDYWlybyhjcikpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KFBsYXRmb3JtQ29udGV4dENhaXJv
KiBwbGF0Zm9ybUNvbnRleHQpCit7CisgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZShwbGF0Zm9ybUNvbnRleHQpOworICAgIGlmIChwbGF0Zm9ybUNvbnRleHQp
CisgICAgICAgIG1fZGF0YS0+c3luY0NvbnRleHQocGxhdGZvcm1Db250ZXh0LT5jcigpKTsKKyAg
ICBlbHNlCisgICAgICAgIHNldFBhaW50aW5nRGlzYWJsZWQodHJ1ZSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpwbGF0Zm9ybURlc3Ryb3koKQpAQCAtMjE0LDIwICsyMjEsMjAgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRGVzdHJveSgpCiAKIEFmZmluZVRyYW5zZm9ybSBH
cmFwaGljc0NvbnRleHQ6OmdldENUTSgpIGNvbnN0CiB7Ci0gICAgY2Fpcm9fdCogY3IgPSBwbGF0
Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigp
OwogICAgIGNhaXJvX21hdHJpeF90IG07CiAgICAgY2Fpcm9fZ2V0X21hdHJpeChjciwgJm0pOwog
ICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0obS54eCwgbS55eCwgbS54eSwgbS55eSwgbS54MCwg
bS55MCk7CiB9CiAKLWNhaXJvX3QqIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Db250ZXh0KCkg
Y29uc3QKK1BsYXRmb3JtQ29udGV4dENhaXJvKiBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtQ29u
dGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YS0+Y3I7CisgICAgcmV0dXJuIG1fZGF0
YS0+cGxhdGZvcm1Db250ZXh0OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2F2ZVBsYXRm
b3JtU3RhdGUoKQogewotICAgIGNhaXJvX3NhdmUobV9kYXRhLT5jcik7CisgICAgY2Fpcm9fc2F2
ZShwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7CiAgICAgbV9kYXRhLT5zYXZlKCk7CiAgICAgbV9k
YXRhLT5zaGFkb3dTdGFjay5hcHBlbmQobV9kYXRhLT5zaGFkb3cpOwogICAgIG1fZGF0YS0+bWFz
a0ltYWdlU3RhY2suYXBwZW5kKEltYWdlTWFza0luZm9ybWF0aW9uKCkpOwpAQCAtMjM1LDcgKzI0
Miw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSgpCiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiB7Ci0gICAgY2Fpcm9fdCog
Y3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNy
KCk7CisKICAgICBjb25zdCBJbWFnZU1hc2tJbmZvcm1hdGlvbiYgbWFza0luZm9ybWF0aW9uID0g
bV9kYXRhLT5tYXNrSW1hZ2VTdGFjay5sYXN0KCk7CiAgICAgaWYgKG1hc2tJbmZvcm1hdGlvbi5p
c1ZhbGlkKCkpIHsKICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiBtYXNrUmVjdCA9IG1hc2tJbmZv
cm1hdGlvbi5tYXNrUmVjdCgpOwpAQCAtMjUxLDcgKzI1OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgICAgIG1fZGF0YS0+c2hhZG93U3RhY2su
cmVtb3ZlTGFzdCgpOwogICAgIH0KIAotICAgIGNhaXJvX3Jlc3RvcmUobV9kYXRhLT5jcik7Cisg
ICAgY2Fpcm9fcmVzdG9yZShjcik7CiAgICAgbV9kYXRhLT5yZXN0b3JlKCk7CiB9CiAKQEAgLTI2
MSw3ICsyNjksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgSW50UmVj
dCYgcmVjdCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9y
bUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAogICAgIGlmIChmaWxsQ29s
b3IoKS5hbHBoYSgpKQpAQCAtMjg5LDcgKzI5Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQxLCBjb25zdCBJbnRQb2ludCYgcG9pbnQyKQog
ICAgIGlmIChzdHlsZSA9PSBOb1N0cm9rZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9f
dCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCkt
PmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAKICAgICBmbG9hdCB3aWR0aCA9IHN0cm9rZVRo
aWNrbmVzcygpOwpAQCAtMzc2LDcgKzM4NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
RWxsaXBzZShjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBj
YWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3NhdmUoY3Ip
OwogICAgIGZsb2F0IHlSYWRpdXMgPSAuNSAqIHJlY3QuaGVpZ2h0KCk7CiAgICAgZmxvYXQgeFJh
ZGl1cyA9IC41ICogcmVjdC53aWR0aCgpOwpAQCAtNDE1LDcgKzQyMyw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzdHJva2VBcmMoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHN0YXJ0QW5nbGUs
IGludCBhbmdsZVNwCiAgICAgZmxvYXQgZmEgPSBzdGFydEFuZ2xlOwogICAgIGZsb2F0IGZhbGVu
ID0gIGZhICsgYW5nbGVTcGFuOwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAg
IGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShj
cik7CiAKICAgICBpZiAodyAhPSBoKQpAQCAtNDkyLDcgKzUwMCw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3Q29udmV4UG9seWdvbihzaXplX3QgbnBvaW50cywgY29uc3QgRmxvYXRQb2lu
dCogcG9pbnRzCiAgICAgaWYgKG5wb2ludHMgPD0gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Y2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250
ZXh0KCktPmNyKCk7CiAKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBjYWlyb19zZXRfYW50aWFs
aWFzKGNyLCBzaG91bGRBbnRpYWxpYXMgPyBDQUlST19BTlRJQUxJQVNfREVGQVVMVCA6IENBSVJP
X0FOVElBTElBU19OT05FKTsKQEAgLTUyMiw3ICs1MzAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6Y2xpcENvbnZleFBvbHlnb24oc2l6ZV90IG51bVBvaW50cywgY29uc3QgRmxvYXRQb2ludCog
cG9pbgogICAgIGlmIChudW1Qb2ludHMgPD0gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fp
cm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0
KCktPmNyKCk7CiAKICAgICBjYWlyb19uZXdfcGF0aChjcik7CiAgICAgY2Fpcm9fZmlsbF9ydWxl
X3Qgc2F2ZWRGaWxsUnVsZSA9IGNhaXJvX2dldF9maWxsX3J1bGUoY3IpOwpAQCAtNTQyLDcgKzU1
MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJv
X3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgp
LT5jcigpOwogICAgIHNldFBhdGhPbkNhaXJvQ29udGV4dChjciwgcGF0aC5wbGF0Zm9ybVBhdGgo
KS0+Y29udGV4dCgpKTsKICAgICBmaWxsQ3VycmVudENhaXJvUGF0aCh0aGlzLCBjcik7CiB9CkBA
IC01NTIsNyArNTYwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3Qg
UGF0aCYgcGF0aCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBzZXRQYXRoT25DYWlyb0NvbnRleHQoY3IsIHBhdGgu
cGxhdGZvcm1QYXRoKCktPmNvbnRleHQoKSk7CiAgICAgc3Ryb2tlQ3VycmVudENhaXJvUGF0aCh0
aGlzLCBjcik7CiB9CkBAIC01NjIsNyArNTcwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZp
bGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAg
Y2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNy
KTsKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0
aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBmaWxsQ3VycmVudENhaXJvUGF0aCh0aGlzLCBjcik7
CkBAIC01NzgsNyArNTg2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclMKICAgICAgICAgbV9k
YXRhLT5zaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7
CiAKICAgICBpZiAoY29sb3IuYWxwaGEoKSkKLSAgICAgICAgZmlsbFJlY3RTb3VyY2VPdmVyKG1f
ZGF0YS0+Y3IsIHJlY3QsIGNvbG9yKTsKKyAgICAgICAgZmlsbFJlY3RTb3VyY2VPdmVyKHBsYXRm
b3JtQ29udGV4dCgpLT5jcigpLCByZWN0LCBjb2xvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTU4Niw3ICs1OTQsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fdCogY3IgPSBt
X2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAg
ICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwg
cmVjdC5oZWlnaHQoKSk7CiAgICAgY2Fpcm9fZmlsbF9ydWxlX3Qgc2F2ZWRGaWxsUnVsZSA9IGNh
aXJvX2dldF9maWxsX3J1bGUoY3IpOwogICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIENBSVJP
X0ZJTExfUlVMRV9XSU5ESU5HKTsKQEAgLTYwMCw3ICs2MDgsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6Y2xpcFBhdGgoY29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUgY2xpcFJ1bGUpCiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fdCog
Y3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNy
KCk7CiAgICAgc2V0UGF0aE9uQ2Fpcm9Db250ZXh0KGNyLCBwYXRoLnBsYXRmb3JtUGF0aCgpLT5j
b250ZXh0KCkpOwogICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIGNsaXBSdWxlID09IFJVTEVf
RVZFTk9ERCA/IENBSVJPX0ZJTExfUlVMRV9FVkVOX09ERCA6IENBSVJPX0ZJTExfUlVMRV9XSU5E
SU5HKTsKICAgICBjYWlyb19jbGlwKGNyKTsKQEAgLTYzOCw3ICs2NDYsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiBwYXRoLCBpbnQgd2lkdGgsIGlu
dCAvKiBvZmZzZXQgKgogICAgIGFkanVzdEZvY3VzUmluZ0NvbG9yKHJpbmdDb2xvcik7CiAgICAg
YWRqdXN0Rm9jdXNSaW5nTGluZVdpZHRoKHdpZHRoKTsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9k
YXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAg
IGNhaXJvX3NhdmUoY3IpOwogICAgIGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0NvbnRleHQoY3Is
IHBhdGgpOwogICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIHJpbmdDb2xvcik7CkBAIC02
NTUsNyArNjYzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3Qg
VmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHdpZHRoLCBpbnQKIAogICAgIHVuc2lnbmVkIHJl
Y3RDb3VudCA9IHJlY3RzLnNpemUoKTsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsK
KyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3Nh
dmUoY3IpOwogICAgIGNhaXJvX3B1c2hfZ3JvdXAoY3IpOwogICAgIGNhaXJvX25ld19wYXRoKGNy
KTsKQEAgLTczMiw3ICs3NDAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JU
ZXh0Q2hlY2tpbmcoY29uc3QgRmxvYXRQb2ludCYgb3JpZ2luLCBmbG9hdCB3aQogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0g
bV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwog
ICAgIGNhaXJvX3NhdmUoY3IpOwogCiAgICAgc3dpdGNoIChzdHlsZSkgewpAQCAtNzYyLDcgKzc3
MCw3IEBAIEZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMoY29u
c3QgRmxvYXRSZWN0JiBmcmVjdCkKICAgICBGbG9hdFJlY3QgcmVzdWx0OwogICAgIGRvdWJsZSB4
ID0gZnJlY3QueCgpOwogICAgIGRvdWJsZSB5ID0gZnJlY3QueSgpOwotICAgIGNhaXJvX3QqIGNy
ID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigp
OwogICAgIGNhaXJvX3VzZXJfdG9fZGV2aWNlKGNyLCAmeCwgJnkpOwogICAgIHggPSByb3VuZCh4
KTsKICAgICB5ID0gcm91bmQoeSk7CkBAIC03OTksNyArODA3LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsK
KyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3Ry
YW5zbGF0ZShjciwgeCwgeSk7CiAgICAgbV9kYXRhLT50cmFuc2xhdGUoeCwgeSk7CiB9CkBAIC04
MjEsNyArODI5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhp
Y2tuZXNzKGZsb2F0IHN0cm9rZVRoaWNrbmVzcykKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb19zZXRfbGluZV93aWR0aChtX2RhdGEtPmNy
LCBzdHJva2VUaGlja25lc3MpOworICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKHBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpLCBzdHJva2VUaGlja25lc3MpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0UGxhdGZvcm1TdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHJva2VTdHlsZSkKQEAgLTgz
NSwxNiArODQzLDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVN0
eWxlKFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQogICAgIHN3aXRjaCAoc3Ryb2tlU3R5bGUpIHsK
ICAgICBjYXNlIE5vU3Ryb2tlOgogICAgICAgICAvLyBGSVhNRTogaXMgaXQgdGhlIHJpZ2h0IHdh
eSB0byBlbXVsYXRlIE5vU3Ryb2tlPwotICAgICAgICBjYWlyb19zZXRfbGluZV93aWR0aChtX2Rh
dGEtPmNyLCAwKTsKKyAgICAgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgocGxhdGZvcm1Db250ZXh0
KCktPmNyKCksIDApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNvbGlkU3Ryb2tlOgotICAg
ICAgICBjYWlyb19zZXRfZGFzaChtX2RhdGEtPmNyLCAwLCAwLCAwKTsKKyAgICAgICAgY2Fpcm9f
c2V0X2Rhc2gocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIDAsIDAsIDApOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIERvdHRlZFN0cm9rZToKLSAgICAgICAgY2Fpcm9fc2V0X2Rhc2gobV9kYXRh
LT5jciwgZG90UGF0dGVybiwgMiwgMCk7CisgICAgICAgIGNhaXJvX3NldF9kYXNoKHBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCBkb3RQYXR0ZXJuLCAyLCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBEYXNoZWRTdHJva2U6Ci0gICAgICAgIGNhaXJvX3NldF9kYXNoKG1fZGF0YS0+Y3IsIGRh
c2hQYXR0ZXJuLCAyLCAwKTsKKyAgICAgICAgY2Fpcm9fc2V0X2Rhc2gocGxhdGZvcm1Db250ZXh0
KCktPmNyKCksIGRhc2hQYXR0ZXJuLCAyLCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpA
QCAtODU5LDcgKzg2Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpjb25jYXRDVE0oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNh
aXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY29uc3QgY2Fpcm9fbWF0
cml4X3QgbWF0cml4ID0gY2Fpcm9fbWF0cml4X3QodHJhbnNmb3JtKTsKICAgICBjYWlyb190cmFu
c2Zvcm0oY3IsICZtYXRyaXgpOwogICAgIG1fZGF0YS0+Y29uY2F0Q1RNKHRyYW5zZm9ybSk7CkBA
IC04NzAsNyArODc4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENUTShjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9f
dCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjb25zdCBjYWlyb19tYXRyaXhf
dCBtYXRyaXggPSBjYWlyb19tYXRyaXhfdCh0cmFuc2Zvcm0pOwogICAgIGNhaXJvX3NldF9tYXRy
aXgoY3IsICZtYXRyaXgpOwogICAgIG1fZGF0YS0+c2V0Q1RNKHRyYW5zZm9ybSk7CkBAIC04ODEs
NyArODg5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZElubmVyUm91bmRlZFJlY3RDbGlw
KGNvbnN0IEludFJlY3QmIHJlY3QsIGludCB0aGlja25lc3MKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7
CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjbGlwKHJl
Y3QpOwogCiAgICAgUGF0aCBwOwpAQCAtOTI4LDcgKzkzNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2Rh
dGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAg
Y2Fpcm9fcHVzaF9ncm91cChjcik7CiAgICAgbV9kYXRhLT5sYXllcnMuYXBwZW5kKG9wYWNpdHkp
OwogICAgIG1fZGF0YS0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigpOwpAQCAtOTM5LDcgKzk0Nyw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXllcigpCiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fdCogY3Ig
PSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7
CiAKICAgICBjYWlyb19wb3BfZ3JvdXBfdG9fc291cmNlKGNyKTsKICAgICBjYWlyb19wYWludF93
aXRoX2FscGhhKGNyLCBtX2RhdGEtPmxheWVycy5sYXN0KCkpOwpAQCAtOTUyLDcgKzk2MCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJv
X3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgp
LT5jcigpOwogCiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBy
ZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CkBAIC05NjYs
NyArOTc0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBmbG9hdCB3aWR0aCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9f
dCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAg
ICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCBy
ZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgd2lkdGgpOwpAQCAt
OTkxLDEyICs5OTksMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExpbmVDYXAoTGluZUNh
cCBsaW5lQ2FwKQogICAgICAgICBjYWlyb0NhcCA9IENBSVJPX0xJTkVfQ0FQX1NRVUFSRTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhaXJvX3NldF9saW5lX2NhcChtX2RhdGEtPmNyLCBj
YWlyb0NhcCk7CisgICAgY2Fpcm9fc2V0X2xpbmVfY2FwKHBsYXRmb3JtQ29udGV4dCgpLT5jcigp
LCBjYWlyb0NhcCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lRGFzaChjb25z
dCBEYXNoQXJyYXkmIGRhc2hlcywgZmxvYXQgZGFzaE9mZnNldCkKIHsKLSAgICBjYWlyb19zZXRf
ZGFzaChtX2RhdGEtPmNyLCBkYXNoZXMuZGF0YSgpLCBkYXNoZXMuc2l6ZSgpLCBkYXNoT2Zmc2V0
KTsKKyAgICBjYWlyb19zZXRfZGFzaChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgZGFzaGVzLmRh
dGEoKSwgZGFzaGVzLnNpemUoKSwgZGFzaE9mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRMaW5lSm9pbihMaW5lSm9pbiBsaW5lSm9pbikKQEAgLTEwMTYsNyArMTAyNCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lSm9pbihMaW5lSm9pbiBsaW5lSm9pbikKICAg
ICAgICAgY2Fpcm9Kb2luID0gQ0FJUk9fTElORV9KT0lOX0JFVkVMOwogICAgICAgICBicmVhazsK
ICAgICB9Ci0gICAgY2Fpcm9fc2V0X2xpbmVfam9pbihtX2RhdGEtPmNyLCBjYWlyb0pvaW4pOwor
ICAgIGNhaXJvX3NldF9saW5lX2pvaW4ocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGNhaXJvSm9p
bik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRNaXRlckxpbWl0KGZsb2F0IG1pdGVy
KQpAQCAtMTAyNCw3ICsxMDMyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldE1pdGVyTGlt
aXQoZmxvYXQgbWl0ZXIpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgY2Fpcm9fc2V0X21pdGVyX2xpbWl0KG1fZGF0YS0+Y3IsIG1pdGVyKTsKKyAg
ICBjYWlyb19zZXRfbWl0ZXJfbGltaXQocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIG1pdGVyKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKGZsb2F0IGFscGhhKQpAQCAtMTA0
Miw3ICsxMDUwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRl
T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3NldF9vcGVyYXRvcihtX2RhdGEtPmNy
LCB0b0NhaXJvT3BlcmF0b3Iob3ApKTsKKyAgICBjYWlyb19zZXRfb3BlcmF0b3IocGxhdGZvcm1D
b250ZXh0KCktPmNyKCksIHRvQ2Fpcm9PcGVyYXRvcihvcCkpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6Y2xpcChjb25zdCBQYXRoJiBwYXRoKQpAQCAtMTA1MCw3ICsxMDU4LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29uc3QgUGF0aCYgcGF0aCkKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0
YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBP
d25QdHI8Y2Fpcm9fcGF0aF90PiBwKGNhaXJvX2NvcHlfcGF0aChwYXRoLnBsYXRmb3JtUGF0aCgp
LT5jb250ZXh0KCkpKTsKICAgICBjYWlyb19hcHBlbmRfcGF0aChjciwgcC5nZXQoKSk7CiAgICAg
Y2Fpcm9fZmlsbF9ydWxlX3Qgc2F2ZWRGaWxsUnVsZSA9IGNhaXJvX2dldF9maWxsX3J1bGUoY3Ip
OwpAQCAtMTA3MCw3ICsxMDc4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29u
c3QgUGF0aCYgcGF0aCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBw
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBkb3VibGUgeDEsIHkxLCB4MiwgeTI7CiAgICAg
Y2Fpcm9fY2xpcF9leHRlbnRzKGNyLCAmeDEsICZ5MSwgJngyLCAmeTIpOwogICAgIGNhaXJvX3Jl
Y3RhbmdsZShjciwgeDEsIHkxLCB4MiAtIHgxLCB5MiAtIHkxKTsKQEAgLTEwODcsNyArMTA5NSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpyb3RhdGUoZmxvYXQgcmFkaWFucykKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb19yb3RhdGUo
bV9kYXRhLT5jciwgcmFkaWFucyk7CisgICAgY2Fpcm9fcm90YXRlKHBsYXRmb3JtQ29udGV4dCgp
LT5jcigpLCByYWRpYW5zKTsKICAgICBtX2RhdGEtPnJvdGF0ZShyYWRpYW5zKTsKIH0KIApAQCAt
MTA5Niw3ICsxMTA0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNjYWxlKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBjYWlyb19zY2FsZShtX2RhdGEtPmNyLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCkpOworICAgIGNhaXJvX3NjYWxlKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCkpOwogICAgIG1fZGF0YS0+c2NhbGUoc2l6ZSk7CiB9CiAKQEAgLTEx
MDUsNyArMTExMyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEludFJl
Y3QmIHIpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1D
b250ZXh0KCktPmNyKCk7CiAgICAgZG91YmxlIHgxLCB5MSwgeDIsIHkyOwogICAgIGNhaXJvX2Ns
aXBfZXh0ZW50cyhjciwgJngxLCAmeTEsICZ4MiwgJnkyKTsKICAgICBjYWlyb19yZWN0YW5nbGUo
Y3IsIHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSk7CkBAIC0xMTMyLDcgKzExNDAsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHIsIGNvbnN0
IEludFNpemUmIHRvcExlZnQsCiAgICAgaWYgKGhhc1NoYWRvdygpKQogICAgICAgICBtX2RhdGEt
PnNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCByLCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9t
TGVmdCwgYm90dG9tUmlnaHQpOwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAg
IGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShj
cik7CiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUm91bmRlZFJlY3QociwgdG9wTGVmdCwg
dG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKQEAgLTExNzAsNyArMTE3OCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVu
YWJsZSkKICAgICAvLyBXaGVuIHRydWUsIHVzZSB0aGUgZGVmYXVsdCBDYWlybyBiYWNrZW5kIGFu
dGlhbGlhcyBtb2RlICh1c3VhbGx5IHRoaXMKICAgICAvLyBlbmFibGVzIHN0YW5kYXJkICdncmF5
c2NhbGUnIGFudGlhbGlhc2luZyk7IGZhbHNlIHRvIGV4cGxpY2l0bHkgZGlzYWJsZQogICAgIC8v
IGFudGlhbGlhc2luZy4gVGhpcyBpcyB0aGUgc2FtZSBzdHJhdGVneSBhcyB1c2VkIGluIGRyYXdD
b252ZXhQb2x5Z29uKCkuCi0gICAgY2Fpcm9fc2V0X2FudGlhbGlhcyhtX2RhdGEtPmNyLCBlbmFi
bGUgPyBDQUlST19BTlRJQUxJQVNfREVGQVVMVCA6IENBSVJPX0FOVElBTElBU19OT05FKTsKKyAg
ICBjYWlyb19zZXRfYW50aWFsaWFzKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBlbmFibGUgPyBD
QUlST19BTlRJQUxJQVNfREVGQVVMVCA6IENBSVJPX0FOVElBTElBU19OT05FKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xh
dGlvblF1YWxpdHkpCkBAIC0xMTk2LDcgKzEyMDQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cHVzaEltYWdlTWFzayhjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYg
cgogICAgIC8vIFdlIHdhbnQgdG8gYWxsb3cgdGhlIGNsaXBwZWQgZWxlbWVudHMgdG8gY29tcG9z
aXRlIHdpdGggdGhlIHN1cmZhY2UgYXMgaXQKICAgICAvLyBpcyBub3csIGJ1dCB0aGV5IGFyZSBp
c29sYXRlZCBpbiBhbm90aGVyIGdyb3VwLiBUbyBtYWtlIHRoaXMgd29yaywgd2UncmUKICAgICAv
LyBnb2luZyB0byBibGl0IHRoZSBjdXJyZW50IHN1cmZhY2UgY29udGVudHMgb250byB0aGUgbmV3
IGdyb3VwIG9uY2Ugd2UgcHVzaCBpdC4KLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7Cisg
ICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zdXJm
YWNlX3QqIGN1cnJlbnRUYXJnZXQgPSBjYWlyb19nZXRfdGFyZ2V0KGNyKTsKICAgICBjYWlyb19z
dXJmYWNlX2ZsdXNoKGN1cnJlbnRUYXJnZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVD
YWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaAppbmRleCA5MjRmNjlhOTUwYzc4YmE3OTc5N2Qx
MTZiMDhhNjVhYzE3MGY3OGUzLi4yYmMyOTBiZDM4NTA1MzhkMWJkYWY4N2FlYTE5YzFiODE3OGU5
M2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNh
aXJvLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAog
I2luY2x1ZGUgIkNvbnRleHRTaGFkb3cuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWly
by5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNs
dWRlIDxtYXRoLmg+CkBAIC02Nyw4ICs2OCw4IEBAIHByaXZhdGU6CiAKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlKCkKLSAgICAgICAgOiBjcigwKQorICAgIEdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZShQbGF0Zm9ybUNvbnRleHRDYWlybyogbmV3UGxhdGZvcm1Db250ZXh0KQorICAg
ICAgICA6IHBsYXRmb3JtQ29udGV4dChuZXdQbGF0Zm9ybUNvbnRleHQpCiAjaWYgUExBVEZPUk0o
R1RLKQogICAgICAgICAsIGV4cG9zZSgwKQogI2VsaWYgUExBVEZPUk0oV0lOKQpAQCAtODIsNyAr
ODMsNiBAQCBwdWJsaWM6CiAKICAgICB+R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKCkK
ICAgICB7Ci0gICAgICAgIGNhaXJvX2Rlc3Ryb3koY3IpOwogICAgIH0KIAogI2lmIFBMQVRGT1JN
KFdJTikKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q1RNKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYpOwogICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXllcigpIHsgbV90
cmFuc3BhcmVuY3lDb3VudCsrOyB9CiAgICAgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcigpIHsg
bV90cmFuc3BhcmVuY3lDb3VudC0tOyB9Ci0gICAgdm9pZCBzeW5jQ29udGV4dChQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dCogY3IpOworICAgIHZvaWQgc3luY0NvbnRleHQoY2Fpcm9fdCogY3IpOwog
I2Vsc2UKICAgICAvLyBPbiBldmVyeXRoaW5nIGVsc2UsIHdlIGRvIG5vdGhpbmcuCiAgICAgdm9p
ZCBzYXZlKCkge30KQEAgLTExNCwxMiArMTE0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSB7fQogICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lM
YXllcigpIHt9CiAgICAgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcigpIHt9Ci0gICAgdm9pZCBz
eW5jQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogY3IpIHt9CisgICAgdm9pZCBzeW5j
Q29udGV4dChjYWlyb190KiBjcikge30KICNlbmRpZgogCi0gICAgY2Fpcm9fdCogY3I7CisgICAg
UGxhdGZvcm1Db250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dDsKICAgICBWZWN0b3I8ZmxvYXQ+
IGxheWVyczsKLQogICAgIENvbnRleHRTaGFkb3cgc2hhZG93OwogICAgIFZlY3RvcjxDb250ZXh0
U2hhZG93PiBzaGFkb3dTdGFjazsKICAgICBWZWN0b3I8SW1hZ2VNYXNrSW5mb3JtYXRpb24+IG1h
c2tJbWFnZVN0YWNrOwpAQCAtMTMzLDYgKzEzMiwyMyBAQCBwdWJsaWM6CiAjZW5kaWYKIH07CiAK
Ky8vIFRoaXMgaXMgYSBzcGVjaWFsaXplZCBwcml2YXRlIHNlY3Rpb24gZm9yIHRoZSBDYWlybyBH
cmFwaGljc0NvbnRleHQsIHdoaWNoIGtub3dzIGhvdworLy8gdG8gY2xlYW4gdXAgdGhlIGhlYXAg
YWxsb2NhdGVkIFBsYXRmb3JtQ29udGV4dENhaXJvIHRoYXQgd2UgbXVzdCB1c2UgZm9yIHRoZSB0
b3AtbGV2ZWwKKy8vIEdyYXBoaWNzQ29udGV4dC4KK2NsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZVRvcGxldmVsIDogcHVibGljIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZSB7CitwdWJsaWM6CisgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlVG9wbGV2ZWwo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dCkKKyAgICAgICAgOiBHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGUocGxhdGZvcm1Db250ZXh0KQorICAgIHsKKyAgICB9CisK
KyAgICB+R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlVG9wbGV2ZWwoKQorICAgIHsKKyAg
ICAgICAgZGVsZXRlIHBsYXRmb3JtQ29udGV4dDsKKyAgICB9Cit9OworCisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNh
aXJvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggOWVlOGE5NDBhYzcwY2Q0YmJjMzk5NDdm
N2I2NTgzZmI1NjNjMThjMy4uMWQ1ZDQ5MjE4NWE4NDM2MDEwMDk1NjVjNjc4NmM1ZWY3NWVmN2Iz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTM3LDcgKzM3LDkgQEAKICNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRl
ICJQYXR0ZXJuLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSA8
Y2Fpcm8uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTY2LDYgKzY4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBJbWFnZUJ1ZmZlckRhdGE6OkltYWdlQnVmZmVyRGF0YShjb25z
dCBJbnRTaXplJiBzaXplKQogICAgIDogbV9zdXJmYWNlKDApCisgICAgLCBtX3BsYXRmb3JtQ29u
dGV4dCgwKQogewogfQogCkBAIC04MCw5ICs4Myw5IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZl
cihjb25zdCBJbnRTaXplJiBzaXplLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBib29sJiBz
CiAgICAgaWYgKGNhaXJvX3N1cmZhY2Vfc3RhdHVzKG1fZGF0YS5tX3N1cmZhY2UpICE9IENBSVJP
X1NUQVRVU19TVUNDRVNTKQogICAgICAgICByZXR1cm47ICAvLyBjcmVhdGUgd2lsbCBub3RpY2Ug
d2UgZGlkbid0IHNldCBtX2luaXRpYWxpemVkIGFuZCBmYWlsLgogCi0gICAgY2Fpcm9fdCogY3Ig
PSBjYWlyb19jcmVhdGUobV9kYXRhLm1fc3VyZmFjZSk7Ci0gICAgbV9jb250ZXh0LnNldChuZXcg
R3JhcGhpY3NDb250ZXh0KGNyKSk7Ci0gICAgY2Fpcm9fZGVzdHJveShjcik7ICAvLyBUaGUgY29u
dGV4dCBpcyBub3cgb3duZWQgYnkgdGhlIEdyYXBoaWNzQ29udGV4dC4KKyAgICBSZWZQdHI8Y2Fp
cm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9kYXRhLm1fc3VyZmFjZSkpOworICAg
IG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5zZXRDcihjci5nZXQoKSk7CisgICAgbV9jb250ZXh0
LnNldChuZXcgR3JhcGhpY3NDb250ZXh0KCZtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQpKTsKICAg
ICBzdWNjZXNzID0gdHJ1ZTsKIH0KIApAQCAtMzAxLDcgKzMwNCw3IEBAIHN0YXRpYyBjYWlyb19z
dGF0dXNfdCB3cml0ZUZ1bmN0aW9uKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGRhdGEsIHVuCiAKIFN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IGRvdWJsZSopIGNvbnN0CiB7Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBp
bWFnZSA9IGNhaXJvX2dldF90YXJnZXQoY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7Cisg
ICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSA9IGNhaXJvX2dldF90YXJnZXQoY29udGV4dCgpLT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJu
ICJkYXRhOiwiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YS5oCmluZGV4IDQ5ZjE1ZGY4OTEzYTlhZGFlYTI5ZmI4
MTFmMmI0ZDE0YjYzN2I3YmMuLjQyODY3ZDE4MDc1NDdlOWIxOTM3ODBiMTk1OTVlNzA0MjVmYzIz
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyRGF0YS5oCkBAIC0yNiw3ICsyNiw5IEBACiAjaWZuZGVmIEltYWdlQnVm
ZmVyRGF0YV9oCiAjZGVmaW5lIEltYWdlQnVmZmVyRGF0YV9oCiAKLSNpbmNsdWRlICJjYWlyby5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisKK3R5cGVkZWYgc3RydWN0IF9j
YWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0zNyw2ICszOSw3IEBAIHB1YmxpYzoKICAgICBJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6
ZSYpOwogCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBtX3N1cmZhY2U7CisgICAgUGxhdGZvcm1Db250
ZXh0Q2Fpcm8gbV9wbGF0Zm9ybUNvbnRleHQ7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUNhaXJvLmNwcAppbmRleCBlNTFkNjVhM2ZkZDFmNTk2NTEyYzU5NGZmZTlhMDc5ZTYyMjczZTAw
Li5kM2E1MmNlNzRiNTNmMjU2ZmMxNDliZWRhODQzMGI5NGUyNWM0OWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcApA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkNvbnRleHRTaGFkb3cuaCIKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAi
SW1hZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCkBAIC0xMTQsNyArMTE1
LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KIAogICAgIEludFNpemUgc2VsZlNpemUgPSBz
aXplKCk7CiAKLSAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwor
ICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAg
Y29udGV4dC0+c2F2ZSgpOwogCiAgICAgLy8gU2V0IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24u
CkBAIC0xNjksOCArMTcwLDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb24KICAgICBpZiAoIWlt
YWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KICAg
ICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKTsKLQorICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNy
KCk7CiAgICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjciwgaW1hZ2UsIHNpemUoKSwgdGls
ZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3ApLCBkZXN0
UmVjdCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fp
cm8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJhNzUxNjJkNzUyYjUzMGMzZjIyZjNkOGJiNTY0OTI3OGU4NjMz
NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKKworI2luY2x1ZGUgPGNhaXJvLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGxhdGZvcm1Db250ZXh0Q2Fpcm86OlBsYXRmb3Jt
Q29udGV4dENhaXJvKGNhaXJvX3QqIGNyKQorICAgIDogbV9jcihjcikKK3sKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzZj
Y2VkYWIyMzRlMmVmNTI2NTBiYWVmMzNlNzlhMWNkZjE4YWFmNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENh
aXJvLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIFBsYXRmb3JtQ29udGV4dENhaXJvX2gKKyNkZWZpbmUgUGxh
dGZvcm1Db250ZXh0Q2Fpcm9faAorCisjaW5jbHVkZSAiQ29udGV4dFNoYWRvdy5oIgorI2luY2x1
ZGUgIlJlZlB0ckNhaXJvLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gTXVjaCBsaWtl
IFBsYXRmb3JtQ29udGV4dFNraWEgaW4gdGhlIFNraWEgcG9ydCwgdGhpcyBjbGFzcyBob2xkcyBp
bmZvcm1hdGlvbiB0aGF0CisvLyB3b3VsZCBub3JtYWxseSBiZSBwcml2YXRlIHRvIEdyYXBoaWNz
Q29udGV4dCwgZXhjZXB0IHRoYXQgd2Ugd2FudCB0byBhbGxvdyBhY2Nlc3MKKy8vIHRvIGl0IGlu
IEZvbnQgYW5kIEltYWdlIGNvZGUuIFRoaXMgYWxsb3dzIHVzIHRvIHNlcGFyYXRlIHRoZSBjb25j
ZXJucyBvZiBDYWlyby1zcGVjaWZpYworLy8gY29kZSBmcm9tIHRoZSBwbGF0Zm9ybS1pbmRlcGVu
ZGVudCBHcmFwaGljc0NvbnRleHQuCisKK2NsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybUNvbnRleHRDYWlybyk7CitwdWJsaWM6Cisg
ICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8oY2Fpcm9fdCopOworICAgIGNhaXJvX3QqIGNyKCkgeyBy
ZXR1cm4gbV9jci5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q3IoY2Fpcm9fdCogY3IpIHsgbV9jciA9
IGNyOyB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPGNhaXJvX3Q+IG1fY3I7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQbGF0Zm9ybUNvbnRleHRDYWlyb19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAKaW5k
ZXggMjE2ZmI1NjYyNTBiYmNkNjg3ZWZmNDhkODQ3ZTk4NGZjNDUwNGM1OS4uZDE4YzAyYmQ5NjRi
NmE2NDI5ODhkMmJlYjE2ZTc0NzE1MDc5MTE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5j
bHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDb250ZXh0U2hhZG93LmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRh
LmgiCkBAIC0yMjAsNyArMjIxLDcgQEAgYm9vbCBGb250OjpjYW5FeHBhbmRBcm91bmRJZGVvZ3Jh
cGhzSW5Db21wbGV4VGV4dCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBk
cmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjYWlyb190
KiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgUGFuZ29MYXlvdXRMaW5lKiBsYXlv
dXRMaW5lLCBQYW5nb1JlZ2lvblR5cGUgcmVuZGVyUmVnaW9uKQorc3RhdGljIHZvaWQgZHJhd0ds
eXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIFBhbmdvTGF5b3V0TGluZSogbGF5b3V0TGluZSwgUGFuZ29SZWdpb25UeXBl
IHJlbmRlclJlZ2lvbikKIHsKICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBncmFwaGljc0Nv
bnRleHQtPmNvbnRleHRTaGFkb3coKTsKICAgICBBU1NFUlQoc2hhZG93KTsKQEAgLTIzMiw2ICsy
MzMsNyBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBjYWlyb190KiBjb250ZXh0LAogCiAgICAgLy8gT3B0aW1pemUgbm9uLWJs
dXJyeSBzaGFkb3dzLCBieSBqdXN0IGRyYXdpbmcgdGV4dCB3aXRob3V0IHRoZSBDb250ZXh0U2hh
ZG93LgogICAgIGlmICghc2hhZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhncmFwaGljc0NvbnRl
eHQpKSB7CisgICAgICAgIGNhaXJvX3QqIGNvbnRleHQgPSBncmFwaGljc0NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5jcigpOwogICAgICAgICBjYWlyb19zYXZlKGNvbnRleHQpOwogICAgICAg
ICBjYWlyb190cmFuc2xhdGUoY29udGV4dCwgdG90YWxPZmZzZXQueCgpLCB0b3RhbE9mZnNldC55
KCkpOwogCkBAIC0yNTUsNiArMjU3LDcgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY2Fpcm9fdCogY29udGV4dCwKICAgICAg
ICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IGFueSBiaXRzIGFuZCBwaWVjZXMgb2YgY2hhcmFj
dGVycyBvdXQgb2YgcmFuZ2UgdG8gYmUKICAgICAgICAgLy8gZHJhd24uIFNpbmNlIENvbnRleHRT
aGFkb3cgZXhwZWN0cyBhIGNvbnNpc3RlbnQgdHJhbnNmb3JtLCB3ZSBoYXZlIHRvIHVuZG8gdGhl
CiAgICAgICAgIC8vIHRyYW5zbGF0aW9uIGJlZm9yZSBjYWxsaW5nIGVuZFNoYWRvd0xheWVyIGFz
IHdlbGwuCisgICAgICAgIGNhaXJvX3QqIGNvbnRleHQgPSBncmFwaGljc0NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5jcigpOwogICAgICAgICBjYWlyb19zYXZlKGNvbnRleHQpOwogICAgICAg
ICBjYWlyb190cmFuc2xhdGUoY29udGV4dCwgdG90YWxPZmZzZXQueCgpLCB0b3RhbE9mZnNldC55
KCkpOwogICAgICAgICBnZGtfY2Fpcm9fcmVnaW9uKGNvbnRleHQsIHJlbmRlclJlZ2lvbik7CkBA
IC0yNzUsNyArMjc4LDcgQEAgdm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEYKICAgICB9CiAjZW5kaWYK
IAotICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgY2Fp
cm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBQYW5nb0xh
eW91dCogbGF5b3V0ID0gcGFuZ29fY2Fpcm9fY3JlYXRlX2xheW91dChjcik7CiAgICAgc2V0UGFu
Z29BdHRyaWJ1dGVzKHRoaXMsIHJ1biwgbGF5b3V0KTsKIApAQCAtMjk0LDcgKzI5Nyw3IEBAIHZv
aWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdCBGCiAgICAgaW50IHJhbmdlc1tdID0ge3N0YXJ0IC0gdXRmOCwg
ZW5kIC0gdXRmOH07CiAgICAgcGFydGlhbFJlZ2lvbiA9IGdka19wYW5nb19sYXlvdXRfbGluZV9n
ZXRfY2xpcF9yZWdpb24obGF5b3V0TGluZSwgMCwgMCwgcmFuZ2VzLCAxKTsKIAotICAgIGRyYXdH
bHlwaHNTaGFkb3coY29udGV4dCwgY3IsIHBvaW50LCBsYXlvdXRMaW5lLCBwYXJ0aWFsUmVnaW9u
KTsKKyAgICBkcmF3R2x5cGhzU2hhZG93KGNvbnRleHQsIHBvaW50LCBsYXlvdXRMaW5lLCBwYXJ0
aWFsUmVnaW9uKTsKIAogICAgIGNhaXJvX3NhdmUoY3IpOwogICAgIGNhaXJvX3RyYW5zbGF0ZShj
ciwgcG9pbnQueCgpLCBwb2ludC55KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCmluZGV4IGQ1NmI1MmRlODgwMzNjOWM4N2FhMmMxODI4
Y2UxZjA2NGU4MzQwNDQuLjdmZGMxZjY3ODU4YTIwNGNiMzQ4NmM3NDIxY2ZjYzE1MDYzNTE1Zjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0ay5j
cHAKQEAgLTMzLDkgKzMzLDkgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUGFzc1JlZlB0ci5oIgotI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJv
LmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBJY29uOjpw
YWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIFRPRE86IFNjYWxlL2NsaXAgdGhlIGltYWdlIGlmIG5lY2Vz
c2FyeS4KLSAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAg
IGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fp
cm9fc2F2ZShjcik7CiAgICAgZ2RrX2NhaXJvX3NldF9zb3VyY2VfcGl4YnVmKGNyLCBtX2ljb24s
IHJlY3QueCgpLCByZWN0LnkoKSk7CiAgICAgY2Fpcm9fcGFpbnQoY3IpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJv
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRDYWlyb1dpbi5jcHAKaW5kZXggYjJjNzAyZjI2NWQyMzc0NjlkNTA3OTlkODY3YmNiM2Qx
OWM4YTU3YS4uNzZjMjE4OWQ5OWEwNDQzMGEzYWNiZjY3ZWExODJjNWY2MThlMzRhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dENhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCkBAIC03MiwxOCArNzIsMTUgQEAgR3JhcGhpY3ND
b250ZXh0OjpHcmFwaGljc0NvbnRleHQoSERDIGRjLCBib29sIGhhc0FscGhhKQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KEhEQyBkYywgYm9vbCBoYXNBbHBoYSkKIHsKLSAg
ICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwotCi0gICAgaWYg
KGRjKSB7Ci0gICAgICAgIG1fZGF0YS0+Y3IgPSBjcmVhdGVDYWlyb0NvbnRleHRXaXRoSERDKGRj
LCBoYXNBbHBoYSk7Ci0gICAgICAgIG1fZGF0YS0+bV9oZGMgPSBkYzsKLSAgICB9IGVsc2Ugewor
ICAgIGNhaXJvX3QqIGNyID0gMDsKKyAgICBpZiAoZGMpCisgICAgICAgIGNyID0gY3JlYXRlQ2Fp
cm9Db250ZXh0V2l0aEhEQyhkYywgaGFzQWxwaGEpOworICAgIGVsc2UKICAgICAgICAgc2V0UGFp
bnRpbmdEaXNhYmxlZCh0cnVlKTsKLSAgICAgICAgbV9kYXRhLT5jciA9IDA7Ci0gICAgICAgIG1f
ZGF0YS0+bV9oZGMgPSAwOwotICAgIH0KIAotICAgIGlmIChtX2RhdGEtPmNyKSB7CisgICAgbV9k
YXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZVRvcExldmVsKG5ldyBQbGF0
Zm9ybUNvbnRleHRDYWlybyhjcikpOworICAgIG1fZGF0YS0+bV9oZGMgPSBkYzsKKyAgICBpZiAo
cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250
ZXh0IHN0YXJ0cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgogICAgICAgICBzZXRQbGF0Zm9ybUZp
bGxDb2xvcihmaWxsQ29sb3IoKSwgZmlsbENvbG9yU3BhY2UoKSk7CiAgICAgICAgIHNldFBsYXRm
b3JtU3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3IoKSwgc3Ryb2tlQ29sb3JTcGFjZSgpKTsKQEAgLTEz
MSwyNCArMTI4LDI1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRl
eHQoSERDIGhkYywgY29uc3QgSW50UmVjdCYgZHN0UmVjdCwgYm9vCiAgICAgLy8gU2NhbGUgdGhl
IHRhcmdldCBzdXJmYWNlIHRvIHRoZSBuZXcgaW1hZ2Ugc2l6ZSwgYW5kIGZsaXAgaXQKICAgICAv
LyBzbyB0aGF0IHdoZW4gd2Ugc2V0IHRoZSBzcmNJbWFnZSBhcyB0aGUgc3VyZmFjZSBpdCB3aWxs
IGRyYXcKICAgICAvLyByaWdodC1zaWRlLXVwLgotICAgIGNhaXJvX3NhdmUobV9kYXRhLT5jcik7
Ci0gICAgY2Fpcm9fdHJhbnNsYXRlKG1fZGF0YS0+Y3IsIGRzdFJlY3QueCgpLCBkc3RSZWN0Lmhl
aWdodCgpICsgZHN0UmVjdC55KCkpOwotICAgIGNhaXJvX3NjYWxlKG1fZGF0YS0+Y3IsIDEuMCwg
LTEuMCk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKG1fZGF0YS0+Y3IsIGltYWdlLCAw
LCAwKTsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOworICAgIGNh
aXJvX3NhdmUoY3IpOworICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgZHN0UmVjdC54KCksIGRzdFJl
Y3QuaGVpZ2h0KCkgKyBkc3RSZWN0LnkoKSk7CisgICAgY2Fpcm9fc2NhbGUoY3IsIDEuMCwgLTEu
MCk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBpbWFnZSwgMCwgMCk7CiAKICAg
ICBpZiAobV9kYXRhLT5sYXllcnMuc2l6ZSgpKQotICAgICAgICBjYWlyb19wYWludF93aXRoX2Fs
cGhhKG1fZGF0YS0+Y3IsIG1fZGF0YS0+bGF5ZXJzLmxhc3QoKSk7CisgICAgICAgIGNhaXJvX3Bh
aW50X3dpdGhfYWxwaGEoY3IsIG1fZGF0YS0+bGF5ZXJzLmxhc3QoKSk7CiAgICAgZWxzZQotICAg
ICAgICBjYWlyb19wYWludChtX2RhdGEtPmNyKTsKKyAgICAgICAgY2Fpcm9fcGFpbnQoY3IpOwog
ICAgICAKICAgICAvLyBEZWxldGUgYWxsIG91ciBqdW5rLgogICAgIGNhaXJvX3N1cmZhY2VfZGVz
dHJveShpbWFnZSk7CiAgICAgOjpEZWxldGVEQyhoZGMpOwogICAgIDo6RGVsZXRlT2JqZWN0KGJp
dG1hcCk7Ci0gICAgY2Fpcm9fcmVzdG9yZShtX2RhdGEtPmNyKTsKKyAgICBjYWlyb19yZXN0b3Jl
KGNyKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OnN5bmNDb250
ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBjcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlOjpzeW5jQ29udGV4dChjYWlyb190KiBjcikKIHsKICAgICBpZiAoIWNyKQog
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhl
bWVHdGsuY3BwCmluZGV4IDFlOWYxNTk0OTFmYzAzMGVkZWViOTIyODY5MGMwYzY3MTAzYjY5ODku
LjliMTFjMjc3YzA4OTJlODU5ZmNiNzc4ZTFhMzZkOTczZjQ2MGFkMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRz
LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fp
cm8uaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCkBAIC0yMzQsNyArMjM1LDcgQEAgc3RhdGljIHZvaWQg
cGFpbnRHZGtQaXhidWYoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBHZGtQaXhidWYq
IGljb24sIGNvbnMKICAgICAgICAgaWNvbiA9IHNjYWxlZEljb24uZ2V0KCk7CiAgICAgfQogCi0g
ICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlyb190
KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3NhdmUo
Y3IpOwogICAgIGdka19jYWlyb19zZXRfc291cmNlX3BpeGJ1ZihjciwgaWNvbiwgaWNvblJlY3Qu
eCgpLCBpY29uUmVjdC55KCkpOwogICAgIGNhaXJvX3BhaW50KGNyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCA5ZTY0MGY2ZmFiMzEzYmU1YWM0YzljY2Q2OWI2MDFmZjZlOTExNTczLi42ZjczODlkNzA0NWE4
NWEwMGVhZmJkNDcwYzM5YWI5NGI4ZDM3MTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHdGtWZXJzaW9u
aW5nLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJSZWZQ
dHJDYWlyby5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lR3RrLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKQEAgLTEyOCw3ICsxMjksNyBAQCBXaWRnZXRSZW5kZXJpbmdDb250ZXh0Ojp+V2lkZ2V0UmVu
ZGVyaW5nQ29udGV4dCgpCiAgICAgfQogCiAgICAgLy8gRklYTUU6IEl0J3MgdW5jbGVhciBpZiBp
dCBpcyBuZWNlc3NhcnkgdG8gcHJlc2VydmUgdGhlIGN1cnJlbnQgc291cmNlIGhlcmUuCi0gICAg
Y2Fpcm9fdCogY2Fpcm9Db250ZXh0ID0gbV9ncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpOworICAgIGNhaXJvX3QqIGNhaXJvQ29udGV4dCA9IG1fZ3JhcGhpY3NDb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBSZWZQdHI8Y2Fpcm9fcGF0dGVybl90PiBwcmV2aW91
c1NvdXJjZShjYWlyb19nZXRfc291cmNlKGNhaXJvQ29udGV4dCkpOwogCiAgICAgLy8gVGhlIGJs
aXQgcmVjdGFuZ2xlIGlzIHRoZSBvcmlnaW5hbCB0YXJnZXQgcmVjdGFuZ2xlIGFkanVzdGVkIGZv
ciBhbnkgZXh0cmEgc3BhY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0
ay9QbHVnaW5WaWV3R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZp
ZXdHdGsuY3BwCmluZGV4IDJlZWQzYTRmY2RhM2I5NjRmYmNkMzQwOTI0ZDI4MzhiMDA1NDRlMTgu
LjhmN2U2YjdkMTZhYzA3OTFlM2MxNmVmNmNkYTY5YTNhMTljOTNiMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAj
aW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNs
dWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQu
aCIKICNpbmNsdWRlICJQbHVnaW5EZWJ1Zy5oIgpAQCAtMjE3LDcgKzIxOCw3IEBAIHZvaWQgUGx1
Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogICAgICAgICAgICAgLy8gYXZvaWQgZHJhd2luZyBhcnRpZmFjdHMuCiAKICAgICAgICAg
ICAgIC8vIFRoaXMgV291bGQgbm90IHdvcmsgd2l0aG91dCBkb3VibGUgYnVmZmVyaW5nLCBidXQg
d2UgYWx3YXlzIHVzZSBpdC4KLSAgICAgICAgICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShj
ci5nZXQoKSwgY2Fpcm9fZ2V0X2dyb3VwX3RhcmdldChjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSksCisgICAgICAgICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0KCksIGNhaXJv
X2dldF9ncm91cF90YXJnZXQoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tX3dpbmRvd1JlY3QueCgpLCAtbV93
aW5kb3dSZWN0LnkoKSk7CiAgICAgICAgICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IuZ2V0KCks
IENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CiAgICAgICAgIH0gZWxzZQpAQCAtMjQ0LDcgKzI0NSw3
IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0KQogICAgIGlmIChzeW5jWCkKICAgICAgICAgWFN5bmMobV9wbHVnaW5E
aXNwbGF5LCBmYWxzZSk7IC8vIHN5bmMgY2hhbmdlcyBieSBwbHVnaW4KIAotICAgIGNhaXJvX3Qq
IGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgY2Fpcm9fdCogY3IgPSBjb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAogICAg
IGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgZHJhd2FibGVTdXJmYWNlLmdldCgpLCBmcmFt
ZVJlY3QoKS54KCksIGZyYW1lUmVjdCgpLnkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
d2luL1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDIwODEyMWUzODdjZjQ1MDIyMzc0NWQ0YjJhM2Y3
YmIxMTFjZTEwNDUuLmY1NzU3MDkzMjE0Y2NmYTJhN2VhNDg5ZTU2ZTIzMzc5ZmY5OTA0YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCkBAIC04Myw2
ICs4Myw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENBSVJPKQorI2luY2x1ZGUgIlBsYXRm
b3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSA8Y2Fpcm8td2luMzIuaD4KICNlbmRpZgogCkBA
IC01NzIsOCArNTczLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwYWludFdpbmRvd2VkUGx1Z2luSW50
b0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIC8vIE11c3QgZmx1
c2ggZHJhd2luZ3MgdXAgdG8gdGhpcyBwb2ludCB0byB0aGUgYmFja2luZyBtZXRhZmlsZSwgb3Ro
ZXJ3aXNlIHRoZQogICAgIC8vIHBsdWdpbiByZWdpb24gd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRo
IGFueSBjbGVhciByZWdpb25zIHNwZWNpZmllZCBpbiB0aGUKICAgICAvLyBjYWlyby1jb250cm9s
bGVkIHBvcnRpb25zIG9mIHRoZSByZW5kZXJpbmcuCi0gICAgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQqIGN0eCA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgIGNhaXJvX3Nob3dfcGFn
ZShjdHgpOworICAgIGNhaXJvX3Nob3dfcGFnZShjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+
Y3IoKSk7CiAjZW5kaWYKIAogICAgIEhEQyBoZGMgPSB3aW5kb3dzQ29udGV4dC5oZGMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwppbmRleCA0ZDNlYzk1ZmI1ZDMzODRkZGE3MzZhNmIwMzgxZmRkZDVjMjNkMTAw
Li5lMDk1YmM1MDYzNTlhMzc2OTAzOTJjMjMyZTA1YTE1MGQ5MDc3MjVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDMtMDQgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFtDYWlyb10gQmV0dGVyIHNlcGFyYXRlIHRoZSBjb25jZXJucyBvZiBHcmFwaGlj
c0NvbnRleHRDYWlybworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTUxNTAKKworICAgICAgICBBZGQgYSBQbGF0Zm9ybUNvbnRleHRDYWlybyB3aGljaCBy
aWdodCBub3cgc3RvcmVzIHRoZSBjYWlyb190KiBmb3IgYQorICAgICAgICBHcmFwaGljc0NvbnRl
eHRDYWlyby4gTGF0ZXIgcGF0Y2hlcyB3aWxsIG1vdmUgbG9naWMgZm9yIHRyYWNraW5nIENvbnRl
eHRTaGFkb3cKKyAgICAgICAgYW5kIGltYWdlIG1hc2tpbmcgbGF5ZXJzIGludG8gdGhpcyBQbGF0
Zm9ybUNvbnRleHRDYWlybyBjbGFzcy4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJmcmFt
ZS5jcHA6CisgICAgICAgIChkcmF3X3BhZ2VfY2FsbGJhY2spOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19leHBvc2VfZXZlbnQp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2RyYXcpOgorCiAyMDExLTAzLTAzICBMdWthc3og
U2xhY2hjaWFrICA8bC5zbGFjaGNpYWtAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5j
cHAKaW5kZXggZmQ5MGE2YzI3MDk0N2ZiNDZkOWQ0ODBkMmVjOTEyNzAwN2I5NDIxYi4uYTBlNDBi
M2EyMTVkMmE1NDk3NDJiMGM4ZTY5MjFhNzIzNDZjNzJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAi
SlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0Vs
ZW1lbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlBy
aW50Q29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVHJlZUFzVGV4dC5oIgpAQCAtNzY1LDE3ICs3NjYsMTcgQEAgc3RhdGljIHZvaWQgYmVnaW5f
cHJpbnRfY2FsbGJhY2soR3RrUHJpbnRPcGVyYXRpb24qIG9wLCBHdGtQcmludENvbnRleHQqIGNv
bnRleHQKICAgICBndGtfcHJpbnRfb3BlcmF0aW9uX3NldF9uX3BhZ2VzKG9wLCBwcmludENvbnRl
eHQtPnBhZ2VDb3VudCgpKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd19wYWdlX2NhbGxiYWNrKEd0
a1ByaW50T3BlcmF0aW9uKiBvcCwgR3RrUHJpbnRDb250ZXh0KiBjb250ZXh0LCBnaW50IHBhZ2Vf
bnIsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3N0YXRpYyB2b2lkIGRyYXdfcGFnZV9jYWxsYmFjayhH
dGtQcmludE9wZXJhdGlvbiosIEd0a1ByaW50Q29udGV4dCogZ3RrUHJpbnRDb250ZXh0LCBnaW50
IHBhZ2VOdW1iZXIsIFByaW50Q29udGV4dCogY29yZVByaW50Q29udGV4dCkKIHsKLSAgICBQcmlu
dENvbnRleHQqIHByaW50Q29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UHJpbnRDb250ZXh0Kj4o
dXNlcl9kYXRhKTsKLQotICAgIGlmIChwYWdlX25yID49IHN0YXRpY19jYXN0PGdpbnQ+KHByaW50
Q29udGV4dC0+cGFnZUNvdW50KCkpKQorICAgIGlmIChwYWdlTnVtYmVyID49IHN0YXRpY19jYXN0
PGdpbnQ+KGNvcmVQcmludENvbnRleHQtPnBhZ2VDb3VudCgpKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgY2Fpcm9fdCogY3IgPSBndGtfcHJpbnRfY29udGV4dF9nZXRfY2Fpcm9fY29udGV4dChj
b250ZXh0KTsKLSAgICBHcmFwaGljc0NvbnRleHQgY3R4KGNyKTsKLSAgICBmbG9hdCB3aWR0aCA9
IGd0a19wcmludF9jb250ZXh0X2dldF93aWR0aChjb250ZXh0KTsKLSAgICBwcmludENvbnRleHQt
PnNwb29sUGFnZShjdHgsIHBhZ2VfbnIsIHdpZHRoKTsKKyAgICBjYWlyb190KiBjciA9IGd0a19w
cmludF9jb250ZXh0X2dldF9jYWlyb19jb250ZXh0KGd0a1ByaW50Q29udGV4dCk7CisgICAgZmxv
YXQgcGFnZVdpZHRoID0gZ3RrX3ByaW50X2NvbnRleHRfZ2V0X3dpZHRoKGd0a1ByaW50Q29udGV4
dCk7CisKKyAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyBwbGF0Zm9ybUNvbnRleHQoY3IpOworICAg
IEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7CisgICAg
Y29yZVByaW50Q29udGV4dC0+c3Bvb2xQYWdlKGdyYXBoaWNzQ29udGV4dCwgcGFnZU51bWJlciwg
cGFnZVdpZHRoKTsKIH0KIAogc3RhdGljIHZvaWQgZW5kX3ByaW50X2NhbGxiYWNrKEd0a1ByaW50
T3BlcmF0aW9uKiBvcCwgR3RrUHJpbnRDb250ZXh0KiBjb250ZXh0LCBncG9pbnRlciB1c2VyX2Rh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggNzk2
NjVhOTE0NTY3YjM3Zjg1YjkxOTU4YjhlMmU1NzcxZjVkM2FjYi4uNDY3ODJjNzA5ZDhhMzM5NmZk
ZmQ5MjA3ZWExZmE2NWY1ZmM1NWJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcApAQCAtNzA5LDggKzcwOSw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRf
d2ViX3ZpZXdfZXhwb3NlX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEV4cG9zZSoK
ICAgICAgICAgZnJhbWUtPnZpZXcoKS0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vy
c2l2ZSgpOwogCiAgICAgICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGdka19jYWly
b19jcmVhdGUoZXZlbnQtPndpbmRvdykpOwotICAgICAgICBHcmFwaGljc0NvbnRleHQgY3R4KGNy
LmdldCgpKTsKLSAgICAgICAgY3R4LnNldEdka0V4cG9zZUV2ZW50KGV2ZW50KTsKKyAgICAgICAg
R3JhcGhpY3NDb250ZXh0IGdjKGNyLmdldCgpKTsKKyAgICAgICAgZ2Muc2V0R2RrRXhwb3NlRXZl
bnQoZXZlbnQpOwogCiAgICAgICAgIGludCByZWN0Q291bnQ7CiAgICAgICAgIEdPd25QdHI8R2Rr
UmVjdGFuZ2xlPiByZWN0czsKQEAgLTcxOSw3ICs3MTksNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X2V4cG9zZV9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRFeHBv
c2UqCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVjdENvdW50OyBpKyspCiAgICAgICAg
ICAgICBwYWludFJlY3RzLmFwcGVuZChJbnRSZWN0KHJlY3RzLmdldCgpW2ldKSk7CiAKLSAgICAg
ICAgcGFpbnRXZWJWaWV3KGZyYW1lLCBwcml2LT50cmFuc3BhcmVudCwgY3R4LCBzdGF0aWNfY2Fz
dDxJbnRSZWN0PihldmVudC0+YXJlYSksIHBhaW50UmVjdHMpOworICAgICAgICBwYWludFdlYlZp
ZXcoZnJhbWUsIHByaXYtPnRyYW5zcGFyZW50LCBnYywgc3RhdGljX2Nhc3Q8SW50UmVjdD4oZXZl
bnQtPmFyZWEpLCBwYWludFJlY3RzKTsKICAgICB9CiAKICAgICByZXR1cm4gRkFMU0U7CkBAIC03
MzYsNyArNzM2LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19kcmF3KEd0a1dp
ZGdldCogd2lkZ2V0LCBjYWlyb190KiBjcikKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Vi
VmlldyktPm1haW5GcmFtZSgpOwogICAgIGlmIChmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkgJiYg
ZnJhbWUtPnZpZXcoKSkgewotICAgICAgICBHcmFwaGljc0NvbnRleHQgY3R4KGNyKTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0IGdjKGNyKTsKICAgICAgICAgSW50UmVjdCByZWN0ID0gY2xpcFJl
Y3Q7CiAgICAgICAgIGNhaXJvX3JlY3RhbmdsZV9saXN0X3QqIHJlY3RMaXN0ID0gY2Fpcm9fY29w
eV9jbGlwX3JlY3RhbmdsZV9saXN0KGNyKTsKIApAQCAtNzQ3LDcgKzc0Nyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCog
Y3IpCiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3RMaXN0LT5udW1fcmVjdGFu
Z2xlczsgaSsrKQogICAgICAgICAgICAgICAgIHJlY3RzLmFwcGVuZChlbmNsb3NpbmdJbnRSZWN0
KEZsb2F0UmVjdChyZWN0TGlzdC0+cmVjdGFuZ2xlc1tpXSkpKTsKICAgICAgICAgfQotICAgICAg
ICBwYWludFdlYlZpZXcoZnJhbWUsIHByaXYtPnRyYW5zcGFyZW50LCBjdHgsIHJlY3QsIHJlY3Rz
KTsKKyAgICAgICAgcGFpbnRXZWJWaWV3KGZyYW1lLCBwcml2LT50cmFuc3BhcmVudCwgZ2MsIHJl
Y3QsIHJlY3RzKTsKIAogICAgICAgICBjYWlyb19yZWN0YW5nbGVfbGlzdF9kZXN0cm95KHJlY3RM
aXN0KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZmNlN2M3ZDllYWNiZWU4ODRkODhjZjgx
OWJlMTI4ZjNhYTYwZDI5OC4uNzkxNWZkNmI3YjMzZGM1ZWUxNjlmMjMyNWFjNDQwMTIxNTE2YTA2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTAzLTA0ICBNYXJ0aW4g
Um9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2Fpcm9dIEJldHRlciBzZXBhcmF0ZSB0aGUgY29u
Y2VybnMgb2YgR3JhcGhpY3NDb250ZXh0Q2Fpcm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MTUwCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6Cisg
ICAgICAgIChoZGNGcm9tQ29udGV4dCk6IE1vZGlmeSB0aGlzIG1ldGhvZCB0byB0YWtlIFBsYXRm
b3JtQ29udGV4dENhaXJvCisgICAgICAgIGluc3RlYWQgb2YgYSBjYWlyb190LgorICAgICAgICAo
V2ViRnJhbWU6OnNwb29sUGFnZSk6IFVwZGF0ZSB0byByZWZsZWN0IG5ldyBwbGF0Zm9ybSBjb250
ZXh0LgorICAgICAgICAoV2ViRnJhbWU6OnNwb29sUGFnZXMpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJGcmFtZS5oOiBEaXR0by4KKwogMjAxMS0wMy0wMyAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5n
QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJGcmFtZS5jcHAKaW5kZXggMTZiOWE4ZmNiZjMyZWYxYzc4ZTI4YTczOWIzMDI2ZTcwMWNi
YzIxMi4uN2U5YjNkODhjZjEwOWNkYzkxNjQ1YjIwMDYxMjhjNzgxZTZkYTQwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkZyYW1lLmNwcApAQCAtMTA5LDYgKzEwOSw3IEBACiAjaWYgUExBVEZPUk0oQ0cpCiAjaW5j
bHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2VsaWYgUExBVEZPUk0oQ0FJUk8p
CisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlIDxjYWlyby13aW4z
Mi5oPgogI2VuZGlmCiAKQEAgLTIxODgsOCArMjE4OSw3IEBAIHN0YXRpYyBmbG9hdCBzY2FsZUZh
Y3RvcihIREMgcHJpbnREQywgY29uc3QgSW50UmVjdCYgbWFyZ2luUmVjdCwgY29uc3QgSW50UmVj
dCYKIAogc3RhdGljIEhEQyBoZGNGcm9tQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCog
cGN0eCkKIHsKLSAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBjYWlyb19nZXRfdGFyZ2V0
KHBjdHgpOwotICAgIHJldHVybiBjYWlyb193aW4zMl9zdXJmYWNlX2dldF9kYyhzdXJmYWNlKTsK
KyAgICByZXR1cm4gY2Fpcm9fd2luMzJfc3VyZmFjZV9nZXRfZGMoY2Fpcm9fZ2V0X3RhcmdldChw
Y3R4LT5jcigpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWU6OmRyYXdIZWFkZXIoUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQqIHBjdHgsIElXZWJVSURlbGVnYXRlKiB1aSwgY29uc3QgSW50UmVjdCYgcGFn
ZVJlY3QsIGZsb2F0IGhlYWRlckhlaWdodCkKQEAgLTIyNDQsMTMgKzIyNDQsMTQgQEAgdm9pZCBX
ZWJGcmFtZTo6c3Bvb2xQYWdlKFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwY3R4LCBHcmFwaGlj
c0NvbnRleHQqIHNwb29sQ3QKICAgICBYRk9STSBvcmlnaW5hbCwgc2NhbGVkOwogICAgIEdldFdv
cmxkVHJhbnNmb3JtKGhkYywgJm9yaWdpbmFsKTsKICAgICAKKyAgICBjYWlyb190KiBjciA9IHBj
dHgtPmNyKCk7CiAgICAgYm9vbCBwcmV2aWV3ID0gKGhkYyAhPSBwcmludERDKTsKICAgICBpZiAo
cHJldmlldykgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcHJldmlldywgdGhlIFdpbmRvd3Mg
SERDIHdhcyBzZXQgdG8gYSBub24tc2NhbGVkIHN0YXRlIHNvIHRoYXQgQ2Fpcm8gd2lsbAogICAg
ICAgICAvLyBkcmF3IGNvcnJlY3RseS4gIFdlIG5lZWQgdG8gcmV0YWluIHRoZSBjb3JyZWN0IHBy
ZXZpZXcgc2NhbGUgaGVyZSBmb3IgdXNlIHdoZW4gdGhlIENhaXJvCiAgICAgICAgIC8vIGRyYXdp
bmcgY29tcGxldGVzIHNvIHRoYXQgd2UgY2FuIHNjYWxlIG91ciBHREktYmFzZWQgaGVhZGVyL2Zv
b3RlciBjYWxscy4gVGhpcyBpcyBhCiAgICAgICAgIC8vIHdvcmthcm91bmQgZm9yIGEgYnVnIGlu
IENhaXJvIChzZWUgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjgxNjEpCi0gICAgICAgIHNjYWxlZCA9IGJ1aWxkWEZPUk1Gcm9tQ2Fpcm8oaGRjLCBwY3R4KTsK
KyAgICAgICAgc2NhbGVkID0gYnVpbGRYRk9STUZyb21DYWlybyhoZGMsIGNyKTsKICAgICB9CiAK
ICAgICBmbG9hdCBzY2FsZSA9IHNjYWxlRmFjdG9yKHByaW50REMsIG1hcmdpblJlY3QsIHBhZ2VS
ZWN0KTsKQEAgLTIyNjAsMTMgKzIyNjEsMTMgQEAgdm9pZCBXZWJGcmFtZTo6c3Bvb2xQYWdlKFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwY3R4LCBHcmFwaGljc0NvbnRleHQqIHNwb29sQ3QKIAog
ICAgIC8vIFdlIGNhbm5vdCBzY2FsZSB0aGUgZGlzcGxheSBIREMgYmVjYXVzZSB0aGUgcHJpbnQg
c3VyZmFjZSBhbHNvIHNjYWxlcyBmb250cywKICAgICAvLyByZXN1bHRpbmcgaW4gaW52YWxpZCBw
cmludGluZyAoYW5kIHByaW50IHByZXZpZXcpCi0gICAgY2Fpcm9fc2NhbGUocGN0eCwgc2NhbGUs
IHNjYWxlKTsKLSAgICBjYWlyb190cmFuc2xhdGUocGN0eCwgY2Fpcm9NYXJnaW5SZWN0LngoKSwg
Y2Fpcm9NYXJnaW5SZWN0LnkoKSArIGhlYWRlckhlaWdodCk7CisgICAgY2Fpcm9fc2NhbGUoY3Is
IHNjYWxlLCBzY2FsZSk7CisgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCBjYWlyb01hcmdpblJlY3Qu
eCgpLCBjYWlyb01hcmdpblJlY3QueSgpICsgaGVhZGVySGVpZ2h0KTsKIAogICAgIC8vIE1vZGlm
eSBDYWlybyAob25seSkgdG8gYWNjb3VudCBmb3IgcGFnZSBwb3NpdGlvbi4KLSAgICBjYWlyb190
cmFuc2xhdGUocGN0eCwgLXBhZ2VSZWN0LngoKSwgLXBhZ2VSZWN0LnkoKSk7CisgICAgY2Fpcm9f
dHJhbnNsYXRlKGNyLCAtcGFnZVJlY3QueCgpLCAtcGFnZVJlY3QueSgpKTsKICAgICBjb3JlRnJh
bWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cyhzcG9vbEN0eCwgcGFnZVJlY3QpOwotICAgIGNhaXJv
X3RyYW5zbGF0ZShwY3R4LCBwYWdlUmVjdC54KCksIHBhZ2VSZWN0LnkoKSk7CisgICAgY2Fpcm9f
dHJhbnNsYXRlKGNyLCBwYWdlUmVjdC54KCksIHBhZ2VSZWN0LnkoKSk7CiAgICAgCiAgICAgaWYg
KHByZXZpZXcpIHsKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHByZXZpZXcsIHRoZSBXaW5kb3dz
IEhEQyB3YXMgc2V0IHRvIGEgbm9uLXNjYWxlZCBzdGF0ZSBzbyB0aGF0IENhaXJvIHdvdWxkCkBA
IC0yMjg3LDggKzIyODgsOCBAQCB2b2lkIFdlYkZyYW1lOjpzcG9vbFBhZ2UoUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQqIHBjdHgsIEdyYXBoaWNzQ29udGV4dCogc3Bvb2xDdAogCiAgICAgU2V0V29y
bGRUcmFuc2Zvcm0oaGRjLCAmb3JpZ2luYWwpOwogCi0gICAgY2Fpcm9fc2hvd19wYWdlKHBjdHgp
OwotICAgIEFTU0VSVCghY2Fpcm9fc3RhdHVzKHBjdHgpKTsKKyAgICBjYWlyb19zaG93X3BhZ2Uo
Y3IpOworICAgIEFTU0VSVCghY2Fpcm9fc3RhdHVzKGNyKSk7CiAgICAgc3Bvb2xDdHgtPnJlc3Rv
cmUoKTsKIH0KIApAQCAtMjM0MCwxNyArMjM0MSwyMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkZyYW1lOjpzcG9vbFBhZ2VzKAogICAgIGVsc2UKICAgICAgICAgcHJpbnRTdXJmYWNl
ID0gY2Fpcm9fd2luMzJfcHJpbnRpbmdfc3VyZmFjZV9jcmVhdGUodGFyZ2V0REMpOyAvLyBtZXRh
ZmlsZQogICAgIAotICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwY3R4ID0gKFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0KiljYWlyb19jcmVhdGUocHJpbnRTdXJmYWNlKTsKLSAgICBpZiAoIXBj
dHgpIHsKKyAgICBjYWlyb190KiBjciA9IGNhaXJvX2NyZWF0ZShwcmludFN1cmZhY2UpOworICAg
IGlmICghY3IpIHsKICAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHByaW50U3VyZmFjZSk7
ICAgIAogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIH0KLSAgICAKKworICAgIFBsYXRmb3Jt
Q29udGV4dENhaXJvIHBsYXRmb3JtQ29udGV4dChjcik7CisgICAgUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQqIHBjdHggPSAmcGxhdGZvcm1Db250ZXh0OworICAgIGNhaXJvX2Rlc3Ryb3koY3IpOwor
CiAgICAgaWYgKGN0eCkgewogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcHJldmlldywgdGhlIFdp
bmRvd3MgSERDIHdhcyBzZW50IHdpdGggc2NhbGluZyBpbmZvcm1hdGlvbi4KICAgICAgICAgLy8g
UmV0cmlldmUgaXQgYW5kIHJlc2V0IGl0IHNvIHRoYXQgaXQgZHJhd3MgcHJvcGVybHkuICBUaGlz
IGlzIGEgd29ya2Fyb3VuZAogICAgICAgICAvLyBmb3IgYSBidWcgaW4gQ2Fpcm8gKHNlZSBodHRw
czovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE2MSkKLSAgICAgICAg
c2V0Q2Fpcm9UcmFuc2Zvcm1Ub1ByZXZpZXdIREMocGN0eCwgdGFyZ2V0REMpOworICAgICAgICBz
ZXRDYWlyb1RyYW5zZm9ybVRvUHJldmlld0hEQyhjciwgdGFyZ2V0REMpOwogICAgIH0KICAgICAK
ICAgICBjYWlyb19zdXJmYWNlX3NldF9mYWxsYmFja19yZXNvbHV0aW9uKHByaW50U3VyZmFjZSwg
NzIuMCwgNzIuMCk7CkBAIC0yMzk0LDcgKzIzOTksNiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkZyYW1lOjpzcG9vbFBhZ2VzKAogICAgICAgICBzcG9vbFBhZ2UocGN0eCwgJnNwb29s
Q3R4LCBwcmludERDLCB1aS5nZXQoKSwgaGVhZGVySGVpZ2h0LCBmb290ZXJIZWlnaHQsIGlpLCBw
YWdlQ291bnQpOwogCiAjaWYgUExBVEZPUk0oQ0FJUk8pCi0gICAgY2Fpcm9fZGVzdHJveShwY3R4
KTsKICAgICBjYWlyb19zdXJmYWNlX2ZpbmlzaChwcmludFN1cmZhY2UpOwogICAgIEFTU0VSVCgh
Y2Fpcm9fc3VyZmFjZV9zdGF0dXMocHJpbnRTdXJmYWNlKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9k
ZXN0cm95KHByaW50U3VyZmFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJG
cmFtZS5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuaAppbmRleCA3MWY5ZTUyMTI1Mjlk
ZTc3NzQ1MzJmYmQ4ZjIyODNhYmQ3N2VkYTQ5Li4yN2Q1ZmEyMWYyODNkOGY2YWM2MDEwY2YzN2Vj
Zjk4ZWY2MTE1YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmgKQEAgLTY0LDcgKzY0LDEwIEBAIHR5cGVk
ZWYgc3RydWN0IE9wYXF1ZUpTVmFsdWUqIEpTT2JqZWN0UmVmOwogI2lmIFBMQVRGT1JNKENHKQog
dHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwogI2VsaWYg
UExBVEZPUk0oQ0FJUk8pCi10eXBlZGVmIHN0cnVjdCBfY2Fpcm8gUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQ7CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQbGF0Zm9ybUNvbnRleHRDYWlybzsK
K30KK3R5cGVkZWYgY2xhc3MgV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8gUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQ7CiAjZW5kaWYKIAogY2xhc3MgV2ViRnJhbWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88107</attachid>
            <date>2011-04-04 13:08:57 -0700</date>
            <delta_ts>2011-04-04 13:13:26 -0700</delta_ts>
            <desc>Patch fixing issues with previous version</desc>
            <filename>bug-55150-20110404130856.patch</filename>
            <type>text/plain</type>
            <size>66836</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNzk1ZTZjOGIzMWM4NDg5
NjRiYzAwYTYyYmJiNjU5MDllNzI3Y2NlLi41NjA1YmYxMGZiM2ZkZDdlNjZjOTMwMTE3N2Y5Zjdh
ZTE4MGY1ZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDQtMDQgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDYWlyb10gQmV0dGVyIHNlcGFyYXRlIHRoZSBj
b25jZXJucyBvZiBHcmFwaGljc0NvbnRleHRDYWlybworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxNTAKKworICAgICAgICBBZGQgYSBQbGF0Zm9ybUNv
bnRleHRDYWlybyB3aGljaCByaWdodCBub3cgc3RvcmVzIHRoZSBjYWlyb190KiBmb3IgYQorICAg
ICAgICBHcmFwaGljc0NvbnRleHRDYWlyby4gTGF0ZXIgcGF0Y2hlcyB3aWxsIG1vdmUgbG9naWMg
Zm9yIHRyYWNraW5nIENvbnRleHRTaGFkb3cKKyAgICAgICAgYW5kIGltYWdlIG1hc2tpbmcgbGF5
ZXJzIGludG8gdGhpcyBQbGF0Zm9ybUNvbnRleHRDYWlybyBjbGFzcy4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIFRoaXMgcGF0Y2ggaXMgb25seSBhIGNvZGUgY2xlYW51cC4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOiBUaGUgcGxhdGZvcm0gY29udGV4dCBpcyBubyBsb25nZXIgYQorICAgICAgICBjYWly
b190LCBidXQgb3VyIG5ldyBjbGFzcyB0aGUgUGxhdGZvcm1Db250ZXh0Q2Fpcm8uCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcDogVXBkYXRl
ZCB0byByZWZsZWN0IG5ldyBjbGFzcy5qCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udENhaXJvLmNwcDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhZGllbnRDYWlyby5jcHA6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDogTW9zdGx5IG1lY2hhbmljYWwKKyAgICAg
ICAgY2hhbmdlcyB3aGljaCBub3cgcmVmZXJlbmNlIHBsYXRmb3JtQ29udGV4dCgpLT5jcigpIHRv
IGdldCB0aGUgY2Fpcm9fdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oOiBOb3cgaG9sZCB0aGUKKyAgICAgICAg
UGxhdGZvcm1Db250ZXh0Q2Fpcm8gaW5zdGVhZCBvZiB0aGUgY2Fpcm9fdC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDogVXBkYXRlIHRvIHJl
ZmxlY3QgbmV3IGNsYXNzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
Q2Fpcm8uY3BwOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRo
Q2Fpcm8uY3BwOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0
Zm9ybUNvbnRleHRDYWlyby5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcDogVXBkYXRlIHRvIHJlZmxlY3QgbmV3IGNsYXNzLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcDogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDog
Tm93IGZpbGwgb3V0CisgICAgICAgIG1fZGF0YSB3aXRoIGEgcHJpdmF0ZSBzZWN0aW9uIGNvbnRh
aW5pbmcgdGhlIHBsYXRmb3JtIGNvbnRleHQgaW5zdGVhZCBvZgorICAgICAgICBqdXN0IGEgY2Fp
cm9fdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOiBVcGRhdGUg
dG8gcmVmbGVjdCBuZXcgY2xhc3MuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRl
cmluZ0NvbnRleHQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldpZGdldFJlbmRlcmlu
Z0NvbnRleHQ6On5XaWRnZXRSZW5kZXJpbmdDb250ZXh0KTogRGl0dG8uCisgICAgICAgICogcGx1
Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHA6IERpdHRvLgorCiAyMDExLTA0LTA0ICBTZXJnaW8g
VmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYThjMzM1ZGJmNzg5NzRk
NTQxYjdmMDIyMGExOTMxNjY4ZDQwOTQ1MS4uYzcyNWNkZTNiMjY4YzhlNmFmMmYwMjk2YzdiZjc5
MzFlM2U5OTc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTM3NjUsNiArMzc2NSw4IEBAIHdl
YmNvcmVndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vT3duUHRyQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGF0aENhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGF0dGVybkNhaXJvLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fpcm8u
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggMzdhNTJlMzBiOTJjZWMyNjYzMjk4OTRiNzhlZjJhMzUwMjVkYjhjNy4uNDU2YWQ4YzM3Y2Fh
NTE1M2MzMTFlZjdiNzBmZmZkNTU2MGNmYjgyMyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI3MTA0LDYgKzI3MTA0LDE0IEBACiAJCQkJCU5h
bWU9IndpbiIKIAkJCQkJPgogCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVxncmFwaGljc1x3aW5cRElCUGl4ZWxEYXRhLmNwcCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxl
PgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3
aW5cRElCUGl4ZWxEYXRhLmgiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXEZvbnRDYWNoZVdpbi5j
cHAiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KQEAgLTI3NzA4LDE0ICsyNzcxNiw2IEBACiAJCQkJ
CQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKLQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncd2luXERJQlBpeGVsRGF0YS5jcHAiCi0JCQkJCQk+Ci0JCQkJCTwvRmls
ZT4KLQkJCQkJPEZpbGUKLQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
d2luXERJQlBpeGVsRGF0YS5oIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCiAJ
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxXS0NBSW1hZ2VRdWV1
ZS5jcHAiCiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTI4NzI0LDYgKzI4
NzI0LDQyIEBACiAJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJCQk8L0ZpbGU+CiAJCQkJ
CTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNhaXJvXFBs
YXRmb3JtQ29udGV4dENhaXJvLmNwcCIKKwkJCQkJCT4KKwkJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQkJCT4KKwkJCQkJCQk8VG9vbAorCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkJCS8+CisJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCQk+CisJCQkJCQkJPFRvb2wKKwkJCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCQkvPgorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIK
KwkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCQk+CisJCQkJCQkJPFRvb2wK
KwkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCQkvPgorCQkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJCU5hbWU9IlBy
b2R1Y3Rpb258V2luMzIiCisJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQkJ
PgorCQkJCQkJCTxUb29sCisJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkJ
Lz4KKwkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUK
IAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2Fpcm9cUmVmUHRyQ2Fp
cm8uY3BwIgogCQkJCQkJPgogCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAppbmRleCAzOTg4MGQ2OTE2ZjUz
OWEyNmY1NjhlMjY1OWUzYzdiOTZjY2UzMjM3Li44YjU0ODFkYTQ4M2VmYzQxNzYxNDk2ZjI5NGE0
MGRjMWRmNTJhNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVu
ZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJU
aGVtZUVmbC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgiCkBAIC0yODMsNyAr
Mjg0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVtZVBhcnQoUmVuZGVyT2JqZWN0
KiBvYmplY3QsIEZvcm1UeXBlIHR5cGUsIGNvbnN0IFAKIAogICAgIGFwcGx5RWRqZVN0YXRlRnJv
bUZvcm0oZW50cnktPm8sIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvYmplY3QpKTsKIAotICAg
IGNhaXJvID0gaW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlybyA9IGlu
Zm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgQVNTRVJUKGNhaXJvKTsK
IAogICAgIC8vIEN1cnJlbnRseSwgb25seSBzbGlkZXJzIG5lZWRzIHRoaXMgbWVzc2FnZTsgaWYg
b3RoZXIgd2lkZ2V0IGV2ZXIgbmVlZHMgc3BlY2lhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA5OTdjMGViMGFiYTg3Nzcy
OTRkNzRiNzlhZTQxN2M2NTE5NzYwNGQwLi45ZTdhNTNjZjAwYzg2OTIwNGEzMTQzODA5YWU0OWY4
YTg3NjlmM2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaApAQCAtNDIsOCArNDIsOSBAQCB0eXBlZGVmIHN0cnVjdCBDR0NvbnRl
eHQgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CiAjZWxpZiBQTEFURk9STShDQUlSTykKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRleHRTaGFkb3c7CitjbGFzcyBQbGF0Zm9ybUNvbnRl
eHRDYWlybzsKIH0KLXR5cGVkZWYgc3RydWN0IF9jYWlybyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dDsKK3R5cGVkZWYgV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8gUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQ7CiAjZWxpZiBQTEFURk9STShPUEVOVkcpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBTdXJmYWNlT3BlblZHOwpAQCAtNDkwLDYgKzQ5MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgICAgIEdyYXBoaWNzQ29udGV4
dChjYWlyb190Kik7CiAgICAgICAgIHZvaWQgcHVzaEltYWdlTWFzayhjYWlyb19zdXJmYWNlX3Qq
LCBjb25zdCBGbG9hdFJlY3QmKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcApp
bmRleCBiMDU4OGQ2NWM1NjI4MDhkZjhjZTdkMjMwZGQxZmI0MzI2OWUwMDdmLi4wZjkwY2U0YzA1
MmQ2MWY1NmU3OWI4N2NkMDg4YWM0NGYwMjBjNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJPd25QdHJDYWlyby5oIgogI2luY2x1ZGUgIlBhdGguaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4K
IApAQCAtODgsNyArODksNyBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5T
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgYWRqdXN0Qmx1
ckRpc3RhbmNlKGNvbnRleHQpOwogCiAgICAgZG91YmxlIHgxLCB4MiwgeTEsIHkyOwotICAgIGNh
aXJvX2NsaXBfZXh0ZW50cyhjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgJngxLCAmeTEsICZ4
MiwgJnkyKTsKKyAgICBjYWlyb19jbGlwX2V4dGVudHMoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPmNyKCksICZ4MSwgJnkxLCAmeDIsICZ5Mik7CiAgICAgSW50UmVjdCBsYXllclJlY3QgPSBj
YWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFyZWEsIEludFJlY3QoeDEs
IHkxLCB4MiAtIHgxLCB5MiAtIHkxKSk7CiAKICAgICAvLyBEb24ndCBwYWludCBpZiB3ZSBhcmUg
dG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbi4KQEAgLTEyMCw3ICsxMjEsNyBAQCB2b2lk
IENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkK
ICAgICAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fbGF5ZXJJbWFnZSk7CiAgICAgfQog
Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBjYWly
b190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3Nh
dmUoY3IpOwogICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIG1fY29sb3IpOwogICAgIGNh
aXJvX21hc2tfc3VyZmFjZShjciwgbV9sYXllckltYWdlLCBtX2xheWVyT3JpZ2luLngoKSwgbV9s
YXllck9yaWdpbi55KCkpOwpAQCAtMTk4LDcgKzE5OSw3IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6
ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBy
ZWN0CiAgICAgaW50IGludGVybmFsU2hhZG93SGVpZ2h0ID0gcmFkaXVzVHdpY2UgKyBtYXgodG9w
TGVmdFJhZGl1cy5oZWlnaHQoKSwgdG9wUmlnaHRSYWRpdXMuaGVpZ2h0KCkpICsKICAgICAgICAg
bWF4KGJvdHRvbUxlZnRSYWRpdXMuaGVpZ2h0KCksIGJvdHRvbVJpZ2h0UmFkaXVzLmhlaWdodCgp
KTsKIAotICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAg
Y2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKIAogICAgIC8v
IGRyYXdTaGFkb3dlZFJlY3Qgc3RpbGwgZG9lcyBub3Qgd29yayB3aXRoIHJvdGF0aW9ucy4KICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUwNDIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3Bw
CmluZGV4IDJkNzk0OTk4MDI0YzA3YTQxM2VmZjA1NGZlNGNhMDg1MjdiM2VmOGUuLjU4YTdmZDJi
MGM4MzFhYzA3ODE1MjAxYmJmMWQzYTQwOWI2NWRkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtMzYsNiArMzYs
NyBAQAogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWly
by5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgogI2lu
Y2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCkBAIC02NCw3ICs2NSw3IEBAIHN0YXRpYyB2b2lkIGRy
YXdHbHlwaHNUb0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEq
IGZvbnQsIEdsCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjYWlyb190KiBjb250ZXh0LCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsIEdseXBoQnVmZmVyR2x5
cGgqIGdseXBocywgaW50IG51bUdseXBocykKK3N0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3co
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBp
bnQgbnVtR2x5cGhzKQogewogICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGdyYXBoaWNzQ29u
dGV4dC0+Y29udGV4dFNoYWRvdygpOwogICAgIEFTU0VSVChzaGFkb3cpOwpAQCAtNzQsNiArNzUs
NyBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBjYWlyb190KiBjb250ZXh0LAogCiAgICAgaWYgKCFzaGFkb3ctPm11c3RVc2VD
b250ZXh0U2hhZG93KGdyYXBoaWNzQ29udGV4dCkpIHsKICAgICAgICAgLy8gT3B0aW1pemUgbm9u
LWJsdXJyeSBzaGFkb3dzLCBieSBqdXN0IGRyYXdpbmcgdGV4dCB3aXRob3V0IHRoZSBDb250ZXh0
U2hhZG93LgorICAgICAgICBjYWlyb190KiBjb250ZXh0ID0gZ3JhcGhpY3NDb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICAgICAgY2Fpcm9fc2F2ZShjb250ZXh0KTsKICAgICAg
ICAgY2Fpcm9fdHJhbnNsYXRlKGNvbnRleHQsIHNoYWRvdy0+bV9vZmZzZXQud2lkdGgoKSwgc2hh
ZG93LT5tX29mZnNldC5oZWlnaHQoKSk7CiAgICAgICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3Io
Y29udGV4dCwgc2hhZG93LT5tX2NvbG9yKTsKQEAgLTEwNiw5ICsxMDgsMTAgQEAgdm9pZCBGb250
OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgU2ltcGxlRm9udERh
dGEqIGZvbnQsIGNvbnMKICAgICAgICAgb2Zmc2V0ICs9IGdseXBoQnVmZmVyLmFkdmFuY2VBdChm
cm9tICsgaSk7CiAgICAgfQogCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKTsKLSAgICBkcmF3R2x5cGhzU2hhZG93KGNvbnRleHQsIGNyLCBwb2ludCwgZm9udCwg
Z2x5cGhzLCBudW1HbHlwaHMpOworICAgIFBsYXRmb3JtQ29udGV4dENhaXJvKiBwbGF0Zm9ybUNv
bnRleHQgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBkcmF3R2x5cGhzU2hhZG93
KGNvbnRleHQsIHBvaW50LCBmb250LCBnbHlwaHMsIG51bUdseXBocyk7CiAKKyAgICBjYWlyb190
KiBjciA9IHBsYXRmb3JtQ29udGV4dC0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBw
cmVwYXJlQ29udGV4dEZvckdseXBoRHJhd2luZyhjciwgZm9udCwgcG9pbnQpOwogICAgIGlmIChj
b250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmlsbCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhZGllbnRDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNw
cAppbmRleCA0ZTZlZDA3ZWEzNTliMWNjYzZjMjJkYjNmM2E5N2ZjYzkwODU4NmFkLi4yMjUwNDZh
YTNhYTEzOWZlNDI5ZjdkOWY0OWVkNTc2NjZkYWEyYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFkaWVudENhaXJvLmNwcApAQCAt
MjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRl
IDxjYWlyby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Nyw3ICs4OCw3IEBAIHZvaWQg
R3JhZGllbnQ6OnNldFBsYXRmb3JtR3JhZGllbnRTcGFjZVRyYW5zZm9ybShjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGdyYWRpZW50CiAKIHZvaWQgR3JhZGllbnQ6OmZpbGwoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgY2Fpcm9fdCogY3IgPSBj
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5jcigpOwogCiAgICAgY29udGV4dC0+c2F2ZSgpOwogICAgIGNhaXJv
X3NldF9zb3VyY2UoY3IsIHBsYXRmb3JtR3JhZGllbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAKaW5kZXggZTY5YTdhNWI2NDAwY2U4NDY0MDNkY2I3N2U2M2FhZDUyNGY2MzJhZS4u
OTAwMDgyMmYyMzdkZDY1ODE3NDE3ZTFkNTZmNWI0N2I4NTY3Yjg4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjaW5j
bHVkZSAiU2ltcGxlRm9udERhdGEuaCIKICNpbmNsdWRlIDxjYWlyby5oPgpAQCAtMTQ4LDcgKzE0
OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUgZHJhCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IENhbGN1bGF0ZSB0aGUgZXh0ZW50cyBvZiB0aGUgcmVuZGVyZWQgc29saWQgcGF0aHMuCi0gICAg
Y2Fpcm9fdCogY2Fpcm9Db250ZXh0ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAg
Y2Fpcm9fdCogY2Fpcm9Db250ZXh0ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7
CiAgICAgT3duUHRyPGNhaXJvX3BhdGhfdD4gcGF0aChjYWlyb19jb3B5X3BhdGgoY2Fpcm9Db250
ZXh0KSk7CiAKICAgICBGbG9hdFJlY3Qgc29saWRGaWd1cmVFeHRlbnRzOwpAQCAtMTk5LDEyICsy
MDAsMTkgQEAgc3RhdGljIHZvaWQgc3Ryb2tlQ3VycmVudENhaXJvUGF0aChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsICBjYWlyb190KiBjYWlyb0NvbnQKICAgICBjYWlyb19uZXdfcGF0aChjYWly
b0NvbnRleHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0KiBjcikKK0dyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0
KGNhaXJvX3QqIGNyKQorICAgIDogbV91cGRhdGluZ0NvbnRyb2xUaW50cyhmYWxzZSkKIHsKLSAg
ICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwotICAgIG1fZGF0
YS0+Y3IgPSBjYWlyb19yZWZlcmVuY2UoY3IpOwotICAgIG1fZGF0YS0+c3luY0NvbnRleHQoY3Ip
OwotICAgIHNldFBhaW50aW5nRGlzYWJsZWQoIWNyKTsKKyAgICBtX2RhdGEgPSBuZXcgR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlVG9wbGV2ZWwobmV3IFBsYXRmb3JtQ29udGV4dENhaXJv
KGNyKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dCkKK3sKKyAgICBtX2RhdGEgPSBuZXcgR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKHBsYXRmb3JtQ29udGV4dCk7CisgICAgaWYgKHBsYXRm
b3JtQ29udGV4dCkKKyAgICAgICAgbV9kYXRhLT5zeW5jQ29udGV4dChwbGF0Zm9ybUNvbnRleHQt
PmNyKCkpOworICAgIGVsc2UKKyAgICAgICAgc2V0UGFpbnRpbmdEaXNhYmxlZCh0cnVlKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRGVzdHJveSgpCkBAIC0yMTQsMjAgKzIy
MiwyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EZXN0cm95KCkKIAogQWZmaW5l
VHJhbnNmb3JtIEdyYXBoaWNzQ29udGV4dDo6Z2V0Q1RNKCkgY29uc3QKIHsKLSAgICBjYWlyb190
KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250
ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fbWF0cml4X3QgbTsKICAgICBjYWlyb19nZXRfbWF0cml4
KGNyLCAmbSk7CiAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybShtLnh4LCBtLnl4LCBtLnh5LCBt
Lnl5LCBtLngwLCBtLnkwKTsKIH0KIAotY2Fpcm9fdCogR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9y
bUNvbnRleHQoKSBjb25zdAorUGxhdGZvcm1Db250ZXh0Q2Fpcm8qIEdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1Db250ZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhLT5jcjsKKyAgICBy
ZXR1cm4gbV9kYXRhLT5wbGF0Zm9ybUNvbnRleHQ7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzYXZlUGxhdGZvcm1TdGF0ZSgpCiB7Ci0gICAgY2Fpcm9fc2F2ZShtX2RhdGEtPmNyKTsKKyAg
ICBjYWlyb19zYXZlKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpKTsKICAgICBtX2RhdGEtPnNhdmUo
KTsKICAgICBtX2RhdGEtPnNoYWRvd1N0YWNrLmFwcGVuZChtX2RhdGEtPnNoYWRvdyk7CiAgICAg
bV9kYXRhLT5tYXNrSW1hZ2VTdGFjay5hcHBlbmQoSW1hZ2VNYXNrSW5mb3JtYXRpb24oKSk7CkBA
IC0yMzUsNyArMjQzLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNhdmVQbGF0Zm9ybVN0YXRl
KCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKIHsKLSAg
ICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKTsKKwogICAgIGNvbnN0IEltYWdlTWFza0luZm9ybWF0aW9uJiBtYXNrSW5m
b3JtYXRpb24gPSBtX2RhdGEtPm1hc2tJbWFnZVN0YWNrLmxhc3QoKTsKICAgICBpZiAobWFza0lu
Zm9ybWF0aW9uLmlzVmFsaWQoKSkgewogICAgICAgICBjb25zdCBGbG9hdFJlY3QmIG1hc2tSZWN0
ID0gbWFza0luZm9ybWF0aW9uLm1hc2tSZWN0KCk7CkBAIC0yNTEsNyArMjYwLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICAgICAgbV9kYXRhLT5z
aGFkb3dTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgfQogCi0gICAgY2Fpcm9fcmVzdG9yZShtX2Rh
dGEtPmNyKTsKKyAgICBjYWlyb19yZXN0b3JlKGNyKTsKICAgICBtX2RhdGEtPnJlc3RvcmUoKTsK
IH0KIApAQCAtMjYxLDcgKzI3MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChj
b25zdCBJbnRSZWN0JiByZWN0KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBj
ciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogCiAgICAg
aWYgKGZpbGxDb2xvcigpLmFscGhhKCkpCkBAIC0yODksNyArMjk4LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBwb2ludDEsIGNvbnN0IEludFBvaW50
JiBwb2ludDIpCiAgICAgaWYgKHN0eWxlID09IE5vU3Ryb2tlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9y
bUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAogICAgIGZsb2F0IHdpZHRo
ID0gc3Ryb2tlVGhpY2tuZXNzKCk7CkBAIC0zNzYsNyArMzg1LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdFbGxpcHNlKGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEt
PmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fp
cm9fc2F2ZShjcik7CiAgICAgZmxvYXQgeVJhZGl1cyA9IC41ICogcmVjdC5oZWlnaHQoKTsKICAg
ICBmbG9hdCB4UmFkaXVzID0gLjUgKiByZWN0LndpZHRoKCk7CkBAIC00MTUsNyArNDI0LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQg
c3RhcnRBbmdsZSwgaW50IGFuZ2xlU3AKICAgICBmbG9hdCBmYSA9IHN0YXJ0QW5nbGU7CiAgICAg
ZmxvYXQgZmFsZW4gPSAgZmEgKyBhbmdsZVNwYW47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0
YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBj
YWlyb19zYXZlKGNyKTsKIAogICAgIGlmICh3ICE9IGgpCkBAIC00OTIsNyArNTAxLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKHNpemVfdCBucG9pbnRzLCBjb25z
dCBGbG9hdFBvaW50KiBwb2ludHMKICAgICBpZiAobnBvaW50cyA8PSAxKQogICAgICAgICByZXR1
cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBw
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKIAogICAgIGNhaXJvX3NhdmUoY3IpOwogICAgIGNhaXJv
X3NldF9hbnRpYWxpYXMoY3IsIHNob3VsZEFudGlhbGlhcyA/IENBSVJPX0FOVElBTElBU19ERUZB
VUxUIDogQ0FJUk9fQU5USUFMSUFTX05PTkUpOwpAQCAtNTIyLDcgKzUzMSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBG
bG9hdFBvaW50KiBwb2luCiAgICAgaWYgKG51bVBvaW50cyA8PSAxKQogICAgICAgICByZXR1cm47
CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKIAogICAgIGNhaXJvX25ld19wYXRoKGNyKTsKICAgICBjYWly
b19maWxsX3J1bGVfdCBzYXZlZEZpbGxSdWxlID0gY2Fpcm9fZ2V0X2ZpbGxfcnVsZShjcik7CkBA
IC01NDIsNyArNTUxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBh
dGgmIHBhdGgpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZv
cm1Db250ZXh0KCktPmNyKCk7CiAgICAgc2V0UGF0aE9uQ2Fpcm9Db250ZXh0KGNyLCBwYXRoLnBs
YXRmb3JtUGF0aCgpLT5jb250ZXh0KCkpOwogICAgIGZpbGxDdXJyZW50Q2Fpcm9QYXRoKHRoaXMs
IGNyKTsKIH0KQEAgLTU1Miw3ICs1NjEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tl
UGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKKyAgICBjYWlyb190
KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIHNldFBhdGhPbkNhaXJvQ29udGV4
dChjciwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgpKTsKICAgICBzdHJva2VDdXJyZW50
Q2Fpcm9QYXRoKHRoaXMsIGNyKTsKIH0KQEAgLTU2Miw3ICs1NzEsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRh
LT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNh
aXJvX3NhdmUoY3IpOwogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgcmVjdC54KCksIHJlY3QueSgp
LCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgIGZpbGxDdXJyZW50Q2Fpcm9QYXRo
KHRoaXMsIGNyKTsKQEAgLTU3OCw3ICs1ODcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yUwog
ICAgICAgICBtX2RhdGEtPnNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBlbmNsb3NpbmdJbnRS
ZWN0KHJlY3QpKTsKIAogICAgIGlmIChjb2xvci5hbHBoYSgpKQotICAgICAgICBmaWxsUmVjdFNv
dXJjZU92ZXIobV9kYXRhLT5jciwgcmVjdCwgY29sb3IpOworICAgICAgICBmaWxsUmVjdFNvdXJj
ZU92ZXIocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QsIGNvbG9yKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmNsaXAoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtNTg2LDcgKzU5
NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWly
b190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKTsKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19maWxsX3J1bGVfdCBzYXZlZEZp
bGxSdWxlID0gY2Fpcm9fZ2V0X2ZpbGxfcnVsZShjcik7CiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVs
ZShjciwgQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcpOwpAQCAtNjAwLDcgKzYwOSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0aChjb25zdCBQYXRoJiBwYXRoLCBXaW5kUnVsZSBjbGlw
UnVsZSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKTsKICAgICBzZXRQYXRoT25DYWlyb0NvbnRleHQoY3IsIHBhdGgucGxhdGZv
cm1QYXRoKCktPmNvbnRleHQoKSk7CiAgICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgY2xpcFJ1
bGUgPT0gUlVMRV9FVkVOT0REID8gQ0FJUk9fRklMTF9SVUxFX0VWRU5fT0REIDogQ0FJUk9fRklM
TF9SVUxFX1dJTkRJTkcpOwogICAgIGNhaXJvX2NsaXAoY3IpOwpAQCAtNjM4LDcgKzY0Nyw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmIHBhdGgsIGlu
dCB3aWR0aCwgaW50IC8qIG9mZnNldCAqCiAgICAgYWRqdXN0Rm9jdXNSaW5nQ29sb3IocmluZ0Nv
bG9yKTsKICAgICBhZGp1c3RGb2N1c1JpbmdMaW5lV2lkdGgod2lkdGgpOwogCi0gICAgY2Fpcm9f
dCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCkt
PmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgYXBwZW5kV2ViQ29yZVBhdGhUb0NhaXJv
Q29udGV4dChjciwgcGF0aCk7CiAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwgcmluZ0Nv
bG9yKTsKQEAgLTY1NSw3ICs2NjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3Vz
UmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgd2lkdGgsIGludAogCiAgICAg
dW5zaWduZWQgcmVjdENvdW50ID0gcmVjdHMuc2l6ZSgpOwogCi0gICAgY2Fpcm9fdCogY3IgPSBt
X2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAg
ICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgY2Fpcm9fcHVzaF9ncm91cChjcik7CiAgICAgY2Fpcm9f
bmV3X3BhdGgoY3IpOwpAQCAtNzMyLDcgKzc0MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3TGluZUZvclRleHRDaGVja2luZyhjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0IHdp
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fp
cm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0
KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAKICAgICBzd2l0Y2ggKHN0eWxlKSB7CkBA
IC03NjIsNyArNzcxLDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0Rldmlj
ZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIGZyZWN0KQogICAgIEZsb2F0UmVjdCByZXN1bHQ7CiAg
ICAgZG91YmxlIHggPSBmcmVjdC54KCk7CiAgICAgZG91YmxlIHkgPSBmcmVjdC55KCk7Ci0gICAg
Y2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250
ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fdXNlcl90b19kZXZpY2UoY3IsICZ4LCAmeSk7CiAgICAg
eCA9IHJvdW5kKHgpOwogICAgIHkgPSByb3VuZCh5KTsKQEAgLTc5OSw3ICs4MDgsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fdCogY3IgPSBt
X2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAg
ICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCB4LCB5KTsKICAgICBtX2RhdGEtPnRyYW5zbGF0ZSh4LCB5
KTsKIH0KQEAgLTgyMSw3ICs4MzAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZv
cm1TdHJva2VUaGlja25lc3MoZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKQogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3NldF9saW5lX3dpZHRo
KG1fZGF0YS0+Y3IsIHN0cm9rZVRoaWNrbmVzcyk7CisgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgo
cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHN0cm9rZVRoaWNrbmVzcyk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0cm9rZVN0
eWxlKQpAQCAtODM1LDE2ICs4NDQsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpCiAgICAgc3dpdGNoIChzdHJv
a2VTdHlsZSkgewogICAgIGNhc2UgTm9TdHJva2U6CiAgICAgICAgIC8vIEZJWE1FOiBpcyBpdCB0
aGUgcmlnaHQgd2F5IHRvIGVtdWxhdGUgTm9TdHJva2U/Ci0gICAgICAgIGNhaXJvX3NldF9saW5l
X3dpZHRoKG1fZGF0YS0+Y3IsIDApOworICAgICAgICBjYWlyb19zZXRfbGluZV93aWR0aChwbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKSwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU29saWRT
dHJva2U6Ci0gICAgICAgIGNhaXJvX3NldF9kYXNoKG1fZGF0YS0+Y3IsIDAsIDAsIDApOworICAg
ICAgICBjYWlyb19zZXRfZGFzaChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgMCwgMCwgMCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG90dGVkU3Ryb2tlOgotICAgICAgICBjYWlyb19zZXRf
ZGFzaChtX2RhdGEtPmNyLCBkb3RQYXR0ZXJuLCAyLCAwKTsKKyAgICAgICAgY2Fpcm9fc2V0X2Rh
c2gocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGRvdFBhdHRlcm4sIDIsIDApOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIERhc2hlZFN0cm9rZToKLSAgICAgICAgY2Fpcm9fc2V0X2Rhc2gobV9k
YXRhLT5jciwgZGFzaFBhdHRlcm4sIDIsIDApOworICAgICAgICBjYWlyb19zZXRfZGFzaChwbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKSwgZGFzaFBhdHRlcm4sIDIsIDApOwogICAgICAgICBicmVhazsK
ICAgICB9CiB9CkBAIC04NTksNyArODY4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNvbmNh
dENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+
Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjb25z
dCBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSBjYWlyb19tYXRyaXhfdCh0cmFuc2Zvcm0pOwogICAg
IGNhaXJvX3RyYW5zZm9ybShjciwgJm1hdHJpeCk7CiAgICAgbV9kYXRhLT5jb25jYXRDVE0odHJh
bnNmb3JtKTsKQEAgLTg3MCw3ICs4NzksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q1RN
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsK
KyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNvbnN0IGNh
aXJvX21hdHJpeF90IG1hdHJpeCA9IGNhaXJvX21hdHJpeF90KHRyYW5zZm9ybSk7CiAgICAgY2Fp
cm9fc2V0X21hdHJpeChjciwgJm1hdHJpeCk7CiAgICAgbV9kYXRhLT5zZXRDVE0odHJhbnNmb3Jt
KTsKQEAgLTg4MSw3ICs4OTAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkSW5uZXJSb3Vu
ZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHRoaWNrbmVzcwogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0g
bV9kYXRhLT5jcjsKKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwog
ICAgIGNsaXAocmVjdCk7CiAKICAgICBQYXRoIHA7CkBAIC05MjgsNyArOTM3LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190
KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+
Y3IoKTsKICAgICBjYWlyb19wdXNoX2dyb3VwKGNyKTsKICAgICBtX2RhdGEtPmxheWVycy5hcHBl
bmQob3BhY2l0eSk7CiAgICAgbV9kYXRhLT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKCk7CkBAIC05
MzksNyArOTQ4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVy
KCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBj
YWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRl
eHQoKS0+Y3IoKTsKIAogICAgIGNhaXJvX3BvcF9ncm91cF90b19zb3VyY2UoY3IpOwogICAgIGNh
aXJvX3BhaW50X3dpdGhfYWxwaGEoY3IsIG1fZGF0YS0+bGF5ZXJzLmxhc3QoKSk7CkBAIC05NTIs
NyArOTYxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZv
cm1Db250ZXh0KCktPmNyKCk7CiAKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBjYWlyb19yZWN0
YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgp
KTsKQEAgLTk2Niw3ICs5NzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IHdpZHRoKQogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsK
KyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3Nh
dmUoY3IpOwogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0
LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNyLCB3
aWR0aCk7CkBAIC05OTEsMTIgKzEwMDAsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExp
bmVDYXAoTGluZUNhcCBsaW5lQ2FwKQogICAgICAgICBjYWlyb0NhcCA9IENBSVJPX0xJTkVfQ0FQ
X1NRVUFSRTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhaXJvX3NldF9saW5lX2NhcCht
X2RhdGEtPmNyLCBjYWlyb0NhcCk7CisgICAgY2Fpcm9fc2V0X2xpbmVfY2FwKHBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpLCBjYWlyb0NhcCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRM
aW5lRGFzaChjb25zdCBEYXNoQXJyYXkmIGRhc2hlcywgZmxvYXQgZGFzaE9mZnNldCkKIHsKLSAg
ICBjYWlyb19zZXRfZGFzaChtX2RhdGEtPmNyLCBkYXNoZXMuZGF0YSgpLCBkYXNoZXMuc2l6ZSgp
LCBkYXNoT2Zmc2V0KTsKKyAgICBjYWlyb19zZXRfZGFzaChwbGF0Zm9ybUNvbnRleHQoKS0+Y3Io
KSwgZGFzaGVzLmRhdGEoKSwgZGFzaGVzLnNpemUoKSwgZGFzaE9mZnNldCk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lSm9pbihMaW5lSm9pbiBsaW5lSm9pbikKQEAgLTEwMTYs
NyArMTAyNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lSm9pbihMaW5lSm9pbiBs
aW5lSm9pbikKICAgICAgICAgY2Fpcm9Kb2luID0gQ0FJUk9fTElORV9KT0lOX0JFVkVMOwogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgY2Fpcm9fc2V0X2xpbmVfam9pbihtX2RhdGEtPmNyLCBj
YWlyb0pvaW4pOworICAgIGNhaXJvX3NldF9saW5lX2pvaW4ocGxhdGZvcm1Db250ZXh0KCktPmNy
KCksIGNhaXJvSm9pbik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRNaXRlckxpbWl0
KGZsb2F0IG1pdGVyKQpAQCAtMTAyNCw3ICsxMDMzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldE1pdGVyTGltaXQoZmxvYXQgbWl0ZXIpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fc2V0X21pdGVyX2xpbWl0KG1fZGF0YS0+Y3Is
IG1pdGVyKTsKKyAgICBjYWlyb19zZXRfbWl0ZXJfbGltaXQocGxhdGZvcm1Db250ZXh0KCktPmNy
KCksIG1pdGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKGZsb2F0IGFs
cGhhKQpAQCAtMTA0Miw3ICsxMDUxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3NldF9vcGVyYXRv
cihtX2RhdGEtPmNyLCB0b0NhaXJvT3BlcmF0b3Iob3ApKTsKKyAgICBjYWlyb19zZXRfb3BlcmF0
b3IocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHRvQ2Fpcm9PcGVyYXRvcihvcCkpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBQYXRoJiBwYXRoKQpAQCAtMTA1MCw3ICsx
MDU5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29uc3QgUGF0aCYgcGF0aCkKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190
KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+
Y3IoKTsKICAgICBPd25QdHI8Y2Fpcm9fcGF0aF90PiBwKGNhaXJvX2NvcHlfcGF0aChwYXRoLnBs
YXRmb3JtUGF0aCgpLT5jb250ZXh0KCkpKTsKICAgICBjYWlyb19hcHBlbmRfcGF0aChjciwgcC5n
ZXQoKSk7CiAgICAgY2Fpcm9fZmlsbF9ydWxlX3Qgc2F2ZWRGaWxsUnVsZSA9IGNhaXJvX2dldF9m
aWxsX3J1bGUoY3IpOwpAQCAtMTA3MCw3ICsxMDc5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmNsaXBPdXQoY29uc3QgUGF0aCYgcGF0aCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IG1fZGF0YS0+Y3I7CisgICAgY2Fp
cm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBkb3VibGUgeDEsIHkxLCB4
MiwgeTI7CiAgICAgY2Fpcm9fY2xpcF9leHRlbnRzKGNyLCAmeDEsICZ5MSwgJngyLCAmeTIpOwog
ICAgIGNhaXJvX3JlY3RhbmdsZShjciwgeDEsIHkxLCB4MiAtIHgxLCB5MiAtIHkxKTsKQEAgLTEw
ODcsNyArMTA5Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpyb3RhdGUoZmxvYXQgcmFkaWFu
cykKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBj
YWlyb19yb3RhdGUobV9kYXRhLT5jciwgcmFkaWFucyk7CisgICAgY2Fpcm9fcm90YXRlKHBsYXRm
b3JtQ29udGV4dCgpLT5jcigpLCByYWRpYW5zKTsKICAgICBtX2RhdGEtPnJvdGF0ZShyYWRpYW5z
KTsKIH0KIApAQCAtMTA5Niw3ICsxMTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNjYWxl
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBjYWlyb19zY2FsZShtX2RhdGEtPmNyLCBzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCkpOworICAgIGNhaXJvX3NjYWxlKHBsYXRmb3JtQ29udGV4dCgpLT5jcigp
LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgIG1fZGF0YS0+c2NhbGUoc2l6ZSk7
CiB9CiAKQEAgLTExMDUsNyArMTExNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0
KGNvbnN0IEludFJlY3QmIHIpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOworICAgIGNhaXJvX3QqIGNy
ID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgZG91YmxlIHgxLCB5MSwgeDIsIHkyOwog
ICAgIGNhaXJvX2NsaXBfZXh0ZW50cyhjciwgJngxLCAmeTEsICZ4MiwgJnkyKTsKICAgICBjYWly
b19yZWN0YW5nbGUoY3IsIHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSk7CkBAIC0xMTMyLDcgKzEx
NDEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJl
Y3QmIHIsIGNvbnN0IEludFNpemUmIHRvcExlZnQsCiAgICAgaWYgKGhhc1NoYWRvdygpKQogICAg
ICAgICBtX2RhdGEtPnNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCByLCB0b3BMZWZ0LCB0b3BS
aWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwogCi0gICAgY2Fpcm9fdCogY3IgPSBtX2Rh
dGEtPmNyOworICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAg
Y2Fpcm9fc2F2ZShjcik7CiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUm91bmRlZFJlY3Qo
ciwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKQEAgLTExNzAs
NyArMTE3OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlh
bGlhcyhib29sIGVuYWJsZSkKICAgICAvLyBXaGVuIHRydWUsIHVzZSB0aGUgZGVmYXVsdCBDYWly
byBiYWNrZW5kIGFudGlhbGlhcyBtb2RlICh1c3VhbGx5IHRoaXMKICAgICAvLyBlbmFibGVzIHN0
YW5kYXJkICdncmF5c2NhbGUnIGFudGlhbGlhc2luZyk7IGZhbHNlIHRvIGV4cGxpY2l0bHkgZGlz
YWJsZQogICAgIC8vIGFudGlhbGlhc2luZy4gVGhpcyBpcyB0aGUgc2FtZSBzdHJhdGVneSBhcyB1
c2VkIGluIGRyYXdDb252ZXhQb2x5Z29uKCkuCi0gICAgY2Fpcm9fc2V0X2FudGlhbGlhcyhtX2Rh
dGEtPmNyLCBlbmFibGUgPyBDQUlST19BTlRJQUxJQVNfREVGQVVMVCA6IENBSVJPX0FOVElBTElB
U19OT05FKTsKKyAgICBjYWlyb19zZXRfYW50aWFsaWFzKHBsYXRmb3JtQ29udGV4dCgpLT5jcigp
LCBlbmFibGUgPyBDQUlST19BTlRJQUxJQVNfREVGQVVMVCA6IENBSVJPX0FOVElBTElBU19OT05F
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpCkBAIC0xMTk2LDcgKzEyMDUsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6cHVzaEltYWdlTWFzayhjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0
IEZsb2F0UmVjdCYgcgogICAgIC8vIFdlIHdhbnQgdG8gYWxsb3cgdGhlIGNsaXBwZWQgZWxlbWVu
dHMgdG8gY29tcG9zaXRlIHdpdGggdGhlIHN1cmZhY2UgYXMgaXQKICAgICAvLyBpcyBub3csIGJ1
dCB0aGV5IGFyZSBpc29sYXRlZCBpbiBhbm90aGVyIGdyb3VwLiBUbyBtYWtlIHRoaXMgd29yaywg
d2UncmUKICAgICAvLyBnb2luZyB0byBibGl0IHRoZSBjdXJyZW50IHN1cmZhY2UgY29udGVudHMg
b250byB0aGUgbmV3IGdyb3VwIG9uY2Ugd2UgcHVzaCBpdC4KLSAgICBjYWlyb190KiBjciA9IG1f
ZGF0YS0+Y3I7CisgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAg
ICBjYWlyb19zdXJmYWNlX3QqIGN1cnJlbnRUYXJnZXQgPSBjYWlyb19nZXRfdGFyZ2V0KGNyKTsK
ICAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKGN1cnJlbnRUYXJnZXQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGVDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaAppbmRleCA5MjRmNjlhOTUw
Yzc4YmE3OTc5N2QxMTZiMDhhNjVhYzE3MGY3OGUzLi45Y2VlYmNkZmY4YTg2ZTE1ZWE2YWJiYTVm
ZDgxMjE4N2VjMDdiYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZUNhaXJvLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKIAogI2luY2x1ZGUgIkNvbnRleHRTaGFkb3cuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSA8Y2Fp
cm8uaD4KICNpbmNsdWRlIDxtYXRoLmg+CkBAIC02Nyw4ICs2OCw4IEBAIHByaXZhdGU6CiAKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSB7CiBwdWJsaWM6Ci0gICAgR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKCkKLSAgICAgICAgOiBjcigwKQorICAgIEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZShQbGF0Zm9ybUNvbnRleHRDYWlybyogbmV3UGxhdGZvcm1D
b250ZXh0KQorICAgICAgICA6IHBsYXRmb3JtQ29udGV4dChuZXdQbGF0Zm9ybUNvbnRleHQpCiAj
aWYgUExBVEZPUk0oR1RLKQogICAgICAgICAsIGV4cG9zZSgwKQogI2VsaWYgUExBVEZPUk0oV0lO
KQpAQCAtODAsOSArODEsOCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIH5HcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoKQorICAgIHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZSgpCiAgICAgewotICAgICAgICBjYWlyb19kZXN0cm95KGNyKTsKICAgICB9
CiAKICNpZiBQTEFURk9STShXSU4pCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICB2b2lkIGJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXIoKSB7IG1fdHJhbnNwYXJlbmN5Q291bnQrKzsgfQogICAgIHZvaWQgZW5kVHJhbnNw
YXJlbmN5TGF5ZXIoKSB7IG1fdHJhbnNwYXJlbmN5Q291bnQtLTsgfQotICAgIHZvaWQgc3luY0Nv
bnRleHQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGNyKTsKKyAgICB2b2lkIHN5bmNDb250ZXh0
KGNhaXJvX3QqIGNyKTsKICNlbHNlCiAgICAgLy8gT24gZXZlcnl0aGluZyBlbHNlLCB3ZSBkbyBu
b3RoaW5nLgogICAgIHZvaWQgc2F2ZSgpIHt9CkBAIC0xMTQsMTIgKzExNCwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikge30KICAgICB2b2lkIGJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIoKSB7fQogICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIo
KSB7fQotICAgIHZvaWQgc3luY0NvbnRleHQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGNyKSB7
fQorICAgIHZvaWQgc3luY0NvbnRleHQoY2Fpcm9fdCogY3IpIHt9CiAjZW5kaWYKIAotICAgIGNh
aXJvX3QqIGNyOworICAgIFBsYXRmb3JtQ29udGV4dENhaXJvKiBwbGF0Zm9ybUNvbnRleHQ7CiAg
ICAgVmVjdG9yPGZsb2F0PiBsYXllcnM7Ci0KICAgICBDb250ZXh0U2hhZG93IHNoYWRvdzsKICAg
ICBWZWN0b3I8Q29udGV4dFNoYWRvdz4gc2hhZG93U3RhY2s7CiAgICAgVmVjdG9yPEltYWdlTWFz
a0luZm9ybWF0aW9uPiBtYXNrSW1hZ2VTdGFjazsKQEAgLTEzMyw2ICsxMzIsMjMgQEAgcHVibGlj
OgogI2VuZGlmCiB9OwogCisvLyBUaGlzIGlzIGEgc3BlY2lhbGl6ZWQgcHJpdmF0ZSBzZWN0aW9u
IGZvciB0aGUgQ2Fpcm8gR3JhcGhpY3NDb250ZXh0LCB3aGljaCBrbm93cyBob3cKKy8vIHRvIGNs
ZWFuIHVwIHRoZSBoZWFwIGFsbG9jYXRlZCBQbGF0Zm9ybUNvbnRleHRDYWlybyB0aGF0IHdlIG11
c3QgdXNlIGZvciB0aGUgdG9wLWxldmVsCisvLyBHcmFwaGljc0NvbnRleHQuCitjbGFzcyBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVUb3BsZXZlbCA6IHB1YmxpYyBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUgeworcHVibGljOgorICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZVRvcGxldmVsKFBsYXRmb3JtQ29udGV4dENhaXJvKiBwbGF0Zm9ybUNvbnRleHQpCisg
ICAgICAgIDogR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKHBsYXRmb3JtQ29udGV4dCkK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlVG9wbGV2ZWwoKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHBsYXRmb3JtQ29udGV4dDsKKyAg
ICB9Cit9OworCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXgg
OWVlOGE5NDBhYzcwY2Q0YmJjMzk5NDdmN2I2NTgzZmI1NjNjMThjMy4uMWQ1ZDQ5MjE4NWE4NDM2
MDEwMDk1NjVjNjc4NmM1ZWY3NWVmN2IzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTM3
LDcgKzM3LDkgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1D
b250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJl
ZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTY2LDYgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbWFnZUJ1ZmZlckRh
dGE6OkltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIDogbV9zdXJmYWNl
KDApCisgICAgLCBtX3BsYXRmb3JtQ29udGV4dCgwKQogewogfQogCkBAIC04MCw5ICs4Myw5IEBA
IEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBDb2xvclNwYWNl
LCBSZW5kZXJpbmdNb2RlLCBib29sJiBzCiAgICAgaWYgKGNhaXJvX3N1cmZhY2Vfc3RhdHVzKG1f
ZGF0YS5tX3N1cmZhY2UpICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKQogICAgICAgICByZXR1cm47
ICAvLyBjcmVhdGUgd2lsbCBub3RpY2Ugd2UgZGlkbid0IHNldCBtX2luaXRpYWxpemVkIGFuZCBm
YWlsLgogCi0gICAgY2Fpcm9fdCogY3IgPSBjYWlyb19jcmVhdGUobV9kYXRhLm1fc3VyZmFjZSk7
Ci0gICAgbV9jb250ZXh0LnNldChuZXcgR3JhcGhpY3NDb250ZXh0KGNyKSk7Ci0gICAgY2Fpcm9f
ZGVzdHJveShjcik7ICAvLyBUaGUgY29udGV4dCBpcyBub3cgb3duZWQgYnkgdGhlIEdyYXBoaWNz
Q29udGV4dC4KKyAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUo
bV9kYXRhLm1fc3VyZmFjZSkpOworICAgIG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5zZXRDcihj
ci5nZXQoKSk7CisgICAgbV9jb250ZXh0LnNldChuZXcgR3JhcGhpY3NDb250ZXh0KCZtX2RhdGEu
bV9wbGF0Zm9ybUNvbnRleHQpKTsKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KIApAQCAtMzAxLDcg
KzMwNCw3IEBAIHN0YXRpYyBjYWlyb19zdGF0dXNfdCB3cml0ZUZ1bmN0aW9uKHZvaWQqIGNsb3N1
cmUsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuCiAKIFN0cmluZyBJbWFnZUJ1ZmZlcjo6
dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSopIGNvbnN0CiB7
Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSA9IGNhaXJvX2dldF90YXJnZXQoY29udGV4dCgp
LT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSA9IGNhaXJv
X2dldF90YXJnZXQoY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7CiAgICAgaWYg
KCFpbWFnZSkKICAgICAgICAgcmV0dXJuICJkYXRhOiwiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YS5oCmluZGV4
IDQ5ZjE1ZGY4OTEzYTlhZGFlYTI5ZmI4MTFmMmI0ZDE0YjYzN2I3YmMuLjQyODY3ZDE4MDc1NDdl
OWIxOTM3ODBiMTk1OTVlNzA0MjVmYzIzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YS5oCkBAIC0yNiw3ICsy
Niw5IEBACiAjaWZuZGVmIEltYWdlQnVmZmVyRGF0YV9oCiAjZGVmaW5lIEltYWdlQnVmZmVyRGF0
YV9oCiAKLSNpbmNsdWRlICJjYWlyby5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJv
LmgiCisKK3R5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNyw2ICszOSw3IEBAIHB1YmxpYzoKICAgICBJbWFn
ZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpOwogCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBtX3N1
cmZhY2U7CisgICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8gbV9wbGF0Zm9ybUNvbnRleHQ7CiB9Owog
CiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAppbmRleCBlNTFkNjVhM2ZkZDFmNTk2
NTEyYzU5NGZmZTlhMDc5ZTYyMjczZTAwLi5kM2E1MmNlNzRiNTNmMjU2ZmMxNDliZWRhODQzMGI5
NGUyNWM0OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUNhaXJvLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkNvbnRl
eHRTaGFkb3cuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIlJlZlB0
ckNhaXJvLmgiCkBAIC0xMTQsNyArMTE1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KIAog
ICAgIEludFNpemUgc2VsZlNpemUgPSBzaXplKCk7CiAKLSAgICBjYWlyb190KiBjciA9IGNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCktPmNyKCk7CiAgICAgY29udGV4dC0+c2F2ZSgpOwogCiAgICAgLy8gU2V0IHRo
ZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCkBAIC0xNjksOCArMTcwLDcgQEAgdm9pZCBJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb24KICAgICBpZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24n
dCBoYXZlIGFuIGltYWdlIHlldC4KICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fdCogY3Ig
PSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLQorICAgIGNhaXJvX3QqIGNyID0gY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4
dChjciwgaW1hZ2UsIHNpemUoKSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCB0
b0NhaXJvT3BlcmF0b3Iob3ApLCBkZXN0UmVjdCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1Db250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhNzUxNjJkNzUyYjUz
MGMzZjIyZjNkOGJiNTY0OTI3OGU4NjMzNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKQEAg
LTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
aCIKKworI2luY2x1ZGUgPGNhaXJvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGxhdGZv
cm1Db250ZXh0Q2Fpcm86OlBsYXRmb3JtQ29udGV4dENhaXJvKGNhaXJvX3QqIGNyKQorICAgIDog
bV9jcihjcikKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4
dENhaXJvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzZjY2VkYWIyMzRlMmVmNTI2NTBiYWVmMzNlNzlhMWNkZjE4
YWFmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBsYXRmb3JtQ29u
dGV4dENhaXJvX2gKKyNkZWZpbmUgUGxhdGZvcm1Db250ZXh0Q2Fpcm9faAorCisjaW5jbHVkZSAi
Q29udGV4dFNoYWRvdy5oIgorI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworLy8gTXVjaCBsaWtlIFBsYXRmb3JtQ29udGV4dFNraWEgaW4gdGhlIFNraWEg
cG9ydCwgdGhpcyBjbGFzcyBob2xkcyBpbmZvcm1hdGlvbiB0aGF0CisvLyB3b3VsZCBub3JtYWxs
eSBiZSBwcml2YXRlIHRvIEdyYXBoaWNzQ29udGV4dCwgZXhjZXB0IHRoYXQgd2Ugd2FudCB0byBh
bGxvdyBhY2Nlc3MKKy8vIHRvIGl0IGluIEZvbnQgYW5kIEltYWdlIGNvZGUuIFRoaXMgYWxsb3dz
IHVzIHRvIHNlcGFyYXRlIHRoZSBjb25jZXJucyBvZiBDYWlyby1zcGVjaWZpYworLy8gY29kZSBm
cm9tIHRoZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQuCisKK2NsYXNzIFBs
YXRmb3JtQ29udGV4dENhaXJvIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybUNv
bnRleHRDYWlybyk7CitwdWJsaWM6CisgICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8oY2Fpcm9fdCop
OworICAgIGNhaXJvX3QqIGNyKCkgeyByZXR1cm4gbV9jci5nZXQoKTsgfQorICAgIHZvaWQgc2V0
Q3IoY2Fpcm9fdCogY3IpIHsgbV9jciA9IGNyOyB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPGNh
aXJvX3Q+IG1fY3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQ
bGF0Zm9ybUNvbnRleHRDYWlyb19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ndGsvRm9udEd0ay5jcHAKaW5kZXggMDExYjc1NWQzMWVmOGVhYmEzMmE2YzUwM2YxMWNj
YzBlMDI2NDNjZi4uOTc3YWE2MjM1YmNmMGE5MDdhNGJmOWNmZjhhMDMwYmRjNjY2MjZjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcApA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkdPd25QdHIuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKICNpbmNsdWRl
ICJUZXh0UnVuLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KQEAgLTIxNyw3ICsyMTgsNyBAQCBib29s
IEZvbnQ6OmNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0KCkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsIGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBQYW5nb0xheW91dExpbmUqIGxheW91dExpbmUsIFBhbmdvUmVnaW9uVHlwZSByZW5k
ZXJSZWdpb24pCitzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgUGFuZ29MYXlvdXRMaW5l
KiBsYXlvdXRMaW5lLCBQYW5nb1JlZ2lvblR5cGUgcmVuZGVyUmVnaW9uKQogewogICAgIENvbnRl
eHRTaGFkb3cqIHNoYWRvdyA9IGdyYXBoaWNzQ29udGV4dC0+Y29udGV4dFNoYWRvdygpOwogICAg
IEFTU0VSVChzaGFkb3cpOwpAQCAtMjI5LDYgKzIzMCw3IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlw
aHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNhaXJvX3QqIGNvbnRl
eHQsCiAKICAgICAvLyBPcHRpbWl6ZSBub24tYmx1cnJ5IHNoYWRvd3MsIGJ5IGp1c3QgZHJhd2lu
ZyB0ZXh0IHdpdGhvdXQgdGhlIENvbnRleHRTaGFkb3cuCiAgICAgaWYgKCFzaGFkb3ctPm11c3RV
c2VDb250ZXh0U2hhZG93KGdyYXBoaWNzQ29udGV4dCkpIHsKKyAgICAgICAgY2Fpcm9fdCogY29u
dGV4dCA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgICAg
IGNhaXJvX3NhdmUoY29udGV4dCk7CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjb250ZXh0LCB0
b3RhbE9mZnNldC54KCksIHRvdGFsT2Zmc2V0LnkoKSk7CiAKQEAgLTI1Miw2ICsyNTQsNyBAQCBz
dGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjYWlyb190KiBjb250ZXh0LAogICAgICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IHdhbnQg
YW55IGJpdHMgYW5kIHBpZWNlcyBvZiBjaGFyYWN0ZXJzIG91dCBvZiByYW5nZSB0byBiZQogICAg
ICAgICAvLyBkcmF3bi4gU2luY2UgQ29udGV4dFNoYWRvdyBleHBlY3RzIGEgY29uc2lzdGVudCB0
cmFuc2Zvcm0sIHdlIGhhdmUgdG8gdW5kbyB0aGUKICAgICAgICAgLy8gdHJhbnNsYXRpb24gYmVm
b3JlIGNhbGxpbmcgZW5kU2hhZG93TGF5ZXIgYXMgd2VsbC4KKyAgICAgICAgY2Fpcm9fdCogY29u
dGV4dCA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgICAg
IGNhaXJvX3NhdmUoY29udGV4dCk7CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjb250ZXh0LCB0
b3RhbE9mZnNldC54KCksIHRvdGFsT2Zmc2V0LnkoKSk7CiAgICAgICAgIGdka19jYWlyb19yZWdp
b24oY29udGV4dCwgcmVuZGVyUmVnaW9uKTsKQEAgLTI3Miw3ICsyNzUsNyBAQCB2b2lkIEZvbnQ6
OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4m
IHJ1biwgY29uc3QgRgogICAgIH0KICNlbmRpZgogCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpOwogICAgIFBhbmdvTGF5b3V0KiBsYXlvdXQgPSBwYW5nb19jYWlyb19j
cmVhdGVfbGF5b3V0KGNyKTsKICAgICBzZXRQYW5nb0F0dHJpYnV0ZXModGhpcywgcnVuLCBsYXlv
dXQpOwogCkBAIC0yOTEsNyArMjk0LDcgQEAgdm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEYKICAgICBp
bnQgcmFuZ2VzW10gPSB7c3RhcnQgLSB1dGY4LCBlbmQgLSB1dGY4fTsKICAgICBwYXJ0aWFsUmVn
aW9uID0gZ2RrX3BhbmdvX2xheW91dF9saW5lX2dldF9jbGlwX3JlZ2lvbihsYXlvdXRMaW5lLCAw
LCAwLCByYW5nZXMsIDEpOwogCi0gICAgZHJhd0dseXBoc1NoYWRvdyhjb250ZXh0LCBjciwgcG9p
bnQsIGxheW91dExpbmUsIHBhcnRpYWxSZWdpb24pOworICAgIGRyYXdHbHlwaHNTaGFkb3coY29u
dGV4dCwgcG9pbnQsIGxheW91dExpbmUsIHBhcnRpYWxSZWdpb24pOwogCiAgICAgY2Fpcm9fc2F2
ZShjcik7CiAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCBwb2ludC54KCksIHBvaW50LnkoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0ay5jcHAKaW5k
ZXggZDU2YjUyZGU4ODAzM2M5Yzg3YWEyYzE4MjhjZTFmMDY0ZTgzNDA0NC4uN2ZkYzFmNjc4NThh
MjA0Y2IzNDg2Yzc0MjFjZmNjMTUwNjM1MTVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcApAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJQYXNzUmVmUHRyLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCisj
aW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlIDxndGsvZ3RrLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTExNyw3ICsxMTcsNyBAQCB2b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVE9ETzog
U2NhbGUvY2xpcCB0aGUgaW1hZ2UgaWYgbmVjZXNzYXJ5LgotICAgIGNhaXJvX3QqIGNyID0gY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBnZGtfY2Fpcm9f
c2V0X3NvdXJjZV9waXhidWYoY3IsIG1faWNvbiwgcmVjdC54KCksIHJlY3QueSgpKTsKICAgICBj
YWlyb19wYWludChjcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcAppbmRleCBmOTE1
OTYxOGEzZDc4YmZjYzg0OGUwY2RmNWY4NDEwMmRiYmVkYWZjLi45ZjdhZWNlNjA2NGE3ZWJkMmEz
YzFkNDkzYjk0ZjkwOWRkZWQ2MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAK
QEAgLTcyLDE4ICs3MiwxNSBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChIREMg
ZGMsIGJvb2wgaGFzQWxwaGEpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQo
SERDIGRjLCBib29sIGhhc0FscGhhKQogewotICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU7Ci0KLSAgICBpZiAoZGMpIHsKLSAgICAgICAgbV9kYXRhLT5jciA9
IGNyZWF0ZUNhaXJvQ29udGV4dFdpdGhIREMoZGMsIGhhc0FscGhhKTsKLSAgICAgICAgbV9kYXRh
LT5tX2hkYyA9IGRjOwotICAgIH0gZWxzZSB7CisgICAgY2Fpcm9fdCogY3IgPSAwOworICAgIGlm
IChkYykKKyAgICAgICAgY3IgPSBjcmVhdGVDYWlyb0NvbnRleHRXaXRoSERDKGRjLCBoYXNBbHBo
YSk7CisgICAgZWxzZQogICAgICAgICBzZXRQYWludGluZ0Rpc2FibGVkKHRydWUpOwotICAgICAg
ICBtX2RhdGEtPmNyID0gMDsKLSAgICAgICAgbV9kYXRhLT5tX2hkYyA9IDA7Ci0gICAgfQogCi0g
ICAgaWYgKG1fZGF0YS0+Y3IpIHsKKyAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlVG9wbGV2ZWwobmV3IFBsYXRmb3JtQ29udGV4dENhaXJvKGNyKSk7CisgICAg
bV9kYXRhLT5tX2hkYyA9IGRjOworICAgIGlmIChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSkgewog
ICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRzIGluIHN5bmMgd2l0aCBvdXIg
c3RhdGUuCiAgICAgICAgIHNldFBsYXRmb3JtRmlsbENvbG9yKGZpbGxDb2xvcigpLCBmaWxsQ29s
b3JTcGFjZSgpKTsKICAgICAgICAgc2V0UGxhdGZvcm1TdHJva2VDb2xvcihzdHJva2VDb2xvcigp
LCBzdHJva2VDb2xvclNwYWNlKCkpOwpAQCAtOTYsNyArOTMsNyBAQCBzdGF0aWMgdm9pZCBzZXRS
R0JBQml0bWFwQWxwaGEodW5zaWduZWQgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIHVuc2ln
bmVkIGNoYQogICAgICAgICBieXRlc1tpICsgM10gPSBsZXZlbDsKIH0KIAotc3RhdGljIHZvaWQg
ZHJhd0JpdG1hcFRvQ29udGV4dChHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUqIGNvbnRl
eHQsIGNvbnN0IERJQlBpeGVsRGF0YSYgcGl4ZWxEYXRhLCBjb25zdCBJbnRTaXplJiB0cmFuc2xh
dGUpCitzdGF0aWMgdm9pZCBkcmF3Qml0bWFwVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZSogY29udGV4dCwgY2Fpcm9fdCogY3IsIGNvbnN0IERJQlBpeGVsRGF0YSYgcGl4
ZWxEYXRhLCBjb25zdCBJbnRTaXplJiB0cmFuc2xhdGUpCiB7CiAgICAgLy8gTmVlZCB0byBtYWtl
IGEgY2Fpcm9fc3VyZmFjZV90IG91dCBvZiB0aGUgYml0bWFwJ3MgcGl4ZWwgYnVmZmVyIGFuZCB0
aGVuIGRyYXcKICAgICAvLyBpdCBpbnRvIG91ciBjb250ZXh0LgpAQCAtMTA4LDE5ICsxMDUsMTkg
QEAgc3RhdGljIHZvaWQgZHJhd0JpdG1hcFRvQ29udGV4dChHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGUqIGNvbnRleHQsIGNvbnN0IEQKIAogICAgIC8vIEZsaXAgdGhlIHRhcmdldCBzdXJm
YWNlIHNvIHRoYXQgd2hlbiB3ZSBzZXQgdGhlIHNyY0ltYWdlIGFzCiAgICAgLy8gdGhlIHN1cmZh
Y2UgaXQgd2lsbCBkcmF3IHJpZ2h0LXNpZGUtdXAuCi0gICAgY2Fpcm9fc2F2ZShjb250ZXh0LT5j
cik7Ci0gICAgY2Fpcm9fdHJhbnNsYXRlKGNvbnRleHQtPmNyLCBzdGF0aWNfY2FzdDxkb3VibGU+
KHRyYW5zbGF0ZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih0cmFuc2xhdGUuaGVpZ2h0
KCkpKTsKLSAgICBjYWlyb19zY2FsZShjb250ZXh0LT5jciwgMSwgLTEpOwotICAgIGNhaXJvX3Nl
dF9zb3VyY2Vfc3VyZmFjZShjb250ZXh0LT5jciwgc3VyZmFjZSwgMCwgMCk7CisgICAgY2Fpcm9f
c2F2ZShjcik7CisgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCBzdGF0aWNfY2FzdDxkb3VibGU+KHRy
YW5zbGF0ZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih0cmFuc2xhdGUuaGVpZ2h0KCkp
KTsKKyAgICBjYWlyb19zY2FsZShjciwgMSwgLTEpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3Vy
ZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7CiAKICAgICBpZiAoY29udGV4dC0+bGF5ZXJzLnNpemUo
KSkKLSAgICAgICAgY2Fpcm9fcGFpbnRfd2l0aF9hbHBoYShjb250ZXh0LT5jciwgY29udGV4dC0+
bGF5ZXJzLmxhc3QoKSk7CisgICAgICAgIGNhaXJvX3BhaW50X3dpdGhfYWxwaGEoY3IsIGNvbnRl
eHQtPmxheWVycy5sYXN0KCkpOwogICAgIGVsc2UKLSAgICAgICAgY2Fpcm9fcGFpbnQoY29udGV4
dC0+Y3IpOworICAgICAgICBjYWlyb19wYWludChjcik7CiAgICAgIAogICAgIC8vIERlbGV0ZSBh
bGwgb3VyIGp1bmsuCiAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOwotICAgIGNh
aXJvX3Jlc3RvcmUoY29udGV4dC0+Y3IpOworICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVsZWFzZVdpbmRvd3NDb250ZXh0KEhEQyBoZGMsIGNvbnN0
IEludFJlY3QmIGRzdFJlY3QsIGJvb2wgc3VwcG9ydEFscGhhQmxlbmQsIGJvb2wgbWF5Q3JlYXRl
Qml0bWFwKQpAQCAtMTQ2LDE3ICsxNDMsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlbGVh
c2VXaW5kb3dzQ29udGV4dChIREMgaGRjLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBib28KICAg
ICBpZiAoIXN1cHBvcnRBbHBoYUJsZW5kKQogICAgICAgICBzZXRSR0JBQml0bWFwQWxwaGEoYnl0
ZXMsIHBpeGVsRGF0YS5zaXplKCkuaGVpZ2h0KCkgKiBwaXhlbERhdGEuYnl0ZXNQZXJSb3coKSwg
MjU1KTsKIAotICAgIGRyYXdCaXRtYXBUb0NvbnRleHQobV9kYXRhLCBwaXhlbERhdGEsIEludFNp
emUoZHN0UmVjdC54KCksIGRzdFJlY3QuaGVpZ2h0KCkgKyBkc3RSZWN0LnkoKSkpOworICAgIGRy
YXdCaXRtYXBUb0NvbnRleHQobV9kYXRhLCBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcGl4ZWxE
YXRhLCBJbnRTaXplKGRzdFJlY3QueCgpLCBkc3RSZWN0LmhlaWdodCgpICsgZHN0UmVjdC55KCkp
KTsKIAogICAgIDo6RGVsZXRlREMoaGRjKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdXaW5kb3dzQml0bWFwKFdpbmRvd3NCaXRtYXAqIGJpdG1hcCwgY29uc3QgSW50UG9pbnQmIHBv
aW50KQogewotICAgIGRyYXdCaXRtYXBUb0NvbnRleHQobV9kYXRhLCBiaXRtYXAtPndpbmRvd3NE
SUIoKSwgSW50U2l6ZShwb2ludC54KCksIGJpdG1hcC0+c2l6ZSgpLmhlaWdodCgpICsgcG9pbnQu
eSgpKSk7CisgICAgZHJhd0JpdG1hcFRvQ29udGV4dChtX2RhdGEsIHBsYXRmb3JtQ29udGV4dCgp
LT5jcigpLCBiaXRtYXAtPndpbmRvd3NESUIoKSwgSW50U2l6ZShwb2ludC54KCksIGJpdG1hcC0+
c2l6ZSgpLmhlaWdodCgpICsgcG9pbnQueSgpKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlOjpzeW5jQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogY3Ip
Cit2b2lkIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6c3luY0NvbnRleHQoY2Fpcm9f
dCogY3IpCiB7CiAgICAgaWYgKCFjcikKICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCAxZTlmMTU5NDkxZmMwMzBl
ZGVlYjkyMjg2OTBjMGM2NzEwM2I2OTg5Li45YjExYzI3N2MwODkyZTg1OWZjYjc3OGUxYTM2ZDk3
M2Y0NjBhZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUd0ay5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNs
dWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgpAQCAtMjM0
LDcgKzIzNSw3IEBAIHN0YXRpYyB2b2lkIHBhaW50R2RrUGl4YnVmKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgR2RrUGl4YnVmKiBpY29uLCBjb25zCiAgICAgICAgIGljb24gPSBzY2Fs
ZWRJY29uLmdldCgpOwogICAgIH0KIAotICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCk7CisgICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBnZGtfY2Fpcm9fc2V0X3NvdXJjZV9w
aXhidWYoY3IsIGljb24sIGljb25SZWN0LngoKSwgaWNvblJlY3QueSgpKTsKICAgICBjYWlyb19w
YWludChjcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOWU2NDBmNmZhYjMxM2JlNWFjNGM5Y2NkNjliNjAx
ZmY2ZTkxMTU3My4uNmY3Mzg5ZDcwNDVhODVhMDBlYWZiZDQ3MGMzOWFiOTRiOGQzNzE0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4
dENhaXJvLmgiCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKICNpbmNsdWRlICJSZW5kZXJUaGVt
ZUd0ay5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC0xMjgsNyArMTI5LDcgQEAgV2lkZ2V0UmVu
ZGVyaW5nQ29udGV4dDo6fldpZGdldFJlbmRlcmluZ0NvbnRleHQoKQogICAgIH0KIAogICAgIC8v
IEZJWE1FOiBJdCdzIHVuY2xlYXIgaWYgaXQgaXMgbmVjZXNzYXJ5IHRvIHByZXNlcnZlIHRoZSBj
dXJyZW50IHNvdXJjZSBoZXJlLgotICAgIGNhaXJvX3QqIGNhaXJvQ29udGV4dCA9IG1fZ3JhcGhp
Y3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlyb190KiBjYWlyb0NvbnRleHQg
PSBtX2dyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgUmVmUHRy
PGNhaXJvX3BhdHRlcm5fdD4gcHJldmlvdXNTb3VyY2UoY2Fpcm9fZ2V0X3NvdXJjZShjYWlyb0Nv
bnRleHQpKTsKIAogICAgIC8vIFRoZSBibGl0IHJlY3RhbmdsZSBpcyB0aGUgb3JpZ2luYWwgdGFy
Z2V0IHJlY3RhbmdsZSBhZGp1c3RlZCBmb3IgYW55IGV4dHJhIHNwYWNlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggZTM1NjU3
NTgwZmUzYmUyOWM3YmEzOWRhYzQxMDFmMDVjMDA4ZDU1Yi4uYTY3YTgyYzI2NThhNGEyMzIyY2Ez
YTg0ZmI4NGJhMWE1OWI5MmFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC0yOSwyNiArMjksMjAgQEAKICNpbmNsdWRlICJC
aXRtYXBJbmZvLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWly
by5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiUmV0YWluUHRyLmgiCi0KICNpbmNs
dWRlIDxjYWlyby13aW4zMi5oPgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZUNhaXJvLmgiCi0KICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKLWV4dGVybiAiQyIgewotdHlw
ZWRlZiBzdHJ1Y3QgX2NhaXJvKiBDYWlyb0NvbnRleHRSZWY7Ci19Ci0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdm9pZCBkZWFsbG9jQ29udGV4dChDYWlyb0NvbnRleHRSZWYgdGFyZ2V0KQordm9p
ZCBkZWFsbG9jQ29udGV4dChQbGF0Zm9ybUNvbnRleHRDYWlybyogdGFyZ2V0KQogewotICAgIGNh
aXJvX2Rlc3Ryb3kodGFyZ2V0KTsKKyAgICBkZWxldGUgdGFyZ2V0OwogfQogCi1IQklUTUFQIGFs
bG9jSW1hZ2UoSERDIGRjLCBJbnRTaXplIHNpemUsIENhaXJvQ29udGV4dFJlZiogdGFyZ2V0UmVm
KQorSEJJVE1BUCBhbGxvY0ltYWdlKEhEQyBkYywgSW50U2l6ZSBzaXplLCBQbGF0Zm9ybUNvbnRl
eHRDYWlybyoqIHRhcmdldFJlZikKIHsKICAgICBCaXRtYXBJbmZvIGJtcEluZm8gPSBCaXRtYXBJ
bmZvOjpjcmVhdGUoc2l6ZSk7CiAKQEAgLTcyLDggKzY2LDggQEAgSEJJVE1BUCBhbGxvY0ltYWdl
KEhEQyBkYywgSW50U2l6ZSBzaXplLCBDYWlyb0NvbnRleHRSZWYqIHRhcmdldFJlZikKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgKnRhcmdldFJlZiA9IGNhaXJvX2NyZWF0ZSAoYml0
bWFwQ29udGV4dCk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95IChiaXRtYXBDb250ZXh0KTsK
KyAgICBjYWlyb190KiBjciA9IGNhaXJvX2NyZWF0ZShiaXRtYXBDb250ZXh0KTsKKyAgICBjYWly
b19zdXJmYWNlX2Rlc3Ryb3koYml0bWFwQ29udGV4dCk7CiAKICAgICAvLyBBdCB0aGlzIHBvaW50
LCB3ZSBoYXZlIGEgQ2Fpcm8gc3VyZmFjZSB0aGF0IHBvaW50cyB0byBhIFdpbmRvd3MgRElCLiAg
VGhlIERJQiBpbnRlcnByZXRzCiAgICAgLy8gd2l0aCB0aGUgb3Bwb3NpdGUgbWVhbmluZyBvZiBw
b3NpdGl2ZSBZIGF4aXMsIHNvIGV2ZXJ5dGhpbmcgd2UgZHJhdyBpbnRvIHRoaXMgY2Fpcm8KQEAg
LTgzLDcgKzc3LDEwIEBAIEhCSVRNQVAgYWxsb2NJbWFnZShIREMgZGMsIEludFNpemUgc2l6ZSwg
Q2Fpcm9Db250ZXh0UmVmKiB0YXJnZXRSZWYpCiAgICAgLy8gYmVmb3JlIHRoZXkgZ2V0IHdyaXR0
ZW4gdG8gdGhlIGludGVybmFsIGJ1ZmZlci4KICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXg7CiAg
ICAgY2Fpcm9fbWF0cml4X2luaXQoJm1hdHJpeCwgMS4wLCAwLjAsIDAuMCwgLTEuMCwgMC4wLCBz
aXplLmhlaWdodCgpKTsKLSAgICBjYWlyb19zZXRfbWF0cml4KCp0YXJnZXRSZWYsICZtYXRyaXgp
OworICAgIGNhaXJvX3NldF9tYXRyaXgoY3IsICZtYXRyaXgpOworCisgICAgKnRhcmdldFJlZiA9
IG5ldyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dChjcik7CisgICAgY2Fpcm9fZGVzdHJveShjcik7
CiAKICAgICByZXR1cm4gaGJtcDsKIH0KQEAgLTEyMSw3ICsxMTgsNyBAQCBEcmFnSW1hZ2VSZWYg
c2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlLCBGbG9hdFNpemUgc2NhbGUpCiAgICAg
aWYgKCFkc3REQykKICAgICAgICAgZ290byBleGl0OwogCi0gICAgQ2Fpcm9Db250ZXh0UmVmIHRh
cmdldENvbnRleHQ7CisgICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8qIHRhcmdldENvbnRleHQ7CiAg
ICAgaGJtcCA9IGFsbG9jSW1hZ2UoZHN0REMsIGRzdFNpemUsICZ0YXJnZXRDb250ZXh0KTsKICAg
ICBpZiAoIWhibXApCiAgICAgICAgIGdvdG8gZXhpdDsKQEAgLTEzMSwxNSArMTI4LDE2IEBAIERy
YWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIEZsb2F0U2l6ZSBz
Y2FsZSkKICAgICAvLyBTY2FsZSB0aGUgdGFyZ2V0IHN1cmZhY2UgdG8gdGhlIG5ldyBpbWFnZSBz
aXplLCBhbmQgZmxpcCBpdAogICAgIC8vIHNvIHRoYXQgd2hlbiB3ZSBzZXQgdGhlIHNyY0ltYWdl
IGFzIHRoZSBzdXJmYWNlIGl0IHdpbGwgZHJhdwogICAgIC8vIHJpZ2h0LXNpZGUtdXAuCi0gICAg
Y2Fpcm9fdHJhbnNsYXRlKHRhcmdldENvbnRleHQsIDAsIGRzdFNpemUuaGVpZ2h0KCkpOwotICAg
IGNhaXJvX3NjYWxlKHRhcmdldENvbnRleHQsIHNjYWxlLndpZHRoKCksIC1zY2FsZS5oZWlnaHQo
KSk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlICh0YXJnZXRDb250ZXh0LCBzcmNJbWFn
ZSwgMC4wLCAwLjApOworICAgIGNhaXJvX3QqIGNyID0gdGFyZ2V0Q29udGV4dC0+Y3IoKTsKKyAg
ICBjYWlyb190cmFuc2xhdGUoY3IsIDAsIGRzdFNpemUuaGVpZ2h0KCkpOworICAgIGNhaXJvX3Nj
YWxlKGNyLCBzY2FsZS53aWR0aCgpLCAtc2NhbGUuaGVpZ2h0KCkpOworICAgIGNhaXJvX3NldF9z
b3VyY2Vfc3VyZmFjZShjciwgc3JjSW1hZ2UsIDAuMCwgMC4wKTsKIAogICAgIC8vIE5vdyB3ZSBj
YW4gcGFpbnQgYW5kIGdldCB0aGUgY29ycmVjdCByZXN1bHQKLSAgICBjYWlyb19wYWludCh0YXJn
ZXRDb250ZXh0KTsKKyAgICBjYWlyb19wYWludChjcik7CiAKLSAgICBjYWlyb19zdXJmYWNlX2Rl
c3Ryb3kgKHNyY0ltYWdlKTsKLSAgICBjYWlyb19kZXN0cm95KHRhcmdldENvbnRleHQpOworICAg
IGNhaXJvX3N1cmZhY2VfZGVzdHJveShzcmNJbWFnZSk7CisgICAgZGVhbGxvY0NvbnRleHQodGFy
Z2V0Q29udGV4dCk7CiAgICAgOjpEZWxldGVPYmplY3QoaW1hZ2UpOwogICAgIGltYWdlID0gMDsK
IApAQCAtMTYwLDcgKzE1OCw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1h
Z2UoSW1hZ2UqIGltZykKICAgICBpZiAoIXdvcmtpbmdEQykKICAgICAgICAgZ290byBleGl0Owog
Ci0gICAgQ2Fpcm9Db250ZXh0UmVmIGRyYXdDb250ZXh0ID0gMDsKKyAgICBQbGF0Zm9ybUNvbnRl
eHRDYWlybyogZHJhd0NvbnRleHQgPSAwOwogICAgIGhibXAgPSBhbGxvY0ltYWdlKHdvcmtpbmdE
QywgaW1nLT5zaXplKCksICZkcmF3Q29udGV4dCk7CiAgICAgaWYgKCFoYm1wKQogICAgICAgICBn
b3RvIGV4aXQ7CkBAIC0xNzAsMTYgKzE2OCwxNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0lt
YWdlRnJvbUltYWdlKEltYWdlKiBpbWcpCiAgICAgICAgIGhibXAgPSAwOwogICAgIH0KIAotICAg
IGNhaXJvX3NldF9zb3VyY2VfcmdiIChkcmF3Q29udGV4dCwgMS4wLCAwLjAsIDEuMCk7Ci0gICAg
Y2Fpcm9fZmlsbF9wcmVzZXJ2ZSAoZHJhd0NvbnRleHQpOworICAgIGNhaXJvX3QqIGNyID0gZHJh
d0NvbnRleHQtPmNyKCk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2IoY3IsIDEuMCwgMC4wLCAx
LjApOworICAgIGNhaXJvX2ZpbGxfcHJlc2VydmUoY3IpOwogCiAgICAgY2Fpcm9fc3VyZmFjZV90
KiBzcmNJbWFnZSA9IGltZy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIAogICAgIC8v
IERyYXcgdGhlIGltYWdlLgotICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShkcmF3Q29udGV4
dCwgc3JjSW1hZ2UsIDAuMCwgMC4wKTsKLSAgICBjYWlyb19wYWludChkcmF3Q29udGV4dCk7Cisg
ICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBzcmNJbWFnZSwgMC4wLCAwLjApOworICAg
IGNhaXJvX3BhaW50KGNyKTsKIAotICAgIGNhaXJvX2Rlc3Ryb3kgKGRyYXdDb250ZXh0KTsKKyAg
ICBkZWFsbG9jQ29udGV4dChkcmF3Q29udGV4dCk7CiAKIGV4aXQ6CiAgICAgaWYgKHdvcmtpbmdE
QykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblZpZXdHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAKaW5kZXgg
MzY4OTk5ZTIyZjBlZjNlM2M2MmUyMWUzNzIxN2ViMzRjZjkyN2U2Yy4uY2E4ZTQ1MWJkNjlkNWU3
NjJkMGI1MGQyYzUwZDY4MGQzODcyNDkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9ndGsvUGx1Z2luVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9n
dGsvUGx1Z2luVmlld0d0ay5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJLZXlib2Fy
ZEV2ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBs
dWdpbkRlYnVnLmgiCkBAIC0yMTcsNyArMjE4LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwYWludChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgICAgICAg
ICAvLyBhdm9pZCBkcmF3aW5nIGFydGlmYWN0cy4KIAogICAgICAgICAgICAgLy8gVGhpcyBXb3Vs
ZCBub3Qgd29yayB3aXRob3V0IGRvdWJsZSBidWZmZXJpbmcsIGJ1dCB3ZSBhbHdheXMgdXNlIGl0
LgotICAgICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLmdldCgpLCBjYWlyb19n
ZXRfZ3JvdXBfdGFyZ2V0KGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKSwKKyAgICAgICAgICAg
IGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjci5nZXQoKSwgY2Fpcm9fZ2V0X2dyb3VwX3Rhcmdl
dChjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLW1fd2luZG93UmVjdC54KCksIC1tX3dpbmRvd1JlY3QueSgpKTsK
ICAgICAgICAgICAgIGNhaXJvX3NldF9vcGVyYXRvcihjci5nZXQoKSwgQ0FJUk9fT1BFUkFUT1Jf
U09VUkNFKTsKICAgICAgICAgfSBlbHNlCkBAIC0yNDQsNyArMjQ1LDcgQEAgdm9pZCBQbHVnaW5W
aWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiAgICAgaWYgKHN5bmNYKQogICAgICAgICBYU3luYyhtX3BsdWdpbkRpc3BsYXksIGZhbHNlKTsg
Ly8gc3luYyBjaGFuZ2VzIGJ5IHBsdWdpbgogCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogCiAgICAgY2Fpcm9fc2V0X3NvdXJj
ZV9zdXJmYWNlKGNyLCBkcmF3YWJsZVN1cmZhY2UuZ2V0KCksIGZyYW1lUmVjdCgpLngoKSwgZnJh
bWVSZWN0KCkueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1Bs
dWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dp
bi5jcHAKaW5kZXggMjA4MTIxZTM4N2NmNDUwMjIzNzQ1ZDRiMmEzZjdiYjExMWNlMTA0NS4uZjU3
NTcwOTMyMTRjY2ZhMmE3ZWE0ODllNTZlMjMzNzlmZjk5MDRjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKQEAgLTgzLDYgKzgzLDcgQEAKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ0FJUk8pCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
aCIKICNpbmNsdWRlIDxjYWlyby13aW4zMi5oPgogI2VuZGlmCiAKQEAgLTU3Miw4ICs1NzMsNyBA
QCB2b2lkIFBsdWdpblZpZXc6OnBhaW50V2luZG93ZWRQbHVnaW5JbnRvQ29udGV4dChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgLy8gTXVzdCBmbHVzaCBkcmF3aW5ncyB1cCB0
byB0aGlzIHBvaW50IHRvIHRoZSBiYWNraW5nIG1ldGFmaWxlLCBvdGhlcndpc2UgdGhlCiAgICAg
Ly8gcGx1Z2luIHJlZ2lvbiB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggYW55IGNsZWFyIHJlZ2lv
bnMgc3BlY2lmaWVkIGluIHRoZQogICAgIC8vIGNhaXJvLWNvbnRyb2xsZWQgcG9ydGlvbnMgb2Yg
dGhlIHJlbmRlcmluZy4KLSAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogY3R4ID0gY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgY2Fpcm9fc2hvd19wYWdlKGN0eCk7CisgICAgY2Fp
cm9fc2hvd19wYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpKTsKICNlbmRpZgog
CiAgICAgSERDIGhkYyA9IHdpbmRvd3NDb250ZXh0LmhkYygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4
IGM2NDA1ZGY0NDY0MjNiNWQyNDFlOTBlODcwYjM0M2I4ZThlZWZjYTAuLjhiYzc2ZWUwMTU2Yzhh
YzNmYTc0MjA3NDAyMGMyYmQ3ZTc5OGQ4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsNSArMSwy
MiBAQAogMjAxMS0wNC0wNCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+
CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0NhaXJv
XSBCZXR0ZXIgc2VwYXJhdGUgdGhlIGNvbmNlcm5zIG9mIEdyYXBoaWNzQ29udGV4dENhaXJvCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTE1MAorCisg
ICAgICAgIEFkZCBhIFBsYXRmb3JtQ29udGV4dENhaXJvIHdoaWNoIHJpZ2h0IG5vdyBzdG9yZXMg
dGhlIGNhaXJvX3QqIGZvciBhCisgICAgICAgIEdyYXBoaWNzQ29udGV4dENhaXJvLiBMYXRlciBw
YXRjaGVzIHdpbGwgbW92ZSBsb2dpYyBmb3IgdHJhY2tpbmcgQ29udGV4dFNoYWRvdworICAgICAg
ICBhbmQgaW1hZ2UgbWFza2luZyBsYXllcnMgaW50byB0aGlzIFBsYXRmb3JtQ29udGV4dENhaXJv
IGNsYXNzLgorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcDoKKyAgICAgICAg
KGRyYXdfcGFnZV9jYWxsYmFjayk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2V4cG9zZV9ldmVudCk6CisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfZHJhdyk6CisKKzIwMTEtMDQtMDQgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkBpZ2FsaWEuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KIAogICAg
ICAgICBbR3RrXSB3ZWJraXRfd2ViX3ZpZXdfcG9wdXBfbWVudV9oYW5kbGVyIHNob3VsZCBjYWxs
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OmxvY2FsQ2FyZXRSZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAppbmRleCBmZDkwYTZjMjcwOTQ3ZmI0NmQ5ZDQ4MGQy
ZWM5MTI3MDA3Yjk0MjFiLi5hMGU0MGIzYTIxNWQyYTU0OTc0MmIwYzhlNjkyMWE3MjM0NmM3MmE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKQEAgLTQ0
LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIkpTRWxlbWVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4
dENhaXJvLmgiCiAjaW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlz
dEl0ZW0uaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCkBAIC03NjUsMTcgKzc2Niwx
NyBAQCBzdGF0aWMgdm9pZCBiZWdpbl9wcmludF9jYWxsYmFjayhHdGtQcmludE9wZXJhdGlvbiog
b3AsIEd0a1ByaW50Q29udGV4dCogY29udGV4dAogICAgIGd0a19wcmludF9vcGVyYXRpb25fc2V0
X25fcGFnZXMob3AsIHByaW50Q29udGV4dC0+cGFnZUNvdW50KCkpOwogfQogCi1zdGF0aWMgdm9p
ZCBkcmF3X3BhZ2VfY2FsbGJhY2soR3RrUHJpbnRPcGVyYXRpb24qIG9wLCBHdGtQcmludENvbnRl
eHQqIGNvbnRleHQsIGdpbnQgcGFnZV9uciwgZ3BvaW50ZXIgdXNlcl9kYXRhKQorc3RhdGljIHZv
aWQgZHJhd19wYWdlX2NhbGxiYWNrKEd0a1ByaW50T3BlcmF0aW9uKiwgR3RrUHJpbnRDb250ZXh0
KiBndGtQcmludENvbnRleHQsIGdpbnQgcGFnZU51bWJlciwgUHJpbnRDb250ZXh0KiBjb3JlUHJp
bnRDb250ZXh0KQogewotICAgIFByaW50Q29udGV4dCogcHJpbnRDb250ZXh0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxQcmludENvbnRleHQqPih1c2VyX2RhdGEpOwotCi0gICAgaWYgKHBhZ2VfbnIgPj0g
c3RhdGljX2Nhc3Q8Z2ludD4ocHJpbnRDb250ZXh0LT5wYWdlQ291bnQoKSkpCisgICAgaWYgKHBh
Z2VOdW1iZXIgPj0gc3RhdGljX2Nhc3Q8Z2ludD4oY29yZVByaW50Q29udGV4dC0+cGFnZUNvdW50
KCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IGd0a19wcmludF9jb250
ZXh0X2dldF9jYWlyb19jb250ZXh0KGNvbnRleHQpOwotICAgIEdyYXBoaWNzQ29udGV4dCBjdHgo
Y3IpOwotICAgIGZsb2F0IHdpZHRoID0gZ3RrX3ByaW50X2NvbnRleHRfZ2V0X3dpZHRoKGNvbnRl
eHQpOwotICAgIHByaW50Q29udGV4dC0+c3Bvb2xQYWdlKGN0eCwgcGFnZV9uciwgd2lkdGgpOwor
ICAgIGNhaXJvX3QqIGNyID0gZ3RrX3ByaW50X2NvbnRleHRfZ2V0X2NhaXJvX2NvbnRleHQoZ3Rr
UHJpbnRDb250ZXh0KTsKKyAgICBmbG9hdCBwYWdlV2lkdGggPSBndGtfcHJpbnRfY29udGV4dF9n
ZXRfd2lkdGgoZ3RrUHJpbnRDb250ZXh0KTsKKworICAgIFBsYXRmb3JtQ29udGV4dENhaXJvIHBs
YXRmb3JtQ29udGV4dChjcik7CisgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCgm
cGxhdGZvcm1Db250ZXh0KTsKKyAgICBjb3JlUHJpbnRDb250ZXh0LT5zcG9vbFBhZ2UoZ3JhcGhp
Y3NDb250ZXh0LCBwYWdlTnVtYmVyLCBwYWdlV2lkdGgpOwogfQogCiBzdGF0aWMgdm9pZCBlbmRf
cHJpbnRfY2FsbGJhY2soR3RrUHJpbnRPcGVyYXRpb24qIG9wLCBHdGtQcmludENvbnRleHQqIGNv
bnRleHQsIGdwb2ludGVyIHVzZXJfZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcAppbmRleCBlYzk1ZDcwNjgyODVlYWEzZjAyZWVkMDE4MWQyMzIwZWNkOTdk
NTIwLi43MDg3MWE3MDgwY2I3YzQzNDllMWI5YjA0MjI0MGEzYjRhMDQ2YjgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC02NjksOCArNjY5LDggQEAg
c3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19leHBvc2VfZXZlbnQoR3RrV2lkZ2V0KiB3
aWRnZXQsIEdka0V2ZW50RXhwb3NlKgogICAgICAgICBmcmFtZS0+dmlldygpLT51cGRhdGVMYXlv
dXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiAKICAgICAgICAgUmVmUHRyPGNhaXJvX3Q+
IGNyID0gYWRvcHRSZWYoZ2RrX2NhaXJvX2NyZWF0ZShldmVudC0+d2luZG93KSk7Ci0gICAgICAg
IEdyYXBoaWNzQ29udGV4dCBjdHgoY3IuZ2V0KCkpOwotICAgICAgICBjdHguc2V0R2RrRXhwb3Nl
RXZlbnQoZXZlbnQpOworICAgICAgICBHcmFwaGljc0NvbnRleHQgZ2MoY3IuZ2V0KCkpOworICAg
ICAgICBnYy5zZXRHZGtFeHBvc2VFdmVudChldmVudCk7CiAKICAgICAgICAgaW50IHJlY3RDb3Vu
dDsKICAgICAgICAgR093blB0cjxHZGtSZWN0YW5nbGU+IHJlY3RzOwpAQCAtNjc5LDcgKzY3OSw3
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZXhwb3NlX2V2ZW50KEd0a1dpZGdl
dCogd2lkZ2V0LCBHZGtFdmVudEV4cG9zZSoKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBy
ZWN0Q291bnQ7IGkrKykKICAgICAgICAgICAgIHBhaW50UmVjdHMuYXBwZW5kKEludFJlY3QocmVj
dHMuZ2V0KClbaV0pKTsKIAotICAgICAgICBwYWludFdlYlZpZXcoZnJhbWUsIHByaXYtPnRyYW5z
cGFyZW50LCBjdHgsIHN0YXRpY19jYXN0PEludFJlY3Q+KGV2ZW50LT5hcmVhKSwgcGFpbnRSZWN0
cyk7CisgICAgICAgIHBhaW50V2ViVmlldyhmcmFtZSwgcHJpdi0+dHJhbnNwYXJlbnQsIGdjLCBz
dGF0aWNfY2FzdDxJbnRSZWN0PihldmVudC0+YXJlYSksIHBhaW50UmVjdHMpOwogICAgIH0KIAog
ICAgIHJldHVybiBGQUxTRTsKQEAgLTY5Niw3ICs2OTYsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X2RyYXcoR3RrV2lkZ2V0KiB3aWRnZXQsIGNhaXJvX3QqIGNyKQogCiAgICAg
RnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CiAgICAgaWYgKGZyYW1l
LT5jb250ZW50UmVuZGVyZXIoKSAmJiBmcmFtZS0+dmlldygpKSB7Ci0gICAgICAgIEdyYXBoaWNz
Q29udGV4dCBjdHgoY3IpOworICAgICAgICBHcmFwaGljc0NvbnRleHQgZ2MoY3IpOwogICAgICAg
ICBJbnRSZWN0IHJlY3QgPSBjbGlwUmVjdDsKICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlX2xpc3Rf
dCogcmVjdExpc3QgPSBjYWlyb19jb3B5X2NsaXBfcmVjdGFuZ2xlX2xpc3QoY3IpOwogCkBAIC03
MDcsNyArNzA3LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19kcmF3KEd0a1dp
ZGdldCogd2lkZ2V0LCBjYWlyb190KiBjcikKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcmVjdExpc3QtPm51bV9yZWN0YW5nbGVzOyBpKyspCiAgICAgICAgICAgICAgICAgcmVjdHMu
YXBwZW5kKGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KHJlY3RMaXN0LT5yZWN0YW5nbGVzW2ld
KSkpOwogICAgICAgICB9Ci0gICAgICAgIHBhaW50V2ViVmlldyhmcmFtZSwgcHJpdi0+dHJhbnNw
YXJlbnQsIGN0eCwgcmVjdCwgcmVjdHMpOworICAgICAgICBwYWludFdlYlZpZXcoZnJhbWUsIHBy
aXYtPnRyYW5zcGFyZW50LCBnYywgcmVjdCwgcmVjdHMpOwogCiAgICAgICAgIGNhaXJvX3JlY3Rh
bmdsZV9saXN0X2Rlc3Ryb3kocmVjdExpc3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBm
ZDg5ZTE2MGY0ZjQ0ODM2NDlkMDliM2U1NTQyOGYzN2QxOTc4MzJkLi41ZmQ4MDNjMzgzMDY0M2Qw
MTg3MjgyNDJjOGEwOWE5ZGU4OTNhNmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDQtMDQgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDYWlyb10g
QmV0dGVyIHNlcGFyYXRlIHRoZSBjb25jZXJucyBvZiBHcmFwaGljc0NvbnRleHRDYWlybworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUxNTAKKworICAg
ICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKGhkY0Zyb21Db250ZXh0KTogTW9kaWZ5IHRo
aXMgbWV0aG9kIHRvIHRha2UgUGxhdGZvcm1Db250ZXh0Q2Fpcm8KKyAgICAgICAgaW5zdGVhZCBv
ZiBhIGNhaXJvX3QuCisgICAgICAgIChXZWJGcmFtZTo6c3Bvb2xQYWdlKTogVXBkYXRlIHRvIHJl
ZmxlY3QgbmV3IHBsYXRmb3JtIGNvbnRleHQuCisgICAgICAgIChXZWJGcmFtZTo6c3Bvb2xQYWdl
cyk6IERpdHRvLgorICAgICAgICAqIFdlYkZyYW1lLmg6IERpdHRvLgorCiAyMDExLTA0LTAxICBB
ZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFdlYlZp
ZXcncyAidGhpcyIgcG9pbnRlciBmcm9tIGl0cyBIV05EIHdoZW4gV01fREVTVFJPWSBpcyByZWNl
aXZlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDFlZjMwNjZmMTY3Nzc2OTI0MDgxMzcyMTMw
Y2M5MGQwNWNlYzNhODEuLjRiOWUzNWRlMGQ4NjA1NmNkNTJlNmNjNTM1Y2M4ZjViYjlmODk3YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTEwNyw2ICsxMDcsNyBAQAogI2lmIFBMQVRGT1JN
KENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbGlmIFBMQVRG
T1JNKENBSVJPKQorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSA8
Y2Fpcm8td2luMzIuaD4KICNlbmRpZgogCkBAIC0yMTg2LDggKzIxODcsNyBAQCBzdGF0aWMgZmxv
YXQgc2NhbGVGYWN0b3IoSERDIHByaW50REMsIGNvbnN0IEludFJlY3QmIG1hcmdpblJlY3QsIGNv
bnN0IEludFJlY3QmCiAKIHN0YXRpYyBIREMgaGRjRnJvbUNvbnRleHQoUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQqIHBjdHgpCiB7Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9f
Z2V0X3RhcmdldChwY3R4KTsKLSAgICByZXR1cm4gY2Fpcm9fd2luMzJfc3VyZmFjZV9nZXRfZGMo
c3VyZmFjZSk7CisgICAgcmV0dXJuIGNhaXJvX3dpbjMyX3N1cmZhY2VfZ2V0X2RjKGNhaXJvX2dl
dF90YXJnZXQocGN0eC0+Y3IoKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lOjpkcmF3SGVhZGVyKFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwY3R4LCBJV2ViVUlEZWxlZ2F0ZSogdWksIGNvbnN0IElu
dFJlY3QmIHBhZ2VSZWN0LCBmbG9hdCBoZWFkZXJIZWlnaHQpCkBAIC0yMjQyLDEzICsyMjQyLDE0
IEBAIHZvaWQgV2ViRnJhbWU6OnNwb29sUGFnZShQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGN0
eCwgR3JhcGhpY3NDb250ZXh0KiBzcG9vbEN0CiAgICAgWEZPUk0gb3JpZ2luYWwsIHNjYWxlZDsK
ICAgICBHZXRXb3JsZFRyYW5zZm9ybShoZGMsICZvcmlnaW5hbCk7CiAgICAgCisgICAgY2Fpcm9f
dCogY3IgPSBwY3R4LT5jcigpOwogICAgIGJvb2wgcHJldmlldyA9IChoZGMgIT0gcHJpbnREQyk7
CiAgICAgaWYgKHByZXZpZXcpIHsKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHByZXZpZXcsIHRo
ZSBXaW5kb3dzIEhEQyB3YXMgc2V0IHRvIGEgbm9uLXNjYWxlZCBzdGF0ZSBzbyB0aGF0IENhaXJv
IHdpbGwKICAgICAgICAgLy8gZHJhdyBjb3JyZWN0bHkuICBXZSBuZWVkIHRvIHJldGFpbiB0aGUg
Y29ycmVjdCBwcmV2aWV3IHNjYWxlIGhlcmUgZm9yIHVzZSB3aGVuIHRoZSBDYWlybwogICAgICAg
ICAvLyBkcmF3aW5nIGNvbXBsZXRlcyBzbyB0aGF0IHdlIGNhbiBzY2FsZSBvdXIgR0RJLWJhc2Vk
IGhlYWRlci9mb290ZXIgY2FsbHMuIFRoaXMgaXMgYQogICAgICAgICAvLyB3b3JrYXJvdW5kIGZv
ciBhIGJ1ZyBpbiBDYWlybyAoc2VlIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI4MTYxKQotICAgICAgICBzY2FsZWQgPSBidWlsZFhGT1JNRnJvbUNhaXJvKGhk
YywgcGN0eCk7CisgICAgICAgIHNjYWxlZCA9IGJ1aWxkWEZPUk1Gcm9tQ2Fpcm8oaGRjLCBjcik7
CiAgICAgfQogCiAgICAgZmxvYXQgc2NhbGUgPSBzY2FsZUZhY3RvcihwcmludERDLCBtYXJnaW5S
ZWN0LCBwYWdlUmVjdCk7CkBAIC0yMjU4LDEzICsyMjU5LDEzIEBAIHZvaWQgV2ViRnJhbWU6OnNw
b29sUGFnZShQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGN0eCwgR3JhcGhpY3NDb250ZXh0KiBz
cG9vbEN0CiAKICAgICAvLyBXZSBjYW5ub3Qgc2NhbGUgdGhlIGRpc3BsYXkgSERDIGJlY2F1c2Ug
dGhlIHByaW50IHN1cmZhY2UgYWxzbyBzY2FsZXMgZm9udHMsCiAgICAgLy8gcmVzdWx0aW5nIGlu
IGludmFsaWQgcHJpbnRpbmcgKGFuZCBwcmludCBwcmV2aWV3KQotICAgIGNhaXJvX3NjYWxlKHBj
dHgsIHNjYWxlLCBzY2FsZSk7Ci0gICAgY2Fpcm9fdHJhbnNsYXRlKHBjdHgsIGNhaXJvTWFyZ2lu
UmVjdC54KCksIGNhaXJvTWFyZ2luUmVjdC55KCkgKyBoZWFkZXJIZWlnaHQpOworICAgIGNhaXJv
X3NjYWxlKGNyLCBzY2FsZSwgc2NhbGUpOworICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgY2Fpcm9N
YXJnaW5SZWN0LngoKSwgY2Fpcm9NYXJnaW5SZWN0LnkoKSArIGhlYWRlckhlaWdodCk7CiAKICAg
ICAvLyBNb2RpZnkgQ2Fpcm8gKG9ubHkpIHRvIGFjY291bnQgZm9yIHBhZ2UgcG9zaXRpb24uCi0g
ICAgY2Fpcm9fdHJhbnNsYXRlKHBjdHgsIC1wYWdlUmVjdC54KCksIC1wYWdlUmVjdC55KCkpOwor
ICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgLXBhZ2VSZWN0LngoKSwgLXBhZ2VSZWN0LnkoKSk7CiAg
ICAgY29yZUZyYW1lLT52aWV3KCktPnBhaW50Q29udGVudHMoc3Bvb2xDdHgsIHBhZ2VSZWN0KTsK
LSAgICBjYWlyb190cmFuc2xhdGUocGN0eCwgcGFnZVJlY3QueCgpLCBwYWdlUmVjdC55KCkpOwor
ICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgcGFnZVJlY3QueCgpLCBwYWdlUmVjdC55KCkpOwogICAg
IAogICAgIGlmIChwcmV2aWV3KSB7CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBwcmV2aWV3LCB0
aGUgV2luZG93cyBIREMgd2FzIHNldCB0byBhIG5vbi1zY2FsZWQgc3RhdGUgc28gdGhhdCBDYWly
byB3b3VsZApAQCAtMjI4NSw4ICsyMjg2LDggQEAgdm9pZCBXZWJGcmFtZTo6c3Bvb2xQYWdlKFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwY3R4LCBHcmFwaGljc0NvbnRleHQqIHNwb29sQ3QKIAog
ICAgIFNldFdvcmxkVHJhbnNmb3JtKGhkYywgJm9yaWdpbmFsKTsKIAotICAgIGNhaXJvX3Nob3df
cGFnZShwY3R4KTsKLSAgICBBU1NFUlQoIWNhaXJvX3N0YXR1cyhwY3R4KSk7CisgICAgY2Fpcm9f
c2hvd19wYWdlKGNyKTsKKyAgICBBU1NFUlQoIWNhaXJvX3N0YXR1cyhjcikpOwogICAgIHNwb29s
Q3R4LT5yZXN0b3JlKCk7CiB9CiAKQEAgLTIzMzgsMTcgKzIzMzksMjEgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c3Bvb2xQYWdlcygKICAgICBlbHNlCiAgICAgICAgIHBy
aW50U3VyZmFjZSA9IGNhaXJvX3dpbjMyX3ByaW50aW5nX3N1cmZhY2VfY3JlYXRlKHRhcmdldERD
KTsgLy8gbWV0YWZpbGUKICAgICAKLSAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGN0eCA9
IChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCopY2Fpcm9fY3JlYXRlKHByaW50U3VyZmFjZSk7Ci0g
ICAgaWYgKCFwY3R4KSB7CisgICAgY2Fpcm9fdCogY3IgPSBjYWlyb19jcmVhdGUocHJpbnRTdXJm
YWNlKTsKKyAgICBpZiAoIWNyKSB7CiAgICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShwcmlu
dFN1cmZhY2UpOyAgICAKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICB9Ci0gICAgCisKKyAg
ICBQbGF0Zm9ybUNvbnRleHRDYWlybyBwbGF0Zm9ybUNvbnRleHQoY3IpOworICAgIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0KiBwY3R4ID0gJnBsYXRmb3JtQ29udGV4dDsKKyAgICBjYWlyb19kZXN0
cm95KGNyKTsKKwogICAgIGlmIChjdHgpIHsKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHByZXZp
ZXcsIHRoZSBXaW5kb3dzIEhEQyB3YXMgc2VudCB3aXRoIHNjYWxpbmcgaW5mb3JtYXRpb24uCiAg
ICAgICAgIC8vIFJldHJpZXZlIGl0IGFuZCByZXNldCBpdCBzbyB0aGF0IGl0IGRyYXdzIHByb3Bl
cmx5LiAgVGhpcyBpcyBhIHdvcmthcm91bmQKICAgICAgICAgLy8gZm9yIGEgYnVnIGluIENhaXJv
IChzZWUgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgxNjEp
Ci0gICAgICAgIHNldENhaXJvVHJhbnNmb3JtVG9QcmV2aWV3SERDKHBjdHgsIHRhcmdldERDKTsK
KyAgICAgICAgc2V0Q2Fpcm9UcmFuc2Zvcm1Ub1ByZXZpZXdIREMoY3IsIHRhcmdldERDKTsKICAg
ICB9CiAgICAgCiAgICAgY2Fpcm9fc3VyZmFjZV9zZXRfZmFsbGJhY2tfcmVzb2x1dGlvbihwcmlu
dFN1cmZhY2UsIDcyLjAsIDcyLjApOwpAQCAtMjM5Miw3ICsyMzk3LDYgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c3Bvb2xQYWdlcygKICAgICAgICAgc3Bvb2xQYWdlKHBj
dHgsICZzcG9vbEN0eCwgcHJpbnREQywgdWkuZ2V0KCksIGhlYWRlckhlaWdodCwgZm9vdGVySGVp
Z2h0LCBpaSwgcGFnZUNvdW50KTsKIAogI2lmIFBMQVRGT1JNKENBSVJPKQotICAgIGNhaXJvX2Rl
c3Ryb3kocGN0eCk7CiAgICAgY2Fpcm9fc3VyZmFjZV9maW5pc2gocHJpbnRTdXJmYWNlKTsKICAg
ICBBU1NFUlQoIWNhaXJvX3N1cmZhY2Vfc3RhdHVzKHByaW50U3VyZmFjZSkpOwogICAgIGNhaXJv
X3N1cmZhY2VfZGVzdHJveShwcmludFN1cmZhY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmgKaW5kZXggNzQy
ZWQ0ZjA1Mzg3YWMzYWY5NGE5NTI2Y2VhOGEzNjhiMDZjNDk5Ni4uOTE1OGZiMzQ1YmE0MWU0ZTg0
YjY5ODU4NDkxMjYxODY2ODZjYTM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
RnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCkBAIC02Miw3ICs2Miwx
MCBAQCB0eXBlZGVmIHN0cnVjdCBPcGFxdWVKU1ZhbHVlKiBKU09iamVjdFJlZjsKICNpZiBQTEFU
Rk9STShDRykKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dDsKICNlbGlmIFBMQVRGT1JNKENBSVJPKQotdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0OworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUGxhdGZvcm1Db250
ZXh0Q2Fpcm87Cit9Cit0eXBlZGVmIGNsYXNzIFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJv
IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwogI2VuZGlmCiAKIGNsYXNzIFdlYkZyYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdyYXBoaWNzQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAzZDMxOWU0
ZGM4ZGFiZjAwZjkzMTFiYzk0ZTYwZDBlY2FjYzAwZjQxLi41NDVkNDQ4OTAyM2RlYWZiMzY5YzAw
MjcyMTFhM2M4Mjg0ODZmNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
R3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViR3JhcGhp
Y3NDb250ZXh0LmNwcApAQCAtMjYsNiArMjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJHcmFwaGljc0NvbnRleHQuaCIKIAorI2lmIFBMQVRGT1JNKEdUSykgCisjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvbnRleHRDYWlyby5oPiAKKyNlbmRpZiAKKwogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzQsNyArMzgsNyBA
QCBXZWJHcmFwaGljc0NvbnRleHQ6OldlYkdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCkKICNpZiBQTEFURk9STShDRykKICAgICA6IG1fcGxhdGZvcm1Db250
ZXh0KGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpCiAjZWxpZiBQTEFURk9STShH
VEspCi0gICAgOiBtX3BsYXRmb3JtQ29udGV4dChncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpKQorICAgIDogbV9wbGF0Zm9ybUNvbnRleHQoZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+Y3IoKSkKICNlbmRpZgogewogfQo=
</data>
<flag name="review"
          id="80579"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>