<?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>58003</bug_id>
          
          <creation_ts>2011-04-06 18:04:26 -0700</creation_ts>
          <short_desc>chromium support for glSetLatch and glWaitLatch between 3D contexts</short_desc>
          <delta_ts>2011-04-11 19:30:24 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="John Bates">jbates</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>kbr</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>381020</commentid>
    <comment_count>0</comment_count>
    <who name="John Bates">jbates</who>
    <bug_when>2011-04-06 18:04:26 -0700</bug_when>
    <thetext>The chromium code needs to synchronize between child and parent contexts. For example, currently the WebGL FBO is copied into the compositor context texture without synchronization. So the compositor may render the wrong frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381422</commentid>
    <comment_count>1</comment_count>
      <attachid>88651</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2011-04-07 09:46:47 -0700</bug_when>
    <thetext>Created attachment 88651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381441</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-07 10:04:06 -0700</bug_when>
    <thetext>Attachment 88651 did not build on chromium:
Build output: http://queues.webkit.org/results/8341707</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381636</commentid>
    <comment_count>3</comment_count>
      <attachid>88683</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2011-04-07 13:33:38 -0700</bug_when>
    <thetext>Created attachment 88683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382706</commentid>
    <comment_count>4</comment_count>
      <attachid>88914</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2011-04-08 18:56:16 -0700</bug_when>
    <thetext>Created attachment 88914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383570</commentid>
    <comment_count>5</comment_count>
      <attachid>88914</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-11 15:03:16 -0700</bug_when>
    <thetext>Comment on attachment 88914
Patch

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

This looks very good overall and as we&apos;ve discussed offline the results are excellent, fixing multiple longstanding bugs. We should do the API change to wait/setLatchCHROMIUM that we&apos;ve discussed offline. A few other relatively minor issues. Don&apos;t forget to regenerate the ChangeLogs. Also, I suggest using &quot;webkit-patch upload&quot; to upload your patch the next time as it will take care of some things like style checks.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Reviewed by Ken Russell.

Leave this line as &quot;Reviewed by NOBODY (OOPS!)&quot;. The commit scripts will rewrite it after it&apos;s been reviewed.

&gt; Source/WebCore/platform/graphics/chromium/Extensions3DChromium.h:73
&gt; +    void waitLatchCHROMIUM(GC3Dint shmId, GC3Duint latchId);
&gt; +    void setLatchCHROMIUM(GC3Dint shmId, GC3Duint latchId);

Per offline discussion, let&apos;s remove the shmId argument now.

&gt; Source/WebCore/platform/graphics/chromium/GLES2Canvas.cpp:177
&gt; -        m_a(a), m_b(b), m_c(c), m_d(d) 
&gt; +        m_a(a), m_b(b), m_c(c), m_d(d)

This whitespace-only change doesn&apos;t belong in this patch.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:276
&gt; +    // Before drawLayers:

This comment seems useless.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:277
&gt; +    if (hardwareCompositing()) {

Even though your current code runs, for correctness, the following block of code needs to be run against the layer renderer&apos;s GraphicsContext3D and all of the child layers&apos; contexts:

if (m_context-&gt;getExtensions()-&gt;supports(&quot;GL_CHROMIUM_latch&quot;))
    m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_CHROMIUM_latch&quot;);

and the code which uses getChildToParentLatchCHROMIUM and waitLatchCHROMIUM needs to be guarded by a test:

if (extensions-&gt;supports(&quot;GL_CHROMIUM_latch&quot;))

See e.g. Source/WebCore/platform/graphics/gpu/DrawingBuffer.cpp.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:278
&gt; +        // The multithreaded compositor case does not work as long as

Change this to &quot;FIXME: ... case will not work&quot;.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:281
&gt; +        // potentially clobbering the parent texture that is beibng renderered

typo: beibng

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:303
&gt; +    // After drawLayers:

This comment also seems useless.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:353
&gt; +    // Before updateCompositorResourcesRecursive, when the compositor runs in

Please add a FIXME here.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:967
&gt; -    
&gt; +

This whitespace-only change doesn&apos;t belong in this patch. I suggest you try to configure your editor.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1125
&gt; +// TODO(jbates): when compositor is multithreaded and copyTexImage2D bug is fixed,

WebKit uses FIXME rather than TODO().

&gt; Source/WebKit/chromium/ChangeLog:3
&gt; +        Reviewed by Ken Russell.

Per above, leave the OOPS line.

&gt; Source/WebKit/chromium/public/WebGraphicsContext3D.h:175
&gt; +    virtual void getParentToChildLatchCHROMIUM(WGC3Duint* latchId) {} // TODO = 0;
&gt; +    virtual void getChildToParentLatchCHROMIUM(WGC3Duint* latchId) {} // TODO = 0;
&gt; +    virtual void waitLatchCHROMIUM(WGC3Dint shmId, WGC3Duint latchId) {} // TODO = 0;
&gt; +    virtual void setLatchCHROMIUM(WGC3Dint shmId, WGC3Duint latchId) {} // TODO = 0;

TODO -&gt; FIXME:

Also, per offline discussion, let&apos;s remove the shmId argument, as it&apos;s being removed from the implementation.

&gt; Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp:254
&gt; -    
&gt; +

Whitespace-only change.

&gt; Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp:806
&gt; +DELEGATE_TO_IMPL_2(waitLatchCHROMIUM, GC3Dint, GC3Duint)
&gt; +DELEGATE_TO_IMPL_2(setLatchCHROMIUM, GC3Dint, GC3Duint)

Per offline discussion, remove first argument.

&gt; Source/WebKit/chromium/src/GraphicsContext3DInternal.h:277
&gt; +    void waitLatchCHROMIUM(GC3Dint shmId, GC3Duint latchId);
&gt; +    void setLatchCHROMIUM(GC3Dint shmId, GC3Duint latchId);

Remove shmId argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383650</commentid>
    <comment_count>6</comment_count>
      <attachid>89115</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2011-04-11 16:19:44 -0700</bug_when>
    <thetext>Created attachment 89115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383673</commentid>
    <comment_count>7</comment_count>
      <attachid>88914</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2011-04-11 16:38:20 -0700</bug_when>
    <thetext>Comment on attachment 88914
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        Reviewed by Ken Russell.
&gt; 
&gt; Leave this line as &quot;Reviewed by NOBODY (OOPS!)&quot;. The commit scripts will rewrite it after it&apos;s been reviewed.

done

&gt;&gt; Source/WebCore/platform/graphics/chromium/Extensions3DChromium.h:73
&gt;&gt; +    void setLatchCHROMIUM(GC3Dint shmId, GC3Duint latchId);
&gt; 
&gt; Per offline discussion, let&apos;s remove the shmId argument now.

done

&gt;&gt; Source/WebCore/platform/graphics/chromium/GLES2Canvas.cpp:177
&gt;&gt; +        m_a(a), m_b(b), m_c(c), m_d(d)
&gt; 
&gt; This whitespace-only change doesn&apos;t belong in this patch.

done

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:276
&gt;&gt; +    // Before drawLayers:
&gt; 
&gt; This comment seems useless.

It&apos;s meant to correlate the code with drawLayers, so that people aren&apos;t inclined to move it up or down, etc.

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:277
&gt;&gt; +    if (hardwareCompositing()) {
&gt; 
&gt; Even though your current code runs, for correctness, the following block of code needs to be run against the layer renderer&apos;s GraphicsContext3D and all of the child layers&apos; contexts:
&gt; 
&gt; if (m_context-&gt;getExtensions()-&gt;supports(&quot;GL_CHROMIUM_latch&quot;))
&gt;     m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_CHROMIUM_latch&quot;);
&gt; 
&gt; and the code which uses getChildToParentLatchCHROMIUM and waitLatchCHROMIUM needs to be guarded by a test:
&gt; 
&gt; if (extensions-&gt;supports(&quot;GL_CHROMIUM_latch&quot;))
&gt; 
&gt; See e.g. Source/WebCore/platform/graphics/gpu/DrawingBuffer.cpp.

done

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:278
&gt;&gt; +        // The multithreaded compositor case does not work as long as
&gt; 
&gt; Change this to &quot;FIXME: ... case will not work&quot;.

done

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:281
&gt;&gt; +        // potentially clobbering the parent texture that is beibng renderered
&gt; 
&gt; typo: beibng

done

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:353
&gt;&gt; +    // Before updateCompositorResourcesRecursive, when the compositor runs in
&gt; 
&gt; Please add a FIXME here.

done

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:967
&gt;&gt; +
&gt; 
&gt; This whitespace-only change doesn&apos;t belong in this patch. I suggest you try to configure your editor.

done

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1125
&gt;&gt; +// TODO(jbates): when compositor is multithreaded and copyTexImage2D bug is fixed,
&gt; 
&gt; WebKit uses FIXME rather than TODO().

done

&gt;&gt; Source/WebKit/chromium/ChangeLog:3
&gt;&gt; +        Reviewed by Ken Russell.
&gt; 
&gt; Per above, leave the OOPS line.

done

&gt;&gt; Source/WebKit/chromium/public/WebGraphicsContext3D.h:175
&gt;&gt; +    virtual void setLatchCHROMIUM(WGC3Dint shmId, WGC3Duint latchId) {} // TODO = 0;
&gt; 
&gt; TODO -&gt; FIXME:
&gt; 
&gt; Also, per offline discussion, let&apos;s remove the shmId argument, as it&apos;s being removed from the implementation.

done

&gt;&gt; Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp:254
&gt;&gt; +
&gt; 
&gt; Whitespace-only change.

done

&gt;&gt; Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp:806
&gt;&gt; +DELEGATE_TO_IMPL_2(setLatchCHROMIUM, GC3Dint, GC3Duint)
&gt; 
&gt; Per offline discussion, remove first argument.

done

&gt;&gt; Source/WebKit/chromium/src/GraphicsContext3DInternal.h:277
&gt;&gt; +    void setLatchCHROMIUM(GC3Dint shmId, GC3Duint latchId);
&gt; 
&gt; Remove shmId argument.

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383675</commentid>
    <comment_count>8</comment_count>
      <attachid>89120</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2011-04-11 16:47:26 -0700</bug_when>
    <thetext>Created attachment 89120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383685</commentid>
    <comment_count>9</comment_count>
      <attachid>89120</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-11 16:59:47 -0700</bug_when>
    <thetext>Comment on attachment 89120
Patch

Looks great. Fantastic work on this. I think it&apos;s going to solve a lot of longstanding problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383773</commentid>
    <comment_count>10</comment_count>
      <attachid>89120</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-11 19:30:18 -0700</bug_when>
    <thetext>Comment on attachment 89120
Patch

Clearing flags on attachment: 89120

Committed r83552: &lt;http://trac.webkit.org/changeset/83552&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383774</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-11 19:30:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88651</attachid>
            <date>2011-04-07 09:46:47 -0700</date>
            <delta_ts>2011-04-07 13:33:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58003-20110407094645.patch</filename>
            <type>text/plain</type>
            <size>23971</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMwOTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OGRmYjRjOGNjN2ZhMWE0
