<?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>231063</bug_id>
          
          <creation_ts>2021-09-30 22:28:34 -0700</creation_ts>
          <short_desc>ImageBitmap should honor EXIF orientation</short_desc>
          <delta_ts>2022-06-29 23:48:54 -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>Canvas</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://github.com/web-platform-tests/wpt/pull/31287</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=242169</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="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Cameron McCormack (:heycam)">heycam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>micah.millereshleman</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1799175</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-09-30 22:28:34 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799187</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-30 23:20:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/83753956&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803639</commentid>
    <comment_count>2</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-12 22:12:51 -0700</bug_when>
    <thetext>Filed https://github.com/whatwg/html/issues/7210 to get clarity in the HTML spec about exactly how EXIF orientation and the image-orientation property should influence createImageBitmap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805458</commentid>
    <comment_count>3</comment_count>
      <attachid>441558</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-17 20:23:59 -0700</bug_when>
    <thetext>Created attachment 441558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805459</commentid>
    <comment_count>4</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-17 20:24:51 -0700</bug_when>
    <thetext>Submitted web-platform-tests pull request: https://github.com/web-platform-tests/wpt/pull/31287</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805460</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-10-17 20:25:05 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805464</commentid>
    <comment_count>6</comment_count>
      <attachid>441560</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-17 21:34:30 -0700</bug_when>
    <thetext>Created attachment 441560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805466</commentid>
    <comment_count>7</comment_count>
      <attachid>441561</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-17 23:38:54 -0700</bug_when>
    <thetext>Created attachment 441561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805713</commentid>
    <comment_count>8</comment_count>
      <attachid>441561</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-10-18 14:02:47 -0700</bug_when>
    <thetext>Comment on attachment 441561
Patch

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

&gt; Source/WebCore/html/ImageBitmap.cpp:391
&gt; +    auto orientation = imageForRender-&gt;orientation();
&gt; +    if (orientation == ImageOrientation::FromImage)
&gt; +        orientation = ImageOrientation::None;

I&apos;ve had to write similar code to this elsewhere. I think we should try to push this complexity somewhere lower level. I&apos;m not sure where, though.

&gt; Source/WebCore/platform/graphics/ImageOrientation.h:111
&gt; +    ImageOrientation flipY() const

Can this be named something like &quot;ImageOrientationWithFlippedY()&quot;? It sounds like it would be a non-const function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805718</commentid>
    <comment_count>9</comment_count>
      <attachid>441561</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-10-18 14:18:24 -0700</bug_when>
    <thetext>Comment on attachment 441561
Patch

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

&gt; Source/WebCore/html/ImageBitmap.cpp:238
&gt; +static ImageOrientation imageOrientationForOrientation(ImageBitmapOptions::Orientation imageBitmapOrientation, ImageOrientation imageOrientation = ImageOrientation::None)

This function is confusing:
1. The name does not reveal what it converts from and what it converts to. We have ImageBitmapOptions::Orientation and ImageOrientation. So which one is &quot;imageOrientation&quot; and which one is &quot;Orientation&quot;?
2. The second name of the second parameter &quot;imageOrientation&quot; does not reveal what it represents. Can it be something &quot;defaultImageOrientation&quot;?

&gt; Source/WebCore/html/ImageBitmap.cpp:389
&gt; +    auto orientation = imageForRender-&gt;orientation();

imageForRender -&gt; imageForRenderer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805757</commentid>
    <comment_count>10</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-18 16:13:33 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #8)
&gt; I&apos;ve had to write similar code to this elsewhere. I think we should try to
&gt; push this complexity somewhere lower level. I&apos;m not sure where, though.

