<?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>82275</bug_id>
          
          <creation_ts>2012-03-26 17:55:02 -0700</creation_ts>
          <short_desc>WebGL content swapped at wrong time in threaded compositing mode</short_desc>
          <delta_ts>2012-04-10 12:18:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>80459</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>dino</cc>
    
    <cc>enne</cc>
    
    <cc>gman</cc>
    
    <cc>joone.hur</cc>
    
    <cc>kbr</cc>
    
    <cc>mrobinson</cc>
    
    <cc>nduca</cc>
    
    <cc>reveman</cc>
    
    <cc>senorblanco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>staikos</cc>
    
    <cc>twiz</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>588391</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-26 17:55:02 -0700</bug_when>
    <thetext>WebGL content swapped at wrong time in threaded compositing mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588395</commentid>
    <comment_count>1</comment_count>
      <attachid>133947</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-26 17:57:50 -0700</bug_when>
    <thetext>Created attachment 133947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588398</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-26 18:01:04 -0700</bug_when>
    <thetext>Ken said he&apos;d take a look at this. I&apos;ve modified other DrawingBuffer implementations based on inspection and they all seem fine except for Blackberry, which seems to be clearly non-compiling on ToT so I&apos;ve mostly left it alone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588412</commentid>
    <comment_count>3</comment_count>
      <attachid>133947</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-26 18:13:36 -0700</bug_when>
    <thetext>Comment on attachment 133947
Patch

Attachment 133947 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12145211</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588419</commentid>
    <comment_count>4</comment_count>
      <attachid>133947</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-03-26 18:22:24 -0700</bug_when>
    <thetext>Comment on attachment 133947
Patch

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

Looks good overall. One minor comment. The Mac build failure is probably a minor issue. r=me

&gt; Source/WebCore/platform/graphics/gpu/DrawingBuffer.h:58
&gt; +    static PassRefPtr&lt;DrawingBuffer&gt; create(GraphicsContext3D*, const IntSize&amp;, bool seperateBackingTexture, bool alpha);

Typo: seperateBackingTexture -&gt; separateBackingTexture. Should we define an enum instead of adding another anonymous bool argument to the constructor? Perhaps also retrofit the separateBackingTexture argument with one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588421</commentid>
    <comment_count>5</comment_count>
      <attachid>133955</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-26 18:23:01 -0700</bug_when>
    <thetext>Created attachment 133955
mac build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588431</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-26 18:26:26 -0700</bug_when>
    <thetext>Oops, I think I accidentally killed your review flag. I&apos;m going to let EWS check that I didn&apos;t explode any other ports before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588434</commentid>
    <comment_count>7</comment_count>
      <attachid>133955</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-03-26 18:28:57 -0700</bug_when>
    <thetext>Comment on attachment 133955
mac build fix

No problem. The change to the Mac port looks OK, but consider the comments from the previous review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588453</commentid>
    <comment_count>8</comment_count>
      <attachid>133959</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-26 18:53:16 -0700</bug_when>
    <thetext>Created attachment 133959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588456</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-26 18:54:18 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Typo: seperateBackingTexture -&gt; separateBackingTexture. Should we define an enum instead of adding another anonymous bool argument to the constructor? Perhaps also retrofit the separateBackingTexture argument with one?

Good idea. I&apos;ve switched both to enums - I struggled a bit on the name, but decided they were both requirements that the caller was making of creation. Let me know if that works for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588459</commentid>
    <comment_count>10</comment_count>
      <attachid>133959</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-03-26 18:57:13 -0700</bug_when>
    <thetext>Comment on attachment 133959
Patch

Thanks, that&apos;s a nice cleanup. r=me still.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588468</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-26 19:02:42 -0700</bug_when>
    <thetext>Awesome, holding off on cq+ until the other EWSen cycle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589405</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-27 16:13:52 -0700</bug_when>
    <thetext>This patch breaks the antialiased display path (which appears to not break any layout tests).  Investigating both...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589410</commentid>
    <comment_count>13</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-03-27 16:24:16 -0700</bug_when>
    <thetext>Apologies that the layout tests don&apos;t exercise multisampling. I thought they would, based on memory and code inspection, but I haven&apos;t traced through DRT and in-process command buffer implementation to understand what&apos;s going on. Please feel free to file a new bug about that and assign it to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589455</commentid>
    <comment_count>14</comment_count>
      <attachid>133959</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-27 16:58:11 -0700</bug_when>
    <thetext>Comment on attachment 133959
Patch

Clearing flags - this breaks the multisampled path on Chromium because FBOs aren&apos;t shared between contexts so we can&apos;t bind + blit from context other than the WebGL context.  I&apos;ll leave the resolve in paint..() and make sure that we always double buffer the color attachment and do either a swap or a copy in updateCompositorResources().  I&apos;ll also file a bug about why this isn&apos;t caught by running layout tests, since the multisampled output path is the default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596984</commentid>
    <comment_count>15</comment_count>
      <attachid>135924</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-05 16:04:43 -0700</bug_when>
    <thetext>Created attachment 135924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596987</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-05 16:07:09 -0700</bug_when>
    <thetext>This ended up being a bit larger than I had hoped, but I believe it works.  A few things to note:

1.) mesa doesn&apos;t support multisampling, so the pixel expectations for DRT are not multisampled. I&apos;ve run this test manually to confirm that multisampling still works as expected.

2.) I&apos;ve updated other DrawingBuffer implementations in a best-effort way, but it&apos;s pretty clear that many of these do not even compile with current code.

3.) This *still* doesn&apos;t swap at exactly the right time in the face of incremental uploads (canvas 2d has the same bug).  I&apos;ll address this for WebGL and canvas 2d in a follow-up patch since it&apos;ll only impact chromium code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597109</commentid>
    <comment_count>17</comment_count>
      <attachid>135924</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-05 18:31:10 -0700</bug_when>
    <thetext>Comment on attachment 135924
Patch

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

Overall this looks very good. Nice work. There&apos;s only one small issue, but I feel pretty strongly that it should be taken care of (and re-testing done), thus the r-.

&gt; Source/WebCore/ChangeLog:29
&gt; +        since we&apos;re shadowing the relevant GL state on the WebGLRenderingContext anyway.

This one change concerns me. Noting that FECustomFilter.cpp is using DrawingBuffer, it is not a good idea to assume that the WebGLRenderingContext is the caller of DrawingBuffer::clearFramebuffer(). Minimally, this change should be split off from the rest of this patch, but I also think it should just not be done.

&gt; Source/WebCore/platform/graphics/filters/FECustomFilter.cpp:145
&gt; +    m_drawingBuffer = DrawingBuffer::create(m_context.get(), contextSize, DrawingBuffer::Discard, DrawingBuffer::Alpha);

Because this class uses DrawingBuffer I think it is not a good idea to assume that the WebGLRenderingContext will preserve all of the needed state during calls to DrawingBuffer::clearFramebuffer().

&gt; LayoutTests/fast/canvas/webgl/webgl-composite-modes-repaint.html:4
&gt; +This test is only useful as a pixel test. You should see two rows with 4 canvases in each. The top row of canvases should have a black background, the bottom row should have a pink background.

Is the comment about the pink background accurate in this test and the other one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597478</commentid>
    <comment_count>18</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-06 10:52:27 -0700</bug_when>
    <thetext>FECustomFilter doesn&apos;t use clearFramebuffer(), so I&apos;m not sure what code or testing change you are proposing.  Do you want me to just delete the comment?  Presumably if somebody adds a call to clearFramebuffer() they will read the comment and do whatever they need to do to maintain their GL state invariant.

The pink comment in the layout test is out of date (I changed the background color to darkblue to make it more obvious if antialiasing was happening or not).  Will update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597482</commentid>
    <comment_count>19</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-06 10:55:37 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; FECustomFilter doesn&apos;t use clearFramebuffer(), so I&apos;m not sure what code or testing change you are proposing.  Do you want me to just delete the comment? 

No, I&apos;d like you to restore the state saving and restoring code in DrawingBuffer::clearFramebuffer().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597485</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-06 10:58:12 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; FECustomFilter doesn&apos;t use clearFramebuffer(), so I&apos;m not sure what code or testing change you are proposing.  Do you want me to just delete the comment? 
&gt; 
&gt; No, I&apos;d like you to restore the state saving and restoring code in DrawingBuffer::clearFramebuffer().

Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597487</commentid>
    <comment_count>21</comment_count>
      <attachid>136043</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-06 11:01:10 -0700</bug_when>
    <thetext>Created attachment 136043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597518</commentid>
    <comment_count>22</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-06 11:35:44 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; FECustomFilter doesn&apos;t use clearFramebuffer(), so I&apos;m not sure what code or testing change you are proposing.  Do you want me to just delete the comment? 
&gt; &gt; 
&gt; &gt; No, I&apos;d like you to restore the state saving and restoring code in DrawingBuffer::clearFramebuffer().
&gt; 
&gt; Why?

Because if other callers than WebGL start using the DrawingBuffer class, then having clearFramebuffer() destroy context state will be surprising and unexpected. I don&apos;t think there will be a huge performance improvement from eliminating these state queries. If there is, we can figure out alternatives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597523</commentid>
    <comment_count>23</comment_count>
      <attachid>136043</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-06 11:38:00 -0700</bug_when>
    <thetext>Comment on attachment 136043
Patch

The state saving and restoring code has still been removed in DrawingBuffer::clearFramebuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597541</commentid>
    <comment_count>24</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-06 12:09:17 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #20)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; &gt; FECustomFilter doesn&apos;t use clearFramebuffer(), so I&apos;m not sure what code or testing change you are proposing.  Do you want me to just delete the comment? 
&gt; &gt; &gt; 
&gt; &gt; &gt; No, I&apos;d like you to restore the state saving and restoring code in DrawingBuffer::clearFramebuffer().
&gt; &gt; 
&gt; &gt; Why?
&gt; 
&gt; Because if other callers than WebGL start using the DrawingBuffer class, then having clearFramebuffer() destroy context state will be surprising and unexpected. I don&apos;t think there will be a huge performance improvement from eliminating these state queries. If there is, we can figure out alternatives.

It&apos;s in the header.

Pretty much every other operation on the DrawingBuffer (creating, reset(), commit(), bind(), createSecondaryBuffers(), paintRenderingResultsToImageData()) destroys context state.  It&apos;s far more surprising that clearFramebuffer() attempts to restore state currently when nothing else does and every caller is shadowing this state anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597550</commentid>
    <comment_count>25</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-06 12:17:11 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Pretty much every other operation on the DrawingBuffer (creating, reset(), commit(), bind(), createSecondaryBuffers(), paintRenderingResultsToImageData()) destroys context state.  It&apos;s far more surprising that clearFramebuffer() attempts to restore state currently when nothing else does and every caller is shadowing this state anyway.

All right, I hadn&apos;t realized that none of the other operations tried to preserve state. r=me then, and thanks for fixing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597643</commentid>
    <comment_count>26</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-06 14:16:07 -0700</bug_when>
    <thetext>Committed r113493: &lt;http://trac.webkit.org/changeset/113493&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133947</attachid>
            <date>2012-03-26 17:57:50 -0700</date>
            <delta_ts>2012-03-26 18:22:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82275-20120326175748.patch</filename>
            <type>text/plain</type>
            <size>29579</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU2NDBkYmQ3ZmZiMzRj
MmM2M2U5MGQxZDBlNGRkMDU2YjRmZDI5ZS4uZmQ4YjJkODRlOTcwYzQzM2NkZGY4YmI3OTA0Nzcy
NTQzODA5N2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU5IEBACiAyMDEyLTAzLTI2ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViR0wgY29udGVu
dCBzd2FwcGVkIGF0IHdyb25nIHRpbWUgaW4gdGhyZWFkZWQgY29tcG9zaXRpbmcgbW9kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIyNzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZXMg
RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcigpIChhbmQgdGh1cyA6OmNvbW1p
dCgpKSB0byB0YWtlIGEgY29udGV4dCB0byBwZXJmb3JtIHRoZQorICAgICAgICBXZWJHTCBzd2Fw
IGluLCB0eXBpY2FsbHkgdGhlIGNvbXBvc2l0b3IgY29udGV4dC4KKyAgICAgICAgCisgICAgICAg
IERvaW5nIHRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gcmVtb3ZlIGEgbG90IG9mIHN0YXRlIHRyYWNr
aW5nIGZyb20gRHJhd2luZ0J1ZmZlciBzaW5jZSBpdCBkb2Vzbid0IG1hbmlwdWxhdGUgdGhlCisg
ICAgICAgIFdlYkdMIGNvbnRleHQgdG8gc3dhcC4KKworICAgICAgICBJbiBjaHJvbWl1bSBpbiB0
aHJlYWRlZCBjb21wb3NpdGluZyBtb2RlLCB3ZSBzaG91bGQgc3dhcCBXZWJHTCBjb250ZW50IGlu
IHRoZSB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkgY2FsbAorICAgICAgICBub3QgdGhlIHBh
aW50Q29udGVudHNJZkRpcnR5KCkgY2FsbCBzaW5jZSB0aGUgbGF0dGVyIG1heSBiZSBjYWxsZWQg
d2hpbGUgdGhlIHRocmVhZCBpcyBzdGlsbCBkcmF3aW5nIGZyb20gdGhlCisgICAgICAgIGNvbnRl
eHQuIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKSBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGltcGwg
dGhyZWFkIGhhcyBzdG9wcGVkIGRyYXdpbmcgZnJhbWVzLCBidXQgc2luY2UgaXQncworICAgICAg
ICBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQgdGhlIFdlYkdMIGNvbnRleHQgY2Fubm90IGJlIHVz
ZWQsIG9ubHkgdGhlIGNvbXBvc2l0b3IgY29udGV4dCBjYW4gYmUgdXNlZC4KKworICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmFjdGl2ZVRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29weVRleFN1YkltYWdlMkQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5hYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Om1heWJlUmVzdG9yZUNvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRHJhd2luZ0J1ZmZlckJsYWNrQmVycnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1M
YXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRHJhd2luZ0J1ZmZlckNh
aXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnBhaW50Q29u
dGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUN1c3RvbUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRl
cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmls
dGVyOjppbml0aWFsaXplQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0RyYXdpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNvbW1pdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaDoKKyAgICAgICAgKERyYXdp
bmdCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1
ZmZlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5nQnVmZmVyUXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcik6CisK
KzIwMTItMDMtMjYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKwogICAg
ICAgICBTY3JvbGxhYmxlIHBsdWdpbnMgbm90IHJlZ2lzdGVyZWQgcHJvcGVybHkgaW4gU2Nyb2xs
aW5nQ29vcmRpbmF0b3IKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgyMTYzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDdhOWMwNDJlNTNk
ZTAwY2RlYjliNmI5OWIxNmJjZjgxYjNhMDg1OS4uZTk2YzRhMmEwZTY3M2QwMzk0NTM4ZDI0OGRk
NDJhNGQ5ZTQwM2M2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNSBA
QAogMjAxMi0wMy0yNiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIFdlYkdMIGNvbnRlbnQgc3dhcHBlZCBhdCB3cm9uZyB0aW1lIGluIHRocmVhZGVkIGNv
bXBvc2l0aW5nIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgyMjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB0ZXN0cy9XZWJHTExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VEVTVCk6CisKKzIwMTItMDMtMjYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVt
Lm9yZz4KKwogICAgICAgICBTY3JvbGxhYmxlIHBsdWdpbnMgbm90IHJlZ2lzdGVyZWQgcHJvcGVy
bHkgaW4gU2Nyb2xsaW5nQ29vcmRpbmF0b3IKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgyMTYzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGQ1ZGExODI5YTZkNDMwYmIy
ZDRjYTI3ZTBkODUyOGRlNDczMDBiMWQuLjA0M2I0N2E4MTBjNzZkM2Y1ZTIwYTQ5NDA4YTE4MzQ3
NzJmMGZjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtODksMTMgKzg5LDEzIEBAIG5hbWVzcGFjZSB7CiAKICAg
ICBjbGFzcyBTY29wZWREcmF3aW5nQnVmZmVyQmluZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IFNjb3BlZERyYXdpbmdCdWZmZXJCaW5kZXIoRHJhd2luZ0J1ZmZlciogZHJhd2luZ0J1ZmZlciwg
V2ViR0xGcmFtZWJ1ZmZlciogZnJhbWVidWZmZXJCaW5kaW5nKQorICAgICAgICBTY29wZWREcmF3
aW5nQnVmZmVyQmluZGVyKERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIsIFdlYkdMRnJhbWVi
dWZmZXIqIGZyYW1lYnVmZmVyQmluZGluZywgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAg
ICAgICAgICAgICA6IG1fZHJhd2luZ0J1ZmZlcihkcmF3aW5nQnVmZmVyKQogICAgICAgICAgICAg
LCBtX2ZyYW1lYnVmZmVyQmluZGluZyhmcmFtZWJ1ZmZlckJpbmRpbmcpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIC8vIENvbW1pdCBEcmF3aW5nQnVmZmVyIGlmIG5lZWRlZCAoZS5nLiwgZm9yIG11
bHRpc2FtcGxpbmcpCiAgICAgICAgICAgICBpZiAoIW1fZnJhbWVidWZmZXJCaW5kaW5nICYmIG1f
ZHJhd2luZ0J1ZmZlcikKLSAgICAgICAgICAgICAgICBtX2RyYXdpbmdCdWZmZXItPmNvbW1pdCgp
OworICAgICAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+Y29tbWl0KGNvbnRleHQpOwogICAg
ICAgICB9CiAKICAgICAgICAgflNjb3BlZERyYXdpbmdCdWZmZXJCaW5kZXIoKQpAQCAtNDM3LDcg
KzQzNyw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KEhU
TUxDYW52YXNFbGVtZW50KiBwYXNzZWRDYW52YXMsIFBhCiAKICNpZiBQTEFURk9STShDSFJPTUlV
TSkKICAgICAvLyBDcmVhdGUgdGhlIERyYXdpbmdCdWZmZXIgYW5kIGluaXRpYWxpemUgdGhlIHBs
YXRmb3JtIGxheWVyLgotICAgIG1fZHJhd2luZ0J1ZmZlciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0
ZShtX2NvbnRleHQuZ2V0KCksIEludFNpemUoY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5o
ZWlnaHQoKSksICFtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKTsKKyAgICBtX2Ry
YXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBJbnRT
aXplKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpLCAhbV9hdHRyaWJ1dGVz
LnByZXNlcnZlRHJhd2luZ0J1ZmZlciwgbV9hdHRyaWJ1dGVzLmFscGhhKTsKICNlbmRpZgogCiAg
ICAgaWYgKG1fZHJhd2luZ0J1ZmZlcikKQEAgLTY5Niw3ICs2OTYsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQogICAgIG1fbWFy
a2VkQ2FudmFzRGlydHkgPSBmYWxzZTsKIAogICAgIGlmIChtX2RyYXdpbmdCdWZmZXIpCi0gICAg
ICAgIG1fZHJhd2luZ0J1ZmZlci0+Y29tbWl0KCk7CisgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+
Y29tbWl0KG1fY29udGV4dC5nZXQoKSk7CiAgICAgbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0NhbnZhcyh0aGlzLCBtX2RyYXdpbmdCdWZmZXIuZ2V0KCkpOwogCiAgICAgaWYgKG1f
ZHJhd2luZ0J1ZmZlcikgewpAQCAtNzExLDcgKzcxMSw3IEBAIFBhc3NSZWZQdHI8SW1hZ2VEYXRh
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRh
KCkKIHsKICAgICBjbGVhcklmQ29tcG9zaXRlZCgpOwogICAgIGlmIChtX2RyYXdpbmdCdWZmZXIp
Ci0gICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+Y29tbWl0KCk7CisgICAgICAgIG1fZHJhd2luZ0J1
ZmZlci0+Y29tbWl0KG1fY29udGV4dC5nZXQoKSk7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gaW1h
Z2VEYXRhID0gbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YShtX2Ry
YXdpbmdCdWZmZXIuZ2V0KCkpOwogCiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlcikgewpAQCAtODA5
LDkgKzgwOSw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphY3RpdmVUZXh0dXJlKEdD
M0RlbnVtIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1fYWN0aXZlVGV4dHVyZVVu
aXQgPSB0ZXh0dXJlIC0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwOwogICAgIG1fY29udGV4
dC0+YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKIAotICAgIGlmIChtX2RyYXdpbmdCdWZmZXIpCi0g
ICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0QWN0aXZlVGV4dHVyZVVuaXQodGV4dHVyZSk7Ci0K
ICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCkBAIC05NDIsMTAgKzkz
OSw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kVGV4dHVyZShHQzNEZW51bSB0
YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwKICAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJEKSB7CiAgICAgICAgIG1fdGV4dHVyZVVuaXRzW21fYWN0aXZl
VGV4dHVyZVVuaXRdLm1fdGV4dHVyZTJEQmluZGluZyA9IHRleHR1cmU7CiAgICAgICAgIG1heExl
dmVsID0gbV9tYXhUZXh0dXJlTGV2ZWw7Ci0KLSAgICAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlciAm
JiAhbV9hY3RpdmVUZXh0dXJlVW5pdCkKLSAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0
VGV4dHVyZTJEQmluZGluZyhvYmplY3RPclplcm8odGV4dHVyZSkpOwotCiAgICAgfSBlbHNlIGlm
ICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9NQVApIHsKICAgICAg
ICAgbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3ViZU1hcEJp
bmRpbmcgPSB0ZXh0dXJlOwogICAgICAgICBtYXhMZXZlbCA9IG1fbWF4Q3ViZU1hcFRleHR1cmVM
ZXZlbDsKQEAgLTEzMTQsMTAgKzEzMDcsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGUKICAg
ICB9CiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoKTsKICAgICBpZiAoaXNSZXNvdXJjZVNhZmUoKSkg
ewotICAgICAgICBTY29wZWREcmF3aW5nQnVmZmVyQmluZGVyIGJpbmRlcihtX2RyYXdpbmdCdWZm
ZXIuZ2V0KCksIG1fZnJhbWVidWZmZXJCaW5kaW5nLmdldCgpKTsKKyAgICAgICAgU2NvcGVkRHJh
d2luZ0J1ZmZlckJpbmRlciBiaW5kZXIobV9kcmF3aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1lYnVm
ZmVyQmluZGluZy5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKICAgICAgICAgbV9jb250ZXh0LT5j
b3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyKTsKICAgICB9IGVsc2UgewotICAgICAgICBTY29wZWREcmF3aW5nQnVm
ZmVyQmluZGVyIGJpbmRlcihtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIG1fZnJhbWVidWZmZXJCaW5k
aW5nLmdldCgpKTsKKyAgICAgICAgU2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlciBiaW5kZXIobV9k
cmF3aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSwgbV9jb250ZXh0
LmdldCgpKTsKICAgICAgICAgR0MzRGludCBjbGlwcGVkWCwgY2xpcHBlZFk7CiAgICAgICAgIEdD
M0RzaXplaSBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQ7CiAgICAgICAgIGlmIChjbGlwMkQo
eCwgeSwgd2lkdGgsIGhlaWdodCwgZ2V0Qm91bmRGcmFtZWJ1ZmZlcldpZHRoKCksIGdldEJvdW5k
RnJhbWVidWZmZXJIZWlnaHQoKSwgJmNsaXBwZWRYLCAmY2xpcHBlZFksICZjbGlwcGVkV2lkdGgs
ICZjbGlwcGVkSGVpZ2h0KSkgewpAQCAtMTM2MCw3ICsxMzUzLDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MKICAgICB9CiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoKTsKICAgICBpZiAoaXNSZXNv
dXJjZVNhZmUoKSkgewotICAgICAgICBTY29wZWREcmF3aW5nQnVmZmVyQmluZGVyIGJpbmRlciht
X2RyYXdpbmdCdWZmZXIuZ2V0KCksIG1fZnJhbWVidWZmZXJCaW5kaW5nLmdldCgpKTsKKyAgICAg
ICAgU2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlciBiaW5kZXIobV9kcmF3aW5nQnVmZmVyLmdldCgp
LCBtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKICAgICAgICAg
bV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKICAgICB9IGVsc2UgewogICAgICAgICBHQzNEaW50
IGNsaXBwZWRYLCBjbGlwcGVkWTsKQEAgLTEzODUsMTIgKzEzNzgsMTIgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fY29udGV4dC0+dGV4U3Vi
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHR5cGUsIHplcm8uZ2V0KCkpOwogICAgICAgICAgICAgaWYgKGNsaXBwZWRXaWR0aCA+
IDAgJiYgY2xpcHBlZEhlaWdodCA+IDApIHsKLSAgICAgICAgICAgICAgICBTY29wZWREcmF3aW5n
QnVmZmVyQmluZGVyIGJpbmRlcihtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIG1fZnJhbWVidWZmZXJC
aW5kaW5nLmdldCgpKTsKKyAgICAgICAgICAgICAgICBTY29wZWREcmF3aW5nQnVmZmVyQmluZGVy
IGJpbmRlcihtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIG1fZnJhbWVidWZmZXJCaW5kaW5nLmdldCgp
LCBtX2NvbnRleHQuZ2V0KCkpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1
YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCArIGNsaXBwZWRYIC0geCwgeW9mZnNldCAr
IGNsaXBwZWRZIC0geSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsaXBwZWRYLCBjbGlwcGVkWSwgY2xpcHBlZFdpZHRoLCBjbGlwcGVkSGVpZ2h0KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFNjb3BlZERyYXdpbmdC
dWZmZXJCaW5kZXIgYmluZGVyKG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwgbV9mcmFtZWJ1ZmZlckJp
bmRpbmcuZ2V0KCkpOworICAgICAgICAgICAgU2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlciBiaW5k
ZXIobV9kcmF3aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSwgbV9j
b250ZXh0LmdldCgpKTsKICAgICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xNjAxLDExICsxNTk0LDggQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmRpc2FibGUoR0MzRGVudW0gY2FwKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0
KCkgfHwgIXZhbGlkYXRlQ2FwYWJpbGl0eSgiZGlzYWJsZSIsIGNhcCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBpZiAoY2FwID09IEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpIHsKKyAg
ICBpZiAoY2FwID09IEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpCiAgICAgICAgIG1f
c2Npc3NvckVuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlcikKLSAg
ICAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0U2Npc3NvckVuYWJsZWQobV9zY2lzc29yRW5h
YmxlZCk7Ci0gICAgfQogICAgIG1fY29udGV4dC0+ZGlzYWJsZShjYXApOwogICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CkBAIC0xOTQ2LDExICsxOTM2LDggQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuYWJsZShHQzNEZW51bSBjYXApCiB7CiAgICAgaWYgKGlz
Q29udGV4dExvc3QoKSB8fCAhdmFsaWRhdGVDYXBhYmlsaXR5KCJlbmFibGUiLCBjYXApKQogICAg
ICAgICByZXR1cm47Ci0gICAgaWYgKGNhcCA9PSBHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9U
RVNUKSB7CisgICAgaWYgKGNhcCA9PSBHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKQog
ICAgICAgICBtX3NjaXNzb3JFbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1fZHJhd2luZ0J1
ZmZlcikKLSAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0U2Npc3NvckVuYWJsZWQobV9z
Y2lzc29yRW5hYmxlZCk7Ci0gICAgfQogICAgIG1fY29udGV4dC0+ZW5hYmxlKGNhcCk7CiAgICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTMxODcsNyArMzE3NCw3IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGlu
dCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDCiAgICAgdm9pZCogZGF0YSA9IHBpeGVscy0+YmFzZUFk
ZHJlc3MoKTsKIAogICAgIHsKLSAgICAgICAgU2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlciBiaW5k
ZXIobV9kcmF3aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSk7Cisg
ICAgICAgIFNjb3BlZERyYXdpbmdCdWZmZXJCaW5kZXIgYmluZGVyKG1fZHJhd2luZ0J1ZmZlci5n
ZXQoKSwgbV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiAgICAg
ICAgIG1fY29udGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIGRhdGEpOwogICAgIH0KIApAQCAtNTM0Nyw3ICs1MzM0LDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6Om1heWJlUmVzdG9yZUNvbnRleHQoVGltZXI8V2ViR0xSZW5kZXJpbmdDb250
ZXh0PiopCiAgICAgLy8gQ29uc3RydWN0IGEgbmV3IGRyYXdpbmcgYnVmZmVyIHdpdGggdGhlIG5l
dyBHcmFwaGljc0NvbnRleHQzRC4KICAgICBpZiAobV9kcmF3aW5nQnVmZmVyKSB7CiAgICAgICAg
IG1fZHJhd2luZ0J1ZmZlci0+ZGlzY2FyZFJlc291cmNlcygpOwotICAgICAgICBtX2RyYXdpbmdC
dWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgbV9kcmF3aW5nQnVm
ZmVyLT5zaXplKCksICFtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKTsKKyAgICAg
ICAgbV9kcmF3aW5nQnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCks
IG1fZHJhd2luZ0J1ZmZlci0+c2l6ZSgpLCAhbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1
ZmZlciwgbV9hdHRyaWJ1dGVzLmFscGhhKTsKICAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5iaW5k
KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0RyYXdpbmdCdWZmZXJCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRHJhd2luZ0J1ZmZlckJsYWNrQmVycnkuY3Bw
CmluZGV4IGM1MzEwOGMwMGExMWQ3NjBjNTEyMjZlZTlkNzVkOGUyZTU3YmFiMmUuLmE1NmM5NDc1
N2YxYmI3MjNkMThmOGVkZmEzNzRkNDhkNzQyZmU1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRHJhd2luZ0J1ZmZlckJsYWNrQmVycnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRHJh
d2luZ0J1ZmZlckJsYWNrQmVycnkuY3BwCkBAIC04Niw3ICs4Niw3IEBAIERyYXdpbmdCdWZmZXI6
On5EcmF3aW5nQnVmZmVyKCkKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
LXZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcigpCit2b2lkIERyYXdp
bmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIoR3JhcGhpY3NDb250ZXh0M0QqKQogewog
ICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9EcmF3aW5nQnVmZmVyQ2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRHJhd2luZ0J1ZmZlckNhaXJv
LmNwcAppbmRleCAwNjdiOWM3YjM2MjVmYzRiMjQyNWUyZTk2MTY3ZmI5YzUxNjBjNjFhLi5iYmI2
Y2IwY2NiY2RiMzY5MTQxODI1ZjI3Y2ViOWJkOTkxYjM2YTMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9EcmF3aW5nQnVmZmVyQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0RyYXdpbmdCdWZmZXJD
YWlyby5jcHAKQEAgLTM3LDEzICszNywxMiBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJbnRTaXplJiBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBzZXBhcmF0ZUJhY2tpbmdUZXh0dXJlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlcGFyYXRlQmFja2luZ1RleHR1cmUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWxwaGEpCiAgICAgOiBtX3NlcGFyYXRlQmFj
a2luZ1RleHR1cmUoc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkKLSAgICAsIG1fc2Npc3NvckVuYWJs
ZWQoZmFsc2UpCi0gICAgLCBtX3RleHR1cmUyREJpbmRpbmcoMCkKLSAgICAsIG1fYWN0aXZlVGV4
dHVyZVVuaXQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKQogICAgICwgbV9jb250ZXh0KGNv
bnRleHQpCiAgICAgLCBtX3NpemUoLTEsIC0xKQorICAgICwgbV9hbHBoYShhbHBoYSkKICAgICAs
IG1fbXVsdGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQobXVsdGlzYW1wbGVFeHRlbnNpb25TdXBw
b3J0ZWQpCiAgICAgLCBtX3BhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRlZChwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQpCiAgICAgLCBtX2Zibyhjb250ZXh0LT5j
cmVhdGVGcmFtZWJ1ZmZlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAK
aW5kZXggNTUxYWRmNzY5NzYyOTVjOTk2MDMyMDQyM2Y5NjE5OTQyMGI1NDc5OS4uODI4OTJlYjgy
Y2Y1NTlmZTMzYzNlOWJkZWI4ZTQ1YjFkODZkNzhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVm
ZmVyQ2hyb21pdW0uY3BwCkBAIC01OSwxMyArNTksMTIgQEAgRHJhd2luZ0J1ZmZlcjo6RHJhd2lu
Z0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBtdWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzZXBhcmF0ZUJhY2tpbmdUZXh0dXJl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFscGhhKQogICAgIDogbV9zZXBh
cmF0ZUJhY2tpbmdUZXh0dXJlKHNlcGFyYXRlQmFja2luZ1RleHR1cmUpCi0gICAgLCBtX3NjaXNz
b3JFbmFibGVkKGZhbHNlKQotICAgICwgbV90ZXh0dXJlMkRCaW5kaW5nKDApCi0gICAgLCBtX2Fj
dGl2ZVRleHR1cmVVbml0KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkKICAgICAsIG1fY29u
dGV4dChjb250ZXh0KQogICAgICwgbV9zaXplKC0xLCAtMSkKKyAgICAsIG1fYWxwaGEoYWxwaGEp
CiAgICAgLCBtX211bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkKG11bHRpc2FtcGxlRXh0ZW5z
aW9uU3VwcG9ydGVkKQogICAgICwgbV9wYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0
ZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkKQogICAgICwgbV9mYm8oMCkK
QEAgLTEwOSwzMyArMTA4LDI5IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6aW5pdGlhbGl6ZShjb25z
dCBJbnRTaXplJiBzaXplKQogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
dm9pZCBEcmF3aW5nQnVmZmVyOjpwdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCkKK3ZvaWQgRHJhd2lu
Z0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCkKIHsKLSAgICBpZiAoIW1fY29udGV4dCkKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKG11bHRpc2FtcGxlKCkpCi0gICAgICAg
IGNvbW1pdCgpOworICAgICAgICBjb21taXQoY29udGV4dCk7CiAKICAgICBpZiAobV9zZXBhcmF0
ZUJhY2tpbmdUZXh0dXJlKSB7Ci0gICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwotCi0gICAgICAgIC8vIFRoaXMg
cGF0aCBhbHdheXMgdXNlcyBURVhUVVJFMCwgYW5kIHJlc3RvcmVzIGl0cyBzdGF0ZSBiZWxvdy4K
LSAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFMCk7Ci0gICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIG1fYmFja2luZ0NvbG9yQnVmZmVyKTsKKyAgICAgICAgY29udGV4dC0+Ymlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogCi0g
ICAgICAgIHVuc2lnbmVkIGNvbG9yRm9ybWF0ID0gbV9jb250ZXh0LT5nZXRDb250ZXh0QXR0cmli
dXRlcygpLmFscGhhID8gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEgOiBHcmFwaGljc0NvbnRleHQz
RDo6UkdCOwotICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCAwLCBjb2xvckZvcm1hdCwgMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNp
emUoKS5oZWlnaHQoKSwgMCk7CisgICAgICAgIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkUwKTsKKyAgICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fYmFja2luZ0NvbG9yQnVmZmVyKTsKIAotICAg
ICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBtX3RleHR1cmUyREJpbmRpbmcpOwotICAgICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUo
bV9hY3RpdmVUZXh0dXJlVW5pdCk7CisgICAgICAgIHVuc2lnbmVkIGNvbG9yRm9ybWF0ID0gbV9h
bHBoYSA/IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBIDogR3JhcGhpY3NDb250ZXh0M0Q6OlJHQjsK
KyAgICAgICAgY29udGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIDAsIGNvbG9yRm9ybWF0LCAwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdo
dCgpLCAwKTsKICAgICB9CiAKICAgICBpZiAobXVsdGlzYW1wbGUoKSkKICAgICAgICAgYmluZCgp
OwogCi0gICAgbV9jb250ZXh0LT5mbHVzaCgpOworICAgIGNvbnRleHQtPmZsdXNoKCk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZGE1NWYzYWMwNmM0
ZDVjNDZlZGFjMTc5ZDg0ZGY2MzhhYzIxOTllYy4uYzE1MzI4ZTk0YjMzZjQyMDM5ZmU0NWQ4Mzc0
NjNmMjY4ZmI3NDljMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCkBAIC03Niwx
MCArNzYsMTAgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogLyogb2NjbHUKICAgICBpZiAoIWRyYXdzQ29udGVu
dCgpIHx8ICFtX25lZWRzRGlzcGxheSB8fCAhbV90ZXh0dXJlVXBkYXRlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZHJhd2luZ0J1ZmZlcigpLT5wdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCk7CiAg
ICAgY29udGV4dCgpLT5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiAgICAgbV9uZWVkc0Rpc3BsYXkg
PSBmYWxzZTsKICAgICBtX3RleHR1cmVVcGRhdGVkID0gZmFsc2U7CisgICAgY29udGV4dCgpLT5m
bHVzaCgpOwogICAgIG1fY29udGV4dExvc3QgPSBjb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJP
UjsKIH0KIApAQCAtOTUsNiArOTUsNyBAQCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDbwogICAgICAg
ICByZW5kZXJlckNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0
M0Q6OkNMQU1QX1RPX0VER0UpOwogICAgICAgICBtX3RleHR1cmVDaGFuZ2VkID0gZmFsc2U7CiAg
ICAgfQorICAgIGRyYXdpbmdCdWZmZXIoKS0+cHVibGlzaFRvUGxhdGZvcm1MYXllcihyZW5kZXJl
ckNvbnRleHQpOwogfQogCiB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNU
byhDQ0xheWVySW1wbCogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCmluZGV4IGRiOGQzZDkx
YzE4ODg1MDgxNmZiZTA2M2FkNjFhNTNlMWQ1OWUwZDUuLjkyNmQ4OGI5ZGEzNWI1NDQzZTg1NTU0
OWJhMzI0ZGZiMDAwNzgyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCkBAIC0xMjYsNyArMTI2
LDcgQEAgdm9pZCBGRUN1c3RvbUZpbHRlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAK
ICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVT
LCBtX21lc2gtPmluZGljZXNDb3VudCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hP
UlQsIDApOwogICAgIAotICAgIG1fZHJhd2luZ0J1ZmZlci0+Y29tbWl0KCk7CisgICAgbV9kcmF3
aW5nQnVmZmVyLT5jb21taXQobV9jb250ZXh0LmdldCgpKTsKIAogICAgIFJlZlB0cjxJbWFnZURh
dGE+IGltYWdlRGF0YSA9IG1fY29udGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURh
dGEobV9kcmF3aW5nQnVmZmVyLmdldCgpKTsKICAgICBCeXRlQXJyYXkqIGdwdVJlc3VsdCA9IGlt
YWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBGRUN1c3Rv
bUZpbHRlcjo6aW5pdGlhbGl6ZUNvbnRleHQoY29uc3QgSW50U2l6ZSYgY29udGV4dFNpemUpCiAg
ICAgCiAgICAgQVNTRVJUKCFtX2NvbnRleHQuZ2V0KCkpOwogICAgIG1fY29udGV4dCA9IEdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0cmlidXRlcywgbV9ob3N0V2luZG93LCBHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuKTsKLSAgICBtX2RyYXdpbmdCdWZmZXIgPSBEcmF3aW5n
QnVmZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBjb250ZXh0U2l6ZSwgIWF0dHJpYnV0ZXMu
cHJlc2VydmVEcmF3aW5nQnVmZmVyKTsKKyAgICBtX2RyYXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVm
ZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBjb250ZXh0U2l6ZSwgIWF0dHJpYnV0ZXMucHJl
c2VydmVEcmF3aW5nQnVmZmVyLCB0cnVlKTsKICAgICAKICAgICBtX3NoYWRlciA9IG1fcHJvZ3Jh
bS0+Y3JlYXRlU2hhZGVyV2l0aENvbnRleHQobV9jb250ZXh0LmdldCgpKTsKICAgICBtX21lc2gg
PSBDdXN0b21GaWx0ZXJNZXNoOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBtX21lc2hDb2x1bW5z
LCBtX21lc2hSb3dzLCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAppbmRleCA0OGRkMGEzYzRkOGM5MjJhOTNmMDE1YzA0
YjE5ZWZhN2RmNmMxYTlkLi41NGExZjAxODA2MTI3YWNlMjIyYmYzYTUzN2MyMDc4MjU0M2NmZWUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2lu
Z0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0Ry
YXdpbmdCdWZmZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBpbnQgc19tYXhpbXVtUmVz
b3VyY2VVc2VQaXhlbHMgPSAwOwogc3RhdGljIGludCBzX2N1cnJlbnRSZXNvdXJjZVVzZVBpeGVs
cyA9IDA7CiBzdGF0aWMgY29uc3QgZmxvYXQgc19yZXNvdXJjZUFkanVzdGVkUmF0aW8gPSAwLjU7
CiAKLVBhc3NSZWZQdHI8RHJhd2luZ0J1ZmZlcj4gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIHNlcGFyYXRl
QmFja2luZ1RleHR1cmUpCitQYXNzUmVmUHRyPERyYXdpbmdCdWZmZXI+IERyYXdpbmdCdWZmZXI6
OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Ym9vbCBzZXBhcmF0ZUJhY2tpbmdUZXh0dXJlLCBib29sIGFscGhhKQogewogICAgIEV4dGVuc2lv
bnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKICAgICBib29sIG11
bHRpc2FtcGxlU3VwcG9ydGVkID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0FOR0xFX2ZyYW1l
YnVmZmVyX2JsaXQiKSAmJiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZm
ZXJfbXVsdGlzYW1wbGUiKSAmJiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX3JnYjhfcmdi
YTgiKTsKQEAgLTYzLDcgKzYzLDcgQEAgUGFzc1JlZlB0cjxEcmF3aW5nQnVmZmVyPiBEcmF3aW5n
QnVmZmVyOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnMKICAgICBib29s
IHBhY2tlZERlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9P
RVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKICAgICBpZiAocGFja2VkRGVwdGhTdGVuY2lsU3Vw
cG9ydGVkKQogICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKTsKLSAgICBSZWZQdHI8RHJhd2luZ0J1ZmZlcj4gZHJhd2luZ0J1ZmZl
ciA9IGFkb3B0UmVmKG5ldyBEcmF3aW5nQnVmZmVyKGNvbnRleHQsIHNpemUsIG11bHRpc2FtcGxl
U3VwcG9ydGVkLCBwYWNrZWREZXB0aFN0ZW5jaWxTdXBwb3J0ZWQsIHNlcGFyYXRlQmFja2luZ1Rl
eHR1cmUpKTsKKyAgICBSZWZQdHI8RHJhd2luZ0J1ZmZlcj4gZHJhd2luZ0J1ZmZlciA9IGFkb3B0
UmVmKG5ldyBEcmF3aW5nQnVmZmVyKGNvbnRleHQsIHNpemUsIG11bHRpc2FtcGxlU3VwcG9ydGVk
LCBwYWNrZWREZXB0aFN0ZW5jaWxTdXBwb3J0ZWQsIHNlcGFyYXRlQmFja2luZ1RleHR1cmUsIGFs
cGhhKSk7CiAgICAgcmV0dXJuIChkcmF3aW5nQnVmZmVyLT5tX2NvbnRleHQpID8gZHJhd2luZ0J1
ZmZlci5yZWxlYXNlKCkgOiAwOwogfQogCkBAIC0zMzIsMzMgKzMzMiwyMiBAQCBib29sIERyYXdp
bmdCdWZmZXI6OnJlc2V0KGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgRHJhd2luZ0J1ZmZlcjo6Y29tbWl0KGxvbmcgeCwgbG9uZyB5LCBsb25nIHdp
ZHRoLCBsb25nIGhlaWdodCkKK3ZvaWQgRHJhd2luZ0J1ZmZlcjo6Y29tbWl0KEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBsb25nIHgsIGxvbmcgeSwgbG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQp
CiB7Ci0gICAgaWYgKCFtX2NvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICh3aWR0
aCA8IDApCiAgICAgICAgIHdpZHRoID0gbV9zaXplLndpZHRoKCk7CiAgICAgaWYgKGhlaWdodCA8
IDApCiAgICAgICAgIGhlaWdodCA9IG1fc2l6ZS5oZWlnaHQoKTsKIAotICAgIG1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7
CiAKICAgICBpZiAobV9tdWx0aXNhbXBsZUZCTykgewotICAgICAgICBtX2NvbnRleHQtPmJpbmRG
cmFtZWJ1ZmZlcihFeHRlbnNpb25zM0Q6OlJFQURfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVG
Qk8pOwotICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihFeHRlbnNpb25zM0Q6OkRS
QVdfRlJBTUVCVUZGRVIsIG1fZmJvKTsKLQotICAgICAgICBpZiAobV9zY2lzc29yRW5hYmxlZCkK
LSAgICAgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NP
Ul9URVNUKTsKKyAgICAgICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEV4dGVuc2lvbnMzRDo6
UkVBRF9GUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGNvbnRleHQtPmJp
bmRGcmFtZWJ1ZmZlcihFeHRlbnNpb25zM0Q6OkRSQVdfRlJBTUVCVUZGRVIsIG1fZmJvKTsKIAog
ICAgICAgICAvLyBVc2UgTkVBUkVTVCwgYmVjYXVzZSB0aGVyZSBpcyBubyBzY2FsZSBwZXJmb3Jt
ZWQgZHVyaW5nIHRoZSBibGl0LgotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
YmxpdEZyYW1lYnVmZmVyKHgsIHksIHdpZHRoLCBoZWlnaHQsIHgsIHksIHdpZHRoLCBoZWlnaHQs
IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklULCBHcmFwaGljc0NvbnRleHQzRDo6
TkVBUkVTVCk7Ci0KLSAgICAgICAgaWYgKG1fc2Npc3NvckVuYWJsZWQpCi0gICAgICAgICAgICBt
X2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKTsKKyAgICAg
ICAgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5ibGl0RnJhbWVidWZmZXIoeCwgeSwgd2lkdGgs
IGhlaWdodCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JV
RkZFUl9CSVQsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKTsKICAgICB9Ci0KLSAgICBtX2Nv
bnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
ZmJvKTsKIH0KIAogYm9vbCBEcmF3aW5nQnVmZmVyOjptdWx0aXNhbXBsZSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIu
aAppbmRleCAwMzlhZjVjNjg2ZjMzZDkyMjBjZDczMTViZGVhN2QzZjBkYmFmNTkwLi41NWRjNDQ4
YTEwYTA5N2UzNTFjNzEwMTc3NDg2NzBiYzYzYTNkYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgKQEAgLTU1LDcgKzU1
LDcgQEAgY2xhc3MgV2ViR0xMYXllckNocm9taXVtOwogLy8gcmVzdWx0cyB0byBhIFBsYXRmb3Jt
TGF5ZXIgZm9yIGNvbXBvc2l0aW5nLgogY2xhc3MgRHJhd2luZ0J1ZmZlciA6IHB1YmxpYyBSZWZD
b3VudGVkPERyYXdpbmdCdWZmZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxE
cmF3aW5nQnVmZmVyPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJiwg
Ym9vbCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RHJhd2luZ0J1ZmZlcj4gY3JlYXRlKEdyYXBo
aWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYsIGJvb2wgc2VwZXJhdGVCYWNraW5nVGV4dHVy
ZSwgYm9vbCBhbHBoYSk7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCiAg
ICAgfkRyYXdpbmdCdWZmZXIoKTsKQEAgLTc3LDIxICs3Nyw5IEBAIHB1YmxpYzoKICAgICAKICAg
ICB2b2lkIHJlc2l6ZURlcHRoU3RlbmNpbChpbnQgc2FtcGxlQ291bnQpOwogCi0gICAgLy8gQ29w
aWVzIHRoZSBtdWx0aXNhbXBsZSBjb2xvciBidWZmZXIgdG8gdGhlIG5vcm1hbCBjb2xvciBidWZm
ZXIgYW5kIGxlYXZlcyBtX2ZibyBib3VuZAotICAgIHZvaWQgY29tbWl0KGxvbmcgeCA9IDAsIGxv
bmcgeSA9IDAsIGxvbmcgd2lkdGggPSAtMSwgbG9uZyBoZWlnaHQgPSAtMSk7Ci0KLSAgICAvLyBj
b21taXQgc2hvdWxkIGNvcHkgdGhlIGZ1bGwgbXVsdGlzYW1wbGUgYnVmZmVyLCBhbmQgbm90IHJl
c3BlY3QgdGhlCi0gICAgLy8gY3VycmVudCBzY2lzc29yIGJvdW5kcy4gVHJhY2sgdGhlIHN0YXRl
IG9mIHRoZSBzY2lzc29yIHRlc3Qgc28gdGhhdCBpdAotICAgIC8vIGNhbiBiZSBkaXNhYmxlZCBk
dXJpbmcgY2FsbHMgdG8gY29tbWl0LgotICAgIHZvaWQgc2V0U2Npc3NvckVuYWJsZWQoYm9vbCBz
Y2lzc29yRW5hYmxlZCkgeyBtX3NjaXNzb3JFbmFibGVkID0gc2Npc3NvckVuYWJsZWQ7IH0KLQot
ICAgIC8vIFRoZSBEcmF3aW5nQnVmZmVyIG5lZWRzIHRvIHRyYWNrIHRoZSB0ZXh0dXJlIGJvdW5k
IHRvIHRleHR1cmUgdW5pdCAwLgotICAgIC8vIFRoZSBib3VuZCB0ZXh0dXJlIGlzIHRyYWNrZWQg
dG8gYXZvaWQgY29zdGx5IHF1ZXJpZXMgZHVyaW5nIHJlbmRlcmluZy4KLSAgICB2b2lkIHNldFRl
eHR1cmUyREJpbmRpbmcoR0MzRGludCB0ZXh0dXJlKSB7IG1fdGV4dHVyZTJEQmluZGluZyA9IHRl
eHR1cmU7IH0KLQotICAgIC8vIFRyYWNrIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRleHR1cmUgdW5p
dC4gVGV4dHVyZSB1bml0IDAgaXMgdXNlZCBhcyBob3N0IGZvciBhIHNjcmF0Y2gKLSAgICAvLyB0
ZXh0dXJlLgotICAgIHZvaWQgc2V0QWN0aXZlVGV4dHVyZVVuaXQoR0MzRGludCB0ZXh0dXJlVW5p
dCkgeyBtX2FjdGl2ZVRleHR1cmVVbml0ID0gdGV4dHVyZVVuaXQ7IH0KKyAgICAvLyBDb3BpZXMg
dGhlIG11bHRpc2FtcGxlIGNvbG9yIGJ1ZmZlciB0byB0aGUgbm9ybWFsIGNvbG9yIGJ1ZmZlciBp
biB0aGUgcGFzc2VkLWluIGNvbnRleHQuCisgICAgLy8gRGVzdHJ1Y3RpdmUgb2YgdGhlIGZyYW1l
YnVmZmVyIGJpbmRpbmcgb24gdGhlIHBhc3NlZC1pbiBjb250ZXh0LgorICAgIHZvaWQgY29tbWl0
KEdyYXBoaWNzQ29udGV4dDNEKiwgbG9uZyB4ID0gMCwgbG9uZyB5ID0gMCwgbG9uZyB3aWR0aCA9
IC0xLCBsb25nIGhlaWdodCA9IC0xKTsKIAogICAgIGJvb2wgbXVsdGlzYW1wbGUoKSBjb25zdDsK
IApAQCAtMTA2LDcgKzk0LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKTsKLSAgICB2b2lkIHB1
Ymxpc2hUb1BsYXRmb3JtTGF5ZXIoKTsKKyAgICB2b2lkIHB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIo
R3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0Nh
bnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0Kik7CiAjZW5kaWYKIApAQCAtMTE0LDE3ICsxMDIs
MTUgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIERyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250
ZXh0M0QqLCBjb25zdCBJbnRTaXplJiwgYm9vbCBtdWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRl
ZCwKLSAgICAgICAgICAgICAgICAgIGJvb2wgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3Vw
cG9ydGVkLCBib29sIHNlcGFyYXRlQmFja2luZ1RleHR1cmUpOworICAgICAgICAgICAgICAgICAg
Ym9vbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQsIGJvb2wgc2VwYXJhdGVC
YWNraW5nVGV4dHVyZSwgYm9vbCBhbHBoYSk7CiAKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3Qg
SW50U2l6ZSYpOwogCiAgICAgYm9vbCBtX3NlcGFyYXRlQmFja2luZ1RleHR1cmU7Ci0gICAgYm9v
bCBtX3NjaXNzb3JFbmFibGVkOwotICAgIFBsYXRmb3JtM0RPYmplY3QgbV90ZXh0dXJlMkRCaW5k
aW5nOwotICAgIEdDM0RlbnVtIG1fYWN0aXZlVGV4dHVyZVVuaXQ7CiAKICAgICBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKICAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBib29s
IG1fYWxwaGE7CiAgICAgYm9vbCBtX211bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkOwogICAg
IGJvb2wgbV9wYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQ7CiAgICAgUGxhdGZv
cm0zRE9iamVjdCBtX2ZibzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbQppbmRleCAzZmRhNmEzMjZi
ZTJjMGU1MjBjODNiMjhiN2Y1NTcwYzU1ZWMzODU5Li5mOTJmZTM5ZTE5YmMyN2Y4OGFmOGE2ZDY3
MzNlZjkwZWU1NGNlMzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCkBAIC00MCwxMyArNDAs
MTQgQEAgRHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtdWx0aXNhbXBsZUV4dGVuc2lvblN1
cHBvcnRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBzZXBhcmF0ZUJhY2tpbmdUZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGFscGhhKQogICAgIDogbV9zZXBhcmF0ZUJhY2tpbmdUZXh0dXJlKHNlcGFyYXRlQmFj
a2luZ1RleHR1cmUpCi0gICAgLCBtX3NjaXNzb3JFbmFibGVkKGZhbHNlKQogICAgICwgbV90ZXh0
dXJlMkRCaW5kaW5nKDApCiAgICAgLCBtX2FjdGl2ZVRleHR1cmVVbml0KEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFMCkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9zaXplKC0x
LCAtMSkKKyAgICAsIG1fYWxwaGEoYWxwaGEpCiAgICAgLCBtX211bHRpc2FtcGxlRXh0ZW5zaW9u
U3VwcG9ydGVkKG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkKQogICAgICwgbV9wYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
U3VwcG9ydGVkKQogICAgICwgbV9mYm8oY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5n
QnVmZmVyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0Ry
YXdpbmdCdWZmZXJRdC5jcHAKaW5kZXggYTU5MmVkY2Y3NmQ2YWZiYzU0OTk3MWMzOTIwNDNlZWMz
NmQ2M2VkZC4uMTgzZDBjOTMyOTZmYWJjODk3YjlkNjFiYWYzNDI4YWJlZGU4YThkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdCdWZm
ZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0Ry
YXdpbmdCdWZmZXJRdC5jcHAKQEAgLTM1LDEzICszNSwxMiBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3
aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBJbnRTaXplJiBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRlZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzZXBhcmF0ZUJhY2tpbmdUZXh0dXJl
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlcGFyYXRlQmFja2luZ1RleHR1
cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWxwaGEpCiAgICAgOiBtX3Nl
cGFyYXRlQmFja2luZ1RleHR1cmUoc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkKLSAgICAsIG1fc2Np
c3NvckVuYWJsZWQoZmFsc2UpCi0gICAgLCBtX3RleHR1cmUyREJpbmRpbmcoMCkKLSAgICAsIG1f
YWN0aXZlVGV4dHVyZVVuaXQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKQogICAgICwgbV9j
b250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3NpemUoLTEsIC0xKQorICAgICwgbV9hbHBoYShhbHBo
YSkKICAgICAsIG1fbXVsdGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQobXVsdGlzYW1wbGVFeHRl
bnNpb25TdXBwb3J0ZWQpCiAgICAgLCBtX3BhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBv
cnRlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQpCiAgICAgLCBtX2Zibyhj
b250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJHTExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViR0xMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNjZlYTY5MGZh
YjNmYjU0YWE4MzJjOWEyYWE4MWNiOWM1OTMyMmIzYS4uOGQ0NTE3OTZlNGMwNzBlNjc5NzRkNDVk
ZjRjNGJiMTk4NTUyMjdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJHTExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYkdMTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01MCwxNCArNTAsMTQgQEAgVEVT
VChXZWJHTExheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVGb3JtYXRzKQogICAgIFJlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gb3BhcXVlQ29udGV4dCA9IGNyZWF0ZUNvbXBvc2l0b3JNb2NrR3JhcGhp
Y3NDb250ZXh0M0Qob3BhcXVlQXR0cnMpOwogICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRleHQp
OwogCi0gICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGFscGhhQ29udGV4dC5nZXQo
KSwgSW50U2l6ZSgpLCBmYWxzZSk7CisgICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRl
KGFscGhhQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCBmYWxzZSwgdHJ1ZSk7CiAgICAgRVhQRUNU
X0ZBTFNFKGJ1ZmZlci0+cGxhdGZvcm1MYXllcigpLT5vcGFxdWUoKSk7Ci0gICAgYnVmZmVyID0g
RHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGFscGhhQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCB0cnVl
KTsKKyAgICBidWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoYWxwaGFDb250ZXh0LmdldCgp
LCBJbnRTaXplKCksIHRydWUsIHRydWUpOwogICAgIEVYUEVDVF9GQUxTRShidWZmZXItPnBsYXRm
b3JtTGF5ZXIoKS0+b3BhcXVlKCkpOwogCi0gICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3Jl
YXRlKG9wYXF1ZUNvbnRleHQuZ2V0KCksIEludFNpemUoKSwgZmFsc2UpOworICAgIGJ1ZmZlciA9
IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShvcGFxdWVDb250ZXh0LmdldCgpLCBJbnRTaXplKCksIGZh
bHNlLCBmYWxzZSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5wbGF0Zm9ybUxheWVyKCktPm9w
YXF1ZSgpKTsKLSAgICBidWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUob3BhcXVlQ29udGV4
dC5nZXQoKSwgSW50U2l6ZSgpLCB0cnVlKTsKKyAgICBidWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpj
cmVhdGUob3BhcXVlQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCB0cnVlLCBmYWxzZSk7CiAgICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5wbGF0Zm9ybUxheWVyKCktPm9wYXF1ZSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133955</attachid>
            <date>2012-03-26 18:23:01 -0700</date>
            <delta_ts>2012-03-26 18:53:12 -0700</delta_ts>
            <desc>mac build fix</desc>
            <filename>bug-82275-20120326182300.patch</filename>
            <type>text/plain</type>
            <size>29579</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU2NDBkYmQ3ZmZiMzRj
MmM2M2U5MGQxZDBlNGRkMDU2YjRmZDI5ZS4uZmQ4YjJkODRlOTcwYzQzM2NkZGY4YmI3OTA0Nzcy
NTQzODA5N2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU5IEBACiAyMDEyLTAzLTI2ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViR0wgY29udGVu
dCBzd2FwcGVkIGF0IHdyb25nIHRpbWUgaW4gdGhyZWFkZWQgY29tcG9zaXRpbmcgbW9kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIyNzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZXMg
RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcigpIChhbmQgdGh1cyA6OmNvbW1p
dCgpKSB0byB0YWtlIGEgY29udGV4dCB0byBwZXJmb3JtIHRoZQorICAgICAgICBXZWJHTCBzd2Fw
IGluLCB0eXBpY2FsbHkgdGhlIGNvbXBvc2l0b3IgY29udGV4dC4KKyAgICAgICAgCisgICAgICAg
IERvaW5nIHRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gcmVtb3ZlIGEgbG90IG9mIHN0YXRlIHRyYWNr
aW5nIGZyb20gRHJhd2luZ0J1ZmZlciBzaW5jZSBpdCBkb2Vzbid0IG1hbmlwdWxhdGUgdGhlCisg
ICAgICAgIFdlYkdMIGNvbnRleHQgdG8gc3dhcC4KKworICAgICAgICBJbiBjaHJvbWl1bSBpbiB0
aHJlYWRlZCBjb21wb3NpdGluZyBtb2RlLCB3ZSBzaG91bGQgc3dhcCBXZWJHTCBjb250ZW50IGlu
IHRoZSB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkgY2FsbAorICAgICAgICBub3QgdGhlIHBh
aW50Q29udGVudHNJZkRpcnR5KCkgY2FsbCBzaW5jZSB0aGUgbGF0dGVyIG1heSBiZSBjYWxsZWQg
d2hpbGUgdGhlIHRocmVhZCBpcyBzdGlsbCBkcmF3aW5nIGZyb20gdGhlCisgICAgICAgIGNvbnRl
eHQuIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKSBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGltcGwg
dGhyZWFkIGhhcyBzdG9wcGVkIGRyYXdpbmcgZnJhbWVzLCBidXQgc2luY2UgaXQncworICAgICAg
ICBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQgdGhlIFdlYkdMIGNvbnRleHQgY2Fubm90IGJlIHVz
ZWQsIG9ubHkgdGhlIGNvbXBvc2l0b3IgY29udGV4dCBjYW4gYmUgdXNlZC4KKworICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmFjdGl2ZVRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29weVRleFN1YkltYWdlMkQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5hYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Om1heWJlUmVzdG9yZUNvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRHJhd2luZ0J1ZmZlckJsYWNrQmVycnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1M
YXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRHJhd2luZ0J1ZmZlckNh
aXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnBhaW50Q29u
dGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUN1c3RvbUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRl
cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmls
dGVyOjppbml0aWFsaXplQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0RyYXdpbmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNvbW1pdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaDoKKyAgICAgICAgKERyYXdp
bmdCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1
ZmZlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5nQnVmZmVyUXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcik6CisK
KzIwMTItMDMtMjYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKwogICAg
ICAgICBTY3JvbGxhYmxlIHBsdWdpbnMgbm90IHJlZ2lzdGVyZWQgcHJvcGVybHkgaW4gU2Nyb2xs
aW5nQ29vcmRpbmF0b3IKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgyMTYzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDdhOWMwNDJlNTNk
ZTAwY2RlYjliNmI5OWIxNmJjZjgxYjNhMDg1OS4uZTk2YzRhMmEwZTY3M2QwMzk0NTM4ZDI0OGRk
NDJhNGQ5ZTQwM2M2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNSBA
QAogMjAxMi0wMy0yNiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIFdlYkdMIGNvbnRlbnQgc3dhcHBlZCBhdCB3cm9uZyB0aW1lIGluIHRocmVhZGVkIGNv
bXBvc2l0aW5nIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgyMjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB0ZXN0cy9XZWJHTExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VEVTVCk6CisKKzIwMTItMDMtMjYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVt
Lm9yZz4KKwogICAgICAgICBTY3JvbGxhYmxlIHBsdWdpbnMgbm90IHJlZ2lzdGVyZWQgcHJvcGVy
bHkgaW4gU2Nyb2xsaW5nQ29vcmRpbmF0b3IKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgyMTYzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGQ1ZGExODI5YTZkNDMwYmIy
ZDRjYTI3ZTBkODUyOGRlNDczMDBiMWQuLjA0M2I0N2E4MTBjNzZkM2Y1ZTIwYTQ5NDA4YTE4MzQ3
NzJmMGZjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtODksMTMgKzg5LDEzIEBAIG5hbWVzcGFjZSB7CiAKICAg
ICBjbGFzcyBTY29wZWREcmF3aW5nQnVmZmVyQmluZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IFNjb3BlZERyYXdpbmdCdWZmZXJCaW5kZXIoRHJhd2luZ0J1ZmZlciogZHJhd2luZ0J1ZmZlciwg
V2ViR0xGcmFtZWJ1ZmZlciogZnJhbWVidWZmZXJCaW5kaW5nKQorICAgICAgICBTY29wZWREcmF3
aW5nQnVmZmVyQmluZGVyKERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIsIFdlYkdMRnJhbWVi
dWZmZXIqIGZyYW1lYnVmZmVyQmluZGluZywgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAg
ICAgICAgICAgICA6IG1fZHJhd2luZ0J1ZmZlcihkcmF3aW5nQnVmZmVyKQogICAgICAgICAgICAg
LCBtX2ZyYW1lYnVmZmVyQmluZGluZyhmcmFtZWJ1ZmZlckJpbmRpbmcpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIC8vIENvbW1pdCBEcmF3aW5nQnVmZmVyIGlmIG5lZWRlZCAoZS5nLiwgZm9yIG11
bHRpc2FtcGxpbmcpCiAgICAgICAgICAgICBpZiAoIW1fZnJhbWVidWZmZXJCaW5kaW5nICYmIG1f
ZHJhd2luZ0J1ZmZlcikKLSAgICAgICAgICAgICAgICBtX2RyYXdpbmdCdWZmZXItPmNvbW1pdCgp
OworICAgICAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+Y29tbWl0KGNvbnRleHQpOwogICAg
ICAgICB9CiAKICAgICAgICAgflNjb3BlZERyYXdpbmdCdWZmZXJCaW5kZXIoKQpAQCAtNDM3LDcg
KzQzNyw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KEhU
TUxDYW52YXNFbGVtZW50KiBwYXNzZWRDYW52YXMsIFBhCiAKICNpZiBQTEFURk9STShDSFJPTUlV
TSkKICAgICAvLyBDcmVhdGUgdGhlIERyYXdpbmdCdWZmZXIgYW5kIGluaXRpYWxpemUgdGhlIHBs
YXRmb3JtIGxheWVyLgotICAgIG1fZHJhd2luZ0J1ZmZlciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0
ZShtX2NvbnRleHQuZ2V0KCksIEludFNpemUoY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5o
ZWlnaHQoKSksICFtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKTsKKyAgICBtX2Ry
YXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBJbnRT
aXplKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpLCAhbV9hdHRyaWJ1dGVz
LnByZXNlcnZlRHJhd2luZ0J1ZmZlciwgbV9hdHRyaWJ1dGVzLmFscGhhKTsKICNlbmRpZgogCiAg
ICAgaWYgKG1fZHJhd2luZ0J1ZmZlcikKQEAgLTY5Niw3ICs2OTYsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQogICAgIG1fbWFy
a2VkQ2FudmFzRGlydHkgPSBmYWxzZTsKIAogICAgIGlmIChtX2RyYXdpbmdCdWZmZXIpCi0gICAg
ICAgIG1fZHJhd2luZ0J1ZmZlci0+Y29tbWl0KCk7CisgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+
Y29tbWl0KG1fY29udGV4dC5nZXQoKSk7CiAgICAgbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0NhbnZhcyh0aGlzLCBtX2RyYXdpbmdCdWZmZXIuZ2V0KCkpOwogCiAgICAgaWYgKG1f
ZHJhd2luZ0J1ZmZlcikgewpAQCAtNzExLDcgKzcxMSw3IEBAIFBhc3NSZWZQdHI8SW1hZ2VEYXRh
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRh
KCkKIHsKICAgICBjbGVhcklmQ29tcG9zaXRlZCgpOwogICAgIGlmIChtX2RyYXdpbmdCdWZmZXIp
Ci0gICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+Y29tbWl0KCk7CisgICAgICAgIG1fZHJhd2luZ0J1
ZmZlci0+Y29tbWl0KG1fY29udGV4dC5nZXQoKSk7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gaW1h
Z2VEYXRhID0gbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YShtX2Ry
YXdpbmdCdWZmZXIuZ2V0KCkpOwogCiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlcikgewpAQCAtODA5
LDkgKzgwOSw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphY3RpdmVUZXh0dXJlKEdD
M0RlbnVtIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1fYWN0aXZlVGV4dHVyZVVu
aXQgPSB0ZXh0dXJlIC0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwOwogICAgIG1fY29udGV4
dC0+YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKIAotICAgIGlmIChtX2RyYXdpbmdCdWZmZXIpCi0g
ICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0QWN0aXZlVGV4dHVyZVVuaXQodGV4dHVyZSk7Ci0K
ICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCkBAIC05NDIsMTAgKzkz
OSw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kVGV4dHVyZShHQzNEZW51bSB0
YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwKICAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJEKSB7CiAgICAgICAgIG1fdGV4dHVyZVVuaXRzW21fYWN0aXZl
VGV4dHVyZVVuaXRdLm1fdGV4dHVyZTJEQmluZGluZyA9IHRleHR1cmU7CiAgICAgICAgIG1heExl
dmVsID0gbV9tYXhUZXh0dXJlTGV2ZWw7Ci0KLSAgICAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlciAm
JiAhbV9hY3RpdmVUZXh0dXJlVW5pdCkKLSAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0
VGV4dHVyZTJEQmluZGluZyhvYmplY3RPclplcm8odGV4dHVyZSkpOwotCiAgICAgfSBlbHNlIGlm
ICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9NQVApIHsKICAgICAg
ICAgbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3ViZU1hcEJp
bmRpbmcgPSB0ZXh0dXJlOwogICAgICAgICBtYXhMZXZlbCA9IG1fbWF4Q3ViZU1hcFRleHR1cmVM
ZXZlbDsKQEAgLTEzMTQsMTAgKzEzMDcsMTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGUKICAg
ICB9CiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoKTsKICAgICBpZiAoaXNSZXNvdXJjZVNhZmUoKSkg
ewotICAgICAgICBTY29wZWREcmF3aW5nQnVmZmVyQmluZGVyIGJpbmRlcihtX2RyYXdpbmdCdWZm
ZXIuZ2V0KCksIG1fZnJhbWVidWZmZXJCaW5kaW5nLmdldCgpKTsKKyAgICAgICAgU2NvcGVkRHJh
d2luZ0J1ZmZlckJpbmRlciBiaW5kZXIobV9kcmF3aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1lYnVm
ZmVyQmluZGluZy5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKICAgICAgICAgbV9jb250ZXh0LT5j
b3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyKTsKICAgICB9IGVsc2UgewotICAgICAgICBTY29wZWREcmF3aW5nQnVm
ZmVyQmluZGVyIGJpbmRlcihtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIG1fZnJhbWVidWZmZXJCaW5k
aW5nLmdldCgpKTsKKyAgICAgICAgU2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlciBiaW5kZXIobV9k
cmF3aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSwgbV9jb250ZXh0
LmdldCgpKTsKICAgICAgICAgR0MzRGludCBjbGlwcGVkWCwgY2xpcHBlZFk7CiAgICAgICAgIEdD
M0RzaXplaSBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQ7CiAgICAgICAgIGlmIChjbGlwMkQo
eCwgeSwgd2lkdGgsIGhlaWdodCwgZ2V0Qm91bmRGcmFtZWJ1ZmZlcldpZHRoKCksIGdldEJvdW5k
RnJhbWVidWZmZXJIZWlnaHQoKSwgJmNsaXBwZWRYLCAmY2xpcHBlZFksICZjbGlwcGVkV2lkdGgs
ICZjbGlwcGVkSGVpZ2h0KSkgewpAQCAtMTM2MCw3ICsxMzUzLDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MKICAgICB9CiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoKTsKICAgICBpZiAoaXNSZXNv
dXJjZVNhZmUoKSkgewotICAgICAgICBTY29wZWREcmF3aW5nQnVmZmVyQmluZGVyIGJpbmRlciht
X2RyYXdpbmdCdWZmZXIuZ2V0KCksIG1fZnJhbWVidWZmZXJCaW5kaW5nLmdldCgpKTsKKyAgICAg
ICAgU2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlciBiaW5kZXIobV9kcmF3aW5nQnVmZmVyLmdldCgp
LCBtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKICAgICAgICAg
bV9jb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKICAgICB9IGVsc2UgewogICAgICAgICBHQzNEaW50
IGNsaXBwZWRYLCBjbGlwcGVkWTsKQEAgLTEzODUsMTIgKzEzNzgsMTIgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fY29udGV4dC0+dGV4U3Vi
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHR5cGUsIHplcm8uZ2V0KCkpOwogICAgICAgICAgICAgaWYgKGNsaXBwZWRXaWR0aCA+
IDAgJiYgY2xpcHBlZEhlaWdodCA+IDApIHsKLSAgICAgICAgICAgICAgICBTY29wZWREcmF3aW5n
QnVmZmVyQmluZGVyIGJpbmRlcihtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIG1fZnJhbWVidWZmZXJC
aW5kaW5nLmdldCgpKTsKKyAgICAgICAgICAgICAgICBTY29wZWREcmF3aW5nQnVmZmVyQmluZGVy
IGJpbmRlcihtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIG1fZnJhbWVidWZmZXJCaW5kaW5nLmdldCgp
LCBtX2NvbnRleHQuZ2V0KCkpOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1
YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCArIGNsaXBwZWRYIC0geCwgeW9mZnNldCAr
IGNsaXBwZWRZIC0geSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsaXBwZWRYLCBjbGlwcGVkWSwgY2xpcHBlZFdpZHRoLCBjbGlwcGVkSGVpZ2h0KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFNjb3BlZERyYXdpbmdC
dWZmZXJCaW5kZXIgYmluZGVyKG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwgbV9mcmFtZWJ1ZmZlckJp
bmRpbmcuZ2V0KCkpOworICAgICAgICAgICAgU2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlciBiaW5k
ZXIobV9kcmF3aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSwgbV9j
b250ZXh0LmdldCgpKTsKICAgICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xNjAxLDExICsxNTk0LDggQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmRpc2FibGUoR0MzRGVudW0gY2FwKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0
KCkgfHwgIXZhbGlkYXRlQ2FwYWJpbGl0eSgiZGlzYWJsZSIsIGNhcCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBpZiAoY2FwID09IEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpIHsKKyAg
ICBpZiAoY2FwID09IEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpCiAgICAgICAgIG1f
c2Npc3NvckVuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlcikKLSAg
ICAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0U2Npc3NvckVuYWJsZWQobV9zY2lzc29yRW5h
YmxlZCk7Ci0gICAgfQogICAgIG1fY29udGV4dC0+ZGlzYWJsZShjYXApOwogICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CkBAIC0xOTQ2LDExICsxOTM2LDggQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuYWJsZShHQzNEZW51bSBjYXApCiB7CiAgICAgaWYgKGlz
Q29udGV4dExvc3QoKSB8fCAhdmFsaWRhdGVDYXBhYmlsaXR5KCJlbmFibGUiLCBjYXApKQogICAg
ICAgICByZXR1cm47Ci0gICAgaWYgKGNhcCA9PSBHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9U
RVNUKSB7CisgICAgaWYgKGNhcCA9PSBHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKQog
ICAgICAgICBtX3NjaXNzb3JFbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1fZHJhd2luZ0J1
ZmZlcikKLSAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0U2Npc3NvckVuYWJsZWQobV9z
Y2lzc29yRW5hYmxlZCk7Ci0gICAgfQogICAgIG1fY29udGV4dC0+ZW5hYmxlKGNhcCk7CiAgICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTMxODcsNyArMzE3NCw3IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGlu
dCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDCiAgICAgdm9pZCogZGF0YSA9IHBpeGVscy0+YmFzZUFk
ZHJlc3MoKTsKIAogICAgIHsKLSAgICAgICAgU2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlciBiaW5k
ZXIobV9kcmF3aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSk7Cisg
ICAgICAgIFNjb3BlZERyYXdpbmdCdWZmZXJCaW5kZXIgYmluZGVyKG1fZHJhd2luZ0J1ZmZlci5n
ZXQoKSwgbV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiAgICAg
ICAgIG1fY29udGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIGRhdGEpOwogICAgIH0KIApAQCAtNTM0Nyw3ICs1MzM0LDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6Om1heWJlUmVzdG9yZUNvbnRleHQoVGltZXI8V2ViR0xSZW5kZXJpbmdDb250
ZXh0PiopCiAgICAgLy8gQ29uc3RydWN0IGEgbmV3IGRyYXdpbmcgYnVmZmVyIHdpdGggdGhlIG5l
dyBHcmFwaGljc0NvbnRleHQzRC4KICAgICBpZiAobV9kcmF3aW5nQnVmZmVyKSB7CiAgICAgICAg
IG1fZHJhd2luZ0J1ZmZlci0+ZGlzY2FyZFJlc291cmNlcygpOwotICAgICAgICBtX2RyYXdpbmdC
dWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgbV9kcmF3aW5nQnVm
ZmVyLT5zaXplKCksICFtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKTsKKyAgICAg
ICAgbV9kcmF3aW5nQnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCks
IG1fZHJhd2luZ0J1ZmZlci0+c2l6ZSgpLCAhbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1
ZmZlciwgbV9hdHRyaWJ1dGVzLmFscGhhKTsKICAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5iaW5k
KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0RyYXdpbmdCdWZmZXJCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRHJhd2luZ0J1ZmZlckJsYWNrQmVycnkuY3Bw
CmluZGV4IGM1MzEwOGMwMGExMWQ3NjBjNTEyMjZlZTlkNzVkOGUyZTU3YmFiMmUuLmE1NmM5NDc1
N2YxYmI3MjNkMThmOGVkZmEzNzRkNDhkNzQyZmU1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRHJhd2luZ0J1ZmZlckJsYWNrQmVycnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRHJh
d2luZ0J1ZmZlckJsYWNrQmVycnkuY3BwCkBAIC04Niw3ICs4Niw3IEBAIERyYXdpbmdCdWZmZXI6
On5EcmF3aW5nQnVmZmVyKCkKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
LXZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcigpCit2b2lkIERyYXdp
bmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIoR3JhcGhpY3NDb250ZXh0M0QqKQogewog
ICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9EcmF3aW5nQnVmZmVyQ2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRHJhd2luZ0J1ZmZlckNhaXJv
LmNwcAppbmRleCAwNjdiOWM3YjM2MjVmYzRiMjQyNWUyZTk2MTY3ZmI5YzUxNjBjNjFhLi5iYmI2
Y2IwY2NiY2RiMzY5MTQxODI1ZjI3Y2ViOWJkOTkxYjM2YTMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9EcmF3aW5nQnVmZmVyQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0RyYXdpbmdCdWZmZXJD
YWlyby5jcHAKQEAgLTM3LDEzICszNywxMiBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJbnRTaXplJiBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBzZXBhcmF0ZUJhY2tpbmdUZXh0dXJlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlcGFyYXRlQmFja2luZ1RleHR1cmUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWxwaGEpCiAgICAgOiBtX3NlcGFyYXRlQmFj
a2luZ1RleHR1cmUoc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkKLSAgICAsIG1fc2Npc3NvckVuYWJs
ZWQoZmFsc2UpCi0gICAgLCBtX3RleHR1cmUyREJpbmRpbmcoMCkKLSAgICAsIG1fYWN0aXZlVGV4
dHVyZVVuaXQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKQogICAgICwgbV9jb250ZXh0KGNv
bnRleHQpCiAgICAgLCBtX3NpemUoLTEsIC0xKQorICAgICwgbV9hbHBoYShhbHBoYSkKICAgICAs
IG1fbXVsdGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQobXVsdGlzYW1wbGVFeHRlbnNpb25TdXBw
b3J0ZWQpCiAgICAgLCBtX3BhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRlZChwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQpCiAgICAgLCBtX2Zibyhjb250ZXh0LT5j
cmVhdGVGcmFtZWJ1ZmZlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAK
aW5kZXggNTUxYWRmNzY5NzYyOTVjOTk2MDMyMDQyM2Y5NjE5OTQyMGI1NDc5OS4uODI4OTJlYjgy
Y2Y1NTlmZTMzYzNlOWJkZWI4ZTQ1YjFkODZkNzhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVm
ZmVyQ2hyb21pdW0uY3BwCkBAIC01OSwxMyArNTksMTIgQEAgRHJhd2luZ0J1ZmZlcjo6RHJhd2lu
Z0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBtdWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzZXBhcmF0ZUJhY2tpbmdUZXh0dXJl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFscGhhKQogICAgIDogbV9zZXBh
cmF0ZUJhY2tpbmdUZXh0dXJlKHNlcGFyYXRlQmFja2luZ1RleHR1cmUpCi0gICAgLCBtX3NjaXNz
b3JFbmFibGVkKGZhbHNlKQotICAgICwgbV90ZXh0dXJlMkRCaW5kaW5nKDApCi0gICAgLCBtX2Fj
dGl2ZVRleHR1cmVVbml0KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkKICAgICAsIG1fY29u
dGV4dChjb250ZXh0KQogICAgICwgbV9zaXplKC0xLCAtMSkKKyAgICAsIG1fYWxwaGEoYWxwaGEp
CiAgICAgLCBtX211bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkKG11bHRpc2FtcGxlRXh0ZW5z
aW9uU3VwcG9ydGVkKQogICAgICwgbV9wYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0
ZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkKQogICAgICwgbV9mYm8oMCkK
QEAgLTEwOSwzMyArMTA4LDI5IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6aW5pdGlhbGl6ZShjb25z
dCBJbnRTaXplJiBzaXplKQogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
dm9pZCBEcmF3aW5nQnVmZmVyOjpwdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCkKK3ZvaWQgRHJhd2lu
Z0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCkKIHsKLSAgICBpZiAoIW1fY29udGV4dCkKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKG11bHRpc2FtcGxlKCkpCi0gICAgICAg
IGNvbW1pdCgpOworICAgICAgICBjb21taXQoY29udGV4dCk7CiAKICAgICBpZiAobV9zZXBhcmF0
ZUJhY2tpbmdUZXh0dXJlKSB7Ci0gICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwotCi0gICAgICAgIC8vIFRoaXMg
cGF0aCBhbHdheXMgdXNlcyBURVhUVVJFMCwgYW5kIHJlc3RvcmVzIGl0cyBzdGF0ZSBiZWxvdy4K
LSAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFMCk7Ci0gICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIG1fYmFja2luZ0NvbG9yQnVmZmVyKTsKKyAgICAgICAgY29udGV4dC0+Ymlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogCi0g
ICAgICAgIHVuc2lnbmVkIGNvbG9yRm9ybWF0ID0gbV9jb250ZXh0LT5nZXRDb250ZXh0QXR0cmli
dXRlcygpLmFscGhhID8gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEgOiBHcmFwaGljc0NvbnRleHQz
RDo6UkdCOwotICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCAwLCBjb2xvckZvcm1hdCwgMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNp
emUoKS5oZWlnaHQoKSwgMCk7CisgICAgICAgIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkUwKTsKKyAgICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fYmFja2luZ0NvbG9yQnVmZmVyKTsKIAotICAg
ICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBtX3RleHR1cmUyREJpbmRpbmcpOwotICAgICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUo
bV9hY3RpdmVUZXh0dXJlVW5pdCk7CisgICAgICAgIHVuc2lnbmVkIGNvbG9yRm9ybWF0ID0gbV9h
bHBoYSA/IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBIDogR3JhcGhpY3NDb250ZXh0M0Q6OlJHQjsK
KyAgICAgICAgY29udGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIDAsIGNvbG9yRm9ybWF0LCAwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdo
dCgpLCAwKTsKICAgICB9CiAKICAgICBpZiAobXVsdGlzYW1wbGUoKSkKICAgICAgICAgYmluZCgp
OwogCi0gICAgbV9jb250ZXh0LT5mbHVzaCgpOworICAgIGNvbnRleHQtPmZsdXNoKCk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZGE1NWYzYWMwNmM0
ZDVjNDZlZGFjMTc5ZDg0ZGY2MzhhYzIxOTllYy4uYzE1MzI4ZTk0YjMzZjQyMDM5ZmU0NWQ4Mzc0
NjNmMjY4ZmI3NDljMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCkBAIC03Niwx
MCArNzYsMTAgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogLyogb2NjbHUKICAgICBpZiAoIWRyYXdzQ29udGVu
dCgpIHx8ICFtX25lZWRzRGlzcGxheSB8fCAhbV90ZXh0dXJlVXBkYXRlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZHJhd2luZ0J1ZmZlcigpLT5wdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCk7CiAg
ICAgY29udGV4dCgpLT5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiAgICAgbV9uZWVkc0Rpc3BsYXkg
PSBmYWxzZTsKICAgICBtX3RleHR1cmVVcGRhdGVkID0gZmFsc2U7CisgICAgY29udGV4dCgpLT5m
bHVzaCgpOwogICAgIG1fY29udGV4dExvc3QgPSBjb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJP
UjsKIH0KIApAQCAtOTUsNiArOTUsNyBAQCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDbwogICAgICAg
ICByZW5kZXJlckNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0
M0Q6OkNMQU1QX1RPX0VER0UpOwogICAgICAgICBtX3RleHR1cmVDaGFuZ2VkID0gZmFsc2U7CiAg
ICAgfQorICAgIGRyYXdpbmdCdWZmZXIoKS0+cHVibGlzaFRvUGxhdGZvcm1MYXllcihyZW5kZXJl
ckNvbnRleHQpOwogfQogCiB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNU
byhDQ0xheWVySW1wbCogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCmluZGV4IGRiOGQzZDkx
YzE4ODg1MDgxNmZiZTA2M2FkNjFhNTNlMWQ1OWUwZDUuLjkyNmQ4OGI5ZGEzNWI1NDQzZTg1NTU0
OWJhMzI0ZGZiMDAwNzgyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCkBAIC0xMjYsNyArMTI2
LDcgQEAgdm9pZCBGRUN1c3RvbUZpbHRlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAK
ICAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVT
LCBtX21lc2gtPmluZGljZXNDb3VudCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hP
UlQsIDApOwogICAgIAotICAgIG1fZHJhd2luZ0J1ZmZlci0+Y29tbWl0KCk7CisgICAgbV9kcmF3
aW5nQnVmZmVyLT5jb21taXQobV9jb250ZXh0LmdldCgpKTsKIAogICAgIFJlZlB0cjxJbWFnZURh
dGE+IGltYWdlRGF0YSA9IG1fY29udGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURh
dGEobV9kcmF3aW5nQnVmZmVyLmdldCgpKTsKICAgICBCeXRlQXJyYXkqIGdwdVJlc3VsdCA9IGlt
YWdlRGF0YS0+ZGF0YSgpLT5kYXRhKCk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBGRUN1c3Rv
bUZpbHRlcjo6aW5pdGlhbGl6ZUNvbnRleHQoY29uc3QgSW50U2l6ZSYgY29udGV4dFNpemUpCiAg
ICAgCiAgICAgQVNTRVJUKCFtX2NvbnRleHQuZ2V0KCkpOwogICAgIG1fY29udGV4dCA9IEdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0cmlidXRlcywgbV9ob3N0V2luZG93LCBHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuKTsKLSAgICBtX2RyYXdpbmdCdWZmZXIgPSBEcmF3aW5n
QnVmZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBjb250ZXh0U2l6ZSwgIWF0dHJpYnV0ZXMu
cHJlc2VydmVEcmF3aW5nQnVmZmVyKTsKKyAgICBtX2RyYXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVm
ZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBjb250ZXh0U2l6ZSwgIWF0dHJpYnV0ZXMucHJl
c2VydmVEcmF3aW5nQnVmZmVyLCB0cnVlKTsKICAgICAKICAgICBtX3NoYWRlciA9IG1fcHJvZ3Jh
bS0+Y3JlYXRlU2hhZGVyV2l0aENvbnRleHQobV9jb250ZXh0LmdldCgpKTsKICAgICBtX21lc2gg
PSBDdXN0b21GaWx0ZXJNZXNoOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBtX21lc2hDb2x1bW5z
LCBtX21lc2hSb3dzLCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAppbmRleCA0OGRkMGEzYzRkOGM5MjJhOTNmMDE1YzA0
YjE5ZWZhN2RmNmMxYTlkLi41NGExZjAxODA2MTI3YWNlMjIyYmYzYTUzN2MyMDc4MjU0M2NmZWUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2lu
Z0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0Ry
YXdpbmdCdWZmZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBpbnQgc19tYXhpbXVtUmVz
b3VyY2VVc2VQaXhlbHMgPSAwOwogc3RhdGljIGludCBzX2N1cnJlbnRSZXNvdXJjZVVzZVBpeGVs
cyA9IDA7CiBzdGF0aWMgY29uc3QgZmxvYXQgc19yZXNvdXJjZUFkanVzdGVkUmF0aW8gPSAwLjU7
CiAKLVBhc3NSZWZQdHI8RHJhd2luZ0J1ZmZlcj4gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIHNlcGFyYXRl
QmFja2luZ1RleHR1cmUpCitQYXNzUmVmUHRyPERyYXdpbmdCdWZmZXI+IERyYXdpbmdCdWZmZXI6
OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Ym9vbCBzZXBhcmF0ZUJhY2tpbmdUZXh0dXJlLCBib29sIGFscGhhKQogewogICAgIEV4dGVuc2lv
bnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKICAgICBib29sIG11
bHRpc2FtcGxlU3VwcG9ydGVkID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0FOR0xFX2ZyYW1l
YnVmZmVyX2JsaXQiKSAmJiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZm
ZXJfbXVsdGlzYW1wbGUiKSAmJiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX3JnYjhfcmdi
YTgiKTsKQEAgLTYzLDcgKzYzLDcgQEAgUGFzc1JlZlB0cjxEcmF3aW5nQnVmZmVyPiBEcmF3aW5n
QnVmZmVyOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnMKICAgICBib29s
IHBhY2tlZERlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9P
RVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKICAgICBpZiAocGFja2VkRGVwdGhTdGVuY2lsU3Vw
cG9ydGVkKQogICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKTsKLSAgICBSZWZQdHI8RHJhd2luZ0J1ZmZlcj4gZHJhd2luZ0J1ZmZl
ciA9IGFkb3B0UmVmKG5ldyBEcmF3aW5nQnVmZmVyKGNvbnRleHQsIHNpemUsIG11bHRpc2FtcGxl
U3VwcG9ydGVkLCBwYWNrZWREZXB0aFN0ZW5jaWxTdXBwb3J0ZWQsIHNlcGFyYXRlQmFja2luZ1Rl
eHR1cmUpKTsKKyAgICBSZWZQdHI8RHJhd2luZ0J1ZmZlcj4gZHJhd2luZ0J1ZmZlciA9IGFkb3B0
UmVmKG5ldyBEcmF3aW5nQnVmZmVyKGNvbnRleHQsIHNpemUsIG11bHRpc2FtcGxlU3VwcG9ydGVk
LCBwYWNrZWREZXB0aFN0ZW5jaWxTdXBwb3J0ZWQsIHNlcGFyYXRlQmFja2luZ1RleHR1cmUsIGFs
cGhhKSk7CiAgICAgcmV0dXJuIChkcmF3aW5nQnVmZmVyLT5tX2NvbnRleHQpID8gZHJhd2luZ0J1
ZmZlci5yZWxlYXNlKCkgOiAwOwogfQogCkBAIC0zMzIsMzMgKzMzMiwyMiBAQCBib29sIERyYXdp
bmdCdWZmZXI6OnJlc2V0KGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgRHJhd2luZ0J1ZmZlcjo6Y29tbWl0KGxvbmcgeCwgbG9uZyB5LCBsb25nIHdp
ZHRoLCBsb25nIGhlaWdodCkKK3ZvaWQgRHJhd2luZ0J1ZmZlcjo6Y29tbWl0KEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBsb25nIHgsIGxvbmcgeSwgbG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQp
CiB7Ci0gICAgaWYgKCFtX2NvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICh3aWR0
aCA8IDApCiAgICAgICAgIHdpZHRoID0gbV9zaXplLndpZHRoKCk7CiAgICAgaWYgKGhlaWdodCA8
IDApCiAgICAgICAgIGhlaWdodCA9IG1fc2l6ZS5oZWlnaHQoKTsKIAotICAgIG1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7
CiAKICAgICBpZiAobV9tdWx0aXNhbXBsZUZCTykgewotICAgICAgICBtX2NvbnRleHQtPmJpbmRG
cmFtZWJ1ZmZlcihFeHRlbnNpb25zM0Q6OlJFQURfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVG
Qk8pOwotICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihFeHRlbnNpb25zM0Q6OkRS
QVdfRlJBTUVCVUZGRVIsIG1fZmJvKTsKLQotICAgICAgICBpZiAobV9zY2lzc29yRW5hYmxlZCkK
LSAgICAgICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NP
Ul9URVNUKTsKKyAgICAgICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEV4dGVuc2lvbnMzRDo6
UkVBRF9GUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGNvbnRleHQtPmJp
bmRGcmFtZWJ1ZmZlcihFeHRlbnNpb25zM0Q6OkRSQVdfRlJBTUVCVUZGRVIsIG1fZmJvKTsKIAog
ICAgICAgICAvLyBVc2UgTkVBUkVTVCwgYmVjYXVzZSB0aGVyZSBpcyBubyBzY2FsZSBwZXJmb3Jt
ZWQgZHVyaW5nIHRoZSBibGl0LgotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
YmxpdEZyYW1lYnVmZmVyKHgsIHksIHdpZHRoLCBoZWlnaHQsIHgsIHksIHdpZHRoLCBoZWlnaHQs
IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklULCBHcmFwaGljc0NvbnRleHQzRDo6
TkVBUkVTVCk7Ci0KLSAgICAgICAgaWYgKG1fc2Npc3NvckVuYWJsZWQpCi0gICAgICAgICAgICBt
X2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKTsKKyAgICAg
ICAgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5ibGl0RnJhbWVidWZmZXIoeCwgeSwgd2lkdGgs
IGhlaWdodCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JV
RkZFUl9CSVQsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKTsKICAgICB9Ci0KLSAgICBtX2Nv
bnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
ZmJvKTsKIH0KIAogYm9vbCBEcmF3aW5nQnVmZmVyOjptdWx0aXNhbXBsZSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIu
aAppbmRleCAwMzlhZjVjNjg2ZjMzZDkyMjBjZDczMTViZGVhN2QzZjBkYmFmNTkwLi41NWRjNDQ4
YTEwYTA5N2UzNTFjNzEwMTc3NDg2NzBiYzYzYTNkYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgKQEAgLTU1LDcgKzU1
LDcgQEAgY2xhc3MgV2ViR0xMYXllckNocm9taXVtOwogLy8gcmVzdWx0cyB0byBhIFBsYXRmb3Jt
TGF5ZXIgZm9yIGNvbXBvc2l0aW5nLgogY2xhc3MgRHJhd2luZ0J1ZmZlciA6IHB1YmxpYyBSZWZD
b3VudGVkPERyYXdpbmdCdWZmZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxE
cmF3aW5nQnVmZmVyPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJiwg
Ym9vbCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RHJhd2luZ0J1ZmZlcj4gY3JlYXRlKEdyYXBo
aWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYsIGJvb2wgc2VwZXJhdGVCYWNraW5nVGV4dHVy
ZSwgYm9vbCBhbHBoYSk7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCiAg
ICAgfkRyYXdpbmdCdWZmZXIoKTsKQEAgLTc3LDIxICs3Nyw5IEBAIHB1YmxpYzoKICAgICAKICAg
ICB2b2lkIHJlc2l6ZURlcHRoU3RlbmNpbChpbnQgc2FtcGxlQ291bnQpOwogCi0gICAgLy8gQ29w
aWVzIHRoZSBtdWx0aXNhbXBsZSBjb2xvciBidWZmZXIgdG8gdGhlIG5vcm1hbCBjb2xvciBidWZm
ZXIgYW5kIGxlYXZlcyBtX2ZibyBib3VuZAotICAgIHZvaWQgY29tbWl0KGxvbmcgeCA9IDAsIGxv
bmcgeSA9IDAsIGxvbmcgd2lkdGggPSAtMSwgbG9uZyBoZWlnaHQgPSAtMSk7Ci0KLSAgICAvLyBj
b21taXQgc2hvdWxkIGNvcHkgdGhlIGZ1bGwgbXVsdGlzYW1wbGUgYnVmZmVyLCBhbmQgbm90IHJl
c3BlY3QgdGhlCi0gICAgLy8gY3VycmVudCBzY2lzc29yIGJvdW5kcy4gVHJhY2sgdGhlIHN0YXRl
IG9mIHRoZSBzY2lzc29yIHRlc3Qgc28gdGhhdCBpdAotICAgIC8vIGNhbiBiZSBkaXNhYmxlZCBk
dXJpbmcgY2FsbHMgdG8gY29tbWl0LgotICAgIHZvaWQgc2V0U2Npc3NvckVuYWJsZWQoYm9vbCBz
Y2lzc29yRW5hYmxlZCkgeyBtX3NjaXNzb3JFbmFibGVkID0gc2Npc3NvckVuYWJsZWQ7IH0KLQot
ICAgIC8vIFRoZSBEcmF3aW5nQnVmZmVyIG5lZWRzIHRvIHRyYWNrIHRoZSB0ZXh0dXJlIGJvdW5k
IHRvIHRleHR1cmUgdW5pdCAwLgotICAgIC8vIFRoZSBib3VuZCB0ZXh0dXJlIGlzIHRyYWNrZWQg
dG8gYXZvaWQgY29zdGx5IHF1ZXJpZXMgZHVyaW5nIHJlbmRlcmluZy4KLSAgICB2b2lkIHNldFRl
eHR1cmUyREJpbmRpbmcoR0MzRGludCB0ZXh0dXJlKSB7IG1fdGV4dHVyZTJEQmluZGluZyA9IHRl
eHR1cmU7IH0KLQotICAgIC8vIFRyYWNrIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRleHR1cmUgdW5p
dC4gVGV4dHVyZSB1bml0IDAgaXMgdXNlZCBhcyBob3N0IGZvciBhIHNjcmF0Y2gKLSAgICAvLyB0
ZXh0dXJlLgotICAgIHZvaWQgc2V0QWN0aXZlVGV4dHVyZVVuaXQoR0MzRGludCB0ZXh0dXJlVW5p
dCkgeyBtX2FjdGl2ZVRleHR1cmVVbml0ID0gdGV4dHVyZVVuaXQ7IH0KKyAgICAvLyBDb3BpZXMg
dGhlIG11bHRpc2FtcGxlIGNvbG9yIGJ1ZmZlciB0byB0aGUgbm9ybWFsIGNvbG9yIGJ1ZmZlciBp
biB0aGUgcGFzc2VkLWluIGNvbnRleHQuCisgICAgLy8gRGVzdHJ1Y3RpdmUgb2YgdGhlIGZyYW1l
YnVmZmVyIGJpbmRpbmcgb24gdGhlIHBhc3NlZC1pbiBjb250ZXh0LgorICAgIHZvaWQgY29tbWl0
KEdyYXBoaWNzQ29udGV4dDNEKiwgbG9uZyB4ID0gMCwgbG9uZyB5ID0gMCwgbG9uZyB3aWR0aCA9
IC0xLCBsb25nIGhlaWdodCA9IC0xKTsKIAogICAgIGJvb2wgbXVsdGlzYW1wbGUoKSBjb25zdDsK
IApAQCAtMTA2LDcgKzk0LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKTsKLSAgICB2b2lkIHB1
Ymxpc2hUb1BsYXRmb3JtTGF5ZXIoKTsKKyAgICB2b2lkIHB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIo
R3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0Nh
bnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0Kik7CiAjZW5kaWYKIApAQCAtMTE0LDE3ICsxMDIs
MTUgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIERyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250
ZXh0M0QqLCBjb25zdCBJbnRTaXplJiwgYm9vbCBtdWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRl
ZCwKLSAgICAgICAgICAgICAgICAgIGJvb2wgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3Vw
cG9ydGVkLCBib29sIHNlcGFyYXRlQmFja2luZ1RleHR1cmUpOworICAgICAgICAgICAgICAgICAg
Ym9vbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQsIGJvb2wgc2VwYXJhdGVC
YWNraW5nVGV4dHVyZSwgYm9vbCBhbHBoYSk7CiAKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3Qg
SW50U2l6ZSYpOwogCiAgICAgYm9vbCBtX3NlcGFyYXRlQmFja2luZ1RleHR1cmU7Ci0gICAgYm9v
bCBtX3NjaXNzb3JFbmFibGVkOwotICAgIFBsYXRmb3JtM0RPYmplY3QgbV90ZXh0dXJlMkRCaW5k
aW5nOwotICAgIEdDM0RlbnVtIG1fYWN0aXZlVGV4dHVyZVVuaXQ7CiAKICAgICBSZWZQdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKICAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBib29s
IG1fYWxwaGE7CiAgICAgYm9vbCBtX211bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkOwogICAg
IGJvb2wgbV9wYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQ7CiAgICAgUGxhdGZv
cm0zRE9iamVjdCBtX2ZibzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbQppbmRleCAzZmRhNmEzMjZi
ZTJjMGU1MjBjODNiMjhiN2Y1NTcwYzU1ZWMzODU5Li4zNGQwODMzYmY5ZGVmOTY1Y2I3OTkwNDY4
M2I5NGYwZDE3NTkyMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCkBAIC00MCwxMyArNDAs
MTIgQEAgRHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtdWx0aXNhbXBsZUV4dGVuc2lvblN1
cHBvcnRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBzZXBhcmF0ZUJhY2tpbmdUZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGFscGhhKQogICAgIDogbV9zZXBhcmF0ZUJhY2tpbmdUZXh0dXJlKHNlcGFyYXRlQmFj
a2luZ1RleHR1cmUpCi0gICAgLCBtX3NjaXNzb3JFbmFibGVkKGZhbHNlKQotICAgICwgbV90ZXh0
dXJlMkRCaW5kaW5nKDApCi0gICAgLCBtX2FjdGl2ZVRleHR1cmVVbml0KEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFMCkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9zaXplKC0x
LCAtMSkKKyAgICAsIG1fYWxwaGEoYWxwaGEpCiAgICAgLCBtX211bHRpc2FtcGxlRXh0ZW5zaW9u
U3VwcG9ydGVkKG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkKQogICAgICwgbV9wYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
U3VwcG9ydGVkKQogICAgICwgbV9mYm8oY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5n
QnVmZmVyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0Ry
YXdpbmdCdWZmZXJRdC5jcHAKaW5kZXggYTU5MmVkY2Y3NmQ2YWZiYzU0OTk3MWMzOTIwNDNlZWMz
NmQ2M2VkZC4uMTgzZDBjOTMyOTZmYWJjODk3YjlkNjFiYWYzNDI4YWJlZGU4YThkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdCdWZm
ZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0Ry
YXdpbmdCdWZmZXJRdC5jcHAKQEAgLTM1LDEzICszNSwxMiBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3
aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBJbnRTaXplJiBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRlZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzZXBhcmF0ZUJhY2tpbmdUZXh0dXJl
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlcGFyYXRlQmFja2luZ1RleHR1
cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWxwaGEpCiAgICAgOiBtX3Nl
cGFyYXRlQmFja2luZ1RleHR1cmUoc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkKLSAgICAsIG1fc2Np
c3NvckVuYWJsZWQoZmFsc2UpCi0gICAgLCBtX3RleHR1cmUyREJpbmRpbmcoMCkKLSAgICAsIG1f
YWN0aXZlVGV4dHVyZVVuaXQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKQogICAgICwgbV9j
b250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3NpemUoLTEsIC0xKQorICAgICwgbV9hbHBoYShhbHBo
YSkKICAgICAsIG1fbXVsdGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQobXVsdGlzYW1wbGVFeHRl
bnNpb25TdXBwb3J0ZWQpCiAgICAgLCBtX3BhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBv
cnRlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQpCiAgICAgLCBtX2Zibyhj
b250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJHTExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViR0xMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNjZlYTY5MGZh
YjNmYjU0YWE4MzJjOWEyYWE4MWNiOWM1OTMyMmIzYS4uOGQ0NTE3OTZlNGMwNzBlNjc5NzRkNDVk
ZjRjNGJiMTk4NTUyMjdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJHTExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYkdMTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01MCwxNCArNTAsMTQgQEAgVEVT
VChXZWJHTExheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVGb3JtYXRzKQogICAgIFJlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gb3BhcXVlQ29udGV4dCA9IGNyZWF0ZUNvbXBvc2l0b3JNb2NrR3JhcGhp
Y3NDb250ZXh0M0Qob3BhcXVlQXR0cnMpOwogICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRleHQp
OwogCi0gICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGFscGhhQ29udGV4dC5nZXQo
KSwgSW50U2l6ZSgpLCBmYWxzZSk7CisgICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRl
KGFscGhhQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCBmYWxzZSwgdHJ1ZSk7CiAgICAgRVhQRUNU
X0ZBTFNFKGJ1ZmZlci0+cGxhdGZvcm1MYXllcigpLT5vcGFxdWUoKSk7Ci0gICAgYnVmZmVyID0g
RHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGFscGhhQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCB0cnVl
KTsKKyAgICBidWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoYWxwaGFDb250ZXh0LmdldCgp
LCBJbnRTaXplKCksIHRydWUsIHRydWUpOwogICAgIEVYUEVDVF9GQUxTRShidWZmZXItPnBsYXRm
b3JtTGF5ZXIoKS0+b3BhcXVlKCkpOwogCi0gICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3Jl
YXRlKG9wYXF1ZUNvbnRleHQuZ2V0KCksIEludFNpemUoKSwgZmFsc2UpOworICAgIGJ1ZmZlciA9
IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShvcGFxdWVDb250ZXh0LmdldCgpLCBJbnRTaXplKCksIGZh
bHNlLCBmYWxzZSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5wbGF0Zm9ybUxheWVyKCktPm9w
YXF1ZSgpKTsKLSAgICBidWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUob3BhcXVlQ29udGV4
dC5nZXQoKSwgSW50U2l6ZSgpLCB0cnVlKTsKKyAgICBidWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpj
cmVhdGUob3BhcXVlQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCB0cnVlLCBmYWxzZSk7CiAgICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5wbGF0Zm9ybUxheWVyKCktPm9wYXF1ZSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133959</attachid>
            <date>2012-03-26 18:53:16 -0700</date>
            <delta_ts>2012-04-05 16:04:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82275-20120326185315.patch</filename>
            <type>text/plain</type>
            <size>34012</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU2NDBkYmQ3ZmZiMzRj
MmM2M2U5MGQxZDBlNGRkMDU2YjRmZDI5ZS4uZWQ1ZWIxNDhiZTQxN2Y4ZmZjN2VkMzA1NzRjMjBl
NGY3MzBiNWRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU5IEBACiAyMDEyLTAzLTI2ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViR0wgY29udGVu
dCBzd2FwcGVkIGF0IHdyb25nIHRpbWUgaW4gdGhyZWFkZWQgY29tcG9zaXRpbmcgbW9kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIyNzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZXMg
RHJhd2luZ0J1ZmZlcjo6cHVibGlzaFRvUGxhdGZvcm1MYXllcigpIChhbmQgdGh1cyA6OmNvbW1p
dCgpKSB0byB0YWtlIGEgY29udGV4dCB0byBwZXJmb3JtIHRoZQorICAgICAgICBXZWJHTCBzd2Fw
IGluLCB0eXBpY2FsbHkgdGhlIGNvbXBvc2l0b3IgY29udGV4dC4KKworICAgICAgICBEb2luZyB0
aGlzIGFsc28gYWxsb3dzIHVzIHRvIHJlbW92ZSBhIGxvdCBvZiBzdGF0ZSB0cmFja2luZyBmcm9t
IERyYXdpbmdCdWZmZXIgc2luY2UgaXQgZG9lc24ndCBtYW5pcHVsYXRlIHRoZQorICAgICAgICBX
ZWJHTCBjb250ZXh0IHRvIHN3YXAuCisKKyAgICAgICAgSW4gY2hyb21pdW0gaW4gdGhyZWFkZWQg
Y29tcG9zaXRpbmcgbW9kZSwgd2Ugc2hvdWxkIHN3YXAgV2ViR0wgY29udGVudCBpbiB0aGUgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcygpIGNhbGwKKyAgICAgICAgbm90IHRoZSBwYWludENvbnRl
bnRzSWZEaXJ0eSgpIGNhbGwgc2luY2UgdGhlIGxhdHRlciBtYXkgYmUgY2FsbGVkIHdoaWxlIHRo
ZSB0aHJlYWQgaXMgc3RpbGwgZHJhd2luZyBmcm9tIHRoZQorICAgICAgICBjb250ZXh0LiB1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKCkgaXMgY2FsbGVkIGFmdGVyIHRoZSBpbXBsIHRocmVhZCBo
YXMgc3RvcHBlZCBkcmF3aW5nIGZyYW1lcywgYnV0IHNpbmNlIGl0J3MKKyAgICAgICAgb24gdGhl
IGNvbXBvc2l0b3IgdGhyZWFkIHRoZSBXZWJHTCBjb250ZXh0IGNhbm5vdCBiZSB1c2VkLCBvbmx5
IHRoZSBjb21wb3NpdG9yIGNvbnRleHQgY2FuIGJlIHVzZWQuCisKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjptYXliZVJlc3RvcmVDb250ZXh0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0RyYXdpbmdCdWZmZXJCbGFja0JlcnJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0RyYXdpbmdCdWZmZXJDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpwdWJsaXNoVG9QbGF0Zm9ybUxheWVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZE
aXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
dXN0b21GaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6aW5p
dGlhbGl6ZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5n
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpjb21taXQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmg6CisgICAgICAgIChEcmF3aW5nQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvcXQvRHJhd2luZ0J1ZmZlclF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorCisyMDEyLTAz
LTI2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgU2Ny
b2xsYWJsZSBwbHVnaW5zIG5vdCByZWdpc3RlcmVkIHByb3Blcmx5IGluIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MjE2MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDA3YTljMDQyZTUzZGUwMGNkZWI5
YjZiOTliMTZiY2Y4MWIzYTA4NTkuLmU5NmM0YTJhMGU2NzNkMDM5NDUzOGQyNDhkZDQyYTRkOWU0
MDNjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTIt
MDMtMjYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBX
ZWJHTCBjb250ZW50IHN3YXBwZWQgYXQgd3JvbmcgdGltZSBpbiB0aHJlYWRlZCBjb21wb3NpdGlu
ZyBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MjI3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
dGVzdHMvV2ViR0xMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRFU1Qp
OgorCisyMDEyLTAzLTI2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisK
ICAgICAgICAgU2Nyb2xsYWJsZSBwbHVnaW5zIG5vdCByZWdpc3RlcmVkIHByb3Blcmx5IGluIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MjE2MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBkNWRhMTgyOWE2ZDQzMGJiMmQ0Y2EyN2Uw
ZDg1MjhkZTQ3MzAwYjFkLi42NDUxOTFlODRiOWYyODE4ODY0N2I0MWVkNTFjOWQxOTJhNzJlY2Fl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTg5LDEzICs4OSwxMyBAQCBuYW1lc3BhY2UgewogCiAgICAgY2xhc3Mg
U2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlciB7CiAgICAgcHVibGljOgotICAgICAgICBTY29wZWRE
cmF3aW5nQnVmZmVyQmluZGVyKERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIsIFdlYkdMRnJh
bWVidWZmZXIqIGZyYW1lYnVmZmVyQmluZGluZykKKyAgICAgICAgU2NvcGVkRHJhd2luZ0J1ZmZl
ckJpbmRlcihEcmF3aW5nQnVmZmVyKiBkcmF3aW5nQnVmZmVyLCBXZWJHTEZyYW1lYnVmZmVyKiBm
cmFtZWJ1ZmZlckJpbmRpbmcsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogICAgICAgICAg
ICAgOiBtX2RyYXdpbmdCdWZmZXIoZHJhd2luZ0J1ZmZlcikKICAgICAgICAgICAgICwgbV9mcmFt
ZWJ1ZmZlckJpbmRpbmcoZnJhbWVidWZmZXJCaW5kaW5nKQogICAgICAgICB7CiAgICAgICAgICAg
ICAvLyBDb21taXQgRHJhd2luZ0J1ZmZlciBpZiBuZWVkZWQgKGUuZy4sIGZvciBtdWx0aXNhbXBs
aW5nKQogICAgICAgICAgICAgaWYgKCFtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiBtX2RyYXdpbmdC
dWZmZXIpCi0gICAgICAgICAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5jb21taXQoKTsKKyAgICAg
ICAgICAgICAgICBtX2RyYXdpbmdCdWZmZXItPmNvbW1pdChjb250ZXh0KTsKICAgICAgICAgfQog
CiAgICAgICAgIH5TY29wZWREcmF3aW5nQnVmZmVyQmluZGVyKCkKQEAgLTQzNyw3ICs0MzcsOSBA
QCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFz
RWxlbWVudCogcGFzc2VkQ2FudmFzLCBQYQogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAg
Ly8gQ3JlYXRlIHRoZSBEcmF3aW5nQnVmZmVyIGFuZCBpbml0aWFsaXplIHRoZSBwbGF0Zm9ybSBs
YXllci4KLSAgICBtX2RyYXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUobV9jb250
ZXh0LmdldCgpLCBJbnRTaXplKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkp
LCAhbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcik7CisgICAgbV9kcmF3aW5nQnVm
ZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgSW50U2l6ZShjYW52
YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZl
ciA/IERyYXdpbmdCdWZmZXI6OlNlcGFyYXRlIDogRHJhd2luZ0J1ZmZlcjo6U2hhcmVkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYWxw
aGEgPyBEcmF3aW5nQnVmZmVyOjpBbHBoYSA6IERyYXdpbmdCdWZmZXI6Ok9wYXF1ZSk7CiAjZW5k
aWYKIAogICAgIGlmIChtX2RyYXdpbmdCdWZmZXIpCkBAIC02OTYsNyArNjk4LDcgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKICAg
ICBtX21hcmtlZENhbnZhc0RpcnR5ID0gZmFsc2U7CiAKICAgICBpZiAobV9kcmF3aW5nQnVmZmVy
KQotICAgICAgICBtX2RyYXdpbmdCdWZmZXItPmNvbW1pdCgpOworICAgICAgICBtX2RyYXdpbmdC
dWZmZXItPmNvbW1pdChtX2NvbnRleHQuZ2V0KCkpOwogICAgIG1fY29udGV4dC0+cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXModGhpcywgbV9kcmF3aW5nQnVmZmVyLmdldCgpKTsKIAogICAg
IGlmIChtX2RyYXdpbmdCdWZmZXIpIHsKQEAgLTcxMSw3ICs3MTMsNyBAQCBQYXNzUmVmUHRyPElt
YWdlRGF0YT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0lt
YWdlRGF0YSgpCiB7CiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoKTsKICAgICBpZiAobV9kcmF3aW5n
QnVmZmVyKQotICAgICAgICBtX2RyYXdpbmdCdWZmZXItPmNvbW1pdCgpOworICAgICAgICBtX2Ry
YXdpbmdCdWZmZXItPmNvbW1pdChtX2NvbnRleHQuZ2V0KCkpOwogICAgIFJlZlB0cjxJbWFnZURh
dGE+IGltYWdlRGF0YSA9IG1fY29udGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURh
dGEobV9kcmF3aW5nQnVmZmVyLmdldCgpKTsKIAogICAgIGlmIChtX2RyYXdpbmdCdWZmZXIpIHsK
QEAgLTgwOSw5ICs4MTEsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YWN0aXZlVGV4
dHVyZShHQzNEZW51bSB0ZXh0dXJlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBtX2FjdGl2ZVRl
eHR1cmVVbml0ID0gdGV4dHVyZSAtIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMDsKICAgICBt
X2NvbnRleHQtPmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CiAKLSAgICBpZiAobV9kcmF3aW5nQnVm
ZmVyKQotICAgICAgICBtX2RyYXdpbmdCdWZmZXItPnNldEFjdGl2ZVRleHR1cmVVbml0KHRleHR1
cmUpOwotCiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIApAQCAtOTQy
LDEwICs5NDEsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFRleHR1cmUoR0Mz
RGVudW0gdGFyZ2V0LCBXZWJHTFRleHR1cmUqIHRleHR1cmUsCiAgICAgaWYgKHRhcmdldCA9PSBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCkgewogICAgICAgICBtX3RleHR1cmVVbml0c1tt
X2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmUyREJpbmRpbmcgPSB0ZXh0dXJlOwogICAgICAg
ICBtYXhMZXZlbCA9IG1fbWF4VGV4dHVyZUxldmVsOwotCi0gICAgICAgIGlmIChtX2RyYXdpbmdC
dWZmZXIgJiYgIW1fYWN0aXZlVGV4dHVyZVVuaXQpCi0gICAgICAgICAgICBtX2RyYXdpbmdCdWZm
ZXItPnNldFRleHR1cmUyREJpbmRpbmcob2JqZWN0T3JaZXJvKHRleHR1cmUpKTsKLQogICAgIH0g
ZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQKSB7
CiAgICAgICAgIG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUN1
YmVNYXBCaW5kaW5nID0gdGV4dHVyZTsKICAgICAgICAgbWF4TGV2ZWwgPSBtX21heEN1YmVNYXBU
ZXh0dXJlTGV2ZWw7CkBAIC0xMzE0LDEwICsxMzA5LDEwIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojpjb3B5VGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdD
M0RlCiAgICAgfQogICAgIGNsZWFySWZDb21wb3NpdGVkKCk7CiAgICAgaWYgKGlzUmVzb3VyY2VT
YWZlKCkpIHsKLSAgICAgICAgU2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlciBiaW5kZXIobV9kcmF3
aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSk7CisgICAgICAgIFNj
b3BlZERyYXdpbmdCdWZmZXJCaW5kZXIgYmluZGVyKG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwgbV9m
cmFtZWJ1ZmZlckJpbmRpbmcuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiAgICAgICAgIG1fY29u
dGV4dC0+Y29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHks
IHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgU2NvcGVkRHJh
d2luZ0J1ZmZlckJpbmRlciBiaW5kZXIobV9kcmF3aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1lYnVm
ZmVyQmluZGluZy5nZXQoKSk7CisgICAgICAgIFNjb3BlZERyYXdpbmdCdWZmZXJCaW5kZXIgYmlu
ZGVyKG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwgbV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0KCksIG1f
Y29udGV4dC5nZXQoKSk7CiAgICAgICAgIEdDM0RpbnQgY2xpcHBlZFgsIGNsaXBwZWRZOwogICAg
ICAgICBHQzNEc2l6ZWkgY2xpcHBlZFdpZHRoLCBjbGlwcGVkSGVpZ2h0OwogICAgICAgICBpZiAo
Y2xpcDJEKHgsIHksIHdpZHRoLCBoZWlnaHQsIGdldEJvdW5kRnJhbWVidWZmZXJXaWR0aCgpLCBn
ZXRCb3VuZEZyYW1lYnVmZmVySGVpZ2h0KCksICZjbGlwcGVkWCwgJmNsaXBwZWRZLCAmY2xpcHBl
ZFdpZHRoLCAmY2xpcHBlZEhlaWdodCkpIHsKQEAgLTEzNjAsNyArMTM1NSw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojpjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDCiAgICAgfQogICAgIGNsZWFySWZDb21wb3NpdGVkKCk7CiAgICAgaWYg
KGlzUmVzb3VyY2VTYWZlKCkpIHsKLSAgICAgICAgU2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlciBi
aW5kZXIobV9kcmF3aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSk7
CisgICAgICAgIFNjb3BlZERyYXdpbmdCdWZmZXJCaW5kZXIgYmluZGVyKG1fZHJhd2luZ0J1ZmZl
ci5nZXQoKSwgbV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiAg
ICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
R0MzRGludCBjbGlwcGVkWCwgY2xpcHBlZFk7CkBAIC0xMzg1LDEyICsxMzgwLDEyIEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2ZWwsIEdDCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2NvbnRleHQt
PnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCB6ZXJvLmdldCgpKTsKICAgICAgICAgICAgIGlmIChjbGlwcGVk
V2lkdGggPiAwICYmIGNsaXBwZWRIZWlnaHQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgU2NvcGVk
RHJhd2luZ0J1ZmZlckJpbmRlciBiaW5kZXIobV9kcmF3aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1l
YnVmZmVyQmluZGluZy5nZXQoKSk7CisgICAgICAgICAgICAgICAgU2NvcGVkRHJhd2luZ0J1ZmZl
ckJpbmRlciBiaW5kZXIobV9kcmF3aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1lYnVmZmVyQmluZGlu
Zy5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmNv
cHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQgKyBjbGlwcGVkWCAtIHgsIHlv
ZmZzZXQgKyBjbGlwcGVkWSAtIHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjbGlwcGVkWCwgY2xpcHBlZFksIGNsaXBwZWRXaWR0aCwgY2xpcHBlZEhlaWdo
dCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBTY29wZWRE
cmF3aW5nQnVmZmVyQmluZGVyIGJpbmRlcihtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIG1fZnJhbWVi
dWZmZXJCaW5kaW5nLmdldCgpKTsKKyAgICAgICAgICAgIFNjb3BlZERyYXdpbmdCdWZmZXJCaW5k
ZXIgYmluZGVyKG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwgbV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0
KCksIG1fY29udGV4dC5nZXQoKSk7CiAgICAgICAgICAgICBtX2NvbnRleHQtPmNvcHlUZXhTdWJJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWln
aHQpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTYwMSwxMSArMTU5Niw4IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKIHsKICAgICBpZiAoaXNDb250
ZXh0TG9zdCgpIHx8ICF2YWxpZGF0ZUNhcGFiaWxpdHkoImRpc2FibGUiLCBjYXApKQogICAgICAg
ICByZXR1cm47Ci0gICAgaWYgKGNhcCA9PSBHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNU
KSB7CisgICAgaWYgKGNhcCA9PSBHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKQogICAg
ICAgICBtX3NjaXNzb3JFbmFibGVkID0gZmFsc2U7Ci0gICAgICAgIGlmIChtX2RyYXdpbmdCdWZm
ZXIpCi0gICAgICAgICAgICBtX2RyYXdpbmdCdWZmZXItPnNldFNjaXNzb3JFbmFibGVkKG1fc2Np
c3NvckVuYWJsZWQpOwotICAgIH0KICAgICBtX2NvbnRleHQtPmRpc2FibGUoY2FwKTsKICAgICBj
bGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQpAQCAtMTk0NiwxMSArMTkzOCw4IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjplbmFibGUoR0MzRGVudW0gY2FwKQogewogICAg
IGlmIChpc0NvbnRleHRMb3N0KCkgfHwgIXZhbGlkYXRlQ2FwYWJpbGl0eSgiZW5hYmxlIiwgY2Fw
KSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChjYXAgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlND
SVNTT1JfVEVTVCkgeworICAgIGlmIChjYXAgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1Jf
VEVTVCkKICAgICAgICAgbV9zY2lzc29yRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgIGlmIChtX2Ry
YXdpbmdCdWZmZXIpCi0gICAgICAgICAgICBtX2RyYXdpbmdCdWZmZXItPnNldFNjaXNzb3JFbmFi
bGVkKG1fc2Npc3NvckVuYWJsZWQpOwotICAgIH0KICAgICBtX2NvbnRleHQtPmVuYWJsZShjYXAp
OwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CkBAIC0zMTg3LDcgKzMx
NzYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVscyhHQzNEaW50IHgs
IEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQwogICAgIHZvaWQqIGRhdGEgPSBwaXhlbHMt
PmJhc2VBZGRyZXNzKCk7CiAKICAgICB7Ci0gICAgICAgIFNjb3BlZERyYXdpbmdCdWZmZXJCaW5k
ZXIgYmluZGVyKG1fZHJhd2luZ0J1ZmZlci5nZXQoKSwgbV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0
KCkpOworICAgICAgICBTY29wZWREcmF3aW5nQnVmZmVyQmluZGVyIGJpbmRlcihtX2RyYXdpbmdC
dWZmZXIuZ2V0KCksIG1fZnJhbWVidWZmZXJCaW5kaW5nLmdldCgpLCBtX2NvbnRleHQuZ2V0KCkp
OwogICAgICAgICBtX2NvbnRleHQtPnJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBkYXRhKTsKICAgICB9CiAKQEAgLTUzNDcsNyArNTMzNiw5IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjptYXliZVJlc3RvcmVDb250ZXh0KFRpbWVyPFdlYkdMUmVuZGVy
aW5nQ29udGV4dD4qKQogICAgIC8vIENvbnN0cnVjdCBhIG5ldyBkcmF3aW5nIGJ1ZmZlciB3aXRo
IHRoZSBuZXcgR3JhcGhpY3NDb250ZXh0M0QuCiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlcikgewog
ICAgICAgICBtX2RyYXdpbmdCdWZmZXItPmRpc2NhcmRSZXNvdXJjZXMoKTsKLSAgICAgICAgbV9k
cmF3aW5nQnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIG1fZHJh
d2luZ0J1ZmZlci0+c2l6ZSgpLCAhbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcik7
CisgICAgICAgIG1fZHJhd2luZ0J1ZmZlciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShjb250ZXh0
LmdldCgpLCBtX2RyYXdpbmdCdWZmZXItPnNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZm
ZXIgPyBEcmF3aW5nQnVmZmVyOjpTZXBhcmF0ZSA6IERyYXdpbmdCdWZmZXI6OlNoYXJlZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYXR0cmlidXRl
cy5hbHBoYSA/IERyYXdpbmdCdWZmZXI6OkFscGhhIDogRHJhd2luZ0J1ZmZlcjo6T3BhcXVlKTsK
ICAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5iaW5kKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0RyYXdpbmdCdWZmZXJC
bGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvRHJhd2luZ0J1ZmZlckJsYWNrQmVycnkuY3BwCmluZGV4IGM1MzEwOGMwMGExMWQ3NjBjNTEy
MjZlZTlkNzVkOGUyZTU3YmFiMmUuLmE1NmM5NDc1N2YxYmI3MjNkMThmOGVkZmEzNzRkNDhkNzQy
ZmU1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvRHJhd2luZ0J1ZmZlckJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRHJhd2luZ0J1ZmZlckJsYWNrQmVycnkuY3BwCkBA
IC04Niw3ICs4Niw3IEBAIERyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKIH0KIAogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLXZvaWQgRHJhd2luZ0J1ZmZlcjo6cHVibGlz
aFRvUGxhdGZvcm1MYXllcigpCit2b2lkIERyYXdpbmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3Jt
TGF5ZXIoR3JhcGhpY3NDb250ZXh0M0QqKQogewogICAgIGlmICghbV9jb250ZXh0KQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9EcmF3aW5nQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRHJhd2luZ0J1ZmZlckNhaXJvLmNwcAppbmRleCAwNjdiOWM3YjM2MjVmYzRi
MjQyNWUyZTk2MTY3ZmI5YzUxNjBjNjFhLi5lYTk0ZDc1MjdlMzQzODE1NmZkZTRmZmJhN2FjMzBj
YjlhZjQzNjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9EcmF3aW5nQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0RyYXdpbmdCdWZmZXJDYWlyby5jcHAKQEAgLTM3LDEzICszNywxMiBA
QCBEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRTaXplJiBzaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9y
dGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHBhY2tlZERlcHRoU3RlbmNp
bEV4dGVuc2lvblN1cHBvcnRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBz
ZXBhcmF0ZUJhY2tpbmdUZXh0dXJlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNr
aW5nVGV4dHVyZVJlcXVpcmVtZW50IHNlcGFyYXRlQmFja2luZ1RleHR1cmUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFscGhhUmVxdWlyZW1lbnQgYWxwaGEpCiAgICAgOiBtX3NlcGFy
YXRlQmFja2luZ1RleHR1cmUoc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkKLSAgICAsIG1fc2Npc3Nv
ckVuYWJsZWQoZmFsc2UpCi0gICAgLCBtX3RleHR1cmUyREJpbmRpbmcoMCkKLSAgICAsIG1fYWN0
aXZlVGV4dHVyZVVuaXQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKQogICAgICwgbV9jb250
ZXh0KGNvbnRleHQpCiAgICAgLCBtX3NpemUoLTEsIC0xKQorICAgICwgbV9hbHBoYShhbHBoYSkK
ICAgICAsIG1fbXVsdGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQobXVsdGlzYW1wbGVFeHRlbnNp
b25TdXBwb3J0ZWQpCiAgICAgLCBtX3BhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRl
ZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQpCiAgICAgLCBtX2Zibyhjb250
ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpKQpAQCAtNTYsNyArNTUsNyBAQCBEcmF3aW5nQnVmZmVy
OjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogewogICAgIC8vIFN1
cHBvcnQgZm9yIGEgc2VwYXJhdGUgYmFja2luZyB0ZXh0dXJlIGhhcyBvbmx5IGJlZW4gZW5hYmxl
ZCBmb3IKICAgICAvLyB0aGUgY2hyb21pdW0gcG9ydC4KLSAgICBBU1NFUlQoIW1fc2VwYXJhdGVC
YWNraW5nVGV4dHVyZSk7CisgICAgQVNTRVJUKG1fc2VwYXJhdGVCYWNraW5nVGV4dHVyZSA9PSBT
aGFyZWQpOwogICAgIEFTU0VSVChtX2Zibyk7CiAgICAgaWYgKCFtX2ZibykgewogICAgICAgICBj
bGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKaW5kZXggNTUxYWRm
NzY5NzYyOTVjOTk2MDMyMDQyM2Y5NjE5OTQyMGI1NDc5OS4uYTU0MDQ5MGUyYzc4YTgyODViOGNj
MTBhYjFmZjUyMDliMTEyZmU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0u
Y3BwCkBAIC01OSwxMyArNTksMTIgQEAgRHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgSW50U2l6ZSYgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtdWx0
aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQmFja2luZ1RleHR1cmVSZXF1aXJlbWVudCBzZXBhcmF0ZUJhY2tp
bmdUZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHBoYVJlcXVpcmVtZW50
IGFscGhhKQogICAgIDogbV9zZXBhcmF0ZUJhY2tpbmdUZXh0dXJlKHNlcGFyYXRlQmFja2luZ1Rl
eHR1cmUpCi0gICAgLCBtX3NjaXNzb3JFbmFibGVkKGZhbHNlKQotICAgICwgbV90ZXh0dXJlMkRC
aW5kaW5nKDApCi0gICAgLCBtX2FjdGl2ZVRleHR1cmVVbml0KEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFMCkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9zaXplKC0xLCAtMSkK
KyAgICAsIG1fYWxwaGEoYWxwaGEpCiAgICAgLCBtX211bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9y
dGVkKG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkKQogICAgICwgbV9wYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9y
dGVkKQogICAgICwgbV9mYm8oMCkKQEAgLTk1LDcgKzk0LDcgQEAgdm9pZCBEcmF3aW5nQnVmZmVy
Ojppbml0aWFsaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgbV9mYm8gPSBtX2NvbnRl
eHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CiAKLSAgICBpZiAobV9zZXBhcmF0ZUJhY2tpbmdUZXh0
dXJlKQorICAgIGlmIChtX3NlcGFyYXRlQmFja2luZ1RleHR1cmUgPT0gU2VwYXJhdGUpCiAgICAg
ICAgIG1fYmFja2luZ0NvbG9yQnVmZmVyID0gZ2VuZXJhdGVDb2xvclRleHR1cmUobV9jb250ZXh0
LmdldCgpLCBzaXplKTsKIAogICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwpAQCAtMTA5LDMzICsxMDgsMjkgQEAgdm9p
ZCBEcmF3aW5nQnVmZmVyOjppbml0aWFsaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB9CiAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIERyYXdpbmdCdWZmZXI6OnB1Ymxp
c2hUb1BsYXRmb3JtTGF5ZXIoKQordm9pZCBEcmF3aW5nQnVmZmVyOjpwdWJsaXNoVG9QbGF0Zm9y
bUxheWVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewotICAgIGlmICghbV9jb250ZXh0
KQorICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsK
ICAgICBpZiAobXVsdGlzYW1wbGUoKSkKLSAgICAgICAgY29tbWl0KCk7Ci0KLSAgICBpZiAobV9z
ZXBhcmF0ZUJhY2tpbmdUZXh0dXJlKSB7Ci0gICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOworICAgICAgICBjb21t
aXQoY29udGV4dCk7CiAKLSAgICAgICAgLy8gVGhpcyBwYXRoIGFsd2F5cyB1c2VzIFRFWFRVUkUw
LCBhbmQgcmVzdG9yZXMgaXRzIHN0YXRlIGJlbG93LgotICAgICAgICBtX2NvbnRleHQtPmFjdGl2
ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKTsKLSAgICAgICAgbV9jb250ZXh0
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9iYWNraW5nQ29s
b3JCdWZmZXIpOworICAgIGlmIChtX3NlcGFyYXRlQmFja2luZ1RleHR1cmUgPT0gU2VwYXJhdGUp
IHsKKyAgICAgICAgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgbV9mYm8pOwogCi0gICAgICAgIHVuc2lnbmVkIGNvbG9yRm9ybWF0ID0gbV9j
b250ZXh0LT5nZXRDb250ZXh0QXR0cmlidXRlcygpLmFscGhhID8gR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEgOiBHcmFwaGljc0NvbnRleHQzRDo6UkdCOwotICAgICAgICBtX2NvbnRleHQtPmNvcHlU
ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBjb2xvckZvcm1hdCwg
MCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSwgMCk7CisgICAgICAgIGNvbnRl
eHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKTsKKyAgICAgICAg
Y29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fYmFj
a2luZ0NvbG9yQnVmZmVyKTsKIAotICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmUyREJpbmRpbmcpOwotICAgICAgICBt
X2NvbnRleHQtPmFjdGl2ZVRleHR1cmUobV9hY3RpdmVUZXh0dXJlVW5pdCk7CisgICAgICAgIHVu
c2lnbmVkIGNvbG9yRm9ybWF0ID0gbV9hbHBoYSA9PSBBbHBoYSA/IEdyYXBoaWNzQ29udGV4dDNE
OjpSR0JBIDogR3JhcGhpY3NDb250ZXh0M0Q6OlJHQjsKKyAgICAgICAgY29udGV4dC0+Y29weVRl
eEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGNvbG9yRm9ybWF0LCAw
LCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpLCAwKTsKICAgICB9CiAKICAgICBp
ZiAobXVsdGlzYW1wbGUoKSkKICAgICAgICAgYmluZCgpOwogCi0gICAgbV9jb250ZXh0LT5mbHVz
aCgpOworICAgIGNvbnRleHQtPmZsdXNoKCk7CiB9CiAjZW5kaWYKIApAQCAtMTU0LDcgKzE0OSw3
IEBAIFBsYXRmb3JtTGF5ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKQogCiBQbGF0
Zm9ybTNET2JqZWN0IERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtQ29sb3JCdWZmZXIoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3NlcGFyYXRlQmFja2luZ1RleHR1cmUgPyBtX2JhY2tpbmdDb2xvckJ1
ZmZlciA6IG1fY29sb3JCdWZmZXI7CisgICAgcmV0dXJuIG1fc2VwYXJhdGVCYWNraW5nVGV4dHVy
ZSA9PSBTZXBhcmF0ZSA/IG1fYmFja2luZ0NvbG9yQnVmZmVyIDogbV9jb2xvckJ1ZmZlcjsKIH0K
IAogUGxhdGZvcm0zRE9iamVjdCBEcmF3aW5nQnVmZmVyOjpmcmFtZWJ1ZmZlcigpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCBkYTU1ZjNhYzA2YzRkNWM0NmVkYWMx
NzlkODRkZjYzOGFjMjE5OWVjLi5jMTUzMjhlOTRiMzNmNDIwMzlmZTQ1ZDgzNzQ2M2YyNjhmYjc0
OWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTc2LDEwICs3NiwxMCBA
QCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NP
Y2NsdXNpb25UcmFja2VyKiAvKiBvY2NsdQogICAgIGlmICghZHJhd3NDb250ZW50KCkgfHwgIW1f
bmVlZHNEaXNwbGF5IHx8ICFtX3RleHR1cmVVcGRhdGVkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBkcmF3aW5nQnVmZmVyKCktPnB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIoKTsKICAgICBjb250ZXh0
KCktPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwog
ICAgIG1fdGV4dHVyZVVwZGF0ZWQgPSBmYWxzZTsKKyAgICBjb250ZXh0KCktPmZsdXNoKCk7CiAg
ICAgbV9jb250ZXh0TG9zdCA9IGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SOwogfQogCkBA
IC05NSw2ICs5NSw3IEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvCiAgICAgICAgIHJlbmRlcmVy
Q29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBf
VE9fRURHRSk7CiAgICAgICAgIG1fdGV4dHVyZUNoYW5nZWQgPSBmYWxzZTsKICAgICB9CisgICAg
ZHJhd2luZ0J1ZmZlcigpLT5wdWJsaXNoVG9QbGF0Zm9ybUxheWVyKHJlbmRlcmVyQ29udGV4dCk7
CiB9CiAKIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJ
bXBsKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NsdXR0ZXIvRHJhd2luZ0J1ZmZlckNsdXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2x1dHRlci9EcmF3aW5nQnVmZmVyQ2x1dHRlci5jcHAKaW5kZXggMWYzMzJj
MTEwNmQ4MzlhOTQ2Y2JiNjkwNmYyYTJmZGMxZGQ5N2I3OC4uMDczODY0Y2I2YTQ4MDY1NGEyOTVl
ODliYzA0YTI0MjdkOWE4MWJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2x1dHRlci9EcmF3aW5nQnVmZmVyQ2x1dHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9EcmF3aW5nQnVmZmVyQ2x1dHRlci5jcHAK
QEAgLTQzLDcgKzQzLDEwIEBAIERyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElu
dFNpemUmIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbXVsdGlzYW1w
bGVFeHRlbnNpb25TdXBwb3J0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
cGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHNlcGFyYXRlQmFja2luZ1RleHR1cmUpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJhY2tpbmdUZXh0dXJlUmVxdWlyZW1lbnQgc2VwYXJhdGVCYWNraW5nVGV4
dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxwaGFSZXF1aXJlbWVudCBhbHBo
YSkKKyAgICA6IG1fc2VwYXJhdGVCYWNraW5nVGV4dHVyZShzZXBhcmF0ZUJhY2tpbmdUZXh0dXJl
KQorICAgICwgbV9hbHBoYShhbHBoYSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAppbmRl
eCBkYjhkM2Q5MWMxODg4NTA4MTZmYmUwNjNhZDYxYTUzZTFkNTllMGQ1Li43MjRmNmY5MDQ3M2Q4
YTNlOWE0ZjIwMWNmMzUwNzRiNzMzNzFmMTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcApAQCAt
MTI2LDcgKzEyNiw3IEBAIHZvaWQgRkVDdXN0b21GaWx0ZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgCiAgICAgbV9jb250ZXh0LT5kcmF3RWxlbWVudHMoR3JhcGhpY3NDb250ZXh0M0Q6
OlRSSUFOR0xFUywgbV9tZXNoLT5pbmRpY2VzQ291bnQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVO
U0lHTkVEX1NIT1JULCAwKTsKICAgICAKLSAgICBtX2RyYXdpbmdCdWZmZXItPmNvbW1pdCgpOwor
ICAgIG1fZHJhd2luZ0J1ZmZlci0+Y29tbWl0KG1fY29udGV4dC5nZXQoKSk7CiAKICAgICBSZWZQ
dHI8SW1hZ2VEYXRhPiBpbWFnZURhdGEgPSBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvSW1hZ2VEYXRhKG1fZHJhd2luZ0J1ZmZlci5nZXQoKSk7CiAgICAgQnl0ZUFycmF5KiBncHVS
ZXN1bHQgPSBpbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHZv
aWQgRkVDdXN0b21GaWx0ZXI6OmluaXRpYWxpemVDb250ZXh0KGNvbnN0IEludFNpemUmIGNvbnRl
eHRTaXplKQogICAgIAogICAgIEFTU0VSVCghbV9jb250ZXh0LmdldCgpKTsKICAgICBtX2NvbnRl
eHQgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHJpYnV0ZXMsIG1faG9zdFdpbmRvdywg
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlck9mZnNjcmVlbik7Ci0gICAgbV9kcmF3aW5nQnVmZmVy
ID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgY29udGV4dFNpemUsICFh
dHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcik7CisgICAgbV9kcmF3aW5nQnVmZmVyID0g
RHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgY29udGV4dFNpemUsIERyYXdp
bmdCdWZmZXI6OlNoYXJlZCwgRHJhd2luZ0J1ZmZlcjo6QWxwaGEpOwogICAgIAogICAgIG1fc2hh
ZGVyID0gbV9wcm9ncmFtLT5jcmVhdGVTaGFkZXJXaXRoQ29udGV4dChtX2NvbnRleHQuZ2V0KCkp
OwogICAgIG1fbWVzaCA9IEN1c3RvbUZpbHRlck1lc2g6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCks
IG1fbWVzaENvbHVtbnMsIG1fbWVzaFJvd3MsIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCmluZGV4IDQ4ZGQwYTNjNGQ4
YzkyMmE5M2YwMTVjMDRiMTllZmE3ZGY2YzFhOWQuLjY5MDFkNTNhZGQyN2NhMzQzOGY0MTYxOGQ0
MWRmMGEwZGEwZWJjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIGlu
dCBzX21heGltdW1SZXNvdXJjZVVzZVBpeGVscyA9IDA7CiBzdGF0aWMgaW50IHNfY3VycmVudFJl
c291cmNlVXNlUGl4ZWxzID0gMDsKIHN0YXRpYyBjb25zdCBmbG9hdCBzX3Jlc291cmNlQWRqdXN0
ZWRSYXRpbyA9IDAuNTsKIAotUGFzc1JlZlB0cjxEcmF3aW5nQnVmZmVyPiBEcmF3aW5nQnVmZmVy
OjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUs
IGJvb2wgc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkKK1Bhc3NSZWZQdHI8RHJhd2luZ0J1ZmZlcj4g
RHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJ
bnRTaXplJiBzaXplLCBCYWNraW5nVGV4dHVyZVJlcXVpcmVtZW50IHNlcGFyYXRlQmFja2luZ1Rl
eHR1cmUsIEFscGhhUmVxdWlyZW1lbnQgYWxwaGEpCiB7CiAgICAgRXh0ZW5zaW9uczNEKiBleHRl
bnNpb25zID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwogICAgIGJvb2wgbXVsdGlzYW1wbGVT
dXBwb3J0ZWQgPSBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxp
dCIpICYmIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZSIpICYmIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfcmdiOF9yZ2JhOCIpOwpAQCAt
NjMsNyArNjMsNyBAQCBQYXNzUmVmUHRyPERyYXdpbmdCdWZmZXI+IERyYXdpbmdCdWZmZXI6OmNy
ZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29ucwogICAgIGJvb2wgcGFja2VkRGVw
dGhTdGVuY2lsU3VwcG9ydGVkID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19wYWNrZWRf
ZGVwdGhfc3RlbmNpbCIpOwogICAgIGlmIChwYWNrZWREZXB0aFN0ZW5jaWxTdXBwb3J0ZWQpCiAg
ICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3Rl
bmNpbCIpOwotICAgIFJlZlB0cjxEcmF3aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVyID0gYWRvcHRS
ZWYobmV3IERyYXdpbmdCdWZmZXIoY29udGV4dCwgc2l6ZSwgbXVsdGlzYW1wbGVTdXBwb3J0ZWQs
IHBhY2tlZERlcHRoU3RlbmNpbFN1cHBvcnRlZCwgc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkpOwor
ICAgIFJlZlB0cjxEcmF3aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVyID0gYWRvcHRSZWYobmV3IERy
YXdpbmdCdWZmZXIoY29udGV4dCwgc2l6ZSwgbXVsdGlzYW1wbGVTdXBwb3J0ZWQsIHBhY2tlZERl
cHRoU3RlbmNpbFN1cHBvcnRlZCwgc2VwYXJhdGVCYWNraW5nVGV4dHVyZSwgYWxwaGEpKTsKICAg
ICByZXR1cm4gKGRyYXdpbmdCdWZmZXItPm1fY29udGV4dCkgPyBkcmF3aW5nQnVmZmVyLnJlbGVh
c2UoKSA6IDA7CiB9CiAKQEAgLTMwMiw3ICszMDIsNyBAQCBib29sIERyYXdpbmdCdWZmZXI6OnJl
c2V0KGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgICAgICAgICBtX2NvbnRleHQtPmZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgbV9jb2xvckJ1ZmZlciwgMCk7CiAKICAgICAgICAgICAgIC8vIHJlc2l6ZSB0aGUgYmFja2lu
ZyBjb2xvciBidWZmZXIKLSAgICAgICAgICAgIGlmIChtX3NlcGFyYXRlQmFja2luZ1RleHR1cmUp
IHsKKyAgICAgICAgICAgIGlmIChtX3NlcGFyYXRlQmFja2luZ1RleHR1cmUgPT0gU2VwYXJhdGUp
IHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBtX2JhY2tpbmdDb2xvckJ1ZmZlcik7CiAgICAgICAgICAgICAgICAg
bV9jb250ZXh0LT50ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBp
bnRlcm5hbENvbG9yRm9ybWF0LCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCAwLCBj
b2xvckZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIDApOwogICAgICAg
ICAgICAgfQpAQCAtMzMyLDMzICszMzIsMjIgQEAgYm9vbCBEcmF3aW5nQnVmZmVyOjpyZXNldChj
b25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIERyYXdp
bmdCdWZmZXI6OmNvbW1pdChsb25nIHgsIGxvbmcgeSwgbG9uZyB3aWR0aCwgbG9uZyBoZWlnaHQp
Cit2b2lkIERyYXdpbmdCdWZmZXI6OmNvbW1pdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
bG9uZyB4LCBsb25nIHksIGxvbmcgd2lkdGgsIGxvbmcgaGVpZ2h0KQogewotICAgIGlmICghbV9j
b250ZXh0KQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAod2lkdGggPCAwKQogICAgICAgICB3
aWR0aCA9IG1fc2l6ZS53aWR0aCgpOwogICAgIGlmIChoZWlnaHQgPCAwKQogICAgICAgICBoZWln
aHQgPSBtX3NpemUuaGVpZ2h0KCk7CiAKLSAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgaWYgKG1fbXVs
dGlzYW1wbGVGQk8pIHsKLSAgICAgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoRXh0ZW5z
aW9uczNEOjpSRUFEX0ZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKLSAgICAgICAgbV9j
b250ZXh0LT5iaW5kRnJhbWVidWZmZXIoRXh0ZW5zaW9uczNEOjpEUkFXX0ZSQU1FQlVGRkVSLCBt
X2Zibyk7Ci0KLSAgICAgICAgaWYgKG1fc2Npc3NvckVuYWJsZWQpCi0gICAgICAgICAgICBtX2Nv
bnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCk7CisgICAgICAg
IGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihFeHRlbnNpb25zM0Q6OlJFQURfRlJBTUVCVUZGRVIs
IG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoRXh0
ZW5zaW9uczNEOjpEUkFXX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAKICAgICAgICAgLy8gVXNlIE5F
QVJFU1QsIGJlY2F1c2UgdGhlcmUgaXMgbm8gc2NhbGUgcGVyZm9ybWVkIGR1cmluZyB0aGUgYmxp
dC4KLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmJsaXRGcmFtZWJ1ZmZlcih4
LCB5LCB3aWR0aCwgaGVpZ2h0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHcmFwaGljc0NvbnRleHQz
RDo6Q09MT1JfQlVGRkVSX0JJVCwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpOwotCi0gICAg
ICAgIGlmIChtX3NjaXNzb3JFbmFibGVkKQotICAgICAgICAgICAgbV9jb250ZXh0LT5lbmFibGUo
R3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCk7CisgICAgICAgIGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+YmxpdEZyYW1lYnVmZmVyKHgsIHksIHdpZHRoLCBoZWlnaHQsIHgsIHksIHdp
ZHRoLCBoZWlnaHQsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklULCBHcmFwaGlj
c0NvbnRleHQzRDo6TkVBUkVTVCk7CiAgICAgfQotCi0gICAgbV9jb250ZXh0LT5iaW5kRnJhbWVi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CiB9CiAKIGJvb2wg
RHJhd2luZ0J1ZmZlcjo6bXVsdGlzYW1wbGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgKaW5kZXggMDM5YWY1YzY4
NmYzM2Q5MjIwY2Q3MzE1YmRlYTdkM2YwZGJhZjU5MC4uMTkyODQyNDAzMjRkOTJhOGYzYTQ1ZDky
YzU1MzIxOTllODNjNmU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCkBAIC01NSw3ICs1NSwxOSBAQCBjbGFzcyBXZWJH
TExheWVyQ2hyb21pdW07CiAvLyByZXN1bHRzIHRvIGEgUGxhdGZvcm1MYXllciBmb3IgY29tcG9z
aXRpbmcuCiBjbGFzcyBEcmF3aW5nQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RHJhd2luZ0J1
ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERyYXdpbmdCdWZmZXI+IGNy
ZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFNpemUmLCBib29sKTsKKyAgICAvLyBJ
bmRpY2F0ZXMgd2hldGhlciB0aGUgdGV4dHVyZSBiYWNraW5nIHRoZSBGQk8gaGFzIHRvIGJlIHNl
cGFyYXRlIGZyb20gdGhlIHBsYXRmb3JtQ29sb3JCdWZmZXIoKS4KKyAgICBlbnVtIEJhY2tpbmdU
ZXh0dXJlUmVxdWlyZW1lbnQgeworICAgICAgICBTZXBhcmF0ZSwKKyAgICAgICAgU2hhcmVkCisg
ICAgfTsKKworICAgIC8vIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgRHJhd2luZ0J1ZmZlciByZXF1
aXJlcyBhbiBhbHBoYSBjaGFubmVsLgorICAgIGVudW0gQWxwaGFSZXF1aXJlbWVudCB7CisgICAg
ICAgIEFscGhhLAorICAgICAgICBPcGFxdWUKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RHJhd2luZ0J1ZmZlcj4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6
ZSYsIEJhY2tpbmdUZXh0dXJlUmVxdWlyZW1lbnQsIEFscGhhUmVxdWlyZW1lbnQpOwogICAgIGZy
aWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIAogICAgIH5EcmF3aW5nQnVmZmVyKCk7CkBA
IC03NywyMSArODksOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZXNpemVEZXB0aFN0ZW5j
aWwoaW50IHNhbXBsZUNvdW50KTsKIAotICAgIC8vIENvcGllcyB0aGUgbXVsdGlzYW1wbGUgY29s
b3IgYnVmZmVyIHRvIHRoZSBub3JtYWwgY29sb3IgYnVmZmVyIGFuZCBsZWF2ZXMgbV9mYm8gYm91
bmQKLSAgICB2b2lkIGNvbW1pdChsb25nIHggPSAwLCBsb25nIHkgPSAwLCBsb25nIHdpZHRoID0g
LTEsIGxvbmcgaGVpZ2h0ID0gLTEpOwotCi0gICAgLy8gY29tbWl0IHNob3VsZCBjb3B5IHRoZSBm
dWxsIG11bHRpc2FtcGxlIGJ1ZmZlciwgYW5kIG5vdCByZXNwZWN0IHRoZQotICAgIC8vIGN1cnJl
bnQgc2Npc3NvciBib3VuZHMuIFRyYWNrIHRoZSBzdGF0ZSBvZiB0aGUgc2Npc3NvciB0ZXN0IHNv
IHRoYXQgaXQKLSAgICAvLyBjYW4gYmUgZGlzYWJsZWQgZHVyaW5nIGNhbGxzIHRvIGNvbW1pdC4K
LSAgICB2b2lkIHNldFNjaXNzb3JFbmFibGVkKGJvb2wgc2Npc3NvckVuYWJsZWQpIHsgbV9zY2lz
c29yRW5hYmxlZCA9IHNjaXNzb3JFbmFibGVkOyB9Ci0KLSAgICAvLyBUaGUgRHJhd2luZ0J1ZmZl
ciBuZWVkcyB0byB0cmFjayB0aGUgdGV4dHVyZSBib3VuZCB0byB0ZXh0dXJlIHVuaXQgMC4KLSAg
ICAvLyBUaGUgYm91bmQgdGV4dHVyZSBpcyB0cmFja2VkIHRvIGF2b2lkIGNvc3RseSBxdWVyaWVz
IGR1cmluZyByZW5kZXJpbmcuCi0gICAgdm9pZCBzZXRUZXh0dXJlMkRCaW5kaW5nKEdDM0RpbnQg
dGV4dHVyZSkgeyBtX3RleHR1cmUyREJpbmRpbmcgPSB0ZXh0dXJlOyB9Ci0KLSAgICAvLyBUcmFj
ayB0aGUgY3VycmVudGx5IGFjdGl2ZSB0ZXh0dXJlIHVuaXQuIFRleHR1cmUgdW5pdCAwIGlzIHVz
ZWQgYXMgaG9zdCBmb3IgYSBzY3JhdGNoCi0gICAgLy8gdGV4dHVyZS4KLSAgICB2b2lkIHNldEFj
dGl2ZVRleHR1cmVVbml0KEdDM0RpbnQgdGV4dHVyZVVuaXQpIHsgbV9hY3RpdmVUZXh0dXJlVW5p
dCA9IHRleHR1cmVVbml0OyB9CisgICAgLy8gQ29waWVzIHRoZSBtdWx0aXNhbXBsZSBjb2xvciBi
dWZmZXIgdG8gdGhlIG5vcm1hbCBjb2xvciBidWZmZXIgaW4gdGhlIHBhc3NlZC1pbiBjb250ZXh0
LgorICAgIC8vIERlc3RydWN0aXZlIG9mIHRoZSBmcmFtZWJ1ZmZlciBiaW5kaW5nIG9uIHRoZSBw
YXNzZWQtaW4gY29udGV4dC4KKyAgICB2b2lkIGNvbW1pdChHcmFwaGljc0NvbnRleHQzRCosIGxv
bmcgeCA9IDAsIGxvbmcgeSA9IDAsIGxvbmcgd2lkdGggPSAtMSwgbG9uZyBoZWlnaHQgPSAtMSk7
CiAKICAgICBib29sIG11bHRpc2FtcGxlKCkgY29uc3Q7CiAKQEAgLTEwNiw3ICsxMDYsNyBAQCBw
dWJsaWM6CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgUGxhdGZvcm1M
YXllciogcGxhdGZvcm1MYXllcigpOwotICAgIHZvaWQgcHVibGlzaFRvUGxhdGZvcm1MYXllcigp
OworICAgIHZvaWQgcHVibGlzaFRvUGxhdGZvcm1MYXllcihHcmFwaGljc0NvbnRleHQzRCopOwog
ICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQqKTsKICNlbmRpZgogCkBAIC0xMTQsMTcgKzExNCwxNSBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgRHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFNpemUm
LCBib29sIG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkLAotICAgICAgICAgICAgICAgICAg
Ym9vbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQsIGJvb2wgc2VwYXJhdGVC
YWNraW5nVGV4dHVyZSk7CisgICAgICAgICAgICAgICAgICBib29sIHBhY2tlZERlcHRoU3RlbmNp
bEV4dGVuc2lvblN1cHBvcnRlZCwgQmFja2luZ1RleHR1cmVSZXF1aXJlbWVudCwgQWxwaGFSZXF1
aXJlbWVudCk7CiAKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgSW50U2l6ZSYpOwogCi0gICAg
Ym9vbCBtX3NlcGFyYXRlQmFja2luZ1RleHR1cmU7Ci0gICAgYm9vbCBtX3NjaXNzb3JFbmFibGVk
OwotICAgIFBsYXRmb3JtM0RPYmplY3QgbV90ZXh0dXJlMkRCaW5kaW5nOwotICAgIEdDM0RlbnVt
IG1fYWN0aXZlVGV4dHVyZVVuaXQ7CisgICAgQmFja2luZ1RleHR1cmVSZXF1aXJlbWVudCBtX3Nl
cGFyYXRlQmFja2luZ1RleHR1cmU7CiAKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1f
Y29udGV4dDsKICAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBBbHBoYVJlcXVpcmVtZW50IG1fYWxw
aGE7CiAgICAgYm9vbCBtX211bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkOwogICAgIGJvb2wg
bV9wYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQ7CiAgICAgUGxhdGZvcm0zRE9i
amVjdCBtX2ZibzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbQppbmRleCAzZmRhNmEzMjZiZTJjMGU1
MjBjODNiMjhiN2Y1NTcwYzU1ZWMzODU5Li45YjY3YTgzMzZkOTBlNjRjY2VkMDAxNjRmNDg5N2Qw
ZTQ0YTAwMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCkBAIC00MCwxMyArNDAsMTIgQEAg
RHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtdWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwYWNrZWREZXB0aFN0ZW5jaWxF
eHRlbnNpb25TdXBwb3J0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2Vw
YXJhdGVCYWNraW5nVGV4dHVyZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFja2lu
Z1RleHR1cmVSZXF1aXJlbWVudCBzZXBhcmF0ZUJhY2tpbmdUZXh0dXJlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBbHBoYVJlcXVpcmVtZW50IGFscGhhKQogICAgIDogbV9zZXBhcmF0
ZUJhY2tpbmdUZXh0dXJlKHNlcGFyYXRlQmFja2luZ1RleHR1cmUpCi0gICAgLCBtX3NjaXNzb3JF
bmFibGVkKGZhbHNlKQotICAgICwgbV90ZXh0dXJlMkRCaW5kaW5nKDApCi0gICAgLCBtX2FjdGl2
ZVRleHR1cmVVbml0KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkKICAgICAsIG1fY29udGV4
dChjb250ZXh0KQogICAgICwgbV9zaXplKC0xLCAtMSkKKyAgICAsIG1fYWxwaGEoYWxwaGEpCiAg
ICAgLCBtX211bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkKG11bHRpc2FtcGxlRXh0ZW5zaW9u
U3VwcG9ydGVkKQogICAgICwgbV9wYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQo
cGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkKQogICAgICwgbV9mYm8oY29udGV4
dC0+Y3JlYXRlRnJhbWVidWZmZXIoKSkKQEAgLTU5LDcgKzU4LDcgQEAgRHJhd2luZ0J1ZmZlcjo6
RHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKIHsKICAgICAvLyBTdXBw
b3J0IGZvciBhIHNlcGFyYXRlIGJhY2tpbmcgdGV4dHVyZSBoYXMgb25seSBiZWVuIGVuYWJsZWQg
Zm9yCiAgICAgLy8gdGhlIGNocm9taXVtIHBvcnQuCi0gICAgQVNTRVJUKCFtX3NlcGFyYXRlQmFj
a2luZ1RleHR1cmUpOworICAgIEFTU0VSVChtX3NlcGFyYXRlQmFja2luZ1RleHR1cmUgPT0gU2hh
cmVkKTsKICAgICBBU1NFUlQobV9mYm8pOwogICAgIGlmICghbV9mYm8pIHsKICAgICAgICAgY2xl
YXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9x
dC9EcmF3aW5nQnVmZmVyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5jcHAKaW5kZXggYTU5MmVkY2Y3NmQ2YWZiYzU0OTk3MWMz
OTIwNDNlZWMzNmQ2M2VkZC4uNDZjODRkZjY1ZjdhZWEwOGY3ZGI2ODk2YjIzNDE3YzA3YjdmZTQ3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0Ry
YXdpbmdCdWZmZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5jcHAKQEAgLTM1LDEzICszNSwxMiBAQCBEcmF3aW5nQnVm
ZmVyOjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRTaXplJiBzaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1
cHBvcnRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzZXBhcmF0ZUJhY2tp
bmdUZXh0dXJlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNraW5nVGV4dHVyZVJl
cXVpcmVtZW50IHNlcGFyYXRlQmFja2luZ1RleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFscGhhUmVxdWlyZW1lbnQgYWxwaGEpCiAgICAgOiBtX3NlcGFyYXRlQmFja2luZ1Rl
eHR1cmUoc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkKLSAgICAsIG1fc2Npc3NvckVuYWJsZWQoZmFs
c2UpCi0gICAgLCBtX3RleHR1cmUyREJpbmRpbmcoMCkKLSAgICAsIG1fYWN0aXZlVGV4dHVyZVVu
aXQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQp
CiAgICAgLCBtX3NpemUoLTEsIC0xKQorICAgICwgbV9hbHBoYShhbHBoYSkKICAgICAsIG1fbXVs
dGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQobXVsdGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQp
CiAgICAgLCBtX3BhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRlZChwYWNrZWREZXB0
aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQpCiAgICAgLCBtX2Zibyhjb250ZXh0LT5jcmVhdGVG
cmFtZWJ1ZmZlcigpKQpAQCAtNTQsNyArNTMsNyBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogewogICAgIC8vIFN1cHBvcnQgZm9yIGEg
c2VwYXJhdGUgYmFja2luZyB0ZXh0dXJlIGhhcyBvbmx5IGJlZW4gZW5hYmxlZCBmb3IKICAgICAv
LyB0aGUgY2hyb21pdW0gcG9ydC4KLSAgICBBU1NFUlQoIW1fc2VwYXJhdGVCYWNraW5nVGV4dHVy
ZSk7CisgICAgQVNTRVJUKG1fc2VwYXJhdGVCYWNraW5nVGV4dHVyZSA9PSBTaGFyZWQpOwogICAg
IEFTU0VSVChtX2Zibyk7CiAgICAgaWYgKCFtX2ZibykgewogICAgICAgICBjbGVhcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJHTExheWVyQ2hyb21pdW1U
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViR0xMYXllckNocm9taXVt
VGVzdC5jcHAKaW5kZXggNjZlYTY5MGZhYjNmYjU0YWE4MzJjOWEyYWE4MWNiOWM1OTMyMmIzYS4u
OTNmMTg2ZWIxODdiNmNiYzJmNzYwNDJjZWY2ZDBiZDBmZTg1ZDEzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJHTExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkdMTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CkBAIC01MCwxNCArNTAsMTQgQEAgVEVTVChXZWJHTExheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVG
b3JtYXRzKQogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gb3BhcXVlQ29udGV4dCA9IGNy
ZWF0ZUNvbXBvc2l0b3JNb2NrR3JhcGhpY3NDb250ZXh0M0Qob3BhcXVlQXR0cnMpOwogICAgIEVY
UEVDVF9UUlVFKG9wYXF1ZUNvbnRleHQpOwogCi0gICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6
Y3JlYXRlKGFscGhhQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCBmYWxzZSk7CisgICAgYnVmZmVy
ID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGFscGhhQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCBE
cmF3aW5nQnVmZmVyOjpTZXBhcmF0ZSwgRHJhd2luZ0J1ZmZlcjo6QWxwaGEpOwogICAgIEVYUEVD
VF9GQUxTRShidWZmZXItPnBsYXRmb3JtTGF5ZXIoKS0+b3BhcXVlKCkpOwotICAgIGJ1ZmZlciA9
IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShhbHBoYUNvbnRleHQuZ2V0KCksIEludFNpemUoKSwgdHJ1
ZSk7CisgICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGFscGhhQ29udGV4dC5nZXQo
KSwgSW50U2l6ZSgpLCBEcmF3aW5nQnVmZmVyOjpTaGFyZWQsIERyYXdpbmdCdWZmZXI6OkFscGhh
KTsKICAgICBFWFBFQ1RfRkFMU0UoYnVmZmVyLT5wbGF0Zm9ybUxheWVyKCktPm9wYXF1ZSgpKTsK
IAotICAgIGJ1ZmZlciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShvcGFxdWVDb250ZXh0LmdldCgp
LCBJbnRTaXplKCksIGZhbHNlKTsKKyAgICBidWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUo
b3BhcXVlQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCBEcmF3aW5nQnVmZmVyOjpTZXBhcmF0ZSwg
RHJhd2luZ0J1ZmZlcjo6T3BhcXVlKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnBsYXRmb3Jt
TGF5ZXIoKS0+b3BhcXVlKCkpOwotICAgIGJ1ZmZlciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShv
cGFxdWVDb250ZXh0LmdldCgpLCBJbnRTaXplKCksIHRydWUpOworICAgIGJ1ZmZlciA9IERyYXdp
bmdCdWZmZXI6OmNyZWF0ZShvcGFxdWVDb250ZXh0LmdldCgpLCBJbnRTaXplKCksIERyYXdpbmdC
dWZmZXI6OlNoYXJlZCwgRHJhd2luZ0J1ZmZlcjo6T3BhcXVlKTsKICAgICBFWFBFQ1RfVFJVRShi
dWZmZXItPnBsYXRmb3JtTGF5ZXIoKS0+b3BhcXVlKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135924</attachid>
            <date>2012-04-05 16:04:43 -0700</date>
            <delta_ts>2012-04-06 11:01:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82275-20120405160442.patch</filename>
            <type>text/plain</type>
            <size>61081</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjJiNWZlZTFkNTIyYWFm
NGQxZWViNmMyMWZkNTI5YzkxNzE1NTBjNi4uOTM1YTg2ZGE2ZmZlNDNjNmY0YmU4MzhhZDIxYzQ3
OTNlYzk0ZTg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0wNC0wNSAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYkdMIGNvbnRl
bnQgc3dhcHBlZCBhdCB3cm9uZyB0aW1lIGluIHRocmVhZGVkIGNvbXBvc2l0aW5nIG1vZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMjc1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB1c2luZyB0
aHJlYWRlZCBjb21wb3NpdGluZywgd2UgbmVlZCB0byBkZWZlciB0b3VjaGluZyB0aGUgdGV4dHVy
ZSBJRCBiZWluZyB1c2VkIGJ5IHRoZSBjb21wb3NpdG9yIHVudGlsIHRoZQorICAgICAgICBhcHBy
b3ByaWF0ZSBwb2ludCBpbiB0aGUgc3luY2hyb25pemF0aW9uIHJvdXRpbmUgYW5kIG5vdCBiZWZv
cmUuIFNwZWNpZmljYWxseSwgdGhlcmUgaXMgbm8gdGltZSBhdCB3aGljaCBpdCBpcworICAgICAg
ICBzYWZlIHRvIG1hbmlwdWxhdGUgdGhlIHRleHR1cmUgdGhlIGNvbXBvc2l0b3IgbWF5IGJlIHVz
aW5nIGZyb20gdGhlIG1haW4gdGhyZWFkLiBUaGlzIGJyZWFrcyB1cCB0aGUgcHJlc2VudGF0aW9u
CisgICAgICAgIHBhdGggaW50byBhIGZldyBwaWVjZXMgKGRlcGVuZGluZyBvbiB0aGUgY29udGV4
dCBhdHRyaWJ1dGVzKSBpbiBvcmRlciB0byBtYWludGFpbiB0aGVzZSBpbnZhcmlhbnRzLgorCisg
ICAgICAgIERlcGVuZGluZyBvbiB0aGUgY29udGV4dCBhdHRyaWJ1dGVzIGFuZCBpZiB3ZSdyZSBp
biB0aHJlYWRlZCBtb2RlLCB0aGVyZSBhcmUgYSBmZXcgZGlmZmVyZW50IHBvc3NpYmxlIGJhY2sv
ZnJvbnQKKyAgICAgICAgYnVmZmVyIGNvbWJpbmF0aW9uczoKKworICAgICAgICAtIFdoZW4gdGhl
IGNvbnRleHQgaXMgYW50aWFsaWFzZWQsIHdlIGhhdmUgYSBtdWx0aXNhbXBsZWQgcmVuZGVyYnVm
ZmVyIGFuZCBhc3NvY2lhdGVkIGZyYW1lYnVmZmVyLgorICAgICAgICAtIEluIGFsbCBjYXNlcywg
d2UgaGF2ZSBhIGNvbG9yIHRleHR1cmUgYmFjayBidWZmZXIuCisgICAgICAgIC0gV2hlbiBwcmVz
ZXJ2ZURyYXdpbmdCdWZmZXIgaXMgc2V0IG9yIHRocmVhZGVkIGNvbXBvc2l0aW5nIGlzIGVuYWJs
ZWQsIHdlIGhhdmUgYSBzZXBhcmF0ZSBjb2xvciB0ZXh0dXJlIGFzIGEKKyAgICAgICAgZnJvbnQg
YnVmZmVyLgorCisgICAgICAgIFRoZSByZXNvdXJjZSB1cGRhdGUgaXMgaW4gdHdvIHBoYXNlcy4g
Rmlyc3QsIG9uIHRoZSBtYWluIHRocmVhZCwgd2UgcHJlcGFyZSB0aGUgYmFjayBidWZmZXIuIFRo
aXMgcmVzb2x2ZXMgZnJvbQorICAgICAgICB0aGUgbXVsdGlzYW1wbGVkIEZCTyBpbnRvIHRoZSBi
YWNrIGNvbG9yIGJ1ZmZlciBpZiBtdWx0aXNhbXBsZWQgYW5kIHN3YXBzIHRoZSBmcm9udCAvIGJh
Y2sgY29sb3IgYnVmZmVyIHRleHR1cmVzCisgICAgICAgIGlmIHByZXNlcnZlRHJhd2luZ0J1ZmZl
ciBpcyBmYWxzZSBhbmQgd2UncmUgdXNpbmcgc2VwYXJhdGUgZnJvbnQgLyBiYWNrIGNvbG9yIGJ1
ZmZlcnMuIFNlY29uZCwgb24gdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgdGhyZWFkLCB3ZSBkbyBh
IHRleHR1cmUgY29weSBmcm9tIHRoZSBiYWNrIHRvIHRoZSBmcm9udCBjb2xvciBidWZmZXIgaWYg
cHJlc2VydmVEcmF3aW5nQnVmZmVyIGlzIHRydWUuIEFmdGVyCisgICAgICAgIHRoZXNlIHN0ZXBz
IGFyZSBjb21wbGV0ZSB0aGUgbWFpbiB0aHJlYWQgaXMgZnJlZSB0byBtYW5pcHVsYXRlIHRoZSBi
YWNrIGJ1ZmZlciBjb2xvciB0ZXh0dXJlIHdpdGhvdXQgYWZmZWN0aW5nCisgICAgICAgIGFueSBy
ZXNvdXJjZXMgdGhlIGNvbXBvc2l0b3IgaXMgdXNpbmcuCisKKyAgICAgICAgT25lIGluY2lkZW50
YWwgY2xlYW51cCB0aGlzIHBhdGNoIGFsc28gZG9lcyBpcyByZW1vdmUgYWxsIHN0YXRlIHF1ZXJp
ZXMgZnJvbSBEcmF3aW5nQnVmZmVyOjpjbGVhckZyYW1lYnVmZmVyKCkKKyAgICAgICAgc2luY2Ug
d2UncmUgc2hhZG93aW5nIHRoZSByZWxldmFudCBHTCBzdGF0ZSBvbiB0aGUgV2ViR0xSZW5kZXJp
bmdDb250ZXh0IGFueXdheS4KKworICAgICAgICBUZXN0czogZmFzdC9jYW52YXMvd2ViZ2wvd2Vi
Z2wtY29tcG9zaXRlLW1vZGVzLXJlcGFpbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jYW52
YXMvd2ViZ2wvd2ViZ2wtY29tcG9zaXRlLW1vZGVzLmh0bWwKKworICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJJZkNvbXBv
c2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXN0b3Jl
U3RhdGVBZnRlckNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6cmVzaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Om1h
eWJlUmVzdG9yZUNvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oOgorICAgICAgICAoV2ViR0xSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0RyYXdpbmdCdWZmZXJCbGFja0JlcnJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpwcmVwYXJlQmFj
a0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpyZXF1aXJlc0NvcHlG
cm9tQmFja1RvRnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6
ZnJvbnRDb2xvckJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRHJh
d2luZ0J1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRy
YXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3
aW5nQnVmZmVyOjpwcmVwYXJlQmFja0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5n
QnVmZmVyOjpyZXF1aXJlc0NvcHlGcm9tQmFja1RvRnJvbnRCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhd2luZ0J1ZmZlcjo6ZnJvbnRDb2xvckJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdlbmVyYXRlQ29sb3JUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdp
bmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZl
cjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpwcmVwYXJl
QmFja0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdp
bmdCdWZmZXI6OnJlcXVpcmVzQ29weUZyb21CYWNrVG9Gcm9udEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpmcm9udENvbG9yQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTExheWVyQ2hyb21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnBhaW50UmVuZGVyZWRSZXN1
bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpzZXRO
ZWVkc0Rpc3BsYXlSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6
c2V0RHJhd2luZ0J1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
V2ViR0xMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJHTExheWVyQ2hyb21pdW0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvRHJhd2luZ0J1ZmZlckNsdXR0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OnByZXBhcmVC
YWNrQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OnJlcXVpcmVzQ29w
eUZyb21CYWNrVG9Gcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVy
Ojpmcm9udENvbG9yQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ3VzdG9tRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ3VzdG9tRmlsdGVyOjpp
bml0aWFsaXplQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdp
bmdCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYXdpbmdCdWZmZXI6OmNsZWFyRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhd2luZ0J1ZmZlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6
ZGlzY2FyZFJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdp
bmdCdWZmZXIuaDoKKyAgICAgICAgKERyYXdpbmdCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpwcmVwYXJlQmFja0J1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpyZXF1aXJlc0NvcHlGcm9tQmFja1RvRnJvbnRCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6ZnJvbnRDb2xvckJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhd2luZ0J1ZmZlcjo6cHJlcGFyZUJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhd2luZ0J1ZmZlcjo6cmVxdWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6ZnJvbnRD
b2xvckJ1ZmZlcik6CisKIDIwMTItMDQtMDMgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJk
QG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBBU1NFUlQgZml4IG9uIENocm9t
aXVtIGJvdHMgKGluIGRlYnVnKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOGE0NDMy
OTEwNDdhZDE1Y2JkOTNkMTZhM2E5NTRlNjg5YmFhYTFjZS4uNzg4YWU4YzY3ZjJlMjRhNTE0Mjlk
NzBmZmQ1MmMwODFjMzA4YTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMi0wNC0wNSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFdlYkdMIGNvbnRlbnQgc3dhcHBlZCBhdCB3cm9uZyB0aW1lIGluIHRocmVh
ZGVkIGNvbXBvc2l0aW5nIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgyMjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB0ZXN0cy9XZWJHTExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6VEVTVCk6CisKIDIwMTItMDQtMDMgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIENhbGwgaW5jcmVtZW50U3RhdHNDb3VudGVyIGRpcmVjdGx5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcAppbmRleCBkNWRhMTgyOWE2ZDQzMGJiMmQ0Y2EyN2UwZDg1MjhkZTQ3MzAwYjFkLi5h
NmI1MWQwZGY5ZjAzYjg3NGIyYmY5Y2JmZjUzZTkyYWFjOTVhNDI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTQz
Nyw3ICs0MzcsOSBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4
dChIVE1MQ2FudmFzRWxlbWVudCogcGFzc2VkQ2FudmFzLCBQYQogCiAjaWYgUExBVEZPUk0oQ0hS
T01JVU0pCiAgICAgLy8gQ3JlYXRlIHRoZSBEcmF3aW5nQnVmZmVyIGFuZCBpbml0aWFsaXplIHRo
ZSBwbGF0Zm9ybSBsYXllci4KLSAgICBtX2RyYXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpj
cmVhdGUobV9jb250ZXh0LmdldCgpLCBJbnRTaXplKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMo
KS0+aGVpZ2h0KCkpLCAhbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcik7CisgICAg
RHJhd2luZ0J1ZmZlcjo6UHJlc2VydmVEcmF3aW5nQnVmZmVyIHByZXNlcnZlID0gbV9hdHRyaWJ1
dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA/IERyYXdpbmdCdWZmZXI6OlByZXNlcnZlIDogRHJh
d2luZ0J1ZmZlcjo6RGlzY2FyZDsKKyAgICBEcmF3aW5nQnVmZmVyOjpBbHBoYVJlcXVpcmVtZW50
IGFscGhhID0gbV9hdHRyaWJ1dGVzLmFscGhhID8gRHJhd2luZ0J1ZmZlcjo6QWxwaGEgOiBEcmF3
aW5nQnVmZmVyOjpPcGFxdWU7CisgICAgbV9kcmF3aW5nQnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6
Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgSW50U2l6ZShjYW52YXMoKS0+c2l6ZSgpKSwgcHJlc2Vy
dmUsIGFscGhhKTsKICNlbmRpZgogCiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlcikKQEAgLTYyMywz
MiArNjI1LDQ2IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjbGVhcklmQ29tcG9zaXRl
ZChHQzNEYml0ZmllbGQgbWFzaykKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9jb250ZXh0
LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCAwKTsKICAg
ICB9Ci0gICAgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RF
U1QpOwotICAgIGlmIChjb21iaW5lZENsZWFyICYmIChtYXNrICYgR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SX0JVRkZFUl9CSVQpKQotICAgICAgICBtX2NvbnRleHQtPmNsZWFyQ29sb3IobV9jb2xv
ck1hc2tbMF0gPyBtX2NsZWFyQ29sb3JbMF0gOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9jb2xvck1hc2tbMV0gPyBtX2NsZWFyQ29sb3JbMV0gOiAwLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9jb2xvck1hc2tbMl0gPyBtX2NsZWFyQ29sb3JbMl0gOiAwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb2xvck1hc2tbM10gPyBtX2NsZWFyQ29s
b3JbM10gOiAwKTsKLSAgICBlbHNlCi0gICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAw
LCAwLCAwKTsKLSAgICBtX2NvbnRleHQtPmNvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCB0cnVl
KTsKLSAgICBHQzNEYml0ZmllbGQgY2xlYXJNYXNrID0gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9S
X0JVRkZFUl9CSVQ7Ci0gICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzLT5kZXB0aCgpKSB7Ci0gICAg
ICAgIGlmICghY29tYmluZWRDbGVhciB8fCAhbV9kZXB0aE1hc2sgfHwgIShtYXNrICYgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQpKQotICAgICAgICAgICAgbV9jb250ZXh0LT5j
bGVhckRlcHRoKDEuMGYpOwotICAgICAgICBjbGVhck1hc2sgfD0gR3JhcGhpY3NDb250ZXh0M0Q6
OkRFUFRIX0JVRkZFUl9CSVQ7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVwdGhNYXNrKHRydWUpOwot
ICAgIH0KLSAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMtPnN0ZW5jaWwoKSkgewotICAgICAgICBp
ZiAoY29tYmluZWRDbGVhciAmJiAobWFzayAmIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JV
RkZFUl9CSVQpKQotICAgICAgICAgICAgbV9jb250ZXh0LT5jbGVhclN0ZW5jaWwobV9jbGVhclN0
ZW5jaWwgJiBtX3N0ZW5jaWxNYXNrKTsKKyAgICBpZiAobV9kcmF3aW5nQnVmZmVyKQorICAgICAg
ICBtX2RyYXdpbmdCdWZmZXItPmNsZWFyRnJhbWVidWZmZXIoKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpOwor
ICAgICAgICBpZiAoY29tYmluZWRDbGVhciAmJiAobWFzayAmIEdyYXBoaWNzQ29udGV4dDNEOjpD
T0xPUl9CVUZGRVJfQklUKSkKKyAgICAgICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcihtX2Nv
bG9yTWFza1swXSA/IG1fY2xlYXJDb2xvclswXSA6IDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9jb2xvck1hc2tbMV0gPyBtX2NsZWFyQ29sb3JbMV0gOiAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29sb3JNYXNrWzJdID8gbV9jbGVhckNvbG9y
WzJdIDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbG9yTWFza1sz
XSA/IG1fY2xlYXJDb2xvclszXSA6IDApOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Nv
bnRleHQtPmNsZWFyU3RlbmNpbCgwKTsKLSAgICAgICAgY2xlYXJNYXNrIHw9IEdyYXBoaWNzQ29u
dGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7Ci0gICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1h
c2tTZXBhcmF0ZShHcmFwaGljc0NvbnRleHQzRDo6RlJPTlQsIDB4RkZGRkZGRkYpOworICAgICAg
ICAgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAsIDAsIDAsIDApOworICAgICAgICBtX2NvbnRl
eHQtPmNvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKyAgICAgICAgR0MzRGJpdGZp
ZWxkIGNsZWFyTWFzayA9IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUOworICAg
ICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMtPmRlcHRoKCkpIHsKKyAgICAgICAgICAgIGlmICgh
Y29tYmluZWRDbGVhciB8fCAhbV9kZXB0aE1hc2sgfHwgIShtYXNrICYgR3JhcGhpY3NDb250ZXh0
M0Q6OkRFUFRIX0JVRkZFUl9CSVQpKQorICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Y2xlYXJE
ZXB0aCgxLjBmKTsKKyAgICAgICAgICAgIGNsZWFyTWFzayB8PSBHcmFwaGljc0NvbnRleHQzRDo6
REVQVEhfQlVGRkVSX0JJVDsKKyAgICAgICAgICAgIG1fY29udGV4dC0+ZGVwdGhNYXNrKHRydWUp
OworICAgICAgICB9CisgICAgICAgIGlmIChjb250ZXh0QXR0cmlidXRlcy0+c3RlbmNpbCgpKSB7
CisgICAgICAgICAgICBpZiAoY29tYmluZWRDbGVhciAmJiAobWFzayAmIEdyYXBoaWNzQ29udGV4
dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQpKQorICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Y2xl
YXJTdGVuY2lsKG1fY2xlYXJTdGVuY2lsICYgbV9zdGVuY2lsTWFzayk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5jbGVhclN0ZW5jaWwoMCk7CisgICAgICAg
ICAgICBjbGVhck1hc2sgfD0gR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJVDsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2tTZXBhcmF0ZShHcmFwaGljc0NvbnRl
eHQzRDo6RlJPTlQsIDB4RkZGRkZGRkYpOworICAgICAgICB9CisgICAgICAgIG1fY29udGV4dC0+
Y2xlYXIoY2xlYXJNYXNrKTsKICAgICB9Ci0gICAgbV9jb250ZXh0LT5jbGVhcihjbGVhck1hc2sp
OwogCisgICAgcmVzdG9yZVN0YXRlQWZ0ZXJDbGVhcigpOworICAgIGlmIChtX2ZyYW1lYnVmZmVy
QmluZGluZykKKyAgICAgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBvYmplY3RPclplcm8obV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0
KCkpKTsKKyAgICBtX2xheWVyQ2xlYXJlZCA9IHRydWU7CisKKyAgICByZXR1cm4gY29tYmluZWRD
bGVhcjsKK30KKwordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVTdGF0ZUFmdGVy
Q2xlYXIoKQorewogICAgIC8vIFJlc3RvcmUgdGhlIHN0YXRlIHRoYXQgdGhlIGNvbnRleHQgc2V0
LgogICAgIGlmIChtX3NjaXNzb3JFbmFibGVkKQogICAgICAgICBtX2NvbnRleHQtPmVuYWJsZShH
cmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKTsKQEAgLTY2MCwxMSArNjc2LDYgQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFySWZDb21wb3NpdGVkKEdDM0RiaXRmaWVsZCBt
YXNrKQogICAgIG1fY29udGV4dC0+Y2xlYXJTdGVuY2lsKG1fY2xlYXJTdGVuY2lsKTsKICAgICBt
X2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkZST05ULCBt
X3N0ZW5jaWxNYXNrKTsKICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayhtX2RlcHRoTWFzayk7Ci0g
ICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nKQotICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFt
ZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG9iamVjdE9yWmVybyhtX2Zy
YW1lYnVmZmVyQmluZGluZy5nZXQoKSkpOwotICAgIG1fbGF5ZXJDbGVhcmVkID0gdHJ1ZTsKLQot
ICAgIHJldHVybiBjb21iaW5lZENsZWFyOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6bWFya0xheWVyQ29tcG9zaXRlZCgpCkBAIC03NDgsOSArNzU5LDEwIEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogICAgIC8v
IFdlIGRvbid0IGhhdmUgdG8gbWFyayB0aGUgY2FudmFzIGFzIGRpcnR5LCBzaW5jZSB0aGUgbmV3
bHkgY3JlYXRlZCBpbWFnZSBidWZmZXIgd2lsbCBhbHNvIHN0YXJ0IG9mZgogICAgIC8vIGNsZWFy
IChhbmQgdGhpcyBtYXRjaGVzIHdoYXQgcmVzaGFwZSB3aWxsIGRvKS4KLSAgICBpZiAobV9kcmF3
aW5nQnVmZmVyKQorICAgIGlmIChtX2RyYXdpbmdCdWZmZXIpIHsKICAgICAgICAgbV9kcmF3aW5n
QnVmZmVyLT5yZXNldChJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLSAgICBlbHNlCisgICAgICAg
IHJlc3RvcmVTdGF0ZUFmdGVyQ2xlYXIoKTsKKyAgICB9IGVsc2UKICAgICAgICAgbV9jb250ZXh0
LT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOwogCiAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgb2JqZWN0T3JaZXJvKG1fdGV4dHVyZVVuaXRz
W21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZTJEQmluZGluZy5nZXQoKSkpOwpAQCAtNTM0
Nyw3ICs1MzU5LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Om1heWJlUmVzdG9yZUNv
bnRleHQoVGltZXI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiopCiAgICAgLy8gQ29uc3RydWN0IGEg
bmV3IGRyYXdpbmcgYnVmZmVyIHdpdGggdGhlIG5ldyBHcmFwaGljc0NvbnRleHQzRC4KICAgICBp
ZiAobV9kcmF3aW5nQnVmZmVyKSB7CiAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+ZGlzY2FyZFJl
c291cmNlcygpOwotICAgICAgICBtX2RyYXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVh
dGUoY29udGV4dC5nZXQoKSwgbV9kcmF3aW5nQnVmZmVyLT5zaXplKCksICFtX2F0dHJpYnV0ZXMu
cHJlc2VydmVEcmF3aW5nQnVmZmVyKTsKKyAgICAgICAgRHJhd2luZ0J1ZmZlcjo6UHJlc2VydmVE
cmF3aW5nQnVmZmVyIHByZXNlcnZlID0gbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZl
ciA/IERyYXdpbmdCdWZmZXI6OlByZXNlcnZlIDogRHJhd2luZ0J1ZmZlcjo6RGlzY2FyZDsKKyAg
ICAgICAgRHJhd2luZ0J1ZmZlcjo6QWxwaGFSZXF1aXJlbWVudCBhbHBoYSA9IG1fYXR0cmlidXRl
cy5hbHBoYSA/IERyYXdpbmdCdWZmZXI6OkFscGhhIDogRHJhd2luZ0J1ZmZlcjo6T3BhcXVlOwor
ICAgICAgICBtX2RyYXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoY29udGV4dC5n
ZXQoKSwgbV9kcmF3aW5nQnVmZmVyLT5zaXplKCksIHByZXNlcnZlLCBhbHBoYSk7CiAgICAgICAg
IG1fZHJhd2luZ0J1ZmZlci0+YmluZCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA4NTQyMDAxYzk3NTcz
OGQzZTg0YTUwZWY2MmFhZGExNjQ2MDE4NDRhLi41NzdjNjhiNTQ4MzFkZDQ5YjJmYTVjODZjMGI1
MzRmMTc2ZjRjMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaApAQCAtNTIzLDYgKzUyMyw5IEBAIHB1YmxpYzoKICAgICAvLyBh
bmQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGF0IGNsZWFyIGlzIG5vdyB1bm5lY2Vz
c2FyeS4KICAgICBib29sIGNsZWFySWZDb21wb3NpdGVkKEdDM0RiaXRmaWVsZCBjbGVhck1hc2sg
PSAwKTsKIAorICAgIC8vIEhlbHBlciB0byByZXN0b3JlIHN0YXRlIHRoYXQgY2xlYXJpbmcgdGhl
IGZyYW1lYnVmZmVyIG1heSBkZXN0cm95LgorICAgIHZvaWQgcmVzdG9yZVN0YXRlQWZ0ZXJDbGVh
cigpOworCiAgICAgdm9pZCB0ZXhJbWFnZTJEQmFzZShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQg
bGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
R0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgdm9pZCog
cGl4ZWxzLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0RyYXdpbmdCdWZmZXJCbGFja0JlcnJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRHJhd2luZ0J1ZmZlckJs
YWNrQmVycnkuY3BwCmluZGV4IGM1MzEwOGMwMGExMWQ3NjBjNTEyMjZlZTlkNzVkOGUyZTU3YmFi
MmUuLjhkZmQ2ZjNmN2E4NmM4NWRhYjlhZTQwMGVkZmU5MjAyM2E4NDNhZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRHJhd2luZ0J1ZmZl
ckJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvRHJhd2luZ0J1ZmZlckJsYWNrQmVycnkuY3BwCkBAIC02Nyw2ICs2Nyw4IEBAIERy
YXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNv
bnN0IEludFNpemUmIHNpemUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc2l6
ZShzaXplKQogICAgICwgbV9mYm8oY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKSkKKyAgICAs
IG1fZnJvbnRDb2xvckJ1ZmZlcigwKQorICAgICwgbV9zZXBhcmF0ZUZyb250VGV4dHVyZShmYWxz
ZSkKIHsKICAgICBtX2ludGVybmFsID0gYWRvcHRQdHIobmV3IERyYXdpbmdCdWZmZXJJbnRlcm5h
bCk7CiAKQEAgLTg1LDI1ICs4Nyw2IEBAIERyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKCkK
ICAgICBjbGVhcigpOwogfQogCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotdm9p
ZCBEcmF3aW5nQnVmZmVyOjpwdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCkKLXsKLSAgICBpZiAoIW1f
Y29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fY2FsbGJhY2spCi0gICAgICAg
IG1fY2FsbGJhY2stPndpbGxQdWJsaXNoKCk7Ci0KLSAgICAvLyBGSVhNRTogV2UgZG8gdGhlIGNv
cHkgaW4gdGhlIGNhbnZhcycgKGNoaWxkKSBjb250ZXh0IHNvIHRoYXQgaXQgZXhlY3V0ZXMgaW4g
dGhlIGNvcnJlY3Qgb3JkZXIgcmVsYXRpdmUgdG8KLSAgICAvLyBvdGhlciBjb21tYW5kcyBpbiB0
aGUgY2hpbGQgY29udGV4dC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHBhcmVudCB0ZXh0dXJlIGFs
d2F5cyBjb250YWlucyBhIGNvbXBsZXRlCi0gICAgLy8gZnJhbWUgYW5kIG5vdCBzb21lIGludGVy
bWVkaWF0ZSByZXN1bHQuIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIHN5bmNocm9uaXphdGlvbiB0byBl
bnN1cmUgdGhhdCB0aGlzIGNvcHkKLSAgICAvLyBoYXBwZW5zIGJlZm9yZSB0aGUgY29tcG9zaXRv
ciBkcmF3cy4gVGhpcyBtZWFucyB3ZSBtaWdodCBkcmF3IHN0YWxlIGZyYW1lcyBzb21ldGltZXMu
IElkZWFsbHkgdGhpcwotICAgIC8vIHdvdWxkIGluc2VydCBhIGZlbmNlIGludG8gdGhlIGNoaWxk
IGNvbW1hbmQgc3RyZWFtIHRoYXQgdGhlIGNvbXBvc2l0b3IgY291bGQgd2FpdCBmb3IuCi0gICAg
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBtX2NvbnRleHQtPmZsdXNoKCk7
Ci19Ci0jZW5kaWYKLQogYm9vbCBEcmF3aW5nQnVmZmVyOjpyZXNldChjb25zdCBJbnRTaXplJiBu
ZXdTaXplKQogewogICAgIGlmICghbV9jb250ZXh0KQpAQCAtMTI1LDYgKzEwOCwyMCBAQCBQbGF0
Zm9ybUxheWVyKiBEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkKIHsKICAgICByZXR1cm4g
bV9pbnRlcm5hbC0+cGxhdGZvcm1MYXllci5nZXQoKTsKIH0KKwordm9pZCBEcmF3aW5nQnVmZmVy
OjpwcmVwYXJlQmFja0J1ZmZlcigpCit7Cit9CisKK2Jvb2wgRHJhd2luZ0J1ZmZlcjo6cmVxdWly
ZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3Vuc2lnbmVkIERyYXdpbmdCdWZmZXI6OmZyb250Q29sb3JCdWZmZXIoKSBjb25zdAor
eworICAgIHJldHVybiBjb2xvckJ1ZmZlcigpOworfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0RyYXdpbmdCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9EcmF3aW5nQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDA2N2I5YzdiMzYyNWZjNGIy
NDI1ZTJlOTYxNjdmYjljNTE2MGM2MWEuLmVjMTI3MGRlYjRlOWQ4NWVlZjA2MGRhMGMxMzNmODE4
NDg1MjRmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0RyYXdpbmdCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRHJhd2luZ0J1ZmZlckNhaXJvLmNwcApAQCAtMzcsOCArMzcsMTAgQEAg
RHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtdWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwYWNrZWREZXB0aFN0ZW5jaWxF
eHRlbnNpb25TdXBwb3J0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2Vw
YXJhdGVCYWNraW5nVGV4dHVyZSkKLSAgICA6IG1fc2VwYXJhdGVCYWNraW5nVGV4dHVyZShzZXBh
cmF0ZUJhY2tpbmdUZXh0dXJlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVzZXJ2
ZURyYXdpbmdCdWZmZXIgcHJlc2VydmVEcmF3aW5nQnVmZmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbHBoYVJlcXVpcmVtZW50IGFscGhhKQorICAgIDogbV9wcmVzZXJ2ZURyYXdp
bmdCdWZmZXIocHJlc2VydmVEcmF3aW5nQnVmZmVyKQorICAgICwgbV9hbHBoYShhbHBoYSkKICAg
ICAsIG1fc2Npc3NvckVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3RleHR1cmUyREJpbmRpbmcoMCkK
ICAgICAsIG1fYWN0aXZlVGV4dHVyZVVuaXQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKQpA
QCAtNDgsMTUgKzUwLDE0IEBAIERyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsCiAgICAgLCBtX3BhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1
cHBvcnRlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQpCiAgICAgLCBtX2Zi
byhjb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpKQogICAgICwgbV9jb2xvckJ1ZmZlcigwKQor
ICAgICwgbV9mcm9udENvbG9yQnVmZmVyKDApCisgICAgLCBtX3NlcGFyYXRlRnJvbnRUZXh0dXJl
KGZhbHNlKQogICAgICwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIoMCkKICAgICAsIG1fZGVwdGhCdWZm
ZXIoMCkKICAgICAsIG1fc3RlbmNpbEJ1ZmZlcigwKQogICAgICwgbV9tdWx0aXNhbXBsZUZCTygw
KQogICAgICwgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKDApCiB7Ci0gICAgLy8gU3VwcG9ydCBm
b3IgYSBzZXBhcmF0ZSBiYWNraW5nIHRleHR1cmUgaGFzIG9ubHkgYmVlbiBlbmFibGVkIGZvcgot
ICAgIC8vIHRoZSBjaHJvbWl1bSBwb3J0LgotICAgIEFTU0VSVCghbV9zZXBhcmF0ZUJhY2tpbmdU
ZXh0dXJlKTsKICAgICBBU1NFUlQobV9mYm8pOwogICAgIGlmICghbV9mYm8pIHsKICAgICAgICAg
Y2xlYXIoKTsKQEAgLTgxLDEyICs4MiwyMSBAQCBEcmF3aW5nQnVmZmVyOjp+RHJhd2luZ0J1ZmZl
cigpCiAgICAgY2xlYXIoKTsKIH0KIAotUGxhdGZvcm0zRE9iamVjdCBEcmF3aW5nQnVmZmVyOjpw
bGF0Zm9ybUNvbG9yQnVmZmVyKCkgY29uc3QKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCit2b2lkIERyYXdpbmdCdWZmZXI6OnByZXBhcmVCYWNrQnVmZmVyKCkKIHsKLSAgICByZXR1
cm4gbV9jb2xvckJ1ZmZlcjsKIH0KIAotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
K2Jvb2wgRHJhd2luZ0J1ZmZlcjo6cmVxdWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVmZmVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Vuc2lnbmVkIERyYXdpbmdCdWZmZXI6
OmZyb250Q29sb3JCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBjb2xvckJ1ZmZlcigpOwor
fQorCiB2b2lkIERyYXdpbmdCdWZmZXI6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhD
YW52YXNSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdC
dWZmZXJDaHJvbWl1bS5jcHAKaW5kZXggNTUxYWRmNzY5NzYyOTVjOTk2MDMyMDQyM2Y5NjE5OTQy
MGI1NDc5OS4uNjE1NzZmY2M0MDVkZjczNDgxYzA2YjIwZGY5NTFiZGEzMGMyNmI4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1
ZmZlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCkBAIC0zNiw2ICszNiwxMCBAQAogI2lu
Y2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKICNpbmNsdWRlICJXZWJHTExheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJjYy9DQ1By
b3h5LmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDggKzUwLDggQEAgc3RhdGljIHVuc2lnbmVkIGdl
bmVyYXRlQ29sb3JUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRT
aXplJgogICAgICAgICByZXR1cm4gMDsKIAogICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBvZmZzY3JlZW5Db2xvclRleHR1cmUpOwotICAgIGNv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFS
RVNUKTsKLSAgICBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6TkVBUkVTVCk7CisgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgY29udGV4dC0+dGV4UGFyYW1ldGVy
aShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CiAgICAgY29udGV4dC0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7
CiAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6
Q0xBTVBfVE9fRURHRSk7CiAgICAgY29udGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIHNp
emUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdy
YXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKTsKQEAgLTU5LDggKzYzLDEwIEBAIERyYXdp
bmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIHNpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgbXVsdGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uU3VwcG9ydGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlcGFyYXRl
QmFja2luZ1RleHR1cmUpCi0gICAgOiBtX3NlcGFyYXRlQmFja2luZ1RleHR1cmUoc2VwYXJhdGVC
YWNraW5nVGV4dHVyZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlc2VydmVEcmF3
aW5nQnVmZmVyIHByZXNlcnZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHBoYVJl
cXVpcmVtZW50IGFscGhhKQorICAgIDogbV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXIocHJlc2VydmUp
CisgICAgLCBtX2FscGhhKGFscGhhKQogICAgICwgbV9zY2lzc29yRW5hYmxlZChmYWxzZSkKICAg
ICAsIG1fdGV4dHVyZTJEQmluZGluZygwKQogICAgICwgbV9hY3RpdmVUZXh0dXJlVW5pdChHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRTApCkBAIC03MCw3ICs3Niw4IEBAIERyYXdpbmdCdWZmZXI6
OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCiAgICAgLCBtX3BhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNp
b25TdXBwb3J0ZWQpCiAgICAgLCBtX2ZibygwKQogICAgICwgbV9jb2xvckJ1ZmZlcigwKQotICAg
ICwgbV9iYWNraW5nQ29sb3JCdWZmZXIoMCkKKyAgICAsIG1fZnJvbnRDb2xvckJ1ZmZlcigwKQor
ICAgICwgbV9zZXBhcmF0ZUZyb250VGV4dHVyZShtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlciA9PSBQ
cmVzZXJ2ZSB8fCBDQ1Byb3h5OjppbXBsVGhyZWFkKCkpCiAgICAgLCBtX2RlcHRoU3RlbmNpbEJ1
ZmZlcigwKQogICAgICwgbV9kZXB0aEJ1ZmZlcigwKQogICAgICwgbV9zdGVuY2lsQnVmZmVyKDAp
CkBAIC05NSw4ICsxMDIsOCBAQCB2b2lkIERyYXdpbmdCdWZmZXI6OmluaXRpYWxpemUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKIHsKICAgICBtX2ZibyA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZm
ZXIoKTsKIAotICAgIGlmIChtX3NlcGFyYXRlQmFja2luZ1RleHR1cmUpCi0gICAgICAgIG1fYmFj
a2luZ0NvbG9yQnVmZmVyID0gZ2VuZXJhdGVDb2xvclRleHR1cmUobV9jb250ZXh0LmdldCgpLCBz
aXplKTsKKyAgICBpZiAobV9zZXBhcmF0ZUZyb250VGV4dHVyZSkKKyAgICAgICAgbV9mcm9udENv
bG9yQnVmZmVyID0gZ2VuZXJhdGVDb2xvclRleHR1cmUobV9jb250ZXh0LmdldCgpLCBzaXplKTsK
IAogICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9mYm8pOwogICAgIG1fY29sb3JCdWZmZXIgPSBnZW5lcmF0ZUNvbG9yVGV4dHVy
ZShtX2NvbnRleHQuZ2V0KCksIHNpemUpOwpAQCAtMTA5LDMzICsxMTYsMzUgQEAgdm9pZCBEcmF3
aW5nQnVmZmVyOjppbml0aWFsaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB9CiAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIERyYXdpbmdCdWZmZXI6OnB1Ymxpc2hUb1Bs
YXRmb3JtTGF5ZXIoKQordm9pZCBEcmF3aW5nQnVmZmVyOjpwcmVwYXJlQmFja0J1ZmZlcigpCiB7
Ci0gICAgaWYgKCFtX2NvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQogICAgIG1fY29udGV4dC0+
bWFrZUNvbnRleHRDdXJyZW50KCk7CisKICAgICBpZiAobXVsdGlzYW1wbGUoKSkKICAgICAgICAg
Y29tbWl0KCk7CiAKLSAgICBpZiAobV9zZXBhcmF0ZUJhY2tpbmdUZXh0dXJlKSB7CisgICAgaWYg
KG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyID09IERpc2NhcmQgJiYgbV9zZXBhcmF0ZUZyb250VGV4
dHVyZSkgeworICAgICAgICBzd2FwKG1fZnJvbnRDb2xvckJ1ZmZlciwgbV9jb2xvckJ1ZmZlcik7
CisgICAgICAgIC8vIEl0IGFwcGVhcnMgc2FmZSB0byBvdmVyd3JpdGUgdGhlIGNvbnRleHQncyBm
cmFtZWJ1ZmZlciBiaW5kaW5nIGluIHRoZSBEaXNjYXJkIGNhc2Ugc2luY2UgdGhlcmUgd2lsbCBh
bHdheXMgYmUgYQorICAgICAgICAvLyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFySWZDb21w
b3NpdGVkKCkgY2FsbCBtYWRlIGJlZm9yZSB0aGUgbmV4dCBkcmF3IGNhbGwgd2hpY2ggcmVzdG9y
ZXMgdGhlIGZyYW1lYnVmZmVyIGJpbmRpbmcuCisgICAgICAgIC8vIElmIHRoaXMgc3RvcHMgYmVp
bmcgdHJ1ZSBhdCBzb21lIHBvaW50LCB3ZSBzaG91bGQgdHJhY2sgdGhlIGN1cnJlbnQgZnJhbWVi
dWZmZXIgYmluZGluZyBpbiB0aGUgRHJhd2luZ0J1ZmZlciBhbmQgcmVzdG9yZQorICAgICAgICAv
LyBpdCBhZnRlciBhdHRhY2hpbmcgdGhlIG5ldyBiYWNrIGJ1ZmZlciBoZXJlLgogICAgICAgICBt
X2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IG1fZmJvKTsKLQotICAgICAgICAvLyBUaGlzIHBhdGggYWx3YXlzIHVzZXMgVEVYVFVSRTAsIGFu
ZCByZXN0b3JlcyBpdHMgc3RhdGUgYmVsb3cuCi0gICAgICAgIG1fY29udGV4dC0+YWN0aXZlVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwotICAgICAgICBtX2NvbnRleHQtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2JhY2tpbmdDb2xvckJ1
ZmZlcik7Ci0KLSAgICAgICAgdW5zaWduZWQgY29sb3JGb3JtYXQgPSBtX2NvbnRleHQtPmdldENv
bnRleHRBdHRyaWJ1dGVzKCkuYWxwaGEgPyBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSA6IEdyYXBo
aWNzQ29udGV4dDNEOjpSR0I7Ci0gICAgICAgIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGNvbG9yRm9ybWF0LCAwLCAwLCBzaXplKCku
d2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpLCAwKTsKLQotICAgICAgICBtX2NvbnRleHQtPmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmUyREJpbmRpbmcp
OwotICAgICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUobV9hY3RpdmVUZXh0dXJlVW5pdCk7
CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2NvbG9yQnVmZmVyLCAwKTsKICAgICB9CiAK
ICAgICBpZiAobXVsdGlzYW1wbGUoKSkKICAgICAgICAgYmluZCgpOworfQorCitib29sIERyYXdp
bmdCdWZmZXI6OnJlcXVpcmVzQ29weUZyb21CYWNrVG9Gcm9udEJ1ZmZlcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc2VwYXJhdGVGcm9udFRleHR1cmUgJiYgbV9wcmVzZXJ2ZURyYXdpbmdCdWZm
ZXIgPT0gUHJlc2VydmU7Cit9CiAKLSAgICBtX2NvbnRleHQtPmZsdXNoKCk7Cit1bnNpZ25lZCBE
cmF3aW5nQnVmZmVyOjpmcm9udENvbG9yQnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9z
ZXBhcmF0ZUZyb250VGV4dHVyZSA/IG1fZnJvbnRDb2xvckJ1ZmZlciA6IG1fY29sb3JCdWZmZXI7
CiB9CiAjZW5kaWYKIApAQCAtMTQ1LDE4ICsxNTQsMTMgQEAgUGxhdGZvcm1MYXllciogRHJhd2lu
Z0J1ZmZlcjo6cGxhdGZvcm1MYXllcigpCiAgICAgaWYgKCFtX3BsYXRmb3JtTGF5ZXIpIHsKICAg
ICAgICAgbV9wbGF0Zm9ybUxheWVyID0gV2ViR0xMYXllckNocm9taXVtOjpjcmVhdGUoKTsKICAg
ICAgICAgbV9wbGF0Zm9ybUxheWVyLT5zZXREcmF3aW5nQnVmZmVyKHRoaXMpOwotICAgICAgICBt
X3BsYXRmb3JtTGF5ZXItPnNldE9wYXF1ZSghbV9jb250ZXh0LT5nZXRDb250ZXh0QXR0cmlidXRl
cygpLmFscGhhKTsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyLT5zZXRPcGFxdWUobV9hbHBoYSA9
PSBPcGFxdWUpOwogICAgIH0KIAogICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CiB9
CiAjZW5kaWYKIAotUGxhdGZvcm0zRE9iamVjdCBEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUNvbG9y
QnVmZmVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZXBhcmF0ZUJhY2tpbmdUZXh0dXJlID8g
bV9iYWNraW5nQ29sb3JCdWZmZXIgOiBtX2NvbG9yQnVmZmVyOwotfQotCiBQbGF0Zm9ybTNET2Jq
ZWN0IERyYXdpbmdCdWZmZXI6OmZyYW1lYnVmZmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9m
Ym87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCBkYTU1ZjNhYzA2YzRkNWM0
NmVkYWMxNzlkODRkZjYzOGFjMjE5OWVjLi43NGU0YTFhYjg3OWI3MzNlMjQwNjQ4MTgzYmRmZjQ2
OTFhOTE1YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM3LDkgKzM3
LDExIEBACiAjaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnMz
RENocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJU
ZXh0dXJlQ29waWVyLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0ND
TGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZUxheWVySW1wbC5oIgorI2lu
Y2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01MiwxMCArNTQsOCBAQCBXZWJHTExheWVyQ2hyb21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bSgp
CiAgICAgOiBDYW52YXNMYXllckNocm9taXVtKCkKICAgICAsIG1faGFzQWxwaGEodHJ1ZSkKICAg
ICAsIG1fcHJlbXVsdGlwbGllZEFscGhhKHRydWUpCi0gICAgLCBtX3RleHR1cmVJZCgwKQotICAg
ICwgbV90ZXh0dXJlQ2hhbmdlZCh0cnVlKQotICAgICwgbV90ZXh0dXJlVXBkYXRlZChmYWxzZSkK
ICAgICAsIG1fY29udGV4dExvc3QoZmFsc2UpCisgICAgLCBtX3RleHR1cmVJZCgwKQogICAgICwg
bV9kcmF3aW5nQnVmZmVyKDApCiB7CiB9CkBAIC03MywyOCArNzMsMjUgQEAgYm9vbCBXZWJHTExh
eWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAKIHZvaWQgV2ViR0xMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9j
Y2x1c2lvbiAqLykKIHsKLSAgICBpZiAoIWRyYXdzQ29udGVudCgpIHx8ICFtX25lZWRzRGlzcGxh
eSB8fCAhbV90ZXh0dXJlVXBkYXRlZCkKKyAgICBpZiAoIWRyYXdzQ29udGVudCgpIHx8ICFtX25l
ZWRzRGlzcGxheSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZHJhd2luZ0J1ZmZlcigpLT5wdWJs
aXNoVG9QbGF0Zm9ybUxheWVyKCk7CisgICAgbV9kcmF3aW5nQnVmZmVyLT5wcmVwYXJlQmFja0J1
ZmZlcigpOworCisgICAgY29udGV4dCgpLT5mbHVzaCgpOwogICAgIGNvbnRleHQoKS0+bWFya0xh
eWVyQ29tcG9zaXRlZCgpOwogICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7Ci0gICAgbV90ZXh0
dXJlVXBkYXRlZCA9IGZhbHNlOwogICAgIG1fY29udGV4dExvc3QgPSBjb250ZXh0KCktPmdldEV4
dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpICE9IEdyYXBoaWNzQ29udGV4
dDNEOjpOT19FUlJPUjsKIH0KIAotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQ29udGV4dCwgQ0NUZXh0
dXJlVXBkYXRlciYpCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBk
YXRlcikKIHsKLSAgICBpZiAobV90ZXh0dXJlQ2hhbmdlZCkgewotICAgICAgICByZW5kZXJlckNv
bnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1
cmVJZCk7Ci0gICAgICAgIC8vIFNldCB0aGUgbWluLW1hZyBmaWx0ZXJzIHRvIGxpbmVhciBhbmQg
d3JhcCBtb2RlcyB0byBHTF9DTEFNUF9UT19FREdFCi0gICAgICAgIC8vIHRvIGdldCBhcm91bmQg
TlBPVCB0ZXh0dXJlIGxpbWl0YXRpb25zIG9mIEdMRVMuCi0gICAgICAgIHJlbmRlcmVyQ29udGV4
dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7
Ci0gICAgICAgIHJlbmRlcmVyQ29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgICAgIHJlbmRlcmVyQ29udGV4dC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0gICAg
ICAgIHJlbmRlcmVyQ29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRl
eHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIG1fdGV4dHVyZUNoYW5nZWQgPSBmYWxzZTsK
LSAgICB9CisgICAgaWYgKCFtX2RyYXdpbmdCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fdGV4dHVyZUlkID0gbV9kcmF3aW5nQnVmZmVyLT5mcm9udENvbG9yQnVmZmVyKCk7CisgICAg
aWYgKG1fZHJhd2luZ0J1ZmZlci0+cmVxdWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVmZmVyKCkp
CisgICAgICAgIHVwZGF0ZXIuY29waWVyKCktPmNvcHlUZXh0dXJlKGNvbnRleHQsIG1fZHJhd2lu
Z0J1ZmZlci0+Y29sb3JCdWZmZXIoKSwgbV90ZXh0dXJlSWQsIGJvdW5kcygpKTsKIH0KIAogdm9p
ZCBXZWJHTExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVy
KQpAQCAtMTA5LDcgKzEwNiw3IEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjpwdXNoUHJvcGVy
dGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKIAogYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OnBh
aW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogewot
ICAgIGlmIChtX3RleHR1cmVVcGRhdGVkIHx8ICFtX2RyYXdpbmdCdWZmZXIgfHwgIWRyYXdzQ29u
dGVudCgpKQorICAgIGlmICghbV9kcmF3aW5nQnVmZmVyIHx8ICFkcmF3c0NvbnRlbnQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSW50U2l6ZSBmcmFtZWJ1ZmZlclNpemUgPSBjb250
ZXh0KCktPmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCk7CkBAIC0xMzYsOCArMTMzLDYgQEAg
dm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheVJlY3QoY29uc3QgRmxvYXRS
ZWN0JiBkaXJ0eVJlY3QpCiB7CiAgICAgTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5UmVj
dChkaXJ0eVJlY3QpOwogCi0gICAgbV90ZXh0dXJlVXBkYXRlZCA9IHRydWU7Ci0KICAgICAvLyBJ
ZiBXZWJHTCBjb21tYW5kcyBhcmUgaXNzdWVkIG91dHNpZGUgb2YgYSB0aGUgYW5pbWF0aW9uIGNh
bGxiYWNrcywgdGhlbiB1c2UKICAgICAvLyBjYWxsIHJhdGVMaW1pdE9mZnNjcmVlbkNvbnRleHRD
SFJPTUlVTSgpIHRvIGtlZXAgdGhlIGNvbnRleHQgZnJvbSBnZXR0aW5nIHRvbyBmYXIgYWhlYWQu
CiAgICAgaWYgKGxheWVyVHJlZUhvc3QoKSkKQEAgLTE2MCwxMiArMTU1LDYgQEAgdm9pZCBXZWJH
TExheWVyQ2hyb21pdW06OnNldERyYXdpbmdCdWZmZXIoRHJhd2luZ0J1ZmZlciogZHJhd2luZ0J1
ZmZlcikKICAgICBpZiAoIW1fZHJhd2luZ0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
dW5zaWduZWQgaW50IHRleHR1cmVJZCA9IG1fZHJhd2luZ0J1ZmZlci0+cGxhdGZvcm1Db2xvckJ1
ZmZlcigpOwotICAgIGlmICh0ZXh0dXJlSWQgIT0gbV90ZXh0dXJlSWQgfHwgZHJhd2luZ0J1ZmZl
ckNoYW5nZWQpIHsKLSAgICAgICAgbV90ZXh0dXJlQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgIG1f
dGV4dHVyZVVwZGF0ZWQgPSB0cnVlOwotICAgIH0KLSAgICBtX3RleHR1cmVJZCA9IHRleHR1cmVJ
ZDsKICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gY29udGV4
dCgpLT5nZXRDb250ZXh0QXR0cmlidXRlcygpOwogICAgIG1faGFzQWxwaGEgPSBhdHRyaWJ1dGVz
LmFscGhhOwogICAgIG1fcHJlbXVsdGlwbGllZEFscGhhID0gYXR0cmlidXRlcy5wcmVtdWx0aXBs
aWVkQWxwaGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDY1MDlmYjM1OGQ5NWU5
YjBkZjE3MWFjMGIxY2RmYzVkNTM1NDE2M2QuLjcxMWMwYmU4MjQ3MmJhNTVhMDQyMjUxOGQ4M2Ew
MmMxY2NjZDZjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCkBAIC00OSw5ICs0OSw2
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwogCi0gICAg
dW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KLSAgICB2
b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJlSWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0
dXJlSWQ7IH0KLQogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2Vy
Kik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CkBAIC02OSwxMCArNjYsOCBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBtX2hhc0FscGhhOwogICAgIGJvb2wgbV9wcmVtdWx0aXBsaWVkQWxwaGE7
Ci0gICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci0gICAgYm9vbCBtX3RleHR1cmVDaGFuZ2VkOwot
ICAgIGJvb2wgbV90ZXh0dXJlVXBkYXRlZDsKICAgICBib29sIG1fY29udGV4dExvc3Q7CisgICAg
dW5zaWduZWQgbV90ZXh0dXJlSWQ7CiAKICAgICAvLyBUaGUgRHJhd2luZ0J1ZmZlciBob2xkaW5n
IHRoZSBXZWJHTCBjb250ZW50cyBmb3IgdGhpcyBsYXllci4KICAgICAvLyBBIHJlZmVyZW5jZSBp
cyBub3QgaGVsZCBoZXJlLCBiZWNhdXNlIHRoZSBEcmF3aW5nQnVmZmVyIGFscmVhZHkgaG9sZHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvRHJh
d2luZ0J1ZmZlckNsdXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2x1dHRlci9EcmF3aW5nQnVmZmVyQ2x1dHRlci5jcHAKaW5kZXggMWYzMzJjMTEwNmQ4MzlhOTQ2
Y2JiNjkwNmYyYTJmZGMxZGQ5N2I3OC4uNDFiYzdlNjEyMjE2NWMwOTI5NGNjYWYwOTdjZDgyZTE1
OWEzYWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1
dHRlci9EcmF3aW5nQnVmZmVyQ2x1dHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2x1dHRlci9EcmF3aW5nQnVmZmVyQ2x1dHRlci5jcHAKQEAgLTQzLDcgKzQz
LDEyIEBAIERyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIHNpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbXVsdGlzYW1wbGVFeHRlbnNpb25T
dXBwb3J0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHNlcGFyYXRlQmFja2luZ1RleHR1cmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFByZXNlcnZlRHJhd2luZ0J1ZmZlciBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFscGhhUmVxdWlyZW1lbnQgYWxwaGEpCisgICAgOiBtX3ByZXNl
cnZlRHJhd2luZ0J1ZmZlcihwcmVzZXJ2ZURyYXdpbmdCdWZmZXIpCisgICAgLCBtX2FscGhhKGFs
cGhhKQorICAgICwgbV9mcm9udENvbG9yQnVmZmVyKDApCisgICAgLCBtX3NlcGFyYXRlRnJvbnRU
ZXh0dXJlKGZhbHNlKQogewogfQogCkBAIC01MSwxMiArNTYsMjEgQEAgRHJhd2luZ0J1ZmZlcjo6
fkRyYXdpbmdCdWZmZXIoKQogewogfQogCi1QbGF0Zm9ybTNET2JqZWN0IERyYXdpbmdCdWZmZXI6
OnBsYXRmb3JtQ29sb3JCdWZmZXIoKSBjb25zdAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKK3ZvaWQgRHJhd2luZ0J1ZmZlcjo6cHJlcGFyZUJhY2tCdWZmZXIoKQogewotICAgIHJl
dHVybiBtX2NvbG9yQnVmZmVyOwogfQogCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQorYm9vbCBEcmF3aW5nQnVmZmVyOjpyZXF1aXJlc0NvcHlGcm9tQmFja1RvRnJvbnRCdWZmZXIo
KSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordW5zaWduZWQgRHJhd2luZ0J1ZmZl
cjo6ZnJvbnRDb2xvckJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbG9yQnVmZmVyKCk7
Cit9CisKIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFz
KENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIu
Y3BwCmluZGV4IDIzYjZmZTExODRjNWYwNThiZDRkY2YyYzI4YjNmYmVmYWM2NTY4YzguLjhmYWZl
MDQyMGMxOTI4ZGJjMTEzN2IzNGM5NjkyMmEwMjg5NTc5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIu
Y3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBGRUN1c3RvbUZpbHRlcjo6aW5pdGlhbGl6ZUNv
bnRleHQoY29uc3QgSW50U2l6ZSYgY29udGV4dFNpemUpCiAgICAgCiAgICAgQVNTRVJUKCFtX2Nv
bnRleHQuZ2V0KCkpOwogICAgIG1fY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUo
YXR0cmlidXRlcywgbV9ob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyT2Zmc2Ny
ZWVuKTsKLSAgICBtX2RyYXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUobV9jb250
ZXh0LmdldCgpLCBjb250ZXh0U2l6ZSwgIWF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVy
KTsKKyAgICBtX2RyYXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUobV9jb250ZXh0
LmdldCgpLCBjb250ZXh0U2l6ZSwgRHJhd2luZ0J1ZmZlcjo6RGlzY2FyZCwgRHJhd2luZ0J1ZmZl
cjo6QWxwaGEpOwogICAgIAogICAgIG1fc2hhZGVyID0gbV9wcm9ncmFtLT5jcmVhdGVTaGFkZXJX
aXRoQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwogICAgIG1fbWVzaCA9IEN1c3RvbUZpbHRlck1l
c2g6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIG1fbWVzaENvbHVtbnMsIG1fbWVzaFJvd3MsIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdC
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdC
dWZmZXIuY3BwCmluZGV4IDQ4ZGQwYTNjNGQ4YzkyMmE5M2YwMTVjMDRiMTllZmE3ZGY2YzFhOWQu
LjcyMWM2YjVjYjVlZDkxMzE3YjY2NjlmNWYzYmZhODJmYjI2ZTdlNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIGludCBzX21heGltdW1SZXNvdXJjZVVzZVBpeGVscyA9
IDA7CiBzdGF0aWMgaW50IHNfY3VycmVudFJlc291cmNlVXNlUGl4ZWxzID0gMDsKIHN0YXRpYyBj
b25zdCBmbG9hdCBzX3Jlc291cmNlQWRqdXN0ZWRSYXRpbyA9IDAuNTsKIAotUGFzc1JlZlB0cjxE
cmF3aW5nQnVmZmVyPiBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkK
K1Bhc3NSZWZQdHI8RHJhd2luZ0J1ZmZlcj4gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplLCBQcmVzZXJ2ZURyYXdpbmdC
dWZmZXIgcHJlc2VydmUsIEFscGhhUmVxdWlyZW1lbnQgYWxwaGEpCiB7CiAgICAgRXh0ZW5zaW9u
czNEKiBleHRlbnNpb25zID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwogICAgIGJvb2wgbXVs
dGlzYW1wbGVTdXBwb3J0ZWQgPSBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVi
dWZmZXJfYmxpdCIpICYmIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9BTkdMRV9mcmFtZWJ1ZmZl
cl9tdWx0aXNhbXBsZSIpICYmIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfcmdiOF9yZ2Jh
OCIpOwpAQCAtNjMsNyArNjMsNyBAQCBQYXNzUmVmUHRyPERyYXdpbmdCdWZmZXI+IERyYXdpbmdC
dWZmZXI6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29ucwogICAgIGJvb2wg
cGFja2VkRGVwdGhTdGVuY2lsU3VwcG9ydGVkID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09F
U19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwogICAgIGlmIChwYWNrZWREZXB0aFN0ZW5jaWxTdXBw
b3J0ZWQpCiAgICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX09FU19wYWNrZWRf
ZGVwdGhfc3RlbmNpbCIpOwotICAgIFJlZlB0cjxEcmF3aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVy
ID0gYWRvcHRSZWYobmV3IERyYXdpbmdCdWZmZXIoY29udGV4dCwgc2l6ZSwgbXVsdGlzYW1wbGVT
dXBwb3J0ZWQsIHBhY2tlZERlcHRoU3RlbmNpbFN1cHBvcnRlZCwgc2VwYXJhdGVCYWNraW5nVGV4
dHVyZSkpOworICAgIFJlZlB0cjxEcmF3aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVyID0gYWRvcHRS
ZWYobmV3IERyYXdpbmdCdWZmZXIoY29udGV4dCwgc2l6ZSwgbXVsdGlzYW1wbGVTdXBwb3J0ZWQs
IHBhY2tlZERlcHRoU3RlbmNpbFN1cHBvcnRlZCwgcHJlc2VydmUsIGFscGhhKSk7CiAgICAgcmV0
dXJuIChkcmF3aW5nQnVmZmVyLT5tX2NvbnRleHQpID8gZHJhd2luZ0J1ZmZlci5yZWxlYXNlKCkg
OiAwOwogfQogCkBAIC04Myw5ICs4Myw5IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6Y2xlYXIoKQog
ICAgICAgICBtX2NvbG9yQnVmZmVyID0gMDsKICAgICB9CiAKLSAgICBpZiAobV9iYWNraW5nQ29s
b3JCdWZmZXIpIHsKLSAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKG1fYmFja2luZ0Nv
bG9yQnVmZmVyKTsKLSAgICAgICAgbV9iYWNraW5nQ29sb3JCdWZmZXIgPSAwOworICAgIGlmICht
X2Zyb250Q29sb3JCdWZmZXIpIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKG1f
ZnJvbnRDb2xvckJ1ZmZlcik7CisgICAgICAgIG1fZnJvbnRDb2xvckJ1ZmZlciA9IDA7CiAgICAg
fQogCiAgICAgaWYgKG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcikgewpAQCAtMTcxLDMxICsxNzEs
MjAgQEAgdm9pZCBEcmF3aW5nQnVmZmVyOjpjbGVhckZyYW1lYnVmZmVyKCkKIHsKICAgICBtX2Nv
bnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
bXVsdGlzYW1wbGVGQk8gPyBtX211bHRpc2FtcGxlRkJPIDogbV9mYm8pOwogICAgIGNvbnN0IEdy
YXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzID0gbV9jb250ZXh0LT5nZXRD
b250ZXh0QXR0cmlidXRlcygpOwotICAgIGZsb2F0IGNsZWFyRGVwdGggPSAwOwotICAgIGludCBj
bGVhclN0ZW5jaWwgPSAwOwotICAgIHVuc2lnbmVkIGNoYXIgZGVwdGhNYXNrID0gZmFsc2U7Ci0g
ICAgdW5zaWduZWQgaW50IHN0ZW5jaWxNYXNrID0gMHhmZmZmZmZmZjsKLSAgICB1bnNpZ25lZCBj
aGFyIGlzU2Npc3NvckVuYWJsZWQgPSBmYWxzZTsKICAgICB1bnNpZ25lZCBjbGVhck1hc2sgPSBH
cmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVDsKICAgICBpZiAoYXR0cmlidXRlcy5k
ZXB0aCkgewotICAgICAgICBtX2NvbnRleHQtPmdldEZsb2F0dihHcmFwaGljc0NvbnRleHQzRDo6
REVQVEhfQ0xFQVJfVkFMVUUsICZjbGVhckRlcHRoKTsKICAgICAgICAgbV9jb250ZXh0LT5jbGVh
ckRlcHRoKDEpOwotICAgICAgICBtX2NvbnRleHQtPmdldEJvb2xlYW52KEdyYXBoaWNzQ29udGV4
dDNEOjpERVBUSF9XUklURU1BU0ssICZkZXB0aE1hc2spOwogICAgICAgICBtX2NvbnRleHQtPmRl
cHRoTWFzayh0cnVlKTsKICAgICAgICAgY2xlYXJNYXNrIHw9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9CVUZGRVJfQklUOwogICAgIH0KICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKSB7Ci0g
ICAgICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxf
Q0xFQVJfVkFMVUUsICZjbGVhclN0ZW5jaWwpOwogICAgICAgICBtX2NvbnRleHQtPmNsZWFyU3Rl
bmNpbCgwKTsKLSAgICAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQz
RDo6U1RFTkNJTF9XUklURU1BU0ssIHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kj4oJnN0ZW5jaWxNYXNr
KSk7CiAgICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2tTZXBhcmF0ZShHcmFwaGljc0NvbnRl
eHQzRDo6RlJPTlQsIDB4ZmZmZmZmZmYpOwogICAgICAgICBjbGVhck1hc2sgfD0gR3JhcGhpY3ND
b250ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJVDsKICAgICB9Ci0gICAgaXNTY2lzc29yRW5hYmxl
ZCA9IG1fY29udGV4dC0+aXNFbmFibGVkKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1Qp
OwogICAgIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNU
KTsKIAotICAgIGZsb2F0IGNsZWFyQ29sb3JbNF07Ci0gICAgbV9jb250ZXh0LT5nZXRGbG9hdHYo
R3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0NMRUFSX1ZBTFVFLCBjbGVhckNvbG9yKTsKKyAgICBt
X2NvbnRleHQtPmNvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKICAgICBtX2NvbnRl
eHQtPmNsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CiAgICAgbV9jb250ZXh0LT5jbGVhcihjbGVhck1h
c2spOwogCkBAIC0yMDUsMjEgKzE5NCw2IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6Y2xlYXJGcmFt
ZWJ1ZmZlcigpCiAgICAgICAgIG1fY29udGV4dC0+Y2xlYXIoR3JhcGhpY3NDb250ZXh0M0Q6OkNP
TE9SX0JVRkZFUl9CSVQpOwogICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwogICAgIH0KLQot
ICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcihjbGVhckNvbG9yWzBdLCBjbGVhckNvbG9yWzFdLCBj
bGVhckNvbG9yWzJdLCBjbGVhckNvbG9yWzNdKTsKLQotICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRo
KSB7Ci0gICAgICAgIG1fY29udGV4dC0+Y2xlYXJEZXB0aChjbGVhckRlcHRoKTsKLSAgICAgICAg
bV9jb250ZXh0LT5kZXB0aE1hc2soZGVwdGhNYXNrKTsKLSAgICB9Ci0gICAgaWYgKGF0dHJpYnV0
ZXMuc3RlbmNpbCkgewotICAgICAgICBtX2NvbnRleHQtPmNsZWFyU3RlbmNpbChjbGVhclN0ZW5j
aWwpOwotICAgICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoR3JhcGhpY3NDb250
ZXh0M0Q6OkZST05ULCBzdGVuY2lsTWFzayk7Ci0gICAgfQotICAgIGlmIChpc1NjaXNzb3JFbmFi
bGVkKQotICAgICAgICBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NP
Ul9URVNUKTsKLSAgICBlbHNlCi0gICAgICAgIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0Nv
bnRleHQzRDo6U0NJU1NPUl9URVNUKTsKIH0KIAogYm9vbCBEcmF3aW5nQnVmZmVyOjpyZXNldChj
b25zdCBJbnRTaXplJiBuZXdTaXplKQpAQCAtMzAxLDkgKzI3NSw5IEBAIGJvb2wgRHJhd2luZ0J1
ZmZlcjo6cmVzZXQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIAogICAgICAgICAgICAgbV9jb250
ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIG1fY29sb3JCdWZmZXIsIDApOwogCi0gICAgICAgICAgICAvLyByZXNpemUg
dGhlIGJhY2tpbmcgY29sb3IgYnVmZmVyCi0gICAgICAgICAgICBpZiAobV9zZXBhcmF0ZUJhY2tp
bmdUZXh0dXJlKSB7Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9iYWNraW5nQ29sb3JCdWZmZXIpOworICAgICAg
ICAgICAgLy8gcmVzaXplIHRoZSBmcm9udCBjb2xvciBidWZmZXIKKyAgICAgICAgICAgIGlmICht
X3NlcGFyYXRlRnJvbnRUZXh0dXJlKSB7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5iaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9mcm9udENvbG9yQnVmZmVy
KTsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIDAsIGludGVybmFsQ29sb3JGb3JtYXQsIG1fc2l6ZS53aWR0aCgpLCBt
X3NpemUuaGVpZ2h0KCksIDAsIGNvbG9yRm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdO
RURfQllURSwgMCk7CiAgICAgICAgICAgICB9CiAKQEAgLTM3NCw3ICszNDgsNyBAQCBQYXNzUmVm
UHRyPEltYWdlRGF0YT4gRHJhd2luZ0J1ZmZlcjo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFn
ZURhdGEoKQogdm9pZCBEcmF3aW5nQnVmZmVyOjpkaXNjYXJkUmVzb3VyY2VzKCkKIHsKICAgICBt
X2NvbG9yQnVmZmVyID0gMDsKLSAgICBtX2JhY2tpbmdDb2xvckJ1ZmZlciA9IDA7CisgICAgbV9m
cm9udENvbG9yQnVmZmVyID0gMDsKICAgICBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIgPSAwOwog
CiAgICAgbV9kZXB0aFN0ZW5jaWxCdWZmZXIgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgKaW5kZXggMDM5YWY1YzY4NmYz
M2Q5MjIwY2Q3MzE1YmRlYTdkM2YwZGJhZjU5MC4uMjA0YmRmYTA2MWVlYzdjNjBkYWM2OGVlZTUz
NmQxZDdhNmIxZTRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCkBAIC01NSwxMSArNTUsMjcgQEAgY2xhc3MgV2ViR0xM
YXllckNocm9taXVtOwogLy8gcmVzdWx0cyB0byBhIFBsYXRmb3JtTGF5ZXIgZm9yIGNvbXBvc2l0
aW5nLgogY2xhc3MgRHJhd2luZ0J1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPERyYXdpbmdCdWZm
ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEcmF3aW5nQnVmZmVyPiBjcmVh
dGUoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJiwgYm9vbCk7CisgICAgZW51bSBQ
cmVzZXJ2ZURyYXdpbmdCdWZmZXIgeworICAgICAgICBQcmVzZXJ2ZSwKKyAgICAgICAgRGlzY2Fy
ZAorICAgIH07CisKKyAgICBlbnVtIEFscGhhUmVxdWlyZW1lbnQgeworICAgICAgICBBbHBoYSwK
KyAgICAgICAgT3BhcXVlCisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERyYXdpbmdC
dWZmZXI+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFNpemUmLCBQcmVzZXJ2
ZURyYXdpbmdCdWZmZXIsIEFscGhhUmVxdWlyZW1lbnQpOwogICAgIGZyaWVuZCBjbGFzcyBHcmFw
aGljc0NvbnRleHQzRDsKIAogICAgIH5EcmF3aW5nQnVmZmVyKCk7CiAKKyAgICAvLyBDbGVhcnMg
dGhlIERyYXdpbmdCdWZmZXIncyBmcmFtZWJ1ZmZlcihzKS4gSXMgZGVzdHJ1Y3RpdmUgb2YgdGhl
IGZvbGxvd2luZyBzdGF0ZToKKyAgICAvLyAqKSBmcmFtZWJ1ZmZlciBiaW5kaW5nCisgICAgLy8g
Kikgc2Npc3NvciB0ZXN0CisgICAgLy8gKikgc3RlbmNpbCBtYXNrCisgICAgLy8gKikgY2xlYXIg
Y29sb3IsIGRlcHRoLCBhbmQgc3RlbmNpbAorICAgIC8vICopIGRlcHRoIGFuZCBjb2xvciBtYXNr
CiAgICAgdm9pZCBjbGVhckZyYW1lYnVmZmVyKCk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIGJ1ZmZlciB3YXMgc3VjY2Vzc2Z1bGx5IHJlc2l6ZWQuCkBAIC05NSw3ICsxMTEsNiBAQCBw
dWJsaWM6CiAKICAgICBib29sIG11bHRpc2FtcGxlKCkgY29uc3Q7CiAKLSAgICBQbGF0Zm9ybTNE
T2JqZWN0IHBsYXRmb3JtQ29sb3JCdWZmZXIoKSBjb25zdDsKICAgICBQbGF0Zm9ybTNET2JqZWN0
IGZyYW1lYnVmZmVyKCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKTsKQEAgLTEwNiw3ICsxMjEsOSBAQCBwdWJsaWM6
CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpOwotICAgIHZvaWQgcHVibGlzaFRvUGxhdGZvcm1MYXllcigpOworICAg
IHZvaWQgcHJlcGFyZUJhY2tCdWZmZXIoKTsKKyAgICBib29sIHJlcXVpcmVzQ29weUZyb21CYWNr
VG9Gcm9udEJ1ZmZlcigpIGNvbnN0OworICAgIHVuc2lnbmVkIGZyb250Q29sb3JCdWZmZXIoKSBj
b25zdDsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Kik7CiAjZW5kaWYKIApAQCAtMTE0LDExICsxMzEsMTIgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIERyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJ
bnRTaXplJiwgYm9vbCBtdWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRlZCwKLSAgICAgICAgICAg
ICAgICAgIGJvb2wgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkLCBib29sIHNl
cGFyYXRlQmFja2luZ1RleHR1cmUpOworICAgICAgICAgICAgICAgICAgYm9vbCBwYWNrZWREZXB0
aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQsIFByZXNlcnZlRHJhd2luZ0J1ZmZlciwgQWxwaGFS
ZXF1aXJlbWVudCk7CiAKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgSW50U2l6ZSYpOwogCi0g
ICAgYm9vbCBtX3NlcGFyYXRlQmFja2luZ1RleHR1cmU7CisgICAgUHJlc2VydmVEcmF3aW5nQnVm
ZmVyIG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyOworICAgIEFscGhhUmVxdWlyZW1lbnQgbV9hbHBo
YTsKICAgICBib29sIG1fc2Npc3NvckVuYWJsZWQ7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX3Rl
eHR1cmUyREJpbmRpbmc7CiAgICAgR0MzRGVudW0gbV9hY3RpdmVUZXh0dXJlVW5pdDsKQEAgLTEy
OSw3ICsxNDcsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9wYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb25TdXBwb3J0ZWQ7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX2ZibzsKICAgICBQbGF0Zm9y
bTNET2JqZWN0IG1fY29sb3JCdWZmZXI7Ci0gICAgUGxhdGZvcm0zRE9iamVjdCBtX2JhY2tpbmdD
b2xvckJ1ZmZlcjsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fZnJvbnRDb2xvckJ1ZmZlcjsKKyAg
ICBib29sIG1fc2VwYXJhdGVGcm9udFRleHR1cmU7CiAKICAgICAvLyBUaGlzIGlzIHVzZWQgd2hl
biB3ZSBoYXZlIE9FU19wYWNrZWRfZGVwdGhfc3RlbmNpbC4KICAgICBQbGF0Zm9ybTNET2JqZWN0
IG1fZGVwdGhTdGVuY2lsQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCmluZGV4IDNmZGE2
YTMyNmJlMmMwZTUyMGM4M2IyOGI3ZjU1NzBjNTVlYzM4NTkuLmRiMjg4ZDc3NGFlZjhjZDBkZDEy
MzdkNmZmNjU2NTcxNzUyNDAzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0KQEAgLTQwLDgg
KzQwLDEwIEBAIERyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIHNp
emUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbXVsdGlzYW1wbGVFeHRlbnNp
b25TdXBwb3J0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHNlcGFyYXRlQmFja2luZ1RleHR1cmUpCi0gICAgOiBtX3NlcGFyYXRlQmFja2luZ1Rl
eHR1cmUoc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUHJlc2VydmVEcmF3aW5nQnVmZmVyIHByZXNlcnZlRHJhd2luZ0J1ZmZlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWxwaGFSZXF1aXJlbWVudCBhbHBoYSkKKyAgICA6IG1fcHJl
c2VydmVEcmF3aW5nQnVmZmVyKHByZXNlcnZlRHJhd2luZ0J1ZmZlcikKKyAgICAsIG1fYWxwaGEo
YWxwaGEpCiAgICAgLCBtX3NjaXNzb3JFbmFibGVkKGZhbHNlKQogICAgICwgbV90ZXh0dXJlMkRC
aW5kaW5nKDApCiAgICAgLCBtX2FjdGl2ZVRleHR1cmVVbml0KEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFMCkKQEAgLTUxLDE1ICs1MywxNCBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAgICwgbV9wYWNrZWREZXB0aFN0ZW5jaWxF
eHRlbnNpb25TdXBwb3J0ZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkKQog
ICAgICwgbV9mYm8oY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKSkKICAgICAsIG1fY29sb3JC
dWZmZXIoMCkKKyAgICAsIG1fZnJvbnRDb2xvckJ1ZmZlcigwKQorICAgICwgbV9zZXBhcmF0ZUZy
b250VGV4dHVyZShmYWxzZSkKICAgICAsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKDApCiAgICAgLCBt
X2RlcHRoQnVmZmVyKDApCiAgICAgLCBtX3N0ZW5jaWxCdWZmZXIoMCkKICAgICAsIG1fbXVsdGlz
YW1wbGVGQk8oMCkKICAgICAsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcigwKQogewotICAgIC8v
IFN1cHBvcnQgZm9yIGEgc2VwYXJhdGUgYmFja2luZyB0ZXh0dXJlIGhhcyBvbmx5IGJlZW4gZW5h
YmxlZCBmb3IKLSAgICAvLyB0aGUgY2hyb21pdW0gcG9ydC4KLSAgICBBU1NFUlQoIW1fc2VwYXJh
dGVCYWNraW5nVGV4dHVyZSk7CiAgICAgQVNTRVJUKG1fZmJvKTsKICAgICBpZiAoIW1fZmJvKSB7
CiAgICAgICAgIGNsZWFyKCk7CkBAIC05MiwxNiArOTMsMjcgQEAgRHJhd2luZ0J1ZmZlcjo6fkRy
YXdpbmdCdWZmZXIoKQogICAgIGNsZWFyKCk7CiB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiBQbGF0Zm9ybUxheWVyKiBEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkK
IHsKICAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyLmdldCgpOwogfQogCi1QbGF0Zm9ybTNET2Jq
ZWN0IERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtQ29sb3JCdWZmZXIoKSBjb25zdAordm9pZCBEcmF3
aW5nQnVmZmVyOjpwcmVwYXJlQmFja0J1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIG1fY29sb3JCdWZm
ZXI7CiB9CiAKK2Jvb2wgRHJhd2luZ0J1ZmZlcjo6cmVxdWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250
QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Vuc2lnbmVkIERyYXdp
bmdCdWZmZXI6OmZyb250Q29sb3JCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBjb2xvckJ1
ZmZlcigpOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvcXQvRHJhd2luZ0J1ZmZlclF0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5nQnVmZmVyUXQuY3BwCmlu
ZGV4IGE1OTJlZGNmNzZkNmFmYmM1NDk5NzFjMzkyMDQzZWVjMzZkNjNlZGQuLjE0Y2Q1NjIzOTdi
YWRjMjJlNGUyZTc1NDgzZDViM2RmMGFhZDYwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5nQnVmZmVyUXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5nQnVmZmVyUXQuY3BwCkBA
IC0zNSw4ICszNSwxMCBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRT
aXplJiBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG11bHRpc2FtcGxl
RXh0ZW5zaW9uU3VwcG9ydGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBzZXBhcmF0ZUJhY2tpbmdUZXh0dXJlKQotICAgIDogbV9zZXBhcmF0ZUJh
Y2tpbmdUZXh0dXJlKHNlcGFyYXRlQmFja2luZ1RleHR1cmUpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFByZXNlcnZlRHJhd2luZ0J1ZmZlciBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFscGhhUmVxdWlyZW1lbnQgYWxwaGEpCisgICAg
OiBtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlcihwcmVzZXJ2ZURyYXdpbmdCdWZmZXIpCisgICAgLCBt
X2FscGhhKGFscGhhKQogICAgICwgbV9zY2lzc29yRW5hYmxlZChmYWxzZSkKICAgICAsIG1fdGV4
dHVyZTJEQmluZGluZygwKQogICAgICwgbV9hY3RpdmVUZXh0dXJlVW5pdChHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRTApCkBAIC00NiwxNSArNDgsMTQgQEAgRHJhd2luZ0J1ZmZlcjo6RHJhd2lu
Z0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKICAgICAsIG1fcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBv
cnRlZCkKICAgICAsIG1fZmJvKGNvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkpCiAgICAgLCBt
X2NvbG9yQnVmZmVyKDApCisgICAgLCBtX2Zyb250Q29sb3JCdWZmZXIoMCkKKyAgICAsIG1fc2Vw
YXJhdGVGcm9udFRleHR1cmUoZmFsc2UpCiAgICAgLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcigwKQog
ICAgICwgbV9kZXB0aEJ1ZmZlcigwKQogICAgICwgbV9zdGVuY2lsQnVmZmVyKDApCiAgICAgLCBt
X211bHRpc2FtcGxlRkJPKDApCiAgICAgLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIoMCkKIHsK
LSAgICAvLyBTdXBwb3J0IGZvciBhIHNlcGFyYXRlIGJhY2tpbmcgdGV4dHVyZSBoYXMgb25seSBi
ZWVuIGVuYWJsZWQgZm9yCi0gICAgLy8gdGhlIGNocm9taXVtIHBvcnQuCi0gICAgQVNTRVJUKCFt
X3NlcGFyYXRlQmFja2luZ1RleHR1cmUpOwogICAgIEFTU0VSVChtX2Zibyk7CiAgICAgaWYgKCFt
X2ZibykgewogICAgICAgICBjbGVhcigpOwpAQCAtODQsMTQgKzg1LDIxIEBAIFBsYXRmb3JtTGF5
ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKQogewogICAgIHJldHVybiAwOwogfQot
I2VuZGlmCiAKLVBsYXRmb3JtM0RPYmplY3QgRHJhd2luZ0J1ZmZlcjo6cGxhdGZvcm1Db2xvckJ1
ZmZlcigpIGNvbnN0Cit2b2lkIERyYXdpbmdCdWZmZXI6OnByZXBhcmVCYWNrQnVmZmVyKCkKIHsK
LSAgICByZXR1cm4gbV9jb2xvckJ1ZmZlcjsKIH0KIAotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKK2Jvb2wgRHJhd2luZ0J1ZmZlcjo6cmVxdWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250
QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Vuc2lnbmVkIERyYXdp
bmdCdWZmZXI6OmZyb250Q29sb3JCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBjb2xvckJ1
ZmZlcigpOworfQorCiB2b2lkIERyYXdpbmdCdWZmZXI6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJHTExheWVyQ2hyb21pdW1UZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViR0xMYXllckNocm9taXVtVGVzdC5j
cHAKaW5kZXggNjZlYTY5MGZhYjNmYjU0YWE4MzJjOWEyYWE4MWNiOWM1OTMyMmIzYS4uNGIzZmQw
MWU1OTc1NTNiMGI2NTFkZDA0YmZkY2JkOWNlMWM2NDE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJHTExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkdMTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01
MCwxNCArNTAsMTQgQEAgVEVTVChXZWJHTExheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVGb3JtYXRz
KQogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gb3BhcXVlQ29udGV4dCA9IGNyZWF0ZUNv
bXBvc2l0b3JNb2NrR3JhcGhpY3NDb250ZXh0M0Qob3BhcXVlQXR0cnMpOwogICAgIEVYUEVDVF9U
UlVFKG9wYXF1ZUNvbnRleHQpOwogCi0gICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRl
KGFscGhhQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCBmYWxzZSk7CisgICAgYnVmZmVyID0gRHJh
d2luZ0J1ZmZlcjo6Y3JlYXRlKGFscGhhQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCBEcmF3aW5n
QnVmZmVyOjpQcmVzZXJ2ZSwgRHJhd2luZ0J1ZmZlcjo6QWxwaGEpOwogICAgIEVYUEVDVF9GQUxT
RShidWZmZXItPnBsYXRmb3JtTGF5ZXIoKS0+b3BhcXVlKCkpOwotICAgIGJ1ZmZlciA9IERyYXdp
bmdCdWZmZXI6OmNyZWF0ZShhbHBoYUNvbnRleHQuZ2V0KCksIEludFNpemUoKSwgdHJ1ZSk7Cisg
ICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGFscGhhQ29udGV4dC5nZXQoKSwgSW50
U2l6ZSgpLCBEcmF3aW5nQnVmZmVyOjpEaXNjYXJkLCBEcmF3aW5nQnVmZmVyOjpBbHBoYSk7CiAg
ICAgRVhQRUNUX0ZBTFNFKGJ1ZmZlci0+cGxhdGZvcm1MYXllcigpLT5vcGFxdWUoKSk7CiAKLSAg
ICBidWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUob3BhcXVlQ29udGV4dC5nZXQoKSwgSW50
U2l6ZSgpLCBmYWxzZSk7CisgICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKG9wYXF1
ZUNvbnRleHQuZ2V0KCksIEludFNpemUoKSwgRHJhd2luZ0J1ZmZlcjo6UHJlc2VydmUsIERyYXdp
bmdCdWZmZXI6Ok9wYXF1ZSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5wbGF0Zm9ybUxheWVy
KCktPm9wYXF1ZSgpKTsKLSAgICBidWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUob3BhcXVl
Q29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCB0cnVlKTsKKyAgICBidWZmZXIgPSBEcmF3aW5nQnVm
ZmVyOjpjcmVhdGUob3BhcXVlQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCBEcmF3aW5nQnVmZmVy
OjpEaXNjYXJkLCBEcmF3aW5nQnVmZmVyOjpPcGFxdWUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZl
ci0+cGxhdGZvcm1MYXllcigpLT5vcGFxdWUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkOTMyOTM5MjhkM2Nl
MGNkNjMyY2Y1M2NhMjU4NjQ2MGVkMDQ4YzI5Li4wYWYyNTg1MTRmYmM3OGI0M2YxZjU5NmYyZmNk
YjIxNWEzNmJjYTQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDQtMDUgIEphbWVzIFJv
Ymluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJHTCBjb250ZW50IHN3
YXBwZWQgYXQgd3JvbmcgdGltZSBpbiB0aHJlYWRlZCBjb21wb3NpdGluZyBtb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjI3NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgc29tZSBwaXhlbCB0
ZXN0cyBmb3IgY29tcG9zaXRpbmcgYWxsIGRpZmZlcmVudCBjb21iaW5hdGlvbnMgb2YgYWxwaGEv
YW50aWFsaWFzL3ByZXNlcnZlRHJhd2luZ0J1ZmZlciBvbgorICAgICAgICBXZWJHTCBjb250ZW50
LgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtY29tcG9zaXRlLW1vZGVzLWV4
cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtY29t
cG9zaXRlLW1vZGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMv
d2ViZ2wvd2ViZ2wtY29tcG9zaXRlLW1vZGVzLXJlcGFpbnQtZXhwZWN0ZWQucG5nOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1jb21wb3NpdGUtbW9kZXMtcmVwYWlu
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3dlYmds
LWNvbXBvc2l0ZS1tb2Rlcy1yZXBhaW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy5odG1sOiBBZGRlZC4KKwogMjAxMi0wNC0w
MyAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIExheW91dFRlc3Rz
Ly5naXRhdHRyaWJ1dGVzIGNsZWFudXAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1jb21wb3NpdGUtbW9kZXMtZXhwZWN0ZWQucG5nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFiMWQ0MjFhNTc2NGYxZmI1YzQ0MGZhZWZmNDFmMzUyNjYwOWVlNjkKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDQzNjcKemNtZUhMWWZPX0A3KE55ZDFpMl87eTtNWldhN0hQdTdw
UXt1MjRUYnE0cGk4emZUKG00ckphRFo8ST57SGx4Wk1wCno2cjwzTj13Yz5fYiExdyNxbzNPZHhI
e0EmQ2BCJCtuSDNQKUxWJCtXYnwzTXA9azxeSiF6fXkzdWIlVXJfan1Jcwp6eXlyUjNtJFowT1lf
ekJRRU8mJkVYVXUxakBkIUJ1QVZmPVlxbWZWaXJ1aSkoZS0+cyhDMXZtWVlXTDJKdGVreCkKekVv
PW9sSnVRXjhZemRwUUJZb0c3NzBjMj5tIWA4Z3lMUGkjWSEtKUlkX1E8MExPenUtayF2QEwlS09e
YW1kcmx2Cno3eGlHUD92d0I7I1lwdyFzaHJUZXJ7IW5NYzN0ZiRLUnokK05TSWw5WTNvJldMQjRm
KDAkUVVfeG5kKT88T2VEYwp6Tn4zdzhmU35fcXB3MXVBdEdQbzdzSTdNLVFHJXApJVZHdFclZEp+
d05Lam9qVHN5MVghPl5KTHlsUzN7YlJwSXcKekp8OU1HXyo9biNkKiRsN1A7S3I7ZCpIVWR5fSM3
QDVrJj5kNipsMUBlWTRVV0hpbFlwOEl8YiFpSk4hb0pFPmBNCno1NCRNbTxXWTVQYkpOIUZaNCk5
aXpEflZDYmpldWhmb245OEd8fjBwTXk3M1N0IzdaM1BgLVg1bjZtUVo1R3FxVgp6MiZQZ15ffERZ
IXVCUWYpMiNIT2M7c3ElKDJlIUEyMGc9PiVAckNxQ2pjcUJsK1JmdUNjKkEzUndyYnJ1PVFDVlMK
ell3OVJVM3YhK2lgP2F+YCFYRXgyb3ZMUDU2NE9IUURRX0w+bjRrVTd1fHtKS0o4TzFSJUFeXn1f
fHpMTzlveCs7CnpvM3l5QmZSYV95SExLe0twQj5FVmM+I0VEcjdTQG1eYGhGYnd4d2NaNX5lfndA
SGUyKytCNUBHO2RPTT0tdDNLPAp6cnNFWigkQEkxQ3g/OUIlckFgK1lZci1ePHQ+PXshZSRuPilG
RUdtIz4reWNsSU1xSFpofHFUIWdWKnNMaXAmY1AKektzJVohQFdUV1lWbVV6M29eIV42dGpCV1Fh
OWhrVjRUVlNWZjhucjNUXkE5RDg+NmMjMGk3MmZVT3k0VHdDUDItCnpwQ35zeDNHLWFAZ2U5MT12
WD9yQkhUb0Y8RzlYNl5oX3pNJDxeSC1LMGI7ND9DTVl+Q3VIU2EzWF9XR1NGKlF6ZAp6QFhjWU8o
dmRiJGRRcF55c1N2ZGhpLTRZRCo7TCNrQmhNUjNQa3dTN0BZRl41IX1EQk8zYWxqaCRyYmNkXzJu
RmwKekRNYW1ucipPc3RVKSpaV2lUUXZeWVFHbSlsMzlTMHl0KyQocDdXITdmUyNnTjFHIVVaaDxB
ZFpwKEIkUEJrN3JzCnpHLXdIdCtwaWV6Uyo4aUB5fXRPeThtPm9tcitrITUrdEAhIS02cCl3JVZC
TSlvMX4hVUIydHp+U2BlZXIrampnYAp6I2AwMFl2OWxSRiRvd2UkVWhQWTNjcDd+T0EkRX1xXjZe
YzI9aXV0eHtGNF4lMHtlKkZfVXk1c0llSkFmM144TkYKekRmPzJvSiYxWntZTVlaM2NFZTJCaXJC
RDw0NDNeVERoUS19YVQ8c288WmJLJCFHIXY9OHNSa0U7MHZMRzFeIT92Cno2IVJ4bnBXfDdueVFA
NSphZWxiNSZMZldzbEdyfkReUnU7KkAySzNXKDE2X0hYWlBXZyhfTFVQdXJ0YVpaTlhsYgp6Q2Z3
PShLSChBZEdKTThEJnFRfUA0ZCR+WV8qUmdLOGkrbGxKbVVkO18kYUZmQiMhZFpBb24obyhCRVJn
TWRtJTgKejM4LWtveDh1RERFJHxgdmVRRnc8VVJtbyVXJFRAVmZGX2Foc3wzOCpzUzwtKHVtTU9u
N0dMK29nM044Uj51fW00Cnpkc2pPSSltO1Z6TGRqISM2YTF7YWxlbzgxeHljSysxK0RJRzBmfEdE
RzBZJnJeUDR9JWEjNnBxNXhgZyZBLUpFcQp6T2ppJWdeSGF1aTVWa0tFJmo5MkZGQ1I+N1EoZ3tH
P3hiMTw1WlRGZVR4ZXVuNXJNNHJmN3VOSyQwVkIjTn5ndDUKeiMjQlY3YDdTdGxCT1dBeDk/NSFk
TCtPaG0xXmBjMDxMe3N9UzxlUE4zbUprKm9DdVRIPnhWcVIoPHxeQjVWcTByCnp6O2xlZD9FdFlN
RCtNJVNVaSVjUk40UGwhU2IoRjV3bFVXcz40dkhBail4RDRraGcwciF6Ujw/JWQ3MX0rUFRnOwp6
cmRtRGZnc2h6KmFfZngqN2k1ZW9qQzZaJUIpeUlJcDhPZ3d7QDRkTi10aE4tSE9Ffnk/ei1fRGAr
d2c4aSNNSV4KV2Y1NE9Ib2tqbExmTVRMekJXdT5COXtkO0dRdCt3KAoKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wt
Y29tcG9zaXRlLW1vZGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2FkNWJi
MTY0OWY3ZWZmNWY3NDQ4OTIwZGUzMTg4YTg3NWFjOTE2MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3QgaXMgb25seSB1c2VmdWwgYXMgYSBwaXhl
bCB0ZXN0LiBZb3Ugc2hvdWxkIHNlZSB0d28gcm93cyB3aXRoIDQgY2FudmFzZXMgaW4gZWFjaC4g
VGhlIHRvcCByb3cgb2YgY2FudmFzZXMgc2hvdWxkIGhhdmUgYSBibGFjayBiYWNrZ3JvdW5kLCB0
aGUgYm90dG9tIHJvdyBzaG91bGQgaGF2ZSBhIHBpbmsgYmFja2dyb3VuZC4gRWFjaCBjYW52YXMg
c2hvdWxkIGhhdmUgYSBncmVlbiB0cmlhbmdsZSBpbiBpdC4gSWYgbXVsdGlzYW1wbGluZyBpcyBz
dXBwb3J0ZWQsIHRoZSBvZGQgY29sdW1ucyBzaG91bGQgaGF2ZSBzbW9vdGggZWRnZXMgaW5zdGVh
ZCBvZiBqYWdnZWQgc3RhaXItc3RlcHBpbmcuIE90aGVyd2lzZSwgYWxsIGNhbnZhc2VzIHdpdGhp
biBhIHJvdyBzaG91bGQgYmUgaWRlbnRpY2FsIHRvIGVhY2ggb3RoZXIuCisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtY29tcG9zaXRlLW1vZGVzLXJl
cGFpbnQtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wt
Y29tcG9zaXRlLW1vZGVzLXJlcGFpbnQtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhMmFhMmRh
YzQxNmVmYWJkZjlmNjVlYjExODJmNGY5NzkzZTdlYjAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs
IDM5NzEKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3Mk
bEhgb2s8bX0/b1RtfTtwCno2VF90QmxvVjN+Z0gkNitWLXE4aldNZm1LTUJebEx2eT5EfDN2Jnpx
MXhnR0l7R3kmTmp2KkN1LXJoWX1IMmJOTAp6WXY5aT9JWkdTWVB2O1UzczIpa3glIzZHcDYjWUwr
UzxBPW8+d3shdjw8Q1Z7d2JxT2I3az1KZiUrQTFJQmkrYyMKekFScnZVeitneHgjX3l0cz1sOTwk
V2ooTlZwTTRkPmZxRmdHWWNFVHhjSFp3Z3xGJTg0Y2p3aFAoWG1nRDFEJj8jCnprJFZlcXVHKUQy
a0pAK3Q3dGkmSnplI1dTcFllUntucHZCPDU7aXtQU35MSUx6a0s2OEtob2RzbkhwTGcjYHh5Kgp6
bEUlXyQ7YE1uREJAWSglaUExRFZldGNlYkA2OztHKWVQXlJlbjYzQz0yJkI+fExATVo9dCRGYShG
M19HKksrR0IKej9qSjlebS1YQyFeV0NnPl5GI1VQR2slekxwdm5CKUc/dyg4cTZhTU5FXjA3MV8j
YGtnOUFPY29Jd1ImPWs9MChDCnpzPkE2SSF4OzdwTD0tZn0lcVo0d3hYdk9yWFIqWXlKNnNRVjgo
SCU7K0FPeS1TLTItMCU8ZjcmeDBYUnFBbVJofQp6UUdANFU0QVd+WHpjQWN6KUg/JW89S0xRbCsj
LWlmP3tGbkpCb3RQM0I/M2RFWSNtZGRaXkdTVXJ8cV9YNGh1VVEKeiQhZWdzQUA0IXp7TShoPHRE
bWk1K1I9OFBOPy1wc0VGYEFaYmJxTHRfalR2bz9WR2FCWCpIQzg8aChYQCZ6b1pGCnp7TTQmK0xL
KXR4WmRtc2FwfCRhVilhT20tcCVITSRFI1lqJU87fnY2c2NtM0c9d3JSRl5oZnZuRlFfRkIkSkhh
SQp6U0hoSkJGfS1HakpIV3Y9VmVWdE40TD14fFVofjRgNGpkUFZTZFkrVypPTT4hQEFQSnZ3Pn0p
S1gpM2p2eVhWZEkKejh4V3VVczktdk14fj49TWxpZTBJMj8pTEtwNUFERDNiJHMqVnJLU2YoYCNX
I1hDTDJCVF8/Q300PUJzTDd1Rz5JCnpxRkZ7fjFIeHpoI1kreCtmYEBfNGx8LVBPYTJJNzk9Um5m
UGJwOVcqdX5QbmpJVDRtN09uJU9icX1JcV5Ea0FQMQp6RUVhMCM4NnNKIVo1eFpebFdrUyZrUXxg
JUVlNHA/SCM4aHpWKDglMVZRODJeQ0J9e0VyfFZ4SXt+SzBRbTFwYHEKenRUPlBMTHU0JTFuKWxf
Z2owXylLeyZXYTFENXp+PFVgVSE/PWtudzBJJkZyJHJ9akF2Vm41SDtLWTYhUj5YKjlQCnotMFZZ
WnBXUygtXj40MWdqaWRiPmowe09rKyl5b2U4MmYrdnpNRnJjZkIoUCM7YDthSGMwRCRSTXJfMkpv
bExLbgp6JnRMeSVKdkZvY3BWRiRJemdgSD1LWE5ZbT9WdDIqKFAjZnwmVSgxQkF6MykkIT9CeF85
X1Jvdy0qSjVAUl9jWjsKelF2NVdYakB2Z2tabDcoezUldGtoVjYrcWZSWkR9ZTZnZDZ6JWlCQmk+
LVQ7YVhxYTc3fEFuRjlmNmRNaCYqeTB8CnpHP2FmKmNBe1EhZ09ufChUIyR7TE92UEdaRyUhYTRs
VjxoZFh2VXtuPnVzM2ooO040ak9HVERganxuI2hfTm9+PwpNVUh4M3ZJVkNnITBPOyt9UTIrbnsK
CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy1yZXBhaW50LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy1yZXBhaW50
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTU3NjMyNDEwNGJjZDU0Njc2NzhkMWY0YTg4Y2Nj
NDljNzkwNTlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvd2ViZ2wtY29tcG9zaXRlLW1vZGVzLXJlcGFpbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MyBAQAorVGhpcyB0ZXN0IGlzIG9ubHkgdXNlZnVsIGFzIGEgcGl4ZWwgdGVzdC4gWW91IHNob3Vs
ZCBzZWUgdHdvIHJvd3Mgd2l0aCA0IGNhbnZhc2VzIGluIGVhY2guIFRoZSB0b3Agcm93IG9mIGNh
bnZhc2VzIHNob3VsZCBoYXZlIGEgYmxhY2sgYmFja2dyb3VuZCwgdGhlIGJvdHRvbSByb3cgc2hv
dWxkIGhhdmUgYSBwaW5rIGJhY2tncm91bmQuIFRoZSBjYW52YXNlcyBpbiB0aGUgZmlyc3QgdHdv
IHJvd3Mgc2hvdWxkIGhhdmUgYSBzaW5nbGUgdHJpYW5nbGUuIFRoZSBjYW52YXNlcyBvbiB0aGUg
bGVmdCBzaG91bGQgaGF2ZSB0d28gdHJpYW5nbGVzIHN1cGVyaW1wb3NlZCBvbiB0b3Agb2YgZWFj
aCBvdGhlci4gSWYgbXVsdGlzYW1wbGluZyBpcyBzdXBwb3J0ZWQsIHRoZSBvZGQgY29sdW1ucyBz
aG91bGQgaGF2ZSBzbW9vdGggZWRnZXMgaW5zdGVhZCBvZiBqYWdnZWQgc3RhaXItc3RlcHBpbmcu
CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtY29t
cG9zaXRlLW1vZGVzLXJlcGFpbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy1yZXBhaW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZkYTAxNmVl
NTBkMTY4Y2Q1ZTRhMTlmNjRhMWVhMjEwNmYyNGQ4YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy1yZXBhaW50Lmh0
bWwKQEAgLTAsMCArMSwxMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHkgb25sb2FkPSJydW5S
ZXBhaW50VGVzdCgpIj4KKzxzcGFuIGlkPSJkZXNjcmlwdGlvbiIgc3R5bGU9ImNvbG9yOiB3aGl0
ZSI+CitUaGlzIHRlc3QgaXMgb25seSB1c2VmdWwgYXMgYSBwaXhlbCB0ZXN0LiBZb3Ugc2hvdWxk
IHNlZSB0d28gcm93cyB3aXRoIDQgY2FudmFzZXMgaW4gZWFjaC4gVGhlIHRvcCByb3cgb2YgY2Fu
dmFzZXMgc2hvdWxkIGhhdmUgYSBibGFjayBiYWNrZ3JvdW5kLCB0aGUgYm90dG9tIHJvdyBzaG91
bGQgaGF2ZSBhIHBpbmsgYmFja2dyb3VuZC4KK1RoZSBjYW52YXNlcyBpbiB0aGUgZmlyc3QgdHdv
IHJvd3Mgc2hvdWxkIGhhdmUgYSBzaW5nbGUgdHJpYW5nbGUuIFRoZSBjYW52YXNlcyBvbiB0aGUg
bGVmdCBzaG91bGQgaGF2ZSB0d28gdHJpYW5nbGVzIHN1cGVyaW1wb3NlZCBvbiB0b3Agb2YgZWFj
aCBvdGhlci4KK0lmIG11bHRpc2FtcGxpbmcgaXMgc3VwcG9ydGVkLCB0aGUgb2RkIGNvbHVtbnMg
c2hvdWxkIGhhdmUgc21vb3RoIGVkZ2VzIGluc3RlYWQgb2YgamFnZ2VkIHN0YWlyLXN0ZXBwaW5n
LgorPC9zcGFuPgorPGJyPgorPHN0eWxlPgorY2FudmFzIHsKKyAgICBvdXRsaW5lOiAxcHggc29s
aWQgYmx1ZTsKK30KK2JvZHkgeworICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtibHVlOworfQor
PC9zdHlsZT4KKzxzY3JpcHQgaWQ9IjJkLWZyYWdtZW50LXNoYWRlciIgdHlwZT0ieC1zaGFkZXIv
eC1mcmFnbWVudCI+CitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKwordW5pZm9ybSB2ZWM0IHVf
Y29sb3I7CisKK3ZvaWQgbWFpbigpIHsKKyAgZ2xfRnJhZ0NvbG9yID0gdV9jb2xvcjsKK30KKzwv
c2NyaXB0PgorPHNjcmlwdCBpZD0iMmQtdmVydGV4LXNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12
ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzIgYV9wb3NpdGlvbjsKKwordW5pZm9ybSB2ZWMyIHVfcmVz
b2x1dGlvbjsKKwordm9pZCBtYWluKCkgeworICAgLy8gY29udmVydCB0aGUgcmVjdGFuZ2xlIGZy
b20gcGl4ZWxzIHRvIDAuMCB0byAxLjAKKyAgIHZlYzIgemVyb1RvT25lID0gYV9wb3NpdGlvbiAv
IHVfcmVzb2x1dGlvbjsKKworICAgLy8gY29udmVydCBmcm9tIDAtPjEgdG8gMC0+MgorICAgdmVj
MiB6ZXJvVG9Ud28gPSB6ZXJvVG9PbmUgKiAyLjA7CisKKyAgIC8vIGNvbnZlcnQgZnJvbSAwLT4y
IHRvIC0xLT4rMSAoY2xpcHNwYWNlKQorICAgdmVjMiBjbGlwU3BhY2UgPSB6ZXJvVG9Ud28gLSAx
LjA7CisKKyAgIGdsX1Bvc2l0aW9uID0gdmVjNChjbGlwU3BhY2UgKiB2ZWMyKDEsIC0xKSwgMCwg
MSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVwYWludC9yZXNvdXJjZXMvcmVw
YWludC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCit2YXIgY3R4cyA9IFtdCisKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVy
cmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZGVzY3JpcHRpb24iKS5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImRlc2NyaXB0aW9uIikuc3R5bGUudG9wID0gIi01MDAwcHgiOwor
fQorCitmb3IgKHZhciBpPTA7IGk8ODsgKytpKSB7CisgICAgdmFyIGF0dHJzID0geworICAgICAg
ICAnYWxwaGEnOiAoaSA+PSA0KSwKKyAgICAgICAgJ3ByZXNlcnZlRHJhd2luZ0J1ZmZlcic6IChp
ICUgNCkgPj0gMiwKKyAgICAgICAgJ2FudGlhbGlhcyc6IChpICUgMikgPT0gMQorICAgIH07Cisg
ICAgdmFyIGNhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworICAgIGNhbi53
aWR0aCA9IGNhbi5oZWlnaHQgPSAxMDA7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChj
YW4pOworICAgIGlmIChpID09IDMpCisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKSk7CisgICAgY3R4c1tpXSA9IGNhbi5nZXRDb250
ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiLCBhdHRycyk7CisgICAgc2V0dXAoY3R4c1tpXSk7Cit9
CisKK2Z1bmN0aW9uIHNldHVwKGdsKSB7CisgICAgLy8gc2V0dXAgYSBHTFNMIHByb2dyYW0KKyAg
ICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgICAgdmFyIHZlcnRleFNoYWRlciA9IFdlYkdM
VGVzdFV0aWxzLmxvYWRTaGFkZXJGcm9tU2NyaXB0KGdsLCAiMmQtdmVydGV4LXNoYWRlciIpOwor
ICAgIHZhciBmcmFnbWVudFNoYWRlciA9IFdlYkdMVGVzdFV0aWxzLmxvYWRTaGFkZXJGcm9tU2Ny
aXB0KGdsLCAiMmQtZnJhZ21lbnQtc2hhZGVyIik7CisgICAgdmFyIHByb2dyYW0gPSBnbC5jcmVh
dGVQcm9ncmFtKCk7CisgICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHZlcnRleFNoYWRlciwg
Z2wuVkVSVEVYX1NIQURFUik7CisgICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIGZyYWdtZW50
U2hhZGVyLCBnbC5GUkFHTUVOVF9TSEFERVIpOworICAgIGdsLmxpbmtQcm9ncmFtKHByb2dyYW0p
OworICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAvLyBsb29rIHVwIHdoZXJlIHRo
ZSB2ZXJ0ZXggZGF0YSBuZWVkcyB0byBnby4KKyAgICBnbC5teVBvc2l0aW9uTG9jYXRpb24gPSBn
bC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYV9wb3NpdGlvbiIpOworCisgICAgLy8gc2V0
IHRoZSByZXNvbHV0aW9uCisgICAgdmFyIHJlc29sdXRpb25Mb2NhdGlvbiA9IGdsLmdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCAidV9yZXNvbHV0aW9uIik7CisgICAgZ2wudW5pZm9ybTJmKHJl
c29sdXRpb25Mb2NhdGlvbiwgMTAwLCAxMDApOworCisgICAgdmFyIGNvbG9yTG9jYXRpb24gPSBn
bC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfY29sb3IiKTsKKyAgICBnbC51bmlmb3Jt
NGYoY29sb3JMb2NhdGlvbiwgMCwgMSwgMCwgMSk7Cit9CisKK2Z1bmN0aW9uIGRyYXcoZ2wsIG9m
ZnNldCkgeworICAgIHZhciBidWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5k
QnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFS
UkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbCisgICAgICAgIDgwICsgb2Zmc2V0LCAyMCwK
KyAgICAgICAgMTAgKyBvZmZzZXQsIDEwLAorICAgICAgICAxMCArIG9mZnNldCwgODBdKSwgZ2wu
U1RBVElDX0RSQVcpOworCisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoZ2wubXlQb3Np
dGlvbkxvY2F0aW9uKTsKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGdsLm15UG9zaXRpb25M
b2NhdGlvbiwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKworICAgIC8vIGRyYXcKKyAgICBn
bC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgMyk7Cit9CisKK2Z1bmN0aW9uIGRyYXdBbGwo
b2Zmc2V0KSB7CisgICAgZm9yICh2YXIgaT0wOyBpPDg7ICsraSkKKyAgICAgICAgZHJhdyhjdHhz
W2ldLCBvZmZzZXQpOworfQorCitkcmF3QWxsKDApOworCitmdW5jdGlvbiByZXBhaW50VGVzdCgp
IHsKKyAgICBkcmF3QWxsKDUwKTsKK30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtY29tcG9zaXRlLW1vZGVzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1jb21wb3NpdGUtbW9kZXMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZDA5YzU1MDdlNDRjYTk4YWEyODE3ODRmODE0ZThlN2Y1MzE3MWJjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtY29tcG9zaXRlLW1v
ZGVzLmh0bWwKQEAgLTAsMCArMSwxMDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c3Bh
biBpZD0iZGVzY3JpcHRpb24iIHN0eWxlPSJjb2xvcjogd2hpdGUiPgorVGhpcyB0ZXN0IGlzIG9u
bHkgdXNlZnVsIGFzIGEgcGl4ZWwgdGVzdC4gWW91IHNob3VsZCBzZWUgdHdvIHJvd3Mgd2l0aCA0
IGNhbnZhc2VzIGluIGVhY2guIFRoZSB0b3Agcm93IG9mIGNhbnZhc2VzIHNob3VsZCBoYXZlIGEg
YmxhY2sgYmFja2dyb3VuZCwgdGhlIGJvdHRvbSByb3cgc2hvdWxkIGhhdmUgYSBwaW5rIGJhY2tn
cm91bmQuCitFYWNoIGNhbnZhcyBzaG91bGQgaGF2ZSBhIGdyZWVuIHRyaWFuZ2xlIGluIGl0LiBJ
ZiBtdWx0aXNhbXBsaW5nIGlzIHN1cHBvcnRlZCwgdGhlIG9kZCBjb2x1bW5zIHNob3VsZCBoYXZl
IHNtb290aCBlZGdlcyBpbnN0ZWFkIG9mIGphZ2dlZCBzdGFpci1zdGVwcGluZy4gT3RoZXJ3aXNl
LCBhbGwgY2FudmFzZXMgd2l0aGluIGEgcm93IHNob3VsZCBiZSBpZGVudGljYWwgdG8gZWFjaCBv
dGhlci4KKzwvc3Bhbj4KKzxicj4KKzxzdHlsZT4KK2NhbnZhcyB7CisgICAgb3V0bGluZTogMXB4
IHNvbGlkIGJsdWU7Cit9Citib2R5IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrYmx1ZTsK
K30KKzwvc3R5bGU+Cis8c2NyaXB0IGlkPSIyZC1mcmFnbWVudC1zaGFkZXIiIHR5cGU9Ingtc2hh
ZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKK3VuaWZvcm0gdmVj
NCB1X2NvbG9yOworCit2b2lkIG1haW4oKSB7CisgIGdsX0ZyYWdDb2xvciA9IHVfY29sb3I7Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9IjJkLXZlcnRleC1zaGFkZXIiIHR5cGU9Ingtc2hhZGVy
L3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMyIGFfcG9zaXRpb247CisKK3VuaWZvcm0gdmVjMiB1
X3Jlc29sdXRpb247CisKK3ZvaWQgbWFpbigpIHsKKyAgIC8vIGNvbnZlcnQgdGhlIHJlY3Rhbmds
ZSBmcm9tIHBpeGVscyB0byAwLjAgdG8gMS4wCisgICB2ZWMyIHplcm9Ub09uZSA9IGFfcG9zaXRp
b24gLyB1X3Jlc29sdXRpb247CisKKyAgIC8vIGNvbnZlcnQgZnJvbSAwLT4xIHRvIDAtPjIKKyAg
IHZlYzIgemVyb1RvVHdvID0gemVyb1RvT25lICogMi4wOworCisgICAvLyBjb252ZXJ0IGZyb20g
MC0+MiB0byAtMS0+KzEgKGNsaXBzcGFjZSkKKyAgIHZlYzIgY2xpcFNwYWNlID0gemVyb1RvVHdv
IC0gMS4wOworCisgICBnbF9Qb3NpdGlvbiA9IHZlYzQoY2xpcFNwYWNlICogdmVjMigxLCAtMSks
IDAsIDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3Qt
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKwordmFyIGN0eHMgPSBbXQorCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRlc2NyaXB0aW9uIikuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIpLnN0eWxlLnRvcCA9ICItNTAwMHB4IjsK
K30KKworZm9yICh2YXIgaT0wOyBpPDg7ICsraSkgeworICAgIHZhciBhdHRycyA9IHsKKyAgICAg
ICAgJ2FscGhhJzogKGkgPj0gNCksCisgICAgICAgICdwcmVzZXJ2ZURyYXdpbmdCdWZmZXInOiAo
aSAlIDQpID49IDIsCisgICAgICAgICdhbnRpYWxpYXMnOiAoaSAlIDIpID09IDEKKyAgICB9Owor
ICAgIHZhciBjYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKKyAgICBjYW4u
d2lkdGggPSBjYW4uaGVpZ2h0ID0gMTAwOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
Y2FuKTsKKyAgICBpZiAoaSA9PSAzKQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOworICAgIGN0eHNbaV0gPSBjYW4uZ2V0Q29u
dGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIiwgYXR0cnMpOworICAgIHNldHVwKGN0eHNbaV0pOwor
ICAgIGRyYXcoY3R4c1tpXSk7Cit9CisKK2Z1bmN0aW9uIHNldHVwKGdsKSB7CisgICAgLy8gc2V0
dXAgYSBHTFNMIHByb2dyYW0KKyAgICB2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CisgICAgdmFy
IHZlcnRleFNoYWRlciA9IFdlYkdMVGVzdFV0aWxzLmxvYWRTaGFkZXJGcm9tU2NyaXB0KGdsLCAi
MmQtdmVydGV4LXNoYWRlciIpOworICAgIHZhciBmcmFnbWVudFNoYWRlciA9IFdlYkdMVGVzdFV0
aWxzLmxvYWRTaGFkZXJGcm9tU2NyaXB0KGdsLCAiMmQtZnJhZ21lbnQtc2hhZGVyIik7CisgICAg
dmFyIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgICAgZ2wuYXR0YWNoU2hhZGVyKHBy
b2dyYW0sIHZlcnRleFNoYWRlciwgZ2wuVkVSVEVYX1NIQURFUik7CisgICAgZ2wuYXR0YWNoU2hh
ZGVyKHByb2dyYW0sIGZyYWdtZW50U2hhZGVyLCBnbC5GUkFHTUVOVF9TSEFERVIpOworICAgIGds
LmxpbmtQcm9ncmFtKHByb2dyYW0pOworICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAg
ICAvLyBsb29rIHVwIHdoZXJlIHRoZSB2ZXJ0ZXggZGF0YSBuZWVkcyB0byBnby4KKyAgICBnbC5t
eVBvc2l0aW9uTG9jYXRpb24gPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYV9wb3Np
dGlvbiIpOworCisgICAgLy8gc2V0IHRoZSByZXNvbHV0aW9uCisgICAgdmFyIHJlc29sdXRpb25M
b2NhdGlvbiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidV9yZXNvbHV0aW9uIik7
CisgICAgZ2wudW5pZm9ybTJmKHJlc29sdXRpb25Mb2NhdGlvbiwgMTAwLCAxMDApOworCisgICAg
dmFyIGNvbG9yTG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfY29s
b3IiKTsKKyAgICBnbC51bmlmb3JtNGYoY29sb3JMb2NhdGlvbiwgMCwgMSwgMCwgMSk7Cit9CisK
K2Z1bmN0aW9uIGRyYXcoZ2wpIHsKKyAgICB2YXIgYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7
CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisgICAgZ2wuYnVm
ZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWworICAgICAgICA4MCwg
MjAsCisgICAgICAgIDEwLCAxMCwKKyAgICAgICAgMTAsIDgwXSksIGdsLlNUQVRJQ19EUkFXKTsK
KworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGdsLm15UG9zaXRpb25Mb2NhdGlvbik7
CisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihnbC5teVBvc2l0aW9uTG9jYXRpb24sIDIsIGds
LkZMT0FULCBmYWxzZSwgMCwgMCk7CisKKyAgICAvLyBkcmF3CisgICAgZ2wuZHJhd0FycmF5cyhn
bC5UUklBTkdMRVMsIDAsIDMpOworfQorPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136043</attachid>
            <date>2012-04-06 11:01:10 -0700</date>
            <delta_ts>2012-04-06 12:17:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82275-20120406110109.patch</filename>
            <type>text/plain</type>
            <size>61142</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjljNTIxZjU0MTQwMzk1
NGY0MTYxZjAwZDgzODgxYzRhMDI2YjA1MS4uNDZkYmI4ODg4NzUyZGFjNzc0ZjcxYTdlZTQ4NWZl
MjEzNWZkNzk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0wNC0wNSAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYkdMIGNvbnRl
bnQgc3dhcHBlZCBhdCB3cm9uZyB0aW1lIGluIHRocmVhZGVkIGNvbXBvc2l0aW5nIG1vZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMjc1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB1c2luZyB0
aHJlYWRlZCBjb21wb3NpdGluZywgd2UgbmVlZCB0byBkZWZlciB0b3VjaGluZyB0aGUgdGV4dHVy
ZSBJRCBiZWluZyB1c2VkIGJ5IHRoZSBjb21wb3NpdG9yIHVudGlsIHRoZQorICAgICAgICBhcHBy
b3ByaWF0ZSBwb2ludCBpbiB0aGUgc3luY2hyb25pemF0aW9uIHJvdXRpbmUgYW5kIG5vdCBiZWZv
cmUuIFNwZWNpZmljYWxseSwgdGhlcmUgaXMgbm8gdGltZSBhdCB3aGljaCBpdCBpcworICAgICAg
ICBzYWZlIHRvIG1hbmlwdWxhdGUgdGhlIHRleHR1cmUgdGhlIGNvbXBvc2l0b3IgbWF5IGJlIHVz
aW5nIGZyb20gdGhlIG1haW4gdGhyZWFkLiBUaGlzIGJyZWFrcyB1cCB0aGUgcHJlc2VudGF0aW9u
CisgICAgICAgIHBhdGggaW50byBhIGZldyBwaWVjZXMgKGRlcGVuZGluZyBvbiB0aGUgY29udGV4
dCBhdHRyaWJ1dGVzKSBpbiBvcmRlciB0byBtYWludGFpbiB0aGVzZSBpbnZhcmlhbnRzLgorCisg
ICAgICAgIERlcGVuZGluZyBvbiB0aGUgY29udGV4dCBhdHRyaWJ1dGVzIGFuZCBpZiB3ZSdyZSBp
biB0aHJlYWRlZCBtb2RlLCB0aGVyZSBhcmUgYSBmZXcgZGlmZmVyZW50IHBvc3NpYmxlIGJhY2sv
ZnJvbnQKKyAgICAgICAgYnVmZmVyIGNvbWJpbmF0aW9uczoKKworICAgICAgICAtIFdoZW4gdGhl
IGNvbnRleHQgaXMgYW50aWFsaWFzZWQsIHdlIGhhdmUgYSBtdWx0aXNhbXBsZWQgcmVuZGVyYnVm
ZmVyIGFuZCBhc3NvY2lhdGVkIGZyYW1lYnVmZmVyLgorICAgICAgICAtIEluIGFsbCBjYXNlcywg
d2UgaGF2ZSBhIGNvbG9yIHRleHR1cmUgYmFjayBidWZmZXIuCisgICAgICAgIC0gV2hlbiBwcmVz
ZXJ2ZURyYXdpbmdCdWZmZXIgaXMgc2V0IG9yIHRocmVhZGVkIGNvbXBvc2l0aW5nIGlzIGVuYWJs
ZWQsIHdlIGhhdmUgYSBzZXBhcmF0ZSBjb2xvciB0ZXh0dXJlIGFzIGEKKyAgICAgICAgZnJvbnQg
YnVmZmVyLgorCisgICAgICAgIFRoZSByZXNvdXJjZSB1cGRhdGUgaXMgaW4gdHdvIHBoYXNlcy4g
Rmlyc3QsIG9uIHRoZSBtYWluIHRocmVhZCwgd2UgcHJlcGFyZSB0aGUgYmFjayBidWZmZXIuIFRo
aXMgcmVzb2x2ZXMgZnJvbQorICAgICAgICB0aGUgbXVsdGlzYW1wbGVkIEZCTyBpbnRvIHRoZSBi
YWNrIGNvbG9yIGJ1ZmZlciBpZiBtdWx0aXNhbXBsZWQgYW5kIHN3YXBzIHRoZSBmcm9udCAvIGJh
Y2sgY29sb3IgYnVmZmVyIHRleHR1cmVzCisgICAgICAgIGlmIHByZXNlcnZlRHJhd2luZ0J1ZmZl
ciBpcyBmYWxzZSBhbmQgd2UncmUgdXNpbmcgc2VwYXJhdGUgZnJvbnQgLyBiYWNrIGNvbG9yIGJ1
ZmZlcnMuIFNlY29uZCwgb24gdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgdGhyZWFkLCB3ZSBkbyBh
IHRleHR1cmUgY29weSBmcm9tIHRoZSBiYWNrIHRvIHRoZSBmcm9udCBjb2xvciBidWZmZXIgaWYg
cHJlc2VydmVEcmF3aW5nQnVmZmVyIGlzIHRydWUuIEFmdGVyCisgICAgICAgIHRoZXNlIHN0ZXBz
IGFyZSBjb21wbGV0ZSB0aGUgbWFpbiB0aHJlYWQgaXMgZnJlZSB0byBtYW5pcHVsYXRlIHRoZSBi
YWNrIGJ1ZmZlciBjb2xvciB0ZXh0dXJlIHdpdGhvdXQgYWZmZWN0aW5nCisgICAgICAgIGFueSBy
ZXNvdXJjZXMgdGhlIGNvbXBvc2l0b3IgaXMgdXNpbmcuCisKKyAgICAgICAgT25lIGluY2lkZW50
YWwgY2xlYW51cCB0aGlzIHBhdGNoIGFsc28gZG9lcyBpcyByZW1vdmUgYWxsIHN0YXRlIHF1ZXJp
ZXMgZnJvbSBEcmF3aW5nQnVmZmVyOjpjbGVhckZyYW1lYnVmZmVyKCkuCisKKyAgICAgICAgVGVz
dHM6IGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy1yZXBhaW50Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy5o
dG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmNsZWFySWZDb21wb3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6cmVzdG9yZVN0YXRlQWZ0ZXJDbGVhcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjptYXliZVJlc3RvcmVDb250ZXh0KToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkdMUmVuZGVy
aW5nQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9EcmF3
aW5nQnVmZmVyQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVy
OjpEcmF3aW5nQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhd2luZ0J1ZmZlcjo6cHJlcGFyZUJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d2luZ0J1ZmZlcjo6cmVxdWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmZyb250Q29sb3JCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0RyYXdpbmdCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cHJlcGFyZUJhY2tCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cmVxdWlyZXNDb3B5RnJvbUJhY2tUb0Zy
b250QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmZyb250Q29sb3JC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZm
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZUNvbG9yVGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhd2luZ0J1ZmZlcjo6cHJlcGFyZUJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpyZXF1aXJlc0NvcHlGcm9tQmFja1Rv
RnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6ZnJvbnRDb2xv
ckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVy
Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpwYWludENv
bnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNo
cm9taXVtOjpwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnNldERyYXdpbmdCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViR0xMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVy
L0RyYXdpbmdCdWZmZXJDbHV0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZm
ZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmF3aW5nQnVmZmVyOjpwcmVwYXJlQmFja0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3aW5nQnVmZmVyOjpyZXF1aXJlc0NvcHlGcm9tQmFja1RvRnJvbnRCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6ZnJvbnRDb2xvckJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6aW5pdGlhbGl6ZUNvbnRleHQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdpbmdCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVy
OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpjbGVhckZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmRpc2NhcmRSZXNvdXJjZXMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmg6CisgICAgICAgIChEcmF3aW5nQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cHJl
cGFyZUJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cmVxdWly
ZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdC
dWZmZXI6OmZyb250Q29sb3JCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9xdC9EcmF3aW5nQnVmZmVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZl
cjo6RHJhd2luZ0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpwbGF0
Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OnByZXBhcmVCYWNr
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OnJlcXVpcmVzQ29weUZy
b21CYWNrVG9Gcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYXdpbmdCdWZmZXI6OmZyb250Q29sb3JCdWZmZXIpOgorCiAyMDEyLTA0LTA1ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gVXBk
YXRlIHRoZSBJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhcyBhZnRlciByZWJhc2luZyBTa2lhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDFlOTM3NDRjZjg5YzljY2Q3MDYxZjQyNTM5ZjQ4
MmZhYWM3ZTM0ZjcuLjVhMjBlZTE2ZDVjNzE4ZjEwY2E1OGQzNGQxMTQwNTkyNGI2NzA2NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDQtMDUgIEph
bWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWJHTCBjb250
ZW50IHN3YXBwZWQgYXQgd3JvbmcgdGltZSBpbiB0aHJlYWRlZCBjb21wb3NpdGluZyBtb2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjI3NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvV2Vi
R0xMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRFU1QpOgorCiAyMDEy
LTA0LTA1ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gUmVjb3JkIHRoZSBudW1iZXIgb2YgdGlsZXMgcGFpbnQtY3VsbGVkIGluc3RlYWQg
b2YgdGhlIGluY29ycmVjdCBudW1iZXIgb2YgcGl4ZWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBlOTgwNTllODVl
YzlmMzZhNTFhNDMwZDc1NjBjN2IwNDE5ZjFjZjhlLi4wM2IxNzJjOGJiZTEyOWViOTUyMGI3YWRl
NDY3ODQzNGJlMWZmMzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTQzOCw3ICs0MzgsOSBAQCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCogcGFz
c2VkQ2FudmFzLCBQYQogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgLy8gQ3JlYXRlIHRo
ZSBEcmF3aW5nQnVmZmVyIGFuZCBpbml0aWFsaXplIHRoZSBwbGF0Zm9ybSBsYXllci4KLSAgICBt
X2RyYXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBJ
bnRTaXplKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpLCAhbV9hdHRyaWJ1
dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcik7CisgICAgRHJhd2luZ0J1ZmZlcjo6UHJlc2VydmVE
cmF3aW5nQnVmZmVyIHByZXNlcnZlID0gbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZl
ciA/IERyYXdpbmdCdWZmZXI6OlByZXNlcnZlIDogRHJhd2luZ0J1ZmZlcjo6RGlzY2FyZDsKKyAg
ICBEcmF3aW5nQnVmZmVyOjpBbHBoYVJlcXVpcmVtZW50IGFscGhhID0gbV9hdHRyaWJ1dGVzLmFs
cGhhID8gRHJhd2luZ0J1ZmZlcjo6QWxwaGEgOiBEcmF3aW5nQnVmZmVyOjpPcGFxdWU7CisgICAg
bV9kcmF3aW5nQnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwg
SW50U2l6ZShjYW52YXMoKS0+c2l6ZSgpKSwgcHJlc2VydmUsIGFscGhhKTsKICNlbmRpZgogCiAg
ICAgaWYgKG1fZHJhd2luZ0J1ZmZlcikKQEAgLTYyNCwzMiArNjI2LDQ2IEBAIGJvb2wgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpjbGVhcklmQ29tcG9zaXRlZChHQzNEYml0ZmllbGQgbWFzaykKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCAwKTsKICAgICB9Ci0gICAgbV9jb250ZXh0LT5kaXNh
YmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpOwotICAgIGlmIChjb21iaW5lZENs
ZWFyICYmIChtYXNrICYgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQpKQotICAg
ICAgICBtX2NvbnRleHQtPmNsZWFyQ29sb3IobV9jb2xvck1hc2tbMF0gPyBtX2NsZWFyQ29sb3Jb
MF0gOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb2xvck1hc2tbMV0gPyBt
X2NsZWFyQ29sb3JbMV0gOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb2xv
ck1hc2tbMl0gPyBtX2NsZWFyQ29sb3JbMl0gOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9jb2xvck1hc2tbM10gPyBtX2NsZWFyQ29sb3JbM10gOiAwKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKLSAgICBtX2NvbnRleHQt
PmNvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKLSAgICBHQzNEYml0ZmllbGQgY2xl
YXJNYXNrID0gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQ7Ci0gICAgaWYgKGNv
bnRleHRBdHRyaWJ1dGVzLT5kZXB0aCgpKSB7Ci0gICAgICAgIGlmICghY29tYmluZWRDbGVhciB8
fCAhbV9kZXB0aE1hc2sgfHwgIShtYXNrICYgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZF
Ul9CSVQpKQotICAgICAgICAgICAgbV9jb250ZXh0LT5jbGVhckRlcHRoKDEuMGYpOwotICAgICAg
ICBjbGVhck1hc2sgfD0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQ7Ci0gICAg
ICAgIG1fY29udGV4dC0+ZGVwdGhNYXNrKHRydWUpOwotICAgIH0KLSAgICBpZiAoY29udGV4dEF0
dHJpYnV0ZXMtPnN0ZW5jaWwoKSkgewotICAgICAgICBpZiAoY29tYmluZWRDbGVhciAmJiAobWFz
ayAmIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQpKQotICAgICAgICAgICAg
bV9jb250ZXh0LT5jbGVhclN0ZW5jaWwobV9jbGVhclN0ZW5jaWwgJiBtX3N0ZW5jaWxNYXNrKTsK
KyAgICBpZiAobV9kcmF3aW5nQnVmZmVyKQorICAgICAgICBtX2RyYXdpbmdCdWZmZXItPmNsZWFy
RnJhbWVidWZmZXIoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbV9jb250ZXh0LT5kaXNhYmxlKEdy
YXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpOworICAgICAgICBpZiAoY29tYmluZWRDbGVh
ciAmJiAobWFzayAmIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUKSkKKyAgICAg
ICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcihtX2NvbG9yTWFza1swXSA/IG1fY2xlYXJDb2xv
clswXSA6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb2xvck1hc2tb
MV0gPyBtX2NsZWFyQ29sb3JbMV0gOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fY29sb3JNYXNrWzJdID8gbV9jbGVhckNvbG9yWzJdIDogMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2NvbG9yTWFza1szXSA/IG1fY2xlYXJDb2xvclszXSA6IDAp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NvbnRleHQtPmNsZWFyU3RlbmNpbCgwKTsK
LSAgICAgICAgY2xlYXJNYXNrIHw9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9C
SVQ7Ci0gICAgICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2tTZXBhcmF0ZShHcmFwaGljc0NvbnRl
eHQzRDo6RlJPTlQsIDB4RkZGRkZGRkYpOworICAgICAgICAgICAgbV9jb250ZXh0LT5jbGVhckNv
bG9yKDAsIDAsIDAsIDApOworICAgICAgICBtX2NvbnRleHQtPmNvbG9yTWFzayh0cnVlLCB0cnVl
LCB0cnVlLCB0cnVlKTsKKyAgICAgICAgR0MzRGJpdGZpZWxkIGNsZWFyTWFzayA9IEdyYXBoaWNz
Q29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUOworICAgICAgICBpZiAoY29udGV4dEF0dHJpYnV0
ZXMtPmRlcHRoKCkpIHsKKyAgICAgICAgICAgIGlmICghY29tYmluZWRDbGVhciB8fCAhbV9kZXB0
aE1hc2sgfHwgIShtYXNrICYgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQpKQor
ICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Y2xlYXJEZXB0aCgxLjBmKTsKKyAgICAgICAgICAg
IGNsZWFyTWFzayB8PSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJVDsKKyAgICAg
ICAgICAgIG1fY29udGV4dC0+ZGVwdGhNYXNrKHRydWUpOworICAgICAgICB9CisgICAgICAgIGlm
IChjb250ZXh0QXR0cmlidXRlcy0+c3RlbmNpbCgpKSB7CisgICAgICAgICAgICBpZiAoY29tYmlu
ZWRDbGVhciAmJiAobWFzayAmIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQp
KQorICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Y2xlYXJTdGVuY2lsKG1fY2xlYXJTdGVuY2ls
ICYgbV9zdGVuY2lsTWFzayk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9j
b250ZXh0LT5jbGVhclN0ZW5jaWwoMCk7CisgICAgICAgICAgICBjbGVhck1hc2sgfD0gR3JhcGhp
Y3NDb250ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJVDsKKyAgICAgICAgICAgIG1fY29udGV4dC0+
c3RlbmNpbE1hc2tTZXBhcmF0ZShHcmFwaGljc0NvbnRleHQzRDo6RlJPTlQsIDB4RkZGRkZGRkYp
OworICAgICAgICB9CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXIoY2xlYXJNYXNrKTsKICAgICB9
Ci0gICAgbV9jb250ZXh0LT5jbGVhcihjbGVhck1hc2spOwogCisgICAgcmVzdG9yZVN0YXRlQWZ0
ZXJDbGVhcigpOworICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZykKKyAgICAgICAgbV9jb250
ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBvYmpl
Y3RPclplcm8obV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0KCkpKTsKKyAgICBtX2xheWVyQ2xlYXJl
ZCA9IHRydWU7CisKKyAgICByZXR1cm4gY29tYmluZWRDbGVhcjsKK30KKwordm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVTdGF0ZUFmdGVyQ2xlYXIoKQorewogICAgIC8vIFJlc3Rv
cmUgdGhlIHN0YXRlIHRoYXQgdGhlIGNvbnRleHQgc2V0LgogICAgIGlmIChtX3NjaXNzb3JFbmFi
bGVkKQogICAgICAgICBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NP
Ul9URVNUKTsKQEAgLTY2MSwxMSArNjc3LDYgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmNsZWFySWZDb21wb3NpdGVkKEdDM0RiaXRmaWVsZCBtYXNrKQogICAgIG1fY29udGV4dC0+Y2xl
YXJTdGVuY2lsKG1fY2xlYXJTdGVuY2lsKTsKICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2Vw
YXJhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkZST05ULCBtX3N0ZW5jaWxNYXNrKTsKICAgICBtX2Nv
bnRleHQtPmRlcHRoTWFzayhtX2RlcHRoTWFzayk7Ci0gICAgaWYgKG1fZnJhbWVidWZmZXJCaW5k
aW5nKQotICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIG9iamVjdE9yWmVybyhtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSkp
OwotICAgIG1fbGF5ZXJDbGVhcmVkID0gdHJ1ZTsKLQotICAgIHJldHVybiBjb21iaW5lZENsZWFy
OwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bWFya0xheWVyQ29tcG9zaXRlZCgp
CkBAIC03NDksOSArNzYwLDEwIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXNoYXBl
KGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogICAgIC8vIFdlIGRvbid0IGhhdmUgdG8gbWFyayB0
aGUgY2FudmFzIGFzIGRpcnR5LCBzaW5jZSB0aGUgbmV3bHkgY3JlYXRlZCBpbWFnZSBidWZmZXIg
d2lsbCBhbHNvIHN0YXJ0IG9mZgogICAgIC8vIGNsZWFyIChhbmQgdGhpcyBtYXRjaGVzIHdoYXQg
cmVzaGFwZSB3aWxsIGRvKS4KLSAgICBpZiAobV9kcmF3aW5nQnVmZmVyKQorICAgIGlmIChtX2Ry
YXdpbmdCdWZmZXIpIHsKICAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5yZXNldChJbnRTaXplKHdp
ZHRoLCBoZWlnaHQpKTsKLSAgICBlbHNlCisgICAgICAgIHJlc3RvcmVTdGF0ZUFmdGVyQ2xlYXIo
KTsKKyAgICB9IGVsc2UKICAgICAgICAgbV9jb250ZXh0LT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQp
OwogCiAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgb2JqZWN0T3JaZXJvKG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1f
dGV4dHVyZTJEQmluZGluZy5nZXQoKSkpOwpAQCAtNTM4MCw3ICs1MzkyLDkgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6Om1heWJlUmVzdG9yZUNvbnRleHQoVGltZXI8V2ViR0xSZW5kZXJp
bmdDb250ZXh0PiopCiAgICAgLy8gQ29uc3RydWN0IGEgbmV3IGRyYXdpbmcgYnVmZmVyIHdpdGgg
dGhlIG5ldyBHcmFwaGljc0NvbnRleHQzRC4KICAgICBpZiAobV9kcmF3aW5nQnVmZmVyKSB7CiAg
ICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+ZGlzY2FyZFJlc291cmNlcygpOwotICAgICAgICBtX2Ry
YXdpbmdCdWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgbV9kcmF3
aW5nQnVmZmVyLT5zaXplKCksICFtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKTsK
KyAgICAgICAgRHJhd2luZ0J1ZmZlcjo6UHJlc2VydmVEcmF3aW5nQnVmZmVyIHByZXNlcnZlID0g
bV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA/IERyYXdpbmdCdWZmZXI6OlByZXNl
cnZlIDogRHJhd2luZ0J1ZmZlcjo6RGlzY2FyZDsKKyAgICAgICAgRHJhd2luZ0J1ZmZlcjo6QWxw
aGFSZXF1aXJlbWVudCBhbHBoYSA9IG1fYXR0cmlidXRlcy5hbHBoYSA/IERyYXdpbmdCdWZmZXI6
OkFscGhhIDogRHJhd2luZ0J1ZmZlcjo6T3BhcXVlOworICAgICAgICBtX2RyYXdpbmdCdWZmZXIg
PSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgbV9kcmF3aW5nQnVmZmVyLT5z
aXplKCksIHByZXNlcnZlLCBhbHBoYSk7CiAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+YmluZCgp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaAppbmRleCBkM2MwODMyNTY3MTgwZGYwM2I3NWE5N2E4YTdjNGY0YjJkOTQ3
MjA5Li45YmFkMjQ4NjcyOWZjMjczMTI1ZDgxMTA3NTQ3NjRkNGRkNDg4Y2I3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaApAQCAt
NTIxLDYgKzUyMSw5IEBAIHB1YmxpYzoKICAgICAvLyBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMg
dHJ1ZSBpZiB0aGF0IGNsZWFyIGlzIG5vdyB1bm5lY2Vzc2FyeS4KICAgICBib29sIGNsZWFySWZD
b21wb3NpdGVkKEdDM0RiaXRmaWVsZCBjbGVhck1hc2sgPSAwKTsKIAorICAgIC8vIEhlbHBlciB0
byByZXN0b3JlIHN0YXRlIHRoYXQgY2xlYXJpbmcgdGhlIGZyYW1lYnVmZmVyIG1heSBkZXN0cm95
LgorICAgIHZvaWQgcmVzdG9yZVN0YXRlQWZ0ZXJDbGVhcigpOworCiAgICAgdm9pZCB0ZXhJbWFn
ZTJEQmFzZShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFs
Zm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0Rl
bnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgdm9pZCogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0RyYXdpbmdCdWZmZXJCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvRHJhd2luZ0J1ZmZlckJsYWNrQmVycnkuY3BwCmluZGV4IGM1MzEw
OGMwMGExMWQ3NjBjNTEyMjZlZTlkNzVkOGUyZTU3YmFiMmUuLjhkZmQ2ZjNmN2E4NmM4NWRhYjlh
ZTQwMGVkZmU5MjAyM2E4NDNhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvRHJhd2luZ0J1ZmZlckJsYWNrQmVycnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRHJhd2luZ0J1ZmZlckJs
YWNrQmVycnkuY3BwCkBAIC02Nyw2ICs2Nyw4IEBAIERyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUpCiAgICAg
OiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9mYm8oY29u
dGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKSkKKyAgICAsIG1fZnJvbnRDb2xvckJ1ZmZlcigwKQor
ICAgICwgbV9zZXBhcmF0ZUZyb250VGV4dHVyZShmYWxzZSkKIHsKICAgICBtX2ludGVybmFsID0g
YWRvcHRQdHIobmV3IERyYXdpbmdCdWZmZXJJbnRlcm5hbCk7CiAKQEAgLTg1LDI1ICs4Nyw2IEBA
IERyYXdpbmdCdWZmZXI6On5EcmF3aW5nQnVmZmVyKCkKICAgICBjbGVhcigpOwogfQogCi0jaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotdm9pZCBEcmF3aW5nQnVmZmVyOjpwdWJsaXNo
VG9QbGF0Zm9ybUxheWVyKCkKLXsKLSAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKG1fY2FsbGJhY2spCi0gICAgICAgIG1fY2FsbGJhY2stPndpbGxQdWJsaXNo
KCk7Ci0KLSAgICAvLyBGSVhNRTogV2UgZG8gdGhlIGNvcHkgaW4gdGhlIGNhbnZhcycgKGNoaWxk
KSBjb250ZXh0IHNvIHRoYXQgaXQgZXhlY3V0ZXMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgcmVsYXRp
dmUgdG8KLSAgICAvLyBvdGhlciBjb21tYW5kcyBpbiB0aGUgY2hpbGQgY29udGV4dC4gVGhpcyBl
bnN1cmVzIHRoYXQgdGhlIHBhcmVudCB0ZXh0dXJlIGFsd2F5cyBjb250YWlucyBhIGNvbXBsZXRl
Ci0gICAgLy8gZnJhbWUgYW5kIG5vdCBzb21lIGludGVybWVkaWF0ZSByZXN1bHQuIEhvd2V2ZXIs
IHRoZXJlIGlzIG5vIHN5bmNocm9uaXphdGlvbiB0byBlbnN1cmUgdGhhdCB0aGlzIGNvcHkKLSAg
ICAvLyBoYXBwZW5zIGJlZm9yZSB0aGUgY29tcG9zaXRvciBkcmF3cy4gVGhpcyBtZWFucyB3ZSBt
aWdodCBkcmF3IHN0YWxlIGZyYW1lcyBzb21ldGltZXMuIElkZWFsbHkgdGhpcwotICAgIC8vIHdv
dWxkIGluc2VydCBhIGZlbmNlIGludG8gdGhlIGNoaWxkIGNvbW1hbmQgc3RyZWFtIHRoYXQgdGhl
IGNvbXBvc2l0b3IgY291bGQgd2FpdCBmb3IuCi0gICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKTsKLSAgICBtX2NvbnRleHQtPmZsdXNoKCk7Ci19Ci0jZW5kaWYKLQogYm9vbCBEcmF3
aW5nQnVmZmVyOjpyZXNldChjb25zdCBJbnRTaXplJiBuZXdTaXplKQogewogICAgIGlmICghbV9j
b250ZXh0KQpAQCAtMTI1LDYgKzEwOCwyMCBAQCBQbGF0Zm9ybUxheWVyKiBEcmF3aW5nQnVmZmVy
OjpwbGF0Zm9ybUxheWVyKCkKIHsKICAgICByZXR1cm4gbV9pbnRlcm5hbC0+cGxhdGZvcm1MYXll
ci5nZXQoKTsKIH0KKwordm9pZCBEcmF3aW5nQnVmZmVyOjpwcmVwYXJlQmFja0J1ZmZlcigpCit7
Cit9CisKK2Jvb2wgRHJhd2luZ0J1ZmZlcjo6cmVxdWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVm
ZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Vuc2lnbmVkIERyYXdpbmdC
dWZmZXI6OmZyb250Q29sb3JCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBjb2xvckJ1ZmZl
cigpOworfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0RyYXdpbmdCdWZmZXJDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9EcmF3aW5nQnVmZmVy
Q2Fpcm8uY3BwCmluZGV4IDA2N2I5YzdiMzYyNWZjNGIyNDI1ZTJlOTYxNjdmYjljNTE2MGM2MWEu
LmVjMTI3MGRlYjRlOWQ4NWVlZjA2MGRhMGMxMzNmODE4NDg1MjRmOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0RyYXdpbmdCdWZmZXJDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRHJhd2luZ0J1
ZmZlckNhaXJvLmNwcApAQCAtMzcsOCArMzcsMTAgQEAgRHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1
ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBtdWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkKLSAg
ICA6IG1fc2VwYXJhdGVCYWNraW5nVGV4dHVyZShzZXBhcmF0ZUJhY2tpbmdUZXh0dXJlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVzZXJ2ZURyYXdpbmdCdWZmZXIgcHJlc2VydmVE
cmF3aW5nQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHBoYVJlcXVpcmVt
ZW50IGFscGhhKQorICAgIDogbV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXIocHJlc2VydmVEcmF3aW5n
QnVmZmVyKQorICAgICwgbV9hbHBoYShhbHBoYSkKICAgICAsIG1fc2Npc3NvckVuYWJsZWQoZmFs
c2UpCiAgICAgLCBtX3RleHR1cmUyREJpbmRpbmcoMCkKICAgICAsIG1fYWN0aXZlVGV4dHVyZVVu
aXQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKQpAQCAtNDgsMTUgKzUwLDE0IEBAIERyYXdp
bmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCiAgICAg
LCBtX3BhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRlZChwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb25TdXBwb3J0ZWQpCiAgICAgLCBtX2Zibyhjb250ZXh0LT5jcmVhdGVGcmFtZWJ1
ZmZlcigpKQogICAgICwgbV9jb2xvckJ1ZmZlcigwKQorICAgICwgbV9mcm9udENvbG9yQnVmZmVy
KDApCisgICAgLCBtX3NlcGFyYXRlRnJvbnRUZXh0dXJlKGZhbHNlKQogICAgICwgbV9kZXB0aFN0
ZW5jaWxCdWZmZXIoMCkKICAgICAsIG1fZGVwdGhCdWZmZXIoMCkKICAgICAsIG1fc3RlbmNpbEJ1
ZmZlcigwKQogICAgICwgbV9tdWx0aXNhbXBsZUZCTygwKQogICAgICwgbV9tdWx0aXNhbXBsZUNv
bG9yQnVmZmVyKDApCiB7Ci0gICAgLy8gU3VwcG9ydCBmb3IgYSBzZXBhcmF0ZSBiYWNraW5nIHRl
eHR1cmUgaGFzIG9ubHkgYmVlbiBlbmFibGVkIGZvcgotICAgIC8vIHRoZSBjaHJvbWl1bSBwb3J0
LgotICAgIEFTU0VSVCghbV9zZXBhcmF0ZUJhY2tpbmdUZXh0dXJlKTsKICAgICBBU1NFUlQobV9m
Ym8pOwogICAgIGlmICghbV9mYm8pIHsKICAgICAgICAgY2xlYXIoKTsKQEAgLTgxLDEyICs4Miwy
MSBAQCBEcmF3aW5nQnVmZmVyOjp+RHJhd2luZ0J1ZmZlcigpCiAgICAgY2xlYXIoKTsKIH0KIAot
UGxhdGZvcm0zRE9iamVjdCBEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUNvbG9yQnVmZmVyKCkgY29u
c3QKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCit2b2lkIERyYXdpbmdCdWZmZXI6
OnByZXBhcmVCYWNrQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gbV9jb2xvckJ1ZmZlcjsKIH0KIAot
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKK2Jvb2wgRHJhd2luZ0J1ZmZlcjo6cmVx
dWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3Vuc2lnbmVkIERyYXdpbmdCdWZmZXI6OmZyb250Q29sb3JCdWZmZXIoKSBjb25z
dAoreworICAgIHJldHVybiBjb2xvckJ1ZmZlcigpOworfQorCiB2b2lkIERyYXdpbmdCdWZmZXI6
OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKaW5kZXgg
NTUxYWRmNzY5NzYyOTVjOTk2MDMyMDQyM2Y5NjE5OTQyMGI1NDc5OS4uNjE1NzZmY2M0MDVkZjcz
NDgxYzA2YjIwZGY5NTFiZGEzMGMyNmI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hy
b21pdW0uY3BwCkBAIC0zNiw2ICszNiwxMCBAQAogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9t
aXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJXZWJHTExh
eWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSA8YWxnb3Jp
dGhtPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTQ2LDggKzUwLDggQEAgc3RhdGljIHVuc2lnbmVkIGdlbmVyYXRlQ29sb3JUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJgogICAgICAgICByZXR1cm4gMDsK
IAogICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBvZmZzY3JlZW5Db2xvclRleHR1cmUpOwotICAgIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01B
R19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKTsKLSAgICBjb250ZXh0LT50ZXhQ
YXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVCk7CisgICAg
Y29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJ
TkVBUik7CisgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkxJTkVBUik7CiAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBH
cmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CiAgICAgY29udGV4dC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CiAgICAgY29u
dGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05F
RF9CWVRFKTsKQEAgLTU5LDggKzYzLDEwIEBAIERyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEludFNpemUmIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
bXVsdGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHNlcGFyYXRlQmFja2luZ1RleHR1cmUpCi0gICAgOiBt
X3NlcGFyYXRlQmFja2luZ1RleHR1cmUoc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUHJlc2VydmVEcmF3aW5nQnVmZmVyIHByZXNlcnZlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbHBoYVJlcXVpcmVtZW50IGFscGhhKQorICAgIDog
bV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXIocHJlc2VydmUpCisgICAgLCBtX2FscGhhKGFscGhhKQog
ICAgICwgbV9zY2lzc29yRW5hYmxlZChmYWxzZSkKICAgICAsIG1fdGV4dHVyZTJEQmluZGluZygw
KQogICAgICwgbV9hY3RpdmVUZXh0dXJlVW5pdChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTAp
CkBAIC03MCw3ICs3Niw4IEBAIERyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsCiAgICAgLCBtX3BhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1
cHBvcnRlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQpCiAgICAgLCBtX2Zi
bygwKQogICAgICwgbV9jb2xvckJ1ZmZlcigwKQotICAgICwgbV9iYWNraW5nQ29sb3JCdWZmZXIo
MCkKKyAgICAsIG1fZnJvbnRDb2xvckJ1ZmZlcigwKQorICAgICwgbV9zZXBhcmF0ZUZyb250VGV4
dHVyZShtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlciA9PSBQcmVzZXJ2ZSB8fCBDQ1Byb3h5OjppbXBs
VGhyZWFkKCkpCiAgICAgLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcigwKQogICAgICwgbV9kZXB0aEJ1
ZmZlcigwKQogICAgICwgbV9zdGVuY2lsQnVmZmVyKDApCkBAIC05NSw4ICsxMDIsOCBAQCB2b2lk
IERyYXdpbmdCdWZmZXI6OmluaXRpYWxpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBt
X2ZibyA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKIAotICAgIGlmIChtX3NlcGFy
YXRlQmFja2luZ1RleHR1cmUpCi0gICAgICAgIG1fYmFja2luZ0NvbG9yQnVmZmVyID0gZ2VuZXJh
dGVDb2xvclRleHR1cmUobV9jb250ZXh0LmdldCgpLCBzaXplKTsKKyAgICBpZiAobV9zZXBhcmF0
ZUZyb250VGV4dHVyZSkKKyAgICAgICAgbV9mcm9udENvbG9yQnVmZmVyID0gZ2VuZXJhdGVDb2xv
clRleHR1cmUobV9jb250ZXh0LmdldCgpLCBzaXplKTsKIAogICAgIG1fY29udGV4dC0+YmluZEZy
YW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogICAgIG1f
Y29sb3JCdWZmZXIgPSBnZW5lcmF0ZUNvbG9yVGV4dHVyZShtX2NvbnRleHQuZ2V0KCksIHNpemUp
OwpAQCAtMTA5LDMzICsxMTYsMzUgQEAgdm9pZCBEcmF3aW5nQnVmZmVyOjppbml0aWFsaXplKGNv
bnN0IEludFNpemUmIHNpemUpCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
Ci12b2lkIERyYXdpbmdCdWZmZXI6OnB1Ymxpc2hUb1BsYXRmb3JtTGF5ZXIoKQordm9pZCBEcmF3
aW5nQnVmZmVyOjpwcmVwYXJlQmFja0J1ZmZlcigpCiB7Ci0gICAgaWYgKCFtX2NvbnRleHQpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisK
ICAgICBpZiAobXVsdGlzYW1wbGUoKSkKICAgICAgICAgY29tbWl0KCk7CiAKLSAgICBpZiAobV9z
ZXBhcmF0ZUJhY2tpbmdUZXh0dXJlKSB7CisgICAgaWYgKG1fcHJlc2VydmVEcmF3aW5nQnVmZmVy
ID09IERpc2NhcmQgJiYgbV9zZXBhcmF0ZUZyb250VGV4dHVyZSkgeworICAgICAgICBzd2FwKG1f
ZnJvbnRDb2xvckJ1ZmZlciwgbV9jb2xvckJ1ZmZlcik7CisgICAgICAgIC8vIEl0IGFwcGVhcnMg
c2FmZSB0byBvdmVyd3JpdGUgdGhlIGNvbnRleHQncyBmcmFtZWJ1ZmZlciBiaW5kaW5nIGluIHRo
ZSBEaXNjYXJkIGNhc2Ugc2luY2UgdGhlcmUgd2lsbCBhbHdheXMgYmUgYQorICAgICAgICAvLyBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFySWZDb21wb3NpdGVkKCkgY2FsbCBtYWRlIGJlZm9y
ZSB0aGUgbmV4dCBkcmF3IGNhbGwgd2hpY2ggcmVzdG9yZXMgdGhlIGZyYW1lYnVmZmVyIGJpbmRp
bmcuCisgICAgICAgIC8vIElmIHRoaXMgc3RvcHMgYmVpbmcgdHJ1ZSBhdCBzb21lIHBvaW50LCB3
ZSBzaG91bGQgdHJhY2sgdGhlIGN1cnJlbnQgZnJhbWVidWZmZXIgYmluZGluZyBpbiB0aGUgRHJh
d2luZ0J1ZmZlciBhbmQgcmVzdG9yZQorICAgICAgICAvLyBpdCBhZnRlciBhdHRhY2hpbmcgdGhl
IG5ldyBiYWNrIGJ1ZmZlciBoZXJlLgogICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKLQotICAgICAgICAvLyBU
aGlzIHBhdGggYWx3YXlzIHVzZXMgVEVYVFVSRTAsIGFuZCByZXN0b3JlcyBpdHMgc3RhdGUgYmVs
b3cuCi0gICAgICAgIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRTApOwotICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBtX2JhY2tpbmdDb2xvckJ1ZmZlcik7Ci0KLSAgICAgICAgdW5zaWdu
ZWQgY29sb3JGb3JtYXQgPSBtX2NvbnRleHQtPmdldENvbnRleHRBdHRyaWJ1dGVzKCkuYWxwaGEg
PyBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSA6IEdyYXBoaWNzQ29udGV4dDNEOjpSR0I7Ci0gICAg
ICAgIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIDAsIGNvbG9yRm9ybWF0LCAwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgp
LCAwKTsKLQotICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBtX3RleHR1cmUyREJpbmRpbmcpOwotICAgICAgICBtX2NvbnRleHQtPmFj
dGl2ZVRleHR1cmUobV9hY3RpdmVUZXh0dXJlVW5pdCk7CisgICAgICAgIG1fY29udGV4dC0+ZnJh
bWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBtX2NvbG9yQnVmZmVyLCAwKTsKICAgICB9CiAKICAgICBpZiAobXVsdGlzYW1wbGUoKSkK
ICAgICAgICAgYmluZCgpOworfQorCitib29sIERyYXdpbmdCdWZmZXI6OnJlcXVpcmVzQ29weUZy
b21CYWNrVG9Gcm9udEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VwYXJhdGVGcm9u
dFRleHR1cmUgJiYgbV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPT0gUHJlc2VydmU7Cit9CiAKLSAg
ICBtX2NvbnRleHQtPmZsdXNoKCk7Cit1bnNpZ25lZCBEcmF3aW5nQnVmZmVyOjpmcm9udENvbG9y
QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXBhcmF0ZUZyb250VGV4dHVyZSA/IG1f
ZnJvbnRDb2xvckJ1ZmZlciA6IG1fY29sb3JCdWZmZXI7CiB9CiAjZW5kaWYKIApAQCAtMTQ1LDE4
ICsxNTQsMTMgQEAgUGxhdGZvcm1MYXllciogRHJhd2luZ0J1ZmZlcjo6cGxhdGZvcm1MYXllcigp
CiAgICAgaWYgKCFtX3BsYXRmb3JtTGF5ZXIpIHsKICAgICAgICAgbV9wbGF0Zm9ybUxheWVyID0g
V2ViR0xMYXllckNocm9taXVtOjpjcmVhdGUoKTsKICAgICAgICAgbV9wbGF0Zm9ybUxheWVyLT5z
ZXREcmF3aW5nQnVmZmVyKHRoaXMpOwotICAgICAgICBtX3BsYXRmb3JtTGF5ZXItPnNldE9wYXF1
ZSghbV9jb250ZXh0LT5nZXRDb250ZXh0QXR0cmlidXRlcygpLmFscGhhKTsKKyAgICAgICAgbV9w
bGF0Zm9ybUxheWVyLT5zZXRPcGFxdWUobV9hbHBoYSA9PSBPcGFxdWUpOwogICAgIH0KIAogICAg
IHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7CiB9CiAjZW5kaWYKIAotUGxhdGZvcm0zRE9i
amVjdCBEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUNvbG9yQnVmZmVyKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9zZXBhcmF0ZUJhY2tpbmdUZXh0dXJlID8gbV9iYWNraW5nQ29sb3JCdWZmZXIgOiBt
X2NvbG9yQnVmZmVyOwotfQotCiBQbGF0Zm9ybTNET2JqZWN0IERyYXdpbmdCdWZmZXI6OmZyYW1l
YnVmZmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9mYm87CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNo
cm9taXVtLmNwcAppbmRleCBkYTU1ZjNhYzA2YzRkNWM0NmVkYWMxNzlkODRkZjYzOGFjMjE5OWVj
Li43NGU0YTFhYjg3OWI3MzNlMjQwNjQ4MTgzYmRmZjQ2OTFhOTE1YzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM3LDkgKzM3LDExIEBACiAjaW5jbHVkZSAiRHJhd2lu
Z0J1ZmZlci5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCiAjaW5jbHVk
ZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1
ZGUgImNjL0NDVGV4dHVyZUxheWVySW1wbC5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MiwxMCArNTQsOCBAQCBXZWJHTExh
eWVyQ2hyb21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bSgpCiAgICAgOiBDYW52YXNMYXllckNocm9t
aXVtKCkKICAgICAsIG1faGFzQWxwaGEodHJ1ZSkKICAgICAsIG1fcHJlbXVsdGlwbGllZEFscGhh
KHRydWUpCi0gICAgLCBtX3RleHR1cmVJZCgwKQotICAgICwgbV90ZXh0dXJlQ2hhbmdlZCh0cnVl
KQotICAgICwgbV90ZXh0dXJlVXBkYXRlZChmYWxzZSkKICAgICAsIG1fY29udGV4dExvc3QoZmFs
c2UpCisgICAgLCBtX3RleHR1cmVJZCgwKQogICAgICwgbV9kcmF3aW5nQnVmZmVyKDApCiB7CiB9
CkBAIC03MywyOCArNzMsMjUgQEAgYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVu
dCgpIGNvbnN0CiAKIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0
eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9jY2x1c2lvbiAqLykKIHsKLSAgICBpZiAo
IWRyYXdzQ29udGVudCgpIHx8ICFtX25lZWRzRGlzcGxheSB8fCAhbV90ZXh0dXJlVXBkYXRlZCkK
KyAgICBpZiAoIWRyYXdzQ29udGVudCgpIHx8ICFtX25lZWRzRGlzcGxheSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZHJhd2luZ0J1ZmZlcigpLT5wdWJsaXNoVG9QbGF0Zm9ybUxheWVyKCk7Cisg
ICAgbV9kcmF3aW5nQnVmZmVyLT5wcmVwYXJlQmFja0J1ZmZlcigpOworCisgICAgY29udGV4dCgp
LT5mbHVzaCgpOwogICAgIGNvbnRleHQoKS0+bWFya0xheWVyQ29tcG9zaXRlZCgpOwogICAgIG1f
bmVlZHNEaXNwbGF5ID0gZmFsc2U7Ci0gICAgbV90ZXh0dXJlVXBkYXRlZCA9IGZhbHNlOwogICAg
IG1fY29udGV4dExvc3QgPSBjb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUjsKIH0KIAotdm9p
ZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqIHJlbmRlcmVyQ29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYpCit2b2lkIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKLSAgICBpZiAobV90ZXh0
dXJlQ2hhbmdlZCkgewotICAgICAgICByZW5kZXJlckNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCk7Ci0gICAgICAgIC8vIFNldCB0
aGUgbWluLW1hZyBmaWx0ZXJzIHRvIGxpbmVhciBhbmQgd3JhcCBtb2RlcyB0byBHTF9DTEFNUF9U
T19FREdFCi0gICAgICAgIC8vIHRvIGdldCBhcm91bmQgTlBPVCB0ZXh0dXJlIGxpbWl0YXRpb25z
IG9mIEdMRVMuCi0gICAgICAgIHJlbmRlcmVyQ29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgICAgIHJlbmRlcmVyQ29udGV4
dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7
Ci0gICAgICAgIHJlbmRlcmVyQ29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGlj
c0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIHJlbmRlcmVyQ29udGV4dC0+dGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0g
ICAgICAgIG1fdGV4dHVyZUNoYW5nZWQgPSBmYWxzZTsKLSAgICB9CisgICAgaWYgKCFtX2RyYXdp
bmdCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdGV4dHVyZUlkID0gbV9kcmF3aW5n
QnVmZmVyLT5mcm9udENvbG9yQnVmZmVyKCk7CisgICAgaWYgKG1fZHJhd2luZ0J1ZmZlci0+cmVx
dWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVmZmVyKCkpCisgICAgICAgIHVwZGF0ZXIuY29waWVy
KCktPmNvcHlUZXh0dXJlKGNvbnRleHQsIG1fZHJhd2luZ0J1ZmZlci0+Y29sb3JCdWZmZXIoKSwg
bV90ZXh0dXJlSWQsIGJvdW5kcygpKTsKIH0KIAogdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnB1
c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQpAQCAtMTA5LDcgKzEwNiw3IEBAIHZv
aWQgV2ViR0xMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXll
cikKIAogYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogewotICAgIGlmIChtX3RleHR1cmVVcGRhdGVk
IHx8ICFtX2RyYXdpbmdCdWZmZXIgfHwgIWRyYXdzQ29udGVudCgpKQorICAgIGlmICghbV9kcmF3
aW5nQnVmZmVyIHx8ICFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgSW50U2l6ZSBmcmFtZWJ1ZmZlclNpemUgPSBjb250ZXh0KCktPmdldEludGVybmFsRnJhbWVi
dWZmZXJTaXplKCk7CkBAIC0xMzYsOCArMTMzLDYgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06
OnNldE5lZWRzRGlzcGxheVJlY3QoY29uc3QgRmxvYXRSZWN0JiBkaXJ0eVJlY3QpCiB7CiAgICAg
TGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5UmVjdChkaXJ0eVJlY3QpOwogCi0gICAgbV90
ZXh0dXJlVXBkYXRlZCA9IHRydWU7Ci0KICAgICAvLyBJZiBXZWJHTCBjb21tYW5kcyBhcmUgaXNz
dWVkIG91dHNpZGUgb2YgYSB0aGUgYW5pbWF0aW9uIGNhbGxiYWNrcywgdGhlbiB1c2UKICAgICAv
LyBjYWxsIHJhdGVMaW1pdE9mZnNjcmVlbkNvbnRleHRDSFJPTUlVTSgpIHRvIGtlZXAgdGhlIGNv
bnRleHQgZnJvbSBnZXR0aW5nIHRvbyBmYXIgYWhlYWQuCiAgICAgaWYgKGxheWVyVHJlZUhvc3Qo
KSkKQEAgLTE2MCwxMiArMTU1LDYgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnNldERyYXdp
bmdCdWZmZXIoRHJhd2luZ0J1ZmZlciogZHJhd2luZ0J1ZmZlcikKICAgICBpZiAoIW1fZHJhd2lu
Z0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQgaW50IHRleHR1cmVJZCA9
IG1fZHJhd2luZ0J1ZmZlci0+cGxhdGZvcm1Db2xvckJ1ZmZlcigpOwotICAgIGlmICh0ZXh0dXJl
SWQgIT0gbV90ZXh0dXJlSWQgfHwgZHJhd2luZ0J1ZmZlckNoYW5nZWQpIHsKLSAgICAgICAgbV90
ZXh0dXJlQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgIG1fdGV4dHVyZVVwZGF0ZWQgPSB0cnVlOwot
ICAgIH0KLSAgICBtX3RleHR1cmVJZCA9IHRleHR1cmVJZDsKICAgICBHcmFwaGljc0NvbnRleHQz
RDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gY29udGV4dCgpLT5nZXRDb250ZXh0QXR0cmlidXRl
cygpOwogICAgIG1faGFzQWxwaGEgPSBhdHRyaWJ1dGVzLmFscGhhOwogICAgIG1fcHJlbXVsdGlw
bGllZEFscGhhID0gYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IDY1MDlmYjM1OGQ5NWU5YjBkZjE3MWFjMGIxY2RmYzVkNTM1NDE2
M2QuLjcxMWMwYmU4MjQ3MmJhNTVhMDQyMjUxOGQ4M2EwMmMxY2NjZDZjOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5oCkBAIC00OSw5ICs0OSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwogCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29u
c3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KLSAgICB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25l
ZCB0ZXh0dXJlSWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7IH0KLQogICAgIHZpcnR1YWwg
Ym9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50
c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRh
dGVyJik7CkBAIC02OSwxMCArNjYsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2hhc0FscGhh
OwogICAgIGJvb2wgbV9wcmVtdWx0aXBsaWVkQWxwaGE7Ci0gICAgdW5zaWduZWQgbV90ZXh0dXJl
SWQ7Ci0gICAgYm9vbCBtX3RleHR1cmVDaGFuZ2VkOwotICAgIGJvb2wgbV90ZXh0dXJlVXBkYXRl
ZDsKICAgICBib29sIG1fY29udGV4dExvc3Q7CisgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CiAK
ICAgICAvLyBUaGUgRHJhd2luZ0J1ZmZlciBob2xkaW5nIHRoZSBXZWJHTCBjb250ZW50cyBmb3Ig
dGhpcyBsYXllci4KICAgICAvLyBBIHJlZmVyZW5jZSBpcyBub3QgaGVsZCBoZXJlLCBiZWNhdXNl
IHRoZSBEcmF3aW5nQnVmZmVyIGFscmVhZHkgaG9sZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvRHJhd2luZ0J1ZmZlckNsdXR0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9EcmF3aW5nQnVmZmVyQ2x1
dHRlci5jcHAKaW5kZXggMWYzMzJjMTEwNmQ4MzlhOTQ2Y2JiNjkwNmYyYTJmZGMxZGQ5N2I3OC4u
NDFiYzdlNjEyMjE2NWMwOTI5NGNjYWYwOTdjZDgyZTE1OWEzYWI4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9EcmF3aW5nQnVmZmVyQ2x1dHRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9EcmF3
aW5nQnVmZmVyQ2x1dHRlci5jcHAKQEAgLTQzLDcgKzQzLDEyIEBAIERyYXdpbmdCdWZmZXI6OkRy
YXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgbXVsdGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlcGFyYXRlQmFja2luZ1RleHR1
cmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNlcnZlRHJhd2luZ0J1ZmZlciBw
cmVzZXJ2ZURyYXdpbmdCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFscGhh
UmVxdWlyZW1lbnQgYWxwaGEpCisgICAgOiBtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlcihwcmVzZXJ2
ZURyYXdpbmdCdWZmZXIpCisgICAgLCBtX2FscGhhKGFscGhhKQorICAgICwgbV9mcm9udENvbG9y
QnVmZmVyKDApCisgICAgLCBtX3NlcGFyYXRlRnJvbnRUZXh0dXJlKGZhbHNlKQogewogfQogCkBA
IC01MSwxMiArNTYsMjEgQEAgRHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIoKQogewogfQog
Ci1QbGF0Zm9ybTNET2JqZWN0IERyYXdpbmdCdWZmZXI6OnBsYXRmb3JtQ29sb3JCdWZmZXIoKSBj
b25zdAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKK3ZvaWQgRHJhd2luZ0J1ZmZl
cjo6cHJlcGFyZUJhY2tCdWZmZXIoKQogewotICAgIHJldHVybiBtX2NvbG9yQnVmZmVyOwogfQog
Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorYm9vbCBEcmF3aW5nQnVmZmVyOjpy
ZXF1aXJlc0NvcHlGcm9tQmFja1RvRnJvbnRCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKwordW5zaWduZWQgRHJhd2luZ0J1ZmZlcjo6ZnJvbnRDb2xvckJ1ZmZlcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGNvbG9yQnVmZmVyKCk7Cit9CisKIHZvaWQgRHJhd2luZ0J1ZmZl
cjo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQq
IGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCmluZGV4IDIzYjZmZTExODRjNWYw
NThiZDRkY2YyYzI4YjNmYmVmYWM2NTY4YzguLjhmYWZlMDQyMGMxOTI4ZGJjMTEzN2IzNGM5Njky
MmEwMjg5NTc5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAg
dm9pZCBGRUN1c3RvbUZpbHRlcjo6aW5pdGlhbGl6ZUNvbnRleHQoY29uc3QgSW50U2l6ZSYgY29u
dGV4dFNpemUpCiAgICAgCiAgICAgQVNTRVJUKCFtX2NvbnRleHQuZ2V0KCkpOwogICAgIG1fY29u
dGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0cmlidXRlcywgbV9ob3N0V2luZG93
LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuKTsKLSAgICBtX2RyYXdpbmdCdWZm
ZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBjb250ZXh0U2l6ZSwg
IWF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKTsKKyAgICBtX2RyYXdpbmdCdWZmZXIg
PSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCBjb250ZXh0U2l6ZSwgRHJh
d2luZ0J1ZmZlcjo6RGlzY2FyZCwgRHJhd2luZ0J1ZmZlcjo6QWxwaGEpOwogICAgIAogICAgIG1f
c2hhZGVyID0gbV9wcm9ncmFtLT5jcmVhdGVTaGFkZXJXaXRoQ29udGV4dChtX2NvbnRleHQuZ2V0
KCkpOwogICAgIG1fbWVzaCA9IEN1c3RvbUZpbHRlck1lc2g6OmNyZWF0ZShtX2NvbnRleHQuZ2V0
KCksIG1fbWVzaENvbHVtbnMsIG1fbWVzaFJvd3MsIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCmluZGV4IDQ4ZGQwYTNj
NGQ4YzkyMmE5M2YwMTVjMDRiMTllZmE3ZGY2YzFhOWQuLjcyMWM2YjVjYjVlZDkxMzE3YjY2Njlm
NWYzYmZhODJmYjI2ZTdlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGlj
IGludCBzX21heGltdW1SZXNvdXJjZVVzZVBpeGVscyA9IDA7CiBzdGF0aWMgaW50IHNfY3VycmVu
dFJlc291cmNlVXNlUGl4ZWxzID0gMDsKIHN0YXRpYyBjb25zdCBmbG9hdCBzX3Jlc291cmNlQWRq
dXN0ZWRSYXRpbyA9IDAuNTsKIAotUGFzc1JlZlB0cjxEcmF3aW5nQnVmZmVyPiBEcmF3aW5nQnVm
ZmVyOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNp
emUsIGJvb2wgc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkKK1Bhc3NSZWZQdHI8RHJhd2luZ0J1ZmZl
cj4gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25z
dCBJbnRTaXplJiBzaXplLCBQcmVzZXJ2ZURyYXdpbmdCdWZmZXIgcHJlc2VydmUsIEFscGhhUmVx
dWlyZW1lbnQgYWxwaGEpCiB7CiAgICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpOwogICAgIGJvb2wgbXVsdGlzYW1wbGVTdXBwb3J0ZWQgPSBleHRl
bnNpb25zLT5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpICYmIGV4dGVuc2lv
bnMtPnN1cHBvcnRzKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpICYmIGV4dGVu
c2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfcmdiOF9yZ2JhOCIpOwpAQCAtNjMsNyArNjMsNyBAQCBQ
YXNzUmVmUHRyPERyYXdpbmdCdWZmZXI+IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgY29ucwogICAgIGJvb2wgcGFja2VkRGVwdGhTdGVuY2lsU3VwcG9y
dGVkID0gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIp
OwogICAgIGlmIChwYWNrZWREZXB0aFN0ZW5jaWxTdXBwb3J0ZWQpCiAgICAgICAgIGV4dGVuc2lv
bnMtPmVuc3VyZUVuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwotICAgIFJl
ZlB0cjxEcmF3aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVyID0gYWRvcHRSZWYobmV3IERyYXdpbmdC
dWZmZXIoY29udGV4dCwgc2l6ZSwgbXVsdGlzYW1wbGVTdXBwb3J0ZWQsIHBhY2tlZERlcHRoU3Rl
bmNpbFN1cHBvcnRlZCwgc2VwYXJhdGVCYWNraW5nVGV4dHVyZSkpOworICAgIFJlZlB0cjxEcmF3
aW5nQnVmZmVyPiBkcmF3aW5nQnVmZmVyID0gYWRvcHRSZWYobmV3IERyYXdpbmdCdWZmZXIoY29u
dGV4dCwgc2l6ZSwgbXVsdGlzYW1wbGVTdXBwb3J0ZWQsIHBhY2tlZERlcHRoU3RlbmNpbFN1cHBv
cnRlZCwgcHJlc2VydmUsIGFscGhhKSk7CiAgICAgcmV0dXJuIChkcmF3aW5nQnVmZmVyLT5tX2Nv
bnRleHQpID8gZHJhd2luZ0J1ZmZlci5yZWxlYXNlKCkgOiAwOwogfQogCkBAIC04Myw5ICs4Myw5
IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6Y2xlYXIoKQogICAgICAgICBtX2NvbG9yQnVmZmVyID0g
MDsKICAgICB9CiAKLSAgICBpZiAobV9iYWNraW5nQ29sb3JCdWZmZXIpIHsKLSAgICAgICAgbV9j
b250ZXh0LT5kZWxldGVUZXh0dXJlKG1fYmFja2luZ0NvbG9yQnVmZmVyKTsKLSAgICAgICAgbV9i
YWNraW5nQ29sb3JCdWZmZXIgPSAwOworICAgIGlmIChtX2Zyb250Q29sb3JCdWZmZXIpIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKG1fZnJvbnRDb2xvckJ1ZmZlcik7CisgICAg
ICAgIG1fZnJvbnRDb2xvckJ1ZmZlciA9IDA7CiAgICAgfQogCiAgICAgaWYgKG1fbXVsdGlzYW1w
bGVDb2xvckJ1ZmZlcikgewpAQCAtMTcxLDMxICsxNzEsMjAgQEAgdm9pZCBEcmF3aW5nQnVmZmVy
OjpjbGVhckZyYW1lYnVmZmVyKCkKIHsKICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8gPyBtX211bHRp
c2FtcGxlRkJPIDogbV9mYm8pOwogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzID0gbV9jb250ZXh0LT5nZXRDb250ZXh0QXR0cmlidXRlcygpOwotICAg
IGZsb2F0IGNsZWFyRGVwdGggPSAwOwotICAgIGludCBjbGVhclN0ZW5jaWwgPSAwOwotICAgIHVu
c2lnbmVkIGNoYXIgZGVwdGhNYXNrID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgaW50IHN0ZW5jaWxN
YXNrID0gMHhmZmZmZmZmZjsKLSAgICB1bnNpZ25lZCBjaGFyIGlzU2Npc3NvckVuYWJsZWQgPSBm
YWxzZTsKICAgICB1bnNpZ25lZCBjbGVhck1hc2sgPSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1Jf
QlVGRkVSX0JJVDsKICAgICBpZiAoYXR0cmlidXRlcy5kZXB0aCkgewotICAgICAgICBtX2NvbnRl
eHQtPmdldEZsb2F0dihHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ0xFQVJfVkFMVUUsICZjbGVh
ckRlcHRoKTsKICAgICAgICAgbV9jb250ZXh0LT5jbGVhckRlcHRoKDEpOwotICAgICAgICBtX2Nv
bnRleHQtPmdldEJvb2xlYW52KEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9XUklURU1BU0ssICZk
ZXB0aE1hc2spOwogICAgICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayh0cnVlKTsKICAgICAgICAg
Y2xlYXJNYXNrIHw9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9CVUZGRVJfQklUOwogICAgIH0K
ICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0SW50
ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQ0xFQVJfVkFMVUUsICZjbGVhclN0ZW5j
aWwpOwogICAgICAgICBtX2NvbnRleHQtPmNsZWFyU3RlbmNpbCgwKTsKLSAgICAgICAgbV9jb250
ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9XUklURU1BU0ssIHJl
aW50ZXJwcmV0X2Nhc3Q8aW50Kj4oJnN0ZW5jaWxNYXNrKSk7CiAgICAgICAgIG1fY29udGV4dC0+
c3RlbmNpbE1hc2tTZXBhcmF0ZShHcmFwaGljc0NvbnRleHQzRDo6RlJPTlQsIDB4ZmZmZmZmZmYp
OwogICAgICAgICBjbGVhck1hc2sgfD0gR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQlVGRkVS
X0JJVDsKICAgICB9Ci0gICAgaXNTY2lzc29yRW5hYmxlZCA9IG1fY29udGV4dC0+aXNFbmFibGVk
KEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpOwogICAgIG1fY29udGV4dC0+ZGlzYWJs
ZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKTsKIAotICAgIGZsb2F0IGNsZWFyQ29s
b3JbNF07Ci0gICAgbV9jb250ZXh0LT5nZXRGbG9hdHYoR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9S
X0NMRUFSX1ZBTFVFLCBjbGVhckNvbG9yKTsKKyAgICBtX2NvbnRleHQtPmNvbG9yTWFzayh0cnVl
LCB0cnVlLCB0cnVlLCB0cnVlKTsKICAgICBtX2NvbnRleHQtPmNsZWFyQ29sb3IoMCwgMCwgMCwg
MCk7CiAgICAgbV9jb250ZXh0LT5jbGVhcihjbGVhck1hc2spOwogCkBAIC0yMDUsMjEgKzE5NCw2
IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6Y2xlYXJGcmFtZWJ1ZmZlcigpCiAgICAgICAgIG1fY29u
dGV4dC0+Y2xlYXIoR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQpOwogICAgICAg
ICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIG1fbXVsdGlzYW1wbGVGQk8pOwogICAgIH0KLQotICAgIG1fY29udGV4dC0+Y2xlYXJDb2xv
cihjbGVhckNvbG9yWzBdLCBjbGVhckNvbG9yWzFdLCBjbGVhckNvbG9yWzJdLCBjbGVhckNvbG9y
WzNdKTsKLQotICAgIGlmIChhdHRyaWJ1dGVzLmRlcHRoKSB7Ci0gICAgICAgIG1fY29udGV4dC0+
Y2xlYXJEZXB0aChjbGVhckRlcHRoKTsKLSAgICAgICAgbV9jb250ZXh0LT5kZXB0aE1hc2soZGVw
dGhNYXNrKTsKLSAgICB9Ci0gICAgaWYgKGF0dHJpYnV0ZXMuc3RlbmNpbCkgewotICAgICAgICBt
X2NvbnRleHQtPmNsZWFyU3RlbmNpbChjbGVhclN0ZW5jaWwpOwotICAgICAgICBtX2NvbnRleHQt
PnN0ZW5jaWxNYXNrU2VwYXJhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkZST05ULCBzdGVuY2lsTWFz
ayk7Ci0gICAgfQotICAgIGlmIChpc1NjaXNzb3JFbmFibGVkKQotICAgICAgICBtX2NvbnRleHQt
PmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKTsKLSAgICBlbHNlCi0gICAg
ICAgIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKTsK
IH0KIAogYm9vbCBEcmF3aW5nQnVmZmVyOjpyZXNldChjb25zdCBJbnRTaXplJiBuZXdTaXplKQpA
QCAtMzAxLDkgKzI3NSw5IEBAIGJvb2wgRHJhd2luZ0J1ZmZlcjo6cmVzZXQoY29uc3QgSW50U2l6
ZSYgbmV3U2l6ZSkKIAogICAgICAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUy
RChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xP
Ul9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY29sb3JCdWZm
ZXIsIDApOwogCi0gICAgICAgICAgICAvLyByZXNpemUgdGhlIGJhY2tpbmcgY29sb3IgYnVmZmVy
Ci0gICAgICAgICAgICBpZiAobV9zZXBhcmF0ZUJhY2tpbmdUZXh0dXJlKSB7Ci0gICAgICAgICAg
ICAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgbV9iYWNraW5nQ29sb3JCdWZmZXIpOworICAgICAgICAgICAgLy8gcmVzaXplIHRoZSBmcm9u
dCBjb2xvciBidWZmZXIKKyAgICAgICAgICAgIGlmIChtX3NlcGFyYXRlRnJvbnRUZXh0dXJlKSB7
CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgbV9mcm9udENvbG9yQnVmZmVyKTsKICAgICAgICAgICAgICAgICBtX2Nv
bnRleHQtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGludGVy
bmFsQ29sb3JGb3JtYXQsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIDAsIGNvbG9y
Rm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgMCk7CiAgICAgICAgICAg
ICB9CiAKQEAgLTM3NCw3ICszNDgsNyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gRHJhd2luZ0J1
ZmZlcjo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQogdm9pZCBEcmF3aW5nQnVm
ZmVyOjpkaXNjYXJkUmVzb3VyY2VzKCkKIHsKICAgICBtX2NvbG9yQnVmZmVyID0gMDsKLSAgICBt
X2JhY2tpbmdDb2xvckJ1ZmZlciA9IDA7CisgICAgbV9mcm9udENvbG9yQnVmZmVyID0gMDsKICAg
ICBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIgPSAwOwogCiAgICAgbV9kZXB0aFN0ZW5jaWxCdWZm
ZXIgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0RyYXdpbmdCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9E
cmF3aW5nQnVmZmVyLmgKaW5kZXggMDM5YWY1YzY4NmYzM2Q5MjIwY2Q3MzE1YmRlYTdkM2YwZGJh
ZjU5MC4uMjA0YmRmYTA2MWVlYzdjNjBkYWM2OGVlZTUzNmQxZDdhNmIxZTRhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5o
CkBAIC01NSwxMSArNTUsMjcgQEAgY2xhc3MgV2ViR0xMYXllckNocm9taXVtOwogLy8gcmVzdWx0
cyB0byBhIFBsYXRmb3JtTGF5ZXIgZm9yIGNvbXBvc2l0aW5nLgogY2xhc3MgRHJhd2luZ0J1ZmZl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPERyYXdpbmdCdWZmZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxEcmF3aW5nQnVmZmVyPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBj
b25zdCBJbnRTaXplJiwgYm9vbCk7CisgICAgZW51bSBQcmVzZXJ2ZURyYXdpbmdCdWZmZXIgewor
ICAgICAgICBQcmVzZXJ2ZSwKKyAgICAgICAgRGlzY2FyZAorICAgIH07CisKKyAgICBlbnVtIEFs
cGhhUmVxdWlyZW1lbnQgeworICAgICAgICBBbHBoYSwKKyAgICAgICAgT3BhcXVlCisgICAgfTsK
KworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERyYXdpbmdCdWZmZXI+IGNyZWF0ZShHcmFwaGljc0Nv
bnRleHQzRCosIGNvbnN0IEludFNpemUmLCBQcmVzZXJ2ZURyYXdpbmdCdWZmZXIsIEFscGhhUmVx
dWlyZW1lbnQpOwogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIAogICAgIH5E
cmF3aW5nQnVmZmVyKCk7CiAKKyAgICAvLyBDbGVhcnMgdGhlIERyYXdpbmdCdWZmZXIncyBmcmFt
ZWJ1ZmZlcihzKS4gSXMgZGVzdHJ1Y3RpdmUgb2YgdGhlIGZvbGxvd2luZyBzdGF0ZToKKyAgICAv
LyAqKSBmcmFtZWJ1ZmZlciBiaW5kaW5nCisgICAgLy8gKikgc2Npc3NvciB0ZXN0CisgICAgLy8g
Kikgc3RlbmNpbCBtYXNrCisgICAgLy8gKikgY2xlYXIgY29sb3IsIGRlcHRoLCBhbmQgc3RlbmNp
bAorICAgIC8vICopIGRlcHRoIGFuZCBjb2xvciBtYXNrCiAgICAgdm9pZCBjbGVhckZyYW1lYnVm
ZmVyKCk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGJ1ZmZlciB3YXMgc3VjY2Vzc2Z1
bGx5IHJlc2l6ZWQuCkBAIC05NSw3ICsxMTEsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIG11bHRp
c2FtcGxlKCkgY29uc3Q7CiAKLSAgICBQbGF0Zm9ybTNET2JqZWN0IHBsYXRmb3JtQ29sb3JCdWZm
ZXIoKSBjb25zdDsKICAgICBQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKCkgY29uc3Q7CiAK
ICAgICBQYXNzUmVmUHRyPEltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURh
dGEoKTsKQEAgLTEwNiw3ICsxMjEsOSBAQCBwdWJsaWM6CiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpOwotICAgIHZv
aWQgcHVibGlzaFRvUGxhdGZvcm1MYXllcigpOworICAgIHZvaWQgcHJlcGFyZUJhY2tCdWZmZXIo
KTsKKyAgICBib29sIHJlcXVpcmVzQ29weUZyb21CYWNrVG9Gcm9udEJ1ZmZlcigpIGNvbnN0Owor
ICAgIHVuc2lnbmVkIGZyb250Q29sb3JCdWZmZXIoKSBjb25zdDsKICAgICB2b2lkIHBhaW50Q29t
cG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0Kik7CiAjZW5kaWYK
IApAQCAtMTE0LDExICsxMzEsMTIgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIERyYXdpbmdC
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRTaXplJiwgYm9vbCBtdWx0aXNhbXBs
ZUV4dGVuc2lvblN1cHBvcnRlZCwKLSAgICAgICAgICAgICAgICAgIGJvb2wgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkLCBib29sIHNlcGFyYXRlQmFja2luZ1RleHR1cmUpOwor
ICAgICAgICAgICAgICAgICAgYm9vbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0
ZWQsIFByZXNlcnZlRHJhd2luZ0J1ZmZlciwgQWxwaGFSZXF1aXJlbWVudCk7CiAKICAgICB2b2lk
IGluaXRpYWxpemUoY29uc3QgSW50U2l6ZSYpOwogCi0gICAgYm9vbCBtX3NlcGFyYXRlQmFja2lu
Z1RleHR1cmU7CisgICAgUHJlc2VydmVEcmF3aW5nQnVmZmVyIG1fcHJlc2VydmVEcmF3aW5nQnVm
ZmVyOworICAgIEFscGhhUmVxdWlyZW1lbnQgbV9hbHBoYTsKICAgICBib29sIG1fc2Npc3NvckVu
YWJsZWQ7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX3RleHR1cmUyREJpbmRpbmc7CiAgICAgR0Mz
RGVudW0gbV9hY3RpdmVUZXh0dXJlVW5pdDsKQEAgLTEyOSw3ICsxNDcsOCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9wYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQ7CiAgICAgUGxh
dGZvcm0zRE9iamVjdCBtX2ZibzsKICAgICBQbGF0Zm9ybTNET2JqZWN0IG1fY29sb3JCdWZmZXI7
Ci0gICAgUGxhdGZvcm0zRE9iamVjdCBtX2JhY2tpbmdDb2xvckJ1ZmZlcjsKKyAgICBQbGF0Zm9y
bTNET2JqZWN0IG1fZnJvbnRDb2xvckJ1ZmZlcjsKKyAgICBib29sIG1fc2VwYXJhdGVGcm9udFRl
eHR1cmU7CiAKICAgICAvLyBUaGlzIGlzIHVzZWQgd2hlbiB3ZSBoYXZlIE9FU19wYWNrZWRfZGVw
dGhfc3RlbmNpbC4KICAgICBQbGF0Zm9ybTNET2JqZWN0IG1fZGVwdGhTdGVuY2lsQnVmZmVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3
aW5nQnVmZmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21h
Yy9EcmF3aW5nQnVmZmVyTWFjLm1tCmluZGV4IDNmZGE2YTMyNmJlMmMwZTUyMGM4M2IyOGI3ZjU1
NzBjNTVlYzM4NTkuLmRiMjg4ZDc3NGFlZjhjZDBkZDEyMzdkNmZmNjU2NTcxNzUyNDAzYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2lu
Z0J1ZmZlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bWFjL0RyYXdpbmdCdWZmZXJNYWMubW0KQEAgLTQwLDggKzQwLDEwIEBAIERyYXdpbmdCdWZmZXI6
OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIHNpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgbXVsdGlzYW1wbGVFeHRlbnNpb25TdXBwb3J0ZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9y
dGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlcGFyYXRlQmFja2luZ1Rl
eHR1cmUpCi0gICAgOiBtX3NlcGFyYXRlQmFja2luZ1RleHR1cmUoc2VwYXJhdGVCYWNraW5nVGV4
dHVyZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlc2VydmVEcmF3aW5nQnVmZmVy
IHByZXNlcnZlRHJhd2luZ0J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxw
aGFSZXF1aXJlbWVudCBhbHBoYSkKKyAgICA6IG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyKHByZXNl
cnZlRHJhd2luZ0J1ZmZlcikKKyAgICAsIG1fYWxwaGEoYWxwaGEpCiAgICAgLCBtX3NjaXNzb3JF
bmFibGVkKGZhbHNlKQogICAgICwgbV90ZXh0dXJlMkRCaW5kaW5nKDApCiAgICAgLCBtX2FjdGl2
ZVRleHR1cmVVbml0KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkKQEAgLTUxLDE1ICs1Mywx
NCBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LAogICAgICwgbV9wYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQocGFja2Vk
RGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkKQogICAgICwgbV9mYm8oY29udGV4dC0+Y3Jl
YXRlRnJhbWVidWZmZXIoKSkKICAgICAsIG1fY29sb3JCdWZmZXIoMCkKKyAgICAsIG1fZnJvbnRD
b2xvckJ1ZmZlcigwKQorICAgICwgbV9zZXBhcmF0ZUZyb250VGV4dHVyZShmYWxzZSkKICAgICAs
IG1fZGVwdGhTdGVuY2lsQnVmZmVyKDApCiAgICAgLCBtX2RlcHRoQnVmZmVyKDApCiAgICAgLCBt
X3N0ZW5jaWxCdWZmZXIoMCkKICAgICAsIG1fbXVsdGlzYW1wbGVGQk8oMCkKICAgICAsIG1fbXVs
dGlzYW1wbGVDb2xvckJ1ZmZlcigwKQogewotICAgIC8vIFN1cHBvcnQgZm9yIGEgc2VwYXJhdGUg
YmFja2luZyB0ZXh0dXJlIGhhcyBvbmx5IGJlZW4gZW5hYmxlZCBmb3IKLSAgICAvLyB0aGUgY2hy
b21pdW0gcG9ydC4KLSAgICBBU1NFUlQoIW1fc2VwYXJhdGVCYWNraW5nVGV4dHVyZSk7CiAgICAg
QVNTRVJUKG1fZmJvKTsKICAgICBpZiAoIW1fZmJvKSB7CiAgICAgICAgIGNsZWFyKCk7CkBAIC05
MiwxNiArOTMsMjcgQEAgRHJhd2luZ0J1ZmZlcjo6fkRyYXdpbmdCdWZmZXIoKQogICAgIGNsZWFy
KCk7CiB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBQbGF0Zm9ybUxheWVy
KiBEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkKIHsKICAgICByZXR1cm4gbV9wbGF0Zm9y
bUxheWVyLmdldCgpOwogfQogCi1QbGF0Zm9ybTNET2JqZWN0IERyYXdpbmdCdWZmZXI6OnBsYXRm
b3JtQ29sb3JCdWZmZXIoKSBjb25zdAordm9pZCBEcmF3aW5nQnVmZmVyOjpwcmVwYXJlQmFja0J1
ZmZlcigpCiB7Ci0gICAgcmV0dXJuIG1fY29sb3JCdWZmZXI7CiB9CiAKK2Jvb2wgRHJhd2luZ0J1
ZmZlcjo6cmVxdWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVmZmVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3Vuc2lnbmVkIERyYXdpbmdCdWZmZXI6OmZyb250Q29sb3JCdWZm
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBjb2xvckJ1ZmZlcigpOworfQorI2VuZGlmCisKIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvcXQvRHJhd2luZ0J1ZmZlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9xdC9EcmF3aW5nQnVmZmVyUXQuY3BwCmluZGV4IGE1OTJlZGNmNzZkNmFmYmM1NDk5
NzFjMzkyMDQzZWVjMzZkNjNlZGQuLjE0Y2Q1NjIzOTdiYWRjMjJlNGUyZTc1NDgzZDViM2RmMGFh
ZDYwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9x
dC9EcmF3aW5nQnVmZmVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9xdC9EcmF3aW5nQnVmZmVyUXQuY3BwCkBAIC0zNSw4ICszNSwxMCBAQCBEcmF3aW5n
QnVmZmVyOjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRTaXplJiBzaXplLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lv
blN1cHBvcnRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzZXBhcmF0ZUJh
Y2tpbmdUZXh0dXJlKQotICAgIDogbV9zZXBhcmF0ZUJhY2tpbmdUZXh0dXJlKHNlcGFyYXRlQmFj
a2luZ1RleHR1cmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNlcnZlRHJhd2lu
Z0J1ZmZlciBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFscGhhUmVxdWlyZW1lbnQgYWxwaGEpCisgICAgOiBtX3ByZXNlcnZlRHJhd2luZ0J1ZmZl
cihwcmVzZXJ2ZURyYXdpbmdCdWZmZXIpCisgICAgLCBtX2FscGhhKGFscGhhKQogICAgICwgbV9z
Y2lzc29yRW5hYmxlZChmYWxzZSkKICAgICAsIG1fdGV4dHVyZTJEQmluZGluZygwKQogICAgICwg
bV9hY3RpdmVUZXh0dXJlVW5pdChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApCkBAIC00Niwx
NSArNDgsMTQgQEAgRHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwKICAgICAsIG1fcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVk
KHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRlZCkKICAgICAsIG1fZmJvKGNvbnRl
eHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkpCiAgICAgLCBtX2NvbG9yQnVmZmVyKDApCisgICAgLCBt
X2Zyb250Q29sb3JCdWZmZXIoMCkKKyAgICAsIG1fc2VwYXJhdGVGcm9udFRleHR1cmUoZmFsc2Up
CiAgICAgLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcigwKQogICAgICwgbV9kZXB0aEJ1ZmZlcigwKQog
ICAgICwgbV9zdGVuY2lsQnVmZmVyKDApCiAgICAgLCBtX211bHRpc2FtcGxlRkJPKDApCiAgICAg
LCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIoMCkKIHsKLSAgICAvLyBTdXBwb3J0IGZvciBhIHNl
cGFyYXRlIGJhY2tpbmcgdGV4dHVyZSBoYXMgb25seSBiZWVuIGVuYWJsZWQgZm9yCi0gICAgLy8g
dGhlIGNocm9taXVtIHBvcnQuCi0gICAgQVNTRVJUKCFtX3NlcGFyYXRlQmFja2luZ1RleHR1cmUp
OwogICAgIEFTU0VSVChtX2Zibyk7CiAgICAgaWYgKCFtX2ZibykgewogICAgICAgICBjbGVhcigp
OwpAQCAtODQsMTQgKzg1LDIxIEBAIFBsYXRmb3JtTGF5ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRm
b3JtTGF5ZXIoKQogewogICAgIHJldHVybiAwOwogfQotI2VuZGlmCiAKLVBsYXRmb3JtM0RPYmpl
Y3QgRHJhd2luZ0J1ZmZlcjo6cGxhdGZvcm1Db2xvckJ1ZmZlcigpIGNvbnN0Cit2b2lkIERyYXdp
bmdCdWZmZXI6OnByZXBhcmVCYWNrQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gbV9jb2xvckJ1ZmZl
cjsKIH0KIAotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKK2Jvb2wgRHJhd2luZ0J1
ZmZlcjo6cmVxdWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVmZmVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3Vuc2lnbmVkIERyYXdpbmdCdWZmZXI6OmZyb250Q29sb3JCdWZm
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBjb2xvckJ1ZmZlcigpOworfQorCiB2b2lkIERyYXdp
bmdCdWZmZXI6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdD
b250ZXh0KiBjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9XZWJHTExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViR0xMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNjZlYTY5MGZhYjNmYjU0
YWE4MzJjOWEyYWE4MWNiOWM1OTMyMmIzYS4uNGIzZmQwMWU1OTc1NTNiMGI2NTFkZDA0YmZkY2Jk
OWNlMWM2NDE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJH
TExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1dlYkdMTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01MCwxNCArNTAsMTQgQEAgVEVTVChXZWJH
TExheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVGb3JtYXRzKQogICAgIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gb3BhcXVlQ29udGV4dCA9IGNyZWF0ZUNvbXBvc2l0b3JNb2NrR3JhcGhpY3NDb250
ZXh0M0Qob3BhcXVlQXR0cnMpOwogICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRleHQpOwogCi0g
ICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGFscGhhQ29udGV4dC5nZXQoKSwgSW50
U2l6ZSgpLCBmYWxzZSk7CisgICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKGFscGhh
Q29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCBEcmF3aW5nQnVmZmVyOjpQcmVzZXJ2ZSwgRHJhd2lu
Z0J1ZmZlcjo6QWxwaGEpOwogICAgIEVYUEVDVF9GQUxTRShidWZmZXItPnBsYXRmb3JtTGF5ZXIo
KS0+b3BhcXVlKCkpOwotICAgIGJ1ZmZlciA9IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShhbHBoYUNv
bnRleHQuZ2V0KCksIEludFNpemUoKSwgdHJ1ZSk7CisgICAgYnVmZmVyID0gRHJhd2luZ0J1ZmZl
cjo6Y3JlYXRlKGFscGhhQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCBEcmF3aW5nQnVmZmVyOjpE
aXNjYXJkLCBEcmF3aW5nQnVmZmVyOjpBbHBoYSk7CiAgICAgRVhQRUNUX0ZBTFNFKGJ1ZmZlci0+
cGxhdGZvcm1MYXllcigpLT5vcGFxdWUoKSk7CiAKLSAgICBidWZmZXIgPSBEcmF3aW5nQnVmZmVy
OjpjcmVhdGUob3BhcXVlQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgpLCBmYWxzZSk7CisgICAgYnVm
ZmVyID0gRHJhd2luZ0J1ZmZlcjo6Y3JlYXRlKG9wYXF1ZUNvbnRleHQuZ2V0KCksIEludFNpemUo
KSwgRHJhd2luZ0J1ZmZlcjo6UHJlc2VydmUsIERyYXdpbmdCdWZmZXI6Ok9wYXF1ZSk7CiAgICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5wbGF0Zm9ybUxheWVyKCktPm9wYXF1ZSgpKTsKLSAgICBidWZm
ZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUob3BhcXVlQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgp
LCB0cnVlKTsKKyAgICBidWZmZXIgPSBEcmF3aW5nQnVmZmVyOjpjcmVhdGUob3BhcXVlQ29udGV4
dC5nZXQoKSwgSW50U2l6ZSgpLCBEcmF3aW5nQnVmZmVyOjpEaXNjYXJkLCBEcmF3aW5nQnVmZmVy
OjpPcGFxdWUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+cGxhdGZvcm1MYXllcigpLT5vcGFx
dWUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCAyNDgxOGI4YzJiZTIwYWNmODU0N2I3MzE3MzE5MzY5MTA5ZDMz
YWZlLi4yY2JlZTEzNTE1OGQyMWQ1YzM0Zjg0Yzg0ZWRhZDEwZDI4ZGI4OWI3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTItMDQtMDUgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWJHTCBjb250ZW50IHN3YXBwZWQgYXQgd3JvbmcgdGltZSBpbiB0
aHJlYWRlZCBjb21wb3NpdGluZyBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MjI3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZHMgc29tZSBwaXhlbCB0ZXN0cyBmb3IgY29tcG9zaXRpbmcgYWxs
IGRpZmZlcmVudCBjb21iaW5hdGlvbnMgb2YgYWxwaGEvYW50aWFsaWFzL3ByZXNlcnZlRHJhd2lu
Z0J1ZmZlciBvbgorICAgICAgICBXZWJHTCBjb250ZW50LgorCisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvd2ViZ2wtY29tcG9zaXRlLW1vZGVzLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtY29tcG9zaXRlLW1vZGVzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtY29tcG9zaXRlLW1v
ZGVzLXJlcGFpbnQtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93
ZWJnbC93ZWJnbC1jb21wb3NpdGUtbW9kZXMtcmVwYWludC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy1yZXBhaW50
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0
ZS1tb2Rlcy5odG1sOiBBZGRlZC4KKwogMjAxMi0wNC0wNSAgTWFydGluIFJvYmluc29uICA8bXJv
Ymluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gU2Nyb2xsaW5nIHNvbWUgaWZyYW1l
cyB0aGF0IGFyZSBwYXJ0aWFsbHkgb3V0IG9mIHRoZSB2aWV3cG9ydCBsZWFkcyB0byByZXBhaW50
IGVycm9ycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wt
Y29tcG9zaXRlLW1vZGVzLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIxZDQy
MWE1NzY0ZjFmYjVjNDQwZmFlZmY0MWYzNTI2NjA5ZWU2OQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgNDM2Nwp6Y21lSExZZk9fQDcoTnlkMWkyXzt5O01aV2E3SFB1N3BRe3UyNFRicTRwaTh6ZlQo
bTRySmFEWjxJPntIbHhaTXAKejZyPDNOPXdjPl9iITF3I3FvM09keEh7QSZDYEIkK25IM1ApTFYk
K1difDNNcD1rPF5KIXp9eTN1YiVVcl9qfUlzCnp5eXJSM20kWjBPWV96QlFFTyYmRVhVdTFqQGQh
QnVBVmY9WXFtZlZpcnVpKShlLT5zKEMxdm1ZWVdMMkp0ZWt4KQp6RW89b2xKdVFeOFl6ZHBRQllv
Rzc3MGMyPm0hYDhneUxQaSNZIS0pSWRfUTwwTE96dS1rIXZATCVLT15hbWRybHYKejd4aUdQP3Z3
QjsjWXB3IXNoclRlcnshbk1jM3RmJEtSeiQrTlNJbDlZM28mV0xCNGYoMCRRVV94bmQpPzxPZURj
CnpOfjN3OGZTfl9xcHcxdUF0R1BvN3NJN00tUUclcCklVkd0VyVkSn53Tktqb2pUc3kxWCE+XkpM
eWxTM3tiUnBJdwp6Snw5TUdfKj1uI2QqJGw3UDtLcjtkKkhVZHl9IzdANWsmPmQ2KmwxQGVZNFVX
SGlsWXA4SXxiIWlKTiFvSkU+YE0KejU0JE1tPFdZNVBiSk4hRlo0KTlpekR+VkNiamV1aGZvbjk4
R3x+MHBNeTczU3QjN1ozUGAtWDVuNm1RWjVHcXFWCnoyJlBnXl98RFkhdUJRZikyI0hPYztzcSUo
MmUhQTIwZz0+JUByQ3FDamNxQmwrUmZ1Q2MqQTNSd3JicnU9UUNWUwp6WXc5UlUzdiEraWA/YX5g
IVhFeDJvdkxQNTY0T0hRRFFfTD5uNGtVN3V8e0pLSjhPMVIlQV5efV98ekxPOW94KzsKem8zeXlC
ZlJhX3lITEt7S3BCPkVWYz4jRURyN1NAbV5gaEZid3h3Y1o1fmV+d0BIZTIrK0I1QEc7ZE9NPS10
M0s8Cnpyc0VaKCRASTFDeD85QiVyQWArWVlyLV48dD49eyFlJG4+KUZFR20jPit5Y2xJTXFIWmh8
cVQhZ1Yqc0xpcCZjUAp6S3MlWiFAV1RXWVZtVXozb14hXjZ0akJXUWE5aGtWNFRWU1ZmOG5yM1Re
QTlEOD42YyMwaTcyZlVPeTRUd0NQMi0KenBDfnN4M0ctYUBnZTkxPXZYP3JCSFRvRjxHOVg2Xmhf
ek0kPF5ILUswYjs0P0NNWX5DdUhTYTNYX1dHU0YqUXpkCnpAWGNZTyh2ZGIkZFFwXnlzU3ZkaGkt
NFlEKjtMI2tCaE1SM1Brd1M3QFlGXjUhfURCTzNhbGpoJHJiY2RfMm5GbAp6RE1hbW5yKk9zdFUp
KlpXaVRRdl5ZUUdtKWwzOVMweXQrJChwN1chN2ZTI2dOMUchVVpoPEFkWnAoQiRQQms3cnMKekct
d0h0K3BpZXpTKjhpQHl9dE95OG0+b21yK2shNSt0QCEhLTZwKXclVkJNKW8xfiFVQjJ0en5TYGVl
citqamdgCnojYDAwWXY5bFJGJG93ZSRVaFBZM2NwN35PQSRFfXFeNl5jMj1pdXR4e0Y0XiUwe2Uq
Rl9VeTVzSWVKQWYzXjhORgp6RGY/Mm9KJjFae1lNWVozY0VlMkJpckJEPDQ0M15URGhRLX1hVDxz
bzxaYkskIUchdj04c1JrRTswdkxHMV4hP3YKejYhUnhucFd8N255UUA1KmFlbGI1JkxmV3NsR3J+
RF5SdTsqQDJLM1coMTZfSFhaUFdnKF9MVVB1cnRhWlpOWGxiCnpDZnc9KEtIKEFkR0pNOEQmcVF9
QDRkJH5ZXypSZ0s4aStsbEptVWQ7XyRhRmZCIyFkWkFvbihvKEJFUmdNZG0lOAp6Mzgta294OHVE
REUkfGB2ZVFGdzxVUm1vJVckVEBWZkZfYWhzfDM4KnNTPC0odW1NT243R0wrb2czTjhSPnV9bTQK
emRzak9JKW07VnpMZGohIzZhMXthbGVvODF4eWNLKzErRElHMGZ8R0RHMFkmcl5QNH0lYSM2cHE1
eGBnJkEtSkVxCnpPamklZ15IYXVpNVZrS0UmajkyRkZDUj43UShne0c/eGIxPDVaVEZlVHhldW41
ck00cmY3dU5LJDBWQiNOfmd0NQp6IyNCVjdgN1N0bEJPV0F4OT81IWRMK09obTFeYGMwPEx7c31T
PGVQTjNtSmsqb0N1VEg+eFZxUig8fF5CNVZxMHIKeno7bGVkP0V0WU1EK00lU1VpJWNSTjRQbCFT
YihGNXdsVVdzPjR2SEFqKXhENGtoZzByIXpSPD8lZDcxfStQVGc7CnpyZG1EZmdzaHoqYV9meCo3
aTVlb2pDNlolQil5SUlwOE9nd3tANGROLXRoTi1IT0V+eT96LV9EYCt3ZzhpI01JXgpXZjU0T0hv
a2psTGZNVEx6Qld1PkI5e2Q7R1F0K3coCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1jb21wb3NpdGUtbW9kZXMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtY29tcG9z
aXRlLW1vZGVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2YyNThmM2U5ODc0N2E5N2FlYzQx
MGQ2Mzc4NjMwZjhiMzAzMTI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvd2ViZ2wtY29tcG9zaXRlLW1vZGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDMgQEAKK1RoaXMgdGVzdCBpcyBvbmx5IHVzZWZ1bCBhcyBhIHBpeGVsIHRlc3QuIFlvdSBzaG91
bGQgc2VlIHR3byByb3dzIHdpdGggNCBjYW52YXNlcyBpbiBlYWNoLiBUaGUgdG9wIHJvdyBvZiBj
YW52YXNlcyBzaG91bGQgaGF2ZSBhIGJsYWNrIGJhY2tncm91bmQsIHRoZSBib3R0b20gcm93IHNo
b3VsZCBoYXZlIGEgZGFyayBibHVlIGJhY2tncm91bmQuIEVhY2ggY2FudmFzIHNob3VsZCBoYXZl
IGEgZ3JlZW4gdHJpYW5nbGUgaW4gaXQuIElmIG11bHRpc2FtcGxpbmcgaXMgc3VwcG9ydGVkLCB0
aGUgb2RkIGNvbHVtbnMgc2hvdWxkIGhhdmUgc21vb3RoIGVkZ2VzIGluc3RlYWQgb2YgamFnZ2Vk
IHN0YWlyLXN0ZXBwaW5nLiBPdGhlcndpc2UsIGFsbCBjYW52YXNlcyB3aXRoaW4gYSByb3cgc2hv
dWxkIGJlIGlkZW50aWNhbCB0byBlYWNoIG90aGVyLgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy1yZXBhaW50LWV4cGVj
dGVkLnBuZyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0ZS1t
b2Rlcy1yZXBhaW50LWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTJhYTJkYWM0MTZlZmFiZGY5
ZjY1ZWIxMTgyZjRmOTc5M2U3ZWIwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzOTcxCnpjbWVB
U0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29U
bX07cAp6NlRfdEJsb1YzfmdIJDYrVi1xOGpXTWZtS01CXmxMdnk+RHwzdiZ6cTF4Z0dJe0d5Jk5q
dipDdS1yaFl9SDJiTkwKell2OWk/SVpHU1lQdjtVM3MyKWt4JSM2R3A2I1lMK1M8QT1vPnd7IXY8
PENWe3dicU9iN2s9SmYlK0ExSUJpK2MjCnpBUnJ2VXorZ3h4I195dHM9bDk8JFdqKE5WcE00ZD5m
cUZnR1ljRVR4Y0had2d8RiU4NGNqd2hQKFhtZ0QxRCY/Iwp6ayRWZXF1RylEMmtKQCt0N3RpJkp6
ZSNXU3BZZVJ7bnB2Qjw1O2l7UFN+TElMemtLNjhLaG9kc25IcExnI2B4eSoKemxFJV8kO2BNbkRC
QFkoJWlBMURWZXRjZWJANjs7RyllUF5SZW42M0M9MiZCPnxMQE1aPXQkRmEoRjNfRypLK0dCCno/
ako5Xm0tWEMhXldDZz5eRiNVUEdrJXpMcHZuQilHP3coOHE2YU1ORV4wNzFfI2BrZzlBT2NvSXdS
Jj1rPTAoQwp6cz5BNkkheDs3cEw9LWZ9JXFaNHd4WHZPclhSKll5SjZzUVY4KEglOytBT3ktUy0y
LTAlPGY3JngwWFJxQW1SaH0KelFHQDRVNEFXflh6Y0FjeilIPyVvPUtMUWwrIy1pZj97Rm5KQm90
UDNCPzNkRVkjbWRkWl5HU1VyfHFfWDRodVVRCnokIWVnc0FANCF6e00oaDx0RG1pNStSPThQTj8t
cHNFRmBBWmJicUx0X2pUdm8/VkdhQlgqSEM4PGgoWEAmem9aRgp6e000JitMSyl0eFpkbXNhcHwk
YVYpYU9tLXAlSE0kRSNZaiVPO352NnNjbTNHPXdyUkZeaGZ2bkZRX0ZCJEpIYUkKelNIaEpCRn0t
R2pKSFd2PVZlVnRONEw9eHxVaH40YDRqZFBWU2RZK1cqT00+IUBBUEp2dz59KUtYKTNqdnlYVmRJ
Cno4eFd1VXM5LXZNeH4+PU1saWUwSTI/KUxLcDVBREQzYiRzKlZyS1NmKGAjVyNYQ0wyQlRfP0N9
ND1Cc0w3dUc+SQp6cUZGe34xSHh6aCNZK3grZmBAXzRsfC1QT2EySTc5PVJuZlBicDlXKnV+UG5q
SVQ0bTdPbiVPYnF9SXFeRGtBUDEKekVFYTAjODZzSiFaNXhaXmxXa1Mma1F8YCVFZTRwP0gjOGh6
Vig4JTFWUTgyXkNCfXtFcnxWeEl7fkswUW0xcGBxCnp0VD5QTEx1NCUxbilsX2dqMF8pS3smV2Ex
RDV6fjxVYFUhPz1rbncwSSZGciRyfWpBdlZuNUg7S1k2IVI+WCo5UAp6LTBWWVpwV1MoLV4+NDFn
amlkYj5qMHtPayspeW9lODJmK3Z6TUZyY2ZCKFAjO2A7YUhjMEQkUk1yXzJKb2xMS24KeiZ0THkl
SnZGb2NwVkYkSXpnYEg9S1hOWW0/VnQyKihQI2Z8JlUoMUJBejMpJCE/QnhfOV9Sb3ctKko1QFJf
Y1o7CnpRdjVXWGpAdmdrWmw3KHs1JXRraFY2K3FmUlpEfWU2Z2Q2eiVpQkJpPi1UO2FYcWE3N3xB
bkY5ZjZkTWgmKnkwfAp6Rz9hZipjQXtRIWdPbnwoVCMke0xPdlBHWkclIWE0bFY8aGRYdlV7bj51
czNqKDtONGpPR1REYGp8biNoX05vfj8KTVVIeDN2SVZDZyEwTzsrfVEyK257CgpsaXRlcmFsIDAK
SGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93
ZWJnbC1jb21wb3NpdGUtbW9kZXMtcmVwYWludC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1jb21wb3NpdGUtbW9kZXMtcmVwYWludC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWY0Y2U5Mzc4ZTdiNTEwNTJlMmNjYTdmZGI1MjNlZDRiMzljMzEzNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWNv
bXBvc2l0ZS1tb2Rlcy1yZXBhaW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMg
dGVzdCBpcyBvbmx5IHVzZWZ1bCBhcyBhIHBpeGVsIHRlc3QuIFlvdSBzaG91bGQgc2VlIHR3byBy
b3dzIHdpdGggNCBjYW52YXNlcyBpbiBlYWNoLiBUaGUgdG9wIHJvdyBvZiBjYW52YXNlcyBzaG91
bGQgaGF2ZSBhIGJsYWNrIGJhY2tncm91bmQsIHRoZSBib3R0b20gcm93IHNob3VsZCBoYXZlIGEg
ZGFyayBibHVlIGJhY2tncm91bmQuIFRoZSBjYW52YXNlcyBpbiB0aGUgZmlyc3QgdHdvIHJvd3Mg
c2hvdWxkIGhhdmUgYSBzaW5nbGUgdHJpYW5nbGUuIFRoZSBjYW52YXNlcyBvbiB0aGUgbGVmdCBz
aG91bGQgaGF2ZSB0d28gdHJpYW5nbGVzIHN1cGVyaW1wb3NlZCBvbiB0b3Agb2YgZWFjaCBvdGhl
ci4gSWYgbXVsdGlzYW1wbGluZyBpcyBzdXBwb3J0ZWQsIHRoZSBvZGQgY29sdW1ucyBzaG91bGQg
aGF2ZSBzbW9vdGggZWRnZXMgaW5zdGVhZCBvZiBqYWdnZWQgc3RhaXItc3RlcHBpbmcuCisKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtY29tcG9zaXRl
LW1vZGVzLXJlcGFpbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmds
LWNvbXBvc2l0ZS1tb2Rlcy1yZXBhaW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQxNjg5NWFiZTA3NTkw
ZjAyMDA2NjBiNWUxOWI0YzY0YzIxYjEyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy1yZXBhaW50Lmh0bWwKQEAg
LTAsMCArMSwxMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHkgb25sb2FkPSJydW5SZXBhaW50
VGVzdCgpIj4KKzxzcGFuIGlkPSJkZXNjcmlwdGlvbiIgc3R5bGU9ImNvbG9yOiB3aGl0ZSI+CitU
aGlzIHRlc3QgaXMgb25seSB1c2VmdWwgYXMgYSBwaXhlbCB0ZXN0LiBZb3Ugc2hvdWxkIHNlZSB0
d28gcm93cyB3aXRoIDQgY2FudmFzZXMgaW4gZWFjaC4gVGhlIHRvcCByb3cgb2YgY2FudmFzZXMg
c2hvdWxkIGhhdmUgYSBibGFjayBiYWNrZ3JvdW5kLCB0aGUgYm90dG9tIHJvdyBzaG91bGQgaGF2
ZSBhIGRhcmsgYmx1ZSBiYWNrZ3JvdW5kLgorVGhlIGNhbnZhc2VzIGluIHRoZSBmaXJzdCB0d28g
cm93cyBzaG91bGQgaGF2ZSBhIHNpbmdsZSB0cmlhbmdsZS4gVGhlIGNhbnZhc2VzIG9uIHRoZSBs
ZWZ0IHNob3VsZCBoYXZlIHR3byB0cmlhbmdsZXMgc3VwZXJpbXBvc2VkIG9uIHRvcCBvZiBlYWNo
IG90aGVyLgorSWYgbXVsdGlzYW1wbGluZyBpcyBzdXBwb3J0ZWQsIHRoZSBvZGQgY29sdW1ucyBz
aG91bGQgaGF2ZSBzbW9vdGggZWRnZXMgaW5zdGVhZCBvZiBqYWdnZWQgc3RhaXItc3RlcHBpbmcu
Cis8L3NwYW4+Cis8YnI+Cis8c3R5bGU+CitjYW52YXMgeworICAgIG91dGxpbmU6IDFweCBzb2xp
ZCBibHVlOworfQorYm9keSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2JsdWU7Cit9Cis8
L3N0eWxlPgorPHNjcmlwdCBpZD0iMmQtZnJhZ21lbnQtc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94
LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit1bmlmb3JtIHZlYzQgdV9j
b2xvcjsKKwordm9pZCBtYWluKCkgeworICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9yOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0IGlkPSIyZC12ZXJ0ZXgtc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZl
cnRleCI+CithdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uOworCit1bmlmb3JtIHZlYzIgdV9yZXNv
bHV0aW9uOworCit2b2lkIG1haW4oKSB7CisgICAvLyBjb252ZXJ0IHRoZSByZWN0YW5nbGUgZnJv
bSBwaXhlbHMgdG8gMC4wIHRvIDEuMAorICAgdmVjMiB6ZXJvVG9PbmUgPSBhX3Bvc2l0aW9uIC8g
dV9yZXNvbHV0aW9uOworCisgICAvLyBjb252ZXJ0IGZyb20gMC0+MSB0byAwLT4yCisgICB2ZWMy
IHplcm9Ub1R3byA9IHplcm9Ub09uZSAqIDIuMDsKKworICAgLy8gY29udmVydCBmcm9tIDAtPjIg
dG8gLTEtPisxIChjbGlwc3BhY2UpCisgICB2ZWMyIGNsaXBTcGFjZSA9IHplcm9Ub1R3byAtIDEu
MDsKKworICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGNsaXBTcGFjZSAqIHZlYzIoMSwgLTEpLCAwLCAx
KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXBhaW50L3Jlc291cmNlcy9yZXBh
aW50LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3ZhciBjdHhzID0gW10KKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJy
aWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJkZXNjcmlwdGlvbiIpLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZGVzY3JpcHRpb24iKS5zdHlsZS50b3AgPSAiLTUwMDBweCI7Cit9
CisKK2ZvciAodmFyIGk9MDsgaTw4OyArK2kpIHsKKyAgICB2YXIgYXR0cnMgPSB7CisgICAgICAg
ICdhbHBoYSc6IChpID49IDQpLAorICAgICAgICAncHJlc2VydmVEcmF3aW5nQnVmZmVyJzogKGkg
JSA0KSA+PSAyLAorICAgICAgICAnYW50aWFsaWFzJzogKGkgJSAyKSA9PSAxCisgICAgfTsKKyAg
ICB2YXIgY2FuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAgY2FuLndp
ZHRoID0gY2FuLmhlaWdodCA9IDEwMDsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNh
bik7CisgICAgaWYgKGkgPT0gMykKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsKKyAgICBjdHhzW2ldID0gY2FuLmdldENvbnRl
eHQoImV4cGVyaW1lbnRhbC13ZWJnbCIsIGF0dHJzKTsKKyAgICBzZXR1cChjdHhzW2ldKTsKK30K
KworZnVuY3Rpb24gc2V0dXAoZ2wpIHsKKyAgICAvLyBzZXR1cCBhIEdMU0wgcHJvZ3JhbQorICAg
IHZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKKyAgICB2YXIgdmVydGV4U2hhZGVyID0gV2ViR0xU
ZXN0VXRpbHMubG9hZFNoYWRlckZyb21TY3JpcHQoZ2wsICIyZC12ZXJ0ZXgtc2hhZGVyIik7Cisg
ICAgdmFyIGZyYWdtZW50U2hhZGVyID0gV2ViR0xUZXN0VXRpbHMubG9hZFNoYWRlckZyb21TY3Jp
cHQoZ2wsICIyZC1mcmFnbWVudC1zaGFkZXIiKTsKKyAgICB2YXIgcHJvZ3JhbSA9IGdsLmNyZWF0
ZVByb2dyYW0oKTsKKyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgdmVydGV4U2hhZGVyLCBn
bC5WRVJURVhfU0hBREVSKTsKKyAgICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgZnJhZ21lbnRT
aGFkZXIsIGdsLkZSQUdNRU5UX1NIQURFUik7CisgICAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7
CisgICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIC8vIGxvb2sgdXAgd2hlcmUgdGhl
IHZlcnRleCBkYXRhIG5lZWRzIHRvIGdvLgorICAgIGdsLm15UG9zaXRpb25Mb2NhdGlvbiA9IGds
LmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJhX3Bvc2l0aW9uIik7CisKKyAgICAvLyBzZXQg
dGhlIHJlc29sdXRpb24KKyAgICB2YXIgcmVzb2x1dGlvbkxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJ1X3Jlc29sdXRpb24iKTsKKyAgICBnbC51bmlmb3JtMmYocmVz
b2x1dGlvbkxvY2F0aW9uLCAxMDAsIDEwMCk7CisKKyAgICB2YXIgY29sb3JMb2NhdGlvbiA9IGds
LmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidV9jb2xvciIpOworICAgIGdsLnVuaWZvcm00
Zihjb2xvckxvY2F0aW9uLCAwLCAxLCAwLCAxKTsKK30KKworZnVuY3Rpb24gZHJhdyhnbCwgb2Zm
c2V0KSB7CisgICAgdmFyIGJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRC
dWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJS
QVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgICAgODAgKyBvZmZzZXQsIDIwLAor
ICAgICAgICAxMCArIG9mZnNldCwgMTAsCisgICAgICAgIDEwICsgb2Zmc2V0LCA4MF0pLCBnbC5T
VEFUSUNfRFJBVyk7CisKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShnbC5teVBvc2l0
aW9uTG9jYXRpb24pOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoZ2wubXlQb3NpdGlvbkxv
Y2F0aW9uLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgLy8gZHJhdworICAgIGds
LmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCAzKTsKK30KKworZnVuY3Rpb24gZHJhd0FsbChv
ZmZzZXQpIHsKKyAgICBmb3IgKHZhciBpPTA7IGk8ODsgKytpKQorICAgICAgICBkcmF3KGN0eHNb
aV0sIG9mZnNldCk7Cit9CisKK2RyYXdBbGwoMCk7CisKK2Z1bmN0aW9uIHJlcGFpbnRUZXN0KCkg
eworICAgIGRyYXdBbGwoNTApOworfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1jb21wb3NpdGUtbW9kZXMuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsLWNvbXBvc2l0ZS1tb2Rlcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY3OGY4MjA5Y2Q5OWYxNzJjYzgxMmFmMGU3ZmE2MjQxYjVhZWRlNDQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC1jb21wb3NpdGUtbW9k
ZXMuaHRtbApAQCAtMCwwICsxLDEwNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKzxzcGFu
IGlkPSJkZXNjcmlwdGlvbiIgc3R5bGU9ImNvbG9yOiB3aGl0ZSI+CitUaGlzIHRlc3QgaXMgb25s
eSB1c2VmdWwgYXMgYSBwaXhlbCB0ZXN0LiBZb3Ugc2hvdWxkIHNlZSB0d28gcm93cyB3aXRoIDQg
Y2FudmFzZXMgaW4gZWFjaC4gVGhlIHRvcCByb3cgb2YgY2FudmFzZXMgc2hvdWxkIGhhdmUgYSBi
bGFjayBiYWNrZ3JvdW5kLCB0aGUgYm90dG9tIHJvdyBzaG91bGQgaGF2ZSBhIGRhcmsgYmx1ZSBi
YWNrZ3JvdW5kLgorRWFjaCBjYW52YXMgc2hvdWxkIGhhdmUgYSBncmVlbiB0cmlhbmdsZSBpbiBp
dC4gSWYgbXVsdGlzYW1wbGluZyBpcyBzdXBwb3J0ZWQsIHRoZSBvZGQgY29sdW1ucyBzaG91bGQg
aGF2ZSBzbW9vdGggZWRnZXMgaW5zdGVhZCBvZiBqYWdnZWQgc3RhaXItc3RlcHBpbmcuIE90aGVy
d2lzZSwgYWxsIGNhbnZhc2VzIHdpdGhpbiBhIHJvdyBzaG91bGQgYmUgaWRlbnRpY2FsIHRvIGVh
Y2ggb3RoZXIuCis8L3NwYW4+Cis8YnI+Cis8c3R5bGU+CitjYW52YXMgeworICAgIG91dGxpbmU6
IDFweCBzb2xpZCBibHVlOworfQorYm9keSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2Js
dWU7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBpZD0iMmQtZnJhZ21lbnQtc2hhZGVyIiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCit1bmlmb3Jt
IHZlYzQgdV9jb2xvcjsKKwordm9pZCBtYWluKCkgeworICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9y
OworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSIyZC12ZXJ0ZXgtc2hhZGVyIiB0eXBlPSJ4LXNo
YWRlci94LXZlcnRleCI+CithdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uOworCit1bmlmb3JtIHZl
YzIgdV9yZXNvbHV0aW9uOworCit2b2lkIG1haW4oKSB7CisgICAvLyBjb252ZXJ0IHRoZSByZWN0
YW5nbGUgZnJvbSBwaXhlbHMgdG8gMC4wIHRvIDEuMAorICAgdmVjMiB6ZXJvVG9PbmUgPSBhX3Bv
c2l0aW9uIC8gdV9yZXNvbHV0aW9uOworCisgICAvLyBjb252ZXJ0IGZyb20gMC0+MSB0byAwLT4y
CisgICB2ZWMyIHplcm9Ub1R3byA9IHplcm9Ub09uZSAqIDIuMDsKKworICAgLy8gY29udmVydCBm
cm9tIDAtPjIgdG8gLTEtPisxIChjbGlwc3BhY2UpCisgICB2ZWMyIGNsaXBTcGFjZSA9IHplcm9U
b1R3byAtIDEuMDsKKworICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGNsaXBTcGFjZSAqIHZlYzIoMSwg
LTEpLCAwLCAxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3ZhciBjdHhzID0gW10KKworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkZXNjcmlwdGlvbiIpLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzY3JpcHRpb24iKS5zdHlsZS50b3AgPSAiLTUwMDBw
eCI7Cit9CisKK2ZvciAodmFyIGk9MDsgaTw4OyArK2kpIHsKKyAgICB2YXIgYXR0cnMgPSB7Cisg
ICAgICAgICdhbHBoYSc6IChpID49IDQpLAorICAgICAgICAncHJlc2VydmVEcmF3aW5nQnVmZmVy
JzogKGkgJSA0KSA+PSAyLAorICAgICAgICAnYW50aWFsaWFzJzogKGkgJSAyKSA9PSAxCisgICAg
fTsKKyAgICB2YXIgY2FuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAg
Y2FuLndpZHRoID0gY2FuLmhlaWdodCA9IDEwMDsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGNhbik7CisgICAgaWYgKGkgPT0gMykKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsKKyAgICBjdHhzW2ldID0gY2FuLmdl
dENvbnRleHQoImV4cGVyaW1lbnRhbC13ZWJnbCIsIGF0dHJzKTsKKyAgICBzZXR1cChjdHhzW2ld
KTsKKyAgICBkcmF3KGN0eHNbaV0pOworfQorCitmdW5jdGlvbiBzZXR1cChnbCkgeworICAgIC8v
IHNldHVwIGEgR0xTTCBwcm9ncmFtCisgICAgdmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOworICAg
IHZhciB2ZXJ0ZXhTaGFkZXIgPSBXZWJHTFRlc3RVdGlscy5sb2FkU2hhZGVyRnJvbVNjcmlwdChn
bCwgIjJkLXZlcnRleC1zaGFkZXIiKTsKKyAgICB2YXIgZnJhZ21lbnRTaGFkZXIgPSBXZWJHTFRl
c3RVdGlscy5sb2FkU2hhZGVyRnJvbVNjcmlwdChnbCwgIjJkLWZyYWdtZW50LXNoYWRlciIpOwor
ICAgIHZhciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgIGdsLmF0dGFjaFNoYWRl
cihwcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIsIGdsLlZFUlRFWF9TSEFERVIpOworICAgIGdsLmF0dGFj
aFNoYWRlcihwcm9ncmFtLCBmcmFnbWVudFNoYWRlciwgZ2wuRlJBR01FTlRfU0hBREVSKTsKKyAg
ICBnbC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOwor
CisgICAgLy8gbG9vayB1cCB3aGVyZSB0aGUgdmVydGV4IGRhdGEgbmVlZHMgdG8gZ28uCisgICAg
Z2wubXlQb3NpdGlvbkxvY2F0aW9uID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgImFf
cG9zaXRpb24iKTsKKworICAgIC8vIHNldCB0aGUgcmVzb2x1dGlvbgorICAgIHZhciByZXNvbHV0
aW9uTG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfcmVzb2x1dGlv
biIpOworICAgIGdsLnVuaWZvcm0yZihyZXNvbHV0aW9uTG9jYXRpb24sIDEwMCwgMTAwKTsKKwor
ICAgIHZhciBjb2xvckxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1
X2NvbG9yIik7CisgICAgZ2wudW5pZm9ybTRmKGNvbG9yTG9jYXRpb24sIDAsIDEsIDAsIDEpOwor
fQorCitmdW5jdGlvbiBkcmF3KGdsKSB7CisgICAgdmFyIGJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZl
cigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXIpOworICAgIGds
LmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsKKyAgICAgICAg
ODAsIDIwLAorICAgICAgICAxMCwgMTAsCisgICAgICAgIDEwLCA4MF0pLCBnbC5TVEFUSUNfRFJB
Vyk7CisKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShnbC5teVBvc2l0aW9uTG9jYXRp
b24pOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoZ2wubXlQb3NpdGlvbkxvY2F0aW9uLCAy
LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgLy8gZHJhdworICAgIGdsLmRyYXdBcnJh
eXMoZ2wuVFJJQU5HTEVTLCAwLCAzKTsKK30KKzwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="140717"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>