<?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>233545</bug_id>
          
          <creation_ts>2021-11-28 17:09:24 -0800</creation_ts>
          <short_desc>Support Animated JPEG-XL images</short_desc>
          <delta_ts>2021-12-07 16:23:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>208235</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</reporter>
          <assigned_to name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</assigned_to>
          <cc>don.olmstead</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1818104</commentid>
    <comment_count>0</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-11-28 17:09:24 -0800</bug_when>
    <thetext>JPEG-XL can have animations but currently the decoder decodes only the first frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818649</commentid>
    <comment_count>1</comment_count>
      <attachid>445396</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-11-30 01:38:33 -0800</bug_when>
    <thetext>Created attachment 445396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818651</commentid>
    <comment_count>2</comment_count>
      <attachid>445397</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-11-30 01:40:59 -0800</bug_when>
    <thetext>Created attachment 445397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820509</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-05 17:10:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/86077143&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820758</commentid>
    <comment_count>4</comment_count>
      <attachid>445397</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-12-06 14:02:53 -0800</bug_when>
    <thetext>Comment on attachment 445397
Patch

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

&gt; LayoutTests/platform/wincairo/TestExpectations:278
&gt; +fast/images/animated-jpegxl-loop-count.html [ Skip ]

Since the test is skipped globally, where is it un-skipped? I expect it see marked [Pass] here.

I see the comment &quot;# JPEG XL is disabled until WebKitRequirements is released with libjxl&quot; now. But what is the point in adding the test without enabling libjxl? Can&apos;t we just have a feature flag or a internal flag to enable it for layout tests only?

&gt; Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:94
&gt; +        if (!i-&gt;isInvalid() &amp;&amp; !i-&gt;isPartial()) // We don&apos;t clear the frame we&apos;re currently decoding.

This condition and the comment are confusing. Why do you want to keep the isInvalid() frame? And what does &quot;we&apos;re currently decoding&quot; mean? Do we run the decoding on a separate thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820978</commentid>
    <comment_count>5</comment_count>
      <attachid>446154</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-12-07 04:17:49 -0800</bug_when>
    <thetext>Created attachment 446154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820982</commentid>
    <comment_count>6</comment_count>
      <attachid>446157</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-12-07 04:28:13 -0800</bug_when>
    <thetext>Created attachment 446157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820987</commentid>
    <comment_count>7</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-12-07 04:38:53 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #4)
Thank you for the review!

&gt; Since the test is skipped globally, where is it un-skipped? I expect it see
&gt; marked [Pass] here.
&gt; 
&gt; I see the comment &quot;# JPEG XL is disabled until WebKitRequirements is
&gt; released with libjxl&quot; now. But what is the point in adding the test without
&gt; enabling libjxl? Can&apos;t we just have a feature flag or a internal flag to
&gt; enable it for layout tests only?

I&apos;ve marked the wincairo expectations as [Pass]. Also I changed the comment to simply &quot;JPEG-XL tests&quot; because now we have libjxl in the latest WebKitRequirements.

&gt; 
&gt; &gt; Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:94
&gt; &gt; +        if (!i-&gt;isInvalid() &amp;&amp; !i-&gt;isPartial()) // We don&apos;t clear the frame we&apos;re currently decoding.
&gt; 
&gt; This condition and the comment are confusing. Why do you want to keep the
&gt; isInvalid() frame? And what does &quot;we&apos;re currently decoding&quot; mean? Do we run
&gt; the decoding on a separate thread?

I fixed it to clear invalid frames in case where it has a valid backing store. 

&quot;we&apos;re currently decoding&quot; means that the current frame decoding is interrupted due to input starvation. I clarified the relation between the isPartial() and   &quot;currently decoding&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821222</commentid>
    <comment_count>8</comment_count>
      <attachid>446157</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-07 14:28:14 -0800</bug_when>
    <thetext>Comment on attachment 446157
Patch

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

r=me with nit

&gt; Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:154
&gt; +        if (query == Query::FrameCount)
&gt; +            return false; // Continue counting frames.
&gt; +        return true; // In this case the decoder has reached the EOF and needs rewind.

Just do

return query != Query::FrameCount