NWQzNTA1MTNjN2EyZjBmZTgyYjc5NDIyLi5jNjg5NzYyNGJlYjM1YWVlMGFiM2FjZTEzOTA2MDA0
YjliOTFjMDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDQtMDcgIEpvaG4g
QmF0ZXMgIDxqYmF0ZXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW4gUnVz
c2VsbC4KKworICAgICAgICBjaHJvbWl1bSBzdXBwb3J0IGZvciBnbFNldExhdGNoIGFuZCBnbFdh
aXRMYXRjaCBiZXR3ZWVuIDNEIGNvbnRleHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01ODAwMworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhczJETGF5ZXJDaHJvbWl1bTo6fkNhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnNldERyYXdpbmdCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJv
bWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OnVwZGF0ZUFuZERyYXdMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjphZGRDaGlsZENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpyZW1vdmVDaGlsZENvbnRleHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06On5XZWJHTExheWVyQ2hyb21pdW0pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVy
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5oOgorCiAyMDExLTA0LTA2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcAppbmRleCA0Y2IxMTlhNGQ3ZThkNzEzNjk2NTliZDIwZmRhNWYx
MWRkNTAxYzE5Li40YThmOTM5ZjkyOWIzZTQ3MjM0MzQxZmJjZTExNmVlMWUwNDQwMTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMy
RExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAog
I2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgorI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTU0LDYgKzU1LDggQEAgQ2FudmFzMkRMYXllckNocm9taXVtOjp+Q2FudmFzMkRM
YXllckNocm9taXVtKCkKIHsKICAgICBpZiAobV90ZXh0dXJlSWQpCiAgICAgICAgIGxheWVyUmVu
ZGVyZXJDb250ZXh0KCktPmRlbGV0ZVRleHR1cmUobV90ZXh0dXJlSWQpOworICAgIGlmIChtX2Ry
YXdpbmdCdWZmZXIgJiYgbGF5ZXJSZW5kZXJlcigpKQorICAgICAgICBsYXllclJlbmRlcmVyKCkt
PnJlbW92ZUNoaWxkQ29udGV4dChtX2RyYXdpbmdCdWZmZXItPmdyYXBoaWNzQ29udGV4dDNEKCkp
OwogfQogCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygpCkBAIC0xMDMsMTAgKzEwNiwyNyBAQCB1bnNpZ25lZCBDYW52YXMyRExheWVyQ2hyb21p
dW06OnRleHR1cmVJZCgpIGNvbnN0CiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6c2V0RHJh
d2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyKQogewogICAgIGlmIChkcmF3
aW5nQnVmZmVyICE9IG1fZHJhd2luZ0J1ZmZlcikgeworICAgICAgICBpZiAobV9kcmF3aW5nQnVm
ZmVyICYmIGxheWVyUmVuZGVyZXIoKSkKKyAgICAgICAgICAgIGxheWVyUmVuZGVyZXIoKS0+cmVt
b3ZlQ2hpbGRDb250ZXh0KG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKSk7CisK
ICAgICAgICAgbV9kcmF3aW5nQnVmZmVyID0gZHJhd2luZ0J1ZmZlcjsKICAgICAgICAgbV90ZXh0
dXJlQ2hhbmdlZCA9IHRydWU7CisKKyAgICAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlciAmJiBsYXll
clJlbmRlcmVyKCkpCisgICAgICAgICAgICBsYXllclJlbmRlcmVyKCktPmFkZENoaWxkQ29udGV4
dChtX2RyYXdpbmdCdWZmZXItPmdyYXBoaWNzQ29udGV4dDNEKCkpOwogICAgIH0KIH0KIAordm9p
ZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBuZXdMYXllclJlbmRlcmVyKQoreworICAgIGlmIChtX2RyYXdpbmdCdWZmZXIgJiYg
bGF5ZXJSZW5kZXJlcigpKQorICAgICAgICBsYXllclJlbmRlcmVyKCktPnJlbW92ZUNoaWxkQ29u
dGV4dChtX2RyYXdpbmdCdWZmZXItPmdyYXBoaWNzQ29udGV4dDNEKCkpOworCisgICAgTGF5ZXJD
aHJvbWl1bTo6c2V0TGF5ZXJSZW5kZXJlcihuZXdMYXllclJlbmRlcmVyKTsKKworICAgIGlmICht
X2RyYXdpbmdCdWZmZXIgJiYgbGF5ZXJSZW5kZXJlcigpKQorICAgICAgICBsYXllclJlbmRlcmVy
KCktPmFkZENoaWxkQ29udGV4dChtX2RyYXdpbmdCdWZmZXItPmdyYXBoaWNzQ29udGV4dDNEKCkp
OworfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRleCA4MWIxMThjNWI1ZGZlOWMzMWExZWIyNDlk
NTk5MmRiNDI2ZWQyMDk0Li40MjI0YWIxZGI5MDY1ZmJlYWVkNTBiMDc1YzI0MmQ1MzRlNDY5NzU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNTIsNiArNTIsOCBAQCBw
dWJsaWM6CiAgICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREcmF3
aW5nQnVmZmVyKERyYXdpbmdCdWZmZXIqKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclJl
bmRlcmVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IENhbnZhczJETGF5ZXJDaHJvbWl1bShEcmF3aW5nQnVmZmVyKiwgR3JhcGhpY3NMYXllckNocm9t
aXVtKiBvd25lcik7CiAgICAgRHJhd2luZ0J1ZmZlciogbV9kcmF3aW5nQnVmZmVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9u
czNEQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0V4dGVuc2lvbnMzRENocm9taXVtLmgKaW5kZXggM2IwZmRiZmRkNmJlMTNjNDlhZmU3YzJjMmFm
NDExNTc2NjgyNTFmMy4uYTEyNTQ1NDg4NmFhOGFhMThkYzI3MjYwOTM3NDIyMmY4ZjkyNTY1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0
ZW5zaW9uczNEQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCkBAIC02Niw2ICs2NiwxNiBAQCBwdWJs
aWM6CiAgICAgLy8gR0xfQ0hST01JVU1fY29weV90ZXh0dXJlX3RvX3BhcmVudF90ZXh0dXJlCiAg
ICAgdm9pZCBjb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKHVuc2lnbmVkIHRleHR1
cmUsIHVuc2lnbmVkIHBhcmVudFRleHR1cmUpOwogCisgICAgLy8gTGF0Y2ggc3VwcG9ydAorICAg
IHZvaWQgZ2V0TGF0Y2hQYXJlbnRUb0NoaWxkQ0hST01JVU0oR0MzRGludCogdGhpc1NobUlkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGludCogb3RoZXJTaG1J
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0R1aW50KiBsYXRj
aElkKTsKKyAgICB2b2lkIGdldExhdGNoQ2hpbGRUb1BhcmVudENIUk9NSVVNKEdDM0RpbnQqIHRo
aXNTaG1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RpbnQq
IG90aGVyU2htSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNE
dWludCogbGF0Y2hJZCk7CisgICAgdm9pZCB3YWl0TGF0Y2hDSFJPTUlVTShHQzNEaW50IHNobUlk
LCBHQzNEdWludCBsYXRjaElkKTsKKyAgICB2b2lkIHNldExhdGNoQ0hST01JVU0oR0MzRGludCBz
aG1JZCwgR0MzRHVpbnQgbGF0Y2hJZCk7CisKIHByaXZhdGU6CiAgICAgLy8gSW5zdGFuY2VzIG9m
IHRoaXMgY2xhc3MgYXJlIHN0cmljdGx5IG93bmVkIGJ5IHRoZSBHcmFwaGljc0NvbnRleHQzRCBp
bXBsZW1lbnRhdGlvbiBhbmQgZG8gbm90CiAgICAgLy8gbmVlZCB0byBiZSBpbnN0YW50aWF0ZWQg
YnkgYW55IG90aGVyIGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApp
bmRleCAyNzUzMDMzYzEyMTQzYWRiYWQ0OWFhZDhmNjNlNWU3MWFmNmYwNDhhLi5mNzNlNDYxY2Qy
MGNiMzAzY2FkOGNkZTU0YTgwMGI2OWI1MTBhNGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJJ
bXBsLmgiCiAjaW5jbHVkZSAiQ2FudmFzMkRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiRXh0
ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJH
ZW9tZXRyeUJpbmRpbmcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgpAQCAtMTE1
LDYgKzExNiw3IEBAIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRlCiAgICAgLCBtX29mZnNjcmVlbkZy
YW1lYnVmZmVySWQoMCkKICAgICAsIG1fY29tcG9zaXRlT2Zmc2NyZWVuKGZhbHNlKQogICAgICwg
bV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX2NoaWxkQ29udGV4dHNXZXJlQ29waWVkKGZhbHNl
KQogICAgICwgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSgwKQogewogICAgIG1faGFyZHdhcmVDb21w
b3NpdGluZyA9IGluaXRpYWxpemVTaGFyZWRPYmplY3RzKCk7CkBAIC0yNzEsOCArMjczLDUzIEBA
IHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVBbmREcmF3TGF5ZXJzKCkKICAgICBM
YXllckxpc3QgcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICB1cGRhdGVMYXllcnMocmVuZGVy
U3VyZmFjZUxheWVyTGlzdCk7CiAKKyAgICAvLyAoYmVmb3JlIGRyYXdMYXllcnMpCisgICAgLy8g
SWYgaGFyZHdhcmVDb21wb3NpdGluZzoKKyAgICAvLyAgaWYgYW55dGhpbmcgd2FzIGRvbmUgb24g
dGhlIGNoaWxkIGNvbnRleHRzLAorICAgIC8vICAgIGdsV2FpdExhdGNoKE9mZnNjcmVlbi0+Q29t
cG9zaXRvcikKKyAgICAvLyAgaWYgbm90IGNoYW5nZWQsIG5lZWQgdG8gZG86CisgICAgLy8gICAg
Z2xXYWl0TGF0Y2goQ29tcG9zaXRvci0+T2Zmc2NyZWVuKQorICAgIC8vICAgICh0aGlzIGNhdGNo
ZXMgdGhlIHByZXZpb3VzIGZyYW1lJ3MgZ2xTZXRMYXRjaChDb21wb3NpdG9yLT5PZmZzY3JlZW4p
LAorICAgIC8vICAgICB3aGljaCB3YXMgbm90IGNhdWdodCBieSB0aGUgb2Zmc2NyZWVuIGNvbnRl
eHQgYmVjYXVzZSBpdCBuZXZlciByYW4pCisgICAgaWYgKGhhcmR3YXJlQ29tcG9zaXRpbmcoKSkg
eworICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogcGFyZW50RXh0ID0gc3RhdGljX2Nhc3Q8
RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAg
ICAgIC8vIGZvciBlYWNoIGNoaWxkIGNvbnRleHQsIGdsV2FpdExhdGNoKE9mZnNjcmVlbi0+Q29t
cG9zaXRvcikKKyAgICAgICAgQ2hpbGRDb250ZXh0TWFwOjppdGVyYXRvciBpID0gbV9jaGlsZENv
bnRleHRzLmJlZ2luKCk7CisgICAgICAgIGZvciAoOyBpICE9IG1fY2hpbGRDb250ZXh0cy5lbmQo
KTsgKytpKSB7CisgICAgICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogY2hpbGRFeHQgPSBz
dGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGktPmZpcnN0LT5nZXRFeHRlbnNpb25z
KCkpOworICAgICAgICAgICAgR0MzRGludCB0aGlzU2htSWQsIG90aGVyU2htSWQ7CisgICAgICAg
ICAgICBHQzNEdWludCBsYXRjaElkOworICAgICAgICAgICAgaWYgKG1fY2hpbGRDb250ZXh0c1dl
cmVDb3BpZWQpCisgICAgICAgICAgICAgIGNoaWxkRXh0LT5nZXRMYXRjaENoaWxkVG9QYXJlbnRD
SFJPTUlVTSgmdGhpc1NobUlkLCAmb3RoZXJTaG1JZCwgJmxhdGNoSWQpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICBjaGlsZEV4dC0+Z2V0TGF0Y2hQYXJlbnRUb0NoaWxkQ0hST01J
VU0oJnRoaXNTaG1JZCwgJm90aGVyU2htSWQsICZsYXRjaElkKTsKKyAgICAgICAgICAgIC8vIGNh
bGxpbmcgd2FpdCBsYXRjaCBpbiBwYXJlbnQgY29udGV4dCAob3RoZXJTaG1JZCkKKyAgICAgICAg
ICAgIHBhcmVudEV4dC0+d2FpdExhdGNoQ0hST01JVU0ob3RoZXJTaG1JZCwgbGF0Y2hJZCk7Cisg
ICAgICAgIH0KKyAgICAgICAgLy8gc2V0dGluZyB0aGlzIHRvIGZhbHNlIG5vdywgYmVjYXVzZSB0
aGUgc2V0IGxhdGNoIGJlbG93IGlzIHRoZSBzYW1lCisgICAgICAgIC8vIHJlZ2FyZGxlc3Mgb2Yg
d2hldGhlciBjaGlsZCBjb250ZXh0cyB1cGRhdGVkIHRoZSBwYXJlbnQgdGV4dHVyZS4KKyAgICAg
ICAgbV9jaGlsZENvbnRleHRzV2VyZUNvcGllZCA9IGZhbHNlOworICAgIH0KKwogICAgIGRyYXdM
YXllcnMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKKyAgICAvLyAoYWZ0ZXIgZHJhd0xheWVy
cykKKyAgICAvLyBJZiBoYXJkd2FyZUNvbXBvc2l0aW5nOgorICAgIC8vICBjYWxsIGdsU2V0TGF0
Y2goQ29tcG9zaXRvci0+T2Zmc2NyZWVuKQorICAgIGlmIChoYXJkd2FyZUNvbXBvc2l0aW5nKCkp
IHsKKyAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIHBhcmVudEV4dCA9IHN0YXRpY19jYXN0
PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAg
ICAgICAvLyBmb3IgZWFjaCBjaGlsZCBjb250ZXh0LCBnbFdhaXRMYXRjaChPZmZzY3JlZW4tPkNv
bXBvc2l0b3IpCisgICAgICAgIENoaWxkQ29udGV4dE1hcDo6aXRlcmF0b3IgaSA9IG1fY2hpbGRD
b250ZXh0cy5iZWdpbigpOworICAgICAgICBmb3IgKDsgaSAhPSBtX2NoaWxkQ29udGV4dHMuZW5k
KCk7ICsraSkgeworICAgICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGNoaWxkRXh0ID0g
c3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihpLT5maXJzdC0+Z2V0RXh0ZW5zaW9u
cygpKTsKKyAgICAgICAgICAgIEdDM0RpbnQgdGhpc1NobUlkLCBvdGhlclNobUlkOworICAgICAg
ICAgICAgR0MzRHVpbnQgbGF0Y2hJZDsKKyAgICAgICAgICAgIGNoaWxkRXh0LT5nZXRMYXRjaFBh
cmVudFRvQ2hpbGRDSFJPTUlVTSgmdGhpc1NobUlkLCAmb3RoZXJTaG1JZCwgJmxhdGNoSWQpOwor
ICAgICAgICAgICAgLy8gY2FsbGluZyBzZXQgbGF0Y2ggaW4gcGFyZW50IGNvbnRleHQgKG90aGVy
U2htSWQpCisgICAgICAgICAgICBwYXJlbnRFeHQtPnNldExhdGNoQ0hST01JVU0ob3RoZXJTaG1J
ZCwgbGF0Y2hJZCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAoaXNDb21wb3NpdGluZ09m
ZnNjcmVlbigpKQogICAgICAgICBjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpOwogfQpA
QCAtMzA5LDcgKzM1Niw0MSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5
ZXJzKExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIAogICAgIHBhaW50Q29udGVu
dHNSZWN1cnNpdmUobV9yb290TGF5ZXIuZ2V0KCkpOwogCisgICAgLy8gRm9yIG9mZnNjcmVlbiBH
TCBjb250ZXh0cywgd2UncmUgYWJvdXQgdG8gY29weSB0aGUgZGlydHkgRkJPcyB0byB0aGUKKyAg
ICAvLyAgY29tcG9zaXRvcidzIHRleHR1cmVzIHZpYSB0aGUgY2hpbGQgR0wgY29udGV4dHMuCisg
ICAgLy8gIGlmIGFueXRoaW5nIHdhcyBkb25lIG9uIHRoZSBzaGFyZWQgbGF5ZXJzLAorICAgIC8v
ICAgIGdsV2FpdExhdGNoKENvbXBvc2l0b3ItPk9mZnNjcmVlbikKKyAgICBpZiAoaGFyZHdhcmVD
b21wb3NpdGluZygpKSB7CisgICAgICAgIC8vIFdoZW4gdGhlIGNvbXBvc2l0b3IgaXMgZHJhd2lu
ZyBpbiBhIHNlcGFyYXRlIHRocmVhZCwgdGhpcyBib29sIHdpbGwKKyAgICAgICAgLy8gbmVlZCB0
byBjb3B5IG92ZXIgZHVyaW5nIHRoZSBzeW5jaHJvbm91cyAnY29tbWl0JyBzdGFnZS4KKyAgICAg
ICAgbV9jaGlsZENvbnRleHRzV2VyZUNvcGllZCA9IHRydWU7CisgIAorICAgICAgICAvLyBmb3Ig
ZWFjaCBjaGlsZCBjb250ZXh0LCBnbFdhaXRMYXRjaChDb21wb3NpdG9yLT5PZmZzY3JlZW4pCisg
ICAgICAgIENoaWxkQ29udGV4dE1hcDo6aXRlcmF0b3IgaSA9IG1fY2hpbGRDb250ZXh0cy5iZWdp
bigpOworICAgICAgICBmb3IgKDsgaSAhPSBtX2NoaWxkQ29udGV4dHMuZW5kKCk7ICsraSkgewor
ICAgICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dCA9IHN0YXRpY19jYXN0PEV4dGVu
c2lvbnMzRENocm9taXVtKj4oaS0+Zmlyc3QtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAgICAg
ICBHQzNEaW50IHRoaXNTaG1JZCwgb3RoZXJTaG1JZDsKKyAgICAgICAgICAgIEdDM0R1aW50IGxh
dGNoSWQ7CisgICAgICAgICAgICBleHQtPmdldExhdGNoUGFyZW50VG9DaGlsZENIUk9NSVVNKCZ0
aGlzU2htSWQsICZvdGhlclNobUlkLCAmbGF0Y2hJZCk7CisgICAgICAgICAgICAvLyBjYWxsaW5n
IHdhaXQgbGF0Y2ggaW4gY2hpbGQgY29udGV4dCAodGhpc1NobUlkKQorICAgICAgICAgICAgZXh0
LT53YWl0TGF0Y2hDSFJPTUlVTSh0aGlzU2htSWQsIGxhdGNoSWQpOworICAgICAgICB9CisgICAg
fQogICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXNSZWN1cnNpdmUobV9yb290TGF5ZXIuZ2V0
KCkpOworICAgIC8vICBpZiBhbnl0aGluZyB3YXMgZG9uZSBvbiB0aGUgc2hhcmVkIGxheWVycywK
KyAgICAvLyAgICBnbFNldExhdGNoKE9mZnNjcmVlbi0+Q29tcG9zaXRvcikKKyAgICBpZiAoaGFy
ZHdhcmVDb21wb3NpdGluZygpKSB7CisgICAgICAgIC8vIGZvciBlYWNoIGNoaWxkIGNvbnRleHQs
IGdsU2V0TGF0Y2goT2Zmc2NyZWVuLT5Db21wb3NpdG9yKQorICAgICAgICBDaGlsZENvbnRleHRN
YXA6Oml0ZXJhdG9yIGkgPSBtX2NoaWxkQ29udGV4dHMuYmVnaW4oKTsKKyAgICAgICAgZm9yICg7
IGkgIT0gbV9jaGlsZENvbnRleHRzLmVuZCgpOyArK2kpIHsKKyAgICAgICAgICAgIEV4dGVuc2lv
bnMzRENocm9taXVtKiBleHQgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGkt
PmZpcnN0LT5nZXRFeHRlbnNpb25zKCkpOworICAgICAgICAgICAgR0MzRGludCB0aGlzU2htSWQs
IG90aGVyU2htSWQ7CisgICAgICAgICAgICBHQzNEdWludCBsYXRjaElkOworICAgICAgICAgICAg
ZXh0LT5nZXRMYXRjaENoaWxkVG9QYXJlbnRDSFJPTUlVTSgmdGhpc1NobUlkLCAmb3RoZXJTaG1J
ZCwgJmxhdGNoSWQpOworICAgICAgICAgICAgLy8gY2FsbGluZyB3YWl0IGxhdGNoIGluIGNoaWxk
IGNvbnRleHQgKHRoaXNTaG1JZCkKKyAgICAgICAgICAgIGV4dC0+c2V0TGF0Y2hDSFJPTUlVTSh0
aGlzU2htSWQsIGxhdGNoSWQpOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VM
YXllckxpc3QpCkBAIC0xMDI5LDYgKzExMTAsNDIgQEAgU3RyaW5nIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6bGF5ZXJUcmVlQXNUZXh0KCkgY29uc3QKICAgICByZXR1cm4gdHMucmVsZWFzZSgpOwog
fQogCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YWRkQ2hpbGRDb250ZXh0KFBhc3NSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IGN0eCkKK3sKKyAgICAvLyBUaGlzIGlzIGEgcmVmLWNvdW50
aW5nIG1hcCwgYmVjYXVzZSBzb21lIGNvbnRleHRzIGFyZSBzaGFyZWQgYnkgbXVsdGlwbGUKKyAg
ICAvLyBsYXllcnMgKHNwZWNpZmljYWxseSwgQ2FudmFzMkRMYXllckNocm9taXVtKS4KKworICAg
IC8vIGluc2VydCB0aGUgY3R4IHdpdGggYSBjb3VudCBvZiAxLCBvciByZXR1cm4gdGhlIGV4aXN0
aW5nIGl0ZXJhdG9yLgorICAgIHN0ZDo6cGFpcjxDaGlsZENvbnRleHRNYXA6Oml0ZXJhdG9yLCBi
b29sPiBpbnNlcnRfcmVzdWx0ID0gbV9jaGlsZENvbnRleHRzLmFkZChjdHgsIDEpOworICAgIGlm
ICghaW5zZXJ0X3Jlc3VsdC5zZWNvbmQpIHsKKyAgICAgIC8vIGFscmVhZHkgcHJlc2VudCBpbiBt
YXAsIHNvIGluY3JlbWVudAorICAgICAgKytpbnNlcnRfcmVzdWx0LmZpcnN0LT5zZWNvbmQ7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyBjaGlsZCBjb250ZXh0IC0gc2V0
IHRoZSBwYXJlbnQyY2hpbGQgbGF0Y2ggc28gdGhhdCBpdAorICAgICAgICAvLyBjYW4gY29udGlu
dWUgcGFzdCBpdHMgZmlyc3Qgd2FpdCBsYXRjaC4KKyAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21p
dW0qIGV4dCA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oaW5zZXJ0X3Jlc3Vs
dC5maXJzdC0+Zmlyc3QtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAgIEdDM0RpbnQgdGhpc1No
bUlkLCBvdGhlclNobUlkOworICAgICAgICBHQzNEdWludCBsYXRjaElkOworICAgICAgICBleHQt
PmdldExhdGNoUGFyZW50VG9DaGlsZENIUk9NSVVNKCZ0aGlzU2htSWQsICZvdGhlclNobUlkLCAm
bGF0Y2hJZCk7CisgICAgICAgIC8vIGNhbGxpbmcgc2V0IGxhdGNoIGluIGNoaWxkIGNvbnRleHQg
KHRoaXNTaG1JZCkKKyAgICAgICAgZXh0LT5zZXRMYXRjaENIUk9NSVVNKHRoaXNTaG1JZCwgbGF0
Y2hJZCk7CisgICAgfQorfQorCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVtb3ZlQ2hp
bGRDb250ZXh0KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGN0eCkKK3sKKyAgICBDaGls
ZENvbnRleHRNYXA6Oml0ZXJhdG9yIGkgPSBtX2NoaWxkQ29udGV4dHMuZmluZChjdHgpOworICAg
IGlmIChpICE9IG1fY2hpbGRDb250ZXh0cy5lbmQoKSkgeworICAgICAgICBpZiAoLS1pLT5zZWNv
bmQgPD0gMCkgeworICAgICAgICAgICAgLy8gY291bnQgcmVhY2hlZCB6ZXJvLCBzbyByZW1vdmUg
ZnJvbSBtYXAuCisgICAgICAgICAgICBtX2NoaWxkQ29udGV4dHMucmVtb3ZlKGkpOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gZXJyb3IKKyAgICAgICAgQVNTRVJUKDAgJiYg
Im1fY2hpbGRDb250ZXh0cyBtYXAgaGFzIG1pc21hdGNoZWQgYWRkL3JlbW92ZSBjYWxscyIpOwor
ICAgIH0KK30KKwogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmR1bXBSZW5kZXJTdXJmYWNl
cyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCwgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpIGNvbnN0
CiB7CiAgICAgaWYgKGxheWVyLT5jY0xheWVySW1wbCgpLT5yZW5kZXJTdXJmYWNlKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGM1MDkyYzFiOTI0ZThmMTk1YTVmMjVl
OGVjZmQyNTJjZGFlYTg1MGEuLjI1MmU5NzdjNzNkYTIzMTQ3MzAwNTgyNzdmYTE5Y2UyZjkzZTk4
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMzEsOCArMTMxLDEy
IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoKSBjb25zdDsKIAorICAg
IHZvaWQgYWRkQ2hpbGRDb250ZXh0KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKKyAg
ICB2b2lkIHJlbW92ZUNoaWxkQ29udGV4dChQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7
CisKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+IExh
eWVyTGlzdDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwg
aW50PiBDaGlsZENvbnRleHRNYXA7CiAKICAgICBleHBsaWNpdCBMYXllclJlbmRlcmVyQ2hyb21p
dW0oUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFBhc3NPd25QdHI8VGlsZVBhaW50SW50
ZXJmYWNlPiBjb250ZW50UGFpbnQsIFBhc3NPd25QdHI8VGlsZVBhaW50SW50ZXJmYWNlPiBzY3Jv
bGxiYXJQYWludCk7CiAKQEAgLTIyMiw2ICsyMjYsMTMgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8
Q0NIZWFkc1VwRGlzcGxheT4gbV9oZWFkc1VwRGlzcGxheTsKIAogICAgIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIENoaWxkQ29udGV4dE1hcCBtX2NoaWxkQ29udGV4
dHM7CisKKyAgICAvLyBJZiB0cnVlLCB0aGUgY2hpbGQgY29udGV4dHMgd2VyZSBjb3BpZWQgdG8g
dGhlIGNvbXBvc2l0b3IgdGV4dHVyZSB0YXJnZXRzCisgICAgLy8gYW5kIHRoZSBjb21wb3NpdG9y
IHdpbGwgbmVlZCB0byB3YWl0IG9uIHRoZSBwcm9wZXIgbGF0Y2hlcyBiZWZvcmUgdXNpbmcKKyAg
ICAvLyB0aGUgdGFyZ2V0IHRleHR1cmVzLiBJZiBmYWxzZSwgdGhlIGNvbXBvc2l0b3IgaXMgcmV1
c2luZyB0aGUgdGV4dHVyZXMKKyAgICAvLyBmcm9tIGxhc3QgZnJhbWUuCisgICAgYm9vbCBtX2No
aWxkQ29udGV4dHNXZXJlQ29waWVkOwogCiAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiBtX2Rl
ZmF1bHRSZW5kZXJTdXJmYWNlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDY1MmU3NTI3YTY0ZTMyZGU1MWZiY2RiYzFjMjgwYjY0ZjI4ZWEzMzMuLmYzNmY3ODFhYWY2
MWFkOGQxZDU2NjdiMWVkZDU3ZmEwY2QzNWY1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmNwcApAQCAtNTEsNiArNTEsMTIgQEAgV2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVy
Q2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKIHsKIH0KIAorV2ViR0xMYXll
ckNocm9taXVtOjp+V2ViR0xMYXllckNocm9taXVtKCkKK3sKKyAgICBpZiAobV9jb250ZXh0ICYm
IGxheWVyUmVuZGVyZXIoKSkKKyAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT5yZW1vdmVDaGlsZENv
bnRleHQobV9jb250ZXh0KTsKK30KKwogdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoKQogewogICAgIGlmICghbV9jb250ZW50c0RpcnR5KQpAQCAtNzAs
NiArNzYsOSBAQCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygpCiAgICAgfQogICAgIC8vIFVwZGF0ZSB0aGUgY29udGVudHMgb2YgdGhlIHRleHR1cmUg
dXNlZCBieSB0aGUgY29tcG9zaXRvci4KICAgICBpZiAobV9jb250ZW50c0RpcnR5ICYmIG1fdGV4
dHVyZVVwZGF0ZWQpIHsKKyAgICAgICAgLy8gcHJlcGFyZVRleHR1cmUgY29waWVzIHRoZSBjb250
ZW50cyBvZiB0aGUgb2ZmLXNjcmVlbiByZW5kZXIgdGFyZ2V0IGludG8gdGhlIHRleHR1cmUKKyAg
ICAgICAgLy8gdXNlZCBieSB0aGUgY29tcG9zaXRvci4KKyAgICAgICAgLy8KICAgICAgICAgbV9j
b250ZXh0LT5wcmVwYXJlVGV4dHVyZSgpOwogICAgICAgICBtX2NvbnRleHQtPm1hcmtMYXllckNv
bXBvc2l0ZWQoKTsKICAgICAgICAgbV9jb250ZW50c0RpcnR5ID0gZmFsc2U7CkBAIC04NCw2ICs5
Myw5IEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjpzZXRUZXh0dXJlVXBkYXRlZCgpCiAKIHZv
aWQgV2ViR0xMYXllckNocm9taXVtOjpzZXRDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0KQogeworICAgIGlmIChtX2NvbnRleHQgJiYgbGF5ZXJSZW5kZXJlcigpKQorICAg
ICAgICBsYXllclJlbmRlcmVyKCktPnJlbW92ZUNoaWxkQ29udGV4dChtX2NvbnRleHQpOworCiAg
ICAgbV9jb250ZXh0ID0gY29uc3RfY2FzdDxHcmFwaGljc0NvbnRleHQzRCo+KGNvbnRleHQpOwog
CiAgICAgdW5zaWduZWQgaW50IHRleHR1cmVJZCA9IG1fY29udGV4dC0+cGxhdGZvcm1UZXh0dXJl
KCk7CkBAIC05Myw2ICsxMDUsMjAgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnNldENvbnRl
eHQoY29uc3QgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgfQogICAgIG1fdGV4dHVy
ZUlkID0gdGV4dHVyZUlkOwogICAgIG1fcHJlbXVsdGlwbGllZEFscGhhID0gbV9jb250ZXh0LT5n
ZXRDb250ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYTsKKworICAgIGlmIChsYXll
clJlbmRlcmVyKCkpCisgICAgICAgIGxheWVyUmVuZGVyZXIoKS0+YWRkQ2hpbGRDb250ZXh0KG1f
Y29udGV4dCk7Cit9CisKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVy
KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbmV3TGF5ZXJSZW5kZXJlcikKK3sKKyAgICBpZiAobV9j
b250ZXh0ICYmIGxheWVyUmVuZGVyZXIoKSkKKyAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT5yZW1v
dmVDaGlsZENvbnRleHQobV9jb250ZXh0KTsKKworICAgIExheWVyQ2hyb21pdW06OnNldExheWVy
UmVuZGVyZXIobmV3TGF5ZXJSZW5kZXJlcik7CisKKyAgICBpZiAobV9jb250ZXh0KQorICAgICAg
ICBuZXdMYXllclJlbmRlcmVyLT5hZGRDaGlsZENvbnRleHQobV9jb250ZXh0KTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCAzM2RiNzMwMjVkOGY3YjJmMDdjYWU2NDNl
Y2M2NGFlNGMwYzg2NTI1Li4zNDIyNzViNDZiM2U3OWVlYzIzMGFlMWIxZTAyYWZjY2UxMDdiZmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9X
ZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtNDQsMTIgKzQ0LDE3IEBAIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgV2ViR0xMYXllckNocm9taXVtIDogcHVibGljIENh
bnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdM
TGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIgPSAwKTsK
KworICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOworCiAgICAgdmlydHVhbCBib29s
IGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCk7CiAgICAgdm9pZCBzZXRUZXh0dXJlVXBk
YXRlZCgpOwogCiAgICAgdm9pZCBzZXRDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0KTsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclJlbmRlcmVyKExheWVyUmVuZGVy
ZXJDaHJvbWl1bSopOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBsYXll
clR5cGVBc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuICJXZWJHTExheWVyIjsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDJhYmZmZWRmNjlhYzQ1MWZiN2UwZDc0MGI3ZjhhNDM0NWY4
Y2Q2NjQuLjQ1OGMyYWUxMmEyZDQ3NmNkMzM0ZjkzMjM5OTU1M2EzMzkxODE1NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDQtMDcgIEpvaG4gQmF0
ZXMgIDxqYmF0ZXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW4gUnVzc2Vs
bC4KKworICAgICAgICBjaHJvbWl1bSBzdXBwb3J0IGZvciBnbFNldExhdGNoIGFuZCBnbFdhaXRM
YXRjaCBiZXR3ZWVuIDNEIGNvbnRleHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01ODAwMworCisgICAgICAgICogcHVibGljL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmg6CisgICAgICAgICogc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRENocm9taXVtOjpnZXRMYXRjaFBhcmVudFRvQ2hpbGRD
SFJPTUlVTSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RDaHJvbWl1bTo6Z2V0TGF0
Y2hDaGlsZFRvUGFyZW50Q0hST01JVU0pOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNE
Q2hyb21pdW06OndhaXRMYXRjaENIUk9NSVVNKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnMzRENocm9taXVtOjpzZXRMYXRjaENIUk9NSVVNKToKKyAgICAgICAgKiBzcmMvR3JhcGhpY3ND
b250ZXh0M0RDaHJvbWl1bS5jcHA6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWwuaDoKKwogMjAxMS0wNC0wNiAgQWxvayBQcml5YWRhcnNoaSAgPGFsb2twQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDk4
NGY3OWQyNWFhYWQ1N2E1NmU3YWViYTRmNDU5ODg2YzhlZWQ2YTguLmRhYjkzNjI1YjA0NGNhZWU1
YzY3Yjk5OGYyYmNkMGFkYzM3YTg0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTY4LDYgKzE2OCwxNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlckNIUk9NSVVNKFdHQzNEaW50
IHNyY1gwLCBXR0MzRGludCBzcmNZMCwgV0dDM0RpbnQgc3JjWDEsIFdHQzNEaW50IHNyY1kxLCBX
R0MzRGludCBkc3RYMCwgV0dDM0RpbnQgZHN0WTAsIFdHQzNEaW50IGRzdFgxLCBXR0MzRGludCBk
c3RZMSwgV0dDM0RiaXRmaWVsZCBtYXNrLCBXR0MzRGVudW0gZmlsdGVyKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUNIUk9NSVVNKFdHQzNEZW51
bSB0YXJnZXQsIFdHQzNEc2l6ZWkgc2FtcGxlcywgV0dDM0RlbnVtIGludGVybmFsZm9ybWF0LCBX
R0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCkgPSAwOwogCisgICAgLy8gTGF0Y2gg
c3VwcG9ydAorICAgIHZpcnR1YWwgdm9pZCBnZXRMYXRjaFBhcmVudFRvQ2hpbGRDSFJPTUlVTShX
R0MzRGludCogdGhpc1NobUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXR0MzRGludCogb3RoZXJTaG1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV0dDM0R1aW50KiBsYXRjaElkKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGdldExhdGNoQ2hpbGRUb1BhcmVudENIUk9NSVVNKFdHQzNEaW50KiB0aGlzU2ht
SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdHQzNE
aW50KiBvdGhlclNobUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXR0MzRHVpbnQqIGxhdGNoSWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2FpdExh
dGNoQ0hST01JVU0oV0dDM0RpbnQgc2htSWQsIFdHQzNEdWludCBsYXRjaElkKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldExhdGNoQ0hST01JVU0oV0dDM0RpbnQgc2htSWQsIFdHQzNEdWludCBs
YXRjaElkKSA9IDA7CisKICAgICAvLyBUaGUgZW50cnkgcG9pbnRzIGJlbG93IG1hcCBkaXJlY3Rs
eSB0byB0aGUgT3BlbkdMIEVTIDIuMCBBUEkuCiAgICAgLy8gU2VlOiBodHRwOi8vd3d3Lmtocm9u
b3Mub3JnL3JlZ2lzdHJ5L2dsZXMvCiAgICAgLy8gYW5kOiBodHRwOi8vd3d3Lmtocm9ub3Mub3Jn
L29wZW5nbGVzL3Nkay9kb2NzL21hbi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcAppbmRleCAzMDEwMWM3YTNlMGJlNmM2Zjk5MjQy
NGZlMDJlMDc2MTk3YjIwMjA5Li4zODlkZjQ5YTZlMGM1NWE4NTBjNTJlNGE1YThmNmVlMmVjYWQ4
YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNE
Q2hyb21pdW0uY3BwCkBAIC05Nyw2ICs5NywzMCBAQCB2b2lkIEV4dGVuc2lvbnMzRENocm9taXVt
Ojpjb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKHVuc2lnbmVkIHRleHR1cmUsCiAg
ICAgbV9pbnRlcm5hbC0+Y29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTSh0ZXh0dXJl
LCBwYXJlbnRUZXh0dXJlKTsKIH0KIAordm9pZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6Z2V0TGF0
Y2hQYXJlbnRUb0NoaWxkQ0hST01JVU0oR0MzRGludCogdGhpc1NobUlkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGludCogb3Ro
ZXJTaG1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdDM0R1aW50KiBsYXRjaElkKQoreworICAgIG1faW50ZXJuYWwtPmdldExhdGNo
UGFyZW50VG9DaGlsZENIUk9NSVVNKHRoaXNTaG1JZCwgb3RoZXJTaG1JZCwgbGF0Y2hJZCk7Cit9
CisKK3ZvaWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06OmdldExhdGNoQ2hpbGRUb1BhcmVudENIUk9N
SVVNKEdDM0RpbnQqIHRoaXNTaG1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RpbnQqIG90aGVyU2htSWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEdWludCog
bGF0Y2hJZCkKK3sKKyAgICBtX2ludGVybmFsLT5nZXRMYXRjaENoaWxkVG9QYXJlbnRDSFJPTUlV
TSh0aGlzU2htSWQsIG90aGVyU2htSWQsIGxhdGNoSWQpOworfQorCit2b2lkIEV4dGVuc2lvbnMz
RENocm9taXVtOjp3YWl0TGF0Y2hDSFJPTUlVTShHQzNEaW50IHNobUlkLCBHQzNEdWludCBsYXRj
aElkKQoreworICAgIG1faW50ZXJuYWwtPndhaXRMYXRjaENIUk9NSVVNKHNobUlkLCBsYXRjaElk
KTsKK30KKwordm9pZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6c2V0TGF0Y2hDSFJPTUlVTShHQzNE
aW50IHNobUlkLCBHQzNEdWludCBsYXRjaElkKQoreworICAgIG1faW50ZXJuYWwtPnNldExhdGNo
Q0hST01JVU0oc2htSWQsIGxhdGNoSWQpOworfQorCiBQbGF0Zm9ybTNET2JqZWN0IEV4dGVuc2lv
bnMzRENocm9taXVtOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNE
Q2hyb21pdW0uY3BwCmluZGV4IDU0YzE4ZTM1N2JmYTJmYzgzY2VhNDIwMzdlNTA2Y2JhMTZlNWM3
YTcuLjg1ZTQ0MWNlMTU1ZmU0ZWY1Mjc1ZDE3MzAxZjcyMWJiMDExOGE5YmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21p
dW0uY3BwCkBAIC04MDAsNiArODAwLDEwIEBAIERFTEVHQVRFX1RPX0lNUExfMSh1bm1hcFRleFN1
YkltYWdlMkRDSFJPTUlVTSwgY29uc3Qgdm9pZCopCiBERUxFR0FURV9UT19JTVBMXzIoY29weVRl
eHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTSwgUGxhdGZvcm0zRE9iamVjdCwgUGxhdGZvcm0z
RE9iamVjdCkKIERFTEVHQVRFX1RPX0lNUExfMTAoYmxpdEZyYW1lYnVmZmVyQ0hST01JVU0sIEdD
M0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0Rp
bnQsIEdDM0RpbnQsIEdDM0RiaXRmaWVsZCwgR0MzRGVudW0pCiBERUxFR0FURV9UT19JTVBMXzUo
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQ0hST01JVU0sIEdDM0RlbnVtLCBHQzNEc2l6
ZWksIEdDM0RlbnVtLCBHQzNEc2l6ZWksIEdDM0RzaXplaSkKK0RFTEVHQVRFX1RPX0lNUExfMyhn
ZXRMYXRjaFBhcmVudFRvQ2hpbGRDSFJPTUlVTSwgR0MzRGludCosIEdDM0RpbnQqLCBHQzNEdWlu
dCopCitERUxFR0FURV9UT19JTVBMXzMoZ2V0TGF0Y2hDaGlsZFRvUGFyZW50Q0hST01JVU0sIEdD
M0RpbnQqLCBHQzNEaW50KiwgR0MzRHVpbnQqKQorREVMRUdBVEVfVE9fSU1QTF8yKHdhaXRMYXRj
aENIUk9NSVVNLCBHQzNEaW50LCBHQzNEdWludCkKK0RFTEVHQVRFX1RPX0lNUExfMihzZXRMYXRj
aENIUk9NSVVNLCBHQzNEaW50LCBHQzNEdWludCkKIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBHcmFw
aGljc0NvbnRleHQzRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCmluZGV4IDBhZjI5MWU5NjMyMjliNmM4NGQ1NzI5ODA0
Y2MwYTFjN2U3NjFjNGEuLmU2Yzg3YWU3ZTEyMDg4YTUyOWNhYWZkMDM4NTc4MGE5ZjUwZWNiNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRl
eHQzREludGVybmFsLmgKQEAgLTI3MCw2ICsyNzAsMTYgQEAgcHVibGljOgogICAgIHZvaWQgYmxp
dEZyYW1lYnVmZmVyQ0hST01JVU0oR0MzRGludCBzcmNYMCwgR0MzRGludCBzcmNZMCwgR0MzRGlu
dCBzcmNYMSwgR0MzRGludCBzcmNZMSwgR0MzRGludCBkc3RYMCwgR0MzRGludCBkc3RZMCwgR0Mz
RGludCBkc3RYMSwgR0MzRGludCBkc3RZMSwgR0MzRGJpdGZpZWxkIG1hc2ssIEdDM0RlbnVtIGZp
bHRlcik7CiAgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVDSFJPTUlVTShH
QzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaSBzYW1wbGVzLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKIAorICAgIC8vIExhdGNoIHN1
cHBvcnQKKyAgICB2b2lkIGdldExhdGNoUGFyZW50VG9DaGlsZENIUk9NSVVNKEdDM0RpbnQqIHRo
aXNTaG1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RpbnQq
IG90aGVyU2htSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNE
dWludCogbGF0Y2hJZCk7CisgICAgdm9pZCBnZXRMYXRjaENoaWxkVG9QYXJlbnRDSFJPTUlVTShH
QzNEaW50KiB0aGlzU2htSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQzNEaW50KiBvdGhlclNobUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0MzRHVpbnQqIGxhdGNoSWQpOworICAgIHZvaWQgd2FpdExhdGNoQ0hST01JVU0oR0Mz
RGludCBzaG1JZCwgR0MzRHVpbnQgbGF0Y2hJZCk7CisgICAgdm9pZCBzZXRMYXRjaENIUk9NSVVN
KEdDM0RpbnQgc2htSWQsIEdDM0R1aW50IGxhdGNoSWQpOworCiBwcml2YXRlOgogICAgIE93blB0
cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBtX2ltcGw7CiAgICAgT3duUHRyPEV4dGVu
c2lvbnMzRENocm9taXVtPiBtX2V4dGVuc2lvbnM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88683</attachid>
            <date>2011-04-07 13:33:38 -0700</date>
            <delta_ts>2011-04-08 18:56:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58003-20110407133337.patch</filename>
            <type>text/plain</type>
            <size>24015</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMwOTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OGRmYjRjOGNjN2ZhMWE0
