<?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>203148</bug_id>
          
          <creation_ts>2019-10-18 02:43:07 -0700</creation_ts>
          <short_desc>texImage2d fails to set same video frame to multiple textures</short_desc>
          <delta_ts>2022-02-28 02:22:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>Safari 13</version>
          <rep_platform>All</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=231031</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Taylor">simontaylor1</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>evodabas</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>justin_fan</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>marcus.stenbeck</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1581363</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Taylor">simontaylor1</who>
    <bug_when>2019-10-18 02:43:07 -0700</bug_when>
    <thetext>Code such as this in a requestAnimationFrame callback usually results in only the first bound texture being updated:
  
  // video is a HTMLVideoElement
  
  // Update tex1        
  gl.bindTexture(gl.TEXTURE_2D, tex1);
  gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, video);
  
  // Update tex2 immediately
  gl.bindTexture(gl.TEXTURE_2D, tex2);
  gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, video);

It looks like WebKit has an optimisation to skip updating a WebGL texture from a video if the frame hasn&apos;t changed since the previous texImage2d call.

This is a welcome optimisation but it appears not to verify that the currently bound texture is the same one that was bound for the previous call. There are other cases that should also prevent this optimization (I have not tested these), such as any other glTex[Sub]Image having being called since the last frame upload, the texture having been used as a draw buffer in a Framebuffer object, and perhaps others.

Effectively I suppose the test should be something like:
bool canSkipUpload = (lastWriteActionToBoundTexId == videoUpload &amp;&amp; lastVideoUploadFrameToBoundTexId == video.currentFrame);

One use-case for uploading the same video to different textures is to implement pipelined processing of the data in the frame, alternating the texture used for the upload each frame. Something like this:

===
rAF #1:
upload frame 1 to tex 1
start processing data in tex 1

rAF #2:
upload frame 2 to tex 2
start processing data in tex 2
render from tex 1 (frame 1) along with processed result

rAF #3:
upload frame 3 to tex 1
start processing data in tex 1
render from tex 2 (frame 2) along with processed result

etc...

===

Clearly it would also be nice to have an API to query whether the frame has changed before doing the upload, so the whole repeated &quot;upload and process&quot; step can be skipped, but that&apos;s a separate issue. I can at least rate-limit the uploads to approximate that, but still need the guarantee that the texture will actually be updated even if the bound texture is different and the frame happens to be the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581367</commentid>
    <comment_count>1</comment_count>
      <attachid>381291</attachid>
    <who name="Simon Taylor">simontaylor1</who>
    <bug_when>2019-10-18 03:05:15 -0700</bug_when>
    <thetext>Created attachment 381291
Example page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581368</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Taylor">simontaylor1</who>
    <bug_when>2019-10-18 03:06:15 -0700</bug_when>
    <thetext>There is a hosted example here for testing purposes:
https://tango-bravo.net/webkit-bug-203148/index.html

This works fine on Chrome, and shows the broken behaviour in Safari 13 on both MacOS and iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581710</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-19 12:03:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/56436745&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590100</commentid>
    <comment_count>4</comment_count>
    <who name="Evan Odabashian">evodabas</who>
    <bug_when>2019-11-13 16:27:21 -0800</bug_when>
    <thetext>Just wanted to chime in that we&apos;re running into this issue as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799276</commentid>
    <comment_count>5</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-01 06:52:12 -0700</bug_when>
    <thetext>Thanks for the report. I can confirm the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823971</commentid>
    <comment_count>6</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-14 05:37:01 -0800</bug_when>
    <thetext>*** Bug 234230 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832753</commentid>
    <comment_count>7</comment_count>
      <attachid>449655</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-21 07:43:35 -0800</bug_when>
    <thetext>Created attachment 449655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832786</commentid>
    <comment_count>8</comment_count>
      <attachid>449664</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-21 09:10:18 -0800</bug_when>
    <thetext>Created attachment 449664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832816</commentid>
    <comment_count>9</comment_count>
      <attachid>449664</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-21 11:17:57 -0800</bug_when>
    <thetext>Comment on attachment 449664
Patch

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