and add any behavior documentation above it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821241</commentid>
    <comment_count>9</comment_count>
      <attachid>446244</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-12-07 15:24:39 -0800</bug_when>
    <thetext>Created attachment 446244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821245</commentid>
    <comment_count>10</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2021-12-07 15:28:41 -0800</bug_when>
    <thetext>(In reply to Don Olmstead from comment #8)
&gt; Just do
&gt; 
&gt; return query != Query::FrameCount
&gt; 
&gt; and add any behavior documentation above it.

Thank you！ I addressed the point.
(Also updated the comment in clearFrameBufferCache())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821269</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-07 16:23:51 -0800</bug_when>
    <thetext>Committed r286628 (244941@main): &lt;https://commits.webkit.org/244941@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446244.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445396</attachid>
            <date>2021-11-30 01:38:33 -0800</date>
            <delta_ts>2021-11-30 01:40:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>24539</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3ODMxYTE1YzQ3OGYuLmM4OTNkYWJiZmM3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDIxLTExLTMwICBZb3NoaWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29u
eS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBBbmltYXRlZCBKUEVHLVhMIGltYWdlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTQ1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgZm9yIGFu
aW1hdGVkIEpQRUcgWEwsIGJhc2VkIG9uIGFuaW1hdGVkLWdpZi1sb29wLWNvdW50LgorCisgICAg
ICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9hbmltYXRlZC1q
cGVneGwtbG9vcC1jb3VudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2lt
YWdlcy9hbmltYXRlZC1qcGVneGwtbG9vcC1jb3VudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LTEuanhs
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdy
ZWVuLWJsdWUtcmVwZWF0LTIuanhsOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9yZXNv
dXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LWluZmluaXRlLmp4bDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0x
MS0xOCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBm
b3Igb25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIGV2ZW50IGhhbmRsZXIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDk0NmM5NTJkYmYyZi4uZDUyMjk2M2M4N2I4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTEzNSw2ICsxMzUsNyBAQCBodHRwL3Rlc3RzL2ltYWdlcy9hdmlmLXBhcnRpYWwtbG9hZC1jcmFz
aC5odG1sIFsgU2tpcCBdCiAjIFRoZXNlIHRlc3RzIGRvbid0IGhhdmUgdG8gYmUgcGxhdGZvcm0t
c3BlY2lmaWMsIGJ1dCB0aGV5IGFyZSBvbmx5IGltcGxlbWVudGVkIG9uIFdpbkNhaXJvIG5vdy4K
IGZhc3QvaW1hZ2VzL2pwZWd4bC1pbWFnZS1kZWNvZGluZy5odG1sIFsgU2tpcCBdCiBmYXN0L2lt
YWdlcy9qcGVneGwtYXMtaW1hZ2UuaHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvYW5pbWF0ZWQt
anBlZ3hsLWxvb3AtY291bnQuaHRtbCBbIFNraXAgXQogCiAjIE9ubHkgYXBwbGljYWJsZSBvbiBw
bGF0Zm9ybXMgd2l0aCBkYXJrIG1vZGUgc3VwcG9ydAogY3NzLWRhcmstbW9kZSBbIFNraXAgXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtanBlZ3hsLWxvb3At
Y291bnQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWpw
ZWd4bC1sb29wLWNvdW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5iZjkyMTQxNjg2ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1qcGVneGwtbG9vcC1jb3VudC1leHBlY3RlZC5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c3R5bGU+CisgICAgLmJv
eCB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8
ZGl2PgorICAgICAgICA8cD5GcmFtZXMgb2YgYSAzLWZyYW1lIGFuaW1hdGVkIGltYWdlIHdpdGgg
bWlzc2luZyBsb29wQ291bnQsIChyZXBldGl0aW9uQ291bnQgPSAxKTo8L3A+CisgICAgICAgIDxk
aXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsiPjwvZGl2PgorICAg
ICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwv
ZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBi
bHVlOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQt
Y29sb3I6IGJsdWU7Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgICA8cD5G
cmFtZXMgb2YgYSAzLWZyYW1lIGFuaW1hdGVkIGltYWdlIHdpdGggbG9vcENvdW50ID0gMSwgKHJl
cGV0aXRpb25Db3VudCA9IDIpOjwvcD4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0i
YmFja2dyb3VuZC1jb2xvcjogcmVkOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIg
c3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xh
c3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4KKyAgICAgICAg
PGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkOyI+PC9kaXY+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+
PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
IGJsdWU7Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3Vu
ZC1jb2xvcjogYmx1ZTsiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICAgIDxw
PkZyYW1lcyBvZiBhIDMtZnJhbWUgYW5pbWF0ZWQgaW1hZ2Ugd2l0aCBsb29wQ291bnQgPSAwLCAo
cmVwZXRpdGlvbkNvdW50ID0gaW5maW5pdGUpOjwvcD4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94
IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xh
c3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgICAg
IDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4K
KyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkOyI+
PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
IGdyZWVuOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91
bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0i
YmFja2dyb3VuZC1jb2xvcjogcmVkOyI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1qcGVneGwt
bG9vcC1jb3VudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtanBlZ3hs
LWxvb3AtY291bnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjIxNTJlNjVlMTc3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2Vz
L2FuaW1hdGVkLWpwZWd4bC1sb29wLWNvdW50Lmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KKyAgICBjYW52YXMgeworICAgICAgICB3aWR0aDog
MTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvYW5pbWF0ZWQtaW1hZ2UtbG9vcC1jb3VudC5qcyI+PC9zY3JpcHQ+Cis8
Ym9keT4KKyAgICA8ZGl2PgorICAgICAgICA8cD5GcmFtZXMgb2YgYSAzLWZyYW1lIGFuaW1hdGVk
IGltYWdlIHdpdGggbWlzc2luZyBsb29wQ291bnQsIChyZXBldGl0aW9uQ291bnQgPSAxKTo8L3A+
CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcy0xIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZh
cyBpZD0iY2FudmFzLTIiPjwvY2FudmFzPgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMtMyI+
PC9jYW52YXM+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcy00Ij48L2NhbnZhcz4KKyAgICA8
L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgICA8cD5GcmFtZXMgb2YgYSAzLWZyYW1lIGFuaW1hdGVk
IGltYWdlIHdpdGggbG9vcENvdW50ID0gMSwgKHJlcGV0aXRpb25Db3VudCA9IDIpOjwvcD4KKyAg
ICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLWEiPjwvY2FudmFzPgorICAgICAgICA8Y2FudmFzIGlk
PSJjYW52YXMtYiI+PC9jYW52YXM+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcy1jIj48L2Nh
bnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLWQiPjwvY2FudmFzPgorICAgICAgICA8
Y2FudmFzIGlkPSJjYW52YXMtZSI+PC9jYW52YXM+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZh
cy1mIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLWciPjwvY2FudmFzPgor
ICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICAgIDxwPkZyYW1lcyBvZiBhIDMtZnJhbWUgYW5p
bWF0ZWQgaW1hZ2Ugd2l0aCBsb29wQ291bnQgPSAwLCAocmVwZXRpdGlvbkNvdW50ID0gaW5maW5p
dGUpOjwvcD4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLUEiPjwvY2FudmFzPgorICAgICAg
ICA8Y2FudmFzIGlkPSJjYW52YXMtQiI+PC9jYW52YXM+CisgICAgICAgIDxjYW52YXMgaWQ9ImNh
bnZhcy1DIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLUQiPjwvY2FudmFz
PgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMtRSI+PC9jYW52YXM+CisgICAgICAgIDxjYW52
YXMgaWQ9ImNhbnZhcy1GIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLUci
PjwvY2FudmFzPgorICAgIDwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAgIChmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIHZhciBpbWFnZXMgPSBbCisgICAgICAgICAgICAgICAgeyBzcmM6ICJy
ZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LTEuanhsIiwgY2FudmFzSWQ6
ICcxJywgZnJhbWVDb3VudDogNCB9LAorICAgICAgICAgICAgICAgIHsgc3JjOiAicmVzb3VyY2Vz
L2FuaW1hdGVkLXJlZC1ncmVlbi1ibHVlLXJlcGVhdC0yLmp4bCIsIGNhbnZhc0lkOiAnYScsIGZy
YW1lQ291bnQ6IDcgfSwKKyAgICAgICAgICAgICAgICB7IHNyYzogInJlc291cmNlcy9hbmltYXRl
ZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtaW5maW5pdGUuanhsIiwgY2FudmFzSWQ6ICdBJywgZnJh
bWVDb3VudDogNyB9CisgICAgICAgICAgICBdOworICAgICAgICAgICAgcnVuVGVzdChpbWFnZXMp
OworICAgICAgICB9KSgpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVkLXJlZC1ncmVl
bi1ibHVlLXJlcGVhdC0xLmp4bCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9h
bmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtMS5qeGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIyMDMwOWMw
YzU3YjJjZTRlN2ZkM2E2ODMxODYxNmU3ZDg3OTA5NwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwg
OTkKemNtZXkqQl9ac25BdDIxYiFvfFZCa2l5X0MoSmpod01MT0FfT2thU0pMNGglN3hqbG5wZVl9
a25MX3E/WWc4V2hACmkxX25sbF8mQFNNY0BfcEF1eWpOMHp5Q352M14hKCZGPSNPVFZnPi11TyU9
JWkKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtMi5qeGwgYi9M
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUt
cmVwZWF0LTIuanhsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1NzU3M2UwYjVlZDZjMGEwY2Y0ZGMyMjYxOWJjZDlh
MmM5ODFkNDYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDk5CnpjbWV5KkJfWnRTQXQyMWIhb3xW
QmtpeV9DKEpqaHdNTE9BX09rYVNKTDRoJTd4amxucGVZfWtuTF9xP1lnOFdoQAppMV9ubGxfJkBT
TWNAX3BBdXlqTjB6eUN+djNeISgmRj0jT1RWZz4tKTRIZkFDCgpsaXRlcmFsIDAKSGNtVj9kMDAw
MDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0
ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LWluZmluaXRlLmp4bCBiL0xheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtaW5maW5pdGUu
anhsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJiMTEwNGQ5NDU4ZmMxMDY0OWM2OTAxNDBiNjk3MzQ1ZTFkMDFkZTUK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDk5CnpjbWV5KkJfWnN7a2leOG4hb3xWQmtpeV9DKEpq
aHdNTE9BX09rYVNKTDRoJTd4amxucGVZfWtuTF9xP1lnOFdoQAppMV9ubGxfJkBTTWNAX3BBdXlq
TjB6eUN+djNeISgmRj0jT1RWZz4tJU9CTGIoCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxNDFm
Yjk5NzNkZTcuLjAyZDBlNmE0NzcxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5j
YWlyby9UZXN0RXhwZWN0YXRpb25zCkBAIC0yNzUsNiArMjc1LDcgQEAgZmFzdC9sYXllcnMvcHJl
dmVudC1oaXQtdGVzdC1kdXJpbmctbGF5b3V0Lmh0bWwgWyBTa2lwIF0KICMgSlBFRyBYTCBpcyBk
aXNhYmxlZCB1bnRpbCBXZWJLaXRSZXF1aXJlbWVudHMgaXMgcmVsZWFzZWQgd2l0aCBsaWJqeGwK
IGZhc3QvaW1hZ2VzL2pwZWd4bC1hcy1pbWFnZS5odG1sIFsgU2tpcCBdCiBmYXN0L2ltYWdlcy9q
cGVneGwtaW1hZ2UtZGVjb2RpbmcuaHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvYW5pbWF0ZWQt
anBlZ3hsLWxvb3AtY291bnQuaHRtbCBbIFNraXAgXQogCiAjIERhdGFUcmFuc2Zlckl0ZW1zIGlz
IG5vdCB5ZXQgaW1wbGVtZW50ZWQKIGZhc3QvZXZlbnRzL2NsaXBib2FyZC1kYXRhVHJhbnNmZXJJ
dGVtTGlzdC5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg2OWUzODFlZmM2Li5lMDdkZDNk
NWE0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0xMS0zMCAgWW9zaGlha2kg
Sml0c3VrYXdhICA8eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgorCisgICAgICAgIFN1cHBv
cnQgQW5pbWF0ZWQgSlBFRy1YTCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCByZWxldmFudCBBUEksIHN1Y2ggYXMgZnJhbWVD
b3VudCgpIGFuZCBzdXBwb3J0IGEgcG9zaXRpdmUKKyAgICAgICAgZnJhbWUgaW5kZXggZm9yIGZy
YW1lQnVmZmVyQXRJbmRleCgpLgorCisgICAgICAgIEludHJvZHVjZSBhIHF1ZXJ5IHRvIGNvdW50
IGZyYW1lcyBiZWNhdXNlIEpQRUcgWEwgY29kZSBzdHJlYW0gaXRzZWxmIGRvZXNuJ3QgaGF2ZSBm
cmFtZQorICAgICAgICBjb3VudCBtZXRhZGF0YSBhbmQgd2UgbmVlZCB0byBzY2FuIHRoZSBjb2Rl
IHN0cmVhbSB0byB0aGUgbGFzdCBmcmFtZS4KKworICAgICAgICBBbHNvIGludHJvZHVjZSB0aGUg
U2l6ZSBxdWVyeSBpbnN0ZWFkIG9mIHRoZSBvbmx5U2l6ZSBwYXJhbWV0ZXIgb2YgdGhlIGRlY29k
ZSgpIGZ1bmN0aW9uLgorCisgICAgICAgIFdpdGggdGhlIERlY29kZUltYWdlIHF1ZXJ5LCB0aGUg
ZGVjb2RlciBkZWNvZGVzIGEgc2luZ2xlIGZyYW1lLiBUbworICAgICAgICBzcGVjaWZ5IHdoaWNo
IGZyYW1lIHRvIGRlY29kZSwgd2UgbWFrZSB1c2Ugb2YgdGhlIEp4bERlY29kZXJSZXdpbmQoKQor
ICAgICAgICBhbmQgSnhsRGVjb2RlclNraXBGcmFtZXMoKSBmdW5jdGlvbnMgb2YgbGlianhsLgor
CisgICAgICAgIFRvIG9taXQgcmV3aW5kIGFuZCBza2lwIGFzIG11Y2ggYXMgcG9zc2libGUsIHdl
IHJlY29yZCB0aGUgcXVlcnkgdG8KKyAgICAgICAgbV9sYXN0UXVlcnkgYW5kIHVzZSBpdCBpbiBz
aG91bGRSZXdpbmQoKS4KKworICAgICAgICBUZXN0OiBMYXlvdXRUZXN0c1xmYXN0XGltYWdlc1xh
bmltYXRlZC1qcGVneGwtbG9vcC1jb3VudC5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVneGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVneGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmg6CisKIDIwMjEt
MTEtMTggIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAg
ICAgW1RleHR1cmVNYXBwZXJdW0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyXVtHcmFwaGljc0xh
eWVyV0NdIHNldEJhY2tncm91bmRDb2xvciBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVneGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJ
bWFnZURlY29kZXIuY3BwCmluZGV4IDUxMjk3YTE3NThjMS4uYTNkYWIxNDdkMGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVneGwvSlBFR1hM
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVneGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAj
aWYgVVNFKEpQRUdYTCkKIAorI2luY2x1ZGUgPG9wdGlvbmFsPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEpQRUdYTEltYWdlRGVjb2Rlcjo6SlBFR1hMSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9u
IGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKQEAgLTM3LDU1ICszOSwxNzMgQEAgSlBFR1hMSW1hZ2VEZWNvZGVyOjpKUEVH
WExJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8K
IAogSlBFR1hMSW1hZ2VEZWNvZGVyOjp+SlBFR1hMSW1hZ2VEZWNvZGVyKCkKIHsKLSAgICBjbGVh
cigpOworfQorCitzaXplX3QgSlBFR1hMSW1hZ2VEZWNvZGVyOjpmcmFtZUNvdW50KCkgY29uc3QK
K3sKKyAgICBpZiAoIWhhc0FuaW1hdGlvbigpKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlm
ICghbV9pc0xhc3RGcmFtZUhlYWRlclJlY2VpdmVkKQorICAgICAgICBjb25zdF9jYXN0PEpQRUdY
TEltYWdlRGVjb2Rlcio+KHRoaXMpLT51cGRhdGVGcmFtZUNvdW50KCk7CisKKyAgICByZXR1cm4g
bV9mcmFtZUNvdW50OworfQorCitSZXBldGl0aW9uQ291bnQgSlBFR1hMSW1hZ2VEZWNvZGVyOjpy
ZXBldGl0aW9uQ291bnQoKSBjb25zdAoreworICAgIGlmIChoYXNBbmltYXRpb24oKSkgeworICAg
ICAgICBpZiAoIW1fYmFzaWNJbmZvLT5hbmltYXRpb24ubnVtX2xvb3BzKSB7CisgICAgICAgICAg
ICAvLyBJZiBudW1fbG9vcHMgaXMgemVybywgcmVwZWF0IGluZmluaXRlbHkuCisgICAgICAgICAg
ICByZXR1cm4gUmVwZXRpdGlvbkNvdW50SW5maW5pdGU7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG1fYmFzaWNJbmZvLT5hbmltYXRpb24ubnVtX2xvb3BzOworICAgIH0KKyAgICByZXR1cm4g
UmVwZXRpdGlvbkNvdW50Tm9uZTsKIH0KIAogU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogSlBF
R1hMSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAg
IC8vIFRPRE86IFRvIHN1cHBvcnQgYW5pbWF0ZWQgSlBFRyBYTCBpbiB0aGUgZnV0dXJlIHdlIG5l
ZWQgdG8gaGFuZGxlIHNlY29uZCBhbmQgc3Vic2VxdWVudCBmcmFtZXMuCi0gICAgaWYgKGluZGV4
KQorICAgIGlmIChTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSA8IEVu
Y29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAorICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCisgICAgICAgIGluZGV4ID0gZnJhbWVD
b3VudCgpIC0gMTsKKwogICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAg
ICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUuZ3JvdygxKTsKIAotICAgIGF1dG8mIGZyYW1lID0gbV9m
cmFtZUJ1ZmZlckNhY2hlWzBdOworICAgIGF1dG8mIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNhY2hl
W2luZGV4XTsKICAgICBpZiAoIWZyYW1lLmlzQ29tcGxldGUoKSkKLSAgICAgICAgZGVjb2RlKGZh
bHNlLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKKyAgICAgICAgZGVjb2RlKFF1ZXJ5OjpEZWNvZGVk
SW1hZ2UsIGluZGV4LCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKICAgICByZXR1cm4gJmZyYW1lOwog
fQogCi12b2lkIEpQRUdYTEltYWdlRGVjb2Rlcjo6Y2xlYXIoKQordm9pZCBKUEVHWExJbWFnZURl
Y29kZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSkKIHsK
LSAgICBtX2RlY29kZXIucmVzZXQoKTsKLSAgICBtX3JlYWRPZmZzZXQgPSAwOworICAgIGlmICht
X2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBV
bmxpa2UgdGhlIHBuZyBhbmQgZ2lmIGNhc2VzLCB3ZSBjYW4gYWx3YXlzIHRyeSB0byBjbGVhciBm
cmFtZXMgYmVmb3JlICJjbGVhckJlZm9yZUZyYW1lIiBiZWNhdXNlCisgICAgLy8gdGhlIGRlcGVu
ZGVuY2l5IHRvIHRoZSBwcmV2aW91cyBmcmFtZSBpcyBoYW5kbGVkIGJ5IGxpYmp4bC4KKyAgICBj
b25zdCBWZWN0b3I8U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZT46Oml0ZXJhdG9yIGVuZChtX2Zy
YW1lQnVmZmVyQ2FjaGUuYmVnaW4oKSArIGNsZWFyQmVmb3JlRnJhbWUpOworCisgICAgZm9yIChW
ZWN0b3I8U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZT46Oml0ZXJhdG9yIGkobV9mcmFtZUJ1ZmZl
ckNhY2hlLmJlZ2luKCkpOyBpICE9IGVuZDsgKytpKSB7CisgICAgICAgIGlmICghaS0+aXNJbnZh
bGlkKCkgJiYgIWktPmlzUGFydGlhbCgpKSAvLyBXZSBkb24ndCBjbGVhciB0aGUgZnJhbWUgd2Un
cmUgY3VycmVudGx5IGRlY29kaW5nLgorICAgICAgICAgICAgaS0+Y2xlYXIoKTsKKyAgICB9CiB9
CiAKIGJvb2wgSlBFR1hMSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKQogewotICAgIGNsZWFyKCk7
CisgICAgbV9kZWNvZGVyLnJlc2V0KCk7CiAgICAgcmV0dXJuIFNjYWxhYmxlSW1hZ2VEZWNvZGVy
OjpzZXRGYWlsZWQoKTsKIH0KIAotdm9pZCBKUEVHWExJbWFnZURlY29kZXI6OmRlY29kZShib29s
IG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVy
Ojp0cnlEZWNvZGVTaXplKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQoreworICAgIGlmIChtX2Jhc2lj
SW5mbykKKyAgICAgICAgcmV0dXJuOworICAgIGRlY29kZShRdWVyeTo6U2l6ZSwgMCwgYWxsRGF0
YVJlY2VpdmVkKTsKK30KKworYm9vbCBKUEVHWExJbWFnZURlY29kZXI6Omhhc0FscGhhKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9iYXNpY0luZm8gJiYgbV9iYXNpY0luZm8tPmFscGhhX2JpdHMg
PiAwOworfQorCitib29sIEpQRUdYTEltYWdlRGVjb2Rlcjo6aGFzQW5pbWF0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9iYXNpY0luZm8gJiYgbV9iYXNpY0luZm8tPmhhdmVfYW5pbWF0aW9u
OworfQorCit2b2lkIEpQRUdYTEltYWdlRGVjb2Rlcjo6ZW5zdXJlRGVjb2RlckluaXRpYWxpemVk
KCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2Rl
Y29kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVjb2RlciA9IEp4bERlY29kZXJNYWtl
KG51bGxwdHIpOwogICAgIGlmICghbV9kZWNvZGVyKSB7Ci0gICAgICAgIGNsZWFyKCk7Ci0gICAg
ICAgIG1fZGVjb2RlciA9IEp4bERlY29kZXJNYWtlKG51bGxwdHIpOwotICAgICAgICBpZiAoIW1f
ZGVjb2RlcikgewotICAgICAgICAgICAgc2V0RmFpbGVkKCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KKyAgICAgICAgc2V0RmFpbGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoSnhsRGVjb2RlclN1YnNjcmliZUV2ZW50cyhtX2RlY29kZXIuZ2V0KCksIEpY
TF9ERUNfQkFTSUNfSU5GTyB8IEpYTF9ERUNfRlJBTUUgfCBKWExfREVDX0ZVTExfSU1BR0UpICE9
IEpYTF9ERUNfU1VDQ0VTUykgeworICAgICAgICBzZXRGYWlsZWQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KIAotICAgICAgICBpZiAoSnhsRGVjb2RlclN1YnNjcmliZUV2ZW50cyhtX2RlY29k
ZXIuZ2V0KCksIEpYTF9ERUNfQkFTSUNfSU5GTyB8IEpYTF9ERUNfRlJBTUUgfCBKWExfREVDX0ZV
TExfSU1BR0UpICE9IEpYTF9ERUNfU1VDQ0VTUykgewotICAgICAgICAgICAgc2V0RmFpbGVkKCk7
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgbV9yZWFkT2Zmc2V0ID0gMDsKKyAgICBtX2N1cnJl
bnRGcmFtZSA9IDA7CisgICAgbV9sYXN0UXVlcnkgPSBRdWVyeTo6U2l6ZTsKK30KKworYm9vbCBK
UEVHWExJbWFnZURlY29kZXI6OnNob3VsZFJld2luZChRdWVyeSBxdWVyeSwgc2l6ZV90IGZyYW1l
SW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKG1fbGFzdFF1ZXJ5ID09IFF1ZXJ5OjpGcmFtZUNvdW50
KSB7CisgICAgICAgIGlmIChxdWVyeSA9PSBRdWVyeTo6RnJhbWVDb3VudCkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsgLy8gQ29udGludWUgY291bnRpbmcgZnJhbWVzLgorICAgICAgICByZXR1
cm4gdHJ1ZTsgLy8gSW4gdGhpcyBjYXNlIHRoZSBkZWNvZGVyIGhhcyByZWFjaGVkIHRoZSBFT0Yg
YW5kIG5lZWRzIHJld2luZC4KKyAgICB9CisKKyAgICBpZiAobV9sYXN0UXVlcnkgPT0gUXVlcnk6
OlNpemUpIHsKKyAgICAgICAgLy8gVGhlIGRlY29kZXIgaXMgYXQgdGhlIHN0cmVhbSBoZWFkZXIg
YW5kIGRvZXNuJ3QgbmVlZCByZXdpbmQuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgbV9sYXN0UXVlcnkgaXMgUXVlcnk6OkRlY29k
ZWRJbWFnZS4KKworICAgIGlmIChxdWVyeSAhPSBRdWVyeTo6RGVjb2RlZEltYWdlKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFRoZXJlJ3MgdHdvIGNhc2VzIHdoZXJlIHdlIGRvbid0
IG5lZWQgdG8gcmV3aW5kOgorICAgIC8vICAgMS4gUHJldmlvdXMgZGVjb2Rpbmcgd2FzIGludGVy
cnVwdGVkIHdpdGggSlhMX0RFQ19ORUVEX01PUkVfSU5QVVQKKyAgICAvLyAgICAgIGFuZCB0cnlp
bmcgdG8gY29udGludWUgZGVjb2RpbmcgdGhlIHNhbWUgZnJhbWUuCisgICAgLy8gICAyLiBQcmV2
aW91cyBkZWNvZGluZyB3YXMgY29tcGxldGVkIChtX2N1cnJlbnRGcmFtZSB3YXMgaW5jcmVtZW50
ZWQpIGFuZCBzdGFydGluZyBhIG5ldyBmcmFtZS4KKyAgICAvLyBJbiBib3RoIGNhc2VzIGZyYW1l
SW5kZXggaXMgZXF1YWwgdG8gbV9jdXJyZW50RnJhbWUuCisgICAgcmV0dXJuIGZyYW1lSW5kZXgg
IT0gbV9jdXJyZW50RnJhbWU7Cit9CisKK3ZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVyOjpyZXdpbmQo
KQoreworICAgIEp4bERlY29kZXJSZXdpbmQobV9kZWNvZGVyLmdldCgpKTsKKyAgICBKeGxEZWNv
ZGVyU3Vic2NyaWJlRXZlbnRzKG1fZGVjb2Rlci5nZXQoKSwgSlhMX0RFQ19CQVNJQ19JTkZPIHwg
SlhMX0RFQ19GUkFNRSB8IEpYTF9ERUNfRlVMTF9JTUFHRSk7CisgICAgbV9yZWFkT2Zmc2V0ID0g
MDsKKyAgICBtX2N1cnJlbnRGcmFtZSA9IDA7Cit9CisKK3ZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVy
Ojp1cGRhdGVGcmFtZUNvdW50KCkKK3sKKyAgICBpZiAoZmFpbGVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGRlY29kZShRdWVyeTo6RnJhbWVDb3VudCwgMCwgaXNBbGxEYXRhUmVjZWl2ZWQo
KSk7CisKKyAgICBpZiAobV9mcmFtZUNvdW50ICE9IG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkp
CisgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUobV9mcmFtZUNvdW50KTsKK30KKwor
dm9pZCBKUEVHWExJbWFnZURlY29kZXI6OmRlY29kZShRdWVyeSBxdWVyeSwgc2l6ZV90IGZyYW1l
SW5kZXgsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQoreworICAgIGVuc3VyZURlY29kZXJJbml0aWFs
aXplZCgpOworCisgICAgaWYgKGZhaWxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
c2hvdWxkUmV3aW5kKHF1ZXJ5LCBmcmFtZUluZGV4KSkgeworICAgICAgICByZXdpbmQoKTsKKyAg
ICAgICAgLy8gV2UgY2FyZSBhYm91dCB0aGUgZnJhbWVJbmRleCBvbmx5IGlmIHRoZSBxdWVyeSBp
cyBRdWVyeTo6RGVjb2RlZEltYWdlLgorICAgICAgICBpZiAocXVlcnkgPT0gUXVlcnk6OkRlY29k
ZWRJbWFnZSAmJiBmcmFtZUluZGV4KSB7CisgICAgICAgICAgICBKeGxEZWNvZGVyU2tpcEZyYW1l
cyhtX2RlY29kZXIuZ2V0KCksIGZyYW1lSW5kZXgpOworICAgICAgICAgICAgbV9jdXJyZW50RnJh
bWUgPSBmcmFtZUluZGV4OwogICAgICAgICB9CiAgICAgfQogCisgICAgbV9sYXN0UXVlcnkgPSBx
dWVyeTsKKwogICAgIG1fZGF0YS0+ZGF0YSgpOwogICAgIHNpemVfdCBkYXRhU2l6ZSA9IG1fZGF0
YS0+c2l6ZSgpOwogICAgIGlmIChKeGxEZWNvZGVyU2V0SW5wdXQobV9kZWNvZGVyLmdldCgpLCBt
X2RhdGEtPmRhdGEoKSArIG1fcmVhZE9mZnNldCwgZGF0YVNpemUgLSBtX3JlYWRPZmZzZXQpICE9
IEpYTF9ERUNfU1VDQ0VTUykgewpAQCAtOTMsNjEgKzIxMywxMDUgQEAgdm9pZCBKUEVHWExJbWFn
ZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEp4bERlY29kZXJTdGF0dXMgc3RhdHVzID0gcHJv
Y2Vzc0lucHV0KG9ubHlTaXplKTsKKyAgICBKeGxEZWNvZGVyU3RhdHVzIHN0YXR1cyA9IHByb2Nl
c3NJbnB1dChxdWVyeSk7CiAgICAgLy8gV2Ugc2V0IHRoZSBzdGF0dXMgYXMgZmFpbGVkIGlmIHRo
ZSBkZWNvZGVyIHJlcG9ydHMgYW4gZXJyb3Igb3IgcmVxdWlyZXMgbW9yZSBkYXRhIHdoaWxlIGFs
bCBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLgogICAgIGlmIChzdGF0dXMgPT0gSlhMX0RFQ19FUlJP
UiB8fCAoYWxsRGF0YVJlY2VpdmVkICYmIHN0YXR1cyA9PSBKWExfREVDX05FRURfTU9SRV9JTlBV
VCkpIHsKICAgICAgICAgc2V0RmFpbGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICAvLyBXZSByZWxlYXNlIHRoZSBkZWNvZGVyIHdoZW4gd2UgZmluaXNoIHRoZSBkZWNvZGluZy4K
LSAgICBpZiAoc3RhdHVzID09IEpYTF9ERUNfU1VDQ0VTUykgewotICAgICAgICBjbGVhcigpOwor
ICAgIGlmIChxdWVyeSA9PSBRdWVyeTo6RGVjb2RlZEltYWdlICYmIHN0YXR1cyA9PSBKWExfREVD
X0ZVTExfSU1BR0UgJiYgbV9pc0xhc3RGcmFtZUhlYWRlclJlY2VpdmVkICYmIG1fY3VycmVudEZy
YW1lID09IG1fZnJhbWVDb3VudCkgeworICAgICAgICAvLyBXZSBmcmVlIHRoZSBkZWNvZGVyIHdo
ZW4gdGhlIGxhc3QgZnJhbWUgaXMgZGVjb2RlZC4KKyAgICAgICAgbV9kZWNvZGVyLnJlc2V0KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBPdGhlcndpc2Ugd2UgZ2V0IHRoZSBk
ZWNvZGVyIHJlYWR5IGZvciBzdWJzZXF1ZW50IGRhdGEuCiAgICAgc2l6ZV90IHJlbWFpbmluZ0Rh
dGFTaXplID0gSnhsRGVjb2RlclJlbGVhc2VJbnB1dChtX2RlY29kZXIuZ2V0KCkpOwogICAgIG1f
cmVhZE9mZnNldCA9IGRhdGFTaXplIC0gcmVtYWluaW5nRGF0YVNpemU7CiB9CiAKLUp4bERlY29k
ZXJTdGF0dXMgSlBFR1hMSW1hZ2VEZWNvZGVyOjpwcm9jZXNzSW5wdXQoYm9vbCBvbmx5U2l6ZSkK
K0p4bERlY29kZXJTdGF0dXMgSlBFR1hMSW1hZ2VEZWNvZGVyOjpwcm9jZXNzSW5wdXQoUXVlcnkg
cXVlcnkpCiB7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgYXV0byBzdGF0dXMgPSBKeGxE
ZWNvZGVyUHJvY2Vzc0lucHV0KG1fZGVjb2Rlci5nZXQoKSk7CiAKKyAgICAgICAgLy8gUmV0dXJu
IEpYTF9ERUNfRVJST1Igd2hlbiB3ZSd2ZSByZWFjaGVkIEVPRiB3aXRob3V0IHJlY2VpdmluZyBh
IGZyYW1lIG1hcmtlZCBhcyAiaXNfbGFzdCIuCisgICAgICAgIGlmIChzdGF0dXMgPT0gSlhMX0RF
Q19TVUNDRVNTICYmICFtX2lzTGFzdEZyYW1lSGVhZGVyUmVjZWl2ZWQpCisgICAgICAgICAgICBy
ZXR1cm4gSlhMX0RFQ19FUlJPUjsKKwogICAgICAgICAvLyBKWExfREVDX0VSUk9SIGFuZCBKWExf
REVDX1NVQ0NFU1MgYXJlIHRlcm1pbmFsIHN0YXRlcy4gV2UgYWxzbyBleGl0IGZyb20gdGhlIGxv
b3AgaWYgbW9yZSBkYXRhIGlzIG5lZWRlZC4KICAgICAgICAgaWYgKHN0YXR1cyA9PSBKWExfREVD
X0VSUk9SIHx8IHN0YXR1cyA9PSBKWExfREVDX1NVQ0NFU1MgfHwgc3RhdHVzID09IEpYTF9ERUNf
TkVFRF9NT1JFX0lOUFVUKQogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKIAogICAgICAgICBp
ZiAoc3RhdHVzID09IEpYTF9ERUNfQkFTSUNfSU5GTykgewotICAgICAgICAgICAgSnhsQmFzaWNJ
bmZvIGJhc2ljSW5mbzsKLSAgICAgICAgICAgIGlmIChKeGxEZWNvZGVyR2V0QmFzaWNJbmZvKG1f
ZGVjb2Rlci5nZXQoKSwgJmJhc2ljSW5mbykgIT0gSlhMX0RFQ19TVUNDRVNTKQotICAgICAgICAg
ICAgICAgIHJldHVybiBKWExfREVDX0VSUk9SOworICAgICAgICAgICAgaWYgKCFtX2Jhc2ljSW5m
bykgeworICAgICAgICAgICAgICAgIEp4bEJhc2ljSW5mbyBiYXNpY0luZm87CisgICAgICAgICAg
ICAgICAgaWYgKEp4bERlY29kZXJHZXRCYXNpY0luZm8obV9kZWNvZGVyLmdldCgpLCAmYmFzaWNJ
bmZvKSAhPSBKWExfREVDX1NVQ0NFU1MpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKWExf
REVDX0VSUk9SOworCisgICAgICAgICAgICAgICAgbV9iYXNpY0luZm8gPSBiYXNpY0luZm87Cisg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHNldFNpemUoSW50U2l6ZShiYXNpY0luZm8ueHNp
emUsIGJhc2ljSW5mby55c2l6ZSkpOwotICAgICAgICAgICAgaWYgKG9ubHlTaXplKQorICAgICAg
ICAgICAgaWYgKHF1ZXJ5ID09IFF1ZXJ5OjpTaXplKSB7CisgICAgICAgICAgICAgICAgLy8gc2V0
U2l6ZSgpIG11c3QgYmUgY2FsbGVkIG9ubHkgaWYgdGhlIHF1ZXJ5IGlzIFF1ZXJ5OjpTaXplLAor
ICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSB0aGlzIHdvdWxkIHJvbGwgYmFjayB0aGUgZW5j
b2RlZCBkYXRhIHN0YXR1cyBmcm9tIGNvbXBsZXRlZC4KKyAgICAgICAgICAgICAgICBzZXRTaXpl
KEludFNpemUobV9iYXNpY0luZm8tPnhzaXplLCBtX2Jhc2ljSW5mby0+eXNpemUpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gc3RhdHVzOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdGF0dXMgPT0gSlhMX0RFQ19GUkFN
RSkgewogICAgICAgICAgICAgSnhsUGl4ZWxGb3JtYXQgZm9ybWF0IHsgNCwgSlhMX1RZUEVfVUlO
VDgsIEpYTF9OQVRJVkVfRU5ESUFOLCAwIH07CisgICAgICAgICAgICBKeGxGcmFtZUhlYWRlciBm
cmFtZUhlYWRlcjsKKyAgICAgICAgICAgIGlmIChKeGxEZWNvZGVyR2V0RnJhbWVIZWFkZXIobV9k
ZWNvZGVyLmdldCgpLCAmZnJhbWVIZWFkZXIpICE9IEpYTF9ERUNfU1VDQ0VTUykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gSlhMX0RFQ19FUlJPUjsKKworICAgICAgICAgICAgbV9mcmFtZUNvdW50
ID0gc3RkOjptYXgobV9mcmFtZUNvdW50LCBtX2N1cnJlbnRGcmFtZSArIDEpOworCisgICAgICAg
ICAgICBpZiAoZnJhbWVIZWFkZXIuaXNfbGFzdCkKKyAgICAgICAgICAgICAgICBtX2lzTGFzdEZy
YW1lSGVhZGVyUmVjZWl2ZWQgPSB0cnVlOworCisgICAgICAgICAgICBpZiAocXVlcnkgIT0gUXVl
cnk6OkRlY29kZWRJbWFnZSkgeworICAgICAgICAgICAgICAgIGlmIChKeGxEZWNvZGVyU2V0SW1h
Z2VPdXRDYWxsYmFjayhtX2RlY29kZXIuZ2V0KCksICZmb3JtYXQsIFtdKHZvaWQqLCBzaXplX3Qs
IHNpemVfdCwgc2l6ZV90LCBjb25zdCB2b2lkKikgeyB9LCBudWxscHRyKSAhPSBKWExfREVDX1NV
Q0NFU1MpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKWExfREVDX0VSUk9SOworCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICht
X2N1cnJlbnRGcmFtZSA+PSBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpKQorICAgICAgICAgICAg
ICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUobV9mcmFtZUNvdW50ICsgMSk7CisKKyAgICAg
ICAgICAgIGF1dG8mIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVttX2N1cnJlbnRGcmFtZV07
CisgICAgICAgICAgICBpZiAoYnVmZmVyLmlzSW52YWxpZCgpICYmIGJ1ZmZlci5pbml0aWFsaXpl
KHNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkgeworICAgICAgICAgICAgICAgIGJ1ZmZlci5z
ZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6UGFydGlhbCk7CisgICAgICAgICAgICAg
ICAgYnVmZmVyLnNldEhhc0FscGhhKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpZiAobV9iYXNp
Y0luZm8gJiYgbV9iYXNpY0luZm8tPmhhdmVfYW5pbWF0aW9uKSB7CisgICAgICAgICAgICAgICAg
ICAgIGJ1ZmZlci5zZXREdXJhdGlvbihTZWNvbmRzKChkb3VibGUpZnJhbWVIZWFkZXIuZHVyYXRp
b24gKiBtX2Jhc2ljSW5mby0+YW5pbWF0aW9uLnRwc19kZW5vbWluYXRvciAvIG1fYmFzaWNJbmZv
LT5hbmltYXRpb24udHBzX251bWVyYXRvcikpOworICAgICAgICAgICAgICAgICAgICBidWZmZXIu
c2V0RGlzcG9zYWxNZXRob2QoU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZTo6RGlzcG9zYWxNZXRo
b2Q6OkRvTm90RGlzcG9zZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICBpZiAoSnhsRGVjb2RlclNldEltYWdlT3V0Q2FsbGJhY2sobV9kZWNvZGVyLmdl
dCgpLCAmZm9ybWF0LCBpbWFnZU91dENhbGxiYWNrLCB0aGlzKSAhPSBKWExfREVDX1NVQ0NFU1Mp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpYTF9ERUNfRVJST1I7CisKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHN0YXR1cyA9PSBKWExfREVDX0ZVTExf
SU1BR0UpIHsKLSAgICAgICAgICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKG1fY3VycmVudEZyYW1l
IDwgbV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGJ1
ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVttX2N1cnJlbnRGcmFtZV07CisgICAgICAgICAgICAg
ICAgaWYgKCFidWZmZXIuaXNJbnZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5z
ZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpOworICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07Ci0g
ICAgICAgICAgICBpZiAoIWJ1ZmZlci5pc0ludmFsaWQoKSkKLSAgICAgICAgICAgICAgICBidWZm
ZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsKKyAgICAgICAg
ICAgIG1fY3VycmVudEZyYW1lKys7CisgICAgICAgICAgICBpZiAocXVlcnkgPT0gUXVlcnk6OkRl
Y29kZWRJbWFnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlhMX0RFQ19GVUxMX0lNQUdFOwog
Ci0gICAgICAgICAgICAvLyBUT0RPOiBUbyBzdXBwb3J0IGFuaW1hdGVkIEpQRUcgWEwgaW4gdGhl
IGZ1dHVyZSB3ZSBuZWVkIHRvIGhhbmRsZSBzdWJzZXF1ZW50IGRhdGEuCi0gICAgICAgICAgICBy
ZXR1cm4gSlhMX0RFQ19TVUNDRVNTOworICAgICAgICAgICAgQVNTRVJUKHF1ZXJ5ID09IFF1ZXJ5
OjpGcmFtZUNvdW50KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgfQog
fQpAQCAtMTU5LDE3ICszMjMsMTIgQEAgdm9pZCBKUEVHWExJbWFnZURlY29kZXI6OmltYWdlT3V0
Q2FsbGJhY2sodm9pZCogdGhhdCwgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3QKIAogdm9pZCBK
UEVHWExJbWFnZURlY29kZXI6OmltYWdlT3V0KHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IG51
bVBpeGVscywgY29uc3QgdWludDhfdCogcGl4ZWxzKQogewotICAgIGlmIChtX2ZyYW1lQnVmZmVy
Q2FjaGUuaXNFbXB0eSgpKQorICAgIGlmIChtX2N1cnJlbnRGcmFtZSA+PSBtX2ZyYW1lQnVmZmVy
Q2FjaGUuc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBidWZmZXIgPSBtX2Zy
YW1lQnVmZmVyQ2FjaGVbMF07Ci0gICAgaWYgKGJ1ZmZlci5pc0ludmFsaWQoKSkgewotICAgICAg
ICBpZiAoIWJ1ZmZlci5pbml0aWFsaXplKHNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVj
b2RpbmdTdGF0dXM6OlBhcnRpYWwpOwotICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2Up
OwotICAgIH0KKyAgICBhdXRvJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50
RnJhbWVdOworICAgIGlmIChidWZmZXIuaXNJbnZhbGlkKCkpCisgICAgICAgIHJldHVybjsKIAog
ICAgIHVpbnQzMl90KiByb3cgPSBidWZmZXIuYmFja2luZ1N0b3JlKCktPnBpeGVsQXQoeCwgeSk7
CiAgICAgdWludDMyX3QqIGN1cnJlbnRBZGRyZXNzID0gcm93OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdYTEltYWdlRGVjb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdY
TEltYWdlRGVjb2Rlci5oCmluZGV4IGEwOWQ1YzlkZGRjZi4uNGFkZjczNDBlMTlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVneGwvSlBFR1hM
SW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZ3hsL0pQRUdYTEltYWdlRGVjb2Rlci5oCkBAIC0zMyw4ICszMywxMSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEpQRUdYTEltYWdlUmVhZGVyOworCiAvLyBUaGlzIGNs
YXNzIGRlY29kZXMgdGhlIEpQRUcgWEwgaW1hZ2UgZm9ybWF0LgogY2xhc3MgSlBFR1hMSW1hZ2VE
ZWNvZGVyIGZpbmFsIDogcHVibGljIFNjYWxhYmxlSW1hZ2VEZWNvZGVyIHsKKyAgICBmcmllbmQg
Y2xhc3MgSlBFR1hMSW1hZ2VSZWFkZXI7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTY2FsYWJs
ZUltYWdlRGVjb2Rlcj4gY3JlYXRlKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7CkBAIC00
NSwyNSArNDgsNTAgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAg
ICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAianhs
Il9zOyB9CisgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZXBl
dGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2NhbGFi
bGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3Jl
RnJhbWUpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRGYWlsZWQoKSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKLSAgICBKUEVHWExJbWFnZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKTsKLSAgICB2b2lkIHRyeURlY29kZVNpemUoYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKHRydWUsIGFsbERhdGFSZWNlaXZlZCk7IH0KKyAgICBlbnVt
IGNsYXNzIFF1ZXJ5IHsKKyAgICAgICAgLy8gVGhpcyBxdWVyeSBpcyB1c2VkIGZvciB0cnlEZWNv
ZGVTaXplKCkuCisgICAgICAgIFNpemUsCisgICAgICAgIC8vIFdlIGRlZmluZSBhIHF1ZXJ5IGZv
ciBmcmFtZSBjb3VudCBiZWNhdXNlIEpQRUcgWEwgZG9lc24ndCBoYXZlIGZyYW1lIGNvdW50IGlu
Zm9ybWF0aW9uIGluIGl0cyBjb2RlIHN0cmVhbQorICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHNj
YW4gdGhlIGNvZGUgc3RyZWFtIHRvIGdldCB0aGUgZnJhbWUgY291bnQgZm9yIGFuaW1hdGVkIEpQ
RUcgWEwuCisgICAgICAgIC8vIEpQRUcgWEwgY29udGFpbmVyIGNhbiBoYXZlIGZyYW1lIGNvdW50
IG1ldGFkYXRhIGJ1dCBjdXJyZW50bHkgbGlianhsIGRvZXNuJ3Qgc3VwcG9ydCBpdC4KKyAgICAg
ICAgRnJhbWVDb3VudCwKKyAgICAgICAgLy8gUXVlcnkgdG8gZGVjb2RlIGEgc2luZ2xlIGZyYW1l
LgorICAgICAgICBEZWNvZGVkSW1hZ2UsCisgICAgfTsKIAotICAgIHZvaWQgZGVjb2RlKGJvb2wg
b25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBKUEVHWExJbWFnZURlY29kZXIo
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICB2b2lkIHRyeURl
Y29kZVNpemUoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBjbGVh
cigpOworICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKKyAgICBib29sIGhhc0FuaW1hdGlvbigp
IGNvbnN0OwogCi0gICAgSnhsRGVjb2RlclN0YXR1cyBwcm9jZXNzSW5wdXQoYm9vbCBvbmx5U2l6
ZSk7CisgICAgdm9pZCBlbnN1cmVEZWNvZGVySW5pdGlhbGl6ZWQoKTsKKyAgICBib29sIHNob3Vs
ZFJld2luZChRdWVyeSAsIHNpemVfdCBmcmFtZUluZGV4KSBjb25zdDsKKyAgICB2b2lkIHJld2lu
ZCgpOworICAgIHZvaWQgdXBkYXRlRnJhbWVDb3VudCgpOwogCi0gICAgc3RhdGljIHZvaWQgaW1h
Z2VPdXRDYWxsYmFjayh2b2lkKiB0aGF0LCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCBudW1Q
aXhlbHMsIGNvbnN0IHZvaWQqIHBpeGVscyk7CisgICAgdm9pZCBkZWNvZGUoUXVlcnksIHNpemVf
dCBmcmFtZUluZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgSnhsRGVjb2RlclN0YXR1
cyBwcm9jZXNzSW5wdXQoUXVlcnkpOworICAgIHN0YXRpYyB2b2lkIGltYWdlT3V0Q2FsbGJhY2so
dm9pZCosIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IG51bVBpeGVscywgY29uc3Qgdm9pZCog
cGl4ZWxzKTsKICAgICB2b2lkIGltYWdlT3V0KHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IG51
bVBpeGVscywgY29uc3QgdWludDhfdCogcGl4ZWxzKTsKIAogICAgIEp4bERlY29kZXJQdHIgbV9k
ZWNvZGVyOwotICAgIHNpemVfdCBtX3JlYWRPZmZzZXQgPSAwOworICAgIHNpemVfdCBtX3JlYWRP
ZmZzZXQgeyAwIH07CisgICAgc3RkOjpvcHRpb25hbDxKeGxCYXNpY0luZm8+IG1fYmFzaWNJbmZv
OworCisgICAgUXVlcnkgbV9sYXN0UXVlcnkgeyBRdWVyeTo6U2l6ZSB9OworICAgIHNpemVfdCBt
X2ZyYW1lQ291bnQgeyAxIH07CisgICAgc2l6ZV90IG1fY3VycmVudEZyYW1lIHsgMCB9OworCisg
ICAgYm9vbCBtX2lzTGFzdEZyYW1lSGVhZGVyUmVjZWl2ZWQgeyBmYWxzZSB9OyAvLyBJZiB0aGlz
IGlzIHRydWUsIHdlIGtub3cgd2UgZG9uJ3QgbmVlZCB0byB1cGRhdGUgbV9mcmFtZUNvdW50Lgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445397</attachid>
            <date>2021-11-30 01:40:59 -0800</date>
            <delta_ts>2021-12-07 04:17:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>24176</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3ODMxYTE1YzQ3OGYuLmM4OTNkYWJiZmM3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDIxLTExLTMwICBZb3NoaWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29u
eS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBBbmltYXRlZCBKUEVHLVhMIGltYWdlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTQ1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgZm9yIGFu
aW1hdGVkIEpQRUcgWEwsIGJhc2VkIG9uIGFuaW1hdGVkLWdpZi1sb29wLWNvdW50LgorCisgICAg
ICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9hbmltYXRlZC1q
cGVneGwtbG9vcC1jb3VudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2lt
YWdlcy9hbmltYXRlZC1qcGVneGwtbG9vcC1jb3VudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LTEuanhs
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdy
ZWVuLWJsdWUtcmVwZWF0LTIuanhsOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9yZXNv
dXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LWluZmluaXRlLmp4bDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0x
MS0xOCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBm
b3Igb25wdXNoc3Vic2NyaXB0aW9uY2hhbmdlIGV2ZW50IGhhbmRsZXIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDk0NmM5NTJkYmYyZi4uZDUyMjk2M2M4N2I4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTEzNSw2ICsxMzUsNyBAQCBodHRwL3Rlc3RzL2ltYWdlcy9hdmlmLXBhcnRpYWwtbG9hZC1jcmFz
aC5odG1sIFsgU2tpcCBdCiAjIFRoZXNlIHRlc3RzIGRvbid0IGhhdmUgdG8gYmUgcGxhdGZvcm0t
c3BlY2lmaWMsIGJ1dCB0aGV5IGFyZSBvbmx5IGltcGxlbWVudGVkIG9uIFdpbkNhaXJvIG5vdy4K
IGZhc3QvaW1hZ2VzL2pwZWd4bC1pbWFnZS1kZWNvZGluZy5odG1sIFsgU2tpcCBdCiBmYXN0L2lt
YWdlcy9qcGVneGwtYXMtaW1hZ2UuaHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvYW5pbWF0ZWQt
anBlZ3hsLWxvb3AtY291bnQuaHRtbCBbIFNraXAgXQogCiAjIE9ubHkgYXBwbGljYWJsZSBvbiBw
bGF0Zm9ybXMgd2l0aCBkYXJrIG1vZGUgc3VwcG9ydAogY3NzLWRhcmstbW9kZSBbIFNraXAgXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtanBlZ3hsLWxvb3At
Y291bnQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWpw
ZWd4bC1sb29wLWNvdW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5iZjkyMTQxNjg2ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1qcGVneGwtbG9vcC1jb3VudC1leHBlY3RlZC5odG1sCkBA
IC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c3R5bGU+CisgICAgLmJv
eCB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8
ZGl2PgorICAgICAgICA8cD5GcmFtZXMgb2YgYSAzLWZyYW1lIGFuaW1hdGVkIGltYWdlIHdpdGgg
bWlzc2luZyBsb29wQ291bnQsIChyZXBldGl0aW9uQ291bnQgPSAxKTo8L3A+CisgICAgICAgIDxk
aXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsiPjwvZGl2PgorICAg
ICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwv
ZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBi
bHVlOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQt
Y29sb3I6IGJsdWU7Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgICA8cD5G
cmFtZXMgb2YgYSAzLWZyYW1lIGFuaW1hdGVkIGltYWdlIHdpdGggbG9vcENvdW50ID0gMSwgKHJl
cGV0aXRpb25Db3VudCA9IDIpOjwvcD4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0i
YmFja2dyb3VuZC1jb2xvcjogcmVkOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIg
c3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xh
c3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4KKyAgICAgICAg
PGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkOyI+PC9kaXY+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+
PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
IGJsdWU7Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3Vu
ZC1jb2xvcjogYmx1ZTsiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICAgIDxw
PkZyYW1lcyBvZiBhIDMtZnJhbWUgYW5pbWF0ZWQgaW1hZ2Ugd2l0aCBsb29wQ291bnQgPSAwLCAo
cmVwZXRpdGlvbkNvdW50ID0gaW5maW5pdGUpOjwvcD4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94
IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xh
c3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgICAg
IDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4K
KyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkOyI+
PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
IGdyZWVuOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91
bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0i
YmFja2dyb3VuZC1jb2xvcjogcmVkOyI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1qcGVneGwt
bG9vcC1jb3VudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtanBlZ3hs
LWxvb3AtY291bnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjIxNTJlNjVlMTc3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2Vz
L2FuaW1hdGVkLWpwZWd4bC1sb29wLWNvdW50Lmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KKyAgICBjYW52YXMgeworICAgICAgICB3aWR0aDog
MTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvYW5pbWF0ZWQtaW1hZ2UtbG9vcC1jb3VudC5qcyI+PC9zY3JpcHQ+Cis8
Ym9keT4KKyAgICA8ZGl2PgorICAgICAgICA8cD5GcmFtZXMgb2YgYSAzLWZyYW1lIGFuaW1hdGVk
IGltYWdlIHdpdGggbWlzc2luZyBsb29wQ291bnQsIChyZXBldGl0aW9uQ291bnQgPSAxKTo8L3A+
CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcy0xIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZh
cyBpZD0iY2FudmFzLTIiPjwvY2FudmFzPgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMtMyI+
PC9jYW52YXM+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcy00Ij48L2NhbnZhcz4KKyAgICA8
L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgICA8cD5GcmFtZXMgb2YgYSAzLWZyYW1lIGFuaW1hdGVk
IGltYWdlIHdpdGggbG9vcENvdW50ID0gMSwgKHJlcGV0aXRpb25Db3VudCA9IDIpOjwvcD4KKyAg
ICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLWEiPjwvY2FudmFzPgorICAgICAgICA8Y2FudmFzIGlk
PSJjYW52YXMtYiI+PC9jYW52YXM+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcy1jIj48L2Nh
bnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLWQiPjwvY2FudmFzPgorICAgICAgICA8
Y2FudmFzIGlkPSJjYW52YXMtZSI+PC9jYW52YXM+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZh
cy1mIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLWciPjwvY2FudmFzPgor
ICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICAgIDxwPkZyYW1lcyBvZiBhIDMtZnJhbWUgYW5p
bWF0ZWQgaW1hZ2Ugd2l0aCBsb29wQ291bnQgPSAwLCAocmVwZXRpdGlvbkNvdW50ID0gaW5maW5p
dGUpOjwvcD4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLUEiPjwvY2FudmFzPgorICAgICAg
ICA8Y2FudmFzIGlkPSJjYW52YXMtQiI+PC9jYW52YXM+CisgICAgICAgIDxjYW52YXMgaWQ9ImNh
bnZhcy1DIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLUQiPjwvY2FudmFz
PgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMtRSI+PC9jYW52YXM+CisgICAgICAgIDxjYW52
YXMgaWQ9ImNhbnZhcy1GIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLUci
PjwvY2FudmFzPgorICAgIDwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAgIChmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIHZhciBpbWFnZXMgPSBbCisgICAgICAgICAgICAgICAgeyBzcmM6ICJy
ZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LTEuanhsIiwgY2FudmFzSWQ6
ICcxJywgZnJhbWVDb3VudDogNCB9LAorICAgICAgICAgICAgICAgIHsgc3JjOiAicmVzb3VyY2Vz
L2FuaW1hdGVkLXJlZC1ncmVlbi1ibHVlLXJlcGVhdC0yLmp4bCIsIGNhbnZhc0lkOiAnYScsIGZy
YW1lQ291bnQ6IDcgfSwKKyAgICAgICAgICAgICAgICB7IHNyYzogInJlc291cmNlcy9hbmltYXRl
ZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtaW5maW5pdGUuanhsIiwgY2FudmFzSWQ6ICdBJywgZnJh
bWVDb3VudDogNyB9CisgICAgICAgICAgICBdOworICAgICAgICAgICAgcnVuVGVzdChpbWFnZXMp
OworICAgICAgICB9KSgpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVkLXJlZC1ncmVl
bi1ibHVlLXJlcGVhdC0xLmp4bCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9h
bmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtMS5qeGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIyMDMwOWMw
YzU3YjJjZTRlN2ZkM2E2ODMxODYxNmU3ZDg3OTA5NwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwg
OTkKemNtZXkqQl9ac25BdDIxYiFvfFZCa2l5X0MoSmpod01MT0FfT2thU0pMNGglN3hqbG5wZVl9
a25MX3E/WWc4V2hACmkxX25sbF8mQFNNY0BfcEF1eWpOMHp5Q352M14hKCZGPSNPVFZnPi11TyU9
JWkKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtMi5qeGwgYi9M
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUt
cmVwZWF0LTIuanhsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1NzU3M2UwYjVlZDZjMGEwY2Y0ZGMyMjYxOWJjZDlh
MmM5ODFkNDYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDk5CnpjbWV5KkJfWnRTQXQyMWIhb3xW
QmtpeV9DKEpqaHdNTE9BX09rYVNKTDRoJTd4amxucGVZfWtuTF9xP1lnOFdoQAppMV9ubGxfJkBT
TWNAX3BBdXlqTjB6eUN+djNeISgmRj0jT1RWZz4tKTRIZkFDCgpsaXRlcmFsIDAKSGNtVj9kMDAw
MDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0
ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LWluZmluaXRlLmp4bCBiL0xheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtaW5maW5pdGUu
anhsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJiMTEwNGQ5NDU4ZmMxMDY0OWM2OTAxNDBiNjk3MzQ1ZTFkMDFkZTUK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDk5CnpjbWV5KkJfWnN7a2leOG4hb3xWQmtpeV9DKEpq
aHdNTE9BX09rYVNKTDRoJTd4amxucGVZfWtuTF9xP1lnOFdoQAppMV9ubGxfJkBTTWNAX3BBdXlq
TjB6eUN+djNeISgmRj0jT1RWZz4tJU9CTGIoCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxNDFm
Yjk5NzNkZTcuLjAyZDBlNmE0NzcxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5j
YWlyby9UZXN0RXhwZWN0YXRpb25zCkBAIC0yNzUsNiArMjc1LDcgQEAgZmFzdC9sYXllcnMvcHJl
dmVudC1oaXQtdGVzdC1kdXJpbmctbGF5b3V0Lmh0bWwgWyBTa2lwIF0KICMgSlBFRyBYTCBpcyBk
aXNhYmxlZCB1bnRpbCBXZWJLaXRSZXF1aXJlbWVudHMgaXMgcmVsZWFzZWQgd2l0aCBsaWJqeGwK
IGZhc3QvaW1hZ2VzL2pwZWd4bC1hcy1pbWFnZS5odG1sIFsgU2tpcCBdCiBmYXN0L2ltYWdlcy9q
cGVneGwtaW1hZ2UtZGVjb2RpbmcuaHRtbCBbIFNraXAgXQorZmFzdC9pbWFnZXMvYW5pbWF0ZWQt
anBlZ3hsLWxvb3AtY291bnQuaHRtbCBbIFNraXAgXQogCiAjIERhdGFUcmFuc2Zlckl0ZW1zIGlz
IG5vdCB5ZXQgaW1wbGVtZW50ZWQKIGZhc3QvZXZlbnRzL2NsaXBib2FyZC1kYXRhVHJhbnNmZXJJ
dGVtTGlzdC5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg2OWUzODFlZmM2Li5lMDdkZDNk
NWE0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0xMS0zMCAgWW9zaGlha2kg
Sml0c3VrYXdhICA8eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgorCisgICAgICAgIFN1cHBv
cnQgQW5pbWF0ZWQgSlBFRy1YTCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCByZWxldmFudCBBUEksIHN1Y2ggYXMgZnJhbWVD
b3VudCgpIGFuZCBzdXBwb3J0IGEgcG9zaXRpdmUKKyAgICAgICAgZnJhbWUgaW5kZXggZm9yIGZy
YW1lQnVmZmVyQXRJbmRleCgpLgorCisgICAgICAgIEludHJvZHVjZSBhIHF1ZXJ5IHRvIGNvdW50
IGZyYW1lcyBiZWNhdXNlIEpQRUcgWEwgY29kZSBzdHJlYW0gaXRzZWxmIGRvZXNuJ3QgaGF2ZSBm
cmFtZQorICAgICAgICBjb3VudCBtZXRhZGF0YSBhbmQgd2UgbmVlZCB0byBzY2FuIHRoZSBjb2Rl
IHN0cmVhbSB0byB0aGUgbGFzdCBmcmFtZS4KKworICAgICAgICBBbHNvIGludHJvZHVjZSB0aGUg
U2l6ZSBxdWVyeSBpbnN0ZWFkIG9mIHRoZSBvbmx5U2l6ZSBwYXJhbWV0ZXIgb2YgdGhlIGRlY29k
ZSgpIGZ1bmN0aW9uLgorCisgICAgICAgIFdpdGggdGhlIERlY29kZUltYWdlIHF1ZXJ5LCB0aGUg
ZGVjb2RlciBkZWNvZGVzIGEgc2luZ2xlIGZyYW1lLiBUbworICAgICAgICBzcGVjaWZ5IHdoaWNo
IGZyYW1lIHRvIGRlY29kZSwgd2UgbWFrZSB1c2Ugb2YgdGhlIEp4bERlY29kZXJSZXdpbmQoKQor
ICAgICAgICBhbmQgSnhsRGVjb2RlclNraXBGcmFtZXMoKSBmdW5jdGlvbnMgb2YgbGlianhsLgor
CisgICAgICAgIFRvIG9taXQgcmV3aW5kIGFuZCBza2lwIGFzIG11Y2ggYXMgcG9zc2libGUsIHdl
IHJlY29yZCB0aGUgcXVlcnkgdG8KKyAgICAgICAgbV9sYXN0UXVlcnkgYW5kIHVzZSBpdCBpbiBz
aG91bGRSZXdpbmQoKS4KKworICAgICAgICBUZXN0OiBMYXlvdXRUZXN0c1xmYXN0XGltYWdlc1xh
bmltYXRlZC1qcGVneGwtbG9vcC1jb3VudC5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVneGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVneGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmg6CisKIDIwMjEt
MTEtMTggIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAg
ICAgW1RleHR1cmVNYXBwZXJdW0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyXVtHcmFwaGljc0xh
eWVyV0NdIHNldEJhY2tncm91bmRDb2xvciBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVneGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJ
bWFnZURlY29kZXIuY3BwCmluZGV4IDUxMjk3YTE3NThjMS4uYTNkYWIxNDdkMGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVneGwvSlBFR1hM
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVneGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAj
aWYgVVNFKEpQRUdYTCkKIAorI2luY2x1ZGUgPG9wdGlvbmFsPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEpQRUdYTEltYWdlRGVjb2Rlcjo6SlBFR1hMSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9u
IGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKQEAgLTM3LDU1ICszOSwxNzMgQEAgSlBFR1hMSW1hZ2VEZWNvZGVyOjpKUEVH
WExJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm8K
IAogSlBFR1hMSW1hZ2VEZWNvZGVyOjp+SlBFR1hMSW1hZ2VEZWNvZGVyKCkKIHsKLSAgICBjbGVh
cigpOworfQorCitzaXplX3QgSlBFR1hMSW1hZ2VEZWNvZGVyOjpmcmFtZUNvdW50KCkgY29uc3QK
K3sKKyAgICBpZiAoIWhhc0FuaW1hdGlvbigpKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlm
ICghbV9pc0xhc3RGcmFtZUhlYWRlclJlY2VpdmVkKQorICAgICAgICBjb25zdF9jYXN0PEpQRUdY
TEltYWdlRGVjb2Rlcio+KHRoaXMpLT51cGRhdGVGcmFtZUNvdW50KCk7CisKKyAgICByZXR1cm4g
bV9mcmFtZUNvdW50OworfQorCitSZXBldGl0aW9uQ291bnQgSlBFR1hMSW1hZ2VEZWNvZGVyOjpy
ZXBldGl0aW9uQ291bnQoKSBjb25zdAoreworICAgIGlmIChoYXNBbmltYXRpb24oKSkgeworICAg
ICAgICBpZiAoIW1fYmFzaWNJbmZvLT5hbmltYXRpb24ubnVtX2xvb3BzKSB7CisgICAgICAgICAg
ICAvLyBJZiBudW1fbG9vcHMgaXMgemVybywgcmVwZWF0IGluZmluaXRlbHkuCisgICAgICAgICAg
ICByZXR1cm4gUmVwZXRpdGlvbkNvdW50SW5maW5pdGU7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG1fYmFzaWNJbmZvLT5hbmltYXRpb24ubnVtX2xvb3BzOworICAgIH0KKyAgICByZXR1cm4g
UmVwZXRpdGlvbkNvdW50Tm9uZTsKIH0KIAogU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogSlBF
R1hMSW1hZ2VEZWNvZGVyOjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAg
IC8vIFRPRE86IFRvIHN1cHBvcnQgYW5pbWF0ZWQgSlBFRyBYTCBpbiB0aGUgZnV0dXJlIHdlIG5l
ZWQgdG8gaGFuZGxlIHNlY29uZCBhbmQgc3Vic2VxdWVudCBmcmFtZXMuCi0gICAgaWYgKGluZGV4
KQorICAgIGlmIChTY2FsYWJsZUltYWdlRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSA8IEVu
Y29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAorICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCisgICAgICAgIGluZGV4ID0gZnJhbWVD
b3VudCgpIC0gMTsKKwogICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQogICAg
ICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUuZ3JvdygxKTsKIAotICAgIGF1dG8mIGZyYW1lID0gbV9m
cmFtZUJ1ZmZlckNhY2hlWzBdOworICAgIGF1dG8mIGZyYW1lID0gbV9mcmFtZUJ1ZmZlckNhY2hl
W2luZGV4XTsKICAgICBpZiAoIWZyYW1lLmlzQ29tcGxldGUoKSkKLSAgICAgICAgZGVjb2RlKGZh
bHNlLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKKyAgICAgICAgZGVjb2RlKFF1ZXJ5OjpEZWNvZGVk
SW1hZ2UsIGluZGV4LCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKICAgICByZXR1cm4gJmZyYW1lOwog
fQogCi12b2lkIEpQRUdYTEltYWdlRGVjb2Rlcjo6Y2xlYXIoKQordm9pZCBKUEVHWExJbWFnZURl
Y29kZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSkKIHsK
LSAgICBtX2RlY29kZXIucmVzZXQoKTsKLSAgICBtX3JlYWRPZmZzZXQgPSAwOworICAgIGlmICht
X2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBV
bmxpa2UgdGhlIHBuZyBhbmQgZ2lmIGNhc2VzLCB3ZSBjYW4gYWx3YXlzIHRyeSB0byBjbGVhciBm
cmFtZXMgYmVmb3JlICJjbGVhckJlZm9yZUZyYW1lIiBiZWNhdXNlCisgICAgLy8gdGhlIGRlcGVu
ZGVuY2l5IHRvIHRoZSBwcmV2aW91cyBmcmFtZSBpcyBoYW5kbGVkIGJ5IGxpYmp4bC4KKyAgICBj
b25zdCBWZWN0b3I8U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZT46Oml0ZXJhdG9yIGVuZChtX2Zy
YW1lQnVmZmVyQ2FjaGUuYmVnaW4oKSArIGNsZWFyQmVmb3JlRnJhbWUpOworCisgICAgZm9yIChW
ZWN0b3I8U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZT46Oml0ZXJhdG9yIGkobV9mcmFtZUJ1ZmZl
ckNhY2hlLmJlZ2luKCkpOyBpICE9IGVuZDsgKytpKSB7CisgICAgICAgIGlmICghaS0+aXNJbnZh
bGlkKCkgJiYgIWktPmlzUGFydGlhbCgpKSAvLyBXZSBkb24ndCBjbGVhciB0aGUgZnJhbWUgd2Un
cmUgY3VycmVudGx5IGRlY29kaW5nLgorICAgICAgICAgICAgaS0+Y2xlYXIoKTsKKyAgICB9CiB9
CiAKIGJvb2wgSlBFR1hMSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKQogewotICAgIGNsZWFyKCk7
CisgICAgbV9kZWNvZGVyLnJlc2V0KCk7CiAgICAgcmV0dXJuIFNjYWxhYmxlSW1hZ2VEZWNvZGVy
OjpzZXRGYWlsZWQoKTsKIH0KIAotdm9pZCBKUEVHWExJbWFnZURlY29kZXI6OmRlY29kZShib29s
IG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVy
Ojp0cnlEZWNvZGVTaXplKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQoreworICAgIGlmIChtX2Jhc2lj
SW5mbykKKyAgICAgICAgcmV0dXJuOworICAgIGRlY29kZShRdWVyeTo6U2l6ZSwgMCwgYWxsRGF0
YVJlY2VpdmVkKTsKK30KKworYm9vbCBKUEVHWExJbWFnZURlY29kZXI6Omhhc0FscGhhKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9iYXNpY0luZm8gJiYgbV9iYXNpY0luZm8tPmFscGhhX2JpdHMg
PiAwOworfQorCitib29sIEpQRUdYTEltYWdlRGVjb2Rlcjo6aGFzQW5pbWF0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9iYXNpY0luZm8gJiYgbV9iYXNpY0luZm8tPmhhdmVfYW5pbWF0aW9u
OworfQorCit2b2lkIEpQRUdYTEltYWdlRGVjb2Rlcjo6ZW5zdXJlRGVjb2RlckluaXRpYWxpemVk
KCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2Rl
Y29kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVjb2RlciA9IEp4bERlY29kZXJNYWtl
KG51bGxwdHIpOwogICAgIGlmICghbV9kZWNvZGVyKSB7Ci0gICAgICAgIGNsZWFyKCk7Ci0gICAg
ICAgIG1fZGVjb2RlciA9IEp4bERlY29kZXJNYWtlKG51bGxwdHIpOwotICAgICAgICBpZiAoIW1f
ZGVjb2RlcikgewotICAgICAgICAgICAgc2V0RmFpbGVkKCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KKyAgICAgICAgc2V0RmFpbGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoSnhsRGVjb2RlclN1YnNjcmliZUV2ZW50cyhtX2RlY29kZXIuZ2V0KCksIEpY
TF9ERUNfQkFTSUNfSU5GTyB8IEpYTF9ERUNfRlJBTUUgfCBKWExfREVDX0ZVTExfSU1BR0UpICE9
IEpYTF9ERUNfU1VDQ0VTUykgeworICAgICAgICBzZXRGYWlsZWQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KIAotICAgICAgICBpZiAoSnhsRGVjb2RlclN1YnNjcmliZUV2ZW50cyhtX2RlY29k
ZXIuZ2V0KCksIEpYTF9ERUNfQkFTSUNfSU5GTyB8IEpYTF9ERUNfRlJBTUUgfCBKWExfREVDX0ZV
TExfSU1BR0UpICE9IEpYTF9ERUNfU1VDQ0VTUykgewotICAgICAgICAgICAgc2V0RmFpbGVkKCk7
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgbV9yZWFkT2Zmc2V0ID0gMDsKKyAgICBtX2N1cnJl
bnRGcmFtZSA9IDA7CisgICAgbV9sYXN0UXVlcnkgPSBRdWVyeTo6U2l6ZTsKK30KKworYm9vbCBK
UEVHWExJbWFnZURlY29kZXI6OnNob3VsZFJld2luZChRdWVyeSBxdWVyeSwgc2l6ZV90IGZyYW1l
SW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKG1fbGFzdFF1ZXJ5ID09IFF1ZXJ5OjpGcmFtZUNvdW50
KSB7CisgICAgICAgIGlmIChxdWVyeSA9PSBRdWVyeTo6RnJhbWVDb3VudCkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsgLy8gQ29udGludWUgY291bnRpbmcgZnJhbWVzLgorICAgICAgICByZXR1
cm4gdHJ1ZTsgLy8gSW4gdGhpcyBjYXNlIHRoZSBkZWNvZGVyIGhhcyByZWFjaGVkIHRoZSBFT0Yg
YW5kIG5lZWRzIHJld2luZC4KKyAgICB9CisKKyAgICBpZiAobV9sYXN0UXVlcnkgPT0gUXVlcnk6
OlNpemUpIHsKKyAgICAgICAgLy8gVGhlIGRlY29kZXIgaXMgYXQgdGhlIHN0cmVhbSBoZWFkZXIg
YW5kIGRvZXNuJ3QgbmVlZCByZXdpbmQuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgbV9sYXN0UXVlcnkgaXMgUXVlcnk6OkRlY29k
ZWRJbWFnZS4KKworICAgIGlmIChxdWVyeSAhPSBRdWVyeTo6RGVjb2RlZEltYWdlKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFRoZXJlJ3MgdHdvIGNhc2VzIHdoZXJlIHdlIGRvbid0
IG5lZWQgdG8gcmV3aW5kOgorICAgIC8vICAgMS4gUHJldmlvdXMgZGVjb2Rpbmcgd2FzIGludGVy
cnVwdGVkIHdpdGggSlhMX0RFQ19ORUVEX01PUkVfSU5QVVQKKyAgICAvLyAgICAgIGFuZCB0cnlp
bmcgdG8gY29udGludWUgZGVjb2RpbmcgdGhlIHNhbWUgZnJhbWUuCisgICAgLy8gICAyLiBQcmV2
aW91cyBkZWNvZGluZyB3YXMgY29tcGxldGVkIChtX2N1cnJlbnRGcmFtZSB3YXMgaW5jcmVtZW50
ZWQpIGFuZCBzdGFydGluZyBhIG5ldyBmcmFtZS4KKyAgICAvLyBJbiBib3RoIGNhc2VzIGZyYW1l
SW5kZXggaXMgZXF1YWwgdG8gbV9jdXJyZW50RnJhbWUuCisgICAgcmV0dXJuIGZyYW1lSW5kZXgg
IT0gbV9jdXJyZW50RnJhbWU7Cit9CisKK3ZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVyOjpyZXdpbmQo
KQoreworICAgIEp4bERlY29kZXJSZXdpbmQobV9kZWNvZGVyLmdldCgpKTsKKyAgICBKeGxEZWNv
ZGVyU3Vic2NyaWJlRXZlbnRzKG1fZGVjb2Rlci5nZXQoKSwgSlhMX0RFQ19CQVNJQ19JTkZPIHwg
SlhMX0RFQ19GUkFNRSB8IEpYTF9ERUNfRlVMTF9JTUFHRSk7CisgICAgbV9yZWFkT2Zmc2V0ID0g
MDsKKyAgICBtX2N1cnJlbnRGcmFtZSA9IDA7Cit9CisKK3ZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVy
Ojp1cGRhdGVGcmFtZUNvdW50KCkKK3sKKyAgICBpZiAoZmFpbGVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGRlY29kZShRdWVyeTo6RnJhbWVDb3VudCwgMCwgaXNBbGxEYXRhUmVjZWl2ZWQo
KSk7CisKKyAgICBpZiAobV9mcmFtZUNvdW50ICE9IG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkp
CisgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUobV9mcmFtZUNvdW50KTsKK30KKwor
dm9pZCBKUEVHWExJbWFnZURlY29kZXI6OmRlY29kZShRdWVyeSBxdWVyeSwgc2l6ZV90IGZyYW1l
SW5kZXgsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQoreworICAgIGVuc3VyZURlY29kZXJJbml0aWFs
aXplZCgpOworCisgICAgaWYgKGZhaWxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
c2hvdWxkUmV3aW5kKHF1ZXJ5LCBmcmFtZUluZGV4KSkgeworICAgICAgICByZXdpbmQoKTsKKyAg
ICAgICAgLy8gV2UgY2FyZSBhYm91dCB0aGUgZnJhbWVJbmRleCBvbmx5IGlmIHRoZSBxdWVyeSBp
cyBRdWVyeTo6RGVjb2RlZEltYWdlLgorICAgICAgICBpZiAocXVlcnkgPT0gUXVlcnk6OkRlY29k
ZWRJbWFnZSAmJiBmcmFtZUluZGV4KSB7CisgICAgICAgICAgICBKeGxEZWNvZGVyU2tpcEZyYW1l
cyhtX2RlY29kZXIuZ2V0KCksIGZyYW1lSW5kZXgpOworICAgICAgICAgICAgbV9jdXJyZW50RnJh
bWUgPSBmcmFtZUluZGV4OwogICAgICAgICB9CiAgICAgfQogCisgICAgbV9sYXN0UXVlcnkgPSBx
dWVyeTsKKwogICAgIG1fZGF0YS0+ZGF0YSgpOwogICAgIHNpemVfdCBkYXRhU2l6ZSA9IG1fZGF0
YS0+c2l6ZSgpOwogICAgIGlmIChKeGxEZWNvZGVyU2V0SW5wdXQobV9kZWNvZGVyLmdldCgpLCBt
X2RhdGEtPmRhdGEoKSArIG1fcmVhZE9mZnNldCwgZGF0YVNpemUgLSBtX3JlYWRPZmZzZXQpICE9
IEpYTF9ERUNfU1VDQ0VTUykgewpAQCAtOTMsNjEgKzIxMywxMDUgQEAgdm9pZCBKUEVHWExJbWFn
ZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEp4bERlY29kZXJTdGF0dXMgc3RhdHVzID0gcHJv
Y2Vzc0lucHV0KG9ubHlTaXplKTsKKyAgICBKeGxEZWNvZGVyU3RhdHVzIHN0YXR1cyA9IHByb2Nl
c3NJbnB1dChxdWVyeSk7CiAgICAgLy8gV2Ugc2V0IHRoZSBzdGF0dXMgYXMgZmFpbGVkIGlmIHRo
ZSBkZWNvZGVyIHJlcG9ydHMgYW4gZXJyb3Igb3IgcmVxdWlyZXMgbW9yZSBkYXRhIHdoaWxlIGFs
bCBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLgogICAgIGlmIChzdGF0dXMgPT0gSlhMX0RFQ19FUlJP
UiB8fCAoYWxsRGF0YVJlY2VpdmVkICYmIHN0YXR1cyA9PSBKWExfREVDX05FRURfTU9SRV9JTlBV
VCkpIHsKICAgICAgICAgc2V0RmFpbGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICAvLyBXZSByZWxlYXNlIHRoZSBkZWNvZGVyIHdoZW4gd2UgZmluaXNoIHRoZSBkZWNvZGluZy4K
LSAgICBpZiAoc3RhdHVzID09IEpYTF9ERUNfU1VDQ0VTUykgewotICAgICAgICBjbGVhcigpOwor
ICAgIGlmIChxdWVyeSA9PSBRdWVyeTo6RGVjb2RlZEltYWdlICYmIHN0YXR1cyA9PSBKWExfREVD
X0ZVTExfSU1BR0UgJiYgbV9pc0xhc3RGcmFtZUhlYWRlclJlY2VpdmVkICYmIG1fY3VycmVudEZy
YW1lID09IG1fZnJhbWVDb3VudCkgeworICAgICAgICAvLyBXZSBmcmVlIHRoZSBkZWNvZGVyIHdo
ZW4gdGhlIGxhc3QgZnJhbWUgaXMgZGVjb2RlZC4KKyAgICAgICAgbV9kZWNvZGVyLnJlc2V0KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBPdGhlcndpc2Ugd2UgZ2V0IHRoZSBk
ZWNvZGVyIHJlYWR5IGZvciBzdWJzZXF1ZW50IGRhdGEuCiAgICAgc2l6ZV90IHJlbWFpbmluZ0Rh
dGFTaXplID0gSnhsRGVjb2RlclJlbGVhc2VJbnB1dChtX2RlY29kZXIuZ2V0KCkpOwogICAgIG1f
cmVhZE9mZnNldCA9IGRhdGFTaXplIC0gcmVtYWluaW5nRGF0YVNpemU7CiB9CiAKLUp4bERlY29k
ZXJTdGF0dXMgSlBFR1hMSW1hZ2VEZWNvZGVyOjpwcm9jZXNzSW5wdXQoYm9vbCBvbmx5U2l6ZSkK
K0p4bERlY29kZXJTdGF0dXMgSlBFR1hMSW1hZ2VEZWNvZGVyOjpwcm9jZXNzSW5wdXQoUXVlcnkg
cXVlcnkpCiB7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgYXV0byBzdGF0dXMgPSBKeGxE
ZWNvZGVyUHJvY2Vzc0lucHV0KG1fZGVjb2Rlci5nZXQoKSk7CiAKKyAgICAgICAgLy8gUmV0dXJu
IEpYTF9ERUNfRVJST1Igd2hlbiB3ZSd2ZSByZWFjaGVkIEVPRiB3aXRob3V0IHJlY2VpdmluZyBh
IGZyYW1lIG1hcmtlZCBhcyAiaXNfbGFzdCIuCisgICAgICAgIGlmIChzdGF0dXMgPT0gSlhMX0RF
Q19TVUNDRVNTICYmICFtX2lzTGFzdEZyYW1lSGVhZGVyUmVjZWl2ZWQpCisgICAgICAgICAgICBy
ZXR1cm4gSlhMX0RFQ19FUlJPUjsKKwogICAgICAgICAvLyBKWExfREVDX0VSUk9SIGFuZCBKWExf
REVDX1NVQ0NFU1MgYXJlIHRlcm1pbmFsIHN0YXRlcy4gV2UgYWxzbyBleGl0IGZyb20gdGhlIGxv
b3AgaWYgbW9yZSBkYXRhIGlzIG5lZWRlZC4KICAgICAgICAgaWYgKHN0YXR1cyA9PSBKWExfREVD
X0VSUk9SIHx8IHN0YXR1cyA9PSBKWExfREVDX1NVQ0NFU1MgfHwgc3RhdHVzID09IEpYTF9ERUNf
TkVFRF9NT1JFX0lOUFVUKQogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKIAogICAgICAgICBp
ZiAoc3RhdHVzID09IEpYTF9ERUNfQkFTSUNfSU5GTykgewotICAgICAgICAgICAgSnhsQmFzaWNJ
bmZvIGJhc2ljSW5mbzsKLSAgICAgICAgICAgIGlmIChKeGxEZWNvZGVyR2V0QmFzaWNJbmZvKG1f
ZGVjb2Rlci5nZXQoKSwgJmJhc2ljSW5mbykgIT0gSlhMX0RFQ19TVUNDRVNTKQotICAgICAgICAg
ICAgICAgIHJldHVybiBKWExfREVDX0VSUk9SOworICAgICAgICAgICAgaWYgKCFtX2Jhc2ljSW5m
bykgeworICAgICAgICAgICAgICAgIEp4bEJhc2ljSW5mbyBiYXNpY0luZm87CisgICAgICAgICAg
ICAgICAgaWYgKEp4bERlY29kZXJHZXRCYXNpY0luZm8obV9kZWNvZGVyLmdldCgpLCAmYmFzaWNJ
bmZvKSAhPSBKWExfREVDX1NVQ0NFU1MpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKWExf
REVDX0VSUk9SOworCisgICAgICAgICAgICAgICAgbV9iYXNpY0luZm8gPSBiYXNpY0luZm87Cisg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHNldFNpemUoSW50U2l6ZShiYXNpY0luZm8ueHNp
emUsIGJhc2ljSW5mby55c2l6ZSkpOwotICAgICAgICAgICAgaWYgKG9ubHlTaXplKQorICAgICAg
ICAgICAgaWYgKHF1ZXJ5ID09IFF1ZXJ5OjpTaXplKSB7CisgICAgICAgICAgICAgICAgLy8gc2V0
U2l6ZSgpIG11c3QgYmUgY2FsbGVkIG9ubHkgaWYgdGhlIHF1ZXJ5IGlzIFF1ZXJ5OjpTaXplLAor
ICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSB0aGlzIHdvdWxkIHJvbGwgYmFjayB0aGUgZW5j
b2RlZCBkYXRhIHN0YXR1cyBmcm9tIGNvbXBsZXRlZC4KKyAgICAgICAgICAgICAgICBzZXRTaXpl
KEludFNpemUobV9iYXNpY0luZm8tPnhzaXplLCBtX2Jhc2ljSW5mby0+eXNpemUpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gc3RhdHVzOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdGF0dXMgPT0gSlhMX0RFQ19GUkFN
RSkgewogICAgICAgICAgICAgSnhsUGl4ZWxGb3JtYXQgZm9ybWF0IHsgNCwgSlhMX1RZUEVfVUlO
VDgsIEpYTF9OQVRJVkVfRU5ESUFOLCAwIH07CisgICAgICAgICAgICBKeGxGcmFtZUhlYWRlciBm
cmFtZUhlYWRlcjsKKyAgICAgICAgICAgIGlmIChKeGxEZWNvZGVyR2V0RnJhbWVIZWFkZXIobV9k
ZWNvZGVyLmdldCgpLCAmZnJhbWVIZWFkZXIpICE9IEpYTF9ERUNfU1VDQ0VTUykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gSlhMX0RFQ19FUlJPUjsKKworICAgICAgICAgICAgbV9mcmFtZUNvdW50
ID0gc3RkOjptYXgobV9mcmFtZUNvdW50LCBtX2N1cnJlbnRGcmFtZSArIDEpOworCisgICAgICAg
ICAgICBpZiAoZnJhbWVIZWFkZXIuaXNfbGFzdCkKKyAgICAgICAgICAgICAgICBtX2lzTGFzdEZy
YW1lSGVhZGVyUmVjZWl2ZWQgPSB0cnVlOworCisgICAgICAgICAgICBpZiAocXVlcnkgIT0gUXVl
cnk6OkRlY29kZWRJbWFnZSkgeworICAgICAgICAgICAgICAgIGlmIChKeGxEZWNvZGVyU2V0SW1h
Z2VPdXRDYWxsYmFjayhtX2RlY29kZXIuZ2V0KCksICZmb3JtYXQsIFtdKHZvaWQqLCBzaXplX3Qs
IHNpemVfdCwgc2l6ZV90LCBjb25zdCB2b2lkKikgeyB9LCBudWxscHRyKSAhPSBKWExfREVDX1NV
Q0NFU1MpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKWExfREVDX0VSUk9SOworCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICht
X2N1cnJlbnRGcmFtZSA+PSBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpKQorICAgICAgICAgICAg
ICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUobV9mcmFtZUNvdW50ICsgMSk7CisKKyAgICAg
ICAgICAgIGF1dG8mIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVttX2N1cnJlbnRGcmFtZV07
CisgICAgICAgICAgICBpZiAoYnVmZmVyLmlzSW52YWxpZCgpICYmIGJ1ZmZlci5pbml0aWFsaXpl
KHNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkgeworICAgICAgICAgICAgICAgIGJ1ZmZlci5z
ZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6UGFydGlhbCk7CisgICAgICAgICAgICAg
ICAgYnVmZmVyLnNldEhhc0FscGhhKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpZiAobV9iYXNp
Y0luZm8gJiYgbV9iYXNpY0luZm8tPmhhdmVfYW5pbWF0aW9uKSB7CisgICAgICAgICAgICAgICAg
ICAgIGJ1ZmZlci5zZXREdXJhdGlvbihTZWNvbmRzKChkb3VibGUpZnJhbWVIZWFkZXIuZHVyYXRp
b24gKiBtX2Jhc2ljSW5mby0+YW5pbWF0aW9uLnRwc19kZW5vbWluYXRvciAvIG1fYmFzaWNJbmZv
LT5hbmltYXRpb24udHBzX251bWVyYXRvcikpOworICAgICAgICAgICAgICAgICAgICBidWZmZXIu
c2V0RGlzcG9zYWxNZXRob2QoU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZTo6RGlzcG9zYWxNZXRo
b2Q6OkRvTm90RGlzcG9zZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICBpZiAoSnhsRGVjb2RlclNldEltYWdlT3V0Q2FsbGJhY2sobV9kZWNvZGVyLmdl
dCgpLCAmZm9ybWF0LCBpbWFnZU91dENhbGxiYWNrLCB0aGlzKSAhPSBKWExfREVDX1NVQ0NFU1Mp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpYTF9ERUNfRVJST1I7CisKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHN0YXR1cyA9PSBKWExfREVDX0ZVTExf
SU1BR0UpIHsKLSAgICAgICAgICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKG1fY3VycmVudEZyYW1l
IDwgbV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGJ1
ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVttX2N1cnJlbnRGcmFtZV07CisgICAgICAgICAgICAg
ICAgaWYgKCFidWZmZXIuaXNJbnZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5z
ZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpOworICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07Ci0g
ICAgICAgICAgICBpZiAoIWJ1ZmZlci5pc0ludmFsaWQoKSkKLSAgICAgICAgICAgICAgICBidWZm
ZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsKKyAgICAgICAg
ICAgIG1fY3VycmVudEZyYW1lKys7CisgICAgICAgICAgICBpZiAocXVlcnkgPT0gUXVlcnk6OkRl
Y29kZWRJbWFnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlhMX0RFQ19GVUxMX0lNQUdFOwog
Ci0gICAgICAgICAgICAvLyBUT0RPOiBUbyBzdXBwb3J0IGFuaW1hdGVkIEpQRUcgWEwgaW4gdGhl
IGZ1dHVyZSB3ZSBuZWVkIHRvIGhhbmRsZSBzdWJzZXF1ZW50IGRhdGEuCi0gICAgICAgICAgICBy
ZXR1cm4gSlhMX0RFQ19TVUNDRVNTOworICAgICAgICAgICAgQVNTRVJUKHF1ZXJ5ID09IFF1ZXJ5
OjpGcmFtZUNvdW50KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgfQog
fQpAQCAtMTU5LDE3ICszMjMsMTIgQEAgdm9pZCBKUEVHWExJbWFnZURlY29kZXI6OmltYWdlT3V0
Q2FsbGJhY2sodm9pZCogdGhhdCwgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3QKIAogdm9pZCBK
UEVHWExJbWFnZURlY29kZXI6OmltYWdlT3V0KHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IG51
bVBpeGVscywgY29uc3QgdWludDhfdCogcGl4ZWxzKQogewotICAgIGlmIChtX2ZyYW1lQnVmZmVy
Q2FjaGUuaXNFbXB0eSgpKQorICAgIGlmIChtX2N1cnJlbnRGcmFtZSA+PSBtX2ZyYW1lQnVmZmVy
Q2FjaGUuc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBidWZmZXIgPSBtX2Zy
YW1lQnVmZmVyQ2FjaGVbMF07Ci0gICAgaWYgKGJ1ZmZlci5pc0ludmFsaWQoKSkgewotICAgICAg
ICBpZiAoIWJ1ZmZlci5pbml0aWFsaXplKHNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVj
b2RpbmdTdGF0dXM6OlBhcnRpYWwpOwotICAgICAgICBidWZmZXIuc2V0SGFzQWxwaGEoZmFsc2Up
OwotICAgIH0KKyAgICBhdXRvJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50
RnJhbWVdOworICAgIGlmIChidWZmZXIuaXNJbnZhbGlkKCkpCisgICAgICAgIHJldHVybjsKIAog
ICAgIHVpbnQzMl90KiByb3cgPSBidWZmZXIuYmFja2luZ1N0b3JlKCktPnBpeGVsQXQoeCwgeSk7
CiAgICAgdWludDMyX3QqIGN1cnJlbnRBZGRyZXNzID0gcm93OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdYTEltYWdlRGVjb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdY
TEltYWdlRGVjb2Rlci5oCmluZGV4IGEwOWQ1YzlkZGRjZi4uZmQ1MjI0ZWRiZTE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVneGwvSlBFR1hM
SW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZ3hsL0pQRUdYTEltYWdlRGVjb2Rlci5oCkBAIC00NSwyNSArNDUsNTAgQEAgcHVibGlj
OgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRl
bnNpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAianhsIl9zOyB9CisgICAgc2l6ZV90IGZy
YW1lQ291bnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlv
bkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSog
ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUpIG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBzZXRGYWlsZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBKUEVHWExJbWFn
ZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLSAgICB2
b2lkIHRyeURlY29kZVNpemUoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2Rl
KHRydWUsIGFsbERhdGFSZWNlaXZlZCk7IH0KKyAgICBlbnVtIGNsYXNzIFF1ZXJ5IHsKKyAgICAg
ICAgLy8gVGhpcyBxdWVyeSBpcyB1c2VkIGZvciB0cnlEZWNvZGVTaXplKCkuCisgICAgICAgIFNp
emUsCisgICAgICAgIC8vIFdlIGRlZmluZSBhIHF1ZXJ5IGZvciBmcmFtZSBjb3VudCBiZWNhdXNl
IEpQRUcgWEwgZG9lc24ndCBoYXZlIGZyYW1lIGNvdW50IGluZm9ybWF0aW9uIGluIGl0cyBjb2Rl
IHN0cmVhbQorICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHNjYW4gdGhlIGNvZGUgc3RyZWFtIHRv
IGdldCB0aGUgZnJhbWUgY291bnQgZm9yIGFuaW1hdGVkIEpQRUcgWEwuCisgICAgICAgIC8vIEpQ
RUcgWEwgY29udGFpbmVyIGNhbiBoYXZlIGZyYW1lIGNvdW50IG1ldGFkYXRhIGJ1dCBjdXJyZW50
bHkgbGlianhsIGRvZXNuJ3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgRnJhbWVDb3VudCwKKyAgICAg
ICAgLy8gUXVlcnkgdG8gZGVjb2RlIGEgc2luZ2xlIGZyYW1lLgorICAgICAgICBEZWNvZGVkSW1h
Z2UsCisgICAgfTsKIAotICAgIHZvaWQgZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKTsKKyAgICBKUEVHWExJbWFnZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICB2b2lkIHRyeURlY29kZVNpemUoYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBjbGVhcigpOworICAgIGJvb2wgaGFzQWxw
aGEoKSBjb25zdDsKKyAgICBib29sIGhhc0FuaW1hdGlvbigpIGNvbnN0OwogCi0gICAgSnhsRGVj
b2RlclN0YXR1cyBwcm9jZXNzSW5wdXQoYm9vbCBvbmx5U2l6ZSk7CisgICAgdm9pZCBlbnN1cmVE
ZWNvZGVySW5pdGlhbGl6ZWQoKTsKKyAgICBib29sIHNob3VsZFJld2luZChRdWVyeSAsIHNpemVf
dCBmcmFtZUluZGV4KSBjb25zdDsKKyAgICB2b2lkIHJld2luZCgpOworICAgIHZvaWQgdXBkYXRl
RnJhbWVDb3VudCgpOwogCi0gICAgc3RhdGljIHZvaWQgaW1hZ2VPdXRDYWxsYmFjayh2b2lkKiB0
aGF0LCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCBudW1QaXhlbHMsIGNvbnN0IHZvaWQqIHBp
eGVscyk7CisgICAgdm9pZCBkZWNvZGUoUXVlcnksIHNpemVfdCBmcmFtZUluZGV4LCBib29sIGFs
bERhdGFSZWNlaXZlZCk7CisgICAgSnhsRGVjb2RlclN0YXR1cyBwcm9jZXNzSW5wdXQoUXVlcnkp
OworICAgIHN0YXRpYyB2b2lkIGltYWdlT3V0Q2FsbGJhY2sodm9pZCosIHNpemVfdCB4LCBzaXpl
X3QgeSwgc2l6ZV90IG51bVBpeGVscywgY29uc3Qgdm9pZCogcGl4ZWxzKTsKICAgICB2b2lkIGlt
YWdlT3V0KHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IG51bVBpeGVscywgY29uc3QgdWludDhf
dCogcGl4ZWxzKTsKIAogICAgIEp4bERlY29kZXJQdHIgbV9kZWNvZGVyOwotICAgIHNpemVfdCBt
X3JlYWRPZmZzZXQgPSAwOworICAgIHNpemVfdCBtX3JlYWRPZmZzZXQgeyAwIH07CisgICAgc3Rk
OjpvcHRpb25hbDxKeGxCYXNpY0luZm8+IG1fYmFzaWNJbmZvOworCisgICAgUXVlcnkgbV9sYXN0
UXVlcnkgeyBRdWVyeTo6U2l6ZSB9OworICAgIHNpemVfdCBtX2ZyYW1lQ291bnQgeyAxIH07Cisg
ICAgc2l6ZV90IG1fY3VycmVudEZyYW1lIHsgMCB9OworCisgICAgYm9vbCBtX2lzTGFzdEZyYW1l
SGVhZGVyUmVjZWl2ZWQgeyBmYWxzZSB9OyAvLyBJZiB0aGlzIGlzIHRydWUsIHdlIGtub3cgd2Ug
ZG9uJ3QgbmVlZCB0byB1cGRhdGUgbV9mcmFtZUNvdW50LgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446154</attachid>
            <date>2021-12-07 04:17:49 -0800</date>
            <delta_ts>2021-12-07 04:28:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233545-20211207211750.patch</filename>
            <type>text/plain</type>
            <size>26533</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ1ZDNmM2Q4MzhmMDlm
NDI0ZWI2NGNmMzEwNTNmMDVkM2Q0OWU3Yy4uZDExMzdiNWZmNzJmZjA3MTk5ZmY0Mjc5NDg2MTFh
ODkxYTdhYWE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTEyLTA3ICBZb3No
aWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29ueS5jb20+CisKKyAgICAgICAg
U3VwcG9ydCBBbmltYXRlZCBKUEVHLVhMIGltYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NjA3NzE0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgcmVsZXZhbnQgQVBJLCBzdWNoIGFzIGZyYW1lQ291bnQoKSBhbmQgc3VwcG9y
dCBhIHBvc2l0aXZlCisgICAgICAgIGZyYW1lIGluZGV4IGZvciBmcmFtZUJ1ZmZlckF0SW5kZXgo
KS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBxdWVyeSB0byBjb3VudCBmcmFtZXMgYmVjYXVzZSBK
UEVHIFhMIGNvZGUgc3RyZWFtIGl0c2VsZiBkb2Vzbid0IGhhdmUgZnJhbWUKKyAgICAgICAgY291
bnQgbWV0YWRhdGEgYW5kIHdlIG5lZWQgdG8gc2NhbiB0aGUgY29kZSBzdHJlYW0gdG8gdGhlIGxh
c3QgZnJhbWUuCisKKyAgICAgICAgQWxzbyBpbnRyb2R1Y2UgdGhlIFNpemUgcXVlcnkgaW5zdGVh
ZCBvZiB0aGUgb25seVNpemUgcGFyYW1ldGVyIG9mIHRoZSBkZWNvZGUoKSBmdW5jdGlvbi4KKwor
ICAgICAgICBXaXRoIHRoZSBEZWNvZGVJbWFnZSBxdWVyeSwgdGhlIGRlY29kZXIgZGVjb2RlcyBh
IHNpbmdsZSBmcmFtZS4gVG8KKyAgICAgICAgc3BlY2lmeSB3aGljaCBmcmFtZSB0byBkZWNvZGUs
IHdlIG1ha2UgdXNlIG9mIHRoZSBKeGxEZWNvZGVyUmV3aW5kKCkKKyAgICAgICAgYW5kIEp4bERl
Y29kZXJTa2lwRnJhbWVzKCkgZnVuY3Rpb25zIG9mIGxpYmp4bC4KKworICAgICAgICBUbyBvbWl0
IHJld2luZCBhbmQgc2tpcCBhcyBtdWNoIGFzIHBvc3NpYmxlLCB3ZSByZWNvcmQgdGhlIHF1ZXJ5
IHRvCisgICAgICAgIG1fbGFzdFF1ZXJ5IGFuZCB1c2UgaXQgaW4gc2hvdWxkUmV3aW5kKCkuCisK
KyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMvYW5pbWF0ZWQtanBlZ3hsLWxvb3AtY291bnQuaHRt
bAorCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdYTEltYWdl
RGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHWExJbWFnZURlY29kZXI6On5KUEVH
WExJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR1hMSW1hZ2VEZWNvZGVyOjpm
cmFtZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdlRGVjb2Rlcjo6
cmVwZXRpdGlvbkNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdlRGVj
b2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdl
RGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdY
TEltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdl
RGVjb2Rlcjo6dHJ5RGVjb2RlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHWExJbWFnZURl
Y29kZXI6Omhhc0FscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdlRGVj
b2Rlcjo6aGFzQW5pbWF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdl
RGVjb2Rlcjo6ZW5zdXJlRGVjb2RlckluaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNvcmU6OkpQ
RUdYTEltYWdlRGVjb2Rlcjo6c2hvdWxkUmV3aW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkpQRUdYTEltYWdlRGVjb2Rlcjo6cmV3aW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTElt
YWdlRGVjb2Rlcjo6dXBkYXRlRnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHWExJ
bWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHWExJbWFnZURlY29k
ZXI6OnByb2Nlc3NJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHWExJbWFnZURlY29kZXI6
OmltYWdlT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdlRGVjb2Rlcjo6Y2xlYXIp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVH
WExJbWFnZURlY29kZXIuaDoKKwogMjAyMS0xMi0wNiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBVbmlmeSBHcmlkIG92
ZXJsYXkgZHJhd2luZyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVneGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIuY3Bw
CmluZGV4IDUxMjk3YTE3NThjMThiZDk3NGY2MGZiYWM1NmUwNzZlMGI2MjlkMjYuLjEzZDJjNTA5
Zjc4MmIyMDExMGI2YzQwOTk1NGQ4ZjAxMGU2YWI0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVH
WExJbWFnZURlY29kZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBVU0UoSlBFR1hMKQog
CisjaW5jbHVkZSA8b3B0aW9uYWw+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlBFR1hMSW1h
Z2VEZWNvZGVyOjpKUEVHWExJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQpAQCAt
MzcsNTUgKzM5LDE3NiBAQCBKUEVHWExJbWFnZURlY29kZXI6OkpQRUdYTEltYWdlRGVjb2RlcihB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBybwogCiBKUEVHWExJbWFnZURl
Y29kZXI6On5KUEVHWExJbWFnZURlY29kZXIoKQogewotICAgIGNsZWFyKCk7Cit9CisKK3NpemVf
dCBKUEVHWExJbWFnZURlY29kZXI6OmZyYW1lQ291bnQoKSBjb25zdAoreworICAgIGlmICghaGFz
QW5pbWF0aW9uKCkpCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKCFtX2lzTGFzdEZyYW1l
SGVhZGVyUmVjZWl2ZWQpCisgICAgICAgIGNvbnN0X2Nhc3Q8SlBFR1hMSW1hZ2VEZWNvZGVyKj4o
dGhpcyktPnVwZGF0ZUZyYW1lQ291bnQoKTsKKworICAgIHJldHVybiBtX2ZyYW1lQ291bnQ7Cit9
CisKK1JlcGV0aXRpb25Db3VudCBKUEVHWExJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCgp
IGNvbnN0Cit7CisgICAgaWYgKGhhc0FuaW1hdGlvbigpKSB7CisgICAgICAgIGlmICghbV9iYXNp
Y0luZm8tPmFuaW1hdGlvbi5udW1fbG9vcHMpIHsKKyAgICAgICAgICAgIC8vIElmIG51bV9sb29w
cyBpcyB6ZXJvLCByZXBlYXQgaW5maW5pdGVseS4KKyAgICAgICAgICAgIHJldHVybiBSZXBldGl0
aW9uQ291bnRJbmZpbml0ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9iYXNpY0luZm8t
PmFuaW1hdGlvbi5udW1fbG9vcHM7CisgICAgfQorICAgIHJldHVybiBSZXBldGl0aW9uQ291bnRO
b25lOwogfQogCiBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBKUEVHWExJbWFnZURlY29kZXI6
OmZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgLy8gVE9ETzogVG8gc3Vw
cG9ydCBhbmltYXRlZCBKUEVHIFhMIGluIHRoZSBmdXR1cmUgd2UgbmVlZCB0byBoYW5kbGUgc2Vj
b25kIGFuZCBzdWJzZXF1ZW50IGZyYW1lcy4KLSAgICBpZiAoaW5kZXgpCisgICAgaWYgKFNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cygpIDwgRW5jb2RlZERhdGFTdGF0dXM6
OlNpemVBdmFpbGFibGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgaWYgKGluZGV4
ID49IGZyYW1lQ291bnQoKSkKKyAgICAgICAgaW5kZXggPSBmcmFtZUNvdW50KCkgLSAxOworCiAg
ICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZm
ZXJDYWNoZS5ncm93KDEpOwogCi0gICAgYXV0byYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVb
MF07CisgICAgYXV0byYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdOwogICAgIGlm
ICghZnJhbWUuaXNDb21wbGV0ZSgpKQotICAgICAgICBkZWNvZGUoZmFsc2UsIGlzQWxsRGF0YVJl
Y2VpdmVkKCkpOworICAgICAgICBkZWNvZGUoUXVlcnk6OkRlY29kZWRJbWFnZSwgaW5kZXgsIGlz
QWxsRGF0YVJlY2VpdmVkKCkpOwogICAgIHJldHVybiAmZnJhbWU7CiB9CiAKLXZvaWQgSlBFR1hM
SW1hZ2VEZWNvZGVyOjpjbGVhcigpCit2b2lkIEpQRUdYTEltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFt
ZUJ1ZmZlckNhY2hlKHNpemVfdCBjbGVhckJlZm9yZUZyYW1lKQogewotICAgIG1fZGVjb2Rlci5y
ZXNldCgpOwotICAgIG1fcmVhZE9mZnNldCA9IDA7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNo
ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFVubGlrZSB0aGUgcG5nIGFu
ZCBnaWYgY2FzZXMsIHdlIGNhbiBhbHdheXMgdHJ5IHRvIGNsZWFyIGZyYW1lcyBiZWZvcmUgImNs
ZWFyQmVmb3JlRnJhbWUiIGJlY2F1c2UKKyAgICAvLyB0aGUgZGVwZW5kZW5jaXkgdG8gdGhlIHBy
ZXZpb3VzIGZyYW1lIGlzIGhhbmRsZWQgYnkgbGlianhsLgorICAgIGNvbnN0IFZlY3RvcjxTY2Fs
YWJsZUltYWdlRGVjb2RlckZyYW1lPjo6aXRlcmF0b3IgZW5kKG1fZnJhbWVCdWZmZXJDYWNoZS5i
ZWdpbigpICsgY2xlYXJCZWZvcmVGcmFtZSk7CisKKyAgICBmb3IgKFZlY3RvcjxTY2FsYWJsZUlt
YWdlRGVjb2RlckZyYW1lPjo6aXRlcmF0b3IgaShtX2ZyYW1lQnVmZmVyQ2FjaGUuYmVnaW4oKSk7
IGkgIT0gZW5kOyArK2kpIHsKKyAgICAgICAgLy8gSWYgdGhlIGZyYW1lIGlzIHBhcnRpYWwsIHdl
J3JlIGRlY29kaW5nIGl0LCBzbyB3ZSBkb24ndCBjbGVhciBpdC4KKyAgICAgICAgaWYgKCFpLT5p
c1BhcnRpYWwoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGktPmNsZWFyKCk7
CisgICAgfQogfQogCiBib29sIEpQRUdYTEltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCkKIHsKLSAg
ICBjbGVhcigpOworICAgIG1fZGVjb2Rlci5yZXNldCgpOwogICAgIHJldHVybiBTY2FsYWJsZUlt
YWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCk7CiB9CiAKLXZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVyOjpk
ZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEpQRUdYTElt
YWdlRGVjb2Rlcjo6dHJ5RGVjb2RlU2l6ZShib29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICBp
ZiAobV9iYXNpY0luZm8pCisgICAgICAgIHJldHVybjsKKyAgICBkZWNvZGUoUXVlcnk6OlNpemUs
IDAsIGFsbERhdGFSZWNlaXZlZCk7Cit9CisKK2Jvb2wgSlBFR1hMSW1hZ2VEZWNvZGVyOjpoYXNB
bHBoYSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYmFzaWNJbmZvICYmIG1fYmFzaWNJbmZvLT5h
bHBoYV9iaXRzID4gMDsKK30KKworYm9vbCBKUEVHWExJbWFnZURlY29kZXI6Omhhc0FuaW1hdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYmFzaWNJbmZvICYmIG1fYmFzaWNJbmZvLT5oYXZl
X2FuaW1hdGlvbjsKK30KKwordm9pZCBKUEVHWExJbWFnZURlY29kZXI6OmVuc3VyZURlY29kZXJJ
bml0aWFsaXplZCgpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAg
ICBpZiAobV9kZWNvZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RlY29kZXIgPSBKeGxE
ZWNvZGVyTWFrZShudWxscHRyKTsKICAgICBpZiAoIW1fZGVjb2RlcikgewotICAgICAgICBjbGVh
cigpOwotICAgICAgICBtX2RlY29kZXIgPSBKeGxEZWNvZGVyTWFrZShudWxscHRyKTsKLSAgICAg
ICAgaWYgKCFtX2RlY29kZXIpIHsKLSAgICAgICAgICAgIHNldEZhaWxlZCgpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIHNldEZhaWxlZCgpOworICAgICAgICByZXR1
cm47CisgICAgfQogCi0gICAgICAgIGlmIChKeGxEZWNvZGVyU3Vic2NyaWJlRXZlbnRzKG1fZGVj
b2Rlci5nZXQoKSwgSlhMX0RFQ19CQVNJQ19JTkZPIHwgSlhMX0RFQ19GUkFNRSB8IEpYTF9ERUNf
RlVMTF9JTUFHRSkgIT0gSlhMX0RFQ19TVUNDRVNTKSB7Ci0gICAgICAgICAgICBzZXRGYWlsZWQo
KTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBpZiAoSnhsRGVjb2RlclN1YnNjcmliZUV2ZW50
cyhtX2RlY29kZXIuZ2V0KCksIEpYTF9ERUNfQkFTSUNfSU5GTyB8IEpYTF9ERUNfRlJBTUUgfCBK
WExfREVDX0ZVTExfSU1BR0UpICE9IEpYTF9ERUNfU1VDQ0VTUykgeworICAgICAgICBzZXRGYWls
ZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcmVhZE9mZnNldCA9IDA7Cisg
ICAgbV9jdXJyZW50RnJhbWUgPSAwOworICAgIG1fbGFzdFF1ZXJ5ID0gUXVlcnk6OlNpemU7Cit9
CisKK2Jvb2wgSlBFR1hMSW1hZ2VEZWNvZGVyOjpzaG91bGRSZXdpbmQoUXVlcnkgcXVlcnksIHNp
emVfdCBmcmFtZUluZGV4KSBjb25zdAoreworICAgIGlmIChtX2xhc3RRdWVyeSA9PSBRdWVyeTo6
RnJhbWVDb3VudCkgeworICAgICAgICBpZiAocXVlcnkgPT0gUXVlcnk6OkZyYW1lQ291bnQpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIENvbnRpbnVlIGNvdW50aW5nIGZyYW1lcy4KKyAg
ICAgICAgcmV0dXJuIHRydWU7IC8vIEluIHRoaXMgY2FzZSB0aGUgZGVjb2RlciBoYXMgcmVhY2hl
ZCB0aGUgRU9GIGFuZCBuZWVkcyByZXdpbmQuCisgICAgfQorCisgICAgaWYgKG1fbGFzdFF1ZXJ5
ID09IFF1ZXJ5OjpTaXplKSB7CisgICAgICAgIC8vIFRoZSBkZWNvZGVyIGlzIGF0IHRoZSBzdHJl
YW0gaGVhZGVyIGFuZCBkb2Vzbid0IG5lZWQgcmV3aW5kLgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IG1fbGFzdFF1ZXJ5IGlzIFF1
ZXJ5OjpEZWNvZGVkSW1hZ2UuCisKKyAgICBpZiAocXVlcnkgIT0gUXVlcnk6OkRlY29kZWRJbWFn
ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBUaGVyZSdzIHR3byBjYXNlcyB3aGVy
ZSB3ZSBkb24ndCBuZWVkIHRvIHJld2luZDoKKyAgICAvLyAgIDEuIFByZXZpb3VzIGRlY29kaW5n
IHdhcyBpbnRlcnJ1cHRlZCB3aXRoIEpYTF9ERUNfTkVFRF9NT1JFX0lOUFVUCisgICAgLy8gICAg
ICBhbmQgdHJ5aW5nIHRvIGNvbnRpbnVlIGRlY29kaW5nIHRoZSBzYW1lIGZyYW1lLgorICAgIC8v
ICAgMi4gUHJldmlvdXMgZGVjb2Rpbmcgd2FzIGNvbXBsZXRlZCAobV9jdXJyZW50RnJhbWUgd2Fz
IGluY3JlbWVudGVkKSBhbmQgc3RhcnRpbmcgYSBuZXcgZnJhbWUuCisgICAgLy8gSW4gYm90aCBj
YXNlcyBmcmFtZUluZGV4IGlzIGVxdWFsIHRvIG1fY3VycmVudEZyYW1lLgorICAgIHJldHVybiBm
cmFtZUluZGV4ICE9IG1fY3VycmVudEZyYW1lOworfQorCit2b2lkIEpQRUdYTEltYWdlRGVjb2Rl
cjo6cmV3aW5kKCkKK3sKKyAgICBKeGxEZWNvZGVyUmV3aW5kKG1fZGVjb2Rlci5nZXQoKSk7Cisg
ICAgSnhsRGVjb2RlclN1YnNjcmliZUV2ZW50cyhtX2RlY29kZXIuZ2V0KCksIEpYTF9ERUNfQkFT
SUNfSU5GTyB8IEpYTF9ERUNfRlJBTUUgfCBKWExfREVDX0ZVTExfSU1BR0UpOworICAgIG1fcmVh
ZE9mZnNldCA9IDA7CisgICAgbV9jdXJyZW50RnJhbWUgPSAwOworfQorCit2b2lkIEpQRUdYTElt
YWdlRGVjb2Rlcjo6dXBkYXRlRnJhbWVDb3VudCgpCit7CisgICAgaWYgKGZhaWxlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBkZWNvZGUoUXVlcnk6OkZyYW1lQ291bnQsIDAsIGlzQWxsRGF0
YVJlY2VpdmVkKCkpOworCisgICAgaWYgKG1fZnJhbWVDb3VudCAhPSBtX2ZyYW1lQnVmZmVyQ2Fj
aGUuc2l6ZSgpKQorICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fZnJhbWVDb3Vu
dCk7Cit9CisKK3ZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVyOjpkZWNvZGUoUXVlcnkgcXVlcnksIHNp
emVfdCBmcmFtZUluZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICBlbnN1cmVEZWNv
ZGVySW5pdGlhbGl6ZWQoKTsKKworICAgIGlmIChmYWlsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKHNob3VsZFJld2luZChxdWVyeSwgZnJhbWVJbmRleCkpIHsKKyAgICAgICAgcmV3
aW5kKCk7CisgICAgICAgIC8vIFdlIGNhcmUgYWJvdXQgdGhlIGZyYW1lSW5kZXggb25seSBpZiB0
aGUgcXVlcnkgaXMgUXVlcnk6OkRlY29kZWRJbWFnZS4KKyAgICAgICAgaWYgKHF1ZXJ5ID09IFF1
ZXJ5OjpEZWNvZGVkSW1hZ2UgJiYgZnJhbWVJbmRleCkgeworICAgICAgICAgICAgSnhsRGVjb2Rl
clNraXBGcmFtZXMobV9kZWNvZGVyLmdldCgpLCBmcmFtZUluZGV4KTsKKyAgICAgICAgICAgIG1f
Y3VycmVudEZyYW1lID0gZnJhbWVJbmRleDsKICAgICAgICAgfQogICAgIH0KIAorICAgIG1fbGFz
dFF1ZXJ5ID0gcXVlcnk7CisKICAgICBtX2RhdGEtPmRhdGEoKTsKICAgICBzaXplX3QgZGF0YVNp
emUgPSBtX2RhdGEtPnNpemUoKTsKICAgICBpZiAoSnhsRGVjb2RlclNldElucHV0KG1fZGVjb2Rl
ci5nZXQoKSwgbV9kYXRhLT5kYXRhKCkgKyBtX3JlYWRPZmZzZXQsIGRhdGFTaXplIC0gbV9yZWFk
T2Zmc2V0KSAhPSBKWExfREVDX1NVQ0NFU1MpIHsKQEAgLTkzLDYxICsyMTYsMTA1IEBAIHZvaWQg
SlBFR1hMSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBKeGxEZWNvZGVyU3RhdHVzIHN0
YXR1cyA9IHByb2Nlc3NJbnB1dChvbmx5U2l6ZSk7CisgICAgSnhsRGVjb2RlclN0YXR1cyBzdGF0
dXMgPSBwcm9jZXNzSW5wdXQocXVlcnkpOwogICAgIC8vIFdlIHNldCB0aGUgc3RhdHVzIGFzIGZh
aWxlZCBpZiB0aGUgZGVjb2RlciByZXBvcnRzIGFuIGVycm9yIG9yIHJlcXVpcmVzIG1vcmUgZGF0
YSB3aGlsZSBhbGwgZGF0YSBoYXMgYmVlbiByZWNlaXZlZC4KICAgICBpZiAoc3RhdHVzID09IEpY
TF9ERUNfRVJST1IgfHwgKGFsbERhdGFSZWNlaXZlZCAmJiBzdGF0dXMgPT0gSlhMX0RFQ19ORUVE
X01PUkVfSU5QVVQpKSB7CiAgICAgICAgIHNldEZhaWxlZCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgLy8gV2UgcmVsZWFzZSB0aGUgZGVjb2RlciB3aGVuIHdlIGZpbmlzaCB0aGUg
ZGVjb2RpbmcuCi0gICAgaWYgKHN0YXR1cyA9PSBKWExfREVDX1NVQ0NFU1MpIHsKLSAgICAgICAg
Y2xlYXIoKTsKKyAgICBpZiAocXVlcnkgPT0gUXVlcnk6OkRlY29kZWRJbWFnZSAmJiBzdGF0dXMg
PT0gSlhMX0RFQ19GVUxMX0lNQUdFICYmIG1faXNMYXN0RnJhbWVIZWFkZXJSZWNlaXZlZCAmJiBt
X2N1cnJlbnRGcmFtZSA9PSBtX2ZyYW1lQ291bnQpIHsKKyAgICAgICAgLy8gV2UgZnJlZSB0aGUg
ZGVjb2RlciB3aGVuIHRoZSBsYXN0IGZyYW1lIGlzIGRlY29kZWQuCisgICAgICAgIG1fZGVjb2Rl
ci5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gT3RoZXJ3aXNlIHdl
IGdldCB0aGUgZGVjb2RlciByZWFkeSBmb3Igc3Vic2VxdWVudCBkYXRhLgogICAgIHNpemVfdCBy
ZW1haW5pbmdEYXRhU2l6ZSA9IEp4bERlY29kZXJSZWxlYXNlSW5wdXQobV9kZWNvZGVyLmdldCgp
KTsKICAgICBtX3JlYWRPZmZzZXQgPSBkYXRhU2l6ZSAtIHJlbWFpbmluZ0RhdGFTaXplOwogfQog
Ci1KeGxEZWNvZGVyU3RhdHVzIEpQRUdYTEltYWdlRGVjb2Rlcjo6cHJvY2Vzc0lucHV0KGJvb2wg
b25seVNpemUpCitKeGxEZWNvZGVyU3RhdHVzIEpQRUdYTEltYWdlRGVjb2Rlcjo6cHJvY2Vzc0lu
cHV0KFF1ZXJ5IHF1ZXJ5KQogewogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGF1dG8gc3Rh
dHVzID0gSnhsRGVjb2RlclByb2Nlc3NJbnB1dChtX2RlY29kZXIuZ2V0KCkpOwogCisgICAgICAg
IC8vIFJldHVybiBKWExfREVDX0VSUk9SIHdoZW4gd2UndmUgcmVhY2hlZCBFT0Ygd2l0aG91dCBy
ZWNlaXZpbmcgYSBmcmFtZSBtYXJrZWQgYXMgImlzX2xhc3QiLgorICAgICAgICBpZiAoc3RhdHVz
ID09IEpYTF9ERUNfU1VDQ0VTUyAmJiAhbV9pc0xhc3RGcmFtZUhlYWRlclJlY2VpdmVkKQorICAg
ICAgICAgICAgcmV0dXJuIEpYTF9ERUNfRVJST1I7CisKICAgICAgICAgLy8gSlhMX0RFQ19FUlJP
UiBhbmQgSlhMX0RFQ19TVUNDRVNTIGFyZSB0ZXJtaW5hbCBzdGF0ZXMuIFdlIGFsc28gZXhpdCBm
cm9tIHRoZSBsb29wIGlmIG1vcmUgZGF0YSBpcyBuZWVkZWQuCiAgICAgICAgIGlmIChzdGF0dXMg
PT0gSlhMX0RFQ19FUlJPUiB8fCBzdGF0dXMgPT0gSlhMX0RFQ19TVUNDRVNTIHx8IHN0YXR1cyA9
PSBKWExfREVDX05FRURfTU9SRV9JTlBVVCkKICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CiAK
ICAgICAgICAgaWYgKHN0YXR1cyA9PSBKWExfREVDX0JBU0lDX0lORk8pIHsKLSAgICAgICAgICAg
IEp4bEJhc2ljSW5mbyBiYXNpY0luZm87Ci0gICAgICAgICAgICBpZiAoSnhsRGVjb2RlckdldEJh
c2ljSW5mbyhtX2RlY29kZXIuZ2V0KCksICZiYXNpY0luZm8pICE9IEpYTF9ERUNfU1VDQ0VTUykK
LSAgICAgICAgICAgICAgICByZXR1cm4gSlhMX0RFQ19FUlJPUjsKKyAgICAgICAgICAgIGlmICgh
bV9iYXNpY0luZm8pIHsKKyAgICAgICAgICAgICAgICBKeGxCYXNpY0luZm8gYmFzaWNJbmZvOwor
ICAgICAgICAgICAgICAgIGlmIChKeGxEZWNvZGVyR2V0QmFzaWNJbmZvKG1fZGVjb2Rlci5nZXQo
KSwgJmJhc2ljSW5mbykgIT0gSlhMX0RFQ19TVUNDRVNTKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlhMX0RFQ19FUlJPUjsKKworICAgICAgICAgICAgICAgIG1fYmFzaWNJbmZvID0gYmFz
aWNJbmZvOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzZXRTaXplKEludFNpemUoYmFz
aWNJbmZvLnhzaXplLCBiYXNpY0luZm8ueXNpemUpKTsKLSAgICAgICAgICAgIGlmIChvbmx5U2l6
ZSkKKyAgICAgICAgICAgIGlmIChxdWVyeSA9PSBRdWVyeTo6U2l6ZSkgeworICAgICAgICAgICAg
ICAgIC8vIHNldFNpemUoKSBtdXN0IGJlIGNhbGxlZCBvbmx5IGlmIHRoZSBxdWVyeSBpcyBRdWVy
eTo6U2l6ZSwKKyAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgdGhpcyB3b3VsZCByb2xsIGJh
Y2sgdGhlIGVuY29kZWQgZGF0YSBzdGF0dXMgZnJvbSBjb21wbGV0ZWQuCisgICAgICAgICAgICAg
ICAgc2V0U2l6ZShJbnRTaXplKG1fYmFzaWNJbmZvLT54c2l6ZSwgbV9iYXNpY0luZm8tPnlzaXpl
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc3RhdHVzID09IEpY
TF9ERUNfRlJBTUUpIHsKICAgICAgICAgICAgIEp4bFBpeGVsRm9ybWF0IGZvcm1hdCB7IDQsIEpY
TF9UWVBFX1VJTlQ4LCBKWExfTkFUSVZFX0VORElBTiwgMCB9OworICAgICAgICAgICAgSnhsRnJh
bWVIZWFkZXIgZnJhbWVIZWFkZXI7CisgICAgICAgICAgICBpZiAoSnhsRGVjb2RlckdldEZyYW1l
SGVhZGVyKG1fZGVjb2Rlci5nZXQoKSwgJmZyYW1lSGVhZGVyKSAhPSBKWExfREVDX1NVQ0NFU1Mp
CisgICAgICAgICAgICAgICAgcmV0dXJuIEpYTF9ERUNfRVJST1I7CisKKyAgICAgICAgICAgIG1f
ZnJhbWVDb3VudCA9IHN0ZDo6bWF4KG1fZnJhbWVDb3VudCwgbV9jdXJyZW50RnJhbWUgKyAxKTsK
KworICAgICAgICAgICAgaWYgKGZyYW1lSGVhZGVyLmlzX2xhc3QpCisgICAgICAgICAgICAgICAg
bV9pc0xhc3RGcmFtZUhlYWRlclJlY2VpdmVkID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKHF1
ZXJ5ICE9IFF1ZXJ5OjpEZWNvZGVkSW1hZ2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoSnhsRGVj
b2RlclNldEltYWdlT3V0Q2FsbGJhY2sobV9kZWNvZGVyLmdldCgpLCAmZm9ybWF0LCBbXSh2b2lk
Kiwgc2l6ZV90LCBzaXplX3QsIHNpemVfdCwgY29uc3Qgdm9pZCopIHsgfSwgbnVsbHB0cikgIT0g
SlhMX0RFQ19TVUNDRVNTKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlhMX0RFQ19FUlJP
UjsKKworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAobV9jdXJyZW50RnJhbWUgPj0gbV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSkKKyAg
ICAgICAgICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fZnJhbWVDb3VudCArIDEp
OworCisgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJy
ZW50RnJhbWVdOworICAgICAgICAgICAgaWYgKGJ1ZmZlci5pc0ludmFsaWQoKSAmJiBidWZmZXIu
aW5pdGlhbGl6ZShzaXplKCksIG1fcHJlbXVsdGlwbHlBbHBoYSkpIHsKKyAgICAgICAgICAgICAg
ICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwpOworICAg
ICAgICAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShmYWxzZSk7CisgICAgICAgICAgICAgICAg
aWYgKG1fYmFzaWNJbmZvICYmIG1fYmFzaWNJbmZvLT5oYXZlX2FuaW1hdGlvbikgeworICAgICAg
ICAgICAgICAgICAgICBidWZmZXIuc2V0RHVyYXRpb24oU2Vjb25kcygoZG91YmxlKWZyYW1lSGVh
ZGVyLmR1cmF0aW9uICogbV9iYXNpY0luZm8tPmFuaW1hdGlvbi50cHNfZGVub21pbmF0b3IgLyBt
X2Jhc2ljSW5mby0+YW5pbWF0aW9uLnRwc19udW1lcmF0b3IpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnVmZmVyLnNldERpc3Bvc2FsTWV0aG9kKFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWU6OkRp
c3Bvc2FsTWV0aG9kOjpEb05vdERpc3Bvc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgaWYgKEp4bERlY29kZXJTZXRJbWFnZU91dENhbGxiYWNrKG1f
ZGVjb2Rlci5nZXQoKSwgJmZvcm1hdCwgaW1hZ2VPdXRDYWxsYmFjaywgdGhpcykgIT0gSlhMX0RF
Q19TVUNDRVNTKQogICAgICAgICAgICAgICAgIHJldHVybiBKWExfREVDX0VSUk9SOworCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdGF0dXMgPT0gSlhM
X0RFQ19GVUxMX0lNQUdFKSB7Ci0gICAgICAgICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChtX2N1
cnJlbnRGcmFtZSA8IG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkpIHsKKyAgICAgICAgICAgICAg
ICBhdXRvJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50RnJhbWVdOworICAg
ICAgICAgICAgICAgIGlmICghYnVmZmVyLmlzSW52YWxpZCgpKQorICAgICAgICAgICAgICAgICAg
ICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsKKyAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNh
Y2hlWzBdOwotICAgICAgICAgICAgaWYgKCFidWZmZXIuaXNJbnZhbGlkKCkpCi0gICAgICAgICAg
ICAgICAgYnVmZmVyLnNldERlY29kaW5nU3RhdHVzKERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZSk7
CisgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSsrOworICAgICAgICAgICAgaWYgKHF1ZXJ5ID09
IFF1ZXJ5OjpEZWNvZGVkSW1hZ2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpYTF9ERUNfRlVM
TF9JTUFHRTsKIAotICAgICAgICAgICAgLy8gVE9ETzogVG8gc3VwcG9ydCBhbmltYXRlZCBKUEVH
IFhMIGluIHRoZSBmdXR1cmUgd2UgbmVlZCB0byBoYW5kbGUgc3Vic2VxdWVudCBkYXRhLgotICAg
ICAgICAgICAgcmV0dXJuIEpYTF9ERUNfU1VDQ0VTUzsKKyAgICAgICAgICAgIEFTU0VSVChxdWVy
eSA9PSBRdWVyeTo6RnJhbWVDb3VudCk7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogICAgIH0KIH0KQEAgLTE1OSwxNyArMzI2LDEyIEBAIHZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVy
OjppbWFnZU91dENhbGxiYWNrKHZvaWQqIHRoYXQsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90
CiAKIHZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVyOjppbWFnZU91dChzaXplX3QgeCwgc2l6ZV90IHks
IHNpemVfdCBudW1QaXhlbHMsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscykKIHsKLSAgICBpZiAobV9m
cmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKKyAgICBpZiAobV9jdXJyZW50RnJhbWUgPj0gbV9m
cmFtZUJ1ZmZlckNhY2hlLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgYnVm
ZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwotICAgIGlmIChidWZmZXIuaXNJbnZhbGlkKCkp
IHsKLSAgICAgICAgaWYgKCFidWZmZXIuaW5pdGlhbGl6ZShzaXplKCksIG1fcHJlbXVsdGlwbHlB
bHBoYSkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYnVmZmVyLnNldERlY29kaW5n
U3RhdHVzKERlY29kaW5nU3RhdHVzOjpQYXJ0aWFsKTsKLSAgICAgICAgYnVmZmVyLnNldEhhc0Fs
cGhhKGZhbHNlKTsKLSAgICB9CisgICAgYXV0byYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hl
W21fY3VycmVudEZyYW1lXTsKKyAgICBpZiAoYnVmZmVyLmlzSW52YWxpZCgpKQorICAgICAgICBy
ZXR1cm47CiAKICAgICB1aW50MzJfdCogcm93ID0gYnVmZmVyLmJhY2tpbmdTdG9yZSgpLT5waXhl
bEF0KHgsIHkpOwogICAgIHVpbnQzMl90KiBjdXJyZW50QWRkcmVzcyA9IHJvdzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWd4bC9KUEVHWExJbWFnZURlY29kZXIuaAppbmRleCBhMDlkNWM5ZGRkY2YyZTU0NjY4MDAzZDFm
MGFhZDA4NTUxMTExZjE5Li5mZDUyMjRlZGJlMTU4MGI4ZTZjYjk5MGYwNGYyMzI3YmYwMjRhNzJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
eGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdYTEltYWdlRGVjb2Rlci5oCkBAIC00NSwyNSArNDUsNTAg
QEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAianhsIl9zOyB9CisgICAg
c2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZXBldGl0aW9uQ291bnQg
cmVwZXRpdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2NhbGFibGVJbWFnZURlY29k
ZXJGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBzZXRGYWlsZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBK
UEVHWExJbWFnZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KTsKLSAgICB2b2lkIHRyeURlY29kZVNpemUoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRl
IHsgZGVjb2RlKHRydWUsIGFsbERhdGFSZWNlaXZlZCk7IH0KKyAgICBlbnVtIGNsYXNzIFF1ZXJ5
IHsKKyAgICAgICAgLy8gVGhpcyBxdWVyeSBpcyB1c2VkIGZvciB0cnlEZWNvZGVTaXplKCkuCisg
ICAgICAgIFNpemUsCisgICAgICAgIC8vIFdlIGRlZmluZSBhIHF1ZXJ5IGZvciBmcmFtZSBjb3Vu
dCBiZWNhdXNlIEpQRUcgWEwgZG9lc24ndCBoYXZlIGZyYW1lIGNvdW50IGluZm9ybWF0aW9uIGlu
IGl0cyBjb2RlIHN0cmVhbQorICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHNjYW4gdGhlIGNvZGUg
c3RyZWFtIHRvIGdldCB0aGUgZnJhbWUgY291bnQgZm9yIGFuaW1hdGVkIEpQRUcgWEwuCisgICAg
ICAgIC8vIEpQRUcgWEwgY29udGFpbmVyIGNhbiBoYXZlIGZyYW1lIGNvdW50IG1ldGFkYXRhIGJ1
dCBjdXJyZW50bHkgbGlianhsIGRvZXNuJ3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgRnJhbWVDb3Vu
dCwKKyAgICAgICAgLy8gUXVlcnkgdG8gZGVjb2RlIGEgc2luZ2xlIGZyYW1lLgorICAgICAgICBE
ZWNvZGVkSW1hZ2UsCisgICAgfTsKIAotICAgIHZvaWQgZGVjb2RlKGJvb2wgb25seVNpemUsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBKUEVHWExJbWFnZURlY29kZXIoQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICB2b2lkIHRyeURlY29kZVNpemUoYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBjbGVhcigpOworICAgIGJv
b2wgaGFzQWxwaGEoKSBjb25zdDsKKyAgICBib29sIGhhc0FuaW1hdGlvbigpIGNvbnN0OwogCi0g
ICAgSnhsRGVjb2RlclN0YXR1cyBwcm9jZXNzSW5wdXQoYm9vbCBvbmx5U2l6ZSk7CisgICAgdm9p
ZCBlbnN1cmVEZWNvZGVySW5pdGlhbGl6ZWQoKTsKKyAgICBib29sIHNob3VsZFJld2luZChRdWVy
eSAsIHNpemVfdCBmcmFtZUluZGV4KSBjb25zdDsKKyAgICB2b2lkIHJld2luZCgpOworICAgIHZv
aWQgdXBkYXRlRnJhbWVDb3VudCgpOwogCi0gICAgc3RhdGljIHZvaWQgaW1hZ2VPdXRDYWxsYmFj
ayh2b2lkKiB0aGF0LCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCBudW1QaXhlbHMsIGNvbnN0
IHZvaWQqIHBpeGVscyk7CisgICAgdm9pZCBkZWNvZGUoUXVlcnksIHNpemVfdCBmcmFtZUluZGV4
LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgSnhsRGVjb2RlclN0YXR1cyBwcm9jZXNzSW5w
dXQoUXVlcnkpOworICAgIHN0YXRpYyB2b2lkIGltYWdlT3V0Q2FsbGJhY2sodm9pZCosIHNpemVf
dCB4LCBzaXplX3QgeSwgc2l6ZV90IG51bVBpeGVscywgY29uc3Qgdm9pZCogcGl4ZWxzKTsKICAg
ICB2b2lkIGltYWdlT3V0KHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IG51bVBpeGVscywgY29u
c3QgdWludDhfdCogcGl4ZWxzKTsKIAogICAgIEp4bERlY29kZXJQdHIgbV9kZWNvZGVyOwotICAg
IHNpemVfdCBtX3JlYWRPZmZzZXQgPSAwOworICAgIHNpemVfdCBtX3JlYWRPZmZzZXQgeyAwIH07
CisgICAgc3RkOjpvcHRpb25hbDxKeGxCYXNpY0luZm8+IG1fYmFzaWNJbmZvOworCisgICAgUXVl
cnkgbV9sYXN0UXVlcnkgeyBRdWVyeTo6U2l6ZSB9OworICAgIHNpemVfdCBtX2ZyYW1lQ291bnQg
eyAxIH07CisgICAgc2l6ZV90IG1fY3VycmVudEZyYW1lIHsgMCB9OworCisgICAgYm9vbCBtX2lz
TGFzdEZyYW1lSGVhZGVyUmVjZWl2ZWQgeyBmYWxzZSB9OyAvLyBJZiB0aGlzIGlzIHRydWUsIHdl
IGtub3cgd2UgZG9uJ3QgbmVlZCB0byB1cGRhdGUgbV9mcmFtZUNvdW50LgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc4NjI3Y2RjZmJmNmFkNmJmZDEwNGFiM2ZiNjI4ODMz
ZDU0OGQ3MTAuLjc5NGE5MDgzZGNhZWNhMDc3NTY2YTA3NjAxODY0YWJlYTkzMzZhZmYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMiBAQAorMjAyMS0xMi0wNyAgWW9zaGlha2kgSml0c3VrYXdhICA8eW9zaGlh
a2kuaml0c3VrYXdhQHNvbnkuY29tPgorCisgICAgICAgIFN1cHBvcnQgQW5pbWF0ZWQgSlBFRy1Y
TCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzU0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYwNzcxNDM+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgIEFkZCB0ZXN0IGZvciBhbmltYXRl
ZCBKUEVHIFhMLCBiYXNlZCBvbiBhbmltYXRlZC1naWYtbG9vcC1jb3VudC4KKworICAgICAgICAq
IFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9pbWFnZXMvYW5pbWF0ZWQtanBlZ3hs
LWxvb3AtY291bnQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMv
YW5pbWF0ZWQtanBlZ3hsLWxvb3AtY291bnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9p
bWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVkLXJlZC1ncmVlbi1ibHVlLXJlcGVhdC0xLmp4bDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVkLXJlZC1ncmVlbi1i
bHVlLXJlcGVhdC0yLmp4bDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvcmVzb3VyY2Vz
L2FuaW1hdGVkLXJlZC1ncmVlbi1ibHVlLXJlcGVhdC1pbmZpbml0ZS5qeGw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTEyLTA2ICBMYXVybyBNb3VyYSAg
PGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBTbWFsbCBnYXJkZW5pbmcKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDg3MGExYTk1Yzg2NTJiMTlmYmExMWE0ZTAwN2ZhOTZjOGUwNDIz
NWIuLmFhOWYxMjE2ZDc2NWU0Mzc4YmNlM2FjMWNjNjRiYTRjOTFlNzhmYjMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtMTM1LDYgKzEzNSw3IEBAIGh0dHAvdGVzdHMvaW1hZ2VzL2F2aWYtcGFydGlh
bC1sb2FkLWNyYXNoLmh0bWwgWyBTa2lwIF0KICMgVGhlc2UgdGVzdHMgZG9uJ3QgaGF2ZSB0byBi
ZSBwbGF0Zm9ybS1zcGVjaWZpYywgYnV0IHRoZXkgYXJlIG9ubHkgaW1wbGVtZW50ZWQgb24gV2lu
Q2Fpcm8gbm93LgogZmFzdC9pbWFnZXMvanBlZ3hsLWltYWdlLWRlY29kaW5nLmh0bWwgWyBTa2lw
IF0KIGZhc3QvaW1hZ2VzL2pwZWd4bC1hcy1pbWFnZS5odG1sIFsgU2tpcCBdCitmYXN0L2ltYWdl
cy9hbmltYXRlZC1qcGVneGwtbG9vcC1jb3VudC5odG1sIFsgU2tpcCBdCiAKICMgT25seSBhcHBs
aWNhYmxlIG9uIHBsYXRmb3JtcyB3aXRoIGRhcmsgbW9kZSBzdXBwb3J0CiBjc3MtZGFyay1tb2Rl
IFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1q
cGVneGwtbG9vcC1jb3VudC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
YW5pbWF0ZWQtanBlZ3hsLWxvb3AtY291bnQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjky
MTQxNjg2ZmNkNTkxNDQxMmEwNzFhOTBhNmU3NjFhYTdkZWQyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtanBlZ3hsLWxvb3AtY291bnQtZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHN0eWxl
PgorICAgIC5ib3ggeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAw
cHg7CisgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICB9Cis8L3N0eWxlPgorPGJv
ZHk+CisgICAgPGRpdj4KKyAgICAgICAgPHA+RnJhbWVzIG9mIGEgMy1mcmFtZSBhbmltYXRlZCBp
bWFnZSB3aXRoIG1pc3NpbmcgbG9vcENvdW50LCAocmVwZXRpdGlvbkNvdW50ID0gMSk6PC9wPgor
ICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Ij48
L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW47Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3Vu
ZC1jb2xvcjogYmx1ZTsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJi
YWNrZ3JvdW5kLWNvbG9yOiBibHVlOyI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAg
ICAgICAgPHA+RnJhbWVzIG9mIGEgMy1mcmFtZSBhbmltYXRlZCBpbWFnZSB3aXRoIGxvb3BDb3Vu
dCA9IDEsIChyZXBldGl0aW9uQ291bnQgPSAyKTo8L3A+CisgICAgICAgIDxkaXYgY2xhc3M9ImJv
eCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNs
YXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2PgorICAgICAg
ICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyI+PC9kaXY+
CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsi
PjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9y
OiBncmVlbjsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3Jv
dW5kLWNvbG9yOiBibHVlOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9
ImJhY2tncm91bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2Pgor
ICAgICAgICA8cD5GcmFtZXMgb2YgYSAzLWZyYW1lIGFuaW1hdGVkIGltYWdlIHdpdGggbG9vcENv
dW50ID0gMCwgKHJlcGV0aXRpb25Db3VudCA9IGluZmluaXRlKTo8L3A+CisgICAgICAgIDxkaXYg
Y2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsiPjwvZGl2PgorICAgICAg
ICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2
PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBibHVl
OyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29s
b3I6IHJlZDsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3Jv
dW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJv
eCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsiPjwvZGl2PgorICAgIDwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0
ZWQtanBlZ3hsLWxvb3AtY291bnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1h
dGVkLWpwZWd4bC1sb29wLWNvdW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE1MmU2NWUxNzdkZmJmY2Q0
N2UyNzRlMWFjZTg5MDdiZDFiNzMwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL2FuaW1hdGVkLWpwZWd4bC1sb29wLWNvdW50Lmh0bWwKQEAgLTAsMCArMSw0OSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KKyAgICBjYW52YXMgeworICAgICAg
ICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYW5pbWF0ZWQtaW1hZ2UtbG9vcC1jb3VudC5qcyI+PC9z
Y3JpcHQ+Cis8Ym9keT4KKyAgICA8ZGl2PgorICAgICAgICA8cD5GcmFtZXMgb2YgYSAzLWZyYW1l
IGFuaW1hdGVkIGltYWdlIHdpdGggbWlzc2luZyBsb29wQ291bnQsIChyZXBldGl0aW9uQ291bnQg
PSAxKTo8L3A+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcy0xIj48L2NhbnZhcz4KKyAgICAg
ICAgPGNhbnZhcyBpZD0iY2FudmFzLTIiPjwvY2FudmFzPgorICAgICAgICA8Y2FudmFzIGlkPSJj
YW52YXMtMyI+PC9jYW52YXM+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcy00Ij48L2NhbnZh
cz4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgICA8cD5GcmFtZXMgb2YgYSAzLWZyYW1l
IGFuaW1hdGVkIGltYWdlIHdpdGggbG9vcENvdW50ID0gMSwgKHJlcGV0aXRpb25Db3VudCA9IDIp
OjwvcD4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLWEiPjwvY2FudmFzPgorICAgICAgICA8
Y2FudmFzIGlkPSJjYW52YXMtYiI+PC9jYW52YXM+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZh
cy1jIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLWQiPjwvY2FudmFzPgor
ICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMtZSI+PC9jYW52YXM+CisgICAgICAgIDxjYW52YXMg
aWQ9ImNhbnZhcy1mIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLWciPjwv
Y2FudmFzPgorICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICAgIDxwPkZyYW1lcyBvZiBhIDMt
ZnJhbWUgYW5pbWF0ZWQgaW1hZ2Ugd2l0aCBsb29wQ291bnQgPSAwLCAocmVwZXRpdGlvbkNvdW50
ID0gaW5maW5pdGUpOjwvcD4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLUEiPjwvY2FudmFz
PgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMtQiI+PC9jYW52YXM+CisgICAgICAgIDxjYW52
YXMgaWQ9ImNhbnZhcy1DIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLUQi
PjwvY2FudmFzPgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMtRSI+PC9jYW52YXM+CisgICAg
ICAgIDxjYW52YXMgaWQ9ImNhbnZhcy1GIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0i
Y2FudmFzLUciPjwvY2FudmFzPgorICAgIDwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAgIChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZhciBpbWFnZXMgPSBbCisgICAgICAgICAgICAgICAg
eyBzcmM6ICJyZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LTEuanhsIiwg
Y2FudmFzSWQ6ICcxJywgZnJhbWVDb3VudDogNCB9LAorICAgICAgICAgICAgICAgIHsgc3JjOiAi
cmVzb3VyY2VzL2FuaW1hdGVkLXJlZC1ncmVlbi1ibHVlLXJlcGVhdC0yLmp4bCIsIGNhbnZhc0lk
OiAnYScsIGZyYW1lQ291bnQ6IDcgfSwKKyAgICAgICAgICAgICAgICB7IHNyYzogInJlc291cmNl
cy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtaW5maW5pdGUuanhsIiwgY2FudmFzSWQ6
ICdBJywgZnJhbWVDb3VudDogNyB9CisgICAgICAgICAgICBdOworICAgICAgICAgICAgcnVuVGVz
dChpbWFnZXMpOworICAgICAgICB9KSgpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVk
LXJlZC1ncmVlbi1ibHVlLXJlcGVhdC0xLmp4bCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jl
c291cmNlcy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtMS5qeGwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzIyMDMwOWMwYzU3YjJjZTRlN2ZkM2E2ODMxODYxNmU3ZDg3OTA5NwpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgOTkKemNtZXkqQl9ac25BdDIxYiFvfFZCa2l5X0MoSmpod01MT0FfT2thU0pMNGgl
N3hqbG5wZVl9a25MX3E/WWc4V2hACmkxX25sbF8mQFNNY0BfcEF1eWpOMHp5Q352M14hKCZGPSNP
VFZnPi11TyU9JWkKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQt
Mi5qeGwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdy
ZWVuLWJsdWUtcmVwZWF0LTIuanhsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1NzU3M2UwYjVlZDZjMGEwY2Y0ZGMy
MjYxOWJjZDlhMmM5ODFkNDYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDk5CnpjbWV5KkJfWnRT
QXQyMWIhb3xWQmtpeV9DKEpqaHdNTE9BX09rYVNKTDRoJTd4amxucGVZfWtuTF9xP1lnOFdoQApp
MV9ubGxfJkBTTWNAX3BBdXlqTjB6eUN+djNeISgmRj0jT1RWZz4tKTRIZkFDCgpsaXRlcmFsIDAK
SGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJj
ZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LWluZmluaXRlLmp4bCBiL0xheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQt
aW5maW5pdGUuanhsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiMTEwNGQ5NDU4ZmMxMDY0OWM2OTAxNDBiNjk3MzQ1
ZTFkMDFkZTUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDk5CnpjbWV5KkJfWnN7a2leOG4hb3xW
QmtpeV9DKEpqaHdNTE9BX09rYVNKTDRoJTd4amxucGVZfWtuTF9xP1lnOFdoQAppMV9ubGxfJkBT
TWNAX3BBdXlqTjB6eUN+djNeISgmRj0jT1RWZz4tJU9CTGIoCgpsaXRlcmFsIDAKSGNtVj9kMDAw
MDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMDBh
OTNjNzk5Y2QyNmNjZmI5NTU4NWQxMWI0YTI2ZWIxY2M4NGI1Yy4uOGVjNjAzNDhkMGEzY2JhZWUw
NmM5ZmM3MjFmOTZmZGIzNmE1OTA2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMTA3LDYgKzEwNyw3IEBAIGZhc3QvdGV4dC9lbW9qaS1nZW5kZXIt
OS5odG1sIFsgUGFzcyBdCiAjIEpQRUctWEwgdGVzdHMKIGZhc3QvaW1hZ2VzL2pwZWd4bC1hcy1p
bWFnZS5odG1sIFsgUGFzcyBdCiBmYXN0L2ltYWdlcy9qcGVneGwtaW1hZ2UtZGVjb2RpbmcuaHRt
bCBbIFBhc3MgXQorZmFzdC9pbWFnZXMvYW5pbWF0ZWQtanBlZ3hsLWxvb3AtY291bnQuaHRtbCBb
IFBhc3MgXQogCiAjIFNvbWUgQXBwbGUgcG9ydHMgZG9uJ3Qgc3VwcG9ydCBSVEwgc2Nyb2xsYmFy
cy4KIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWVsZW1lbnRGcm9tUG9pbnQtc3RhdGlj
Lmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJv
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDcxMThmZmUyMDA2NmFiZWY5YTczYmZhOTM1NmY2Njc4NTU3MzkxNTYu
LmM2ZmQyYmUxMjIwNTAxM2IwN2RiOTUyMzMyZmQ4OGE4YTA5ZDhlOWEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjcyLDkgKzI3Miwx
MCBAQCBtZWRpYS9haXJwbGF5LWF1dG9wbGF5Lmh0bWwgWyBTa2lwIF0KICMgUExBVEZPUk0oTUFD
KSwgaW50ZXJuYWxzLnJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oKQogZmFzdC9s
YXllcnMvcHJldmVudC1oaXQtdGVzdC1kdXJpbmctbGF5b3V0Lmh0bWwgWyBTa2lwIF0KIAotIyBK
UEVHIFhMIGlzIGRpc2FibGVkIHVudGlsIFdlYktpdFJlcXVpcmVtZW50cyBpcyByZWxlYXNlZCB3
aXRoIGxpYmp4bAotZmFzdC9pbWFnZXMvanBlZ3hsLWFzLWltYWdlLmh0bWwgWyBTa2lwIF0KLWZh
c3QvaW1hZ2VzL2pwZWd4bC1pbWFnZS1kZWNvZGluZy5odG1sIFsgU2tpcCBdCisjIEpQRUctWEwg
VGVzdHMKK2Zhc3QvaW1hZ2VzL2pwZWd4bC1hcy1pbWFnZS5odG1sIFsgUGFzcyBdCitmYXN0L2lt
YWdlcy9qcGVneGwtaW1hZ2UtZGVjb2RpbmcuaHRtbCBbIFBhc3MgXQorZmFzdC9pbWFnZXMvYW5p
bWF0ZWQtanBlZ3hsLWxvb3AtY291bnQuaHRtbCBbIFBhc3MgXQogCiAjIERhdGFUcmFuc2Zlckl0
ZW1zIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKIGZhc3QvZXZlbnRzL2NsaXBib2FyZC1kYXRhVHJh
bnNmZXJJdGVtTGlzdC5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446157</attachid>
            <date>2021-12-07 04:28:13 -0800</date>
            <delta_ts>2021-12-07 15:24:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233545-20211207212815.patch</filename>
            <type>text/plain</type>
            <size>26532</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ1ZDNmM2Q4MzhmMDlm
NDI0ZWI2NGNmMzEwNTNmMDVkM2Q0OWU3Yy4uZDExMzdiNWZmNzJmZjA3MTk5ZmY0Mjc5NDg2MTFh
ODkxYTdhYWE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTEyLTA3ICBZb3No
aWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29ueS5jb20+CisKKyAgICAgICAg
U3VwcG9ydCBBbmltYXRlZCBKUEVHLVhMIGltYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NjA3NzE0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgcmVsZXZhbnQgQVBJLCBzdWNoIGFzIGZyYW1lQ291bnQoKSBhbmQgc3VwcG9y
dCBhIHBvc2l0aXZlCisgICAgICAgIGZyYW1lIGluZGV4IGZvciBmcmFtZUJ1ZmZlckF0SW5kZXgo
KS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBxdWVyeSB0byBjb3VudCBmcmFtZXMgYmVjYXVzZSBK
UEVHIFhMIGNvZGUgc3RyZWFtIGl0c2VsZiBkb2Vzbid0IGhhdmUgZnJhbWUKKyAgICAgICAgY291
bnQgbWV0YWRhdGEgYW5kIHdlIG5lZWQgdG8gc2NhbiB0aGUgY29kZSBzdHJlYW0gdG8gdGhlIGxh
c3QgZnJhbWUuCisKKyAgICAgICAgQWxzbyBpbnRyb2R1Y2UgdGhlIFNpemUgcXVlcnkgaW5zdGVh
ZCBvZiB0aGUgb25seVNpemUgcGFyYW1ldGVyIG9mIHRoZSBkZWNvZGUoKSBmdW5jdGlvbi4KKwor
ICAgICAgICBXaXRoIHRoZSBEZWNvZGVJbWFnZSBxdWVyeSwgdGhlIGRlY29kZXIgZGVjb2RlcyBh
IHNpbmdsZSBmcmFtZS4gVG8KKyAgICAgICAgc3BlY2lmeSB3aGljaCBmcmFtZSB0byBkZWNvZGUs
IHdlIG1ha2UgdXNlIG9mIHRoZSBKeGxEZWNvZGVyUmV3aW5kKCkKKyAgICAgICAgYW5kIEp4bERl
Y29kZXJTa2lwRnJhbWVzKCkgZnVuY3Rpb25zIG9mIGxpYmp4bC4KKworICAgICAgICBUbyBvbWl0
IHJld2luZCBhbmQgc2tpcCBhcyBtdWNoIGFzIHBvc3NpYmxlLCB3ZSByZWNvcmQgdGhlIHF1ZXJ5
IHRvCisgICAgICAgIG1fbGFzdFF1ZXJ5IGFuZCB1c2UgaXQgaW4gc2hvdWxkUmV3aW5kKCkuCisK
KyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMvYW5pbWF0ZWQtanBlZ3hsLWxvb3AtY291bnQuaHRt
bAorCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdYTEltYWdl
RGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHWExJbWFnZURlY29kZXI6On5KUEVH
WExJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR1hMSW1hZ2VEZWNvZGVyOjpm
cmFtZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdlRGVjb2Rlcjo6
cmVwZXRpdGlvbkNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdlRGVj
b2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdl
RGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdY
TEltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdl
RGVjb2Rlcjo6dHJ5RGVjb2RlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHWExJbWFnZURl
Y29kZXI6Omhhc0FscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdlRGVj
b2Rlcjo6aGFzQW5pbWF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdl
RGVjb2Rlcjo6ZW5zdXJlRGVjb2RlckluaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNvcmU6OkpQ
RUdYTEltYWdlRGVjb2Rlcjo6c2hvdWxkUmV3aW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkpQRUdYTEltYWdlRGVjb2Rlcjo6cmV3aW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTElt
YWdlRGVjb2Rlcjo6dXBkYXRlRnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHWExJ
bWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHWExJbWFnZURlY29k
ZXI6OnByb2Nlc3NJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHWExJbWFnZURlY29kZXI6
OmltYWdlT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdlRGVjb2Rlcjo6Y2xlYXIp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVH
WExJbWFnZURlY29kZXIuaDoKKwogMjAyMS0xMi0wNiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBVbmlmeSBHcmlkIG92
ZXJsYXkgZHJhd2luZyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVneGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIuY3Bw
CmluZGV4IDUxMjk3YTE3NThjMThiZDk3NGY2MGZiYWM1NmUwNzZlMGI2MjlkMjYuLmI5YjhlNjRl
M2MxZTRhOTMyNjZiODM4M2I3NDFkYmZkYjNhNmM1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVH
WExJbWFnZURlY29kZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBVU0UoSlBFR1hMKQog
CisjaW5jbHVkZSA8b3B0aW9uYWw+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlBFR1hMSW1h
Z2VEZWNvZGVyOjpKUEVHWExJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQpAQCAt
MzcsNTUgKzM5LDE3NiBAQCBKUEVHWExJbWFnZURlY29kZXI6OkpQRUdYTEltYWdlRGVjb2RlcihB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBybwogCiBKUEVHWExJbWFnZURl
Y29kZXI6On5KUEVHWExJbWFnZURlY29kZXIoKQogewotICAgIGNsZWFyKCk7Cit9CisKK3NpemVf
dCBKUEVHWExJbWFnZURlY29kZXI6OmZyYW1lQ291bnQoKSBjb25zdAoreworICAgIGlmICghaGFz
QW5pbWF0aW9uKCkpCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKCFtX2lzTGFzdEZyYW1l
SGVhZGVyUmVjZWl2ZWQpCisgICAgICAgIGNvbnN0X2Nhc3Q8SlBFR1hMSW1hZ2VEZWNvZGVyKj4o
dGhpcyktPnVwZGF0ZUZyYW1lQ291bnQoKTsKKworICAgIHJldHVybiBtX2ZyYW1lQ291bnQ7Cit9
CisKK1JlcGV0aXRpb25Db3VudCBKUEVHWExJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCgp
IGNvbnN0Cit7CisgICAgaWYgKGhhc0FuaW1hdGlvbigpKSB7CisgICAgICAgIGlmICghbV9iYXNp
Y0luZm8tPmFuaW1hdGlvbi5udW1fbG9vcHMpIHsKKyAgICAgICAgICAgIC8vIElmIG51bV9sb29w
cyBpcyB6ZXJvLCByZXBlYXQgaW5maW5pdGVseS4KKyAgICAgICAgICAgIHJldHVybiBSZXBldGl0
aW9uQ291bnRJbmZpbml0ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9iYXNpY0luZm8t
PmFuaW1hdGlvbi5udW1fbG9vcHM7CisgICAgfQorICAgIHJldHVybiBSZXBldGl0aW9uQ291bnRO
b25lOwogfQogCiBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBKUEVHWExJbWFnZURlY29kZXI6
OmZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgLy8gVE9ETzogVG8gc3Vw
cG9ydCBhbmltYXRlZCBKUEVHIFhMIGluIHRoZSBmdXR1cmUgd2UgbmVlZCB0byBoYW5kbGUgc2Vj
b25kIGFuZCBzdWJzZXF1ZW50IGZyYW1lcy4KLSAgICBpZiAoaW5kZXgpCisgICAgaWYgKFNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cygpIDwgRW5jb2RlZERhdGFTdGF0dXM6
OlNpemVBdmFpbGFibGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgaWYgKGluZGV4
ID49IGZyYW1lQ291bnQoKSkKKyAgICAgICAgaW5kZXggPSBmcmFtZUNvdW50KCkgLSAxOworCiAg
ICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZm
ZXJDYWNoZS5ncm93KDEpOwogCi0gICAgYXV0byYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVb
MF07CisgICAgYXV0byYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdOwogICAgIGlm
ICghZnJhbWUuaXNDb21wbGV0ZSgpKQotICAgICAgICBkZWNvZGUoZmFsc2UsIGlzQWxsRGF0YVJl
Y2VpdmVkKCkpOworICAgICAgICBkZWNvZGUoUXVlcnk6OkRlY29kZWRJbWFnZSwgaW5kZXgsIGlz
QWxsRGF0YVJlY2VpdmVkKCkpOwogICAgIHJldHVybiAmZnJhbWU7CiB9CiAKLXZvaWQgSlBFR1hM
SW1hZ2VEZWNvZGVyOjpjbGVhcigpCit2b2lkIEpQRUdYTEltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFt
ZUJ1ZmZlckNhY2hlKHNpemVfdCBjbGVhckJlZm9yZUZyYW1lKQogewotICAgIG1fZGVjb2Rlci5y
ZXNldCgpOwotICAgIG1fcmVhZE9mZnNldCA9IDA7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNo
ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFVubGlrZSB0aGUgcG5nIGFu
ZCBnaWYgY2FzZXMsIHdlIGNhbiBhbHdheXMgdHJ5IHRvIGNsZWFyIGZyYW1lcyBiZWZvcmUgImNs
ZWFyQmVmb3JlRnJhbWUiIGJlY2F1c2UKKyAgICAvLyB0aGUgZGVwZW5kZW5jaXkgdG8gdGhlIHBy
ZXZpb3VzIGZyYW1lIGlzIGhhbmRsZWQgYnkgbGlianhsLgorICAgIGNvbnN0IFZlY3RvcjxTY2Fs
YWJsZUltYWdlRGVjb2RlckZyYW1lPjo6aXRlcmF0b3IgZW5kKG1fZnJhbWVCdWZmZXJDYWNoZS5i
ZWdpbigpICsgY2xlYXJCZWZvcmVGcmFtZSk7CisKKyAgICBmb3IgKFZlY3RvcjxTY2FsYWJsZUlt
YWdlRGVjb2RlckZyYW1lPjo6aXRlcmF0b3IgaShtX2ZyYW1lQnVmZmVyQ2FjaGUuYmVnaW4oKSk7
IGkgIT0gZW5kOyArK2kpIHsKKyAgICAgICAgLy8gSWYgdGhlIGZyYW1lIGlzIHBhcnRpYWwsIHdl
J3JlIGRlY29kaW5nIGl0LCBzbyB3ZSBkb24ndCBjbGVhciBpdC4KKyAgICAgICAgaWYgKGktPmlz
UGFydGlhbCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaS0+Y2xlYXIoKTsK
KyAgICB9CiB9CiAKIGJvb2wgSlBFR1hMSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKQogewotICAg
IGNsZWFyKCk7CisgICAgbV9kZWNvZGVyLnJlc2V0KCk7CiAgICAgcmV0dXJuIFNjYWxhYmxlSW1h
Z2VEZWNvZGVyOjpzZXRGYWlsZWQoKTsKIH0KIAotdm9pZCBKUEVHWExJbWFnZURlY29kZXI6OmRl
Y29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSlBFR1hMSW1h
Z2VEZWNvZGVyOjp0cnlEZWNvZGVTaXplKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQoreworICAgIGlm
IChtX2Jhc2ljSW5mbykKKyAgICAgICAgcmV0dXJuOworICAgIGRlY29kZShRdWVyeTo6U2l6ZSwg
MCwgYWxsRGF0YVJlY2VpdmVkKTsKK30KKworYm9vbCBKUEVHWExJbWFnZURlY29kZXI6Omhhc0Fs
cGhhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iYXNpY0luZm8gJiYgbV9iYXNpY0luZm8tPmFs
cGhhX2JpdHMgPiAwOworfQorCitib29sIEpQRUdYTEltYWdlRGVjb2Rlcjo6aGFzQW5pbWF0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iYXNpY0luZm8gJiYgbV9iYXNpY0luZm8tPmhhdmVf
YW5pbWF0aW9uOworfQorCit2b2lkIEpQRUdYTEltYWdlRGVjb2Rlcjo6ZW5zdXJlRGVjb2Rlcklu
aXRpYWxpemVkKCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAg
IGlmIChtX2RlY29kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVjb2RlciA9IEp4bERl
Y29kZXJNYWtlKG51bGxwdHIpOwogICAgIGlmICghbV9kZWNvZGVyKSB7Ci0gICAgICAgIGNsZWFy
KCk7Ci0gICAgICAgIG1fZGVjb2RlciA9IEp4bERlY29kZXJNYWtlKG51bGxwdHIpOwotICAgICAg
ICBpZiAoIW1fZGVjb2RlcikgewotICAgICAgICAgICAgc2V0RmFpbGVkKCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgc2V0RmFpbGVkKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKLSAgICAgICAgaWYgKEp4bERlY29kZXJTdWJzY3JpYmVFdmVudHMobV9kZWNv
ZGVyLmdldCgpLCBKWExfREVDX0JBU0lDX0lORk8gfCBKWExfREVDX0ZSQU1FIHwgSlhMX0RFQ19G
VUxMX0lNQUdFKSAhPSBKWExfREVDX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgIHNldEZhaWxlZCgp
OwotICAgICAgICAgICAgcmV0dXJuOworICAgIGlmIChKeGxEZWNvZGVyU3Vic2NyaWJlRXZlbnRz
KG1fZGVjb2Rlci5nZXQoKSwgSlhMX0RFQ19CQVNJQ19JTkZPIHwgSlhMX0RFQ19GUkFNRSB8IEpY
TF9ERUNfRlVMTF9JTUFHRSkgIT0gSlhMX0RFQ19TVUNDRVNTKSB7CisgICAgICAgIHNldEZhaWxl
ZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9yZWFkT2Zmc2V0ID0gMDsKKyAg
ICBtX2N1cnJlbnRGcmFtZSA9IDA7CisgICAgbV9sYXN0UXVlcnkgPSBRdWVyeTo6U2l6ZTsKK30K
KworYm9vbCBKUEVHWExJbWFnZURlY29kZXI6OnNob3VsZFJld2luZChRdWVyeSBxdWVyeSwgc2l6
ZV90IGZyYW1lSW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKG1fbGFzdFF1ZXJ5ID09IFF1ZXJ5OjpG
cmFtZUNvdW50KSB7CisgICAgICAgIGlmIChxdWVyeSA9PSBRdWVyeTo6RnJhbWVDb3VudCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQ29udGludWUgY291bnRpbmcgZnJhbWVzLgorICAg
ICAgICByZXR1cm4gdHJ1ZTsgLy8gSW4gdGhpcyBjYXNlIHRoZSBkZWNvZGVyIGhhcyByZWFjaGVk
IHRoZSBFT0YgYW5kIG5lZWRzIHJld2luZC4KKyAgICB9CisKKyAgICBpZiAobV9sYXN0UXVlcnkg
PT0gUXVlcnk6OlNpemUpIHsKKyAgICAgICAgLy8gVGhlIGRlY29kZXIgaXMgYXQgdGhlIHN0cmVh
bSBoZWFkZXIgYW5kIGRvZXNuJ3QgbmVlZCByZXdpbmQuCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgbV9sYXN0UXVlcnkgaXMgUXVl
cnk6OkRlY29kZWRJbWFnZS4KKworICAgIGlmIChxdWVyeSAhPSBRdWVyeTo6RGVjb2RlZEltYWdl
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFRoZXJlJ3MgdHdvIGNhc2VzIHdoZXJl
IHdlIGRvbid0IG5lZWQgdG8gcmV3aW5kOgorICAgIC8vICAgMS4gUHJldmlvdXMgZGVjb2Rpbmcg
d2FzIGludGVycnVwdGVkIHdpdGggSlhMX0RFQ19ORUVEX01PUkVfSU5QVVQKKyAgICAvLyAgICAg
IGFuZCB0cnlpbmcgdG8gY29udGludWUgZGVjb2RpbmcgdGhlIHNhbWUgZnJhbWUuCisgICAgLy8g
ICAyLiBQcmV2aW91cyBkZWNvZGluZyB3YXMgY29tcGxldGVkIChtX2N1cnJlbnRGcmFtZSB3YXMg
aW5jcmVtZW50ZWQpIGFuZCBzdGFydGluZyBhIG5ldyBmcmFtZS4KKyAgICAvLyBJbiBib3RoIGNh
c2VzIGZyYW1lSW5kZXggaXMgZXF1YWwgdG8gbV9jdXJyZW50RnJhbWUuCisgICAgcmV0dXJuIGZy
YW1lSW5kZXggIT0gbV9jdXJyZW50RnJhbWU7Cit9CisKK3ZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVy
OjpyZXdpbmQoKQoreworICAgIEp4bERlY29kZXJSZXdpbmQobV9kZWNvZGVyLmdldCgpKTsKKyAg
ICBKeGxEZWNvZGVyU3Vic2NyaWJlRXZlbnRzKG1fZGVjb2Rlci5nZXQoKSwgSlhMX0RFQ19CQVNJ
Q19JTkZPIHwgSlhMX0RFQ19GUkFNRSB8IEpYTF9ERUNfRlVMTF9JTUFHRSk7CisgICAgbV9yZWFk
T2Zmc2V0ID0gMDsKKyAgICBtX2N1cnJlbnRGcmFtZSA9IDA7Cit9CisKK3ZvaWQgSlBFR1hMSW1h
Z2VEZWNvZGVyOjp1cGRhdGVGcmFtZUNvdW50KCkKK3sKKyAgICBpZiAoZmFpbGVkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGRlY29kZShRdWVyeTo6RnJhbWVDb3VudCwgMCwgaXNBbGxEYXRh
UmVjZWl2ZWQoKSk7CisKKyAgICBpZiAobV9mcmFtZUNvdW50ICE9IG1fZnJhbWVCdWZmZXJDYWNo
ZS5zaXplKCkpCisgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUobV9mcmFtZUNvdW50
KTsKK30KKwordm9pZCBKUEVHWExJbWFnZURlY29kZXI6OmRlY29kZShRdWVyeSBxdWVyeSwgc2l6
ZV90IGZyYW1lSW5kZXgsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQoreworICAgIGVuc3VyZURlY29k
ZXJJbml0aWFsaXplZCgpOworCisgICAgaWYgKGZhaWxlZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoc2hvdWxkUmV3aW5kKHF1ZXJ5LCBmcmFtZUluZGV4KSkgeworICAgICAgICByZXdp
bmQoKTsKKyAgICAgICAgLy8gV2UgY2FyZSBhYm91dCB0aGUgZnJhbWVJbmRleCBvbmx5IGlmIHRo
ZSBxdWVyeSBpcyBRdWVyeTo6RGVjb2RlZEltYWdlLgorICAgICAgICBpZiAocXVlcnkgPT0gUXVl
cnk6OkRlY29kZWRJbWFnZSAmJiBmcmFtZUluZGV4KSB7CisgICAgICAgICAgICBKeGxEZWNvZGVy
U2tpcEZyYW1lcyhtX2RlY29kZXIuZ2V0KCksIGZyYW1lSW5kZXgpOworICAgICAgICAgICAgbV9j
dXJyZW50RnJhbWUgPSBmcmFtZUluZGV4OwogICAgICAgICB9CiAgICAgfQogCisgICAgbV9sYXN0
UXVlcnkgPSBxdWVyeTsKKwogICAgIG1fZGF0YS0+ZGF0YSgpOwogICAgIHNpemVfdCBkYXRhU2l6
ZSA9IG1fZGF0YS0+c2l6ZSgpOwogICAgIGlmIChKeGxEZWNvZGVyU2V0SW5wdXQobV9kZWNvZGVy
LmdldCgpLCBtX2RhdGEtPmRhdGEoKSArIG1fcmVhZE9mZnNldCwgZGF0YVNpemUgLSBtX3JlYWRP
ZmZzZXQpICE9IEpYTF9ERUNfU1VDQ0VTUykgewpAQCAtOTMsNjEgKzIxNiwxMDUgQEAgdm9pZCBK
UEVHWExJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEp4bERlY29kZXJTdGF0dXMgc3Rh
dHVzID0gcHJvY2Vzc0lucHV0KG9ubHlTaXplKTsKKyAgICBKeGxEZWNvZGVyU3RhdHVzIHN0YXR1
cyA9IHByb2Nlc3NJbnB1dChxdWVyeSk7CiAgICAgLy8gV2Ugc2V0IHRoZSBzdGF0dXMgYXMgZmFp
bGVkIGlmIHRoZSBkZWNvZGVyIHJlcG9ydHMgYW4gZXJyb3Igb3IgcmVxdWlyZXMgbW9yZSBkYXRh
IHdoaWxlIGFsbCBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLgogICAgIGlmIChzdGF0dXMgPT0gSlhM
X0RFQ19FUlJPUiB8fCAoYWxsRGF0YVJlY2VpdmVkICYmIHN0YXR1cyA9PSBKWExfREVDX05FRURf
TU9SRV9JTlBVVCkpIHsKICAgICAgICAgc2V0RmFpbGVkKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICAvLyBXZSByZWxlYXNlIHRoZSBkZWNvZGVyIHdoZW4gd2UgZmluaXNoIHRoZSBk
ZWNvZGluZy4KLSAgICBpZiAoc3RhdHVzID09IEpYTF9ERUNfU1VDQ0VTUykgewotICAgICAgICBj
bGVhcigpOworICAgIGlmIChxdWVyeSA9PSBRdWVyeTo6RGVjb2RlZEltYWdlICYmIHN0YXR1cyA9
PSBKWExfREVDX0ZVTExfSU1BR0UgJiYgbV9pc0xhc3RGcmFtZUhlYWRlclJlY2VpdmVkICYmIG1f
Y3VycmVudEZyYW1lID09IG1fZnJhbWVDb3VudCkgeworICAgICAgICAvLyBXZSBmcmVlIHRoZSBk
ZWNvZGVyIHdoZW4gdGhlIGxhc3QgZnJhbWUgaXMgZGVjb2RlZC4KKyAgICAgICAgbV9kZWNvZGVy
LnJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBPdGhlcndpc2Ugd2Ug
Z2V0IHRoZSBkZWNvZGVyIHJlYWR5IGZvciBzdWJzZXF1ZW50IGRhdGEuCiAgICAgc2l6ZV90IHJl
bWFpbmluZ0RhdGFTaXplID0gSnhsRGVjb2RlclJlbGVhc2VJbnB1dChtX2RlY29kZXIuZ2V0KCkp
OwogICAgIG1fcmVhZE9mZnNldCA9IGRhdGFTaXplIC0gcmVtYWluaW5nRGF0YVNpemU7CiB9CiAK
LUp4bERlY29kZXJTdGF0dXMgSlBFR1hMSW1hZ2VEZWNvZGVyOjpwcm9jZXNzSW5wdXQoYm9vbCBv
bmx5U2l6ZSkKK0p4bERlY29kZXJTdGF0dXMgSlBFR1hMSW1hZ2VEZWNvZGVyOjpwcm9jZXNzSW5w
dXQoUXVlcnkgcXVlcnkpCiB7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgYXV0byBzdGF0
dXMgPSBKeGxEZWNvZGVyUHJvY2Vzc0lucHV0KG1fZGVjb2Rlci5nZXQoKSk7CiAKKyAgICAgICAg
Ly8gUmV0dXJuIEpYTF9ERUNfRVJST1Igd2hlbiB3ZSd2ZSByZWFjaGVkIEVPRiB3aXRob3V0IHJl
Y2VpdmluZyBhIGZyYW1lIG1hcmtlZCBhcyAiaXNfbGFzdCIuCisgICAgICAgIGlmIChzdGF0dXMg
PT0gSlhMX0RFQ19TVUNDRVNTICYmICFtX2lzTGFzdEZyYW1lSGVhZGVyUmVjZWl2ZWQpCisgICAg
ICAgICAgICByZXR1cm4gSlhMX0RFQ19FUlJPUjsKKwogICAgICAgICAvLyBKWExfREVDX0VSUk9S
IGFuZCBKWExfREVDX1NVQ0NFU1MgYXJlIHRlcm1pbmFsIHN0YXRlcy4gV2UgYWxzbyBleGl0IGZy
b20gdGhlIGxvb3AgaWYgbW9yZSBkYXRhIGlzIG5lZWRlZC4KICAgICAgICAgaWYgKHN0YXR1cyA9
PSBKWExfREVDX0VSUk9SIHx8IHN0YXR1cyA9PSBKWExfREVDX1NVQ0NFU1MgfHwgc3RhdHVzID09
IEpYTF9ERUNfTkVFRF9NT1JFX0lOUFVUKQogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKIAog
ICAgICAgICBpZiAoc3RhdHVzID09IEpYTF9ERUNfQkFTSUNfSU5GTykgewotICAgICAgICAgICAg
SnhsQmFzaWNJbmZvIGJhc2ljSW5mbzsKLSAgICAgICAgICAgIGlmIChKeGxEZWNvZGVyR2V0QmFz
aWNJbmZvKG1fZGVjb2Rlci5nZXQoKSwgJmJhc2ljSW5mbykgIT0gSlhMX0RFQ19TVUNDRVNTKQot
ICAgICAgICAgICAgICAgIHJldHVybiBKWExfREVDX0VSUk9SOworICAgICAgICAgICAgaWYgKCFt
X2Jhc2ljSW5mbykgeworICAgICAgICAgICAgICAgIEp4bEJhc2ljSW5mbyBiYXNpY0luZm87Cisg
ICAgICAgICAgICAgICAgaWYgKEp4bERlY29kZXJHZXRCYXNpY0luZm8obV9kZWNvZGVyLmdldCgp
LCAmYmFzaWNJbmZvKSAhPSBKWExfREVDX1NVQ0NFU1MpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBKWExfREVDX0VSUk9SOworCisgICAgICAgICAgICAgICAgbV9iYXNpY0luZm8gPSBiYXNp
Y0luZm87CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHNldFNpemUoSW50U2l6ZShiYXNp
Y0luZm8ueHNpemUsIGJhc2ljSW5mby55c2l6ZSkpOwotICAgICAgICAgICAgaWYgKG9ubHlTaXpl
KQorICAgICAgICAgICAgaWYgKHF1ZXJ5ID09IFF1ZXJ5OjpTaXplKSB7CisgICAgICAgICAgICAg
ICAgLy8gc2V0U2l6ZSgpIG11c3QgYmUgY2FsbGVkIG9ubHkgaWYgdGhlIHF1ZXJ5IGlzIFF1ZXJ5
OjpTaXplLAorICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSB0aGlzIHdvdWxkIHJvbGwgYmFj
ayB0aGUgZW5jb2RlZCBkYXRhIHN0YXR1cyBmcm9tIGNvbXBsZXRlZC4KKyAgICAgICAgICAgICAg
ICBzZXRTaXplKEludFNpemUobV9iYXNpY0luZm8tPnhzaXplLCBtX2Jhc2ljSW5mby0+eXNpemUp
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOworICAgICAgICAgICAgfQorCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdGF0dXMgPT0gSlhM
X0RFQ19GUkFNRSkgewogICAgICAgICAgICAgSnhsUGl4ZWxGb3JtYXQgZm9ybWF0IHsgNCwgSlhM
X1RZUEVfVUlOVDgsIEpYTF9OQVRJVkVfRU5ESUFOLCAwIH07CisgICAgICAgICAgICBKeGxGcmFt
ZUhlYWRlciBmcmFtZUhlYWRlcjsKKyAgICAgICAgICAgIGlmIChKeGxEZWNvZGVyR2V0RnJhbWVI
ZWFkZXIobV9kZWNvZGVyLmdldCgpLCAmZnJhbWVIZWFkZXIpICE9IEpYTF9ERUNfU1VDQ0VTUykK
KyAgICAgICAgICAgICAgICByZXR1cm4gSlhMX0RFQ19FUlJPUjsKKworICAgICAgICAgICAgbV9m
cmFtZUNvdW50ID0gc3RkOjptYXgobV9mcmFtZUNvdW50LCBtX2N1cnJlbnRGcmFtZSArIDEpOwor
CisgICAgICAgICAgICBpZiAoZnJhbWVIZWFkZXIuaXNfbGFzdCkKKyAgICAgICAgICAgICAgICBt
X2lzTGFzdEZyYW1lSGVhZGVyUmVjZWl2ZWQgPSB0cnVlOworCisgICAgICAgICAgICBpZiAocXVl
cnkgIT0gUXVlcnk6OkRlY29kZWRJbWFnZSkgeworICAgICAgICAgICAgICAgIGlmIChKeGxEZWNv
ZGVyU2V0SW1hZ2VPdXRDYWxsYmFjayhtX2RlY29kZXIuZ2V0KCksICZmb3JtYXQsIFtdKHZvaWQq
LCBzaXplX3QsIHNpemVfdCwgc2l6ZV90LCBjb25zdCB2b2lkKikgeyB9LCBudWxscHRyKSAhPSBK
WExfREVDX1NVQ0NFU1MpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKWExfREVDX0VSUk9S
OworCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmIChtX2N1cnJlbnRGcmFtZSA+PSBtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpKQorICAg
ICAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUobV9mcmFtZUNvdW50ICsgMSk7
CisKKyAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVttX2N1cnJl
bnRGcmFtZV07CisgICAgICAgICAgICBpZiAoYnVmZmVyLmlzSW52YWxpZCgpICYmIGJ1ZmZlci5p
bml0aWFsaXplKHNpemUoKSwgbV9wcmVtdWx0aXBseUFscGhhKSkgeworICAgICAgICAgICAgICAg
IGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6UGFydGlhbCk7CisgICAg
ICAgICAgICAgICAgYnVmZmVyLnNldEhhc0FscGhhKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBp
ZiAobV9iYXNpY0luZm8gJiYgbV9iYXNpY0luZm8tPmhhdmVfYW5pbWF0aW9uKSB7CisgICAgICAg
ICAgICAgICAgICAgIGJ1ZmZlci5zZXREdXJhdGlvbihTZWNvbmRzKChkb3VibGUpZnJhbWVIZWFk
ZXIuZHVyYXRpb24gKiBtX2Jhc2ljSW5mby0+YW5pbWF0aW9uLnRwc19kZW5vbWluYXRvciAvIG1f
YmFzaWNJbmZvLT5hbmltYXRpb24udHBzX251bWVyYXRvcikpOworICAgICAgICAgICAgICAgICAg
ICBidWZmZXIuc2V0RGlzcG9zYWxNZXRob2QoU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZTo6RGlz
cG9zYWxNZXRob2Q6OkRvTm90RGlzcG9zZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCiAgICAgICAgICAgICBpZiAoSnhsRGVjb2RlclNldEltYWdlT3V0Q2FsbGJhY2sobV9k
ZWNvZGVyLmdldCgpLCAmZm9ybWF0LCBpbWFnZU91dENhbGxiYWNrLCB0aGlzKSAhPSBKWExfREVD
X1NVQ0NFU1MpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpYTF9ERUNfRVJST1I7CisKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHN0YXR1cyA9PSBKWExf
REVDX0ZVTExfSU1BR0UpIHsKLSAgICAgICAgICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNF
bXB0eSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKG1fY3Vy
cmVudEZyYW1lIDwgbV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSkgeworICAgICAgICAgICAgICAg
IGF1dG8mIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVttX2N1cnJlbnRGcmFtZV07CisgICAg
ICAgICAgICAgICAgaWYgKCFidWZmZXIuaXNJbnZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAg
IGJ1ZmZlci5zZXREZWNvZGluZ1N0YXR1cyhEZWNvZGluZ1N0YXR1czo6Q29tcGxldGUpOworICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2Fj
aGVbMF07Ci0gICAgICAgICAgICBpZiAoIWJ1ZmZlci5pc0ludmFsaWQoKSkKLSAgICAgICAgICAg
ICAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsK
KyAgICAgICAgICAgIG1fY3VycmVudEZyYW1lKys7CisgICAgICAgICAgICBpZiAocXVlcnkgPT0g
UXVlcnk6OkRlY29kZWRJbWFnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlhMX0RFQ19GVUxM
X0lNQUdFOwogCi0gICAgICAgICAgICAvLyBUT0RPOiBUbyBzdXBwb3J0IGFuaW1hdGVkIEpQRUcg
WEwgaW4gdGhlIGZ1dHVyZSB3ZSBuZWVkIHRvIGhhbmRsZSBzdWJzZXF1ZW50IGRhdGEuCi0gICAg
ICAgICAgICByZXR1cm4gSlhMX0RFQ19TVUNDRVNTOworICAgICAgICAgICAgQVNTRVJUKHF1ZXJ5
ID09IFF1ZXJ5OjpGcmFtZUNvdW50KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAgICAgfQogfQpAQCAtMTU5LDE3ICszMjYsMTIgQEAgdm9pZCBKUEVHWExJbWFnZURlY29kZXI6
OmltYWdlT3V0Q2FsbGJhY2sodm9pZCogdGhhdCwgc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3QK
IAogdm9pZCBKUEVHWExJbWFnZURlY29kZXI6OmltYWdlT3V0KHNpemVfdCB4LCBzaXplX3QgeSwg
c2l6ZV90IG51bVBpeGVscywgY29uc3QgdWludDhfdCogcGl4ZWxzKQogewotICAgIGlmIChtX2Zy
YW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKQorICAgIGlmIChtX2N1cnJlbnRGcmFtZSA+PSBtX2Zy
YW1lQnVmZmVyQ2FjaGUuc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBidWZm
ZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07Ci0gICAgaWYgKGJ1ZmZlci5pc0ludmFsaWQoKSkg
ewotICAgICAgICBpZiAoIWJ1ZmZlci5pbml0aWFsaXplKHNpemUoKSwgbV9wcmVtdWx0aXBseUFs
cGhhKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBidWZmZXIuc2V0RGVjb2RpbmdT
dGF0dXMoRGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwpOwotICAgICAgICBidWZmZXIuc2V0SGFzQWxw
aGEoZmFsc2UpOwotICAgIH0KKyAgICBhdXRvJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVb
bV9jdXJyZW50RnJhbWVdOworICAgIGlmIChidWZmZXIuaXNJbnZhbGlkKCkpCisgICAgICAgIHJl
dHVybjsKIAogICAgIHVpbnQzMl90KiByb3cgPSBidWZmZXIuYmFja2luZ1N0b3JlKCktPnBpeGVs
QXQoeCwgeSk7CiAgICAgdWludDMyX3QqIGN1cnJlbnRBZGRyZXNzID0gcm93OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdYTElt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Z3hsL0pQRUdYTEltYWdlRGVjb2Rlci5oCmluZGV4IGEwOWQ1YzlkZGRjZjJlNTQ2NjgwMDNkMWYw
YWFkMDg1NTExMTFmMTkuLmZkNTIyNGVkYmUxNTgwYjhlNmNiOTkwZjA0ZjIzMjdiZjAyNGE3MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4
bC9KUEVHWExJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVneGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmgKQEAgLTQ1LDI1ICs0NSw1MCBA
QCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxl
bmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJqeGwiX3M7IH0KKyAgICBz
aXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlcGV0aXRpb25Db3VudCBy
ZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBTY2FsYWJsZUltYWdlRGVjb2Rl
ckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBvdmVycmlkZTsKKyAgICB2
b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSkgb3ZlcnJp
ZGU7CiAKICAgICBib29sIHNldEZhaWxlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEpQ
RUdYTEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OwotICAgIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUg
eyBkZWNvZGUodHJ1ZSwgYWxsRGF0YVJlY2VpdmVkKTsgfQorICAgIGVudW0gY2xhc3MgUXVlcnkg
eworICAgICAgICAvLyBUaGlzIHF1ZXJ5IGlzIHVzZWQgZm9yIHRyeURlY29kZVNpemUoKS4KKyAg
ICAgICAgU2l6ZSwKKyAgICAgICAgLy8gV2UgZGVmaW5lIGEgcXVlcnkgZm9yIGZyYW1lIGNvdW50
IGJlY2F1c2UgSlBFRyBYTCBkb2Vzbid0IGhhdmUgZnJhbWUgY291bnQgaW5mb3JtYXRpb24gaW4g
aXRzIGNvZGUgc3RyZWFtCisgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gc2NhbiB0aGUgY29kZSBz
dHJlYW0gdG8gZ2V0IHRoZSBmcmFtZSBjb3VudCBmb3IgYW5pbWF0ZWQgSlBFRyBYTC4KKyAgICAg
ICAgLy8gSlBFRyBYTCBjb250YWluZXIgY2FuIGhhdmUgZnJhbWUgY291bnQgbWV0YWRhdGEgYnV0
IGN1cnJlbnRseSBsaWJqeGwgZG9lc24ndCBzdXBwb3J0IGl0LgorICAgICAgICBGcmFtZUNvdW50
LAorICAgICAgICAvLyBRdWVyeSB0byBkZWNvZGUgYSBzaW5nbGUgZnJhbWUuCisgICAgICAgIERl
Y29kZWRJbWFnZSwKKyAgICB9OwogCi0gICAgdm9pZCBkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIEpQRUdYTEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29s
IGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNsZWFyKCk7CisgICAgYm9v
bCBoYXNBbHBoYSgpIGNvbnN0OworICAgIGJvb2wgaGFzQW5pbWF0aW9uKCkgY29uc3Q7CiAKLSAg
ICBKeGxEZWNvZGVyU3RhdHVzIHByb2Nlc3NJbnB1dChib29sIG9ubHlTaXplKTsKKyAgICB2b2lk
IGVuc3VyZURlY29kZXJJbml0aWFsaXplZCgpOworICAgIGJvb2wgc2hvdWxkUmV3aW5kKFF1ZXJ5
ICwgc2l6ZV90IGZyYW1lSW5kZXgpIGNvbnN0OworICAgIHZvaWQgcmV3aW5kKCk7CisgICAgdm9p
ZCB1cGRhdGVGcmFtZUNvdW50KCk7CiAKLSAgICBzdGF0aWMgdm9pZCBpbWFnZU91dENhbGxiYWNr
KHZvaWQqIHRoYXQsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IG51bVBpeGVscywgY29uc3Qg
dm9pZCogcGl4ZWxzKTsKKyAgICB2b2lkIGRlY29kZShRdWVyeSwgc2l6ZV90IGZyYW1lSW5kZXgs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBKeGxEZWNvZGVyU3RhdHVzIHByb2Nlc3NJbnB1
dChRdWVyeSk7CisgICAgc3RhdGljIHZvaWQgaW1hZ2VPdXRDYWxsYmFjayh2b2lkKiwgc2l6ZV90
IHgsIHNpemVfdCB5LCBzaXplX3QgbnVtUGl4ZWxzLCBjb25zdCB2b2lkKiBwaXhlbHMpOwogICAg
IHZvaWQgaW1hZ2VPdXQoc2l6ZV90IHgsIHNpemVfdCB5LCBzaXplX3QgbnVtUGl4ZWxzLCBjb25z
dCB1aW50OF90KiBwaXhlbHMpOwogCiAgICAgSnhsRGVjb2RlclB0ciBtX2RlY29kZXI7Ci0gICAg
c2l6ZV90IG1fcmVhZE9mZnNldCA9IDA7CisgICAgc2l6ZV90IG1fcmVhZE9mZnNldCB7IDAgfTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEp4bEJhc2ljSW5mbz4gbV9iYXNpY0luZm87CisKKyAgICBRdWVy
eSBtX2xhc3RRdWVyeSB7IFF1ZXJ5OjpTaXplIH07CisgICAgc2l6ZV90IG1fZnJhbWVDb3VudCB7
IDEgfTsKKyAgICBzaXplX3QgbV9jdXJyZW50RnJhbWUgeyAwIH07CisKKyAgICBib29sIG1faXNM
YXN0RnJhbWVIZWFkZXJSZWNlaXZlZCB7IGZhbHNlIH07IC8vIElmIHRoaXMgaXMgdHJ1ZSwgd2Ug
a25vdyB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSBtX2ZyYW1lQ291bnQuCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzg2MjdjZGNmYmY2YWQ2YmZkMTA0YWIzZmI2Mjg4MzNk
NTQ4ZDcxMC4uNzk0YTkwODNkY2FlY2EwNzc1NjZhMDc2MDE4NjRhYmVhOTMzNmFmZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIyIEBACisyMDIxLTEyLTA3ICBZb3NoaWFraSBKaXRzdWthd2EgIDx5b3NoaWFr
aS5qaXRzdWthd2FAc29ueS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBBbmltYXRlZCBKUEVHLVhM
IGltYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNTQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NjA3NzE0Mz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAgQWRkIHRlc3QgZm9yIGFuaW1hdGVk
IEpQRUcgWEwsIGJhc2VkIG9uIGFuaW1hdGVkLWdpZi1sb29wLWNvdW50LgorCisgICAgICAgICog
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9hbmltYXRlZC1qcGVneGwt
bG9vcC1jb3VudC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9h
bmltYXRlZC1qcGVneGwtbG9vcC1jb3VudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2lt
YWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LTEuanhsOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJs
dWUtcmVwZWF0LTIuanhsOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9yZXNvdXJjZXMv
YW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LWluZmluaXRlLmp4bDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMTItMDYgIExhdXJvIE1vdXJhICA8
bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIFNtYWxsIGdhcmRlbmluZwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggODcwYTFhOTVjODY1MmIxOWZiYTExYTRlMDA3ZmE5NmM4ZTA0MjM1
Yi4uYWE5ZjEyMTZkNzY1ZTQzNzhiY2UzYWMxY2M2NGJhNGM5MWU3OGZiMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCkBAIC0xMzUsNiArMTM1LDcgQEAgaHR0cC90ZXN0cy9pbWFnZXMvYXZpZi1wYXJ0aWFs
LWxvYWQtY3Jhc2guaHRtbCBbIFNraXAgXQogIyBUaGVzZSB0ZXN0cyBkb24ndCBoYXZlIHRvIGJl
IHBsYXRmb3JtLXNwZWNpZmljLCBidXQgdGhleSBhcmUgb25seSBpbXBsZW1lbnRlZCBvbiBXaW5D
YWlybyBub3cuCiBmYXN0L2ltYWdlcy9qcGVneGwtaW1hZ2UtZGVjb2RpbmcuaHRtbCBbIFNraXAg
XQogZmFzdC9pbWFnZXMvanBlZ3hsLWFzLWltYWdlLmh0bWwgWyBTa2lwIF0KK2Zhc3QvaW1hZ2Vz
L2FuaW1hdGVkLWpwZWd4bC1sb29wLWNvdW50Lmh0bWwgWyBTa2lwIF0KIAogIyBPbmx5IGFwcGxp
Y2FibGUgb24gcGxhdGZvcm1zIHdpdGggZGFyayBtb2RlIHN1cHBvcnQKIGNzcy1kYXJrLW1vZGUg
WyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWpw
ZWd4bC1sb29wLWNvdW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9h
bmltYXRlZC1qcGVneGwtbG9vcC1jb3VudC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmOTIx
NDE2ODZmY2Q1OTE0NDEyYTA3MWE5MGE2ZTc2MWFhN2RlZDIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1qcGVneGwtbG9vcC1jb3VudC1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c3R5bGU+
CisgICAgLmJveCB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBw
eDsKKyAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIH0KKzwvc3R5bGU+Cis8Ym9k
eT4KKyAgICA8ZGl2PgorICAgICAgICA8cD5GcmFtZXMgb2YgYSAzLWZyYW1lIGFuaW1hdGVkIGlt
YWdlIHdpdGggbWlzc2luZyBsb29wQ291bnQsIChyZXBldGl0aW9uQ291bnQgPSAxKTo8L3A+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsiPjwv
ZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBn
cmVlbjsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5k
LWNvbG9yOiBibHVlOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJh
Y2tncm91bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAg
ICAgICA8cD5GcmFtZXMgb2YgYSAzLWZyYW1lIGFuaW1hdGVkIGltYWdlIHdpdGggbG9vcENvdW50
ID0gMSwgKHJlcGV0aXRpb25Db3VudCA9IDIpOjwvcD4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94
IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xh
c3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgICAg
IDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4K
KyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkOyI+
PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
IGdyZWVuOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91
bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0i
YmFja2dyb3VuZC1jb2xvcjogYmx1ZTsiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+Cisg
ICAgICAgIDxwPkZyYW1lcyBvZiBhIDMtZnJhbWUgYW5pbWF0ZWQgaW1hZ2Ugd2l0aCBsb29wQ291
bnQgPSAwLCAocmVwZXRpdGlvbkNvdW50ID0gaW5maW5pdGUpOjwvcD4KKyAgICAgICAgPGRpdiBj
bGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkOyI+PC9kaXY+CisgICAgICAg
IDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+
CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGJsdWU7
Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xv
cjogcmVkOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91
bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9
ImJhY2tncm91bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94
IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkOyI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRl
ZC1qcGVneGwtbG9vcC1jb3VudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0
ZWQtanBlZ3hsLWxvb3AtY291bnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTUyZTY1ZTE3N2RmYmZjZDQ3
ZTI3NGUxYWNlODkwN2JkMWI3MzA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9pbWFnZXMvYW5pbWF0ZWQtanBlZ3hsLWxvb3AtY291bnQuaHRtbApAQCAtMCwwICsxLDQ5IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHN0eWxlPgorICAgIGNhbnZhcyB7CisgICAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9hbmltYXRlZC1pbWFnZS1sb29wLWNvdW50LmpzIj48L3Nj
cmlwdD4KKzxib2R5PgorICAgIDxkaXY+CisgICAgICAgIDxwPkZyYW1lcyBvZiBhIDMtZnJhbWUg
YW5pbWF0ZWQgaW1hZ2Ugd2l0aCBtaXNzaW5nIGxvb3BDb3VudCwgKHJlcGV0aXRpb25Db3VudCA9
IDEpOjwvcD4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLTEiPjwvY2FudmFzPgorICAgICAg
ICA8Y2FudmFzIGlkPSJjYW52YXMtMiI+PC9jYW52YXM+CisgICAgICAgIDxjYW52YXMgaWQ9ImNh
bnZhcy0zIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLTQiPjwvY2FudmFz
PgorICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICAgIDxwPkZyYW1lcyBvZiBhIDMtZnJhbWUg
YW5pbWF0ZWQgaW1hZ2Ugd2l0aCBsb29wQ291bnQgPSAxLCAocmVwZXRpdGlvbkNvdW50ID0gMik6
PC9wPgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMtYSI+PC9jYW52YXM+CisgICAgICAgIDxj
YW52YXMgaWQ9ImNhbnZhcy1iIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFz
LWMiPjwvY2FudmFzPgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMtZCI+PC9jYW52YXM+Cisg
ICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcy1lIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBp
ZD0iY2FudmFzLWYiPjwvY2FudmFzPgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMtZyI+PC9j
YW52YXM+CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAgICAgICAgPHA+RnJhbWVzIG9mIGEgMy1m
cmFtZSBhbmltYXRlZCBpbWFnZSB3aXRoIGxvb3BDb3VudCA9IDAsIChyZXBldGl0aW9uQ291bnQg
PSBpbmZpbml0ZSk6PC9wPgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMtQSI+PC9jYW52YXM+
CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcy1CIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZh
cyBpZD0iY2FudmFzLUMiPjwvY2FudmFzPgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMtRCI+
PC9jYW52YXM+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcy1FIj48L2NhbnZhcz4KKyAgICAg
ICAgPGNhbnZhcyBpZD0iY2FudmFzLUYiPjwvY2FudmFzPgorICAgICAgICA8Y2FudmFzIGlkPSJj
YW52YXMtRyI+PC9jYW52YXM+CisgICAgPC9kaXY+CisgICAgPHNjcmlwdD4KKyAgICAgICAgKGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIGltYWdlcyA9IFsKKyAgICAgICAgICAgICAgICB7
IHNyYzogInJlc291cmNlcy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtMS5qeGwiLCBj
YW52YXNJZDogJzEnLCBmcmFtZUNvdW50OiA0IH0sCisgICAgICAgICAgICAgICAgeyBzcmM6ICJy
ZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LTIuanhsIiwgY2FudmFzSWQ6
ICdhJywgZnJhbWVDb3VudDogNyB9LAorICAgICAgICAgICAgICAgIHsgc3JjOiAicmVzb3VyY2Vz
L2FuaW1hdGVkLXJlZC1ncmVlbi1ibHVlLXJlcGVhdC1pbmZpbml0ZS5qeGwiLCBjYW52YXNJZDog
J0EnLCBmcmFtZUNvdW50OiA3IH0KKyAgICAgICAgICAgIF07CisgICAgICAgICAgICBydW5UZXN0
KGltYWdlcyk7CisgICAgICAgIH0pKCk7CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQt
cmVkLWdyZWVuLWJsdWUtcmVwZWF0LTEuanhsIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVz
b3VyY2VzL2FuaW1hdGVkLXJlZC1ncmVlbi1ibHVlLXJlcGVhdC0xLmp4bApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MjIwMzA5YzBjNTdiMmNlNGU3ZmQzYTY4MzE4NjE2ZTdkODc5MDk3CkdJVCBiaW5hcnkgcGF0Y2gK
bGl0ZXJhbCA5OQp6Y21leSpCX1pzbkF0MjFiIW98VkJraXlfQyhKamh3TUxPQV9Pa2FTSkw0aCU3
eGpsbnBlWX1rbkxfcT9ZZzhXaEAKaTFfbmxsXyZAU01jQF9wQXV5ak4wenlDfnYzXiEoJkY9I09U
Vmc+LXVPJT0laQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVkLXJlZC1ncmVlbi1ibHVlLXJlcGVhdC0y
Lmp4bCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC1yZWQtZ3Jl
ZW4tYmx1ZS1yZXBlYXQtMi5qeGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzU3NTczZTBiNWVkNmMwYTBjZjRkYzIy
NjE5YmNkOWEyYzk4MWQ0NgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgOTkKemNtZXkqQl9adFNB
dDIxYiFvfFZCa2l5X0MoSmpod01MT0FfT2thU0pMNGglN3hqbG5wZVl9a25MX3E/WWc4V2hACmkx
X25sbF8mQFNNY0BfcEF1eWpOMHp5Q352M14hKCZGPSNPVFZnPi0pNEhmQUMKCmxpdGVyYWwgMApI
Y21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNl
cy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtaW5maW5pdGUuanhsIGIvTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVkLXJlZC1ncmVlbi1ibHVlLXJlcGVhdC1p
bmZpbml0ZS5qeGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmIxMTA0ZDk0NThmYzEwNjQ5YzY5MDE0MGI2OTczNDVl
MWQwMWRlNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgOTkKemNtZXkqQl9ac3traV44biFvfFZC
a2l5X0MoSmpod01MT0FfT2thU0pMNGglN3hqbG5wZVl9a25MX3E/WWc4V2hACmkxX25sbF8mQFNN
Y0BfcEF1eWpOMHp5Q352M14hKCZGPSNPVFZnPi0lT0JMYigKCmxpdGVyYWwgMApIY21WP2QwMDAw
MQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAwMGE5
M2M3OTljZDI2Y2NmYjk1NTg1ZDExYjRhMjZlYjFjYzg0YjVjLi44ZWM2MDM0OGQwYTNjYmFlZTA2
YzlmYzcyMWY5NmZkYjM2YTU5MDYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
bGliL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xMDcsNiArMTA3LDcgQEAgZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci05
Lmh0bWwgWyBQYXNzIF0KICMgSlBFRy1YTCB0ZXN0cwogZmFzdC9pbWFnZXMvanBlZ3hsLWFzLWlt
YWdlLmh0bWwgWyBQYXNzIF0KIGZhc3QvaW1hZ2VzL2pwZWd4bC1pbWFnZS1kZWNvZGluZy5odG1s
IFsgUGFzcyBdCitmYXN0L2ltYWdlcy9hbmltYXRlZC1qcGVneGwtbG9vcC1jb3VudC5odG1sIFsg
UGFzcyBdCiAKICMgU29tZSBBcHBsZSBwb3J0cyBkb24ndCBzdXBwb3J0IFJUTCBzY3JvbGxiYXJz
LgogZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtZWxlbWVudEZyb21Qb2ludC1zdGF0aWMu
aHRtbCBbIFBhc3MgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8v
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggNzExOGZmZTIwMDY2YWJlZjlhNzNiZmE5MzU2ZjY2Nzg1NTczOTE1Ni4u
YzZmZDJiZTEyMjA1MDEzYjA3ZGI5NTIzMzJmZDg4YThhMDlkOGU5YSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCkBAIC0yNzIsOSArMjcyLDEw
IEBAIG1lZGlhL2FpcnBsYXktYXV0b3BsYXkuaHRtbCBbIFNraXAgXQogIyBQTEFURk9STShNQUMp
LCBpbnRlcm5hbHMucmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbigpCiBmYXN0L2xh
eWVycy9wcmV2ZW50LWhpdC10ZXN0LWR1cmluZy1sYXlvdXQuaHRtbCBbIFNraXAgXQogCi0jIEpQ
RUcgWEwgaXMgZGlzYWJsZWQgdW50aWwgV2ViS2l0UmVxdWlyZW1lbnRzIGlzIHJlbGVhc2VkIHdp
dGggbGlianhsCi1mYXN0L2ltYWdlcy9qcGVneGwtYXMtaW1hZ2UuaHRtbCBbIFNraXAgXQotZmFz
dC9pbWFnZXMvanBlZ3hsLWltYWdlLWRlY29kaW5nLmh0bWwgWyBTa2lwIF0KKyMgSlBFRy1YTCBU
ZXN0cworZmFzdC9pbWFnZXMvanBlZ3hsLWFzLWltYWdlLmh0bWwgWyBQYXNzIF0KK2Zhc3QvaW1h
Z2VzL2pwZWd4bC1pbWFnZS1kZWNvZGluZy5odG1sIFsgUGFzcyBdCitmYXN0L2ltYWdlcy9hbmlt
YXRlZC1qcGVneGwtbG9vcC1jb3VudC5odG1sIFsgUGFzcyBdCiAKICMgRGF0YVRyYW5zZmVySXRl
bXMgaXMgbm90IHlldCBpbXBsZW1lbnRlZAogZmFzdC9ldmVudHMvY2xpcGJvYXJkLWRhdGFUcmFu
c2Zlckl0ZW1MaXN0Lmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446244</attachid>
            <date>2021-12-07 15:24:39 -0800</date>
            <delta_ts>2021-12-07 16:23:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233545-20211208082441.patch</filename>
            <type>text/plain</type>
            <size>26764</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ1ZDNmM2Q4MzhmMDlm
NDI0ZWI2NGNmMzEwNTNmMDVkM2Q0OWU3Yy4uZDExMzdiNWZmNzJmZjA3MTk5ZmY0Mjc5NDg2MTFh
ODkxYTdhYWE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTEyLTA3ICBZb3No
aWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29ueS5jb20+CisKKyAgICAgICAg
U3VwcG9ydCBBbmltYXRlZCBKUEVHLVhMIGltYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTQ1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NjA3NzE0Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgcmVsZXZhbnQgQVBJLCBzdWNoIGFzIGZyYW1lQ291bnQoKSBhbmQgc3VwcG9y
dCBhIHBvc2l0aXZlCisgICAgICAgIGZyYW1lIGluZGV4IGZvciBmcmFtZUJ1ZmZlckF0SW5kZXgo
KS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBxdWVyeSB0byBjb3VudCBmcmFtZXMgYmVjYXVzZSBK
UEVHIFhMIGNvZGUgc3RyZWFtIGl0c2VsZiBkb2Vzbid0IGhhdmUgZnJhbWUKKyAgICAgICAgY291
bnQgbWV0YWRhdGEgYW5kIHdlIG5lZWQgdG8gc2NhbiB0aGUgY29kZSBzdHJlYW0gdG8gdGhlIGxh
c3QgZnJhbWUuCisKKyAgICAgICAgQWxzbyBpbnRyb2R1Y2UgdGhlIFNpemUgcXVlcnkgaW5zdGVh
ZCBvZiB0aGUgb25seVNpemUgcGFyYW1ldGVyIG9mIHRoZSBkZWNvZGUoKSBmdW5jdGlvbi4KKwor
ICAgICAgICBXaXRoIHRoZSBEZWNvZGVJbWFnZSBxdWVyeSwgdGhlIGRlY29kZXIgZGVjb2RlcyBh
IHNpbmdsZSBmcmFtZS4gVG8KKyAgICAgICAgc3BlY2lmeSB3aGljaCBmcmFtZSB0byBkZWNvZGUs
IHdlIG1ha2UgdXNlIG9mIHRoZSBKeGxEZWNvZGVyUmV3aW5kKCkKKyAgICAgICAgYW5kIEp4bERl
Y29kZXJTa2lwRnJhbWVzKCkgZnVuY3Rpb25zIG9mIGxpYmp4bC4KKworICAgICAgICBUbyBvbWl0
IHJld2luZCBhbmQgc2tpcCBhcyBtdWNoIGFzIHBvc3NpYmxlLCB3ZSByZWNvcmQgdGhlIHF1ZXJ5
IHRvCisgICAgICAgIG1fbGFzdFF1ZXJ5IGFuZCB1c2UgaXQgaW4gc2hvdWxkUmV3aW5kKCkuCisK
KyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMvYW5pbWF0ZWQtanBlZ3hsLWxvb3AtY291bnQuaHRt
bAorCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdYTEltYWdl
RGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHWExJbWFnZURlY29kZXI6On5KUEVH
WExJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR1hMSW1hZ2VEZWNvZGVyOjpm
cmFtZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdlRGVjb2Rlcjo6
cmVwZXRpdGlvbkNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdlRGVj
b2Rlcjo6ZnJhbWVCdWZmZXJBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdl
RGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdY
TEltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdl
RGVjb2Rlcjo6dHJ5RGVjb2RlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHWExJbWFnZURl
Y29kZXI6Omhhc0FscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdlRGVj
b2Rlcjo6aGFzQW5pbWF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdl
RGVjb2Rlcjo6ZW5zdXJlRGVjb2RlckluaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNvcmU6OkpQ
RUdYTEltYWdlRGVjb2Rlcjo6c2hvdWxkUmV3aW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkpQRUdYTEltYWdlRGVjb2Rlcjo6cmV3aW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTElt
YWdlRGVjb2Rlcjo6dXBkYXRlRnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHWExJ
bWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHWExJbWFnZURlY29k
ZXI6OnByb2Nlc3NJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHWExJbWFnZURlY29kZXI6
OmltYWdlT3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdYTEltYWdlRGVjb2Rlcjo6Y2xlYXIp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVH
WExJbWFnZURlY29kZXIuaDoKKwogMjAyMS0xMi0wNiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBVbmlmeSBHcmlkIG92
ZXJsYXkgZHJhd2luZyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVneGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIuY3Bw
CmluZGV4IDUxMjk3YTE3NThjMThiZDk3NGY2MGZiYWM1NmUwNzZlMGI2MjlkMjYuLjZhZGU5ZmE2
NDk0NzQ0M2E4ZDczOGM3ZTQ0NjdiZDhmMGI1YzVkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVH
WExJbWFnZURlY29kZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBVU0UoSlBFR1hMKQog
CisjaW5jbHVkZSA8b3B0aW9uYWw+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlBFR1hMSW1h
Z2VEZWNvZGVyOjpKUEVHWExJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQpAQCAt
MzcsNTUgKzM5LDE3OCBAQCBKUEVHWExJbWFnZURlY29kZXI6OkpQRUdYTEltYWdlRGVjb2RlcihB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBybwogCiBKUEVHWExJbWFnZURl
Y29kZXI6On5KUEVHWExJbWFnZURlY29kZXIoKQogewotICAgIGNsZWFyKCk7Cit9CisKK3NpemVf
dCBKUEVHWExJbWFnZURlY29kZXI6OmZyYW1lQ291bnQoKSBjb25zdAoreworICAgIGlmICghaGFz
QW5pbWF0aW9uKCkpCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKCFtX2lzTGFzdEZyYW1l
SGVhZGVyUmVjZWl2ZWQpCisgICAgICAgIGNvbnN0X2Nhc3Q8SlBFR1hMSW1hZ2VEZWNvZGVyKj4o
dGhpcyktPnVwZGF0ZUZyYW1lQ291bnQoKTsKKworICAgIHJldHVybiBtX2ZyYW1lQ291bnQ7Cit9
CisKK1JlcGV0aXRpb25Db3VudCBKUEVHWExJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCgp
IGNvbnN0Cit7CisgICAgaWYgKGhhc0FuaW1hdGlvbigpKSB7CisgICAgICAgIGlmICghbV9iYXNp
Y0luZm8tPmFuaW1hdGlvbi5udW1fbG9vcHMpIHsKKyAgICAgICAgICAgIC8vIElmIG51bV9sb29w
cyBpcyB6ZXJvLCByZXBlYXQgaW5maW5pdGVseS4KKyAgICAgICAgICAgIHJldHVybiBSZXBldGl0
aW9uQ291bnRJbmZpbml0ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9iYXNpY0luZm8t
PmFuaW1hdGlvbi5udW1fbG9vcHM7CisgICAgfQorICAgIHJldHVybiBSZXBldGl0aW9uQ291bnRO
b25lOwogfQogCiBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBKUEVHWExJbWFnZURlY29kZXI6
OmZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgLy8gVE9ETzogVG8gc3Vw
cG9ydCBhbmltYXRlZCBKUEVHIFhMIGluIHRoZSBmdXR1cmUgd2UgbmVlZCB0byBoYW5kbGUgc2Vj
b25kIGFuZCBzdWJzZXF1ZW50IGZyYW1lcy4KLSAgICBpZiAoaW5kZXgpCisgICAgaWYgKFNjYWxh
YmxlSW1hZ2VEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cygpIDwgRW5jb2RlZERhdGFTdGF0dXM6
OlNpemVBdmFpbGFibGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgaWYgKGluZGV4
ID49IGZyYW1lQ291bnQoKSkKKyAgICAgICAgaW5kZXggPSBmcmFtZUNvdW50KCkgLSAxOworCiAg
ICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fZnJhbWVCdWZm
ZXJDYWNoZS5ncm93KDEpOwogCi0gICAgYXV0byYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVb
MF07CisgICAgYXV0byYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdOwogICAgIGlm
ICghZnJhbWUuaXNDb21wbGV0ZSgpKQotICAgICAgICBkZWNvZGUoZmFsc2UsIGlzQWxsRGF0YVJl
Y2VpdmVkKCkpOworICAgICAgICBkZWNvZGUoUXVlcnk6OkRlY29kZWRJbWFnZSwgaW5kZXgsIGlz
QWxsRGF0YVJlY2VpdmVkKCkpOwogICAgIHJldHVybiAmZnJhbWU7CiB9CiAKLXZvaWQgSlBFR1hM
SW1hZ2VEZWNvZGVyOjpjbGVhcigpCit2b2lkIEpQRUdYTEltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFt
ZUJ1ZmZlckNhY2hlKHNpemVfdCBjbGVhckJlZm9yZUZyYW1lKQogewotICAgIG1fZGVjb2Rlci5y
ZXNldCgpOwotICAgIG1fcmVhZE9mZnNldCA9IDA7CisgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNo
ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFVubGlrZSB0aGUgcG5nIGFu
ZCBnaWYgY2FzZXMsIHdlIGNhbiBhbHdheXMgdHJ5IHRvIGNsZWFyIGZyYW1lcyBiZWZvcmUgImNs
ZWFyQmVmb3JlRnJhbWUiIGJlY2F1c2UKKyAgICAvLyB0aGUgZGVwZW5kZW5jaXkgdG8gdGhlIHBy
ZXZpb3VzIGZyYW1lIGlzIGhhbmRsZWQgYnkgbGlianhsLgorICAgIGNvbnN0IFZlY3RvcjxTY2Fs
YWJsZUltYWdlRGVjb2RlckZyYW1lPjo6aXRlcmF0b3IgZW5kKG1fZnJhbWVCdWZmZXJDYWNoZS5i
ZWdpbigpICsgY2xlYXJCZWZvcmVGcmFtZSk7CisKKyAgICBmb3IgKFZlY3RvcjxTY2FsYWJsZUlt
YWdlRGVjb2RlckZyYW1lPjo6aXRlcmF0b3IgaShtX2ZyYW1lQnVmZmVyQ2FjaGUuYmVnaW4oKSk7
IGkgIT0gZW5kOyArK2kpIHsKKyAgICAgICAgLy8gSWYgdGhlIGZyYW1lIGlzIHBhcnRpYWwsIHdl
J3JlIHN0aWxsIG9uIHRoZSB3YXkgdG8gZGVjb2RlIHRoZSBmcmFtZSBhbmQgaXQncyBsaWtlbHkK
KyAgICAgICAgLy8gd2UgY29udGludWUgdGhlIGRlY29kZSwgc28gd2UgZG9uJ3QgY2xlYXIgdGhl
IGZyYW1lLgorICAgICAgICBpZiAoaS0+aXNQYXJ0aWFsKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBpLT5jbGVhcigpOworICAgIH0KIH0KIAogYm9vbCBKUEVHWExJbWFnZURl
Y29kZXI6OnNldEZhaWxlZCgpCiB7Ci0gICAgY2xlYXIoKTsKKyAgICBtX2RlY29kZXIucmVzZXQo
KTsKICAgICByZXR1cm4gU2NhbGFibGVJbWFnZURlY29kZXI6OnNldEZhaWxlZCgpOwogfQogCi12
b2lkIEpQRUdYTEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBKUEVHWExJbWFnZURlY29kZXI6OnRyeURlY29kZVNpemUoYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKG1fYmFzaWNJbmZvKQorICAgICAgICByZXR1cm47
CisgICAgZGVjb2RlKFF1ZXJ5OjpTaXplLCAwLCBhbGxEYXRhUmVjZWl2ZWQpOworfQorCitib29s
IEpQRUdYTEltYWdlRGVjb2Rlcjo6aGFzQWxwaGEoKSBjb25zdAoreworICAgIHJldHVybiBtX2Jh
c2ljSW5mbyAmJiBtX2Jhc2ljSW5mby0+YWxwaGFfYml0cyA+IDA7Cit9CisKK2Jvb2wgSlBFR1hM
SW1hZ2VEZWNvZGVyOjpoYXNBbmltYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2Jhc2lj
SW5mbyAmJiBtX2Jhc2ljSW5mby0+aGF2ZV9hbmltYXRpb247Cit9CisKK3ZvaWQgSlBFR1hMSW1h
Z2VEZWNvZGVyOjplbnN1cmVEZWNvZGVySW5pdGlhbGl6ZWQoKQogewogICAgIGlmIChmYWlsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fZGVjb2RlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9kZWNvZGVyID0gSnhsRGVjb2Rlck1ha2UobnVsbHB0cik7CiAgICAgaWYgKCFt
X2RlY29kZXIpIHsKLSAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgbV9kZWNvZGVyID0gSnhsRGVj
b2Rlck1ha2UobnVsbHB0cik7Ci0gICAgICAgIGlmICghbV9kZWNvZGVyKSB7Ci0gICAgICAgICAg
ICBzZXRGYWlsZWQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBz
ZXRGYWlsZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgICAgICBpZiAoSnhsRGVj
b2RlclN1YnNjcmliZUV2ZW50cyhtX2RlY29kZXIuZ2V0KCksIEpYTF9ERUNfQkFTSUNfSU5GTyB8
IEpYTF9ERUNfRlJBTUUgfCBKWExfREVDX0ZVTExfSU1BR0UpICE9IEpYTF9ERUNfU1VDQ0VTUykg
ewotICAgICAgICAgICAgc2V0RmFpbGVkKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgaWYg
KEp4bERlY29kZXJTdWJzY3JpYmVFdmVudHMobV9kZWNvZGVyLmdldCgpLCBKWExfREVDX0JBU0lD
X0lORk8gfCBKWExfREVDX0ZSQU1FIHwgSlhMX0RFQ19GVUxMX0lNQUdFKSAhPSBKWExfREVDX1NV
Q0NFU1MpIHsKKyAgICAgICAgc2V0RmFpbGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX3JlYWRPZmZzZXQgPSAwOworICAgIG1fY3VycmVudEZyYW1lID0gMDsKKyAgICBtX2xh
c3RRdWVyeSA9IFF1ZXJ5OjpTaXplOworfQorCitib29sIEpQRUdYTEltYWdlRGVjb2Rlcjo6c2hv
dWxkUmV3aW5kKFF1ZXJ5IHF1ZXJ5LCBzaXplX3QgZnJhbWVJbmRleCkgY29uc3QKK3sKKyAgICBp
ZiAobV9sYXN0UXVlcnkgPT0gUXVlcnk6OkZyYW1lQ291bnQpIHsKKyAgICAgICAgLy8gSWYgdGhl
IGN1cnJlbnQgcXVlcnkgaXMgbm90IEZyYW1lQ291bnQsIHdlJ3ZlIGNvbXBsZXRlZCB0aGUgcHJl
dmlvdXMgRnJhbWVDb3VudCBxdWVyeQorICAgICAgICAvLyBhbmQgdGhlIGRlY29kZXIgaGFzIHJl
YWNoZWQgdGhlIEVPRiwgc28gd2UgbmVlZCB0byByZXdpbmQgdGhlIGRlY29kZXIgZm9yIHRoZSBu
ZXcgcXVlcnkuCisgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBjb250aW51ZSB0aGUgRnJhbWVDb3Vu
dCBxdWVyeSwgc28gd2UgbXVzdCBub3QgcmV3aW5kIHRoZSBkZWNvZGVyLgorICAgICAgICByZXR1
cm4gcXVlcnkgIT0gUXVlcnk6OkZyYW1lQ291bnQ7CisgICAgfQorCisgICAgaWYgKG1fbGFzdFF1
ZXJ5ID09IFF1ZXJ5OjpTaXplKSB7CisgICAgICAgIC8vIFRoZSBkZWNvZGVyIGlzIGF0IHRoZSBz
dHJlYW0gaGVhZGVyIGFuZCBkb2Vzbid0IG5lZWQgcmV3aW5kLgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IG1fbGFzdFF1ZXJ5IGlz
IFF1ZXJ5OjpEZWNvZGVkSW1hZ2UuCisKKyAgICBpZiAocXVlcnkgIT0gUXVlcnk6OkRlY29kZWRJ
bWFnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBUaGVyZSdzIHR3byBjYXNlcyB3
aGVyZSB3ZSBkb24ndCBuZWVkIHRvIHJld2luZDoKKyAgICAvLyAgIDEuIFByZXZpb3VzIGRlY29k
aW5nIHdhcyBpbnRlcnJ1cHRlZCB3aXRoIEpYTF9ERUNfTkVFRF9NT1JFX0lOUFVUCisgICAgLy8g
ICAgICBhbmQgdHJ5aW5nIHRvIGNvbnRpbnVlIGRlY29kaW5nIHRoZSBzYW1lIGZyYW1lLgorICAg
IC8vICAgMi4gUHJldmlvdXMgZGVjb2Rpbmcgd2FzIGNvbXBsZXRlZCAobV9jdXJyZW50RnJhbWUg
d2FzIGluY3JlbWVudGVkKSBhbmQgc3RhcnRpbmcgYSBuZXcgZnJhbWUuCisgICAgLy8gSW4gYm90
aCBjYXNlcyBmcmFtZUluZGV4IGlzIGVxdWFsIHRvIG1fY3VycmVudEZyYW1lLgorICAgIHJldHVy
biBmcmFtZUluZGV4ICE9IG1fY3VycmVudEZyYW1lOworfQorCit2b2lkIEpQRUdYTEltYWdlRGVj
b2Rlcjo6cmV3aW5kKCkKK3sKKyAgICBKeGxEZWNvZGVyUmV3aW5kKG1fZGVjb2Rlci5nZXQoKSk7
CisgICAgSnhsRGVjb2RlclN1YnNjcmliZUV2ZW50cyhtX2RlY29kZXIuZ2V0KCksIEpYTF9ERUNf
QkFTSUNfSU5GTyB8IEpYTF9ERUNfRlJBTUUgfCBKWExfREVDX0ZVTExfSU1BR0UpOworICAgIG1f
cmVhZE9mZnNldCA9IDA7CisgICAgbV9jdXJyZW50RnJhbWUgPSAwOworfQorCit2b2lkIEpQRUdY
TEltYWdlRGVjb2Rlcjo6dXBkYXRlRnJhbWVDb3VudCgpCit7CisgICAgaWYgKGZhaWxlZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBkZWNvZGUoUXVlcnk6OkZyYW1lQ291bnQsIDAsIGlzQWxs
RGF0YVJlY2VpdmVkKCkpOworCisgICAgaWYgKG1fZnJhbWVDb3VudCAhPSBtX2ZyYW1lQnVmZmVy
Q2FjaGUuc2l6ZSgpKQorICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fZnJhbWVD
b3VudCk7Cit9CisKK3ZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVyOjpkZWNvZGUoUXVlcnkgcXVlcnks
IHNpemVfdCBmcmFtZUluZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICBlbnN1cmVE
ZWNvZGVySW5pdGlhbGl6ZWQoKTsKKworICAgIGlmIChmYWlsZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKHNob3VsZFJld2luZChxdWVyeSwgZnJhbWVJbmRleCkpIHsKKyAgICAgICAg
cmV3aW5kKCk7CisgICAgICAgIC8vIFdlIGNhcmUgYWJvdXQgdGhlIGZyYW1lSW5kZXggb25seSBp
ZiB0aGUgcXVlcnkgaXMgUXVlcnk6OkRlY29kZWRJbWFnZS4KKyAgICAgICAgaWYgKHF1ZXJ5ID09
IFF1ZXJ5OjpEZWNvZGVkSW1hZ2UgJiYgZnJhbWVJbmRleCkgeworICAgICAgICAgICAgSnhsRGVj
b2RlclNraXBGcmFtZXMobV9kZWNvZGVyLmdldCgpLCBmcmFtZUluZGV4KTsKKyAgICAgICAgICAg
IG1fY3VycmVudEZyYW1lID0gZnJhbWVJbmRleDsKICAgICAgICAgfQogICAgIH0KIAorICAgIG1f
bGFzdFF1ZXJ5ID0gcXVlcnk7CisKICAgICBtX2RhdGEtPmRhdGEoKTsKICAgICBzaXplX3QgZGF0
YVNpemUgPSBtX2RhdGEtPnNpemUoKTsKICAgICBpZiAoSnhsRGVjb2RlclNldElucHV0KG1fZGVj
b2Rlci5nZXQoKSwgbV9kYXRhLT5kYXRhKCkgKyBtX3JlYWRPZmZzZXQsIGRhdGFTaXplIC0gbV9y
ZWFkT2Zmc2V0KSAhPSBKWExfREVDX1NVQ0NFU1MpIHsKQEAgLTkzLDYxICsyMTgsMTA1IEBAIHZv
aWQgSlBFR1hMSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBKeGxEZWNvZGVyU3RhdHVz
IHN0YXR1cyA9IHByb2Nlc3NJbnB1dChvbmx5U2l6ZSk7CisgICAgSnhsRGVjb2RlclN0YXR1cyBz
dGF0dXMgPSBwcm9jZXNzSW5wdXQocXVlcnkpOwogICAgIC8vIFdlIHNldCB0aGUgc3RhdHVzIGFz
IGZhaWxlZCBpZiB0aGUgZGVjb2RlciByZXBvcnRzIGFuIGVycm9yIG9yIHJlcXVpcmVzIG1vcmUg
ZGF0YSB3aGlsZSBhbGwgZGF0YSBoYXMgYmVlbiByZWNlaXZlZC4KICAgICBpZiAoc3RhdHVzID09
IEpYTF9ERUNfRVJST1IgfHwgKGFsbERhdGFSZWNlaXZlZCAmJiBzdGF0dXMgPT0gSlhMX0RFQ19O
RUVEX01PUkVfSU5QVVQpKSB7CiAgICAgICAgIHNldEZhaWxlZCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgLy8gV2UgcmVsZWFzZSB0aGUgZGVjb2RlciB3aGVuIHdlIGZpbmlzaCB0
aGUgZGVjb2RpbmcuCi0gICAgaWYgKHN0YXR1cyA9PSBKWExfREVDX1NVQ0NFU1MpIHsKLSAgICAg
ICAgY2xlYXIoKTsKKyAgICBpZiAocXVlcnkgPT0gUXVlcnk6OkRlY29kZWRJbWFnZSAmJiBzdGF0
dXMgPT0gSlhMX0RFQ19GVUxMX0lNQUdFICYmIG1faXNMYXN0RnJhbWVIZWFkZXJSZWNlaXZlZCAm
JiBtX2N1cnJlbnRGcmFtZSA9PSBtX2ZyYW1lQ291bnQpIHsKKyAgICAgICAgLy8gV2UgZnJlZSB0
aGUgZGVjb2RlciB3aGVuIHRoZSBsYXN0IGZyYW1lIGlzIGRlY29kZWQuCisgICAgICAgIG1fZGVj
b2Rlci5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gT3RoZXJ3aXNl
IHdlIGdldCB0aGUgZGVjb2RlciByZWFkeSBmb3Igc3Vic2VxdWVudCBkYXRhLgogICAgIHNpemVf
dCByZW1haW5pbmdEYXRhU2l6ZSA9IEp4bERlY29kZXJSZWxlYXNlSW5wdXQobV9kZWNvZGVyLmdl
dCgpKTsKICAgICBtX3JlYWRPZmZzZXQgPSBkYXRhU2l6ZSAtIHJlbWFpbmluZ0RhdGFTaXplOwog
fQogCi1KeGxEZWNvZGVyU3RhdHVzIEpQRUdYTEltYWdlRGVjb2Rlcjo6cHJvY2Vzc0lucHV0KGJv
b2wgb25seVNpemUpCitKeGxEZWNvZGVyU3RhdHVzIEpQRUdYTEltYWdlRGVjb2Rlcjo6cHJvY2Vz
c0lucHV0KFF1ZXJ5IHF1ZXJ5KQogewogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGF1dG8g
c3RhdHVzID0gSnhsRGVjb2RlclByb2Nlc3NJbnB1dChtX2RlY29kZXIuZ2V0KCkpOwogCisgICAg
ICAgIC8vIFJldHVybiBKWExfREVDX0VSUk9SIHdoZW4gd2UndmUgcmVhY2hlZCBFT0Ygd2l0aG91
dCByZWNlaXZpbmcgYSBmcmFtZSBtYXJrZWQgYXMgImlzX2xhc3QiLgorICAgICAgICBpZiAoc3Rh
dHVzID09IEpYTF9ERUNfU1VDQ0VTUyAmJiAhbV9pc0xhc3RGcmFtZUhlYWRlclJlY2VpdmVkKQor
ICAgICAgICAgICAgcmV0dXJuIEpYTF9ERUNfRVJST1I7CisKICAgICAgICAgLy8gSlhMX0RFQ19F
UlJPUiBhbmQgSlhMX0RFQ19TVUNDRVNTIGFyZSB0ZXJtaW5hbCBzdGF0ZXMuIFdlIGFsc28gZXhp
dCBmcm9tIHRoZSBsb29wIGlmIG1vcmUgZGF0YSBpcyBuZWVkZWQuCiAgICAgICAgIGlmIChzdGF0
dXMgPT0gSlhMX0RFQ19FUlJPUiB8fCBzdGF0dXMgPT0gSlhMX0RFQ19TVUNDRVNTIHx8IHN0YXR1
cyA9PSBKWExfREVDX05FRURfTU9SRV9JTlBVVCkKICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7
CiAKICAgICAgICAgaWYgKHN0YXR1cyA9PSBKWExfREVDX0JBU0lDX0lORk8pIHsKLSAgICAgICAg
ICAgIEp4bEJhc2ljSW5mbyBiYXNpY0luZm87Ci0gICAgICAgICAgICBpZiAoSnhsRGVjb2Rlckdl
dEJhc2ljSW5mbyhtX2RlY29kZXIuZ2V0KCksICZiYXNpY0luZm8pICE9IEpYTF9ERUNfU1VDQ0VT
UykKLSAgICAgICAgICAgICAgICByZXR1cm4gSlhMX0RFQ19FUlJPUjsKKyAgICAgICAgICAgIGlm
ICghbV9iYXNpY0luZm8pIHsKKyAgICAgICAgICAgICAgICBKeGxCYXNpY0luZm8gYmFzaWNJbmZv
OworICAgICAgICAgICAgICAgIGlmIChKeGxEZWNvZGVyR2V0QmFzaWNJbmZvKG1fZGVjb2Rlci5n
ZXQoKSwgJmJhc2ljSW5mbykgIT0gSlhMX0RFQ19TVUNDRVNTKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSlhMX0RFQ19FUlJPUjsKKworICAgICAgICAgICAgICAgIG1fYmFzaWNJbmZvID0g
YmFzaWNJbmZvOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzZXRTaXplKEludFNpemUo
YmFzaWNJbmZvLnhzaXplLCBiYXNpY0luZm8ueXNpemUpKTsKLSAgICAgICAgICAgIGlmIChvbmx5
U2l6ZSkKKyAgICAgICAgICAgIGlmIChxdWVyeSA9PSBRdWVyeTo6U2l6ZSkgeworICAgICAgICAg
ICAgICAgIC8vIHNldFNpemUoKSBtdXN0IGJlIGNhbGxlZCBvbmx5IGlmIHRoZSBxdWVyeSBpcyBR
dWVyeTo6U2l6ZSwKKyAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgdGhpcyB3b3VsZCByb2xs
IGJhY2sgdGhlIGVuY29kZWQgZGF0YSBzdGF0dXMgZnJvbSBjb21wbGV0ZWQuCisgICAgICAgICAg
ICAgICAgc2V0U2l6ZShJbnRTaXplKG1fYmFzaWNJbmZvLT54c2l6ZSwgbV9iYXNpY0luZm8tPnlz
aXplKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc3RhdHVzID09
IEpYTF9ERUNfRlJBTUUpIHsKICAgICAgICAgICAgIEp4bFBpeGVsRm9ybWF0IGZvcm1hdCB7IDQs
IEpYTF9UWVBFX1VJTlQ4LCBKWExfTkFUSVZFX0VORElBTiwgMCB9OworICAgICAgICAgICAgSnhs
RnJhbWVIZWFkZXIgZnJhbWVIZWFkZXI7CisgICAgICAgICAgICBpZiAoSnhsRGVjb2RlckdldEZy
YW1lSGVhZGVyKG1fZGVjb2Rlci5nZXQoKSwgJmZyYW1lSGVhZGVyKSAhPSBKWExfREVDX1NVQ0NF
U1MpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpYTF9ERUNfRVJST1I7CisKKyAgICAgICAgICAg
IG1fZnJhbWVDb3VudCA9IHN0ZDo6bWF4KG1fZnJhbWVDb3VudCwgbV9jdXJyZW50RnJhbWUgKyAx
KTsKKworICAgICAgICAgICAgaWYgKGZyYW1lSGVhZGVyLmlzX2xhc3QpCisgICAgICAgICAgICAg
ICAgbV9pc0xhc3RGcmFtZUhlYWRlclJlY2VpdmVkID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYg
KHF1ZXJ5ICE9IFF1ZXJ5OjpEZWNvZGVkSW1hZ2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoSnhs
RGVjb2RlclNldEltYWdlT3V0Q2FsbGJhY2sobV9kZWNvZGVyLmdldCgpLCAmZm9ybWF0LCBbXSh2
b2lkKiwgc2l6ZV90LCBzaXplX3QsIHNpemVfdCwgY29uc3Qgdm9pZCopIHsgfSwgbnVsbHB0cikg
IT0gSlhMX0RFQ19TVUNDRVNTKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlhMX0RFQ19F
UlJPUjsKKworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAobV9jdXJyZW50RnJhbWUgPj0gbV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSkK
KyAgICAgICAgICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKG1fZnJhbWVDb3VudCAr
IDEpOworCisgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9j
dXJyZW50RnJhbWVdOworICAgICAgICAgICAgaWYgKGJ1ZmZlci5pc0ludmFsaWQoKSAmJiBidWZm
ZXIuaW5pdGlhbGl6ZShzaXplKCksIG1fcHJlbXVsdGlwbHlBbHBoYSkpIHsKKyAgICAgICAgICAg
ICAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OlBhcnRpYWwpOwor
ICAgICAgICAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShmYWxzZSk7CisgICAgICAgICAgICAg
ICAgaWYgKG1fYmFzaWNJbmZvICYmIG1fYmFzaWNJbmZvLT5oYXZlX2FuaW1hdGlvbikgeworICAg
ICAgICAgICAgICAgICAgICBidWZmZXIuc2V0RHVyYXRpb24oU2Vjb25kcygoZG91YmxlKWZyYW1l
SGVhZGVyLmR1cmF0aW9uICogbV9iYXNpY0luZm8tPmFuaW1hdGlvbi50cHNfZGVub21pbmF0b3Ig
LyBtX2Jhc2ljSW5mby0+YW5pbWF0aW9uLnRwc19udW1lcmF0b3IpKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnVmZmVyLnNldERpc3Bvc2FsTWV0aG9kKFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWU6
OkRpc3Bvc2FsTWV0aG9kOjpEb05vdERpc3Bvc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKEp4bERlY29kZXJTZXRJbWFnZU91dENhbGxiYWNr
KG1fZGVjb2Rlci5nZXQoKSwgJmZvcm1hdCwgaW1hZ2VPdXRDYWxsYmFjaywgdGhpcykgIT0gSlhM
X0RFQ19TVUNDRVNTKQogICAgICAgICAgICAgICAgIHJldHVybiBKWExfREVDX0VSUk9SOworCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdGF0dXMgPT0g
SlhMX0RFQ19GVUxMX0lNQUdFKSB7Ci0gICAgICAgICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hl
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICht
X2N1cnJlbnRGcmFtZSA8IG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvJiBidWZmZXIgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbbV9jdXJyZW50RnJhbWVdOwor
ICAgICAgICAgICAgICAgIGlmICghYnVmZmVyLmlzSW52YWxpZCgpKQorICAgICAgICAgICAgICAg
ICAgICBidWZmZXIuc2V0RGVjb2RpbmdTdGF0dXMoRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlKTsK
KyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZl
ckNhY2hlWzBdOwotICAgICAgICAgICAgaWYgKCFidWZmZXIuaXNJbnZhbGlkKCkpCi0gICAgICAg
ICAgICAgICAgYnVmZmVyLnNldERlY29kaW5nU3RhdHVzKERlY29kaW5nU3RhdHVzOjpDb21wbGV0
ZSk7CisgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSsrOworICAgICAgICAgICAgaWYgKHF1ZXJ5
ID09IFF1ZXJ5OjpEZWNvZGVkSW1hZ2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpYTF9ERUNf
RlVMTF9JTUFHRTsKIAotICAgICAgICAgICAgLy8gVE9ETzogVG8gc3VwcG9ydCBhbmltYXRlZCBK
UEVHIFhMIGluIHRoZSBmdXR1cmUgd2UgbmVlZCB0byBoYW5kbGUgc3Vic2VxdWVudCBkYXRhLgot
ICAgICAgICAgICAgcmV0dXJuIEpYTF9ERUNfU1VDQ0VTUzsKKyAgICAgICAgICAgIEFTU0VSVChx
dWVyeSA9PSBRdWVyeTo6RnJhbWVDb3VudCk7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTE1OSwxNyArMzI4LDEyIEBAIHZvaWQgSlBFR1hMSW1hZ2VEZWNv
ZGVyOjppbWFnZU91dENhbGxiYWNrKHZvaWQqIHRoYXQsIHNpemVfdCB4LCBzaXplX3QgeSwgc2l6
ZV90CiAKIHZvaWQgSlBFR1hMSW1hZ2VEZWNvZGVyOjppbWFnZU91dChzaXplX3QgeCwgc2l6ZV90
IHksIHNpemVfdCBudW1QaXhlbHMsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscykKIHsKLSAgICBpZiAo
bV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKKyAgICBpZiAobV9jdXJyZW50RnJhbWUgPj0g
bV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYg
YnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOwotICAgIGlmIChidWZmZXIuaXNJbnZhbGlk
KCkpIHsKLSAgICAgICAgaWYgKCFidWZmZXIuaW5pdGlhbGl6ZShzaXplKCksIG1fcHJlbXVsdGlw
bHlBbHBoYSkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYnVmZmVyLnNldERlY29k
aW5nU3RhdHVzKERlY29kaW5nU3RhdHVzOjpQYXJ0aWFsKTsKLSAgICAgICAgYnVmZmVyLnNldEhh
c0FscGhhKGZhbHNlKTsKLSAgICB9CisgICAgYXV0byYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNh
Y2hlW21fY3VycmVudEZyYW1lXTsKKyAgICBpZiAoYnVmZmVyLmlzSW52YWxpZCgpKQorICAgICAg
ICByZXR1cm47CiAKICAgICB1aW50MzJfdCogcm93ID0gYnVmZmVyLmJhY2tpbmdTdG9yZSgpLT5w
aXhlbEF0KHgsIHkpOwogICAgIHVpbnQzMl90KiBjdXJyZW50QWRkcmVzcyA9IHJvdzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWd4bC9KUEVH
WExJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWd4bC9KUEVHWExJbWFnZURlY29kZXIuaAppbmRleCBhMDlkNWM5ZGRkY2YyZTU0NjY4MDAz
ZDFmMGFhZDA4NTUxMTExZjE5Li5mZDUyMjRlZGJlMTU4MGI4ZTZjYjk5MGYwNGYyMzI3YmYwMjRh
NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVneGwvSlBFR1hMSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZ3hsL0pQRUdYTEltYWdlRGVjb2Rlci5oCkBAIC00NSwyNSArNDUs
NTAgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcg
ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAianhsIl9zOyB9Cisg
ICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZXBldGl0aW9uQ291
bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2NhbGFibGVJbWFnZURl
Y29kZXJGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUpIG92
ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRGYWlsZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBKUEVHWExJbWFnZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKLSAgICB2b2lkIHRyeURlY29kZVNpemUoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJy
aWRlIHsgZGVjb2RlKHRydWUsIGFsbERhdGFSZWNlaXZlZCk7IH0KKyAgICBlbnVtIGNsYXNzIFF1
ZXJ5IHsKKyAgICAgICAgLy8gVGhpcyBxdWVyeSBpcyB1c2VkIGZvciB0cnlEZWNvZGVTaXplKCku
CisgICAgICAgIFNpemUsCisgICAgICAgIC8vIFdlIGRlZmluZSBhIHF1ZXJ5IGZvciBmcmFtZSBj
b3VudCBiZWNhdXNlIEpQRUcgWEwgZG9lc24ndCBoYXZlIGZyYW1lIGNvdW50IGluZm9ybWF0aW9u
IGluIGl0cyBjb2RlIHN0cmVhbQorICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHNjYW4gdGhlIGNv
ZGUgc3RyZWFtIHRvIGdldCB0aGUgZnJhbWUgY291bnQgZm9yIGFuaW1hdGVkIEpQRUcgWEwuCisg
ICAgICAgIC8vIEpQRUcgWEwgY29udGFpbmVyIGNhbiBoYXZlIGZyYW1lIGNvdW50IG1ldGFkYXRh
IGJ1dCBjdXJyZW50bHkgbGlianhsIGRvZXNuJ3Qgc3VwcG9ydCBpdC4KKyAgICAgICAgRnJhbWVD
b3VudCwKKyAgICAgICAgLy8gUXVlcnkgdG8gZGVjb2RlIGEgc2luZ2xlIGZyYW1lLgorICAgICAg
ICBEZWNvZGVkSW1hZ2UsCisgICAgfTsKIAotICAgIHZvaWQgZGVjb2RlKGJvb2wgb25seVNpemUs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBKUEVHWExJbWFnZURlY29kZXIoQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICB2b2lkIHRyeURlY29kZVNpemUo
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBjbGVhcigpOworICAg
IGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKKyAgICBib29sIGhhc0FuaW1hdGlvbigpIGNvbnN0Owog
Ci0gICAgSnhsRGVjb2RlclN0YXR1cyBwcm9jZXNzSW5wdXQoYm9vbCBvbmx5U2l6ZSk7CisgICAg
dm9pZCBlbnN1cmVEZWNvZGVySW5pdGlhbGl6ZWQoKTsKKyAgICBib29sIHNob3VsZFJld2luZChR
dWVyeSAsIHNpemVfdCBmcmFtZUluZGV4KSBjb25zdDsKKyAgICB2b2lkIHJld2luZCgpOworICAg
IHZvaWQgdXBkYXRlRnJhbWVDb3VudCgpOwogCi0gICAgc3RhdGljIHZvaWQgaW1hZ2VPdXRDYWxs
YmFjayh2b2lkKiB0aGF0LCBzaXplX3QgeCwgc2l6ZV90IHksIHNpemVfdCBudW1QaXhlbHMsIGNv
bnN0IHZvaWQqIHBpeGVscyk7CisgICAgdm9pZCBkZWNvZGUoUXVlcnksIHNpemVfdCBmcmFtZUlu
ZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgSnhsRGVjb2RlclN0YXR1cyBwcm9jZXNz
SW5wdXQoUXVlcnkpOworICAgIHN0YXRpYyB2b2lkIGltYWdlT3V0Q2FsbGJhY2sodm9pZCosIHNp
emVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IG51bVBpeGVscywgY29uc3Qgdm9pZCogcGl4ZWxzKTsK
ICAgICB2b2lkIGltYWdlT3V0KHNpemVfdCB4LCBzaXplX3QgeSwgc2l6ZV90IG51bVBpeGVscywg
Y29uc3QgdWludDhfdCogcGl4ZWxzKTsKIAogICAgIEp4bERlY29kZXJQdHIgbV9kZWNvZGVyOwot
ICAgIHNpemVfdCBtX3JlYWRPZmZzZXQgPSAwOworICAgIHNpemVfdCBtX3JlYWRPZmZzZXQgeyAw
IH07CisgICAgc3RkOjpvcHRpb25hbDxKeGxCYXNpY0luZm8+IG1fYmFzaWNJbmZvOworCisgICAg
UXVlcnkgbV9sYXN0UXVlcnkgeyBRdWVyeTo6U2l6ZSB9OworICAgIHNpemVfdCBtX2ZyYW1lQ291
bnQgeyAxIH07CisgICAgc2l6ZV90IG1fY3VycmVudEZyYW1lIHsgMCB9OworCisgICAgYm9vbCBt
X2lzTGFzdEZyYW1lSGVhZGVyUmVjZWl2ZWQgeyBmYWxzZSB9OyAvLyBJZiB0aGlzIGlzIHRydWUs
IHdlIGtub3cgd2UgZG9uJ3QgbmVlZCB0byB1cGRhdGUgbV9mcmFtZUNvdW50LgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc4NjI3Y2RjZmJmNmFkNmJmZDEwNGFiM2ZiNjI4
ODMzZDU0OGQ3MTAuLjc5NGE5MDgzZGNhZWNhMDc3NTY2YTA3NjAxODY0YWJlYTkzMzZhZmYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMS0xMi0wNyAgWW9zaGlha2kgSml0c3VrYXdhICA8eW9z
aGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgorCisgICAgICAgIFN1cHBvcnQgQW5pbWF0ZWQgSlBF
Ry1YTCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzU0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODYwNzcxNDM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgIEFkZCB0ZXN0IGZvciBhbmlt
YXRlZCBKUEVHIFhMLCBiYXNlZCBvbiBhbmltYXRlZC1naWYtbG9vcC1jb3VudC4KKworICAgICAg
ICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9pbWFnZXMvYW5pbWF0ZWQtanBl
Z3hsLWxvb3AtY291bnQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFn
ZXMvYW5pbWF0ZWQtanBlZ3hsLWxvb3AtY291bnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVkLXJlZC1ncmVlbi1ibHVlLXJlcGVhdC0xLmp4bDog
QWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVkLXJlZC1ncmVl
bi1ibHVlLXJlcGVhdC0yLmp4bDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvcmVzb3Vy
Y2VzL2FuaW1hdGVkLXJlZC1ncmVlbi1ibHVlLXJlcGVhdC1pbmZpbml0ZS5qeGw6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTEyLTA2ICBMYXVybyBNb3Vy
YSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBTbWFsbCBnYXJkZW5pbmcK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDg3MGExYTk1Yzg2NTJiMTlmYmExMWE0ZTAwN2ZhOTZjOGUw
NDIzNWIuLmFhOWYxMjE2ZDc2NWU0Mzc4YmNlM2FjMWNjNjRiYTRjOTFlNzhmYjMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMTM1LDYgKzEzNSw3IEBAIGh0dHAvdGVzdHMvaW1hZ2VzL2F2aWYtcGFy
dGlhbC1sb2FkLWNyYXNoLmh0bWwgWyBTa2lwIF0KICMgVGhlc2UgdGVzdHMgZG9uJ3QgaGF2ZSB0
byBiZSBwbGF0Zm9ybS1zcGVjaWZpYywgYnV0IHRoZXkgYXJlIG9ubHkgaW1wbGVtZW50ZWQgb24g
V2luQ2Fpcm8gbm93LgogZmFzdC9pbWFnZXMvanBlZ3hsLWltYWdlLWRlY29kaW5nLmh0bWwgWyBT
a2lwIF0KIGZhc3QvaW1hZ2VzL2pwZWd4bC1hcy1pbWFnZS5odG1sIFsgU2tpcCBdCitmYXN0L2lt
YWdlcy9hbmltYXRlZC1qcGVneGwtbG9vcC1jb3VudC5odG1sIFsgU2tpcCBdCiAKICMgT25seSBh
cHBsaWNhYmxlIG9uIHBsYXRmb3JtcyB3aXRoIGRhcmsgbW9kZSBzdXBwb3J0CiBjc3MtZGFyay1t
b2RlIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRl
ZC1qcGVneGwtbG9vcC1jb3VudC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvYW5pbWF0ZWQtanBlZ3hsLWxvb3AtY291bnQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
ZjkyMTQxNjg2ZmNkNTkxNDQxMmEwNzFhOTBhNmU3NjFhYTdkZWQyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtanBlZ3hsLWxvb3AtY291bnQtZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHN0
eWxlPgorICAgIC5ib3ggeworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICB9Cis8L3N0eWxlPgor
PGJvZHk+CisgICAgPGRpdj4KKyAgICAgICAgPHA+RnJhbWVzIG9mIGEgMy1mcmFtZSBhbmltYXRl
ZCBpbWFnZSB3aXRoIG1pc3NpbmcgbG9vcENvdW50LCAocmVwZXRpdGlvbkNvdW50ID0gMSk6PC9w
PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7
Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xv
cjogZ3JlZW47Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dy
b3VuZC1jb2xvcjogYmx1ZTsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdj4K
KyAgICAgICAgPHA+RnJhbWVzIG9mIGEgMy1mcmFtZSBhbmltYXRlZCBpbWFnZSB3aXRoIGxvb3BD
b3VudCA9IDEsIChyZXBldGl0aW9uQ291bnQgPSAyKTo8L3A+CisgICAgICAgIDxkaXYgY2xhc3M9
ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsiPjwvZGl2PgorICAgICAgICA8ZGl2
IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2PgorICAg
ICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyI+PC9k
aXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJl
ZDsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNv
bG9yOiBncmVlbjsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNr
Z3JvdW5kLWNvbG9yOiBibHVlOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6IGJsdWU7Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2
PgorICAgICAgICA8cD5GcmFtZXMgb2YgYSAzLWZyYW1lIGFuaW1hdGVkIGltYWdlIHdpdGggbG9v
cENvdW50ID0gMCwgKHJlcGV0aXRpb25Db3VudCA9IGluZmluaXRlKTo8L3A+CisgICAgICAgIDxk
aXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsiPjwvZGl2PgorICAg
ICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiPjwv
ZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBi
bHVlOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQt
Y29sb3I6IHJlZDsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbjsiPjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giIHN0
eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyI+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9
ImJveCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsiPjwvZGl2PgorICAgIDwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5p
bWF0ZWQtanBlZ3hsLWxvb3AtY291bnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2Fu
aW1hdGVkLWpwZWd4bC1sb29wLWNvdW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE1MmU2NWUxNzdkZmJm
Y2Q0N2UyNzRlMWFjZTg5MDdiZDFiNzMwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWpwZWd4bC1sb29wLWNvdW50Lmh0bWwKQEAgLTAsMCArMSw0
OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzdHlsZT4KKyAgICBjYW52YXMgeworICAg
ICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHls
ZT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYW5pbWF0ZWQtaW1hZ2UtbG9vcC1jb3VudC5qcyI+
PC9zY3JpcHQ+Cis8Ym9keT4KKyAgICA8ZGl2PgorICAgICAgICA8cD5GcmFtZXMgb2YgYSAzLWZy
YW1lIGFuaW1hdGVkIGltYWdlIHdpdGggbWlzc2luZyBsb29wQ291bnQsIChyZXBldGl0aW9uQ291
bnQgPSAxKTo8L3A+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcy0xIj48L2NhbnZhcz4KKyAg
ICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLTIiPjwvY2FudmFzPgorICAgICAgICA8Y2FudmFzIGlk
PSJjYW52YXMtMyI+PC9jYW52YXM+CisgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcy00Ij48L2Nh
bnZhcz4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgICA8cD5GcmFtZXMgb2YgYSAzLWZy
YW1lIGFuaW1hdGVkIGltYWdlIHdpdGggbG9vcENvdW50ID0gMSwgKHJlcGV0aXRpb25Db3VudCA9
IDIpOjwvcD4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLWEiPjwvY2FudmFzPgorICAgICAg
ICA8Y2FudmFzIGlkPSJjYW52YXMtYiI+PC9jYW52YXM+CisgICAgICAgIDxjYW52YXMgaWQ9ImNh
bnZhcy1jIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLWQiPjwvY2FudmFz
PgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMtZSI+PC9jYW52YXM+CisgICAgICAgIDxjYW52
YXMgaWQ9ImNhbnZhcy1mIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLWci
PjwvY2FudmFzPgorICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICAgIDxwPkZyYW1lcyBvZiBh
IDMtZnJhbWUgYW5pbWF0ZWQgaW1hZ2Ugd2l0aCBsb29wQ291bnQgPSAwLCAocmVwZXRpdGlvbkNv
dW50ID0gaW5maW5pdGUpOjwvcD4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzLUEiPjwvY2Fu
dmFzPgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMtQiI+PC9jYW52YXM+CisgICAgICAgIDxj
YW52YXMgaWQ9ImNhbnZhcy1DIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFz
LUQiPjwvY2FudmFzPgorICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMtRSI+PC9jYW52YXM+Cisg
ICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcy1GIj48L2NhbnZhcz4KKyAgICAgICAgPGNhbnZhcyBp
ZD0iY2FudmFzLUciPjwvY2FudmFzPgorICAgIDwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAg
IChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZhciBpbWFnZXMgPSBbCisgICAgICAgICAgICAg
ICAgeyBzcmM6ICJyZXNvdXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LTEuanhs
IiwgY2FudmFzSWQ6ICcxJywgZnJhbWVDb3VudDogNCB9LAorICAgICAgICAgICAgICAgIHsgc3Jj
OiAicmVzb3VyY2VzL2FuaW1hdGVkLXJlZC1ncmVlbi1ibHVlLXJlcGVhdC0yLmp4bCIsIGNhbnZh
c0lkOiAnYScsIGZyYW1lQ291bnQ6IDcgfSwKKyAgICAgICAgICAgICAgICB7IHNyYzogInJlc291
cmNlcy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtaW5maW5pdGUuanhsIiwgY2FudmFz
SWQ6ICdBJywgZnJhbWVDb3VudDogNyB9CisgICAgICAgICAgICBdOworICAgICAgICAgICAgcnVu
VGVzdChpbWFnZXMpOworICAgICAgICB9KSgpOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1h
dGVkLXJlZC1ncmVlbi1ibHVlLXJlcGVhdC0xLmp4bCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2Vz
L3Jlc291cmNlcy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBlYXQtMS5qeGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzIyMDMwOWMwYzU3YjJjZTRlN2ZkM2E2ODMxODYxNmU3ZDg3OTA5NwpHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgOTkKemNtZXkqQl9ac25BdDIxYiFvfFZCa2l5X0MoSmpod01MT0FfT2thU0pM
NGglN3hqbG5wZVl9a25MX3E/WWc4V2hACmkxX25sbF8mQFNNY0BfcEF1eWpOMHp5Q352M14hKCZG
PSNPVFZnPi11TyU9JWkKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBl
YXQtMi5qeGwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVk
LWdyZWVuLWJsdWUtcmVwZWF0LTIuanhsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1NzU3M2UwYjVlZDZjMGEwY2Y0
ZGMyMjYxOWJjZDlhMmM5ODFkNDYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDk5CnpjbWV5KkJf
WnRTQXQyMWIhb3xWQmtpeV9DKEpqaHdNTE9BX09rYVNKTDRoJTd4amxucGVZfWtuTF9xP1lnOFdo
QAppMV9ubGxfJkBTTWNAX3BBdXlqTjB6eUN+djNeISgmRj0jT1RWZz4tKTRIZkFDCgpsaXRlcmFs
IDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNv
dXJjZXMvYW5pbWF0ZWQtcmVkLWdyZWVuLWJsdWUtcmVwZWF0LWluZmluaXRlLmp4bCBiL0xheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC1yZWQtZ3JlZW4tYmx1ZS1yZXBl
YXQtaW5maW5pdGUuanhsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiMTEwNGQ5NDU4ZmMxMDY0OWM2OTAxNDBiNjk3
MzQ1ZTFkMDFkZTUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDk5CnpjbWV5KkJfWnN7a2leOG4h
b3xWQmtpeV9DKEpqaHdNTE9BX09rYVNKTDRoJTd4amxucGVZfWtuTF9xP1lnOFdoQAppMV9ubGxf
JkBTTWNAX3BBdXlqTjB6eUN+djNeISgmRj0jT1RWZz4tJU9CTGIoCgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
MDBhOTNjNzk5Y2QyNmNjZmI5NTU4NWQxMWI0YTI2ZWIxY2M4NGI1Yy4uOGVjNjAzNDhkMGEzY2Jh
ZWUwNmM5ZmM3MjFmOTZmZGIzNmE1OTA2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTA3LDYgKzEwNyw3IEBAIGZhc3QvdGV4dC9lbW9qaS1nZW5k
ZXItOS5odG1sIFsgUGFzcyBdCiAjIEpQRUctWEwgdGVzdHMKIGZhc3QvaW1hZ2VzL2pwZWd4bC1h
cy1pbWFnZS5odG1sIFsgUGFzcyBdCiBmYXN0L2ltYWdlcy9qcGVneGwtaW1hZ2UtZGVjb2Rpbmcu
aHRtbCBbIFBhc3MgXQorZmFzdC9pbWFnZXMvYW5pbWF0ZWQtanBlZ3hsLWxvb3AtY291bnQuaHRt
bCBbIFBhc3MgXQogCiAjIFNvbWUgQXBwbGUgcG9ydHMgZG9uJ3Qgc3VwcG9ydCBSVEwgc2Nyb2xs
YmFycy4KIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWVsZW1lbnRGcm9tUG9pbnQtc3Rh
dGljLmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNh
aXJvL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDcxMThmZmUyMDA2NmFiZWY5YTczYmZhOTM1NmY2Njc4NTU3Mzkx
NTYuLmM2ZmQyYmUxMjIwNTAxM2IwN2RiOTUyMzMyZmQ4OGE4YTA5ZDhlOWEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjcyLDkgKzI3
MiwxMCBAQCBtZWRpYS9haXJwbGF5LWF1dG9wbGF5Lmh0bWwgWyBTa2lwIF0KICMgUExBVEZPUk0o
TUFDKSwgaW50ZXJuYWxzLnJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oKQogZmFz
dC9sYXllcnMvcHJldmVudC1oaXQtdGVzdC1kdXJpbmctbGF5b3V0Lmh0bWwgWyBTa2lwIF0KIAot
IyBKUEVHIFhMIGlzIGRpc2FibGVkIHVudGlsIFdlYktpdFJlcXVpcmVtZW50cyBpcyByZWxlYXNl
ZCB3aXRoIGxpYmp4bAotZmFzdC9pbWFnZXMvanBlZ3hsLWFzLWltYWdlLmh0bWwgWyBTa2lwIF0K
LWZhc3QvaW1hZ2VzL2pwZWd4bC1pbWFnZS1kZWNvZGluZy5odG1sIFsgU2tpcCBdCisjIEpQRUct
WEwgVGVzdHMKK2Zhc3QvaW1hZ2VzL2pwZWd4bC1hcy1pbWFnZS5odG1sIFsgUGFzcyBdCitmYXN0
L2ltYWdlcy9qcGVneGwtaW1hZ2UtZGVjb2RpbmcuaHRtbCBbIFBhc3MgXQorZmFzdC9pbWFnZXMv
YW5pbWF0ZWQtanBlZ3hsLWxvb3AtY291bnQuaHRtbCBbIFBhc3MgXQogCiAjIERhdGFUcmFuc2Zl
ckl0ZW1zIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKIGZhc3QvZXZlbnRzL2NsaXBib2FyZC1kYXRh
VHJhbnNmZXJJdGVtTGlzdC5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>