NWQzNTA1MTNjN2EyZjBmZTgyYjc5NDIyLi5jNjg5NzYyNGJlYjM1YWVlMGFiM2FjZTEzOTA2MDA0
YjliOTFjMDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDQtMDcgIEpvaG4g
QmF0ZXMgIDxqYmF0ZXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW4gUnVz
c2VsbC4KKworICAgICAgICBjaHJvbWl1bSBzdXBwb3J0IGZvciBnbFNldExhdGNoIGFuZCBnbFdh
aXRMYXRjaCBiZXR3ZWVuIDNEIGNvbnRleHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01ODAwMworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhczJETGF5ZXJDaHJvbWl1bTo6fkNhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnNldERyYXdpbmdCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJv
bWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OnVwZGF0ZUFuZERyYXdMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjphZGRDaGlsZENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpyZW1vdmVDaGlsZENvbnRleHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06On5XZWJHTExheWVyQ2hyb21pdW0pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVy
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5oOgorCiAyMDExLTA0LTA2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcAppbmRleCA0Y2IxMTlhNGQ3ZThkNzEzNjk2NTliZDIwZmRhNWYx
MWRkNTAxYzE5Li40YThmOTM5ZjkyOWIzZTQ3MjM0MzQxZmJjZTExNmVlMWUwNDQwMTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMy
RExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAog
I2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgorI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTU0LDYgKzU1LDggQEAgQ2FudmFzMkRMYXllckNocm9taXVtOjp+Q2FudmFzMkRM
YXllckNocm9taXVtKCkKIHsKICAgICBpZiAobV90ZXh0dXJlSWQpCiAgICAgICAgIGxheWVyUmVu
ZGVyZXJDb250ZXh0KCktPmRlbGV0ZVRleHR1cmUobV90ZXh0dXJlSWQpOworICAgIGlmIChtX2Ry
YXdpbmdCdWZmZXIgJiYgbGF5ZXJSZW5kZXJlcigpKQorICAgICAgICBsYXllclJlbmRlcmVyKCkt
PnJlbW92ZUNoaWxkQ29udGV4dChtX2RyYXdpbmdCdWZmZXItPmdyYXBoaWNzQ29udGV4dDNEKCkp
OwogfQogCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygpCkBAIC0xMDMsMTAgKzEwNiwyNyBAQCB1bnNpZ25lZCBDYW52YXMyRExheWVyQ2hyb21p
dW06OnRleHR1cmVJZCgpIGNvbnN0CiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6c2V0RHJh
d2luZ0J1ZmZlcihEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyKQogewogICAgIGlmIChkcmF3
aW5nQnVmZmVyICE9IG1fZHJhd2luZ0J1ZmZlcikgeworICAgICAgICBpZiAobV9kcmF3aW5nQnVm
ZmVyICYmIGxheWVyUmVuZGVyZXIoKSkKKyAgICAgICAgICAgIGxheWVyUmVuZGVyZXIoKS0+cmVt
b3ZlQ2hpbGRDb250ZXh0KG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKSk7CisK
ICAgICAgICAgbV9kcmF3aW5nQnVmZmVyID0gZHJhd2luZ0J1ZmZlcjsKICAgICAgICAgbV90ZXh0
dXJlQ2hhbmdlZCA9IHRydWU7CisKKyAgICAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlciAmJiBsYXll
clJlbmRlcmVyKCkpCisgICAgICAgICAgICBsYXllclJlbmRlcmVyKCktPmFkZENoaWxkQ29udGV4
dChtX2RyYXdpbmdCdWZmZXItPmdyYXBoaWNzQ29udGV4dDNEKCkpOwogICAgIH0KIH0KIAordm9p
ZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBuZXdMYXllclJlbmRlcmVyKQoreworICAgIGlmIChtX2RyYXdpbmdCdWZmZXIgJiYg
bGF5ZXJSZW5kZXJlcigpKQorICAgICAgICBsYXllclJlbmRlcmVyKCktPnJlbW92ZUNoaWxkQ29u
dGV4dChtX2RyYXdpbmdCdWZmZXItPmdyYXBoaWNzQ29udGV4dDNEKCkpOworCisgICAgTGF5ZXJD
aHJvbWl1bTo6c2V0TGF5ZXJSZW5kZXJlcihuZXdMYXllclJlbmRlcmVyKTsKKworICAgIGlmICht
X2RyYXdpbmdCdWZmZXIgJiYgbGF5ZXJSZW5kZXJlcigpKQorICAgICAgICBsYXllclJlbmRlcmVy
KCktPmFkZENoaWxkQ29udGV4dChtX2RyYXdpbmdCdWZmZXItPmdyYXBoaWNzQ29udGV4dDNEKCkp
OworfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRleCA4MWIxMThjNWI1ZGZlOWMzMWExZWIyNDlk
NTk5MmRiNDI2ZWQyMDk0Li40MjI0YWIxZGI5MDY1ZmJlYWVkNTBiMDc1YzI0MmQ1MzRlNDY5NzU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNTIsNiArNTIsOCBAQCBw
dWJsaWM6CiAgICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREcmF3
aW5nQnVmZmVyKERyYXdpbmdCdWZmZXIqKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclJl
bmRlcmVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IENhbnZhczJETGF5ZXJDaHJvbWl1bShEcmF3aW5nQnVmZmVyKiwgR3JhcGhpY3NMYXllckNocm9t
aXVtKiBvd25lcik7CiAgICAgRHJhd2luZ0J1ZmZlciogbV9kcmF3aW5nQnVmZmVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9u
czNEQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0V4dGVuc2lvbnMzRENocm9taXVtLmgKaW5kZXggM2IwZmRiZmRkNmJlMTNjNDlhZmU3YzJjMmFm
NDExNTc2NjgyNTFmMy4uYTEyNTQ1NDg4NmFhOGFhMThkYzI3MjYwOTM3NDIyMmY4ZjkyNTY1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0
ZW5zaW9uczNEQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCkBAIC02Niw2ICs2NiwxNiBAQCBwdWJs
aWM6CiAgICAgLy8gR0xfQ0hST01JVU1fY29weV90ZXh0dXJlX3RvX3BhcmVudF90ZXh0dXJlCiAg
ICAgdm9pZCBjb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKHVuc2lnbmVkIHRleHR1
cmUsIHVuc2lnbmVkIHBhcmVudFRleHR1cmUpOwogCisgICAgLy8gTGF0Y2ggc3VwcG9ydAorICAg
IHZvaWQgZ2V0TGF0Y2hQYXJlbnRUb0NoaWxkQ0hST01JVU0oR0MzRGludCogdGhpc1NobUlkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGludCogb3RoZXJTaG1J
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0R1aW50KiBsYXRj
aElkKTsKKyAgICB2b2lkIGdldExhdGNoQ2hpbGRUb1BhcmVudENIUk9NSVVNKEdDM0RpbnQqIHRo
aXNTaG1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RpbnQq
IG90aGVyU2htSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNE
dWludCogbGF0Y2hJZCk7CisgICAgdm9pZCB3YWl0TGF0Y2hDSFJPTUlVTShHQzNEaW50IHNobUlk
LCBHQzNEdWludCBsYXRjaElkKTsKKyAgICB2b2lkIHNldExhdGNoQ0hST01JVU0oR0MzRGludCBz
aG1JZCwgR0MzRHVpbnQgbGF0Y2hJZCk7CisKIHByaXZhdGU6CiAgICAgLy8gSW5zdGFuY2VzIG9m
IHRoaXMgY2xhc3MgYXJlIHN0cmljdGx5IG93bmVkIGJ5IHRoZSBHcmFwaGljc0NvbnRleHQzRCBp
bXBsZW1lbnRhdGlvbiBhbmQgZG8gbm90CiAgICAgLy8gbmVlZCB0byBiZSBpbnN0YW50aWF0ZWQg
YnkgYW55IG90aGVyIGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApp
bmRleCAyNzUzMDMzYzEyMTQzYWRiYWQ0OWFhZDhmNjNlNWU3MWFmNmYwNDhhLi5mNzNlNDYxY2Qy
MGNiMzAzY2FkOGNkZTU0YTgwMGI2OWI1MTBhNGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJJ
bXBsLmgiCiAjaW5jbHVkZSAiQ2FudmFzMkRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiRXh0
ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJH
ZW9tZXRyeUJpbmRpbmcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgpAQCAtMTE1
LDYgKzExNiw3IEBAIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRlCiAgICAgLCBtX29mZnNjcmVlbkZy
YW1lYnVmZmVySWQoMCkKICAgICAsIG1fY29tcG9zaXRlT2Zmc2NyZWVuKGZhbHNlKQogICAgICwg
bV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX2NoaWxkQ29udGV4dHNXZXJlQ29waWVkKGZhbHNl
KQogICAgICwgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSgwKQogewogICAgIG1faGFyZHdhcmVDb21w
b3NpdGluZyA9IGluaXRpYWxpemVTaGFyZWRPYmplY3RzKCk7CkBAIC0yNzEsOCArMjczLDUzIEBA
IHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVBbmREcmF3TGF5ZXJzKCkKICAgICBM
YXllckxpc3QgcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICB1cGRhdGVMYXllcnMocmVuZGVy
U3VyZmFjZUxheWVyTGlzdCk7CiAKKyAgICAvLyAoYmVmb3JlIGRyYXdMYXllcnMpCisgICAgLy8g
SWYgaGFyZHdhcmVDb21wb3NpdGluZzoKKyAgICAvLyAgaWYgYW55dGhpbmcgd2FzIGRvbmUgb24g
dGhlIGNoaWxkIGNvbnRleHRzLAorICAgIC8vICAgIGdsV2FpdExhdGNoKE9mZnNjcmVlbi0+Q29t
cG9zaXRvcikKKyAgICAvLyAgaWYgbm90IGNoYW5nZWQsIG5lZWQgdG8gZG86CisgICAgLy8gICAg
Z2xXYWl0TGF0Y2goQ29tcG9zaXRvci0+T2Zmc2NyZWVuKQorICAgIC8vICAgICh0aGlzIGNhdGNo
ZXMgdGhlIHByZXZpb3VzIGZyYW1lJ3MgZ2xTZXRMYXRjaChDb21wb3NpdG9yLT5PZmZzY3JlZW4p
LAorICAgIC8vICAgICB3aGljaCB3YXMgbm90IGNhdWdodCBieSB0aGUgb2Zmc2NyZWVuIGNvbnRl
eHQgYmVjYXVzZSBpdCBuZXZlciByYW4pCisgICAgaWYgKGhhcmR3YXJlQ29tcG9zaXRpbmcoKSkg
eworICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogcGFyZW50RXh0ID0gc3RhdGljX2Nhc3Q8
RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAg
ICAgIC8vIGZvciBlYWNoIGNoaWxkIGNvbnRleHQsIGdsV2FpdExhdGNoKE9mZnNjcmVlbi0+Q29t
cG9zaXRvcikKKyAgICAgICAgQ2hpbGRDb250ZXh0TWFwOjppdGVyYXRvciBpID0gbV9jaGlsZENv
bnRleHRzLmJlZ2luKCk7CisgICAgICAgIGZvciAoOyBpICE9IG1fY2hpbGRDb250ZXh0cy5lbmQo
KTsgKytpKSB7CisgICAgICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogY2hpbGRFeHQgPSBz
dGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGktPmZpcnN0LT5nZXRFeHRlbnNpb25z
KCkpOworICAgICAgICAgICAgR0MzRGludCB0aGlzU2htSWQsIG90aGVyU2htSWQ7CisgICAgICAg
ICAgICBHQzNEdWludCBsYXRjaElkOworICAgICAgICAgICAgaWYgKG1fY2hpbGRDb250ZXh0c1dl
cmVDb3BpZWQpCisgICAgICAgICAgICAgIGNoaWxkRXh0LT5nZXRMYXRjaENoaWxkVG9QYXJlbnRD
SFJPTUlVTSgmdGhpc1NobUlkLCAmb3RoZXJTaG1JZCwgJmxhdGNoSWQpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICBjaGlsZEV4dC0+Z2V0TGF0Y2hQYXJlbnRUb0NoaWxkQ0hST01J
VU0oJnRoaXNTaG1JZCwgJm90aGVyU2htSWQsICZsYXRjaElkKTsKKyAgICAgICAgICAgIC8vIGNh
bGxpbmcgd2FpdCBsYXRjaCBpbiBwYXJlbnQgY29udGV4dCAob3RoZXJTaG1JZCkKKyAgICAgICAg
ICAgIHBhcmVudEV4dC0+d2FpdExhdGNoQ0hST01JVU0ob3RoZXJTaG1JZCwgbGF0Y2hJZCk7Cisg
ICAgICAgIH0KKyAgICAgICAgLy8gc2V0dGluZyB0aGlzIHRvIGZhbHNlIG5vdywgYmVjYXVzZSB0
aGUgc2V0IGxhdGNoIGJlbG93IGlzIHRoZSBzYW1lCisgICAgICAgIC8vIHJlZ2FyZGxlc3Mgb2Yg
d2hldGhlciBjaGlsZCBjb250ZXh0cyB1cGRhdGVkIHRoZSBwYXJlbnQgdGV4dHVyZS4KKyAgICAg
ICAgbV9jaGlsZENvbnRleHRzV2VyZUNvcGllZCA9IGZhbHNlOworICAgIH0KKwogICAgIGRyYXdM
YXllcnMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKKyAgICAvLyAoYWZ0ZXIgZHJhd0xheWVy
cykKKyAgICAvLyBJZiBoYXJkd2FyZUNvbXBvc2l0aW5nOgorICAgIC8vICBjYWxsIGdsU2V0TGF0
Y2goQ29tcG9zaXRvci0+T2Zmc2NyZWVuKQorICAgIGlmIChoYXJkd2FyZUNvbXBvc2l0aW5nKCkp
IHsKKyAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIHBhcmVudEV4dCA9IHN0YXRpY19jYXN0
PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAg
ICAgICAvLyBmb3IgZWFjaCBjaGlsZCBjb250ZXh0LCBnbFdhaXRMYXRjaChPZmZzY3JlZW4tPkNv
bXBvc2l0b3IpCisgICAgICAgIENoaWxkQ29udGV4dE1hcDo6aXRlcmF0b3IgaSA9IG1fY2hpbGRD
b250ZXh0cy5iZWdpbigpOworICAgICAgICBmb3IgKDsgaSAhPSBtX2NoaWxkQ29udGV4dHMuZW5k
KCk7ICsraSkgeworICAgICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGNoaWxkRXh0ID0g
c3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihpLT5maXJzdC0+Z2V0RXh0ZW5zaW9u
cygpKTsKKyAgICAgICAgICAgIEdDM0RpbnQgdGhpc1NobUlkLCBvdGhlclNobUlkOworICAgICAg
ICAgICAgR0MzRHVpbnQgbGF0Y2hJZDsKKyAgICAgICAgICAgIGNoaWxkRXh0LT5nZXRMYXRjaFBh
cmVudFRvQ2hpbGRDSFJPTUlVTSgmdGhpc1NobUlkLCAmb3RoZXJTaG1JZCwgJmxhdGNoSWQpOwor
ICAgICAgICAgICAgLy8gY2FsbGluZyBzZXQgbGF0Y2ggaW4gcGFyZW50IGNvbnRleHQgKG90aGVy
U2htSWQpCisgICAgICAgICAgICBwYXJlbnRFeHQtPnNldExhdGNoQ0hST01JVU0ob3RoZXJTaG1J
ZCwgbGF0Y2hJZCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAoaXNDb21wb3NpdGluZ09m
ZnNjcmVlbigpKQogICAgICAgICBjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpOwogfQpA
QCAtMzA5LDcgKzM1Niw0MSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5
ZXJzKExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIAogICAgIHBhaW50Q29udGVu
dHNSZWN1cnNpdmUobV9yb290TGF5ZXIuZ2V0KCkpOwogCisgICAgLy8gRm9yIG9mZnNjcmVlbiBH
TCBjb250ZXh0cywgd2UncmUgYWJvdXQgdG8gY29weSB0aGUgZGlydHkgRkJPcyB0byB0aGUKKyAg
ICAvLyAgY29tcG9zaXRvcidzIHRleHR1cmVzIHZpYSB0aGUgY2hpbGQgR0wgY29udGV4dHMuCisg
ICAgLy8gIGlmIGFueXRoaW5nIHdhcyBkb25lIG9uIHRoZSBzaGFyZWQgbGF5ZXJzLAorICAgIC8v
ICAgIGdsV2FpdExhdGNoKENvbXBvc2l0b3ItPk9mZnNjcmVlbikKKyAgICBpZiAoaGFyZHdhcmVD
b21wb3NpdGluZygpKSB7CisgICAgICAgIC8vIFdoZW4gdGhlIGNvbXBvc2l0b3IgaXMgZHJhd2lu
ZyBpbiBhIHNlcGFyYXRlIHRocmVhZCwgdGhpcyBib29sIHdpbGwKKyAgICAgICAgLy8gbmVlZCB0
byBjb3B5IG92ZXIgZHVyaW5nIHRoZSBzeW5jaHJvbm91cyAnY29tbWl0JyBzdGFnZS4KKyAgICAg
ICAgbV9jaGlsZENvbnRleHRzV2VyZUNvcGllZCA9IHRydWU7CisgIAorICAgICAgICAvLyBmb3Ig
ZWFjaCBjaGlsZCBjb250ZXh0LCBnbFdhaXRMYXRjaChDb21wb3NpdG9yLT5PZmZzY3JlZW4pCisg
ICAgICAgIENoaWxkQ29udGV4dE1hcDo6aXRlcmF0b3IgaSA9IG1fY2hpbGRDb250ZXh0cy5iZWdp
bigpOworICAgICAgICBmb3IgKDsgaSAhPSBtX2NoaWxkQ29udGV4dHMuZW5kKCk7ICsraSkgewor
ICAgICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dCA9IHN0YXRpY19jYXN0PEV4dGVu
c2lvbnMzRENocm9taXVtKj4oaS0+Zmlyc3QtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAgICAg
ICBHQzNEaW50IHRoaXNTaG1JZCwgb3RoZXJTaG1JZDsKKyAgICAgICAgICAgIEdDM0R1aW50IGxh
dGNoSWQ7CisgICAgICAgICAgICBleHQtPmdldExhdGNoUGFyZW50VG9DaGlsZENIUk9NSVVNKCZ0
aGlzU2htSWQsICZvdGhlclNobUlkLCAmbGF0Y2hJZCk7CisgICAgICAgICAgICAvLyBjYWxsaW5n
IHdhaXQgbGF0Y2ggaW4gY2hpbGQgY29udGV4dCAodGhpc1NobUlkKQorICAgICAgICAgICAgZXh0
LT53YWl0TGF0Y2hDSFJPTUlVTSh0aGlzU2htSWQsIGxhdGNoSWQpOworICAgICAgICB9CisgICAg
fQogICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXNSZWN1cnNpdmUobV9yb290TGF5ZXIuZ2V0
KCkpOworICAgIC8vICBpZiBhbnl0aGluZyB3YXMgZG9uZSBvbiB0aGUgc2hhcmVkIGxheWVycywK
KyAgICAvLyAgICBnbFNldExhdGNoKE9mZnNjcmVlbi0+Q29tcG9zaXRvcikKKyAgICBpZiAoaGFy
ZHdhcmVDb21wb3NpdGluZygpKSB7CisgICAgICAgIC8vIGZvciBlYWNoIGNoaWxkIGNvbnRleHQs
IGdsU2V0TGF0Y2goT2Zmc2NyZWVuLT5Db21wb3NpdG9yKQorICAgICAgICBDaGlsZENvbnRleHRN
YXA6Oml0ZXJhdG9yIGkgPSBtX2NoaWxkQ29udGV4dHMuYmVnaW4oKTsKKyAgICAgICAgZm9yICg7
IGkgIT0gbV9jaGlsZENvbnRleHRzLmVuZCgpOyArK2kpIHsKKyAgICAgICAgICAgIEV4dGVuc2lv
bnMzRENocm9taXVtKiBleHQgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGkt
PmZpcnN0LT5nZXRFeHRlbnNpb25zKCkpOworICAgICAgICAgICAgR0MzRGludCB0aGlzU2htSWQs
IG90aGVyU2htSWQ7CisgICAgICAgICAgICBHQzNEdWludCBsYXRjaElkOworICAgICAgICAgICAg
ZXh0LT5nZXRMYXRjaENoaWxkVG9QYXJlbnRDSFJPTUlVTSgmdGhpc1NobUlkLCAmb3RoZXJTaG1J
ZCwgJmxhdGNoSWQpOworICAgICAgICAgICAgLy8gY2FsbGluZyB3YWl0IGxhdGNoIGluIGNoaWxk
IGNvbnRleHQgKHRoaXNTaG1JZCkKKyAgICAgICAgICAgIGV4dC0+c2V0TGF0Y2hDSFJPTUlVTSh0
aGlzU2htSWQsIGxhdGNoSWQpOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VM
YXllckxpc3QpCkBAIC0xMDI5LDYgKzExMTAsNDIgQEAgU3RyaW5nIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6bGF5ZXJUcmVlQXNUZXh0KCkgY29uc3QKICAgICByZXR1cm4gdHMucmVsZWFzZSgpOwog
fQogCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YWRkQ2hpbGRDb250ZXh0KFBhc3NSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IGN0eCkKK3sKKyAgICAvLyBUaGlzIGlzIGEgcmVmLWNvdW50
aW5nIG1hcCwgYmVjYXVzZSBzb21lIGNvbnRleHRzIGFyZSBzaGFyZWQgYnkgbXVsdGlwbGUKKyAg
ICAvLyBsYXllcnMgKHNwZWNpZmljYWxseSwgQ2FudmFzMkRMYXllckNocm9taXVtKS4KKworICAg
IC8vIGluc2VydCB0aGUgY3R4IHdpdGggYSBjb3VudCBvZiAxLCBvciByZXR1cm4gdGhlIGV4aXN0
aW5nIGl0ZXJhdG9yLgorICAgIHN0ZDo6cGFpcjxDaGlsZENvbnRleHRNYXA6Oml0ZXJhdG9yLCBi
b29sPiBpbnNlcnRfcmVzdWx0ID0gbV9jaGlsZENvbnRleHRzLmFkZChjdHgsIDEpOworICAgIGlm
ICghaW5zZXJ0X3Jlc3VsdC5zZWNvbmQpIHsKKyAgICAgIC8vIGFscmVhZHkgcHJlc2VudCBpbiBt
YXAsIHNvIGluY3JlbWVudAorICAgICAgKytpbnNlcnRfcmVzdWx0LmZpcnN0LT5zZWNvbmQ7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyBjaGlsZCBjb250ZXh0IC0gc2V0
IHRoZSBwYXJlbnQyY2hpbGQgbGF0Y2ggc28gdGhhdCBpdAorICAgICAgICAvLyBjYW4gY29udGlu
dWUgcGFzdCBpdHMgZmlyc3Qgd2FpdCBsYXRjaC4KKyAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21p
dW0qIGV4dCA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oaW5zZXJ0X3Jlc3Vs
dC5maXJzdC0+Zmlyc3QtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAgIEdDM0RpbnQgdGhpc1No
bUlkLCBvdGhlclNobUlkOworICAgICAgICBHQzNEdWludCBsYXRjaElkOworICAgICAgICBleHQt
PmdldExhdGNoUGFyZW50VG9DaGlsZENIUk9NSVVNKCZ0aGlzU2htSWQsICZvdGhlclNobUlkLCAm
bGF0Y2hJZCk7CisgICAgICAgIC8vIGNhbGxpbmcgc2V0IGxhdGNoIGluIGNoaWxkIGNvbnRleHQg
KHRoaXNTaG1JZCkKKyAgICAgICAgZXh0LT5zZXRMYXRjaENIUk9NSVVNKHRoaXNTaG1JZCwgbGF0
Y2hJZCk7CisgICAgfQorfQorCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVtb3ZlQ2hp
bGRDb250ZXh0KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGN0eCkKK3sKKyAgICBDaGls
ZENvbnRleHRNYXA6Oml0ZXJhdG9yIGkgPSBtX2NoaWxkQ29udGV4dHMuZmluZChjdHgpOworICAg
IGlmIChpICE9IG1fY2hpbGRDb250ZXh0cy5lbmQoKSkgeworICAgICAgICBpZiAoLS1pLT5zZWNv
bmQgPD0gMCkgeworICAgICAgICAgICAgLy8gY291bnQgcmVhY2hlZCB6ZXJvLCBzbyByZW1vdmUg
ZnJvbSBtYXAuCisgICAgICAgICAgICBtX2NoaWxkQ29udGV4dHMucmVtb3ZlKGkpOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gZXJyb3IKKyAgICAgICAgQVNTRVJUKDAgJiYg
Im1fY2hpbGRDb250ZXh0cyBtYXAgaGFzIG1pc21hdGNoZWQgYWRkL3JlbW92ZSBjYWxscyIpOwor
ICAgIH0KK30KKwogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmR1bXBSZW5kZXJTdXJmYWNl
cyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCwgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpIGNvbnN0
CiB7CiAgICAgaWYgKGxheWVyLT5jY0xheWVySW1wbCgpLT5yZW5kZXJTdXJmYWNlKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGM1MDkyYzFiOTI0ZThmMTk1YTVmMjVl
OGVjZmQyNTJjZGFlYTg1MGEuLjI1MmU5NzdjNzNkYTIzMTQ3MzAwNTgyNzdmYTE5Y2UyZjkzZTk4
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMzEsOCArMTMxLDEy
IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoKSBjb25zdDsKIAorICAg
IHZvaWQgYWRkQ2hpbGRDb250ZXh0KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKKyAg
ICB2b2lkIHJlbW92ZUNoaWxkQ29udGV4dChQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7
CisKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+IExh
eWVyTGlzdDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwg
aW50PiBDaGlsZENvbnRleHRNYXA7CiAKICAgICBleHBsaWNpdCBMYXllclJlbmRlcmVyQ2hyb21p
dW0oUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFBhc3NPd25QdHI8VGlsZVBhaW50SW50
ZXJmYWNlPiBjb250ZW50UGFpbnQsIFBhc3NPd25QdHI8VGlsZVBhaW50SW50ZXJmYWNlPiBzY3Jv
bGxiYXJQYWludCk7CiAKQEAgLTIyMiw2ICsyMjYsMTMgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8
Q0NIZWFkc1VwRGlzcGxheT4gbV9oZWFkc1VwRGlzcGxheTsKIAogICAgIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIENoaWxkQ29udGV4dE1hcCBtX2NoaWxkQ29udGV4
dHM7CisKKyAgICAvLyBJZiB0cnVlLCB0aGUgY2hpbGQgY29udGV4dHMgd2VyZSBjb3BpZWQgdG8g
dGhlIGNvbXBvc2l0b3IgdGV4dHVyZSB0YXJnZXRzCisgICAgLy8gYW5kIHRoZSBjb21wb3NpdG9y
IHdpbGwgbmVlZCB0byB3YWl0IG9uIHRoZSBwcm9wZXIgbGF0Y2hlcyBiZWZvcmUgdXNpbmcKKyAg
ICAvLyB0aGUgdGFyZ2V0IHRleHR1cmVzLiBJZiBmYWxzZSwgdGhlIGNvbXBvc2l0b3IgaXMgcmV1
c2luZyB0aGUgdGV4dHVyZXMKKyAgICAvLyBmcm9tIGxhc3QgZnJhbWUuCisgICAgYm9vbCBtX2No
aWxkQ29udGV4dHNXZXJlQ29waWVkOwogCiAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiBtX2Rl
ZmF1bHRSZW5kZXJTdXJmYWNlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDY1MmU3NTI3YTY0ZTMyZGU1MWZiY2RiYzFjMjgwYjY0ZjI4ZWEzMzMuLmYzNmY3ODFhYWY2
MWFkOGQxZDU2NjdiMWVkZDU3ZmEwY2QzNWY1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmNwcApAQCAtNTEsNiArNTEsMTIgQEAgV2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVy
Q2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKIHsKIH0KIAorV2ViR0xMYXll
ckNocm9taXVtOjp+V2ViR0xMYXllckNocm9taXVtKCkKK3sKKyAgICBpZiAobV9jb250ZXh0ICYm
IGxheWVyUmVuZGVyZXIoKSkKKyAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT5yZW1vdmVDaGlsZENv
bnRleHQobV9jb250ZXh0KTsKK30KKwogdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoKQogewogICAgIGlmICghbV9jb250ZW50c0RpcnR5KQpAQCAtNzAs
NiArNzYsOSBAQCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygpCiAgICAgfQogICAgIC8vIFVwZGF0ZSB0aGUgY29udGVudHMgb2YgdGhlIHRleHR1cmUg
dXNlZCBieSB0aGUgY29tcG9zaXRvci4KICAgICBpZiAobV9jb250ZW50c0RpcnR5ICYmIG1fdGV4
dHVyZVVwZGF0ZWQpIHsKKyAgICAgICAgLy8gcHJlcGFyZVRleHR1cmUgY29waWVzIHRoZSBjb250
ZW50cyBvZiB0aGUgb2ZmLXNjcmVlbiByZW5kZXIgdGFyZ2V0IGludG8gdGhlIHRleHR1cmUKKyAg
ICAgICAgLy8gdXNlZCBieSB0aGUgY29tcG9zaXRvci4KKyAgICAgICAgLy8KICAgICAgICAgbV9j
b250ZXh0LT5wcmVwYXJlVGV4dHVyZSgpOwogICAgICAgICBtX2NvbnRleHQtPm1hcmtMYXllckNv
bXBvc2l0ZWQoKTsKICAgICAgICAgbV9jb250ZW50c0RpcnR5ID0gZmFsc2U7CkBAIC04NCw2ICs5
Myw5IEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjpzZXRUZXh0dXJlVXBkYXRlZCgpCiAKIHZv
aWQgV2ViR0xMYXllckNocm9taXVtOjpzZXRDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0KQogeworICAgIGlmIChtX2NvbnRleHQgJiYgbGF5ZXJSZW5kZXJlcigpKQorICAg
ICAgICBsYXllclJlbmRlcmVyKCktPnJlbW92ZUNoaWxkQ29udGV4dChtX2NvbnRleHQpOworCiAg
ICAgbV9jb250ZXh0ID0gY29uc3RfY2FzdDxHcmFwaGljc0NvbnRleHQzRCo+KGNvbnRleHQpOwog
CiAgICAgdW5zaWduZWQgaW50IHRleHR1cmVJZCA9IG1fY29udGV4dC0+cGxhdGZvcm1UZXh0dXJl
KCk7CkBAIC05Myw2ICsxMDUsMjAgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnNldENvbnRl
eHQoY29uc3QgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgfQogICAgIG1fdGV4dHVy
ZUlkID0gdGV4dHVyZUlkOwogICAgIG1fcHJlbXVsdGlwbGllZEFscGhhID0gbV9jb250ZXh0LT5n
ZXRDb250ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYTsKKworICAgIGlmIChsYXll
clJlbmRlcmVyKCkpCisgICAgICAgIGxheWVyUmVuZGVyZXIoKS0+YWRkQ2hpbGRDb250ZXh0KG1f
Y29udGV4dCk7Cit9CisKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVy
KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbmV3TGF5ZXJSZW5kZXJlcikKK3sKKyAgICBpZiAobV9j
b250ZXh0ICYmIGxheWVyUmVuZGVyZXIoKSkKKyAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT5yZW1v
dmVDaGlsZENvbnRleHQobV9jb250ZXh0KTsKKworICAgIExheWVyQ2hyb21pdW06OnNldExheWVy
UmVuZGVyZXIobmV3TGF5ZXJSZW5kZXJlcik7CisKKyAgICBpZiAobV9jb250ZXh0KQorICAgICAg
ICBuZXdMYXllclJlbmRlcmVyLT5hZGRDaGlsZENvbnRleHQobV9jb250ZXh0KTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCAzM2RiNzMwMjVkOGY3YjJmMDdjYWU2NDNl
Y2M2NGFlNGMwYzg2NTI1Li4zNDIyNzViNDZiM2U3OWVlYzIzMGFlMWIxZTAyYWZjY2UxMDdiZmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9X
ZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtNDQsMTIgKzQ0LDE3IEBAIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgV2ViR0xMYXllckNocm9taXVtIDogcHVibGljIENh
bnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdM
TGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIgPSAwKTsK
KworICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOworCiAgICAgdmlydHVhbCBib29s
IGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCk7CiAgICAgdm9pZCBzZXRUZXh0dXJlVXBk
YXRlZCgpOwogCiAgICAgdm9pZCBzZXRDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0KTsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclJlbmRlcmVyKExheWVyUmVuZGVy
ZXJDaHJvbWl1bSopOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBsYXll
clR5cGVBc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuICJXZWJHTExheWVyIjsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDJhYmZmZWRmNjlhYzQ1MWZiN2UwZDc0MGI3ZjhhNDM0NWY4
Y2Q2NjQuLjQ1OGMyYWUxMmEyZDQ3NmNkMzM0ZjkzMjM5OTU1M2EzMzkxODE1NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDQtMDcgIEpvaG4gQmF0
ZXMgIDxqYmF0ZXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW4gUnVzc2Vs
bC4KKworICAgICAgICBjaHJvbWl1bSBzdXBwb3J0IGZvciBnbFNldExhdGNoIGFuZCBnbFdhaXRM
YXRjaCBiZXR3ZWVuIDNEIGNvbnRleHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01ODAwMworCisgICAgICAgICogcHVibGljL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmg6CisgICAgICAgICogc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRENocm9taXVtOjpnZXRMYXRjaFBhcmVudFRvQ2hpbGRD
SFJPTUlVTSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RDaHJvbWl1bTo6Z2V0TGF0
Y2hDaGlsZFRvUGFyZW50Q0hST01JVU0pOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNE
Q2hyb21pdW06OndhaXRMYXRjaENIUk9NSVVNKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnMzRENocm9taXVtOjpzZXRMYXRjaENIUk9NSVVNKToKKyAgICAgICAgKiBzcmMvR3JhcGhpY3ND
b250ZXh0M0RDaHJvbWl1bS5jcHA6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWwuaDoKKwogMjAxMS0wNC0wNiAgQWxvayBQcml5YWRhcnNoaSAgPGFsb2twQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDk4
NGY3OWQyNWFhYWQ1N2E1NmU3YWViYTRmNDU5ODg2YzhlZWQ2YTguLjkyYmIwN2RmYTZiNGQzNjY0
ZDk4YmJhY2UwMTZmZDkwOGIzMTRjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTY4LDYgKzE2OCwxNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlckNIUk9NSVVNKFdHQzNEaW50
IHNyY1gwLCBXR0MzRGludCBzcmNZMCwgV0dDM0RpbnQgc3JjWDEsIFdHQzNEaW50IHNyY1kxLCBX
R0MzRGludCBkc3RYMCwgV0dDM0RpbnQgZHN0WTAsIFdHQzNEaW50IGRzdFgxLCBXR0MzRGludCBk
c3RZMSwgV0dDM0RiaXRmaWVsZCBtYXNrLCBXR0MzRGVudW0gZmlsdGVyKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUNIUk9NSVVNKFdHQzNEZW51
bSB0YXJnZXQsIFdHQzNEc2l6ZWkgc2FtcGxlcywgV0dDM0RlbnVtIGludGVybmFsZm9ybWF0LCBX
R0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCkgPSAwOwogCisgICAgLy8gTGF0Y2gg
c3VwcG9ydAorICAgIHZpcnR1YWwgdm9pZCBnZXRMYXRjaFBhcmVudFRvQ2hpbGRDSFJPTUlVTShX
R0MzRGludCogdGhpc1NobUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXR0MzRGludCogb3RoZXJTaG1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV0dDM0R1aW50KiBsYXRjaElkKSB7fSAvLyBUT0RPID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TGF0Y2hDaGlsZFRvUGFyZW50Q0hST01JVU0oV0dDM0Rp
bnQqIHRoaXNTaG1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV0dDM0RpbnQqIG90aGVyU2htSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdHQzNEdWludCogbGF0Y2hJZCkge30gLy8gVE9ETyA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHdhaXRMYXRjaENIUk9NSVVNKFdHQzNEaW50IHNobUlkLCBXR0MzRHVp
bnQgbGF0Y2hJZCkge30gLy8gVE9ETyA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldExhdGNoQ0hS
T01JVU0oV0dDM0RpbnQgc2htSWQsIFdHQzNEdWludCBsYXRjaElkKSB7fSAvLyBUT0RPID0gMDsK
KwogICAgIC8vIFRoZSBlbnRyeSBwb2ludHMgYmVsb3cgbWFwIGRpcmVjdGx5IHRvIHRoZSBPcGVu
R0wgRVMgMi4wIEFQSS4KICAgICAvLyBTZWU6IGh0dHA6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0
cnkvZ2xlcy8KICAgICAvLyBhbmQ6IGh0dHA6Ly93d3cua2hyb25vcy5vcmcvb3BlbmdsZXMvc2Rr
L2RvY3MvbWFuLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5z
aW9uczNEQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9u
czNEQ2hyb21pdW0uY3BwCmluZGV4IDMwMTAxYzdhM2UwYmU2YzZmOTkyNDI0ZmUwMmUwNzYxOTdi
MjAyMDkuLjM4OWRmNDlhNmUwYzU1YTg1MGM1MmU0YTVhOGY2ZWUyZWNhZDhiYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAK
QEAgLTk3LDYgKzk3LDMwIEBAIHZvaWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06OmNvcHlUZXh0dXJl
VG9QYXJlbnRUZXh0dXJlQ0hST01JVU0odW5zaWduZWQgdGV4dHVyZSwKICAgICBtX2ludGVybmFs
LT5jb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKHRleHR1cmUsIHBhcmVudFRleHR1
cmUpOwogfQogCit2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjpnZXRMYXRjaFBhcmVudFRvQ2hp
bGRDSFJPTUlVTShHQzNEaW50KiB0aGlzU2htSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEaW50KiBvdGhlclNobUlkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Mz
RHVpbnQqIGxhdGNoSWQpCit7CisgICAgbV9pbnRlcm5hbC0+Z2V0TGF0Y2hQYXJlbnRUb0NoaWxk
Q0hST01JVU0odGhpc1NobUlkLCBvdGhlclNobUlkLCBsYXRjaElkKTsKK30KKwordm9pZCBFeHRl
bnNpb25zM0RDaHJvbWl1bTo6Z2V0TGF0Y2hDaGlsZFRvUGFyZW50Q0hST01JVU0oR0MzRGludCog
dGhpc1NobUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0MzRGludCogb3RoZXJTaG1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0R1aW50KiBsYXRjaElkKQorewor
ICAgIG1faW50ZXJuYWwtPmdldExhdGNoQ2hpbGRUb1BhcmVudENIUk9NSVVNKHRoaXNTaG1JZCwg
b3RoZXJTaG1JZCwgbGF0Y2hJZCk7Cit9CisKK3ZvaWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06Ondh
aXRMYXRjaENIUk9NSVVNKEdDM0RpbnQgc2htSWQsIEdDM0R1aW50IGxhdGNoSWQpCit7CisgICAg
bV9pbnRlcm5hbC0+d2FpdExhdGNoQ0hST01JVU0oc2htSWQsIGxhdGNoSWQpOworfQorCit2b2lk
IEV4dGVuc2lvbnMzRENocm9taXVtOjpzZXRMYXRjaENIUk9NSVVNKEdDM0RpbnQgc2htSWQsIEdD
M0R1aW50IGxhdGNoSWQpCit7CisgICAgbV9pbnRlcm5hbC0+c2V0TGF0Y2hDSFJPTUlVTShzaG1J
ZCwgbGF0Y2hJZCk7Cit9CisKIFBsYXRmb3JtM0RPYmplY3QgRXh0ZW5zaW9uczNEQ2hyb21pdW06
OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAK
aW5kZXggNTRjMThlMzU3YmZhMmZjODNjZWE0MjAzN2U1MDZjYmExNmU1YzdhNy4uODVlNDQxY2Ux
NTVmZTRlZjUyNzVkMTczMDFmNzIxYmIwMTE4YTliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKQEAgLTgw
MCw2ICs4MDAsMTAgQEAgREVMRUdBVEVfVE9fSU1QTF8xKHVubWFwVGV4U3ViSW1hZ2UyRENIUk9N
SVVNLCBjb25zdCB2b2lkKikKIERFTEVHQVRFX1RPX0lNUExfMihjb3B5VGV4dHVyZVRvUGFyZW50
VGV4dHVyZUNIUk9NSVVNLCBQbGF0Zm9ybTNET2JqZWN0LCBQbGF0Zm9ybTNET2JqZWN0KQogREVM
RUdBVEVfVE9fSU1QTF8xMChibGl0RnJhbWVidWZmZXJDSFJPTUlVTSwgR0MzRGludCwgR0MzRGlu
dCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwg
R0MzRGJpdGZpZWxkLCBHQzNEZW51bSkKIERFTEVHQVRFX1RPX0lNUExfNShyZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVDSFJPTUlVTSwgR0MzRGVudW0sIEdDM0RzaXplaSwgR0MzRGVudW0s
IEdDM0RzaXplaSwgR0MzRHNpemVpKQorREVMRUdBVEVfVE9fSU1QTF8zKGdldExhdGNoUGFyZW50
VG9DaGlsZENIUk9NSVVNLCBHQzNEaW50KiwgR0MzRGludCosIEdDM0R1aW50KikKK0RFTEVHQVRF
X1RPX0lNUExfMyhnZXRMYXRjaENoaWxkVG9QYXJlbnRDSFJPTUlVTSwgR0MzRGludCosIEdDM0Rp
bnQqLCBHQzNEdWludCopCitERUxFR0FURV9UT19JTVBMXzIod2FpdExhdGNoQ0hST01JVU0sIEdD
M0RpbnQsIEdDM0R1aW50KQorREVMRUdBVEVfVE9fSU1QTF8yKHNldExhdGNoQ0hST01JVU0sIEdD
M0RpbnQsIEdDM0R1aW50KQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIEdyYXBoaWNzQ29udGV4dDNE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQz
REludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQz
REludGVybmFsLmgKaW5kZXggMGFmMjkxZTk2MzIyOWI2Yzg0ZDU3Mjk4MDRjYzBhMWM3ZTc2MWM0
YS4uZTZjODdhZTdlMTIwODhhNTI5Y2FhZmQwMzg1NzgwYTlmNTBlY2I0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwu
aApAQCAtMjcwLDYgKzI3MCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBibGl0RnJhbWVidWZmZXJD
SFJPTUlVTShHQzNEaW50IHNyY1gwLCBHQzNEaW50IHNyY1kwLCBHQzNEaW50IHNyY1gxLCBHQzNE
aW50IHNyY1kxLCBHQzNEaW50IGRzdFgwLCBHQzNEaW50IGRzdFkwLCBHQzNEaW50IGRzdFgxLCBH
QzNEaW50IGRzdFkxLCBHQzNEYml0ZmllbGQgbWFzaywgR0MzRGVudW0gZmlsdGVyKTsKICAgICB2
b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUNIUk9NSVVNKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRHNpemVpIHNhbXBsZXMsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwogCisgICAgLy8gTGF0Y2ggc3VwcG9ydAorICAgIHZv
aWQgZ2V0TGF0Y2hQYXJlbnRUb0NoaWxkQ0hST01JVU0oR0MzRGludCogdGhpc1NobUlkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGludCogb3RoZXJTaG1JZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0R1aW50KiBsYXRjaElk
KTsKKyAgICB2b2lkIGdldExhdGNoQ2hpbGRUb1BhcmVudENIUk9NSVVNKEdDM0RpbnQqIHRoaXNT
aG1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RpbnQqIG90
aGVyU2htSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEdWlu
dCogbGF0Y2hJZCk7CisgICAgdm9pZCB3YWl0TGF0Y2hDSFJPTUlVTShHQzNEaW50IHNobUlkLCBH
QzNEdWludCBsYXRjaElkKTsKKyAgICB2b2lkIHNldExhdGNoQ0hST01JVU0oR0MzRGludCBzaG1J
ZCwgR0MzRHVpbnQgbGF0Y2hJZCk7CisKIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0Q+IG1faW1wbDsKICAgICBPd25QdHI8RXh0ZW5zaW9uczNEQ2hyb21p
dW0+IG1fZXh0ZW5zaW9uczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88914</attachid>
            <date>2011-04-08 18:56:16 -0700</date>
            <delta_ts>2011-04-11 16:38:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58003-20110408185614.patch</filename>
            <type>text/plain</type>
            <size>24935</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMzNjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlOWEzNDllMDY4M2RjNzNi