It might be an artifact of Image::orientation() having a default implementation that returns FromImage.  Maybe it should be returning None.  (I&apos;ll file a followup.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805793</commentid>
    <comment_count>11</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-18 17:12:24 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #9)
&gt; &gt; Source/WebCore/html/ImageBitmap.cpp:238
&gt; &gt; +static ImageOrientation imageOrientationForOrientation(ImageBitmapOptions::Orientation imageBitmapOrientation, ImageOrientation imageOrientation = ImageOrientation::None)
&gt; 
&gt; This function is confusing:

I think you&apos;re right that the name is no longer appropriate.  I&apos;ll rename.  (But I guess I&apos;ll leave the other two similarly named functions, interpolationQualityForResizeQuality and alphaPremultiplicationForPremultiplyAlpha, since they&apos;re pure conversion functions.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805842</commentid>
    <comment_count>12</comment_count>
      <attachid>441678</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-18 19:48:16 -0700</bug_when>
    <thetext>Created attachment 441678
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805848</commentid>
    <comment_count>13</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-10-18 19:57:04 -0700</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #10)
&gt; (In reply to Myles C. Maxfield from comment #8)
&gt; &gt; I&apos;ve had to write similar code to this elsewhere. I think we should try to
&gt; &gt; push this complexity somewhere lower level. I&apos;m not sure where, though.
&gt; 
&gt; It might be an artifact of Image::orientation() having a default
&gt; implementation that returns FromImage.  Maybe it should be returning None. 
&gt; (I&apos;ll file a followup.)

Filed bug 231934.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805892</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-18 23:32:31 -0700</bug_when>
    <thetext>Committed r284436 (243198@main): &lt;https://commits.webkit.org/243198@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441678.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1879074</commentid>
    <comment_count>15</comment_count>
    <who name="Micah">micah.millereshleman</who>
    <bug_when>2022-06-29 11:23:02 -0700</bug_when>
    <thetext>Anyone know when this will land in Safari?

Currently, in Safari 15, EXIF orientations 5-8 are not handled correctly. Oddly enough, 1-4 are handled just fine.

We still have to use ImageElement in Safari (instead of ImageBitmap) when rendering images to Canvas / WebGL texture to work around this bug. I&apos;m not positive if this exact bug is tracked by this issue, but it seems to be related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1879130</commentid>
    <comment_count>16</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-06-29 14:33:10 -0700</bug_when>
    <thetext>(In reply to Micah from comment #15)
&gt; Anyone know when this will land in Safari?

This change was included in Safari 15.2.

&gt; Currently, in Safari 15, EXIF orientations 5-8 are not handled correctly.
&gt; Oddly enough, 1-4 are handled just fine.
&gt; 
&gt; We still have to use ImageElement in Safari (instead of ImageBitmap) when
&gt; rendering images to Canvas / WebGL texture to work around this bug. I&apos;m not
&gt; positive if this exact bug is tracked by this issue, but it seems to be
&gt; related.

Either sounds like a related issue, or the fix for this bug wasn&apos;t complete. Could you file a new bug with a description of the issue you&apos;re seeing and CC me? Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1879135</commentid>
    <comment_count>17</comment_count>
    <who name="Micah">micah.millereshleman</who>
    <bug_when>2022-06-29 15:04:48 -0700</bug_when>
    <thetext>(In reply to Cameron McCormack (:heycam) from comment #16)
&gt; (In reply to Micah from comment #15)
&gt; &gt; Anyone know when this will land in Safari?
&gt; 
&gt; This change was included in Safari 15.2.
&gt; 
&gt; &gt; Currently, in Safari 15, EXIF orientations 5-8 are not handled correctly.
&gt; &gt; Oddly enough, 1-4 are handled just fine.
&gt; &gt; 
&gt; &gt; We still have to use ImageElement in Safari (instead of ImageBitmap) when
&gt; &gt; rendering images to Canvas / WebGL texture to work around this bug. I&apos;m not
&gt; &gt; positive if this exact bug is tracked by this issue, but it seems to be
&gt; &gt; related.
&gt; 
&gt; Either sounds like a related issue, or the fix for this bug wasn&apos;t complete.
&gt; Could you file a new bug with a description of the issue you&apos;re seeing and
&gt; CC me? Thank you.

Thanks Cameron! I created a new issue here:
https://bugs.webkit.org/show_bug.cgi?id=242137

Turns out I was confused about EXIF orientations 1-4 working. Looks like none of them are working (except 1 of course).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441558</attachid>
            <date>2021-10-17 20:23:59 -0700</date>
            <delta_ts>2021-10-17 21:34:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231063-20211018142358.patch</filename>
            <type>text/plain</type>
            <size>11790</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ1Zjg1YzkwZjY3Y2E1
YWMwOTkwM2RiY2NjNDJiN2ZiM2U0NDdiYi4uMzRjZDY2OTJjOGVhNTk4ODQxYTI5OGJhNTRhZWE5
YTM3ODNlMzNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTEwLTE3ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBjcmVhdGVJ
bWFnZUJpdG1hcCgpIHRha2UgRVhJRiBvcmllbnRhdGlvbiBpbnRvIGFjY291bnQgY29ycmVjdGx5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwNjMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNzUzOTU2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9tYW51YWwvaW1hZ2ViaXRtYXAvY3JlYXRlSW1h
Z2VCaXRtYXAtZXhpZi1vcmllbnRhdGlvbi5odG1sCisKKyAgICAgICAgVGhpcyBtYWtlcyB1cyB0
cmVhdCB7aW1hZ2VPcmllbnRhdGlvbjoibm9uZSJ9IGFzIG1lYW5pbmcgImFwcGx5IEVYSUYKKyAg
ICAgICAgb3JpZW50YXRpb24gd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0cmFuc2Zvcm1hdGlvbiIs
IGFuZAorICAgICAgICB7aW1hZ2VPcmllbnRhdGlvbjoiZmxpcFkifSBhcyBtZWFuaW5nICJhcHBs
eSBFWElGIG9yaWVudGF0aW9uIGFuZCB0aGVuCisgICAgICAgIGFwcGx5IGFuIGFkZGl0aW9uYWwg
dmVydGljYWwgZmxpcCIuIFRoaXMgYmVoYXZpb3IgbWF0Y2hlcyBGaXJlZm94OworICAgICAgICBo
dHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2h0bWwvaXNzdWVzLzcyMTAgaXMgb3BlbiBvbiBjbGFy
aWZ5aW5nIHRoaXMKKyAgICAgICAgYmVoYXZpb3IgaW4gdGhlIEhUTUwgc3BlYy4KKworICAgICAg
ICAqIGh0bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VPcmllbnRh
dGlvbkZvck9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVh
dGVQcm9taXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjpmbGlwWSBjb25zdCk6CisK
IDIwMjEtMDktMjEgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBFbnN1cmUgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmRyYXdJbWFnZSh2aWRlbykgdXNl
cyB0aGUgcmlnaHQgY29sb3Igc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5k
ZXggZjIxMGI0YTIyZDU0MjllNDk2ODA1ZjFlODJiYTk2OTUyMzhkOWQ3NC4uYjk3ZTgzYjRlZmI1
YzNkZmVkM2Y4ZGQ3NTIzMzRjZDM2MmY2OGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1h
cC5jcHAKQEAgLTIzNSwxMSArMjM1LDExIEBAIHN0YXRpYyBJbnRlcnBvbGF0aW9uUXVhbGl0eSBp
bnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkoSW1hZ2VCaXRtYXBPcHRpCiAgICAg
cmV0dXJuIEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0OwogfQogCi1zdGF0aWMgSW1hZ2VP
cmllbnRhdGlvbiBpbWFnZU9yaWVudGF0aW9uRm9yT3JpZW50YXRpb24oSW1hZ2VCaXRtYXBPcHRp
b25zOjpPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3N0YXRpYyBJbWFnZU9yaWVudGF0aW9uIGlt
YWdlT3JpZW50YXRpb25Gb3JPcmllbnRhdGlvbihJbWFnZUJpdG1hcE9wdGlvbnM6Ok9yaWVudGF0
aW9uIGltYWdlQml0bWFwT3JpZW50YXRpb24sIEltYWdlT3JpZW50YXRpb24gaW1hZ2VPcmllbnRh
dGlvbiA9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpCiB7Ci0gICAgaWYgKG9yaWVudGF0aW9uID09
IEltYWdlQml0bWFwT3B0aW9uczo6T3JpZW50YXRpb246OkZsaXBZKQotICAgICAgICByZXR1cm4g
SW1hZ2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Cb3R0b21MZWZ0KTsKLSAg
ICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOworICAgIGlmIChpbWFnZUJpdG1hcE9yaWVudGF0
aW9uID09IEltYWdlQml0bWFwT3B0aW9uczo6T3JpZW50YXRpb246OkZsaXBZKQorICAgICAgICBy
ZXR1cm4gaW1hZ2VPcmllbnRhdGlvbi5mbGlwWSgpOworICAgIHJldHVybiBpbWFnZU9yaWVudGF0
aW9uOwogfQogCiBzdGF0aWMgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxp
Y2F0aW9uRm9yUHJlbXVsdGlwbHlBbHBoYShJbWFnZUJpdG1hcE9wdGlvbnM6OlByZW11bHRpcGx5
QWxwaGEgcHJlbXVsdGlwbHlBbHBoYSkKQEAgLTM4Nyw3ICszODcsNyBAQCB2b2lkIEltYWdlQml0
bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsCiAgICAgfQogCiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwg
b3V0cHV0U2l6ZSk7Ci0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VG
b3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCks
IHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVh
bGl0eSksIGltYWdlT3JpZW50YXRpb25Gb3JPcmllbnRhdGlvbihvcHRpb25zLmltYWdlT3JpZW50
YXRpb24pIH0pOworICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9y
UmVuZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB7
IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxp
dHkpLCBpbWFnZU9yaWVudGF0aW9uRm9yT3JpZW50YXRpb24ob3B0aW9ucy5pbWFnZU9yaWVudGF0
aW9uLCBpbWFnZUZvclJlbmRlci0+b3JpZW50YXRpb24oKSkgfSk7CiAKICAgICAvLyA5LiBJZiB0
aGUgb3JpZ2luIG9mIGltYWdlJ3MgaW1hZ2UgaXMgbm90IHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUg
b3JpZ2luIHNwZWNpZmllZCBieSB0aGUKICAgICAvLyAgICBlbnRyeSBzZXR0aW5ncyBvYmplY3Qs
IHRoZW4gc2V0IHRoZSBvcmlnaW4tY2xlYW4gZmxhZyBvZiB0aGUgSW1hZ2VCaXRtYXAgb2JqZWN0
J3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3Jp
ZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50
YXRpb24uaAppbmRleCA1ZGUyNzFlNTIzNTI3NjJhZTFhM2MzMzhhNTM1NTcwZGU5Y2Q1OWM0Li41
MGI3YzZjYmNmMjVmNmNmZDYxZDVmMzBhNmY2N2M3Y2M5MzVlZTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oCkBAIC0xMDgs
NiArMTA4LDM2IEBAIHN0cnVjdCBJbWFnZU9yaWVudGF0aW9uIHsKICAgICAgICAgcmV0dXJuIEFm
ZmluZVRyYW5zZm9ybSgpOwogICAgIH0KIAorICAgIEltYWdlT3JpZW50YXRpb24gZmxpcFkoKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWRFWElGT3JpZW50YXRpb24obV9vcmll
bnRhdGlvbikpOworCisgICAgICAgIHN3aXRjaCAobV9vcmllbnRhdGlvbikgeworICAgICAgICBj
YXNlIEZyb21JbWFnZToKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIE5vbmU7CisgICAgICAgIGNhc2UgT3JpZ2luVG9wTGVmdDoKKyAgICAgICAg
ICAgIHJldHVybiBPcmlnaW5Cb3R0b21MZWZ0OworICAgICAgICBjYXNlIE9yaWdpblRvcFJpZ2h0
OgorICAgICAgICAgICAgcmV0dXJuIE9yaWdpbkJvdHRvbVJpZ2h0OworICAgICAgICBjYXNlIE9y
aWdpbkJvdHRvbVJpZ2h0OgorICAgICAgICAgICAgcmV0dXJuIE9yaWdpblRvcFJpZ2h0OworICAg
ICAgICBjYXNlIE9yaWdpbkJvdHRvbUxlZnQ6CisgICAgICAgICAgICByZXR1cm4gT3JpZ2luVG9w
TGVmdDsKKyAgICAgICAgY2FzZSBPcmlnaW5MZWZ0VG9wOgorICAgICAgICAgICAgcmV0dXJuIE9y
aWdpbkxlZnRCb3R0b207CisgICAgICAgIGNhc2UgT3JpZ2luUmlnaHRUb3A6CisgICAgICAgICAg
ICByZXR1cm4gT3JpZ2luUmlnaHRCb3R0b207CisgICAgICAgIGNhc2UgT3JpZ2luUmlnaHRCb3R0
b206CisgICAgICAgICAgICByZXR1cm4gT3JpZ2luUmlnaHRUb3A7CisgICAgICAgIGNhc2UgT3Jp
Z2luTGVmdEJvdHRvbToKKyAgICAgICAgICAgIHJldHVybiBPcmlnaW5MZWZ0VG9wOworICAgICAg
ICB9CisKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBOb25l
OworICAgIH0KKwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgT3JpZW50YXRpb24gRVhJRkZp
cnN0ID0gT3JpZ2luVG9wTGVmdDsKICAgICBzdGF0aWMgY29uc3QgT3JpZW50YXRpb24gRVhJRkxh
c3QgPSBPcmlnaW5MZWZ0Qm90dG9tOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXgg
ZGIzZGRkZDljZjgxZDhiYjQ4M2I1NzI3Y2RmZmI1YzhhYzgxYWI5Yi4uNWY5ZjY2OWQ1N2RmMDc0
ZjI4ZjdjMGViYTBkYWM3NjBhZGJjNjY0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTAtMTcgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2Ft
QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGNyZWF0ZUltYWdlQml0bWFwKCkgdGFrZSBFWElG
IG9yaWVudGF0aW9uIGludG8gYWNjb3VudCBjb3JyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA2MworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODM3NTM5NTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9tYW51YWwvaW1h
Z2ViaXRtYXAvY3JlYXRlSW1hZ2VCaXRtYXAtZXhpZi1vcmllbnRhdGlvbi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9tYW51YWwv
aW1hZ2ViaXRtYXAvcmVzb3VyY2VzL3NxdWFyZXMuanBnOiBBZGRlZC4KKwogMjAyMS0xMC0wMSAg
Q2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEVuc3VyZSBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuZHJhd0ltYWdlKHZpZGVvKSB1c2VzIHRoZSByaWdodCBj
b2xvciBzcGFjZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L21hbnVhbC9pbWFnZWJpdG1hcC9jcmVhdGVJ
bWFnZUJpdG1hcC1leGlmLW9yaWVudGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvbWFudWFsL2ltYWdlYml0
bWFwL2NyZWF0ZUltYWdlQml0bWFwLWV4aWYtb3JpZW50YXRpb24uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
NWQxM2QzM2ZhZTBjZDcwNmRkNzlhYmVlMzk2MzA2ZjIzZGIzMjQzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZh
cy9lbGVtZW50L21hbnVhbC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJpdG1hcC1leGlmLW9yaWVu
dGF0aW9uLmh0bWwKQEAgLTAsMCArMSwxMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPlRl
c3QgdGhhdCBjcmVhdGVJbWFnZUJpdG1hcCBob25vcnMgRVhJRiBvcmllbnRhdGlvbjwvdGl0bGU+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c3R5
bGU+Y2FudmFzIHsgb3V0bGluZTogMXB4IHNvbGlkIGJsYWNrOyBtYXJnaW4tcmlnaHQ6IDFlbTsg
fTwvc3R5bGU+Cis8Ym9keT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2FkSW1hZ2Uoc3JjKSB7Cisg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHsKKyAgICAgICAgY29uc3Qg
aW1hZ2UgPSBuZXcgSW1hZ2UoKTsKKyAgICAgICAgaW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZCIsICgpID0+IHJlc29sdmUoaW1hZ2UpLCB7IG9uY2U6IHRydWUgfSk7CisgICAgICAgIGltYWdl
LnNyYyA9IHNyYzsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gY2hlY2tDb2xvcnMoY3R4LCB3LCBo
LCBleHBlY3RlZENvbG9ycykgeworICAgIGxldCBkYXRhID0gY3R4LmdldEltYWdlRGF0YSgwLCAw
LCB3LCBoKS5kYXRhOworICAgIGZvciAobGV0IFtyb3csIGNvbCwgciwgZywgYiwgYV0gb2YgZXhw
ZWN0ZWRDb2xvcnMpIHsKKyAgICAgICAgbGV0IHggPSBjb2wgKiA4MCArIDQwOworICAgICAgICBs
ZXQgeSA9IHJvdyAqIDgwICsgNDA7CisgICAgICAgIGxldCBpID0gKHggKyB5ICogdykgKiA0Owor
CisgICAgICAgIGxldCBleHBlY3RlZCA9IFtyLCBnLCBiLCBhXTsKKyAgICAgICAgbGV0IGFjdHVh
bCA9IFtkYXRhW2ldLCBkYXRhW2kgKyAxXSwgZGF0YVtpICsgMl0sIGRhdGFbaSArIDNdXTsKKwor
ICAgICAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCAxLCBg
UGl4ZWwgdmFsdWUgYXQgKCR7eH0sJHt5fSkgJHtleHBlY3RlZH0gPX4gJHthY3R1YWx9LmApOwor
ICAgIH0KK30KKworYXN5bmNfdGVzdChmdW5jdGlvbih0KSB7CisgICAgY29uc3QgY2FudmFzID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgY2FudmFzLndpZHRoID0gMzIw
OworICAgIGNhbnZhcy5oZWlnaHQgPSAxNjA7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoY2Fu
dmFzKTsKKworICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgIGxv
YWRJbWFnZSgicmVzb3VyY2VzL3NxdWFyZXMuanBnIikKKyAgICAgICAgLnRoZW4oKGltYWdlKSA9
PiBjcmVhdGVJbWFnZUJpdG1hcChpbWFnZSkpCisgICAgICAgIC50aGVuKHQuc3RlcF9mdW5jX2Rv
bmUoZnVuY3Rpb24oaW1hZ2VCaXRtYXApIHsKKyAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1h
Z2VCaXRtYXAsIDAsIDApOworICAgICAgICAgICAgY2hlY2tDb2xvcnMoY3R4LCBjYW52YXMud2lk
dGgsIGNhbnZhcy5oZWlnaHQsIFsKKyAgICAgICAgICAgICAgICAvLyByb3csIGNvbCwgciwgZywg
YiwgYQorICAgICAgICAgICAgICAgIFswLCAwLCAyNTUsIDAsIDAsIDI1NV0sCisgICAgICAgICAg
ICAgICAgWzAsIDEsIDAsIDI1NSwgMCwgMjU1XSwKKyAgICAgICAgICAgICAgICBbMCwgMiwgMCwg
MCwgMjU1LCAyNTVdLAorICAgICAgICAgICAgICAgIFswLCAzLCAwLCAwLCAwLCAyNTVdLAorICAg
ICAgICAgICAgICAgIFsxLCAwLCAyNTUsIDEyOCwgMTI4LCAyNTVdLAorICAgICAgICAgICAgICAg
IFsxLCAxLCAxMjgsIDI1NSwgMTI4LCAyNTVdLAorICAgICAgICAgICAgICAgIFsxLCAyLCAxMjgs
IDEyOCwgMjU1LCAyNTVdLAorICAgICAgICAgICAgICAgIFsxLCAzLCAxMjgsIDEyOCwgMTI4LCAy
NTVdLAorICAgICAgICAgICAgXSk7CisgICAgICAgIH0pKTsKK30sICJjcmVhdGVJbWFnZUJpdG1h
cCB3aXRoIEVYSUYgcm90YXRpb24sIGltYWdlT3JpZW50YXRpb24gbm9uZSwgYW5kIG5vIGNyb3Bw
aW5nIik7CisKK2FzeW5jX3Rlc3QoZnVuY3Rpb24odCkgeworICAgIGNvbnN0IGNhbnZhcyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGNhbnZhcy53aWR0aCA9IDMyMDsK
KyAgICBjYW52YXMuaGVpZ2h0ID0gMTYwOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGNhbnZh
cyk7CisKKyAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBsb2Fk
SW1hZ2UoInJlc291cmNlcy9zcXVhcmVzLmpwZyIpCisgICAgICAgIC50aGVuKChpbWFnZSkgPT4g
Y3JlYXRlSW1hZ2VCaXRtYXAoaW1hZ2UsIHsgaW1hZ2VPcmllbnRhdGlvbjogImZsaXBZIiB9KSkK
KyAgICAgICAgLnRoZW4odC5zdGVwX2Z1bmNfZG9uZShmdW5jdGlvbihpbWFnZUJpdG1hcCkgewor
ICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWFnZUJpdG1hcCwgMCwgMCk7CisgICAgICAgICAg
ICBjaGVja0NvbG9ycyhjdHgsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCwgWworICAgICAg
ICAgICAgICAgIC8vIHJvdywgY29sLCByLCBnLCBiLCBhCisgICAgICAgICAgICAgICAgWzAsIDAs
IDI1NSwgMTI4LCAxMjgsIDI1NV0sCisgICAgICAgICAgICAgICAgWzAsIDEsIDEyOCwgMjU1LCAx
MjgsIDI1NV0sCisgICAgICAgICAgICAgICAgWzAsIDIsIDEyOCwgMTI4LCAyNTUsIDI1NV0sCisg
ICAgICAgICAgICAgICAgWzAsIDMsIDEyOCwgMTI4LCAxMjgsIDI1NV0sCisgICAgICAgICAgICAg
ICAgWzEsIDAsIDI1NSwgMCwgMCwgMjU1XSwKKyAgICAgICAgICAgICAgICBbMSwgMSwgMCwgMjU1
LCAwLCAyNTVdLAorICAgICAgICAgICAgICAgIFsxLCAyLCAwLCAwLCAyNTUsIDI1NV0sCisgICAg
ICAgICAgICAgICAgWzEsIDMsIDAsIDAsIDAsIDI1NV0sCisgICAgICAgICAgICBdKTsKKyAgICAg
ICAgfSkpOworfSwgImNyZWF0ZUltYWdlQml0bWFwIHdpdGggRVhJRiByb3RhdGlvbiwgaW1hZ2VP
cmllbnRhdGlvbiBmbGlwWSwgYW5kIG5vIGNyb3BwaW5nIik7CisKK2FzeW5jX3Rlc3QoZnVuY3Rp
b24odCkgeworICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZh
cyIpOworICAgIGNhbnZhcy53aWR0aCA9IDE2MDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gMTYwOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGNhbnZhcyk7CisKKyAgICBjb25zdCBjdHggPSBjYW52
YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBsb2FkSW1hZ2UoInJlc291cmNlcy9zcXVhcmVzLmpw
ZyIpCisgICAgICAgIC50aGVuKGltYWdlID0+IGNyZWF0ZUltYWdlQml0bWFwKGltYWdlLCA4MCwg
MCwgMTYwLCAxNjApKQorICAgICAgICAudGhlbih0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGlt
YWdlQml0bWFwKSB7CisgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltYWdlQml0bWFwLCAwLCAw
KTsKKyAgICAgICAgICAgIGNoZWNrQ29sb3JzKGN0eCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVp
Z2h0LCBbCisgICAgICAgICAgICAgICAgLy8gcm93LCBjb2wsIHIsIGcsIGIsIGEKKyAgICAgICAg
ICAgICAgICBbMCwgMCwgMCwgMjU1LCAwLCAyNTVdLAorICAgICAgICAgICAgICAgIFswLCAxLCAw
LCAwLCAyNTUsIDI1NV0sCisgICAgICAgICAgICAgICAgWzEsIDAsIDEyOCwgMjU1LCAxMjgsIDI1
NV0sCisgICAgICAgICAgICAgICAgWzEsIDEsIDEyOCwgMTI4LCAyNTUsIDI1NV0sCisgICAgICAg
ICAgICBdKTsKKyAgICAgICAgfSkpOworfSwgImNyZWF0ZUltYWdlQml0bWFwIHdpdGggRVhJRiBy
b3RhdGlvbiwgaW1hZ2VPcmllbnRhdGlvbiBub25lLCBhbmQgY3JvcHBpbmciKTsKKworYXN5bmNf
dGVzdChmdW5jdGlvbih0KSB7CisgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiY2FudmFzIik7CisgICAgY2FudmFzLndpZHRoID0gMTYwOworICAgIGNhbnZhcy5oZWln
aHQgPSAxNjA7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoY2FudmFzKTsKKworICAgIGNvbnN0
IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgIGxvYWRJbWFnZSgicmVzb3VyY2Vz
L3NxdWFyZXMuanBnIikKKyAgICAgICAgLnRoZW4oaW1hZ2UgPT4gY3JlYXRlSW1hZ2VCaXRtYXAo
aW1hZ2UsIDgwLCAwLCAxNjAsIDE2MCwgeyBpbWFnZU9yaWVudGF0aW9uOiAiZmxpcFkiIH0pKQor
ICAgICAgICAudGhlbih0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGltYWdlQml0bWFwKSB7Cisg
ICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltYWdlQml0bWFwLCAwLCAwKTsKKyAgICAgICAgICAg
IGNoZWNrQ29sb3JzKGN0eCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCBbCisgICAgICAg
ICAgICAgICAgLy8gcm93LCBjb2wsIHIsIGcsIGIsIGEKKyAgICAgICAgICAgICAgICBbMCwgMCwg
MTI4LCAyNTUsIDEyOCwgMjU1XSwKKyAgICAgICAgICAgICAgICBbMCwgMSwgMTI4LCAxMjgsIDI1
NSwgMjU1XSwKKyAgICAgICAgICAgICAgICBbMSwgMCwgMCwgMjU1LCAwLCAyNTVdLAorICAgICAg
ICAgICAgICAgIFsxLCAxLCAwLCAwLCAyNTUsIDI1NV0sCisgICAgICAgICAgICBdKTsKKyAgICAg
ICAgfSkpOworfSwgImNyZWF0ZUltYWdlQml0bWFwIHdpdGggRVhJRiByb3RhdGlvbiwgaW1hZ2VP
cmllbnRhdGlvbiBmbGlwWSwgYW5kIGNyb3BwaW5nIik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMv
ZWxlbWVudC9tYW51YWwvaW1hZ2ViaXRtYXAvcmVzb3VyY2VzL3NxdWFyZXMuanBnIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50
L21hbnVhbC9pbWFnZWJpdG1hcC9yZXNvdXJjZXMvc3F1YXJlcy5qcGcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE5
Nzc2MGExMTFlMDdjNTQ0MTlkMTk5MzEzMGFhMWZlZTU5ODJlOApHSVQgYmluYXJ5IHBhdGNoCmxp
dGVyYWwgMTIyNwp6Y21kVXJLUyU+SDZ2a2dKY1Z9e1VaRjZsIXMzMHphYzJ6LWZ1JUgkI1I4WHBq
Oy1WbGJOTEBzNmEmdk4keChLQnAKejY/SnkzUHtGeVZpKz18VEU+MWVRJTk7Mk18S1F9TGVqJkxa
LStrfXA1JTFFdzFDZEcmQiFMaEJBe1RnN25DZUBaCnpuKm02dEFyMWZ4Mz0jJF5pR1Y0TzcjTUYx
a1J0VyhKV1FKWGpPP0xCSzNIYXpyMkRiRzh8VlM1RFhFaTY+ODdzNAp6T3cld3F2bjxYeXgxNWs7
KitIQjBmRXgmZ2dtOHVCZ2Q8QFFrdHxkYnFBSUQqV1RDTFJFIWBpPUR9JjJPMHQlRzQKenB0KiMp
IzU7akhgNWZ2Jks4WjYheyltZE50Xyg7d3JvIXx+MFcqeW51QmkoNWQmTTw0bCpycXQzKkNAUTs0
UncwCno4VW9NWTd2Zyg5e0d+fCNGPn4zMGI2TWxMYGN1VG56e3BfJnYxTEEhXiljTnZkV0kkeF9s
SiVVTm4zOEI3ZzVfUAp6Q1o3QFleTnxJQ18qLXE0QD9FN0RmNXg1Mzw5PFlfM15yXytrIUxSIWhr
ZHRvYkE5Ji1JbzVzflR8OyM0c31DaGEKcGI3Uj9QTTVMVl50NjQ8eWR5U2k+dEIqSlkxbncmNTEh
U2s7eE9OUWpBRzt5JT5KQE9udnVwcVcKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441560</attachid>
            <date>2021-10-17 21:34:30 -0700</date>
            <delta_ts>2021-10-17 23:38:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231063-20211018153426.patch</filename>
            <type>text/plain</type>
            <size>12801</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ1Zjg1YzkwZjY3Y2E1
YWMwOTkwM2RiY2NjNDJiN2ZiM2U0NDdiYi4uMzRjZDY2OTJjOGVhNTk4ODQxYTI5OGJhNTRhZWE5
YTM3ODNlMzNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTEwLTE3ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBjcmVhdGVJ
bWFnZUJpdG1hcCgpIHRha2UgRVhJRiBvcmllbnRhdGlvbiBpbnRvIGFjY291bnQgY29ycmVjdGx5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwNjMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNzUzOTU2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9tYW51YWwvaW1hZ2ViaXRtYXAvY3JlYXRlSW1h
Z2VCaXRtYXAtZXhpZi1vcmllbnRhdGlvbi5odG1sCisKKyAgICAgICAgVGhpcyBtYWtlcyB1cyB0
cmVhdCB7aW1hZ2VPcmllbnRhdGlvbjoibm9uZSJ9IGFzIG1lYW5pbmcgImFwcGx5IEVYSUYKKyAg
ICAgICAgb3JpZW50YXRpb24gd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0cmFuc2Zvcm1hdGlvbiIs
IGFuZAorICAgICAgICB7aW1hZ2VPcmllbnRhdGlvbjoiZmxpcFkifSBhcyBtZWFuaW5nICJhcHBs
eSBFWElGIG9yaWVudGF0aW9uIGFuZCB0aGVuCisgICAgICAgIGFwcGx5IGFuIGFkZGl0aW9uYWwg
dmVydGljYWwgZmxpcCIuIFRoaXMgYmVoYXZpb3IgbWF0Y2hlcyBGaXJlZm94OworICAgICAgICBo
dHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2h0bWwvaXNzdWVzLzcyMTAgaXMgb3BlbiBvbiBjbGFy
aWZ5aW5nIHRoaXMKKyAgICAgICAgYmVoYXZpb3IgaW4gdGhlIEhUTUwgc3BlYy4KKworICAgICAg
ICAqIGh0bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VPcmllbnRh
dGlvbkZvck9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVh
dGVQcm9taXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjpmbGlwWSBjb25zdCk6CisK
IDIwMjEtMDktMjEgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBFbnN1cmUgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmRyYXdJbWFnZSh2aWRlbykgdXNl
cyB0aGUgcmlnaHQgY29sb3Igc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5k
ZXggZjIxMGI0YTIyZDU0MjllNDk2ODA1ZjFlODJiYTk2OTUyMzhkOWQ3NC4uYjk3ZTgzYjRlZmI1
YzNkZmVkM2Y4ZGQ3NTIzMzRjZDM2MmY2OGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1h
cC5jcHAKQEAgLTIzNSwxMSArMjM1LDExIEBAIHN0YXRpYyBJbnRlcnBvbGF0aW9uUXVhbGl0eSBp
bnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkoSW1hZ2VCaXRtYXBPcHRpCiAgICAg
cmV0dXJuIEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0OwogfQogCi1zdGF0aWMgSW1hZ2VP
cmllbnRhdGlvbiBpbWFnZU9yaWVudGF0aW9uRm9yT3JpZW50YXRpb24oSW1hZ2VCaXRtYXBPcHRp
b25zOjpPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3N0YXRpYyBJbWFnZU9yaWVudGF0aW9uIGlt
YWdlT3JpZW50YXRpb25Gb3JPcmllbnRhdGlvbihJbWFnZUJpdG1hcE9wdGlvbnM6Ok9yaWVudGF0
aW9uIGltYWdlQml0bWFwT3JpZW50YXRpb24sIEltYWdlT3JpZW50YXRpb24gaW1hZ2VPcmllbnRh
dGlvbiA9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpCiB7Ci0gICAgaWYgKG9yaWVudGF0aW9uID09
IEltYWdlQml0bWFwT3B0aW9uczo6T3JpZW50YXRpb246OkZsaXBZKQotICAgICAgICByZXR1cm4g
SW1hZ2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Cb3R0b21MZWZ0KTsKLSAg
ICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOworICAgIGlmIChpbWFnZUJpdG1hcE9yaWVudGF0
aW9uID09IEltYWdlQml0bWFwT3B0aW9uczo6T3JpZW50YXRpb246OkZsaXBZKQorICAgICAgICBy
ZXR1cm4gaW1hZ2VPcmllbnRhdGlvbi5mbGlwWSgpOworICAgIHJldHVybiBpbWFnZU9yaWVudGF0
aW9uOwogfQogCiBzdGF0aWMgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxp
Y2F0aW9uRm9yUHJlbXVsdGlwbHlBbHBoYShJbWFnZUJpdG1hcE9wdGlvbnM6OlByZW11bHRpcGx5
QWxwaGEgcHJlbXVsdGlwbHlBbHBoYSkKQEAgLTM4Nyw3ICszODcsNyBAQCB2b2lkIEltYWdlQml0
bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsCiAgICAgfQogCiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwg
b3V0cHV0U2l6ZSk7Ci0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VG
b3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCks
IHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVh
bGl0eSksIGltYWdlT3JpZW50YXRpb25Gb3JPcmllbnRhdGlvbihvcHRpb25zLmltYWdlT3JpZW50
YXRpb24pIH0pOworICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9y
UmVuZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB7
IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxp
dHkpLCBpbWFnZU9yaWVudGF0aW9uRm9yT3JpZW50YXRpb24ob3B0aW9ucy5pbWFnZU9yaWVudGF0
aW9uLCBpbWFnZUZvclJlbmRlci0+b3JpZW50YXRpb24oKSkgfSk7CiAKICAgICAvLyA5LiBJZiB0
aGUgb3JpZ2luIG9mIGltYWdlJ3MgaW1hZ2UgaXMgbm90IHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUg
b3JpZ2luIHNwZWNpZmllZCBieSB0aGUKICAgICAvLyAgICBlbnRyeSBzZXR0aW5ncyBvYmplY3Qs
IHRoZW4gc2V0IHRoZSBvcmlnaW4tY2xlYW4gZmxhZyBvZiB0aGUgSW1hZ2VCaXRtYXAgb2JqZWN0
J3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3Jp
ZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50
YXRpb24uaAppbmRleCA1ZGUyNzFlNTIzNTI3NjJhZTFhM2MzMzhhNTM1NTcwZGU5Y2Q1OWM0Li41
MGI3YzZjYmNmMjVmNmNmZDYxZDVmMzBhNmY2N2M3Y2M5MzVlZTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oCkBAIC0xMDgs
NiArMTA4LDM2IEBAIHN0cnVjdCBJbWFnZU9yaWVudGF0aW9uIHsKICAgICAgICAgcmV0dXJuIEFm
ZmluZVRyYW5zZm9ybSgpOwogICAgIH0KIAorICAgIEltYWdlT3JpZW50YXRpb24gZmxpcFkoKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWRFWElGT3JpZW50YXRpb24obV9vcmll
bnRhdGlvbikpOworCisgICAgICAgIHN3aXRjaCAobV9vcmllbnRhdGlvbikgeworICAgICAgICBj
YXNlIEZyb21JbWFnZToKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIE5vbmU7CisgICAgICAgIGNhc2UgT3JpZ2luVG9wTGVmdDoKKyAgICAgICAg
ICAgIHJldHVybiBPcmlnaW5Cb3R0b21MZWZ0OworICAgICAgICBjYXNlIE9yaWdpblRvcFJpZ2h0
OgorICAgICAgICAgICAgcmV0dXJuIE9yaWdpbkJvdHRvbVJpZ2h0OworICAgICAgICBjYXNlIE9y
aWdpbkJvdHRvbVJpZ2h0OgorICAgICAgICAgICAgcmV0dXJuIE9yaWdpblRvcFJpZ2h0OworICAg
ICAgICBjYXNlIE9yaWdpbkJvdHRvbUxlZnQ6CisgICAgICAgICAgICByZXR1cm4gT3JpZ2luVG9w
TGVmdDsKKyAgICAgICAgY2FzZSBPcmlnaW5MZWZ0VG9wOgorICAgICAgICAgICAgcmV0dXJuIE9y
aWdpbkxlZnRCb3R0b207CisgICAgICAgIGNhc2UgT3JpZ2luUmlnaHRUb3A6CisgICAgICAgICAg
ICByZXR1cm4gT3JpZ2luUmlnaHRCb3R0b207CisgICAgICAgIGNhc2UgT3JpZ2luUmlnaHRCb3R0
b206CisgICAgICAgICAgICByZXR1cm4gT3JpZ2luUmlnaHRUb3A7CisgICAgICAgIGNhc2UgT3Jp
Z2luTGVmdEJvdHRvbToKKyAgICAgICAgICAgIHJldHVybiBPcmlnaW5MZWZ0VG9wOworICAgICAg
ICB9CisKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBOb25l
OworICAgIH0KKwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgT3JpZW50YXRpb24gRVhJRkZp
cnN0ID0gT3JpZ2luVG9wTGVmdDsKICAgICBzdGF0aWMgY29uc3QgT3JpZW50YXRpb24gRVhJRkxh
c3QgPSBPcmlnaW5MZWZ0Qm90dG9tOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXgg
ZGIzZGRkZDljZjgxZDhiYjQ4M2I1NzI3Y2RmZmI1YzhhYzgxYWI5Yi4uYjg3OTAzNmNkYThlYjI2
ZjExMTcwNWE1NmZiYWZlMjI0Yzc5NDUyNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTAtMTcgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2Ft
QGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGNyZWF0ZUltYWdlQml0bWFwKCkgdGFrZSBFWElG
IG9yaWVudGF0aW9uIGludG8gYWNjb3VudCBjb3JyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA2MworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODM3NTM5NTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9tYW51YWwvaW1h
Z2ViaXRtYXAvY3JlYXRlSW1hZ2VCaXRtYXAtZXhpZi1vcmllbnRhdGlvbi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50
L21hbnVhbC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJpdG1hcC1leGlmLW9yaWVudGF0aW9uLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVt
ZW50L21hbnVhbC9pbWFnZWJpdG1hcC9yZXNvdXJjZXMvc3F1YXJlcy5qcGc6IEFkZGVkLgorCiAy
MDIxLTEwLTAxICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAKICAgICAg
ICAgRW5zdXJlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5kcmF3SW1hZ2UodmlkZW8pIHVzZXMg
dGhlIHJpZ2h0IGNvbG9yIHNwYWNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvbWFudWFsL2ltYWdlYml0
bWFwL2NyZWF0ZUltYWdlQml0bWFwLWV4aWYtb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVt
ZW50L21hbnVhbC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJpdG1hcC1leGlmLW9yaWVudGF0aW9u
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMmU5M2ZhODlhNTMxYzEzOTUxMTUwZTA1MTFlYzJj
MDUyZmMzYmEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L21hbnVhbC9pbWFnZWJpdG1hcC9j
cmVhdGVJbWFnZUJpdG1hcC1leGlmLW9yaWVudGF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDYgQEAKKworUEFTUyBjcmVhdGVJbWFnZUJpdG1hcCB3aXRoIEVYSUYgcm90YXRpb24sIGltYWdl
T3JpZW50YXRpb24gbm9uZSwgYW5kIG5vIGNyb3BwaW5nCitQQVNTIGNyZWF0ZUltYWdlQml0bWFw
IHdpdGggRVhJRiByb3RhdGlvbiwgaW1hZ2VPcmllbnRhdGlvbiBmbGlwWSwgYW5kIG5vIGNyb3Bw
aW5nCitQQVNTIGNyZWF0ZUltYWdlQml0bWFwIHdpdGggRVhJRiByb3RhdGlvbiwgaW1hZ2VPcmll
bnRhdGlvbiBub25lLCBhbmQgY3JvcHBpbmcKK1BBU1MgY3JlYXRlSW1hZ2VCaXRtYXAgd2l0aCBF
WElGIHJvdGF0aW9uLCBpbWFnZU9yaWVudGF0aW9uIGZsaXBZLCBhbmQgY3JvcHBpbmcKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2NhbnZhcy9lbGVtZW50L21hbnVhbC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJpdG1hcC1leGlm
LW9yaWVudGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvbWFudWFsL2ltYWdlYml0bWFwL2NyZWF0ZUltYWdl
Qml0bWFwLWV4aWYtb3JpZW50YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NWQxM2QzM2ZhZTBjZDcw
NmRkNzlhYmVlMzk2MzA2ZjIzZGIzMjQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L21hbnVh
bC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJpdG1hcC1leGlmLW9yaWVudGF0aW9uLmh0bWwKQEAg
LTAsMCArMSwxMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPlRlc3QgdGhhdCBjcmVhdGVJ
bWFnZUJpdG1hcCBob25vcnMgRVhJRiBvcmllbnRhdGlvbjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Y2FudmFzIHsgb3V0
bGluZTogMXB4IHNvbGlkIGJsYWNrOyBtYXJnaW4tcmlnaHQ6IDFlbTsgfTwvc3R5bGU+Cis8Ym9k
eT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2FkSW1hZ2Uoc3JjKSB7CisgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHsKKyAgICAgICAgY29uc3QgaW1hZ2UgPSBuZXcgSW1h
Z2UoKTsKKyAgICAgICAgaW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsICgpID0+IHJlc29s
dmUoaW1hZ2UpLCB7IG9uY2U6IHRydWUgfSk7CisgICAgICAgIGltYWdlLnNyYyA9IHNyYzsKKyAg
ICB9KTsKK30KKworZnVuY3Rpb24gY2hlY2tDb2xvcnMoY3R4LCB3LCBoLCBleHBlY3RlZENvbG9y
cykgeworICAgIGxldCBkYXRhID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCB3LCBoKS5kYXRhOwor
ICAgIGZvciAobGV0IFtyb3csIGNvbCwgciwgZywgYiwgYV0gb2YgZXhwZWN0ZWRDb2xvcnMpIHsK
KyAgICAgICAgbGV0IHggPSBjb2wgKiA4MCArIDQwOworICAgICAgICBsZXQgeSA9IHJvdyAqIDgw
ICsgNDA7CisgICAgICAgIGxldCBpID0gKHggKyB5ICogdykgKiA0OworCisgICAgICAgIGxldCBl
eHBlY3RlZCA9IFtyLCBnLCBiLCBhXTsKKyAgICAgICAgbGV0IGFjdHVhbCA9IFtkYXRhW2ldLCBk
YXRhW2kgKyAxXSwgZGF0YVtpICsgMl0sIGRhdGFbaSArIDNdXTsKKworICAgICAgICBhc3NlcnRf
YXJyYXlfYXBwcm94X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCAxLCBgUGl4ZWwgdmFsdWUgYXQg
KCR7eH0sJHt5fSkgJHtleHBlY3RlZH0gPX4gJHthY3R1YWx9LmApOworICAgIH0KK30KKworYXN5
bmNfdGVzdChmdW5jdGlvbih0KSB7CisgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiY2FudmFzIik7CisgICAgY2FudmFzLndpZHRoID0gMzIwOworICAgIGNhbnZhcy5o
ZWlnaHQgPSAxNjA7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoY2FudmFzKTsKKworICAgIGNv
bnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgIGxvYWRJbWFnZSgicmVzb3Vy
Y2VzL3NxdWFyZXMuanBnIikKKyAgICAgICAgLnRoZW4oKGltYWdlKSA9PiBjcmVhdGVJbWFnZUJp
dG1hcChpbWFnZSkpCisgICAgICAgIC50aGVuKHQuc3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24oaW1h
Z2VCaXRtYXApIHsKKyAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2VCaXRtYXAsIDAsIDAp
OworICAgICAgICAgICAgY2hlY2tDb2xvcnMoY3R4LCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWln
aHQsIFsKKyAgICAgICAgICAgICAgICAvLyByb3csIGNvbCwgciwgZywgYiwgYQorICAgICAgICAg
ICAgICAgIFswLCAwLCAyNTUsIDAsIDAsIDI1NV0sCisgICAgICAgICAgICAgICAgWzAsIDEsIDAs
IDI1NSwgMCwgMjU1XSwKKyAgICAgICAgICAgICAgICBbMCwgMiwgMCwgMCwgMjU1LCAyNTVdLAor
ICAgICAgICAgICAgICAgIFswLCAzLCAwLCAwLCAwLCAyNTVdLAorICAgICAgICAgICAgICAgIFsx
LCAwLCAyNTUsIDEyOCwgMTI4LCAyNTVdLAorICAgICAgICAgICAgICAgIFsxLCAxLCAxMjgsIDI1
NSwgMTI4LCAyNTVdLAorICAgICAgICAgICAgICAgIFsxLCAyLCAxMjgsIDEyOCwgMjU1LCAyNTVd
LAorICAgICAgICAgICAgICAgIFsxLCAzLCAxMjgsIDEyOCwgMTI4LCAyNTVdLAorICAgICAgICAg
ICAgXSk7CisgICAgICAgIH0pKTsKK30sICJjcmVhdGVJbWFnZUJpdG1hcCB3aXRoIEVYSUYgcm90
YXRpb24sIGltYWdlT3JpZW50YXRpb24gbm9uZSwgYW5kIG5vIGNyb3BwaW5nIik7CisKK2FzeW5j
X3Rlc3QoZnVuY3Rpb24odCkgeworICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImNhbnZhcyIpOworICAgIGNhbnZhcy53aWR0aCA9IDMyMDsKKyAgICBjYW52YXMuaGVp
Z2h0ID0gMTYwOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGNhbnZhcyk7CisKKyAgICBjb25z
dCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBsb2FkSW1hZ2UoInJlc291cmNl
cy9zcXVhcmVzLmpwZyIpCisgICAgICAgIC50aGVuKChpbWFnZSkgPT4gY3JlYXRlSW1hZ2VCaXRt
YXAoaW1hZ2UsIHsgaW1hZ2VPcmllbnRhdGlvbjogImZsaXBZIiB9KSkKKyAgICAgICAgLnRoZW4o
dC5zdGVwX2Z1bmNfZG9uZShmdW5jdGlvbihpbWFnZUJpdG1hcCkgeworICAgICAgICAgICAgY3R4
LmRyYXdJbWFnZShpbWFnZUJpdG1hcCwgMCwgMCk7CisgICAgICAgICAgICBjaGVja0NvbG9ycyhj
dHgsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCwgWworICAgICAgICAgICAgICAgIC8vIHJv
dywgY29sLCByLCBnLCBiLCBhCisgICAgICAgICAgICAgICAgWzAsIDAsIDI1NSwgMTI4LCAxMjgs
IDI1NV0sCisgICAgICAgICAgICAgICAgWzAsIDEsIDEyOCwgMjU1LCAxMjgsIDI1NV0sCisgICAg
ICAgICAgICAgICAgWzAsIDIsIDEyOCwgMTI4LCAyNTUsIDI1NV0sCisgICAgICAgICAgICAgICAg
WzAsIDMsIDEyOCwgMTI4LCAxMjgsIDI1NV0sCisgICAgICAgICAgICAgICAgWzEsIDAsIDI1NSwg
MCwgMCwgMjU1XSwKKyAgICAgICAgICAgICAgICBbMSwgMSwgMCwgMjU1LCAwLCAyNTVdLAorICAg
ICAgICAgICAgICAgIFsxLCAyLCAwLCAwLCAyNTUsIDI1NV0sCisgICAgICAgICAgICAgICAgWzEs
IDMsIDAsIDAsIDAsIDI1NV0sCisgICAgICAgICAgICBdKTsKKyAgICAgICAgfSkpOworfSwgImNy
ZWF0ZUltYWdlQml0bWFwIHdpdGggRVhJRiByb3RhdGlvbiwgaW1hZ2VPcmllbnRhdGlvbiBmbGlw
WSwgYW5kIG5vIGNyb3BwaW5nIik7CisKK2FzeW5jX3Rlc3QoZnVuY3Rpb24odCkgeworICAgIGNv
bnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGNhbnZh
cy53aWR0aCA9IDE2MDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gMTYwOworICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kKGNhbnZhcyk7CisKKyAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgi
MmQiKTsKKyAgICBsb2FkSW1hZ2UoInJlc291cmNlcy9zcXVhcmVzLmpwZyIpCisgICAgICAgIC50
aGVuKGltYWdlID0+IGNyZWF0ZUltYWdlQml0bWFwKGltYWdlLCA4MCwgMCwgMTYwLCAxNjApKQor
ICAgICAgICAudGhlbih0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGltYWdlQml0bWFwKSB7Cisg
ICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltYWdlQml0bWFwLCAwLCAwKTsKKyAgICAgICAgICAg
IGNoZWNrQ29sb3JzKGN0eCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCBbCisgICAgICAg
ICAgICAgICAgLy8gcm93LCBjb2wsIHIsIGcsIGIsIGEKKyAgICAgICAgICAgICAgICBbMCwgMCwg
MCwgMjU1LCAwLCAyNTVdLAorICAgICAgICAgICAgICAgIFswLCAxLCAwLCAwLCAyNTUsIDI1NV0s
CisgICAgICAgICAgICAgICAgWzEsIDAsIDEyOCwgMjU1LCAxMjgsIDI1NV0sCisgICAgICAgICAg
ICAgICAgWzEsIDEsIDEyOCwgMTI4LCAyNTUsIDI1NV0sCisgICAgICAgICAgICBdKTsKKyAgICAg
ICAgfSkpOworfSwgImNyZWF0ZUltYWdlQml0bWFwIHdpdGggRVhJRiByb3RhdGlvbiwgaW1hZ2VP
cmllbnRhdGlvbiBub25lLCBhbmQgY3JvcHBpbmciKTsKKworYXN5bmNfdGVzdChmdW5jdGlvbih0
KSB7CisgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7
CisgICAgY2FudmFzLndpZHRoID0gMTYwOworICAgIGNhbnZhcy5oZWlnaHQgPSAxNjA7CisgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmQoY2FudmFzKTsKKworICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCIyZCIpOworICAgIGxvYWRJbWFnZSgicmVzb3VyY2VzL3NxdWFyZXMuanBnIikK
KyAgICAgICAgLnRoZW4oaW1hZ2UgPT4gY3JlYXRlSW1hZ2VCaXRtYXAoaW1hZ2UsIDgwLCAwLCAx
NjAsIDE2MCwgeyBpbWFnZU9yaWVudGF0aW9uOiAiZmxpcFkiIH0pKQorICAgICAgICAudGhlbih0
LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGltYWdlQml0bWFwKSB7CisgICAgICAgICAgICBjdHgu
ZHJhd0ltYWdlKGltYWdlQml0bWFwLCAwLCAwKTsKKyAgICAgICAgICAgIGNoZWNrQ29sb3JzKGN0
eCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCBbCisgICAgICAgICAgICAgICAgLy8gcm93
LCBjb2wsIHIsIGcsIGIsIGEKKyAgICAgICAgICAgICAgICBbMCwgMCwgMTI4LCAyNTUsIDEyOCwg
MjU1XSwKKyAgICAgICAgICAgICAgICBbMCwgMSwgMTI4LCAxMjgsIDI1NSwgMjU1XSwKKyAgICAg
ICAgICAgICAgICBbMSwgMCwgMCwgMjU1LCAwLCAyNTVdLAorICAgICAgICAgICAgICAgIFsxLCAx
LCAwLCAwLCAyNTUsIDI1NV0sCisgICAgICAgICAgICBdKTsKKyAgICAgICAgfSkpOworfSwgImNy
ZWF0ZUltYWdlQml0bWFwIHdpdGggRVhJRiByb3RhdGlvbiwgaW1hZ2VPcmllbnRhdGlvbiBmbGlw
WSwgYW5kIGNyb3BwaW5nIik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9tYW51YWwv
aW1hZ2ViaXRtYXAvcmVzb3VyY2VzL3NxdWFyZXMuanBnIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L21hbnVhbC9pbWFnZWJp
dG1hcC9yZXNvdXJjZXMvc3F1YXJlcy5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE5Nzc2MGExMTFlMDdjNTQ0
MTlkMTk5MzEzMGFhMWZlZTU5ODJlOApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTIyNwp6Y21k
VXJLUyU+SDZ2a2dKY1Z9e1VaRjZsIXMzMHphYzJ6LWZ1JUgkI1I4WHBqOy1WbGJOTEBzNmEmdk4k
eChLQnAKejY/SnkzUHtGeVZpKz18VEU+MWVRJTk7Mk18S1F9TGVqJkxaLStrfXA1JTFFdzFDZEcm
QiFMaEJBe1RnN25DZUBaCnpuKm02dEFyMWZ4Mz0jJF5pR1Y0TzcjTUYxa1J0VyhKV1FKWGpPP0xC
SzNIYXpyMkRiRzh8VlM1RFhFaTY+ODdzNAp6T3cld3F2bjxYeXgxNWs7KitIQjBmRXgmZ2dtOHVC
Z2Q8QFFrdHxkYnFBSUQqV1RDTFJFIWBpPUR9JjJPMHQlRzQKenB0KiMpIzU7akhgNWZ2Jks4WjYh
eyltZE50Xyg7d3JvIXx+MFcqeW51QmkoNWQmTTw0bCpycXQzKkNAUTs0UncwCno4VW9NWTd2Zyg5
e0d+fCNGPn4zMGI2TWxMYGN1VG56e3BfJnYxTEEhXiljTnZkV0kkeF9sSiVVTm4zOEI3ZzVfUAp6
Q1o3QFleTnxJQ18qLXE0QD9FN0RmNXg1Mzw5PFlfM15yXytrIUxSIWhrZHRvYkE5Ji1JbzVzflR8
OyM0c31DaGEKcGI3Uj9QTTVMVl50NjQ8eWR5U2k+dEIqSlkxbncmNTEhU2s7eE9OUWpBRzt5JT5K
QE9udnVwcVcKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441561</attachid>
            <date>2021-10-17 23:38:54 -0700</date>
            <delta_ts>2021-10-18 14:02:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231063-20211018173853.patch</filename>
            <type>text/plain</type>
            <size>12958</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ1Zjg1YzkwZjY3Y2E1
YWMwOTkwM2RiY2NjNDJiN2ZiM2U0NDdiYi4uMzRjZDY2OTJjOGVhNTk4ODQxYTI5OGJhNTRhZWE5
YTM3ODNlMzNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTEwLTE3ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBjcmVhdGVJ
bWFnZUJpdG1hcCgpIHRha2UgRVhJRiBvcmllbnRhdGlvbiBpbnRvIGFjY291bnQgY29ycmVjdGx5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwNjMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNzUzOTU2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9tYW51YWwvaW1hZ2ViaXRtYXAvY3JlYXRlSW1h
Z2VCaXRtYXAtZXhpZi1vcmllbnRhdGlvbi5odG1sCisKKyAgICAgICAgVGhpcyBtYWtlcyB1cyB0
cmVhdCB7aW1hZ2VPcmllbnRhdGlvbjoibm9uZSJ9IGFzIG1lYW5pbmcgImFwcGx5IEVYSUYKKyAg
ICAgICAgb3JpZW50YXRpb24gd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0cmFuc2Zvcm1hdGlvbiIs
IGFuZAorICAgICAgICB7aW1hZ2VPcmllbnRhdGlvbjoiZmxpcFkifSBhcyBtZWFuaW5nICJhcHBs
eSBFWElGIG9yaWVudGF0aW9uIGFuZCB0aGVuCisgICAgICAgIGFwcGx5IGFuIGFkZGl0aW9uYWwg
dmVydGljYWwgZmxpcCIuIFRoaXMgYmVoYXZpb3IgbWF0Y2hlcyBGaXJlZm94OworICAgICAgICBo
dHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2h0bWwvaXNzdWVzLzcyMTAgaXMgb3BlbiBvbiBjbGFy
aWZ5aW5nIHRoaXMKKyAgICAgICAgYmVoYXZpb3IgaW4gdGhlIEhUTUwgc3BlYy4KKworICAgICAg
ICAqIGh0bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VPcmllbnRh
dGlvbkZvck9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVh
dGVQcm9taXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uOjpmbGlwWSBjb25zdCk6CisK
IDIwMjEtMDktMjEgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBFbnN1cmUgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmRyYXdJbWFnZSh2aWRlbykgdXNl
cyB0aGUgcmlnaHQgY29sb3Igc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5k
ZXggZjIxMGI0YTIyZDU0MjllNDk2ODA1ZjFlODJiYTk2OTUyMzhkOWQ3NC4uY2M2ZjMxOTQzM2Uz
NGRmOTIyMTY4NGIyYTJjYzAzMTk2ZTk5ZWE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1h
cC5jcHAKQEAgLTIzNSwxMSArMjM1LDExIEBAIHN0YXRpYyBJbnRlcnBvbGF0aW9uUXVhbGl0eSBp
bnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkoSW1hZ2VCaXRtYXBPcHRpCiAgICAg
cmV0dXJuIEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0OwogfQogCi1zdGF0aWMgSW1hZ2VP
cmllbnRhdGlvbiBpbWFnZU9yaWVudGF0aW9uRm9yT3JpZW50YXRpb24oSW1hZ2VCaXRtYXBPcHRp
b25zOjpPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3N0YXRpYyBJbWFnZU9yaWVudGF0aW9uIGlt
YWdlT3JpZW50YXRpb25Gb3JPcmllbnRhdGlvbihJbWFnZUJpdG1hcE9wdGlvbnM6Ok9yaWVudGF0
aW9uIGltYWdlQml0bWFwT3JpZW50YXRpb24sIEltYWdlT3JpZW50YXRpb24gaW1hZ2VPcmllbnRh
dGlvbiA9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpCiB7Ci0gICAgaWYgKG9yaWVudGF0aW9uID09
IEltYWdlQml0bWFwT3B0aW9uczo6T3JpZW50YXRpb246OkZsaXBZKQotICAgICAgICByZXR1cm4g
SW1hZ2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Cb3R0b21MZWZ0KTsKLSAg
ICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOworICAgIGlmIChpbWFnZUJpdG1hcE9yaWVudGF0
aW9uID09IEltYWdlQml0bWFwT3B0aW9uczo6T3JpZW50YXRpb246OkZsaXBZKQorICAgICAgICBy
ZXR1cm4gaW1hZ2VPcmllbnRhdGlvbi5mbGlwWSgpOworICAgIHJldHVybiBpbWFnZU9yaWVudGF0
aW9uOwogfQogCiBzdGF0aWMgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxp
Y2F0aW9uRm9yUHJlbXVsdGlwbHlBbHBoYShJbWFnZUJpdG1hcE9wdGlvbnM6OlByZW11bHRpcGx5
QWxwaGEgcHJlbXVsdGlwbHlBbHBoYSkKQEAgLTM4Niw4ICszODYsMTIgQEAgdm9pZCBJbWFnZUJp
dG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byBvcmllbnRhdGlv
biA9IGltYWdlRm9yUmVuZGVyLT5vcmllbnRhdGlvbigpOworICAgIGlmIChvcmllbnRhdGlvbiA9
PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpCisgICAgICAgIG9yaWVudGF0aW9uID0gSW1h
Z2VPcmllbnRhdGlvbjo6Tm9uZTsKKwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50
KCksIG91dHB1dFNpemUpOwotICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmlt
YWdlRm9yUmVuZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpLCB7IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6
ZVF1YWxpdHkpLCBpbWFnZU9yaWVudGF0aW9uRm9yT3JpZW50YXRpb24ob3B0aW9ucy5pbWFnZU9y
aWVudGF0aW9uKSB9KTsKKyAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFn
ZUZvclJlbmRlciwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUo
KSwgeyBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVR
dWFsaXR5KSwgaW1hZ2VPcmllbnRhdGlvbkZvck9yaWVudGF0aW9uKG9wdGlvbnMuaW1hZ2VPcmll
bnRhdGlvbiwgb3JpZW50YXRpb24pIH0pOwogCiAgICAgLy8gOS4gSWYgdGhlIG9yaWdpbiBvZiBp
bWFnZSdzIGltYWdlIGlzIG5vdCB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIG9yaWdpbiBzcGVjaWZp
ZWQgYnkgdGhlCiAgICAgLy8gICAgZW50cnkgc2V0dGluZ3Mgb2JqZWN0LCB0aGVuIHNldCB0aGUg
b3JpZ2luLWNsZWFuIGZsYWcgb2YgdGhlIEltYWdlQml0bWFwIG9iamVjdCdzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmgKaW5kZXgg
NWRlMjcxZTUyMzUyNzYyYWUxYTNjMzM4YTUzNTU3MGRlOWNkNTljNC4uNTBiN2M2Y2JjZjI1ZjZj
ZmQ2MWQ1ZjMwYTZmNjdjN2NjOTM1ZWU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uaApAQCAtMTA4LDYgKzEwOCwzNiBAQCBz
dHJ1Y3QgSW1hZ2VPcmllbnRhdGlvbiB7CiAgICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0o
KTsKICAgICB9CiAKKyAgICBJbWFnZU9yaWVudGF0aW9uIGZsaXBZKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChpc1ZhbGlkRVhJRk9yaWVudGF0aW9uKG1fb3JpZW50YXRpb24pKTsKKwor
ICAgICAgICBzd2l0Y2ggKG1fb3JpZW50YXRpb24pIHsKKyAgICAgICAgY2FzZSBGcm9tSW1hZ2U6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBO
b25lOworICAgICAgICBjYXNlIE9yaWdpblRvcExlZnQ6CisgICAgICAgICAgICByZXR1cm4gT3Jp
Z2luQm90dG9tTGVmdDsKKyAgICAgICAgY2FzZSBPcmlnaW5Ub3BSaWdodDoKKyAgICAgICAgICAg
IHJldHVybiBPcmlnaW5Cb3R0b21SaWdodDsKKyAgICAgICAgY2FzZSBPcmlnaW5Cb3R0b21SaWdo
dDoKKyAgICAgICAgICAgIHJldHVybiBPcmlnaW5Ub3BSaWdodDsKKyAgICAgICAgY2FzZSBPcmln
aW5Cb3R0b21MZWZ0OgorICAgICAgICAgICAgcmV0dXJuIE9yaWdpblRvcExlZnQ7CisgICAgICAg
IGNhc2UgT3JpZ2luTGVmdFRvcDoKKyAgICAgICAgICAgIHJldHVybiBPcmlnaW5MZWZ0Qm90dG9t
OworICAgICAgICBjYXNlIE9yaWdpblJpZ2h0VG9wOgorICAgICAgICAgICAgcmV0dXJuIE9yaWdp
blJpZ2h0Qm90dG9tOworICAgICAgICBjYXNlIE9yaWdpblJpZ2h0Qm90dG9tOgorICAgICAgICAg
ICAgcmV0dXJuIE9yaWdpblJpZ2h0VG9wOworICAgICAgICBjYXNlIE9yaWdpbkxlZnRCb3R0b206
CisgICAgICAgICAgICByZXR1cm4gT3JpZ2luTGVmdFRvcDsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gTm9uZTsKKyAgICB9CisKIHBy
aXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IE9yaWVudGF0aW9uIEVYSUZGaXJzdCA9IE9yaWdpblRv
cExlZnQ7CiAgICAgc3RhdGljIGNvbnN0IE9yaWVudGF0aW9uIEVYSUZMYXN0ID0gT3JpZ2luTGVm
dEJvdHRvbTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGRiM2RkZGQ5Y2Y4MWQ4
YmI0ODNiNTcyN2NkZmZiNWM4YWM4MWFiOWIuLmI4NzkwMzZjZGE4ZWIyNmYxMTE3MDVhNTZmYmFm
ZTIyNGM3OTQ1MjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIxLTEwLTE3ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBjcmVhdGVJbWFnZUJpdG1hcCgpIHRha2UgRVhJRiBvcmllbnRhdGlvbiBp
bnRvIGFjY291bnQgY29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzEwNjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNzUzOTU2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvbWFudWFsL2ltYWdlYml0bWFwL2NyZWF0
ZUltYWdlQml0bWFwLWV4aWYtb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9tYW51YWwvaW1hZ2Vi
aXRtYXAvY3JlYXRlSW1hZ2VCaXRtYXAtZXhpZi1vcmllbnRhdGlvbi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9tYW51YWwvaW1h
Z2ViaXRtYXAvcmVzb3VyY2VzL3NxdWFyZXMuanBnOiBBZGRlZC4KKwogMjAyMS0xMC0wMSAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEVuc3VyZSBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuZHJhd0ltYWdlKHZpZGVvKSB1c2VzIHRoZSByaWdodCBjb2xv
ciBzcGFjZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L21hbnVhbC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFn
ZUJpdG1hcC1leGlmLW9yaWVudGF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9tYW51YWwvaW1h
Z2ViaXRtYXAvY3JlYXRlSW1hZ2VCaXRtYXAtZXhpZi1vcmllbnRhdGlvbi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTJlOTNmYTg5YTUzMWMxMzk1MTE1MGUwNTExZWMyYzA1MmZjM2JhMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9jYW52YXMvZWxlbWVudC9tYW51YWwvaW1hZ2ViaXRtYXAvY3JlYXRlSW1hZ2VCaXRt
YXAtZXhpZi1vcmllbnRhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1BBU1Mg
Y3JlYXRlSW1hZ2VCaXRtYXAgd2l0aCBFWElGIHJvdGF0aW9uLCBpbWFnZU9yaWVudGF0aW9uIG5v
bmUsIGFuZCBubyBjcm9wcGluZworUEFTUyBjcmVhdGVJbWFnZUJpdG1hcCB3aXRoIEVYSUYgcm90
YXRpb24sIGltYWdlT3JpZW50YXRpb24gZmxpcFksIGFuZCBubyBjcm9wcGluZworUEFTUyBjcmVh
dGVJbWFnZUJpdG1hcCB3aXRoIEVYSUYgcm90YXRpb24sIGltYWdlT3JpZW50YXRpb24gbm9uZSwg
YW5kIGNyb3BwaW5nCitQQVNTIGNyZWF0ZUltYWdlQml0bWFwIHdpdGggRVhJRiByb3RhdGlvbiwg
aW1hZ2VPcmllbnRhdGlvbiBmbGlwWSwgYW5kIGNyb3BwaW5nCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVu
dC9tYW51YWwvaW1hZ2ViaXRtYXAvY3JlYXRlSW1hZ2VCaXRtYXAtZXhpZi1vcmllbnRhdGlvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nh
bnZhcy9lbGVtZW50L21hbnVhbC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJpdG1hcC1leGlmLW9y
aWVudGF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVkMTNkMzNmYWUwY2Q3MDZkZDc5YWJlZTM5NjMw
NmYyM2RiMzI0MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9tYW51YWwvaW1hZ2ViaXRtYXAv
Y3JlYXRlSW1hZ2VCaXRtYXAtZXhpZi1vcmllbnRhdGlvbi5odG1sCkBAIC0wLDAgKzEsMTIxIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5UZXN0IHRoYXQgY3JlYXRlSW1hZ2VCaXRtYXAgaG9u
b3JzIEVYSUYgb3JpZW50YXRpb248L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHN0eWxlPmNhbnZhcyB7IG91dGxpbmU6IDFweCBzb2xp
ZCBibGFjazsgbWFyZ2luLXJpZ2h0OiAxZW07IH08L3N0eWxlPgorPGJvZHk+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gbG9hZEltYWdlKHNyYykgeworICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlv
bihyZXNvbHZlKSB7CisgICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7CisgICAgICAg
IGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAoKSA9PiByZXNvbHZlKGltYWdlKSwgeyBv
bmNlOiB0cnVlIH0pOworICAgICAgICBpbWFnZS5zcmMgPSBzcmM7CisgICAgfSk7Cit9CisKK2Z1
bmN0aW9uIGNoZWNrQ29sb3JzKGN0eCwgdywgaCwgZXhwZWN0ZWRDb2xvcnMpIHsKKyAgICBsZXQg
ZGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgdywgaCkuZGF0YTsKKyAgICBmb3IgKGxldCBb
cm93LCBjb2wsIHIsIGcsIGIsIGFdIG9mIGV4cGVjdGVkQ29sb3JzKSB7CisgICAgICAgIGxldCB4
ID0gY29sICogODAgKyA0MDsKKyAgICAgICAgbGV0IHkgPSByb3cgKiA4MCArIDQwOworICAgICAg
ICBsZXQgaSA9ICh4ICsgeSAqIHcpICogNDsKKworICAgICAgICBsZXQgZXhwZWN0ZWQgPSBbciwg
ZywgYiwgYV07CisgICAgICAgIGxldCBhY3R1YWwgPSBbZGF0YVtpXSwgZGF0YVtpICsgMV0sIGRh
dGFbaSArIDJdLCBkYXRhW2kgKyAzXV07CisKKyAgICAgICAgYXNzZXJ0X2FycmF5X2FwcHJveF9l
cXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgMSwgYFBpeGVsIHZhbHVlIGF0ICgke3h9LCR7eX0pICR7
ZXhwZWN0ZWR9ID1+ICR7YWN0dWFsfS5gKTsKKyAgICB9Cit9CisKK2FzeW5jX3Rlc3QoZnVuY3Rp
b24odCkgeworICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZh
cyIpOworICAgIGNhbnZhcy53aWR0aCA9IDMyMDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gMTYwOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGNhbnZhcyk7CisKKyAgICBjb25zdCBjdHggPSBjYW52
YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBsb2FkSW1hZ2UoInJlc291cmNlcy9zcXVhcmVzLmpw
ZyIpCisgICAgICAgIC50aGVuKChpbWFnZSkgPT4gY3JlYXRlSW1hZ2VCaXRtYXAoaW1hZ2UpKQor
ICAgICAgICAudGhlbih0LnN0ZXBfZnVuY19kb25lKGZ1bmN0aW9uKGltYWdlQml0bWFwKSB7Cisg
ICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltYWdlQml0bWFwLCAwLCAwKTsKKyAgICAgICAgICAg
IGNoZWNrQ29sb3JzKGN0eCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0LCBbCisgICAgICAg
ICAgICAgICAgLy8gcm93LCBjb2wsIHIsIGcsIGIsIGEKKyAgICAgICAgICAgICAgICBbMCwgMCwg
MjU1LCAwLCAwLCAyNTVdLAorICAgICAgICAgICAgICAgIFswLCAxLCAwLCAyNTUsIDAsIDI1NV0s
CisgICAgICAgICAgICAgICAgWzAsIDIsIDAsIDAsIDI1NSwgMjU1XSwKKyAgICAgICAgICAgICAg
ICBbMCwgMywgMCwgMCwgMCwgMjU1XSwKKyAgICAgICAgICAgICAgICBbMSwgMCwgMjU1LCAxMjgs
IDEyOCwgMjU1XSwKKyAgICAgICAgICAgICAgICBbMSwgMSwgMTI4LCAyNTUsIDEyOCwgMjU1XSwK
KyAgICAgICAgICAgICAgICBbMSwgMiwgMTI4LCAxMjgsIDI1NSwgMjU1XSwKKyAgICAgICAgICAg
ICAgICBbMSwgMywgMTI4LCAxMjgsIDEyOCwgMjU1XSwKKyAgICAgICAgICAgIF0pOworICAgICAg
ICB9KSk7Cit9LCAiY3JlYXRlSW1hZ2VCaXRtYXAgd2l0aCBFWElGIHJvdGF0aW9uLCBpbWFnZU9y
aWVudGF0aW9uIG5vbmUsIGFuZCBubyBjcm9wcGluZyIpOworCithc3luY190ZXN0KGZ1bmN0aW9u
KHQpIHsKKyAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMi
KTsKKyAgICBjYW52YXMud2lkdGggPSAzMjA7CisgICAgY2FudmFzLmhlaWdodCA9IDE2MDsKKyAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZChjYW52YXMpOworCisgICAgY29uc3QgY3R4ID0gY2FudmFz
LmdldENvbnRleHQoIjJkIik7CisgICAgbG9hZEltYWdlKCJyZXNvdXJjZXMvc3F1YXJlcy5qcGci
KQorICAgICAgICAudGhlbigoaW1hZ2UpID0+IGNyZWF0ZUltYWdlQml0bWFwKGltYWdlLCB7IGlt
YWdlT3JpZW50YXRpb246ICJmbGlwWSIgfSkpCisgICAgICAgIC50aGVuKHQuc3RlcF9mdW5jX2Rv
bmUoZnVuY3Rpb24oaW1hZ2VCaXRtYXApIHsKKyAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1h
Z2VCaXRtYXAsIDAsIDApOworICAgICAgICAgICAgY2hlY2tDb2xvcnMoY3R4LCBjYW52YXMud2lk
dGgsIGNhbnZhcy5oZWlnaHQsIFsKKyAgICAgICAgICAgICAgICAvLyByb3csIGNvbCwgciwgZywg
YiwgYQorICAgICAgICAgICAgICAgIFswLCAwLCAyNTUsIDEyOCwgMTI4LCAyNTVdLAorICAgICAg
ICAgICAgICAgIFswLCAxLCAxMjgsIDI1NSwgMTI4LCAyNTVdLAorICAgICAgICAgICAgICAgIFsw
LCAyLCAxMjgsIDEyOCwgMjU1LCAyNTVdLAorICAgICAgICAgICAgICAgIFswLCAzLCAxMjgsIDEy
OCwgMTI4LCAyNTVdLAorICAgICAgICAgICAgICAgIFsxLCAwLCAyNTUsIDAsIDAsIDI1NV0sCisg
ICAgICAgICAgICAgICAgWzEsIDEsIDAsIDI1NSwgMCwgMjU1XSwKKyAgICAgICAgICAgICAgICBb
MSwgMiwgMCwgMCwgMjU1LCAyNTVdLAorICAgICAgICAgICAgICAgIFsxLCAzLCAwLCAwLCAwLCAy
NTVdLAorICAgICAgICAgICAgXSk7CisgICAgICAgIH0pKTsKK30sICJjcmVhdGVJbWFnZUJpdG1h
cCB3aXRoIEVYSUYgcm90YXRpb24sIGltYWdlT3JpZW50YXRpb24gZmxpcFksIGFuZCBubyBjcm9w
cGluZyIpOworCithc3luY190ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICBjb25zdCBjYW52YXMgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBjYW52YXMud2lkdGggPSAxNjA7
CisgICAgY2FudmFzLmhlaWdodCA9IDE2MDsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChjYW52
YXMpOworCisgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgbG9h
ZEltYWdlKCJyZXNvdXJjZXMvc3F1YXJlcy5qcGciKQorICAgICAgICAudGhlbihpbWFnZSA9PiBj
cmVhdGVJbWFnZUJpdG1hcChpbWFnZSwgODAsIDAsIDE2MCwgMTYwKSkKKyAgICAgICAgLnRoZW4o
dC5zdGVwX2Z1bmNfZG9uZShmdW5jdGlvbihpbWFnZUJpdG1hcCkgeworICAgICAgICAgICAgY3R4
LmRyYXdJbWFnZShpbWFnZUJpdG1hcCwgMCwgMCk7CisgICAgICAgICAgICBjaGVja0NvbG9ycyhj
dHgsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCwgWworICAgICAgICAgICAgICAgIC8vIHJv
dywgY29sLCByLCBnLCBiLCBhCisgICAgICAgICAgICAgICAgWzAsIDAsIDAsIDI1NSwgMCwgMjU1
XSwKKyAgICAgICAgICAgICAgICBbMCwgMSwgMCwgMCwgMjU1LCAyNTVdLAorICAgICAgICAgICAg
ICAgIFsxLCAwLCAxMjgsIDI1NSwgMTI4LCAyNTVdLAorICAgICAgICAgICAgICAgIFsxLCAxLCAx
MjgsIDEyOCwgMjU1LCAyNTVdLAorICAgICAgICAgICAgXSk7CisgICAgICAgIH0pKTsKK30sICJj
cmVhdGVJbWFnZUJpdG1hcCB3aXRoIEVYSUYgcm90YXRpb24sIGltYWdlT3JpZW50YXRpb24gbm9u
ZSwgYW5kIGNyb3BwaW5nIik7CisKK2FzeW5jX3Rlc3QoZnVuY3Rpb24odCkgeworICAgIGNvbnN0
IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGNhbnZhcy53
aWR0aCA9IDE2MDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gMTYwOworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kKGNhbnZhcyk7CisKKyAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQi
KTsKKyAgICBsb2FkSW1hZ2UoInJlc291cmNlcy9zcXVhcmVzLmpwZyIpCisgICAgICAgIC50aGVu
KGltYWdlID0+IGNyZWF0ZUltYWdlQml0bWFwKGltYWdlLCA4MCwgMCwgMTYwLCAxNjAsIHsgaW1h
Z2VPcmllbnRhdGlvbjogImZsaXBZIiB9KSkKKyAgICAgICAgLnRoZW4odC5zdGVwX2Z1bmNfZG9u
ZShmdW5jdGlvbihpbWFnZUJpdG1hcCkgeworICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWFn
ZUJpdG1hcCwgMCwgMCk7CisgICAgICAgICAgICBjaGVja0NvbG9ycyhjdHgsIGNhbnZhcy53aWR0
aCwgY2FudmFzLmhlaWdodCwgWworICAgICAgICAgICAgICAgIC8vIHJvdywgY29sLCByLCBnLCBi
LCBhCisgICAgICAgICAgICAgICAgWzAsIDAsIDEyOCwgMjU1LCAxMjgsIDI1NV0sCisgICAgICAg
ICAgICAgICAgWzAsIDEsIDEyOCwgMTI4LCAyNTUsIDI1NV0sCisgICAgICAgICAgICAgICAgWzEs
IDAsIDAsIDI1NSwgMCwgMjU1XSwKKyAgICAgICAgICAgICAgICBbMSwgMSwgMCwgMCwgMjU1LCAy
NTVdLAorICAgICAgICAgICAgXSk7CisgICAgICAgIH0pKTsKK30sICJjcmVhdGVJbWFnZUJpdG1h
cCB3aXRoIEVYSUYgcm90YXRpb24sIGltYWdlT3JpZW50YXRpb24gZmxpcFksIGFuZCBjcm9wcGlu
ZyIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvbWFudWFsL2ltYWdlYml0bWFwL3Jl
c291cmNlcy9zcXVhcmVzLmpwZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9tYW51YWwvaW1hZ2ViaXRtYXAvcmVzb3VyY2Vz
L3NxdWFyZXMuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxOTc3NjBhMTExZTA3YzU0NDE5ZDE5OTMxMzBhYTFm
ZWU1OTgyZTgKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEyMjcKemNtZFVyS1MlPkg2dmtnSmNW
fXtVWkY2bCFzMzB6YWMyei1mdSVIJCNSOFhwajstVmxiTkxAczZhJnZOJHgoS0JwCno2P0p5M1B7
RnlWaSs9fFRFPjFlUSU5OzJNfEtRfUxlaiZMWi0ra31wNSUxRXcxQ2RHJkIhTGhCQXtUZzduQ2VA
Wgp6biptNnRBcjFmeDM9IyReaUdWNE83I01GMWtSdFcoSldRSlhqTz9MQkszSGF6cjJEYkc4fFZT
NURYRWk2Pjg3czQKek93JXdxdm48WHl4MTVrOyorSEIwZkV4JmdnbTh1QmdkPEBRa3R8ZGJxQUlE
KldUQ0xSRSFgaT1EfSYyTzB0JUc0CnpwdCojKSM1O2pIYDVmdiZLOFo2IXspbWROdF8oO3dybyF8
fjBXKnludUJpKDVkJk08NGwqcnF0MypDQFE7NFJ3MAp6OFVvTVk3dmcoOXtHfnwjRj5+MzBiNk1s
TGBjdVRuentwXyZ2MUxBIV4pY052ZFdJJHhfbEolVU5uMzhCN2c1X1AKekNaN0BZXk58SUNfKi1x
NEA/RTdEZjV4NTM8OTxZXzNecl8rayFMUiFoa2R0b2JBOSYtSW81c35UfDsjNHN9Q2hhCnBiN1I/
UE01TFZedDY0PHlkeVNpPnRCKkpZMW53JjUxIVNrO3hPTlFqQUc7eSU+SkBPbnZ1cHFXCgpsaXRl
cmFsIDAKSGNtVj9kMDAwMDEKCg==
</data>
<flag name="review"
          id="465870"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441678</attachid>
            <date>2021-10-18 19:48:16 -0700</date>
            <delta_ts>2021-10-18 23:32:33 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231063-20211019134814.patch</filename>
            <type>text/plain</type>
            <size>20765</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ1Zjg1YzkwZjY3Y2E1
YWMwOTkwM2RiY2NjNDJiN2ZiM2U0NDdiYi4uMGQ1N2QyMjM3Y2UzZjljNWUzYmUwZGU3NWU1Nzgx
YmNjZjg0M2E0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTEwLTE3ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBjcmVhdGVJ
bWFnZUJpdG1hcCgpIHRha2UgRVhJRiBvcmllbnRhdGlvbiBpbnRvIGFjY291bnQgY29ycmVjdGx5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwNjMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNzUzOTU2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE15bGVzIE1heGZpZWxkIGFuZCBTYWlkIEFib3UtSGFsbGF3YS4KKworICAgICAgICBUZXN0OiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvbWFudWFs
L2ltYWdlYml0bWFwL2NyZWF0ZUltYWdlQml0bWFwLWV4aWYtb3JpZW50YXRpb24uaHRtbAorCisg
ICAgICAgIFRoaXMgbWFrZXMgdXMgdHJlYXQge2ltYWdlT3JpZW50YXRpb246Im5vbmUifSBhcyBt
ZWFuaW5nICJhcHBseSBFWElGCisgICAgICAgIG9yaWVudGF0aW9uIHdpdGhvdXQgYW55IGFkZGl0
aW9uYWwgdHJhbnNmb3JtYXRpb24iLCBhbmQKKyAgICAgICAge2ltYWdlT3JpZW50YXRpb246ImZs
aXBZIn0gYXMgbWVhbmluZyAiYXBwbHkgRVhJRiBvcmllbnRhdGlvbiBhbmQgdGhlbgorICAgICAg
ICBhcHBseSBhbiBhZGRpdGlvbmFsIHZlcnRpY2FsIGZsaXAiLiBUaGlzIGJlaGF2aW9yIG1hdGNo
ZXMgRmlyZWZveDsKKyAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL2lzc3Vl
cy83MjEwIGlzIG9wZW4gb24gY2xhcmlmeWluZyB0aGlzCisgICAgICAgIGJlaGF2aW9yIGluIHRo
ZSBIVE1MIHNwZWMuCisKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdl
T3JpZW50YXRpb25Gb3JPcmllbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9JbWFn
ZUJpdG1hcE9wdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwT3B0aW9uczo6
cmVzb2x2ZWRJbWFnZU9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0ltYWdlQml0
bWFwT3B0aW9ucy5pZGw6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRh
dGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbjo6d2l0aEZsaXBwZWRZ
IGNvbnN0KToKKwogMjAyMS0wOS0yMSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIEVuc3VyZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuZHJhd0ltYWdl
KHZpZGVvKSB1c2VzIHRoZSByaWdodCBjb2xvciBzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0
bWFwLmNwcAppbmRleCBmMjEwYjRhMjJkNTQyOWU0OTY4MDVmMWU4MmJhOTY5NTIzOGQ5ZDc0Li4z
NDg4ZWE0MzE3NjdjMTM3MDAyMzgxYzNlZjIyMjNjOGRjN2M0MTM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlQml0bWFwLmNwcApAQCAtMjM1LDEzICsyMzUsNiBAQCBzdGF0aWMgSW50ZXJwb2xhdGlv
blF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KEltYWdlQml0bWFw
T3B0aQogICAgIHJldHVybiBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdDsKIH0KIAotc3Rh
dGljIEltYWdlT3JpZW50YXRpb24gaW1hZ2VPcmllbnRhdGlvbkZvck9yaWVudGF0aW9uKEltYWdl
Qml0bWFwT3B0aW9uczo6T3JpZW50YXRpb24gb3JpZW50YXRpb24pCi17Ci0gICAgaWYgKG9yaWVu
dGF0aW9uID09IEltYWdlQml0bWFwT3B0aW9uczo6T3JpZW50YXRpb246OkZsaXBZKQotICAgICAg
ICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Cb3R0b21M
ZWZ0KTsKLSAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOwotfQotCiBzdGF0aWMgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9uRm9yUHJlbXVsdGlwbHlBbHBo
YShJbWFnZUJpdG1hcE9wdGlvbnM6OlByZW11bHRpcGx5QWxwaGEgcHJlbXVsdGlwbHlBbHBoYSkK
IHsKICAgICAvLyBUaGUgZGVmYXVsdCBpcyB0byBwcmVtdWx0aXBseSAtIHRoaXMgaXMgdGhlIGxl
YXN0IHN1cnByaXNpbmcgYmVoYXZpb3IuCkBAIC0zNzMsMjEgKzM2NiwyNSBAQCB2b2lkIEltYWdl
Qml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGltYWdlRm9y
UmVuZGVyID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50LT5yZW5k
ZXJlcigpKTsKLSAgICBpZiAoIWltYWdlRm9yUmVuZGVyKSB7CisgICAgYXV0byBpbWFnZUZvclJl
bmRlcmVyID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50LT5yZW5k
ZXJlcigpKTsKKyAgICBpZiAoIWltYWdlRm9yUmVuZGVyZXIpIHsKICAgICAgICAgcHJvbWlzZS5y
ZWplY3QoSW52YWxpZFN0YXRlRXJyb3IsICJDYW5ub3QgY3JlYXRlIEltYWdlQml0bWFwIGZyb20g
aW1hZ2UgdGhhdCBjYW4ndCBiZSByZW5kZXJlZCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgYXV0byBvdXRwdXRTaXplID0gb3V0cHV0U2l6ZUZvclNvdXJjZVJlY3RhbmdsZShzb3Vy
Y2VSZWN0YW5nbGUucmV0dXJuVmFsdWUoKSwgb3B0aW9ucyk7Ci0gICAgYXV0byBiaXRtYXBEYXRh
ID0gY3JlYXRlSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgb3V0cHV0U2l6ZSwg
YnVmZmVyUmVuZGVyaW5nTW9kZSwgaW1hZ2VGb3JSZW5kZXItPmNvbG9yU3BhY2UoKSk7CisgICAg
YXV0byBiaXRtYXBEYXRhID0gY3JlYXRlSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgb3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSwgaW1hZ2VGb3JSZW5kZXJlci0+Y29s
b3JTcGFjZSgpKTsKICAgICBpZiAoIWJpdG1hcERhdGEpIHsKICAgICAgICAgcmVzb2x2ZVdpdGhC
bGFua0ltYWdlQnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICF0YWludHNPcmlnaW4oKmNh
Y2hlZEltYWdlKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICBhdXRvIG9yaWVudGF0aW9uID0gaW1hZ2VGb3JSZW5kZXJlci0+b3JpZW50YXRpb24oKTsK
KyAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKQorICAg
ICAgICBvcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246Ok5vbmU7CisKICAgICBGbG9hdFJl
Y3QgZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBvdXRwdXRTaXplKTsKLSAgICBiaXRtYXBEYXRhLT5j
b250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZUZvclJlbmRlciwgZGVzdFJlY3QsIHNvdXJjZVJlY3Rh
bmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6
ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KSwgaW1hZ2VPcmllbnRhdGlvbkZvck9yaWVu
dGF0aW9uKG9wdGlvbnMuaW1hZ2VPcmllbnRhdGlvbikgfSk7CisgICAgYml0bWFwRGF0YS0+Y29u
dGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXJlciwgZGVzdFJlY3QsIHNvdXJjZVJlY3Rh
bmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6
ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KSwgb3B0aW9ucy5yZXNvbHZlZEltYWdlT3Jp
ZW50YXRpb24ob3JpZW50YXRpb24pIH0pOwogCiAgICAgLy8gOS4gSWYgdGhlIG9yaWdpbiBvZiBp
bWFnZSdzIGltYWdlIGlzIG5vdCB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIG9yaWdpbiBzcGVjaWZp
ZWQgYnkgdGhlCiAgICAgLy8gICAgZW50cnkgc2V0dGluZ3Mgb2JqZWN0LCB0aGVuIHNldCB0aGUg
b3JpZ2luLWNsZWFuIGZsYWcgb2YgdGhlIEltYWdlQml0bWFwIG9iamVjdCdzCkBAIC00NTUsNyAr
NDUyLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIH0KIAogICAgIEZsb2F0UmVjdCBk
ZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNpemUpOwotICAgIGJpdG1hcERhdGEtPmNvbnRl
eHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVuZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xl
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB7IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVh
bGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpLCBpbWFnZU9yaWVudGF0aW9uRm9yT3JpZW50YXRp
b24ob3B0aW9ucy5pbWFnZU9yaWVudGF0aW9uKSB9KTsKKyAgICBiaXRtYXBEYXRhLT5jb250ZXh0
KCkuZHJhd0ltYWdlKCppbWFnZUZvclJlbmRlciwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxp
dHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KSwgb3B0aW9ucy5yZXNvbHZlZEltYWdlT3JpZW50YXRp
b24oSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgfSk7CiAKICAgICAvLyA1LiBTZXQgdGhlIG9yaWdp
bi1jbGVhbiBmbGFnIG9mIHRoZSBJbWFnZUJpdG1hcCBvYmplY3QncyBiaXRtYXAgdG8gdGhlIHNh
bWUgdmFsdWUgYXMKICAgICAvLyAgICB0aGUgb3JpZ2luLWNsZWFuIGZsYWcgb2YgdGhlIGNhbnZh
cyBlbGVtZW50J3MgYml0bWFwLgpAQCAtNTI5LDcgKzUyNiw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6
OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwKICAgICAgICAgYy5jbGlwKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNpemUp
KTsKICAgICAgICAgYXV0byBzY2FsZVggPSBmbG9hdChvdXRwdXRTaXplLndpZHRoKCkpIC8gZmxv
YXQoc291cmNlUmVjdGFuZ2xlLndpZHRoKCkpOwogICAgICAgICBhdXRvIHNjYWxlWSA9IGZsb2F0
KG91dHB1dFNpemUuaGVpZ2h0KCkpIC8gZmxvYXQoc291cmNlUmVjdGFuZ2xlLmhlaWdodCgpKTsK
LSAgICAgICAgaWYgKG9wdGlvbnMuaW1hZ2VPcmllbnRhdGlvbiA9PSBJbWFnZUJpdG1hcE9wdGlv
bnM6Ok9yaWVudGF0aW9uOjpGbGlwWSkgeworICAgICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlv
biA9PSBJbWFnZUJpdG1hcE9wdGlvbnM6Ok9yaWVudGF0aW9uOjpGbGlwWSkgewogICAgICAgICAg
ICAgYy5zY2FsZShGbG9hdFNpemUoc2NhbGVYLCAtc2NhbGVZKSk7CiAgICAgICAgICAgICBjLnRy
YW5zbGF0ZShJbnRQb2ludCgtc291cmNlUmVjdGFuZ2xlLmxvY2F0aW9uKCkueCgpLCBzb3VyY2VS
ZWN0YW5nbGUubG9jYXRpb24oKS55KCkgLSBvdXRwdXRTaXplLmhlaWdodCgpKSk7CiAgICAgICAg
IH0gZWxzZSB7CkBAIC01OTIsNyArNTg5LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJv
bWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAg
IGF1dG8gaW1hZ2VGb3JSZW5kZXIgPSBleGlzdGluZ0ltYWdlQml0bWFwLT5idWZmZXIoKS0+Y29w
eUltYWdlKCk7CiAKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBvdXRwdXRT
aXplKTsKLSAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZUZvclJlbmRl
ciwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KSwg
aW1hZ2VPcmllbnRhdGlvbkZvck9yaWVudGF0aW9uKG9wdGlvbnMuaW1hZ2VPcmllbnRhdGlvbikg
fSk7CisgICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIs
IGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJw
b2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSksIG9w
dGlvbnMucmVzb2x2ZWRJbWFnZU9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb246Ok5vbmUpIH0p
OwogCiAgICAgLy8gNS4gU2V0IHRoZSBvcmlnaW4tY2xlYW4gZmxhZyBvZiB0aGUgSW1hZ2VCaXRt
YXAgb2JqZWN0J3MgYml0bWFwIHRvIHRoZSBzYW1lCiAgICAgLy8gICAgdmFsdWUgYXMgdGhlIG9y
aWdpbi1jbGVhbiBmbGFnIG9mIHRoZSBiaXRtYXAgb2YgdGhlIGltYWdlIGFyZ3VtZW50LgpAQCAt
NzcyLDcgKzc2OSw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4CiAgICAgfQogCiAgICAgRmxv
YXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7Ci0gICAgYml0bWFwRGF0
YS0+Y29udGV4dCgpLmRyYXdJbWFnZShpbWFnZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxp
dHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KSwgaW1hZ2VPcmllbnRhdGlvbkZvck9yaWVudGF0aW9u
KG9wdGlvbnMuaW1hZ2VPcmllbnRhdGlvbikgfSk7CisgICAgYml0bWFwRGF0YS0+Y29udGV4dCgp
LmRyYXdJbWFnZShpbWFnZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJu
VmFsdWUoKSwgeyBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5y
ZXNpemVRdWFsaXR5KSwgb3B0aW9ucy5yZXNvbHZlZEltYWdlT3JpZW50YXRpb24oSW1hZ2VPcmll
bnRhdGlvbjo6Tm9uZSkgfSk7CiAKICAgICBPcHRpb25TZXQ8U2VyaWFsaXphdGlvblN0YXRlPiBz
ZXJpYWxpemF0aW9uU3RhdGUgPSBTZXJpYWxpemF0aW9uU3RhdGU6Ok9yaWdpbkNsZWFuOwogICAg
IGlmIChhbHBoYVByZW11bHRpcGxpY2F0aW9uRm9yUHJlbXVsdGlwbHlBbHBoYShvcHRpb25zLnBy
ZW11bHRpcGx5QWxwaGEpID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQp
CkBAIC04MTksNyArODE2LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIC8vIElmIG5v
IGNyb3BwaW5nLCByZXNpemluZywgZmxpcHBpbmcsIGV0Yy4gYXJlIG5lZWRlZCwgdGhlbiBzaW1w
bHkgdXNlIHRoZQogICAgIC8vIHJlc3VsdGluZyBJbWFnZUJ1ZmZlciBkaXJlY3RseS4KICAgICBh
dXRvIGFscGhhUHJlbXVsdGlwbGljYXRpb24gPSBhbHBoYVByZW11bHRpcGxpY2F0aW9uRm9yUHJl
bXVsdGlwbHlBbHBoYShvcHRpb25zLnByZW11bHRpcGx5QWxwaGEpOwotICAgIGlmIChzb3VyY2VS
ZWN0YW5nbGUucmV0dXJuVmFsdWUoKS5sb2NhdGlvbigpLmlzWmVybygpICYmIHNvdXJjZVJlY3Rh
bmdsZS5yZXR1cm5WYWx1ZSgpLnNpemUoKSA9PSBpbWFnZURhdGEtPnNpemUoKSAmJiBzb3VyY2VS
ZWN0YW5nbGUucmV0dXJuVmFsdWUoKS5zaXplKCkgPT0gb3V0cHV0U2l6ZSAmJiBvcHRpb25zLmlt
YWdlT3JpZW50YXRpb24gPT0gSW1hZ2VCaXRtYXBPcHRpb25zOjpPcmllbnRhdGlvbjo6Tm9uZSkg
eworICAgIGlmIChzb3VyY2VSZWN0YW5nbGUucmV0dXJuVmFsdWUoKS5sb2NhdGlvbigpLmlzWmVy
bygpICYmIHNvdXJjZVJlY3RhbmdsZS5yZXR1cm5WYWx1ZSgpLnNpemUoKSA9PSBpbWFnZURhdGEt
PnNpemUoKSAmJiBzb3VyY2VSZWN0YW5nbGUucmV0dXJuVmFsdWUoKS5zaXplKCkgPT0gb3V0cHV0
U2l6ZSAmJiBvcHRpb25zLm9yaWVudGF0aW9uID09IEltYWdlQml0bWFwT3B0aW9uczo6T3JpZW50
YXRpb246Ok5vbmUpIHsKICAgICAgICAgYml0bWFwRGF0YS0+cHV0UGl4ZWxCdWZmZXIoaW1hZ2VE
YXRhLT5waXhlbEJ1ZmZlcigpLCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCks
IHsgfSwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CiAgICAgICAgIAogICAgICAgICBhdXRvIGlt
YWdlQml0bWFwID0gY3JlYXRlKEltYWdlQml0bWFwQmFja2luZyhXVEZNb3ZlKGJpdG1hcERhdGEp
KSk7CkBAIC04MzcsNyArODM0LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIH0KICAg
ICB0ZW1wQml0bWFwRGF0YS0+cHV0UGl4ZWxCdWZmZXIoaW1hZ2VEYXRhLT5waXhlbEJ1ZmZlcigp
LCBJbnRSZWN0KDAsIDAsIGltYWdlRGF0YS0+d2lkdGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSks
IHsgfSwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZs
b2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7Ci0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJ
bWFnZUJ1ZmZlcigqdGVtcEJpdG1hcERhdGEsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVs
ZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5
KG9wdGlvbnMucmVzaXplUXVhbGl0eSksIGltYWdlT3JpZW50YXRpb25Gb3JPcmllbnRhdGlvbihv
cHRpb25zLmltYWdlT3JpZW50YXRpb24pIH0pOworICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5k
cmF3SW1hZ2VCdWZmZXIoKnRlbXBCaXRtYXBEYXRhLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xl
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB7IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVh
bGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpLCBvcHRpb25zLnJlc29sdmVkSW1hZ2VPcmllbnRh
dGlvbihJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB9KTsKIAogICAgIC8vIDYuNC4xLiBSZXNvbHZl
IHAgd2l0aCBJbWFnZUJpdG1hcC4KICAgICBhdXRvIGltYWdlQml0bWFwID0gY3JlYXRlKHsgV1RG
TW92ZShiaXRtYXBEYXRhKSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VCaXRtYXBPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwT3B0aW9u
cy5oCmluZGV4IDljNDY2ODc2NDJkMGQ3YjI1ZWUxOWVkZDc1ZGViNmJhNzZjOTIwYTkuLjMwYzc1
OTMyY2M1YTVjYmE0NTIwMDU1ZmZlOGZmOTQxYWIzYjVkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXBPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZUJpdG1hcE9wdGlvbnMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlIDxvcHRpb25hbD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMTIgKzM2LDE3IEBAIHN0cnVjdCBJbWFnZUJpdG1h
cE9wdGlvbnMgewogICAgIGVudW0gY2xhc3MgQ29sb3JTcGFjZUNvbnZlcnNpb24geyBOb25lLCBE
ZWZhdWx0IH07CiAgICAgZW51bSBjbGFzcyBSZXNpemVRdWFsaXR5IHsgUGl4ZWxhdGVkLCBMb3cs
IE1lZGl1bSwgSGlnaCB9OwogCi0gICAgT3JpZW50YXRpb24gaW1hZ2VPcmllbnRhdGlvbiB7IE9y
aWVudGF0aW9uOjpOb25lIH07CisgICAgT3JpZW50YXRpb24gb3JpZW50YXRpb24geyBPcmllbnRh
dGlvbjo6Tm9uZSB9OwogICAgIFByZW11bHRpcGx5QWxwaGEgcHJlbXVsdGlwbHlBbHBoYSB7IFBy
ZW11bHRpcGx5QWxwaGE6OkRlZmF1bHQgfTsKICAgICBDb2xvclNwYWNlQ29udmVyc2lvbiBjb2xv
clNwYWNlQ29udmVyc2lvbiB7IENvbG9yU3BhY2VDb252ZXJzaW9uOjpEZWZhdWx0IH07CiAgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcmVzaXplV2lkdGg7CiAgICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gcmVzaXplSGVpZ2h0OwogICAgIFJlc2l6ZVF1YWxpdHkgcmVzaXplUXVhbGl0eSB7
IFJlc2l6ZVF1YWxpdHk6OkxvdyB9OworCisgICAgSW1hZ2VPcmllbnRhdGlvbiByZXNvbHZlZElt
YWdlT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBpbWFnZU9yaWVudGF0aW9uKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG9yaWVudGF0aW9uID09IE9yaWVudGF0aW9uOjpGbGlwWSA/
IGltYWdlT3JpZW50YXRpb24ud2l0aEZsaXBwZWRZKCkgOiBpbWFnZU9yaWVudGF0aW9uOworICAg
IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXBP
cHRpb25zLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXBPcHRpb25zLmlkbApp
bmRleCBhNDgyYmE3NDA5MDc1MjBlM2YyYmYyZTI3MDdkOGZkZDY5Y2FjNWMwLi4xMjQzMzUyY2Vh
NTg1ZGNlNWMwNmU4ZjQxMDEyZjFjZjM0YWUyZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlQml0bWFwT3B0aW9ucy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZUJpdG1hcE9wdGlvbnMuaWRsCkBAIC0yOSw3ICsyOSw3IEBAIGVudW0gQ29sb3JTcGFjZUNv
bnZlcnNpb24geyAibm9uZSIsICJkZWZhdWx0IiB9OwogZW51bSBSZXNpemVRdWFsaXR5IHsgInBp
eGVsYXRlZCIsICJsb3ciLCAibWVkaXVtIiwgImhpZ2giIH07CiAKIGRpY3Rpb25hcnkgSW1hZ2VC
aXRtYXBPcHRpb25zIHsKLSAgICBJbWFnZU9yaWVudGF0aW9uIGltYWdlT3JpZW50YXRpb24gPSAi
bm9uZSI7CisgICAgW0ltcGxlbWVudGVkQXM9b3JpZW50YXRpb25dIEltYWdlT3JpZW50YXRpb24g
aW1hZ2VPcmllbnRhdGlvbiA9ICJub25lIjsKICAgICBQcmVtdWx0aXBseUFscGhhIHByZW11bHRp
cGx5QWxwaGEgPSAiZGVmYXVsdCI7CiAgICAgQ29sb3JTcGFjZUNvbnZlcnNpb24gY29sb3JTcGFj
ZUNvbnZlcnNpb24gPSAiZGVmYXVsdCI7CiAgICAgW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9u
ZyByZXNpemVXaWR0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlT3JpZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlT3JpZW50YXRpb24uaAppbmRleCA1ZGUyNzFlNTIzNTI3NjJhZTFhM2MzMzhhNTM1NTcw
ZGU5Y2Q1OWM0Li5hOWY5ODliNTJmZWI3MjA3YjYxNGQ2YWMzNmE4ODNkNjQ2NTEzNWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlv
bi5oCkBAIC0xMDgsNiArMTA4LDM2IEBAIHN0cnVjdCBJbWFnZU9yaWVudGF0aW9uIHsKICAgICAg
ICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwogICAgIH0KIAorICAgIEltYWdlT3JpZW50YXRp
b24gd2l0aEZsaXBwZWRZKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkRVhJ
Rk9yaWVudGF0aW9uKG1fb3JpZW50YXRpb24pKTsKKworICAgICAgICBzd2l0Y2ggKG1fb3JpZW50
YXRpb24pIHsKKyAgICAgICAgY2FzZSBGcm9tSW1hZ2U6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBOb25lOworICAgICAgICBjYXNlIE9yaWdp
blRvcExlZnQ6CisgICAgICAgICAgICByZXR1cm4gT3JpZ2luQm90dG9tTGVmdDsKKyAgICAgICAg
Y2FzZSBPcmlnaW5Ub3BSaWdodDoKKyAgICAgICAgICAgIHJldHVybiBPcmlnaW5Cb3R0b21SaWdo
dDsKKyAgICAgICAgY2FzZSBPcmlnaW5Cb3R0b21SaWdodDoKKyAgICAgICAgICAgIHJldHVybiBP
cmlnaW5Ub3BSaWdodDsKKyAgICAgICAgY2FzZSBPcmlnaW5Cb3R0b21MZWZ0OgorICAgICAgICAg
ICAgcmV0dXJuIE9yaWdpblRvcExlZnQ7CisgICAgICAgIGNhc2UgT3JpZ2luTGVmdFRvcDoKKyAg
ICAgICAgICAgIHJldHVybiBPcmlnaW5MZWZ0Qm90dG9tOworICAgICAgICBjYXNlIE9yaWdpblJp
Z2h0VG9wOgorICAgICAgICAgICAgcmV0dXJuIE9yaWdpblJpZ2h0Qm90dG9tOworICAgICAgICBj
YXNlIE9yaWdpblJpZ2h0Qm90dG9tOgorICAgICAgICAgICAgcmV0dXJuIE9yaWdpblJpZ2h0VG9w
OworICAgICAgICBjYXNlIE9yaWdpbkxlZnRCb3R0b206CisgICAgICAgICAgICByZXR1cm4gT3Jp
Z2luTGVmdFRvcDsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gTm9uZTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0
IE9yaWVudGF0aW9uIEVYSUZGaXJzdCA9IE9yaWdpblRvcExlZnQ7CiAgICAgc3RhdGljIGNvbnN0
IE9yaWVudGF0aW9uIEVYSUZMYXN0ID0gT3JpZ2luTGVmdEJvdHRvbTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCmluZGV4IGRiM2RkZGQ5Y2Y4MWQ4YmI0ODNiNTcyN2NkZmZiNWM4YWM4MWFi
OWIuLjc5ZWVhMGRhOGI0YjQ2ZTc5MWNiYzBjNzVlZjMzZjdmYTRhYjM0NzIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEwLTE3ICBDYW1lcm9u
IE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBjcmVhdGVJbWFn
ZUJpdG1hcCgpIHRha2UgRVhJRiBvcmllbnRhdGlvbiBpbnRvIGFjY291bnQgY29ycmVjdGx5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwNjMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNzUzOTU2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE15
bGVzIE1heGZpZWxkIGFuZCBTYWlkIEFib3UtSGFsbGF3YS4KKworICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L21hbnVhbC9pbWFnZWJpdG1hcC9jcmVhdGVJ
bWFnZUJpdG1hcC1leGlmLW9yaWVudGF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvbWFudWFsL2ltYWdlYml0
bWFwL2NyZWF0ZUltYWdlQml0bWFwLWV4aWYtb3JpZW50YXRpb24uaHRtbDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvbWFudWFsL2ltYWdl
Yml0bWFwL3Jlc291cmNlcy9zcXVhcmVzLmpwZzogQWRkZWQuCisKIDIwMjEtMTAtMDEgIENhbWVy
b24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBFbnN1cmUgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmRyYXdJbWFnZSh2aWRlbykgdXNlcyB0aGUgcmlnaHQgY29sb3Ig
c3BhY2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9tYW51YWwvaW1hZ2ViaXRtYXAvY3JlYXRlSW1hZ2VC
aXRtYXAtZXhpZi1vcmllbnRhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvbWFudWFsL2ltYWdl
Yml0bWFwL2NyZWF0ZUltYWdlQml0bWFwLWV4aWYtb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUyZTkzZmE4OWE1MzFjMTM5NTExNTBlMDUxMWVjMmMwNTJmYzNiYTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvbWFudWFsL2ltYWdlYml0bWFwL2NyZWF0ZUltYWdlQml0bWFw
LWV4aWYtb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIGNy
ZWF0ZUltYWdlQml0bWFwIHdpdGggRVhJRiByb3RhdGlvbiwgaW1hZ2VPcmllbnRhdGlvbiBub25l
LCBhbmQgbm8gY3JvcHBpbmcKK1BBU1MgY3JlYXRlSW1hZ2VCaXRtYXAgd2l0aCBFWElGIHJvdGF0
aW9uLCBpbWFnZU9yaWVudGF0aW9uIGZsaXBZLCBhbmQgbm8gY3JvcHBpbmcKK1BBU1MgY3JlYXRl
SW1hZ2VCaXRtYXAgd2l0aCBFWElGIHJvdGF0aW9uLCBpbWFnZU9yaWVudGF0aW9uIG5vbmUsIGFu
ZCBjcm9wcGluZworUEFTUyBjcmVhdGVJbWFnZUJpdG1hcCB3aXRoIEVYSUYgcm90YXRpb24sIGlt
YWdlT3JpZW50YXRpb24gZmxpcFksIGFuZCBjcm9wcGluZworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQv
bWFudWFsL2ltYWdlYml0bWFwL2NyZWF0ZUltYWdlQml0bWFwLWV4aWYtb3JpZW50YXRpb24uaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52
YXMvZWxlbWVudC9tYW51YWwvaW1hZ2ViaXRtYXAvY3JlYXRlSW1hZ2VCaXRtYXAtZXhpZi1vcmll
bnRhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1ZDEzZDMzZmFlMGNkNzA2ZGQ3OWFiZWUzOTYzMDZm
MjNkYjMyNDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvbWFudWFsL2ltYWdlYml0bWFwL2Ny
ZWF0ZUltYWdlQml0bWFwLWV4aWYtb3JpZW50YXRpb24uaHRtbApAQCAtMCwwICsxLDEyMSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+VGVzdCB0aGF0IGNyZWF0ZUltYWdlQml0bWFwIGhvbm9y
cyBFWElGIG9yaWVudGF0aW9uPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzdHlsZT5jYW52YXMgeyBvdXRsaW5lOiAxcHggc29saWQg
YmxhY2s7IG1hcmdpbi1yaWdodDogMWVtOyB9PC9zdHlsZT4KKzxib2R5PgorPHNjcmlwdD4KK2Z1
bmN0aW9uIGxvYWRJbWFnZShzcmMpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24o
cmVzb2x2ZSkgeworICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpOworICAgICAgICBp
bWFnZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgKCkgPT4gcmVzb2x2ZShpbWFnZSksIHsgb25j
ZTogdHJ1ZSB9KTsKKyAgICAgICAgaW1hZ2Uuc3JjID0gc3JjOworICAgIH0pOworfQorCitmdW5j
dGlvbiBjaGVja0NvbG9ycyhjdHgsIHcsIGgsIGV4cGVjdGVkQ29sb3JzKSB7CisgICAgbGV0IGRh
dGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIHcsIGgpLmRhdGE7CisgICAgZm9yIChsZXQgW3Jv
dywgY29sLCByLCBnLCBiLCBhXSBvZiBleHBlY3RlZENvbG9ycykgeworICAgICAgICBsZXQgeCA9
IGNvbCAqIDgwICsgNDA7CisgICAgICAgIGxldCB5ID0gcm93ICogODAgKyA0MDsKKyAgICAgICAg
bGV0IGkgPSAoeCArIHkgKiB3KSAqIDQ7CisKKyAgICAgICAgbGV0IGV4cGVjdGVkID0gW3IsIGcs
IGIsIGFdOworICAgICAgICBsZXQgYWN0dWFsID0gW2RhdGFbaV0sIGRhdGFbaSArIDFdLCBkYXRh
W2kgKyAyXSwgZGF0YVtpICsgM11dOworCisgICAgICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1
YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIDEsIGBQaXhlbCB2YWx1ZSBhdCAoJHt4fSwke3l9KSAke2V4
cGVjdGVkfSA9fiAke2FjdHVhbH0uYCk7CisgICAgfQorfQorCithc3luY190ZXN0KGZ1bmN0aW9u
KHQpIHsKKyAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMi
KTsKKyAgICBjYW52YXMud2lkdGggPSAzMjA7CisgICAgY2FudmFzLmhlaWdodCA9IDE2MDsKKyAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZChjYW52YXMpOworCisgICAgY29uc3QgY3R4ID0gY2FudmFz
LmdldENvbnRleHQoIjJkIik7CisgICAgbG9hZEltYWdlKCJyZXNvdXJjZXMvc3F1YXJlcy5qcGci
KQorICAgICAgICAudGhlbigoaW1hZ2UpID0+IGNyZWF0ZUltYWdlQml0bWFwKGltYWdlKSkKKyAg
ICAgICAgLnRoZW4odC5zdGVwX2Z1bmNfZG9uZShmdW5jdGlvbihpbWFnZUJpdG1hcCkgeworICAg
ICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWFnZUJpdG1hcCwgMCwgMCk7CisgICAgICAgICAgICBj
aGVja0NvbG9ycyhjdHgsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCwgWworICAgICAgICAg
ICAgICAgIC8vIHJvdywgY29sLCByLCBnLCBiLCBhCisgICAgICAgICAgICAgICAgWzAsIDAsIDI1
NSwgMCwgMCwgMjU1XSwKKyAgICAgICAgICAgICAgICBbMCwgMSwgMCwgMjU1LCAwLCAyNTVdLAor
ICAgICAgICAgICAgICAgIFswLCAyLCAwLCAwLCAyNTUsIDI1NV0sCisgICAgICAgICAgICAgICAg
WzAsIDMsIDAsIDAsIDAsIDI1NV0sCisgICAgICAgICAgICAgICAgWzEsIDAsIDI1NSwgMTI4LCAx
MjgsIDI1NV0sCisgICAgICAgICAgICAgICAgWzEsIDEsIDEyOCwgMjU1LCAxMjgsIDI1NV0sCisg
ICAgICAgICAgICAgICAgWzEsIDIsIDEyOCwgMTI4LCAyNTUsIDI1NV0sCisgICAgICAgICAgICAg
ICAgWzEsIDMsIDEyOCwgMTI4LCAxMjgsIDI1NV0sCisgICAgICAgICAgICBdKTsKKyAgICAgICAg
fSkpOworfSwgImNyZWF0ZUltYWdlQml0bWFwIHdpdGggRVhJRiByb3RhdGlvbiwgaW1hZ2VPcmll
bnRhdGlvbiBub25lLCBhbmQgbm8gY3JvcHBpbmciKTsKKworYXN5bmNfdGVzdChmdW5jdGlvbih0
KSB7CisgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7
CisgICAgY2FudmFzLndpZHRoID0gMzIwOworICAgIGNhbnZhcy5oZWlnaHQgPSAxNjA7CisgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmQoY2FudmFzKTsKKworICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCIyZCIpOworICAgIGxvYWRJbWFnZSgicmVzb3VyY2VzL3NxdWFyZXMuanBnIikK
KyAgICAgICAgLnRoZW4oKGltYWdlKSA9PiBjcmVhdGVJbWFnZUJpdG1hcChpbWFnZSwgeyBpbWFn
ZU9yaWVudGF0aW9uOiAiZmxpcFkiIH0pKQorICAgICAgICAudGhlbih0LnN0ZXBfZnVuY19kb25l
KGZ1bmN0aW9uKGltYWdlQml0bWFwKSB7CisgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltYWdl
Qml0bWFwLCAwLCAwKTsKKyAgICAgICAgICAgIGNoZWNrQ29sb3JzKGN0eCwgY2FudmFzLndpZHRo
LCBjYW52YXMuaGVpZ2h0LCBbCisgICAgICAgICAgICAgICAgLy8gcm93LCBjb2wsIHIsIGcsIGIs
IGEKKyAgICAgICAgICAgICAgICBbMCwgMCwgMjU1LCAxMjgsIDEyOCwgMjU1XSwKKyAgICAgICAg
ICAgICAgICBbMCwgMSwgMTI4LCAyNTUsIDEyOCwgMjU1XSwKKyAgICAgICAgICAgICAgICBbMCwg
MiwgMTI4LCAxMjgsIDI1NSwgMjU1XSwKKyAgICAgICAgICAgICAgICBbMCwgMywgMTI4LCAxMjgs
IDEyOCwgMjU1XSwKKyAgICAgICAgICAgICAgICBbMSwgMCwgMjU1LCAwLCAwLCAyNTVdLAorICAg
ICAgICAgICAgICAgIFsxLCAxLCAwLCAyNTUsIDAsIDI1NV0sCisgICAgICAgICAgICAgICAgWzEs
IDIsIDAsIDAsIDI1NSwgMjU1XSwKKyAgICAgICAgICAgICAgICBbMSwgMywgMCwgMCwgMCwgMjU1
XSwKKyAgICAgICAgICAgIF0pOworICAgICAgICB9KSk7Cit9LCAiY3JlYXRlSW1hZ2VCaXRtYXAg
d2l0aCBFWElGIHJvdGF0aW9uLCBpbWFnZU9yaWVudGF0aW9uIGZsaXBZLCBhbmQgbm8gY3JvcHBp
bmciKTsKKworYXN5bmNfdGVzdChmdW5jdGlvbih0KSB7CisgICAgY29uc3QgY2FudmFzID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgY2FudmFzLndpZHRoID0gMTYwOwor
ICAgIGNhbnZhcy5oZWlnaHQgPSAxNjA7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoY2FudmFz
KTsKKworICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgIGxvYWRJ
bWFnZSgicmVzb3VyY2VzL3NxdWFyZXMuanBnIikKKyAgICAgICAgLnRoZW4oaW1hZ2UgPT4gY3Jl
YXRlSW1hZ2VCaXRtYXAoaW1hZ2UsIDgwLCAwLCAxNjAsIDE2MCkpCisgICAgICAgIC50aGVuKHQu
c3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24oaW1hZ2VCaXRtYXApIHsKKyAgICAgICAgICAgIGN0eC5k
cmF3SW1hZ2UoaW1hZ2VCaXRtYXAsIDAsIDApOworICAgICAgICAgICAgY2hlY2tDb2xvcnMoY3R4
LCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQsIFsKKyAgICAgICAgICAgICAgICAvLyByb3cs
IGNvbCwgciwgZywgYiwgYQorICAgICAgICAgICAgICAgIFswLCAwLCAwLCAyNTUsIDAsIDI1NV0s
CisgICAgICAgICAgICAgICAgWzAsIDEsIDAsIDAsIDI1NSwgMjU1XSwKKyAgICAgICAgICAgICAg
ICBbMSwgMCwgMTI4LCAyNTUsIDEyOCwgMjU1XSwKKyAgICAgICAgICAgICAgICBbMSwgMSwgMTI4
LCAxMjgsIDI1NSwgMjU1XSwKKyAgICAgICAgICAgIF0pOworICAgICAgICB9KSk7Cit9LCAiY3Jl
YXRlSW1hZ2VCaXRtYXAgd2l0aCBFWElGIHJvdGF0aW9uLCBpbWFnZU9yaWVudGF0aW9uIG5vbmUs
IGFuZCBjcm9wcGluZyIpOworCithc3luY190ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICBjb25zdCBj
YW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBjYW52YXMud2lk
dGggPSAxNjA7CisgICAgY2FudmFzLmhlaWdodCA9IDE2MDsKKyAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZChjYW52YXMpOworCisgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7
CisgICAgbG9hZEltYWdlKCJyZXNvdXJjZXMvc3F1YXJlcy5qcGciKQorICAgICAgICAudGhlbihp
bWFnZSA9PiBjcmVhdGVJbWFnZUJpdG1hcChpbWFnZSwgODAsIDAsIDE2MCwgMTYwLCB7IGltYWdl
T3JpZW50YXRpb246ICJmbGlwWSIgfSkpCisgICAgICAgIC50aGVuKHQuc3RlcF9mdW5jX2RvbmUo
ZnVuY3Rpb24oaW1hZ2VCaXRtYXApIHsKKyAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1hZ2VC
aXRtYXAsIDAsIDApOworICAgICAgICAgICAgY2hlY2tDb2xvcnMoY3R4LCBjYW52YXMud2lkdGgs
IGNhbnZhcy5oZWlnaHQsIFsKKyAgICAgICAgICAgICAgICAvLyByb3csIGNvbCwgciwgZywgYiwg
YQorICAgICAgICAgICAgICAgIFswLCAwLCAxMjgsIDI1NSwgMTI4LCAyNTVdLAorICAgICAgICAg
ICAgICAgIFswLCAxLCAxMjgsIDEyOCwgMjU1LCAyNTVdLAorICAgICAgICAgICAgICAgIFsxLCAw
LCAwLCAyNTUsIDAsIDI1NV0sCisgICAgICAgICAgICAgICAgWzEsIDEsIDAsIDAsIDI1NSwgMjU1
XSwKKyAgICAgICAgICAgIF0pOworICAgICAgICB9KSk7Cit9LCAiY3JlYXRlSW1hZ2VCaXRtYXAg
d2l0aCBFWElGIHJvdGF0aW9uLCBpbWFnZU9yaWVudGF0aW9uIGZsaXBZLCBhbmQgY3JvcHBpbmci
KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L21hbnVhbC9pbWFnZWJpdG1hcC9yZXNv
dXJjZXMvc3F1YXJlcy5qcGcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvbWFudWFsL2ltYWdlYml0bWFwL3Jlc291cmNlcy9z
cXVhcmVzLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTk3NzYwYTExMWUwN2M1NDQxOWQxOTkzMTMwYWExZmVl
NTk4MmU4CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMjI3CnpjbWRVcktTJT5INnZrZ0pjVn17
VVpGNmwhczMwemFjMnotZnUlSCQjUjhYcGo7LVZsYk5MQHM2YSZ2TiR4KEtCcAp6Nj9KeTNQe0Z5
VmkrPXxURT4xZVElOTsyTXxLUX1MZWomTFotK2t9cDUlMUV3MUNkRyZCIUxoQkF7VGc3bkNlQFoK
em4qbTZ0QXIxZngzPSMkXmlHVjRPNyNNRjFrUnRXKEpXUUpYak8/TEJLM0hhenIyRGJHOHxWUzVE
WEVpNj44N3M0CnpPdyV3cXZuPFh5eDE1azsqK0hCMGZFeCZnZ204dUJnZDxAUWt0fGRicUFJRCpX
VENMUkUhYGk9RH0mMk8wdCVHNAp6cHQqIykjNTtqSGA1ZnYmSzhaNiF7KW1kTnRfKDt3cm8hfH4w
Vyp5bnVCaSg1ZCZNPDRsKnJxdDMqQ0BROzRSdzAKejhVb01ZN3ZnKDl7R358I0Y+fjMwYjZNbExg
Y3VUbnp7cF8mdjFMQSFeKWNOdmRXSSR4X2xKJVVObjM4QjdnNV9QCnpDWjdAWV5OfElDXyotcTRA
P0U3RGY1eDUzPDk8WV8zXnJfK2shTFIhaGtkdG9iQTkmLUlvNXN+VHw7IzRzfUNoYQpwYjdSP1BN
NUxWXnQ2NDx5ZHlTaT50QipKWTFudyY1MSFTazt4T05RakFHO3klPkpAT252dXBxVwoKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>