&gt; Source/WebCore/platform/graphics/cv/GraphicsContextGLCVCocoa.cpp:611
&gt; +    if (it != m_knownContent.end()) {
&gt; +        if (it-&gt;value == content) {

Use &amp;&amp; instead of nesting?

&gt; Source/WebCore/platform/graphics/cv/GraphicsContextGLCVCocoa.h:71
&gt; +        // TODO: Switch back to UnsafePointer&lt;IOSurfaceRef&gt; once UnsafePointer is safe to compare.

WebKit style uses FIXME for this. Means the same as TODO.

&gt; Source/WebCore/platform/graphics/cv/GraphicsContextGLCVCocoa.h:81
&gt; +        bool operator==(const TextureContent&amp; other) const;

Remove the name &quot;other&quot; please. I also think you might want to add a blank line above this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833210</commentid>
    <comment_count>10</comment_count>
      <attachid>449786</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-24 00:53:53 -0800</bug_when>
    <thetext>Created attachment 449786
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833246</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-24 03:53:55 -0800</bug_when>
    <thetext>Committed r288434 (246323@main): &lt;https://commits.webkit.org/246323@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449786.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846582</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Taylor">simontaylor1</who>
    <bug_when>2022-02-28 02:22:45 -0800</bug_when>
    <thetext>As a note for people watching this for information on when the fix lands in iOS Safari - this is fixed in iOS 15.4 beta 4.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>381291</attachid>
            <date>2019-10-18 03:05:15 -0700</date>
            <delta_ts>2019-10-18 03:05:15 -0700</delta_ts>
            <desc>Example page</desc>
            <filename>index.html</filename>
            <type>text/html</type>
            <size>8092</size>
            <attacher name="Simon Taylor">simontaylor1</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuLXVzIj4KICA8aGVhZD4KICAgIDxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KICAgIDx0aXRsZT5WaWRlbyB0ZXhJbWFnZTJE
OiBXZWJraXQgQnVnIDIwMzE0ODwvdGl0bGU+CiAgPC9oZWFkPgogIDxib2R5PgogICAgQSB2aWRl
byBpcyB1cGxvYWRlZCB0byB0d28gdGV4dHVyZXMgYW5kIHRoZSB0ZXh0dXJlcyByZW5kZXJlZCB0
byBkaWZmZXJlbnQgaGFsdmVzIG9mIHRoZSBXZWJHTCBjYW52YXMuPC9icj4KICAgIEV4cGVjdGVk
IHJlc3VsdDogdHdvIGNvcGllcyBvZiB0aGUgdmlkZW8gc2hvdWxkIGJlIHJlbmRlcmVkLCBib3Ro
IHNob3VsZCBiZSBwbGF5aW5nLjwvYnI+CiAgICBGYWlscyBpbiBTYWZhcmkgMTM6IHNlZSA8YSBo
cmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTQ4Ij5XZWJL
aXQgYnVnIDIwMzE0ODwvYT48L2JyPgogICAgPC9icj4KICAgIDxjYW52YXMgd2lkdGg9IjMzMHB4
IiBoZWlnaHQ9IjM3NXB4IiBpZD0iY2FudmFzIiA+PC9jYW52YXM+CiAgICAKICAgIDxkaXY+CiAg
ICAgIDxidXR0b24gb25jbGljaz0idmlkZW8ucGF1c2UoKTsiPlBhdXNlPC9idXR0b24+CiAgICAg
IDxidXR0b24gb25jbGljaz0idmlkZW8ucGxheSgpOyI+UGxheTwvYnV0dG9uPgogICAgICA8YnV0
dG9uIG9uY2xpY2s9InN3YXBVcGxvYWRPcmRlciA9ICFzd2FwVXBsb2FkT3JkZXI7Ij5Td2FwIHVw
bG9hZCBvcmRlcjwvYnV0dG9uPgogICAgPC9kaXY+CiAgICAKICAgIDxkaXYgc3R5bGU9Im1hcmdp
bjogMjBweDsgZm9udC1mYW1pbHk6Y291cmllcjsiPgogICAgICBWaWRlbyBSZXNvbHV0aW9uOiA8
c3BhbiBpZD0idmlkZW9SZXMiPi08L3NwYW4+CiAgICAgIDxici8+CiAgICAgIFVwbG9hZDogPHNw
YW4gaWQ9InVwbG9hZFRpbWUiPjAgbXMsIDAgdXBsb2Fkczwvc3Bhbj4KICAgICAgPGJyLz4KICAg
ICAgUmVuZGVyIGxvb3A6IDxzcGFuIGlkPSJmcHMiPjA8L3NwYW4+IGZwcwogICAgPC9kaXY+CiAg
ICA8ZGl2IHN0eWxlPSJtYXJnaW46IDIwcHg7IGNvbG9yOiAjNDA0MDQwIj4KICAgICAgICA8YnIv
Pjxici8+CiAgICAgICAgQmlnIEJ1Y2sgQnVubnk8YnIvPgogICAgICAgIENvcHlyaWdodCAoQykg
MjAwOCBCbGVuZGVyIEZvdW5kYXRpb24gfCBwZWFjaC5ibGVuZGVyLm9yZzxici8+CiAgICAgICAg
U29tZSBSaWdodHMgUmVzZXJ2ZWQuIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24gMy4wIGxp
Y2Vuc2UuPGJyLz4KICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmJpZ2J1Y2tidW5ueS5vcmcv
Ij5odHRwOi8vd3d3LmJpZ2J1Y2tidW5ueS5vcmcvPC9hPjxici8+CiAgICA8L2Rpdj4KCiAgICA8
c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+CiAgICAgIHZhciB2aWRlb1JlYWR5ID0gZmFs
c2U7CiAgICAgIHZhciB2aWRlbyA9IG51bGw7CiAgICAgIHZhciBzd2FwVXBsb2FkT3JkZXIgPSBm
YWxzZTsKICAgICAgc2V0dXBWaWRlbygidmlkZW8ubXA0Iik7CgogICAgICB2YXIgY2FudmFzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpOwoKICAgICAgdmFyIHZpZGVvUmVzU3Bh
biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2aWRlb1JlcycpOwogICAgICB2YXIgdXBsb2Fk
VGltZVNwYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkVGltZScpOwogICAgICB2
YXIgZnBzU3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmcHMnKTsKCiAgICAgIHZhciBj
b250ZXh0QXR0cmlidXRlcyA9IHsKICAgICAgICBhbHBoYTogZmFsc2UsCiAgICAgICAgc3RlbmNp
bDogZmFsc2UsCiAgICAgICAgYW50aWFsaWFzOiBmYWxzZQogICAgICB9OwogICAgICB2YXIgZ2wg
PSBjYW52YXMuZ2V0Q29udGV4dCgnd2ViZ2wnLCBjb250ZXh0QXR0cmlidXRlcyk7CgogICAgICAv
LyBQcmVwYXJlIHdlYmdsCiAgICAgIC8vIENvZGUgbW9kaWZpZWQgZnJvbSBodHRwczovL2tycGFu
by5jb20vaW9zL2J1Z3MvaW9zOC13ZWJnbC12aWRlby1wZXJmb3JtYW5jZS8KICAgICAgdmFyIHZz
ID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOwogIAkJZ2wuc2hhZGVyU291cmNl
KHZzLCAiYXR0cmlidXRlIGhpZ2hwIHZlYzIgdng7IHZhcnlpbmcgaGlnaHAgdmVjMiB0eDsgdm9p
ZCBtYWluKCl7Z2xfUG9zaXRpb24gPSB2ZWM0KHZ4LngqMi4wLTEuMCwxLjAtdngueSoyLjAsMCwx
KTsgdHggPSB2eDt9Iik7CiAgCQlnbC5jb21waWxlU2hhZGVyKHZzKTsKCiAgCQl2YXIgcHMgPSBn
bC5jcmVhdGVTaGFkZXIoZ2wuRlJBR01FTlRfU0hBREVSKTsKICAJCWdsLnNoYWRlclNvdXJjZShw
cywgInVuaWZvcm0gc2FtcGxlcjJEIHNtOyB2YXJ5aW5nIGhpZ2hwIHZlYzIgdHg7IHZvaWQgbWFp
bigpe2dsX0ZyYWdDb2xvciA9IHRleHR1cmUyRChzbSwgdHgpO30iKTsKICAJCWdsLmNvbXBpbGVT
aGFkZXIocHMpOwoKICAJCXZhciBzaGFkZXIgID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOwogIAkJZ2wu
YXR0YWNoU2hhZGVyKHNoYWRlciwgdnMpOwogIAkJZ2wuYXR0YWNoU2hhZGVyKHNoYWRlciwgcHMp
OwogIAkJZ2wubGlua1Byb2dyYW0oc2hhZGVyKTsKCiAgCQl2YXIgdnggPSBnbC5jcmVhdGVCdWZm
ZXIoKTsKICAJCWdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2eCk7CiAgCQlnbC5idWZm
ZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbMCwwLCAxLDAsIDEsMSwg
MCwxXSksIGdsLlNUQVRJQ19EUkFXKTsKCiAgCQl2YXIgaXggPSBnbC5jcmVhdGVCdWZmZXIoKTsK
ICAJCWdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGl4KTsKICAJCWdsLmJ1
ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50MTZBcnJheShbMCwxLDIs
IDAsMiwzXSksIGdsLlNUQVRJQ19EUkFXKTsKCiAgICAgIC8vIFNldCB1cCB0aGUgc2hhZGVyIHBh
cmFtZXRlcnMKICAJCWdsLnVzZVByb2dyYW0oc2hhZGVyKTsKICAgICAgdmFyIHZ4X2xvYyA9IGds
LmdldEF0dHJpYkxvY2F0aW9uKHNoYWRlciwgInZ4Iik7CiAgICAgIGdsLnZlcnRleEF0dHJpYlBv
aW50ZXIodnhfbG9jLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOwogICAgICBnbC5lbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSh2eF9sb2MpOwogICAgICBnbC51bmlmb3JtMWkoZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKHNoYWRlciwgInNtIiksIDApOwoKICAJCXZhciB0ZXggPSBnbC5jcmVhdGVUZXh0
dXJlKCk7CiAgICAgIGdsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVSRTApOwogIAkJZ2wuYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKICAJCWdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsICAgICBnbC5DTEFNUF9UT19FREdFKTsKICAJCWdsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsICAgICBnbC5DTEFN
UF9UT19FREdFKTsKICAJCWdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOwogIAkJZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJF
XzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CgogICAgICAvLyBJbml0aWFs
aXplIHRoZSB0ZXh0dXJlIGRhdGEgKG9wYXF1ZSBibHVlKQogICAgICBnbC50ZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsIDEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZ
VEUsCiAgICAgICAgbmV3IFVpbnQ4QXJyYXkoWzAuMCwgMC4wLCAxMjgsIDI1NV0pKTsKICAgICAg
ICAKICAJICB2YXIgdGV4MiA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKICAJCWdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIHRleDIpOwogIAkJZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX1dSQVBfVCwgICAgIGdsLkNMQU1QX1RPX0VER0UpOwogIAkJZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgICAgIGdsLkNMQU1QX1RP
X0VER0UpOwogIAkJZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01B
R19GSUxURVIsIGdsLkxJTkVBUik7CiAgCQlnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKCiAgICAgIC8vIEluaXRpYWxpemUg
dGhlIHRleHR1cmUgZGF0YSAob3BhcXVlIGdyZWVuKQogICAgICBnbC50ZXhJbWFnZTJEKGdsLlRF
WFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsIDEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUs
CiAgICAgICAgbmV3IFVpbnQ4QXJyYXkoWzAuMCwgMTI4LCAwLjAsIDI1NV0pKTsKICAgICAgICAK
ICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKICAgICAgCiAgICAgIC8v
IEtpY2sgb2ZmIHRoZSByZW5kZXIgbG9vcAogICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZHJh
d1NjZW5lKTsKCiAgICAgIHZhciBmcmFtZUNvdW50ID0gMDsKICAgICAgdmFyIHRleFVwbG9hZENv
dW50ID0gMDsKICAgICAgdmFyIHRleFVwbG9hZFRvdGFsID0gMDsKICAgICAgdmFyIGxhc3RGcmFt
ZVRpbWUgPSAwOwogICAgICB2YXIgdG90YWxGcmFtZVRpbWUgPSAwOwoKICAgICAgZnVuY3Rpb24g
ZHJhd1NjZW5lKCkgewogICAgICAgIHZhciBmcmFtZVN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5v
dygpOwoKICAgICAgICBpZih2aWRlb1JlYWR5ICYmICF2aWRlby5wYXVzZWQpIHsKICAgICAgICAg
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHN3YXBVcGxvYWRPcmRlciA/IHRleDIgOiB0
ZXgpOwogICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0IsIGds
LlJHQiwKICAgICAgICAgICAgZ2wuVU5TSUdORURfQllURSwgdmlkZW8pOwogICAgICAgICAgICAK
ICAgICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHN3YXBVcGxvYWRPcmRlciA/
IHRleCA6IHRleDIpOwogICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBn
bC5SR0IsIGdsLlJHQiwKICAgICAgICAgICAgICBnbC5VTlNJR05FRF9CWVRFLCB2aWRlbyk7Cgog
ICAgICAgICAgdmFyIHVwbG9hZFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKSAtIGZyYW1lU3RhcnRU
aW1lOwogICAgICAgICAgdGV4VXBsb2FkQ291bnQgKz0gMTsKICAgICAgICAgIHRleFVwbG9hZFRv
dGFsICs9IHVwbG9hZFRpbWU7CiAgICAgICAgfQoKICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9C
VUZGRVJfQklUKTsKICAgICAgICAKICAgICAgICBnbC52aWV3cG9ydCg1LCAxOTAsIDMyMCwgMTgw
KTsKICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOwogICAgICAgIGds
LmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTsKICAg
ICAgICAKICAgICAgICBnbC52aWV3cG9ydCg1LCA1LCAzMjAsIDE4MCk7CiAgICAgICAgZ2wuYmlu
ZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4Mik7CiAgICAgICAgZ2wuZHJhd0VsZW1lbnRzKGds
LlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDApOwogICAgICAgIAogICAgICAgIHJl
cXVlc3RBbmltYXRpb25GcmFtZShkcmF3U2NlbmUpOwoKICAgICAgICBpZihsYXN0RnJhbWVUaW1l
ID09IDApCiAgICAgICAgewogICAgICAgICAgcmVzZXRTdGF0cygpOwogICAgICAgICAgbGFzdEZy
YW1lVGltZSA9IGZyYW1lU3RhcnRUaW1lOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAg
ICAgICAgLy8gVXBkYXRlIHRpbWluZyBtZWFzdXJlbWVudHMKICAgICAgICB0b3RhbEZyYW1lVGlt
ZSArPSBmcmFtZVN0YXJ0VGltZSAtIGxhc3RGcmFtZVRpbWU7CiAgICAgICAgbGFzdEZyYW1lVGlt
ZSA9IGZyYW1lU3RhcnRUaW1lOwogICAgICAgIGZyYW1lQ291bnQgKz0gMTsKICAgICAgICBpZihm
cmFtZUNvdW50ID09IDYwKSB7CiAgICAgICAgICBwcmludFN0YXRzKCk7CiAgICAgICAgICByZXNl
dFN0YXRzKCk7CiAgICAgICAgfQogICAgICB9CgogICAgICBmdW5jdGlvbiByZXNldFN0YXRzKCkg
ewogICAgICAgIGZyYW1lQ291bnQgPSAwOwogICAgICAgIHRleFVwbG9hZENvdW50ID0gMDsKICAg
ICAgICB0ZXhVcGxvYWRUb3RhbCA9IDA7CiAgICAgICAgdG90YWxGcmFtZVRpbWUgPSAwOwogICAg
ICB9CgogICAgICBmdW5jdGlvbiBwcmludFN0YXRzKCkgewogICAgICAgIGlmKHRleFVwbG9hZENv
dW50ID4gMCkgewogICAgICAgICAgdmFyIHRleFRpbWUgPSB0ZXhVcGxvYWRUb3RhbCAvIHRleFVw
bG9hZENvdW50OwogICAgICAgICAgdmFyIHRleFN0YXRzID0gdGV4VGltZS50b0ZpeGVkKDIpICsg
IiBtcywgIiArCiAgICAgICAgICAgIHRleFVwbG9hZENvdW50LnRvRml4ZWQoMCkgKyAiIHVwbG9h
ZHMiOwogICAgICAgICAgdXBsb2FkVGltZVNwYW4udGV4dENvbnRlbnQgPSB0ZXhTdGF0czsKICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgdXBsb2FkVGltZVNwYW4udGV4dENvbnRlbnQgPSAiMCBt
cywgMCB1cGxvYWRzIjsKICAgICAgICB9CgogICAgICAgIHZhciBhdkZyYW1lVGltZSA9IHRvdGFs
RnJhbWVUaW1lIC8gZnJhbWVDb3VudDsKICAgICAgICB2YXIgYXZGUFMgPSAxMDAwIC8gYXZGcmFt
ZVRpbWU7CiAgICAgICAgZnBzU3Bhbi50ZXh0Q29udGVudCA9IGF2RlBTLnRvRml4ZWQoMik7Cgog
ICAgICAgIHZpZGVvUmVzU3Bhbi50ZXh0Q29udGVudCA9IHZpZGVvLnZpZGVvV2lkdGgudG9GaXhl
ZCgwKSArICJ4IgogICAgICAgICAgKyB2aWRlby52aWRlb0hlaWdodC50b0ZpeGVkKDApOwoKICAg
ICAgICByZXNldFN0YXRzKCk7CiAgICAgIH0KCiAgICAgIC8vID09PT09PT09PT0KICAgICAgLy8g
VmlkZW8gbWFuYWdlbWVudCBzdHVmZiBiZWxvdyBoZXJlCiAgICAgIC8vID09PT09PT09PT0KCiAg
ICAgIGZ1bmN0aW9uIGNyZWF0ZVZpZGVvKCkgewogICAgICAgIGNvbnN0IHZpZGVvTm9kZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7CiAgICAgICAgdmlkZW9Ob2RlLm11dGVkID0g
dHJ1ZTsKICAgICAgICB2aWRlb05vZGUuc2V0QXR0cmlidXRlKCdwbGF5c2lubGluZScsICcnKTsK
CiAgICAgICAgdmFyIHBsYXlpbmcgPSBmYWxzZTsKICAgICAgICB2YXIgdGltZXVwZGF0ZSA9IGZh
bHNlOwoKICAgICAgICAvLyBXYWl0aW5nIGZvciB0aGVzZSAyIGV2ZW50cyBlbnN1cmVzCiAgICAg
ICAgLy8gdGhlcmUgaXMgZGF0YSBpbiB0aGUgdmlkZW8KICAgICAgICB2aWRlb05vZGUuYWRkRXZl
bnRMaXN0ZW5lcigncGxheWluZycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgIHBsYXlpbmcgPSB0
cnVlOwogICAgICAgICAgIGNoZWNrUmVhZHkoKTsKICAgICAgICB9LCB0cnVlKTsKCiAgICAgICAg
dmlkZW9Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCBmdW5jdGlvbigpIHsKICAg
ICAgICAgICB0aW1ldXBkYXRlID0gdHJ1ZTsKICAgICAgICAgICBjaGVja1JlYWR5KCk7CiAgICAg
ICAgfSwgdHJ1ZSk7CgogICAgICAgIGZ1bmN0aW9uIGNoZWNrUmVhZHkoKSB7CiAgICAgICAgICBp
ZiAocGxheWluZyAmJiB0aW1ldXBkYXRlKSB7CiAgICAgICAgICAgIHZpZGVvUmVhZHkgPSB0cnVl
OwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHZpZGVvTm9kZTsKICAgICAg
fQoKICAgICAgZnVuY3Rpb24gc2V0dXBWaWRlbyh1cmwpIHsKICAgICAgICBpZih2aWRlbyA9PSBu
dWxsKQogICAgICAgICAgdmlkZW8gPSBjcmVhdGVWaWRlbygpOwoKICAgICAgICBpZih2aWRlby5z
cmNPYmplY3QpIHsKICAgICAgICAgIHZpZGVvLnNyY09iamVjdC5nZXRWaWRlb1RyYWNrcygpWzBd
LnN0b3AoKTsKICAgICAgICAgIHZpZGVvLnNyY09iamVjdCA9IG51bGw7CiAgICAgICAgfQogICAg
ICAgIHZpZGVvLmxvb3AgPSB0cnVlOwogICAgICAgIHZpZGVvLnNyYyA9IHVybDsKICAgICAgICB2
aWRlby5wbGF5KCk7CiAgICAgIH0KCgogICAgPC9zY3JpcHQ+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449655</attachid>
            <date>2022-01-21 07:43:35 -0800</date>
            <delta_ts>2022-01-21 09:10:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203148-20220121174333.patch</filename>
            <type>text/plain</type>
            <size>25279</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZlZGYzM2Y1NGIzNmVl
MTVlMzdhZjlhZWIxMjAyNDM2YjE3YjBjYy4uYmU2M2Q4MjEzOWI1N2I3ZWZmMGQ2NDM3NzU3ZjYx
NmY5MDlmNzYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIyLTAxLTIxICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgdGV4SW1hZ2UyZCBm
YWlscyB0byBzZXQgc2FtZSB2aWRlbyBmcmFtZSB0byBtdWx0aXBsZSB0ZXh0dXJlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTQ4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81NjQzNjc0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWJHTCBvcHRpbWl6ZXMgcmVwZWF0ZWQgdmlkZW8gdXBsb2Fk
cyB0byBzYW1lIHRleHR1cmUsIGR1ZSB0byB0aGlzIGJlaW5nCisgICAgICAgIHVzdWFsIHByYWN0
aWNlIGFtb25nIHBhZ2VzLiBSZWFzb24gaXMgdGhhdCB0aGVyZSBhcmUgbm8gQVBJIHRvIGtub3cg
d2hlbiB0aGUgCisgICAgICAgIHZpZGVvIGZyYW1lIHVwZGF0ZXMuCisgICAgICAgIFRoZSBhbGdv
cml0aG0gd2FzOgorICAgICAgICAgLSBJZiB0aGUgSU9TdXJmYWNlIGlzIHRoZSBzYW1lIGFzIGlu
IHRoZSBsYXN0IGNhbGwKKyAgICAgICAgIC0gSWYgdGhlIHRleHR1cmUgY29udGVudHMgaGFzIG5v
dCBjaGFuZ2VkIHNpbmNlIHdlIGxhc3QgbW9kaWZpZWQgdGhpcyB0ZXh0dXJlCisgICAgICAgICB0
aGVuIHNraXAgdGhlIHVwbG9hZC4KKyAgICAgICAgSG93ZXZlciwgdGhpcyBsb2dpYyBza2lwcyBl
cnJvcm5lb3VzbHkgaWYgdGhlICJsYXN0IGNhbGwiIHVwZGF0ZXMgc29tZSBvdGhlciB0ZXh0dXJl
LgorICAgICAgICBGaXggYW5kIHRlc3QgdGhlIGFib3ZlLgorCisgICAgICAgIFRoZXJlIGFyZSBv
dGhlciBpc3N1ZXMgZm9yIHRoZSBjdXJyZW50IGFsZ29yaXRobS4gVGhpcyBwYXRjaCBmaXhlcyBz
b21lIG90aGVyIHRoZW9yZXRpY2FsIG9uZXM6CisgICAgICAgICAtIElmIHRoZSB0ZXh0dXJlIGlz
IGRlbGV0ZWQgYW5kIG5ldyBvbmUgZ2V0cyBhc3NpZ25lZCB0aGUgc2FtZSB0ZXh0dXJlIGlkIGFu
ZCB0aGUgY29udGVudAorICAgICAgICAgICBzZWVkIHdvdWxkIGNsYXNoCisgICAgICAgICAtIFZp
ZGVvIHdhcyB1cGxvYWRlZCB0byBhIGRpZmZlcmVudCBsZXZlbAorCisgICAgICAgIFByZXZpb3Vz
IGltcGxlbWVudGF0aW9uIHdhcyBrZWVwaW5nIHBlci10ZXh0dXJlIHNlZWQgdmFsdWUgbWFwIGlu
IHRoZSBjb250ZXh0IChHcmFwaGljc0NvbnRleHRHTEFOR0xFKQorICAgICAgICBhbmQgcGVyLXRl
dHVyZSBzZWVkIHZhbHVlIG1hcCBpbiB0aGUgdGV4dHVyZSB1cGxvYWQgaGVscGVyIChHcmFwaGlj
c0NvbnRleHRHTENWQ29jb2EpIGFuZCBsYXN0CisgICAgICAgIHVwbG9hZGVkIElPU3VyZmFjZSBz
ZWVkIGluIHRoZSB1cGxvYWQgaGVscGVyIChub3QgcGVyIHRleHR1cmUpLgorCisgICAgICAgIFRo
ZSBpbXBsbWVudGF0aW9uIGluIHRoaXMgcGF0Y2gga2VlcHMgcGVyLXRleHR1cmUga25vd24gY29u
dGVudCBkZXNjcmlwdGlvbiBpbiB0aGUgdGV4dHVyZSB1cGxvYWQgaGVscGVyCisgICAgICAgIGFu
ZCBpbnZhbGlkYXRlcyB0aGlzIHdoZW4gZWFjaCB0ZXh0dXJlIGNoYW5nZXMuIFRoZSBrbm93biBj
b250ZW50IGRlc2NyaXB0aW9uIGlzIHRoZQorICAgICAgICBwYXJhbWV0ZXIgbGlzdCBvZiB0aGUg
dGV4dHVyZSB1cGxvYWQgY2FsbC4KKworICAgICAgICBUZXN0OiB3ZWJnbC9wZW5kaW5nL2NvbmZv
cm1hbmNlL3RleHR1cmVzL21pc2MvdGV4LWltYWdlLXZpZGVvLXJlcGVhdGVkLmh0bWwKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMU3RhdGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGU6OnNldEJvdW5kVGV4dHVyZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp0ZXhJbWFnZTJE
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRleFN1YkltYWdl
MkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Y29tcHJlc3Nl
ZFRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQU5HTEU6OnRleFN0b3JhZ2UzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEFOR0xFOjp0ZXhJbWFnZTJERGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQU5HTEU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjppbnZhbGlkYXRlS25vd25UZXh0dXJlQ29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp0ZXh0dXJl
U2VlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6aW52YWxpZGF0ZUtub3duVGV4dHVyZUNvbnRlbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWQ29jb2E6OlRleHR1cmVDb250ZW50Ojpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZD
b2NvYTo6Y29weVZpZGVvU2FtcGxlVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQ1ZDb2NvYTo6aW52YWxpZGF0ZUtub3duVGV4dHVyZUNvbnRlbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oOgor
CiAyMDIyLTAxLTIwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtDb2NvYV0gQWNjZWxlcmF0ZWQgZmlsdGVycyBhcmUgZW5hYmxlZCBieSB0aGUgd3Jvbmcg
c2V0dGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oCmluZGV4IDUwNWU4YTVkZTdiMmY0YTA1NjJkMWM2Yjg0
ODNiNGQ3ZTljZWUxZGMuLjViNjNhMGZkMTE0YmI3N2EyYzM2ODRjM2Q2YzFkZTZiNzVjY2NiOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTFN0YXRlLmgKQEAgLTY5LDkgKzY5LDYgQEAgc3RydWN0IEdyYXBoaWNzQ29u
dGV4dEdMU3RhdGUgewogICAgIHsKICAgICAgICAgYm91bmRUZXh0dXJlTWFwLnNldCh0ZXh0dXJl
VW5pdCwgc3RkOjptYWtlX3BhaXIodGV4dHVyZSwgdGFyZ2V0KSk7CiAgICAgfQotCi0gICAgdXNp
bmcgVGV4dHVyZVNlZWRDb3VudCA9IEhhc2hDb3VudGVkU2V0PEdDR0x1aW50LCBJbnRIYXNoPEdD
R0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4+Owot
ICAgIFRleHR1cmVTZWVkQ291bnQgdGV4dHVyZVNlZWRDb3VudDsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggNmQxMDY2YTViOTVhNDAxZTY4OTQ1MGRlZWM1
NDVkN2FkMWU3NDJjMy4uNmVjNmU1NzU1ZjU1MGE1NTAxMzcxMWE0MTdhYjE3YjU1YmExMGIwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTM1OSw4ICszNTksOCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bQogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBHTF9UZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBw
aXhlbHMuYnVmU2l6ZSwgcGl4ZWxzLmRhdGEpOwotICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3Vu
dC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwotICAgIH0KKyAgICBpbnZhbGlk
YXRlS25vd25UZXh0dXJlQ29udGVudChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Cit9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewpAQCAtMzc0LDcgKzM3NCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpCiAKICAgICAvLyBGSVhNRTogd2Ugd2lsbCBuZWVkIHRvIGRl
YWwgd2l0aCBQaXhlbFN0b3JlIHBhcmFtcyB3aGVuIGRlYWxpbmcgd2l0aCBpbWFnZSBidWZmZXJz
IHRoYXQgZGlmZmVyIGZyb20gdGhlIHN1YmltYWdlIHNpemUuCiAgICAgR0xfVGV4U3ViSW1hZ2Uy
RFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKLSAgICBtX3N0YXRlLnRl
eHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKKyAgICBp
bnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUo
KSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZiwgR0NHTGludCB5b2ZmLCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IGludCBsZXZlbCwgR0MKICAgICAgICAgcmV0dXJuOwogCiAgICAgR0xfQ29tcHJlc3NlZFRleElt
YWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKLSAgICBt
X3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgp
KTsKKyAgICBpbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChtX3N0YXRlLmN1cnJlbnRCb3Vu
ZFRleHR1cmUoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Y29tcHJlc3Nl
ZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQpAQCAtNDAyLDcgKzQwMiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsCiAgICAgICAgIHJldHVybjsKIAogICAgIEdMX0NvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwgZGF0
YS5kYXRhKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVu
dEJvdW5kVGV4dHVyZSgpKTsKKyAgICBpbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChtX3N0
YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWws
IGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zm
c2V0KQpAQCAtODUyLDcgKzg1Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dGV4
U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHCiAgICAgICAg
IHJldHVybjsKIAogICAgIEdMX1RleFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQo
bV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOworICAgIGludmFsaWRhdGVLbm93blRleHR1
cmVDb250ZW50KG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6
ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpCkBAIC04NjEsNyArODYxLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWkgbGV2ZWxzLCBHQ0cKICAgICAgICAgcmV0dXJuOwogCiAgICAgR0xfVGV4U3RvcmFnZTNE
KHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOwot
ICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0
dXJlKCkpOworICAgIGludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KG1fc3RhdGUuY3VycmVu
dEJvdW5kVGV4dHVyZSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp0ZXhJ
bWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiBwaXhlbHMpCkBAIC0xMDAwLDcgKzEwMDAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OnRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
QwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICBH
TF9UZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVk
Q291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKKyAgICBpbnZhbGlkYXRl
S25vd25UZXh0dXJlQ29udGVudChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Y29weVRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIpCkBAIC0xMTUxLDcgKzExNTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YQogICAgICAg
ICByZXR1cm47CiAKICAgICBHTF9GcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1l
bnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwotICAgIG1fc3RhdGUudGV4dHVyZVNlZWRD
b3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOworICAgIGludmFsaWRhdGVL
bm93blRleHR1cmVDb250ZW50KG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkKQEAg
LTIwOTMsNyArMjA5Myw3IEBAIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6Y3JlYXRlVGV4dHVyZSgpCiAKICAgICBHTHVpbnQgbyA9IDA7CiAgICAgR0xfR2VuVGV4dHVy
ZXMoMSwgJm8pOwotICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobyk7CisgICAgaW52
YWxpZGF0ZUtub3duVGV4dHVyZUNvbnRlbnQobyk7CiAgICAgcmV0dXJuIG87CiB9CiAKQEAgLTIx
NTUsNyArMjE1NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6ZGVsZXRlVGV4dHVy
ZShQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUpCiAgICAgICAgIHJldHVybiBrZXlWYWx1ZS52YWx1
ZS5maXJzdCA9PSB0ZXh0dXJlOwogICAgIH0pOwogICAgIEdMX0RlbGV0ZVRleHR1cmVzKDEsICZ0
ZXh0dXJlKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQucmVtb3ZlQWxsKHRleHR1cmUp
OworICAgIGludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KHRleHR1cmUpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9y
KQpAQCAtMjk5Myw5ICsyOTkzLDggQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnQKICAgICByZXR1
cm4gcmVhZENvbXBvc2l0ZWRSZXN1bHRzKCk7CiB9CiAKLXVuc2lnbmVkIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OnRleHR1cmVTZWVkKEdDR0x1aW50IHRleHR1cmUpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEU6OmludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KEdDR0x1aW50KQogewot
ICAgIHJldHVybiBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuY291bnQodGV4dHVyZSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAppbmRleCBjYTg3MmFlNThjZGE1MWExNjU5
MjFiYzUwOTJiNTdjMjEwMzM4ZDQ4Li5mOGMwOThiYWQ1NzM2NzQ1NjQ2YmM1YmRhOGU5NjE2YzQ0
N2I3NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zNTUsOCArMzU1LDYg
QEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdS
ZXN1bHRzRm9yUGFpbnRpbmcoKTsKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFk
Q29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpOwogCi0gICAgdW5zaWduZWQgdGV4dHVyZVNl
ZWQoR0NHTHVpbnQgdGV4dHVyZSk7Ci0KICAgICBjb25zdGV4cHIgc3RhdGljIEVHTE5hdGl2ZURp
c3BsYXlUeXBlIGRlZmF1bHREaXNwbGF5ID0gRUdMX0RFRkFVTFRfRElTUExBWTsKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBjb25zdGV4cHIgc3RhdGljIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGxv
d1Bvd2VyRGlzcGxheSA9IEVHTF9DQVNUKEVHTE5hdGl2ZURpc3BsYXlUeXBlLCAtMSk7CkBAIC00
MDYsNiArNDA0LDggQEAgcHJvdGVjdGVkOgogICAgIC8vIFBsYXRmb3JtIHNwZWNpZmljIGJlaGF2
aW9yIGZvciByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1SZWxl
YXNlVGhyZWFkUmVzb3VyY2VzKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUtub3du
VGV4dHVyZUNvbnRlbnQoR0NHTHVpbnQpOworCiAgICAgR0NHTHVpbnQgbV90ZXh0dXJlIHsgMCB9
OwogICAgIEdDR0x1aW50IG1fZmJvIHsgMCB9OwogICAgIEdDR0x1aW50IG1fZGVwdGhTdGVuY2ls
QnVmZmVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCmluZGV4IDMwODk4MDA3
ZWYyZmY2NjkyNjlhZjY0ZjY5MTJjOTA5NjhmNzk0ZGYuLmM5ZmJlMGJhMDVhMmJjMjM1NzAwYTZl
NmM5OTY0ZWZkYmMxYjYxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKQEAgLTgw
LDYgKzgwLDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0NvbnRleHRHTENv
Y29hKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBQcm9jZXNzSWRlbnRp
dHkmJiByZXNvdXJjZU93bmVyKTsKICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKKworICAgIC8v
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgorICAgIHZvaWQgaW52YWxpZGF0ZUtu
b3duVGV4dHVyZUNvbnRlbnQoR0NHTHVpbnQpIGZpbmFsOworCiAjaWYgRU5BQkxFKFZJREVPKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRHTENWQ29jb2E+IG1fY3Y7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IDUzMDJhNzFhOTBlNmRiNTE2
MzU2OTBkN2IwMGFlMDNhMWZhNTlhMTcuLjcxMjlmMjI0YzI2NDBhZTQ5ZjdjOTMyZTA3Yzk0NTJm
OTM0NjA0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtODIwLDYgKzgy
MCwxMiBAQCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFw
aGljc0NvbnRleHRHTENvY29hOjpsYXllckNvbnRlbgogICAgIHJldHVybiBudWxscHRyOwogfQog
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmludmFsaWRhdGVLbm93blRleHR1cmVDb250
ZW50KEdDR0x1aW50IHRleHR1cmUpCit7CisgICAgaWYgKG1fY3YpCisgICAgICAgIG1fY3YtPmlu
dmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KHRleHR1cmUpOworfQorCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmNwcAppbmRleCBkNDUy
MDQ5Y2FkMzczMGJmOTkzMDllNzZmMjI5NzU4NzA2MWE4OTY4Li41M2U5ZjJkMzNmOTJhNjRhYTEy
NWNlMzA1ZjQ5NmU1YWRiNWY5NjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5jcHAK
QEAgLTQ0NCw2ICs0NDQsMTggQEAgc3RhdGljIGNvbnN0IEdMZmxvYXQqIFlDYkNyVG9SR0JNYXRy
aXhGb3JSYW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24oUGl4ZWxSYW5nZSByYW4KICAgICByZXR1cm4g
aXRlcmF0b3ItPnNlY29uZDsKIH0KIAoraW5saW5lIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkNv
Y29hOjpUZXh0dXJlQ29udGVudDo6b3BlcmF0b3I9PShjb25zdCBUZXh0dXJlQ29udGVudCYgb3Ro
ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1cmZhY2UgPT0gb3RoZXIuc3VyZmFjZQorICAgICAg
ICAmJiBzdXJmYWNlU2VlZCA9PSBvdGhlci5zdXJmYWNlU2VlZAorICAgICAgICAmJiBsZXZlbCA9
PSBvdGhlci5sZXZlbAorICAgICAgICAmJiBpbnRlcm5hbEZvcm1hdCA9PSBvdGhlci5pbnRlcm5h
bEZvcm1hdAorICAgICAgICAmJiBmb3JtYXQgPT0gb3RoZXIuZm9ybWF0CisgICAgICAgICYmIHR5
cGUgPT0gb3RoZXIudHlwZQorICAgICAgICAmJiB1bnBhY2tGbGlwWSA9PSBvdGhlci51bnBhY2tG
bGlwWQorICAgICAgICAmJiBJbWFnZU9yaWVudGF0aW9uOjpPcmllbnRhdGlvbihvcmllbnRhdGlv
bikgPT0gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb24ob3RoZXIub3JpZW50YXRpb24pOwor
fQorCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0R0xDVkNvY29hPiBHcmFwaGljc0Nv
bnRleHRHTENWQ29jb2E6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHTENvY29hJiBjb250ZXh0KQog
ewogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRHTENWQ29jb2E+IGN2IHsgbmV3
IEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYShjb250ZXh0KSB9OwpAQCAtNTkzLDE0ICs2MDUsMTQg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENWQ29jb2E6OmNvcHlWaWRlb1NhbXBsZVRvVGV4dHVy
ZShjb25zdCBNZWRpYVNhbXBsZVZpZGVvRnIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
YXV0byBvcmllbnRhdGlvbiA9IHZpZGVvRnJhbWUub3JpZW50YXRpb24oKTsKLSAgICBhdXRvIG5l
d1N1cmZhY2VTZWVkID0gSU9TdXJmYWNlR2V0U2VlZChzdXJmYWNlKTsKLSAgICBpZiAoSW1hZ2VP
cmllbnRhdGlvbjo6T3JpZW50YXRpb24ob3JpZW50YXRpb24pID09IEltYWdlT3JpZW50YXRpb246
Ok9yaWVudGF0aW9uKG1fbGFzdFN1cmZhY2VPcmllbnRhdGlvbikKLSAgICAgICAgJiYgdW5wYWNr
RmxpcFkgPT0gbV9sYXN0VW5wYWNrRmxpcFkKLSAgICAgICAgJiYgbmV3U3VyZmFjZVNlZWQgPT0g
bV9sYXN0U3VyZmFjZVNlZWQKLSAgICAgICAgJiYgbGFzdFRleHR1cmVTZWVkKG91dHB1dFRleHR1
cmUpID09IG1fb3duZXIudGV4dHVyZVNlZWQob3V0cHV0VGV4dHVyZSkpIHsKLSAgICAgICAgLy8g
SWYgdGhlIHRleHR1cmUgaGFzbid0IGJlZW4gbW9kaWZpZWQgc2luY2UgdGhlIGxhc3QgdGltZSB3
ZSBjb3BpZWQgdG8gaXQsIGFuZCB0aGUKLSAgICAgICAgLy8gaW1hZ2UgaGFzbid0IGJlZW4gbW9k
aWZpZWQgc2luY2UgdGhlIGxhc3QgdGltZSBpdCB3YXMgY29waWVkLCB0aGlzIGlzIGEgbm8tb3Au
Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgIFRleHR1cmVDb250ZW50IGNvbnRlbnQgeyByZWlu
dGVycHJldF9jYXN0PGludHB0cl90PihzdXJmYWNlKSwgSU9TdXJmYWNlR2V0U2VlZChzdXJmYWNl
KSwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHVucGFja0ZsaXBZLCBvcmll
bnRhdGlvbiB9OworICAgIGF1dG8gaXQgPSBtX2tub3duQ29udGVudC5maW5kKG91dHB1dFRleHR1
cmUpOworICAgIGlmIChpdCAhPSBtX2tub3duQ29udGVudC5lbmQoKSkgeworICAgICAgICBpZiAo
aXQtPnZhbHVlID09IGNvbnRlbnQpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSB0ZXh0dXJlIGhh
c24ndCBiZWVuIG1vZGlmaWVkIHNpbmNlIHRoZSBsYXN0IHRpbWUgd2UgY29waWVkIHRvIGl0LCBh
bmQgdGhlCisgICAgICAgICAgICAvLyBpbWFnZSBoYXNuJ3QgYmVlbiBtb2RpZmllZCBzaW5jZSB0
aGUgbGFzdCB0aW1lIGl0IHdhcyBjb3BpZWQsIHRoaXMgaXMgYSBuby1vcC4KKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogICAgIGlmICghbV9jb250ZXh0IHx8ICFH
cmFwaGljc0NvbnRleHRHTENvY29hOjptYWtlQ3VycmVudChtX2Rpc3BsYXksIG1fY29udGV4dCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc0NiwxNSArNzU4LDE2IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xDVkNvY29hOjpjb3B5VmlkZW9TYW1wbGVUb1RleHR1cmUoY29uc3QgTWVkaWFT
YW1wbGVWaWRlb0ZyCiAgICAgLy8gRG8gdGhlIGFjdHVhbCBkcmF3aW5nLgogICAgIEdMX0RyYXdB
cnJheXMoR0xfVFJJQU5HTEVTLCAwLCA2KTsKIAotICAgIG1fbGFzdFVucGFja0ZsaXBZID0gdW5w
YWNrRmxpcFk7Ci0gICAgbV9sYXN0U3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgbV9sYXN0U3VyZmFj
ZVNlZWQgPSBuZXdTdXJmYWNlU2VlZDsKLSAgICBtX2xhc3RTdXJmYWNlT3JpZW50YXRpb24gPSBv
cmllbnRhdGlvbjsKLSAgICBtX2xhc3RUZXh0dXJlU2VlZC5zZXQob3V0cHV0VGV4dHVyZSwgbV9v
d25lci50ZXh0dXJlU2VlZChvdXRwdXRUZXh0dXJlKSk7CisgICAgbV9rbm93bkNvbnRlbnQuc2V0
KG91dHB1dFRleHR1cmUsIGNvbnRlbnQpOwogICAgIGF1dG9DbGVhclRleHR1cmVPbkVycm9yLnJl
bGVhc2UoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRHTENW
Q29jb2E6OmludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KEdDR0x1aW50IHRleHR1cmUpCit7
CisgICAgbV9rbm93bkNvbnRlbnQucmVtb3ZlKHRleHR1cmUpOworfQorCiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3ND
b250ZXh0R0xDVkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9H
cmFwaGljc0NvbnRleHRHTENWQ29jb2EuaAppbmRleCBjZDE1Y2NjZjA2ZTVmZWU5ZmUxOTE3OTM0
YWI3NjUxZGVlN2Y4ZjMyLi42NmY2ZGQzNzllMzJlZTJlY2I1Y2M3NjQxYjkxMWNjOGVhOGQ0NjI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGlj
c0NvbnRleHRHTENWQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9HcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMQ1YuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgi
CiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9VbnNhZmVQb2ludGVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E7CkBAIC00Niwx
MyArNDUsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb3B5VmlkZW9TYW1wbGVUb1RleHR1cmUo
Y29uc3QgTWVkaWFTYW1wbGVWaWRlb0ZyYW1lJiwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0
dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBGbGlwWSkgZmluYWw7CiAKKyAgICB2b2lkIGludmFsaWRhdGVL
bm93blRleHR1cmVDb250ZW50KEdDR0x1aW50IHRleHR1cmUpOwogcHJpdmF0ZToKICAgICBHcmFw
aGljc0NvbnRleHRHTENWQ29jb2EoR3JhcGhpY3NDb250ZXh0R0xDb2NvYSYpOwogCi0gICAgdW5z
aWduZWQgbGFzdFRleHR1cmVTZWVkKEdDR0x1aW50IHRleHR1cmUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gbV9sYXN0VGV4dHVyZVNlZWQuZ2V0KHRleHR1cmUpOwotICAgIH0KIAogICAgIEdyYXBo
aWNzQ29udGV4dEdMQ29jb2EmIG1fb3duZXI7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRH
TERpc3BsYXkgbV9kaXNwbGF5IHsgbnVsbHB0ciB9OwpAQCAtNzEsMTMgKzY3LDIxIEBAIHByaXZh
dGU6CiAgICAgR0NHTGludCBtX3lUZXh0dXJlU2l6ZVVuaWZvcm1Mb2NhdGlvbiB7IC0xIH07CiAg
ICAgR0NHTGludCBtX3V2VGV4dHVyZVNpemVVbmlmb3JtTG9jYXRpb24geyAtMSB9OwogCi0gICAg
RmxpcFkgbV9sYXN0VW5wYWNrRmxpcFkgeyBGbGlwWTo6Tm8gfTsKLSAgICBJbWFnZU9yaWVudGF0
aW9uIG1fbGFzdFN1cmZhY2VPcmllbnRhdGlvbjsKLSAgICBVbnNhZmVQb2ludGVyPElPU3VyZmFj
ZVJlZj4gbV9sYXN0U3VyZmFjZTsKLSAgICB1aW50MzJfdCBtX2xhc3RTdXJmYWNlU2VlZCB7IDAg
fTsKLQotICAgIHVzaW5nIFRleHR1cmVTZWVkTWFwID0gSGFzaE1hcDxHQ0dMdWludCwgdW5zaWdu
ZWQsIEludEhhc2g8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PEdDR0x1aW50Pj47Ci0gICAgVGV4dHVyZVNlZWRNYXAgbV9sYXN0VGV4dHVyZVNlZWQ7CisgICAg
c3RydWN0IFRleHR1cmVDb250ZW50IHsKKyAgICAgICAgLy8gVE9ETzogU3dpdGNoIGJhY2sgdG8g
VW5zYWZlUG9pbnRlcjxJT1N1cmZhY2VSZWY+IG9uY2UgVW5zYWZlUG9pbnRlciBpcyBzYWZlIHRv
IGNvbXBhcmUuCisgICAgICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvMjM1NDM1CisgICAgICAg
IGludHB0cl90IHN1cmZhY2UgeyAwIH07CisgICAgICAgIHVpbnQzMl90IHN1cmZhY2VTZWVkIHsg
MCB9OworICAgICAgICBHQ0dMaW50IGxldmVsIHsgMCB9OworICAgICAgICBHQ0dMZW51bSBpbnRl
cm5hbEZvcm1hdCB7IDAgfTsKKyAgICAgICAgR0NHTGVudW0gZm9ybWF0IHsgMCB9OworICAgICAg
ICBHQ0dMZW51bSB0eXBlIHsgMCB9OworICAgICAgICBGbGlwWSB1bnBhY2tGbGlwWSB7IEZsaXBZ
OjpObyB9OworICAgICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uOworICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dHVyZUNvbnRlbnQmIG90aGVyKSBjb25zdDsKKyAgICB9
OworICAgIHVzaW5nIFRleHR1cmVDb250ZW50TWFwID0gSGFzaE1hcDxHQ0dMdWludCwgVGV4dHVy
ZUNvbnRlbnQsIEludEhhc2g8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPEdDR0x1aW50Pj47CisgICAgVGV4dHVyZUNvbnRlbnRNYXAgbV9rbm93bkNvbnRlbnQ7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNjUzMDYzOTUzYzU0YzhhNGI2YmY5ODVkMzAwNDdjY2M1ZmZhM2Ix
My4uYjRhZTcxZmUxZmY1ZWZlY2ZhZjA3ZDUxNzFhNGYyNWRiZGFiNDQ4MiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDIyLTAxLTIxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgdGV4SW1hZ2UyZCBmYWlscyB0byBzZXQgc2FtZSB2aWRlbyBmcmFtZSB0
byBtdWx0aXBsZSB0ZXh0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAzMTQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjQzNjc0NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0
IGZvciB0ZXN0aW5nIHRoZSBidWcgaW4gd2hpY2ggc29tZSB2aWRlbyB0ZXh0dXJlIHVwbG9hZHMK
KyAgICAgICAgd2VyZSBza2lwcGVkIGVycm9ybmVvdXNseS4KKworICAgICAgICAqIHdlYmdsL3Bl
bmRpbmcvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtaW1hZ2UtdmlkZW8tcmVwZWF0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ2wvcGVuZGluZy9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS12aWRlby1yZXBlYXRl
ZC5odG1sOiBBZGRlZC4KKwogMjAyMi0wMS0yMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtHTElCXSBHYXJkZW4gZmFzdC9tZWRpYXN0cmVhbS9nZXRV
c2VyTWVkaWEtdG8tY2FudmFzLSouaHRtbCBmYWlsdXJlIGZvciBXUEUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdsL3BlbmRpbmcvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtaW1h
Z2UtdmlkZW8tcmVwZWF0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3BlbmRpbmcvY29uZm9y
bWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtaW1hZ2UtdmlkZW8tcmVwZWF0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40OTc3ZDQ5ZjE4NGQyZWUwMDk5OTM4OTkyMDZhNzkzYWQ4MGFjMDFlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcGVuZGluZy9jb25mb3JtYW5jZS90ZXh0dXJlcy9t
aXNjL3RleC1pbWFnZS12aWRlby1yZXBlYXRlZC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhLS0g
VGhpcyBmaWxlIGlzIG1hbnVhbGx5IGVkaXRlZCBhbmQgc2hvdWxkIGJlIGRlbGV0ZWQgb25jZSB0
aGUgdGVzdCBpcyBtZXJnZWQgaW4gV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMgYW5kIGltcG9ydGVk
IGJhY2sgdG8gTGF5b3V0VGVzdHMuIC0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIENvbmZvcm1hbmNlIFRlc3Qg
V3JhcHBlciBmb3IgY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFs
aWFzLmh0bWw8L3RpdGxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL3Jlc291cmNlcy93ZWJraXQtd2ViZ2wtdGVzdC1oYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IHJ1bnMgdGhl
IFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9y
IEZBSUwuPC9wPgorVGVzdDogPGEgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtaW1hZ2UtdmlkZW8tcmVwZWF0ZWQu
aHRtbCI+Li4vLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvbWlzYy90ZXgtaW1hZ2UtdmlkZW8tcmVwZWF0ZWQuaHRtbDwvYT4KKzxkaXYgaWQ9Imlm
cmFtZSI+Cis8aWZyYW1lIHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtaW1hZ2UtdmlkZW8tcmVwZWF0ZWQuaHRtbCIg
d2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiPjwvaWZyYW1lPgorPC9kaXY+Cis8ZGl2IGlkPSJyZXN1
bHQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z2wvcGVuZGluZy9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJl
cy9taXNjL3RleC1pbWFnZS12aWRlby1yZXBlYXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wv
cGVuZGluZy9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9t
aXNjL3RleC1pbWFnZS12aWRlby1yZXBlYXRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2MTcwNDNlMWE1
ZGIwMmE2MzczYTVjNjE3OTQ3OWQ2MmEwMDVkNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9wZW5kaW5nL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
L3RleHR1cmVzL21pc2MvdGV4LWltYWdlLXZpZGVvLXJlcGVhdGVkLmh0bWwKQEAgLTAsMCArMSwx
MDggQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAxOSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3Zh
ciBnbCA9IG51bGw7Cit2YXIgdGV4dHVyZUxvYyA9IG51bGw7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gZmFsc2U7Cit2YXIgYmx1ZSA9IFswLCAwLCAyNDhdOwordmFyIHllbGxvdyA9IFsyNTUs
IDI1NSwgMF07Cit2YXIgYmxhY2sgPSBbMCwgMCwgMF07Citpbml0VGVzdGluZ0hhcm5lc3MoKTsK
KworZnVuY3Rpb24gaW5pdCgpCit7CisgICAgZGVzY3JpcHRpb24oJ1ZlcmlmeSBvcHRpbWl6YXRp
b24gb2YgcmVwZWF0ZWQgdXBsb2FkcyBvZiBIVE1MVmlkZW9FbGVtZW50IHRvIGEgdGV4dHVyZScp
OworCisgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImV4YW1wbGUi
KTsKKyAgICBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQoY2FudmFzLCB7IGFudGlhbGlhczogZmFs
c2UsIGRlcHRoOiBmYWxzZSB9KTsKKyAgICBjb25zdCBwcm9ncmFtID0gd3R1LnNldHVwVGV4dHVy
ZWRRdWFkKGdsKTsKKyAgICBnbC5jbGVhckNvbG9yKDAsMCwwLDEpOworICAgIGdsLmNsZWFyRGVw
dGgoMSk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZF
Ul9CSVQpOworICAgIGNvbnN0IHRleHR1cmVMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbSwgInRleCIpOworICAgIGdsLnVuaWZvcm0xaSh0ZXh0dXJlTG9jLCAwKTsKKyAgICBnbC52
aWV3cG9ydCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworCisgICAgY29uc3Qg
dmlkZW8xID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvMSIpOworICAgIGNvbnN0IHZp
ZGVvMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbzIiKTsKKyAgICB3dHUuc3RhcnRQ
bGF5aW5nQW5kV2FpdEZvclZpZGVvKHZpZGVvMSwgKHZpZGVvKSA9PiB7CisgICAgICAgIHd0dS5z
dGFydFBsYXlpbmdBbmRXYWl0Rm9yVmlkZW8odmlkZW8yLCAodmlkZW8pID0+IHsKKyAgICAgICAg
ICAgIHJ1blRlc3QodmlkZW8xLCB2aWRlbzIpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwor
ZnVuY3Rpb24gY2hlY2tGcmFtZWJ1ZmZlckhhc1ZpZGVvMihnbCkKK3sKKyAgICBjb25zdCBsZWZ0
Q29sb3IgPSBibHVlOworICAgIGNvbnN0IHJpZ2h0Q29sb3IgPSB5ZWxsb3c7CisgICAgY29uc3Qg
dG9sZXJhbmNlID0gNTsKKyAgICBkZWJ1ZygiQ2hlY2tpbmcgbWlkIGxlZnQgYm9yZGVyIik7Cisg
ICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgNCwgMjAsIDIsIDIsIGxlZnRDb2xvciwgInNob3Vs
ZEJlICIgKyBsZWZ0Q29sb3IsIHRvbGVyYW5jZSk7CisgICAgZGVidWcoIkNoZWNraW5nIG1pZCBy
aWdodCBib3JkZXIiKTsKKyAgICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBnbC5jYW52YXMud2lk
dGggLSA0LCBnbC5jYW52YXMuaGVpZ2h0IC0gMjAsIDIsIDIsIHJpZ2h0Q29sb3IsICJzaG91bGRC
ZSAiICsgcmlnaHRDb2xvciwgdG9sZXJhbmNlKTsKK30KKworZnVuY3Rpb24gdGVzdFR3b1RleHR1
cmVzQnVnMSh2aWRlbzEsIHZpZGVvMikKK3sKKyAgICBkZWJ1ZygiVGVzdGluZyB1cGxvYWRpbmcg
c2FtZSB2aWRlbyB0byB0d28gZGlmZmVyZW50IHRleHR1cmVzIGRvZXMgbm90IHNraXAgdGhlIGxh
dHRlciB1cGxvYWQiKQorICAgIGNvbnN0IHRleHR1cmVzID0gW2dsLmNyZWF0ZVRleHR1cmUoKSwg
Z2wuY3JlYXRlVGV4dHVyZSgpXTsKKyAgICAvLyBJbml0aWFsaXplIHRleHR1cmVbMF0gdG8gc29t
ZSBzcGVjaWZpYyBjb250ZW50IHRoYXQgZmFpbHMgdGhlIHRlc3QuCisgICAgLy8gSW5pdGlhbGl6
YXRpb24gaXMgZG9uZSB3aXRoIHZpZGVvIHRvIGV4ZXJjaXNlIHRoZSB2aWRlbyBjb250ZW50IGlk
ZW50aWZpY2F0aW9uCisgICAgLy8gYWxnb3JpdGhtLgorICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRF
WFRVUkVfMkQsIHRleHR1cmVzWzBdKTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHZpZGVvMSk7CisKKyAgICAv
LyBUcnkgdG8gZm9vbCB0aGUgdmlkZW8gY29udGVudCBpZGVudGlmaWNhdGlvbiBhbGdvcml0aG0g
YnkgZmlyc3QgdXBsb2FkaW5nCisgICAgLy8gdGhlIHBhc3NpbmcgY29udGVudCB0byBzb21lIG90
aGVyLCB1bnRlc3RlZCB0ZXh0dXJlLgorICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQs
IHRleHR1cmVzWzFdKTsKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJH
QkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIHZpZGVvMik7CisKKyAgICAvLyBVcGRhdGUg
dGV4dHVyZVswXSB0byBzb21lIGNvbnRlbnQgdGhhdCBwYXNzZXMgdGhlIHRlc3QuCisgICAgZ2wu
YmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZXNbMF0pOworICAgIGdsLnRleEltYWdl
MkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
dmlkZW8yKTsKKworICAgIC8vIFZlcmlmeSB0aGF0IHRoZSB0ZXh0dXJlWzBdIHJlY2VpdmVkIHRo
ZSBuZXcgY29udGVudC4KKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRF
WFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKyAgICBnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19F
REdFKTsKKyAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JB
UF9ULCBnbC5DTEFNUF9UT19FREdFKTsKKworICAgIHd0dS5jbGVhckFuZERyYXdVbml0UXVhZChn
bCwgWzI1NSwgMCwgMCwgMjU1XSk7CisgICAgY2hlY2tGcmFtZWJ1ZmZlckhhc1ZpZGVvMihnbCk7
Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QodmlkZW8xLCB2aWRlbzIpCit7CisgICAgdGVzdFR3b1Rl
eHR1cmVzQnVnMSh2aWRlbzEsIHZpZGVvMik7CisgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJzaG91bGQgYmUgbm8gZXJyb3JzIik7CisgICAgZmluaXNoVGVzdCgpOwor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImluaXQoKSI+Cis8Y2FudmFzIGlk
PSJleGFtcGxlIiB3aWR0aD0iNjQiIGhlaWdodD0iNDgiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8dmlkZW8gaWQ9InZp
ZGVvMSIgPgorICA8c291cmNlIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vcmVzb3VyY2VzL3dlYmds
X3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3JlZC1ncmVlbi5tcDQiICB0eXBlPSd2aWRlby9tcDQ7IGNv
ZGVjcz0iYXZjMS40MkUwMUUiJyAvPgorICA8c291cmNlIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3JlZC1ncmVlbi53ZWJtdnA4Lndl
Ym0iIHR5cGU9J3ZpZGVvL3dlYm07IGNvZGVjcz0idnA4IicgLz4KKyAgPHNvdXJjZSBzcmM9Ii4u
Ly4uLy4uLy4uLy4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9yZWQt
Z3JlZW4udGhlb3JhLm9ndiIgIHR5cGU9J3ZpZGVvL29nZzsgY29kZWNzPSJ0aGVvcmEiJyAvPgor
PC92aWRlbz4KKzx2aWRlbyBpZD0idmlkZW8yIiA+CisgICAgPHNvdXJjZSBzcmM9Ii4uLy4uLy4u
Ly4uLy4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy92aWRlby1yb3Rh
dGlvbi0wLm1wNCIgIHR5cGU9J3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxLjQyRTAxRSInIC8+Cisg
IDwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449664</attachid>
            <date>2022-01-21 09:10:18 -0800</date>
            <delta_ts>2022-01-24 00:53:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203148-20220121191016.patch</filename>
            <type>text/plain</type>
            <size>30581</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZlZGYzM2Y1NGIzNmVl
MTVlMzdhZjlhZWIxMjAyNDM2YjE3YjBjYy4uYmU2M2Q4MjEzOWI1N2I3ZWZmMGQ2NDM3NzU3ZjYx
NmY5MDlmNzYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIyLTAxLTIxICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgdGV4SW1hZ2UyZCBm
YWlscyB0byBzZXQgc2FtZSB2aWRlbyBmcmFtZSB0byBtdWx0aXBsZSB0ZXh0dXJlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTQ4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81NjQzNjc0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWJHTCBvcHRpbWl6ZXMgcmVwZWF0ZWQgdmlkZW8gdXBsb2Fk
cyB0byBzYW1lIHRleHR1cmUsIGR1ZSB0byB0aGlzIGJlaW5nCisgICAgICAgIHVzdWFsIHByYWN0
aWNlIGFtb25nIHBhZ2VzLiBSZWFzb24gaXMgdGhhdCB0aGVyZSBhcmUgbm8gQVBJIHRvIGtub3cg
d2hlbiB0aGUgCisgICAgICAgIHZpZGVvIGZyYW1lIHVwZGF0ZXMuCisgICAgICAgIFRoZSBhbGdv
cml0aG0gd2FzOgorICAgICAgICAgLSBJZiB0aGUgSU9TdXJmYWNlIGlzIHRoZSBzYW1lIGFzIGlu
IHRoZSBsYXN0IGNhbGwKKyAgICAgICAgIC0gSWYgdGhlIHRleHR1cmUgY29udGVudHMgaGFzIG5v
dCBjaGFuZ2VkIHNpbmNlIHdlIGxhc3QgbW9kaWZpZWQgdGhpcyB0ZXh0dXJlCisgICAgICAgICB0
aGVuIHNraXAgdGhlIHVwbG9hZC4KKyAgICAgICAgSG93ZXZlciwgdGhpcyBsb2dpYyBza2lwcyBl
cnJvcm5lb3VzbHkgaWYgdGhlICJsYXN0IGNhbGwiIHVwZGF0ZXMgc29tZSBvdGhlciB0ZXh0dXJl
LgorICAgICAgICBGaXggYW5kIHRlc3QgdGhlIGFib3ZlLgorCisgICAgICAgIFRoZXJlIGFyZSBv
dGhlciBpc3N1ZXMgZm9yIHRoZSBjdXJyZW50IGFsZ29yaXRobS4gVGhpcyBwYXRjaCBmaXhlcyBz
b21lIG90aGVyIHRoZW9yZXRpY2FsIG9uZXM6CisgICAgICAgICAtIElmIHRoZSB0ZXh0dXJlIGlz
IGRlbGV0ZWQgYW5kIG5ldyBvbmUgZ2V0cyBhc3NpZ25lZCB0aGUgc2FtZSB0ZXh0dXJlIGlkIGFu
ZCB0aGUgY29udGVudAorICAgICAgICAgICBzZWVkIHdvdWxkIGNsYXNoCisgICAgICAgICAtIFZp
ZGVvIHdhcyB1cGxvYWRlZCB0byBhIGRpZmZlcmVudCBsZXZlbAorCisgICAgICAgIFByZXZpb3Vz
IGltcGxlbWVudGF0aW9uIHdhcyBrZWVwaW5nIHBlci10ZXh0dXJlIHNlZWQgdmFsdWUgbWFwIGlu
IHRoZSBjb250ZXh0IChHcmFwaGljc0NvbnRleHRHTEFOR0xFKQorICAgICAgICBhbmQgcGVyLXRl
dHVyZSBzZWVkIHZhbHVlIG1hcCBpbiB0aGUgdGV4dHVyZSB1cGxvYWQgaGVscGVyIChHcmFwaGlj
c0NvbnRleHRHTENWQ29jb2EpIGFuZCBsYXN0CisgICAgICAgIHVwbG9hZGVkIElPU3VyZmFjZSBz
ZWVkIGluIHRoZSB1cGxvYWQgaGVscGVyIChub3QgcGVyIHRleHR1cmUpLgorCisgICAgICAgIFRo
ZSBpbXBsbWVudGF0aW9uIGluIHRoaXMgcGF0Y2gga2VlcHMgcGVyLXRleHR1cmUga25vd24gY29u
dGVudCBkZXNjcmlwdGlvbiBpbiB0aGUgdGV4dHVyZSB1cGxvYWQgaGVscGVyCisgICAgICAgIGFu
ZCBpbnZhbGlkYXRlcyB0aGlzIHdoZW4gZWFjaCB0ZXh0dXJlIGNoYW5nZXMuIFRoZSBrbm93biBj
b250ZW50IGRlc2NyaXB0aW9uIGlzIHRoZQorICAgICAgICBwYXJhbWV0ZXIgbGlzdCBvZiB0aGUg
dGV4dHVyZSB1cGxvYWQgY2FsbC4KKworICAgICAgICBUZXN0OiB3ZWJnbC9wZW5kaW5nL2NvbmZv
cm1hbmNlL3RleHR1cmVzL21pc2MvdGV4LWltYWdlLXZpZGVvLXJlcGVhdGVkLmh0bWwKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMU3RhdGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMU3RhdGU6OnNldEJvdW5kVGV4dHVyZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp0ZXhJbWFnZTJE
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRleFN1YkltYWdl
MkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Y29tcHJlc3Nl
ZFRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6dGV4U3RvcmFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQU5HTEU6OnRleFN0b3JhZ2UzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEFOR0xFOjp0ZXhJbWFnZTJERGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQU5HTEU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjppbnZhbGlkYXRlS25vd25UZXh0dXJlQ29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp0ZXh0dXJl
U2VlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6aW52YWxpZGF0ZUtub3duVGV4dHVyZUNvbnRlbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTENWQ29jb2E6OlRleHR1cmVDb250ZW50Ojpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZD
b2NvYTo6Y29weVZpZGVvU2FtcGxlVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQ1ZDb2NvYTo6aW52YWxpZGF0ZUtub3duVGV4dHVyZUNvbnRlbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5oOgor
CiAyMDIyLTAxLTIwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtDb2NvYV0gQWNjZWxlcmF0ZWQgZmlsdGVycyBhcmUgZW5hYmxlZCBieSB0aGUgd3Jvbmcg
c2V0dGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0xTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oCmluZGV4IDUwNWU4YTVkZTdiMmY0YTA1NjJkMWM2Yjg0
ODNiNGQ3ZTljZWUxZGMuLjViNjNhMGZkMTE0YmI3N2EyYzM2ODRjM2Q2YzFkZTZiNzVjY2NiOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTFN0YXRlLmgKQEAgLTY5LDkgKzY5LDYgQEAgc3RydWN0IEdyYXBoaWNzQ29u
dGV4dEdMU3RhdGUgewogICAgIHsKICAgICAgICAgYm91bmRUZXh0dXJlTWFwLnNldCh0ZXh0dXJl
VW5pdCwgc3RkOjptYWtlX3BhaXIodGV4dHVyZSwgdGFyZ2V0KSk7CiAgICAgfQotCi0gICAgdXNp
bmcgVGV4dHVyZVNlZWRDb3VudCA9IEhhc2hDb3VudGVkU2V0PEdDR0x1aW50LCBJbnRIYXNoPEdD
R0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxHQ0dMdWludD4+Owot
ICAgIFRleHR1cmVTZWVkQ291bnQgdGV4dHVyZVNlZWRDb3VudDsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggNmQxMDY2YTViOTVhNDAxZTY4OTQ1MGRlZWM1
NDVkN2FkMWU3NDJjMy4uNmVjNmU1NzU1ZjU1MGE1NTAxMzcxMWE0MTdhYjE3YjU1YmExMGIwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTM1OSw4ICszNTksOCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bQogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBHTF9UZXhJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBw
aXhlbHMuYnVmU2l6ZSwgcGl4ZWxzLmRhdGEpOwotICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3Vu
dC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwotICAgIH0KKyAgICBpbnZhbGlk
YXRlS25vd25UZXh0dXJlQ29udGVudChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Cit9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewpAQCAtMzc0LDcgKzM3NCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpCiAKICAgICAvLyBGSVhNRTogd2Ugd2lsbCBuZWVkIHRvIGRl
YWwgd2l0aCBQaXhlbFN0b3JlIHBhcmFtcyB3aGVuIGRlYWxpbmcgd2l0aCBpbWFnZSBidWZmZXJz
IHRoYXQgZGlmZmVyIGZyb20gdGhlIHN1YmltYWdlIHNpemUuCiAgICAgR0xfVGV4U3ViSW1hZ2Uy
RFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzLmJ1ZlNpemUsIHBpeGVscy5kYXRhKTsKLSAgICBtX3N0YXRlLnRl
eHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKKyAgICBp
bnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUo
KSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZiwgR0NHTGludCB5b2ZmLCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IGludCBsZXZlbCwgR0MKICAgICAgICAgcmV0dXJuOwogCiAgICAgR0xfQ29tcHJlc3NlZFRleElt
YWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwgZGF0YS5kYXRhKTsKLSAgICBt
X3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgp
KTsKKyAgICBpbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChtX3N0YXRlLmN1cnJlbnRCb3Vu
ZFRleHR1cmUoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Y29tcHJlc3Nl
ZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIGludCBib3JkZXIsIEdD
R0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQpAQCAtNDAyLDcgKzQwMiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsCiAgICAgICAgIHJldHVybjsKIAogICAgIEdMX0NvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEuYnVmU2l6ZSwgZGF0
YS5kYXRhKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVu
dEJvdW5kVGV4dHVyZSgpKTsKKyAgICBpbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChtX3N0
YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWws
IGludCB4b2Zmc2V0LCBpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zm
c2V0KQpAQCAtODUyLDcgKzg1Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dGV4
U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHCiAgICAgICAg
IHJldHVybjsKIAogICAgIEdMX1RleFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQo
bV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOworICAgIGludmFsaWRhdGVLbm93blRleHR1
cmVDb250ZW50KG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6
ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpCkBAIC04NjEsNyArODYxLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
c2l6ZWkgbGV2ZWxzLCBHQ0cKICAgICAgICAgcmV0dXJuOwogCiAgICAgR0xfVGV4U3RvcmFnZTNE
KHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOwot
ICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0
dXJlKCkpOworICAgIGludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KG1fc3RhdGUuY3VycmVu
dEJvdW5kVGV4dHVyZSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp0ZXhJ
bWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgaW50IGxldmVsLCBpbnQgaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiBwaXhlbHMpCkBAIC0xMDAwLDcgKzEwMDAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OnRleEltYWdlMkREaXJlY3QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
QwogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICBH
TF9UZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVk
Q291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKKyAgICBpbnZhbGlkYXRl
S25vd25UZXh0dXJlQ29udGVudChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Y29weVRleEltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIpCkBAIC0xMTUxLDcgKzExNTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YQogICAgICAg
ICByZXR1cm47CiAKICAgICBHTF9GcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1l
bnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwotICAgIG1fc3RhdGUudGV4dHVyZVNlZWRD
b3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOworICAgIGludmFsaWRhdGVL
bm93blRleHR1cmVDb250ZW50KG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkKQEAg
LTIwOTMsNyArMjA5Myw3IEBAIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xBTkdM
RTo6Y3JlYXRlVGV4dHVyZSgpCiAKICAgICBHTHVpbnQgbyA9IDA7CiAgICAgR0xfR2VuVGV4dHVy
ZXMoMSwgJm8pOwotICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobyk7CisgICAgaW52
YWxpZGF0ZUtub3duVGV4dHVyZUNvbnRlbnQobyk7CiAgICAgcmV0dXJuIG87CiB9CiAKQEAgLTIx
NTUsNyArMjE1NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6ZGVsZXRlVGV4dHVy
ZShQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUpCiAgICAgICAgIHJldHVybiBrZXlWYWx1ZS52YWx1
ZS5maXJzdCA9PSB0ZXh0dXJlOwogICAgIH0pOwogICAgIEdMX0RlbGV0ZVRleHR1cmVzKDEsICZ0
ZXh0dXJlKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQucmVtb3ZlQWxsKHRleHR1cmUp
OworICAgIGludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KHRleHR1cmUpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9y
KQpAQCAtMjk5Myw5ICsyOTkzLDggQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnQKICAgICByZXR1
cm4gcmVhZENvbXBvc2l0ZWRSZXN1bHRzKCk7CiB9CiAKLXVuc2lnbmVkIEdyYXBoaWNzQ29udGV4
dEdMQU5HTEU6OnRleHR1cmVTZWVkKEdDR0x1aW50IHRleHR1cmUpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEU6OmludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KEdDR0x1aW50KQogewot
ICAgIHJldHVybiBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuY291bnQodGV4dHVyZSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAppbmRleCBjYTg3MmFlNThjZGE1MWExNjU5
MjFiYzUwOTJiNTdjMjEwMzM4ZDQ4Li5mOGMwOThiYWQ1NzM2NzQ1NjQ2YmM1YmRhOGU5NjE2YzQ0
N2I3NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zNTUsOCArMzU1LDYg
QEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdS
ZXN1bHRzRm9yUGFpbnRpbmcoKTsKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFk
Q29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpOwogCi0gICAgdW5zaWduZWQgdGV4dHVyZVNl
ZWQoR0NHTHVpbnQgdGV4dHVyZSk7Ci0KICAgICBjb25zdGV4cHIgc3RhdGljIEVHTE5hdGl2ZURp
c3BsYXlUeXBlIGRlZmF1bHREaXNwbGF5ID0gRUdMX0RFRkFVTFRfRElTUExBWTsKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBjb25zdGV4cHIgc3RhdGljIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGxv
d1Bvd2VyRGlzcGxheSA9IEVHTF9DQVNUKEVHTE5hdGl2ZURpc3BsYXlUeXBlLCAtMSk7CkBAIC00
MDYsNiArNDA0LDggQEAgcHJvdGVjdGVkOgogICAgIC8vIFBsYXRmb3JtIHNwZWNpZmljIGJlaGF2
aW9yIGZvciByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1SZWxl
YXNlVGhyZWFkUmVzb3VyY2VzKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUtub3du
VGV4dHVyZUNvbnRlbnQoR0NHTHVpbnQpOworCiAgICAgR0NHTHVpbnQgbV90ZXh0dXJlIHsgMCB9
OwogICAgIEdDR0x1aW50IG1fZmJvIHsgMCB9OwogICAgIEdDR0x1aW50IG1fZGVwdGhTdGVuY2ls
QnVmZmVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCmluZGV4IDMwODk4MDA3
ZWYyZmY2NjkyNjlhZjY0ZjY5MTJjOTA5NjhmNzk0ZGYuLmM5ZmJlMGJhMDVhMmJjMjM1NzAwYTZl
NmM5OTY0ZWZkYmMxYjYxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKQEAgLTgw
LDYgKzgwLDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBHcmFwaGljc0NvbnRleHRHTENv
Y29hKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBQcm9jZXNzSWRlbnRp
dHkmJiByZXNvdXJjZU93bmVyKTsKICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKKworICAgIC8v
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgb3ZlcnJpZGVzLgorICAgIHZvaWQgaW52YWxpZGF0ZUtu
b3duVGV4dHVyZUNvbnRlbnQoR0NHTHVpbnQpIGZpbmFsOworCiAjaWYgRU5BQkxFKFZJREVPKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRHTENWQ29jb2E+IG1fY3Y7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IDUzMDJhNzFhOTBlNmRiNTE2
MzU2OTBkN2IwMGFlMDNhMWZhNTlhMTcuLjcxMjlmMjI0YzI2NDBhZTQ5ZjdjOTMyZTA3Yzk0NTJm
OTM0NjA0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtODIwLDYgKzgy
MCwxMiBAQCBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFw
aGljc0NvbnRleHRHTENvY29hOjpsYXllckNvbnRlbgogICAgIHJldHVybiBudWxscHRyOwogfQog
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmludmFsaWRhdGVLbm93blRleHR1cmVDb250
ZW50KEdDR0x1aW50IHRleHR1cmUpCit7CisgICAgaWYgKG1fY3YpCisgICAgICAgIG1fY3YtPmlu
dmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KHRleHR1cmUpOworfQorCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hLmNwcAppbmRleCBkNDUy
MDQ5Y2FkMzczMGJmOTkzMDllNzZmMjI5NzU4NzA2MWE4OTY4Li41M2U5ZjJkMzNmOTJhNjRhYTEy
NWNlMzA1ZjQ5NmU1YWRiNWY5NjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5jcHAK
QEAgLTQ0NCw2ICs0NDQsMTggQEAgc3RhdGljIGNvbnN0IEdMZmxvYXQqIFlDYkNyVG9SR0JNYXRy
aXhGb3JSYW5nZUFuZFRyYW5zZmVyRnVuY3Rpb24oUGl4ZWxSYW5nZSByYW4KICAgICByZXR1cm4g
aXRlcmF0b3ItPnNlY29uZDsKIH0KIAoraW5saW5lIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkNv
Y29hOjpUZXh0dXJlQ29udGVudDo6b3BlcmF0b3I9PShjb25zdCBUZXh0dXJlQ29udGVudCYgb3Ro
ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1cmZhY2UgPT0gb3RoZXIuc3VyZmFjZQorICAgICAg
ICAmJiBzdXJmYWNlU2VlZCA9PSBvdGhlci5zdXJmYWNlU2VlZAorICAgICAgICAmJiBsZXZlbCA9
PSBvdGhlci5sZXZlbAorICAgICAgICAmJiBpbnRlcm5hbEZvcm1hdCA9PSBvdGhlci5pbnRlcm5h
bEZvcm1hdAorICAgICAgICAmJiBmb3JtYXQgPT0gb3RoZXIuZm9ybWF0CisgICAgICAgICYmIHR5
cGUgPT0gb3RoZXIudHlwZQorICAgICAgICAmJiB1bnBhY2tGbGlwWSA9PSBvdGhlci51bnBhY2tG
bGlwWQorICAgICAgICAmJiBJbWFnZU9yaWVudGF0aW9uOjpPcmllbnRhdGlvbihvcmllbnRhdGlv
bikgPT0gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb24ob3RoZXIub3JpZW50YXRpb24pOwor
fQorCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0R0xDVkNvY29hPiBHcmFwaGljc0Nv
bnRleHRHTENWQ29jb2E6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHTENvY29hJiBjb250ZXh0KQog
ewogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRHTENWQ29jb2E+IGN2IHsgbmV3
IEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYShjb250ZXh0KSB9OwpAQCAtNTkzLDE0ICs2MDUsMTQg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENWQ29jb2E6OmNvcHlWaWRlb1NhbXBsZVRvVGV4dHVy
ZShjb25zdCBNZWRpYVNhbXBsZVZpZGVvRnIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
YXV0byBvcmllbnRhdGlvbiA9IHZpZGVvRnJhbWUub3JpZW50YXRpb24oKTsKLSAgICBhdXRvIG5l
d1N1cmZhY2VTZWVkID0gSU9TdXJmYWNlR2V0U2VlZChzdXJmYWNlKTsKLSAgICBpZiAoSW1hZ2VP
cmllbnRhdGlvbjo6T3JpZW50YXRpb24ob3JpZW50YXRpb24pID09IEltYWdlT3JpZW50YXRpb246
Ok9yaWVudGF0aW9uKG1fbGFzdFN1cmZhY2VPcmllbnRhdGlvbikKLSAgICAgICAgJiYgdW5wYWNr
RmxpcFkgPT0gbV9sYXN0VW5wYWNrRmxpcFkKLSAgICAgICAgJiYgbmV3U3VyZmFjZVNlZWQgPT0g
bV9sYXN0U3VyZmFjZVNlZWQKLSAgICAgICAgJiYgbGFzdFRleHR1cmVTZWVkKG91dHB1dFRleHR1
cmUpID09IG1fb3duZXIudGV4dHVyZVNlZWQob3V0cHV0VGV4dHVyZSkpIHsKLSAgICAgICAgLy8g
SWYgdGhlIHRleHR1cmUgaGFzbid0IGJlZW4gbW9kaWZpZWQgc2luY2UgdGhlIGxhc3QgdGltZSB3
ZSBjb3BpZWQgdG8gaXQsIGFuZCB0aGUKLSAgICAgICAgLy8gaW1hZ2UgaGFzbid0IGJlZW4gbW9k
aWZpZWQgc2luY2UgdGhlIGxhc3QgdGltZSBpdCB3YXMgY29waWVkLCB0aGlzIGlzIGEgbm8tb3Au
Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgIFRleHR1cmVDb250ZW50IGNvbnRlbnQgeyByZWlu
dGVycHJldF9jYXN0PGludHB0cl90PihzdXJmYWNlKSwgSU9TdXJmYWNlR2V0U2VlZChzdXJmYWNl
KSwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHVucGFja0ZsaXBZLCBvcmll
bnRhdGlvbiB9OworICAgIGF1dG8gaXQgPSBtX2tub3duQ29udGVudC5maW5kKG91dHB1dFRleHR1
cmUpOworICAgIGlmIChpdCAhPSBtX2tub3duQ29udGVudC5lbmQoKSkgeworICAgICAgICBpZiAo
aXQtPnZhbHVlID09IGNvbnRlbnQpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSB0ZXh0dXJlIGhh
c24ndCBiZWVuIG1vZGlmaWVkIHNpbmNlIHRoZSBsYXN0IHRpbWUgd2UgY29waWVkIHRvIGl0LCBh
bmQgdGhlCisgICAgICAgICAgICAvLyBpbWFnZSBoYXNuJ3QgYmVlbiBtb2RpZmllZCBzaW5jZSB0
aGUgbGFzdCB0aW1lIGl0IHdhcyBjb3BpZWQsIHRoaXMgaXMgYSBuby1vcC4KKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogICAgIGlmICghbV9jb250ZXh0IHx8ICFH
cmFwaGljc0NvbnRleHRHTENvY29hOjptYWtlQ3VycmVudChtX2Rpc3BsYXksIG1fY29udGV4dCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc0NiwxNSArNzU4LDE2IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xDVkNvY29hOjpjb3B5VmlkZW9TYW1wbGVUb1RleHR1cmUoY29uc3QgTWVkaWFT
YW1wbGVWaWRlb0ZyCiAgICAgLy8gRG8gdGhlIGFjdHVhbCBkcmF3aW5nLgogICAgIEdMX0RyYXdB
cnJheXMoR0xfVFJJQU5HTEVTLCAwLCA2KTsKIAotICAgIG1fbGFzdFVucGFja0ZsaXBZID0gdW5w
YWNrRmxpcFk7Ci0gICAgbV9sYXN0U3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgbV9sYXN0U3VyZmFj
ZVNlZWQgPSBuZXdTdXJmYWNlU2VlZDsKLSAgICBtX2xhc3RTdXJmYWNlT3JpZW50YXRpb24gPSBv
cmllbnRhdGlvbjsKLSAgICBtX2xhc3RUZXh0dXJlU2VlZC5zZXQob3V0cHV0VGV4dHVyZSwgbV9v
d25lci50ZXh0dXJlU2VlZChvdXRwdXRUZXh0dXJlKSk7CisgICAgbV9rbm93bkNvbnRlbnQuc2V0
KG91dHB1dFRleHR1cmUsIGNvbnRlbnQpOwogICAgIGF1dG9DbGVhclRleHR1cmVPbkVycm9yLnJl
bGVhc2UoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRHTENW
Q29jb2E6OmludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KEdDR0x1aW50IHRleHR1cmUpCit7
CisgICAgbV9rbm93bkNvbnRlbnQucmVtb3ZlKHRleHR1cmUpOworfQorCiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3ND
b250ZXh0R0xDVkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9H
cmFwaGljc0NvbnRleHRHTENWQ29jb2EuaAppbmRleCBjZDE1Y2NjZjA2ZTVmZWU5ZmUxOTE3OTM0
YWI3NjUxZGVlN2Y4ZjMyLi42NmY2ZGQzNzllMzJlZTJlY2I1Y2M3NjQxYjkxMWNjOGVhOGQ0NjI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGlj
c0NvbnRleHRHTENWQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9HcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMQ1YuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgi
CiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9VbnNhZmVQb2ludGVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E7CkBAIC00Niwx
MyArNDUsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb3B5VmlkZW9TYW1wbGVUb1RleHR1cmUo
Y29uc3QgTWVkaWFTYW1wbGVWaWRlb0ZyYW1lJiwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0
dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBGbGlwWSkgZmluYWw7CiAKKyAgICB2b2lkIGludmFsaWRhdGVL
bm93blRleHR1cmVDb250ZW50KEdDR0x1aW50IHRleHR1cmUpOwogcHJpdmF0ZToKICAgICBHcmFw
aGljc0NvbnRleHRHTENWQ29jb2EoR3JhcGhpY3NDb250ZXh0R0xDb2NvYSYpOwogCi0gICAgdW5z
aWduZWQgbGFzdFRleHR1cmVTZWVkKEdDR0x1aW50IHRleHR1cmUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gbV9sYXN0VGV4dHVyZVNlZWQuZ2V0KHRleHR1cmUpOwotICAgIH0KIAogICAgIEdyYXBo
aWNzQ29udGV4dEdMQ29jb2EmIG1fb3duZXI7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRH
TERpc3BsYXkgbV9kaXNwbGF5IHsgbnVsbHB0ciB9OwpAQCAtNzEsMTMgKzY3LDIxIEBAIHByaXZh
dGU6CiAgICAgR0NHTGludCBtX3lUZXh0dXJlU2l6ZVVuaWZvcm1Mb2NhdGlvbiB7IC0xIH07CiAg
ICAgR0NHTGludCBtX3V2VGV4dHVyZVNpemVVbmlmb3JtTG9jYXRpb24geyAtMSB9OwogCi0gICAg
RmxpcFkgbV9sYXN0VW5wYWNrRmxpcFkgeyBGbGlwWTo6Tm8gfTsKLSAgICBJbWFnZU9yaWVudGF0
aW9uIG1fbGFzdFN1cmZhY2VPcmllbnRhdGlvbjsKLSAgICBVbnNhZmVQb2ludGVyPElPU3VyZmFj
ZVJlZj4gbV9sYXN0U3VyZmFjZTsKLSAgICB1aW50MzJfdCBtX2xhc3RTdXJmYWNlU2VlZCB7IDAg
fTsKLQotICAgIHVzaW5nIFRleHR1cmVTZWVkTWFwID0gSGFzaE1hcDxHQ0dMdWludCwgdW5zaWdu
ZWQsIEludEhhc2g8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PEdDR0x1aW50Pj47Ci0gICAgVGV4dHVyZVNlZWRNYXAgbV9sYXN0VGV4dHVyZVNlZWQ7CisgICAg
c3RydWN0IFRleHR1cmVDb250ZW50IHsKKyAgICAgICAgLy8gVE9ETzogU3dpdGNoIGJhY2sgdG8g
VW5zYWZlUG9pbnRlcjxJT1N1cmZhY2VSZWY+IG9uY2UgVW5zYWZlUG9pbnRlciBpcyBzYWZlIHRv
IGNvbXBhcmUuCisgICAgICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvMjM1NDM1CisgICAgICAg
IGludHB0cl90IHN1cmZhY2UgeyAwIH07CisgICAgICAgIHVpbnQzMl90IHN1cmZhY2VTZWVkIHsg
MCB9OworICAgICAgICBHQ0dMaW50IGxldmVsIHsgMCB9OworICAgICAgICBHQ0dMZW51bSBpbnRl
cm5hbEZvcm1hdCB7IDAgfTsKKyAgICAgICAgR0NHTGVudW0gZm9ybWF0IHsgMCB9OworICAgICAg
ICBHQ0dMZW51bSB0eXBlIHsgMCB9OworICAgICAgICBGbGlwWSB1bnBhY2tGbGlwWSB7IEZsaXBZ
OjpObyB9OworICAgICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uOworICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dHVyZUNvbnRlbnQmIG90aGVyKSBjb25zdDsKKyAgICB9
OworICAgIHVzaW5nIFRleHR1cmVDb250ZW50TWFwID0gSGFzaE1hcDxHQ0dMdWludCwgVGV4dHVy
ZUNvbnRlbnQsIEludEhhc2g8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPEdDR0x1aW50Pj47CisgICAgVGV4dHVyZUNvbnRlbnRNYXAgbV9rbm93bkNvbnRlbnQ7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAppbmRleCA2MGJh
NDQzYTEzMTRkZGQ4YTNjNjQ0MzU2ZmJmYzVlNDA4MmJiZDY3Li5mMzBiNWUxZTZlYTlkMDE1Nzc0
ZjgwNjBiOTE1M2Y0N2UzMDYyZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5jcHAKQEAgLTEwMTMsNyArMTAxMyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0CiAgICAg
ICAgIHJldHVybjsKIAogICAgIDo6Z2xGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCh0YXJnZXQsIGF0
dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwotICAgIG1fc3RhdGUudGV4dHVy
ZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkKQEAgLTIx
OTMsNyArMjE5Miw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN1YkltYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMCiAKICAgICAvLyBGSVhNRTog
d2Ugd2lsbCBuZWVkIHRvIGRlYWwgd2l0aCBQaXhlbFN0b3JlIHBhcmFtcyB3aGVuIGRlYWxpbmcg
d2l0aCBpbWFnZSBidWZmZXJzIHRoYXQgZGlmZmVyIGZyb20gdGhlIHN1YmltYWdlIHNpemUuCiAg
ICAgOjpnbFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuZGF0YSk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2Vl
ZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQpAQCAtMjIwMiw3ICsyMjAwLDYgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmUKICAgICAgICAgcmV0dXJuOwogCiAgICAgOjpnbENvbXByZXNz
ZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YS5kYXRhKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVk
Q291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQpAQCAtMjIxMSw3ICsy
MjA4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGwKICAgICAgICAgcmV0dXJuOwogCiAgICAg
OjpnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhLmRhdGEpOwotICAgIG1f
c3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkp
OwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVC
dWZmZXIoKQpAQCAtMjI2Nyw3ICsyMjYzLDYgQEAgUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y3JlYXRlVGV4dHVyZSgpCiAKICAgICBHTHVpbnQgbyA9IDA7CiAgICAg
Z2xHZW5UZXh0dXJlcygxLCAmbyk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChv
KTsKICAgICByZXR1cm4gbzsKIH0KIApAQCAtMjMyNyw3ICsyMzIyLDYgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUp
CiAgICAgICAgIHJldHVybiBrZXlWYWx1ZS52YWx1ZS5maXJzdCA9PSB0ZXh0dXJlOwogICAgIH0p
OwogICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1cmUpOwotICAgIG1fc3RhdGUudGV4dHVy
ZVNlZWRDb3VudC5yZW1vdmVBbGwodGV4dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQpAQCAtMjM2Myw3ICsy
MzU3LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRERpcmVjdChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEcKICAgICAgICAgcmV0dXJuOwogCiAgICAg
OjpnbFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAgIG1fc3RhdGUudGV4dHVyZVNl
ZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUs
IEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKQEAg
LTI1MTAsNyArMjUwMyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN0b3Jh
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDCiAgICAgICAgIHJldHVy
bjsKIAogICAgIDo6Z2xUZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3Rh
dGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoKQpAQCAtMjUxOSw3ICsyNTExLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVs
cywgR0MKICAgICAgICAgcmV0dXJuOwogCiAgICAgOjpnbFRleFN0b3JhZ2UzRCh0YXJnZXQsIGxl
dmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKLSAgICBtX3N0YXRl
LnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0K
ICNlbHNlCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRlcm5hbGZvcm1hdGl2
KEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xTcGFuPEdDR0xpbnQ+KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCA0NjVjYmM2Mjc3YzI4YWM3OGM4ZGM3MDE5
N2ZkMWViMjZlNjIwMDAwLi45MWZlZmVmNTEyZjY1MjhiYzNhNzc4MzFlYmU5YjY0NTFkOTc0NTZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNDEyLDggKzQxMiw2IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2ltdWxhdGVFdmVudEZvclRlc3RpbmcoU2ltdWxhdGVkRXZl
bnRGb3JUZXN0aW5nKSBvdmVycmlkZTsKIAotICAgIHVuc2lnbmVkIHRleHR1cmVTZWVkKEdDR0x1
aW50IHRleHR1cmUpIHsgcmV0dXJuIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5jb3VudCh0ZXh0
dXJlKTsgfQotCiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheSgpIG92ZXJyaWRlOwogCiBwcm90
ZWN0ZWQ6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggNjUzMDYzOTUzYzU0YzhhNGI2YmY5ODVkMzAwNDdjY2M1ZmZhM2IxMy4u
MTUxZTY1OTVhMGMxODFlN2ZhYWMzNGNhNGRhYTdhZmY4MDUwYjhiNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDIyLTAxLTIxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+
CisKKyAgICAgICAgdGV4SW1hZ2UyZCBmYWlscyB0byBzZXQgc2FtZSB2aWRlbyBmcmFtZSB0byBt
dWx0aXBsZSB0ZXh0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAzMTQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjQzNjc0NT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGZv
ciB0ZXN0aW5nIHRoZSBidWcgaW4gd2hpY2ggc29tZSB2aWRlbyB0ZXh0dXJlIHVwbG9hZHMKKyAg
ICAgICAgd2VyZSBza2lwcGVkIGVycm9ybmVvdXNseS4KKworICAgICAgICAqIHdlYmdsL3BlbmRp
bmcvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtaW1hZ2UtdmlkZW8tcmVwZWF0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogd2ViZ2wvcGVuZGluZy9jb25mb3JtYW5jZS90ZXh0dXJlcy9t
aXNjL3RleC1pbWFnZS12aWRlby1yZXBlYXRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHdlYmdsL3BlbmRpbmcvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvbWlzYy90ZXgtaW1hZ2UtdmlkZW8tcmVwZWF0ZWQuaHRtbDogQWRkZWQuCisKIDIw
MjItMDEtMjEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbR0xJQl0gR2FyZGVuIGZhc3QvbWVkaWFzdHJlYW0vZ2V0VXNlck1lZGlhLXRvLWNhbnZhcy0q
Lmh0bWwgZmFpbHVyZSBmb3IgV1BFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9wZW5k
aW5nL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4LWltYWdlLXZpZGVvLXJlcGVhdGVkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL3BlbmRpbmcvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvbWlzYy90ZXgtaW1hZ2UtdmlkZW8tcmVwZWF0ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhkYzBiYjRiNTU5ZWUyMWMzMTBmMzQ0NTY2YzQ4MDI1NzUxZjI4NDcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJnbC9wZW5kaW5nL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2Mv
dGV4LWltYWdlLXZpZGVvLXJlcGVhdGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Ro
aXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5k
IHJlcG9ydHMgUEFTUyBvciBGQUlMLgorCitUZXN0OiAuLi8uLi8uLi9yZXNvdXJjZXMvd2ViZ2xf
dGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS12aWRlby1yZXBl
YXRlZC5odG1sCitbIFBBU1MgXSBBbGwgdGVzdHMgcGFzc2VkCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJnbC9wZW5kaW5nL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4LWltYWdlLXZp
ZGVvLXJlcGVhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9wZW5kaW5nL2NvbmZvcm1hbmNl
L3RleHR1cmVzL21pc2MvdGV4LWltYWdlLXZpZGVvLXJlcGVhdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDBhMmQ4ZmEwNzk4ZWJmZTQyMDkzZTMzMTcxYzFjMzgxZTJmNDQyZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3BlbmRpbmcvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90
ZXgtaW1hZ2UtdmlkZW8tcmVwZWF0ZWQuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IS0tIFRoaXMg
ZmlsZSBpcyBtYW51YWxseSBlZGl0ZWQgYW5kIHNob3VsZCBiZSBkZWxldGVkIG9uY2UgdGhlIHRl
c3QgaXMgbWVyZ2VkIGluIFdlYkdMIGNvbmZvcm1hbmNlIHRlc3RzIGFuZCBpbXBvcnRlZCBiYWNr
IHRvIExheW91dFRlc3RzLiAtLT4KKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5XZWJHTCBDb25mb3JtYW5jZSBUZXN0IFdyYXBw
ZXIgZm9yIGNvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5o
dG1sPC90aXRsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvd2Via2l0LXdlYmdsLXRlc3QtaGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBydW5zIHRo
ZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBv
ciBGQUlMLjwvcD4KK1Rlc3Q6IDxhIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0
X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4LWltYWdlLXZpZGVvLXJlcGVhdGVk
Lmh0bWwiPi4uLy4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3Rl
eHR1cmVzL21pc2MvdGV4LWltYWdlLXZpZGVvLXJlcGVhdGVkLmh0bWw8L2E+Cis8ZGl2IGlkPSJp
ZnJhbWUiPgorPGlmcmFtZSBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVz
L2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4LWltYWdlLXZpZGVvLXJlcGVhdGVkLmh0bWwi
IHdpZHRoPSI4MDAiIGhlaWdodD0iNjAwIj48L2lmcmFtZT4KKzwvZGl2PgorPGRpdiBpZD0icmVz
dWx0Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsL3BlbmRpbmcvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvbWlzYy90ZXgtaW1hZ2UtdmlkZW8tcmVwZWF0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmds
L3BlbmRpbmcvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMv
bWlzYy90ZXgtaW1hZ2UtdmlkZW8tcmVwZWF0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNGIyMTdhZmY3
YjVjMTcwYTY3MDM2NWRlY2JjYzc3OWZkMzQ1MGIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcGVuZGluZy9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS12aWRlby1yZXBlYXRlZC5odG1sCkBAIC0wLDAgKzEs
MTA4IEBACis8IS0tCitDb3B5cmlnaHQgKGMpIDIwMjIgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKK2ZvdW5kIGluIHRoZSBMSUNFTlNFLnR4dCBmaWxlLgorLS0+Cis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2
YXIgZ2wgPSBudWxsOwordmFyIHRleHR1cmVMb2MgPSBudWxsOwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IGZhbHNlOwordmFyIGJsdWUgPSBbMCwgMCwgMjQ4XTsKK3ZhciB5ZWxsb3cgPSBbMjU1
LCAyNTUsIDBdOwordmFyIGJsYWNrID0gWzAsIDAsIDBdOworaW5pdFRlc3RpbmdIYXJuZXNzKCk7
CisKK2Z1bmN0aW9uIGluaXQoKQoreworICAgIGRlc2NyaXB0aW9uKCdWZXJpZnkgb3B0aW1pemF0
aW9uIG9mIHJlcGVhdGVkIHVwbG9hZHMgb2YgSFRNTFZpZGVvRWxlbWVudCB0byBhIHRleHR1cmUn
KTsKKworICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJleGFtcGxl
Iik7CisgICAgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcywgeyBhbnRpYWxpYXM6IGZh
bHNlLCBkZXB0aDogZmFsc2UgfSk7CisgICAgY29uc3QgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1
cmVkUXVhZChnbCk7CisgICAgZ2wuY2xlYXJDb2xvcigwLDAsMCwxKTsKKyAgICBnbC5jbGVhckRl
cHRoKDEpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZG
RVJfQklUKTsKKyAgICBjb25zdCB0ZXh0dXJlTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sICJ0ZXgiKTsKKyAgICBnbC51bmlmb3JtMWkodGV4dHVyZUxvYywgMCk7CisgICAgZ2wu
dmlld3BvcnQoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKworICAgIGNvbnN0
IHZpZGVvMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbzEiKTsKKyAgICBjb25zdCB2
aWRlbzIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8yIik7CisgICAgd3R1LnN0YXJ0
UGxheWluZ0FuZFdhaXRGb3JWaWRlbyh2aWRlbzEsICh2aWRlbykgPT4geworICAgICAgICB3dHUu
c3RhcnRQbGF5aW5nQW5kV2FpdEZvclZpZGVvKHZpZGVvMiwgKHZpZGVvKSA9PiB7CisgICAgICAg
ICAgICBydW5UZXN0KHZpZGVvMSwgdmlkZW8yKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisK
K2Z1bmN0aW9uIGNoZWNrRnJhbWVidWZmZXJIYXNWaWRlbzIoZ2wpCit7CisgICAgY29uc3QgbGVm
dENvbG9yID0gYmx1ZTsKKyAgICBjb25zdCByaWdodENvbG9yID0geWVsbG93OworICAgIGNvbnN0
IHRvbGVyYW5jZSA9IDU7CisgICAgZGVidWcoIkNoZWNraW5nIG1pZCBsZWZ0IGJvcmRlciIpOwor
ICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDQsIDIwLCAyLCAyLCBsZWZ0Q29sb3IsICJzaG91
bGRCZSAiICsgbGVmdENvbG9yLCB0b2xlcmFuY2UpOworICAgIGRlYnVnKCJDaGVja2luZyBtaWQg
cmlnaHQgYm9yZGVyIik7CisgICAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgZ2wuY2FudmFzLndp
ZHRoIC0gNCwgZ2wuY2FudmFzLmhlaWdodCAtIDIwLCAyLCAyLCByaWdodENvbG9yLCAic2hvdWxk
QmUgIiArIHJpZ2h0Q29sb3IsIHRvbGVyYW5jZSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RUd29UZXh0
dXJlc0J1ZzEodmlkZW8xLCB2aWRlbzIpCit7CisgICAgZGVidWcoIlRlc3RpbmcgdXBsb2FkaW5n
IHNhbWUgdmlkZW8gdG8gdHdvIGRpZmZlcmVudCB0ZXh0dXJlcyBkb2VzIG5vdCBza2lwIHRoZSBs
YXR0ZXIgdXBsb2FkIikKKyAgICBjb25zdCB0ZXh0dXJlcyA9IFtnbC5jcmVhdGVUZXh0dXJlKCks
IGdsLmNyZWF0ZVRleHR1cmUoKV07CisgICAgLy8gSW5pdGlhbGl6ZSB0ZXh0dXJlWzBdIHRvIHNv
bWUgc3BlY2lmaWMgY29udGVudCB0aGF0IGZhaWxzIHRoZSB0ZXN0LgorICAgIC8vIEluaXRpYWxp
emF0aW9uIGlzIGRvbmUgd2l0aCB2aWRlbyB0byBleGVyY2lzZSB0aGUgdmlkZW8gY29udGVudCBp
ZGVudGlmaWNhdGlvbgorICAgIC8vIGFsZ29yaXRobS4KKyAgICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCB0ZXh0dXJlc1swXSk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB2aWRlbzEpOworCisgICAg
Ly8gVHJ5IHRvIGZvb2wgdGhlIHZpZGVvIGNvbnRlbnQgaWRlbnRpZmljYXRpb24gYWxnb3JpdGht
IGJ5IGZpcnN0IHVwbG9hZGluZworICAgIC8vIHRoZSBwYXNzaW5nIGNvbnRlbnQgdG8gc29tZSBv
dGhlciwgdW50ZXN0ZWQgdGV4dHVyZS4KKyAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJE
LCB0ZXh0dXJlc1sxXSk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5S
R0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB2aWRlbzIpOworCisgICAgLy8gVXBkYXRl
IHRleHR1cmVbMF0gdG8gc29tZSBjb250ZW50IHRoYXQgcGFzc2VzIHRoZSB0ZXN0LgorICAgIGds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmVzWzBdKTsKKyAgICBnbC50ZXhJbWFn
ZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUs
IHZpZGVvMik7CisKKyAgICAvLyBWZXJpZnkgdGhhdCB0aGUgdGV4dHVyZVswXSByZWNlaXZlZCB0
aGUgbmV3IGNvbnRlbnQuCisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5U
RVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CisgICAgZ2wudGV4
UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9f
RURHRSk7CisgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dS
QVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CisKKyAgICB3dHUuY2xlYXJBbmREcmF3VW5pdFF1YWQo
Z2wsIFsyNTUsIDAsIDAsIDI1NV0pOworICAgIGNoZWNrRnJhbWVidWZmZXJIYXNWaWRlbzIoZ2wp
OworfQorCitmdW5jdGlvbiBydW5UZXN0KHZpZGVvMSwgdmlkZW8yKQoreworICAgIHRlc3RUd29U
ZXh0dXJlc0J1ZzEodmlkZW8xLCB2aWRlbzIpOworICAgIHd0dS5nbEVycm9yU2hvdWxkQmUoZ2ws
IGdsLk5PX0VSUk9SLCAic2hvdWxkIGJlIG5vIGVycm9ycyIpOworICAgIGZpbmlzaFRlc3QoKTsK
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJpbml0KCkiPgorPGNhbnZhcyBp
ZD0iZXhhbXBsZSIgd2lkdGg9IjY0IiBoZWlnaHQ9IjQ4Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHZpZGVvIGlkPSJ2
aWRlbzEiID4KKyAgPHNvdXJjZSBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9yZWQtZ3JlZW4ubXA0IiAgdHlwZT0ndmlkZW8vbXA0OyBj
b2RlY3M9ImF2YzEuNDJFMDFFIicgLz4KKyAgPHNvdXJjZSBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4u
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291cmNlcy9yZWQtZ3JlZW4ud2VibXZwOC53
ZWJtIiB0eXBlPSd2aWRlby93ZWJtOyBjb2RlY3M9InZwOCInIC8+CisgIDxzb3VyY2Ugc3JjPSIu
Li8uLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvcmVk
LWdyZWVuLnRoZW9yYS5vZ3YiICB0eXBlPSd2aWRlby9vZ2c7IGNvZGVjcz0idGhlb3JhIicgLz4K
KzwvdmlkZW8+Cis8dmlkZW8gaWQ9InZpZGVvMiIgPgorICAgIDxzb3VyY2Ugc3JjPSIuLi8uLi8u
Li8uLi8uLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvdmlkZW8tcm90
YXRpb24tMC5tcDQiICB0eXBlPSd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMS40MkUwMUUiJyAvPgor
ICA8L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449786</attachid>
            <date>2022-01-24 00:53:53 -0800</date>
            <delta_ts>2022-01-24 04:43:57 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-203148-20220124105351.patch</filename>
            <type>text/plain</type>
            <size>30228</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZlZGYzM2Y1NGIzNmVl
MTVlMzdhZjlhZWIxMjAyNDM2YjE3YjBjYy4uMDY5NDNjNDRiYWM0Y2ZmMzExNTUxYWExMzQzMTZl
MzM3NjFlOWVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIyLTAxLTIxICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgdGV4SW1hZ2UyZCBm
YWlscyB0byBzZXQgc2FtZSB2aWRlbyBmcmFtZSB0byBtdWx0aXBsZSB0ZXh0dXJlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTQ4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81NjQzNjc0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICBXZWJHTCBvcHRpbWl6ZXMgcmVwZWF0ZWQgdmlkZW8gdXBsb2FkcyB0
byBzYW1lIHRleHR1cmUsIGR1ZSB0byB0aGlzIGJlaW5nCisgICAgICAgIHVzdWFsIHByYWN0aWNl
IGFtb25nIHBhZ2VzLiBSZWFzb24gaXMgdGhhdCB0aGVyZSBhcmUgbm8gQVBJIHRvIGtub3cgd2hl
biB0aGUgCisgICAgICAgIHZpZGVvIGZyYW1lIHVwZGF0ZXMuCisgICAgICAgIFRoZSBhbGdvcml0
aG0gd2FzOgorICAgICAgICAgLSBJZiB0aGUgSU9TdXJmYWNlIGlzIHRoZSBzYW1lIGFzIGluIHRo
ZSBsYXN0IGNhbGwKKyAgICAgICAgIC0gSWYgdGhlIHRleHR1cmUgY29udGVudHMgaGFzIG5vdCBj
aGFuZ2VkIHNpbmNlIHdlIGxhc3QgbW9kaWZpZWQgdGhpcyB0ZXh0dXJlCisgICAgICAgICB0aGVu
IHNraXAgdGhlIHVwbG9hZC4KKyAgICAgICAgSG93ZXZlciwgdGhpcyBsb2dpYyBza2lwcyBlcnJv
cm5lb3VzbHkgaWYgdGhlICJsYXN0IGNhbGwiIHVwZGF0ZXMgc29tZSBvdGhlciB0ZXh0dXJlLgor
ICAgICAgICBGaXggYW5kIHRlc3QgdGhlIGFib3ZlLgorCisgICAgICAgIFRoZXJlIGFyZSBvdGhl
ciBpc3N1ZXMgZm9yIHRoZSBjdXJyZW50IGFsZ29yaXRobS4gVGhpcyBwYXRjaCBmaXhlcyBzb21l
IG90aGVyIHRoZW9yZXRpY2FsIG9uZXM6CisgICAgICAgICAtIElmIHRoZSB0ZXh0dXJlIGlzIGRl
bGV0ZWQgYW5kIG5ldyBvbmUgZ2V0cyBhc3NpZ25lZCB0aGUgc2FtZSB0ZXh0dXJlIGlkIGFuZCB0
aGUgY29udGVudAorICAgICAgICAgICBzZWVkIHdvdWxkIGNsYXNoCisgICAgICAgICAtIFZpZGVv
IHdhcyB1cGxvYWRlZCB0byBhIGRpZmZlcmVudCBsZXZlbAorCisgICAgICAgIFRoZSBwcmV2aW91
cyBpbXBsZW1lbnRhdGlvbiB3YXMga2VlcGluZyBwZXItdGV4dHVyZSBzZWVkIHZhbHVlIG1hcCBp
biB0aGUgY29udGV4dAorICAgICAgICAoR3JhcGhpY3NDb250ZXh0R0xBTkdMRSkgYW5kIHBlci10
ZXR1cmUgc2VlZCB2YWx1ZSBtYXAgaW4gdGhlIHRleHR1cmUgdXBsb2FkIGhlbHBlcgorICAgICAg
ICAoR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hKSBhbmQgbGFzdCB1cGxvYWRlZCBJT1N1cmZhY2Ug
c2VlZCBpbiB0aGUgdXBsb2FkIGhlbHBlciAobm90IHBlcgorICAgICAgICB0ZXh0dXJlKS4KKwor
ICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gaW4gdGhpcyBwYXRjaCBrZWVwcyBwZXItdGV4dHVy
ZSBrbm93biBjb250ZW50IGRlc2NyaXB0aW9uIGluIHRoZSB0ZXh0dXJlCisgICAgICAgIHVwbG9h
ZCBoZWxwZXIgYW5kIGludmFsaWRhdGVzIHRoaXMgd2hlbiBlYWNoIHRleHR1cmUgY2hhbmdlcy4g
VGhlIGtub3duIGNvbnRlbnQgZGVzY3JpcHRpb24KKyAgICAgICAgaXMgdGhlIHBhcmFtZXRlciBs
aXN0IG9mIHRoZSB0ZXh0dXJlIHVwbG9hZCBjYWxsLgorCisgICAgICAgIFRlc3Q6IHdlYmdsL3Bl
bmRpbmcvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtaW1hZ2UtdmlkZW8tcmVwZWF0ZWQu
aHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xTdGF0
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xTdGF0ZTo6c2V0Qm91bmRU
ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6
OnRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xF
Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjp0ZXhTdG9yYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dGV4U3RvcmFnZTNEKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRleEltYWdlMkREaXJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6Y3JlYXRlVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpkZWxldGVUZXh0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmludmFsaWRhdGVLbm93
blRleHR1cmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OnRleHR1cmVTZWVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTENvY29hOjppbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkNvY29h
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYTo6VGV4dHVy
ZUNvbnRlbnQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xDVkNvY29hOjpjb3B5VmlkZW9TYW1wbGVUb1RleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOjppbnZhbGlkYXRlS25vd25UZXh0dXJlQ29u
dGVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xD
VkNvY29hLmg6CisKIDIwMjItMDEtMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5j
b20+CiAKICAgICAgICAgW0NvY29hXSBBY2NlbGVyYXRlZCBmaWx0ZXJzIGFyZSBlbmFibGVkIGJ5
IHRoZSB3cm9uZyBzZXR0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTFN0YXRlLmgKaW5kZXggNTA1ZThhNWRlN2IyZjRh
MDU2MmQxYzZiODQ4M2I0ZDdlOWNlZTFkYy4uNWI2M2EwZmQxMTRiYjc3YTJjMzY4NGMzZDZjMWRl
NmI3NWNjY2I5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0R0xTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMU3RhdGUuaApAQCAtNjksOSArNjksNiBAQCBzdHJ1Y3Qg
R3JhcGhpY3NDb250ZXh0R0xTdGF0ZSB7CiAgICAgewogICAgICAgICBib3VuZFRleHR1cmVNYXAu
c2V0KHRleHR1cmVVbml0LCBzdGQ6Om1ha2VfcGFpcih0ZXh0dXJlLCB0YXJnZXQpKTsKICAgICB9
Ci0KLSAgICB1c2luZyBUZXh0dXJlU2VlZENvdW50ID0gSGFzaENvdW50ZWRTZXQ8R0NHTHVpbnQs
IEludEhhc2g8R0NHTHVpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPEdD
R0x1aW50Pj47Ci0gICAgVGV4dHVyZVNlZWRDb3VudCB0ZXh0dXJlU2VlZENvdW50OwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCA2ZDEwNjZhNWI5NWE0MDFl
Njg5NDUwZGVlYzU0NWQ3YWQxZTc0MmMzLi42ZWM2ZTU3NTVmNTUwYTU1MDEzNzExYTQxN2FiMTdi
NTViYTEwYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzU5LDgg
KzM1OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdMX1RleEltYWdlMkRSb2J1c3RBTkdMRSh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIHBpeGVscy5idWZTaXplLCBwaXhlbHMuZGF0YSk7Ci0gICAgbV9zdGF0ZS50ZXh0
dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7Ci0gICAgfQor
ICAgIGludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KG1fc3RhdGUuY3VycmVudEJvdW5kVGV4
dHVyZSgpKTsKK30KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp0ZXhJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7CkBAIC0zNzQsNyAr
Mzc0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp0ZXhTdWJJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGkKIAogICAgIC8vIEZJWE1FOiB3ZSB3aWxs
IG5lZWQgdG8gZGVhbCB3aXRoIFBpeGVsU3RvcmUgcGFyYW1zIHdoZW4gZGVhbGluZyB3aXRoIGlt
YWdlIGJ1ZmZlcnMgdGhhdCBkaWZmZXIgZnJvbSB0aGUgc3ViaW1hZ2Ugc2l6ZS4KICAgICBHTF9U
ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuYnVmU2l6ZSwgcGl4ZWxzLmRhdGEpOwotICAg
IG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJl
KCkpOworICAgIGludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KG1fc3RhdGUuY3VycmVudEJv
dW5kVGV4dHVyZSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp0ZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2ZmLCBHQ0dM
aW50IHlvZmYsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKQEAgLTM4OCw3ICszODgsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgaW50IGxldmVsLCBHQwogICAgICAgICByZXR1cm47CiAKICAgICBHTF9Db21w
cmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YS5idWZTaXplLCBkYXRhLmRh
dGEpOwotICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91
bmRUZXh0dXJlKCkpOworICAgIGludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KG1fc3RhdGUu
Y3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xF
Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgaW50
IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCkBAIC00MDIs
NyArNDAyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIGludCBsZXZlbCwKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgR0xfQ29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YS5i
dWZTaXplLCBkYXRhLmRhdGEpOwotICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobV9z
dGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOworICAgIGludmFsaWRhdGVLbm93blRleHR1cmVD
b250ZW50KG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IGludCBsZXZlbCwgaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TGludHB0ciBvZmZzZXQpCkBAIC04NTIsNyArODUyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TEFOR0xFOjp0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBH
Q0cKICAgICAgICAgcmV0dXJuOwogCiAgICAgR0xfVGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxz
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2Vl
ZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CisgICAgaW52YWxpZGF0
ZUtub3duVGV4dHVyZUNvbnRlbnQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCkKQEAgLTg2MSw3ICs4NjEs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnRleFN0b3JhZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDRwogICAgICAgICByZXR1cm47CiAKICAgICBHTF9U
ZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJl
bnRCb3VuZFRleHR1cmUoKSk7CisgICAgaW52YWxpZGF0ZUtub3duVGV4dHVyZUNvbnRlbnQobV9z
dGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBpbnQgbGV2ZWwsIGludCBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKQEAgLTEwMDAsNyArMTAwMCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6dGV4SW1hZ2UyRERpcmVjdChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDCiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIEdMX1RleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAgIG1fc3RhdGUu
dGV4dHVyZVNlZWRDb3VudC5hZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOworICAg
IGludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVy
ZSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpjb3B5VGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlcikKQEAgLTExNTEsNyArMTE1MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBh
dHRhCiAgICAgICAgIHJldHVybjsKIAogICAgIEdMX0ZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdl
dCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7Ci0gICAgbV9zdGF0ZS50
ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CisgICAg
aW52YWxpZGF0ZUtub3duVGV4dHVyZUNvbnRlbnQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJl
KCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmZyb250RmFjZShHQ0dMZW51
bSBtb2RlKQpAQCAtMjA5Myw3ICsyMDkzLDcgQEAgUGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFOjpjcmVhdGVUZXh0dXJlKCkKIAogICAgIEdMdWludCBvID0gMDsKICAgICBH
TF9HZW5UZXh0dXJlcygxLCAmbyk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChv
KTsKKyAgICBpbnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChvKTsKICAgICByZXR1cm4gbzsK
IH0KIApAQCAtMjE1NSw3ICsyMTU1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpk
ZWxldGVUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSkKICAgICAgICAgcmV0dXJuIGtl
eVZhbHVlLnZhbHVlLmZpcnN0ID09IHRleHR1cmU7CiAgICAgfSk7CiAgICAgR0xfRGVsZXRlVGV4
dHVyZXMoMSwgJnRleHR1cmUpOwotICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5yZW1vdmVB
bGwodGV4dHVyZSk7CisgICAgaW52YWxpZGF0ZUtub3duVGV4dHVyZUNvbnRlbnQodGV4dHVyZSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6c3ludGhlc2l6ZUdMRXJyb3IoR0NH
TGVudW0gZXJyb3IpCkBAIC0yOTkzLDkgKzI5OTMsOCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWlu
dAogICAgIHJldHVybiByZWFkQ29tcG9zaXRlZFJlc3VsdHMoKTsKIH0KIAotdW5zaWduZWQgR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRTo6dGV4dHVyZVNlZWQoR0NHTHVpbnQgdGV4dHVyZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6aW52YWxpZGF0ZUtub3duVGV4dHVyZUNvbnRlbnQoR0NH
THVpbnQpCiB7Ci0gICAgcmV0dXJuIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5jb3VudCh0ZXh0
dXJlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGNhODcyYWU1
OGNkYTUxYTE2NTkyMWJjNTA5MmI1N2MyMTAzMzhkNDguLmY4YzA5OGJhZDU3MzY3NDU2NDZiYzVi
ZGE4ZTk2MTZjNDQ3Yjc2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKQEAgLTM1
NSw4ICszNTUsNiBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcmVh
ZFJlbmRlcmluZ1Jlc3VsdHNGb3JQYWludGluZygpOwogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IHJlYWRDb21wb3NpdGVkUmVzdWx0c0ZvclBhaW50aW5nKCk7CiAKLSAgICB1bnNpZ25l
ZCB0ZXh0dXJlU2VlZChHQ0dMdWludCB0ZXh0dXJlKTsKLQogICAgIGNvbnN0ZXhwciBzdGF0aWMg
RUdMTmF0aXZlRGlzcGxheVR5cGUgZGVmYXVsdERpc3BsYXkgPSBFR0xfREVGQVVMVF9ESVNQTEFZ
OwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNvbnN0ZXhwciBzdGF0aWMgRUdMTmF0aXZlRGlz
cGxheVR5cGUgbG93UG93ZXJEaXNwbGF5ID0gRUdMX0NBU1QoRUdMTmF0aXZlRGlzcGxheVR5cGUs
IC0xKTsKQEAgLTQwNiw2ICs0MDQsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gUGxhdGZvcm0gc3Bl
Y2lmaWMgYmVoYXZpb3IgZm9yIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBzdGF0aWMgdm9pZCBw
bGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlS25vd25UZXh0dXJlQ29udGVudChHQ0dMdWludCk7CisKICAgICBHQ0dMdWludCBtX3Rl
eHR1cmUgeyAwIH07CiAgICAgR0NHTHVpbnQgbV9mYm8geyAwIH07CiAgICAgR0NHTHVpbnQgbV9k
ZXB0aFN0ZW5jaWxCdWZmZXIgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKaW5k
ZXggMzA4OTgwMDdlZjJmZjY2OTI2OWFmNjRmNjkxMmM5MDk2OGY3OTRkZi4uYzlmYmUwYmEwNWEy
YmMyMzU3MDBhNmU2Yzk5NjRlZmRiYzFiNjEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29j
b2EuaApAQCAtODAsNiArODAsMTAgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEdyYXBoaWNz
Q29udGV4dEdMQ29jb2EoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYsIFBy
b2Nlc3NJZGVudGl0eSYmIHJlc291cmNlT3duZXIpOwogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
OworCisgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xBTkdMRSBvdmVycmlkZXMuCisgICAgdm9pZCBp
bnZhbGlkYXRlS25vd25UZXh0dXJlQ29udGVudChHQ0dMdWludCkgZmluYWw7CisKICNpZiBFTkFC
TEUoVklERU8pCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYT4g
bV9jdjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggNTMwMmE3
MWE5MGU2ZGI1MTYzNTY5MGQ3YjAwYWUwM2ExZmE1OWExNy4uNzEyOWYyMjRjMjY0MGFlNDlmN2M5
MzJlMDdjOTQ1MmY5MzQ2MDRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBA
IC04MjAsNiArODIwLDEyIEBAIFJlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGU+IEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmxheWVyQ29udGVuCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aW52YWxpZGF0ZUtub3du
VGV4dHVyZUNvbnRlbnQoR0NHTHVpbnQgdGV4dHVyZSkKK3sKKyAgICBpZiAobV9jdikKKyAgICAg
ICAgbV9jdi0+aW52YWxpZGF0ZUtub3duVGV4dHVyZUNvbnRlbnQodGV4dHVyZSk7Cit9CisKIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQ29jb2EuY3Bw
CmluZGV4IGQ0NTIwNDljYWQzNzMwYmY5OTMwOWU3NmYyMjk3NTg3MDYxYTg5NjguLmYzMzkzM2I4
NTRhOTdhODI0M2E4MDVkYzIzYWM5Njk0NzdjYzg1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xD
VkNvY29hLmNwcApAQCAtNDQ0LDYgKzQ0NCwxOCBAQCBzdGF0aWMgY29uc3QgR0xmbG9hdCogWUNi
Q3JUb1JHQk1hdHJpeEZvclJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihQaXhlbFJhbmdlIHJhbgog
ICAgIHJldHVybiBpdGVyYXRvci0+c2Vjb25kOwogfQogCitpbmxpbmUgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTENWQ29jb2E6OlRleHR1cmVDb250ZW50OjpvcGVyYXRvcj09KGNvbnN0IFRleHR1cmVD
b250ZW50JiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gc3VyZmFjZSA9PSBvdGhlci5zdXJm
YWNlCisgICAgICAgICYmIHN1cmZhY2VTZWVkID09IG90aGVyLnN1cmZhY2VTZWVkCisgICAgICAg
ICYmIGxldmVsID09IG90aGVyLmxldmVsCisgICAgICAgICYmIGludGVybmFsRm9ybWF0ID09IG90
aGVyLmludGVybmFsRm9ybWF0CisgICAgICAgICYmIGZvcm1hdCA9PSBvdGhlci5mb3JtYXQKKyAg
ICAgICAgJiYgdHlwZSA9PSBvdGhlci50eXBlCisgICAgICAgICYmIHVucGFja0ZsaXBZID09IG90
aGVyLnVucGFja0ZsaXBZCisgICAgICAgICYmIEltYWdlT3JpZW50YXRpb246Ok9yaWVudGF0aW9u
KG9yaWVudGF0aW9uKSA9PSBJbWFnZU9yaWVudGF0aW9uOjpPcmllbnRhdGlvbihvdGhlci5vcmll
bnRhdGlvbik7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRHTENWQ29jb2E+
IEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQ29jb2Em
IGNvbnRleHQpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2Nv
YT4gY3YgeyBuZXcgR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hKGNvbnRleHQpIH07CkBAIC01OTMs
MTEgKzYwNSw5IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOjpjb3B5VmlkZW9TYW1w
bGVUb1RleHR1cmUoY29uc3QgTWVkaWFTYW1wbGVWaWRlb0ZyCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGF1dG8gb3JpZW50YXRpb24gPSB2aWRlb0ZyYW1lLm9yaWVudGF0aW9uKCk7Ci0g
ICAgYXV0byBuZXdTdXJmYWNlU2VlZCA9IElPU3VyZmFjZUdldFNlZWQoc3VyZmFjZSk7Ci0gICAg
aWYgKEltYWdlT3JpZW50YXRpb246Ok9yaWVudGF0aW9uKG9yaWVudGF0aW9uKSA9PSBJbWFnZU9y
aWVudGF0aW9uOjpPcmllbnRhdGlvbihtX2xhc3RTdXJmYWNlT3JpZW50YXRpb24pCi0gICAgICAg
ICYmIHVucGFja0ZsaXBZID09IG1fbGFzdFVucGFja0ZsaXBZCi0gICAgICAgICYmIG5ld1N1cmZh
Y2VTZWVkID09IG1fbGFzdFN1cmZhY2VTZWVkCi0gICAgICAgICYmIGxhc3RUZXh0dXJlU2VlZChv
dXRwdXRUZXh0dXJlKSA9PSBtX293bmVyLnRleHR1cmVTZWVkKG91dHB1dFRleHR1cmUpKSB7Cisg
ICAgVGV4dHVyZUNvbnRlbnQgY29udGVudCB7IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHN1
cmZhY2UpLCBJT1N1cmZhY2VHZXRTZWVkKHN1cmZhY2UpLCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQs
IGZvcm1hdCwgdHlwZSwgdW5wYWNrRmxpcFksIG9yaWVudGF0aW9uIH07CisgICAgYXV0byBpdCA9
IG1fa25vd25Db250ZW50LmZpbmQob3V0cHV0VGV4dHVyZSk7CisgICAgaWYgKGl0ICE9IG1fa25v
d25Db250ZW50LmVuZCgpICYmIGl0LT52YWx1ZSA9PSBjb250ZW50KSB7CiAgICAgICAgIC8vIElm
IHRoZSB0ZXh0dXJlIGhhc24ndCBiZWVuIG1vZGlmaWVkIHNpbmNlIHRoZSBsYXN0IHRpbWUgd2Ug
Y29waWVkIHRvIGl0LCBhbmQgdGhlCiAgICAgICAgIC8vIGltYWdlIGhhc24ndCBiZWVuIG1vZGlm
aWVkIHNpbmNlIHRoZSBsYXN0IHRpbWUgaXQgd2FzIGNvcGllZCwgdGhpcyBpcyBhIG5vLW9wLgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc0NiwxNSArNzU2LDE2IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0R0xDVkNvY29hOjpjb3B5VmlkZW9TYW1wbGVUb1RleHR1cmUoY29uc3QgTWVkaWFTYW1w
bGVWaWRlb0ZyCiAgICAgLy8gRG8gdGhlIGFjdHVhbCBkcmF3aW5nLgogICAgIEdMX0RyYXdBcnJh
eXMoR0xfVFJJQU5HTEVTLCAwLCA2KTsKIAotICAgIG1fbGFzdFVucGFja0ZsaXBZID0gdW5wYWNr
RmxpcFk7Ci0gICAgbV9sYXN0U3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgbV9sYXN0U3VyZmFjZVNl
ZWQgPSBuZXdTdXJmYWNlU2VlZDsKLSAgICBtX2xhc3RTdXJmYWNlT3JpZW50YXRpb24gPSBvcmll
bnRhdGlvbjsKLSAgICBtX2xhc3RUZXh0dXJlU2VlZC5zZXQob3V0cHV0VGV4dHVyZSwgbV9vd25l
ci50ZXh0dXJlU2VlZChvdXRwdXRUZXh0dXJlKSk7CisgICAgbV9rbm93bkNvbnRlbnQuc2V0KG91
dHB1dFRleHR1cmUsIGNvbnRlbnQpOwogICAgIGF1dG9DbGVhclRleHR1cmVPbkVycm9yLnJlbGVh
c2UoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRHTENWQ29j
b2E6OmludmFsaWRhdGVLbm93blRleHR1cmVDb250ZW50KEdDR0x1aW50IHRleHR1cmUpCit7Cisg
ICAgbV9rbm93bkNvbnRlbnQucmVtb3ZlKHRleHR1cmUpOworfQorCiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250
ZXh0R0xDVkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFw
aGljc0NvbnRleHRHTENWQ29jb2EuaAppbmRleCBjZDE1Y2NjZjA2ZTVmZWU5ZmUxOTE3OTM0YWI3
NjUxZGVlN2Y4ZjMyLi45ZTFiNDQ0OWQzYjRiYjlmNWMwZDdhZThkODVmMzBlZjFkMDRiYThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0Nv
bnRleHRHTENWQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9HcmFwaGljc0NvbnRleHRHTENWQ29jb2EuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dEdMQ1YuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAj
aW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9VbnNhZmVQb2ludGVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E7CkBAIC00NiwxMyAr
NDUsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb3B5VmlkZW9TYW1wbGVUb1RleHR1cmUoY29u
c3QgTWVkaWFTYW1wbGVWaWRlb0ZyYW1lJiwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJl
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBGbGlwWSkgZmluYWw7CiAKKyAgICB2b2lkIGludmFsaWRhdGVLbm93
blRleHR1cmVDb250ZW50KEdDR0x1aW50IHRleHR1cmUpOwogcHJpdmF0ZToKICAgICBHcmFwaGlj
c0NvbnRleHRHTENWQ29jb2EoR3JhcGhpY3NDb250ZXh0R0xDb2NvYSYpOwogCi0gICAgdW5zaWdu
ZWQgbGFzdFRleHR1cmVTZWVkKEdDR0x1aW50IHRleHR1cmUpCi0gICAgewotICAgICAgICByZXR1
cm4gbV9sYXN0VGV4dHVyZVNlZWQuZ2V0KHRleHR1cmUpOwotICAgIH0KIAogICAgIEdyYXBoaWNz
Q29udGV4dEdMQ29jb2EmIG1fb3duZXI7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERp
c3BsYXkgbV9kaXNwbGF5IHsgbnVsbHB0ciB9OwpAQCAtNzEsMTMgKzY3LDIyIEBAIHByaXZhdGU6
CiAgICAgR0NHTGludCBtX3lUZXh0dXJlU2l6ZVVuaWZvcm1Mb2NhdGlvbiB7IC0xIH07CiAgICAg
R0NHTGludCBtX3V2VGV4dHVyZVNpemVVbmlmb3JtTG9jYXRpb24geyAtMSB9OwogCi0gICAgRmxp
cFkgbV9sYXN0VW5wYWNrRmxpcFkgeyBGbGlwWTo6Tm8gfTsKLSAgICBJbWFnZU9yaWVudGF0aW9u
IG1fbGFzdFN1cmZhY2VPcmllbnRhdGlvbjsKLSAgICBVbnNhZmVQb2ludGVyPElPU3VyZmFjZVJl
Zj4gbV9sYXN0U3VyZmFjZTsKLSAgICB1aW50MzJfdCBtX2xhc3RTdXJmYWNlU2VlZCB7IDAgfTsK
KyAgICBzdHJ1Y3QgVGV4dHVyZUNvbnRlbnQgeworICAgICAgICAvLyBGSVhNRTogU3dpdGNoIGJh
Y2sgdG8gVW5zYWZlUG9pbnRlcjxJT1N1cmZhY2VSZWY+IG9uY2UgVW5zYWZlUG9pbnRlciBpcyBz
YWZlIHRvIGNvbXBhcmUuCisgICAgICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvMjM1NDM1Cisg
ICAgICAgIGludHB0cl90IHN1cmZhY2UgeyAwIH07CisgICAgICAgIHVpbnQzMl90IHN1cmZhY2VT
ZWVkIHsgMCB9OworICAgICAgICBHQ0dMaW50IGxldmVsIHsgMCB9OworICAgICAgICBHQ0dMZW51
bSBpbnRlcm5hbEZvcm1hdCB7IDAgfTsKKyAgICAgICAgR0NHTGVudW0gZm9ybWF0IHsgMCB9Owor
ICAgICAgICBHQ0dMZW51bSB0eXBlIHsgMCB9OworICAgICAgICBGbGlwWSB1bnBhY2tGbGlwWSB7
IEZsaXBZOjpObyB9OworICAgICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uOwogCi0g
ICAgdXNpbmcgVGV4dHVyZVNlZWRNYXAgPSBIYXNoTWFwPEdDR0x1aW50LCB1bnNpZ25lZCwgSW50
SGFzaDxHQ0dMdWludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8R0NHTHVp
bnQ+PjsKLSAgICBUZXh0dXJlU2VlZE1hcCBtX2xhc3RUZXh0dXJlU2VlZDsKKyAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFRleHR1cmVDb250ZW50JikgY29uc3Q7CisgICAgfTsKKyAgICB1
c2luZyBUZXh0dXJlQ29udGVudE1hcCA9IEhhc2hNYXA8R0NHTHVpbnQsIFRleHR1cmVDb250ZW50
LCBJbnRIYXNoPEdDR0x1aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxH
Q0dMdWludD4+OworICAgIFRleHR1cmVDb250ZW50TWFwIG1fa25vd25Db250ZW50OwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggNjBiYTQ0M2ExMzE0
ZGRkOGEzYzY0NDM1NmZiZmM1ZTQwODJiYmQ2Ny4uZjMwYjVlMWU2ZWE5ZDAxNTc3NGY4MDYwYjkx
NTNmNDdlMzA2MmVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBA
IC0xMDEzLDcgKzEwMTMsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmcmFtZWJ1
ZmZlclRleHR1cmUyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dAogICAgICAgICByZXR1
cm47CiAKICAgICA6OmdsRnJhbWVidWZmZXJUZXh0dXJlMkRFWFQodGFyZ2V0LCBhdHRhY2htZW50
LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291
bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6ZnJvbnRGYWNlKEdDR0xlbnVtIG1vZGUpCkBAIC0yMTkzLDcgKzIx
OTIsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdWJJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTAogCiAgICAgLy8gRklYTUU6IHdlIHdpbGwg
bmVlZCB0byBkZWFsIHdpdGggUGl4ZWxTdG9yZSBwYXJhbXMgd2hlbiBkZWFsaW5nIHdpdGggaW1h
Z2UgYnVmZmVycyB0aGF0IGRpZmZlciBmcm9tIHRoZSBzdWJpbWFnZSBzaXplLgogICAgIDo6Z2xU
ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzLmRhdGEpOwotICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5h
ZGQobV9zdGF0ZS5jdXJyZW50Qm91bmRUZXh0dXJlKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKQEAgLTIyMDIsNyArMjIwMCw2IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlCiAgICAgICAgIHJldHVybjsKIAogICAgIDo6Z2xDb21wcmVzc2VkVGV4SW1h
Z2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBpbWFnZVNpemUsIGRhdGEuZGF0YSk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFk
ZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKQEAgLTIyMTEsNyArMjIwOCw2IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsCiAgICAgICAgIHJldHVybjsKIAogICAgIDo6Z2xDb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YS5kYXRhKTsKLSAgICBtX3N0YXRlLnRl
eHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAog
UGxhdGZvcm1HTE9iamVjdCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlQnVmZmVyKCkK
QEAgLTIyNjcsNyArMjI2Myw2IEBAIFBsYXRmb3JtR0xPYmplY3QgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNyZWF0ZVRleHR1cmUoKQogCiAgICAgR0x1aW50IG8gPSAwOwogICAgIGdsR2VuVGV4
dHVyZXMoMSwgJm8pOwotICAgIG1fc3RhdGUudGV4dHVyZVNlZWRDb3VudC5hZGQobyk7CiAgICAg
cmV0dXJuIG87CiB9CiAKQEAgLTIzMjcsNyArMjMyMiw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlKQogICAgICAg
ICByZXR1cm4ga2V5VmFsdWUudmFsdWUuZmlyc3QgPT0gdGV4dHVyZTsKICAgICB9KTsKICAgICBn
bERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291
bnQucmVtb3ZlQWxsKHRleHR1cmUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikKQEAgLTIzNjMsNyArMjM1Nyw2IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkREaXJlY3QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHCiAgICAgICAgIHJldHVybjsKIAogICAgIDo6Z2xUZXhJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3Jk
ZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQu
YWRkKG1fc3RhdGUuY3VycmVudEJvdW5kVGV4dHVyZSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50
IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCkBAIC0yNTEwLDcg
KzI1MDMsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdG9yYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQwogICAgICAgICByZXR1cm47CiAKICAg
ICA6OmdsVGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJl
bnRCb3VuZFRleHR1cmUoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRl
eFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXpl
aSBkZXB0aCkKQEAgLTI1MTksNyArMjUxMSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDCiAg
ICAgICAgIHJldHVybjsKIAogICAgIDo6Z2xUZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7Ci0gICAgbV9zdGF0ZS50ZXh0dXJl
U2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUoKSk7CiB9CiAjZWxzZQog
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51
bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMU3BhbjxHQ0dMaW50PikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgKaW5kZXggNDY1Y2JjNjI3N2MyOGFjNzhjOGRjNzAxOTdmZDFlYjI2
ZTYyMDAwMC4uOTFmZWZlZjUxMmY2NTI4YmMzYTc3ODMxZWJlOWI2NDUxZDk3NDU2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTQxMiw4ICs0MTIsNiBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNpbXVsYXRlRXZlbnRGb3JUZXN0aW5nKFNpbXVsYXRlZEV2ZW50Rm9yVGVz
dGluZykgb3ZlcnJpZGU7CiAKLSAgICB1bnNpZ25lZCB0ZXh0dXJlU2VlZChHQ0dMdWludCB0ZXh0
dXJlKSB7IHJldHVybiBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuY291bnQodGV4dHVyZSk7IH0K
LQogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDY1MzA2Mzk1M2M1NGM4YTRiNmJmOTg1ZDMwMDQ3Y2NjNWZmYTNiMTMuLjNkYTE3YjNl
MzY1OGY4M2RlYmI5ZjBkMWE4OTU2YThjNDMyN2M3OGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAyMi0wMS0yMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIHRleEltYWdlMmQgZmFpbHMgdG8gc2V0IHNhbWUgdmlkZW8gZnJhbWUgdG8gbXVsdGlwbGUg
dGV4dHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMzE0OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY0MzY3NDU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGEgdGVzdCBmb3IgdGVzdGluZyB0
aGUgYnVnIGluIHdoaWNoIHNvbWUgdmlkZW8gdGV4dHVyZSB1cGxvYWRzCisgICAgICAgIHdlcmUg
c2tpcHBlZCBlcnJvcm5lb3VzbHkuCisKKyAgICAgICAgKiB3ZWJnbC9wZW5kaW5nL2NvbmZvcm1h
bmNlL3RleHR1cmVzL21pc2MvdGV4LWltYWdlLXZpZGVvLXJlcGVhdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHdlYmdsL3BlbmRpbmcvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtaW1h
Z2UtdmlkZW8tcmVwZWF0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9w
ZW5kaW5nL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21p
c2MvdGV4LWltYWdlLXZpZGVvLXJlcGVhdGVkLmh0bWw6IEFkZGVkLgorCiAyMDIyLTAxLTIxICBL
aW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0dMSUJdIEdh
cmRlbiBmYXN0L21lZGlhc3RyZWFtL2dldFVzZXJNZWRpYS10by1jYW52YXMtKi5odG1sIGZhaWx1
cmUgZm9yIFdQRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcGVuZGluZy9jb25mb3Jt
YW5jZS90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS12aWRlby1yZXBlYXRlZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9wZW5kaW5nL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4
LWltYWdlLXZpZGVvLXJlcGVhdGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGMwYmI0YjU1
OWVlMjFjMzEwZjM0NDU2NmM0ODAyNTc1MWYyODQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcGVuZGluZy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS12
aWRlby1yZXBlYXRlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3QgcnVu
cyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBB
U1Mgb3IgRkFJTC4KKworVGVzdDogLi4vLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy90ZXgtaW1hZ2UtdmlkZW8tcmVwZWF0ZWQuaHRtbAor
WyBQQVNTIF0gQWxsIHRlc3RzIHBhc3NlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wv
cGVuZGluZy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS12aWRlby1yZXBlYXRl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ2wvcGVuZGluZy9jb25mb3JtYW5jZS90ZXh0dXJlcy9t
aXNjL3RleC1pbWFnZS12aWRlby1yZXBlYXRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwYTJkOGZhMDc5
OGViZmU0MjA5M2UzMzE3MWMxYzM4MWUyZjQ0MmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJnbC9wZW5kaW5nL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4LWltYWdlLXZp
ZGVvLXJlcGVhdGVkLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCEtLSBUaGlzIGZpbGUgaXMgbWFu
dWFsbHkgZWRpdGVkIGFuZCBzaG91bGQgYmUgZGVsZXRlZCBvbmNlIHRoZSB0ZXN0IGlzIG1lcmdl
ZCBpbiBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0cyBhbmQgaW1wb3J0ZWQgYmFjayB0byBMYXlvdXRU
ZXN0cy4gLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQ29uZm9ybWFuY2UgVGVzdCBXcmFwcGVyIGZvciBjb250
ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMuaHRtbDwvdGl0bGU+
Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3dlYmtpdC13ZWJnbC10ZXN0LWhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVz
dCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC48L3A+
CitUZXN0OiA8YSBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS12aWRlby1yZXBlYXRlZC5odG1sIj4uLi8u
Li8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS90ZXh0dXJlcy9taXNj
L3RleC1pbWFnZS12aWRlby1yZXBlYXRlZC5odG1sPC9hPgorPGRpdiBpZD0iaWZyYW1lIj4KKzxp
ZnJhbWUgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS90ZXh0dXJlcy9taXNjL3RleC1pbWFnZS12aWRlby1yZXBlYXRlZC5odG1sIiB3aWR0aD0iODAw
IiBoZWlnaHQ9IjYwMCI+PC9pZnJhbWU+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9wZW5kaW5n
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4
LWltYWdlLXZpZGVvLXJlcGVhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9wZW5kaW5nL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4LWlt
YWdlLXZpZGVvLXJlcGVhdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRiMjE3YWZmN2I1YzE3MGE2NzAz
NjVkZWNiY2M3NzlmZDM0NTBiMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3BlbmRpbmcvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvdGV4dHVyZXMv
bWlzYy90ZXgtaW1hZ2UtdmlkZW8tcmVwZWF0ZWQuaHRtbApAQCAtMCwwICsxLDEwOCBAQAorPCEt
LQorQ29weXJpZ2h0IChjKSAyMDIyIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KK1VzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCitmb3VuZCBpbiB0aGUgTElDRU5TRS50eHQgZmlsZS4KKy0tPgorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorInVzZSBzdHJpY3QiOwordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGdsID0gbnVs
bDsKK3ZhciB0ZXh0dXJlTG9jID0gbnVsbDsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxz
ZTsKK3ZhciBibHVlID0gWzAsIDAsIDI0OF07Cit2YXIgeWVsbG93ID0gWzI1NSwgMjU1LCAwXTsK
K3ZhciBibGFjayA9IFswLCAwLCAwXTsKK2luaXRUZXN0aW5nSGFybmVzcygpOworCitmdW5jdGlv
biBpbml0KCkKK3sKKyAgICBkZXNjcmlwdGlvbignVmVyaWZ5IG9wdGltaXphdGlvbiBvZiByZXBl
YXRlZCB1cGxvYWRzIG9mIEhUTUxWaWRlb0VsZW1lbnQgdG8gYSB0ZXh0dXJlJyk7CisKKyAgICBj
b25zdCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhhbXBsZSIpOworICAgIGds
ID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMsIHsgYW50aWFsaWFzOiBmYWxzZSwgZGVwdGg6
IGZhbHNlIH0pOworICAgIGNvbnN0IHByb2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wp
OworICAgIGdsLmNsZWFyQ29sb3IoMCwwLDAsMSk7CisgICAgZ2wuY2xlYXJEZXB0aCgxKTsKKyAg
ICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7Cisg
ICAgY29uc3QgdGV4dHVyZUxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGV4
Iik7CisgICAgZ2wudW5pZm9ybTFpKHRleHR1cmVMb2MsIDApOworICAgIGdsLnZpZXdwb3J0KDAs
IDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisKKyAgICBjb25zdCB2aWRlbzEgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8xIik7CisgICAgY29uc3QgdmlkZW8yID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvMiIpOworICAgIHd0dS5zdGFydFBsYXlpbmdBbmRX
YWl0Rm9yVmlkZW8odmlkZW8xLCAodmlkZW8pID0+IHsKKyAgICAgICAgd3R1LnN0YXJ0UGxheWlu
Z0FuZFdhaXRGb3JWaWRlbyh2aWRlbzIsICh2aWRlbykgPT4geworICAgICAgICAgICAgcnVuVGVz
dCh2aWRlbzEsIHZpZGVvMik7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitmdW5jdGlvbiBj
aGVja0ZyYW1lYnVmZmVySGFzVmlkZW8yKGdsKQoreworICAgIGNvbnN0IGxlZnRDb2xvciA9IGJs
dWU7CisgICAgY29uc3QgcmlnaHRDb2xvciA9IHllbGxvdzsKKyAgICBjb25zdCB0b2xlcmFuY2Ug
PSA1OworICAgIGRlYnVnKCJDaGVja2luZyBtaWQgbGVmdCBib3JkZXIiKTsKKyAgICB3dHUuY2hl
Y2tDYW52YXNSZWN0KGdsLCA0LCAyMCwgMiwgMiwgbGVmdENvbG9yLCAic2hvdWxkQmUgIiArIGxl
ZnRDb2xvciwgdG9sZXJhbmNlKTsKKyAgICBkZWJ1ZygiQ2hlY2tpbmcgbWlkIHJpZ2h0IGJvcmRl
ciIpOworICAgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIGdsLmNhbnZhcy53aWR0aCAtIDQsIGds
LmNhbnZhcy5oZWlnaHQgLSAyMCwgMiwgMiwgcmlnaHRDb2xvciwgInNob3VsZEJlICIgKyByaWdo
dENvbG9yLCB0b2xlcmFuY2UpOworfQorCitmdW5jdGlvbiB0ZXN0VHdvVGV4dHVyZXNCdWcxKHZp
ZGVvMSwgdmlkZW8yKQoreworICAgIGRlYnVnKCJUZXN0aW5nIHVwbG9hZGluZyBzYW1lIHZpZGVv
IHRvIHR3byBkaWZmZXJlbnQgdGV4dHVyZXMgZG9lcyBub3Qgc2tpcCB0aGUgbGF0dGVyIHVwbG9h
ZCIpCisgICAgY29uc3QgdGV4dHVyZXMgPSBbZ2wuY3JlYXRlVGV4dHVyZSgpLCBnbC5jcmVhdGVU
ZXh0dXJlKCldOworICAgIC8vIEluaXRpYWxpemUgdGV4dHVyZVswXSB0byBzb21lIHNwZWNpZmlj
IGNvbnRlbnQgdGhhdCBmYWlscyB0aGUgdGVzdC4KKyAgICAvLyBJbml0aWFsaXphdGlvbiBpcyBk
b25lIHdpdGggdmlkZW8gdG8gZXhlcmNpc2UgdGhlIHZpZGVvIGNvbnRlbnQgaWRlbnRpZmljYXRp
b24KKyAgICAvLyBhbGdvcml0aG0uCisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwg
dGV4dHVyZXNbMF0pOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdC
QSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdmlkZW8xKTsKKworICAgIC8vIFRyeSB0byBm
b29sIHRoZSB2aWRlbyBjb250ZW50IGlkZW50aWZpY2F0aW9uIGFsZ29yaXRobSBieSBmaXJzdCB1
cGxvYWRpbmcKKyAgICAvLyB0aGUgcGFzc2luZyBjb250ZW50IHRvIHNvbWUgb3RoZXIsIHVudGVz
dGVkIHRleHR1cmUuCisgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZXNb
MV0pOworICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdC
QSwgZ2wuVU5TSUdORURfQllURSwgdmlkZW8yKTsKKworICAgIC8vIFVwZGF0ZSB0ZXh0dXJlWzBd
IHRvIHNvbWUgY29udGVudCB0aGF0IHBhc3NlcyB0aGUgdGVzdC4KKyAgICBnbC5iaW5kVGV4dHVy
ZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlc1swXSk7CisgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhU
VVJFXzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB2aWRlbzIpOwor
CisgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHRleHR1cmVbMF0gcmVjZWl2ZWQgdGhlIG5ldyBjb250
ZW50LgorICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdf
RklMVEVSLCBnbC5MSU5FQVIpOworICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwg
Z2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIpOworICAgIGdsLnRleFBhcmFtZXRlcmko
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworICAg
IGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNM
QU1QX1RPX0VER0UpOworCisgICAgd3R1LmNsZWFyQW5kRHJhd1VuaXRRdWFkKGdsLCBbMjU1LCAw
LCAwLCAyNTVdKTsKKyAgICBjaGVja0ZyYW1lYnVmZmVySGFzVmlkZW8yKGdsKTsKK30KKworZnVu
Y3Rpb24gcnVuVGVzdCh2aWRlbzEsIHZpZGVvMikKK3sKKyAgICB0ZXN0VHdvVGV4dHVyZXNCdWcx
KHZpZGVvMSwgdmlkZW8yKTsKKyAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJP
UiwgInNob3VsZCBiZSBubyBlcnJvcnMiKTsKKyAgICBmaW5pc2hUZXN0KCk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iaW5pdCgpIj4KKzxjYW52YXMgaWQ9ImV4YW1wbGUi
IHdpZHRoPSI2NCIgaGVpZ2h0PSI0OCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzx2aWRlbyBpZD0idmlkZW8xIiA+Cisg
IDxzb3VyY2Ugc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9yZXNvdXJjZXMvcmVkLWdyZWVuLm1wNCIgIHR5cGU9J3ZpZGVvL21wNDsgY29kZWNzPSJhdmMx
LjQyRTAxRSInIC8+CisgIDxzb3VyY2Ugc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvcmVkLWdyZWVuLndlYm12cDgud2VibSIgdHlwZT0n
dmlkZW8vd2VibTsgY29kZWNzPSJ2cDgiJyAvPgorICA8c291cmNlIHNyYz0iLi4vLi4vLi4vLi4v
Li4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3JlZC1ncmVlbi50aGVv
cmEub2d2IiAgdHlwZT0ndmlkZW8vb2dnOyBjb2RlY3M9InRoZW9yYSInIC8+Cis8L3ZpZGVvPgor
PHZpZGVvIGlkPSJ2aWRlbzIiID4KKyAgICA8c291cmNlIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL3ZpZGVvLXJvdGF0aW9uLTAubXA0
IiAgdHlwZT0ndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEuNDJFMDFFIicgLz4KKyAgPC92aWRlbz4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="476010"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>