<?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>230472</bug_id>
          
          <creation_ts>2021-09-19 23:07:54 -0700</creation_ts>
          <short_desc>ANGLE Metal: single-component swizzles do not compile</short_desc>
          <delta_ts>2022-06-23 12:11:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>Other</version>
          <rep_platform>Unspecified</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=230949</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>
          
          <blocked>240433</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Raúl">rloza</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>daveh</cc>
    
    <cc>dino</cc>
    
    <cc>eric.r</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gman</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kpiddington</cc>
    
    <cc>markus</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1794978</commentid>
    <comment_count>0</comment_count>
      <attachid>438639</attachid>
    <who name="Raúl">rloza</who>
    <bug_when>2021-09-19 23:07:54 -0700</bug_when>
    <thetext>Created attachment 438639
Shader code files

Hello,

We have an application for a few years now that runs over blend4web 17.12.
Here a link for reference: https://testios15.made-to-order.com/
There we have slightly modified the b4w engine to show extra debug log.
The main error from B4W says: Shader compilation/linking error: postprocessing/postprocessing.glslv, postprocessing/postprocessing.glslf, materials: &quot;&quot;
Throwing some logs around, we see that at the &quot;init_shader&quot; function, &quot;gl.getError()&quot; returns a &quot;INVALID_OPERATION&quot; after &quot;gl.linkProgram&quot;.
Then, &quot;gl.getProgramInfoLog(program)&quot; shows a not very useful but human readable error: Internal error compiling shader with Metal backend. Please submit this shader, or website as a bug to https://bugs.webkit.org

Honestly, I am no GLSL expert (nor beginner), although I have been trying to mess with the shader, and even removing all &quot;postprocessing.glslf&quot; logic (leaving only an assignment to a plain color) won&apos;t work.
I know this one is going to be tricky, as there is no life over blend4web forums for a while now, and their shaders and logic are quite difficult to play with, but anyway I thought of letting you know just in case.
You can find attached the main shader files; they use a lot of different files, but in this specific error those are the ones I think are directly involved.
I have included as well a &quot;directives.js&quot;, as they change on the fly the code depending on webgl 1 or 2 version (the log for the iPad shows me it is using the webgl 1 version).

Please let me know if I can help somehow.

Best regards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794995</commentid>
    <comment_count>1</comment_count>
      <attachid>438645</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-20 01:10:28 -0700</bug_when>
    <thetext>Created attachment 438645
translation and errors

program_source:106:12: error: no matching constructor for initialization of &apos;ANGLE_VectorElemRef&lt;float, 3&gt;&apos;
    return ANGLE_VectorElemRef&lt;T, N&gt;(vec, is);
           ^                         ~~~~~~~
program_source:216:6: note: in instantiation of function template specialization &apos;ANGLE_swizzle_ref&lt;float, 3&gt;&apos; requested here
  aW(ANGLE_swizzle_ref(aQ, 0));
     ^
program_source:65:5: note: candidate constructor not viable: no known conversion from &apos;const int [1]&apos; to &apos;int&apos; for 2nd argument
    ANGLE_VectorElemRef(thread metal::vec&lt;T, N&gt; &amp;vec, int index)
    ^
program_source:59:8: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided
struct ANGLE_VectorElemRef
       ^
program_source:59:8: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided
program_source:59:8: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided
program_source:59:8: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided
program_source:59:8: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided
program_source:59:8: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 2 were provided</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795035</commentid>
    <comment_count>2</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-20 05:50:42 -0700</bug_when>
    <thetext>Thanks for the report. Will post a fix shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795121</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-20 09:51:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/83310780&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795189</commentid>
    <comment_count>4</comment_count>
      <attachid>438705</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-20 11:52:33 -0700</bug_when>
    <thetext>Created attachment 438705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795191</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-09-20 11:53:54 -0700</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795411</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-20 22:27:17 -0700</bug_when>
    <thetext>Committed r282800 (241932@main): &lt;https://commits.webkit.org/241932@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438705.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798239</commentid>
    <comment_count>7</comment_count>
    <who name="Eric">eric.r</who>
    <bug_when>2021-09-29 03:36:45 -0700</bug_when>
    <thetext>Same issue with iOS and iPadOS 15.1 Beta 2 Safari.
In MacOS Safari, FireFox, Chrome last versions works perfectly.
Most of blend4web examples in they website don&apos;t work to.
https://www.blend4web.com/apps/code_snippets/code_snippets.html?scene=material_api
Console log:
[Error] B4W ERROR: Shader compilation/linking error: main.glslv, main_stack.glslf, materials: &quot;DEFAULT&quot;
	d (output.5e52a835b47f.js:1:1026)
	Q (output.5e52a835b47f.js:29:288)
	ia (output.5e52a835b47f.js:14:1625)
	(función anónima) (output.5e52a835b47f.js:16:470)
	(función anónima) (output.5e52a835b47f.js:65:1694)
	a (output.5e52a835b47f.js:94:1050)
	(función anónima) (output.5e52a835b47f.js:94:2760)
	(función anónima) (output.5e52a835b47f.js:65:1526)
	aa (output.5e52a835b47f.js:87:888)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798454</commentid>
    <comment_count>8</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-29 11:00:19 -0700</bug_when>
    <thetext>*** Bug 230949 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798455</commentid>
    <comment_count>9</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-29 11:00:51 -0700</bug_when>
    <thetext>Unfortunately the problem is present in the currently released iOS, but will be fixed in one of the upcoming releases.
If you are able to use a workaround, you could change the variables passed to inout parameters of the functions to not refer to swizzles.

before:
void f(inout float a) { ... }
void main() {
 vec3 myvec = ...;
 f(myvec.x);
}