MjlkYjNhZmY1MzdjMGUzNzkzZmNkZjA1Li5hZTg3NTEwZTliYTFiNWVmZTRiNjhhZGY1YTk5ZWZj
ZDIwOTEwZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDQtMDcgIEpvaG4g
QmF0ZXMgIDxqYmF0ZXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW4gUnVz
c2VsbC4KKworICAgICAgICBjaHJvbWl1bSBzdXBwb3J0IGZvciBnbFNldExhdGNoIGFuZCBnbFdh
aXRMYXRjaCBiZXR3ZWVuIDNEIGNvbnRleHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01ODAwMworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhczJETGF5ZXJDaHJvbWl1bTo6fkNhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnNldERyYXdpbmdCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJv
bWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OkxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OnVwZGF0ZUFuZERyYXdMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjphZGRDaGlsZENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpyZW1vdmVDaGlsZENvbnRleHQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06On5XZWJHTExheWVyQ2hyb21pdW0pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVy
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5oOgorCiAyMDExLTA0LTA4ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByODMzNDguCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcAppbmRleCA0Y2IxMTlhNGQ3ZThkNzEzNjk2NTliZDIwZmRhNWYx
MWRkNTAxYzE5Li5lMzI1M2FiZTZjODM1ZTBhYmQ2YWJjOTNmZGEwMmFmNGEyY2Y5NjFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMy
RExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAog
I2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgorI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTU0LDYgKzU1LDggQEAgQ2FudmFzMkRMYXllckNocm9taXVtOjp+Q2FudmFzMkRM
YXllckNocm9taXVtKCkKIHsKICAgICBpZiAobV90ZXh0dXJlSWQpCiAgICAgICAgIGxheWVyUmVu
ZGVyZXJDb250ZXh0KCktPmRlbGV0ZVRleHR1cmUobV90ZXh0dXJlSWQpOworICAgIGlmIChtX2Ry
YXdpbmdCdWZmZXIgJiYgbGF5ZXJSZW5kZXJlcigpKQorICAgICAgICBsYXllclJlbmRlcmVyKCkt
PnJlbW92ZUNoaWxkQ29udGV4dChtX2RyYXdpbmdCdWZmZXItPmdyYXBoaWNzQ29udGV4dDNEKCkp
OwogfQogCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygpCkBAIC0xMDMsOCArMTA2LDI4IEBAIHVuc2lnbmVkIENhbnZhczJETGF5ZXJDaHJvbWl1
bTo6dGV4dHVyZUlkKCkgY29uc3QKIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpzZXREcmF3
aW5nQnVmZmVyKERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIpCiB7CiAgICAgaWYgKGRyYXdp
bmdCdWZmZXIgIT0gbV9kcmF3aW5nQnVmZmVyKSB7CisgICAgICAgIGlmIChtX2RyYXdpbmdCdWZm
ZXIgJiYgbGF5ZXJSZW5kZXJlcigpKQorICAgICAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT5yZW1v
dmVDaGlsZENvbnRleHQobV9kcmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQzRCgpKTsKKwog
ICAgICAgICBtX2RyYXdpbmdCdWZmZXIgPSBkcmF3aW5nQnVmZmVyOwogICAgICAgICBtX3RleHR1
cmVDaGFuZ2VkID0gdHJ1ZTsKKworICAgICAgICBpZiAoZHJhd2luZ0J1ZmZlciAmJiBsYXllclJl
bmRlcmVyKCkpCisgICAgICAgICAgICBsYXllclJlbmRlcmVyKCktPmFkZENoaWxkQ29udGV4dCht
X2RyYXdpbmdCdWZmZXItPmdyYXBoaWNzQ29udGV4dDNEKCkpOworICAgIH0KK30KKwordm9pZCBD
YW52YXMyRExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBuZXdMYXllclJlbmRlcmVyKQoreworICAgIGlmIChsYXllclJlbmRlcmVyKCkgIT0gbmV3
TGF5ZXJSZW5kZXJlcikgeworICAgICAgICBpZiAobV9kcmF3aW5nQnVmZmVyLT5ncmFwaGljc0Nv
bnRleHQzRCgpKSB7CisgICAgICAgICAgICBpZiAobGF5ZXJSZW5kZXJlcigpKQorICAgICAgICAg
ICAgICAgIGxheWVyUmVuZGVyZXIoKS0+cmVtb3ZlQ2hpbGRDb250ZXh0KG1fZHJhd2luZ0J1ZmZl
ci0+Z3JhcGhpY3NDb250ZXh0M0QoKSk7CisgICAgICAgICAgICBpZiAobmV3TGF5ZXJSZW5kZXJl
cikKKyAgICAgICAgICAgICAgICBuZXdMYXllclJlbmRlcmVyLT5hZGRDaGlsZENvbnRleHQobV9k
cmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQzRCgpKTsKKyAgICAgICAgfQorCisgICAgICAg
IExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVyZXIobmV3TGF5ZXJSZW5kZXJlcik7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCmluZGV4IDgxYjExOGM1YjVk
ZmU5YzMxYTFlYjI0OWQ1OTkyZGI0MjZlZDIwOTQuLjQyMjRhYjFkYjkwNjVmYmVhZWQ1MGIwNzVj
MjQyZDUzNGU0Njk3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCkBAIC01
Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdDsKICAg
ICB2b2lkIHNldERyYXdpbmdCdWZmZXIoRHJhd2luZ0J1ZmZlciopOwogCisgICAgdmlydHVhbCB2
b2lkIHNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgQ2FudmFzMkRMYXllckNocm9taXVtKERyYXdpbmdCdWZmZXIqLCBHcmFw
aGljc0xheWVyQ2hyb21pdW0qIG93bmVyKTsKICAgICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdpbmdC
dWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAppbmRleCAzYjBmZGJmZGQ2YmUx
M2M0OWFmZTdjMmMyYWY0MTE1NzY2ODI1MWYzLi5jYTQ1ZDJiMTA2MmY5Y2JiN2M0Y2YxNDg5NzMx
MGUzYWJiMmNiNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKQEAgLTY2LDYg
KzY2LDEyIEBAIHB1YmxpYzoKICAgICAvLyBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFy
ZW50X3RleHR1cmUKICAgICB2b2lkIGNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0o
dW5zaWduZWQgdGV4dHVyZSwgdW5zaWduZWQgcGFyZW50VGV4dHVyZSk7CiAKKyAgICAvLyBMYXRj
aCBzdXBwb3J0CisgICAgdm9pZCBnZXRQYXJlbnRUb0NoaWxkTGF0Y2hDSFJPTUlVTShHQzNEdWlu
dCogbGF0Y2hJZCk7CisgICAgdm9pZCBnZXRDaGlsZFRvUGFyZW50TGF0Y2hDSFJPTUlVTShHQzNE
dWludCogbGF0Y2hJZCk7CisgICAgdm9pZCB3YWl0TGF0Y2hDSFJPTUlVTShHQzNEaW50IHNobUlk
LCBHQzNEdWludCBsYXRjaElkKTsKKyAgICB2b2lkIHNldExhdGNoQ0hST01JVU0oR0MzRGludCBz
aG1JZCwgR0MzRHVpbnQgbGF0Y2hJZCk7CisKIHByaXZhdGU6CiAgICAgLy8gSW5zdGFuY2VzIG9m
IHRoaXMgY2xhc3MgYXJlIHN0cmljdGx5IG93bmVkIGJ5IHRoZSBHcmFwaGljc0NvbnRleHQzRCBp
bXBsZW1lbnRhdGlvbiBhbmQgZG8gbm90CiAgICAgLy8gbmVlZCB0byBiZSBpbnN0YW50aWF0ZWQg
YnkgYW55IG90aGVyIGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9HTEVTMkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9HTEVTMkNhbnZhcy5jcHAKaW5kZXggZTM3M2NkMWNkZjhhNTRl
MTIxNmI1NGU5NzI1YWM5YzY1ZmQ5OWUzMi4uYWJlZmNjYzJlYTVhYmZiNTE0OThkYjc1ZjYzZDNk
NjczNjM3ZWNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR0xFUzJDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0dMRVMyQ2FudmFzLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIGNsYXNz
IFF1YWRyYXRpYyB7CiBjbGFzcyBDdWJpYyB7CiAgIHB1YmxpYzoKICAgICBDdWJpYyhGbG9hdFBv
aW50IGEsIEZsb2F0UG9pbnQgYiwgRmxvYXRQb2ludCBjLCBGbG9hdFBvaW50IGQpIDoKLSAgICAg
ICAgbV9hKGEpLCBtX2IoYiksIG1fYyhjKSwgbV9kKGQpIAorICAgICAgICBtX2EoYSksIG1fYihi
KSwgbV9jKGMpLCBtX2QoZCkKICAgICB7CiAgICAgfQogICAgIHN0YXRpYyBDdWJpYyBmcm9tQmV6
aWVyKEZsb2F0UG9pbnQgcDAsIEZsb2F0UG9pbnQgcDEsIEZsb2F0UG9pbnQgcDIsIEZsb2F0UG9p
bnQgcDMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCAyNzUzMDMz
YzEyMTQzYWRiYWQ0OWFhZDhmNjNlNWU3MWFmNmYwNDhhLi44MjM2YzA1MGM1ZWQ0ZjU1MzZhNWFi
MTM5NmQyMjA3NTAwNWM5YTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5j
bHVkZSAiQ2FudmFzMkRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHZW9tZXRyeUJpbmRp
bmcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgpAQCAtMTE1LDYgKzExNiw3IEBA
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKFBhc3NSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRlCiAgICAgLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQo
MCkKICAgICAsIG1fY29tcG9zaXRlT2Zmc2NyZWVuKGZhbHNlKQogICAgICwgbV9jb250ZXh0KGNv
bnRleHQpCisgICAgLCBtX2NoaWxkQ29udGV4dHNXZXJlQ29waWVkKGZhbHNlKQogICAgICwgbV9k
ZWZhdWx0UmVuZGVyU3VyZmFjZSgwKQogewogICAgIG1faGFyZHdhcmVDb21wb3NpdGluZyA9IGlu
aXRpYWxpemVTaGFyZWRPYmplY3RzKCk7CkBAIC0yNzEsOCArMjczLDQ3IEBAIHZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp1cGRhdGVBbmREcmF3TGF5ZXJzKCkKICAgICBMYXllckxpc3QgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICB1cGRhdGVMYXllcnMocmVuZGVyU3VyZmFjZUxheWVy
TGlzdCk7CiAKKyAgICAvLyBCZWZvcmUgZHJhd0xheWVyczoKKyAgICBpZiAoaGFyZHdhcmVDb21w
b3NpdGluZygpKSB7CisgICAgICAgIC8vIFRoZSBtdWx0aXRocmVhZGVkIGNvbXBvc2l0b3IgY2Fz
ZSBkb2VzIG5vdCB3b3JrIGFzIGxvbmcgYXMKKyAgICAgICAgLy8gY29weVRleEltYWdlMkQgcmVz
b2x2ZXMgdG8gdGhlIHBhcmVudCB0ZXh0dXJlLCBiZWNhdXNlIHRoZSBtYWluCisgICAgICAgIC8v
IHRocmVhZCBjYW4gZXhlY3V0ZSBXZWJHTCBjYWxscyBvbiB0aGUgY2hpbGQgY29udGV4dCBhdCBh
bnkgdGltZSwKKyAgICAgICAgLy8gcG90ZW50aWFsbHkgY2xvYmJlcmluZyB0aGUgcGFyZW50IHRl
eHR1cmUgdGhhdCBpcyBiZWlibmcgcmVuZGVyZXJlZAorICAgICAgICAvLyBieSB0aGUgY29tcG9z
aXRvciB0aHJlYWQuCisgICAgICAgIGlmIChtX2NoaWxkQ29udGV4dHNXZXJlQ29waWVkKSB7Cisg
ICAgICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogcGFyZW50RXh0ID0gc3RhdGljX2Nhc3Q8
RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAg
ICAgICAgICAvLyBGb3IgZWFjaCBjaGlsZCBjb250ZXh0OgorICAgICAgICAgICAgLy8gICBnbFdh
aXRMYXRjaChPZmZzY3JlZW4tPkNvbXBvc2l0b3IpOworICAgICAgICAgICAgQ2hpbGRDb250ZXh0
TWFwOjppdGVyYXRvciBpID0gbV9jaGlsZENvbnRleHRzLmJlZ2luKCk7CisgICAgICAgICAgICBm
b3IgKDsgaSAhPSBtX2NoaWxkQ29udGV4dHMuZW5kKCk7ICsraSkgeworICAgICAgICAgICAgICAg
IEV4dGVuc2lvbnMzRENocm9taXVtKiBjaGlsZEV4dCA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMz
RENocm9taXVtKj4oaS0+Zmlyc3QtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAgICAgICAgICAg
R0MzRHVpbnQgbGF0Y2hJZDsKKyAgICAgICAgICAgICAgICBjaGlsZEV4dC0+Z2V0Q2hpbGRUb1Bh
cmVudExhdGNoQ0hST01JVU0oJmxhdGNoSWQpOworICAgICAgICAgICAgICAgIHBhcmVudEV4dC0+
d2FpdExhdGNoQ0hST01JVU0oMCwgbGF0Y2hJZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgLy8gUmVzZXQgdG8gZmFsc2UgdG8gaW5kaWNhdGUgdGhhdCB3ZSBoYXZlIGNvbnN1
bWVkIHRoZSBkaXJ0eSBjaGlsZAorICAgICAgICAvLyBjb250ZXh0cycgcGFyZW50IHRleHR1cmVz
LiAoVGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuIHRoZSBjb21wb3NpdG9yCisgICAgICAgIC8vIGlz
IG11bHRpdGhyZWFkZWQuKQorICAgICAgICBtX2NoaWxkQ29udGV4dHNXZXJlQ29waWVkID0gZmFs
c2U7CisgICAgfQorCiAgICAgZHJhd0xheWVycyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIAor
ICAgIC8vIEFmdGVyIGRyYXdMYXllcnM6CisgICAgaWYgKGhhcmR3YXJlQ29tcG9zaXRpbmcoKSkg
eworICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogcGFyZW50RXh0ID0gc3RhdGljX2Nhc3Q8
RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAg
ICAgIC8vIEZvciBlYWNoIGNoaWxkIGNvbnRleHQ6CisgICAgICAgIC8vICAgZ2xTZXRMYXRjaChD
b21wb3NpdG9yLT5PZmZzY3JlZW4pOworICAgICAgICBDaGlsZENvbnRleHRNYXA6Oml0ZXJhdG9y
IGkgPSBtX2NoaWxkQ29udGV4dHMuYmVnaW4oKTsKKyAgICAgICAgZm9yICg7IGkgIT0gbV9jaGls
ZENvbnRleHRzLmVuZCgpOyArK2kpIHsKKyAgICAgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVt
KiBjaGlsZEV4dCA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oaS0+Zmlyc3Qt
PmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAgICAgICBHQzNEdWludCBsYXRjaElkOworICAgICAg
ICAgICAgY2hpbGRFeHQtPmdldFBhcmVudFRvQ2hpbGRMYXRjaENIUk9NSVVNKCZsYXRjaElkKTsK
KyAgICAgICAgICAgIHBhcmVudEV4dC0+c2V0TGF0Y2hDSFJPTUlVTSgwLCBsYXRjaElkKTsKKyAg
ICAgICAgfQorICAgIH0KKwogICAgIGlmIChpc0NvbXBvc2l0aW5nT2Zmc2NyZWVuKCkpCiAgICAg
ICAgIGNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5KCk7CiB9CkBAIC0zMDksNyArMzUwLDQ4
IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXllcnMoTGF5ZXJMaXN0JiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQogCiAgICAgcGFpbnRDb250ZW50c1JlY3Vyc2l2ZShtX3Jv
b3RMYXllci5nZXQoKSk7CiAKKyAgICAvLyBCZWZvcmUgdXBkYXRlQ29tcG9zaXRvclJlc291cmNl
c1JlY3Vyc2l2ZSwgd2hlbiB0aGUgY29tcG9zaXRvciBydW5zIGluCisgICAgLy8gaXRzIG93biB0
aHJlYWQsIGFuZCB3aGVuIHRoZSBjb3B5VGV4SW1hZ2UyRCBidWcgaXMgZml4ZWQsIGluc2VydAor
ICAgIC8vIGEgZ2xXYWl0TGF0Y2goQ29tcG9zaXRvci0+T2Zmc2NyZWVuKSBvbiBhbGwgY2hpbGQg
Y29udGV4dHMgaGVyZSBpbnN0ZWFkCisgICAgLy8gb2YgYWZ0ZXIgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlc1JlY3Vyc2l2ZS4KKyAgICAvLyBBbHNvIHVuY29tbWVudCB0aGUgZ2xTZXRMYXRjaChD
b21wb3NpdG9yLT5PZmZzY3JlZW4pIGNvZGUgaW4gYWRkQ2hpbGRDb250ZXh0LgorLy8gIGlmICho
YXJkd2FyZUNvbXBvc2l0aW5nKCkpIHsKKy8vICAgICAgLy8gRm9yIGVhY2ggY2hpbGQgY29udGV4
dDoKKy8vICAgICAgLy8gICBnbFdhaXRMYXRjaChDb21wb3NpdG9yLT5PZmZzY3JlZW4pOworLy8g
ICAgICBDaGlsZENvbnRleHRNYXA6Oml0ZXJhdG9yIGkgPSBtX2NoaWxkQ29udGV4dHMuYmVnaW4o
KTsKKy8vICAgICAgZm9yICg7IGkgIT0gbV9jaGlsZENvbnRleHRzLmVuZCgpOyArK2kpIHsKKy8v
ICAgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHQgPSBzdGF0aWNfY2FzdDxFeHRlbnNp
b25zM0RDaHJvbWl1bSo+KGktPmZpcnN0LT5nZXRFeHRlbnNpb25zKCkpOworLy8gICAgICAgICAg
R0MzRHVpbnQgY2hpbGRUb1BhcmVudExhdGNoSWQsIHBhcmVudFRvQ2hpbGRMYXRjaElkOworLy8g
ICAgICAgICAgZXh0LT5nZXRQYXJlbnRUb0NoaWxkTGF0Y2hDSFJPTUlVTSgmcGFyZW50VG9DaGls
ZExhdGNoSWQpOworLy8gICAgICAgICAgZXh0LT53YWl0TGF0Y2hDSFJPTUlVTSgwLCBwYXJlbnRU
b0NoaWxkTGF0Y2hJZCk7CisvLyAgICAgIH0KKy8vICB9CisKICAgICB1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzUmVjdXJzaXZlKG1fcm9vdExheWVyLmdldCgpKTsKKworICAgIC8vIEFmdGVyIHVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXNSZWN1cnNpdmUsIHNldC93YWl0IGxhdGNoZXMgZm9yIGFs
bCBjaGlsZAorICAgIC8vIGNvbnRleHRzLiBUaGlzIHdpbGwgcHJldmVudCB0aGUgY29tcG9zaXRv
ciBmcm9tIHVzaW5nIGFueSBvZiB0aGUgY2hpbGQKKyAgICAvLyBwYXJlbnQgdGV4dHVyZXMgd2hp
bGUgV2ViR0wgY29tbWFuZHMgYXJlIGV4ZWN1dGluZyBmcm9tIGphdmFzY3JpcHQgKmFuZCoKKyAg
ICAvLyB3aGlsZSB0aGUgZmluYWwgcGFyZW50IHRleHR1cmUgaXMgYmVpbmcgYmxpdCdkLiBjb3B5
VGV4SW1hZ2UyRAorICAgIC8vIHVzZXMgdGhlIHBhcmVudCB0ZXh0dXJlIGFzIGEgdGVtcG9yYXJ5
IHJlc29sdmUgYnVmZmVyLCBzbyB0aGF0J3Mgd2h5IHRoZQorICAgIC8vIHdhaXRMYXRjaCBpcyBi
ZWxvdywgdG8gYmxvY2sgdGhlIGNvbXBvc2l0b3IgZnJvbSB1c2luZyB0aGUgcGFyZW50IHRleHR1
cmUKKyAgICAvLyB1bnRpbCB0aGUgbmV4dCBXZWJHTCBTd2FwQnVmZmVycyAob3IgY29weVRleHR1
cmVUb1BhcmVudFRleHR1cmUgZm9yCisgICAgLy8gQ2FudmFzMkQpLgorICAgIGlmIChoYXJkd2Fy
ZUNvbXBvc2l0aW5nKCkpIHsKKyAgICAgICAgbV9jaGlsZENvbnRleHRzV2VyZUNvcGllZCA9IHRy
dWU7CisgICAgICAgIC8vIEZvciBlYWNoIGNoaWxkIGNvbnRleHQ6CisgICAgICAgIC8vICAgZ2xT
ZXRMYXRjaChPZmZzY3JlZW4tPkNvbXBvc2l0b3IpOworICAgICAgICAvLyAgIGdsV2FpdExhdGNo
KENvbXBvc2l0b3ItPk9mZnNjcmVlbik7CisgICAgICAgIENoaWxkQ29udGV4dE1hcDo6aXRlcmF0
b3IgaSA9IG1fY2hpbGRDb250ZXh0cy5iZWdpbigpOworICAgICAgICBmb3IgKDsgaSAhPSBtX2No
aWxkQ29udGV4dHMuZW5kKCk7ICsraSkgeworICAgICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21p
dW0qIGV4dCA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oaS0+Zmlyc3QtPmdl
dEV4dGVuc2lvbnMoKSk7CisgICAgICAgICAgICBHQzNEdWludCBjaGlsZFRvUGFyZW50TGF0Y2hJ
ZCwgcGFyZW50VG9DaGlsZExhdGNoSWQ7CisgICAgICAgICAgICBleHQtPmdldFBhcmVudFRvQ2hp
bGRMYXRjaENIUk9NSVVNKCZwYXJlbnRUb0NoaWxkTGF0Y2hJZCk7CisgICAgICAgICAgICBleHQt
PmdldENoaWxkVG9QYXJlbnRMYXRjaENIUk9NSVVNKCZjaGlsZFRvUGFyZW50TGF0Y2hJZCk7Cisg
ICAgICAgICAgICBleHQtPnNldExhdGNoQ0hST01JVU0oMCwgY2hpbGRUb1BhcmVudExhdGNoSWQp
OworICAgICAgICAgICAgZXh0LT53YWl0TGF0Y2hDSFJPTUlVTSgwLCBwYXJlbnRUb0NoaWxkTGF0
Y2hJZCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3TGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKQEAg
LTg4Miw3ICs5NjQsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyKEND
TGF5ZXJJbXBsKiBsYXllciwgUmVuZGVyU3VyZmFjZUNocm9taXVtKgogICAgIC8vIEZJWE1FOiBO
ZWVkIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSBjb21tdWxhdGl2ZSByZW5kZXIgc3VyZmFjZSB0
cmFuc2Zvcm1zIGFsbCB0aGUgd2F5IGZyb20KICAgICAvLyAgICAgICAgdGhlIGRlZmF1bHQgcmVu
ZGVyIHN1cmZhY2UgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggY29tYmluZWREcmF3TWF0cml4ID0gKGxheWVyLT50YXJnZXRSZW5kZXJT
dXJmYWNlKCkgPyBsYXllci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpLT5kcmF3VHJhbnNmb3JtKCku
bXVsdGlwbHkobGF5ZXItPmRyYXdUcmFuc2Zvcm0oKSkgOiBsYXllci0+ZHJhd1RyYW5zZm9ybSgp
KTsKLSAgICAKKwogICAgIGlmICghbGF5ZXItPmRvdWJsZVNpZGVkKCkpIHsKICAgICAgICAgRmxv
YXRSZWN0IGxheWVyUmVjdChGbG9hdFBvaW50KDAsIDApLCBGbG9hdFNpemUobGF5ZXItPmJvdW5k
cygpKSk7CiAgICAgICAgIEZsb2F0UXVhZCBtYXBwZWRMYXllciA9IGNvbWJpbmVkRHJhd01hdHJp
eC5tYXBRdWFkKEZsb2F0UXVhZChsYXllclJlY3QpKTsKQEAgLTEwMjksNiArMTExMSw0MiBAQCBT
dHJpbmcgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpsYXllclRyZWVBc1RleHQoKSBjb25zdAogICAg
IHJldHVybiB0cy5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjph
ZGRDaGlsZENvbnRleHQoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3R4KQoreworICAg
IC8vIFRoaXMgaXMgYSByZWYtY291bnRpbmcgbWFwLCBiZWNhdXNlIHNvbWUgY29udGV4dHMgYXJl
IHNoYXJlZCBieSBtdWx0aXBsZQorICAgIC8vIGxheWVycyAoc3BlY2lmaWNhbGx5LCBDYW52YXMy
RExheWVyQ2hyb21pdW0pLgorCisgICAgLy8gSW5zZXJ0IHRoZSBjdHggd2l0aCBhIGNvdW50IG9m
IDEsIG9yIHJldHVybiB0aGUgZXhpc3RpbmcgaXRlcmF0b3IuCisgICAgc3RkOjpwYWlyPENoaWxk
Q29udGV4dE1hcDo6aXRlcmF0b3IsIGJvb2w+IGluc2VydF9yZXN1bHQgPSBtX2NoaWxkQ29udGV4
dHMuYWRkKGN0eCwgMSk7CisgICAgaWYgKCFpbnNlcnRfcmVzdWx0LnNlY29uZCkgeworICAgICAg
Ly8gQWxyZWFkeSBwcmVzZW50IGluIG1hcCwgc28gaW5jcmVtZW50LgorICAgICAgKytpbnNlcnRf
cmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgfSBlbHNlIHsKKy8vIFRPRE8oamJhdGVzKTogd2hl
biBjb21wb3NpdG9yIGlzIG11bHRpdGhyZWFkZWQgYW5kIGNvcHlUZXhJbWFnZTJEIGJ1ZyBpcyBm
aXhlZCwKKy8vIHVuY29tbWVudCB0aGlzIGJsb2NrOgorLy8gICAgICAvLyBUaGlzIGlzIGEgbmV3
IGNoaWxkIGNvbnRleHQgLSBzZXQgdGhlIHBhcmVudFRvQ2hpbGQgbGF0Y2ggc28gdGhhdCBpdAor
Ly8gICAgICAvLyBjYW4gY29udGludWUgcGFzdCBpdHMgZmlyc3Qgd2FpdCBsYXRjaC4KKy8vICAg
ICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dCA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENo
cm9taXVtKj4oaW5zZXJ0X3Jlc3VsdC5maXJzdC0+Zmlyc3QtPmdldEV4dGVuc2lvbnMoKSk7Cisv
LyAgICAgIEdDM0R1aW50IGxhdGNoSWQ7CisvLyAgICAgIGV4dC0+Z2V0UGFyZW50VG9DaGlsZExh
dGNoQ0hST01JVU0oJmxhdGNoSWQpOworLy8gICAgICBleHQtPnNldExhdGNoQ0hST01JVU0oMCwg
bGF0Y2hJZCk7CisgICAgfQorfQorCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVtb3Zl
Q2hpbGRDb250ZXh0KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGN0eCkKK3sKKyAgICBD
aGlsZENvbnRleHRNYXA6Oml0ZXJhdG9yIGkgPSBtX2NoaWxkQ29udGV4dHMuZmluZChjdHgpOwor
ICAgIGlmIChpICE9IG1fY2hpbGRDb250ZXh0cy5lbmQoKSkgeworICAgICAgICBpZiAoLS1pLT5z
ZWNvbmQgPD0gMCkgeworICAgICAgICAgICAgLy8gQ291bnQgcmVhY2hlZCB6ZXJvLCBzbyByZW1v
dmUgZnJvbSBtYXAuCisgICAgICAgICAgICBtX2NoaWxkQ29udGV4dHMucmVtb3ZlKGkpOworICAg
ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gZXJyb3IKKyAgICAgICAgQVNTRVJUKDAg
JiYgIm1fY2hpbGRDb250ZXh0cyBtYXAgaGFzIG1pc21hdGNoZWQgYWRkL3JlbW92ZSBjYWxscyIp
OworICAgIH0KK30KKwogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmR1bXBSZW5kZXJTdXJm
YWNlcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCwgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpIGNv
bnN0CiB7CiAgICAgaWYgKGxheWVyLT5jY0xheWVySW1wbCgpLT5yZW5kZXJTdXJmYWNlKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGM1MDkyYzFiOTI0ZThmMTk1YTVm
MjVlOGVjZmQyNTJjZGFlYTg1MGEuLjI1MmU5NzdjNzNkYTIzMTQ3MzAwNTgyNzdmYTE5Y2UyZjkz
ZTk4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMzEsOCArMTMx
LDEyIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoKSBjb25zdDsKIAor
ICAgIHZvaWQgYWRkQ2hpbGRDb250ZXh0KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsK
KyAgICB2b2lkIHJlbW92ZUNoaWxkQ29udGV4dChQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
Pik7CisKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+
IExheWVyTGlzdDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiwgaW50PiBDaGlsZENvbnRleHRNYXA7CiAKICAgICBleHBsaWNpdCBMYXllclJlbmRlcmVyQ2hy
b21pdW0oUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIFBhc3NPd25QdHI8VGlsZVBhaW50
SW50ZXJmYWNlPiBjb250ZW50UGFpbnQsIFBhc3NPd25QdHI8VGlsZVBhaW50SW50ZXJmYWNlPiBz
Y3JvbGxiYXJQYWludCk7CiAKQEAgLTIyMiw2ICsyMjYsMTMgQEAgcHJpdmF0ZToKICAgICBPd25Q
dHI8Q0NIZWFkc1VwRGlzcGxheT4gbV9oZWFkc1VwRGlzcGxheTsKIAogICAgIFJlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gbV9jb250ZXh0OworICAgIENoaWxkQ29udGV4dE1hcCBtX2NoaWxkQ29u
dGV4dHM7CisKKyAgICAvLyBJZiB0cnVlLCB0aGUgY2hpbGQgY29udGV4dHMgd2VyZSBjb3BpZWQg
dG8gdGhlIGNvbXBvc2l0b3IgdGV4dHVyZSB0YXJnZXRzCisgICAgLy8gYW5kIHRoZSBjb21wb3Np
dG9yIHdpbGwgbmVlZCB0byB3YWl0IG9uIHRoZSBwcm9wZXIgbGF0Y2hlcyBiZWZvcmUgdXNpbmcK
KyAgICAvLyB0aGUgdGFyZ2V0IHRleHR1cmVzLiBJZiBmYWxzZSwgdGhlIGNvbXBvc2l0b3IgaXMg
cmV1c2luZyB0aGUgdGV4dHVyZXMKKyAgICAvLyBmcm9tIGxhc3QgZnJhbWUuCisgICAgYm9vbCBt
X2NoaWxkQ29udGV4dHNXZXJlQ29waWVkOwogCiAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiBt
X2RlZmF1bHRSZW5kZXJTdXJmYWNlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IDY1MmU3NTI3YTY0ZTMyZGU1MWZiY2RiYzFjMjgwYjY0ZjI4ZWEzMzMuLjMxYjFiMTY5
NGIwYjVjMzQwZGZiOTRiZGFkMzFmOGRmOWIzMmFmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNo
cm9taXVtLmNwcApAQCAtNTEsNiArNTEsMTIgQEAgV2ViR0xMYXllckNocm9taXVtOjpXZWJHTExh
eWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKIHsKIH0KIAorV2ViR0xM
YXllckNocm9taXVtOjp+V2ViR0xMYXllckNocm9taXVtKCkKK3sKKyAgICBpZiAobV9jb250ZXh0
ICYmIGxheWVyUmVuZGVyZXIoKSkKKyAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT5yZW1vdmVDaGls
ZENvbnRleHQobV9jb250ZXh0KTsKK30KKwogdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKQogewogICAgIGlmICghbV9jb250ZW50c0RpcnR5KQpAQCAt
NzAsNiArNzYsOSBAQCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcygpCiAgICAgfQogICAgIC8vIFVwZGF0ZSB0aGUgY29udGVudHMgb2YgdGhlIHRleHR1
cmUgdXNlZCBieSB0aGUgY29tcG9zaXRvci4KICAgICBpZiAobV9jb250ZW50c0RpcnR5ICYmIG1f
dGV4dHVyZVVwZGF0ZWQpIHsKKyAgICAgICAgLy8gcHJlcGFyZVRleHR1cmUgY29waWVzIHRoZSBj
b250ZW50cyBvZiB0aGUgb2ZmLXNjcmVlbiByZW5kZXIgdGFyZ2V0IGludG8gdGhlIHRleHR1cmUK
KyAgICAgICAgLy8gdXNlZCBieSB0aGUgY29tcG9zaXRvci4KKyAgICAgICAgLy8KICAgICAgICAg
bV9jb250ZXh0LT5wcmVwYXJlVGV4dHVyZSgpOwogICAgICAgICBtX2NvbnRleHQtPm1hcmtMYXll
ckNvbXBvc2l0ZWQoKTsKICAgICAgICAgbV9jb250ZW50c0RpcnR5ID0gZmFsc2U7CkBAIC04NCw2
ICs5MywxMyBAQCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZVVwZGF0ZWQoKQog
CiB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCkKIHsKKyAgICBpZiAobV9jb250ZXh0ICE9IGNvbnRleHQgJiYgbGF5ZXJS
ZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgICAgICBsYXllclJl
bmRlcmVyKCktPnJlbW92ZUNoaWxkQ29udGV4dChtX2NvbnRleHQpOworICAgICAgICBpZiAoY29u
dGV4dCkKKyAgICAgICAgICAgIGxheWVyUmVuZGVyZXIoKS0+YWRkQ2hpbGRDb250ZXh0KG1fY29u
dGV4dCk7CisgICAgfQorCiAgICAgbV9jb250ZXh0ID0gY29uc3RfY2FzdDxHcmFwaGljc0NvbnRl
eHQzRCo+KGNvbnRleHQpOwogCiAgICAgdW5zaWduZWQgaW50IHRleHR1cmVJZCA9IG1fY29udGV4
dC0+cGxhdGZvcm1UZXh0dXJlKCk7CkBAIC05NSw1ICsxMTEsMTkgQEAgdm9pZCBXZWJHTExheWVy
Q2hyb21pdW06OnNldENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAg
ICAgbV9wcmVtdWx0aXBsaWVkQWxwaGEgPSBtX2NvbnRleHQtPmdldENvbnRleHRBdHRyaWJ1dGVz
KCkucHJlbXVsdGlwbGllZEFscGhhOwogfQogCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0
TGF5ZXJSZW5kZXJlcihMYXllclJlbmRlcmVyQ2hyb21pdW0qIG5ld0xheWVyUmVuZGVyZXIpCit7
CisgICAgaWYgKGxheWVyUmVuZGVyZXIoKSAhPSBuZXdMYXllclJlbmRlcmVyKSB7CisgICAgICAg
IGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgICAgIGlmIChsYXllclJlbmRlcmVyKCkpCisgICAg
ICAgICAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT5yZW1vdmVDaGlsZENvbnRleHQobV9jb250ZXh0
KTsKKyAgICAgICAgICAgIGlmIChuZXdMYXllclJlbmRlcmVyKQorICAgICAgICAgICAgICAgIG5l
d0xheWVyUmVuZGVyZXItPmFkZENoaWxkQ29udGV4dChtX2NvbnRleHQpOworICAgICAgICB9CisK
KyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJSZW5kZXJlcihuZXdMYXllclJlbmRlcmVy
KTsKKyAgICB9Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9X
ZWJHTExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDMzZGI3MzAyNWQ4ZjdiMmYwN2NhZTY0
M2VjYzY0YWU0YzBjODY1MjUuLjM0MjI3NWI0NmIzZTc5ZWVjMjMwYWUxYjFlMDJhZmNjZTEwN2Jm
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1dlYkdMTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCkBAIC00NCwxMiArNDQsMTcgQEAgY2xh
c3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW0gOiBwdWJsaWMg
Q2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
R0xMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciA9IDAp
OworCisgICAgdmlydHVhbCB+V2ViR0xMYXllckNocm9taXVtKCk7CisKICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKTsKICAgICB2b2lkIHNldFRleHR1cmVV
cGRhdGVkKCk7CiAKICAgICB2b2lkIHNldENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQpOwogCisgICAgdmlydHVhbCB2b2lkIHNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKik7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxh
eWVyVHlwZUFzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gIldlYkdMTGF5ZXIiOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjI1MWRkYWE3Y2NhNjhjMDc1YTExNWQzYTRjMTQ5OTZi
YjFjMTFjOC4uMWM1YmYxMzU1YmQ3OGM3NjdmOTZmZWRlNTc2MTZjZGMxZWVkMWUyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0wNC0wNyAgSm9obiBC
YXRlcyAgPGpiYXRlc0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbiBSdXNz
ZWxsLgorCisgICAgICAgIGNocm9taXVtIHN1cHBvcnQgZm9yIGdsU2V0TGF0Y2ggYW5kIGdsV2Fp
dExhdGNoIGJldHdlZW4gM0QgY29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU4MDAzCisKKyAgICAgICAgKiBwdWJsaWMvV2ViR3JhcGhpY3ND
b250ZXh0M0QuaDoKKyAgICAgICAgKiBzcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNEQ2hyb21pdW06OmdldExhdGNoUGFyZW50VG9DaGls
ZENIUk9NSVVNKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRENocm9taXVtOjpnZXRM
YXRjaENoaWxkVG9QYXJlbnRDSFJPTUlVTSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25z
M0RDaHJvbWl1bTo6d2FpdExhdGNoQ0hST01JVU0pOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5z
aW9uczNEQ2hyb21pdW06OnNldExhdGNoQ0hST01JVU0pOgorICAgICAgICAqIHNyYy9HcmFwaGlj
c0NvbnRleHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbC5oOgorCiAyMDExLTA0LTA4ICBBYXJvbiBCb29kbWFuICA8YWFAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERtaXRyeSBUaXRvdi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDk4NGY3
OWQyNWFhYWQ1N2E1NmU3YWViYTRmNDU5ODg2YzhlZWQ2YTguLmZkNzg5OGZlNTRkZDAxYWQ3YmJm
MmE1OWJjZWIyOTExNTk3NzgzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTY4LDYgKzE2OCwxMiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlckNIUk9NSVVNKFdHQzNEaW50IHNy
Y1gwLCBXR0MzRGludCBzcmNZMCwgV0dDM0RpbnQgc3JjWDEsIFdHQzNEaW50IHNyY1kxLCBXR0Mz
RGludCBkc3RYMCwgV0dDM0RpbnQgZHN0WTAsIFdHQzNEaW50IGRzdFgxLCBXR0MzRGludCBkc3RZ
MSwgV0dDM0RiaXRmaWVsZCBtYXNrLCBXR0MzRGVudW0gZmlsdGVyKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUNIUk9NSVVNKFdHQzNEZW51bSB0
YXJnZXQsIFdHQzNEc2l6ZWkgc2FtcGxlcywgV0dDM0RlbnVtIGludGVybmFsZm9ybWF0LCBXR0Mz
RHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCkgPSAwOwogCisgICAgLy8gTGF0Y2ggc3Vw
cG9ydAorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXJlbnRUb0NoaWxkTGF0Y2hDSFJPTUlVTShXR0Mz
RHVpbnQqIGxhdGNoSWQpIHt9IC8vIFRPRE8gPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDaGls
ZFRvUGFyZW50TGF0Y2hDSFJPTUlVTShXR0MzRHVpbnQqIGxhdGNoSWQpIHt9IC8vIFRPRE8gPSAw
OworICAgIHZpcnR1YWwgdm9pZCB3YWl0TGF0Y2hDSFJPTUlVTShXR0MzRGludCBzaG1JZCwgV0dD
M0R1aW50IGxhdGNoSWQpIHt9IC8vIFRPRE8gPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRMYXRj
aENIUk9NSVVNKFdHQzNEaW50IHNobUlkLCBXR0MzRHVpbnQgbGF0Y2hJZCkge30gLy8gVE9ETyA9
IDA7CisKICAgICAvLyBUaGUgZW50cnkgcG9pbnRzIGJlbG93IG1hcCBkaXJlY3RseSB0byB0aGUg
T3BlbkdMIEVTIDIuMCBBUEkuCiAgICAgLy8gU2VlOiBodHRwOi8vd3d3Lmtocm9ub3Mub3JnL3Jl
Z2lzdHJ5L2dsZXMvCiAgICAgLy8gYW5kOiBodHRwOi8vd3d3Lmtocm9ub3Mub3JnL29wZW5nbGVz
L3Nkay9kb2NzL21hbi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4
dGVuc2lvbnMzRENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVu
c2lvbnMzRENocm9taXVtLmNwcAppbmRleCAzMDEwMWM3YTNlMGJlNmM2Zjk5MjQyNGZlMDJlMDc2
MTk3YjIwMjA5Li4xZDU4NGJmZmVmM2IyMTA3ZjhlNjZhYjYyMTUxNWU5M2YyYTNjZTU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0u
Y3BwCkBAIC05Nyw2ICs5NywyNiBAQCB2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjpjb3B5VGV4
dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKHVuc2lnbmVkIHRleHR1cmUsCiAgICAgbV9pbnRl
cm5hbC0+Y29weVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTSh0ZXh0dXJlLCBwYXJlbnRU
ZXh0dXJlKTsKIH0KIAordm9pZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6Z2V0UGFyZW50VG9DaGls
ZExhdGNoQ0hST01JVU0oR0MzRHVpbnQqIGxhdGNoSWQpCit7CisgICAgbV9pbnRlcm5hbC0+Z2V0
UGFyZW50VG9DaGlsZExhdGNoQ0hST01JVU0obGF0Y2hJZCk7Cit9CisKK3ZvaWQgRXh0ZW5zaW9u
czNEQ2hyb21pdW06OmdldENoaWxkVG9QYXJlbnRMYXRjaENIUk9NSVVNKEdDM0R1aW50KiBsYXRj
aElkKQoreworICAgIG1faW50ZXJuYWwtPmdldENoaWxkVG9QYXJlbnRMYXRjaENIUk9NSVVNKGxh
dGNoSWQpOworfQorCit2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjp3YWl0TGF0Y2hDSFJPTUlV
TShHQzNEaW50IHNobUlkLCBHQzNEdWludCBsYXRjaElkKQoreworICAgIG1faW50ZXJuYWwtPndh
aXRMYXRjaENIUk9NSVVNKHNobUlkLCBsYXRjaElkKTsKK30KKwordm9pZCBFeHRlbnNpb25zM0RD
aHJvbWl1bTo6c2V0TGF0Y2hDSFJPTUlVTShHQzNEaW50IHNobUlkLCBHQzNEdWludCBsYXRjaElk
KQoreworICAgIG1faW50ZXJuYWwtPnNldExhdGNoQ0hST01JVU0oc2htSWQsIGxhdGNoSWQpOwor
fQorCiBQbGF0Zm9ybTNET2JqZWN0IEV4dGVuc2lvbnMzRENocm9taXVtOjpjcmVhdGVWZXJ0ZXhB
cnJheU9FUygpCiB7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCmluZGV4IDU0YzE4ZTM1
N2JmYTJmYzgzY2VhNDIwMzdlNTA2Y2JhMTZlNWM3YTcuLjU4YzVkMTM0YjlkYzFiYjg0OGYyN2Uy
MmI4ZTVhNTllOWRiNWY1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAg
UGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXQKIHsKICAgICBpZiAobV9pbXBsLT5nZXRDb250ZXh0QXR0
cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCisK
ICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShJbnRT
aXplKG1faW1wbC0+d2lkdGgoKSwgbV9pbXBsLT5oZWlnaHQoKSkpOwogICAgIHVuc2lnbmVkIGNo
YXIqIHBpeGVscyA9IGltYWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCktPmRhdGEoKTsKICAgICBzaXpl
X3QgYnVmZmVyU2l6ZSA9IDQgKiBtX2ltcGwtPndpZHRoKCkgKiBtX2ltcGwtPmhlaWdodCgpOwpA
QCAtODAwLDYgKzgwMCwxMCBAQCBERUxFR0FURV9UT19JTVBMXzEodW5tYXBUZXhTdWJJbWFnZTJE
Q0hST01JVU0sIGNvbnN0IHZvaWQqKQogREVMRUdBVEVfVE9fSU1QTF8yKGNvcHlUZXh0dXJlVG9Q
YXJlbnRUZXh0dXJlQ0hST01JVU0sIFBsYXRmb3JtM0RPYmplY3QsIFBsYXRmb3JtM0RPYmplY3Qp
CiBERUxFR0FURV9UT19JTVBMXzEwKGJsaXRGcmFtZWJ1ZmZlckNIUk9NSVVNLCBHQzNEaW50LCBH
QzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNE
aW50LCBHQzNEYml0ZmllbGQsIEdDM0RlbnVtKQogREVMRUdBVEVfVE9fSU1QTF81KHJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUNIUk9NSVVNLCBHQzNEZW51bSwgR0MzRHNpemVpLCBHQzNE
ZW51bSwgR0MzRHNpemVpLCBHQzNEc2l6ZWkpCitERUxFR0FURV9UT19JTVBMXzEoZ2V0UGFyZW50
VG9DaGlsZExhdGNoQ0hST01JVU0sIEdDM0R1aW50KikKK0RFTEVHQVRFX1RPX0lNUExfMShnZXRD
aGlsZFRvUGFyZW50TGF0Y2hDSFJPTUlVTSwgR0MzRHVpbnQqKQorREVMRUdBVEVfVE9fSU1QTF8y
KHdhaXRMYXRjaENIUk9NSVVNLCBHQzNEaW50LCBHQzNEdWludCkKK0RFTEVHQVRFX1RPX0lNUExf
MihzZXRMYXRjaENIUk9NSVVNLCBHQzNEaW50LCBHQzNEdWludCkKIAogLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAvLyBHcmFwaGljc0NvbnRleHQzRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oCmluZGV4IDBhZjI5MWU5NjMyMjliNmM4
NGQ1NzI5ODA0Y2MwYTFjN2U3NjFjNGEuLmYyMGY2OTgxZjZiN2FkMWRmNmJmMzg0ZDZkMzI4ODFm
MDA2YWFkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzREludGVybmFsLmgKQEAgLTI3MCw2ICsyNzAsMTIgQEAgcHVibGljOgogICAg
IHZvaWQgYmxpdEZyYW1lYnVmZmVyQ0hST01JVU0oR0MzRGludCBzcmNYMCwgR0MzRGludCBzcmNZ
MCwgR0MzRGludCBzcmNYMSwgR0MzRGludCBzcmNZMSwgR0MzRGludCBkc3RYMCwgR0MzRGludCBk
c3RZMCwgR0MzRGludCBkc3RYMSwgR0MzRGludCBkc3RZMSwgR0MzRGJpdGZpZWxkIG1hc2ssIEdD
M0RlbnVtIGZpbHRlcik7CiAgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVD
SFJPTUlVTShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaSBzYW1wbGVzLCBHQzNEZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKIAorICAgIC8v
IExhdGNoIHN1cHBvcnQKKyAgICB2b2lkIGdldFBhcmVudFRvQ2hpbGRMYXRjaENIUk9NSVVNKEdD
M0R1aW50KiBsYXRjaElkKTsKKyAgICB2b2lkIGdldENoaWxkVG9QYXJlbnRMYXRjaENIUk9NSVVN
KEdDM0R1aW50KiBsYXRjaElkKTsKKyAgICB2b2lkIHdhaXRMYXRjaENIUk9NSVVNKEdDM0RpbnQg
c2htSWQsIEdDM0R1aW50IGxhdGNoSWQpOworICAgIHZvaWQgc2V0TGF0Y2hDSFJPTUlVTShHQzNE
aW50IHNobUlkLCBHQzNEdWludCBsYXRjaElkKTsKKwogcHJpdmF0ZToKICAgICBPd25QdHI8V2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRD4gbV9pbXBsOwogICAgIE93blB0cjxFeHRlbnNpb25z
M0RDaHJvbWl1bT4gbV9leHRlbnNpb25zOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89115</attachid>
            <date>2011-04-11 16:19:44 -0700</date>
            <delta_ts>2011-04-11 16:47:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58003-20110411161943.patch</filename>
            <type>text/plain</type>
            <size>23812</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM1MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OTgzMDYyZWEzNzFmYjM3
