<?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>76274</bug_id>
          
          <creation_ts>2012-01-13 06:43:24 -0800</creation_ts>
          <short_desc>[chromium] Refactor canvas, plugin, and video drawing to be more data-driven</short_desc>
          <delta_ts>2012-01-18 13:03:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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="Tim Dresser">tdresser</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>535646</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Dresser">tdresser</who>
    <bug_when>2012-01-13 06:43:24 -0800</bug_when>
    <thetext>From https://bugs.webkit.org/show_bug.cgi?id=73059:

CCLayerImpl-derived classes all currently handle drawing themselves internally, making direct GL calls.  This is problematic for several reasons.  Testing these layers is tricky because testing must be done at a mock GL interface level rather than at a higher abstract level.  It makes culling closely dependent on how each layer draws.  It also makes some optimizations like layer squashing impossible.

To fix this, CCLayerImpl-derived classes should produce a set of quads to render with some basic information in them about how they are to be drawn.  This list can then be processed and drawn in a more data-driven and abstract manner.



There are three CCLayerImpl-derived classes which still handle drawing internally: CCCanvasLayerImpl, CCVideoLayerImpl, and CCPluginLayerImpl. These should use the data-driven approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535711</commentid>
    <comment_count>1</comment_count>
      <attachid>122433</attachid>
    <who name="Tim Dresser">tdresser</who>
    <bug_when>2012-01-13 08:47:02 -0800</bug_when>
    <thetext>Created attachment 122433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535741</commentid>
    <comment_count>2</comment_count>
      <attachid>122433</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-13 09:46:55 -0800</bug_when>
    <thetext>Comment on attachment 122433
Patch

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

Thanks! This looks great.  It&apos;s nice to have all of this refactoring first before moving any draw functionality itself.

&gt; Source/WebCore/ChangeLog:6
&gt; +        Unreviewed.

You should leave this saying exactly &quot;Reviewed by NOBODY (OOPS!).&quot;  When the commit queue or somebody else lands your patch via webkit-patch, then it will update the reviewer line automatically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535746</commentid>
    <comment_count>3</comment_count>
      <attachid>122433</attachid>
    <who name="Tim Dresser">tdresser</who>
    <bug_when>2012-01-13 09:55:24 -0800</bug_when>
    <thetext>Comment on attachment 122433
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:6
&gt;&gt; +        Unreviewed.
&gt; 
&gt; You should leave this saying exactly &quot;Reviewed by NOBODY (OOPS!).&quot;  When the commit queue or somebody else lands your patch via webkit-patch, then it will update the reviewer line automatically.

What&apos;s the best way to resolve this now?
Should I resubmit the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535755</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-13 10:08:26 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 122433 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122433&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:6
&gt; &gt;&gt; +        Unreviewed.
&gt; &gt; 
&gt; &gt; You should leave this saying exactly &quot;Reviewed by NOBODY (OOPS!).&quot;  When the commit queue or somebody else lands your patch via webkit-patch, then it will update the reviewer line automatically.
&gt; 
&gt; What&apos;s the best way to resolve this now?
&gt; Should I resubmit the patch?

Yes you should. webkit-patch upload should make this pretty painless</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535756</commentid>
    <comment_count>5</comment_count>
      <attachid>122433</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-13 10:10:19 -0800</bug_when>
    <thetext>Comment on attachment 122433
Patch

R- for the ChangeLog since that&apos;ll break our scripts, but otherwise this looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535796</commentid>
    <comment_count>6</comment_count>
      <attachid>122458</attachid>
    <who name="Tim Dresser">tdresser</who>
    <bug_when>2012-01-13 10:55:03 -0800</bug_when>
    <thetext>Created attachment 122458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535906</commentid>
    <comment_count>7</comment_count>
      <attachid>122458</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-13 12:44:07 -0800</bug_when>
    <thetext>Comment on attachment 122458
Patch

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

Looks reasonable. R=me but can&apos;t land as is (feel free to ask any committer for help with landing the final version)

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

this will fail an SVN presubmit check, you need to delete this line and describe the testing situation (in this case, this looks like a refactor so existing tests should apply)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535979</commentid>
    <comment_count>8</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-13 14:13:28 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 122458 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122458&amp;action=review
&gt; 
&gt; Looks reasonable. R=me but can&apos;t land as is (feel free to ask any committer for help with landing the final version)