after:
void f(inout float a) { ... }
void main() {
 vec3 myvec = ...;
 float myfloat = myvec.x;
 f(myfloat);
 myvec.x = myfloat;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798765</commentid>
    <comment_count>10</comment_count>
    <who name="Raúl">rloza</who>
    <bug_when>2021-09-29 22:50:39 -0700</bug_when>
    <thetext>Many thanks for the fix and follow up on this.
The example code for the workaround doesn&apos;t seem to fit my needs though.
It may be related to the fact that changing B4W engine is hard, but I don&apos;t see any function calls with swizzles, and I even removed all the code from the problematic shader (leaving only a plain out color), and it is still not working.
So I hope it will be solved with this fix when actually released.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801554</commentid>
    <comment_count>11</comment_count>
    <who name="Eric">eric.r</who>
    <bug_when>2021-10-07 02:39:12 -0700</bug_when>
    <thetext>info: iOS 15.1 Beta 3 still has the issue.

thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806510</commentid>
    <comment_count>12</comment_count>
    <who name="Raúl">rloza</who>
    <bug_when>2021-10-19 23:10:00 -0700</bug_when>
    <thetext>Hi,

iOS Beta 5 still not working.
Anyone has any insights for when this would be added?
Or at least, can you confirm the link I shared (https://testios15.made-to-order.com/) works with the patch?
Our company really depends on our product configurator working properly on all devices, and it is becoming a huge concern for us now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809243</commentid>
    <comment_count>13</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-10-27 06:42:39 -0700</bug_when>
    <thetext>(In reply to Raúl from comment #12)
&gt; Hi,
&gt; 
&gt; iOS Beta 5 still not working.
&gt; Anyone has any insights for when this would be added?
&gt; Or at least, can you confirm the link I shared
&gt; (https://testios15.made-to-order.com/) works with the patch?

I can confirm the site works with WebKit trunk version with the patch.
I cannot confirm when the patch is released until it is released.

For workaround, you could try to apply the suggestion about not using single value swizzles for targets of inout parameters, or ask the engine vendor to apply the workaround.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814394</commentid>
    <comment_count>14</comment_count>
    <who name="Eric">eric.r</who>
    <bug_when>2021-11-12 04:03:51 -0800</bug_when>
    <thetext>Solved on iOS 15.2 Beta 2, thanks you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822538</commentid>
    <comment_count>15</comment_count>
    <who name="Raúl">rloza</who>
    <bug_when>2021-12-09 23:18:45 -0800</bug_when>
    <thetext>Hi,

Thanks for everything, it seems the fix is coming soon to iOS.

I have detected the same error on the macOS 15 beta, not sure if it is exactly the same error as I cannot see the full log as you do, but it fails at the same shader so it might be the same kind of error.
Not sure if I should post another bug for this, or maybe you can take a look directly.

Many thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822541</commentid>
    <comment_count>16</comment_count>
    <who name="Raúl">rloza</who>
    <bug_when>2021-12-09 23:23:09 -0800</bug_when>
    <thetext>BTW, it seems to work on Chrome but not Safari, in case that helps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822544</commentid>
    <comment_count>17</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-09 23:31:30 -0800</bug_when>
    <thetext>
(In reply to Raúl from comment #15)
&gt; Hi,
&gt; 
&gt; Thanks for everything, it seems the fix is coming soon to iOS.
&gt; 
&gt; I have detected the same error on the macOS 15 beta, not sure if it is
&gt; exactly the same error as I cannot see the full log as you do, but it fails
&gt; at the same shader so it might be the same kind of error.
&gt; Not sure if I should post another bug for this, or maybe you can take a look
&gt; directly.

This fix for this particular issue, single-component swizzles do not compile, will also be fixed in one of the upcoming macOS releases. If you&apos;re reporting that your specific site that failed on iOS due to this issue is also failing on macOS, most likely it is the same issue and does not need to be reported.

If you are observing an issue in some other content that probably is not due to this same root cause, feel free to file another issue. Alternatively please comment in this bug so I can file the issue. Please provide details on which site or preferably add some reproduction content. Please describe the hardware and software versions being used.

The shader compilation bug error message is currently the same for all shader compilation bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823409</commentid>
    <comment_count>18</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-13 00:01:43 -0800</bug_when>
    <thetext>*** Bug 234219 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823414</commentid>
    <comment_count>19</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-13 00:07:13 -0800</bug_when>
    <thetext>*** Bug 234218 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823416</commentid>
    <comment_count>20</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-13 00:10:42 -0800</bug_when>
    <thetext>*** Bug 234208 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823417</commentid>
    <comment_count>21</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-12-13 00:11:43 -0800</bug_when>
    <thetext>Marking this as fixed again. For new errors we should have new bug entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1877762</commentid>
    <comment_count>22</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-06-23 12:11:51 -0700</bug_when>
    <thetext>*** Bug 240433 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>438639</attachid>
            <date>2021-09-19 23:07:54 -0700</date>
            <delta_ts>2021-09-19 23:07:54 -0700</delta_ts>
            <desc>Shader code files</desc>
            <filename>shaders.zip</filename>
            <type>application/x-zip-compressed</type>
            <size>4696</size>
            <attacher name="Raúl">rloza</attacher>
            
              <data encoding="base64">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
UEsFBgAAAAAFAAUA8AEAAFIQAAAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>438645</attachid>
            <date>2021-09-20 01:10:28 -0700</date>
            <delta_ts>2021-09-20 01:10:28 -0700</delta_ts>
            <desc>translation and errors</desc>
            <filename>log-bwo-230472.txt</filename>
            <type>text/plain</type>
            <size>20643</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">c3RydWN0IEFOR0xFX0RlcHRoUmFuZ2VQYXJhbXMKewogIGZsb2F0IEFOR0xFX25lYXI7CiAgZmxv
YXQgQU5HTEVfZmFyOwogIGZsb2F0IEFOR0xFX2RpZmY7CiAgZmxvYXQgQU5HTEVfcmVzZXJ2ZWQ7
Cn07CgpzdHJ1Y3QgQU5HTEVfVmVydGV4SW4KewogIG1ldGFsOjpmbG9hdDIgYV9wb3NpdGlvbiBf
X3VuYXNzaWduZWRfYXR0cmlidXRlX187Cn07CgpzdHJ1Y3QgQU5HTEVfQW5nbGVVbmlmb3Jtcwp7
CiAgbWV0YWw6OmZsb2F0NCBBTkdMRV92aWV3cG9ydDsKICBtZXRhbDo6ZmxvYXQyIEFOR0xFX2hh
bGZSZW5kZXJBcmVhOwogIG1ldGFsOjpmbG9hdDIgQU5HTEVfZmxpcFhZOwogIG1ldGFsOjpmbG9h
dDIgQU5HTEVfbmVnRmxpcFhZOwogIHVpbnQgQU5HTEVfY2xpcERpc3RhbmNlc0VuYWJsZWQ7CiAg
dWludCBBTkdMRV94ZmJBY3RpdmVVbnBhdXNlZDsKICB1aW50IEFOR0xFX3hmYlZlcnRpY2VzUGVy
RHJhdzsKICBtZXRhbDo6aW50NCBBTkdMRV94ZmJCdWZmZXJPZmZzZXRzOwogIG1ldGFsOjp1aW50
NCBBTkdMRV9hY2JCdWZmZXJPZmZzZXRzOwogIEFOR0xFX0RlcHRoUmFuZ2VQYXJhbXMgQU5HTEVf
ZGVwdGhSYW5nZTsKICB1aW50IGNvdmVyYWdlTWFzazsKfTsKCnN0cnVjdCBBTkdMRV9WZXJ0ZXhP
dXQKewogIG1ldGFsOjpmbG9hdDIgQTsKICBtZXRhbDo6ZmxvYXQ0IGdsX1Bvc2l0aW9uIFtbcG9z
aXRpb25dXTsKfTsKCnZvaWQgQU5HTEVfMF9tYWluKHRocmVhZCBBTkdMRV9WZXJ0ZXhPdXQgJiBB
TkdMRV92ZXJ0ZXhPdXQsIHRocmVhZCBBTkdMRV9WZXJ0ZXhJbiAmIEFOR0xFX3ZlcnRleEluKQp7
CiAgQU5HTEVfdmVydGV4T3V0LmdsX1Bvc2l0aW9uID0gbWV0YWw6OmZsb2F0NCgwLjBmLCAwLjBm
LCAwLjBmLCAwLjBmKTsKICBBTkdMRV92ZXJ0ZXhPdXQuQSA9IG1ldGFsOjpmbG9hdDIoMC4wZiwg
MC4wZik7CiAgQU5HTEVfdmVydGV4T3V0LkEgPSAoMi4wZiAqIEFOR0xFX3ZlcnRleEluLmFfcG9z
aXRpb24pOwogIG1ldGFsOjpmbG9hdDIgQU5HTEVfNCA9IChBTkdMRV92ZXJ0ZXhJbi5hX3Bvc2l0
aW9uLnh5IC0gMC4yNWYpOwogIG1ldGFsOjpmbG9hdDIgQU5HTEVfNSA9ICg0LjBmICogQU5HTEVf
NCk7CiAgQU5HTEVfdmVydGV4T3V0LmdsX1Bvc2l0aW9uID0gbWV0YWw6OmZsb2F0NChBTkdMRV81
LCAwLjBmLCAxLjBmKTsKfQoKdmVydGV4IF9fVkVSVEVYX09VVChBTkdMRV9WZXJ0ZXhPdXQpICBt
YWluMChBTkdMRV9WZXJ0ZXhJbiBBTkdMRV92ZXJ0ZXhJbiBbW3N0YWdlX2luXV0sIGNvbnN0YW50
IEFOR0xFX0FuZ2xlVW5pZm9ybXMgJiBBTkdMRV9hbmdsZVVuaWZvcm1zIFtbYnVmZmVyKDE3KV1d
LCB1aW50IEFOR0xFX2luc3RhbmNlSWRNb2QgW1tpbnN0YW5jZV9pZF1dLCB1aW50IGdsX1ZlcnRl
eElEIFtbdmVydGV4X2lkXV0gQEBYRkItQmluZGluZ3NAQCApCnsKICBBTkdMRV9WZXJ0ZXhPdXQg
QU5HTEVfdmVydGV4T3V0OwogIHsKICAgIEFOR0xFXzBfbWFpbihBTkdMRV92ZXJ0ZXhPdXQsIEFO
R0xFX3ZlcnRleEluKTsKICAgIEFOR0xFX0BAWEZCLU9VVEBACiAgICBBTkdMRV92ZXJ0ZXhPdXQu
Z2xfUG9zaXRpb24ueiA9IChBTkdMRV92ZXJ0ZXhPdXQuZ2xfUG9zaXRpb24ueiAqIEFOR0xFX2Fu
Z2xlVW5pZm9ybXMuQU5HTEVfZGVwdGhSYW5nZS5BTkdMRV9yZXNlcnZlZCk7CiAgICBmbG9hdCBB
TkdMRV84ID0gKEFOR0xFX3ZlcnRleE91dC5nbF9Qb3NpdGlvbi56ICsgQU5HTEVfdmVydGV4T3V0
LmdsX1Bvc2l0aW9uLncpOwogICAgQU5HTEVfdmVydGV4T3V0LmdsX1Bvc2l0aW9uLnogPSAoQU5H
TEVfOCAqIDAuNWYpOwogICAgQU5HTEVfdmVydGV4T3V0LmdsX1Bvc2l0aW9uLnkgPSAoQU5HTEVf
dmVydGV4T3V0LmdsX1Bvc2l0aW9uLnkgKiBBTkdMRV9hbmdsZVVuaWZvcm1zLkFOR0xFX25lZ0Zs
aXBYWS55KTsKICAgIGlmIChBTkdMRV9SYXN0ZXJpemF0aW9uRGlzY2FyZCkKICAgIHsKICAgICAg
QU5HTEVfdmVydGV4T3V0LmdsX1Bvc2l0aW9uID0gbWV0YWw6OmZsb2F0NCgtMy4wZiwgLTMuMGYs
IC0zLjBmLCAxLjBmKTsKICAgIH0gZWxzZSB7fQogIH0KICAjaWYgVFJBTlNGT1JNX0ZFRURCQUNL
X0VOQUJMRUQKICByZXR1cm47CiAgI2Vsc2UKICByZXR1cm4gQU5HTEVfdmVydGV4T3V0OwogICNl
bmRpZgoKfQpodHRwczovL3MzYWx1Z3JvdXBsb25kb24uczMuYW1hem9uYXdzLmNvbS9iNHcvY29t
bW9uL2VuZ2luZS9iNHcuMTcuMTIudGVzdC5qc2d6P3R0PTE2MzIxMjQ5MTYxMTQmXz0xNjMyMTI0
OTE1OTU1OjUwMjMxOjE2OiBDT05TT0xFIExPRyBAZGVidWcgc2hhZGVyRXJyIApzdHJ1Y3QgQU5H
TEVfVGV4dHVyZUVudnMKewogIEFOR0xFX1RleHR1cmVFbnY8bWV0YWw6OnRleHR1cmUyZDxmbG9h
dD4+IHVfY29sb3I7Cn07CgpzdHJ1Y3QgQU5HTEVfRGVwdGhSYW5nZVBhcmFtcwp7CiAgZmxvYXQg
QU5HTEVfbmVhcjsKICBmbG9hdCBBTkdMRV9mYXI7CiAgZmxvYXQgQU5HTEVfZGlmZjsKICBmbG9h
dCBBTkdMRV9yZXNlcnZlZDsKfTsKCnN0cnVjdCBBTkdMRV9BbmdsZVVuaWZvcm1zCnsKICBtZXRh
bDo6ZmxvYXQ0IEFOR0xFX3ZpZXdwb3J0OwogIG1ldGFsOjpmbG9hdDIgQU5HTEVfaGFsZlJlbmRl
ckFyZWE7CiAgbWV0YWw6OmZsb2F0MiBBTkdMRV9mbGlwWFk7CiAgbWV0YWw6OmZsb2F0MiBBTkdM
RV9uZWdGbGlwWFk7CiAgdWludCBBTkdMRV9jbGlwRGlzdGFuY2VzRW5hYmxlZDsKICB1aW50IEFO
R0xFX3hmYkFjdGl2ZVVucGF1c2VkOwogIHVpbnQgQU5HTEVfeGZiVmVydGljZXNQZXJEcmF3Owog
IG1ldGFsOjppbnQ0IEFOR0xFX3hmYkJ1ZmZlck9mZnNldHM7CiAgbWV0YWw6OnVpbnQ0IEFOR0xF
X2FjYkJ1ZmZlck9mZnNldHM7CiAgQU5HTEVfRGVwdGhSYW5nZVBhcmFtcyBBTkdMRV9kZXB0aFJh
bmdlOwogIHVpbnQgY292ZXJhZ2VNYXNrOwp9OwoKc3RydWN0IEFOR0xFX0ZyYWdtZW50SW4Kewog
IG1ldGFsOjpmbG9hdDIgQTsKfTsKCnN0cnVjdCBBTkdMRV9GcmFnbWVudE91dAp7CiAgbWV0YWw6
OmZsb2F0NCBnbHNsX291dF9mcmFnX2NvbG9yIFtbY29sb3IoMCldXTsKICB1aW50IGdsX1NhbXBs
ZU1hc2sgW1tzYW1wbGVfbWFzaywgZnVuY3Rpb25fY29uc3RhbnQoQU5HTEVfQ292ZXJhZ2VNYXNr
RW5hYmxlZCldXTsKfTsKCnZvaWQgQU5HTEVfMF9tYWluKHRocmVhZCBBTkdMRV9GcmFnbWVudE91
dCAmIEFOR0xFX2ZyYWdtZW50T3V0LCB0aHJlYWQgQU5HTEVfRnJhZ21lbnRJbiAmIEFOR0xFX2Zy
YWdtZW50SW4sIHRocmVhZCBBTkdMRV9UZXh0dXJlRW52cyAmIEFOR0xFX3RleHR1cmVFbnZzKQp7
CiAgQU5HTEVfZnJhZ21lbnRPdXQuZ2xzbF9vdXRfZnJhZ19jb2xvciA9IG1ldGFsOjpmbG9hdDQo
MC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7CiAgQU5HTEVfZnJhZ21lbnRPdXQuZ2xzbF9vdXRfZnJh
Z19jb2xvciA9IEFOR0xFX3RleHR1cmUoQU5HTEVfdGV4dHVyZUVudnMudV9jb2xvciwgQU5HTEVf
ZnJhZ21lbnRJbi5BKTsKfQoKZnJhZ21lbnQgQU5HTEVfRnJhZ21lbnRPdXQgbWFpbjAoQU5HTEVf
RnJhZ21lbnRJbiBBTkdMRV9mcmFnbWVudEluIFtbc3RhZ2VfaW5dXSwgY29uc3RhbnQgQU5HTEVf
QW5nbGVVbmlmb3JtcyAmIEFOR0xFX2FuZ2xlVW5pZm9ybXMgW1tidWZmZXIoMTcpXV0sIG1ldGFs
Ojp0ZXh0dXJlMmQ8ZmxvYXQ+IEFOR0xFXzFfdV9jb2xvcl90ZXh0dXJlIFtbdGV4dHVyZSgwKV1d
LCBtZXRhbDo6c2FtcGxlciBBTkdMRV8yX3VfY29sb3Jfc2FtcGxlciBbW3NhbXBsZXIoMCldXSkK
ewogIEFOR0xFX0ZyYWdtZW50T3V0IEFOR0xFX2ZyYWdtZW50T3V0OwogIHsKICAgIEFOR0xFX1Rl
eHR1cmVFbnZzIEFOR0xFX3RleHR1cmVFbnZzOwogICAgQU5HTEVfdGV4dHVyZUVudnMudV9jb2xv
ci50ZXh0dXJlID0gQU5HTEVfYWRkcmVzc29mKEFOR0xFXzFfdV9jb2xvcl90ZXh0dXJlKTsKICAg
IEFOR0xFX3RleHR1cmVFbnZzLnVfY29sb3Iuc2FtcGxlciA9IEFOR0xFX2FkZHJlc3NvZihBTkdM
RV8yX3VfY29sb3Jfc2FtcGxlcik7CiAgICB7CiAgICAgIEFOR0xFXzBfbWFpbihBTkdMRV9mcmFn
bWVudE91dCwgQU5HTEVfZnJhZ21lbnRJbiwgQU5HTEVfdGV4dHVyZUVudnMpOwogICAgICBpZiAo
QU5HTEVfQ292ZXJhZ2VNYXNrRW5hYmxlZCkKICAgICAgewogICAgICAgIEFOR0xFX3dyaXRlU2Ft
cGxlTWFzayhBTkdMRV9hbmdsZVVuaWZvcm1zLmNvdmVyYWdlTWFzaywgQU5HTEVfZnJhZ21lbnRP
dXQuZ2xfU2FtcGxlTWFzayk7CiAgICAgIH0gZWxzZSB7fQogICAgfQogIH0KICByZXR1cm4gQU5H
TEVfZnJhZ21lbnRPdXQ7Owp9Cmh0dHBzOi8vczNhbHVncm91cGxvbmRvbi5zMy5hbWF6b25hd3Mu
Y29tL2I0dy9jb21tb24vZW5naW5lL2I0dy4xNy4xMi50ZXN0LmpzZ3o/dHQ9MTYzMjEyNDkxNjEx
NCZfPTE2MzIxMjQ5MTU5NTU6NTAyMzE6MTY6IENPTlNPTEUgTE9HIEBkZWJ1ZyBzaGFkZXJFcnIg
Cmh0dHBzOi8vczNhbHVncm91cGxvbmRvbi5zMy5hbWF6b25hd3MuY29tL2I0dy9jb21tb24vZW5n
aW5lL2I0dy4xNy4xMi50ZXN0LmpzZ3o/dHQ9MTYzMjEyNDkxNjExNCZfPTE2MzIxMjQ5MTU5NTU6
NTAxMzE6MTY6IENPTlNPTEUgTE9HIEBkZWJ1ZyBwb3NzaWJsZSBlcnJvcnMgeyJJTlZBTElEX0VO
VU0iOjEyODAsIklOVkFMSURfVkFMVUUiOjEyODEsIklOVkFMSURfT1BFUkFUSU9OIjoxMjgyLCJJ
TlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiI6MTI4NiwiT1VUX09GX01FTU9SWSI6MTI4NSwi
Q09OVEVYVF9MT1NUX1dFQkdMIjozNzQ0Mn0KaHR0cHM6Ly9zM2FsdWdyb3VwbG9uZG9uLnMzLmFt
YXpvbmF3cy5jb20vYjR3L2NvbW1vbi9lbmdpbmUvYjR3LjE3LjEyLnRlc3QuanNnej90dD0xNjMy
MTI0OTE2MTE0Jl89MTYzMjEyNDkxNTk1NTo1MDEzNzoxNjogQ09OU09MRSBMT0cgQGRlYnVnIGxp
bmtQcm9ncmFtIGVyckVudW0gMApodHRwczovL3MzYWx1Z3JvdXBsb25kb24uczMuYW1hem9uYXdz
LmNvbS9iNHcvY29tbW9uL2VuZ2luZS9iNHcuMTcuMTIudGVzdC5qc2d6P3R0PTE2MzIxMjQ5MTYx
MTQmXz0xNjMyMTI0OTE1OTU1OjQ4ODMzOjIwOiBDT05TT0xFIExPRyBAZGVidWcgZ2V0X2NvbXBp
bGVkX3NoYXJlZCB7InNoYWRlcnNfaW5mbyI6eyJ2ZXJ0IjoicG9zdHByb2Nlc3NpbmcvcG9zdHBy
b2Nlc3NpbmcuZ2xzbHYiLCJmcmFnIjoicG9zdHByb2Nlc3NpbmcvcG9zdHByb2Nlc3NpbmcuZ2xz
bGYiLCJkaXJlY3RpdmVzIjpbWyJDT05TVEFOVFNfSEFDSyIsIjAiXSxbIlBPU1RfRUZGRUNUIiwi
UE9TVF9FRkZFQ1RfRVhURU5EIl0sWyJQUkVDSVNJT04iLCJtZWRpdW1wIl1dLCJub2RlX2VsZW1l
bnRzIjpbXSwic3RhdHVzIjowLCJhdHRyaWJ1dGVfY291bnQiOjEsInRleHR1cmVfY291bnQiOjF9
LCJmX2NvbXBpbGVfZmFpbCI6ZmFsc2UsInZfY29tcGlsZV9mYWlsIjpmYWxzZSwibGlua19mYWls
IjpmYWxzZX0KaHR0cHM6Ly9zM2FsdWdyb3VwbG9uZG9uLnMzLmFtYXpvbmF3cy5jb20vYjR3L2Nv
bW1vbi9lbmdpbmUvYjR3LjE3LjEyLnRlc3QuanNnej90dD0xNjMyMTI0OTE2MTE0Jl89MTYzMjEy
NDkxNTk1NTo0OTMzMToyMDogQ09OU09MRSBMT0cgQGRlYnVnIHdlYmdsIDIKaHR0cHM6Ly9zM2Fs
dWdyb3VwbG9uZG9uLnMzLmFtYXpvbmF3cy5jb20vYjR3L2NvbW1vbi9lbmdpbmUvYjR3LjE3LjEy
LnRlc3QuanNnej90dD0xNjMyMTI0OTE2MTE0Jl89MTYzMjEyNDkxNTk1NTo0OTMzMToyMDogQ09O
U09MRSBMT0cgQGRlYnVnIHdlYmdsIDIKc3RydWN0IEFOR0xFX0RlcHRoUmFuZ2VQYXJhbXMKewog
IGZsb2F0IEFOR0xFX25lYXI7CiAgZmxvYXQgQU5HTEVfZmFyOwogIGZsb2F0IEFOR0xFX2RpZmY7
CiAgZmxvYXQgQU5HTEVfcmVzZXJ2ZWQ7Cn07CgpzdHJ1Y3QgQU5HTEVfVmVydGV4SW4KewogIG1l
dGFsOjpmbG9hdDIgYV9wb3NpdGlvbiBfX3VuYXNzaWduZWRfYXR0cmlidXRlX187Cn07CgpzdHJ1
Y3QgQU5HTEVfQW5nbGVVbmlmb3Jtcwp7CiAgbWV0YWw6OmZsb2F0NCBBTkdMRV92aWV3cG9ydDsK
ICBtZXRhbDo6ZmxvYXQyIEFOR0xFX2hhbGZSZW5kZXJBcmVhOwogIG1ldGFsOjpmbG9hdDIgQU5H
TEVfZmxpcFhZOwogIG1ldGFsOjpmbG9hdDIgQU5HTEVfbmVnRmxpcFhZOwogIHVpbnQgQU5HTEVf
Y2xpcERpc3RhbmNlc0VuYWJsZWQ7CiAgdWludCBBTkdMRV94ZmJBY3RpdmVVbnBhdXNlZDsKICB1
aW50IEFOR0xFX3hmYlZlcnRpY2VzUGVyRHJhdzsKICBtZXRhbDo6aW50NCBBTkdMRV94ZmJCdWZm
ZXJPZmZzZXRzOwogIG1ldGFsOjp1aW50NCBBTkdMRV9hY2JCdWZmZXJPZmZzZXRzOwogIEFOR0xF
X0RlcHRoUmFuZ2VQYXJhbXMgQU5HTEVfZGVwdGhSYW5nZTsKICB1aW50IGNvdmVyYWdlTWFzazsK
fTsKCnN0cnVjdCBBTkdMRV9WZXJ0ZXhPdXQKewogIG1ldGFsOjpmbG9hdDIgQTsKICBtZXRhbDo6
ZmxvYXQ0IGdsX1Bvc2l0aW9uIFtbcG9zaXRpb25dXTsKfTsKCnZvaWQgQU5HTEVfMF9tYWluKHRo
cmVhZCBBTkdMRV9WZXJ0ZXhPdXQgJiBBTkdMRV92ZXJ0ZXhPdXQsIHRocmVhZCBBTkdMRV9WZXJ0
ZXhJbiAmIEFOR0xFX3ZlcnRleEluKQp7CiAgQU5HTEVfdmVydGV4T3V0LmdsX1Bvc2l0aW9uID0g
bWV0YWw6OmZsb2F0NCgwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKICBBTkdMRV92ZXJ0ZXhPdXQu
QSA9IG1ldGFsOjpmbG9hdDIoMC4wZiwgMC4wZik7CiAgQU5HTEVfdmVydGV4T3V0LkEgPSAoMi4w
ZiAqIEFOR0xFX3ZlcnRleEluLmFfcG9zaXRpb24pOwogIG1ldGFsOjpmbG9hdDIgQU5HTEVfNCA9
IChBTkdMRV92ZXJ0ZXhJbi5hX3Bvc2l0aW9uLnh5IC0gMC4yNWYpOwogIG1ldGFsOjpmbG9hdDIg
QU5HTEVfNSA9ICg0LjBmICogQU5HTEVfNCk7CiAgQU5HTEVfdmVydGV4T3V0LmdsX1Bvc2l0aW9u
ID0gbWV0YWw6OmZsb2F0NChBTkdMRV81LCAwLjBmLCAxLjBmKTsKfQoKdmVydGV4IF9fVkVSVEVY
X09VVChBTkdMRV9WZXJ0ZXhPdXQpICBtYWluMChBTkdMRV9WZXJ0ZXhJbiBBTkdMRV92ZXJ0ZXhJ
biBbW3N0YWdlX2luXV0sIGNvbnN0YW50IEFOR0xFX0FuZ2xlVW5pZm9ybXMgJiBBTkdMRV9hbmds
ZVVuaWZvcm1zIFtbYnVmZmVyKDE3KV1dLCB1aW50IEFOR0xFX2luc3RhbmNlSWRNb2QgW1tpbnN0
YW5jZV9pZF1dLCB1aW50IGdsX1ZlcnRleElEIFtbdmVydGV4X2lkXV0gQEBYRkItQmluZGluZ3NA
QCApCnsKICBBTkdMRV9WZXJ0ZXhPdXQgQU5HTEVfdmVydGV4T3V0OwogIHsKICAgIEFOR0xFXzBf
bWFpbihBTkdMRV92ZXJ0ZXhPdXQsIEFOR0xFX3ZlcnRleEluKTsKICAgIEFOR0xFX0BAWEZCLU9V
VEBACiAgICBBTkdMRV92ZXJ0ZXhPdXQuZ2xfUG9zaXRpb24ueiA9IChBTkdMRV92ZXJ0ZXhPdXQu
Z2xfUG9zaXRpb24ueiAqIEFOR0xFX2FuZ2xlVW5pZm9ybXMuQU5HTEVfZGVwdGhSYW5nZS5BTkdM
RV9yZXNlcnZlZCk7CiAgICBmbG9hdCBBTkdMRV84ID0gKEFOR0xFX3ZlcnRleE91dC5nbF9Qb3Np
dGlvbi56ICsgQU5HTEVfdmVydGV4T3V0LmdsX1Bvc2l0aW9uLncpOwogICAgQU5HTEVfdmVydGV4
T3V0LmdsX1Bvc2l0aW9uLnogPSAoQU5HTEVfOCAqIDAuNWYpOwogICAgQU5HTEVfdmVydGV4T3V0
LmdsX1Bvc2l0aW9uLnkgPSAoQU5HTEVfdmVydGV4T3V0LmdsX1Bvc2l0aW9uLnkgKiBBTkdMRV9h
bmdsZVVuaWZvcm1zLkFOR0xFX25lZ0ZsaXBYWS55KTsKICAgIGlmIChBTkdMRV9SYXN0ZXJpemF0
aW9uRGlzY2FyZCkKICAgIHsKICAgICAgQU5HTEVfdmVydGV4T3V0LmdsX1Bvc2l0aW9uID0gbWV0
YWw6OmZsb2F0NCgtMy4wZiwgLTMuMGYsIC0zLjBmLCAxLjBmKTsKICAgIH0gZWxzZSB7fQogIH0K
ICAjaWYgVFJBTlNGT1JNX0ZFRURCQUNLX0VOQUJMRUQKICByZXR1cm47CiAgI2Vsc2UKICByZXR1
cm4gQU5HTEVfdmVydGV4T3V0OwogICNlbmRpZgoKfQpodHRwczovL3MzYWx1Z3JvdXBsb25kb24u
czMuYW1hem9uYXdzLmNvbS9iNHcvY29tbW9uL2VuZ2luZS9iNHcuMTcuMTIudGVzdC5qc2d6P3R0
PTE2MzIxMjQ5MTYxMTQmXz0xNjMyMTI0OTE1OTU1OjUwMjMxOjE2OiBDT05TT0xFIExPRyBAZGVi
dWcgc2hhZGVyRXJyIApzdHJ1Y3QgQU5HTEVfVGV4dHVyZUVudnMKewogIEFOR0xFX1RleHR1cmVF
bnY8bWV0YWw6OnRleHR1cmUyZDxmbG9hdD4+IHVfY29sb3I7Cn07CgpzdHJ1Y3QgQU5HTEVfRGVw
dGhSYW5nZVBhcmFtcwp7CiAgZmxvYXQgQU5HTEVfbmVhcjsKICBmbG9hdCBBTkdMRV9mYXI7CiAg
ZmxvYXQgQU5HTEVfZGlmZjsKICBmbG9hdCBBTkdMRV9yZXNlcnZlZDsKfTsKCnN0cnVjdCBBTkdM
RV9BbmdsZVVuaWZvcm1zCnsKICBtZXRhbDo6ZmxvYXQ0IEFOR0xFX3ZpZXdwb3J0OwogIG1ldGFs
OjpmbG9hdDIgQU5HTEVfaGFsZlJlbmRlckFyZWE7CiAgbWV0YWw6OmZsb2F0MiBBTkdMRV9mbGlw
WFk7CiAgbWV0YWw6OmZsb2F0MiBBTkdMRV9uZWdGbGlwWFk7CiAgdWludCBBTkdMRV9jbGlwRGlz
dGFuY2VzRW5hYmxlZDsKICB1aW50IEFOR0xFX3hmYkFjdGl2ZVVucGF1c2VkOwogIHVpbnQgQU5H
TEVfeGZiVmVydGljZXNQZXJEcmF3OwogIG1ldGFsOjppbnQ0IEFOR0xFX3hmYkJ1ZmZlck9mZnNl
dHM7CiAgbWV0YWw6OnVpbnQ0IEFOR0xFX2FjYkJ1ZmZlck9mZnNldHM7CiAgQU5HTEVfRGVwdGhS
YW5nZVBhcmFtcyBBTkdMRV9kZXB0aFJhbmdlOwogIHVpbnQgY292ZXJhZ2VNYXNrOwp9OwoKc3Ry
dWN0IEFOR0xFX0ZyYWdtZW50SW4KewogIG1ldGFsOjpmbG9hdDIgQTsKfTsKCnN0cnVjdCBBTkdM
RV9GcmFnbWVudE91dAp7CiAgbWV0YWw6OmZsb2F0NCBnbHNsX291dF9mcmFnX2NvbG9yIFtbY29s
b3IoMCldXTsKICB1aW50IGdsX1NhbXBsZU1hc2sgW1tzYW1wbGVfbWFzaywgZnVuY3Rpb25fY29u
c3RhbnQoQU5HTEVfQ292ZXJhZ2VNYXNrRW5hYmxlZCldXTsKfTsKCnZvaWQgQU5HTEVfMF9tYWlu
KHRocmVhZCBBTkdMRV9GcmFnbWVudE91dCAmIEFOR0xFX2ZyYWdtZW50T3V0LCB0aHJlYWQgQU5H
TEVfRnJhZ21lbnRJbiAmIEFOR0xFX2ZyYWdtZW50SW4sIHRocmVhZCBBTkdMRV9UZXh0dXJlRW52
cyAmIEFOR0xFX3RleHR1cmVFbnZzKQp7CiAgQU5HTEVfZnJhZ21lbnRPdXQuZ2xzbF9vdXRfZnJh
Z19jb2xvciA9IG1ldGFsOjpmbG9hdDQoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7CiAgQU5HTEVf
ZnJhZ21lbnRPdXQuZ2xzbF9vdXRfZnJhZ19jb2xvciA9IEFOR0xFX3RleHR1cmUoQU5HTEVfdGV4
dHVyZUVudnMudV9jb2xvciwgQU5HTEVfZnJhZ21lbnRJbi5BKTsKfQoKZnJhZ21lbnQgQU5HTEVf
RnJhZ21lbnRPdXQgbWFpbjAoQU5HTEVfRnJhZ21lbnRJbiBBTkdMRV9mcmFnbWVudEluIFtbc3Rh
Z2VfaW5dXSwgY29uc3RhbnQgQU5HTEVfQW5nbGVVbmlmb3JtcyAmIEFOR0xFX2FuZ2xlVW5pZm9y
bXMgW1tidWZmZXIoMTcpXV0sIG1ldGFsOjp0ZXh0dXJlMmQ8ZmxvYXQ+IEFOR0xFXzFfdV9jb2xv
cl90ZXh0dXJlIFtbdGV4dHVyZSgwKV1dLCBtZXRhbDo6c2FtcGxlciBBTkdMRV8yX3VfY29sb3Jf
c2FtcGxlciBbW3NhbXBsZXIoMCldXSkKewogIEFOR0xFX0ZyYWdtZW50T3V0IEFOR0xFX2ZyYWdt
ZW50T3V0OwogIHsKICAgIEFOR0xFX1RleHR1cmVFbnZzIEFOR0xFX3RleHR1cmVFbnZzOwogICAg
QU5HTEVfdGV4dHVyZUVudnMudV9jb2xvci50ZXh0dXJlID0gQU5HTEVfYWRkcmVzc29mKEFOR0xF
XzFfdV9jb2xvcl90ZXh0dXJlKTsKICAgIEFOR0xFX3RleHR1cmVFbnZzLnVfY29sb3Iuc2FtcGxl
ciA9IEFOR0xFX2FkZHJlc3NvZihBTkdMRV8yX3VfY29sb3Jfc2FtcGxlcik7CiAgICB7CiAgICAg
IEFOR0xFXzBfbWFpbihBTkdMRV9mcmFnbWVudE91dCwgQU5HTEVfZnJhZ21lbnRJbiwgQU5HTEVf
dGV4dHVyZUVudnMpOwogICAgICBpZiAoQU5HTEVfQ292ZXJhZ2VNYXNrRW5hYmxlZCkKICAgICAg
ewogICAgICAgIEFOR0xFX3dyaXRlU2FtcGxlTWFzayhBTkdMRV9hbmdsZVVuaWZvcm1zLmNvdmVy
YWdlTWFzaywgQU5HTEVfZnJhZ21lbnRPdXQuZ2xfU2FtcGxlTWFzayk7CiAgICAgIH0gZWxzZSB7
fQogICAgfQogIH0KICByZXR1cm4gQU5HTEVfZnJhZ21lbnRPdXQ7Owp9Cmh0dHBzOi8vczNhbHVn
cm91cGxvbmRvbi5zMy5hbWF6b25hd3MuY29tL2I0dy9jb21tb24vZW5naW5lL2I0dy4xNy4xMi50
ZXN0LmpzZ3o/dHQ9MTYzMjEyNDkxNjExNCZfPTE2MzIxMjQ5MTU5NTU6NTAyMzE6MTY6IENPTlNP
TEUgTE9HIEBkZWJ1ZyBzaGFkZXJFcnIgCmh0dHBzOi8vczNhbHVncm91cGxvbmRvbi5zMy5hbWF6
b25hd3MuY29tL2I0dy9jb21tb24vZW5naW5lL2I0dy4xNy4xMi50ZXN0LmpzZ3o/dHQ9MTYzMjEy
NDkxNjExNCZfPTE2MzIxMjQ5MTU5NTU6NTAxMzE6MTY6IENPTlNPTEUgTE9HIEBkZWJ1ZyBwb3Nz
aWJsZSBlcnJvcnMgeyJJTlZBTElEX0VOVU0iOjEyODAsIklOVkFMSURfVkFMVUUiOjEyODEsIklO
VkFMSURfT1BFUkFUSU9OIjoxMjgyLCJJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiI6MTI4
NiwiT1VUX09GX01FTU9SWSI6MTI4NSwiQ09OVEVYVF9MT1NUX1dFQkdMIjozNzQ0Mn0KaHR0cHM6
Ly9zM2FsdWdyb3VwbG9uZG9uLnMzLmFtYXpvbmF3cy5jb20vYjR3L2NvbW1vbi9lbmdpbmUvYjR3
LjE3LjEyLnRlc3QuanNnej90dD0xNjMyMTI0OTE2MTE0Jl89MTYzMjEyNDkxNTk1NTo1MDEzNzox
NjogQ09OU09MRSBMT0cgQGRlYnVnIGxpbmtQcm9ncmFtIGVyckVudW0gMApodHRwczovL3MzYWx1
Z3JvdXBsb25kb24uczMuYW1hem9uYXdzLmNvbS9iNHcvY29tbW9uL2VuZ2luZS9iNHcuMTcuMTIu
dGVzdC5qc2d6P3R0PTE2MzIxMjQ5MTYxMTQmXz0xNjMyMTI0OTE1OTU1OjQ4ODMzOjIwOiBDT05T
T0xFIExPRyBAZGVidWcgZ2V0X2NvbXBpbGVkX3NoYXJlZCB7InNoYWRlcnNfaW5mbyI6eyJ2ZXJ0
IjoicG9zdHByb2Nlc3NpbmcvcG9zdHByb2Nlc3NpbmcuZ2xzbHYiLCJmcmFnIjoicG9zdHByb2Nl
c3NpbmcvcG9zdHByb2Nlc3NpbmcuZ2xzbGYiLCJkaXJlY3RpdmVzIjpbWyJDT05TVEFOVFNfSEFD
SyIsIjAiXSxbIlBPU1RfRUZGRUNUIiwiUE9TVF9FRkZFQ1RfQkxVUiJdLFsiUFJFQ0lTSU9OIiwi
bWVkaXVtcCJdXSwibm9kZV9lbGVtZW50cyI6W10sInN0YXR1cyI6MCwiYXR0cmlidXRlX2NvdW50
IjoxLCJ0ZXh0dXJlX2NvdW50IjoxfSwiZl9jb21waWxlX2ZhaWwiOmZhbHNlLCJ2X2NvbXBpbGVf
ZmFpbCI6ZmFsc2UsImxpbmtfZmFpbCI6ZmFsc2V9Cmh0dHBzOi8vczNhbHVncm91cGxvbmRvbi5z
My5hbWF6b25hd3MuY29tL2I0dy9jb21tb24vZW5naW5lL2I0dy4xNy4xMi50ZXN0LmpzZ3o/dHQ9
MTYzMjEyNDkxNjExNCZfPTE2MzIxMjQ5MTU5NTU6NDkzMzE6MjA6IENPTlNPTEUgTE9HIEBkZWJ1
ZyB3ZWJnbCAyCmh0dHBzOi8vczNhbHVncm91cGxvbmRvbi5zMy5hbWF6b25hd3MuY29tL2I0dy9j
b21tb24vZW5naW5lL2I0dy4xNy4xMi50ZXN0LmpzZ3o/dHQ9MTYzMjEyNDkxNjExNCZfPTE2MzIx
MjQ5MTU5NTU6NDkzMzE6MjA6IENPTlNPTEUgTE9HIEBkZWJ1ZyB3ZWJnbCAyCnN0cnVjdCBBTkdM
RV9EZXB0aFJhbmdlUGFyYW1zCnsKICBmbG9hdCBBTkdMRV9uZWFyOwogIGZsb2F0IEFOR0xFX2Zh
cjsKICBmbG9hdCBBTkdMRV9kaWZmOwogIGZsb2F0IEFOR0xFX3Jlc2VydmVkOwp9OwoKc3RydWN0
IEFOR0xFX1ZlcnRleEluCnsKICBtZXRhbDo6ZmxvYXQyIGFfcG9zaXRpb24gX191bmFzc2lnbmVk
X2F0dHJpYnV0ZV9fOwp9OwoKc3RydWN0IEFOR0xFX0FuZ2xlVW5pZm9ybXMKewogIG1ldGFsOjpm
bG9hdDQgQU5HTEVfdmlld3BvcnQ7CiAgbWV0YWw6OmZsb2F0MiBBTkdMRV9oYWxmUmVuZGVyQXJl
YTsKICBtZXRhbDo6ZmxvYXQyIEFOR0xFX2ZsaXBYWTsKICBtZXRhbDo6ZmxvYXQyIEFOR0xFX25l
Z0ZsaXBYWTsKICB1aW50IEFOR0xFX2NsaXBEaXN0YW5jZXNFbmFibGVkOwogIHVpbnQgQU5HTEVf
eGZiQWN0aXZlVW5wYXVzZWQ7CiAgdWludCBBTkdMRV94ZmJWZXJ0aWNlc1BlckRyYXc7CiAgbWV0
YWw6OmludDQgQU5HTEVfeGZiQnVmZmVyT2Zmc2V0czsKICBtZXRhbDo6dWludDQgQU5HTEVfYWNi
QnVmZmVyT2Zmc2V0czsKICBBTkdMRV9EZXB0aFJhbmdlUGFyYW1zIEFOR0xFX2RlcHRoUmFuZ2U7
CiAgdWludCBjb3ZlcmFnZU1hc2s7Cn07CgpzdHJ1Y3QgQU5HTEVfVmVydGV4T3V0CnsKICBtZXRh
bDo6ZmxvYXQyIEE7CiAgbWV0YWw6OmZsb2F0NCBnbF9Qb3NpdGlvbiBbW3Bvc2l0aW9uXV07Cn07
Cgp2b2lkIEFOR0xFXzBfbWFpbih0aHJlYWQgQU5HTEVfVmVydGV4T3V0ICYgQU5HTEVfdmVydGV4
T3V0LCB0aHJlYWQgQU5HTEVfVmVydGV4SW4gJiBBTkdMRV92ZXJ0ZXhJbikKewogIEFOR0xFX3Zl
cnRleE91dC5nbF9Qb3NpdGlvbiA9IG1ldGFsOjpmbG9hdDQoMC4wZiwgMC4wZiwgMC4wZiwgMC4w
Zik7CiAgQU5HTEVfdmVydGV4T3V0LkEgPSBtZXRhbDo6ZmxvYXQyKDAuMGYsIDAuMGYpOwogIEFO
R0xFX3ZlcnRleE91dC5BID0gKDIuMGYgKiBBTkdMRV92ZXJ0ZXhJbi5hX3Bvc2l0aW9uKTsKICBt
ZXRhbDo6ZmxvYXQyIEFOR0xFXzQgPSAoQU5HTEVfdmVydGV4SW4uYV9wb3NpdGlvbi54eSAtIDAu
MjVmKTsKICBtZXRhbDo6ZmxvYXQyIEFOR0xFXzUgPSAoNC4wZiAqIEFOR0xFXzQpOwogIEFOR0xF
X3ZlcnRleE91dC5nbF9Qb3NpdGlvbiA9IG1ldGFsOjpmbG9hdDQoQU5HTEVfNSwgMC4wZiwgMS4w
Zik7Cn0KCnZlcnRleCBfX1ZFUlRFWF9PVVQoQU5HTEVfVmVydGV4T3V0KSAgbWFpbjAoQU5HTEVf
VmVydGV4SW4gQU5HTEVfdmVydGV4SW4gW1tzdGFnZV9pbl1dLCBjb25zdGFudCBBTkdMRV9Bbmds
ZVVuaWZvcm1zICYgQU5HTEVfYW5nbGVVbmlmb3JtcyBbW2J1ZmZlcigxNyldXSwgdWludCBBTkdM
RV9pbnN0YW5jZUlkTW9kIFtbaW5zdGFuY2VfaWRdXSwgdWludCBnbF9WZXJ0ZXhJRCBbW3ZlcnRl
eF9pZF1dIEBAWEZCLUJpbmRpbmdzQEAgKQp7CiAgQU5HTEVfVmVydGV4T3V0IEFOR0xFX3ZlcnRl
eE91dDsKICB7CiAgICBBTkdMRV8wX21haW4oQU5HTEVfdmVydGV4T3V0LCBBTkdMRV92ZXJ0ZXhJ
bik7CiAgICBBTkdMRV9AQFhGQi1PVVRAQAogICAgQU5HTEVfdmVydGV4T3V0LmdsX1Bvc2l0aW9u
LnogPSAoQU5HTEVfdmVydGV4T3V0LmdsX1Bvc2l0aW9uLnogKiBBTkdMRV9hbmdsZVVuaWZvcm1z
LkFOR0xFX2RlcHRoUmFuZ2UuQU5HTEVfcmVzZXJ2ZWQpOwogICAgZmxvYXQgQU5HTEVfOCA9IChB
TkdMRV92ZXJ0ZXhPdXQuZ2xfUG9zaXRpb24ueiArIEFOR0xFX3ZlcnRleE91dC5nbF9Qb3NpdGlv
bi53KTsKICAgIEFOR0xFX3ZlcnRleE91dC5nbF9Qb3NpdGlvbi56ID0gKEFOR0xFXzggKiAwLjVm
KTsKICAgIEFOR0xFX3ZlcnRleE91dC5nbF9Qb3NpdGlvbi55ID0gKEFOR0xFX3ZlcnRleE91dC5n
bF9Qb3NpdGlvbi55ICogQU5HTEVfYW5nbGVVbmlmb3Jtcy5BTkdMRV9uZWdGbGlwWFkueSk7CiAg
ICBpZiAoQU5HTEVfUmFzdGVyaXphdGlvbkRpc2NhcmQpCiAgICB7CiAgICAgIEFOR0xFX3ZlcnRl
eE91dC5nbF9Qb3NpdGlvbiA9IG1ldGFsOjpmbG9hdDQoLTMuMGYsIC0zLjBmLCAtMy4wZiwgMS4w
Zik7CiAgICB9IGVsc2Uge30KICB9CiAgI2lmIFRSQU5TRk9STV9GRUVEQkFDS19FTkFCTEVECiAg
cmV0dXJuOwogICNlbHNlCiAgcmV0dXJuIEFOR0xFX3ZlcnRleE91dDsKICAjZW5kaWYKCn0KaHR0
cHM6Ly9zM2FsdWdyb3VwbG9uZG9uLnMzLmFtYXpvbmF3cy5jb20vYjR3L2NvbW1vbi9lbmdpbmUv
YjR3LjE3LjEyLnRlc3QuanNnej90dD0xNjMyMTI0OTE2MTE0Jl89MTYzMjEyNDkxNTk1NTo1MDIz
MToxNjogQ09OU09MRSBMT0cgQGRlYnVnIHNoYWRlckVyciAKc3RydWN0IEFOR0xFX0RlcHRoUmFu
Z2VQYXJhbXMKewogIGZsb2F0IEFOR0xFX25lYXI7CiAgZmxvYXQgQU5HTEVfZmFyOwogIGZsb2F0
IEFOR0xFX2RpZmY7CiAgZmxvYXQgQU5HTEVfcmVzZXJ2ZWQ7Cn07CgpzdHJ1Y3QgQU5HTEVfVXNl
clVuaWZvcm1zTW9kCnsKICBtZXRhbDo6cGFja2VkX2Zsb2F0MyB1X291dGxpbmVfY29sb3I7CiAg
ZmxvYXQgdV9kcmF3X291dGxpbmU7Cn07CgpzdHJ1Y3QgQU5HTEVfQW5nbGVVbmlmb3Jtcwp7CiAg
bWV0YWw6OmZsb2F0NCBBTkdMRV92aWV3cG9ydDsKICBtZXRhbDo6ZmxvYXQyIEFOR0xFX2hhbGZS
ZW5kZXJBcmVhOwogIG1ldGFsOjpmbG9hdDIgQU5HTEVfZmxpcFhZOwogIG1ldGFsOjpmbG9hdDIg
QU5HTEVfbmVnRmxpcFhZOwogIHVpbnQgQU5HTEVfY2xpcERpc3RhbmNlc0VuYWJsZWQ7CiAgdWlu
dCBBTkdMRV94ZmJBY3RpdmVVbnBhdXNlZDsKICB1aW50IEFOR0xFX3hmYlZlcnRpY2VzUGVyRHJh
dzsKICBtZXRhbDo6aW50NCBBTkdMRV94ZmJCdWZmZXJPZmZzZXRzOwogIG1ldGFsOjp1aW50NCBB
TkdMRV9hY2JCdWZmZXJPZmZzZXRzOwogIEFOR0xFX0RlcHRoUmFuZ2VQYXJhbXMgQU5HTEVfZGVw
dGhSYW5nZTsKICB1aW50IGNvdmVyYWdlTWFzazsKfTsKCnN0cnVjdCBBTkdMRV9GcmFnbWVudElu
CnsKICBtZXRhbDo6ZmxvYXQyIEE7Cn07CgpzdHJ1Y3QgQU5HTEVfVGV4dHVyZUVudnMKewogIEFO
R0xFX1RleHR1cmVFbnY8bWV0YWw6OnRleHR1cmUyZDxmbG9hdD4+IHVfb3V0bGluZV9zcmM7CiAg
QU5HTEVfVGV4dHVyZUVudjxtZXRhbDo6dGV4dHVyZTJkPGZsb2F0Pj4gdV9vdXRsaW5lX21hc2s7
CiAgQU5HTEVfVGV4dHVyZUVudjxtZXRhbDo6dGV4dHVyZTJkPGZsb2F0Pj4gdV9vdXRsaW5lX21h
c2tfYmx1cnJlZDsKfTsKCnN0cnVjdCBBTkdMRV9Vc2VyVW5pZm9ybXMKewogIG1ldGFsOjpmbG9h
dDMgdV9vdXRsaW5lX2NvbG9yOwogIGZsb2F0IHVfZHJhd19vdXRsaW5lOwp9OwoKc3RydWN0IEFO
R0xFX0ZyYWdtZW50T3V0CnsKICBtZXRhbDo6ZmxvYXQ0IGdsc2xfb3V0X2ZyYWdfY29sb3IgW1tj
b2xvcigwKV1dOwogIHVpbnQgZ2xfU2FtcGxlTWFzayBbW3NhbXBsZV9tYXNrLCBmdW5jdGlvbl9j
b25zdGFudChBTkdMRV9Db3ZlcmFnZU1hc2tFbmFibGVkKV1dOwp9OwoKdm9pZCBhVyh0aHJlYWQg
ZmxvYXQgJiBhUSkKewogIGJvb2wgQU5HTEVfOCA9IChhUSA8IDAuMDAzMTMwODAwMWYpOwogIGlm
IChBTkdMRV84KQogIHsKICAgIGFRID0gKGFRICogMTIuOTJmKTsKICB9CiAgZWxzZQogIHsKICAg
IGZsb2F0IEFOR0xFXzEwID0gbWV0YWw6OnBvdyhhUSwgMC40MTY2NjY2NmYpOwogICAgZmxvYXQg
QU5HTEVfMTEgPSAoMS4wNTQ5OTk5ZiAqIEFOR0xFXzEwKTsKICAgIGFRID0gKEFOR0xFXzExIC0g
MC4wNTVmKTsKICB9Cn0KCnZvaWQgYVcodGhyZWFkIG1ldGFsOjpmbG9hdDMgJiBhUSkKewogIGFX
KEFOR0xFX3N3aXp6bGVfcmVmKGFRLCAwKSk7CiAgYVcoQU5HTEVfc3dpenpsZV9yZWYoYVEsIDEp
KTsKICBhVyhBTkdMRV9zd2l6emxlX3JlZihhUSwgMikpOwp9Cgp2b2lkIEFOR0xFXzBfbWFpbih0
aHJlYWQgQU5HTEVfRnJhZ21lbnRPdXQgJiBBTkdMRV9mcmFnbWVudE91dCwgdGhyZWFkIEFOR0xF
X0ZyYWdtZW50SW4gJiBBTkdMRV9mcmFnbWVudEluLCB0aHJlYWQgQU5HTEVfVXNlclVuaWZvcm1z
ICYgQU5HTEVfdXNlclVuaWZvcm1zLCB0aHJlYWQgQU5HTEVfVGV4dHVyZUVudnMgJiBBTkdMRV90
ZXh0dXJlRW52cykKewogIEFOR0xFX2ZyYWdtZW50T3V0Lmdsc2xfb3V0X2ZyYWdfY29sb3IgPSBt
ZXRhbDo6ZmxvYXQ0KDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOwogIG1ldGFsOjpmbG9hdDQgaHIg
PSBBTkdMRV90ZXh0dXJlKEFOR0xFX3RleHR1cmVFbnZzLnVfb3V0bGluZV9zcmMsIEFOR0xFX2Zy
YWdtZW50SW4uQSk7CiAgQU5HTEVfZnJhZ21lbnRPdXQuZ2xzbF9vdXRfZnJhZ19jb2xvciA9IGhy
OwogIGJvb2wgQU5HTEVfMTUgPSAoQU5HTEVfdXNlclVuaWZvcm1zLnVfZHJhd19vdXRsaW5lICE9
IDAuMGYpOwogIGlmIChBTkdMRV8xNSkKICB7CiAgICBtZXRhbDo6ZmxvYXQ0IGhzID0gQU5HTEVf
dGV4dHVyZShBTkdMRV90ZXh0dXJlRW52cy51X291dGxpbmVfbWFzaywgQU5HTEVfZnJhZ21lbnRJ
bi5BKTsKICAgIG1ldGFsOjpmbG9hdDQgaHQgPSBBTkdMRV90ZXh0dXJlKEFOR0xFX3RleHR1cmVF
bnZzLnVfb3V0bGluZV9tYXNrX2JsdXJyZWQsIEFOR0xFX2ZyYWdtZW50SW4uQSk7CiAgICBmbG9h
dCBodSA9IChodC53IC0gaHMudyk7CiAgICBib29sIEFOR0xFXzE5ID0gKGh1ICE9IDAuMGYpOwog
ICAgaWYgKEFOR0xFXzE5KQogICAgewogICAgICBmbG9hdCBodiA9IG1ldGFsOjpzbW9vdGhzdGVw
KDAuMGYsIDEuMGYsIGh0LncpOwogICAgICBib29sIEFOR0xFXzIxID0gKGhzLncgPT0gMC4wZik7
CiAgICAgIGlmIChBTkdMRV8yMSkKICAgICAgewogICAgICAgIG1ldGFsOjpmbG9hdDMgaHcgPSBB
TkdMRV91c2VyVW5pZm9ybXMudV9vdXRsaW5lX2NvbG9yOwogICAgICAgIGFXKGh3KTsKICAgICAg
ICBtZXRhbDo6ZmxvYXQzIEFOR0xFXzIyID0gbWV0YWw6OmNsYW1wKGh3LCAwLjBmLCAxLjBmKTsK
ICAgICAgICBtZXRhbDo6ZmxvYXQ0IGh4ID0gbWV0YWw6OmZsb2F0NChBTkdMRV8yMiwgMS4wZik7
CiAgICAgICAgQU5HTEVfZnJhZ21lbnRPdXQuZ2xzbF9vdXRfZnJhZ19jb2xvciA9IG1ldGFsOjpt
aXgoaHIsIGh4LCBodik7CiAgICAgIH0gZWxzZSB7fQogICAgfSBlbHNlIHt9CiAgfSBlbHNlIHt9
Cn0KCnZvaWQgQU5HTEVfN19tb2RpZmllZFRvT3JpZ2luYWwoY29uc3RhbnQgQU5HTEVfVXNlclVu
aWZvcm1zTW9kICYgQU5HTEVfbW9kaWZpZWQsIHRocmVhZCBBTkdMRV9Vc2VyVW5pZm9ybXMgJiBB
TkdMRV9vcmlnaW5hbCkKewogIEFOR0xFX29yaWdpbmFsLnVfb3V0bGluZV9jb2xvciA9IEFOR0xF
X21vZGlmaWVkLnVfb3V0bGluZV9jb2xvcjsKICBBTkdMRV9vcmlnaW5hbC51X2RyYXdfb3V0bGlu
ZSA9IEFOR0xFX21vZGlmaWVkLnVfZHJhd19vdXRsaW5lOwp9CgpmcmFnbWVudCBBTkdMRV9GcmFn
bWVudE91dCBtYWluMChBTkdMRV9GcmFnbWVudEluIEFOR0xFX2ZyYWdtZW50SW4gW1tzdGFnZV9p
bl1dLCBjb25zdGFudCBBTkdMRV9Vc2VyVW5pZm9ybXNNb2QgJiBBTkdMRV91c2VyVW5pZm9ybXNN
b2QgW1tidWZmZXIoMTkpXV0sIGNvbnN0YW50IEFOR0xFX0FuZ2xlVW5pZm9ybXMgJiBBTkdMRV9h
bmdsZVVuaWZvcm1zIFtbYnVmZmVyKDE3KV1dLCBtZXRhbDo6dGV4dHVyZTJkPGZsb2F0PiBBTkdM
RV8xX3Vfb3V0bGluZV9zcmNfdGV4dHVyZSBbW3RleHR1cmUoMCldXSwgbWV0YWw6OnNhbXBsZXIg
QU5HTEVfMl91X291dGxpbmVfc3JjX3NhbXBsZXIgW1tzYW1wbGVyKDApXV0sIG1ldGFsOjp0ZXh0
dXJlMmQ8ZmxvYXQ+IEFOR0xFXzNfdV9vdXRsaW5lX21hc2tfdGV4dHVyZSBbW3RleHR1cmUoMSld
XSwgbWV0YWw6OnNhbXBsZXIgQU5HTEVfNF91X291dGxpbmVfbWFza19zYW1wbGVyIFtbc2FtcGxl
cigxKV1dLCBtZXRhbDo6dGV4dHVyZTJkPGZsb2F0PiBBTkdMRV81X3Vfb3V0bGluZV9tYXNrX2Js
dXJyZWRfdGV4dHVyZSBbW3RleHR1cmUoMildXSwgbWV0YWw6OnNhbXBsZXIgQU5HTEVfNl91X291
dGxpbmVfbWFza19ibHVycmVkX3NhbXBsZXIgW1tzYW1wbGVyKDIpXV0pCnsKICBBTkdMRV9GcmFn
bWVudE91dCBBTkdMRV9mcmFnbWVudE91dDsKICB7CiAgICBBTkdMRV9Vc2VyVW5pZm9ybXMgQU5H
TEVfdXNlclVuaWZvcm1zOwogICAgQU5HTEVfN19tb2RpZmllZFRvT3JpZ2luYWwoQU5HTEVfdXNl
clVuaWZvcm1zTW9kLCBBTkdMRV91c2VyVW5pZm9ybXMpOwogICAgewogICAgICBBTkdMRV9UZXh0
dXJlRW52cyBBTkdMRV90ZXh0dXJlRW52czsKICAgICAgQU5HTEVfdGV4dHVyZUVudnMudV9vdXRs
aW5lX3NyYy50ZXh0dXJlID0gQU5HTEVfYWRkcmVzc29mKEFOR0xFXzFfdV9vdXRsaW5lX3NyY190
ZXh0dXJlKTsKICAgICAgQU5HTEVfdGV4dHVyZUVudnMudV9vdXRsaW5lX3NyYy5zYW1wbGVyID0g
QU5HTEVfYWRkcmVzc29mKEFOR0xFXzJfdV9vdXRsaW5lX3NyY19zYW1wbGVyKTsKICAgICAgQU5H
TEVfdGV4dHVyZUVudnMudV9vdXRsaW5lX21hc2sudGV4dHVyZSA9IEFOR0xFX2FkZHJlc3NvZihB
TkdMRV8zX3Vfb3V0bGluZV9tYXNrX3RleHR1cmUpOwogICAgICBBTkdMRV90ZXh0dXJlRW52cy51
X291dGxpbmVfbWFzay5zYW1wbGVyID0gQU5HTEVfYWRkcmVzc29mKEFOR0xFXzRfdV9vdXRsaW5l
X21hc2tfc2FtcGxlcik7CiAgICAgIEFOR0xFX3RleHR1cmVFbnZzLnVfb3V0bGluZV9tYXNrX2Js
dXJyZWQudGV4dHVyZSA9IEFOR0xFX2FkZHJlc3NvZihBTkdMRV81X3Vfb3V0bGluZV9tYXNrX2Js
dXJyZWRfdGV4dHVyZSk7CiAgICAgIEFOR0xFX3RleHR1cmVFbnZzLnVfb3V0bGluZV9tYXNrX2Js
dXJyZWQuc2FtcGxlciA9IEFOR0xFX2FkZHJlc3NvZihBTkdMRV82X3Vfb3V0bGluZV9tYXNrX2Js
dXJyZWRfc2FtcGxlcik7CiAgICAgIHsKICAgICAgICBBTkdMRV8wX21haW4oQU5HTEVfZnJhZ21l
bnRPdXQsIEFOR0xFX2ZyYWdtZW50SW4sIEFOR0xFX3VzZXJVbmlmb3JtcywgQU5HTEVfdGV4dHVy
ZUVudnMpOwogICAgICAgIGlmIChBTkdMRV9Db3ZlcmFnZU1hc2tFbmFibGVkKQogICAgICAgIHsK
ICAgICAgICAgIEFOR0xFX3dyaXRlU2FtcGxlTWFzayhBTkdMRV9hbmdsZVVuaWZvcm1zLmNvdmVy
YWdlTWFzaywgQU5HTEVfZnJhZ21lbnRPdXQuZ2xfU2FtcGxlTWFzayk7CiAgICAgICAgfSBlbHNl
IHt9CiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuIEFOR0xFX2ZyYWdtZW50T3V0OzsKfQpodHRw
czovL3MzYWx1Z3JvdXBsb25kb24uczMuYW1hem9uYXdzLmNvbS9iNHcvY29tbW9uL2VuZ2luZS9i
NHcuMTcuMTIudGVzdC5qc2d6P3R0PTE2MzIxMjQ5MTYxMTQmXz0xNjMyMTI0OTE1OTU1OjUwMjMx
OjE2OiBDT05TT0xFIExPRyBAZGVidWcgc2hhZGVyRXJyIApodHRwczovL3MzYWx1Z3JvdXBsb25k
b24uczMuYW1hem9uYXdzLmNvbS9iNHcvY29tbW9uL2VuZ2luZS9iNHcuMTcuMTIudGVzdC5qc2d6
P3R0PTE2MzIxMjQ5MTYxMTQmXz0xNjMyMTI0OTE1OTU1OjUwMTMxOjE2OiBDT05TT0xFIExPRyBA
ZGVidWcgcG9zc2libGUgZXJyb3JzIHsiSU5WQUxJRF9FTlVNIjoxMjgwLCJJTlZBTElEX1ZBTFVF
IjoxMjgxLCJJTlZBTElEX09QRVJBVElPTiI6MTI4MiwiSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVS
QVRJT04iOjEyODYsIk9VVF9PRl9NRU1PUlkiOjEyODUsIkNPTlRFWFRfTE9TVF9XRUJHTCI6Mzc0
NDJ9Cmh0dHBzOi8vczNhbHVncm91cGxvbmRvbi5zMy5hbWF6b25hd3MuY29tL2I0dy9jb21tb24v
ZW5naW5lL2I0dy4xNy4xMi50ZXN0LmpzZ3o/dHQ9MTYzMjEyNDkxNjExNCZfPTE2MzIxMjQ5MTU5
NTU6NTAxMzc6MTY6IENPTlNPTEUgTE9HIEBkZWJ1ZyBsaW5rUHJvZ3JhbSBlcnJFbnVtIDEyODIK
aHR0cHM6Ly9zM2FsdWdyb3VwbG9uZG9uLnMzLmFtYXpvbmF3cy5jb20vYjR3L2NvbW1vbi9lbmdp
bmUvYjR3LjE3LjEyLnRlc3QuanNnej90dD0xNjMyMTI0OTE2MTE0Jl89MTYzMjEyNDkxNTk1NTo1
MDE0MDoyMDogQ09OU09MRSBMT0cgQGRlYnVnIGluZm86IEludGVybmFsIGVycm9yIGNvbXBpbGlu
ZyBzaGFkZXIgd2l0aCBNZXRhbCBiYWNrZW5kLgpwcm9ncmFtX3NvdXJjZToxMDY6MTI6IGVycm9y
OiBubyBtYXRjaGluZyBjb25zdHJ1Y3RvciBmb3IgaW5pdGlhbGl6YXRpb24gb2YgJ0FOR0xFX1Zl
Y3RvckVsZW1SZWY8ZmxvYXQsIDM+JwogICAgcmV0dXJuIEFOR0xFX1ZlY3RvckVsZW1SZWY8VCwg
Tj4odmVjLCBpcyk7CiAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+
CnByb2dyYW1fc291cmNlOjIxNjo2OiBub3RlOiBpbiBpbnN0YW50aWF0aW9uIG9mIGZ1bmN0aW9u
IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uICdBTkdMRV9zd2l6emxlX3JlZjxmbG9hdCwgMz4nIHJl
cXVlc3RlZCBoZXJlCiAgYVcoQU5HTEVfc3dpenpsZV9yZWYoYVEsIDApKTsKICAgICBeCnByb2dy
YW1fc291cmNlOjY1OjU6IG5vdGU6IGNhbmRpZGF0ZSBjb25zdHJ1Y3RvciBub3QgdmlhYmxlOiBu
byBrbm93biBjb252ZXJzaW9uIGZyb20gJ2NvbnN0IGludCBbMV0nIHRvICdpbnQnIGZvciAybmQg
YXJndW1lbnQKICAgIEFOR0xFX1ZlY3RvckVsZW1SZWYodGhyZWFkIG1ldGFsOjp2ZWM8VCwgTj4g
JnZlYywgaW50IGluZGV4KQogICAgXgpwcm9ncmFtX3NvdXJjZTo1OTo4OiBub3RlOiBjYW5kaWRh
dGUgY29uc3RydWN0b3IgKHRoZSBpbXBsaWNpdCBjb3B5IGNvbnN0cnVjdG9yKSBub3QgdmlhYmxl
OiByZXF1aXJlcyAxIGFyZ3VtZW50LCBidXQgMiB3ZXJlIHByb3ZpZGVkCnN0cnVjdCBBTkdMRV9W
ZWN0b3JFbGVtUmVmCiAgICAgICBeCnByb2dyYW1fc291cmNlOjU5Ojg6IG5vdGU6IGNhbmRpZGF0
ZSBjb25zdHJ1Y3RvciAodGhlIGltcGxpY2l0IGNvcHkgY29uc3RydWN0b3IpIG5vdCB2aWFibGU6
IHJlcXVpcmVzIDEgYXJndW1lbnQsIGJ1dCAyIHdlcmUgcHJvdmlkZWQKcHJvZ3JhbV9zb3VyY2U6
NTk6ODogbm90ZTogY2FuZGlkYXRlIGNvbnN0cnVjdG9yICh0aGUgaW1wbGljaXQgY29weSBjb25z
dHJ1Y3Rvcikgbm90IHZpYWJsZTogcmVxdWlyZXMgMSBhcmd1bWVudCwgYnV0IDIgd2VyZSBwcm92
aWRlZApwcm9ncmFtX3NvdXJjZTo1OTo4OiBub3RlOiBjYW5kaWRhdGUgY29uc3RydWN0b3IgKHRo
ZSBpbXBsaWNpdCBjb3B5IGNvbnN0cnVjdG9yKSBub3QgdmlhYmxlOiByZXF1aXJlcyAxIGFyZ3Vt
ZW50LCBidXQgMiB3ZXJlIHByb3ZpZGVkCnByb2dyYW1fc291cmNlOjU5Ojg6IG5vdGU6IGNhbmRp
ZGF0ZSBjb25zdHJ1Y3RvciAodGhlIGltcGxpY2l0IGNvcHkgY29uc3RydWN0b3IpIG5vdCB2aWFi
bGU6IHJlcXVpcmVzIDEgYXJndW1lbnQsIGJ1dCAyIHdlcmUgcHJvdmlkZWQKcHJvZ3JhbV9zb3Vy
Y2U6NTk6ODogbm90ZTogY2FuZGlkYXRlIGNvbnN0cnVjdG9yICh0aGUgaW1wbGljaXQgY29weSBj
b25zdHJ1Y3Rvcikgbm90IHZpYWJsZTogcmVxdWlyZXMgMSBhcmd1bWVudCwgYnV0IDIgd2VyZSBw
cm92aWRlZAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438705</attachid>
            <date>2021-09-20 11:52:33 -0700</date>
            <delta_ts>2021-09-20 22:27:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230472-20210920215231.patch</filename>
            <type>text/plain</type>
            <size>10484</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNjlhZGJiNDQyZDIzNWU3ZDQyOTM4YTA0ZWJmOWUzNjc2YzRjZDMwZi4uMzQ5OGIxOGU0YWRh
YjE2Zjg5OTMwYjJmOTkxZGNiOTBjNDg4MzJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA5LTIwICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5l
bkBhcHBsZS5jb20+CisKKyAgICAgICAgQU5HTEUgTWV0YWw6IHNpbmdsZS1jb21wb25lbnQgc3dp
enpsZXMgZG8gbm90IGNvbXBpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMDQ3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODMzMTA3ODA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IG1ldGFs
IGNvbXBpbGVyIGNvbXBpbGUgZXJyb3JzIHdoZW4gdXNpbmcgCisgICAgICAgIHNpbmdsZSB2YWx1
ZSBzd2l6bGVzIChnbHNsdmFyaWFibGUucikgaW4gcG9zaXRpb24gd2hlcmUgbHZhbHVlcyB3b3Vs
ZAorICAgICAgICBiZSBuZWVkZWQuIFVzZSB0aGUgdmFyaWFibGUgaW5zdGVhZCBvZiBzaW5nbGUg
ZWxlbWVudCBhcnJheSAKKyAgICAgICAgKGNvcHktcGFzdGUgdHlwbykuCisKKyAgICAgICAgKiBz
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUHJvZ3JhbVByZWx1
ZGUuY3BwOgorCiAyMDIxLTA4LTMxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CiAKICAgICAgICAgd2ViZ2wvMS4wLngvY29uZm9ybWFuY2UvZ2xzbC9taXNjL2ZyYWdjb2xv
ci1mcmFnZGF0YS1pbnZhcmlhbnQuaHRtbCBmYWlscwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0
L1Byb2dyYW1QcmVsdWRlLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbERpcmVjdC9Qcm9ncmFtUHJlbHVkZS5jcHAKaW5k
ZXggN2JhMDZlNThiNDRjNjM3Yzc5ZGJiN2ViOWJlMzcyMzE3MTFhYmY5YS4uZjdhNDA5MGZhZmY2
NDEzNGIzZTQ1MjQzZDljMDg1MGIzZDBmYWMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvck1ldGFsRGlyZWN0L1By
b2dyYW1QcmVsdWRlLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWxEaXJlY3QvUHJvZ3JhbVByZWx1ZGUuY3BwCkBA
IC0xMjI0LDggKzEyMjQsNyBAQCBzdHJ1Y3QgQU5HTEVfU3dpenpsZVJlZgogdGVtcGxhdGUgPHR5
cGVuYW1lIFQsIGludCBOPgogQU5HTEVfQUxXQVlTX0lOTElORSBBTkdMRV9WZWN0b3JFbGVtUmVm
PFQsIE4+IEFOR0xFX3N3aXp6bGVfcmVmKHRocmVhZCBtZXRhbDo6dmVjPFQsIE4+ICZ2ZWMsIGlu
dCBpMCkKIHsKLSAgICBjb25zdCBpbnQgaXNbXSA9IHsgaTAgfTsKLSAgICByZXR1cm4gQU5HTEVf
VmVjdG9yRWxlbVJlZjxULCBOPih2ZWMsIGlzKTsKKyAgICByZXR1cm4gQU5HTEVfVmVjdG9yRWxl
bVJlZjxULCBOPih2ZWMsIGkwKTsKIH0KIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQgTj4KIEFO
R0xFX0FMV0FZU19JTkxJTkUgQU5HTEVfU3dpenpsZVJlZjxULCBOLCAyPiBBTkdMRV9zd2l6emxl
X3JlZih0aHJlYWQgbWV0YWw6OnZlYzxULCBOPiAmdmVjLCBpbnQgaTAsIGludCBpMSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBjMjk2OTA5ZThjZmU5ZDQxNmZmZTE3ODRhNjk3NmZjYjg3OWRjY2ViLi5kNmMwMTE5MzhhNzEw
MjMwMzhiNmM4ZGFiYWI5NjI4ZTE1OTYzNGMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEt
MDktMjAgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBB
TkdMRSBNZXRhbDogc2luZ2xlLWNvbXBvbmVudCBzd2l6emxlcyBkbyBub3QgY29tcGlsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNDcyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84MzMxMDc4MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGZvciB0ZXN0aW5nIHRoZSBzd2l6emxl
cyBhcyBsdmFsdWVzLgorCisgICAgICAgICogd2ViZ2wvcGVuZGluZy9jb25mb3JtYW5jZS9nbHNs
L21pc2Mvc3dpenpsZS1hcy1sdmFsdWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3
ZWJnbC9wZW5kaW5nL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zd2l6emxlLWFzLWx2YWx1ZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9wZW5kaW5nL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zd2l6emxlLWFzLWx2YWx1ZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB3ZWJnbC9wZW5kaW5nL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL3Jlc291
cmNlcy9nbHNsLWZlYXR1cmUtdGVzdHMuY3NzOiBBZGRlZC4KKwogMjAyMS0wOS0xNiAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIFJUQ1J0cFNjcmlw
dFRyYW5zZm9ybSBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9wZW5k
aW5nL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zd2l6emxlLWFzLWx2YWx1ZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJnbC9wZW5kaW5nL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zd2l6emxl
LWFzLWx2YWx1ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc1YzNlMDMyZTIxODI0NTg5ODVk
MTU2OTRjYzNmODk3ZDkxMzkwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmds
L3BlbmRpbmcvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3N3aXp6bGUtYXMtbHZhbHVlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3Rl
ZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLgorCitUZXN0OiAu
Li8uLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mv
c3dpenpsZS1hcy1sdmFsdWUuaHRtbAorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L3BlbmRpbmcvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3N3aXp6bGUtYXMtbHZhbHVlLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJnbC9wZW5kaW5nL2NvbmZvcm1hbmNlL2dsc2wvbWlzYy9zd2l6emxlLWFz
LWx2YWx1ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxODk1MzYzZTYyNTU3OGJiYjJlM2RjYTM2YTg1ZmJj
Y2RiZjNkOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9wZW5kaW5nL2Nv
bmZvcm1hbmNlL2dsc2wvbWlzYy9zd2l6emxlLWFzLWx2YWx1ZS5odG1sCkBAIC0wLDAgKzEsMTgg
QEAKKzwhLS0gVGhpcyBmaWxlIGlzIG1hbnVhbGx5IGVkaXRlZCBhbmQgc2hvdWxkIGJlIGRlbGV0
ZWQgb25jZSB0aGUgdGVzdCBpcyBtZXJnZWQgaW4gV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMgYW5k
IGltcG9ydGVkIGJhY2sgdG8gTGF5b3V0VGVzdHMuIC0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIENvbmZvcm1h
bmNlIFRlc3QgV3JhcHBlciBmb3IgY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5j
aWwtYW50aWFsaWFzLmh0bWw8L3RpdGxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL3Jlc291cmNlcy93ZWJraXQtd2ViZ2wt
dGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0
IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0
cyBQQVNTIG9yIEZBSUwuPC9wPgorVGVzdDogPGEgaHJlZj0iLi4vLi4vLi4vcmVzb3VyY2VzL3dl
YmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZ2xzbC9taXNjL3N3aXp6bGUtYXMtbHZhbHVlLmh0
bWwiPi4uLy4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2dsc2wv
bWlzYy9zd2l6emxlLWFzLWx2YWx1ZS5odG1sPC9hPgorPGRpdiBpZD0iaWZyYW1lIj4KKzxpZnJh
bWUgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9n
bHNsL21pc2Mvc3dpenpsZS1hcy1sdmFsdWUuaHRtbCIgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAi
PjwvaWZyYW1lPgorPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvcGVuZGluZy9yZXNvdXJjZXMvd2Vi
Z2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9nbHNsL21pc2Mvc3dpenpsZS1hcy1sdmFsdWUuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdsL3BlbmRpbmcvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9taXNjL3N3aXp6bGUtYXMtbHZhbHVlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjFmMzI3NjIyMGU5ZmQzODc0M2NhNDAwYWEyZmRlMWZjZmRmOTk1ZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmdsL3BlbmRpbmcvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMv
Y29uZm9ybWFuY2UvZ2xzbC9taXNjL3N3aXp6bGUtYXMtbHZhbHVlLmh0bWwKQEAgLTAsMCArMSwx
NDYgQEAKKzwhLS0KK0NvcHlyaWdodCAoYykgMjAyMSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCitV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorZm91bmQgaW4gdGhlIExJQ0VOU0UudHh0IGZpbGUuCistLT4KKworPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRp
dGxlPldlYkdMIEdMU0wgQ29uZm9ybWFuY2UgVGVzdHMgLSBTd2l6emxlIGFzIGx2YWx1ZTwvdGl0
bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyIvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvZ2xzbC1mZWF0dXJlLXRlc3RzLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2pzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy93
ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9n
bHNsLWNvbmZvcm1hbmNlLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwhLS0K
K1Rlc3RzIHN3aXp6bGUgbHZhbHVlcyB3aXRoIG91dCBhbmQgaW5vdXQgZnVuY3Rpb24gcGFyYW1l
dGVycy4KKzYuMS4xIEZ1bmN0aW9uIENhbGxpbmcgQ29udmVudGlvbnMKK0V2YWx1YXRpb24gb2Yg
YW4gaW5vdXQgcGFyYW1ldGVyIHJlc3VsdHMgaW4gYm90aCBhIHZhbHVlIGFuZCBhbiBsLXZhbHVl
OyB0aGUgdmFsdWUgaXMgY29waWVkIHRvCit0aGUgZm9ybWFsIHBhcmFtZXRlciBhdCBjYWxsIHRp
bWUgYW5kIHRoZSBsLSB2YWx1ZSBpcyB1c2VkIHRvIGNvcHkgb3V0IGEgdmFsdWUgd2hlbiB0aGUg
ZnVuY3Rpb24KK3JldHVybnMuCistLT4KKzxzY3JpcHQgaWQ9ImZzMCIgdHlwZT0idGV4dC9zb21l
dGhpbmctbm90LWphdmFzY3JpcHQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2b2lkIGYo
b3V0ICRkaW0gdikgeworICAgIHYgPSAkcmVmOworfQordm9pZCBtYWluKCkKK3sKKyAgICB2ZWM0
IGkgPSB2ZWM0KDEwLiwgMTEuLCAxMi4sIDEzLik7CisgICAgZihpLiRjb21wb25lbnRzKTsKKyAg
ICBib29sIGNvcnJlY3QgPSBmYWxzZTsKKyAgICBpZiAoaSA9PSAkcmVzdWx0KQorICAgICAgICBj
b3JyZWN0ID0gdHJ1ZTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIGNvcnJlY3QgPyAxLiA6
IDAuLCAwLiwgMS4pOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmczEiIHR5cGU9InRleHQv
c29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owordm9p
ZCBmKGlub3V0ICRkaW0gdikgeworICAgIHYgKz0gJHJlZjsKK30KK3ZvaWQgbWFpbigpCit7Cisg
ICAgdmVjNCBpID0gdmVjNCgxMC4sIDExLiwgMTIuLCAxMy4pOworICAgIGYoaS4kY29tcG9uZW50
cyk7CisgICAgYm9vbCBjb3JyZWN0ID0gZmFsc2U7CisgICAgaWYgKGkgPT0gJHJlc3VsdEluT3V0
KQorICAgICAgICBjb3JyZWN0ID0gdHJ1ZTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIGNv
cnJlY3QgPyAxLiA6IDAuLCAwLiwgMS4pOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBz
dHJpY3QiOworCitkZXNjcmlwdGlvbigpOworCisvLyBHTFNMIEVTIDMuMDAuNiA1LjUgVmVjdG9y
IENvbXBvbmVudHMKKy8vIFRvIGZvcm0gYW4gbC12YWx1ZSwgc3dpenpsaW5nIG11c3QgYmUgYXBw
bGllZCB0byBhbiBsLXZhbHVlIG9mIHZlY3RvciB0eXBlLCBjb250YWluIG5vIGR1cGxpY2F0ZQor
Ly8gY29tcG9uZW50cywgYW5kIGl0IHJlc3VsdHMgaW4gYW4gbC12YWx1ZSBvZiBzY2FsYXIgb3Ig
dmVjdG9yIHR5cGUsIGRlcGVuZGluZyBvbiBudW1iZXIgb2YKKy8vIGNvbXBvbmVudHMgc3BlY2lm
aWVkLgorZnVuY3Rpb24gY29tcHV0ZUxWYWx1ZVN3aXp6bGVzKCkgeworICAgIGxldCByZXN1bHRz
ID0gW107CisgICAgZnVuY3Rpb24gZihjb21wb25lbnRzLCBzd2l6emxlKSB7CisgICAgICAgIGZv
ciAobGV0IGMgb2YgY29tcG9uZW50cykgeworICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHN3aXp6
bGUuY29uY2F0KFtjXSkpOworICAgICAgICAgICAgbGV0IHJlc3QgPSBjb21wb25lbnRzLmZpbHRl
cigoZSkgPT4geyByZXR1cm4gZSAhPSBjOyB9KTsKKyAgICAgICAgICAgIGlmIChyZXN0KQorICAg
ICAgICAgICAgICAgIGYocmVzdCwgc3dpenpsZS5jb25jYXQoW2NdKSk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgZihbMCwgMSwgMiwgM10sIFtdKTsKKyAgICByZXR1cm4gcmVzdWx0czsKK30KKwor
dmFyIHN3aXp6bGVzID0gY29tcHV0ZUxWYWx1ZVN3aXp6bGVzKCk7CisKKy8vIFNhbml0eSBjaGVj
ayB0aGF0IGNvbXB1dGluZyB0aGUgc3dpenpsZXMgcHJvZHVjZXMgc29tZXRoaW5nIHRvIHRlc3Qu
CitzaG91bGRCZSgic3dpenpsZXMubGVuZ3RoIiwgIjY0Iik7CitzaG91bGRCZSgiY29tcG9uZW50
cyhzd2l6emxlc1swXSkiLCAiJ3InIik7CitzaG91bGRCZSgiY29tcG9uZW50cyhzd2l6emxlc1tz
d2l6emxlcy5sZW5ndGggLSAxXSkiLCAiJ2FiZ3InIik7CisKK3ZhciByZWZWYWx1ZSA9IFsgIjEu
IiwgIjIuIiwgIjMuIiwgIjQuIiBdOworCit2YXIgaW5pdCA9IFsgIjEwLiIsICIxMS4iLCAiMTIu
IiwgIjEzLiIgXTsKKworZnVuY3Rpb24gZGltKHN3aXp6bGUpIHsKKyAgaWYgKHN3aXp6bGUubGVu
Z3RoID09IDEpCisgICAgcmV0dXJuICdmbG9hdCcKKyAgcmV0dXJuIGB2ZWMke3N3aXp6bGUubGVu
Z3RofWA7Cit9CisKK2Z1bmN0aW9uIHJlc3VsdChzd2l6emxlKSB7CisgIGxldCBhID0gaW5pdC5t
YXAoKGUsIGMpID0+IHsKKyAgICAgIGlmIChzd2l6emxlLmluY2x1ZGVzKGMpKQorICAgICAgICBy
ZXR1cm4gcmVmVmFsdWVbY107CisgICAgICByZXR1cm4gZTsKKyAgfSk7CisgIHJldHVybiBgdmVj
NCgke2Euam9pbignLCAnKX0pYDsKK30KKworZnVuY3Rpb24gcmVzdWx0SW5PdXQoc3dpenpsZSkg
eworICBsZXQgYSA9IGluaXQubWFwKChlLCBjKSA9PiB7CisgICAgICBpZiAoc3dpenpsZS5pbmNs
dWRlcyhjKSkKKyAgICAgICAgcmV0dXJuIGAke2V9ICsgJHtyZWZWYWx1ZVtjXX1gOworICAgICAg
cmV0dXJuIGU7CisgIH0pOworICByZXR1cm4gYHZlYzQoJHthLmpvaW4oJywgJyl9KWA7Cit9CisK
K2Z1bmN0aW9uIHJlZihzd2l6emxlKSB7CisgIGxldCBhID0gc3dpenpsZS5tYXAoKGMpID0+IHsg
cmV0dXJuIHJlZlZhbHVlW2NdOyB9KTsKKyAgcmV0dXJuIGAke2RpbShzd2l6emxlKX0oJHthLmpv
aW4oJywgJyl9KWA7Cit9CisKK2Z1bmN0aW9uIGNvbXBvbmVudHMoc3dpenpsZSkgeworICByZXR1
cm4gc3dpenpsZS5tYXAoKGUpID0+IHsgcmV0dXJuICdyZ2JhJ1tlXTsgfSkuam9pbignJyk7Cit9
CisKK3ZhciB0ZXN0cyA9IFtdOworZm9yICh2YXIgc3dpenpsZSBvZiBzd2l6emxlcykgeworICBm
b3IgKHZhciBpaSA9IDA7IGlpIDwgMjsgKytpaSkgeworICAgIHZhciBmc3JjID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImZzIiArIGlpKS50ZXh0OworICAgIGZzcmMgPSBmc3JjLnJlcGxhY2Uo
L1wkZGltL2csIGRpbShzd2l6emxlKSkKKyAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cJHJlc3Vs
dEluT3V0L2csIHJlc3VsdEluT3V0KHN3aXp6bGUpKQorICAgICAgICAgICAgICAgLnJlcGxhY2Uo
L1wkcmVzdWx0L2csIHJlc3VsdChzd2l6emxlKSkKKyAgICAgICAgICAgICAgIC5yZXBsYWNlKC9c
JHJlZi9nLCByZWYoc3dpenpsZSkpCisgICAgICAgICAgICAgICAucmVwbGFjZSgvXCRjb21wb25l
bnRzL2csIGNvbXBvbmVudHMoc3dpenpsZSkpOworICAgIHRlc3RzLnB1c2goeworICAgICAgICBm
U2hhZGVyU291cmNlOiBmc3JjLAorICAgICAgICBmU2hhZGVyU3VjY2VzczogdHJ1ZSwKKyAgICAg
ICAgbGlua1N1Y2Nlc3M6IHRydWUsCisgICAgICAgIHBhc3NNc2c6IGBTd2l6emxlIGFzIGx2YWx1
ZSB3b3JrcywgZnVuYzogJHtpaX0sIHN3aXp6bGU6ICR7Y29tcG9uZW50cyhzd2l6emxlKX1gCisg
ICAgfSk7CisgIH0KK30KKworR0xTTENvbmZvcm1hbmNlVGVzdGVyLnJ1blJlbmRlclRlc3RzKHRl
c3RzKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvcGVuZGluZy9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9yZXNvdXJjZXMvZ2xz
bC1mZWF0dXJlLXRlc3RzLmNzcyBiL0xheW91dFRlc3RzL3dlYmdsL3BlbmRpbmcvcmVzb3VyY2Vz
L3dlYmdsX3Rlc3RfZmlsZXMvcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzgwNjNkOTJiMmE1OTFkZjM3OTQwOTQ0Y2UwM2YzOWZlZWY4ZGM1MwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL3BlbmRpbmcvcmVzb3VyY2VzL3dlYmdsX3Rlc3Rf
ZmlsZXMvcmVzb3VyY2VzL2dsc2wtZmVhdHVyZS10ZXN0cy5jc3MKQEAgLTAsMCArMSwyOSBAQAor
Y2FudmFzIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisgIGJhY2tncm91bmQtaW1hZ2U6
IGxpbmVhci1ncmFkaWVudCgwLCByZ2JhKDIwMCwgMjAwLCAyMDAsIC41KSA1MCUsIHRyYW5zcGFy
ZW50IDUwJSksIGxpbmVhci1ncmFkaWVudChyZ2JhKDIwMCwgMjAwLCAyMDAsIC41KSA1MCUsIHRy
YW5zcGFyZW50IDUwJSk7CisgIGJhY2tncm91bmQtc2l6ZTogOHB4IDhweDsKK30KKworLnNoYWRl
ci1zb3VyY2UgeworICBib3JkZXI6IDFweCBkYXNoZWQgYmxhY2s7CisgIHBhZGRpbmc6IDFlbTsK
K30KKworLnNoYWRlci1zb3VyY2UgbGk6bnRoLWNoaWxkKG9kZCkgeyBiYWNrZ3JvdW5kOiAjZjhm
OGY4OyB9Cisuc2hhZGVyLXNvdXJjZSBsaTpudGgtY2hpbGQoZXZlbikgeyBiYWNrZ3JvdW5kOiAj
ZjBmMGYwOyB9CisKKy50ZXN0aW1hZ2VzIHsKK30KKworLnRlc3RpbWFnZXMgYnIgeworICBjbGVh
cjogYm90aDsKK30KKworLnRlc3RpbWFnZXMgPiBkaXYgeworICBmbG9hdDogbGVmdDsKKyAgbWFy
Z2luOiAxZW07Cit9CisKK0lNRyB7CisgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>