MzhlYWNjNTBlZWYyNmQzZTkyNjFmNzhhLi5jYzU2ZGQ5ZWViZWRkNTc3ZjEwZTE5NGU1YzdhYjdh
NDVkYTgyYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDQtMTEgIEpvaG4g
QmF0ZXMgIDxqYmF0ZXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBjaHJvbWl1bSBzdXBwb3J0IGZvciBnbFNldExhdGNoIGFuZCBn
bFdhaXRMYXRjaCBiZXR3ZWVuIDNEIGNvbnRleHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODAwMworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6fkNhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnNldERyYXdpbmdCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RD
aHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dMRVMyQ2Fu
dmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1YmljOjpDdWJpYyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlQW5kRHJh
d0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0
ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmFkZENo
aWxkQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnJl
bW92ZUNoaWxkQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5
ZXJDaHJvbWl1bTo6fldlYkdMTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xMYXllckNocm9taXVtOjpzZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisKIDIwMTEtMDQtMTEg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTWFjaWVqIFN0YWNob3dpYWsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNw
cAppbmRleCA0Y2IxMTlhNGQ3ZThkNzEzNjk2NTliZDIwZmRhNWYxMWRkNTAxYzE5Li5lMzI1M2Fi
ZTZjODM1ZTBhYmQ2YWJjOTNmZGEwMmFmNGEyY2Y5NjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkRyYXdpbmdC
dWZmZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIkxheWVy
UmVuZGVyZXJDaHJvbWl1bS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDYgKzU1
LDggQEAgQ2FudmFzMkRMYXllckNocm9taXVtOjp+Q2FudmFzMkRMYXllckNocm9taXVtKCkKIHsK
ICAgICBpZiAobV90ZXh0dXJlSWQpCiAgICAgICAgIGxheWVyUmVuZGVyZXJDb250ZXh0KCktPmRl
bGV0ZVRleHR1cmUobV90ZXh0dXJlSWQpOworICAgIGlmIChtX2RyYXdpbmdCdWZmZXIgJiYgbGF5
ZXJSZW5kZXJlcigpKQorICAgICAgICBsYXllclJlbmRlcmVyKCktPnJlbW92ZUNoaWxkQ29udGV4
dChtX2RyYXdpbmdCdWZmZXItPmdyYXBoaWNzQ29udGV4dDNEKCkpOwogfQogCiB2b2lkIENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCkBAIC0xMDMsOCAr
MTA2LDI4IEBAIHVuc2lnbmVkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dGV4dHVyZUlkKCkgY29u
c3QKIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpzZXREcmF3aW5nQnVmZmVyKERyYXdpbmdC
dWZmZXIqIGRyYXdpbmdCdWZmZXIpCiB7CiAgICAgaWYgKGRyYXdpbmdCdWZmZXIgIT0gbV9kcmF3
aW5nQnVmZmVyKSB7CisgICAgICAgIGlmIChtX2RyYXdpbmdCdWZmZXIgJiYgbGF5ZXJSZW5kZXJl
cigpKQorICAgICAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT5yZW1vdmVDaGlsZENvbnRleHQobV9k
cmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQzRCgpKTsKKwogICAgICAgICBtX2RyYXdpbmdC
dWZmZXIgPSBkcmF3aW5nQnVmZmVyOwogICAgICAgICBtX3RleHR1cmVDaGFuZ2VkID0gdHJ1ZTsK
KworICAgICAgICBpZiAoZHJhd2luZ0J1ZmZlciAmJiBsYXllclJlbmRlcmVyKCkpCisgICAgICAg
ICAgICBsYXllclJlbmRlcmVyKCktPmFkZENoaWxkQ29udGV4dChtX2RyYXdpbmdCdWZmZXItPmdy
YXBoaWNzQ29udGV4dDNEKCkpOworICAgIH0KK30KKwordm9pZCBDYW52YXMyRExheWVyQ2hyb21p
dW06OnNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBuZXdMYXllclJlbmRl
cmVyKQoreworICAgIGlmIChsYXllclJlbmRlcmVyKCkgIT0gbmV3TGF5ZXJSZW5kZXJlcikgewor
ICAgICAgICBpZiAobV9kcmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQzRCgpKSB7CisgICAg
ICAgICAgICBpZiAobGF5ZXJSZW5kZXJlcigpKQorICAgICAgICAgICAgICAgIGxheWVyUmVuZGVy
ZXIoKS0+cmVtb3ZlQ2hpbGRDb250ZXh0KG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0
M0QoKSk7CisgICAgICAgICAgICBpZiAobmV3TGF5ZXJSZW5kZXJlcikKKyAgICAgICAgICAgICAg
ICBuZXdMYXllclJlbmRlcmVyLT5hZGRDaGlsZENvbnRleHQobV9kcmF3aW5nQnVmZmVyLT5ncmFw
aGljc0NvbnRleHQzRCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIExheWVyQ2hyb21pdW06OnNl
dExheWVyUmVuZGVyZXIobmV3TGF5ZXJSZW5kZXJlcik7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhczJETGF5ZXJDaHJvbWl1bS5oCmluZGV4IDgxYjExOGM1YjVkZmU5YzMxYTFlYjI0OWQ1OTky
ZGI0MjZlZDIwOTQuLjQyMjRhYjFkYjkwNjVmYmVhZWQ1MGIwNzVjMjQyZDUzNGU0Njk3NTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
czJETGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCkBAIC01Miw2ICs1Miw4IEBAIHB1Ymxp
YzoKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdDsKICAgICB2b2lkIHNldERyYXdpbmdC
dWZmZXIoRHJhd2luZ0J1ZmZlciopOwogCisgICAgdmlydHVhbCB2b2lkIHNldExheWVyUmVuZGVy
ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ2Fu
dmFzMkRMYXllckNocm9taXVtKERyYXdpbmdCdWZmZXIqLCBHcmFwaGljc0xheWVyQ2hyb21pdW0q
IG93bmVyKTsKICAgICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0
ZW5zaW9uczNEQ2hyb21pdW0uaAppbmRleCAzYjBmZGJmZGQ2YmUxM2M0OWFmZTdjMmMyYWY0MTE1
NzY2ODI1MWYzLi4wZTBkZmZjNDg5NjY5OWU2MGEwZjA5OWFlYTZiZjVlYzg1ZDUwM2ZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNp
b25zM0RDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKQEAgLTY2LDYgKzY2LDEyIEBAIHB1YmxpYzoK
ICAgICAvLyBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50X3RleHR1cmUKICAgICB2
b2lkIGNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0odW5zaWduZWQgdGV4dHVyZSwg
dW5zaWduZWQgcGFyZW50VGV4dHVyZSk7CiAKKyAgICAvLyBMYXRjaCBzdXBwb3J0CisgICAgdm9p
ZCBnZXRQYXJlbnRUb0NoaWxkTGF0Y2hDSFJPTUlVTShHQzNEdWludCogbGF0Y2hJZCk7CisgICAg
dm9pZCBnZXRDaGlsZFRvUGFyZW50TGF0Y2hDSFJPTUlVTShHQzNEdWludCogbGF0Y2hJZCk7Cisg
ICAgdm9pZCB3YWl0TGF0Y2hDSFJPTUlVTShHQzNEdWludCBsYXRjaElkKTsKKyAgICB2b2lkIHNl
dExhdGNoQ0hST01JVU0oR0MzRHVpbnQgbGF0Y2hJZCk7CisKIHByaXZhdGU6CiAgICAgLy8gSW5z
dGFuY2VzIG9mIHRoaXMgY2xhc3MgYXJlIHN0cmljdGx5IG93bmVkIGJ5IHRoZSBHcmFwaGljc0Nv
bnRleHQzRCBpbXBsZW1lbnRhdGlvbiBhbmQgZG8gbm90CiAgICAgLy8gbmVlZCB0byBiZSBpbnN0
YW50aWF0ZWQgYnkgYW55IG90aGVyIGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcAppbmRleCAyNzUzMDMzYzEyMTQzYWRiYWQ0OWFhZDhmNjNlNWU3MWFmNmYwNDhhLi5k
ZjBhODZiY2UzZGRkOTA5MGFlZTA5NTg5ZGM0MTkyNTdkMTdkYTM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgImNj
L0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiQ2FudmFzMkRMYXllckNocm9taXVtLmgiCisjaW5j
bHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNp
bmNsdWRlICJHZW9tZXRyeUJpbmRpbmcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgpAQCAtMTE1LDggKzExNiwxMSBAQCBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZQogICAgICwgbV9v
ZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKDApCiAgICAgLCBtX2NvbXBvc2l0ZU9mZnNjcmVlbihmYWxz
ZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9jaGlsZENvbnRleHRzV2VyZUNv
cGllZChmYWxzZSkKKyAgICAsIG1fY29udGV4dFN1cHBvcnRzTGF0Y2goZmFsc2UpCiAgICAgLCBt
X2RlZmF1bHRSZW5kZXJTdXJmYWNlKDApCiB7CisgICAgbV9jb250ZXh0U3VwcG9ydHNMYXRjaCA9
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fbGF0Y2gi
KTsKICAgICBtX2hhcmR3YXJlQ29tcG9zaXRpbmcgPSBpbml0aWFsaXplU2hhcmVkT2JqZWN0cygp
OwogICAgIG1fcm9vdExheWVyQ29udGVudFRpbGVyID0gTGF5ZXJUaWxlckNocm9taXVtOjpjcmVh
dGUodGhpcywgSW50U2l6ZSgyNTYsIDI1NiksIExheWVyVGlsZXJDaHJvbWl1bTo6Tm9Cb3JkZXJU
ZXhlbHMpOwogICAgIEFTU0VSVChtX3Jvb3RMYXllckNvbnRlbnRUaWxlcik7CkBAIC0yNzEsOCAr
Mjc1LDQ3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVBbmREcmF3TGF5ZXJz
KCkKICAgICBMYXllckxpc3QgcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICB1cGRhdGVMYXll
cnMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKKyAgICAvLyBCZWZvcmUgZHJhd0xheWVyczoK
KyAgICBpZiAoaGFyZHdhcmVDb21wb3NpdGluZygpICYmIG1fY29udGV4dFN1cHBvcnRzTGF0Y2gp
IHsKKyAgICAgICAgLy8gRklYTUU6IFRoZSBtdWx0aXRocmVhZGVkIGNvbXBvc2l0b3IgY2FzZSB3
aWxsIG5vdCB3b3JrIGFzIGxvbmcgYXMKKyAgICAgICAgLy8gY29weVRleEltYWdlMkQgcmVzb2x2
ZXMgdG8gdGhlIHBhcmVudCB0ZXh0dXJlLCBiZWNhdXNlIHRoZSBtYWluCisgICAgICAgIC8vIHRo
cmVhZCBjYW4gZXhlY3V0ZSBXZWJHTCBjYWxscyBvbiB0aGUgY2hpbGQgY29udGV4dCBhdCBhbnkg
dGltZSwKKyAgICAgICAgLy8gcG90ZW50aWFsbHkgY2xvYmJlcmluZyB0aGUgcGFyZW50IHRleHR1
cmUgdGhhdCBpcyBiZWluZyByZW5kZXJlcmVkCisgICAgICAgIC8vIGJ5IHRoZSBjb21wb3NpdG9y
IHRocmVhZC4KKyAgICAgICAgaWYgKG1fY2hpbGRDb250ZXh0c1dlcmVDb3BpZWQpIHsKKyAgICAg
ICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBwYXJlbnRFeHQgPSBzdGF0aWNfY2FzdDxFeHRl
bnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICAgICAg
ICAgIC8vIEZvciBlYWNoIGNoaWxkIGNvbnRleHQ6CisgICAgICAgICAgICAvLyAgIGdsV2FpdExh
dGNoKE9mZnNjcmVlbi0+Q29tcG9zaXRvcik7CisgICAgICAgICAgICBDaGlsZENvbnRleHRNYXA6
Oml0ZXJhdG9yIGkgPSBtX2NoaWxkQ29udGV4dHMuYmVnaW4oKTsKKyAgICAgICAgICAgIGZvciAo
OyBpICE9IG1fY2hpbGRDb250ZXh0cy5lbmQoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgRXh0
ZW5zaW9uczNEQ2hyb21pdW0qIGNoaWxkRXh0ID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hy
b21pdW0qPihpLT5maXJzdC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICAgICAgICAgICAgICBHQzNE
dWludCBsYXRjaElkOworICAgICAgICAgICAgICAgIGNoaWxkRXh0LT5nZXRDaGlsZFRvUGFyZW50
TGF0Y2hDSFJPTUlVTSgmbGF0Y2hJZCk7CisgICAgICAgICAgICAgICAgcGFyZW50RXh0LT53YWl0
TGF0Y2hDSFJPTUlVTShsYXRjaElkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICAvLyBSZXNldCB0byBmYWxzZSB0byBpbmRpY2F0ZSB0aGF0IHdlIGhhdmUgY29uc3VtZWQgdGhl
IGRpcnR5IGNoaWxkCisgICAgICAgIC8vIGNvbnRleHRzJyBwYXJlbnQgdGV4dHVyZXMuIChUaGlz
IGlzIG9ubHkgdXNlZnVsIHdoZW4gdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgLy8gaXMgbXVsdGl0
aHJlYWRlZC4pCisgICAgICAgIG1fY2hpbGRDb250ZXh0c1dlcmVDb3BpZWQgPSBmYWxzZTsKKyAg
ICB9CisKICAgICBkcmF3TGF5ZXJzKHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogCisgICAgLy8g
QWZ0ZXIgZHJhd0xheWVyczoKKyAgICBpZiAoaGFyZHdhcmVDb21wb3NpdGluZygpICYmIG1fY29u
dGV4dFN1cHBvcnRzTGF0Y2gpIHsKKyAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIHBhcmVu
dEV4dCA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkpOworICAgICAgICAvLyBGb3IgZWFjaCBjaGlsZCBjb250ZXh0OgorICAgICAg
ICAvLyAgIGdsU2V0TGF0Y2goQ29tcG9zaXRvci0+T2Zmc2NyZWVuKTsKKyAgICAgICAgQ2hpbGRD
b250ZXh0TWFwOjppdGVyYXRvciBpID0gbV9jaGlsZENvbnRleHRzLmJlZ2luKCk7CisgICAgICAg
IGZvciAoOyBpICE9IG1fY2hpbGRDb250ZXh0cy5lbmQoKTsgKytpKSB7CisgICAgICAgICAgICBF
eHRlbnNpb25zM0RDaHJvbWl1bSogY2hpbGRFeHQgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RD
aHJvbWl1bSo+KGktPmZpcnN0LT5nZXRFeHRlbnNpb25zKCkpOworICAgICAgICAgICAgR0MzRHVp
bnQgbGF0Y2hJZDsKKyAgICAgICAgICAgIGNoaWxkRXh0LT5nZXRQYXJlbnRUb0NoaWxkTGF0Y2hD
SFJPTUlVTSgmbGF0Y2hJZCk7CisgICAgICAgICAgICBwYXJlbnRFeHQtPnNldExhdGNoQ0hST01J
VU0obGF0Y2hJZCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAoaXNDb21wb3NpdGluZ09m
ZnNjcmVlbigpKQogICAgICAgICBjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpOwogfQpA
QCAtMzA5LDcgKzM1Miw0OCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5
ZXJzKExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIAogICAgIHBhaW50Q29udGVu
dHNSZWN1cnNpdmUobV9yb290TGF5ZXIuZ2V0KCkpOwogCisgICAgLy8gRklYTUU6IEJlZm9yZSB1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzUmVjdXJzaXZlLCB3aGVuIHRoZSBjb21wb3NpdG9yIHJ1
bnMgaW4KKyAgICAvLyBpdHMgb3duIHRocmVhZCwgYW5kIHdoZW4gdGhlIGNvcHlUZXhJbWFnZTJE
IGJ1ZyBpcyBmaXhlZCwgaW5zZXJ0CisgICAgLy8gYSBnbFdhaXRMYXRjaChDb21wb3NpdG9yLT5P
ZmZzY3JlZW4pIG9uIGFsbCBjaGlsZCBjb250ZXh0cyBoZXJlIGluc3RlYWQKKyAgICAvLyBvZiBh
ZnRlciB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzUmVjdXJzaXZlLgorICAgIC8vIEFsc28gdW5j
b21tZW50IHRoZSBnbFNldExhdGNoKENvbXBvc2l0b3ItPk9mZnNjcmVlbikgY29kZSBpbiBhZGRD
aGlsZENvbnRleHQuCisvLyAgaWYgKGhhcmR3YXJlQ29tcG9zaXRpbmcoKSAmJiBtX2NvbnRleHRT
dXBwb3J0c0xhdGNoKSB7CisvLyAgICAgIC8vIEZvciBlYWNoIGNoaWxkIGNvbnRleHQ6CisvLyAg
ICAgIC8vICAgZ2xXYWl0TGF0Y2goQ29tcG9zaXRvci0+T2Zmc2NyZWVuKTsKKy8vICAgICAgQ2hp
bGRDb250ZXh0TWFwOjppdGVyYXRvciBpID0gbV9jaGlsZENvbnRleHRzLmJlZ2luKCk7CisvLyAg
ICAgIGZvciAoOyBpICE9IG1fY2hpbGRDb250ZXh0cy5lbmQoKTsgKytpKSB7CisvLyAgICAgICAg
ICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hy
b21pdW0qPihpLT5maXJzdC0+Z2V0RXh0ZW5zaW9ucygpKTsKKy8vICAgICAgICAgIEdDM0R1aW50
IGNoaWxkVG9QYXJlbnRMYXRjaElkLCBwYXJlbnRUb0NoaWxkTGF0Y2hJZDsKKy8vICAgICAgICAg
IGV4dC0+Z2V0UGFyZW50VG9DaGlsZExhdGNoQ0hST01JVU0oJnBhcmVudFRvQ2hpbGRMYXRjaElk
KTsKKy8vICAgICAgICAgIGV4dC0+d2FpdExhdGNoQ0hST01JVU0ocGFyZW50VG9DaGlsZExhdGNo
SWQpOworLy8gICAgICB9CisvLyAgfQorCiAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlc1Jl
Y3Vyc2l2ZShtX3Jvb3RMYXllci5nZXQoKSk7CisKKyAgICAvLyBBZnRlciB1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzUmVjdXJzaXZlLCBzZXQvd2FpdCBsYXRjaGVzIGZvciBhbGwgY2hpbGQKKyAg
ICAvLyBjb250ZXh0cy4gVGhpcyB3aWxsIHByZXZlbnQgdGhlIGNvbXBvc2l0b3IgZnJvbSB1c2lu
ZyBhbnkgb2YgdGhlIGNoaWxkCisgICAgLy8gcGFyZW50IHRleHR1cmVzIHdoaWxlIFdlYkdMIGNv
bW1hbmRzIGFyZSBleGVjdXRpbmcgZnJvbSBqYXZhc2NyaXB0ICphbmQqCisgICAgLy8gd2hpbGUg
dGhlIGZpbmFsIHBhcmVudCB0ZXh0dXJlIGlzIGJlaW5nIGJsaXQnZC4gY29weVRleEltYWdlMkQK
KyAgICAvLyB1c2VzIHRoZSBwYXJlbnQgdGV4dHVyZSBhcyBhIHRlbXBvcmFyeSByZXNvbHZlIGJ1
ZmZlciwgc28gdGhhdCdzIHdoeSB0aGUKKyAgICAvLyB3YWl0TGF0Y2ggaXMgYmVsb3csIHRvIGJs
b2NrIHRoZSBjb21wb3NpdG9yIGZyb20gdXNpbmcgdGhlIHBhcmVudCB0ZXh0dXJlCisgICAgLy8g
dW50aWwgdGhlIG5leHQgV2ViR0wgU3dhcEJ1ZmZlcnMgKG9yIGNvcHlUZXh0dXJlVG9QYXJlbnRU
ZXh0dXJlIGZvcgorICAgIC8vIENhbnZhczJEKS4KKyAgICBpZiAoaGFyZHdhcmVDb21wb3NpdGlu
ZygpICYmIG1fY29udGV4dFN1cHBvcnRzTGF0Y2gpIHsKKyAgICAgICAgbV9jaGlsZENvbnRleHRz
V2VyZUNvcGllZCA9IHRydWU7CisgICAgICAgIC8vIEZvciBlYWNoIGNoaWxkIGNvbnRleHQ6Cisg
ICAgICAgIC8vICAgZ2xTZXRMYXRjaChPZmZzY3JlZW4tPkNvbXBvc2l0b3IpOworICAgICAgICAv
LyAgIGdsV2FpdExhdGNoKENvbXBvc2l0b3ItPk9mZnNjcmVlbik7CisgICAgICAgIENoaWxkQ29u
dGV4dE1hcDo6aXRlcmF0b3IgaSA9IG1fY2hpbGRDb250ZXh0cy5iZWdpbigpOworICAgICAgICBm
b3IgKDsgaSAhPSBtX2NoaWxkQ29udGV4dHMuZW5kKCk7ICsraSkgeworICAgICAgICAgICAgRXh0
ZW5zaW9uczNEQ2hyb21pdW0qIGV4dCA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVt
Kj4oaS0+Zmlyc3QtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAgICAgICBHQzNEdWludCBjaGls
ZFRvUGFyZW50TGF0Y2hJZCwgcGFyZW50VG9DaGlsZExhdGNoSWQ7CisgICAgICAgICAgICBleHQt
PmdldFBhcmVudFRvQ2hpbGRMYXRjaENIUk9NSVVNKCZwYXJlbnRUb0NoaWxkTGF0Y2hJZCk7Cisg
ICAgICAgICAgICBleHQtPmdldENoaWxkVG9QYXJlbnRMYXRjaENIUk9NSVVNKCZjaGlsZFRvUGFy
ZW50TGF0Y2hJZCk7CisgICAgICAgICAgICBleHQtPnNldExhdGNoQ0hST01JVU0oY2hpbGRUb1Bh
cmVudExhdGNoSWQpOworICAgICAgICAgICAgZXh0LT53YWl0TGF0Y2hDSFJPTUlVTShwYXJlbnRU
b0NoaWxkTGF0Y2hJZCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpkcmF3TGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdCkKQEAgLTEwMjksNiArMTExMyw0OCBAQCBTdHJpbmcgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpsYXllclRyZWVBc1RleHQoKSBjb25zdAogICAgIHJldHVybiB0cy5yZWxlYXNlKCk7CiB9CiAK
K3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjphZGRDaGlsZENvbnRleHQoUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBjdHgpCit7CisgICAgaWYgKCFjdHgtPmdldEV4dGVuc2lvbnMoKS0+c3Vw
cG9ydHMoIkdMX0NIUk9NSVVNX2xhdGNoIikpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRo
aXMgaXMgYSByZWYtY291bnRpbmcgbWFwLCBiZWNhdXNlIHNvbWUgY29udGV4dHMgYXJlIHNoYXJl
ZCBieSBtdWx0aXBsZQorICAgIC8vIGxheWVycyAoc3BlY2lmaWNhbGx5LCBDYW52YXMyRExheWVy
Q2hyb21pdW0pLgorCisgICAgLy8gSW5zZXJ0IHRoZSBjdHggd2l0aCBhIGNvdW50IG9mIDEsIG9y
IHJldHVybiB0aGUgZXhpc3RpbmcgaXRlcmF0b3IuCisgICAgc3RkOjpwYWlyPENoaWxkQ29udGV4
dE1hcDo6aXRlcmF0b3IsIGJvb2w+IGluc2VydF9yZXN1bHQgPSBtX2NoaWxkQ29udGV4dHMuYWRk
KGN0eCwgMSk7CisgICAgaWYgKCFpbnNlcnRfcmVzdWx0LnNlY29uZCkgeworICAgICAgICAvLyBB
bHJlYWR5IHByZXNlbnQgaW4gbWFwLCBzbyBpbmNyZW1lbnQuCisgICAgICAgICsraW5zZXJ0X3Jl
c3VsdC5maXJzdC0+c2Vjb25kOworICAgIH0gZWxzZSB7CisvLyBGSVhNRShqYmF0ZXMpOiB3aGVu
IGNvbXBvc2l0b3IgaXMgbXVsdGl0aHJlYWRlZCBhbmQgY29weVRleEltYWdlMkQgYnVnIGlzIGZp
eGVkLAorLy8gdW5jb21tZW50IHRoaXMgYmxvY2s6CisvLyAgICAgIC8vIFRoaXMgaXMgYSBuZXcg
Y2hpbGQgY29udGV4dCAtIHNldCB0aGUgcGFyZW50VG9DaGlsZCBsYXRjaCBzbyB0aGF0IGl0Cisv
LyAgICAgIC8vIGNhbiBjb250aW51ZSBwYXN0IGl0cyBmaXJzdCB3YWl0IGxhdGNoLgorLy8gICAg
ICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hy
b21pdW0qPihjdHgtPmdldEV4dGVuc2lvbnMoKSk7CisvLyAgICAgIEdDM0R1aW50IGxhdGNoSWQ7
CisvLyAgICAgIGV4dC0+Z2V0UGFyZW50VG9DaGlsZExhdGNoQ0hST01JVU0oJmxhdGNoSWQpOwor
Ly8gICAgICBleHQtPnNldExhdGNoQ0hST01JVU0oMCwgbGF0Y2hJZCk7CisgICAgfQorfQorCit2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVtb3ZlQ2hpbGRDb250ZXh0KFJlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY3R4KQoreworICAgIGlmICghY3R4LT5nZXRFeHRlbnNpb25zKCktPnN1
cHBvcnRzKCJHTF9DSFJPTUlVTV9sYXRjaCIpKQorICAgICAgICByZXR1cm47CisKKyAgICBDaGls
ZENvbnRleHRNYXA6Oml0ZXJhdG9yIGkgPSBtX2NoaWxkQ29udGV4dHMuZmluZChjdHgpOworICAg
IGlmIChpICE9IG1fY2hpbGRDb250ZXh0cy5lbmQoKSkgeworICAgICAgICBpZiAoLS1pLT5zZWNv
bmQgPD0gMCkgeworICAgICAgICAgICAgLy8gQ291bnQgcmVhY2hlZCB6ZXJvLCBzbyByZW1vdmUg
ZnJvbSBtYXAuCisgICAgICAgICAgICBtX2NoaWxkQ29udGV4dHMucmVtb3ZlKGkpOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gZXJyb3IKKyAgICAgICAgQVNTRVJUKDAgJiYg
Im1fY2hpbGRDb250ZXh0cyBtYXAgaGFzIG1pc21hdGNoZWQgYWRkL3JlbW92ZSBjYWxscyIpOwor
ICAgIH0KK30KKwogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmR1bXBSZW5kZXJTdXJmYWNl
cyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCwgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpIGNvbnN0
CiB7CiAgICAgaWYgKGxheWVyLT5jY0xheWVySW1wbCgpLT5yZW5kZXJTdXJmYWNlKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGM1MDkyYzFiOTI0ZThmMTk1YTVmMjVl
OGVjZmQyNTJjZGFlYTg1MGEuLjAwNDJhMTkwNDdmZjBhZWRmYTE4OGQ4MmJhOWQyODViOWNhNjBi
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMzEsOCArMTMxLDEy
IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoKSBjb25zdDsKIAorICAg
IHZvaWQgYWRkQ2hpbGRDb250ZXh0KFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOworICAgIHZv
aWQgcmVtb3ZlQ2hpbGRDb250ZXh0KFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4pOworCiBwcml2
YXRlOgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiBMYXllckxpc3Q7
CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIGludD4gQ2hp
bGRDb250ZXh0TWFwOwogCiAgICAgZXhwbGljaXQgTGF5ZXJSZW5kZXJlckNocm9taXVtKFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBQYXNzT3duUHRyPFRpbGVQYWludEludGVyZmFjZT4g
Y29udGVudFBhaW50LCBQYXNzT3duUHRyPFRpbGVQYWludEludGVyZmFjZT4gc2Nyb2xsYmFyUGFp
bnQpOwogCkBAIC0yMjIsNiArMjI2LDE1IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPENDSGVhZHNV
cERpc3BsYXk+IG1faGVhZHNVcERpc3BsYXk7CiAKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IG1fY29udGV4dDsKKyAgICBDaGlsZENvbnRleHRNYXAgbV9jaGlsZENvbnRleHRzOworCisg
ICAgLy8gSWYgdHJ1ZSwgdGhlIGNoaWxkIGNvbnRleHRzIHdlcmUgY29waWVkIHRvIHRoZSBjb21w
b3NpdG9yIHRleHR1cmUgdGFyZ2V0cworICAgIC8vIGFuZCB0aGUgY29tcG9zaXRvciB3aWxsIG5l
ZWQgdG8gd2FpdCBvbiB0aGUgcHJvcGVyIGxhdGNoZXMgYmVmb3JlIHVzaW5nCisgICAgLy8gdGhl
IHRhcmdldCB0ZXh0dXJlcy4gSWYgZmFsc2UsIHRoZSBjb21wb3NpdG9yIGlzIHJldXNpbmcgdGhl
IHRleHR1cmVzCisgICAgLy8gZnJvbSBsYXN0IGZyYW1lLgorICAgIGJvb2wgbV9jaGlsZENvbnRl
eHRzV2VyZUNvcGllZDsKKworICAgIGJvb2wgbV9jb250ZXh0U3VwcG9ydHNMYXRjaDsKIAogICAg
IFJlbmRlclN1cmZhY2VDaHJvbWl1bSogbV9kZWZhdWx0UmVuZGVyU3VyZmFjZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCA2NTJlNzUyN2E2NGUzMmRlNTFmYmNkYmMx
YzI4MGI2NGYyOGVhMzMzLi4zMWIxYjE2OTRiMGI1YzM0MGRmYjk0YmRhZDMxZjhkZjliMzJhZjMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9X
ZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTUxLDYgKzUxLDEyIEBAIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6V2ViR0xMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bSogb3duZXIpCiB7CiB9CiAKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6fldlYkdMTGF5ZXJDaHJvbWl1
bSgpCit7CisgICAgaWYgKG1fY29udGV4dCAmJiBsYXllclJlbmRlcmVyKCkpCisgICAgICAgIGxh
eWVyUmVuZGVyZXIoKS0+cmVtb3ZlQ2hpbGRDb250ZXh0KG1fY29udGV4dCk7Cit9CisKIHZvaWQg
V2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkKIHsKICAgICBp
ZiAoIW1fY29udGVudHNEaXJ0eSkKQEAgLTcwLDYgKzc2LDkgQEAgdm9pZCBXZWJHTExheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKQogICAgIH0KICAgICAvLyBVcGRhdGUg
dGhlIGNvbnRlbnRzIG9mIHRoZSB0ZXh0dXJlIHVzZWQgYnkgdGhlIGNvbXBvc2l0b3IuCiAgICAg
aWYgKG1fY29udGVudHNEaXJ0eSAmJiBtX3RleHR1cmVVcGRhdGVkKSB7CisgICAgICAgIC8vIHBy
ZXBhcmVUZXh0dXJlIGNvcGllcyB0aGUgY29udGVudHMgb2YgdGhlIG9mZi1zY3JlZW4gcmVuZGVy
IHRhcmdldCBpbnRvIHRoZSB0ZXh0dXJlCisgICAgICAgIC8vIHVzZWQgYnkgdGhlIGNvbXBvc2l0
b3IuCisgICAgICAgIC8vCiAgICAgICAgIG1fY29udGV4dC0+cHJlcGFyZVRleHR1cmUoKTsKICAg
ICAgICAgbV9jb250ZXh0LT5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiAgICAgICAgIG1fY29udGVu
dHNEaXJ0eSA9IGZhbHNlOwpAQCAtODQsNiArOTMsMTMgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21p
dW06OnNldFRleHR1cmVVcGRhdGVkKCkKIAogdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnNldENv
bnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CisgICAgaWYgKG1fY29u
dGV4dCAhPSBjb250ZXh0ICYmIGxheWVyUmVuZGVyZXIoKSkgeworICAgICAgICBpZiAobV9jb250
ZXh0KQorICAgICAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT5yZW1vdmVDaGlsZENvbnRleHQobV9j
b250ZXh0KTsKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgICAgICBsYXllclJlbmRlcmVy
KCktPmFkZENoaWxkQ29udGV4dChtX2NvbnRleHQpOworICAgIH0KKwogICAgIG1fY29udGV4dCA9
IGNvbnN0X2Nhc3Q8R3JhcGhpY3NDb250ZXh0M0QqPihjb250ZXh0KTsKIAogICAgIHVuc2lnbmVk
IGludCB0ZXh0dXJlSWQgPSBtX2NvbnRleHQtPnBsYXRmb3JtVGV4dHVyZSgpOwpAQCAtOTUsNSAr
MTExLDE5IEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjpzZXRDb250ZXh0KGNvbnN0IEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KQogICAgIG1fcHJlbXVsdGlwbGllZEFscGhhID0gbV9jb250
ZXh0LT5nZXRDb250ZXh0QXR0cmlidXRlcygpLnByZW11bHRpcGxpZWRBbHBoYTsKIH0KIAordm9p
ZCBXZWJHTExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBuZXdMYXllclJlbmRlcmVyKQoreworICAgIGlmIChsYXllclJlbmRlcmVyKCkgIT0gbmV3
TGF5ZXJSZW5kZXJlcikgeworICAgICAgICBpZiAobV9jb250ZXh0KSB7CisgICAgICAgICAgICBp
ZiAobGF5ZXJSZW5kZXJlcigpKQorICAgICAgICAgICAgICAgIGxheWVyUmVuZGVyZXIoKS0+cmVt
b3ZlQ2hpbGRDb250ZXh0KG1fY29udGV4dCk7CisgICAgICAgICAgICBpZiAobmV3TGF5ZXJSZW5k
ZXJlcikKKyAgICAgICAgICAgICAgICBuZXdMYXllclJlbmRlcmVyLT5hZGRDaGlsZENvbnRleHQo
bV9jb250ZXh0KTsKKyAgICAgICAgfQorCisgICAgICAgIExheWVyQ2hyb21pdW06OnNldExheWVy
UmVuZGVyZXIobmV3TGF5ZXJSZW5kZXJlcik7CisgICAgfQorfQorCiB9CiAjZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRl
eCAzM2RiNzMwMjVkOGY3YjJmMDdjYWU2NDNlY2M2NGFlNGMwYzg2NTI1Li4zNDIyNzViNDZiM2U3
OWVlYzIzMGFlMWIxZTAyYWZjY2UxMDdiZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0u
aApAQCAtNDQsMTIgKzQ0LDE3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgV2Vi
R0xMYXllckNocm9taXVtIDogcHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bSogb3duZXIgPSAwKTsKKworICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJv
bWl1bSgpOworCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dDsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KCk7CiAgICAgdm9pZCBzZXRUZXh0dXJlVXBkYXRlZCgpOwogCiAgICAgdm9pZCBzZXRDb250ZXh0
KGNvbnN0IEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KTsKIAorICAgIHZpcnR1YWwgdm9pZCBz
ZXRMYXllclJlbmRlcmVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOworCiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiBsYXllclR5cGVBc1N0cmluZygpIGNvbnN0IHsgcmV0dXJu
ICJXZWJHTExheWVyIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDU0NDQ0Y2Q5
ODkzYTY4MTg3YmU3YTdlOTNiMzQzNjhjNmI3YTQ2YmEuLjhjZDg1NDBiY2U0Zjk0OTFmMGNlOGFi
NTIwZWEyMzg1MWEyNDEzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTEtMDQtMTEgIEpvaG4gQmF0ZXMgIDxqYmF0ZXNAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBjaHJvbWl1bSBzdXBw
b3J0IGZvciBnbFNldExhdGNoIGFuZCBnbFdhaXRMYXRjaCBiZXR3ZWVuIDNEIGNvbnRleHRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODAwMworCisg
ICAgICAgICogcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgIChXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEOjpnZXRQYXJlbnRUb0NoaWxkTGF0Y2hDSFJPTUlVTSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpnZXRDaGlsZFRvUGFyZW50TGF0
Y2hDSFJPTUlVTSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjp3YWl0
TGF0Y2hDSFJPTUlVTSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpz
ZXRMYXRjaENIUk9NSVVNKToKKyAgICAgICAgKiBzcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNEQ2hyb21pdW06OndhaXRMYXRjaENIUk9N
SVVNKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRENocm9taXVtOjpzZXRMYXRjaENI
Uk9NSVVNKToKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHA6Cisg
ICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwuaDoKKwogMjAxMS0wNC0xMSAg
RGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEbWl0cnkgVGl0b3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJHcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCA5ODRmNzlkMjVhYWFkNTdhNTZlN2FlYmE0ZjQ1
OTg4NmM4ZWVkNmE4Li5mZjdlNTAyY2U0NjMyN2JjOThjOTJjNjMxNzg4NWYxYWZjZjYzNjk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRl
eHQzRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmgKQEAgLTE2OCw2ICsxNjgsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBi
bGl0RnJhbWVidWZmZXJDSFJPTUlVTShXR0MzRGludCBzcmNYMCwgV0dDM0RpbnQgc3JjWTAsIFdH
QzNEaW50IHNyY1gxLCBXR0MzRGludCBzcmNZMSwgV0dDM0RpbnQgZHN0WDAsIFdHQzNEaW50IGRz
dFkwLCBXR0MzRGludCBkc3RYMSwgV0dDM0RpbnQgZHN0WTEsIFdHQzNEYml0ZmllbGQgbWFzaywg
V0dDM0RlbnVtIGZpbHRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVDSFJPTUlVTShXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRHNpemVpIHNhbXBs
ZXMsIFdHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXpl
aSBoZWlnaHQpID0gMDsKIAorICAgIC8vIEdMX0NIUk9NSVVNX2xhdGNoCisgICAgdmlydHVhbCB2
b2lkIGdldFBhcmVudFRvQ2hpbGRMYXRjaENIUk9NSVVNKFdHQzNEdWludCogbGF0Y2hJZCkge30g
Ly8gRklYTUU6ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2hpbGRUb1BhcmVudExhdGNoQ0hS
T01JVU0oV0dDM0R1aW50KiBsYXRjaElkKSB7fSAvLyBGSVhNRTogPSAwOworICAgIHZpcnR1YWwg
dm9pZCB3YWl0TGF0Y2hDSFJPTUlVTShXR0MzRHVpbnQgbGF0Y2hJZCkge30gLy8gRklYTUU6ID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGF0Y2hDSFJPTUlVTShXR0MzRHVpbnQgbGF0Y2hJZCkg
e30gLy8gRklYTUU6ID0gMDsKKwogICAgIC8vIFRoZSBlbnRyeSBwb2ludHMgYmVsb3cgbWFwIGRp
cmVjdGx5IHRvIHRoZSBPcGVuR0wgRVMgMi4wIEFQSS4KICAgICAvLyBTZWU6IGh0dHA6Ly93d3cu
a2hyb25vcy5vcmcvcmVnaXN0cnkvZ2xlcy8KICAgICAvLyBhbmQ6IGh0dHA6Ly93d3cua2hyb25v
cy5vcmcvb3BlbmdsZXMvc2RrL2RvY3MvbWFuLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCmluZGV4IDMwMTAxYzdhM2UwYmU2YzZm
OTkyNDI0ZmUwMmUwNzYxOTdiMjAyMDkuLjdjZDcwZGY5ZTM0M2RiOTM5MzA1OWY0MzFmYWJlYTY2
N2NlYjcyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lv
bnMzRENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlbnNp
b25zM0RDaHJvbWl1bS5jcHAKQEAgLTk3LDYgKzk3LDI2IEBAIHZvaWQgRXh0ZW5zaW9uczNEQ2hy
b21pdW06OmNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0odW5zaWduZWQgdGV4dHVy
ZSwKICAgICBtX2ludGVybmFsLT5jb3B5VGV4dHVyZVRvUGFyZW50VGV4dHVyZUNIUk9NSVVNKHRl
eHR1cmUsIHBhcmVudFRleHR1cmUpOwogfQogCit2b2lkIEV4dGVuc2lvbnMzRENocm9taXVtOjpn
ZXRQYXJlbnRUb0NoaWxkTGF0Y2hDSFJPTUlVTShHQzNEdWludCogbGF0Y2hJZCkKK3sKKyAgICBt
X2ludGVybmFsLT5nZXRQYXJlbnRUb0NoaWxkTGF0Y2hDSFJPTUlVTShsYXRjaElkKTsKK30KKwor
dm9pZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6Z2V0Q2hpbGRUb1BhcmVudExhdGNoQ0hST01JVU0o
R0MzRHVpbnQqIGxhdGNoSWQpCit7CisgICAgbV9pbnRlcm5hbC0+Z2V0Q2hpbGRUb1BhcmVudExh
dGNoQ0hST01JVU0obGF0Y2hJZCk7Cit9CisKK3ZvaWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06Ondh
aXRMYXRjaENIUk9NSVVNKEdDM0R1aW50IGxhdGNoSWQpCit7CisgICAgbV9pbnRlcm5hbC0+d2Fp
dExhdGNoQ0hST01JVU0obGF0Y2hJZCk7Cit9CisKK3ZvaWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06
OnNldExhdGNoQ0hST01JVU0oR0MzRHVpbnQgbGF0Y2hJZCkKK3sKKyAgICBtX2ludGVybmFsLT5z
ZXRMYXRjaENIUk9NSVVNKGxhdGNoSWQpOworfQorCiBQbGF0Zm9ybTNET2JqZWN0IEV4dGVuc2lv
bnMzRENocm9taXVtOjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNE
Q2hyb21pdW0uY3BwCmluZGV4IDU0YzE4ZTM1N2JmYTJmYzgzY2VhNDIwMzdlNTA2Y2JhMTZlNWM3
YTcuLmMzZDM2NjVhNDYzYjU5YWJhNGNlYmZmMTNjMzdjZjAwOTc3OGEyY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21p
dW0uY3BwCkBAIC04MDAsNiArODAwLDEwIEBAIERFTEVHQVRFX1RPX0lNUExfMSh1bm1hcFRleFN1
YkltYWdlMkRDSFJPTUlVTSwgY29uc3Qgdm9pZCopCiBERUxFR0FURV9UT19JTVBMXzIoY29weVRl
eHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTSwgUGxhdGZvcm0zRE9iamVjdCwgUGxhdGZvcm0z
RE9iamVjdCkKIERFTEVHQVRFX1RPX0lNUExfMTAoYmxpdEZyYW1lYnVmZmVyQ0hST01JVU0sIEdD
M0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0Rp
bnQsIEdDM0RpbnQsIEdDM0RiaXRmaWVsZCwgR0MzRGVudW0pCiBERUxFR0FURV9UT19JTVBMXzUo
cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQ0hST01JVU0sIEdDM0RlbnVtLCBHQzNEc2l6
ZWksIEdDM0RlbnVtLCBHQzNEc2l6ZWksIEdDM0RzaXplaSkKK0RFTEVHQVRFX1RPX0lNUExfMShn
ZXRQYXJlbnRUb0NoaWxkTGF0Y2hDSFJPTUlVTSwgR0MzRHVpbnQqKQorREVMRUdBVEVfVE9fSU1Q
TF8xKGdldENoaWxkVG9QYXJlbnRMYXRjaENIUk9NSVVNLCBHQzNEdWludCopCitERUxFR0FURV9U
T19JTVBMXzEod2FpdExhdGNoQ0hST01JVU0sIEdDM0R1aW50KQorREVMRUdBVEVfVE9fSU1QTF8x
KHNldExhdGNoQ0hST01JVU0sIEdDM0R1aW50KQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIEdyYXBo
aWNzQ29udGV4dDNECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzREludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzREludGVybmFsLmgKaW5kZXggMGFmMjkxZTk2MzIyOWI2Yzg0ZDU3Mjk4MDRj
YzBhMWM3ZTc2MWM0YS4uMDlhZTg5Y2Q5YTE5MmRiMGJkZmE5NTM0MDcyZWYxOGQxNDI2NDUyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWwuaApAQCAtMjcwLDYgKzI3MCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBibGl0
RnJhbWVidWZmZXJDSFJPTUlVTShHQzNEaW50IHNyY1gwLCBHQzNEaW50IHNyY1kwLCBHQzNEaW50
IHNyY1gxLCBHQzNEaW50IHNyY1kxLCBHQzNEaW50IGRzdFgwLCBHQzNEaW50IGRzdFkwLCBHQzNE
aW50IGRzdFgxLCBHQzNEaW50IGRzdFkxLCBHQzNEYml0ZmllbGQgbWFzaywgR0MzRGVudW0gZmls
dGVyKTsKICAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUNIUk9NSVVNKEdD
M0RlbnVtIHRhcmdldCwgR0MzRHNpemVpIHNhbXBsZXMsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwogCisgICAgLy8gTGF0Y2ggc3Vw
cG9ydAorICAgIHZvaWQgZ2V0UGFyZW50VG9DaGlsZExhdGNoQ0hST01JVU0oR0MzRHVpbnQqIGxh
dGNoSWQpOworICAgIHZvaWQgZ2V0Q2hpbGRUb1BhcmVudExhdGNoQ0hST01JVU0oR0MzRHVpbnQq
IGxhdGNoSWQpOworICAgIHZvaWQgd2FpdExhdGNoQ0hST01JVU0oR0MzRHVpbnQgbGF0Y2hJZCk7
CisgICAgdm9pZCBzZXRMYXRjaENIUk9NSVVNKEdDM0R1aW50IGxhdGNoSWQpOworCiBwcml2YXRl
OgogICAgIE93blB0cjxXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEPiBtX2ltcGw7CiAgICAg
T3duUHRyPEV4dGVuc2lvbnMzRENocm9taXVtPiBtX2V4dGVuc2lvbnM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89120</attachid>
            <date>2011-04-11 16:47:26 -0700</date>
            <delta_ts>2011-04-11 19:30:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58003-20110411164724.patch</filename>
            <type>text/plain</type>
            <size>23916</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM1MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OTgzMDYyZWEzNzFmYjM3