I&apos;ll get it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536015</commentid>
    <comment_count>9</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-13 15:00:13 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (From update of attachment 122458 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122458&amp;action=review
&gt; &gt; 
&gt; &gt; Looks reasonable. R=me but can&apos;t land as is (feel free to ask any committer for help with landing the final version)
&gt; 
&gt; I&apos;ll get it.

Actually, scratch that.  It looks like this fails the webkit_unit_tests target in CCLayerTreeHostImplTest.blendingOffWhenDrawingOpaqueLayers.  We&apos;ve got a test that looks like it&apos;s expecting the CCLayerImpl::draw() function to be called via this custom layer path.  Removing the code out of CCLayerImpl::appendQuads makes this test fail, although I think that&apos;s the right thing to do.

I suspect maybe you need to just change the draw function in the BlendStateCheckLayer test class to an appendQuads function and verify that a CCDrawQuad with that sharedQuadState has the right needsBlending() setting, rather than testing the context itself.

tdresser: Can you see if you can fix this failure and resubmit a patch (also without the string OOPS anywhere in the ChangeLog)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536026</commentid>
    <comment_count>10</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-13 15:15:43 -0800</bug_when>
    <thetext>(In reply to comment #9)

&gt; tdresser: Can you see if you can fix this failure and resubmit a patch (also without the string OOPS anywhere in the ChangeLog)?

Er, more specifically, *with* the reviewed by nobody OOPS, but *without* any other OOPS lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536596</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Dresser">tdresser</who>
    <bug_when>2012-01-16 08:59:09 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; 
&gt; &gt; tdresser: Can you see if you can fix this failure and resubmit a patch (also without the string OOPS anywhere in the ChangeLog)?
&gt; 
&gt; Er, more specifically, *with* the reviewed by nobody OOPS, but *without* any other OOPS lines.

This test currently relies on some culling code which I think is going to behave differently once this refactor is complete.

CCLayerImpl::appendQuads is called for all layers, but CCLayerImpl::draw was not called for all layers.

I see two options here:

1. Modify the test to expect CCLayerImpl::appendQuads to always be called.
   This essentially undoes https://bugs.webkit.org/show_bug.cgi?id=75783
2. Test if the layer&apos;s quads are actually drawn.
   
Which approach do you think I should take?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537157</commentid>
    <comment_count>12</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-17 09:28:00 -0800</bug_when>
    <thetext>(In reply to comment #11)

&gt; This test currently relies on some culling code which I think is going to behave differently once this refactor is complete.
&gt; 
&gt; CCLayerImpl::appendQuads is called for all layers, but CCLayerImpl::draw was not called for all layers.
&gt; 
&gt; I see two options here:
&gt; 
&gt; 1. Modify the test to expect CCLayerImpl::appendQuads to always be called.
&gt;    This essentially undoes https://bugs.webkit.org/show_bug.cgi?id=75783
&gt; 2. Test if the layer&apos;s quads are actually drawn.
&gt; 
&gt; Which approach do you think I should take?

This is more complicated than I expected.  As a part of refactoring all these layer types, I&apos;m hoping to remove CCLayerImpl::draw entirely.  And, on top of that, this test stretches across way too many layers of code.  It goes all the way from layer tree =&gt; render surface lists =&gt; quads =&gt; layer drawing code =&gt; graphics context for testing.  Ack.

For what it&apos;s worth, I would expect appendQuads to always be called for all of those layers.  The change from bug 75783 is not worth preserving, because culling is well-tested (and better-tested) elsewhere.  I&apos;d rather do that than test the drawing of quads in this test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537165</commentid>
    <comment_count>13</comment_count>
      <attachid>122780</attachid>
    <who name="Tim Dresser">tdresser</who>
    <bug_when>2012-01-17 09:52:11 -0800</bug_when>
    <thetext>Created attachment 122780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537175</commentid>
    <comment_count>14</comment_count>
      <attachid>122780</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-17 10:08:00 -0800</bug_when>
    <thetext>Comment on attachment 122780
Patch

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

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:193
&gt; +        for (size_t i = 0; i &lt; quadList.size(); ++i) {
&gt; +            CCDrawQuad* drawQuad = quadList[i].get();
&gt; +            EXPECT_EQ(m_blend, drawQuad-&gt;needsBlending());
&gt; +        }

Er, this isn&apos;t quite right.  appendQuads gets passed a list to append new quads to.  The quads in the list already are from other layers.  This function should probably create new quads and check that needsBlending is correct on them.  You could probably use CCSolidColorDrawQuad as a good stand-in mock quad type to create.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537259</commentid>
    <comment_count>15</comment_count>
      <attachid>122794</attachid>
    <who name="Tim Dresser">tdresser</who>
    <bug_when>2012-01-17 11:55:46 -0800</bug_when>
    <thetext>Created attachment 122794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537314</commentid>
    <comment_count>16</comment_count>
      <attachid>122794</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-17 13:01:00 -0800</bug_when>
    <thetext>Comment on attachment 122794
Patch

Thanks for all the changes.  This looks great to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538033</commentid>
    <comment_count>17</comment_count>
      <attachid>122794</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-18 11:36:39 -0800</bug_when>
    <thetext>Comment on attachment 122794
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538090</commentid>
    <comment_count>18</comment_count>
      <attachid>122794</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 13:03:35 -0800</bug_when>
    <thetext>Comment on attachment 122794
Patch

Clearing flags on attachment: 122794

Committed r105311: &lt;http://trac.webkit.org/changeset/105311&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538091</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 13:03:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122433</attachid>
            <date>2012-01-13 08:47:02 -0800</date>
            <delta_ts>2012-01-13 10:54:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76274-20120113114700.patch</filename>
            <type>text/plain</type>
            <size>38067</size>
            <attacher name="Tim Dresser">tdresser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODk4ZGRmZmQ0MDI5NmY1
MWYwYTU3MGIyNTZmZTA1ODc1OTUwM2MyOC4uYjMyNmZhNDMzNmEzMGJkNTg5NWY5YzRmNThlZWEw
OGIwZDhiYTJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAxLTEzICBUaW0g
RHJlc3NlciAgPHRkcmVzc2VyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJl
ZmFjdG9yIGNhbnZhcywgcGx1Z2luLCBhbmQgdmlkZW8gZHJhd2luZyB0byBiZSBtb3JlIGRhdGEt
ZHJpdmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NjI3NAorCisgICAgICAgIFVucmV2aWV3ZWQuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qg
c3RlcCBpbiByZWZhY3RvcmluZyBjYW52YXMsIHBsdWdpbiwgYW5kIHZpZGVvIGRyYXdpbmcuCisg
ICAgICAgIFRoZSBDQ0N1c3RvbUxheWVyRHJhd1F1YWQgaW1wbGVtZW50YXRpb24gaGFzIGJlZW4g
Y29waWVkIHRvIENDQ2FudmFzRHJhd1F1YWQsIENDUGx1Z2luRHJhd1F1YWQgYW5kIENDVmlkZW9E
cmF3UXVhZC4KKyAgICAgICAgQWxsIHJlZmVyZW5jZXMgdG8gQ3VzdG9tTGF5ZXIgaGF2ZSBiZWVu
IHJlbW92ZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Q2FudmFzUXVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdWaWRlb1F1YWQpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UGx1Z2luUXVhZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpDQ0NhbnZhc0Ry
YXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52YXNEcmF3UXVhZDo6Q0ND
YW52YXNEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NDYW52YXNEcmF3UXVhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuaC4KKyAgICAgICAgKFdl
YkNvcmU6OkNDQ2FudmFzRHJhd1F1YWQ6OmxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0NhbnZhc0xheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0RyYXdRdWFkOjp0b0NhbnZhc0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRHJh
d1F1YWQ6OnRvVmlkZW9EcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjp0
b1BsdWdpbkRyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0RyYXdRdWFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmFwcGVuZFF1
YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkRy
YXdRdWFkLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6
OkNDUGx1Z2luRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BsdWdpbkRy
YXdRdWFkOjpDQ1BsdWdpbkRyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1BsdWdpbkRyYXdRdWFkLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5oLgor
ICAgICAgICAoV2ViQ29yZTo6Q0NQbHVnaW5EcmF3UXVhZDo6bGF5ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUGx1Z2luTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0Ry
YXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0RyYXdRdWFkOjpDQ1Zp
ZGVvRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VmlkZW9EcmF3UXVhZC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmguCisgICAgICAgIChXZWJD
b3JlOjpDQ1ZpZGVvRHJhd1F1YWQ6OmxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
VmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmg6CisKIDIwMTItMDEtMTIgIEpvY2VseW4g
VHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBUZXh0dXJl
TWFwcGVyOiBEbyB0aGUgbm9kZSB0cmFuc2Zvcm0gY29tcHV0YXRpb24gd2hlbiBwYWludGluZy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCAwZTg4YTM1ZDhkNDc2MjhkNjQ3NDA1ODhmMDUxOGYxN2ZkYzM3
NDk3Li5kZDc4MjdkYzdlNWExMzYyOGVjZGYyYWNmOGNmODM5Y2QzYmEzMWJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC0zNjA1LDEwICszNjA1LDEwIEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFk
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52
YXNEcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0NhbnZhc0xheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5jcHAnLAotICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVh
ZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFn
ZVRyYWNrZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0RhbWFnZVRyYWNrZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmNwcCcsCkBAIC0zNjQxLDYgKzM2NDEsOCBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQYWdlU2NhbGVBbmltYXRpb24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oJywKKyAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkRyYXdRdWFkLmNwcCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5EcmF3UXVhZC5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVy
SW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UGx1Z2luTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuY3BwJywKQEAgLTM2NzcsNiArMzY3OSw4IEBACiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lci5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaW1lU291cmNlLmgnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9EcmF3UXVh
ZC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVv
TGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NWaWRlb0xheWVySW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAKaW5kZXggOTMzZTc4MjUzYjE4YzUzNjMxZDEzYTMzZjAzOGVlYWZiOTYwMjVl
YS4uZWVjMTc5YjE4NmQzMWUwMzRkYzdhMmZlM2QwOWUzNmZmNTJkMmQ5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC01MiwxNiArNTIsMTggQEAKICNpbmNsdWRl
ICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJUcmVlU3luY2hyb25pemVy
LmgiCiAjaW5jbHVkZSAiV2ViR0xMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiY2MvQ0NDdXN0
b21MYXllckRyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NDYW52YXNEcmF3UXVhZC5oIgogI2lu
Y2x1ZGUgImNjL0NDRGFtYWdlVHJhY2tlci5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJE
cmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NM
YXllclRyZWVIb3N0Q29tbW9uLmgiCisjaW5jbHVkZSAiY2MvQ0NQbHVnaW5EcmF3UXVhZC5oIgog
I2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKICNp
bmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDU29s
aWRDb2xvckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKKyNpbmNs
dWRlICJjYy9DQ1ZpZGVvRHJhd1F1YWQuaCIKICNpZiBVU0UoU0tJQSkKICNpbmNsdWRlICJFeHRl
bnNpb25zM0QuaCIKICNpbmNsdWRlICJHckNvbnRleHQuaCIKQEAgLTQyMiw4ICs0MjQsMTQgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdRdWFkKGNvbnN0IENDRHJhd1F1YWQqIHF1
YWQsIGNvbnN0IEZsb2F0UmVjdCYgc3UKICAgICBjYXNlIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVu
dDoKICAgICAgICAgZHJhd1RpbGVRdWFkKHF1YWQtPnRvVGlsZURyYXdRdWFkKCkpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENDRHJhd1F1YWQ6OkN1c3RvbUxheWVyOgotICAgICAgICBkcmF3
Q3VzdG9tTGF5ZXJRdWFkKHF1YWQtPnRvQ3VzdG9tTGF5ZXJEcmF3UXVhZCgpKTsKKyAgICBjYXNl
IENDRHJhd1F1YWQ6OkNhbnZhc0NvbnRlbnQ6CisgICAgICAgIGRyYXdDYW52YXNRdWFkKHF1YWQt
PnRvQ2FudmFzRHJhd1F1YWQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ0NEcmF3UXVh
ZDo6VmlkZW9Db250ZW50OgorICAgICAgICBkcmF3VmlkZW9RdWFkKHF1YWQtPnRvVmlkZW9EcmF3
UXVhZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDQ0RyYXdRdWFkOjpQbHVnaW5Db250
ZW50OgorICAgICAgICBkcmF3UGx1Z2luUXVhZChxdWFkLT50b1BsdWdpbkRyYXdRdWFkKCkpOwog
ICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC02NTksNyArNjY3LDE5IEBAIHZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQp
CiAgICAgZHJhd1RleHR1cmVkUXVhZChxdWFkLT5xdWFkVHJhbnNmb3JtKCksIHRpbGVSZWN0Lndp
ZHRoKCksIHRpbGVSZWN0LmhlaWdodCgpLCBxdWFkLT5vcGFjaXR5KCksIGxvY2FsUXVhZCwgdW5p
Zm9ybXMubWF0cml4TG9jYXRpb24sIHVuaWZvcm1zLmFscGhhTG9jYXRpb24sIHVuaWZvcm1zLnBv
aW50TG9jYXRpb24pOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0N1c3Rv
bUxheWVyUXVhZChjb25zdCBDQ0N1c3RvbUxheWVyRHJhd1F1YWQqIHF1YWQpCit2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0NhbnZhc1F1YWQoY29uc3QgQ0NDYW52YXNEcmF3UXVhZCog
cXVhZCkKK3sKKyAgICBDQ0xheWVySW1wbCogbGF5ZXIgPSBxdWFkLT5sYXllcigpOworICAgIGxh
eWVyLT5kcmF3KHRoaXMpOworfQorCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Zp
ZGVvUXVhZChjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqIHF1YWQpCit7CisgICAgQ0NMYXllckltcGwq
IGxheWVyID0gcXVhZC0+bGF5ZXIoKTsKKyAgICBsYXllci0+ZHJhdyh0aGlzKTsKK30KKwordm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdQbHVnaW5RdWFkKGNvbnN0IENDUGx1Z2luRHJh
d1F1YWQqIHF1YWQpCiB7CiAgICAgQ0NMYXllckltcGwqIGxheWVyID0gcXVhZC0+bGF5ZXIoKTsK
ICAgICBsYXllci0+ZHJhdyh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
aW5kZXggMmJiMDE0NmFkNTMxNGNhZDhjNWY3OGRjYTAxZGFkMTVkZWZlYmUwMC4uYzg5NmIxZGYy
NmYzZWZlYWMxMWIzMjcxYzU5NTdhMmY0YmY1OGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgKQEAgLTE2Nyw3ICsxNjcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZHJhd1Jl
bmRlclN1cmZhY2VRdWFkKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKik7CiAgICAgdm9p
ZCBkcmF3U29saWRDb2xvclF1YWQoY29uc3QgQ0NTb2xpZENvbG9yRHJhd1F1YWQqKTsKICAgICB2
b2lkIGRyYXdUaWxlUXVhZChjb25zdCBDQ1RpbGVEcmF3UXVhZCopOwotICAgIHZvaWQgZHJhd0N1
c3RvbUxheWVyUXVhZChjb25zdCBDQ0N1c3RvbUxheWVyRHJhd1F1YWQqKTsKKyAgICB2b2lkIGRy
YXdDYW52YXNRdWFkKGNvbnN0IENDQ2FudmFzRHJhd1F1YWQqKTsKKyAgICB2b2lkIGRyYXdWaWRl
b1F1YWQoY29uc3QgQ0NWaWRlb0RyYXdRdWFkKik7CisgICAgdm9pZCBkcmF3UGx1Z2luUXVhZChj
b25zdCBDQ1BsdWdpbkRyYXdRdWFkKik7CiAKICAgICBNYW5hZ2VkVGV4dHVyZSogZ2V0T2Zmc2Ny
ZWVuTGF5ZXJUZXh0dXJlKCk7CiAgICAgdm9pZCBjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxh
eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNWM3Njhm
Mjk5YjNhZjY4ZDJhNjljN2U3ODEzNjYyMDVhZDUyNzI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVh
ZC5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgImNjL0NDQ2FudmFzRHJhd1F1YWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQ
YXNzT3duUHRyPENDQ2FudmFzRHJhd1F1YWQ+IENDQ2FudmFzRHJhd1F1YWQ6OmNyZWF0ZShjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFk
UmVjdCwgQ0NMYXllckltcGwqIGxheWVyKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0ND
YW52YXNEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBsYXllcikpOworfQorCitD
Q0NhbnZhc0RyYXdRdWFkOjpDQ0NhbnZhc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ0xheWVySW1wbCog
bGF5ZXIpCisgICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6Q2Fu
dmFzQ29udGVudCwgcXVhZFJlY3QpCisgICAgLCBtX2xheWVyKGxheWVyKQoreworICAgIEFTU0VS
VChtX2xheWVyKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY1YjRjOGExYzJlMDI5ODExYTljMjRlYzQ4ZmEwZDkyMzk2NjhlNDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Nh
bnZhc0RyYXdRdWFkLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NDYW52YXNE
cmF3UXVhZF9oCisjZGVmaW5lIENDQ2FudmFzRHJhd1F1YWRfaAorCisjaW5jbHVkZSAiY2MvQ0NE
cmF3UXVhZC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ0NMYXllckltcGw7CitjbGFzcyBDQ0NhbnZhc0RyYXdRdWFkIDogcHVi
bGljIENDRHJhd1F1YWQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDQ2FudmFzRHJhd1F1
YWQpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDQ2FudmFzRHJhd1F1YWQ+IGNy
ZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ0xheWVySW1w
bCopOworCisgICAgQ0NMYXllckltcGwqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsg
fQorCitwcml2YXRlOgorICAgIENDQ2FudmFzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NMYXllckltcGwqKTsKKworICAgIENDTGF5ZXJJbXBsKiBt
X2xheWVyOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBs
LmNwcAppbmRleCA2ZWNkZDkwZjI2YTc0MTcwYjU4MTZhODcxNmU4MzgzNjI5OWRkY2Q4Li5hYzE4
MzY2MzNiYzU4ZDc0MzRlY2ViNTYwMGIyZjcwNzAxYjEwZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0ND
YW52YXNMYXllckltcGwuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgorI2luY2x1
ZGUgImNjL0NDQ2FudmFzRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc3LDYgKzc4LDExIEBAIHZvaWQgQ0ND
YW52YXNMYXllckltcGw6OmRyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVy
KQogICAgICAgICBjb250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsKIH0K
IAordm9pZCBDQ0NhbnZhc0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExp
c3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCit7CisgICAgSW50
UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBib3VuZHMoKSk7CisgICAgcXVhZExpc3QuYXBwZW5k
KENDQ2FudmFzRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0aGlz
KSk7Cit9CiAKIHZvaWQgQ0NDYW52YXNMYXllckltcGw6OmR1bXBMYXllclByb3BlcnRpZXMoVGV4
dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXll
ckltcGwuaAppbmRleCAyNzViZjdjYThhMmEwNWNkZGQwYjkzOGRiNTk5OGMwMzFlMGJkYzJmLi4z
NWI4OWU2NzU1MDEzNWEwNmQ4NTE5ZWU3MzJlNDA2ZjFiNGQwYzA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
Q2FudmFzTGF5ZXJJbXBsLmgKQEAgLTQwLDYgKzQwLDggQEAgcHVibGljOgogICAgIH0KICAgICB2
aXJ0dWFsIH5DQ0NhbnZhc0xheWVySW1wbCgpOwogCisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1
YWRzKENDUXVhZExpc3QmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopOworCiAgICAgdHlwZWRl
ZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRl
eEZsaXBBbHBoYT4gUHJvZ3JhbTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KExheWVyUmVuZGVy
ZXJDaHJvbWl1bSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1ODBiMTBlZDI0OTBjN2E2Zjg5YWNmMjMx
MWNkODBhY2U4M2E1YmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDdXN0
b21MYXllckRyYXdRdWFkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9DQ0N1c3RvbUxheWVyRHJhd1F1
YWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzT3duUHRyPENDQ3VzdG9tTGF5ZXJE
cmF3UXVhZD4gQ0NDdXN0b21MYXllckRyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIENDTGF5ZXJJ
bXBsKiBsYXllcikKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDQ3VzdG9tTGF5ZXJEcmF3
UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBsYXllcikpOwotfQotCi1DQ0N1c3RvbUxh
eWVyRHJhd1F1YWQ6OkNDQ3VzdG9tTGF5ZXJEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwq
IGxheWVyKQotICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OkN1
c3RvbUxheWVyLCBxdWFkUmVjdCkKLSAgICAsIG1fbGF5ZXIobGF5ZXIpCi17Ci0gICAgQVNTRVJU
KG1fbGF5ZXIpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWJkNDYyMzI1M2E0YzQ1NTA5YWMyNDUw
ZjljYTMyYTczYzdkOWM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ3Vz
dG9tTGF5ZXJEcmF3UXVhZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgQ0NDdXN0b21MYXllckRyYXdRdWFkX2gKLSNkZWZpbmUgQ0NDdXN0b21MYXllckRy
YXdRdWFkX2gKLQotI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENDTGF5ZXJJbXBsOwot
Ci0vLyBGSVhNRTogVGhpcyBjbGFzcyBpcyBhIHRlbXBvcmFyeSB3YXkgdG8gYWNjZXNzIENDTGF5
ZXJJbXBsOjpkcmF3LiBUaGlzIGNsYXNzCi0vLyBzaG91bGQgYmUgY29udmVydGVkIHRvIGEgc2V0
IG9mIGRyYXcgcXVhZHMgZm9yIGVhY2ggbGF5ZXIgbWF0ZXJpYWwgdHlwZSBhbmQKLS8vIHRoZW4g
cmVtb3ZlZC4KLWNsYXNzIENDQ3VzdG9tTGF5ZXJEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFk
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0N1c3RvbUxheWVyRHJhd1F1YWQpOwotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDQ3VzdG9tTGF5ZXJEcmF3UXVhZD4gY3JlYXRl
KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIENDTGF5ZXJJbXBsKik7
Ci0KLSAgICBDQ0xheWVySW1wbCogbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyOyB9Ci0K
LXByaXZhdGU6Ci0gICAgQ0NDdXN0b21MYXllckRyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKiwgY29uc3QgSW50UmVjdCYsIENDTGF5ZXJJbXBsKik7Ci0KLSAgICBDQ0xheWVySW1wbCog
bV9sYXllcjsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCmluZGV4IDhm
Y2Y0NDlmMDRmMmQ1ZjU2YmZmNTg5ODJjYTQ0MTAwMThkYmUyNDIuLjFiYmZiYjZlNDQ1MTQyZTIy
M2VlNzBkNzhhMjY1OTNjMTU3MDMwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCkBAIC0yNywx
MiArMjcsMTQgQEAKIAogI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKIAotI2luY2x1ZGUgImNj
L0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDQ2FudmFzRHJhd1F1YWQu
aCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9D
Q0xheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDUGx1Z2luRHJhd1F1YWQuaCIKICNpbmNsdWRl
ICJjYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xv
ckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJj
Yy9DQ1ZpZGVvRHJhd1F1YWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03MSwxMCAr
NzMsMjIgQEAgY29uc3QgQ0NUaWxlRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvVGlsZURyYXdRdWFk
KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NUaWxlRHJhd1F1YWQqPih0
aGlzKTsKIH0KIAotY29uc3QgQ0NDdXN0b21MYXllckRyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b0N1
c3RvbUxheWVyRHJhd1F1YWQoKSBjb25zdAorY29uc3QgQ0NDYW52YXNEcmF3UXVhZCogQ0NEcmF3
UXVhZDo6dG9DYW52YXNEcmF3UXVhZCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwg
PT0gQ3VzdG9tTGF5ZXIpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ0N1c3RvbUxh
eWVyRHJhd1F1YWQqPih0aGlzKTsKKyAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBDYW52YXNDb250
ZW50KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NDYW52YXNEcmF3UXVhZCo+KHRo
aXMpOworfQorCitjb25zdCBDQ1ZpZGVvRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvVmlkZW9EcmF3
UXVhZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gVmlkZW9Db250ZW50KTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NWaWRlb0RyYXdRdWFkKj4odGhpcyk7Cit9
CisKK2NvbnN0IENDUGx1Z2luRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvUGx1Z2luRHJhd1F1YWQo
KSBjb25zdAoreworICAgIEFTU0VSVChtX21hdGVyaWFsID09IFBsdWdpbkNvbnRlbnQpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1BsdWdpbkRyYXdRdWFkKj4odGhpcyk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRHJhd1F1YWQuaAppbmRleCBiNTY5MTNiM2NlNTNhYzBlZDBlZWJlNGQ3Nzk4MDRj
YzI1ZDRlNmFlLi5hY2M3YzAyODY2Y2M4OTU5MzE1MTk2YjNiODM4ZDA4ODZiNTFjNmRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Ry
YXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEcmF3UXVhZC5oCkBAIC0zNCw3ICszNCw5IEBAIGNsYXNzIENDRGVidWdCb3JkZXJEcmF3
UXVhZDsKIGNsYXNzIENDUmVuZGVyU3VyZmFjZURyYXdRdWFkOwogY2xhc3MgQ0NTb2xpZENvbG9y
RHJhd1F1YWQ7CiBjbGFzcyBDQ1RpbGVEcmF3UXVhZDsKLWNsYXNzIENDQ3VzdG9tTGF5ZXJEcmF3
UXVhZDsKK2NsYXNzIENDQ2FudmFzRHJhd1F1YWQ7CitjbGFzcyBDQ1ZpZGVvRHJhd1F1YWQ7Citj
bGFzcyBDQ1BsdWdpbkRyYXdRdWFkOwogCiAvLyBDQ0RyYXdRdWFkIGlzIGEgYmFnIG9mIGRhdGEg
dXNlZCBmb3IgZHJhd2luZyBhIHF1YWQuIEJlY2F1c2UgZGlmZmVyZW50CiAvLyBtYXRlcmlhbHMg
bmVlZCBkaWZmZXJlbnQgYml0cyBvZiBwZXItcXVhZCBkYXRhIHRvIHJlbmRlciwgY2xhc3NlcyB0
aGF0IGRlcml2ZQpAQCAtNjAsOSArNjIsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlbmRlclN1cmZh
Y2UsCiAgICAgICAgIFNvbGlkQ29sb3IsCiAgICAgICAgIFRpbGVkQ29udGVudCwKLQotICAgICAg
ICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgYW5kIGFkZCBwcm9wZXIgbWF0ZXJpYWwgdHlwZXMgZm9y
IGFsbCBsYXllciB0eXBlcwotICAgICAgICBDdXN0b21MYXllciwKKyAgICAgICAgQ2FudmFzQ29u
dGVudCwKKyAgICAgICAgVmlkZW9Db250ZW50LAorICAgICAgICBQbHVnaW5Db250ZW50LAogICAg
IH07CiAKICAgICBNYXRlcmlhbCBtYXRlcmlhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0ZXJpYWw7
IH0KQEAgLTcxLDcgKzczLDkgQEAgcHVibGljOgogICAgIGNvbnN0IENDUmVuZGVyU3VyZmFjZURy
YXdRdWFkKiB0b1JlbmRlclN1cmZhY2VEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0IENDU29s
aWRDb2xvckRyYXdRdWFkKiB0b1NvbGlkQ29sb3JEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0
IENDVGlsZURyYXdRdWFkKiB0b1RpbGVEcmF3UXVhZCgpIGNvbnN0OwotICAgIGNvbnN0IENDQ3Vz
dG9tTGF5ZXJEcmF3UXVhZCogdG9DdXN0b21MYXllckRyYXdRdWFkKCkgY29uc3Q7CisgICAgY29u
c3QgQ0NDYW52YXNEcmF3UXVhZCogdG9DYW52YXNEcmF3UXVhZCgpIGNvbnN0OworICAgIGNvbnN0
IENDVmlkZW9EcmF3UXVhZCogdG9WaWRlb0RyYXdRdWFkKCkgY29uc3Q7CisgICAgY29uc3QgQ0NQ
bHVnaW5EcmF3UXVhZCogdG9QbHVnaW5EcmF3UXVhZCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAg
ICAgQ0NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIE1hdGVyaWFsLCBjb25zdCBJ
bnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggNjgzN2YwYTVjODZjNTY4ZTg5
M2JiNWIxMDRkZWYxNjYyMGIzNDZjMS4uZGUzOGEwYWFmNGEyN2Q4NTJhMmY0ODcxZjRiYTBlOTc2
MGI1N2I0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgImNjL0NDQ3VzdG9t
TGF5ZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJTb3J0ZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KQEAgLTEyOSw4ICsxMjgsNiBAQCBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBD
Q0xheWVySW1wbDo6Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkgY29uc3QKIAogdm9pZCBDQ0xheWVy
SW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCiB7Ci0gICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2lu
dCgpLCBib3VuZHMoKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKENDQ3VzdG9tTGF5ZXJEcmF3UXVh
ZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRoaXMpKTsKIH0KIAogdm9pZCBD
Q0xheWVySW1wbDo6YXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZExpc3QmIHF1YWRMaXN0LCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5E
cmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1BsdWdpbkRyYXdRdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDJhZTRiODYyOGY3ZmExMTQyZjk1
NjE5ZjFiYWU4Y2FkZGJmZmE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5EcmF3UXVhZC5jcHAKQEAgLTAsMCAr
MSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDUGx1
Z2luRHJhd1F1YWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPENDUGx1
Z2luRHJhd1F1YWQ+IENDUGx1Z2luRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllcklt
cGwqIGxheWVyKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NQbHVnaW5EcmF3UXVhZChz
aGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBsYXllcikpOworfQorCitDQ1BsdWdpbkRyYXdRdWFk
OjpDQ1BsdWdpbkRyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ0xheWVySW1wbCogbGF5ZXIpCisgICAgOiBD
Q0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6UGx1Z2luQ29udGVudCwgcXVh
ZFJlY3QpCisgICAgLCBtX2xheWVyKGxheWVyKQoreworICAgIEFTU0VSVChtX2xheWVyKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQbHVnaW5EcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5EcmF3UXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNTJhYmVmNDA5
MzE2NzVjM2EwN2I2ZWNjZDJmNDM2YWNkMWRlMzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkRyYXdRdWFkLmgK
QEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NQbHVnaW5EcmF3UXVhZF9oCisjZGVm
aW5lIENDUGx1Z2luRHJhd1F1YWRfaAorCisjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q0NMYXllckltcGw7CisKK2NsYXNzIENDUGx1Z2luRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVh
ZCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NQbHVnaW5EcmF3UXVhZCk7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NQbHVnaW5EcmF3UXVhZD4gY3JlYXRlKGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIENDTGF5ZXJJbXBsKik7CisKKyAgICBD
Q0xheWVySW1wbCogbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyOyB9CisKK3ByaXZhdGU6
CisgICAgQ0NQbHVnaW5EcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IElu
dFJlY3QmLCBDQ0xheWVySW1wbCopOworCisgICAgQ0NMYXllckltcGwqIG1fbGF5ZXI7Cit9Owor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwCmluZGV4IGJj
MTA1YmI0Yjc1ZjgyYzA0MjdkNGRlOWQ4ZDY3NzJkNjg0N2Q3NjIuLmIyMGEyZjUxODJjOTNlMDEy
MDlkZmYzZjM1ZmFiNjM4MTRhYjRiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1w
bC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgiCisjaW5jbHVkZSAiY2MvQ0NQbHVnaW5EcmF3UXVhZC5oIgogI2luY2x1ZGUg
ImNjL0NDUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTc2
LDYgKzE3NywxMSBAQCB2b2lkIENDUGx1Z2luTGF5ZXJJbXBsOjpkcmF3KExheWVyUmVuZGVyZXJD
aHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICB9CiB9CiAKK3ZvaWQgQ0NQbHVnaW5MYXllcklt
cGw6OmFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlKQoreworICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQo
KSwgYm91bmRzKCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChDQ1BsdWdpbkRyYXdRdWFkOjpjcmVh
dGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgdGhpcykpOworfQogCiB2b2lkIENDUGx1Z2lu
TGF5ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50
KSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgKaW5kZXggZTA5ODI2YTM0
NzU0M2Q2ZTNmN2UyNWU5Y2ViODJhZDIwZDlkMzNkNC4uOWI0ZDVhNGQzOGYxMzFjYTU3OTZmOWRj
ZWI1MmViOWI3ODkyYTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCkBAIC00
MSw2ICs0MSw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NQbHVnaW5MYXllcklt
cGwoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqKTsKKwogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4
U2hhZGVyUG9zVGV4U3RyZXRjaCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGE+IFByb2dyYW07
CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhTdHJldGNoLCBG
cmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+IFByb2dyYW1GbGlwOwogICAgIHR5cGVkZWYg
UHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVudFNoYWRl
clJHQkFUZXhSZWN0QWxwaGE+IFRleFJlY3RQcm9ncmFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5j
cHAKaW5kZXggNGE4Yjg1MTMwZTFlZDRlZWFjMzY2MzVlZmQ3YzAyOTU4NTBkYjg0My4uMDc5YWE3
ZmY2YjMxYjFiNDZmMmMyOWZhNzFmNWY3NDg4YjRiYjkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxs
ZXIuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRl
ICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgotI2luY2x1ZGUgImNjL0NDQ3VzdG9tTGF5ZXJEcmF3
UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5k
ZXJQYXNzLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9EcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkZTM4ZTkwZjg2M2YxZjM4NzA4
NDhjZjEwOTIzODk5ZGU5NzdjMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuY3BwCkBAIC0wLDAg
KzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ1Zp
ZGVvRHJhd1F1YWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPENDVmlk
ZW9EcmF3UXVhZD4gQ0NWaWRlb0RyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIENDTGF5ZXJJbXBs
KiBsYXllcikKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVmlkZW9EcmF3UXVhZChzaGFy
ZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBsYXllcikpOworfQorCitDQ1ZpZGVvRHJhd1F1YWQ6OkND
VmlkZW9EcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBj
b25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwqIGxheWVyKQorICAgIDogQ0NEcmF3
UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlZpZGVvQ29udGVudCwgcXVhZFJlY3Qp
CisgICAgLCBtX2xheWVyKGxheWVyKQoreworICAgIEFTU0VSVChtX2xheWVyKTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NWaWRlb0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMThiYzU1NDFjZDJiY2Y3ZmMx
MmZiZjkzYmRiMzQzODk2NGY5ODRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0RyYXdRdWFkLmgKQEAgLTAsMCAr
MSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NWaWRlb0RyYXdRdWFkX2gKKyNkZWZpbmUgQ0NWaWRl
b0RyYXdRdWFkX2gKKworI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDTGF5ZXJJbXBs
OworY2xhc3MgQ0NWaWRlb0RyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKENDVmlkZW9EcmF3UXVhZCk7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NPd25QdHI8Q0NWaWRlb0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
LCBjb25zdCBJbnRSZWN0JiwgQ0NMYXllckltcGwqKTsKKworICAgIENDTGF5ZXJJbXBsKiBsYXll
cigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXI7IH0KKworcHJpdmF0ZToKKyAgICBDQ1ZpZGVvRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NMYXllcklt
cGwqKTsKKworICAgIENDTGF5ZXJJbXBsKiBtX2xheWVyOworfTsKKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VmlkZW9MYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKaW5kZXggOTllN2UxMTc0NzU0M2MyNDkyM2Q1
ZDY0ZjNjNjcxOWQxZGYxZDI1MC4uYmExMjkwZWIwYmRhM2M3OTdiODg5NmQ4M2FkZmNmOGNjZTM3
NmM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKQEAgLTMyLDkgKzMyLDEw
IEBACiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1
ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJQcm9ncmFtQmluZGluZy5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRl
ICJjYy9DQ1ZpZGVvRHJhd1F1YWQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTUwLDYgKzE1MSwxMiBAQCB2b2lkIENDVmlkZW9M
YXllckltcGw6OmRyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogICAg
IG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFtZShmcmFtZSk7CiB9CiAKK3ZvaWQgQ0NWaWRlb0xh
eWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCit7CisgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQ
b2ludCgpLCBib3VuZHMoKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKENDVmlkZW9EcmF3UXVhZDo6
Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRoaXMpKTsKK30KKwogYm9vbCBDQ1Zp
ZGVvTGF5ZXJJbXBsOjpjb3B5RnJhbWVUb1RleHR1cmVzKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1
bSogZnJhbWUsIEdDM0RlbnVtIGZvcm1hdCwgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJl
bmRlcmVyKQogewogICAgIGlmIChmcmFtZS0+Zm9ybWF0KCkgPT0gVmlkZW9GcmFtZUNocm9taXVt
OjpOYXRpdmVUZXh0dXJlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKaW5kZXggY2M0
Y2M4MjMyNzhlOTRhZDg0NjU4MTY5ZjNhMDE2YjI0NjgzYjk0OC4uMTgyZjdiNTgyN2M5MWNiZmZl
ZTVkM2JhZWFkMTA4NTFmNmZmYmE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApA
QCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVmlkZW9MYXll
ckltcGwoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiwgY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqKTsKKwogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVy
dGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+
IFJHQkFQcm9ncmFtOwogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9z
VGV4WVVWU3RyZXRjaCwgRnJhZ21lbnRTaGFkZXJZVVZWaWRlbz4gWVVWUHJvZ3JhbTsKICAgICB0
eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhPiBOYXRpdmVUZXh0dXJlUHJvZ3JhbTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122458</attachid>
            <date>2012-01-13 10:55:03 -0800</date>
            <delta_ts>2012-01-17 09:52:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76274-20120113135501.patch</filename>
            <type>text/plain</type>
            <size>38116</size>
            <attacher name="Tim Dresser">tdresser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODk4ZGRmZmQ0MDI5NmY1
MWYwYTU3MGIyNTZmZTA1ODc1OTUwM2MyOC4uMDU2N2FhOWZmYmI3YTQxMzQ5YzRhNzZjZmRmNmVh
OGNkMWZjZGJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTAxLTEzICBUaW0g
RHJlc3NlciAgPHRkcmVzc2VyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJl
ZmFjdG9yIGNhbnZhcywgcGx1Z2luLCBhbmQgdmlkZW8gZHJhd2luZyB0byBiZSBtb3JlIGRhdGEt
ZHJpdmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NjI3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgaW4g
cmVmYWN0b3JpbmcgY2FudmFzLCBwbHVnaW4sIGFuZCB2aWRlbyBkcmF3aW5nLgorICAgICAgICBU
aGUgQ0NDdXN0b21MYXllckRyYXdRdWFkIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIGNvcGllZCB0
byBDQ0NhbnZhc0RyYXdRdWFkLCBDQ1BsdWdpbkRyYXdRdWFkIGFuZCBDQ1ZpZGVvRHJhd1F1YWQu
CisgICAgICAgIEFsbCByZWZlcmVuY2VzIHRvIEN1c3RvbUxheWVyIGhhdmUgYmVlbiByZW1vdmVk
LgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0NhbnZhc1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VmlkZW9RdWFkKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1BsdWdpblF1YWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0N1c3Rv
bUxheWVyRHJhd1F1YWQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52YXNEcmF3UXVhZDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ2FudmFzRHJhd1F1YWQ6OkNDQ2FudmFzRHJh
d1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFz
RHJhd1F1YWQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmguCisgICAgICAgIChXZWJDb3JlOjpD
Q0NhbnZhc0RyYXdRdWFkOjpsYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52
YXNMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3
UXVhZDo6dG9DYW52YXNEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjp0
b1ZpZGVvRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6dG9QbHVnaW5E
cmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3
UXVhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5EcmF3UXVhZC5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpDQ1BsdWdp
bkRyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQbHVnaW5EcmF3UXVhZDo6
Q0NQbHVnaW5EcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQbHVnaW5EcmF3UXVhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuaC4KKyAgICAgICAg
KFdlYkNvcmU6OkNDUGx1Z2luRHJhd1F1YWQ6OmxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1BsdWdpbkxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDdXN0
b21MYXllckRyYXdRdWFkLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9EcmF3UXVhZDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9EcmF3UXVhZDo6Q0NWaWRlb0RyYXdR
dWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJh
d1F1YWQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5oLgorICAgICAgICAoV2ViQ29yZTo6Q0NW
aWRlb0RyYXdRdWFkOjpsYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5
ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oOgorCiAyMDEyLTAxLTEyICBKb2NlbHluIFR1cmNvdHRl
ICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgVGV4dHVyZU1hcHBlcjog
RG8gdGhlIG5vZGUgdHJhbnNmb3JtIGNvbXB1dGF0aW9uIHdoZW4gcGFpbnRpbmcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggMGU4OGEzNWQ4ZDQ3NjI4ZDY0NzQwNTg4ZjA1MThmMTdmZGMzNzQ5Ny4uZGQ3
ODI3ZGM3ZTVhMTM2MjhlY2RmMmFjZjhjZjgzOWNkM2JhMzFiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMzYwNSwxMCArMzYwNSwxMCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1
YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52
YXNMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuY3BwJywKLSAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2Vy
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1h
Z2VUcmFja2VyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGVidWdCb3JkZXJEcmF3UXVhZC5jcHAnLApAQCAtMzY0MSw2ICszNjQxLDggQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNj
YWxlQW5pbWF0aW9uLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5EcmF3UXVhZC5jcHAnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luRHJhd1F1YWQuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxh
eWVySW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Byb3h5LmNwcCcsCkBAIC0zNjc3LDYgKzM2NzksOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGltZVNvdXJjZS5oJywKKyAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuY3BwJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1w
bC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9MYXllckltcGwuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dFBsYXRmb3JtRGF0YUNvY29hLm1tJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCmluZGV4IDkzM2U3ODI1M2IxOGM1MzYzMWQxM2EzM2YwMzhlZWFmYjk2MDI1ZWEuLmVlYzE3
OWIxODZkMzFlMDM0ZGM3YTJmZTNkMDllMzZmZjUyZDJkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcApAQCAtNTIsMTYgKzUyLDE4IEBACiAjaW5jbHVkZSAiVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiVHJlZVN5bmNocm9uaXplci5oIgogI2lu
Y2x1ZGUgIldlYkdMTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgImNjL0NDQ3VzdG9tTGF5ZXJE
cmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDQ2FudmFzRHJhd1F1YWQuaCIKICNpbmNsdWRlICJj
Yy9DQ0RhbWFnZVRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQu
aCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVl
SG9zdENvbW1vbi5oIgorI2luY2x1ZGUgImNjL0NDUGx1Z2luRHJhd1F1YWQuaCIKICNpbmNsdWRl
ICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JE
cmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGlsZURyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2Mv
Q0NWaWRlb0RyYXdRdWFkLmgiCiAjaWYgVVNFKFNLSUEpCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNE
LmgiCiAjaW5jbHVkZSAiR3JDb250ZXh0LmgiCkBAIC00MjIsOCArNDI0LDE0IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkLCBjb25z
dCBGbG9hdFJlY3QmIHN1CiAgICAgY2FzZSBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQ6CiAgICAg
ICAgIGRyYXdUaWxlUXVhZChxdWFkLT50b1RpbGVEcmF3UXVhZCgpKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDQ0RyYXdRdWFkOjpDdXN0b21MYXllcjoKLSAgICAgICAgZHJhd0N1c3RvbUxh
eWVyUXVhZChxdWFkLT50b0N1c3RvbUxheWVyRHJhd1F1YWQoKSk7CisgICAgY2FzZSBDQ0RyYXdR
dWFkOjpDYW52YXNDb250ZW50OgorICAgICAgICBkcmF3Q2FudmFzUXVhZChxdWFkLT50b0NhbnZh
c0RyYXdRdWFkKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENDRHJhd1F1YWQ6OlZpZGVv
Q29udGVudDoKKyAgICAgICAgZHJhd1ZpZGVvUXVhZChxdWFkLT50b1ZpZGVvRHJhd1F1YWQoKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ0NEcmF3UXVhZDo6UGx1Z2luQ29udGVudDoKKyAg
ICAgICAgZHJhd1BsdWdpblF1YWQocXVhZC0+dG9QbHVnaW5EcmF3UXVhZCgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogfQpAQCAtNjU5LDcgKzY2NywxOSBAQCB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IENDVGlsZURyYXdRdWFkKiBxdWFkKQogICAgIGRy
YXdUZXh0dXJlZFF1YWQocXVhZC0+cXVhZFRyYW5zZm9ybSgpLCB0aWxlUmVjdC53aWR0aCgpLCB0
aWxlUmVjdC5oZWlnaHQoKSwgcXVhZC0+b3BhY2l0eSgpLCBsb2NhbFF1YWQsIHVuaWZvcm1zLm1h
dHJpeExvY2F0aW9uLCB1bmlmb3Jtcy5hbHBoYUxvY2F0aW9uLCB1bmlmb3Jtcy5wb2ludExvY2F0
aW9uKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdDdXN0b21MYXllclF1
YWQoY29uc3QgQ0NDdXN0b21MYXllckRyYXdRdWFkKiBxdWFkKQordm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdDYW52YXNRdWFkKGNvbnN0IENDQ2FudmFzRHJhd1F1YWQqIHF1YWQpCit7
CisgICAgQ0NMYXllckltcGwqIGxheWVyID0gcXVhZC0+bGF5ZXIoKTsKKyAgICBsYXllci0+ZHJh
dyh0aGlzKTsKK30KKwordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdWaWRlb1F1YWQo
Y29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBxdWFkKQoreworICAgIENDTGF5ZXJJbXBsKiBsYXllciA9
IHF1YWQtPmxheWVyKCk7CisgICAgbGF5ZXItPmRyYXcodGhpcyk7Cit9CisKK3ZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3UGx1Z2luUXVhZChjb25zdCBDQ1BsdWdpbkRyYXdRdWFkKiBx
dWFkKQogewogICAgIENDTGF5ZXJJbXBsKiBsYXllciA9IHF1YWQtPmxheWVyKCk7CiAgICAgbGF5
ZXItPmRyYXcodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDJi
YjAxNDZhZDUzMTRjYWQ4YzVmNzhkY2EwMWRhZDE1ZGVmZWJlMDAuLmM4OTZiMWRmMjZmM2VmZWFj
MTFiMzI3MWM1OTU3YTJmNGJmNThlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oCkBAIC0xNjcsNyArMTY3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdSZW5kZXJTdXJm
YWNlUXVhZChjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCopOwogICAgIHZvaWQgZHJhd1Nv
bGlkQ29sb3JRdWFkKGNvbnN0IENDU29saWRDb2xvckRyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3
VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQqKTsKLSAgICB2b2lkIGRyYXdDdXN0b21MYXll
clF1YWQoY29uc3QgQ0NDdXN0b21MYXllckRyYXdRdWFkKik7CisgICAgdm9pZCBkcmF3Q2FudmFz
UXVhZChjb25zdCBDQ0NhbnZhc0RyYXdRdWFkKik7CisgICAgdm9pZCBkcmF3VmlkZW9RdWFkKGNv
bnN0IENDVmlkZW9EcmF3UXVhZCopOworICAgIHZvaWQgZHJhd1BsdWdpblF1YWQoY29uc3QgQ0NQ
bHVnaW5EcmF3UXVhZCopOwogCiAgICAgTWFuYWdlZFRleHR1cmUqIGdldE9mZnNjcmVlbkxheWVy
VGV4dHVyZSgpOwogICAgIHZvaWQgY29weU9mZnNjcmVlblRleHR1cmVUb0Rpc3BsYXkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
Q2FudmFzRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTVjNzY4ZjI5OWIzYWY2
OGQyYTY5YzdlNzgxMzY2MjA1YWQ1MjcyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuY3BwCkBA
IC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJj
Yy9DQ0NhbnZhc0RyYXdRdWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0
cjxDQ0NhbnZhc0RyYXdRdWFkPiBDQ0NhbnZhc0RyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIEND
TGF5ZXJJbXBsKiBsYXllcikKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDQ2FudmFzRHJh
d1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbGF5ZXIpKTsKK30KKworQ0NDYW52YXNE
cmF3UXVhZDo6Q0NDYW52YXNEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwqIGxheWVyKQor
ICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OkNhbnZhc0NvbnRl
bnQsIHF1YWRSZWN0KQorICAgICwgbV9sYXllcihsYXllcikKK3sKKyAgICBBU1NFUlQobV9sYXll
cik7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzRHJhd1F1YWQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NWI0
YzhhMWMyZTAyOTgxMWE5YzI0ZWM0OGZhMGQ5MjM5NjY4ZTQ5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3
UXVhZC5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDQ2FudmFzRHJhd1F1YWRf
aAorI2RlZmluZSBDQ0NhbnZhc0RyYXdRdWFkX2gKKworI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENDTGF5ZXJJbXBsOworY2xhc3MgQ0NDYW52YXNEcmF3UXVhZCA6IHB1YmxpYyBDQ0Ry
YXdRdWFkIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0NhbnZhc0RyYXdRdWFkKTsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ0NhbnZhc0RyYXdRdWFkPiBjcmVhdGUoY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NMYXllckltcGwqKTsKKwor
ICAgIENDTGF5ZXJJbXBsKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXI7IH0KKworcHJp
dmF0ZToKKyAgICBDQ0NhbnZhc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29u
c3QgSW50UmVjdCYsIENDTGF5ZXJJbXBsKik7CisKKyAgICBDQ0xheWVySW1wbCogbV9sYXllcjsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5jcHAKaW5k
ZXggNmVjZGQ5MGYyNmE3NDE3MGI1ODE2YTg3MTZlODM4MzYyOTlkZGNkOC4uYWMxODM2NjMzYmM1
OGQ3NDM0ZWNlYjU2MDBiMmY3MDcwMWIxMGRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5
ZXJJbXBsLmNwcApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJjYy9D
Q0NhbnZhc0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC03Nyw2ICs3OCwxMSBAQCB2b2lkIENDQ2FudmFzTGF5
ZXJJbXBsOjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICAg
ICAgY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCk7CiB9CiAKK3ZvaWQg
Q0NDYW52YXNMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQoreworICAgIEludFJlY3QgcXVh
ZFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChDQ0NhbnZh
c0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgdGhpcykpOworfQog
CiB2b2lkIENDQ2FudmFzTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0m
IHRzLCBpbnQgaW5kZW50KSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmgK
aW5kZXggMjc1YmY3Y2E4YTJhMDVjZGRkMGI5MzhkYjU5OThjMDMxZTBiZGMyZi4uMzViODllNjc1
NTAxMzVhMDZkODUxOWVlNzMyZTQwNmYxYjRkMGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xh
eWVySW1wbC5oCkBAIC00MCw2ICs0MCw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+
Q0NDYW52YXNMYXllckltcGwoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1
YWRMaXN0JiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKTsKKwogICAgIHR5cGVkZWYgUHJvZ3Jh
bUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxw
aGE+IFByb2dyYW07CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhMYXllclJlbmRlcmVyQ2hyb21p
dW0qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTgwYjEwZWQyNDkwYzdhNmY4OWFjZjIzMTFjZDgwYWNl
ODNhNWJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJE
cmF3UXVhZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxDQ0N1c3RvbUxheWVyRHJhd1F1YWQ+
IENDQ3VzdG9tTGF5ZXJEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ0xheWVySW1wbCogbGF5
ZXIpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0N1c3RvbUxheWVyRHJhd1F1YWQoc2hh
cmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbGF5ZXIpKTsKLX0KLQotQ0NDdXN0b21MYXllckRyYXdR
dWFkOjpDQ0N1c3RvbUxheWVyRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIENDTGF5ZXJJbXBsKiBsYXllcikK
LSAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpDdXN0b21MYXll
ciwgcXVhZFJlY3QpCi0gICAgLCBtX2xheWVyKGxheWVyKQotewotICAgIEFTU0VSVChtX2xheWVy
KTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTliZDQ2MjMyNTNhNGM0NTUwOWFjMjQ1MGY5Y2EzMmE3
M2M3ZDljNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0N1c3RvbUxheWVy
RHJhd1F1YWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IENDQ3VzdG9tTGF5ZXJEcmF3UXVhZF9oCi0jZGVmaW5lIENDQ3VzdG9tTGF5ZXJEcmF3UXVhZF9o
Ci0KLSNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ0xheWVySW1wbDsKLQotLy8gRklY
TUU6IFRoaXMgY2xhc3MgaXMgYSB0ZW1wb3Jhcnkgd2F5IHRvIGFjY2VzcyBDQ0xheWVySW1wbDo6
ZHJhdy4gVGhpcyBjbGFzcwotLy8gc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBhIHNldCBvZiBkcmF3
IHF1YWRzIGZvciBlYWNoIGxheWVyIG1hdGVyaWFsIHR5cGUgYW5kCi0vLyB0aGVuIHJlbW92ZWQu
Ci1jbGFzcyBDQ0N1c3RvbUxheWVyRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NDdXN0b21MYXllckRyYXdRdWFkKTsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxDQ0N1c3RvbUxheWVyRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ0xheWVySW1wbCopOwotCi0gICAg
Q0NMYXllckltcGwqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsgfQotCi1wcml2YXRl
OgotICAgIENDQ3VzdG9tTGF5ZXJEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNv
bnN0IEludFJlY3QmLCBDQ0xheWVySW1wbCopOwotCi0gICAgQ0NMYXllckltcGwqIG1fbGF5ZXI7
Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAppbmRleCA4ZmNmNDQ5ZjA0
ZjJkNWY1NmJmZjU4OTgyY2E0NDEwMDE4ZGJlMjQyLi4xYmJmYmI2ZTQ0NTE0MmUyMjNlZTcwZDc4
YTI2NTkzYzE1NzAzMGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcApAQCAtMjcsMTIgKzI3LDE0
IEBACiAKICNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCiAKLSNpbmNsdWRlICJjYy9DQ0N1c3Rv
bUxheWVyRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ0NhbnZhc0RyYXdRdWFkLmgiCiAjaW5j
bHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllcklt
cGwuaCIKKyNpbmNsdWRlICJjYy9DQ1BsdWdpbkRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NS
ZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVh
ZC5oIgogI2luY2x1ZGUgImNjL0NDVGlsZURyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NWaWRl
b0RyYXdRdWFkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzEsMTAgKzczLDIyIEBA
IGNvbnN0IENDVGlsZURyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b1RpbGVEcmF3UXVhZCgpIGNvbnN0
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDVGlsZURyYXdRdWFkKj4odGhpcyk7CiB9
CiAKLWNvbnN0IENDQ3VzdG9tTGF5ZXJEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9DdXN0b21MYXll
ckRyYXdRdWFkKCkgY29uc3QKK2NvbnN0IENDQ2FudmFzRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRv
Q2FudmFzRHJhd1F1YWQoKSBjb25zdAogewotICAgIEFTU0VSVChtX21hdGVyaWFsID09IEN1c3Rv
bUxheWVyKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NDdXN0b21MYXllckRyYXdR
dWFkKj4odGhpcyk7CisgICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gQ2FudmFzQ29udGVudCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDQ2FudmFzRHJhd1F1YWQqPih0aGlzKTsKK30K
KworY29uc3QgQ0NWaWRlb0RyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b1ZpZGVvRHJhd1F1YWQoKSBj
b25zdAoreworICAgIEFTU0VSVChtX21hdGVyaWFsID09IFZpZGVvQ29udGVudCk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDVmlkZW9EcmF3UXVhZCo+KHRoaXMpOworfQorCitjb25z
dCBDQ1BsdWdpbkRyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b1BsdWdpbkRyYXdRdWFkKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBQbHVnaW5Db250ZW50KTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgQ0NQbHVnaW5EcmF3UXVhZCo+KHRoaXMpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Ry
YXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RyYXdRdWFkLmgKaW5kZXggYjU2OTEzYjNjZTUzYWMwZWQwZWViZTRkNzc5ODA0Y2MyNWQ0ZTZh
ZS4uYWNjN2MwMjg2NmNjODk1OTMxNTE5NmIzYjgzOGQwODg2YjUxYzZkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJh
d1F1YWQuaApAQCAtMzQsNyArMzQsOSBAQCBjbGFzcyBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ7CiBj
bGFzcyBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZDsKIGNsYXNzIENDU29saWRDb2xvckRyYXdRdWFk
OwogY2xhc3MgQ0NUaWxlRHJhd1F1YWQ7Ci1jbGFzcyBDQ0N1c3RvbUxheWVyRHJhd1F1YWQ7Citj
bGFzcyBDQ0NhbnZhc0RyYXdRdWFkOworY2xhc3MgQ0NWaWRlb0RyYXdRdWFkOworY2xhc3MgQ0NQ
bHVnaW5EcmF3UXVhZDsKIAogLy8gQ0NEcmF3UXVhZCBpcyBhIGJhZyBvZiBkYXRhIHVzZWQgZm9y
IGRyYXdpbmcgYSBxdWFkLiBCZWNhdXNlIGRpZmZlcmVudAogLy8gbWF0ZXJpYWxzIG5lZWQgZGlm
ZmVyZW50IGJpdHMgb2YgcGVyLXF1YWQgZGF0YSB0byByZW5kZXIsIGNsYXNzZXMgdGhhdCBkZXJp
dmUKQEAgLTYwLDkgKzYyLDkgQEAgcHVibGljOgogICAgICAgICBSZW5kZXJTdXJmYWNlLAogICAg
ICAgICBTb2xpZENvbG9yLAogICAgICAgICBUaWxlZENvbnRlbnQsCi0KLSAgICAgICAgLy8gRklY
TUU6IHJlbW92ZSB0aGlzIGFuZCBhZGQgcHJvcGVyIG1hdGVyaWFsIHR5cGVzIGZvciBhbGwgbGF5
ZXIgdHlwZXMKLSAgICAgICAgQ3VzdG9tTGF5ZXIsCisgICAgICAgIENhbnZhc0NvbnRlbnQsCisg
ICAgICAgIFZpZGVvQ29udGVudCwKKyAgICAgICAgUGx1Z2luQ29udGVudCwKICAgICB9OwogCiAg
ICAgTWF0ZXJpYWwgbWF0ZXJpYWwoKSBjb25zdCB7IHJldHVybiBtX21hdGVyaWFsOyB9CkBAIC03
MSw3ICs3Myw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCog
dG9SZW5kZXJTdXJmYWNlRHJhd1F1YWQoKSBjb25zdDsKICAgICBjb25zdCBDQ1NvbGlkQ29sb3JE
cmF3UXVhZCogdG9Tb2xpZENvbG9yRHJhd1F1YWQoKSBjb25zdDsKICAgICBjb25zdCBDQ1RpbGVE
cmF3UXVhZCogdG9UaWxlRHJhd1F1YWQoKSBjb25zdDsKLSAgICBjb25zdCBDQ0N1c3RvbUxheWVy
RHJhd1F1YWQqIHRvQ3VzdG9tTGF5ZXJEcmF3UXVhZCgpIGNvbnN0OworICAgIGNvbnN0IENDQ2Fu
dmFzRHJhd1F1YWQqIHRvQ2FudmFzRHJhd1F1YWQoKSBjb25zdDsKKyAgICBjb25zdCBDQ1ZpZGVv
RHJhd1F1YWQqIHRvVmlkZW9EcmF3UXVhZCgpIGNvbnN0OworICAgIGNvbnN0IENDUGx1Z2luRHJh
d1F1YWQqIHRvUGx1Z2luRHJhd1F1YWQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIENDRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBNYXRlcmlhbCwgY29uc3QgSW50UmVjdCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IDY4MzdmMGE1Yzg2YzU2OGU4OTNiYjViMTA0
ZGVmMTY2MjBiMzQ2YzEuLmRlMzhhMGFhZjRhMjdkODUyYTJmNDg3MWY0YmEwZTk3NjBiNTdiNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJjYy9DQ0N1c3RvbUxheWVyRHJh
d1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVyU29ydGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC0xMjksOCArMTI4LDYgQEAgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gQ0NMYXllcklt
cGw6OmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpIGNvbnN0CiAKIHZvaWQgQ0NMYXllckltcGw6OmFw
cGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlKQogewotICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgYm91
bmRzKCkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChDQ0N1c3RvbUxheWVyRHJhd1F1YWQ6OmNyZWF0
ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0aGlzKSk7CiB9CiAKIHZvaWQgQ0NMYXllcklt
cGw6OmFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luRHJhd1F1YWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVn
aW5EcmF3UXVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQyYWU0Yjg2MjhmN2ZhMTE0MmY5NTYxOWYxYmFl
OGNhZGRiZmZhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luRHJhd1F1YWQuY3BwCkBAIC0wLDAgKzEsNDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ1BsdWdpbkRyYXdR
dWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxDQ1BsdWdpbkRyYXdR
dWFkPiBDQ1BsdWdpbkRyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNo
YXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIENDTGF5ZXJJbXBsKiBsYXll
cikKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDUGx1Z2luRHJhd1F1YWQoc2hhcmVkUXVh
ZFN0YXRlLCBxdWFkUmVjdCwgbGF5ZXIpKTsKK30KKworQ0NQbHVnaW5EcmF3UXVhZDo6Q0NQbHVn
aW5EcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25z
dCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwqIGxheWVyKQorICAgIDogQ0NEcmF3UXVh
ZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlBsdWdpbkNvbnRlbnQsIHF1YWRSZWN0KQor
ICAgICwgbV9sYXllcihsYXllcikKK3sKKyAgICBBU1NFUlQobV9sYXllcik7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UGx1Z2luRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUGx1Z2luRHJhd1F1YWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTUyYWJlZjQwOTMxNjc1YzNh
MDdiNmVjY2QyZjQzNmFjZDFkZTMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5EcmF3UXVhZC5oCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDUGx1Z2luRHJhd1F1YWRfaAorI2RlZmluZSBDQ1Bs
dWdpbkRyYXdRdWFkX2gKKworI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDTGF5ZXJJ
bXBsOworCitjbGFzcyBDQ1BsdWdpbkRyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENDUGx1Z2luRHJhd1F1YWQpOworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDUGx1Z2luRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ0xheWVySW1wbCopOworCisgICAgQ0NMYXllcklt
cGwqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsgfQorCitwcml2YXRlOgorICAgIEND
UGx1Z2luRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0Jiwg
Q0NMYXllckltcGwqKTsKKworICAgIENDTGF5ZXJJbXBsKiBtX2xheWVyOworfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNwcAppbmRleCBiYzEwNWJiNGI3
NWY4MmMwNDI3ZDRkZTlkOGQ2NzcyZDY4NDdkNzYyLi5iMjBhMmY1MTgyYzkzZTAxMjA5ZGZmM2Yz
NWZhYjYzODE0YWI0YjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1
bS5oIgorI2luY2x1ZGUgImNjL0NDUGx1Z2luRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1By
b3h5LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTE3Niw2ICsxNzcs
MTEgQEAgdm9pZCBDQ1BsdWdpbkxheWVySW1wbDo6ZHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0q
IGxheWVyUmVuZGVyZXIpCiAgICAgfQogfQogCit2b2lkIENDUGx1Z2luTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNo
YXJlZFF1YWRTdGF0ZSkKK3sKKyAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50KCksIGJvdW5k
cygpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoQ0NQbHVnaW5EcmF3UXVhZDo6Y3JlYXRlKHNoYXJl
ZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRoaXMpKTsKK30KIAogdm9pZCBDQ1BsdWdpbkxheWVySW1w
bDo6ZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCmluZGV4IGUwOTgyNmEzNDc1NDNkNmUz
ZjdlMjVlOWNlYjgyYWQyMGQ5ZDMzZDQuLjliNGQ1YTRkMzhmMTMxY2E1Nzk2ZjlkY2ViNTJlYjli
Nzg5MmE4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaApAQCAtNDEsNiArNDEs
OCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDUGx1Z2luTGF5ZXJJbXBsKCk7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKik7CisKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBv
c1RleFN0cmV0Y2gsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhPiBQcm9ncmFtOwogICAgIHR5
cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4U3RyZXRjaCwgRnJhZ21lbnRT
aGFkZXJSR0JBVGV4RmxpcEFscGhhPiBQcm9ncmFtRmxpcDsKICAgICB0eXBlZGVmIFByb2dyYW1C
aW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4
UmVjdEFscGhhPiBUZXhSZWN0UHJvZ3JhbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCmluZGV4
IDRhOGI4NTEzMGUxZWQ0ZWVhYzM2NjM1ZWZkN2MwMjk1ODUwZGI4NDMuLjA3OWFhN2ZmNmIzMWIx
YjQ2ZjJjMjlmYTcxZjVmNzQ4OGI0YmI5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApA
QCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVHJhbnNm
b3JtYXRpb25NYXRyaXguaCIKLSNpbmNsdWRlICJjYy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuaCIK
ICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzcy5o
IgogI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NW
aWRlb0RyYXdRdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGUzOGU5MGY4NjNmMWYzODcwODQ4Y2YxMDky
Mzg5OWRlOTc3YzE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0RyYXdRdWFkLmNwcApAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiY2MvQ0NWaWRlb0RyYXdR
dWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxDQ1ZpZGVvRHJhd1F1
YWQ+IENDVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ0xheWVySW1wbCogbGF5ZXIp
Cit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1ZpZGVvRHJhd1F1YWQoc2hhcmVkUXVhZFN0
YXRlLCBxdWFkUmVjdCwgbGF5ZXIpKTsKK30KKworQ0NWaWRlb0RyYXdRdWFkOjpDQ1ZpZGVvRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIENDTGF5ZXJJbXBsKiBsYXllcikKKyAgICA6IENDRHJhd1F1YWQoc2hh
cmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpWaWRlb0NvbnRlbnQsIHF1YWRSZWN0KQorICAgICwg
bV9sYXllcihsYXllcikKK3sKKyAgICBBU1NFUlQobV9sYXllcik7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9E
cmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NWaWRlb0RyYXdRdWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE4YmM1NTQxY2QyYmNmN2ZjMTJmYmY5M2Jk
YjM0Mzg5NjRmOTg0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5oCkBAIC0wLDAgKzEsNTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIENDVmlkZW9EcmF3UXVhZF9oCisjZGVmaW5lIENDVmlkZW9EcmF3UXVh
ZF9oCisKKyNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDQ0xheWVySW1wbDsKK2NsYXNz
IENDVmlkZW9EcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShDQ1ZpZGVvRHJhd1F1YWQpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRy
PENDVmlkZW9EcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3Qg
SW50UmVjdCYsIENDTGF5ZXJJbXBsKik7CisKKyAgICBDQ0xheWVySW1wbCogbGF5ZXIoKSBjb25z
dCB7IHJldHVybiBtX2xheWVyOyB9CisKK3ByaXZhdGU6CisgICAgQ0NWaWRlb0RyYXdRdWFkKGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIENDTGF5ZXJJbXBsKik7CisK
KyAgICBDQ0xheWVySW1wbCogbV9sYXllcjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVmlkZW9MYXllckltcGwuY3BwCmluZGV4IDk5ZTdlMTE3NDc1NDNjMjQ5MjNkNWQ2NGYzYzY3
MTlkMWRmMWQyNTAuLmJhMTI5MGViMGJkYTNjNzk3Yjg4OTZkODNhZGZjZjhjY2UzNzZjN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VmlkZW9MYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCkBAIC0zMiw5ICszMiwxMCBAQAogI2lu
Y2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJQcm9n
cmFtQmluZGluZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUHJv
Z3JhbUJpbmRpbmcuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSAiY2MvQ0NW
aWRlb0RyYXdRdWFkLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTE1MCw2ICsxNTEsMTIgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICBtX3Byb3Zp
ZGVyLT5wdXRDdXJyZW50RnJhbWUoZnJhbWUpOwogfQogCit2b2lkIENDVmlkZW9MYXllckltcGw6
OmFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlKQoreworICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwg
Ym91bmRzKCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChDQ1ZpZGVvRHJhd1F1YWQ6OmNyZWF0ZShz
aGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0aGlzKSk7Cit9CisKIGJvb2wgQ0NWaWRlb0xheWVy
SW1wbDo6Y29weUZyYW1lVG9UZXh0dXJlcyhjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qIGZyYW1l
LCBHQzNEZW51bSBmb3JtYXQsIExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikK
IHsKICAgICBpZiAoZnJhbWUtPmZvcm1hdCgpID09IFZpZGVvRnJhbWVDaHJvbWl1bTo6TmF0aXZl
VGV4dHVyZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCmluZGV4IGNjNGNjODIzMjc4
ZTk0YWQ4NDY1ODE2OWYzYTAxNmIyNDY4M2I5NDguLjE4MmY3YjU4MjdjOTFjYmZmZWU1ZDNiYWVh
ZDEwODUxZjZmZmJhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKQEAgLTQ2LDYg
KzQ2LDggQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1ZpZGVvTGF5ZXJJbXBsKCk7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYsIGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKik7CisKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRl
clBvc1RleFRyYW5zZm9ybSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4RmxpcEFscGhhPiBSR0JBUHJv
Z3JhbTsKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFlVVlN0
cmV0Y2gsIEZyYWdtZW50U2hhZGVyWVVWVmlkZW8+IFlVVlByb2dyYW07CiAgICAgdHlwZWRlZiBQ
cm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhUcmFuc2Zvcm0sIEZyYWdtZW50U2hhZGVy
UkdCQVRleEZsaXBBbHBoYT4gTmF0aXZlVGV4dHVyZVByb2dyYW07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122780</attachid>
            <date>2012-01-17 09:52:11 -0800</date>
            <delta_ts>2012-01-17 11:55:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76274-20120117125210.patch</filename>
            <type>text/plain</type>
            <size>44486</size>
            <attacher name="Tim Dresser">tdresser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE5MzM3YWU5MDJkMDJj
MjQ1NTM0Y2Y1ODRhOWY0MDcwN2JkMmRmMS4uZDFkMmQ4NTY3NzJhYjdlYWNjZTQ4YjdkZDJmMDkw
MTJkODQwNWVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTAxLTE3ICBUaW0g
RHJlc3NlciAgPHRkcmVzc2VyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJl
ZmFjdG9yIGNhbnZhcywgcGx1Z2luLCBhbmQgdmlkZW8gZHJhd2luZyB0byBiZSBtb3JlIGRhdGEt
ZHJpdmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NjI3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgaXMgdGhlIGZpcnN0IHN0ZXAgaW4gcmVmYWN0b3JpbmcgY2FudmFzLCBwbHVnaW4sIGFuZCB2
aWRlbyBkcmF3aW5nLgorICAgICAgICBUaGUgQ0NDdXN0b21MYXllckRyYXdRdWFkIGltcGxlbWVu
dGF0aW9uIGhhcyBiZWVuIGNvcGllZCB0byBDQ0NhbnZhc0RyYXdRdWFkLCBDQ1BsdWdpbkRyYXdR
dWFkIGFuZCBDQ1ZpZGVvRHJhd1F1YWQuCisgICAgICAgIEFsbCByZWZlcmVuY2VzIHRvIEN1c3Rv
bUxheWVyIGhhdmUgYmVlbiByZW1vdmVkLgorCisgICAgICAgIEFzIHRoaXMgaXMgYSByZWZhY3Rv
ciwgbm8gbmV3IHRlc3RzIHdlcmUgYWRkZWQuIENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmJsZW5k
aW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMgd2FzIG1vZGlmaWVkIHRvCisgICAgICAgIG5v
IGxvbmdlciB0ZXN0IGN1bGxpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Q2FudmFzUXVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdWaWRlb1F1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UGx1Z2luUXVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNE
cmF3UXVhZC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5jcHAuCisgICAgICAgIChXZWJDb3Jl
OjpDQ0NhbnZhc0RyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52YXNE
cmF3UXVhZDo6Q0NDYW52YXNEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuaC4K
KyAgICAgICAgKFdlYkNvcmU6OkNDQ2FudmFzRHJhd1F1YWQ6OmxheWVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0NhbnZhc0xheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjp0b0NhbnZhc0RyYXdRdWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDRHJhd1F1YWQ6OnRvVmlkZW9EcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0RyYXdRdWFkOjp0b1BsdWdpbkRyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllcklt
cGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1BsdWdpbkRyYXdRdWFkLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmNwcC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNDUGx1Z2luRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1BsdWdpbkRyYXdRdWFkOjpDQ1BsdWdpbkRyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkRyYXdRdWFkLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJE
cmF3UXVhZC5oLgorICAgICAgICAoV2ViQ29yZTo6Q0NQbHVnaW5EcmF3UXVhZDo6bGF5ZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUGx1Z2luTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllcklt
cGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxs
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9E
cmF3UXVhZC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuY3BwLgorICAgICAgICAoV2ViQ29y
ZTo6Q0NWaWRlb0RyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0Ry
YXdRdWFkOjpDQ1ZpZGVvRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmguCisg
ICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvRHJhd1F1YWQ6OmxheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmg6CisKIDIwMTItMDEt
MTcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtD
aHJvbWl1bV0gV2ViIEluc3BlY3RvcjogcmVtb3ZlICJEb2N1bWVudCBET00gdHJlZSIgY2xhc3Mg
YW5kICJEZXRhY2hlZCBET00gdHJlZSIgZnJvbSB0aGUgU3VtbWFyeSB2aWV3LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCA5MTdmZTEyZmFhZThkZjRhNWI5YTg2OWNhNTU0YTQ1MGMwYWIw
Y2FjLi5mNTg0NjQ3NjFhMDllNjZhOGI4Yjk0ZWVjMjZhYzYzMzBjZWUxOTcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAxLTE3ICBUaW0gRHJlc3Nl
ciAgPHRkcmVzc2VyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJlZmFjdG9y
IGNhbnZhcywgcGx1Z2luLCBhbmQgdmlkZW8gZHJhd2luZyB0byBiZSBtb3JlIGRhdGEtZHJpdmVu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI3NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGxvbmdl
ciB0ZXN0IGN1bGxpbmcgaW4gQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuYmxlbmRpbmdPZmZXaGVu
RHJhd2luZ0xheWVycy4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmFwcGVuZFF1YWRz
KToKKyAgICAgICAgKFdlYktpdDo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OnNldEV4cGVjdGF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OnF1YWRzQXBwZW5kZWQp
OgorICAgICAgICAoV2ViS2l0OjpCbGVuZFN0YXRlQ2hlY2tMYXllcjo6QmxlbmRTdGF0ZUNoZWNr
TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorCiAyMDEyLTAxLTE3ICBZdXJ5IFNl
bWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVw
ZGF0ZSBDaHJvbWl1bSBkZXBlbmRlbmN5IDExNzYxNjoxMTc4ODIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCBkOGE1MjNmYTU3YTQ0NzE0M2E2YzllZWEyNTE1NDhhMjRhZTUxOGIyLi41YjY3NmNkMDQyMzJm
OTljNDVjZGFkZDczODgwYjc3YjhkZjUxNTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjA3LDEw
ICszNjA3LDEwIEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9MYXllckNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFkLmNwcCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1w
bC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2Fu
dmFzTGF5ZXJJbXBsLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0Jv
cmRlckRyYXdRdWFkLmNwcCcsCkBAIC0zNjQzLDYgKzM2NDMsOCBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRp
b24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Bh
Z2VTY2FsZUFuaW1hdGlvbi5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1BsdWdpbkRyYXdRdWFkLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5EcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3Bw
JywKQEAgLTM2NzksNiArMzY4MSw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaW1lci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGltZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaW1lU291cmNlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1w
bC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1E
YXRhQ29jb2EubW0nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXgg
OTMzZTc4MjUzYjE4YzUzNjMxZDEzYTMzZjAzOGVlYWZiOTYwMjVlYS4uZWVjMTc5YjE4NmQzMWUw
MzRkYzdhMmZlM2QwOWUzNmZmNTJkMmQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCkBAIC01MiwxNiArNTIsMTggQEAKICNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVB
bGxvY2F0b3IuaCIKICNpbmNsdWRlICJUcmVlU3luY2hyb25pemVyLmgiCiAjaW5jbHVkZSAiV2Vi
R0xMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmgi
CisjaW5jbHVkZSAiY2MvQ0NDYW52YXNEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDRGFtYWdl
VHJhY2tlci5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9u
LmgiCisjaW5jbHVkZSAiY2MvQ0NQbHVnaW5EcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDUHJv
eHkuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRl
clN1cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgi
CiAjaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ1ZpZGVvRHJh
d1F1YWQuaCIKICNpZiBVU0UoU0tJQSkKICNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKICNpbmNs
dWRlICJHckNvbnRleHQuaCIKQEAgLTQyMiw4ICs0MjQsMTQgQEAgdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdRdWFkKGNvbnN0IENDRHJhd1F1YWQqIHF1YWQsIGNvbnN0IEZsb2F0UmVj
dCYgc3UKICAgICBjYXNlIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudDoKICAgICAgICAgZHJhd1Rp
bGVRdWFkKHF1YWQtPnRvVGlsZURyYXdRdWFkKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IENDRHJhd1F1YWQ6OkN1c3RvbUxheWVyOgotICAgICAgICBkcmF3Q3VzdG9tTGF5ZXJRdWFkKHF1
YWQtPnRvQ3VzdG9tTGF5ZXJEcmF3UXVhZCgpKTsKKyAgICBjYXNlIENDRHJhd1F1YWQ6OkNhbnZh
c0NvbnRlbnQ6CisgICAgICAgIGRyYXdDYW52YXNRdWFkKHF1YWQtPnRvQ2FudmFzRHJhd1F1YWQo
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ0NEcmF3UXVhZDo6VmlkZW9Db250ZW50Ogor
ICAgICAgICBkcmF3VmlkZW9RdWFkKHF1YWQtPnRvVmlkZW9EcmF3UXVhZCgpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDQ0RyYXdRdWFkOjpQbHVnaW5Db250ZW50OgorICAgICAgICBkcmF3
UGx1Z2luUXVhZChxdWFkLT50b1BsdWdpbkRyYXdRdWFkKCkpOwogICAgICAgICBicmVhazsKICAg
ICB9CiB9CkBAIC02NTksNyArNjY3LDE5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQpCiAgICAgZHJhd1RleHR1cmVk
UXVhZChxdWFkLT5xdWFkVHJhbnNmb3JtKCksIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0Lmhl
aWdodCgpLCBxdWFkLT5vcGFjaXR5KCksIGxvY2FsUXVhZCwgdW5pZm9ybXMubWF0cml4TG9jYXRp
b24sIHVuaWZvcm1zLmFscGhhTG9jYXRpb24sIHVuaWZvcm1zLnBvaW50TG9jYXRpb24pOwogfQog
Ci12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0N1c3RvbUxheWVyUXVhZChjb25zdCBD
Q0N1c3RvbUxheWVyRHJhd1F1YWQqIHF1YWQpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd0NhbnZhc1F1YWQoY29uc3QgQ0NDYW52YXNEcmF3UXVhZCogcXVhZCkKK3sKKyAgICBDQ0xh
eWVySW1wbCogbGF5ZXIgPSBxdWFkLT5sYXllcigpOworICAgIGxheWVyLT5kcmF3KHRoaXMpOwor
fQorCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1ZpZGVvUXVhZChjb25zdCBDQ1Zp
ZGVvRHJhd1F1YWQqIHF1YWQpCit7CisgICAgQ0NMYXllckltcGwqIGxheWVyID0gcXVhZC0+bGF5
ZXIoKTsKKyAgICBsYXllci0+ZHJhdyh0aGlzKTsKK30KKwordm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdQbHVnaW5RdWFkKGNvbnN0IENDUGx1Z2luRHJhd1F1YWQqIHF1YWQpCiB7CiAg
ICAgQ0NMYXllckltcGwqIGxheWVyID0gcXVhZC0+bGF5ZXIoKTsKICAgICBsYXllci0+ZHJhdyh0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggMmJiMDE0NmFkNTMx
NGNhZDhjNWY3OGRjYTAxZGFkMTVkZWZlYmUwMC4uYzg5NmIxZGYyNmYzZWZlYWMxMWIzMjcxYzU5
NTdhMmY0YmY1OGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTE2
Nyw3ICsxNjcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZHJhd1JlbmRlclN1cmZhY2VRdWFkKGNv
bnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3U29saWRDb2xvclF1
YWQoY29uc3QgQ0NTb2xpZENvbG9yRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdUaWxlUXVhZChj
b25zdCBDQ1RpbGVEcmF3UXVhZCopOwotICAgIHZvaWQgZHJhd0N1c3RvbUxheWVyUXVhZChjb25z
dCBDQ0N1c3RvbUxheWVyRHJhd1F1YWQqKTsKKyAgICB2b2lkIGRyYXdDYW52YXNRdWFkKGNvbnN0
IENDQ2FudmFzRHJhd1F1YWQqKTsKKyAgICB2b2lkIGRyYXdWaWRlb1F1YWQoY29uc3QgQ0NWaWRl
b0RyYXdRdWFkKik7CisgICAgdm9pZCBkcmF3UGx1Z2luUXVhZChjb25zdCBDQ1BsdWdpbkRyYXdR
dWFkKik7CiAKICAgICBNYW5hZ2VkVGV4dHVyZSogZ2V0T2Zmc2NyZWVuTGF5ZXJUZXh0dXJlKCk7
CiAgICAgdm9pZCBjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3
UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0NhbnZhc0RyYXdRdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNWM3NjhmMjk5YjNhZjY4ZDJhNjljN2U3
ODEzNjYyMDVhZDUyNzI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHAKQEAgLTAsMCArMSw0
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDQ2FudmFz
RHJhd1F1YWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPENDQ2FudmFz
RHJhd1F1YWQ+IENDQ2FudmFzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwq
IGxheWVyKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NDYW52YXNEcmF3UXVhZChzaGFy
ZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBsYXllcikpOworfQorCitDQ0NhbnZhc0RyYXdRdWFkOjpD
Q0NhbnZhc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUs
IGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ0xheWVySW1wbCogbGF5ZXIpCisgICAgOiBDQ0Ry
YXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6Q2FudmFzQ29udGVudCwgcXVhZFJl
Y3QpCisgICAgLCBtX2xheWVyKGxheWVyKQoreworICAgIEFTU0VSVChtX2xheWVyKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NDYW52YXNEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YjRjOGExYzJlMDI5
ODExYTljMjRlYzQ4ZmEwZDkyMzk2NjhlNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFkLmgKQEAg
LTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NDYW52YXNEcmF3UXVhZF9oCisjZGVmaW5l
IENDQ2FudmFzRHJhd1F1YWRfaAorCisjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0NM
YXllckltcGw7CitjbGFzcyBDQ0NhbnZhc0RyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDQ2FudmFzRHJhd1F1YWQpOworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPENDQ2FudmFzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ0xheWVySW1wbCopOworCisgICAgQ0NMYXll
ckltcGwqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsgfQorCitwcml2YXRlOgorICAg
IENDQ2FudmFzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0
JiwgQ0NMYXllckltcGwqKTsKKworICAgIENDTGF5ZXJJbXBsKiBtX2xheWVyOworfTsKKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmNwcAppbmRleCA2ZWNkZDkw
ZjI2YTc0MTcwYjU4MTZhODcxNmU4MzgzNjI5OWRkY2Q4Li5hYzE4MzY2MzNiYzU4ZDc0MzRlY2Vi
NTYwMGIyZjcwNzAxYjEwZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgImNjL0NDQ2FudmFzRHJh
d1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKQEAgLTc3LDYgKzc4LDExIEBAIHZvaWQgQ0NDYW52YXNMYXllckltcGw6OmRy
YXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogICAgICAgICBjb250ZXh0
LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsKIH0KIAordm9pZCBDQ0NhbnZhc0xh
eWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCit7CisgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQ
b2ludCgpLCBib3VuZHMoKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKENDQ2FudmFzRHJhd1F1YWQ6
OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0aGlzKSk7Cit9CiAKIHZvaWQgQ0ND
YW52YXNMYXllckltcGw6OmR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBp
bmRlbnQpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaAppbmRleCAyNzVi
ZjdjYThhMmEwNWNkZGQwYjkzOGRiNTk5OGMwMzFlMGJkYzJmLi4zNWI4OWU2NzU1MDEzNWEwNmQ4
NTE5ZWU3MzJlNDA2ZjFiNGQwYzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmgK
QEAgLTQwLDYgKzQwLDggQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ0NhbnZhc0xh
eWVySW1wbCgpOwogCisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZExpc3QmLCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopOworCiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxW
ZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUHJvZ3Jh
bTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0ND
dXN0b21MYXllckRyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg1ODBiMTBlZDI0OTBjN2E2Zjg5YWNmMjMxMWNkODBhY2U4M2E1YmIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpbmNsdWRlICJjYy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1QYXNzT3duUHRyPENDQ3VzdG9tTGF5ZXJEcmF3UXVhZD4gQ0NDdXN0b21M
YXllckRyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIENDTGF5ZXJJbXBsKiBsYXllcikKLXsKLSAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IENDQ3VzdG9tTGF5ZXJEcmF3UXVhZChzaGFyZWRRdWFkU3Rh
dGUsIHF1YWRSZWN0LCBsYXllcikpOwotfQotCi1DQ0N1c3RvbUxheWVyRHJhd1F1YWQ6OkNDQ3Vz
dG9tTGF5ZXJEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwqIGxheWVyKQotICAgIDogQ0NE
cmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OkN1c3RvbUxheWVyLCBxdWFkUmVj
dCkKLSAgICAsIG1fbGF5ZXIobGF5ZXIpCi17Ci0gICAgQVNTRVJUKG1fbGF5ZXIpOwotfQotCi19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhOWJkNDYyMzI1M2E0YzQ1NTA5YWMyNDUwZjljYTMyYTczYzdkOWM3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ0NDdXN0b21M
YXllckRyYXdRdWFkX2gKLSNkZWZpbmUgQ0NDdXN0b21MYXllckRyYXdRdWFkX2gKLQotI2luY2x1
ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENDTGF5ZXJJbXBsOwotCi0vLyBGSVhNRTogVGhpcyBj
bGFzcyBpcyBhIHRlbXBvcmFyeSB3YXkgdG8gYWNjZXNzIENDTGF5ZXJJbXBsOjpkcmF3LiBUaGlz
IGNsYXNzCi0vLyBzaG91bGQgYmUgY29udmVydGVkIHRvIGEgc2V0IG9mIGRyYXcgcXVhZHMgZm9y
IGVhY2ggbGF5ZXIgbWF0ZXJpYWwgdHlwZSBhbmQKLS8vIHRoZW4gcmVtb3ZlZC4KLWNsYXNzIEND
Q3VzdG9tTGF5ZXJEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDQ0N1c3RvbUxheWVyRHJhd1F1YWQpOwotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDQ3VzdG9tTGF5ZXJEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIENDTGF5ZXJJbXBsKik7Ci0KLSAgICBDQ0xheWVySW1w
bCogbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ0ND
dXN0b21MYXllckRyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVj
dCYsIENDTGF5ZXJJbXBsKik7Ci0KLSAgICBDQ0xheWVySW1wbCogbV9sYXllcjsKLX07Ci0KLX0K
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCmluZGV4IDhmY2Y0NDlmMDRmMmQ1ZjU2YmZm
NTg5ODJjYTQ0MTAwMThkYmUyNDIuLjFiYmZiYjZlNDQ1MTQyZTIyM2VlNzBkNzhhMjY1OTNjMTU3
MDMwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCkBAIC0yNywxMiArMjcsMTQgQEAKIAogI2lu
Y2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKIAotI2luY2x1ZGUgImNjL0NDQ3VzdG9tTGF5ZXJEcmF3
UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDQ2FudmFzRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9D
Q0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgorI2lu
Y2x1ZGUgImNjL0NDUGx1Z2luRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZh
Y2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCiAjaW5j
bHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ1ZpZGVvRHJhd1F1YWQu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03MSwxMCArNzMsMjIgQEAgY29uc3QgQ0NU
aWxlRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvVGlsZURyYXdRdWFkKCkgY29uc3QKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NUaWxlRHJhd1F1YWQqPih0aGlzKTsKIH0KIAotY29uc3Qg
Q0NDdXN0b21MYXllckRyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b0N1c3RvbUxheWVyRHJhd1F1YWQo
KSBjb25zdAorY29uc3QgQ0NDYW52YXNEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9DYW52YXNEcmF3
UXVhZCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gQ3VzdG9tTGF5ZXIpOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ0N1c3RvbUxheWVyRHJhd1F1YWQqPih0aGlz
KTsKKyAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBDYW52YXNDb250ZW50KTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgQ0NDYW52YXNEcmF3UXVhZCo+KHRoaXMpOworfQorCitjb25zdCBD
Q1ZpZGVvRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvVmlkZW9EcmF3UXVhZCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gVmlkZW9Db250ZW50KTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgQ0NWaWRlb0RyYXdRdWFkKj4odGhpcyk7Cit9CisKK2NvbnN0IENDUGx1Z2lu
RHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvUGx1Z2luRHJhd1F1YWQoKSBjb25zdAoreworICAgIEFT
U0VSVChtX21hdGVyaWFsID09IFBsdWdpbkNvbnRlbnQpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBDQ1BsdWdpbkRyYXdRdWFkKj4odGhpcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQu
aAppbmRleCBiNTY5MTNiM2NlNTNhYzBlZDBlZWJlNGQ3Nzk4MDRjYzI1ZDRlNmFlLi5hY2M3YzAy
ODY2Y2M4OTU5MzE1MTk2YjNiODM4ZDA4ODZiNTFjNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCkBA
IC0zNCw3ICszNCw5IEBAIGNsYXNzIENDRGVidWdCb3JkZXJEcmF3UXVhZDsKIGNsYXNzIENDUmVu
ZGVyU3VyZmFjZURyYXdRdWFkOwogY2xhc3MgQ0NTb2xpZENvbG9yRHJhd1F1YWQ7CiBjbGFzcyBD
Q1RpbGVEcmF3UXVhZDsKLWNsYXNzIENDQ3VzdG9tTGF5ZXJEcmF3UXVhZDsKK2NsYXNzIENDQ2Fu
dmFzRHJhd1F1YWQ7CitjbGFzcyBDQ1ZpZGVvRHJhd1F1YWQ7CitjbGFzcyBDQ1BsdWdpbkRyYXdR
dWFkOwogCiAvLyBDQ0RyYXdRdWFkIGlzIGEgYmFnIG9mIGRhdGEgdXNlZCBmb3IgZHJhd2luZyBh
IHF1YWQuIEJlY2F1c2UgZGlmZmVyZW50CiAvLyBtYXRlcmlhbHMgbmVlZCBkaWZmZXJlbnQgYml0
cyBvZiBwZXItcXVhZCBkYXRhIHRvIHJlbmRlciwgY2xhc3NlcyB0aGF0IGRlcml2ZQpAQCAtNjAs
OSArNjIsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlbmRlclN1cmZhY2UsCiAgICAgICAgIFNvbGlk
Q29sb3IsCiAgICAgICAgIFRpbGVkQ29udGVudCwKLQotICAgICAgICAvLyBGSVhNRTogcmVtb3Zl
IHRoaXMgYW5kIGFkZCBwcm9wZXIgbWF0ZXJpYWwgdHlwZXMgZm9yIGFsbCBsYXllciB0eXBlcwot
ICAgICAgICBDdXN0b21MYXllciwKKyAgICAgICAgQ2FudmFzQ29udGVudCwKKyAgICAgICAgVmlk
ZW9Db250ZW50LAorICAgICAgICBQbHVnaW5Db250ZW50LAogICAgIH07CiAKICAgICBNYXRlcmlh
bCBtYXRlcmlhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0ZXJpYWw7IH0KQEAgLTcxLDcgKzczLDkg
QEAgcHVibGljOgogICAgIGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiB0b1JlbmRlclN1
cmZhY2VEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0IENDU29saWRDb2xvckRyYXdRdWFkKiB0
b1NvbGlkQ29sb3JEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0IENDVGlsZURyYXdRdWFkKiB0
b1RpbGVEcmF3UXVhZCgpIGNvbnN0OwotICAgIGNvbnN0IENDQ3VzdG9tTGF5ZXJEcmF3UXVhZCog
dG9DdXN0b21MYXllckRyYXdRdWFkKCkgY29uc3Q7CisgICAgY29uc3QgQ0NDYW52YXNEcmF3UXVh
ZCogdG9DYW52YXNEcmF3UXVhZCgpIGNvbnN0OworICAgIGNvbnN0IENDVmlkZW9EcmF3UXVhZCog
dG9WaWRlb0RyYXdRdWFkKCkgY29uc3Q7CisgICAgY29uc3QgQ0NQbHVnaW5EcmF3UXVhZCogdG9Q
bHVnaW5EcmF3UXVhZCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgQ0NEcmF3UXVhZChjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSosIE1hdGVyaWFsLCBjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHAKaW5kZXggNjgzN2YwYTVjODZjNTY4ZTg5M2JiNWIxMDRkZWYxNjYyMGIz
NDZjMS4uZGUzOGEwYWFmNGEyN2Q4NTJhMmY0ODcxZjRiYTBlOTc2MGI1N2I0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgImNjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5oIgog
I2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJTb3J0ZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTEyOSw4ICsx
MjgsNiBAQCBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBDQ0xheWVySW1wbDo6Y3JlYXRl
U2hhcmVkUXVhZFN0YXRlKCkgY29uc3QKIAogdm9pZCBDQ0xheWVySW1wbDo6YXBwZW5kUXVhZHMo
Q0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUpCiB7Ci0gICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBib3VuZHMoKSk7Ci0g
ICAgcXVhZExpc3QuYXBwZW5kKENDQ3VzdG9tTGF5ZXJEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1
YWRTdGF0ZSwgcXVhZFJlY3QsIHRoaXMpKTsKIH0KIAogdm9pZCBDQ0xheWVySW1wbDo6YXBwZW5k
RGVidWdCb3JkZXJRdWFkKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5EcmF3UXVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkRyYXdRdWFk
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZDJhZTRiODYyOGY3ZmExMTQyZjk1NjE5ZjFiYWU4Y2FkZGJmZmE3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQbHVnaW5EcmF3UXVhZC5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDUGx1Z2luRHJhd1F1YWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPENDUGx1Z2luRHJhd1F1YWQ+IENDUGx1
Z2luRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwqIGxheWVyKQoreworICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQ0NQbHVnaW5EcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1
YWRSZWN0LCBsYXllcikpOworfQorCitDQ1BsdWdpbkRyYXdRdWFkOjpDQ1BsdWdpbkRyYXdRdWFk
KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3Qm
IHF1YWRSZWN0LCBDQ0xheWVySW1wbCogbGF5ZXIpCisgICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1
YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6UGx1Z2luQ29udGVudCwgcXVhZFJlY3QpCisgICAgLCBtX2xh
eWVyKGxheWVyKQoreworICAgIEFTU0VSVChtX2xheWVyKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5EcmF3
UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
bHVnaW5EcmF3UXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNTJhYmVmNDA5MzE2NzVjM2EwN2I2ZWNjZDJm
NDM2YWNkMWRlMzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkRyYXdRdWFkLmgKQEAgLTAsMCArMSw1MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgQ0NQbHVnaW5EcmF3UXVhZF9oCisjZGVmaW5lIENDUGx1Z2luRHJhd1F1
YWRfaAorCisjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0NMYXllckltcGw7CisKK2Ns
YXNzIENDUGx1Z2luRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ0NQbHVnaW5EcmF3UXVhZCk7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8Q0NQbHVnaW5EcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwg
Y29uc3QgSW50UmVjdCYsIENDTGF5ZXJJbXBsKik7CisKKyAgICBDQ0xheWVySW1wbCogbGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX2xheWVyOyB9CisKK3ByaXZhdGU6CisgICAgQ0NQbHVnaW5EcmF3
UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ0xheWVySW1w
bCopOworCisgICAgQ0NMYXllckltcGwqIG1fbGF5ZXI7Cit9OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
bHVnaW5MYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwCmluZGV4IGJjMTA1YmI0Yjc1ZjgyYzA0Mjdk
NGRlOWQ4ZDY3NzJkNjg0N2Q3NjIuLmIyMGEyZjUxODJjOTNlMDEyMDlkZmYzZjM1ZmFiNjM4MTRh
YjRiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCisjaW5j
bHVkZSAiY2MvQ0NQbHVnaW5EcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTc2LDYgKzE3NywxMSBAQCB2b2lk
IENDUGx1Z2luTGF5ZXJJbXBsOjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5k
ZXJlcikKICAgICB9CiB9CiAKK3ZvaWQgQ0NQbHVnaW5MYXllckltcGw6OmFwcGVuZFF1YWRzKEND
UXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlKQoreworICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKCkpOworICAg
IHF1YWRMaXN0LmFwcGVuZChDQ1BsdWdpbkRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRl
LCBxdWFkUmVjdCwgdGhpcykpOworfQogCiB2b2lkIENDUGx1Z2luTGF5ZXJJbXBsOjpkdW1wTGF5
ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdAogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVn
aW5MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgKaW5kZXggZTA5ODI2YTM0NzU0M2Q2ZTNmN2UyNWU5Y2Vi
ODJhZDIwZDlkMzNkNC4uOWI0ZDVhNGQzOGYxMzFjYTU3OTZmOWRjZWI1MmViOWI3ODkyYTgxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQbHVnaW5MYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCkBAIC00MSw2ICs0MSw4IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NQbHVnaW5MYXllckltcGwoKTsKIAorICAgIHZpcnR1
YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
KTsKKwogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4U3RyZXRj
aCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGE+IFByb2dyYW07CiAgICAgdHlwZWRlZiBQcm9n
cmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhTdHJldGNoLCBGcmFnbWVudFNoYWRlclJHQkFU
ZXhGbGlwQWxwaGE+IFByb2dyYW1GbGlwOwogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVy
dGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVudFNoYWRlclJHQkFUZXhSZWN0QWxwaGE+
IFRleFJlY3RQcm9ncmFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKaW5kZXggNGE4Yjg1MTMw
ZTFlZDRlZWFjMzY2MzVlZmQ3YzAyOTU4NTBkYjg0My4uMDc5YWE3ZmY2YjMxYjFiNDZmMmMyOWZh
NzFmNWY3NDg4YjRiYjkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC0zMSw3ICsz
MSw2IEBACiAKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oIgotI2luY2x1ZGUgImNjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1
YWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNkZTM4ZTkwZjg2M2YxZjM4NzA4NDhjZjEwOTIzODk5ZGU5Nzdj
MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ1ZpZGVvRHJhd1F1YWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPENDVmlkZW9EcmF3UXVhZD4gQ0NWaWRl
b0RyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIENDTGF5ZXJJbXBsKiBsYXllcikKK3sKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDVmlkZW9EcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRS
ZWN0LCBsYXllcikpOworfQorCitDQ1ZpZGVvRHJhd1F1YWQ6OkNDVmlkZW9EcmF3UXVhZChjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFk
UmVjdCwgQ0NMYXllckltcGwqIGxheWVyKQorICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3Rh
dGUsIENDRHJhd1F1YWQ6OlZpZGVvQ29udGVudCwgcXVhZFJlY3QpCisgICAgLCBtX2xheWVyKGxh
eWVyKQoreworICAgIEFTU0VSVChtX2xheWVyKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0RyYXdRdWFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJh
d1F1YWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iMThiYzU1NDFjZDJiY2Y3ZmMxMmZiZjkzYmRiMzQzODk2NGY5
ODRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0RyYXdRdWFkLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQ0NWaWRlb0RyYXdRdWFkX2gKKyNkZWZpbmUgQ0NWaWRlb0RyYXdRdWFkX2gKKworI2lu
Y2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDTGF5ZXJJbXBsOworY2xhc3MgQ0NWaWRlb0Ry
YXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEND
VmlkZW9EcmF3UXVhZCk7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NWaWRlb0Ry
YXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0Jiwg
Q0NMYXllckltcGwqKTsKKworICAgIENDTGF5ZXJJbXBsKiBsYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5ZXI7IH0KKworcHJpdmF0ZToKKyAgICBDQ1ZpZGVvRHJhd1F1YWQoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NMYXllckltcGwqKTsKKworICAgIENDTGF5
ZXJJbXBsKiBtX2xheWVyOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xh
eWVySW1wbC5jcHAKaW5kZXggOTllN2UxMTc0NzU0M2MyNDkyM2Q1ZDY0ZjNjNjcxOWQxZGYxZDI1
MC4uYmExMjkwZWIwYmRhM2M3OTdiODg5NmQ4M2FkZmNmOGNjZTM3NmM3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKQEAgLTMyLDkgKzMyLDEwIEBACiAjaW5jbHVkZSAiRXh0
ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlByb2dyYW1CaW5kaW5n
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQcm9ncmFtQmluZGlu
Zy5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1ZpZGVvRHJhd1F1
YWQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMTUwLDYgKzE1MSwxMiBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmRyYXcoTGF5
ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogICAgIG1fcHJvdmlkZXItPnB1dEN1
cnJlbnRGcmFtZShmcmFtZSk7CiB9CiAKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVh
ZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUpCit7CisgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBib3VuZHMoKSk7
CisgICAgcXVhZExpc3QuYXBwZW5kKENDVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZSwgcXVhZFJlY3QsIHRoaXMpKTsKK30KKwogYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjpjb3B5
RnJhbWVUb1RleHR1cmVzKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUsIEdDM0RlbnVt
IGZvcm1hdCwgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogewogICAgIGlm
IChmcmFtZS0+Zm9ybWF0KCkgPT0gVmlkZW9GcmFtZUNocm9taXVtOjpOYXRpdmVUZXh0dXJlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ZpZGVvTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKaW5kZXggY2M0Y2M4MjMyNzhlOTRhZDg0NjU4
MTY5ZjNhMDE2YjI0NjgzYjk0OC4uMTgyZjdiNTgyN2M5MWNiZmZlZTVkM2JhZWFkMTA4NTFmNmZm
YmE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApAQCAtNDYsNiArNDYsOCBAQCBw
dWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVmlkZW9MYXllckltcGwoKTsKIAorICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiwgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqKTsKKwogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4VHJh
bnNmb3JtLCBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+IFJHQkFQcm9ncmFtOwogICAg
IHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCwgRnJh
Z21lbnRTaGFkZXJZVVZWaWRlbz4gWVVWUHJvZ3JhbTsKICAgICB0eXBlZGVmIFByb2dyYW1CaW5k
aW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4Rmxp
cEFscGhhPiBOYXRpdmVUZXh0dXJlUHJvZ3JhbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggOWI4N2Qw
MGZhNmJmMDZhZTg3YzVmOTQxMmExNzE1ZGIzZjliZDBkZS4uMWNmOWU4YjI1MmQxYmVhN2NiZGU2
Y2E4ZDAzZDVlYjg4OTA1N2NkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTE4MywxMSArMTgzLDE1
IEBAIGNsYXNzIEJsZW5kU3RhdGVDaGVja0xheWVyIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gY3JlYXRl
KGludCBpZCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEJsZW5kU3RhdGVDaGVja0xheWVyKGlkKSk7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogcmVuZGVy
ZXIpCisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQogICAgIHsKLSAgICAgICAg
bV9kcmF3biA9IHRydWU7Ci0gICAgICAgIEJsZW5kU3RhdGVUcmFja2VyQ29udGV4dCogY29udGV4
dCA9IHN0YXRpY19jYXN0PEJsZW5kU3RhdGVUcmFja2VyQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKHJlbmRlcmVyLT5jb250ZXh0
KCkpKTsKLSAgICAgICAgRVhQRUNUX0VRKG1fYmxlbmQsIGNvbnRleHQtPmJsZW5kKCkpOworICAg
ICAgICBtX3F1YWRzQXBwZW5kZWQgPSB0cnVlOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcXVhZExpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIENDRHJhd1F1YWQqIGRy
YXdRdWFkID0gcXVhZExpc3RbaV0uZ2V0KCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEobV9ibGVu
ZCwgZHJhd1F1YWQtPm5lZWRzQmxlbmRpbmcoKSk7CisgICAgICAgIH0KKwogICAgICAgICBFWFBF
Q1RfRVEobV9oYXNSZW5kZXJTdXJmYWNlLCAhIXJlbmRlclN1cmZhY2UoKSk7CiAgICAgfQogCkBA
IC0xOTUsMTcgKzE5OSwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2JsZW5kID0gYmxl
bmQ7CiAgICAgICAgIG1faGFzUmVuZGVyU3VyZmFjZSA9IGhhc1JlbmRlclN1cmZhY2U7Ci0gICAg
ICAgIG1fZHJhd24gPSBmYWxzZTsKKyAgICAgICAgbV9xdWFkc0FwcGVuZGVkID0gZmFsc2U7CiAg
ICAgfQogCi0gICAgYm9vbCBkcmF3bigpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd247IH0KKyAgICBi
b29sIHF1YWRzQXBwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3F1YWRzQXBwZW5kZWQ7IH0KIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBCbGVuZFN0YXRlQ2hlY2tMYXllcihpbnQgaWQpCiAgICAg
ICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAgICAgICwgbV9ibGVuZChmYWxzZSkKICAgICAgICAg
LCBtX2hhc1JlbmRlclN1cmZhY2UoZmFsc2UpCi0gICAgICAgICwgbV9kcmF3bihmYWxzZSkKKyAg
ICAgICAgLCBtX3F1YWRzQXBwZW5kZWQoZmFsc2UpCiAgICAgewogICAgICAgICBzZXRBbmNob3JQ
b2ludChGbG9hdFBvaW50KDAsIDApKTsKICAgICAgICAgc2V0Qm91bmRzKEludFNpemUoMTAsIDEw
KSk7CkBAIC0yMTQsNyArMjE4LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9ibGVuZDsKICAg
ICBib29sIG1faGFzUmVuZGVyU3VyZmFjZTsKLSAgICBib29sIG1fZHJhd247CisgICAgYm9vbCBt
X3F1YWRzQXBwZW5kZWQ7CiB9OwogCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzU3ODMKQEAgLTIzOCwyMCArMjQyLDIwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBsYXll
cjEtPnNldE9wYXF1ZSh0cnVlKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBm
YWxzZSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwotICAgIEVYUEVDVF9UUlVFKGxh
eWVyMS0+ZHJhd24oKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkp
OwogCiAgICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBjb250ZW50LCBkcmF3biB3aXRoIGJs
ZW5kaW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKGZhbHNlKTsKICAgICBsYXllcjEtPnNldEV4
cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7Ci0g
ICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5kcmF3bigpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjEt
PnF1YWRzQXBwZW5kZWQoKSk7CiAKICAgICAvLyBMYXllciB3aXRoIHRyYW5zbHVjZW50IG9wYWNp
dHksIGRyYXduIHdpdGggYmxlbmRpbmcuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CiAg
ICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbih0
cnVlLCBmYWxzZSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwotICAgIEVYUEVDVF9U
UlVFKGxheWVyMS0+ZHJhd24oKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVu
ZGVkKCkpOwogCiAgICAgUmVmUHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBsYXllcjIgPSBCbGVu
ZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDIpOwogICAgIGxheWVyMS0+YWRkQ2hpbGQobGF5ZXIy
KTsKQEAgLTI2NCw4ICsyNjgsOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJs
ZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgbGF5ZXIyLT5zZXRPcGFjaXR5
KDEpOwogICAgIGxheWVyMi0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKICAgICBtX2hv
c3RJbXBsLT5kcmF3TGF5ZXJzKCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGxheWVyMS0+ZHJhd24oKSk7
Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5kcmF3bigpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXll
cjEtPnF1YWRzQXBwZW5kZWQoKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVu
ZGVkKCkpOwogCiAgICAgLy8gUGFyZW50IGxheWVyIHdpdGggdHJhbnNsdWNlbnQgY29udGVudCwg
ZHJhd24gd2l0aCBibGVuZGluZy4KICAgICAvLyBDaGlsZCBsYXllciB3aXRoIG9wYXF1ZSBjb250
ZW50LCBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgpAQCAtMjczLDggKzI3Nyw4IEBAIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVy
cykKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBsYXllcjIt
PnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVy
cygpOwotICAgIEVYUEVDVF9GQUxTRShsYXllcjEtPmRyYXduKCkpOwotICAgIEVYUEVDVF9UUlVF
KGxheWVyMi0+ZHJhd24oKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVk
KCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKIAogICAgIC8v
IFBhcmVudCBsYXllciB3aXRoIHRyYW5zbHVjZW50IG9wYWNpdHkgYW5kIG9wYXF1ZSBjb250ZW50
LiBTaW5jZSBpdCBoYXMgYQogICAgIC8vIGRyYXdpbmcgY2hpbGQsIGl0J3MgZHJhd24gdG8gYSBy
ZW5kZXIgc3VyZmFjZSB3aGljaCBjYXJyaWVzIHRoZSBvcGFjaXR5LApAQCAtMjg2LDggKzI5MCw4
IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2lu
Z09wYXF1ZUxheWVycykKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCB0cnVlKTsK
ICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAgICAgbV9ob3N0SW1w
bC0+ZHJhd0xheWVycygpOwotICAgIEVYUEVDVF9GQUxTRShsYXllcjEtPmRyYXduKCkpOwotICAg
IEVYUEVDVF9UUlVFKGxheWVyMi0+ZHJhd24oKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5x
dWFkc0FwcGVuZGVkKCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgp
KTsKIAogICAgIC8vIERyYXcgYWdhaW4sIGJ1dCB3aXRoIGNoaWxkIG5vbi1vcGFxdWUsIHRvIG1h
a2Ugc3VyZQogICAgIC8vIGxheWVyMSBub3QgY3VsbGVkLgpAQCAtMjk4LDggKzMwMiw4IEBAIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1
ZUxheWVycykKICAgICBsYXllcjItPnNldE9wYWNpdHkoMC41KTsKICAgICBsYXllcjItPnNldEV4
cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7Ci0g
ICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5kcmF3bigpKTsKLSAgICBFWFBFQ1RfVFJVRShsYXllcjIt
PmRyYXduKCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQoKSk7CiAKICAgICAvLyBBIHNlY29u
ZCB3YXkgb2YgbWFraW5nIHRoZSBjaGlsZCBub24tb3BhcXVlLgogICAgIGxheWVyMS0+c2V0T3Bh
cXVlKHRydWUpOwpAQCAtMzA5LDggKzMxMyw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBsYXllcjItPnNl
dE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7CiAg
ICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwotICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+ZHJh
d24oKSk7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5kcmF3bigpKTsKKyAgICBFWFBFQ1RfVFJV
RShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFk
c0FwcGVuZGVkKCkpOwogfQogCiBjbGFzcyBSZXNoYXBlVHJhY2tlckNvbnRleHQ6IHB1YmxpYyBG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0Qgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122794</attachid>
            <date>2012-01-17 11:55:46 -0800</date>
            <delta_ts>2012-01-18 13:03:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76274-20120117145545.patch</filename>
            <type>text/plain</type>
            <size>44723</size>
            <attacher name="Tim Dresser">tdresser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE5MzM3YWU5MDJkMDJj
MjQ1NTM0Y2Y1ODRhOWY0MDcwN2JkMmRmMS4uZDFkMmQ4NTY3NzJhYjdlYWNjZTQ4YjdkZDJmMDkw
MTJkODQwNWVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTAxLTE3ICBUaW0g
RHJlc3NlciAgPHRkcmVzc2VyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJl
ZmFjdG9yIGNhbnZhcywgcGx1Z2luLCBhbmQgdmlkZW8gZHJhd2luZyB0byBiZSBtb3JlIGRhdGEt
ZHJpdmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NjI3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgaXMgdGhlIGZpcnN0IHN0ZXAgaW4gcmVmYWN0b3JpbmcgY2FudmFzLCBwbHVnaW4sIGFuZCB2
aWRlbyBkcmF3aW5nLgorICAgICAgICBUaGUgQ0NDdXN0b21MYXllckRyYXdRdWFkIGltcGxlbWVu
dGF0aW9uIGhhcyBiZWVuIGNvcGllZCB0byBDQ0NhbnZhc0RyYXdRdWFkLCBDQ1BsdWdpbkRyYXdR
dWFkIGFuZCBDQ1ZpZGVvRHJhd1F1YWQuCisgICAgICAgIEFsbCByZWZlcmVuY2VzIHRvIEN1c3Rv
bUxheWVyIGhhdmUgYmVlbiByZW1vdmVkLgorCisgICAgICAgIEFzIHRoaXMgaXMgYSByZWZhY3Rv
ciwgbm8gbmV3IHRlc3RzIHdlcmUgYWRkZWQuIENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmJsZW5k
aW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMgd2FzIG1vZGlmaWVkIHRvCisgICAgICAgIG5v
IGxvbmdlciB0ZXN0IGN1bGxpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1F1YWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Q2FudmFzUXVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdWaWRlb1F1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UGx1Z2luUXVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNE
cmF3UXVhZC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5jcHAuCisgICAgICAgIChXZWJDb3Jl
OjpDQ0NhbnZhc0RyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NDYW52YXNE
cmF3UXVhZDo6Q0NDYW52YXNEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuaC4K
KyAgICAgICAgKFdlYkNvcmU6OkNDQ2FudmFzRHJhd1F1YWQ6OmxheWVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0NhbnZhc0xheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjp0b0NhbnZhc0RyYXdRdWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDRHJhd1F1YWQ6OnRvVmlkZW9EcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0RyYXdRdWFkOjp0b1BsdWdpbkRyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllcklt
cGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1BsdWdpbkRyYXdRdWFkLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmNwcC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNDUGx1Z2luRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1BsdWdpbkRyYXdRdWFkOjpDQ1BsdWdpbkRyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkRyYXdRdWFkLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJE
cmF3UXVhZC5oLgorICAgICAgICAoV2ViQ29yZTo6Q0NQbHVnaW5EcmF3UXVhZDo6bGF5ZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUGx1Z2luTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllcklt
cGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxs
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9E
cmF3UXVhZC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuY3BwLgorICAgICAgICAoV2ViQ29y
ZTo6Q0NWaWRlb0RyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0Ry
YXdRdWFkOjpDQ1ZpZGVvRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmguCisg
ICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvRHJhd1F1YWQ6OmxheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmg6CisKIDIwMTItMDEt
MTcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtD
aHJvbWl1bV0gV2ViIEluc3BlY3RvcjogcmVtb3ZlICJEb2N1bWVudCBET00gdHJlZSIgY2xhc3Mg
YW5kICJEZXRhY2hlZCBET00gdHJlZSIgZnJvbSB0aGUgU3VtbWFyeSB2aWV3LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCA5MTdmZTEyZmFhZThkZjRhNWI5YTg2OWNhNTU0YTQ1MGMwYWIw
Y2FjLi5mNTg0NjQ3NjFhMDllNjZhOGI4Yjk0ZWVjMjZhYzYzMzBjZWUxOTcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAxLTE3ICBUaW0gRHJlc3Nl
ciAgPHRkcmVzc2VyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJlZmFjdG9y
IGNhbnZhcywgcGx1Z2luLCBhbmQgdmlkZW8gZHJhd2luZyB0byBiZSBtb3JlIGRhdGEtZHJpdmVu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI3NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGxvbmdl
ciB0ZXN0IGN1bGxpbmcgaW4gQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuYmxlbmRpbmdPZmZXaGVu
RHJhd2luZ0xheWVycy4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmFwcGVuZFF1YWRz
KToKKyAgICAgICAgKFdlYktpdDo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OnNldEV4cGVjdGF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OnF1YWRzQXBwZW5kZWQp
OgorICAgICAgICAoV2ViS2l0OjpCbGVuZFN0YXRlQ2hlY2tMYXllcjo6QmxlbmRTdGF0ZUNoZWNr
TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorCiAyMDEyLTAxLTE3ICBZdXJ5IFNl
bWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVw
ZGF0ZSBDaHJvbWl1bSBkZXBlbmRlbmN5IDExNzYxNjoxMTc4ODIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCBkOGE1MjNmYTU3YTQ0NzE0M2E2YzllZWEyNTE1NDhhMjRhZTUxOGIyLi41YjY3NmNkMDQyMzJm
OTljNDVjZGFkZDczODgwYjc3YjhkZjUxNTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNjA3LDEw
ICszNjA3LDEwIEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9MYXllckNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFkLmNwcCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1w
bC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2Fu
dmFzTGF5ZXJJbXBsLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z0Jv
cmRlckRyYXdRdWFkLmNwcCcsCkBAIC0zNjQzLDYgKzM2NDMsOCBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRp
b24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Bh
Z2VTY2FsZUFuaW1hdGlvbi5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1BsdWdpbkRyYXdRdWFkLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5EcmF3UXVhZC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3Bw
JywKQEAgLTM2NzksNiArMzY4MSw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaW1lci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGltZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaW1lU291cmNlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1w
bC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1E
YXRhQ29jb2EubW0nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXgg
OTMzZTc4MjUzYjE4YzUzNjMxZDEzYTMzZjAzOGVlYWZiOTYwMjVlYS4uZWVjMTc5YjE4NmQzMWUw
MzRkYzdhMmZlM2QwOWUzNmZmNTJkMmQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCkBAIC01MiwxNiArNTIsMTggQEAKICNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVB
bGxvY2F0b3IuaCIKICNpbmNsdWRlICJUcmVlU3luY2hyb25pemVyLmgiCiAjaW5jbHVkZSAiV2Vi
R0xMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmgi
CisjaW5jbHVkZSAiY2MvQ0NDYW52YXNEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDRGFtYWdl
VHJhY2tlci5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9u
LmgiCisjaW5jbHVkZSAiY2MvQ0NQbHVnaW5EcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDUHJv
eHkuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRl
clN1cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgi
CiAjaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ1ZpZGVvRHJh
d1F1YWQuaCIKICNpZiBVU0UoU0tJQSkKICNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKICNpbmNs
dWRlICJHckNvbnRleHQuaCIKQEAgLTQyMiw4ICs0MjQsMTQgQEAgdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdRdWFkKGNvbnN0IENDRHJhd1F1YWQqIHF1YWQsIGNvbnN0IEZsb2F0UmVj
dCYgc3UKICAgICBjYXNlIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudDoKICAgICAgICAgZHJhd1Rp
bGVRdWFkKHF1YWQtPnRvVGlsZURyYXdRdWFkKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IENDRHJhd1F1YWQ6OkN1c3RvbUxheWVyOgotICAgICAgICBkcmF3Q3VzdG9tTGF5ZXJRdWFkKHF1
YWQtPnRvQ3VzdG9tTGF5ZXJEcmF3UXVhZCgpKTsKKyAgICBjYXNlIENDRHJhd1F1YWQ6OkNhbnZh
c0NvbnRlbnQ6CisgICAgICAgIGRyYXdDYW52YXNRdWFkKHF1YWQtPnRvQ2FudmFzRHJhd1F1YWQo
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ0NEcmF3UXVhZDo6VmlkZW9Db250ZW50Ogor
ICAgICAgICBkcmF3VmlkZW9RdWFkKHF1YWQtPnRvVmlkZW9EcmF3UXVhZCgpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDQ0RyYXdRdWFkOjpQbHVnaW5Db250ZW50OgorICAgICAgICBkcmF3
UGx1Z2luUXVhZChxdWFkLT50b1BsdWdpbkRyYXdRdWFkKCkpOwogICAgICAgICBicmVhazsKICAg
ICB9CiB9CkBAIC02NTksNyArNjY3LDE5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQpCiAgICAgZHJhd1RleHR1cmVk
UXVhZChxdWFkLT5xdWFkVHJhbnNmb3JtKCksIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0Lmhl
aWdodCgpLCBxdWFkLT5vcGFjaXR5KCksIGxvY2FsUXVhZCwgdW5pZm9ybXMubWF0cml4TG9jYXRp
b24sIHVuaWZvcm1zLmFscGhhTG9jYXRpb24sIHVuaWZvcm1zLnBvaW50TG9jYXRpb24pOwogfQog
Ci12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0N1c3RvbUxheWVyUXVhZChjb25zdCBD
Q0N1c3RvbUxheWVyRHJhd1F1YWQqIHF1YWQpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd0NhbnZhc1F1YWQoY29uc3QgQ0NDYW52YXNEcmF3UXVhZCogcXVhZCkKK3sKKyAgICBDQ0xh
eWVySW1wbCogbGF5ZXIgPSBxdWFkLT5sYXllcigpOworICAgIGxheWVyLT5kcmF3KHRoaXMpOwor
fQorCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1ZpZGVvUXVhZChjb25zdCBDQ1Zp
ZGVvRHJhd1F1YWQqIHF1YWQpCit7CisgICAgQ0NMYXllckltcGwqIGxheWVyID0gcXVhZC0+bGF5
ZXIoKTsKKyAgICBsYXllci0+ZHJhdyh0aGlzKTsKK30KKwordm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdQbHVnaW5RdWFkKGNvbnN0IENDUGx1Z2luRHJhd1F1YWQqIHF1YWQpCiB7CiAg
ICAgQ0NMYXllckltcGwqIGxheWVyID0gcXVhZC0+bGF5ZXIoKTsKICAgICBsYXllci0+ZHJhdyh0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggMmJiMDE0NmFkNTMx
NGNhZDhjNWY3OGRjYTAxZGFkMTVkZWZlYmUwMC4uYzg5NmIxZGYyNmYzZWZlYWMxMWIzMjcxYzU5
NTdhMmY0YmY1OGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTE2
Nyw3ICsxNjcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZHJhd1JlbmRlclN1cmZhY2VRdWFkKGNv
bnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3U29saWRDb2xvclF1
YWQoY29uc3QgQ0NTb2xpZENvbG9yRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdUaWxlUXVhZChj
b25zdCBDQ1RpbGVEcmF3UXVhZCopOwotICAgIHZvaWQgZHJhd0N1c3RvbUxheWVyUXVhZChjb25z
dCBDQ0N1c3RvbUxheWVyRHJhd1F1YWQqKTsKKyAgICB2b2lkIGRyYXdDYW52YXNRdWFkKGNvbnN0
IENDQ2FudmFzRHJhd1F1YWQqKTsKKyAgICB2b2lkIGRyYXdWaWRlb1F1YWQoY29uc3QgQ0NWaWRl
b0RyYXdRdWFkKik7CisgICAgdm9pZCBkcmF3UGx1Z2luUXVhZChjb25zdCBDQ1BsdWdpbkRyYXdR
dWFkKik7CiAKICAgICBNYW5hZ2VkVGV4dHVyZSogZ2V0T2Zmc2NyZWVuTGF5ZXJUZXh0dXJlKCk7
CiAgICAgdm9pZCBjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3
UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0NhbnZhc0RyYXdRdWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNWM3NjhmMjk5YjNhZjY4ZDJhNjljN2U3
ODEzNjYyMDVhZDUyNzI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5jcHAKQEAgLTAsMCArMSw0
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDQ2FudmFz
RHJhd1F1YWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPENDQ2FudmFz
RHJhd1F1YWQ+IENDQ2FudmFzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwq
IGxheWVyKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NDYW52YXNEcmF3UXVhZChzaGFy
ZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBsYXllcikpOworfQorCitDQ0NhbnZhc0RyYXdRdWFkOjpD
Q0NhbnZhc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUs
IGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ0xheWVySW1wbCogbGF5ZXIpCisgICAgOiBDQ0Ry
YXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6Q2FudmFzQ29udGVudCwgcXVhZFJl
Y3QpCisgICAgLCBtX2xheWVyKGxheWVyKQoreworICAgIEFTU0VSVChtX2xheWVyKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NDYW52YXNEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NDYW52YXNEcmF3UXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YjRjOGExYzJlMDI5
ODExYTljMjRlYzQ4ZmEwZDkyMzk2NjhlNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0RyYXdRdWFkLmgKQEAg
LTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NDYW52YXNEcmF3UXVhZF9oCisjZGVmaW5l
IENDQ2FudmFzRHJhd1F1YWRfaAorCisjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0NM
YXllckltcGw7CitjbGFzcyBDQ0NhbnZhc0RyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDQ2FudmFzRHJhd1F1YWQpOworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPENDQ2FudmFzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ0xheWVySW1wbCopOworCisgICAgQ0NMYXll
ckltcGwqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsgfQorCitwcml2YXRlOgorICAg
IENDQ2FudmFzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0
JiwgQ0NMYXllckltcGwqKTsKKworICAgIENDTGF5ZXJJbXBsKiBtX2xheWVyOworfTsKKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmNwcAppbmRleCA2ZWNkZDkw
ZjI2YTc0MTcwYjU4MTZhODcxNmU4MzgzNjI5OWRkY2Q4Li5hYzE4MzY2MzNiYzU4ZDc0MzRlY2Vi
NTYwMGIyZjcwNzAxYjEwZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgImNjL0NDQ2FudmFzRHJh
d1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKQEAgLTc3LDYgKzc4LDExIEBAIHZvaWQgQ0NDYW52YXNMYXllckltcGw6OmRy
YXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogICAgICAgICBjb250ZXh0
LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EKTsKIH0KIAordm9pZCBDQ0NhbnZhc0xh
eWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCit7CisgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQ
b2ludCgpLCBib3VuZHMoKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKENDQ2FudmFzRHJhd1F1YWQ6
OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0aGlzKSk7Cit9CiAKIHZvaWQgQ0ND
YW52YXNMYXllckltcGw6OmR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBp
bmRlbnQpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDYW52YXNMYXllckltcGwuaAppbmRleCAyNzVi
ZjdjYThhMmEwNWNkZGQwYjkzOGRiNTk5OGMwMzFlMGJkYzJmLi4zNWI4OWU2NzU1MDEzNWEwNmQ4
NTE5ZWU3MzJlNDA2ZjFiNGQwYzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NhbnZhc0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2FudmFzTGF5ZXJJbXBsLmgK
QEAgLTQwLDYgKzQwLDggQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ0NhbnZhc0xh
eWVySW1wbCgpOwogCisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZExpc3QmLCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopOworCiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxW
ZXJ0ZXhTaGFkZXJQb3NUZXgsIEZyYWdtZW50U2hhZGVyUkdCQVRleEZsaXBBbHBoYT4gUHJvZ3Jh
bTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0ND
dXN0b21MYXllckRyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg1ODBiMTBlZDI0OTBjN2E2Zjg5YWNmMjMxMWNkODBhY2U4M2E1YmIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpbmNsdWRlICJjYy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1QYXNzT3duUHRyPENDQ3VzdG9tTGF5ZXJEcmF3UXVhZD4gQ0NDdXN0b21M
YXllckRyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIENDTGF5ZXJJbXBsKiBsYXllcikKLXsKLSAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IENDQ3VzdG9tTGF5ZXJEcmF3UXVhZChzaGFyZWRRdWFkU3Rh
dGUsIHF1YWRSZWN0LCBsYXllcikpOwotfQotCi1DQ0N1c3RvbUxheWVyRHJhd1F1YWQ6OkNDQ3Vz
dG9tTGF5ZXJEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwqIGxheWVyKQotICAgIDogQ0NE
cmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OkN1c3RvbUxheWVyLCBxdWFkUmVj
dCkKLSAgICAsIG1fbGF5ZXIobGF5ZXIpCi17Ci0gICAgQVNTRVJUKG1fbGF5ZXIpOwotfQotCi19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0N1c3RvbUxheWVyRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhOWJkNDYyMzI1M2E0YzQ1NTA5YWMyNDUwZjljYTMyYTczYzdkOWM3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ0NDdXN0b21M
YXllckRyYXdRdWFkX2gKLSNkZWZpbmUgQ0NDdXN0b21MYXllckRyYXdRdWFkX2gKLQotI2luY2x1
ZGUgImNjL0NDRHJhd1F1YWQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENDTGF5ZXJJbXBsOwotCi0vLyBGSVhNRTogVGhpcyBj
bGFzcyBpcyBhIHRlbXBvcmFyeSB3YXkgdG8gYWNjZXNzIENDTGF5ZXJJbXBsOjpkcmF3LiBUaGlz
IGNsYXNzCi0vLyBzaG91bGQgYmUgY29udmVydGVkIHRvIGEgc2V0IG9mIGRyYXcgcXVhZHMgZm9y
IGVhY2ggbGF5ZXIgbWF0ZXJpYWwgdHlwZSBhbmQKLS8vIHRoZW4gcmVtb3ZlZC4KLWNsYXNzIEND
Q3VzdG9tTGF5ZXJEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDQ0N1c3RvbUxheWVyRHJhd1F1YWQpOwotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDQ3VzdG9tTGF5ZXJEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIENDTGF5ZXJJbXBsKik7Ci0KLSAgICBDQ0xheWVySW1w
bCogbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ0ND
dXN0b21MYXllckRyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVj
dCYsIENDTGF5ZXJJbXBsKik7Ci0KLSAgICBDQ0xheWVySW1wbCogbV9sYXllcjsKLX07Ci0KLX0K
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCmluZGV4IDhmY2Y0NDlmMDRmMmQ1ZjU2YmZm
NTg5ODJjYTQ0MTAwMThkYmUyNDIuLjFiYmZiYjZlNDQ1MTQyZTIyM2VlNzBkNzhhMjY1OTNjMTU3
MDMwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCkBAIC0yNywxMiArMjcsMTQgQEAKIAogI2lu
Y2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKIAotI2luY2x1ZGUgImNjL0NDQ3VzdG9tTGF5ZXJEcmF3
UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDQ2FudmFzRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9D
Q0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgorI2lu
Y2x1ZGUgImNjL0NDUGx1Z2luRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZh
Y2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCiAjaW5j
bHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ1ZpZGVvRHJhd1F1YWQu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03MSwxMCArNzMsMjIgQEAgY29uc3QgQ0NU
aWxlRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvVGlsZURyYXdRdWFkKCkgY29uc3QKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NUaWxlRHJhd1F1YWQqPih0aGlzKTsKIH0KIAotY29uc3Qg
Q0NDdXN0b21MYXllckRyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b0N1c3RvbUxheWVyRHJhd1F1YWQo
KSBjb25zdAorY29uc3QgQ0NDYW52YXNEcmF3UXVhZCogQ0NEcmF3UXVhZDo6dG9DYW52YXNEcmF3
UXVhZCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gQ3VzdG9tTGF5ZXIpOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ0N1c3RvbUxheWVyRHJhd1F1YWQqPih0aGlz
KTsKKyAgICBBU1NFUlQobV9tYXRlcmlhbCA9PSBDYW52YXNDb250ZW50KTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgQ0NDYW52YXNEcmF3UXVhZCo+KHRoaXMpOworfQorCitjb25zdCBD
Q1ZpZGVvRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvVmlkZW9EcmF3UXVhZCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gVmlkZW9Db250ZW50KTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgQ0NWaWRlb0RyYXdRdWFkKj4odGhpcyk7Cit9CisKK2NvbnN0IENDUGx1Z2lu
RHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvUGx1Z2luRHJhd1F1YWQoKSBjb25zdAoreworICAgIEFT
U0VSVChtX21hdGVyaWFsID09IFBsdWdpbkNvbnRlbnQpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBDQ1BsdWdpbkRyYXdRdWFkKj4odGhpcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQu
aAppbmRleCBiNTY5MTNiM2NlNTNhYzBlZDBlZWJlNGQ3Nzk4MDRjYzI1ZDRlNmFlLi5hY2M3YzAy
ODY2Y2M4OTU5MzE1MTk2YjNiODM4ZDA4ODZiNTFjNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCkBA
IC0zNCw3ICszNCw5IEBAIGNsYXNzIENDRGVidWdCb3JkZXJEcmF3UXVhZDsKIGNsYXNzIENDUmVu
ZGVyU3VyZmFjZURyYXdRdWFkOwogY2xhc3MgQ0NTb2xpZENvbG9yRHJhd1F1YWQ7CiBjbGFzcyBD
Q1RpbGVEcmF3UXVhZDsKLWNsYXNzIENDQ3VzdG9tTGF5ZXJEcmF3UXVhZDsKK2NsYXNzIENDQ2Fu
dmFzRHJhd1F1YWQ7CitjbGFzcyBDQ1ZpZGVvRHJhd1F1YWQ7CitjbGFzcyBDQ1BsdWdpbkRyYXdR
dWFkOwogCiAvLyBDQ0RyYXdRdWFkIGlzIGEgYmFnIG9mIGRhdGEgdXNlZCBmb3IgZHJhd2luZyBh
IHF1YWQuIEJlY2F1c2UgZGlmZmVyZW50CiAvLyBtYXRlcmlhbHMgbmVlZCBkaWZmZXJlbnQgYml0
cyBvZiBwZXItcXVhZCBkYXRhIHRvIHJlbmRlciwgY2xhc3NlcyB0aGF0IGRlcml2ZQpAQCAtNjAs
OSArNjIsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlbmRlclN1cmZhY2UsCiAgICAgICAgIFNvbGlk
Q29sb3IsCiAgICAgICAgIFRpbGVkQ29udGVudCwKLQotICAgICAgICAvLyBGSVhNRTogcmVtb3Zl
IHRoaXMgYW5kIGFkZCBwcm9wZXIgbWF0ZXJpYWwgdHlwZXMgZm9yIGFsbCBsYXllciB0eXBlcwot
ICAgICAgICBDdXN0b21MYXllciwKKyAgICAgICAgQ2FudmFzQ29udGVudCwKKyAgICAgICAgVmlk
ZW9Db250ZW50LAorICAgICAgICBQbHVnaW5Db250ZW50LAogICAgIH07CiAKICAgICBNYXRlcmlh
bCBtYXRlcmlhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0ZXJpYWw7IH0KQEAgLTcxLDcgKzczLDkg
QEAgcHVibGljOgogICAgIGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiB0b1JlbmRlclN1
cmZhY2VEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0IENDU29saWRDb2xvckRyYXdRdWFkKiB0
b1NvbGlkQ29sb3JEcmF3UXVhZCgpIGNvbnN0OwogICAgIGNvbnN0IENDVGlsZURyYXdRdWFkKiB0
b1RpbGVEcmF3UXVhZCgpIGNvbnN0OwotICAgIGNvbnN0IENDQ3VzdG9tTGF5ZXJEcmF3UXVhZCog
dG9DdXN0b21MYXllckRyYXdRdWFkKCkgY29uc3Q7CisgICAgY29uc3QgQ0NDYW52YXNEcmF3UXVh
ZCogdG9DYW52YXNEcmF3UXVhZCgpIGNvbnN0OworICAgIGNvbnN0IENDVmlkZW9EcmF3UXVhZCog
dG9WaWRlb0RyYXdRdWFkKCkgY29uc3Q7CisgICAgY29uc3QgQ0NQbHVnaW5EcmF3UXVhZCogdG9Q
bHVnaW5EcmF3UXVhZCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgQ0NEcmF3UXVhZChjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSosIE1hdGVyaWFsLCBjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHAKaW5kZXggNjgzN2YwYTVjODZjNTY4ZTg5M2JiNWIxMDRkZWYxNjYyMGIz
NDZjMS4uZGUzOGEwYWFmNGEyN2Q4NTJhMmY0ODcxZjRiYTBlOTc2MGI1N2I0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgImNjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5oIgog
I2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJTb3J0ZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTEyOSw4ICsx
MjgsNiBAQCBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBDQ0xheWVySW1wbDo6Y3JlYXRl
U2hhcmVkUXVhZFN0YXRlKCkgY29uc3QKIAogdm9pZCBDQ0xheWVySW1wbDo6YXBwZW5kUXVhZHMo
Q0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUpCiB7Ci0gICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBib3VuZHMoKSk7Ci0g
ICAgcXVhZExpc3QuYXBwZW5kKENDQ3VzdG9tTGF5ZXJEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1
YWRTdGF0ZSwgcXVhZFJlY3QsIHRoaXMpKTsKIH0KIAogdm9pZCBDQ0xheWVySW1wbDo6YXBwZW5k
RGVidWdCb3JkZXJRdWFkKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5EcmF3UXVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkRyYXdRdWFk
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZDJhZTRiODYyOGY3ZmExMTQyZjk1NjE5ZjFiYWU4Y2FkZGJmZmE3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQbHVnaW5EcmF3UXVhZC5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDUGx1Z2luRHJhd1F1YWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPENDUGx1Z2luRHJhd1F1YWQ+IENDUGx1
Z2luRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwqIGxheWVyKQoreworICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQ0NQbHVnaW5EcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1
YWRSZWN0LCBsYXllcikpOworfQorCitDQ1BsdWdpbkRyYXdRdWFkOjpDQ1BsdWdpbkRyYXdRdWFk
KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3Qm
IHF1YWRSZWN0LCBDQ0xheWVySW1wbCogbGF5ZXIpCisgICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1
YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6UGx1Z2luQ29udGVudCwgcXVhZFJlY3QpCisgICAgLCBtX2xh
eWVyKGxheWVyKQoreworICAgIEFTU0VSVChtX2xheWVyKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5EcmF3
UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
bHVnaW5EcmF3UXVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNTJhYmVmNDA5MzE2NzVjM2EwN2I2ZWNjZDJm
NDM2YWNkMWRlMzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkRyYXdRdWFkLmgKQEAgLTAsMCArMSw1MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgQ0NQbHVnaW5EcmF3UXVhZF9oCisjZGVmaW5lIENDUGx1Z2luRHJhd1F1
YWRfaAorCisjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0NMYXllckltcGw7CisKK2Ns
YXNzIENDUGx1Z2luRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ0NQbHVnaW5EcmF3UXVhZCk7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NP
d25QdHI8Q0NQbHVnaW5EcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwg
Y29uc3QgSW50UmVjdCYsIENDTGF5ZXJJbXBsKik7CisKKyAgICBDQ0xheWVySW1wbCogbGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX2xheWVyOyB9CisKK3ByaXZhdGU6CisgICAgQ0NQbHVnaW5EcmF3
UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ0xheWVySW1w
bCopOworCisgICAgQ0NMYXllckltcGwqIG1fbGF5ZXI7Cit9OworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
bHVnaW5MYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwCmluZGV4IGJjMTA1YmI0Yjc1ZjgyYzA0Mjdk
NGRlOWQ4ZDY3NzJkNjg0N2Q3NjIuLmIyMGEyZjUxODJjOTNlMDEyMDlkZmYzZjM1ZmFiNjM4MTRh
YjRiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCisjaW5j
bHVkZSAiY2MvQ0NQbHVnaW5EcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTc2LDYgKzE3NywxMSBAQCB2b2lk
IENDUGx1Z2luTGF5ZXJJbXBsOjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5k
ZXJlcikKICAgICB9CiB9CiAKK3ZvaWQgQ0NQbHVnaW5MYXllckltcGw6OmFwcGVuZFF1YWRzKEND
UXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlKQoreworICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKCkpOworICAg
IHF1YWRMaXN0LmFwcGVuZChDQ1BsdWdpbkRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRl
LCBxdWFkUmVjdCwgdGhpcykpOworfQogCiB2b2lkIENDUGx1Z2luTGF5ZXJJbXBsOjpkdW1wTGF5
ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdAogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVn
aW5MYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgKaW5kZXggZTA5ODI2YTM0NzU0M2Q2ZTNmN2UyNWU5Y2Vi
ODJhZDIwZDlkMzNkNC4uOWI0ZDVhNGQzOGYxMzFjYTU3OTZmOWRjZWI1MmViOWI3ODkyYTgxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQbHVnaW5MYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCkBAIC00MSw2ICs0MSw4IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NQbHVnaW5MYXllckltcGwoKTsKIAorICAgIHZpcnR1
YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
KTsKKwogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4U3RyZXRj
aCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGE+IFByb2dyYW07CiAgICAgdHlwZWRlZiBQcm9n
cmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJQb3NUZXhTdHJldGNoLCBGcmFnbWVudFNoYWRlclJHQkFU
ZXhGbGlwQWxwaGE+IFByb2dyYW1GbGlwOwogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVy
dGV4U2hhZGVyUG9zVGV4VHJhbnNmb3JtLCBGcmFnbWVudFNoYWRlclJHQkFUZXhSZWN0QWxwaGE+
IFRleFJlY3RQcm9ncmFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKaW5kZXggNGE4Yjg1MTMw
ZTFlZDRlZWFjMzY2MzVlZmQ3YzAyOTU4NTBkYjg0My4uMDc5YWE3ZmY2YjMxYjFiNDZmMmMyOWZh
NzFmNWY3NDg4YjRiYjkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC0zMSw3ICsz
MSw2IEBACiAKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oIgotI2luY2x1ZGUgImNjL0NDQ3VzdG9tTGF5ZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9EcmF3UXVhZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1
YWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNkZTM4ZTkwZjg2M2YxZjM4NzA4NDhjZjEwOTIzODk5ZGU5Nzdj
MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ZpZGVvRHJhd1F1YWQuY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ1ZpZGVvRHJhd1F1YWQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPENDVmlkZW9EcmF3UXVhZD4gQ0NWaWRl
b0RyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIENDTGF5ZXJJbXBsKiBsYXllcikKK3sKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDVmlkZW9EcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRS
ZWN0LCBsYXllcikpOworfQorCitDQ1ZpZGVvRHJhd1F1YWQ6OkNDVmlkZW9EcmF3UXVhZChjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFk
UmVjdCwgQ0NMYXllckltcGwqIGxheWVyKQorICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3Rh
dGUsIENDRHJhd1F1YWQ6OlZpZGVvQ29udGVudCwgcXVhZFJlY3QpCisgICAgLCBtX2xheWVyKGxh
eWVyKQoreworICAgIEFTU0VSVChtX2xheWVyKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0RyYXdRdWFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvRHJh
d1F1YWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iMThiYzU1NDFjZDJiY2Y3ZmMxMmZiZjkzYmRiMzQzODk2NGY5
ODRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0RyYXdRdWFkLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQ0NWaWRlb0RyYXdRdWFkX2gKKyNkZWZpbmUgQ0NWaWRlb0RyYXdRdWFkX2gKKworI2lu
Y2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDTGF5ZXJJbXBsOworY2xhc3MgQ0NWaWRlb0Ry
YXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEND
VmlkZW9EcmF3UXVhZCk7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NWaWRlb0Ry
YXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0Jiwg
Q0NMYXllckltcGwqKTsKKworICAgIENDTGF5ZXJJbXBsKiBsYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5ZXI7IH0KKworcHJpdmF0ZToKKyAgICBDQ1ZpZGVvRHJhd1F1YWQoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NMYXllckltcGwqKTsKKworICAgIENDTGF5
ZXJJbXBsKiBtX2xheWVyOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xh
eWVySW1wbC5jcHAKaW5kZXggOTllN2UxMTc0NzU0M2MyNDkyM2Q1ZDY0ZjNjNjcxOWQxZGYxZDI1
MC4uYmExMjkwZWIwYmRhM2M3OTdiODg5NmQ4M2FkZmNmOGNjZTM3NmM3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKQEAgLTMyLDkgKzMyLDEwIEBACiAjaW5jbHVkZSAiRXh0
ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlByb2dyYW1CaW5kaW5n
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQcm9ncmFtQmluZGlu
Zy5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1ZpZGVvRHJhd1F1
YWQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMTUwLDYgKzE1MSwxMiBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmRyYXcoTGF5
ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogICAgIG1fcHJvdmlkZXItPnB1dEN1
cnJlbnRGcmFtZShmcmFtZSk7CiB9CiAKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVh
ZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUpCit7CisgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgpLCBib3VuZHMoKSk7
CisgICAgcXVhZExpc3QuYXBwZW5kKENDVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZSwgcXVhZFJlY3QsIHRoaXMpKTsKK30KKwogYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjpjb3B5
RnJhbWVUb1RleHR1cmVzKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUsIEdDM0RlbnVt
IGZvcm1hdCwgTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogewogICAgIGlm
IChmcmFtZS0+Zm9ybWF0KCkgPT0gVmlkZW9GcmFtZUNocm9taXVtOjpOYXRpdmVUZXh0dXJlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ZpZGVvTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKaW5kZXggY2M0Y2M4MjMyNzhlOTRhZDg0NjU4
MTY5ZjNhMDE2YjI0NjgzYjk0OC4uMTgyZjdiNTgyN2M5MWNiZmZlZTVkM2JhZWFkMTA4NTFmNmZm
YmE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApAQCAtNDYsNiArNDYsOCBAQCBw
dWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVmlkZW9MYXllckltcGwoKTsKIAorICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiwgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqKTsKKwogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4VHJh
bnNmb3JtLCBGcmFnbWVudFNoYWRlclJHQkFUZXhGbGlwQWxwaGE+IFJHQkFQcm9ncmFtOwogICAg
IHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4WVVWU3RyZXRjaCwgRnJh
Z21lbnRTaGFkZXJZVVZWaWRlbz4gWVVWUHJvZ3JhbTsKICAgICB0eXBlZGVmIFByb2dyYW1CaW5k
aW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4Rmxp
cEFscGhhPiBOYXRpdmVUZXh0dXJlUHJvZ3JhbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggOWI4N2Qw
MGZhNmJmMDZhZTg3YzVmOTQxMmExNzE1ZGIzZjliZDBkZS4uNTIyNzg5MjVlMWVhMDk5NjkzYmMz
NzU5ZGQ0MWU0MWNkYjMzYzQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlICJj
Yy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTgzLDExICsxODQsMTIgQEAgY2xhc3MgQmxlbmRT
dGF0ZUNoZWNrTGF5ZXIgOiBwdWJsaWMgQ0NMYXllckltcGwgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBjcmVhdGUoaW50IGlkKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaWQpKTsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGRyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiByZW5kZXJlcikKKyAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCiAgICAgewotICAgICAgICBtX2RyYXduID0gdHJ1ZTsK
LSAgICAgICAgQmxlbmRTdGF0ZVRyYWNrZXJDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
QmxlbmRTdGF0ZVRyYWNrZXJDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRy
YWN0V2ViR3JhcGhpY3NDb250ZXh0M0QocmVuZGVyZXItPmNvbnRleHQoKSkpOwotICAgICAgICBF
WFBFQ1RfRVEobV9ibGVuZCwgY29udGV4dC0+YmxlbmQoKSk7CisgICAgICAgIG1fcXVhZHNBcHBl
bmRlZCA9IHRydWU7CisgICAgICAgIAorICAgICAgICBPd25QdHI8Q0NEcmF3UXVhZD4gdGVzdEJs
ZW5kaW5nRHJhd1F1YWQgPSBDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZSwgSW50UmVjdCg1LCA1LCA1LCA1KSwgQ29sb3I6OndoaXRlKTsKKyAgICAgICAgRVhQRUNU
X0VRKG1fYmxlbmQsIHRlc3RCbGVuZGluZ0RyYXdRdWFkLT5uZWVkc0JsZW5kaW5nKCkpOwogICAg
ICAgICBFWFBFQ1RfRVEobV9oYXNSZW5kZXJTdXJmYWNlLCAhIXJlbmRlclN1cmZhY2UoKSk7CiAg
ICAgfQogCkBAIC0xOTUsMTcgKzE5NywxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Js
ZW5kID0gYmxlbmQ7CiAgICAgICAgIG1faGFzUmVuZGVyU3VyZmFjZSA9IGhhc1JlbmRlclN1cmZh
Y2U7Ci0gICAgICAgIG1fZHJhd24gPSBmYWxzZTsKKyAgICAgICAgbV9xdWFkc0FwcGVuZGVkID0g
ZmFsc2U7CiAgICAgfQogCi0gICAgYm9vbCBkcmF3bigpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd247
IH0KKyAgICBib29sIHF1YWRzQXBwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3F1YWRzQXBwZW5k
ZWQ7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBCbGVuZFN0YXRlQ2hlY2tMYXllcihpbnQg
aWQpCiAgICAgICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAgICAgICwgbV9ibGVuZChmYWxzZSkK
ICAgICAgICAgLCBtX2hhc1JlbmRlclN1cmZhY2UoZmFsc2UpCi0gICAgICAgICwgbV9kcmF3bihm
YWxzZSkKKyAgICAgICAgLCBtX3F1YWRzQXBwZW5kZWQoZmFsc2UpCiAgICAgewogICAgICAgICBz
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKICAgICAgICAgc2V0Qm91bmRzKEludFNp
emUoMTAsIDEwKSk7CkBAIC0yMTQsNyArMjE2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9i
bGVuZDsKICAgICBib29sIG1faGFzUmVuZGVyU3VyZmFjZTsKLSAgICBib29sIG1fZHJhd247Cisg
ICAgYm9vbCBtX3F1YWRzQXBwZW5kZWQ7CiB9OwogCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODMKQEAgLTIzOCwyMCArMjQwLDIwIEBAIFRFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykK
ICAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9u
KGZhbHNlLCBmYWxzZSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwotICAgIEVYUEVD
VF9UUlVFKGxheWVyMS0+ZHJhd24oKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0Fw
cGVuZGVkKCkpOwogCiAgICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBjb250ZW50LCBkcmF3
biB3aXRoIGJsZW5kaW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKGZhbHNlKTsKICAgICBsYXll
cjEtPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5
ZXJzKCk7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5kcmF3bigpKTsKKyAgICBFWFBFQ1RfVFJV
RShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAKICAgICAvLyBMYXllciB3aXRoIHRyYW5zbHVj
ZW50IG9wYWNpdHksIGRyYXduIHdpdGggYmxlbmRpbmcuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUo
dHJ1ZSk7CiAgICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBl
Y3RhdGlvbih0cnVlLCBmYWxzZSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwotICAg
IEVYUEVDVF9UUlVFKGxheWVyMS0+ZHJhd24oKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5x
dWFkc0FwcGVuZGVkKCkpOwogCiAgICAgUmVmUHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBsYXll
cjIgPSBCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDIpOwogICAgIGxheWVyMS0+YWRkQ2hp
bGQobGF5ZXIyKTsKQEAgLTI2NCw4ICsyNjYsOCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgbGF5ZXIyLT5z
ZXRPcGFjaXR5KDEpOwogICAgIGxheWVyMi0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsK
ICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGxheWVyMS0+
ZHJhd24oKSk7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5kcmF3bigpKTsKKyAgICBFWFBFQ1Rf
VFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5x
dWFkc0FwcGVuZGVkKCkpOwogCiAgICAgLy8gUGFyZW50IGxheWVyIHdpdGggdHJhbnNsdWNlbnQg
Y29udGVudCwgZHJhd24gd2l0aCBibGVuZGluZy4KICAgICAvLyBDaGlsZCBsYXllciB3aXRoIG9w
YXF1ZSBjb250ZW50LCBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgpAQCAtMjczLDggKzI3NSw4IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09w
YXF1ZUxheWVycykKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAg
ICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAgICAgbV9ob3N0SW1wbC0+
ZHJhd0xheWVycygpOwotICAgIEVYUEVDVF9GQUxTRShsYXllcjEtPmRyYXduKCkpOwotICAgIEVY
UEVDVF9UUlVFKGxheWVyMi0+ZHJhd24oKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFk
c0FwcGVuZGVkKCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsK
IAogICAgIC8vIFBhcmVudCBsYXllciB3aXRoIHRyYW5zbHVjZW50IG9wYWNpdHkgYW5kIG9wYXF1
ZSBjb250ZW50LiBTaW5jZSBpdCBoYXMgYQogICAgIC8vIGRyYXdpbmcgY2hpbGQsIGl0J3MgZHJh
d24gdG8gYSByZW5kZXIgc3VyZmFjZSB3aGljaCBjYXJyaWVzIHRoZSBvcGFjaXR5LApAQCAtMjg2
LDggKzI4OCw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZX
aGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNl
LCB0cnVlKTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAgICAg
bV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwotICAgIEVYUEVDVF9GQUxTRShsYXllcjEtPmRyYXdu
KCkpOwotICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+ZHJhd24oKSk7CisgICAgRVhQRUNUX1RSVUUo
bGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNB
cHBlbmRlZCgpKTsKIAogICAgIC8vIERyYXcgYWdhaW4sIGJ1dCB3aXRoIGNoaWxkIG5vbi1vcGFx
dWUsIHRvIG1ha2Ugc3VyZQogICAgIC8vIGxheWVyMSBub3QgY3VsbGVkLgpAQCAtMjk4LDggKzMw
MCw4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJh
d2luZ09wYXF1ZUxheWVycykKICAgICBsYXllcjItPnNldE9wYWNpdHkoMC41KTsKICAgICBsYXll
cjItPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5
ZXJzKCk7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5kcmF3bigpKTsKLSAgICBFWFBFQ1RfVFJV
RShsYXllcjItPmRyYXduKCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRl
ZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQoKSk7CiAKICAgICAv
LyBBIHNlY29uZCB3YXkgb2YgbWFraW5nIHRoZSBjaGlsZCBub24tb3BhcXVlLgogICAgIGxheWVy
MS0+c2V0T3BhcXVlKHRydWUpOwpAQCAtMzA5LDggKzMxMSw4IEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBs
YXllcjItPnNldE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBm
YWxzZSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwotICAgIEVYUEVDVF9UUlVFKGxh
eWVyMS0+ZHJhd24oKSk7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5kcmF3bigpKTsKKyAgICBF
WFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CisgICAgRVhQRUNUX1RSVUUobGF5
ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogfQogCiBjbGFzcyBSZXNoYXBlVHJhY2tlckNvbnRleHQ6
IHB1YmxpYyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Qgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>