MzhlYWNjNTBlZWYyNmQzZTkyNjFmNzhhLi5jYzU2ZGQ5ZWViZWRkNTc3ZjEwZTE5NGU1YzdhYjdh
NDVkYTgyYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDQtMTEgIEpvaG4g
QmF0ZXMgIDxqYmF0ZXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBjaHJvbWl1bSBzdXBwb3J0IGZvciBnbFNldExhdGNoIGFuZCBn
bFdhaXRMYXRjaCBiZXR3ZWVuIDNEIGNvbnRleHRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODAwMworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6fkNhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnNldERyYXdpbmdCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RD
aHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dMRVMyQ2Fu
dmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1YmljOjpDdWJpYyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlQW5kRHJh
d0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0
ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmFkZENo
aWxkQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnJl
bW92ZUNoaWxkQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5
ZXJDaHJvbWl1bTo6fldlYkdMTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xMYXllckNocm9taXVtOjpzZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisKIDIwMTEtMDQtMTEg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTWFjaWVqIFN0YWNob3dpYWsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNw
cAppbmRleCA0Y2IxMTlhNGQ3ZThkNzEzNjk2NTliZDIwZmRhNWYxMWRkNTAxYzE5Li5lMzI1M2Fi
ZTZjODM1ZTBhYmQ2YWJjOTNmZGEwMmFmNGEyY2Y5NjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkRyYXdpbmdC
dWZmZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIkxheWVy
UmVuZGVyZXJDaHJvbWl1bS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDYgKzU1
LDggQEAgQ2FudmFzMkRMYXllckNocm9taXVtOjp+Q2FudmFzMkRMYXllckNocm9taXVtKCkKIHsK
ICAgICBpZiAobV90ZXh0dXJlSWQpCiAgICAgICAgIGxheWVyUmVuZGVyZXJDb250ZXh0KCktPmRl
bGV0ZVRleHR1cmUobV90ZXh0dXJlSWQpOworICAgIGlmIChtX2RyYXdpbmdCdWZmZXIgJiYgbGF5
ZXJSZW5kZXJlcigpKQorICAgICAgICBsYXllclJlbmRlcmVyKCktPnJlbW92ZUNoaWxkQ29udGV4
dChtX2RyYXdpbmdCdWZmZXItPmdyYXBoaWNzQ29udGV4dDNEKCkpOwogfQogCiB2b2lkIENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCkBAIC0xMDMsOCAr
MTA2LDI4IEBAIHVuc2lnbmVkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dGV4dHVyZUlkKCkgY29u
c3QKIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpzZXREcmF3aW5nQnVmZmVyKERyYXdpbmdC
dWZmZXIqIGRyYXdpbmdCdWZmZXIpCiB7CiAgICAgaWYgKGRyYXdpbmdCdWZmZXIgIT0gbV9kcmF3
aW5nQnVmZmVyKSB7CisgICAgICAgIGlmIChtX2RyYXdpbmdCdWZmZXIgJiYgbGF5ZXJSZW5kZXJl
cigpKQorICAgICAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT5yZW1vdmVDaGlsZENvbnRleHQobV9k
cmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQzRCgpKTsKKwogICAgICAgICBtX2RyYXdpbmdC
dWZmZXIgPSBkcmF3aW5nQnVmZmVyOwogICAgICAgICBtX3RleHR1cmVDaGFuZ2VkID0gdHJ1ZTsK
KworICAgICAgICBpZiAoZHJhd2luZ0J1ZmZlciAmJiBsYXllclJlbmRlcmVyKCkpCisgICAgICAg
ICAgICBsYXllclJlbmRlcmVyKCktPmFkZENoaWxkQ29udGV4dChtX2RyYXdpbmdCdWZmZXItPmdy
YXBoaWNzQ29udGV4dDNEKCkpOworICAgIH0KK30KKwordm9pZCBDYW52YXMyRExheWVyQ2hyb21p
dW06OnNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBuZXdMYXllclJlbmRl
cmVyKQoreworICAgIGlmIChsYXllclJlbmRlcmVyKCkgIT0gbmV3TGF5ZXJSZW5kZXJlcikgewor
ICAgICAgICBpZiAobV9kcmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQzRCgpKSB7CisgICAg
ICAgICAgICBpZiAobGF5ZXJSZW5kZXJlcigpKQorICAgICAgICAgICAgICAgIGxheWVyUmVuZGVy
ZXIoKS0+cmVtb3ZlQ2hpbGRDb250ZXh0KG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0
M0QoKSk7CisgICAgICAgICAgICBpZiAobmV3TGF5ZXJSZW5kZXJlcikKKyAgICAgICAgICAgICAg
ICBuZXdMYXllclJlbmRlcmVyLT5hZGRDaGlsZENvbnRleHQobV9kcmF3aW5nQnVmZmVyLT5ncmFw
aGljc0NvbnRleHQzRCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIExheWVyQ2hyb21pdW06OnNl
dExheWVyUmVuZGVyZXIobmV3TGF5ZXJSZW5kZXJlcik7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhczJETGF5ZXJDaHJvbWl1bS5oCmluZGV4IDgxYjExOGM1YjVkZmU5YzMxYTFlYjI0OWQ1OTky
ZGI0MjZlZDIwOTQuLjQyMjRhYjFkYjkwNjVmYmVhZWQ1MGIwNzVjMjQyZDUzNGU0Njk3NTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
czJETGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCkBAIC01Miw2ICs1Miw4IEBAIHB1Ymxp
YzoKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdDsKICAgICB2b2lkIHNldERyYXdpbmdC
dWZmZXIoRHJhd2luZ0J1ZmZlciopOwogCisgICAgdmlydHVhbCB2b2lkIHNldExheWVyUmVuZGVy
ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ2Fu
dmFzMkRMYXllckNocm9taXVtKERyYXdpbmdCdWZmZXIqLCBHcmFwaGljc0xheWVyQ2hyb21pdW0q
IG93bmVyKTsKICAgICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0
ZW5zaW9uczNEQ2hyb21pdW0uaAppbmRleCAzYjBmZGJmZGQ2YmUxM2M0OWFmZTdjMmMyYWY0MTE1
NzY2ODI1MWYzLi4wZTBkZmZjNDg5NjY5OWU2MGEwZjA5OWFlYTZiZjVlYzg1ZDUwM2ZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNp
b25zM0RDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKQEAgLTY2LDYgKzY2LDEyIEBAIHB1YmxpYzoK
ICAgICAvLyBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmVfdG9fcGFyZW50X3RleHR1cmUKICAgICB2
b2lkIGNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0odW5zaWduZWQgdGV4dHVyZSwg
dW5zaWduZWQgcGFyZW50VGV4dHVyZSk7CiAKKyAgICAvLyBMYXRjaCBzdXBwb3J0CisgICAgdm9p
ZCBnZXRQYXJlbnRUb0NoaWxkTGF0Y2hDSFJPTUlVTShHQzNEdWludCogbGF0Y2hJZCk7CisgICAg
dm9pZCBnZXRDaGlsZFRvUGFyZW50TGF0Y2hDSFJPTUlVTShHQzNEdWludCogbGF0Y2hJZCk7Cisg
ICAgdm9pZCB3YWl0TGF0Y2hDSFJPTUlVTShHQzNEdWludCBsYXRjaElkKTsKKyAgICB2b2lkIHNl
dExhdGNoQ0hST01JVU0oR0MzRHVpbnQgbGF0Y2hJZCk7CisKIHByaXZhdGU6CiAgICAgLy8gSW5z
dGFuY2VzIG9mIHRoaXMgY2xhc3MgYXJlIHN0cmljdGx5IG93bmVkIGJ5IHRoZSBHcmFwaGljc0Nv
bnRleHQzRCBpbXBsZW1lbnRhdGlvbiBhbmQgZG8gbm90CiAgICAgLy8gbmVlZCB0byBiZSBpbnN0
YW50aWF0ZWQgYnkgYW55IG90aGVyIGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcAppbmRleCAyNzUzMDMzYzEyMTQzYWRiYWQ0OWFhZDhmNjNlNWU3MWFmNmYwNDhhLi40
YmQ4ZTA2MjRjZjZmZGM5MTM4MTZmZmExZjQwNmY0MDY1MmRiMmJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgImNj
L0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiQ2FudmFzMkRMYXllckNocm9taXVtLmgiCisjaW5j
bHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNp
bmNsdWRlICJHZW9tZXRyeUJpbmRpbmcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgpAQCAtMTE1LDggKzExNiwxMSBAQCBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZQogICAgICwgbV9v
ZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKDApCiAgICAgLCBtX2NvbXBvc2l0ZU9mZnNjcmVlbihmYWxz
ZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9jaGlsZENvbnRleHRzV2VyZUNv
cGllZChmYWxzZSkKKyAgICAsIG1fY29udGV4dFN1cHBvcnRzTGF0Y2goZmFsc2UpCiAgICAgLCBt
X2RlZmF1bHRSZW5kZXJTdXJmYWNlKDApCiB7CisgICAgbV9jb250ZXh0U3VwcG9ydHNMYXRjaCA9
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fbGF0Y2gi
KTsKICAgICBtX2hhcmR3YXJlQ29tcG9zaXRpbmcgPSBpbml0aWFsaXplU2hhcmVkT2JqZWN0cygp
OwogICAgIG1fcm9vdExheWVyQ29udGVudFRpbGVyID0gTGF5ZXJUaWxlckNocm9taXVtOjpjcmVh
dGUodGhpcywgSW50U2l6ZSgyNTYsIDI1NiksIExheWVyVGlsZXJDaHJvbWl1bTo6Tm9Cb3JkZXJU
ZXhlbHMpOwogICAgIEFTU0VSVChtX3Jvb3RMYXllckNvbnRlbnRUaWxlcik7CkBAIC0yNzEsOCAr
Mjc1LDQ3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVBbmREcmF3TGF5ZXJz
KCkKICAgICBMYXllckxpc3QgcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICB1cGRhdGVMYXll
cnMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKKyAgICAvLyBCZWZvcmUgZHJhd0xheWVyczoK
KyAgICBpZiAoaGFyZHdhcmVDb21wb3NpdGluZygpICYmIG1fY29udGV4dFN1cHBvcnRzTGF0Y2gp
IHsKKyAgICAgICAgLy8gRklYTUU6IFRoZSBtdWx0aXRocmVhZGVkIGNvbXBvc2l0b3IgY2FzZSB3
aWxsIG5vdCB3b3JrIGFzIGxvbmcgYXMKKyAgICAgICAgLy8gY29weVRleEltYWdlMkQgcmVzb2x2
ZXMgdG8gdGhlIHBhcmVudCB0ZXh0dXJlLCBiZWNhdXNlIHRoZSBtYWluCisgICAgICAgIC8vIHRo
cmVhZCBjYW4gZXhlY3V0ZSBXZWJHTCBjYWxscyBvbiB0aGUgY2hpbGQgY29udGV4dCBhdCBhbnkg
dGltZSwKKyAgICAgICAgLy8gcG90ZW50aWFsbHkgY2xvYmJlcmluZyB0aGUgcGFyZW50IHRleHR1
cmUgdGhhdCBpcyBiZWluZyByZW5kZXJlcmVkCisgICAgICAgIC8vIGJ5IHRoZSBjb21wb3NpdG9y
IHRocmVhZC4KKyAgICAgICAgaWYgKG1fY2hpbGRDb250ZXh0c1dlcmVDb3BpZWQpIHsKKyAgICAg
ICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBwYXJlbnRFeHQgPSBzdGF0aWNfY2FzdDxFeHRl
bnNpb25zM0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICAgICAg
ICAgIC8vIEZvciBlYWNoIGNoaWxkIGNvbnRleHQ6CisgICAgICAgICAgICAvLyAgIGdsV2FpdExh
dGNoKE9mZnNjcmVlbi0+Q29tcG9zaXRvcik7CisgICAgICAgICAgICBDaGlsZENvbnRleHRNYXA6
Oml0ZXJhdG9yIGkgPSBtX2NoaWxkQ29udGV4dHMuYmVnaW4oKTsKKyAgICAgICAgICAgIGZvciAo
OyBpICE9IG1fY2hpbGRDb250ZXh0cy5lbmQoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgRXh0
ZW5zaW9uczNEQ2hyb21pdW0qIGNoaWxkRXh0ID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hy
b21pdW0qPihpLT5maXJzdC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICAgICAgICAgICAgICBHQzNE
dWludCBsYXRjaElkOworICAgICAgICAgICAgICAgIGNoaWxkRXh0LT5nZXRDaGlsZFRvUGFyZW50
TGF0Y2hDSFJPTUlVTSgmbGF0Y2hJZCk7CisgICAgICAgICAgICAgICAgcGFyZW50RXh0LT53YWl0
TGF0Y2hDSFJPTUlVTShsYXRjaElkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICAvLyBSZXNldCB0byBmYWxzZSB0byBpbmRpY2F0ZSB0aGF0IHdlIGhhdmUgY29uc3VtZWQgdGhl
IGRpcnR5IGNoaWxkCisgICAgICAgIC8vIGNvbnRleHRzJyBwYXJlbnQgdGV4dHVyZXMuIChUaGlz
IGlzIG9ubHkgdXNlZnVsIHdoZW4gdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgLy8gaXMgbXVsdGl0
aHJlYWRlZC4pCisgICAgICAgIG1fY2hpbGRDb250ZXh0c1dlcmVDb3BpZWQgPSBmYWxzZTsKKyAg
ICB9CisKICAgICBkcmF3TGF5ZXJzKHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogCisgICAgLy8g
QWZ0ZXIgZHJhd0xheWVyczoKKyAgICBpZiAoaGFyZHdhcmVDb21wb3NpdGluZygpICYmIG1fY29u
dGV4dFN1cHBvcnRzTGF0Y2gpIHsKKyAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIHBhcmVu
dEV4dCA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkpOworICAgICAgICAvLyBGb3IgZWFjaCBjaGlsZCBjb250ZXh0OgorICAgICAg
ICAvLyAgIGdsU2V0TGF0Y2goQ29tcG9zaXRvci0+T2Zmc2NyZWVuKTsKKyAgICAgICAgQ2hpbGRD
b250ZXh0TWFwOjppdGVyYXRvciBpID0gbV9jaGlsZENvbnRleHRzLmJlZ2luKCk7CisgICAgICAg
IGZvciAoOyBpICE9IG1fY2hpbGRDb250ZXh0cy5lbmQoKTsgKytpKSB7CisgICAgICAgICAgICBF
eHRlbnNpb25zM0RDaHJvbWl1bSogY2hpbGRFeHQgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RD
aHJvbWl1bSo+KGktPmZpcnN0LT5nZXRFeHRlbnNpb25zKCkpOworICAgICAgICAgICAgR0MzRHVp
bnQgbGF0Y2hJZDsKKyAgICAgICAgICAgIGNoaWxkRXh0LT5nZXRQYXJlbnRUb0NoaWxkTGF0Y2hD
SFJPTUlVTSgmbGF0Y2hJZCk7CisgICAgICAgICAgICBwYXJlbnRFeHQtPnNldExhdGNoQ0hST01J
VU0obGF0Y2hJZCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAoaXNDb21wb3NpdGluZ09m
ZnNjcmVlbigpKQogICAgICAgICBjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpOwogfQpA
QCAtMzA5LDcgKzM1Miw0OCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5
ZXJzKExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIAogICAgIHBhaW50Q29udGVu
dHNSZWN1cnNpdmUobV9yb290TGF5ZXIuZ2V0KCkpOwogCisgICAgLy8gRklYTUU6IEJlZm9yZSB1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzUmVjdXJzaXZlLCB3aGVuIHRoZSBjb21wb3NpdG9yIHJ1
bnMgaW4KKyAgICAvLyBpdHMgb3duIHRocmVhZCwgYW5kIHdoZW4gdGhlIGNvcHlUZXhJbWFnZTJE
IGJ1ZyBpcyBmaXhlZCwgaW5zZXJ0CisgICAgLy8gYSBnbFdhaXRMYXRjaChDb21wb3NpdG9yLT5P
ZmZzY3JlZW4pIG9uIGFsbCBjaGlsZCBjb250ZXh0cyBoZXJlIGluc3RlYWQKKyAgICAvLyBvZiBh
ZnRlciB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzUmVjdXJzaXZlLgorICAgIC8vIEFsc28gdW5j
b21tZW50IHRoZSBnbFNldExhdGNoKENvbXBvc2l0b3ItPk9mZnNjcmVlbikgY29kZSBpbiBhZGRD
aGlsZENvbnRleHQuCisvLyAgaWYgKGhhcmR3YXJlQ29tcG9zaXRpbmcoKSAmJiBtX2NvbnRleHRT
dXBwb3J0c0xhdGNoKSB7CisvLyAgICAgIC8vIEZvciBlYWNoIGNoaWxkIGNvbnRleHQ6CisvLyAg
ICAgIC8vICAgZ2xXYWl0TGF0Y2goQ29tcG9zaXRvci0+T2Zmc2NyZWVuKTsKKy8vICAgICAgQ2hp
bGRDb250ZXh0TWFwOjppdGVyYXRvciBpID0gbV9jaGlsZENvbnRleHRzLmJlZ2luKCk7CisvLyAg
ICAgIGZvciAoOyBpICE9IG1fY2hpbGRDb250ZXh0cy5lbmQoKTsgKytpKSB7CisvLyAgICAgICAg
ICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hy
b21pdW0qPihpLT5maXJzdC0+Z2V0RXh0ZW5zaW9ucygpKTsKKy8vICAgICAgICAgIEdDM0R1aW50
IGNoaWxkVG9QYXJlbnRMYXRjaElkLCBwYXJlbnRUb0NoaWxkTGF0Y2hJZDsKKy8vICAgICAgICAg
IGV4dC0+Z2V0UGFyZW50VG9DaGlsZExhdGNoQ0hST01JVU0oJnBhcmVudFRvQ2hpbGRMYXRjaElk
KTsKKy8vICAgICAgICAgIGV4dC0+d2FpdExhdGNoQ0hST01JVU0ocGFyZW50VG9DaGlsZExhdGNo
SWQpOworLy8gICAgICB9CisvLyAgfQorCiAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlc1Jl
Y3Vyc2l2ZShtX3Jvb3RMYXllci5nZXQoKSk7CisKKyAgICAvLyBBZnRlciB1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzUmVjdXJzaXZlLCBzZXQvd2FpdCBsYXRjaGVzIGZvciBhbGwgY2hpbGQKKyAg
ICAvLyBjb250ZXh0cy4gVGhpcyB3aWxsIHByZXZlbnQgdGhlIGNvbXBvc2l0b3IgZnJvbSB1c2lu
ZyBhbnkgb2YgdGhlIGNoaWxkCisgICAgLy8gcGFyZW50IHRleHR1cmVzIHdoaWxlIFdlYkdMIGNv
bW1hbmRzIGFyZSBleGVjdXRpbmcgZnJvbSBqYXZhc2NyaXB0ICphbmQqCisgICAgLy8gd2hpbGUg
dGhlIGZpbmFsIHBhcmVudCB0ZXh0dXJlIGlzIGJlaW5nIGJsaXQnZC4gY29weVRleEltYWdlMkQK
KyAgICAvLyB1c2VzIHRoZSBwYXJlbnQgdGV4dHVyZSBhcyBhIHRlbXBvcmFyeSByZXNvbHZlIGJ1
ZmZlciwgc28gdGhhdCdzIHdoeSB0aGUKKyAgICAvLyB3YWl0TGF0Y2ggaXMgYmVsb3csIHRvIGJs
b2NrIHRoZSBjb21wb3NpdG9yIGZyb20gdXNpbmcgdGhlIHBhcmVudCB0ZXh0dXJlCisgICAgLy8g
dW50aWwgdGhlIG5leHQgV2ViR0wgU3dhcEJ1ZmZlcnMgKG9yIGNvcHlUZXh0dXJlVG9QYXJlbnRU
ZXh0dXJlIGZvcgorICAgIC8vIENhbnZhczJEKS4KKyAgICBpZiAoaGFyZHdhcmVDb21wb3NpdGlu
ZygpICYmIG1fY29udGV4dFN1cHBvcnRzTGF0Y2gpIHsKKyAgICAgICAgbV9jaGlsZENvbnRleHRz
V2VyZUNvcGllZCA9IHRydWU7CisgICAgICAgIC8vIEZvciBlYWNoIGNoaWxkIGNvbnRleHQ6Cisg
ICAgICAgIC8vICAgZ2xTZXRMYXRjaChPZmZzY3JlZW4tPkNvbXBvc2l0b3IpOworICAgICAgICAv
LyAgIGdsV2FpdExhdGNoKENvbXBvc2l0b3ItPk9mZnNjcmVlbik7CisgICAgICAgIENoaWxkQ29u
dGV4dE1hcDo6aXRlcmF0b3IgaSA9IG1fY2hpbGRDb250ZXh0cy5iZWdpbigpOworICAgICAgICBm
b3IgKDsgaSAhPSBtX2NoaWxkQ29udGV4dHMuZW5kKCk7ICsraSkgeworICAgICAgICAgICAgRXh0
ZW5zaW9uczNEQ2hyb21pdW0qIGV4dCA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVt
Kj4oaS0+Zmlyc3QtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAgICAgICBHQzNEdWludCBjaGls
ZFRvUGFyZW50TGF0Y2hJZCwgcGFyZW50VG9DaGlsZExhdGNoSWQ7CisgICAgICAgICAgICBleHQt
PmdldFBhcmVudFRvQ2hpbGRMYXRjaENIUk9NSVVNKCZwYXJlbnRUb0NoaWxkTGF0Y2hJZCk7Cisg
ICAgICAgICAgICBleHQtPmdldENoaWxkVG9QYXJlbnRMYXRjaENIUk9NSVVNKCZjaGlsZFRvUGFy
ZW50TGF0Y2hJZCk7CisgICAgICAgICAgICBleHQtPnNldExhdGNoQ0hST01JVU0oY2hpbGRUb1Bh
cmVudExhdGNoSWQpOworICAgICAgICAgICAgZXh0LT53YWl0TGF0Y2hDSFJPTUlVTShwYXJlbnRU
b0NoaWxkTGF0Y2hJZCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpkcmF3TGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdCkKQEAgLTEwMjksNiArMTExMyw1MCBAQCBTdHJpbmcgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpsYXllclRyZWVBc1RleHQoKSBjb25zdAogICAgIHJldHVybiB0cy5yZWxlYXNlKCk7CiB9CiAK
K3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjphZGRDaGlsZENvbnRleHQoUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gcGN0eCkKK3sKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGN0eCA9IHBjdHg7CisgICAgaWYgKCFjdHgtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdM
X0NIUk9NSVVNX2xhdGNoIikpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoaXMgaXMgYSBy
ZWYtY291bnRpbmcgbWFwLCBiZWNhdXNlIHNvbWUgY29udGV4dHMgYXJlIHNoYXJlZCBieSBtdWx0
aXBsZQorICAgIC8vIGxheWVycyAoc3BlY2lmaWNhbGx5LCBDYW52YXMyRExheWVyQ2hyb21pdW0p
LgorCisgICAgLy8gSW5zZXJ0IHRoZSBjdHggd2l0aCBhIGNvdW50IG9mIDEsIG9yIHJldHVybiB0
aGUgZXhpc3RpbmcgaXRlcmF0b3IuCisgICAgc3RkOjpwYWlyPENoaWxkQ29udGV4dE1hcDo6aXRl
cmF0b3IsIGJvb2w+IGluc2VydF9yZXN1bHQgPSBtX2NoaWxkQ29udGV4dHMuYWRkKGN0eCwgMSk7
CisgICAgaWYgKCFpbnNlcnRfcmVzdWx0LnNlY29uZCkgeworICAgICAgICAvLyBBbHJlYWR5IHBy
ZXNlbnQgaW4gbWFwLCBzbyBpbmNyZW1lbnQuCisgICAgICAgICsraW5zZXJ0X3Jlc3VsdC5maXJz
dC0+c2Vjb25kOworICAgIH0gZWxzZSB7CisvLyBGSVhNRShqYmF0ZXMpOiB3aGVuIGNvbXBvc2l0
b3IgaXMgbXVsdGl0aHJlYWRlZCBhbmQgY29weVRleEltYWdlMkQgYnVnIGlzIGZpeGVkLAorLy8g
dW5jb21tZW50IHRoaXMgYmxvY2s6CisvLyAgICAgIC8vIFRoaXMgaXMgYSBuZXcgY2hpbGQgY29u
dGV4dCAtIHNldCB0aGUgcGFyZW50VG9DaGlsZCBsYXRjaCBzbyB0aGF0IGl0CisvLyAgICAgIC8v
IGNhbiBjb250aW51ZSBwYXN0IGl0cyBmaXJzdCB3YWl0IGxhdGNoLgorLy8gICAgICBFeHRlbnNp
b25zM0RDaHJvbWl1bSogZXh0ID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihj
dHgtPmdldEV4dGVuc2lvbnMoKSk7CisvLyAgICAgIEdDM0R1aW50IGxhdGNoSWQ7CisvLyAgICAg
IGV4dC0+Z2V0UGFyZW50VG9DaGlsZExhdGNoQ0hST01JVU0oJmxhdGNoSWQpOworLy8gICAgICBl
eHQtPnNldExhdGNoQ0hST01JVU0oMCwgbGF0Y2hJZCk7CisgICAgfQorfQorCit2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6cmVtb3ZlQ2hpbGRDb250ZXh0KFBhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IHBjdHgpCit7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjdHggPSBw
Y3R4OworICAgIGlmICghY3R4LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9DSFJPTUlV
TV9sYXRjaCIpKQorICAgICAgICByZXR1cm47CisKKyAgICBDaGlsZENvbnRleHRNYXA6Oml0ZXJh
dG9yIGkgPSBtX2NoaWxkQ29udGV4dHMuZmluZChjdHgpOworICAgIGlmIChpICE9IG1fY2hpbGRD
b250ZXh0cy5lbmQoKSkgeworICAgICAgICBpZiAoLS1pLT5zZWNvbmQgPD0gMCkgeworICAgICAg
ICAgICAgLy8gQ291bnQgcmVhY2hlZCB6ZXJvLCBzbyByZW1vdmUgZnJvbSBtYXAuCisgICAgICAg
ICAgICBtX2NoaWxkQ29udGV4dHMucmVtb3ZlKGkpOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gZXJyb3IKKyAgICAgICAgQVNTRVJUKDAgJiYgIm1fY2hpbGRDb250ZXh0cyBt
YXAgaGFzIG1pc21hdGNoZWQgYWRkL3JlbW92ZSBjYWxscyIpOworICAgIH0KK30KKwogdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmR1bXBSZW5kZXJTdXJmYWNlcyhUZXh0U3RyZWFtJiB0cywg
aW50IGluZGVudCwgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpIGNvbnN0CiB7CiAgICAgaWYgKGxheWVy
LT5jY0xheWVySW1wbCgpLT5yZW5kZXJTdXJmYWNlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5oCmluZGV4IGM1MDkyYzFiOTI0ZThmMTk1YTVmMjVlOGVjZmQyNTJjZGFlYTg1MGEu
LjcxMDg3OGFlMTNmYjU3YzU4OTNmMmNhNmVhOGVlMWIxNGQyN2JjNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMzEsOCArMTMxLDEyIEBAIHB1YmxpYzoKIAogICAg
IFN0cmluZyBsYXllclRyZWVBc1RleHQoKSBjb25zdDsKIAorICAgIHZvaWQgYWRkQ2hpbGRDb250
ZXh0KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+KTsKKyAgICB2b2lkIHJlbW92ZUNoaWxk
Q29udGV4dChQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPik7CisKIHByaXZhdGU6CiAgICAg
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+IExheWVyTGlzdDsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgaW50PiBDaGlsZENvbnRleHRN
YXA7CiAKICAgICBleHBsaWNpdCBMYXllclJlbmRlcmVyQ2hyb21pdW0oUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4sIFBhc3NPd25QdHI8VGlsZVBhaW50SW50ZXJmYWNlPiBjb250ZW50UGFp
bnQsIFBhc3NPd25QdHI8VGlsZVBhaW50SW50ZXJmYWNlPiBzY3JvbGxiYXJQYWludCk7CiAKQEAg
LTIyMiw2ICsyMjYsMTUgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8Q0NIZWFkc1VwRGlzcGxheT4g
bV9oZWFkc1VwRGlzcGxheTsKIAogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250
ZXh0OworICAgIENoaWxkQ29udGV4dE1hcCBtX2NoaWxkQ29udGV4dHM7CisKKyAgICAvLyBJZiB0
cnVlLCB0aGUgY2hpbGQgY29udGV4dHMgd2VyZSBjb3BpZWQgdG8gdGhlIGNvbXBvc2l0b3IgdGV4
dHVyZSB0YXJnZXRzCisgICAgLy8gYW5kIHRoZSBjb21wb3NpdG9yIHdpbGwgbmVlZCB0byB3YWl0
IG9uIHRoZSBwcm9wZXIgbGF0Y2hlcyBiZWZvcmUgdXNpbmcKKyAgICAvLyB0aGUgdGFyZ2V0IHRl
eHR1cmVzLiBJZiBmYWxzZSwgdGhlIGNvbXBvc2l0b3IgaXMgcmV1c2luZyB0aGUgdGV4dHVyZXMK
KyAgICAvLyBmcm9tIGxhc3QgZnJhbWUuCisgICAgYm9vbCBtX2NoaWxkQ29udGV4dHNXZXJlQ29w
aWVkOworCisgICAgYm9vbCBtX2NvbnRleHRTdXBwb3J0c0xhdGNoOwogCiAgICAgUmVuZGVyU3Vy
ZmFjZUNocm9taXVtKiBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IDY1MmU3NTI3YTY0ZTMyZGU1MWZiY2RiYzFjMjgwYjY0ZjI4
ZWEzMzMuLjMxYjFiMTY5NGIwYjVjMzQwZGZiOTRiZGFkMzFmOGRmOWIzMmFmMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtNTEsNiArNTEsMTIgQEAgV2ViR0xMYXllckNo
cm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikK
IHsKIH0KIAorV2ViR0xMYXllckNocm9taXVtOjp+V2ViR0xMYXllckNocm9taXVtKCkKK3sKKyAg
ICBpZiAobV9jb250ZXh0ICYmIGxheWVyUmVuZGVyZXIoKSkKKyAgICAgICAgbGF5ZXJSZW5kZXJl
cigpLT5yZW1vdmVDaGlsZENvbnRleHQobV9jb250ZXh0KTsKK30KKwogdm9pZCBXZWJHTExheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKQogewogICAgIGlmICghbV9jb250
ZW50c0RpcnR5KQpAQCAtNzAsNiArNzYsOSBAQCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcygpCiAgICAgfQogICAgIC8vIFVwZGF0ZSB0aGUgY29udGVu
dHMgb2YgdGhlIHRleHR1cmUgdXNlZCBieSB0aGUgY29tcG9zaXRvci4KICAgICBpZiAobV9jb250
ZW50c0RpcnR5ICYmIG1fdGV4dHVyZVVwZGF0ZWQpIHsKKyAgICAgICAgLy8gcHJlcGFyZVRleHR1
cmUgY29waWVzIHRoZSBjb250ZW50cyBvZiB0aGUgb2ZmLXNjcmVlbiByZW5kZXIgdGFyZ2V0IGlu
dG8gdGhlIHRleHR1cmUKKyAgICAgICAgLy8gdXNlZCBieSB0aGUgY29tcG9zaXRvci4KKyAgICAg
ICAgLy8KICAgICAgICAgbV9jb250ZXh0LT5wcmVwYXJlVGV4dHVyZSgpOwogICAgICAgICBtX2Nv
bnRleHQtPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICAgICAgbV9jb250ZW50c0RpcnR5ID0g
ZmFsc2U7CkBAIC04NCw2ICs5MywxMyBAQCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0VGV4
dHVyZVVwZGF0ZWQoKQogCiB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGV4dChjb25z
dCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKKyAgICBpZiAobV9jb250ZXh0ICE9IGNv
bnRleHQgJiYgbGF5ZXJSZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChtX2NvbnRleHQpCisgICAg
ICAgICAgICBsYXllclJlbmRlcmVyKCktPnJlbW92ZUNoaWxkQ29udGV4dChtX2NvbnRleHQpOwor
ICAgICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgICAgIGxheWVyUmVuZGVyZXIoKS0+YWRkQ2hp
bGRDb250ZXh0KG1fY29udGV4dCk7CisgICAgfQorCiAgICAgbV9jb250ZXh0ID0gY29uc3RfY2Fz
dDxHcmFwaGljc0NvbnRleHQzRCo+KGNvbnRleHQpOwogCiAgICAgdW5zaWduZWQgaW50IHRleHR1
cmVJZCA9IG1fY29udGV4dC0+cGxhdGZvcm1UZXh0dXJlKCk7CkBAIC05NSw1ICsxMTEsMTkgQEAg
dm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnNldENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQpCiAgICAgbV9wcmVtdWx0aXBsaWVkQWxwaGEgPSBtX2NvbnRleHQtPmdldENv
bnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhOwogfQogCit2b2lkIFdlYkdMTGF5
ZXJDaHJvbWl1bTo6c2V0TGF5ZXJSZW5kZXJlcihMYXllclJlbmRlcmVyQ2hyb21pdW0qIG5ld0xh
eWVyUmVuZGVyZXIpCit7CisgICAgaWYgKGxheWVyUmVuZGVyZXIoKSAhPSBuZXdMYXllclJlbmRl
cmVyKSB7CisgICAgICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgICAgIGlmIChsYXllclJl
bmRlcmVyKCkpCisgICAgICAgICAgICAgICAgbGF5ZXJSZW5kZXJlcigpLT5yZW1vdmVDaGlsZENv
bnRleHQobV9jb250ZXh0KTsKKyAgICAgICAgICAgIGlmIChuZXdMYXllclJlbmRlcmVyKQorICAg
ICAgICAgICAgICAgIG5ld0xheWVyUmVuZGVyZXItPmFkZENoaWxkQ29udGV4dChtX2NvbnRleHQp
OworICAgICAgICB9CisKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJSZW5kZXJlcihu
ZXdMYXllclJlbmRlcmVyKTsKKyAgICB9Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDMzZGI3MzAy
NWQ4ZjdiMmYwN2NhZTY0M2VjYzY0YWU0YzBjODY1MjUuLjM0MjI3NWI0NmIzZTc5ZWVjMjMwYWUx
YjFlMDJhZmNjZTEwN2JmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCkBAIC00NCwx
MiArNDQsMTcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBXZWJHTExheWVyQ2hy
b21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NMYXllckNocm9t
aXVtKiBvd25lciA9IDApOworCisgICAgdmlydHVhbCB+V2ViR0xMYXllckNocm9taXVtKCk7CisK
ICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0
OyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKTsKICAgICB2
b2lkIHNldFRleHR1cmVVcGRhdGVkKCk7CiAKICAgICB2b2lkIHNldENvbnRleHQoY29uc3QgR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQpOwogCisgICAgdmlydHVhbCB2b2lkIHNldExheWVyUmVu
ZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIGxheWVyVHlwZUFzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gIldlYkdMTGF5
ZXIiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTQ0NDRjZDk4OTNhNjgxODdi
ZTdhN2U5M2IzNDM2OGM2YjdhNDZiYS4uOGNkODU0MGJjZTRmOTQ5MWYwY2U4YWI1MjBlYTIzODUx
YTI0MTM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAx
MS0wNC0xMSAgSm9obiBCYXRlcyAgPGpiYXRlc0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNocm9taXVtIHN1cHBvcnQgZm9yIGds
U2V0TGF0Y2ggYW5kIGdsV2FpdExhdGNoIGJldHdlZW4gM0QgY29udGV4dHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MDAzCisKKyAgICAgICAgKiBw
dWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFBhcmVudFRvQ2hpbGRMYXRjaENIUk9NSVVNKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q6OmdldENoaWxkVG9QYXJlbnRMYXRjaENIUk9NSVVN
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q6OndhaXRMYXRjaENIUk9N
SVVNKToKKyAgICAgICAgKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q6OnNldExhdGNoQ0hS
T01JVU0pOgorICAgICAgICAqIHNyYy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zM0RDaHJvbWl1bTo6d2FpdExhdGNoQ0hST01JVU0pOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNEQ2hyb21pdW06OnNldExhdGNoQ0hST01JVU0pOgor
ICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKiBz
cmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbC5oOgorCiAyMDExLTA0LTExICBEYW5pZWwgQ2hl
bmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERtaXRyeSBU
aXRvdi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBo
aWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGlj
c0NvbnRleHQzRC5oCmluZGV4IDk4NGY3OWQyNWFhYWQ1N2E1NmU3YWViYTRmNDU5ODg2YzhlZWQ2
YTguLmZmN2U1MDJjZTQ2MzI3YmM5OGM5MmM2MzE3ODg1ZjFhZmNmNjM2OTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaApA
QCAtMTY4LDYgKzE2OCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1
ZmZlckNIUk9NSVVNKFdHQzNEaW50IHNyY1gwLCBXR0MzRGludCBzcmNZMCwgV0dDM0RpbnQgc3Jj
WDEsIFdHQzNEaW50IHNyY1kxLCBXR0MzRGludCBkc3RYMCwgV0dDM0RpbnQgZHN0WTAsIFdHQzNE
aW50IGRzdFgxLCBXR0MzRGludCBkc3RZMSwgV0dDM0RiaXRmaWVsZCBtYXNrLCBXR0MzRGVudW0g
ZmlsdGVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZUNIUk9NSVVNKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEc2l6ZWkgc2FtcGxlcywgV0dDM0Rl
bnVtIGludGVybmFsZm9ybWF0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCkg
PSAwOwogCisgICAgLy8gR0xfQ0hST01JVU1fbGF0Y2gKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFy
ZW50VG9DaGlsZExhdGNoQ0hST01JVU0oV0dDM0R1aW50KiBsYXRjaElkKSB7fSAvLyBGSVhNRTog
PSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDaGlsZFRvUGFyZW50TGF0Y2hDSFJPTUlVTShXR0Mz
RHVpbnQqIGxhdGNoSWQpIHt9IC8vIEZJWE1FOiA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdhaXRM
YXRjaENIUk9NSVVNKFdHQzNEdWludCBsYXRjaElkKSB7fSAvLyBGSVhNRTogPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRMYXRjaENIUk9NSVVNKFdHQzNEdWludCBsYXRjaElkKSB7fSAvLyBGSVhN
RTogPSAwOworCiAgICAgLy8gVGhlIGVudHJ5IHBvaW50cyBiZWxvdyBtYXAgZGlyZWN0bHkgdG8g
dGhlIE9wZW5HTCBFUyAyLjAgQVBJLgogICAgIC8vIFNlZTogaHR0cDovL3d3dy5raHJvbm9zLm9y
Zy9yZWdpc3RyeS9nbGVzLwogICAgIC8vIGFuZDogaHR0cDovL3d3dy5raHJvbm9zLm9yZy9vcGVu
Z2xlcy9zZGsvZG9jcy9tYW4vCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9F
eHRlbnNpb25zM0RDaHJvbWl1bS5jcHAKaW5kZXggMzAxMDFjN2EzZTBiZTZjNmY5OTI0MjRmZTAy
ZTA3NjE5N2IyMDIwOS4uN2NkNzBkZjllMzQzZGI5MzkzMDU5ZjQzMWZhYmVhNjY3Y2ViNzJmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZW5zaW9uczNEQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVuc2lvbnMzRENocm9t
aXVtLmNwcApAQCAtOTcsNiArOTcsMjYgQEAgdm9pZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6Y29w
eVRleHR1cmVUb1BhcmVudFRleHR1cmVDSFJPTUlVTSh1bnNpZ25lZCB0ZXh0dXJlLAogICAgIG1f
aW50ZXJuYWwtPmNvcHlUZXh0dXJlVG9QYXJlbnRUZXh0dXJlQ0hST01JVU0odGV4dHVyZSwgcGFy
ZW50VGV4dHVyZSk7CiB9CiAKK3ZvaWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06OmdldFBhcmVudFRv
Q2hpbGRMYXRjaENIUk9NSVVNKEdDM0R1aW50KiBsYXRjaElkKQoreworICAgIG1faW50ZXJuYWwt
PmdldFBhcmVudFRvQ2hpbGRMYXRjaENIUk9NSVVNKGxhdGNoSWQpOworfQorCit2b2lkIEV4dGVu
c2lvbnMzRENocm9taXVtOjpnZXRDaGlsZFRvUGFyZW50TGF0Y2hDSFJPTUlVTShHQzNEdWludCog
bGF0Y2hJZCkKK3sKKyAgICBtX2ludGVybmFsLT5nZXRDaGlsZFRvUGFyZW50TGF0Y2hDSFJPTUlV
TShsYXRjaElkKTsKK30KKwordm9pZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6d2FpdExhdGNoQ0hS
T01JVU0oR0MzRHVpbnQgbGF0Y2hJZCkKK3sKKyAgICBtX2ludGVybmFsLT53YWl0TGF0Y2hDSFJP
TUlVTShsYXRjaElkKTsKK30KKwordm9pZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6c2V0TGF0Y2hD
SFJPTUlVTShHQzNEdWludCBsYXRjaElkKQoreworICAgIG1faW50ZXJuYWwtPnNldExhdGNoQ0hS
T01JVU0obGF0Y2hJZCk7Cit9CisKIFBsYXRmb3JtM0RPYmplY3QgRXh0ZW5zaW9uczNEQ2hyb21p
dW06OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5j
cHAKaW5kZXggNTRjMThlMzU3YmZhMmZjODNjZWE0MjAzN2U1MDZjYmExNmU1YzdhNy4uYzNkMzY2
NWE0NjNiNTlhYmE0Y2ViZmYxM2MzN2NmMDA5Nzc4YTJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKQEAg
LTgwMCw2ICs4MDAsMTAgQEAgREVMRUdBVEVfVE9fSU1QTF8xKHVubWFwVGV4U3ViSW1hZ2UyRENI
Uk9NSVVNLCBjb25zdCB2b2lkKikKIERFTEVHQVRFX1RPX0lNUExfMihjb3B5VGV4dHVyZVRvUGFy
ZW50VGV4dHVyZUNIUk9NSVVNLCBQbGF0Zm9ybTNET2JqZWN0LCBQbGF0Zm9ybTNET2JqZWN0KQog
REVMRUdBVEVfVE9fSU1QTF8xMChibGl0RnJhbWVidWZmZXJDSFJPTUlVTSwgR0MzRGludCwgR0Mz
RGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGlu
dCwgR0MzRGJpdGZpZWxkLCBHQzNEZW51bSkKIERFTEVHQVRFX1RPX0lNUExfNShyZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGVDSFJPTUlVTSwgR0MzRGVudW0sIEdDM0RzaXplaSwgR0MzRGVu
dW0sIEdDM0RzaXplaSwgR0MzRHNpemVpKQorREVMRUdBVEVfVE9fSU1QTF8xKGdldFBhcmVudFRv
Q2hpbGRMYXRjaENIUk9NSVVNLCBHQzNEdWludCopCitERUxFR0FURV9UT19JTVBMXzEoZ2V0Q2hp
bGRUb1BhcmVudExhdGNoQ0hST01JVU0sIEdDM0R1aW50KikKK0RFTEVHQVRFX1RPX0lNUExfMSh3
YWl0TGF0Y2hDSFJPTUlVTSwgR0MzRHVpbnQpCitERUxFR0FURV9UT19JTVBMXzEoc2V0TGF0Y2hD
SFJPTUlVTSwgR0MzRHVpbnQpCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gR3JhcGhpY3NDb250ZXh0
M0QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWwuaAppbmRleCAwYWYyOTFlOTYzMjI5YjZjODRkNTcyOTgwNGNjMGExYzdlNzYx
YzRhLi4wOWFlODljZDlhMTkyZGIwYmRmYTk1MzQwNzJlZjE4ZDE0MjY0NTJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzREludGVybmFsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bC5oCkBAIC0yNzAsNiArMjcwLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZl
ckNIUk9NSVVNKEdDM0RpbnQgc3JjWDAsIEdDM0RpbnQgc3JjWTAsIEdDM0RpbnQgc3JjWDEsIEdD
M0RpbnQgc3JjWTEsIEdDM0RpbnQgZHN0WDAsIEdDM0RpbnQgZHN0WTAsIEdDM0RpbnQgZHN0WDEs
IEdDM0RpbnQgZHN0WTEsIEdDM0RiaXRmaWVsZCBtYXNrLCBHQzNEZW51bSBmaWx0ZXIpOwogICAg
IHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQ0hST01JVU0oR0MzRGVudW0gdGFy
Z2V0LCBHQzNEc2l6ZWkgc2FtcGxlcywgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CiAKKyAgICAvLyBMYXRjaCBzdXBwb3J0CisgICAg
dm9pZCBnZXRQYXJlbnRUb0NoaWxkTGF0Y2hDSFJPTUlVTShHQzNEdWludCogbGF0Y2hJZCk7Cisg
ICAgdm9pZCBnZXRDaGlsZFRvUGFyZW50TGF0Y2hDSFJPTUlVTShHQzNEdWludCogbGF0Y2hJZCk7
CisgICAgdm9pZCB3YWl0TGF0Y2hDSFJPTUlVTShHQzNEdWludCBsYXRjaElkKTsKKyAgICB2b2lk
IHNldExhdGNoQ0hST01JVU0oR0MzRHVpbnQgbGF0Y2hJZCk7CisKIHByaXZhdGU6CiAgICAgT3du
UHRyPFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q+IG1faW1wbDsKICAgICBPd25QdHI8RXh0
ZW5zaW9uczNEQ2hyb21pdW0+IG1fZXh0ZW5zaW9uczsK
</data>

          </attachment>
      

    </bug>

</bugzilla>