<?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>238371</bug_id>
          
          <creation_ts>2022-03-25 05:39:44 -0700</creation_ts>
          <short_desc>[CSS Shapes] Add support for shape()</short_desc>
          <delta_ts>2025-02-12 11:48:35 -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>CSS</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>
          <dependson>238373</dependson>
    
    <dependson>277183</dependson>
    
    <dependson>277211</dependson>
    
    <dependson>277347</dependson>
    
    <dependson>277609</dependson>
    
    <dependson>277610</dependson>
    
    <dependson>277706</dependson>
    
    <dependson>277709</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Noam Rosenthal">noam</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>annulen</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>maggotfish</cc>
    
    <cc>menard</cc>
    
    <cc>ntim</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sebastianzartner</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1855064</commentid>
    <comment_count>0</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-03-25 05:39:44 -0700</bug_when>
    <thetext>See https://drafts.csswg.org/css-shapes-2/#shape-function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855579</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-28 06:43:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/90919476&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862451</commentid>
    <comment_count>2</comment_count>
      <attachid>457864</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-04-19 00:25:21 -0700</bug_when>
    <thetext>Created attachment 457864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862452</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-04-19 00:27:00 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862453</commentid>
    <comment_count>4</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-04-19 00:28:56 -0700</bug_when>
    <thetext>Corresponding Chromium bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1308431
Corresponding Mozilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1758784</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862457</commentid>
    <comment_count>5</comment_count>
      <attachid>457866</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-04-19 00:44:05 -0700</bug_when>
    <thetext>Created attachment 457866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862461</commentid>
    <comment_count>6</comment_count>
      <attachid>457867</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-04-19 01:11:50 -0700</bug_when>
    <thetext>Created attachment 457867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862473</commentid>
    <comment_count>7</comment_count>
      <attachid>457870</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-04-19 02:42:57 -0700</bug_when>
    <thetext>Created attachment 457870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862478</commentid>
    <comment_count>8</comment_count>
      <attachid>457874</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-04-19 03:00:33 -0700</bug_when>
    <thetext>Created attachment 457874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862495</commentid>
    <comment_count>9</comment_count>
      <attachid>457877</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-04-19 04:37:54 -0700</bug_when>
    <thetext>Created attachment 457877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862513</commentid>
    <comment_count>10</comment_count>
      <attachid>457881</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-04-19 05:58:30 -0700</bug_when>
    <thetext>Created attachment 457881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862530</commentid>
    <comment_count>11</comment_count>
      <attachid>457885</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-04-19 06:57:10 -0700</bug_when>
    <thetext>Created attachment 457885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862540</commentid>
    <comment_count>12</comment_count>
      <attachid>457889</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-04-19 07:24:20 -0700</bug_when>
    <thetext>Created attachment 457889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862543</commentid>
    <comment_count>13</comment_count>
      <attachid>457891</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-04-19 07:34:25 -0700</bug_when>
    <thetext>Created attachment 457891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862570</commentid>
    <comment_count>14</comment_count>
      <attachid>457901</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-04-19 08:56:20 -0700</bug_when>
    <thetext>Created attachment 457901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862623</commentid>
    <comment_count>15</comment_count>
      <attachid>457914</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-04-19 10:30:30 -0700</bug_when>
    <thetext>Created attachment 457914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862656</commentid>
    <comment_count>16</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-04-19 11:39:36 -0700</bug_when>
    <thetext>Hi Noam. Do you know whether there are existing animation tests for shape()? I don&apos;t see any new PASS results in the diff for tests that would improve. Do we need to import more? If so, I think it would be nice to import them first as failures, so this patch shows the progress. If not, then it would be GREAT for this patch to add animation testing coverage and upstream it to WPT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862661</commentid>
    <comment_count>17</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-04-19 11:48:39 -0700</bug_when>
    <thetext>(In reply to Antoine Quint from comment #16)
&gt; Hi Noam. Do you know whether there are existing animation tests for shape()?
&gt; I don&apos;t see any new PASS results in the diff for tests that would improve.
&gt; Do we need to import more? If so, I think it would be nice to import them
&gt; first as failures, so this patch shows the progress. If not, then it would
&gt; be GREAT for this patch to add animation testing coverage and upstream it to
&gt; WPT.

Yes of course, those tests are already upstreamed to WPT and imported to webkit, and this patch unskips them.

imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-interpolation-001.html
imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-shape-interpolation-002.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862835</commentid>
    <comment_count>18</comment_count>
      <attachid>457962</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-04-19 23:27:12 -0700</bug_when>
    <thetext>Created attachment 457962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867595</commentid>
    <comment_count>19</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2022-05-09 02:01:23 -0700</bug_when>
    <thetext>Review anyone?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1928705</commentid>
    <comment_count>20</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2023-01-26 14:13:10 -0800</bug_when>
    <thetext>https://github.com/w3c/csswg-drafts/issues/5841</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1928812</commentid>
    <comment_count>21</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2023-01-26 21:11:21 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #20)
&gt; https://github.com/w3c/csswg-drafts/issues/5841

I believe these were addressed 2 years ago already, Tab added a lot regarding animation support for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1928831</commentid>
    <comment_count>22</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2023-01-26 23:11:10 -0800</bug_when>
    <thetext>Apologies, I see that only some of the comments (the animation related ones) were addressed and I missed the other ones. Will get back to the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2047888</commentid>
    <comment_count>23</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2024-07-23 15:01:45 -0700</bug_when>
    <thetext>Noam, do you mind if I take this over?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2047963</commentid>
    <comment_count>24</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2024-07-24 01:02:36 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #23)
&gt; Noam, do you mind if I take this over?

Please do, that would make me very happy! I suspect that my patch from 2 years ago is still mostly valid, and https://github.com/w3c/csswg-drafts/issues/5841 is still up and I think not far from a resolution. Hopefully if WebKit takes this on I can make the case for prioritizing this work in chrome as well.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457864</attachid>
            <date>2022-04-19 00:25:21 -0700</date>
            <delta_ts>2022-04-19 00:45:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238371-20220419102519.patch</filename>
            <type>text/plain</type>
            <size>96851</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0MDhiYzRlZDIxNmNh
YWM1ZWVlZTUyMDkyNWQ3NzYzOGU0M2QwZC4uYzhmMjI3MTg0NDc0MGQ5Njc0Mjg0YzY3ODkyNGUx
ZjgwODQyODU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0xOSAgTm9h
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFk
ZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBDU1Mgc2hhcGUoKSBieSBpbnRyb2R1Y2luZyBzaGFwZSBzZWdtZW50IGFuZCBCYXNpY1NoYXBl
U2hhcGUuCisgICAgICAgIFNoYXBlU2hhcGUgaXMgYSB2ZWN0b3Igb2Ygc2hhcGUgc2VnbWVudHMs
IHdoZXJlIGVhY2ggc2VnbWVudCBibGVuZHMgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgVGhlIHNo
YXBlIHVsdGltYXRlbHkgY3JlYXRlcyBhbiBTVkdQYXRoU291cmNlIHRvIGNvbnZlcnQgdGhlIHJl
c3BvbnNpdmUgc2hhcGUsIHdoaWNoCisgICAgICAgIGlzIGJhc2VkIG9uIExlbmd0aCB2YWx1ZXMs
IHRvIGFuIGFic29sdXRlIFBhdGggb2JqZWN0IHRoYXQgY2FuIGJlIGRyYXduLgorCisgICAgICAg
IFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXNoYXBlcy0yLyNzaGFwZS1mdW5jdGlv
bgorCisgICAgICAgIFVuc2tpcHBlZCBzZXZlcmFsIHJlbGV2YW50IFdQVHMuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgICAgICBOZXcgZmlsZXMg
YWRkZWQKKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZhbHVlRm9yQmFzaWNTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9MZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpiYXNpY1NoYXBlRm9yVmFsdWUpOgor
ICAgICAgICAgICAgICAgIEFkZGVkIHRoZSBCYXNpY1NoYXBlU2hhcGUgdHlwZQorCisgICAgICAg
ICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Q1NTQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2lj
U2hhcGVTaGFwZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6
CisgICAgICAgICAgICAgICAgQWRkZWQgdGhlIENTU0Jhc2ljU2hhcGVTaGFwZQorCisgICAgICAg
ICogY3NzL0NTU1NoYXBlU2VnbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
aGFwZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NT
U2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudDo6Q1NTU2hh
cGVTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OnRhcmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6YXJndW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OmFmZmluaXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjphcHBlbmRBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpDU1NTaGFwZVNlZ21l
bnRWYWx1ZSk6CisgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB0byBkbyB3aXRoIHRoZSBzZWdt
ZW50IG9mIHRoZSBzaGFwZSB3aGlsZSBpbiBDU1Mgc3BhY2UsCisgICAgICAgICAgICAgICAgaW5j
bHVkaW5nIHNlcmlhbGl6YXRpb24gZm9yIGdldENvbXB1dGVkU3R5bGUoKQorCisgICAgICAgICog
Y3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzU2hhcGVTZWdtZW50VmFsdWUgY29uc3Qp
OgorICAgICAgICAgICAgICAgIENTU1NoYXBlU2VnbWVudCBpcyBhIHR5cGUgb2YgdmFsdWUKKwor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAgICAgICAgIE5ldyBr
ZXl3b3JkcyBmb3Igc2hhcGUoKQorCisgICAgICAgICogY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9u
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFBvaW50VG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0FyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6dG9DU1NB
cmdzPExlbmd0aFBvaW50Pik6CisgICAgICAgIChXZWJDb3JlOjp0b0NTU1NoYXBlU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpzZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpmcm9t
Q1NTU2hhcGVTZWdtZW50KToKKyAgICAgICAgKiBjc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmg6
IEFkZGVkLgorICAgICAgICAgICAgICAgIENvbnZlcnRpbmcgc2hhcGUgc2VnbWVudHMgdG8vZnJv
bSBDU1Mgc3BhY2UKKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNoYXBlU2VnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVC
YXNpY1NoYXBlKToKKyAgICAgICAgICAgICAgICBQYXJzZSBhIHNoYXBlIHByb3BlcnR5CisKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OnZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzaWNTaGFwZVNlZ21lbnQ6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6YmxlbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFyY1RvU2hhcGVTZWdWYWx1
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVu
dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6Y3Jl
YXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50OjpCYXNp
Y1NoYXBlU2VnbWVudCk6CisgICAgICAgICAgICAgICAgQmxlbmRpbmcsIGNvbXBhcmluZyBhbmQg
Y29udmVydGluZyB0byBhYnNvbHV0ZSBwYXRoCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhCb3g6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhC
b3g6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1Bh
dGhQb2xpY3k6OmlzS2V5TnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVNlZ21lbnRzUGF0
aFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU2hh
cGVTZWdtZW50c1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpCYXNp
Y1NoYXBlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpwYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6YmxlbmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZVNoYXBlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2V0V2luZFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpmcm9tIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlU2hhcGU6OmF0IGNvbnN0KToKKyAgICAgICAgICAgICAgICBBZGQgQmFz
aWNTaGFwZVNoYXBlCisKIDIwMjItMDQtMTggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgUGxhdGZvcm1NZWRpYUVuZ2luZUNsYXNzTmFt
ZSBtYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODBiYmVhOGU3MjM0ZjA1NWVmZDZlMzQwMDc1
MGIzN2YzMzE3OGNhZS4uODBiNDdlMjg5OWFlMmU4ZDdmMTI4YmJjNDA3NjcwZTUzN2E2M2VjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC01NTQsNiArNTU0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9DU1NSdWxlTGlzdC5oCiAgICAgY3NzL0NTU1Nl
bGVjdG9yLmgKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKyAgICBjc3MvQ1NTU2hhcGVTZWdt
ZW50LmgKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCiAgICAgY3NzL0NTU1N0eWxlUnVs
ZS5oCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMTkwNiw2ICsxOTA3LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJlbmRlcmluZy9zdHlsZS9TVkdS
ZW5kZXJTdHlsZS5oCiAgICAgcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oCiAg
ICAgcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaAorICAgIHJlbmRlcmluZy9zdHlsZS9TaGFw
ZVNlZ21lbnQuaAogICAgIHJlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKICAgICByZW5kZXJp
bmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCiAgICAgcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Qm94RGF0YS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBhZjNkMDZhNWIwYmJjNjhmYzAxMTMzYmNjZmUx
ZjJjZDk3MGU4OWUuLjM0ZDMyYTg4MTYyNTdkNDVkZGFkOTgyYTk3YzdjMTRiNzFkMDM4ZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC03NzEsNiArNzcxLDcgQEAgY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNl
LmNwcAogY3NzL0NTU1NlbGVjdG9yLmNwcAogY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKIGNzcy9D
U1NTaGFkb3dWYWx1ZS5jcHAKK2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCiBjc3MvQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKIGNzcy9DU1NTdHlsZVJ1bGUuY3BwCiBjc3MvQ1NTU3R5bGVTaGVldC5j
cHAKQEAgLTI0NDksNiArMjQ1MCw3IEBAIHJlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUu
Y3BwCiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91
dHNpZGVJbmZvLmNwcAogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAorcmVuZGVyaW5n
L3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmNwcAogcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEu
Y3BwCiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCiByZW5kZXJpbmcvc3R5bGUvRmls
bExheWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGE2MTc2MzlkZjcyMDZmYzQ4NDU3MDQ4ZWU0NGJhODk0M2M1MmM3YTIu
LmY1NDE5MDgyMzdkNjE1NGJlNDIwZWQ2N2M5MDg1ZTY0NTlkMDQ1NGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ0NTIsNiAr
NDQ1MiwxMCBAQAogCQlDQTNCRjY3RTEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBM0JGNjdE
MTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNBNkMxNTMwMjIwQjk4Q0MwMDU1Q0JGQyAv
KiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzFBRTNCODFGQjgwRUFFMDBGNUVGQjIgLyogSlNWYWx1ZUluV3Jh
cHBlZE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUNBN0U5QjQ5MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFpbnRDaGVja2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTdFOUI0
NzI0MzYxREM1MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5oICovOyB9OworCQlD
QTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBODE2Q0IzMjc3ODQ4MUUwMDJC
RDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oICovOyB9OworCQlDQTgxNkNCOTI3Nzg0ODJFMDAy
QkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdt
ZW50LmggKi87IH07CisJCUNBODE2Q0JDMjc3ODlBQUQwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRG
dW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0E4MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAg
Ki87IH07CisJCUNBODE2Q0JEMjc3ODlBQUQwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRGdW5jdGlv
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBODE2
Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRGdW5jdGlvbnMuaCAqLzsgfTsKIAkJ
Q0FFOUY5MTAxNDY0NDFGMDAwQzI0NUIwIC8qIENTU0FzcGVjdFJhdGlvVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBRTlGOTBFMTQ2NDQxRjAw
MEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggKi87IH07CiAJCUNCMzhGRDUyMUNDRjkz
OTQwMDU5MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCMzhGRDRFMUNDRjkzN0UwMDU5MkEzRiAvKiBKU1Bl
cmZvcm1hbmNlRW50cnkuaCAqLzsgfTsKIAkJQ0IzOEZENUIxQ0QyMzI1QjAwNTkyQTNGIC8qIEpT
UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0IzOEZENTkxQ0QyMzE0NTAwNTkyQTNGIC8qIEpTUGVyZm9ybWFu
Y2VSZXNvdXJjZVRpbWluZy5oICovOyB9OwpAQCAtMTU5NDcsNiArMTU5NTEsNyBAQAogCQlDQTA5
MUQ4NjIzQ0Y5MDc4MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdHlsZUltYWdlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Ew
OTFEODkyM0NGOTA4ODAwQUQ0MzQ2IC8qIFN0eWxlSW1hZ2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3R5bGVJbWFnZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTE2MzVEQzIw
NzJFNzY5MDBFN0QyQ0UgLyogUmVmZXJyZXJQb2xpY3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVmZXJyZXJQb2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDQTE2NkNDQjI3ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hhcGVTZWdtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1NoYXBlU2VnbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNBMTkzM0Q1MjQwN0Q2NDAwMDcxMjQxQSAvKiBQZXJmb3JtYW5jZVBh
aW50VGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0ExOTMzRDgyNDA3RURDRjAwNzEyNDFBIC8qIFBl
cmZvcm1hbmNlUGFpbnRUaW1pbmcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBlcmZvcm1h
bmNlUGFpbnRUaW1pbmcuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTNBNEFB
QjI1NDE2RTNDMDA2Q0RBRTIgLyogSW1hZ2VSZXNvbHV0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlUmVzb2x1dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNTk2Miw2ICsxNTk2NywxMSBAQAogCQlDQTZDMTUzODIyMEQxRUIz
MDA1NUNCRkMgLyogSlNJREJDdXJzb3JXaXRoVmFsdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJDdXJzb3JXaXRoVmFsdWVDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTdFOUI0NzI0MzYxREM1MDA0RTg5RjYgLyog
Q29udGVudGZ1bFBhaW50Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb250ZW50ZnVsUGFpbnRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNBN0U5QjQ4MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFpbnRDaGVja2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRmdWxQYWludENoZWNr
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCMzI3Nzg0ODFFMDAy
QkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQmFzaWNTaGFwZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0E4MTZDQjQyNzc4NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2ljU2hhcGVTZWdtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4MTZDQjgyNzc4NDgyRTAwMkJEM0M2IC8qIENT
U1NoYXBlU2VnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NTaGFw
ZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4MTZDQkEyNzc4OUFB
MjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTaGFwZVNlZ21lbnRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCQjI3Nzg5QUE3MDAyQkQzQzYgLyogU2hhcGVTZWdt
ZW50RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXBlU2Vn
bWVudEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQUU5RjkwRDE0
NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIwIC8qIENTU0FzcGVj
dFJhdGlvVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQXNwZWN0
UmF0aW9WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQjM4RkQ0QTFDQ0NG
MkREMDA1OTJBM0YgLyogUGVyZm9ybWFuY2VFbnRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQZXJmb3JtYW5jZUVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI5Njg4LDYgKzI5Njk4LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUZC
RDZBRjgyMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi8sCiAJCQkJRkJENkFG
ODMxNUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8sCisJCQkJQ0E4MTZDQjQyNzc4
NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJCQlDQTgxNkNCMzI3
Nzg0ODFFMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLywKIAkJCQkwRjI4M0E5MTIz
NTYzMTI2MDA0Nzk0Q0EgLyogQm9yZGVyRGF0YS5jcHAgKi8sCiAJCQkJQkM1RUI1RTAwRTgxQkU4
NzAwQjI1OTY1IC8qIEJvcmRlckRhdGEuaCAqLywKIAkJCQlCQzVFQjVEQTBFODFCN0VBMDBCMjU5
NjUgLyogQm9yZGVyVmFsdWUuaCAqLywKQEAgLTMxOTYxLDYgKzMxOTczLDggQEAKIAkJCQlFNEMx
Nzg5NjBFRTY5MDM4MDA4MjRENjkgLyogQ1NTU2VsZWN0b3JMaXN0LmggKi8sCiAJCQkJQTgwRTZD
Q0EwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmNwcCAqLywKIAkJCQlBODBFNkNC
RTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU2hhZG93VmFsdWUuaCAqLywKKwkJCQlDQTE2NkNDQjI3
ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJCQlDQTgxNkNCODI3
Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggKi8sCiAJCQkJN0NERThFQkMxRjE5
M0JDNTAwMTY4RkU3IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uY3BwICovLAogCQkJCUE4MEU2RTBE
MEExOTkxMUMwMDdGQjhDNSAvKiBDU1NTdHlsZURlY2xhcmF0aW9uLmggKi8sCiAJCQkJMTQyMDEx
QUUwQTAwMzExNzAwODMwM0Y5IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaWRsICovLApAQCAtMzIw
OTYsNiArMzIxMTAsOCBAQAogCQkJCTQzQjg1RUQ2MThDQkVDOTcwMEUzMUFGNCAvKiBTZWxlY3Rv
clBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuaW4gKi8sCiAJCQkJMjZBQTBG
OUExOEQyOTczRDAwNDE5MzgxIC8qIFNlbGVjdG9yUHNldWRvRWxlbWVudFR5cGVNYXAuaW4gKi8s
CiAJCQkJNDMxMDdCRTExOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5o
ICovLAorCQkJCUNBODE2Q0JBMjc3ODlBQTIwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRGdW5jdGlv
bnMuY3BwICovLAorCQkJCUNBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRG
dW5jdGlvbnMuaCAqLywKIAkJCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQgLyogU3R5bGVDb2xv
ci5jcHAgKi8sCiAJCQkJOTQxODI3ODkxRDhCMjQyMjAwNDkyNzY0IC8qIFN0eWxlQ29sb3IuaCAq
LywKIAkJCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRpYS5jcHAgKi8sCkBA
IC0zMzg1Niw2ICszMzg3Miw3IEBACiAJCQkJNzE1NkJDQTEyMUNBMzUwRjAwNTM0Mzk3IC8qIEJh
c2ljRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4QTE1RUYyNURGMDA4
QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkJENkFG
OEMxNUVGMjYwNDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlD
QTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUFCMjNBMzI4MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0SW5zZXJ0ZWRF
dmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCM0QwQTQ0RUZDNzAwRjk5MkUwIC8qIEJl
Zm9yZVVubG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEyNDBEMDA2QzFEMDBF
RjZGMjYgLyogQmlkaUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMzQzNDcsNiArMzQzNjQs
NyBAQAogCQkJCUU0QzE3ODlCMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTk0REU1QzhFMUQ4MDgwMjcwMDE2NEYyQSAvKiBDU1NTZWxlY3Rv
clBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRTgwQTE5ODlDQTAwN0ZCOEM1IC8q
IENTU1NoYWRvd1ZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNCOTI3Nzg0ODJFMDAy
QkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTUzOEEyQTI2
RjAxMDQyMDA5NjVGQzggLyogQ1NTU2tldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE1MzhBMkIy
NkYwMTA0NTAwOTY1RkM4IC8qIENTU1NrZXdYLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTUzOEEy
QzI2RjAxMDQ4MDA5NjVGQzggLyogQ1NTU2tld1kuaCBpbiBIZWFkZXJzICovLApAQCAtMzc0ODQs
NiArMzc1MDIsNyBAQAogCQkJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAvKiBTaGFwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NUIxNzVENDFFRTAwQzIxRUM4IC8qIFNoYXBlSW50ZXJ2
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTUyMTc1RDNGM0UwMEMyMUVDOCAvKiBTaGFw
ZU91dHNpZGVJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNCRDI3Nzg5QUFEMDAyQkQz
QzYgLyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDFBRjE1
MDE2NTZGMTUxMDBDNkQ0RjcgLyogU2hhcGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUQ5
RjBGQzEyMTIyMDI5QjAwNUQ4RkQ0IC8qIFNoYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE0QTk1NEUwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zOTAzMCw2ICszOTA0OSw3IEBACiAJCQkJNDNCODVFRDQxOENCRUM1MjAwRTMxQUY0IC8q
IFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyNkFBMEY5RTE4RDJBMThCMDA0MTkzODEgLyogU2VsZWN0b3JQc2V1ZG9F
bGVtZW50VHlwZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0Q1OERGRDFGOTU2NUE4MDAx
MTI3OTEgLyogU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0E4MTZDQkMyNzc4OUFB
RDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MURGMkQ1RTI3QTk0NTJBMDBGMjVBMjEgLyogU2hhcmVkVmlkZW9GcmFtZUluZm8ubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1MzhGMTBBODFGOTAyMkE0MDA1MTAyQ0UgLyogU29mdExpbmtMaWJ4
c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUFBMTgwNDdGRjEwMDE2RTY4NSAvKiBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCmluZGV4IDlkZjJjZmY3OTU3ZTQ1ZDg5Yjcy
MWE3MWU3NWUyOGQ4NWE1ZTc5YTcuLjE3NzIyMjZhZmViNzNkODQ0OTU5N2Q2YWRlMzY4M2U2N2Ix
ZDVjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKQEAg
LTMwLDEzICszMCwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkJhc2ljU2hh
cGVGdW5jdGlvbnMuaCIKIAorI2luY2x1ZGUgIkJhc2ljU2hhcGVTZWdtZW50LmgiCiAjaW5jbHVk
ZSAiQmFzaWNTaGFwZXMuaCIKICNpbmNsdWRlICJDU1NCYXNpY1NoYXBlcy5oIgogI2luY2x1ZGUg
IkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQu
aCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJQYWlyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbS5oIgorI2luY2x1
ZGUgIlNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTE1NCw2ICsxNTcsMjIgQEAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvckJhc2ljU2hh
cGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCYXNpY1MKICAgICAgICAgYmFzaWNT
aGFwZVZhbHVlID0gV1RGTW92ZShpbnNldFZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQor
ICAgIGNhc2UgQmFzaWNTaGFwZTo6VHlwZTo6U2hhcGU6IHsKKyAgICAgICAgYXV0byYgc2hhcGUg
PSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGUpOworICAgICAgICBhdXRvIHJl
c3VsdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgYXV0
byBzaXplID0gc2hhcGUuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emU7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHRvQ1NTU2hhcGVTZWdtZW50KHN0
eWxlLCBzaGFwZS5hdChpKSkpOworCisgICAgICAgIGF1dG8gZnJvbSA9IGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoCisgICAgICAgICAgICBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc2hhcGUuZnJvbSgpLngoKSwgc3R5bGUpLAorICAgICAgICAgICAgY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHNoYXBlLmZyb20oKS55KCksIHN0eWxlKSwgUGFpcjo6SWRlbnRpY2FsVmFs
dWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSkpOworCisgICAgICAgIGF1dG8gc2hhcGVWYWx1ZSA9
IENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3JlYXRlKFdURk1vdmUoZnJvbSksIFdURk1vdmUocmVzdWx0
KSk7CisgICAgICAgIHNoYXBlVmFsdWUtPnNldFdpbmRSdWxlKHNoYXBlLndpbmRSdWxlKCkpOwor
ICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBXVEZNb3ZlKHNoYXBlVmFsdWUpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1
ZShiYXNpY1NoYXBlVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0xNjQsNiArMTgzLDEyIEBA
IHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjCiAgICAgcmV0dXJuIHZhbHVlLT5jb252ZXJ0VG9MZW5n
dGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IEZpeGVkRmxvYXRDb252ZXJzaW9uIHwgUGVyY2Vu
dENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOwogfQog
CitzdGF0aWMgTGVuZ3RoUG9pbnQgY29udmVydFRvTGVuZ3RoUG9pbnQoY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
K3sKKyAgICBhdXRvJiBwYWlyID0gKihkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
LnBhaXJWYWx1ZSgpKTsKKyAgICByZXR1cm4geyBjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRh
dGEsIHBhaXIuZmlyc3QoKSksIGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci5z
ZWNvbmQoKSkgfTsKK30KKwogc3RhdGljIExlbmd0aFNpemUgY29udmVydFRvTGVuZ3RoU2l6ZShj
b25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgY29uc3QgQ1NT
UHJpbWl0aXZlVmFsdWUqIHZhbHVlKQogewogICAgIGlmICghdmFsdWUpCkBAIC0yOTcsNiArMzIy
LDIwIEBAIFJlZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9yVmFsdWUoY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhCiAgICAgICAgIGJhc2ljU2hhcGUgPSBXVEZN
b3ZlKHBhdGgpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBDU1NCYXNpY1NoYXBl
OjpDU1NCYXNpY1NoYXBlU2hhcGVUeXBlOiB7CisgICAgICAgIGF1dG8mIHNoYXBlVmFsdWUgPSBk
b3duY2FzdDxDU1NCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGVWYWx1ZSk7CisgICAgICAgIGNv
bnN0IGF1dG8mIGNzc1NlZ21lbnRzID0gc2hhcGVWYWx1ZS5zZWdtZW50cygpOworICAgICAgICBW
ZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4gc2VnbWVudHMoY3NzU2VnbWVudHMubGVuZ3Ro
KCkpOworICAgICAgICBzdGQ6OnRyYW5zZm9ybShzdGQ6OmJlZ2luKGNzc1NlZ21lbnRzKSwgc3Rk
OjplbmQoY3NzU2VnbWVudHMpLCBzZWdtZW50cy5iZWdpbigpLCBbJl0gKGNvbnN0IGF1dG8mIGNz
c1NlZ21lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBmcm9tQ1NTU2hhcGVTZWdtZW50KGNvbnZl
cnNpb25EYXRhLCBkb3duY2FzdDxDU1NTaGFwZVNlZ21lbnQ+KGNzc1NlZ21lbnQuZ2V0KCkpKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byBzaGFwZSA9IEJhc2ljU2hhcGVTaGFwZTo6Y3Jl
YXRlKGNvbnZlcnRUb0xlbmd0aFBvaW50KGNvbnZlcnNpb25EYXRhLCBzaGFwZVZhbHVlLmZyb20o
KSksIFdURk1vdmUoc2VnbWVudHMpKTsKKyAgICAgICAgc2hhcGUtPnNldFdpbmRSdWxlKHNoYXBl
VmFsdWUud2luZFJ1bGUoKSk7CisKKyAgICAgICAgYmFzaWNTaGFwZSA9IFdURk1vdmUoc2hhcGUp
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGJhc2ljU2hhcGUu
cmVsZWFzZU5vbk51bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNp
Y1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCmluZGV4
IDg5ZTA5ZjU3MmMzNTE2MzgzZjdiMjYyZDU0MGMwM2RlMDJlODQ4NTAuLjg1ZjY3NmZlNjE2NGFh
MGI0MDg4ODMxZDA1NjQ4ODMyZTUwMGZiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hh
cGVzLmNwcApAQCAtMjIyLDYgKzIyMiwzOCBAQCBib29sIENTU0Jhc2ljU2hhcGVQYXRoOjplcXVh
bHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYgb3RoZXJTaGFwZSkgY29uc3QKICAgICByZXR1cm4gd2lu
ZFJ1bGUoKSA9PSBvdGhlclNoYXBlUGF0aC53aW5kUnVsZSgpICYmIHBhdGhEYXRhKCkgPT0gb3Ro
ZXJTaGFwZVBhdGgucGF0aERhdGEoKTsKIH0KIAorQ1NTQmFzaWNTaGFwZVNoYXBlOjpDU1NCYXNp
Y1NoYXBlU2hhcGUoUmVmPENTU1ZhbHVlPiYmIGZyb20sIFJlZjxDU1NWYWx1ZUxpc3Q+JiYgc2Vn
bWVudHMpCisgICAgOiBtX3NlZ21lbnRzKFdURk1vdmUoc2VnbWVudHMpKSwgbV9mcm9tKFdURk1v
dmUoZnJvbSkpCit7IAorfQorCitib29sIENTU0Jhc2ljU2hhcGVTaGFwZTo6ZXF1YWxzKGNvbnN0
IENTU0Jhc2ljU2hhcGUmIG90aGVyU2hhcGUpIGNvbnN0Cit7CisgICAgaWYgKCFpczxDU1NCYXNp
Y1NoYXBlU2hhcGU+KG90aGVyU2hhcGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBh
dXRvJiBvdGhlclNoYXBlU2hhcGUgPSBkb3duY2FzdDxDU1NCYXNpY1NoYXBlU2hhcGU+KG90aGVy
U2hhcGUpOworICAgIHJldHVybiB3aW5kUnVsZSgpID09IG90aGVyU2hhcGVTaGFwZS53aW5kUnVs
ZSgpCisgICAgICAgICYmIGZyb20oKSA9PSBvdGhlclNoYXBlU2hhcGUuZnJvbSgpCisgICAgICAg
ICYmIHNlZ21lbnRzKCkuZXF1YWxzKG90aGVyU2hhcGVTaGFwZS5zZWdtZW50cygpKTsKK30KKwor
U3RyaW5nIENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3NzVGV4dCgpIGNvbnN0Cit7CisgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOworICAgIGlmICh3aW5kUnVsZSgpID09IFdpbmRSdWxlOjpFdmVuT2Rk
KQorICAgICAgICBidWlsZGVyLmFwcGVuZCgic2hhcGUoZXZlbm9kZCAiKTsKKyAgICBlbHNlCisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJzaGFwZSgiKTsKKworICAgIGF1dG8qIHBhaXIgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oZnJvbSgpKS5wYWlyVmFsdWUoKTsKKyAgICBBU1NFUlQo
cGFpcik7CisgICAgYnVpbGRlci5hcHBlbmQoImZyb20gIiwgcGFpci0+Y3NzVGV4dCgpLCAiLCAi
KTsKKyAgICBidWlsZGVyLmFwcGVuZChzZWdtZW50cygpLmNzc1RleHQoKSwgIikiKTsKKworICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKIHN0YXRpYyBTdHJpbmcgYnVpbGRQb2x5
Z29uU3RyaW5nKGNvbnN0IFdpbmRSdWxlJiB3aW5kUnVsZSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBvaW50cykKIHsKICAgICBBU1NFUlQoIShwb2ludHMuc2l6ZSgpICUgMikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQmFzaWNTaGFwZXMuaAppbmRleCAxMDVjNDYwOTQxZDY3NDRlNTdiZTdhMzVkNmIwNGZj
NzNmYWJiYmVjLi42M2FhOGY5ZWU0MzE1NjZiZDE5YmM0NTczMzA3OWM1ZTVkZTlmM2YyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaApAQCAtMzgsNiArMzgsMTAgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CitjbGFzcyBDU1NTaGFwZVNl
Z21lbnQ7CitjbGFzcyBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXI7CitjbGFzcyBDU1NWYWx1ZTsK
K2NsYXNzIENTU1ZhbHVlTGlzdDsKIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFtOwogCiBjbGFzcyBD
U1NCYXNpY1NoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTQmFzaWNTaGFwZT4gewpAQCAtNDcs
NyArNTEsOCBAQCBwdWJsaWM6CiAgICAgICAgIENTU0Jhc2ljU2hhcGVDaXJjbGVUeXBlLAogICAg
ICAgICBDU1NCYXNpY1NoYXBlRWxsaXBzZVR5cGUsCiAgICAgICAgIENTU0Jhc2ljU2hhcGVJbnNl
dFR5cGUsCi0gICAgICAgIENTU0Jhc2ljU2hhcGVQYXRoVHlwZQorICAgICAgICBDU1NCYXNpY1No
YXBlUGF0aFR5cGUsCisgICAgICAgIENTU0Jhc2ljU2hhcGVTaGFwZVR5cGUKICAgICB9OwogCiAg
ICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CkBAIC0yMzMsNiArMjM4LDM1IEBAIHBy
aXZhdGU6CiAgICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07CiB9
OwogCitjbGFzcyBDU1NCYXNpY1NoYXBlU2hhcGUgZmluYWwgOiBwdWJsaWMgQ1NTQmFzaWNTaGFw
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDU1NCYXNpY1NoYXBlU2hhcGU+IGNyZWF0ZShS
ZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJiBzZWdtZW50cykKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0Jhc2ljU2hhcGVTaGFwZShXVEZNb3Zl
KGZyb20pLCBXVEZNb3ZlKHNlZ21lbnRzKSkpOworICAgIH0KKworICAgIGNvbnN0IENTU1ZhbHVl
TGlzdCYgc2VnbWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2VnbWVudHMu
Z2V0KCk7CisgICAgfQorCisgICAgdm9pZCBzZXRXaW5kUnVsZShXaW5kUnVsZSBydWxlKSB7IG1f
d2luZFJ1bGUgPSBydWxlOyB9CisgICAgV2luZFJ1bGUgd2luZFJ1bGUoKSBjb25zdCB7IHJldHVy
biBtX3dpbmRSdWxlOyB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgZnJvbSgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJvbS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIENTU0Jhc2ljU2hhcGVTaGFwZShS
ZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJik7CisKKyAgICBUeXBlIHR5
cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDU1NCYXNpY1NoYXBlU2hhcGVUeXBlOyB9CisgICAg
U3RyaW5nIGNzc1RleHQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NC
YXNpY1NoYXBlJikgY29uc3QgZmluYWw7CisKKyAgICBSZWY8Q1NTVmFsdWVMaXN0PiBtX3NlZ21l
bnRzOworICAgIFJlZjxDU1NWYWx1ZT4gbV9mcm9tOworICAgIFdpbmRSdWxlIG1fd2luZFJ1bGUg
eyBXaW5kUnVsZTo6Tm9uWmVybyB9OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhUb1ZhbHVlVHlw
ZU5hbWUpIFwKQEAgLTI0NSwzICsyNzksNCBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19C
QVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZUNpcmNsZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
Q1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlRWxsaXBzZSkKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUG9seWdvbikKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUGF0aCkKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlU2hhcGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiZDY1ZTc4ZTI0OTRk
MDJlMDExN2U3NTAwMzA4OTkxMDBiYmRhYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNwcApAQCAtMCwwICsxLDE5MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTU2hhcGVT
ZWdtZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPENT
U1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8oQ1NTU2hhcGVTZWdt
ZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0KQorewor
ICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKE1vdmVUbywgYWZmaW5pdHks
IFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlTGluZVRvKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0
eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCkKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50
VmFsdWU6OmNyZWF0ZShMaW5lVG8sIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdldCkpOworfQorCitS
ZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVUb0hvcml6b250
YWwoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+
JiYgeCkKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShMaW5lVG9I
b3Jpem9udGFsLCBhZmZpbml0eSwgV1RGTW92ZSh4KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21l
bnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwoQ1NTU2hhcGVTZWdtZW50
OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgeSkKK3sKKyAgICByZXR1
cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShMaW5lVG9WZXJ0aWNhbCwgYWZmaW5pdHks
IFdURk1vdmUoeSkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6
OmNyZWF0ZUN1cnZlVG9DdWJpYyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5p
dHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBwMSwgUmVmPENTU1Zh
bHVlPiYmIHAyKQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEN1
cnZlVG9DdWJpYywgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92ZShwMSksIFdURk1v
dmUocDIpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVh
dGVDdXJ2ZVRvUXVhZHJhdGljKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0
eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxKQoreworICAgIHJl
dHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEN1cnZlVG9RdWFkcmF0aWMsIGFmZmlu
aXR5LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUocDEpKTsKK30KKworUmVmPENTU1NoYXBlU2Vn
bWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWNTbW9vdGgoQ1NTU2hhcGVT
ZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBS
ZWY8Q1NTVmFsdWU+JiYgcDIpCit7CisgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudFZhbHVlOjpj
cmVhdGUoQ3VydmVUb0N1YmljU21vb3RoLCBhZmZpbml0eSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZN
b3ZlKHAyKSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3Jl
YXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aChDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkg
YWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpCit7CisgICAgcmV0dXJuIENTU1NoYXBl
U2VnbWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb1F1YWRyYXRpY1Ntb290aCwgYWZmaW5pdHksIFdU
Rk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVu
dDo6Y3JlYXRlQXJjVG8oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBS
ZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcmFkaXVzLCBDU1NWYWx1ZUlE
IHN3ZWVwLCBDU1NWYWx1ZUlEIHNpemUsIFJlZjxDU1NWYWx1ZT4mJiBhbmdsZSkKK3sKKyAgICBB
U1NFUlQoc3dlZXAgPT0gQ1NTVmFsdWVDY3cgfHwgc3dlZXAgPT0gQ1NTVmFsdWVDdyk7CisgICAg
QVNTRVJUKHNpemUgPT0gQ1NTVmFsdWVTbWFsbCB8fCBzaXplID09IENTU1ZhbHVlTGFyZ2UpOwor
ICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEFyY1RvLCBhZmZpbml0eSwK
KyAgICAgICAgV1RGTW92ZSh0YXJnZXQpLAorICAgICAgICBXVEZNb3ZlKHJhZGl1cyksCisgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3dlZXApLAorICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKHNpemUpLAorICAgICAgICBXVEZNb3ZlKGFuZ2xlKSk7Cit9CisKK1Jl
ZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKihuZXcgQ1NTU2hhcGVTZWdtZW50KENsb3NlUGF0aCkpKTsK
K30KKworYm9vbCBDU1NTaGFwZVNlZ21lbnQ6OmVxdWFscyhjb25zdCBDU1NTaGFwZVNlZ21lbnQm
IG90aGVyKSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gb3RoZXIudHlwZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV90eXBlID09IENsb3NlUGF0aCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTU2hhcGVTZWdt
ZW50VmFsdWUmPigqdGhpcykuZXF1YWxzKHN0YXRpY19jYXN0PGNvbnN0IENTU1NoYXBlU2VnbWVu
dFZhbHVlJj4ob3RoZXIpKTsKK30KKworU3RyaW5nIENTU1NoYXBlU2VnbWVudDo6Y3VzdG9tQ1NT
VGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHlwZSA9PSBDU1NTaGFwZVNlZ21lbnQ6OkNsb3Nl
UGF0aCkKKyAgICAgICAgcmV0dXJuICJjbG9zZSI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUqPih0aGlzKS0+Y3VzdG9tQ1NTVGV4dCgpOworfQor
Citib29sIENTU1NoYXBlU2VnbWVudFZhbHVlOjplcXVhbHMoY29uc3QgQ1NTU2hhcGVTZWdtZW50
JiBvdGhlcikgY29uc3QKK3sKKyAgICBBU1NFUlQodHlwZSgpID09IG90aGVyLnR5cGUoKSk7Cisg
ICAgY29uc3QgYXV0byYgb3RoZXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IENTU1NoYXBlU2Vn
bWVudFZhbHVlJj4ob3RoZXIpOworICAgIHJldHVybiBvdGhlclZhbHVlLm1fYWZmaW5pdHkgPT0g
bV9hZmZpbml0eQorICAgICAgICAmJiBvdGhlclZhbHVlLnRhcmdldCgpLmVxdWFscyh0YXJnZXQo
KSkKKyAgICAgICAgJiYgb3RoZXJWYWx1ZS5tX2FyZ3VtZW50cy5nZXQoKS5lcXVhbHMobV9hcmd1
bWVudHMuZ2V0KCkpOworfQorCitTdHJpbmcgQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmN1c3RvbUNT
U1RleHQoKSBjb25zdAoreworICAgIGNvbnN0IGF1dG8gY29tbWFuZCA9IFsmXSgpIHsKKyAgICAg
ICAgc3dpdGNoICh0eXBlKCkpIHsKKyAgICAgICAgY2FzZSBNb3ZlVG86CisgICAgICAgICAgICBy
ZXR1cm4gIm1vdmUiOworICAgICAgICBjYXNlIExpbmVUbzoKKyAgICAgICAgICAgIHJldHVybiAi
bGluZSI7CisgICAgICAgIGNhc2UgTGluZVRvSG9yaXpvbnRhbDoKKyAgICAgICAgICAgIHJldHVy
biAiaGxpbmUiOworICAgICAgICBjYXNlIExpbmVUb1ZlcnRpY2FsOgorICAgICAgICAgICAgcmV0
dXJuICJ2bGluZSI7CisgICAgICAgIGNhc2UgQ3VydmVUb0N1YmljOgorICAgICAgICBjYXNlIEN1
cnZlVG9RdWFkcmF0aWM6CisgICAgICAgICAgICByZXR1cm4gImN1cnZlIjsKKyAgICAgICAgY2Fz
ZSBDdXJ2ZVRvQ3ViaWNTbW9vdGg6CisgICAgICAgIGNhc2UgQ3VydmVUb1F1YWRyYXRpY1Ntb290
aDoKKyAgICAgICAgICAgIHJldHVybiAic21vb3RoIjsKKyAgICAgICAgY2FzZSBBcmNUbzoKKyAg
ICAgICAgICAgIHJldHVybiAiYXJjIjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisK
KyAgICB9OworCisgICAgY29uc3QgYXV0byBjb25qdW5jdGlvbiA9IFsmXSgpIHsKKyAgICAgICAg
c3dpdGNoICh0eXBlKCkpIHsKKyAgICAgICAgY2FzZSBNb3ZlVG86CisgICAgICAgIGNhc2UgTGlu
ZVRvOgorICAgICAgICBjYXNlIExpbmVUb0hvcml6b250YWw6CisgICAgICAgIGNhc2UgTGluZVRv
VmVydGljYWw6CisgICAgICAgIGNhc2UgQ3VydmVUb1F1YWRyYXRpY1Ntb290aDoKKyAgICAgICAg
ICAgIHJldHVybiAiIjsKKyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWM6CisgICAgICAgIGNhc2Ug
Q3VydmVUb1F1YWRyYXRpYzoKKyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWNTbW9vdGg6CisgICAg
ICAgICAgICByZXR1cm4gIiB2aWEgIjsKKyAgICAgICAgY2FzZSBBcmNUbzoKKyAgICAgICAgICAg
IHJldHVybiAiIG9mICI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgIH07CisK
KyAgICBhdXRvIGJ5VG8gPSBtX2FmZmluaXR5ID09IENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZp
bml0eTo6QWJzb2x1dGUgPyAiIHRvICIgOiAiIGJ5ICI7CisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKGNvbW1hbmQoKSwgYnlUbywgbV90YXJnZXQtPmNzc1Rl
eHQoKSwgY29uanVuY3Rpb24oKSk7CisgICAgaWYgKHR5cGUoKSA9PSBBcmNUbykgeworICAgICAg
ICBidWlsZGVyLmFwcGVuZChhcmd1bWVudCgwKS5jc3NUZXh0KCkpOworICAgICAgICBjb25zdCBh
dXRvJiBzd2VlcCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihhcmd1bWVudCgxKSk7Cisg
ICAgICAgIGNvbnN0IGF1dG8mIHNpemUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oYXJn
dW1lbnQoMikpOworICAgICAgICBjb25zdCBhdXRvJiBhbmdsZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPihhcmd1bWVudCgzKSk7CisKKyAgICAgICAgaWYgKHN3ZWVwLnZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUN3KQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBjdyIpOworCisgICAg
ICAgIGlmIChzaXplLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxhcmdlKQorICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIiBsYXJnZSIpOworCisgICAgICAgIGlmIChhbmdsZS5jb21wdXRlRGVncmVl
cygpKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiByb3RhdGUgIiwgYW5nbGUuY3NzVGV4
dCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9hcmd1bWVudHMtPmNz
c1RleHQoKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYXBlU2VnbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NoYXBlU2VnbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4ZTdkMzkzZWEzNmIyODE3OTc2
MDY2N2UzYzRhMzI4ZTNiNmFkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2hhcGVTZWdtZW50LmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
KyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIENTU1NoYXBlU2VnbWVudCA6IHB1YmxpYyBDU1NWYWx1ZSB7CitwdWJs
aWM6CisgICAgZW51bSBjbGFzcyBDb29yZEFmZmluaXR5IHsKKyAgICAgICAgQWJzb2x1dGUsIFJl
bGF0aXZlCisgICAgfTsKKworICAgIGVudW0gU2VnbWVudFR5cGUgeworICAgICAgICBNb3ZlVG8s
CisgICAgICAgIExpbmVUbywKKyAgICAgICAgTGluZVRvSG9yaXpvbnRhbCwKKyAgICAgICAgTGlu
ZVRvVmVydGljYWwsCisgICAgICAgIEN1cnZlVG9DdWJpYywKKyAgICAgICAgQ3VydmVUb1F1YWRy
YXRpYywKKyAgICAgICAgQ3VydmVUb0N1YmljU21vb3RoLAorICAgICAgICBDdXJ2ZVRvUXVhZHJh
dGljU21vb3RoLAorICAgICAgICBBcmNUbywKKyAgICAgICAgQ2xvc2VQYXRoCisgICAgfTsKKwor
ICAgIFNlZ21lbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIGJv
b2wgZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0OworICAgIFN0cmlu
ZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CisgICAgfkNTU1NoYXBlU2VnbWVudCgpID0gZGVmYXVs
dDsKKworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVDbG9zZVBhdGgoKTsK
KyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRlTW92ZVRvKENvb3JkQWZmaW5p
dHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdt
ZW50PiBjcmVhdGVMaW5lVG8oQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCk7
CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUxpbmVUb0hvcml6b250YWwo
Q29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHgpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hh
cGVTZWdtZW50PiBjcmVhdGVMaW5lVG9WZXJ0aWNhbChDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFs
dWU+JiYgeSk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9D
dWJpYyhDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+
JiYgcDEsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21l
bnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWMoQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYm
IHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxKTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2Vn
bWVudD4gY3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1
ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAgc3RhdGljIFJlZjxDU1NTaGFw
ZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoQ29vcmRBZmZpbml0eSwgUmVm
PENTU1ZhbHVlPiYmIHRhcmdldCk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNy
ZWF0ZUFyY1RvKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NW
YWx1ZT4mJiByYWRpdXMsIENTU1ZhbHVlSUQgc3dlZXAsIENTU1ZhbHVlSUQgc2l6ZSwgUmVmPENT
U1ZhbHVlPiYmIGFuZ2xlKTsKKworcHJvdGVjdGVkOgorICAgIENTU1NoYXBlU2VnbWVudChTZWdt
ZW50VHlwZSB0eXBlKQorICAgICAgICA6IENTU1ZhbHVlKFNoYXBlU2VnbWVudENsYXNzKQorICAg
ICAgICAsIG1fdHlwZSh0eXBlKSB7IH0KKworcHJpdmF0ZToKKyAgICBTZWdtZW50VHlwZSBtX3R5
cGU7Cit9OworCitjbGFzcyBDU1NTaGFwZVNlZ21lbnRWYWx1ZSA6IHB1YmxpYyBDU1NTaGFwZVNl
Z21lbnQgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSAuLi5BcmdzPgorICAgIHN0
YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGUoQ1NTU2hhcGVTZWdtZW50OjpTZWdtZW50
VHlwZSB0eXBlLAorICAgICAgICBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5p
dHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIEFyZ3MuLi4gYXJndW1lbnRzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU2hhcGVTZWdtZW50VmFsdWUodHlwZSwgYWZm
aW5pdHksIFdURk1vdmUodGFyZ2V0KSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3VtZW50cykuLi4p
KTsKKyAgICB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgdGFyZ2V0KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKKyAgICB9CisKKyAgICBjb25zdCBDU1NWYWx1
ZSYgYXJndW1lbnQoc2l6ZV90IGkpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9hcmd1
bWVudHMtPmxlbmd0aCgpID4gaSk7CisgICAgICAgIHJldHVybiAqKG1fYXJndW1lbnRzLT5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICB9CisKKyAgICBDU1NTaGFwZVNlZ21lbnQ6OkNv
b3JkQWZmaW5pdHkgYWZmaW5pdHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYWZm
aW5pdHk7CisgICAgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTU2hhcGVTZWdtZW50JiBv
dGhlcikgY29uc3Q7CisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICB2b2lkIGFwcGVuZEFyZ3MoKSB7IH0KKyAgICB2b2lkIGFwcGVuZEFyZ3MoUmVmPENT
U1ZhbHVlPiYmIHYpIHsgbV9hcmd1bWVudHMtPmFwcGVuZChXVEZNb3ZlKHYpKTsgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgLi4uQXJncz4KKyAgICB2b2lkIGFwcGVuZEFyZ3MoUmVmPENTU1Zh
bHVlPiYmIHYsIEFyZ3MgLi4uYXJncykKKyAgICB7CisgICAgICAgIGFwcGVuZEFyZ3MoV1RGTW92
ZSh2KSk7CisgICAgICAgIGFwcGVuZEFyZ3Moc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSAuLi5BcmdzPgorICAgIENTU1NoYXBlU2Vn
bWVudFZhbHVlKENTU1NoYXBlU2VnbWVudDo6U2VnbWVudFR5cGUgdHlwZSwgQ1NTU2hhcGVTZWdt
ZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBBcmdz
IC4uLmFyZ3MpCisgICAgICAgIDogQ1NTU2hhcGVTZWdtZW50KHR5cGUpCisgICAgICAgICwgbV9h
ZmZpbml0eShhZmZpbml0eSkKKyAgICAgICAgLCBtX3RhcmdldChXVEZNb3ZlKHRhcmdldCkpCisg
ICAgICAgICwgbV9hcmd1bWVudHMoQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
KQorICAgIHsKKyAgICAgICAgYXBwZW5kQXJncyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OworICAgIH0KKworICAgIENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBtX2FmZmluaXR5
OworICAgIFJlZjxDU1NWYWx1ZT4gbV90YXJnZXQ7CisgICAgUmVmPENTU1ZhbHVlTGlzdD4gbV9h
cmd1bWVudHM7Cit9OworCit9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19WQUxVRShDU1NT
aGFwZVNlZ21lbnQsIGlzU2hhcGVTZWdtZW50VmFsdWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3Bw
CmluZGV4IDVlMjE4MjI2M2ZjZWE1Y2FmZjM2M2U0ZmY0NDAzOTQzODExZjZkYWMuLjYzMDllM2Zm
NzNkY2NiNjY3MzFmMjI0YjY0OWQ3ODkyZGEyZWQxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNw
cApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIkNTU1JheVZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTUmVmbGVjdFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTU2hhZG93VmFsdWUuaCIKKyNpbmNsdWRl
ICJDU1NTaGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUxp
c3QuaCIKQEAgLTIzMCw2ICsyMzEsOCBAQCBib29sIENTU1ZhbHVlOjplcXVhbHMoY29uc3QgQ1NT
VmFsdWUmIG90aGVyKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8
Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGNhc2UgRm9udFN0eWxl
UmFuZ2VDbGFzczoKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0ZvbnRT
dHlsZVJhbmdlVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgU2hhcGVTZWdtZW50
Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NTaGFwZVNlZ21l
bnQ+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMzOSw2ICszNDIs
OCBAQCBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICByZXR1cm4gZG93
bmNhc3Q8Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CiAgICAgY2Fz
ZSBGb250U3R5bGVSYW5nZUNsYXNzOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTRm9udFN0
eWxlUmFuZ2VWYWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKKyAgICBjYXNlIFNoYXBlU2Vn
bWVudENsYXNzOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTU2hhcGVTZWdtZW50PigqdGhp
cykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtNDk3LDYgKzUwMiw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogICAgIGNhc2UgRm9u
dFN0eWxlUmFuZ2VDbGFzczoKICAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU0ZvbnRTdHlsZVJh
bmdlVmFsdWU+KHRoaXMpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTaGFwZVNlZ21lbnRD
bGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU1NoYXBlU2VnbWVudD4odGhpcyk7Cisg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZS5oCmluZGV4IGRhZGU1OGRhMjA2OGI3ZWVjY2RhYTMzMTkxOGM0NGQzYTc2ZTA1
YzguLjNmNzVhZjMwYWI5MDI4YWViMmQxNTJmMTQ1Yzk4OTM1N2I1MTllYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5oCkBAIC0xMzQsNiArMTM0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNHcmlkQXV0
b1JlcGVhdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gR3JpZEF1dG9SZXBl
YXRDbGFzczsgfQogICAgIGJvb2wgaXNHcmlkSW50ZWdlclJlcGVhdFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGFzc1R5cGUgPT0gR3JpZEludGVnZXJSZXBlYXRDbGFzczsgfQogICAgIGJvb2wg
aXNHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0g
R3JpZFRlbXBsYXRlQXJlYXNDbGFzczsgfQorICAgIGJvb2wgaXNTaGFwZVNlZ21lbnRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFNoYXBlU2VnbWVudENsYXNzOyB9CiAgICAg
Ym9vbCBpc0dyaWRMaW5lTmFtZXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09
IEdyaWRMaW5lTmFtZXNDbGFzczsgfQogICAgIGJvb2wgaXNTdWJncmlkVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTdWJncmlkQ2xhc3M7IH0KICAgICBib29sIGlzVW5pY29k
ZVJhbmdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBVbmljb2RlUmFuZ2VD
bGFzczsgfQpAQCAtMjA5LDYgKzIxMCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgQ2FsY3VsYXRp
b25DbGFzcywKICAgICAgICAgR3JpZFRlbXBsYXRlQXJlYXNDbGFzcywKICAgICAgICAgVmFsdWVQ
YWlyQ2xhc3MsCisgICAgICAgIFNoYXBlU2VnbWVudENsYXNzLAogCiAgICAgICAgIENTU0NvbnRl
bnREaXN0cmlidXRpb25DbGFzcywKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5p
bgppbmRleCAyZGQ0YzBiYWMzYzlhM2E0ZDYzYmFlZGMyOTkxMDgwMmI1MjIwMmY5Li4xYjY1NGVi
MjE5ZDRlMWM5YjIyOGZlMTcxNTg1MzkzODA1YzViMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWVLZXl3b3Jkcy5pbgpAQCAtMTI4Niw2ICsxMjg2LDI3IEBAIHJlY3QKIAogLy8gc2hhcGVz
CiBwb2x5Z29uCitzaGFwZQorCisvLyBzaGFwZSgpCisvLyBmcm9tCisvLyB0bworLy8gbW92ZQor
bGluZQoraGxpbmUKK3ZsaW5lCitjdXJ2ZQorLy8gc21vb3RoCithcmMKK2Nsb3NlCit2aWEKK29m
CitieQorY3cKK2NjdworLy8gbGFyZ2UKKy8vIHNtYWxsCisvLyByb3RhdGUKIAogLy8gQGZvbnQt
ZmFjZSBzcmMKIGZvcm1hdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2Vn
bWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhcGVTZWdtZW50RnVuY3Rp
b25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jM2NiMTBmOGFhMzE3MjIwMzAxZjQyOTZhZjU4NmJlODJlNmVh
NzFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1
bmN0aW9ucy5jcHAKQEAgLTAsMCArMSwyMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
Tm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU2hhcGVTZWdtZW50RnVuY3Rpb25zLmgiCisKKyNpbmNsdWRlICJCYXNp
Y1NoYXBlU2VnbWVudC5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIK
KyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgorI2luY2x1ZGUgIlBhaXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjb252ZXJ0UG9pbnRUb0NT
U1ZhbHVlKGNvbnN0IExlbmd0aFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQoreworICAgIGF1dG8mIHBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOworICAgIHJl
dHVybiBwb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZSgKKyAgICAgICAgcG9vbC5jcmVhdGVW
YWx1ZShwb2ludC54KCksIHN0eWxlKSwKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZShwb2ludC55
KCksIHN0eWxlKSwKKyAgICAgICAgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RD
b2FsZXNjZSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZT4gYXV0byB0b0NTU0FyZ3Mo
Y29uc3QgVmFsdWUmLCBjb25zdCBSZW5kZXJTdHlsZSYpOworCit0ZW1wbGF0ZTw+CithdXRvIHRv
Q1NTQXJncyhjb25zdCBMZW5ndGgmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7
CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZTxSZWY8Q1NTVmFsdWU+PihDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHZhbHVlLCBzdHlsZSkpOworfQorCit0ZW1wbGF0ZTw+
CithdXRvIHRvQ1NTQXJnczxMZW5ndGhQb2ludD4oY29uc3QgTGVuZ3RoUG9pbnQmIHZhbHVlLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShj
b252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLCBzdHlsZSkpOworfQorCit0ZW1wbGF0ZTw+Cith
dXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisg
ICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwK
KyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5wb2ludDEsIHN0eWxlKSwKKyAg
ICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5wb2ludDIsIHN0eWxlKSk7Cit9CisK
K3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NBcmdzKGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNl
Z1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBz
dGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUudGFy
Z2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5w
b2ludDEsIHN0eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NBcmdzKGNvbnN0IEN1
cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSgKKyAgICAgICAgY29udmVydFBv
aW50VG9DU1NWYWx1ZSh2YWx1ZS50YXJnZXRQb2ludCwgc3R5bGUpLAorICAgICAgICBjb252ZXJ0
UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnBvaW50Miwgc3R5bGUpKTsKK30KKwordGVtcGxhdGU8Pgor
YXV0byB0b0NTU0FyZ3MoY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8mIHBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpOworICAgIGF1dG8gcmFkaXVzID0gUGFpcjo6Y3JlYXRlKAorICAgICAgICBwb29sLmNy
ZWF0ZVZhbHVlKHZhbHVlLnJhZGl1cy53aWR0aCwgc3R5bGUpLAorICAgICAgICBwb29sLmNyZWF0
ZVZhbHVlKHZhbHVlLnJhZGl1cy5oZWlnaHQsIHN0eWxlKSwKKyAgICAgICAgUGFpcjo6SWRlbnRp
Y2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpOworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBs
ZSgKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS50YXJnZXRQb2ludCwgc3R5
bGUpLAorICAgICAgICBwb29sLmNyZWF0ZVZhbHVlKFdURk1vdmUocmFkaXVzKSksCisgICAgICAg
IHZhbHVlLnN3ZWVwID8gQ1NTVmFsdWVDdyA6IENTU1ZhbHVlQ2N3LAorICAgICAgICB2YWx1ZS5s
YXJnZUFyYyA/IENTU1ZhbHVlTGFyZ2UgOiBDU1NWYWx1ZVNtYWxsLAorICAgICAgICBwb29sLmNy
ZWF0ZVZhbHVlKHZhbHVlLmFuZ2xlLCBDU1NVbml0VHlwZTo6Q1NTX0RFRykpOworfQorCitSZWY8
Q1NTU2hhcGVTZWdtZW50PiB0b0NTU1NoYXBlU2VnbWVudChjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBzZWdtZW50KQoreworICAgIGF1dG8gdG9DU1Mg
PSBbJl0oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBhdXRvIGNyZWF0
ZSwgY29uc3QgYXV0byYgYXMpIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6YXBwbHkoY3JlYXRlLCBz
dGQ6OnR1cGxlX2NhdChzdGQ6Om1ha2VfdHVwbGUoYWZmaW5pdHkpLCB0b0NTU0FyZ3MoKHNlZ21l
bnQuKmFzKSgpLCBzdHlsZSkpKTsKKyAgICB9OworCisjZGVmaW5lIENSRUFURV9DU1NfU0hBUEVf
U0VHTUVOVF9GUk9NX0JBU0lDX1NIQVBFX1NFR01FTlQoVHlwZSkgXAorICAgIGNhc2UgU2hhcGVT
ZWdtZW50IyNUeXBlOjpBYnNTZWdUeXBlOiBcCisgICAgICAgIHJldHVybiB0b0NTUyhDU1NTaGFw
ZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRlLCBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0
ZSMjVHlwZSwgJkJhc2ljU2hhcGVTZWdtZW50OjphcyMjVHlwZSk7IFwKKyAgICBjYXNlIFNoYXBl
U2VnbWVudCMjVHlwZTo6UmVsU2VnVHlwZTogXAorICAgICAgICByZXR1cm4gdG9DU1MoQ1NTU2hh
cGVTZWdtZW50OjpDb29yZEFmZmluaXR5OjpSZWxhdGl2ZSwgQ1NTU2hhcGVTZWdtZW50OjpjcmVh
dGUjI1R5cGUsICZCYXNpY1NoYXBlU2VnbWVudDo6YXMjI1R5cGUpOyBcCisKKyAgICBzd2l0Y2gg
KHNlZ21lbnQudHlwZSgpKSB7CisgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgorICAgICAgICBy
ZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKworICAgICAgICBGT1Jf
RUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9WQUxVRShDUkVBVEVfQ1NTX1NIQVBFX1NFR01F
TlRfRlJPTV9CQVNJQ19TSEFQRV9TRUdNRU5UKQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQordGVtcGxhdGUgPGNsYXNzIERlZmluaXRpb24+
CitTVkdQYXRoU2VnVHlwZSBzZWdtZW50VHlwZShjb25zdCBDU1NTaGFwZVNlZ21lbnRWYWx1ZSYg
c2VnbWVudFdpdGhWYWx1ZSkKK3sKKyAgICByZXR1cm4gc2VnbWVudFdpdGhWYWx1ZS5hZmZpbml0
eSgpID09IENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eTo6QWJzb2x1dGUgPyBEZWZpbml0
aW9uOjpBYnNTZWdUeXBlIDogRGVmaW5pdGlvbjo6UmVsU2VnVHlwZTsKK30KKworUmVmPEJhc2lj
U2hhcGVTZWdtZW50PiBmcm9tQ1NTU2hhcGVTZWdtZW50KGNvbnN0IENTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBDU1NTaGFwZVNlZ21lbnQmIGNzc1NlZ21l
bnQpCit7CisgICAgYXV0byB0b0xlbmd0aCA9IFsmXShjb25zdCBDU1NWYWx1ZSYgdmFsdWUpIC0+
IExlbmd0aCB7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpLmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgRml4ZWRGbG9hdENv
bnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uPihjb252
ZXJzaW9uRGF0YSk7CisgICAgfTsKKworICAgIGF1dG8gdG9MZW5ndGhQb2ludCA9IFsmXShjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpIC0+IExlbmd0aFBvaW50IHsKKyAgICAgICAgYXV0byBwYWlyID0g
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5wYWlyVmFsdWUoKTsKKyAgICAgICAg
QVNTRVJUKHBhaXIpOworICAgICAgICByZXR1cm4gTGVuZ3RoUG9pbnQgeyB0b0xlbmd0aCgqcGFp
ci0+Zmlyc3QoKSksIHRvTGVuZ3RoKCpwYWlyLT5zZWNvbmQoKSkgfTsKKyAgICB9OworCisgICAg
YXV0byB0b0xlbmd0aFNpemUgPSBbJl0oY29uc3QgQ1NTVmFsdWUmIHZhbHVlKSAtPiBMZW5ndGhT
aXplIHsKKyAgICAgICAgYXV0byBwYWlyID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS5wYWlyVmFsdWUoKTsKKyAgICAgICAgQVNTRVJUKHBhaXIpOworICAgICAgICByZXR1cm4g
TGVuZ3RoU2l6ZSB7IHRvTGVuZ3RoKCpwYWlyLT5maXJzdCgpKSwgdG9MZW5ndGgoKnBhaXItPnNl
Y29uZCgpKSB9OworICAgIH07CisKKyAgICBhdXRvIHR5cGUgPSBjc3NTZWdtZW50LnR5cGUoKTsK
KworICAgIGlmICh0eXBlID09IENTU1NoYXBlU2VnbWVudDo6Q2xvc2VQYXRoKQorICAgICAgICBy
ZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworCisgICAgY29uc3Qg
YXV0byYgc2VnbWVudFdpdGhWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IENTU1NoYXBlU2VnbWVu
dFZhbHVlJj4oY3NzU2VnbWVudCk7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIENT
U1NoYXBlU2VnbWVudDo6TW92ZVRvOiB7CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVu
dDo6Y3JlYXRlTW92ZVRvKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50TW92
ZVRvPihzZWdtZW50V2l0aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVu
dFdpdGhWYWx1ZS50YXJnZXQoKSkpOworICAgIH0KKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50
OjpMaW5lVG86CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRv
KAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50TGluZVRvPihzZWdtZW50V2l0
aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJn
ZXQoKSkpOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkxpbmVUb0hvcml6b250YWw6Cisg
ICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvSG9yaXpvbnRhbCgK
KyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudExpbmVUb0hvcml6b250YWw+KHNl
Z21lbnRXaXRoVmFsdWUpLAorICAgICAgICAgICAgdG9MZW5ndGgoc2VnbWVudFdpdGhWYWx1ZS50
YXJnZXQoKSkpOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkxpbmVUb1ZlcnRpY2FsOgor
ICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVUb1ZlcnRpY2FsKAor
ICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50TGluZVRvVmVydGljYWw+KHNlZ21l
bnRXaXRoVmFsdWUpLAorICAgICAgICAgICAgdG9MZW5ndGgoc2VnbWVudFdpdGhWYWx1ZS50YXJn
ZXQoKSkpOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkN1cnZlVG9DdWJpYzoKKyAgICAg
ICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWMoCisgICAgICAg
ICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWM+KHNlZ21lbnRXaXRoVmFs
dWUpLCB7CisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLmFy
Z3VtZW50KDApKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFs
dWUuYXJndW1lbnQoMSkpLAorICAgICAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdp
dGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAgICAgIH0pOworCisgICAgY2FzZSBDU1NTaGFwZVNl
Z21lbnQ6OkN1cnZlVG9RdWFkcmF0aWM6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVu
dDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpYygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBl
U2VnbWVudEN1cnZlVG9RdWFkcmF0aWM+KHNlZ21lbnRXaXRoVmFsdWUpLCB7CisgICAgICAgICAg
ICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50KDApKSwKKyAgICAg
ICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUudGFyZ2V0KCkpCisgICAg
ICAgICAgICB9KTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpDdXJ2ZVRvQ3ViaWNTbW9v
dGg6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1Ymlj
U21vb3RoKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50Q3VydmVUb0N1Ymlj
U21vb3RoPihzZWdtZW50V2l0aFZhbHVlKSwgeworICAgICAgICAgICAgICAgIHRvTGVuZ3RoUG9p
bnQoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgwKSksCisgICAgICAgICAgICAgICAgdG9MZW5n
dGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQorICAgICAgICAgICAgfSk7CisKKyAg
ICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q3VydmVUb1F1YWRyYXRpY1Ntb290aDoKKyAgICAgICAg
cmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljU21vb3RoKAor
ICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50Q3VydmVUb1F1YWRyYXRpY1Ntb290
aD4oc2VnbWVudFdpdGhWYWx1ZSksCisgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRX
aXRoVmFsdWUudGFyZ2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpBcmNUbzoK
KyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVBcmNUbygKKyAgICAgICAg
ICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudEFyY1RvPihzZWdtZW50V2l0aFZhbHVlKSwgewor
ICAgICAgICAgICAgICAgIC5yYWRpdXMgPSB0b0xlbmd0aFNpemUoc2VnbWVudFdpdGhWYWx1ZS5h
cmd1bWVudCgwKSksCisgICAgICAgICAgICAgICAgLnN3ZWVwID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMSkpLnZhbHVlSUQoKSA9PSBDU1NW
YWx1ZUN3LAorICAgICAgICAgICAgICAgIC5sYXJnZUFyYyA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPihzZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50KDIpKS52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVMYXJnZSwKKyAgICAgICAgICAgICAgICAuYW5nbGUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4oc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgzKSkuZmxvYXRWYWx1ZShDU1NVbml0VHlw
ZTo6Q1NTX0RFRyksCisgICAgICAgICAgICAgICAgLnRhcmdldFBvaW50ID0gdG9MZW5ndGhQb2lu
dChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQorICAgICAgICAgICAgfSk7CisKKyAgICBjYXNl
IENTU1NoYXBlU2VnbWVudDo6Q2xvc2VQYXRoOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNl
Z21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhcGVTZWdtZW50
RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDY0MGQ3MWUyOWE1MDgzODI1M2UwYzJlYTcwOTYxMTQ0OTFkNjJkMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMu
aApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3Rl
bXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBCYXNpY1NoYXBlU2VnbWVudDsKK2NsYXNzIENTU1NoYXBlU2VnbWVudDsKK2NsYXNz
IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE7CitjbGFzcyBSZW5kZXJTdHlsZTsKKworUmVmPENT
U1NoYXBlU2VnbWVudD4gdG9DU1NTaGFwZVNlZ21lbnQoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25z
dCBCYXNpY1NoYXBlU2VnbWVudCYpOworUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBmcm9tQ1NTU2hh
cGVTZWdtZW50KGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBjb25zdCBDU1NTaGFw
ZVNlZ21lbnQmKTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VyLmNwcAppbmRleCBkMWI1ZDM0NTU1OTEwYmQ4MzNlYWU5ZmZiYzk1N2JjMWNkMzI0
OTBiLi44ZWE0ZmE4NmVmNGI0ZWJhYzZmN2RmMWYxZDc0M2JlNDllZmFhZDVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtNDEsNiAr
NDEsNyBAQAogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKICNpbmNsdWRlICJDU1NG
b250RmVhdHVyZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udFBhbGV0dGVWYWx1ZXNPdmVycmlk
ZUNvbG9yc1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTU2hhcGVTZWdtZW50LmgiCiAjaWYgRU5BQkxF
KFZBUklBVElPTl9GT05UUykKICNpbmNsdWRlICJDU1NGb250VmFyaWF0aW9uVmFsdWUuaCIKICNl
bmRpZgpAQCAtMjY1Miw2ICsyNjUzLDE5NiBAQCBzdGF0aWMgUmVmUHRyPENTU0Jhc2ljU2hhcGVQ
YXRoPiBjb25zdW1lQmFzaWNTaGFwZVBhdGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncwogICAg
IHJldHVybiBzaGFwZTsKIH0KIAorc3RhdGljIFJlZlB0cjxDU1NTaGFwZVNlZ21lbnQ+IGNvbnN1
bWVTaGFwZVNlZ21lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgY29udGV4dCkKK3sKKyAgICBhdXRvIGNvbW1hbmQgPSBhcmdzLmNvbnN1bWVJbmNs
dWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgaWYgKGNvbW1hbmQuaWQoKSA9PSBDU1NWYWx1ZUNsb3Nl
KQorICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKwor
ICAgIGlmICghaWRlbnRNYXRjaGVzPENTU1ZhbHVlVG8sIENTU1ZhbHVlQnk+KGFyZ3MucGVlaygp
LmlkKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gYWZmaW5pdHkgPSBh
cmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSA9PSBDU1NWYWx1ZVRvID8gQ1NT
U2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5OjpBYnNvbHV0ZSA6IENTU1NoYXBlU2VnbWVudDo6
Q29vcmRBZmZpbml0eTo6UmVsYXRpdmU7CisgICAgYXV0byBjb25zdW1lTmV4dExlbmd0aE9yUGVy
Y2VudCA9IFsmXSgpIHsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJn
cywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOworICAgIH07CisKKyAgICBpZiAoY29t
bWFuZC5pZCgpID09IENTU1ZhbHVlSGxpbmUgfHwgY29tbWFuZC5pZCgpID09IENTU1ZhbHVlVmxp
bmUpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IGNvbnN1bWVOZXh0TGVuZ3RoT3JQZXJjZW50KCk7
CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
ICAgICByZXR1cm4gY29tbWFuZC5pZCgpID09IENTU1ZhbHVlSGxpbmUKKyAgICAgICAgICAgID8g
Q1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKGFmZmluaXR5LCB2YWx1ZS5y
ZWxlYXNlTm9uTnVsbCgpKQorICAgICAgICAgICAgOiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxp
bmVUb1ZlcnRpY2FsKGFmZmluaXR5LCB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisK
KyAgICBhdXRvIGNvbnN1bWVOZXh0Q29vcmRpbmF0ZXMgPSBbJl0gKCkgLT4gUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiB7CisgICAgICAgIGF1dG8geCA9IGNvbnN1bWVOZXh0TGVuZ3RoT3JQZXJj
ZW50KCk7CisgICAgICAgIGlmICgheCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIGF1dG8geSA9IGNvbnN1bWVOZXh0TGVuZ3RoT3JQZXJjZW50KCk7CisgICAgICAgIGlm
ICgheSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIHJldHVybiBjcmVh
dGVQcmltaXRpdmVWYWx1ZVBhaXIoeC5yZWxlYXNlTm9uTnVsbCgpLCB5LnJlbGVhc2VOb25OdWxs
KCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkRvTm90Q29hbGVzY2UpOworICAgIH07
CisKKyAgICBhdXRvIGF0RW5kT2ZTZWdtZW50ID0gWyZdICgpIHsKKyAgICAgICAgcmV0dXJuIGFy
Z3MuYXRFbmQoKSB8fCBhcmdzLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tlbjsKKyAgICB9Owor
CisgICAgYXV0byB0YXJnZXRQb2ludCA9IGNvbnN1bWVOZXh0Q29vcmRpbmF0ZXMoKTsKKyAgICBp
ZiAoIXRhcmdldFBvaW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN3aXRjaCAo
Y29tbWFuZC5pZCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZU1vdmU6CisgICAgICAgIHJldHVybiBD
U1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZU1vdmVUbyhhZmZpbml0eSwgdGFyZ2V0UG9pbnQucmVsZWFz
ZU5vbk51bGwoKSk7CisKKyAgICBjYXNlIENTU1ZhbHVlTGluZToKKyAgICAgICAgcmV0dXJuIENT
U1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvKGFmZmluaXR5LCB0YXJnZXRQb2ludC5yZWxlYXNl
Tm9uTnVsbCgpKTsKKworICAgIGNhc2UgQ1NTVmFsdWVDdXJ2ZTogeworICAgICAgICBpZiAoYXJn
cy5wZWVrKCkuaWQoKSAhPSBDU1NWYWx1ZVZpYSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAg
YXV0byB2aWFQb2ludDEgPSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7CisgICAgICAgIGlmICgh
dmlhUG9pbnQxKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYgKGF0
RW5kT2ZTZWdtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVh
dGVDdXJ2ZVRvUXVhZHJhdGljKGFmZmluaXR5LCB0YXJnZXRQb2ludC5yZWxlYXNlTm9uTnVsbCgp
LCB2aWFQb2ludDEucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICAgICAgYXV0byB2aWFQb2ludDIg
PSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7CisgICAgICAgIGlmICghdmlhUG9pbnQyKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVu
dDo6Y3JlYXRlQ3VydmVUb0N1YmljKGFmZmluaXR5LCAgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51
bGwoKSwgdmlhUG9pbnQxLnJlbGVhc2VOb25OdWxsKCksIHZpYVBvaW50Mi5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICB9CisKKyAgICBjYXNlIENTU1ZhbHVlU21vb3RoOiB7CisgICAgICAgIGlmIChh
cmdzLnBlZWsoKS5pZCgpICE9IENTU1ZhbHVlVmlhKQorICAgICAgICAgICAgcmV0dXJuIENTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aChhZmZpbml0eSwgIHRhcmdl
dFBvaW50LnJlbGVhc2VOb25OdWxsKCkpOworCisgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKTsKKyAgICAgICAgYXV0byB2aWFQb2ludCA9IGNvbnN1bWVOZXh0Q29vcmRp
bmF0ZXMoKTsKKyAgICAgICAgaWYgKCF2aWFQb2ludCkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJp
Y1Ntb290aChhZmZpbml0eSwgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCksIHZpYVBvaW50
LnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KKworICAgIGNhc2UgQ1NTVmFsdWVBcmM6IHsKKyAg
ICAgICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgIT0gQ1NTVmFsdWVPZikKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KTsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByeCA9IGNvbnN1bWVMZW5ndGhP
clBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7Cisg
ICAgICAgIGlmICghcngpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJ5OworICAgICAgICBpZiAoYXJncy5wZWVrKCkudHlw
ZSgpID09IElkZW50VG9rZW4pCisgICAgICAgICAgICByeSA9IHJ4OworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIHJ5ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1v
ZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKKyAgICAgICAgICAgIGlmICghcnkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6Om9w
dGlvbmFsPENTU1ZhbHVlSUQ+IHN3ZWVwOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVl
SUQ+IHNpemU7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gYW5nbGU7CisKKyAgICAgICAgd2hp
bGUgKCFhdEVuZE9mU2VnbWVudCgpKSB7CisgICAgICAgICAgICBhdXRvIG5leHRJZGVudCA9IGFy
Z3MucGVlaygpLmlkKCk7CisgICAgICAgICAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlUm90
YXRlPihuZXh0SWRlbnQpICYmICFhbmdsZSkgeworICAgICAgICAgICAgICAgIGFyZ3MuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOworICAgICAgICAgICAgICAgIGFuZ2xlID0gY29u
c3VtZUFuZ2xlKGFyZ3MsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0
bGVzc1plcm9RdWlyazo6Rm9yYmlkKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZUN3LCBDU1NW
YWx1ZUNjdz4obmV4dElkZW50KSAmJiAhc3dlZXAuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAg
ICAgICBzd2VlcCA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOworICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
aWRlbnRNYXRjaGVzPENTU1ZhbHVlTGFyZ2UsIENTU1ZhbHVlU21hbGw+KG5leHRJZGVudCkgJiYg
IXNpemUuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBzaXplID0gYXJncy5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCFhbmdsZSkKKyAgICAgICAgICAgIGFuZ2xlID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZSgwLCBDU1NVbml0VHlwZTo6Q1NTX0RFRyk7CisKKyAgICAgICAgcmV0dXJuIENT
U1NoYXBlU2VnbWVudDo6Y3JlYXRlQXJjVG8oCisgICAgICAgICAgICBhZmZpbml0eSwKKyAgICAg
ICAgICAgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCksCisgICAgICAgICAgICBjcmVhdGVQ
cmltaXRpdmVWYWx1ZVBhaXIocngucmVsZWFzZU5vbk51bGwoKSwgcnkucmVsZWFzZU5vbk51bGwo
KSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpLAorICAgICAgICAgICAg
c3dlZXAudmFsdWVfb3IoQ1NTVmFsdWVDY3cpLAorICAgICAgICAgICAgc2l6ZS52YWx1ZV9vcihD
U1NWYWx1ZVNtYWxsKSwKKyAgICAgICAgICAgIGFuZ2xlLnJlbGVhc2VOb25OdWxsKCkpOworICAg
IH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKK3N0
YXRpYyBSZWZQdHI8Q1NTQmFzaWNTaGFwZVNoYXBlPiBjb25zdW1lQmFzaWNTaGFwZVNoYXBlKENT
U1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQp
Cit7CisgICAgV2luZFJ1bGUgd2luZFJ1bGUgPSBXaW5kUnVsZTo6Tm9uWmVybzsKKworICAgIGlm
IChpZGVudE1hdGNoZXM8Q1NTVmFsdWVFdmVub2RkLCBDU1NWYWx1ZU5vbnplcm8+KGFyZ3MucGVl
aygpLmlkKCkpKQorICAgICAgICB3aW5kUnVsZSA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRl
c3BhY2UoKS5pZCgpID09IENTU1ZhbHVlRXZlbm9kZCA/IFdpbmRSdWxlOjpFdmVuT2RkIDogV2lu
ZFJ1bGU6Ok5vblplcm87CisKKyAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSAhPSBDU1NWYWx1ZUZy
b20pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXJncy5jb25zdW1lSW5jbHVkaW5n
V2hpdGVzcGFjZSgpOworCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpbml0aWFsWCA9
IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpB
bGwpOworICAgIGlmICghaW5pdGlhbFgpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpbml0aWFsWSA9IGNvbnN1bWVMZW5ndGhPclBlcmNl
bnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOworICAgIGlmICghaW5pdGlh
bFkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1
dG8gc2VnbWVudHMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisKKyAg
ICBmb3IgKDs7KSB7CisgICAgICAgIGF1dG8gc2VnbWVudCA9IGNvbnN1bWVTaGFwZVNlZ21lbnQo
YXJncywgY29udGV4dCk7CisgICAgICAgIGlmICghc2VnbWVudCkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgICAgIHNlZ21lbnRzLT5hcHBlbmQoc2VnbWVudC5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICAgICAgaWYgKGFyZ3MuYXRFbmQoKSkKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8gc2hhcGUgPSBDU1NC
YXNpY1NoYXBlU2hhcGU6OmNyZWF0ZSgKKyAgICAgICAgY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWly
KAorICAgICAgICAgICAgaW5pdGlhbFgucmVsZWFzZU5vbk51bGwoKSwKKyAgICAgICAgICAgIGlu
aXRpYWxZLnJlbGVhc2VOb25OdWxsKCksCisgICAgICAgICAgICBQYWlyOjpJZGVudGljYWxWYWx1
ZUVuY29kaW5nOjpEb05vdENvYWxlc2NlKSwKKyAgICAgICAgV1RGTW92ZShzZWdtZW50cykpOwor
CisgICAgc2hhcGUtPnNldFdpbmRSdWxlKHdpbmRSdWxlKTsKKyAgICByZXR1cm4gc2hhcGU7Cit9
CisKIHN0YXRpYyB2b2lkIGNvbXBsZXRlNFNpZGVzKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
c2lkZVs0XSkKIHsKICAgICBpZiAoc2lkZVszXSkKQEAgLTI3NTcsNiArMjk0OCw4IEBAIHN0YXRp
YyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVCYXNpY1NoYXBlKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBjCiAgICAgICAgIHNoYXBlID0gY29uc3VtZUJhc2ljU2hhcGVJbnNl
dChhcmdzLCBjb250ZXh0KTsKICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVBhdGgpCiAgICAg
ICAgIHNoYXBlID0gY29uc3VtZUJhc2ljU2hhcGVQYXRoKGFyZ3MpOworICAgIGVsc2UgaWYgKGlk
ID09IENTU1ZhbHVlU2hhcGUpCisgICAgICAgIHNoYXBlID0gY29uc3VtZUJhc2ljU2hhcGVTaGFw
ZShhcmdzLCBjb250ZXh0KTsKICAgICBpZiAoIXNoYXBlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICByYW5nZSA9IHJhbmdlQ29weTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3OTY5YmZiNjFk
NGI3Mjc4ZjNlNWVmMDM1NmNlYzM2MmQ2MTJiZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwCkBAIC0wLDAgKzEs
Mjg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE5vYW0gUm9zZW50aGFsIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJhc2ljU2hh
cGVTZWdtZW50LmgiCisKKyNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJQ
YXRoLmgiCisjaW5jbHVkZSAiU1ZHUGF0aEJ1aWxkZXIuaCIKKyNpbmNsdWRlICJTVkdQYXRoUGFy
c2VyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZy5oIgorI2luY2x1ZGUgIlNWR1BhdGhTZWdJbXBs
LmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIERlZmluaXRpb24+CitjbGFzcyBCYXNpY1NoYXBlU2VnbWVudFZh
bHVlIDogcHVibGljIEJhc2ljU2hhcGVTZWdtZW50IHsKK3B1YmxpYzoKKyAgICBjb25zdCB0eXBl
bmFtZSBEZWZpbml0aW9uOjpWYWx1ZSYgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKHR5cGUoKSA9PSBEZWZpbml0aW9uOjpBYnNTZWdUeXBlIHx8IHR5cGUoKSA9PSBEZWZpbml0
aW9uOjpSZWxTZWdUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7CisgICAgfQorCisgICAg
Ym9vbCBlcXVhbHMoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCkKKyAgICAgICAgICAgICYmIHZh
bHVlKCkgPT0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxEZWZpbml0
aW9uPiY+KG90aGVyKS52YWx1ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8QmFzaWNTaGFw
ZVNlZ21lbnRWYWx1ZT4gY3JlYXRlKEJhc2ljU2hhcGVTZWdtZW50OjpUeXBlIHR5cGUsIHR5cGVu
YW1lIERlZmluaXRpb246OlZhbHVlJiYgdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQodHlw
ZSA9PSBEZWZpbml0aW9uOjpBYnNTZWdUeXBlIHx8IHR5cGUgPT0gRGVmaW5pdGlvbjo6UmVsU2Vn
VHlwZSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJhc2ljU2hhcGVTZWdtZW50VmFs
dWU8RGVmaW5pdGlvbj4odHlwZSwgV1RGTW92ZSh2YWx1ZSkpKTsKKyAgICB9CisKK3Byb3RlY3Rl
ZDoKKyAgICBCYXNpY1NoYXBlU2VnbWVudFZhbHVlKEJhc2ljU2hhcGVTZWdtZW50OjpUeXBlIHR5
cGUsIHR5cGVuYW1lIERlZmluaXRpb246OlZhbHVlJiYgdmFsdWUpCisgICAgICAgIDogQmFzaWNT
aGFwZVNlZ21lbnQodHlwZSkKKyAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKSB7IH0K
KworcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBEZWZpbml0aW9uOjpWYWx1ZSBtX3ZhbHVlOworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyBjb25zdCB0eXBlbmFtZSBUOjpWYWx1ZSYg
ZXh0cmFjdFZhbHVlKGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBzZWcpCit7CisgICAgQVNTRVJU
KHNlZy50eXBlKCkgPT0gVDo6QWJzU2VnVHlwZSB8fCBzZWcudHlwZSgpID09IFQ6OlJlbFNlZ1R5
cGUpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY1NoYXBlU2VnbWVudFZhbHVl
PFQ+Jj4oc2VnKS52YWx1ZSgpOworfQorCitib29sIEJhc2ljU2hhcGVTZWdtZW50OjplcXVhbHMo
Y29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdAoreworICAgIGF1dG8gdHlwZSA9
IHRoaXMtPnR5cGUoKTsKKyAgICBpZiAodHlwZSAhPSBvdGhlci50eXBlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworI2RlZmluZSBDT01QQVJFX1NIQVBFX1NFR01FTlRfVkFMVUUoVHlwZSkg
XAorICAgIGNhc2UgU2hhcGVTZWdtZW50IyNUeXBlOjpBYnNTZWdUeXBlOiBcCisgICAgY2FzZSBT
aGFwZVNlZ21lbnQjI1R5cGU6OlJlbFNlZ1R5cGU6IFwKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RW
YWx1ZTxTaGFwZVNlZ21lbnQjI1R5cGU+KCp0aGlzKSA9PSBleHRyYWN0VmFsdWU8U2hhcGVTZWdt
ZW50IyNUeXBlPihvdGhlcik7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFBhdGhT
ZWdDbG9zZVBhdGg6CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIEZPUl9FQUNIX1NI
QVBFX1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKENPTVBBUkVfU0hBUEVfU0VHTUVOVF9WQUxVRSkK
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworI2RlZmluZSBJTVBMRU1FTlRfU0hB
UEVfU0VHTUVOVF9WQUxVRShUWVBFKSBcCitSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IEJhc2ljU2hh
cGVTZWdtZW50OjpjcmVhdGUjI1RZUEUoQmFzaWNTaGFwZVNlZ21lbnQ6OlR5cGUgdHlwZSwgdHlw
ZW5hbWUgU2hhcGVTZWdtZW50IyNUWVBFOjpWYWx1ZSYmIHZhbHVlKSBcCit7IFwKKyAgICByZXR1
cm4gQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxTaGFwZVNlZ21lbnQjI1RZUEU+OjpjcmVhdGUodHlw
ZSwgV1RGTW92ZSh2YWx1ZSkpOyBcCit9IFwKK2NvbnN0IHR5cGVuYW1lIFNoYXBlU2VnbWVudCMj
VFlQRTo6VmFsdWUmIEJhc2ljU2hhcGVTZWdtZW50OjphcyMjVFlQRSgpIGNvbnN0IFwKK3sgXAor
ICAgIHJldHVybiBleHRyYWN0VmFsdWU8U2hhcGVTZWdtZW50IyNUWVBFPigqdGhpcyk7IFwKK30K
KworRk9SX0VBQ0hfU0hBUEVfU0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoSU1QTEVNRU5UX1NIQVBF
X1NFR01FTlRfVkFMVUUpCisKK0N1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3Qg
Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29uc3QgQ3VydmVUb0N1YmljU2hhcGVT
ZWdWYWx1ZSYgdG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1
cm4geworICAgICAgICBibGVuZChmcm9tLnBvaW50MSwgdG8ucG9pbnQxLCBjb250ZXh0KSwKKyAg
ICAgICAgYmxlbmQoZnJvbS5wb2ludDIsIHRvLnBvaW50MiwgY29udGV4dCksCisgICAgICAgIGJs
ZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRhcmdldFBvaW50LCBjb250ZXh0KSwKKyAgICB9Owor
fQorCitDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1cnZlVG9D
dWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIGZyb20sIGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNo
YXBlU2VnVmFsdWUmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCit7CisgICAg
cmV0dXJuIHsKKyAgICAgICAgYmxlbmQoZnJvbS5wb2ludDIsIHRvLnBvaW50MiwgY29udGV4dCks
CisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRhcmdldFBvaW50LCBjb250ZXh0
KSwKKyAgICB9OworfQorCitDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSBibGVuZChjb25z
dCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29uc3QgQ3VydmVUb1F1YWRy
YXRpY1NoYXBlU2VnVmFsdWUmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCit7
CisgICAgcmV0dXJuIHsKKyAgICAgICAgYmxlbmQoZnJvbS5wb2ludDEsIHRvLnBvaW50MSwgY29u
dGV4dCksCisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRhcmdldFBvaW50LCBj
b250ZXh0KSwKKyAgICB9OworfQorCitBcmNUb1NoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQXJj
VG9TaGFwZVNlZ1ZhbHVlJiBmcm9tLCBjb25zdCBBcmNUb1NoYXBlU2VnVmFsdWUmIHRvLCBjb25z
dCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgYmxl
bmQoZnJvbS5yYWRpdXMsIHRvLnJhZGl1cywgY29udGV4dCksCisgICAgICAgIGJsZW5kKGZyb20u
YW5nbGUsIHRvLmFuZ2xlLCBjb250ZXh0KSwKKyAgICAgICAgY29udGV4dC5wcm9ncmVzcyA8IDAu
NWYgPyBmcm9tLnN3ZWVwIDogdG8uc3dlZXAsCisgICAgICAgIGNvbnRleHQucHJvZ3Jlc3MgPCAw
LjVmID8gZnJvbS5sYXJnZUFyYyA6IHRvLmxhcmdlQXJjLAorICAgICAgICBibGVuZChmcm9tLnRh
cmdldFBvaW50LCB0by50YXJnZXRQb2ludCwgY29udGV4dCkKKyAgICB9OworfQorCitSZWY8QmFz
aWNTaGFwZVNlZ21lbnQ+IEJhc2ljU2hhcGVTZWdtZW50OjpibGVuZChjb25zdCBCYXNpY1NoYXBl
U2VnbWVudCYgZnJvbSwgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KSBjb25zdAorewor
ICAgIGF1dG8gdHlwZSA9IHRoaXMtPnR5cGUoKTsKKyAgICBBU1NFUlQodHlwZSA9PSBmcm9tLnR5
cGUoKSk7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFBhdGhTZWdDbG9zZVBhdGg6
CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisK
KyNkZWZpbmUgQkxFTkRfU0VHTUVOVF9UWVBFKFR5cGUpIFwKKyAgICBjYXNlIFNoYXBlU2VnbWVu
dCMjVHlwZTo6QWJzU2VnVHlwZTogXAorICAgIGNhc2UgU2hhcGVTZWdtZW50IyNUeXBlOjpSZWxT
ZWdUeXBlOiBcCisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudFZhbHVlPFNoYXBlU2Vn
bWVudCMjVHlwZT46OmNyZWF0ZSh0eXBlLCBXZWJDb3JlOjpibGVuZChleHRyYWN0VmFsdWU8U2hh
cGVTZWdtZW50IyNUeXBlPihmcm9tKSwgZXh0cmFjdFZhbHVlPFNoYXBlU2VnbWVudCMjVHlwZT4o
KnRoaXMpLCBjb250ZXh0KSk7CisKKyAgICAgICAgRk9SX0VBQ0hfU0hBUEVfU0VHTUVOVF9UWVBF
X1dJVEhfVkFMVUUoQkxFTkRfU0VHTUVOVF9UWVBFKQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KK2NsYXNzIFNoYXBlU1ZHUGF0aFNvdXJjZSBm
aW5hbCA6IHB1YmxpYyBTVkdQYXRoU291cmNlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTaGFw
ZVNWR1BhdGhTb3VyY2UoY29uc3QgTGVuZ3RoUG9pbnQmIHN0YXJ0LCBjb25zdCBWZWN0b3I8UmVm
PEJhc2ljU2hhcGVTZWdtZW50Pj4mIHNlZ21lbnRzLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCisg
ICAgICAgIDogbV9zdGFydChzdGFydCkKKyAgICAgICAgLCBtX3NlZ21lbnRzKHNlZ21lbnRzKQor
ICAgICAgICAsIG1fc2l6ZShzaXplKQorICAgICAgICAsIG1faXRlbUVuZChzZWdtZW50cy5zaXpl
KCkpCisgICAgICAgIHsKKworICAgICAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBoYXNNb3Jl
RGF0YSgpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9pdGVtQ3VycmVudCA8
IG1faXRlbUVuZDsKKyAgICB9CisKKyAgICBib29sIG1vdmVUb05leHRUb2tlbigpIGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKworICAgIFNWR1BhdGhTZWdUeXBlIG5leHRDb21tYW5kKFNWR1BhdGhT
ZWdUeXBlKSBmaW5hbAorICAgIHsKKyAgICAgICAgYXV0byB0eXBlID0gbV9zZWdtZW50cy5hdCht
X2l0ZW1DdXJyZW50KS0+dHlwZSgpOworICAgICAgICArK21faXRlbUN1cnJlbnQ7CisgICAgICAg
IHJldHVybiB0eXBlOworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNlZ1R5cGU+
IHBhcnNlU1ZHU2VnbWVudFR5cGUoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFBhdGhT
ZWdNb3ZlVG9BYnM7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpN
b3ZlVG9TZWdtZW50PiBwYXJzZU1vdmVUb1NlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAg
aWYgKCFtX2l0ZW1DdXJyZW50KQorICAgICAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6Ok1v
dmVUb1NlZ21lbnQgeyBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQobV9zdGFydCwgbV9zaXplKSB9
OworCisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50IHsgZmxvYXRQ
b2ludEZvckxlbmd0aFBvaW50KHZhbHVlPFNoYXBlU2VnbWVudE1vdmVUbz4oKSwgbV9zaXplKSB9
OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvU2VnbWVu
dD4gcGFyc2VMaW5lVG9TZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdQ
YXRoU291cmNlOjpMaW5lVG9TZWdtZW50IHsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVl
PFNoYXBlU2VnbWVudExpbmVUbz4oKSwgbV9zaXplKSB9OworICAgIH0KKworICAgIHN0ZDo6b3B0
aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IHBhcnNlTGluZVRv
SG9yaXpvbnRhbFNlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhT
b3VyY2U6OkxpbmVUb0hvcml6b250YWxTZWdtZW50IHsgZmxvYXRWYWx1ZUZvckxlbmd0aCh2YWx1
ZTxTaGFwZVNlZ21lbnRMaW5lVG9Ib3Jpem9udGFsPigpLCBtX3NpemUud2lkdGgoKSkgfTsKKyAg
ICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb1ZlcnRpY2FsU2Vn
bWVudD4gcGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIFNWR1BhdGhTb3VyY2U6OkxpbmVUb1ZlcnRpY2FsU2VnbWVudCB7IGZsb2F0VmFsdWVG
b3JMZW5ndGgodmFsdWU8U2hhcGVTZWdtZW50TGluZVRvVmVydGljYWw+KCksIG1fc2l6ZS5oZWln
aHQoKSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZl
VG9DdWJpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCgpIGZpbmFsCisgICAgewor
ICAgICAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEN1cnZl
VG9DdWJpYz4oKTsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1Nl
Z21lbnQgeyAgICAgICAgCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFs
dWUucG9pbnQxLCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50
KHZhbHVlLnBvaW50MiwgbV9zaXplKSwKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQ
b2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXplKQorICAgICAgICB9OworICAgIH0KKyAgICBz
dGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IHBh
cnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICBjb25z
dCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEN1cnZlVG9DdWJpY1Ntb290
aD4oKTsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1Ntb290aFNl
Z21lbnQgeyAgICAgICAgCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFs
dWUucG9pbnQyLCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50
KHZhbHVlLnRhcmdldFBvaW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQorCisgICAgc3Rk
OjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gcGFyc2VD
dXJ2ZVRvUXVhZHJhdGljU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICBjb25zdCBhdXRv
JiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWM+KCk7Cisg
ICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCB7Cisg
ICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUucG9pbnQxLCBtX3NpemUp
LAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnRhcmdldFBvaW50
LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRo
U291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4gcGFyc2VDdXJ2ZVRvUXVhZHJh
dGljU21vb3RoU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gU1ZHUGF0aFNv
dXJjZTo6Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQgeyBmbG9hdFBvaW50Rm9yTGVuZ3Ro
UG9pbnQodmFsdWU8U2hhcGVTZWdtZW50Q3VydmVUb1F1YWRyYXRpY1Ntb290aD4oKSwgbV9zaXpl
KSB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdt
ZW50PiBwYXJzZUFyY1RvU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICBjb25zdCBhdXRv
JiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEFyY1RvPigpOworICAgICAgICBhdXRv
IHJhZGl1cyA9IGZsb2F0U2l6ZUZvckxlbmd0aFNpemUodmFsdWUucmFkaXVzLCBtX3NpemUpOwor
ICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50IHsKKyAgICAgICAgICAg
IC5yeCA9IHJhZGl1cy53aWR0aCgpLAorICAgICAgICAgICAgLnJ5ID0gcmFkaXVzLmhlaWdodCgp
LAorICAgICAgICAgICAgLmFuZ2xlID0gdmFsdWUuYW5nbGUsCisgICAgICAgICAgICAubGFyZ2VB
cmMgPSB2YWx1ZS5sYXJnZUFyYywKKyAgICAgICAgICAgIC5zd2VlcCA9IHZhbHVlLnN3ZWVwLAor
ICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnRhcmdldFBvaW50LCBt
X3NpemUpCisgICAgICAgIH07CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBjb25zdCB0eXBlbmFtZSBUOjpWYWx1ZSYgdmFsdWUoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1faXRlbUN1cnJlbnQgPD0gbV9zZWdtZW50cy5zaXplKCkpOworICAgICAgICByZXR1cm4gZXh0
cmFjdFZhbHVlPFQ+KG1fc2VnbWVudHMuYXQobV9pdGVtQ3VycmVudCAtIDEpLmdldCgpKTsKKyAg
ICB9CisKKyAgICBjb25zdCBMZW5ndGhQb2ludCYgbV9zdGFydDsKKyAgICBjb25zdCBWZWN0b3I8
UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIG1fc2VnbWVudHM7CisgICAgRmxvYXRTaXplIG1fc2l6
ZTsKKyAgICBzaXplX3QgbV9pdGVtRW5kOworICAgIHNpemVfdCBtX2l0ZW1DdXJyZW50ID0gMDsK
K307CisKK1BhdGggQmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aChjb25zdCBMZW5ndGhQb2ludCYg
c3RhcnQsIGNvbnN0IFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYgc2VnbWVudHMsIGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBTaGFwZVNWR1BhdGhTb3VyY2Ugc291cmNlKHN0
YXJ0LCBzZWdtZW50cywgc2l6ZSk7CisgICAgUGF0aCBwYXRoOworICAgIFNWR1BhdGhCdWlsZGVy
IGJ1aWxkZXIocGF0aCk7CisgICAgU1ZHUGF0aFBhcnNlcjo6cGFyc2Uoc291cmNlLCBidWlsZGVy
KTsKKyAgICByZXR1cm4gcGF0aDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWQxOGNlODUwNmNl
NjJkZDMyNjU3NTRkZTA3NDZhZDBiYzE5NDZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmgKQEAgLTAsMCArMSwxNDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1
ZGUgIkxlbmd0aFBvaW50LmgiCisjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgorI2luY2x1ZGUgIlNW
R1BhdGhTZWcuaCIKKyNpbmNsdWRlICJTVkdQYXRoU291cmNlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IEJsZW5kaW5nQ29udGV4dDsKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNz
IFBhdGg7CisKK3N0cnVjdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlIHsKKyAgICBMZW5ndGhQ
b2ludCBwb2ludDE7CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQyOworICAgIExlbmd0aFBvaW50IHRh
cmdldFBvaW50OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNl
Z1ZhbHVlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBwb2ludDEgPT0gb3Ro
ZXIucG9pbnQxICYmIHBvaW50MiA9PSBvdGhlci5wb2ludDIgJiYgdGFyZ2V0UG9pbnQgPT0gb3Ro
ZXIudGFyZ2V0UG9pbnQ7CisgICAgfQorfTsKKworc3RydWN0IEN1cnZlVG9DdWJpY1Ntb290aFNo
YXBlU2VnVmFsdWUgeworICAgIExlbmd0aFBvaW50IHBvaW50MjsKKyAgICBMZW5ndGhQb2ludCB0
YXJnZXRQb2ludDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VydmVUb0N1YmljU21vb3Ro
U2hhcGVTZWdWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gcG9pbnQy
ID09IG90aGVyLnBvaW50MiAmJiB0YXJnZXRQb2ludCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAg
ICB9Cit9OworCitzdHJ1Y3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUgeworICAgIExl
bmd0aFBvaW50IHBvaW50MTsKKyAgICBMZW5ndGhQb2ludCB0YXJnZXRQb2ludDsKKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gcG9pbnQxID09IG90aGVyLnBvaW50MSAmJiB0
YXJnZXRQb2ludCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9Cit9OworCisKK3N0cnVjdCBB
cmNUb1NoYXBlU2VnVmFsdWUgeworICAgIExlbmd0aFNpemUgcmFkaXVzOworICAgIGZsb2F0IGFu
Z2xlID0gMDsKKyAgICBib29sIHN3ZWVwID0gZmFsc2U7CisgICAgYm9vbCBsYXJnZUFyYyA9IGZh
bHNlOworICAgIExlbmd0aFBvaW50IHRhcmdldFBvaW50OworCisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gcmFkaXVzID09IG90aGVyLnJhZGl1cyAmJiBhbmdsZSA9PSBvdGhlci5hbmdsZSAmJiBz
d2VlcCA9PSBvdGhlci5zd2VlcCAmJiBsYXJnZUFyYyA9PSBvdGhlci5sYXJnZUFyYyAmJiB0YXJn
ZXRQb2ludCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9Cit9OworCisKK0N1cnZlVG9DdWJp
Y1NoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYsIGNv
bnN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKTsK
K0N1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb0N1Ymlj
U21vb3RoU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFs
dWUmLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKTsKK0N1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1Zh
bHVlIGJsZW5kKGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQ3Vy
dmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKTsKK0Fy
Y1RvU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBBcmNUb1NoYXBlU2VnVmFsdWUmLCBjb25zdCBB
cmNUb1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVmFsdWVUeXBlLCBTVkdQYXRoU2VnVHlwZSBBYnNUeXBlLCBTVkdQYXRoU2VnVHlw
ZSBSZWxUeXBlPgorc3RydWN0IFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uIHsKKyAgICB0eXBl
ZGVmIFZhbHVlVHlwZSBWYWx1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gQWJzU2VnVHlw
ZSA9IEFic1R5cGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIFJlbFNlZ1R5cGUgPSBSZWxU
eXBlOworfTsKKworc3RydWN0IFNoYXBlU2VnbWVudE1vdmVUbyA6IHB1YmxpYyBTaGFwZVNlZ21l
bnRUeXBlRGVmaW5pdGlvbjxMZW5ndGhQb2ludCwgUGF0aFNlZ01vdmVUb0FicywgUGF0aFNlZ01v
dmVUb1JlbD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudExpbmVUbyA6IHB1YmxpYyBTaGFwZVNl
Z21lbnRUeXBlRGVmaW5pdGlvbjxMZW5ndGhQb2ludCwgUGF0aFNlZ0xpbmVUb0FicywgUGF0aFNl
Z0xpbmVUb1JlbD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudExpbmVUb0hvcml6b250YWwgOiBw
dWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248TGVuZ3RoLCBQYXRoU2VnTGluZVRvSG9y
aXpvbnRhbEFicywgUGF0aFNlZ0xpbmVUb0hvcml6b250YWxSZWw+IHsgfTsKK3N0cnVjdCBTaGFw
ZVNlZ21lbnRMaW5lVG9WZXJ0aWNhbCA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlv
bjxMZW5ndGgsIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbEFicywgUGF0aFNlZ0xpbmVUb1ZlcnRpY2Fs
UmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50Q3VydmVUb0N1YmljIDogcHVibGljIFNoYXBl
U2VnbWVudFR5cGVEZWZpbml0aW9uPEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUsIFBhdGhTZWdD
dXJ2ZVRvQ3ViaWNBYnMsIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNSZWw+IHsgfTsKK3N0cnVjdCBTaGFw
ZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0
aW9uPEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlLCBQYXRoU2VnQ3VydmVUb1F1YWRyYXRp
Y0FicywgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNSZWw+IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21l
bnRDdXJ2ZVRvQ3ViaWNTbW9vdGggOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248
Q3VydmVUb0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSwgUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290
aEFicywgUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aFJlbD4geyB9Oworc3RydWN0IFNoYXBlU2Vn
bWVudEN1cnZlVG9RdWFkcmF0aWNTbW9vdGggOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmlu
aXRpb248TGVuZ3RoUG9pbnQsIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21vb3RoQWJzLCBQYXRo
U2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aFJlbD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudEFy
Y1RvIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPEFyY1RvU2hhcGVTZWdWYWx1
ZSwgUGF0aFNlZ0FyY0FicywgUGF0aFNlZ0FyY1JlbD4geyB9OworCisjZGVmaW5lIEZPUl9FQUNI
X1NIQVBFX1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKE1hY3JvKSBcCisgICAgTWFjcm8oTW92ZVRv
KSBcCisgICAgTWFjcm8oTGluZVRvKSBcCisgICAgTWFjcm8oTGluZVRvSG9yaXpvbnRhbCkgXAor
ICAgIE1hY3JvKExpbmVUb1ZlcnRpY2FsKSBcCisgICAgTWFjcm8oQ3VydmVUb0N1YmljKSBcCisg
ICAgTWFjcm8oQ3VydmVUb1F1YWRyYXRpYykgXAorICAgIE1hY3JvKEN1cnZlVG9DdWJpY1Ntb290
aCkgXAorICAgIE1hY3JvKEN1cnZlVG9RdWFkcmF0aWNTbW9vdGgpIFwKKyAgICBNYWNybyhBcmNU
bykKKworY2xhc3MgQmFzaWNTaGFwZVNlZ21lbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxCYXNpY1No
YXBlU2VnbWVudD4geworcHVibGljOgorICAgIHR5cGVkZWYgU1ZHUGF0aFNlZ1R5cGUgVHlwZTsK
KyAgICB+QmFzaWNTaGFwZVNlZ21lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIFJlZjxCYXNpY1NoYXBlU2VnbWVudD4gYmxl
bmQoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIGZyb20sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYp
IGNvbnN0OworICAgIGJvb2wgZXF1YWxzKGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JikgY29uc3Q7
CisKKyAgICBzdGF0aWMgUGF0aCB0b1BhdGgoY29uc3QgTGVuZ3RoUG9pbnQmIHN0YXJ0LCBjb25z
dCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mLCBjb25zdCBGbG9hdFNpemUmKTsKKwor
I2RlZmluZSBERUZJTkVfU0hBUEVfU0VHTUVOVF9UWVBFKFQpIFwKKyAgICBzdGF0aWMgUmVmPEJh
c2ljU2hhcGVTZWdtZW50PiBjcmVhdGUjI1QoVHlwZSwgdHlwZW5hbWUgU2hhcGVTZWdtZW50IyNU
OjpWYWx1ZSYmKTsgXAorICAgIGNvbnN0IHR5cGVuYW1lIFNoYXBlU2VnbWVudCMjVDo6VmFsdWUm
IGFzIyNUKCkgY29uc3Q7CisKKyAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9W
QUxVRShERUZJTkVfU0hBUEVfU0VHTUVOVF9UWVBFKQorCisgICAgc3RhdGljIFJlZjxCYXNpY1No
YXBlU2VnbWVudD4gY3JlYXRlQ2xvc2VQYXRoKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEJhc2ljU2hhcGVTZWdtZW50KFBhdGhTZWdDbG9zZVBhdGgpKTsKKyAgICB9CisK
K3Byb3RlY3RlZDoKKyAgICBCYXNpY1NoYXBlU2VnbWVudChUeXBlIHQpCisgICAgICAgIDogbV90
eXBlKHQpIHsgfQorCitwcml2YXRlOgorICAgIFR5cGUgbV90eXBlOworfTsKKworCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAppbmRleCAwODZh
NmY2YTYzYTI1ZTUwMjNhZTk1YmZhODRmNGZhN2Q0ZmZjMjYyLi42NzNmZWE2YzRkMjYzMDBhNjg3
ZjlkNWRhM2I4NjMzZTg1ZTAwMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9CYXNpY1NoYXBlcy5jcHAKQEAgLTEyMSw2ICsxMjEsNDQgQEAgc3RydWN0IFRyYW5zZm9y
bWVkQnl0ZVN0cmVhbVBhdGhQb2xpY3kgOiBUaW55TFJVQ2FjaGVQb2xpY3k8U1ZHUGF0aFRyYW5z
Zm9ybWVkQnkKICAgICBzdGF0aWMgUGF0aCBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBTVkdQYXRo
VHJhbnNmb3JtZWRCeXRlU3RyZWFtJiBzdHJlYW0pIHsgcmV0dXJuIHN0cmVhbS5wYXRoKCk7IH0K
IH07CiAKK3N0cnVjdCBTaGFwZVNlZ21lbnRzV2l0aEJveCB7CisgICAgTGVuZ3RoUG9pbnQgc3Rh
cnQ7CisgICAgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+IHNlZ21lbnRzOworICAgIEZs
b2F0UmVjdCBib3g7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcGVTZWdtZW50c1dp
dGhCb3gmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGJveCAhPSBvdGhlci5ib3gg
fHwgc2VnbWVudHMuc2l6ZSgpID09IG90aGVyLnNlZ21lbnRzLnNpemUoKSB8fCBzdGFydCAhPSBv
dGhlci5zdGFydCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNlZ21lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAo
IXNlZ21lbnRzLmF0KGkpLT5lcXVhbHMob3RoZXIuc2VnbWVudHMuYXQoaSkuZ2V0KCkpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFwZVNlZ21lbnRzV2l0
aEJveCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7CisgICAgfQorfTsKKworc3RydWN0IFNoYXBlU2VnbWVudHNQYXRoUG9saWN5IDogVGlueUxS
VUNhY2hlUG9saWN5PFNoYXBlU2VnbWVudHNXaXRoQm94LCBQYXRoPiB7CisgICAgc3RhdGljIGJv
b2wgaXNLZXlOdWxsKGNvbnN0IFNoYXBlU2VnbWVudHNXaXRoQm94JiBzZWdtZW50c1dpdGhCb3gp
CisgICAgeworICAgICAgICByZXR1cm4gc2VnbWVudHNXaXRoQm94LnNlZ21lbnRzLmlzRW1wdHko
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGF0aCBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBTaGFw
ZVNlZ21lbnRzV2l0aEJveCYgc2VnbWVudHNXaXRoQm94KQorICAgIHsKKyAgICAgICAgYXV0byBw
YXRoID0gQmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aChzZWdtZW50c1dpdGhCb3guc3RhcnQsIHNl
Z21lbnRzV2l0aEJveC5zZWdtZW50cywgc2VnbWVudHNXaXRoQm94LmJveC5zaXplKCkpOworICAg
ICAgICBwYXRoLnRyYW5zbGF0ZSh0b0Zsb2F0U2l6ZShzZWdtZW50c1dpdGhCb3guYm94LmxvY2F0
aW9uKCkpKTsKKyAgICAgICAgcmV0dXJuIHBhdGg7CisgICAgfQorfTsKKwogc3RhdGljIGNvbnN0
IFBhdGgmIGNhY2hlZEVsbGlwc2VQYXRoKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPEZsb2F0UmVjdCwgUGF0aCwgNCwgRWxs
aXBzZVBhdGhQb2xpY3k+PiBjYWNoZTsKQEAgLTE0NSw2ICsxODMsMTIgQEAgc3RhdGljIGNvbnN0
IFBhdGgmIGNhY2hlZFRyYW5zZm9ybWVkQnl0ZVN0cmVhbVBhdGgoY29uc3QgU1ZHUGF0aEJ5dGVT
dHJlYW0mIHN0cmUKICAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KFNWR1BhdGhUcmFuc2Zvcm1l
ZEJ5dGVTdHJlYW0geyBzdHJlYW0sIHpvb20sIG9mZnNldCB9KTsKIH0KIAorc3RhdGljIGNvbnN0
IFBhdGgmIGNhY2hlZFNoYXBlU2VnbWVudHNQYXRoKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBj
b25zdCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIHNlZ21lbnRzLCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlMUlVDYWNoZTxT
aGFwZVNlZ21lbnRzV2l0aEJveCwgUGF0aCwgNCwgU2hhcGVTZWdtZW50c1BhdGhQb2xpY3k+PiBj
YWNoZTsKKyAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KFNoYXBlU2VnbWVudHNXaXRoQm94IHsg
ZnJvbSwgc2VnbWVudHMsIHJlY3QgfSk7Cit9CisKIGJvb2wgQmFzaWNTaGFwZUNpcmNsZTo6b3Bl
cmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAodHlwZSgp
ICE9IG90aGVyLnR5cGUoKSkKQEAgLTQ2Myw2ICs1MDcsNzggQEAgdm9pZCBCYXNpY1NoYXBlSW5z
ZXQ6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgdHMuZHVtcFByb3BlcnR5KCJib3R0
b20tbGVmdC1yYWRpdXMiLCBib3R0b21MZWZ0UmFkaXVzKCkpOwogfQogCisKK0Jhc2ljU2hhcGVT
aGFwZTo6QmFzaWNTaGFwZVNoYXBlKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBWZWN0b3I8UmVm
PEJhc2ljU2hhcGVTZWdtZW50Pj4mJiBzZWdtZW50cykKKyAgICA6IG1fc2VnbWVudHMobWFrZVVu
aXF1ZTxWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4+KFdURk1vdmUoc2VnbWVudHMpKSkK
KyAgICAsIG1fZnJvbShmcm9tKQoreworfQorCitjb25zdCBQYXRoJiBCYXNpY1NoYXBlU2hhcGU6
OnBhdGgoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkKK3sKKyAgICByZXR1cm4gY2FjaGVk
U2hhcGVTZWdtZW50c1BhdGgobV9mcm9tLCAqbV9zZWdtZW50cywgYm91bmRpbmdCb3gpOworfQor
Citib29sIEJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJiBvdGhl
cikgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgY29uc3QgQmFzaWNTaGFwZVNoYXBlJiBvdGhlclNoYXBlID0gZG93
bmNhc3Q8QmFzaWNTaGFwZVNoYXBlPihvdGhlcik7CisgICAgYXV0byBzaXplID0gdGhpcy0+c2l6
ZSgpOworICAgIGlmICh3aW5kUnVsZSgpICE9IG90aGVyU2hhcGUud2luZFJ1bGUoKSB8fCBzaXpl
ID09IG90aGVyU2hhcGUuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoIWF0KGkpLmVxdWFs
cyhvdGhlclNoYXBlLmF0KGkpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kKGNv
bnN0IEJhc2ljU2hhcGUmIG90aGVyKSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gb3RoZXIu
dHlwZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHNpemUgPSB0aGlzLT5z
aXplKCk7CisgICAgYXV0byYgb3RoZXJTaGFwZSA9IGRvd25jYXN0PEJhc2ljU2hhcGVTaGFwZT4o
b3RoZXIpOworICAgIGlmICh3aW5kUnVsZSgpICE9IG90aGVyU2hhcGUud2luZFJ1bGUoKSB8fCBz
aXplICE9IG90aGVyU2hhcGUuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoYXQoaSkudHlw
ZSgpICE9IG90aGVyU2hhcGUuYXQoaSkudHlwZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitSZWY8QmFzaWNTaGFwZT4gQmFzaWNT
aGFwZVNoYXBlOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBmcm9tLCBjb25zdCBCbGVuZGluZ0Nv
bnRleHQmIGNvbnRleHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBmcm9tLnR5cGUo
KSk7CisgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOworICAgIGF1dG8mIGZyb21TaGFwZSA9
IGRvd25jYXN0PEJhc2ljU2hhcGVTaGFwZT4oZnJvbSk7CisgICAgQVNTRVJUKHNpemUgPT0gZnJv
bVNoYXBlLnNpemUoKSk7CisKKyAgICBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4gcmVz
dWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoYXQo
aSkuYmxlbmQoZnJvbVNoYXBlLmF0KGkpLCBjb250ZXh0KSk7CisKKyAgICBhdXRvIG5ld1NoYXBl
ID0gQmFzaWNTaGFwZVNoYXBlOjpjcmVhdGUoV2ViQ29yZTo6YmxlbmQoZnJvbVNoYXBlLmZyb20o
KSwgbV9mcm9tLCBjb250ZXh0KSwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICBuZXdTaGFwZS0+c2V0
V2luZFJ1bGUod2luZFJ1bGUoKSk7CisgICAgcmV0dXJuIG5ld1NoYXBlOworfQorCit2b2lkIEJh
c2ljU2hhcGVTaGFwZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKK3sKKyAgICB0cy5kdW1w
UHJvcGVydHkoIndpbmQtcnVsZSIsIHdpbmRSdWxlKCkpOworICAgIC8vIEZJWE1FOiBwcmludCB0
aGUgYnl0ZSBzdHJlYW0/Cit9CisKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBCYXNpY1NoYXBlUmFkaXVzOjpUeXBlIHJhZGl1c1R5cGUpCiB7CiAgICAgc3dp
dGNoIChyYWRpdXNUeXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5oCmluZGV4IDliZjAzNzM0NzZiNTNlNWM3YTRhOWJjNjIzOWU0NWVjNGFkNTM0ZTQu
LjMxZThmM2RmNWRjYjE2MmU4MjUzNzM0ZDRiNWNjZWI5MGNlYzkxOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCkBAIC0zMCw2ICszMCw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIkxlbmd0aFBvaW50
LmgiCiAjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgogI2luY2x1ZGUgIldpbmRSdWxlLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ3LDYgKzQ4LDcgQEAgc3RydWN0IEJsZW5kaW5n
Q29udGV4dDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIFBhdGg7CiBjbGFzcyBSZW5kZXJCb3g7
CitjbGFzcyBCYXNpY1NoYXBlU2VnbWVudDsKIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFtOwogCiBj
bGFzcyBCYXNpY1NoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8QmFzaWNTaGFwZT4gewpAQCAtNTgs
NyArNjAsOCBAQCBwdWJsaWM6CiAgICAgICAgIFBhdGgsCiAgICAgICAgIENpcmNsZSwKICAgICAg
ICAgRWxsaXBzZSwKLSAgICAgICAgSW5zZXQKKyAgICAgICAgSW5zZXQsCisgICAgICAgIFNoYXBl
CiAgICAgfTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwpAQCAtMzQzLDYg
KzM0Niw0MSBAQCBwcml2YXRlOgogICAgIExlbmd0aFNpemUgbV9ib3R0b21MZWZ0UmFkaXVzOwog
fTsKIAorY2xhc3MgQmFzaWNTaGFwZVNoYXBlIDogcHVibGljIEJhc2ljU2hhcGUgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8QmFzaWNTaGFwZVNoYXBlPiBjcmVhdGUoY29uc3QgTGVuZ3RoUG9p
bnQmIGZyb20sIFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYmIHNlZ21lbnRzKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNTaGFwZVNoYXBlKGZyb20sIFdU
Rk1vdmUoc2VnbWVudHMpKSk7CisgICAgfQorCisgICAgdm9pZCBzZXRXaW5kUnVsZShXaW5kUnVs
ZSB3aW5kUnVsZSkgeyBtX3dpbmRSdWxlID0gd2luZFJ1bGU7IH0KKyAgICBXaW5kUnVsZSB3aW5k
UnVsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0KKworICAgIGNvbnN0
IExlbmd0aFBvaW50JiBmcm9tKCkgY29uc3QgeyByZXR1cm4gbV9mcm9tOyB9CisKKyAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMtPnNpemUoKTsgfQorICAgIGNvbnN0
IEJhc2ljU2hhcGVTZWdtZW50JiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50
cy0+YXQoaSkuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBCYXNpY1NoYXBlU2hhcGUoY29uc3Qg
TGVuZ3RoUG9pbnQmLCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mJik7CisKKyAgICBU
eXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBUeXBlOjpTaGFwZTsgfQorCisKKyAg
ICBjb25zdCBQYXRoJiBwYXRoKGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworCisgICAgYm9v
bCBjYW5CbGVuZChjb25zdCBCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEJh
c2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIGZyb20sIGNvbnN0IEJsZW5kaW5nQ29u
dGV4dCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJhc2lj
U2hhcGUmKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJikgY29u
c3QgZmluYWw7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlZjxCYXNpY1NoYXBlU2Vn
bWVudD4+PiBtX3NlZ21lbnRzOworICAgIFdpbmRSdWxlIG1fd2luZFJ1bGUgeyBXaW5kUnVsZTo6
Tm9uWmVybyB9OworICAgIExlbmd0aFBvaW50IG1fZnJvbTsKK307CisKIFdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBCYXNpY1NoYXBlUmFkaXVzJik7
CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQmFz
aWNTaGFwZUNlbnRlckNvb3JkaW5hdGUmKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBjb25zdCBCYXNpY1NoYXBlJik7CkBAIC0zNTksMyArMzk3LDQgQEAg
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQRShCYXNpY1NoYXBlRWxsaXBzZSwgQmFz
aWNTaGFwZTo6VHlwZTo6RWxsaXBzZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkFTSUNfU0hB
UEUoQmFzaWNTaGFwZVBvbHlnb24sIEJhc2ljU2hhcGU6OlR5cGU6OlBvbHlnb24pCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVQYXRoLCBCYXNpY1NoYXBlOjpU
eXBlOjpQYXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQRShCYXNpY1NoYXBl
SW5zZXQsIEJhc2ljU2hhcGU6OlR5cGU6Okluc2V0KQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
QVNJQ19TSEFQRShCYXNpY1NoYXBlU2hhcGUsIEJhc2ljU2hhcGU6OlR5cGU6OlNoYXBlKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGQzNDUzNDhmOWQ5ZmMyMTIzZDE5NWNhM2E5YzkyYjM1MTRlMzI4NGUuLjRmNjYxMDMwZDJk
NDFhYWYxYWI5NGI5M2MxNDIxY2MzZjI3MmQxNDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAy
Mi0wNC0xOSAgTm9hbSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NT
UyBTaGFwZXNdIEFkZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzkwOTE5NDc2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdEV4cGVjdGF0aW9uczogdW5za2lwIENTUyBzaGFwZSgpIHRlc3RzCisKIDIwMjIt
MDQtMTggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2ViR1BVXSBVbnNraXAgYXBpL3ZhbGlkYXRpb24vY3JlYXRlU2FtcGxlci5odG1sIPCfjokK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDY0ZWE2NTdlNmUwNDJhYzNkMTAxOGM4
ZGQ4ZDhmYzAyMjVmZWJhMDcuLmFkZjY0NWUyMzkyZDVhOTc5N2YyZjdjNjRmOWRiMGYzMjRmMDc2
YzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIy
LTA0LTE5ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbQ1NT
IFNoYXBlc10gQWRkIHN1cHBvcnQgZm9yIHNoYXBlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODM3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
OTA5MTk0NzY+CisKKyAgICAgICAgQW1lbmRlZCB0ZXN0cyB0byBzdXBwb3J0IENTUyBzaGFwZSgp
CisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0
aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy5o
dG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1w
YXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgICAgICAgICBO
ZWVkZWQgdG8gY2hhbmdlIHRoZSB0ZXN0IGEgYml0IGJlY2F1c2Ugb2Ygc3RyYXkgcGl4ZWxzLiBX
aWxsIHVwc3RyZWFtLgorCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1t
YXNraW5nL3BhcnNpbmcvY2xpcC1wYXRoLXNoYXBlLXBhcnNpbmctZXhwZWN0ZWQudHh0OgorICAg
ICAgICAgICAgICAgIE5vdyBwYXNzZXMKKwogMjAyMi0wNC0xOCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBDU1NUcmFuc2Zv
cm1WYWx1ZS5pczJECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhZTc2MjZiM2JmMzlhN2FiODY2YmY0
YzQyOGY2YTM4Y2IxODYxOWE0Li5iZjA5MmRkNTJkM2FiMWUwNTQ5OGZhYjBjNmU5ZGU4ZWMzOWQ4
NGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIxOTksMTUgKzIxOTksNiBAQCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRo
LXZpZXdCb3gtMWMuaAogd2Via2l0Lm9yZy9iLzEwNDQ0MiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXVybC1yZWZlcmVu
Y2UtY2hhbmdlLWZyb20tZW1wdHkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzIyOTUxMCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2lu
Zy9jbGlwLXBhdGgvY2xpcC1wYXRoLWRlc2NlbmRhbnQtdGV4dC1tdXRhdGVkLTAwMS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgQ1NTIHNoYXBlKCkKLXdlYmtpdC5vcmcvYi8yMzgzNzEg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRo
L2NsaXAtcGF0aC1zaGFwZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2lu
Zy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMi11bml0cy5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0w
MDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1w
YXRoLXNoYXBlLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM4
MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAt
cGF0aC9jbGlwLXBhdGgtc2hhcGUtaW50ZXJwb2xhdGlvbi0wMDEuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLWludGVycG9sYXRp
b24tMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIyOTM3MCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwL2NsaXAt
ZmlsdGVyLW9yZGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMjkz
NzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvbWFzay1p
bWFnZS9tYXNrLWltYWdlLXVybC1sb2NhbC1tYXNrLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8yMjkzNzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW1hc2tpbmcvbWFzay1pbWFnZS9tYXNrLWltYWdlLXVybC1yZW1vdGUtbWFzay5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNo
YXBlLTAwMy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMt
ZXhwZWN0ZWQuaHRtbAppbmRleCA0NmUwOThjNGViNjQ4OWZjNDQzMDFkNmJmOWIyNDNlODM2YjJj
YTMxLi4zMWU5N2M5MTQ3NDQ4YWE4NDkyNjQyZTQxOTZhYTkxYjVjYTZhNDg4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFz
a2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy1leHBlY3RlZC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5n
L2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWwKQEAgLTksMTQgKzks
MjMgQEAKICAgICB3aWR0aDogMTAwcHg7CiAgICAgaGVpZ2h0OiAxMDBweDsKICAgfQotICAjcmVm
IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKworICAjcmVmLCAjYWN0dWFsIHsKICAg
ICBjbGlwLXBhdGg6IHBhdGgobm9uemVybywgIk0gMTAgMTAsIFEgNDAgMCA2MCAyMCwgVCA5MCAw
LCBjIDEwIDQwIDIwIDIwIC0yMCA2MCwgcyAtMTAgNzAgLTQwIC0xMCIpOwogICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKICAgfQorCisgICNyZWYgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsK
KyAgfQorCisgICNhY3R1YWwgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICB9CiA8
L3N0eWxlPgogPGJvZHk+CiAgIDxwPllvdSBzaG91bGQgc2VlIG5vIHJlZC48L3A+CiAgIDxkaXYg
aWQ9InJlZiI+PC9kaXY+CisgIDxkaXYgaWQ9ImFjdHVhbCI+PC9kaXY+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tp
bmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbAppbmRleCAyMmU3ZDlhYWY1Mzc0
YzliN2U0ZTNjMmQ1MGVjZWZiY2VjMTM0YjY2Li5lMDE3MDkwMDVhYzhjZjhlMzVkMDYyYTY4NTdi
NjQ2MjdiNWViZTA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAw
My5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLmh0bWwKQEAgLTYs
NiArNiw3IEBACiAgIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InJlZmVyZW5jZS9jbGlwLXBhdGgt
c2hhcGUtMDAzLXJlZi5odG1sIj4KICAgPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUaGUg
Y2xpcC1wYXRoIHByb3BlcnR5IHRha2VzIHRoZSBiYXNpYyBzaGFwZQogCSdzaGFwZSgpJyBmb3Ig
Y2xpcHBpbmcuIFRlc3QgY3VydmVzLiI+CisgIDxtZXRhIG5hbWU9ImZ1enp5IiBjb250ZW50PSJt
YXhEaWZmZXJlbmNlPTgwOyB0b3RhbFBpeGVscz0zOTQiPgogPC9oZWFkPgogPHN0eWxlPgogICBk
aXYgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4cGVjdGVkLmh0bWwK
aW5kZXggZWM4Zjk0MTA3OTUxMzhmN2EzNDkwZDdhNDE2OWI1ZWJkNWUzNzQ3NC4uMTBmNDU3Yjkx
MTg0ZjEwMTMwNjg5YTI3MzA1ZmMyZGQzNjZlMjgzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRo
L2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xp
cC1wYXRoLXNoYXBlLTAwNC1leHBlY3RlZC5odG1sCkBAIC05LDE0ICs5LDIzIEBACiAgICAgd2lk
dGg6IDEwMHB4OwogICAgIGhlaWdodDogMTAwcHg7CiAgIH0KLSAgI3JlZiB7Ci0gICAgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47CisKKyAgI3JlZiwgI2FjdHVhbCB7CiAgICAgY2xpcC1wYXRoOiBw
YXRoKG5vbnplcm8sICJNIDIwIDIwIEEgMjUgMTIgMCAwIDEgODAgMjAsIGEgMzMgMzMgMTIwIDEg
MSAtNDAgNTAsIEEgMjAgMjUgMCAwIDAgMjAgMjAiKTsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CiAgIH0KKworICAjcmVmIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgIH0KKworICAj
YWN0dWFsIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgfQogPC9zdHlsZT4KIDxi
b2R5PgogICA8cD5Zb3Ugc2hvdWxkIHNlZSBubyByZWQuPC9wPgogICA8ZGl2IGlkPSJyZWYiPjwv
ZGl2PgorICA8ZGl2IGlkPSJhY3R1YWwiPjwvZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2luZy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2lu
Zy9wYXJzaW5nL2NsaXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAppbmRleCBlOTRh
ZWU4YjZiNGNiMDRmN2FmZTgyYWQ2NWIzYzE0OGJjNDExMjVmLi5lMDU4MGVkZmMxZDhlZjMyNzc1
YjVkOTZmMzg3ZWU1ZTdhNDdhMzBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2NsaXAtcGF0aC1z
aGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2NsaXAtcGF0aC1zaGFw
ZS1wYXJzaW5nLWV4cGVjdGVkLnR4dApAQCAtMSwyNCArMSwyNCBAQAogCi1GQUlMIGUuc3R5bGVb
J2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMHB4IDBweCwgbGluZSB0byAxMHB4IDEwcHgpIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkg
c2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlw
LXBhdGgnXSA9ICJzaGFwZShldmVub2RkIGZyb20gMHB4IDBweCwgbGluZSB0byAxMHB4IDEwcHgp
IiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVy
dHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydj
bGlwLXBhdGgnXSA9ICJzaGFwZShub256ZXJvIGZyb20gMHB4IDBweCwgbGluZSB0byAxMHB4IDEw
cHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJv
cGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxl
WydjbGlwLXBhdGgnXSA9ICJzaGFwZSggIGZyb20gMHB4ICAgIDBweCwgbGluZSAgdG8gMTBweCAg
MTBweCAgICAgKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVh
bHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwg
ZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxZW0gNTAlLCBsaW5lIHRvIDEwcHgg
MTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBw
cm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5
bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKEV2ZW5PZGQgZnJvbSAwcHggMFB4LCBDTE9TRSkiIHNo
b3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBz
aG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAt
cGF0aCddID0gInNoYXBlKGZyb20gMWNoIDUwcHgsIGxpbmUgdG8gMTByZW0gMTB2aCkiIHNob3Vs
ZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91
bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0
aCddID0gInNoYXBlKGZyb20gMWNoIC01MHB4LCBsaW5lIHRvIC0xMCUgMTJweCkiIHNob3VsZCBz
ZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQg
YmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCdd
ID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBtb3ZlIGJ5IDEwcHggNXB4LCBsaW5lIGJ5IDIwcHgg
NDAlLCBjbG9zZSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1
YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlM
IGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBobGluZSBieSAx
MHB4LCB2bGluZSB0byA1cmVtKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0
X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUg
IiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIHZs
aW5lIGJ5IDUlLCBobGluZSB0byAxdncpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBh
c3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2
YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBw
eCwgY3VydmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNob3VsZCBzZXQgdGhlIHByb3Bl
cnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBk
aXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZy
b20gMTBweCAxMHB4LCBjdXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEwcmVtIDFweCAyMHZoIDFjaCki
IHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0
eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2Ns
aXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2ZSBieSA1MHB4IDIwcHggdmlh
IDEwcmVtIDFweCAyMHZoIDFjaCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2Vy
dF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVl
ICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBz
bW9vdGggdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5
IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNh
bGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20g
MTBweCAxMHB4LCBzbW9vdGggdG8gNTBweCAxcHQpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxs
b3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEw
cHggMTBweCwgYXJjIHRvIDUwcHggMXB0IG9mIDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHBy
b3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdv
dCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBl
KGZyb20gMTBweCAxMHB4LCBhcmMgdG8gNTBweCAxcHQgb2YgMTBweCAxMHB4IHNtYWxsIHJvdGF0
ZSAwZGVnKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6
IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5z
dHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMCUgMXJlbSwgYXJjIHRvIDUwcHggMXB0
IG9mIDIwJSBjdyBsYXJnZSByb3RhdGUgMjVkZWcpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxs
b3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShldmVub2Rk
IGZyb20gMHB4IDBweCwgY2xvc2UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3Nl
cnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1
ZSAiIgorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDBweCAwcHgsIGxp
bmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5z
dHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGxpbmUgdG8g
MTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Y2xpcC1wYXRoJ10gPSAic2hhcGUobm9uemVybyBmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAx
MHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1w
YXRoJ10gPSAic2hhcGUoICBmcm9tIDBweCAgICAwcHgsIGxpbmUgIHRvIDEwcHggIDEwcHggICAg
ICkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0
aCddID0gInNoYXBlKGZyb20gMWVtIDUwJSwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0
IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShF
dmVuT2RkIGZyb20gMHB4IDBQeCwgQ0xPU0UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1
ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFjaCA1MHB4LCBsaW5l
IHRvIDEwcmVtIDEwdmgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0
eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFjaCAtNTBweCwgbGluZSB0byAtMTAlIDEy
cHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBh
dGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgbW92ZSBieSAxMHB4IDVweCwgbGluZSBieSAy
MHB4IDQwJSwgY2xvc2UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0
eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgaGxpbmUgYnkgMTBweCwg
dmxpbmUgdG8gNXJlbSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5
bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCB2bGluZSBieSA1JSwgaGxp
bmUgdG8gMXZ3KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Y2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUwcHggMjBweCB2
aWEgMTByZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxl
WydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUgdG8gNTBweCAyMHB4
IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQor
UEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUg
YnkgNTBweCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQgc2V0IHRoZSBwcm9w
ZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHgg
MTBweCwgc21vb3RoIHRvIDUwcHggMjBweCB2aWEgMTByZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEw
cHggMTBweCwgc21vb3RoIHRvIDUwcHggMXB0KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFs
dWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGFy
YyB0byA1MHB4IDFwdCBvZiAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1
ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgYXJj
IHRvIDUwcHggMXB0IG9mIDEwcHggMTBweCBzbWFsbCByb3RhdGUgMGRlZykiIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZy
b20gMTAlIDFyZW0sIGFyYyB0byA1MHB4IDFwdCBvZiAyMCUgY3cgbGFyZ2Ugcm90YXRlIDI1ZGVn
KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRo
J10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGNsb3NlKSIgc2hvdWxkIHNldCB0aGUg
cHJvcGVydHkgdmFsdWUKIFBBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9k
ZCBmcm9tIDBweCAwcHgsIGNsb3NlIHBhdGgpIiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkg
dmFsdWUKIFBBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUobm9uemVybywgZnJvbSAw
cHggMHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBub3Qgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZQogUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwg
Y3VydmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSkiIHNob3VsZCBub3Qgc2V0IHRoZSBwcm9wZXJ0
eSB2YWx1ZQo=
</data>
<flag name="commit-queue"
          id="486576"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457866</attachid>
            <date>2022-04-19 00:44:05 -0700</date>
            <delta_ts>2022-04-19 01:13:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238371-20220419104402.patch</filename>
            <type>text/plain</type>
            <size>96806</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0MDhiYzRlZDIxNmNh
YWM1ZWVlZTUyMDkyNWQ3NzYzOGU0M2QwZC4uYzhmMjI3MTg0NDc0MGQ5Njc0Mjg0YzY3ODkyNGUx
ZjgwODQyODU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0xOSAgTm9h
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFk
ZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBDU1Mgc2hhcGUoKSBieSBpbnRyb2R1Y2luZyBzaGFwZSBzZWdtZW50IGFuZCBCYXNpY1NoYXBl
U2hhcGUuCisgICAgICAgIFNoYXBlU2hhcGUgaXMgYSB2ZWN0b3Igb2Ygc2hhcGUgc2VnbWVudHMs
IHdoZXJlIGVhY2ggc2VnbWVudCBibGVuZHMgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgVGhlIHNo
YXBlIHVsdGltYXRlbHkgY3JlYXRlcyBhbiBTVkdQYXRoU291cmNlIHRvIGNvbnZlcnQgdGhlIHJl
c3BvbnNpdmUgc2hhcGUsIHdoaWNoCisgICAgICAgIGlzIGJhc2VkIG9uIExlbmd0aCB2YWx1ZXMs
IHRvIGFuIGFic29sdXRlIFBhdGggb2JqZWN0IHRoYXQgY2FuIGJlIGRyYXduLgorCisgICAgICAg
IFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXNoYXBlcy0yLyNzaGFwZS1mdW5jdGlv
bgorCisgICAgICAgIFVuc2tpcHBlZCBzZXZlcmFsIHJlbGV2YW50IFdQVHMuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgICAgICBOZXcgZmlsZXMg
YWRkZWQKKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZhbHVlRm9yQmFzaWNTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9MZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpiYXNpY1NoYXBlRm9yVmFsdWUpOgor
ICAgICAgICAgICAgICAgIEFkZGVkIHRoZSBCYXNpY1NoYXBlU2hhcGUgdHlwZQorCisgICAgICAg
ICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Q1NTQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2lj
U2hhcGVTaGFwZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6
CisgICAgICAgICAgICAgICAgQWRkZWQgdGhlIENTU0Jhc2ljU2hhcGVTaGFwZQorCisgICAgICAg
ICogY3NzL0NTU1NoYXBlU2VnbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
aGFwZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NT
U2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudDo6Q1NTU2hh
cGVTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OnRhcmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6YXJndW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OmFmZmluaXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjphcHBlbmRBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpDU1NTaGFwZVNlZ21l
bnRWYWx1ZSk6CisgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB0byBkbyB3aXRoIHRoZSBzZWdt
ZW50IG9mIHRoZSBzaGFwZSB3aGlsZSBpbiBDU1Mgc3BhY2UsCisgICAgICAgICAgICAgICAgaW5j
bHVkaW5nIHNlcmlhbGl6YXRpb24gZm9yIGdldENvbXB1dGVkU3R5bGUoKQorCisgICAgICAgICog
Y3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzU2hhcGVTZWdtZW50VmFsdWUgY29uc3Qp
OgorICAgICAgICAgICAgICAgIENTU1NoYXBlU2VnbWVudCBpcyBhIHR5cGUgb2YgdmFsdWUKKwor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAgICAgICAgIE5ldyBr
ZXl3b3JkcyBmb3Igc2hhcGUoKQorCisgICAgICAgICogY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9u
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFBvaW50VG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0FyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6dG9DU1NB
cmdzPExlbmd0aFBvaW50Pik6CisgICAgICAgIChXZWJDb3JlOjp0b0NTU1NoYXBlU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpzZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpmcm9t
Q1NTU2hhcGVTZWdtZW50KToKKyAgICAgICAgKiBjc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmg6
IEFkZGVkLgorICAgICAgICAgICAgICAgIENvbnZlcnRpbmcgc2hhcGUgc2VnbWVudHMgdG8vZnJv
bSBDU1Mgc3BhY2UKKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNoYXBlU2VnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVC
YXNpY1NoYXBlKToKKyAgICAgICAgICAgICAgICBQYXJzZSBhIHNoYXBlIHByb3BlcnR5CisKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OnZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzaWNTaGFwZVNlZ21lbnQ6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6YmxlbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFyY1RvU2hhcGVTZWdWYWx1
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVu
dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6Y3Jl
YXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50OjpCYXNp
Y1NoYXBlU2VnbWVudCk6CisgICAgICAgICAgICAgICAgQmxlbmRpbmcsIGNvbXBhcmluZyBhbmQg
Y29udmVydGluZyB0byBhYnNvbHV0ZSBwYXRoCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhCb3g6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhC
b3g6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1Bh
dGhQb2xpY3k6OmlzS2V5TnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVNlZ21lbnRzUGF0
aFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU2hh
cGVTZWdtZW50c1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpCYXNp
Y1NoYXBlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpwYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6YmxlbmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZVNoYXBlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2V0V2luZFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpmcm9tIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlU2hhcGU6OmF0IGNvbnN0KToKKyAgICAgICAgICAgICAgICBBZGQgQmFz
aWNTaGFwZVNoYXBlCisKIDIwMjItMDQtMTggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgUGxhdGZvcm1NZWRpYUVuZ2luZUNsYXNzTmFt
ZSBtYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODBiYmVhOGU3MjM0ZjA1NWVmZDZlMzQwMDc1
MGIzN2YzMzE3OGNhZS4uZWJlYzFlMGIwZDhjODhjMzk0NDRkZDg4NGI4MDNlNDk3MmU3MDY0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC01NTQsNiArNTU0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9DU1NSdWxlTGlzdC5oCiAgICAgY3NzL0NTU1Nl
bGVjdG9yLmgKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKyAgICBjc3MvQ1NTU2hhcGVTZWdt
ZW50LmgKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCiAgICAgY3NzL0NTU1N0eWxlUnVs
ZS5oCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMTg4Nyw2ICsxODg4LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hh
cGUuaAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCiAKKyAgICByZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaAogICAgIHJlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5oCiAgICAgcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAogICAgIHJlbmRlcmlu
Zy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBhZjNkMDZhNWIwYmJjNjhm
YzAxMTMzYmNjZmUxZjJjZDk3MGU4OWUuLjM0ZDMyYTg4MTYyNTdkNDVkZGFkOTgyYTk3YzdjMTRi
NzFkMDM4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC03NzEsNiArNzcxLDcgQEAgY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmNwcAogY3NzL0NTU1NlbGVjdG9yLmNwcAogY3NzL0NTU1NlbGVjdG9yTGlz
dC5jcHAKIGNzcy9DU1NTaGFkb3dWYWx1ZS5jcHAKK2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCiBj
c3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKIGNzcy9DU1NTdHlsZVJ1bGUuY3BwCiBjc3MvQ1NT
U3R5bGVTaGVldC5jcHAKQEAgLTI0NDksNiArMjQ1MCw3IEBAIHJlbmRlcmluZy9zaGFwZXMvUmVj
dGFuZ2xlU2hhcGUuY3BwCiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogcmVuZGVyaW5nL3No
YXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNw
cAorcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmNwcAogcmVuZGVyaW5nL3N0eWxl
L0JvcmRlckRhdGEuY3BwCiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCiByZW5kZXJp
bmcvc3R5bGUvRmlsbExheWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2MTc2MzlkZjcyMDZmYzQ4NDU3MDQ4ZWU0NGJh
ODk0M2M1MmM3YTIuLmY1NDE5MDgyMzdkNjE1NGJlNDIwZWQ2N2M5MDg1ZTY0NTlkMDQ1NGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ0NTIsNiArNDQ1MiwxMCBAQAogCQlDQTNCRjY3RTEwRDk5QkFFMDBFNkNFNTMgLyogU2Ny
b2xsQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNBNkMxNTMwMjIwQjk4
Q0MwMDU1Q0JGQyAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFBRTNCODFGQjgwRUFFMDBGNUVGQjIgLyog
SlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNBN0U5QjQ5MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVs
UGFpbnRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDQTdFOUI0NzI0MzYxREM1MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5o
ICovOyB9OworCQlDQTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBODE2Q0Iz
Mjc3ODQ4MUUwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oICovOyB9OworCQlDQTgxNkNC
OTI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyog
Q1NTU2hhcGVTZWdtZW50LmggKi87IH07CisJCUNBODE2Q0JDMjc3ODlBQUQwMDJCRDNDNiAvKiBT
aGFwZVNlZ21lbnRGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0E4MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1
bmN0aW9ucy5jcHAgKi87IH07CisJCUNBODE2Q0JEMjc3ODlBQUQwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRGdW5jdGlvbnMu
aCAqLzsgfTsKIAkJQ0FFOUY5MTAxNDY0NDFGMDAwQzI0NUIwIC8qIENTU0FzcGVjdFJhdGlvVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBRTlG
OTBFMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggKi87IH07CiAJCUNC
MzhGRDUyMUNDRjkzOTQwMDU5MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCMzhGRDRFMUNDRjkzN0UwMDU5
MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuaCAqLzsgfTsKIAkJQ0IzOEZENUIxQ0QyMzI1QjAw
NTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0IzOEZENTkxQ0QyMzE0NTAwNTkyQTNGIC8q
IEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oICovOyB9OwpAQCAtMTU5NDcsNiArMTU5NTEs
NyBAQAogCQlDQTA5MUQ4NjIzQ0Y5MDc4MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHlsZUltYWdlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0EwOTFEODkyM0NGOTA4ODAwQUQ0MzQ2IC8qIFN0eWxlSW1hZ2VTZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3R5bGVJbWFnZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQTE2MzVEQzIwNzJFNzY5MDBFN0QyQ0UgLyogUmVmZXJyZXJQb2xpY3kuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmZXJyZXJQb2xpY3kuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDQTE2NkNDQjI3ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hh
cGVTZWdtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1NoYXBlU2VnbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMTkzM0Q1MjQwN0Q2NDAwMDcxMjQxQSAvKiBQ
ZXJmb3JtYW5jZVBhaW50VGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZvcm1hbmNlUGFpbnRU
aW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0ExOTMzRDgyNDA3RURDRjAw
NzEyNDFBIC8qIFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDQTNBNEFBQjI1NDE2RTNDMDA2Q0RBRTIgLyogSW1hZ2VSZXNvbHV0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlUmVzb2x1dGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTk2Miw2ICsxNTk2NywxMSBAQAogCQlDQTZD
MTUzODIyMEQxRUIzMDA1NUNCRkMgLyogSlNJREJDdXJzb3JXaXRoVmFsdWVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJDdXJzb3JXaXRoVmFsdWVD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTdFOUI0NzI0MzYxREM1
MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb250ZW50ZnVsUGFpbnRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNBN0U5QjQ4MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFpbnRD
aGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRm
dWxQYWludENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNC
MzI3Nzg0ODFFMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0E4MTZDQjQyNzc4NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2ljU2hhcGVTZWdt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4MTZDQjgyNzc4NDgyRTAw
MkJEM0M2IC8qIENTU1NoYXBlU2VnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDU1NTaGFwZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4
MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFwZVNlZ21lbnRGdW5jdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCQjI3Nzg5QUE3MDAyQkQzQzYg
LyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQUU5RjkwRDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIw
IC8qIENTU0FzcGVjdFJhdGlvVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
QjM4RkQ0QTFDQ0NGMkREMDA1OTJBM0YgLyogUGVyZm9ybWFuY2VFbnRyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJmb3JtYW5jZUVudHJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5Njg4LDYgKzI5Njk4LDggQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCUZCRDZBRjgyMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi8s
CiAJCQkJRkJENkFGODMxNUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8sCisJCQkJ
Q0E4MTZDQjQyNzc4NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJ
CQlDQTgxNkNCMzI3Nzg0ODFFMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLywKIAkJ
CQkwRjI4M0E5MTIzNTYzMTI2MDA0Nzk0Q0EgLyogQm9yZGVyRGF0YS5jcHAgKi8sCiAJCQkJQkM1
RUI1RTAwRTgxQkU4NzAwQjI1OTY1IC8qIEJvcmRlckRhdGEuaCAqLywKIAkJCQlCQzVFQjVEQTBF
ODFCN0VBMDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCAqLywKQEAgLTMxOTYxLDYgKzMxOTczLDgg
QEAKIAkJCQlFNEMxNzg5NjBFRTY5MDM4MDA4MjRENjkgLyogQ1NTU2VsZWN0b3JMaXN0LmggKi8s
CiAJCQkJQTgwRTZDQ0EwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmNwcCAqLywK
IAkJCQlBODBFNkNCRTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU2hhZG93VmFsdWUuaCAqLywKKwkJ
CQlDQTE2NkNDQjI3ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJ
CQlDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggKi8sCiAJCQkJ
N0NERThFQkMxRjE5M0JDNTAwMTY4RkU3IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uY3BwICovLAog
CQkJCUE4MEU2RTBEMEExOTkxMUMwMDdGQjhDNSAvKiBDU1NTdHlsZURlY2xhcmF0aW9uLmggKi8s
CiAJCQkJMTQyMDExQUUwQTAwMzExNzAwODMwM0Y5IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaWRs
ICovLApAQCAtMzIwOTYsNiArMzIxMTAsOCBAQAogCQkJCTQzQjg1RUQ2MThDQkVDOTcwMEUzMUFG
NCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuaW4gKi8s
CiAJCQkJMjZBQTBGOUExOEQyOTczRDAwNDE5MzgxIC8qIFNlbGVjdG9yUHNldWRvRWxlbWVudFR5
cGVNYXAuaW4gKi8sCiAJCQkJNDMxMDdCRTExOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNl
dWRvVHlwZU1hcC5oICovLAorCQkJCUNBODE2Q0JBMjc3ODlBQTIwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuY3BwICovLAorCQkJCUNBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBT
aGFwZVNlZ21lbnRGdW5jdGlvbnMuaCAqLywKIAkJCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQg
LyogU3R5bGVDb2xvci5jcHAgKi8sCiAJCQkJOTQxODI3ODkxRDhCMjQyMjAwNDkyNzY0IC8qIFN0
eWxlQ29sb3IuaCAqLywKIAkJCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRp
YS5jcHAgKi8sCkBAIC0zMzg1Niw2ICszMzg3Miw3IEBACiAJCQkJNzE1NkJDQTEyMUNBMzUwRjAw
NTM0Mzk3IC8qIEJhc2ljRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4
QTE1RUYyNURGMDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkJENkFGOEMxNUVGMjYwNDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDQTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFCMjNBMzI4MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVU
ZXh0SW5zZXJ0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCM0QwQTQ0RUZDNzAw
Rjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEy
NDBEMDA2QzFEMDBFRjZGMjYgLyogQmlkaUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMzQz
NDcsNiArMzQzNjQsNyBAQAogCQkJCUU0QzE3ODlCMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxl
Y3Rvckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0REU1QzhFMUQ4MDgwMjcwMDE2NEYyQSAv
KiBDU1NTZWxlY3RvclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRTgwQTE5ODlD
QTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNC
OTI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQTUzOEEyQTI2RjAxMDQyMDA5NjVGQzggLyogQ1NTU2tldy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkE1MzhBMkIyNkYwMTA0NTAwOTY1RkM4IC8qIENTU1NrZXdYLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyQTUzOEEyQzI2RjAxMDQ4MDA5NjVGQzggLyogQ1NTU2tld1kuaCBpbiBIZWFkZXJzICov
LApAQCAtMzc0ODQsNiArMzc1MDIsNyBAQAogCQkJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAv
KiBTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NUIxNzVENDFFRTAwQzIxRUM4IC8q
IFNoYXBlSW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTUyMTc1RDNGM0UwMEMy
MUVDOCAvKiBTaGFwZU91dHNpZGVJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNCRDI3
Nzg5QUFEMDAyQkQzQzYgLyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDFBRjE1MDE2NTZGMTUxMDBDNkQ0RjcgLyogU2hhcGVWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUQ5RjBGQzEyMTIyMDI5QjAwNUQ4RkQ0IC8qIFNoYXJlRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE0QTk1NEUwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zOTAzMCw2ICszOTA0OSw3IEBACiAJCQkJNDNCODVFRDQxOENCRUM1
MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1h
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkFBMEY5RTE4RDJBMThCMDA0MTkzODEgLyogU2Vs
ZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0Q1OERG
RDFGOTU2NUE4MDAxMTI3OTEgLyogU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0E4
MTZDQkMyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MURGMkQ1RTI3QTk0NTJBMDBGMjVBMjEgLyogU2hhcmVkVmlkZW9GcmFt
ZUluZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTBBODFGOTAyMkE0MDA1MTAyQ0UgLyog
U29mdExpbmtMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUFBMTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCmluZGV4IDlkZjJjZmY3
OTU3ZTQ1ZDg5YjcyMWE3MWU3NWUyOGQ4NWE1ZTc5YTcuLjE3NzIyMjZhZmViNzNkODQ0OTU5N2Q2
YWRlMzY4M2U2N2IxZDVjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1No
YXBlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0
aW9ucy5jcHAKQEAgLTMwLDEzICszMCwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkJhc2ljU2hhcGVGdW5jdGlvbnMuaCIKIAorI2luY2x1ZGUgIkJhc2ljU2hhcGVTZWdtZW50
LmgiCiAjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKICNpbmNsdWRlICJDU1NCYXNpY1NoYXBlcy5o
IgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJDU1NT
aGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJQYWly
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVh
bS5oIgorI2luY2x1ZGUgIlNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTE1NCw2ICsxNTcsMjIgQEAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1
ZUZvckJhc2ljU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCYXNpY1MKICAg
ICAgICAgYmFzaWNTaGFwZVZhbHVlID0gV1RGTW92ZShpbnNldFZhbHVlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorICAgIGNhc2UgQmFzaWNTaGFwZTo6VHlwZTo6U2hhcGU6IHsKKyAgICAgICAg
YXV0byYgc2hhcGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGUpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
KyAgICAgICAgYXV0byBzaXplID0gc2hhcGUuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHRvQ1NTU2hh
cGVTZWdtZW50KHN0eWxlLCBzaGFwZS5hdChpKSkpOworCisgICAgICAgIGF1dG8gZnJvbSA9IGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoCisgICAgICAgICAgICBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc2hhcGUuZnJvbSgpLngoKSwgc3R5bGUpLAorICAgICAgICAgICAg
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYXBlLmZyb20oKS55KCksIHN0eWxlKSwgUGFpcjo6
SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSkpOworCisgICAgICAgIGF1dG8g
c2hhcGVWYWx1ZSA9IENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3JlYXRlKFdURk1vdmUoZnJvbSksIFdU
Rk1vdmUocmVzdWx0KSk7CisgICAgICAgIHNoYXBlVmFsdWUtPnNldFdpbmRSdWxlKHNoYXBlLndp
bmRSdWxlKCkpOworICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBXVEZNb3ZlKHNoYXBlVmFsdWUp
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShiYXNpY1NoYXBlVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0xNjQs
NiArMTgzLDEyIEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjCiAgICAgcmV0dXJuIHZhbHVlLT5j
b252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IEZpeGVkRmxvYXRDb252ZXJz
aW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oY29udmVyc2lv
bkRhdGEpOwogfQogCitzdGF0aWMgTGVuZ3RoUG9pbnQgY29udmVydFRvTGVuZ3RoUG9pbnQoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKK3sKKyAgICBhdXRvJiBwYWlyID0gKihkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgpKTsKKyAgICByZXR1cm4geyBjb252ZXJ0VG9MZW5ndGgo
Y29udmVyc2lvbkRhdGEsIHBhaXIuZmlyc3QoKSksIGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9u
RGF0YSwgcGFpci5zZWNvbmQoKSkgfTsKK30KKwogc3RhdGljIExlbmd0aFNpemUgY29udmVydFRv
TGVuZ3RoU2l6ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0
YSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlKQogewogICAgIGlmICghdmFsdWUpCkBA
IC0yOTcsNiArMzIyLDIwIEBAIFJlZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9yVmFsdWUoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhCiAgICAgICAgIGJhc2lj
U2hhcGUgPSBXVEZNb3ZlKHBhdGgpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBD
U1NCYXNpY1NoYXBlOjpDU1NCYXNpY1NoYXBlU2hhcGVUeXBlOiB7CisgICAgICAgIGF1dG8mIHNo
YXBlVmFsdWUgPSBkb3duY2FzdDxDU1NCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGVWYWx1ZSk7
CisgICAgICAgIGNvbnN0IGF1dG8mIGNzc1NlZ21lbnRzID0gc2hhcGVWYWx1ZS5zZWdtZW50cygp
OworICAgICAgICBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4gc2VnbWVudHMoY3NzU2Vn
bWVudHMubGVuZ3RoKCkpOworICAgICAgICBzdGQ6OnRyYW5zZm9ybShzdGQ6OmJlZ2luKGNzc1Nl
Z21lbnRzKSwgc3RkOjplbmQoY3NzU2VnbWVudHMpLCBzZWdtZW50cy5iZWdpbigpLCBbJl0gKGNv
bnN0IGF1dG8mIGNzc1NlZ21lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBmcm9tQ1NTU2hhcGVT
ZWdtZW50KGNvbnZlcnNpb25EYXRhLCBkb3duY2FzdDxDU1NTaGFwZVNlZ21lbnQ+KGNzc1NlZ21l
bnQuZ2V0KCkpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byBzaGFwZSA9IEJhc2ljU2hh
cGVTaGFwZTo6Y3JlYXRlKGNvbnZlcnRUb0xlbmd0aFBvaW50KGNvbnZlcnNpb25EYXRhLCBzaGFw
ZVZhbHVlLmZyb20oKSksIFdURk1vdmUoc2VnbWVudHMpKTsKKyAgICAgICAgc2hhcGUtPnNldFdp
bmRSdWxlKHNoYXBlVmFsdWUud2luZFJ1bGUoKSk7CisKKyAgICAgICAgYmFzaWNTaGFwZSA9IFdU
Rk1vdmUoc2hhcGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJu
IGJhc2ljU2hhcGUucmVsZWFzZU5vbk51bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFw
ZXMuY3BwCmluZGV4IDg5ZTA5ZjU3MmMzNTE2MzgzZjdiMjYyZDU0MGMwM2RlMDJlODQ4NTAuLjg1
ZjY3NmZlNjE2NGFhMGI0MDg4ODMxZDA1NjQ4ODMyZTUwMGZiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtMjIyLDYgKzIyMiwzOCBAQCBib29sIENTU0Jhc2ljU2hh
cGVQYXRoOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYgb3RoZXJTaGFwZSkgY29uc3QKICAg
ICByZXR1cm4gd2luZFJ1bGUoKSA9PSBvdGhlclNoYXBlUGF0aC53aW5kUnVsZSgpICYmIHBhdGhE
YXRhKCkgPT0gb3RoZXJTaGFwZVBhdGgucGF0aERhdGEoKTsKIH0KIAorQ1NTQmFzaWNTaGFwZVNo
YXBlOjpDU1NCYXNpY1NoYXBlU2hhcGUoUmVmPENTU1ZhbHVlPiYmIGZyb20sIFJlZjxDU1NWYWx1
ZUxpc3Q+JiYgc2VnbWVudHMpCisgICAgOiBtX3NlZ21lbnRzKFdURk1vdmUoc2VnbWVudHMpKSwg
bV9mcm9tKFdURk1vdmUoZnJvbSkpCit7IAorfQorCitib29sIENTU0Jhc2ljU2hhcGVTaGFwZTo6
ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIG90aGVyU2hhcGUpIGNvbnN0Cit7CisgICAgaWYg
KCFpczxDU1NCYXNpY1NoYXBlU2hhcGU+KG90aGVyU2hhcGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBhdXRvJiBvdGhlclNoYXBlU2hhcGUgPSBkb3duY2FzdDxDU1NCYXNpY1NoYXBl
U2hhcGU+KG90aGVyU2hhcGUpOworICAgIHJldHVybiB3aW5kUnVsZSgpID09IG90aGVyU2hhcGVT
aGFwZS53aW5kUnVsZSgpCisgICAgICAgICYmIGZyb20oKSA9PSBvdGhlclNoYXBlU2hhcGUuZnJv
bSgpCisgICAgICAgICYmIHNlZ21lbnRzKCkuZXF1YWxzKG90aGVyU2hhcGVTaGFwZS5zZWdtZW50
cygpKTsKK30KKworU3RyaW5nIENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3NzVGV4dCgpIGNvbnN0Cit7
CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGlmICh3aW5kUnVsZSgpID09IFdpbmRS
dWxlOjpFdmVuT2RkKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgic2hhcGUoZXZlbm9kZCAiKTsK
KyAgICBlbHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJzaGFwZSgiKTsKKworICAgIGF1dG8q
IHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oZnJvbSgpKS5wYWlyVmFsdWUoKTsK
KyAgICBBU1NFUlQocGFpcik7CisgICAgYnVpbGRlci5hcHBlbmQoImZyb20gIiwgcGFpci0+Y3Nz
VGV4dCgpLCAiLCAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChzZWdtZW50cygpLmNzc1RleHQoKSwg
IikiKTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKIHN0YXRpYyBTdHJp
bmcgYnVpbGRQb2x5Z29uU3RyaW5nKGNvbnN0IFdpbmRSdWxlJiB3aW5kUnVsZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBvaW50cykKIHsKICAgICBBU1NFUlQoIShwb2ludHMuc2l6ZSgpICUgMikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAppbmRleCAxMDVjNDYwOTQxZDY3NDRlNTdi
ZTdhMzVkNmIwNGZjNzNmYWJiYmVjLi42M2FhOGY5ZWU0MzE1NjZiZDE5YmM0NTczMzA3OWM1ZTVk
ZTlmM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaApAQCAtMzgsNiArMzgsMTAg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CitjbGFz
cyBDU1NTaGFwZVNlZ21lbnQ7CitjbGFzcyBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXI7CitjbGFz
cyBDU1NWYWx1ZTsKK2NsYXNzIENTU1ZhbHVlTGlzdDsKIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFt
OwogCiBjbGFzcyBDU1NCYXNpY1NoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTQmFzaWNTaGFw
ZT4gewpAQCAtNDcsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgICAgIENTU0Jhc2ljU2hhcGVDaXJj
bGVUeXBlLAogICAgICAgICBDU1NCYXNpY1NoYXBlRWxsaXBzZVR5cGUsCiAgICAgICAgIENTU0Jh
c2ljU2hhcGVJbnNldFR5cGUsCi0gICAgICAgIENTU0Jhc2ljU2hhcGVQYXRoVHlwZQorICAgICAg
ICBDU1NCYXNpY1NoYXBlUGF0aFR5cGUsCisgICAgICAgIENTU0Jhc2ljU2hhcGVTaGFwZVR5cGUK
ICAgICB9OwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CkBAIC0yMzMsNiAr
MjM4LDM1IEBAIHByaXZhdGU6CiAgICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFdpbmRSdWxlOjpO
b25aZXJvIH07CiB9OwogCitjbGFzcyBDU1NCYXNpY1NoYXBlU2hhcGUgZmluYWwgOiBwdWJsaWMg
Q1NTQmFzaWNTaGFwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDU1NCYXNpY1NoYXBlU2hh
cGU+IGNyZWF0ZShSZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJiBzZWdt
ZW50cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0Jhc2ljU2hhcGVT
aGFwZShXVEZNb3ZlKGZyb20pLCBXVEZNb3ZlKHNlZ21lbnRzKSkpOworICAgIH0KKworICAgIGNv
bnN0IENTU1ZhbHVlTGlzdCYgc2VnbWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fc2VnbWVudHMuZ2V0KCk7CisgICAgfQorCisgICAgdm9pZCBzZXRXaW5kUnVsZShXaW5kUnVs
ZSBydWxlKSB7IG1fd2luZFJ1bGUgPSBydWxlOyB9CisgICAgV2luZFJ1bGUgd2luZFJ1bGUoKSBj
b25zdCB7IHJldHVybiBtX3dpbmRSdWxlOyB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgZnJvbSgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJvbS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIENTU0Jhc2lj
U2hhcGVTaGFwZShSZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJik7CisK
KyAgICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDU1NCYXNpY1NoYXBlU2hhcGVU
eXBlOyB9CisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGVxdWFs
cyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3QgZmluYWw7CisKKyAgICBSZWY8Q1NTVmFsdWVM
aXN0PiBtX3NlZ21lbnRzOworICAgIFJlZjxDU1NWYWx1ZT4gbV9mcm9tOworICAgIFdpbmRSdWxl
IG1fd2luZFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OworfTsKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBF
UyhUb1ZhbHVlVHlwZU5hbWUpIFwKQEAgLTI0NSwzICsyNzksNCBAQCBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0NTU19CQVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZUNpcmNsZSkKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlRWxsaXBzZSkKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUG9seWdvbikK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUGF0
aCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBl
U2hhcGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFi
ZDY1ZTc4ZTI0OTRkMDJlMDExN2U3NTAwMzA4OTkxMDBiYmRhYTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNwcApAQCAtMCwwICsxLDE5MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ1NTU2hhcGVTZWdtZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8o
Q1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYg
dGFyZ2V0KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKE1vdmVU
bywgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+
IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZp
bml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCkKK3sKKyAgICByZXR1cm4gQ1NT
U2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShMaW5lVG8sIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdl
dCkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxp
bmVUb0hvcml6b250YWwoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBS
ZWY8Q1NTVmFsdWU+JiYgeCkKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNy
ZWF0ZShMaW5lVG9Ib3Jpem9udGFsLCBhZmZpbml0eSwgV1RGTW92ZSh4KSk7Cit9CisKK1JlZjxD
U1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwoQ1NT
U2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgeSkK
K3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShMaW5lVG9WZXJ0aWNh
bCwgYWZmaW5pdHksIFdURk1vdmUoeSkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NT
aGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpYyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZm
aW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBw
MSwgUmVmPENTU1ZhbHVlPiYmIHAyKQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1
ZTo6Y3JlYXRlKEN1cnZlVG9DdWJpYywgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92
ZShwMSksIFdURk1vdmUocDIpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZp
bml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAx
KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEN1cnZlVG9RdWFk
cmF0aWMsIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUocDEpKTsKK30KKworUmVm
PENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWNTbW9v
dGgoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+
JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcDIpCit7CisgICAgcmV0dXJuIENTU1NoYXBlU2Vn
bWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb0N1YmljU21vb3RoLCBhZmZpbml0eSwgV1RGTW92ZSh0
YXJnZXQpLCBXVEZNb3ZlKHAyKSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBl
U2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aChDU1NTaGFwZVNlZ21lbnQ6OkNv
b3JkQWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpCit7CisgICAgcmV0
dXJuIENTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb1F1YWRyYXRpY1Ntb290aCwg
YWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENT
U1NoYXBlU2VnbWVudDo6Y3JlYXRlQXJjVG8oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5
IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcmFkaXVz
LCBDU1NWYWx1ZUlEIHN3ZWVwLCBDU1NWYWx1ZUlEIHNpemUsIFJlZjxDU1NWYWx1ZT4mJiBhbmds
ZSkKK3sKKyAgICBBU1NFUlQoc3dlZXAgPT0gQ1NTVmFsdWVDY3cgfHwgc3dlZXAgPT0gQ1NTVmFs
dWVDdyk7CisgICAgQVNTRVJUKHNpemUgPT0gQ1NTVmFsdWVTbWFsbCB8fCBzaXplID09IENTU1Zh
bHVlTGFyZ2UpOworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEFyY1Rv
LCBhZmZpbml0eSwKKyAgICAgICAgV1RGTW92ZSh0YXJnZXQpLAorICAgICAgICBXVEZNb3ZlKHJh
ZGl1cyksCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3dlZXApLAorICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHNpemUpLAorICAgICAgICBXVEZNb3ZlKGFuZ2xl
KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xv
c2VQYXRoKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKihuZXcgQ1NTU2hhcGVTZWdtZW50KENs
b3NlUGF0aCkpKTsKK30KKworYm9vbCBDU1NTaGFwZVNlZ21lbnQ6OmVxdWFscyhjb25zdCBDU1NT
aGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gb3RoZXIudHlw
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV90eXBlID09IENsb3NlUGF0
aCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q1NTU2hhcGVTZWdtZW50VmFsdWUmPigqdGhpcykuZXF1YWxzKHN0YXRpY19jYXN0PGNvbnN0IENT
U1NoYXBlU2VnbWVudFZhbHVlJj4ob3RoZXIpKTsKK30KKworU3RyaW5nIENTU1NoYXBlU2VnbWVu
dDo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHlwZSA9PSBDU1NTaGFwZVNl
Z21lbnQ6OkNsb3NlUGF0aCkKKyAgICAgICAgcmV0dXJuICJjbG9zZSI7CisKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUqPih0aGlzKS0+Y3VzdG9tQ1NT
VGV4dCgpOworfQorCitib29sIENTU1NoYXBlU2VnbWVudFZhbHVlOjplcXVhbHMoY29uc3QgQ1NT
U2hhcGVTZWdtZW50JiBvdGhlcikgY29uc3QKK3sKKyAgICBBU1NFUlQodHlwZSgpID09IG90aGVy
LnR5cGUoKSk7CisgICAgY29uc3QgYXV0byYgb3RoZXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0
IENTU1NoYXBlU2VnbWVudFZhbHVlJj4ob3RoZXIpOworICAgIHJldHVybiBvdGhlclZhbHVlLm1f
YWZmaW5pdHkgPT0gbV9hZmZpbml0eQorICAgICAgICAmJiBvdGhlclZhbHVlLnRhcmdldCgpLmVx
dWFscyh0YXJnZXQoKSkKKyAgICAgICAgJiYgb3RoZXJWYWx1ZS5tX2FyZ3VtZW50cy5nZXQoKS5l
cXVhbHMobV9hcmd1bWVudHMuZ2V0KCkpOworfQorCitTdHJpbmcgQ1NTU2hhcGVTZWdtZW50VmFs
dWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAoreworICAgIGNvbnN0IGF1dG8gY29tbWFuZCA9IFsm
XSgpIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsKKyAgICAgICAgY2FzZSBNb3ZlVG86Cisg
ICAgICAgICAgICByZXR1cm4gIm1vdmUiOworICAgICAgICBjYXNlIExpbmVUbzoKKyAgICAgICAg
ICAgIHJldHVybiAibGluZSI7CisgICAgICAgIGNhc2UgTGluZVRvSG9yaXpvbnRhbDoKKyAgICAg
ICAgICAgIHJldHVybiAiaGxpbmUiOworICAgICAgICBjYXNlIExpbmVUb1ZlcnRpY2FsOgorICAg
ICAgICAgICAgcmV0dXJuICJ2bGluZSI7CisgICAgICAgIGNhc2UgQ3VydmVUb0N1YmljOgorICAg
ICAgICBjYXNlIEN1cnZlVG9RdWFkcmF0aWM6CisgICAgICAgICAgICByZXR1cm4gImN1cnZlIjsK
KyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWNTbW9vdGg6CisgICAgICAgIGNhc2UgQ3VydmVUb1F1
YWRyYXRpY1Ntb290aDoKKyAgICAgICAgICAgIHJldHVybiAic21vb3RoIjsKKyAgICAgICAgY2Fz
ZSBBcmNUbzoKKyAgICAgICAgICAgIHJldHVybiAiYXJjIjsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuICIiOwor
ICAgICAgICB9CisKKyAgICB9OworCisgICAgY29uc3QgYXV0byBjb25qdW5jdGlvbiA9IFsmXSgp
IHsKKyAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsKKyAgICAgICAgY2FzZSBNb3ZlVG86CisgICAg
ICAgIGNhc2UgTGluZVRvOgorICAgICAgICBjYXNlIExpbmVUb0hvcml6b250YWw6CisgICAgICAg
IGNhc2UgTGluZVRvVmVydGljYWw6CisgICAgICAgIGNhc2UgQ3VydmVUb1F1YWRyYXRpY1Ntb290
aDoKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWM6Cisg
ICAgICAgIGNhc2UgQ3VydmVUb1F1YWRyYXRpYzoKKyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWNT
bW9vdGg6CisgICAgICAgICAgICByZXR1cm4gIiB2aWEgIjsKKyAgICAgICAgY2FzZSBBcmNUbzoK
KyAgICAgICAgICAgIHJldHVybiAiIG9mICI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAg
fQorICAgIH07CisKKyAgICBhdXRvIGJ5VG8gPSBtX2FmZmluaXR5ID09IENTU1NoYXBlU2VnbWVu
dDo6Q29vcmRBZmZpbml0eTo6QWJzb2x1dGUgPyAiIHRvICIgOiAiIGJ5ICI7CisgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKGNvbW1hbmQoKSwgYnlUbywgbV90
YXJnZXQtPmNzc1RleHQoKSwgY29uanVuY3Rpb24oKSk7CisgICAgaWYgKHR5cGUoKSA9PSBBcmNU
bykgeworICAgICAgICBidWlsZGVyLmFwcGVuZChhcmd1bWVudCgwKS5jc3NUZXh0KCkpOworICAg
ICAgICBjb25zdCBhdXRvJiBzd2VlcCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihhcmd1
bWVudCgxKSk7CisgICAgICAgIGNvbnN0IGF1dG8mIHNpemUgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oYXJndW1lbnQoMikpOworICAgICAgICBjb25zdCBhdXRvJiBhbmdsZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPihhcmd1bWVudCgzKSk7CisKKyAgICAgICAgaWYgKHN3ZWVw
LnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUN3KQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBj
dyIpOworCisgICAgICAgIGlmIChzaXplLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxhcmdlKQorICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBsYXJnZSIpOworCisgICAgICAgIGlmIChhbmdsZS5j
b21wdXRlRGVncmVlcygpKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiByb3RhdGUgIiwg
YW5nbGUuY3NzVGV4dCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9h
cmd1bWVudHMtPmNzc1RleHQoKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYXBlU2VnbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYXBlU2VnbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4ZTdkMzkz
ZWEzNmIyODE3OTc2MDY2N2UzYzRhMzI4ZTNiNmFkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1NoYXBlU2VnbWVudCA6IHB1YmxpYyBDU1NW
YWx1ZSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBDb29yZEFmZmluaXR5IHsKKyAgICAgICAg
QWJzb2x1dGUsIFJlbGF0aXZlCisgICAgfTsKKworICAgIGVudW0gU2VnbWVudFR5cGUgeworICAg
ICAgICBNb3ZlVG8sCisgICAgICAgIExpbmVUbywKKyAgICAgICAgTGluZVRvSG9yaXpvbnRhbCwK
KyAgICAgICAgTGluZVRvVmVydGljYWwsCisgICAgICAgIEN1cnZlVG9DdWJpYywKKyAgICAgICAg
Q3VydmVUb1F1YWRyYXRpYywKKyAgICAgICAgQ3VydmVUb0N1YmljU21vb3RoLAorICAgICAgICBD
dXJ2ZVRvUXVhZHJhdGljU21vb3RoLAorICAgICAgICBBcmNUbywKKyAgICAgICAgQ2xvc2VQYXRo
CisgICAgfTsKKworICAgIFNlZ21lbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0
OworICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CisgICAgfkNTU1NoYXBlU2VnbWVu
dCgpID0gZGVmYXVsdDsKKworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVD
bG9zZVBhdGgoKTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRlTW92ZVRv
KENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpOworICAgIHN0YXRpYyBSZWY8
Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG8oQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVl
PiYmIHRhcmdldCk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUxpbmVU
b0hvcml6b250YWwoQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHgpOworICAgIHN0YXRp
YyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG9WZXJ0aWNhbChDb29yZEFmZmluaXR5
LCBSZWY8Q1NTVmFsdWU+JiYgeSk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNy
ZWF0ZUN1cnZlVG9DdWJpYyhDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBS
ZWY8Q1NTVmFsdWU+JiYgcDEsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAgc3RhdGljIFJlZjxD
U1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWMoQ29vcmRBZmZpbml0eSwgUmVm
PENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxKTsKKyAgICBzdGF0aWMgUmVm
PENTU1NoYXBlU2VnbWVudD4gY3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKENvb3JkQWZmaW5pdHks
IFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAgc3RhdGlj
IFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoQ29vcmRB
ZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFw
ZVNlZ21lbnQ+IGNyZWF0ZUFyY1RvKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJn
ZXQsIFJlZjxDU1NWYWx1ZT4mJiByYWRpdXMsIENTU1ZhbHVlSUQgc3dlZXAsIENTU1ZhbHVlSUQg
c2l6ZSwgUmVmPENTU1ZhbHVlPiYmIGFuZ2xlKTsKKworcHJvdGVjdGVkOgorICAgIENTU1NoYXBl
U2VnbWVudChTZWdtZW50VHlwZSB0eXBlKQorICAgICAgICA6IENTU1ZhbHVlKFNoYXBlU2VnbWVu
dENsYXNzKQorICAgICAgICAsIG1fdHlwZSh0eXBlKSB7IH0KKworcHJpdmF0ZToKKyAgICBTZWdt
ZW50VHlwZSBtX3R5cGU7Cit9OworCitjbGFzcyBDU1NTaGFwZVNlZ21lbnRWYWx1ZSA6IHB1Ymxp
YyBDU1NTaGFwZVNlZ21lbnQgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSAuLi5B
cmdzPgorICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGUoQ1NTU2hhcGVTZWdt
ZW50OjpTZWdtZW50VHlwZSB0eXBlLAorICAgICAgICBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZm
aW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIEFyZ3MuLi4gYXJndW1lbnRz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU2hhcGVTZWdtZW50VmFs
dWUodHlwZSwgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3VtZW50cykuLi4pKTsKKyAgICB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgdGFyZ2V0KCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKKyAgICB9CisKKyAgICBj
b25zdCBDU1NWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGkpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQobV9hcmd1bWVudHMtPmxlbmd0aCgpID4gaSk7CisgICAgICAgIHJldHVybiAqKG1fYXJn
dW1lbnRzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICB9CisKKyAgICBDU1NTaGFw
ZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHkoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fYWZmaW5pdHk7CisgICAgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTU2hh
cGVTZWdtZW50JiBvdGhlcikgY29uc3Q7CisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICB2b2lkIGFwcGVuZEFyZ3MoKSB7IH0KKyAgICB2b2lkIGFwcGVu
ZEFyZ3MoUmVmPENTU1ZhbHVlPiYmIHYpIHsgbV9hcmd1bWVudHMtPmFwcGVuZChXVEZNb3ZlKHYp
KTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgLi4uQXJncz4KKyAgICB2b2lkIGFwcGVuZEFy
Z3MoUmVmPENTU1ZhbHVlPiYmIHYsIEFyZ3MgLi4uYXJncykKKyAgICB7CisgICAgICAgIGFwcGVu
ZEFyZ3MoV1RGTW92ZSh2KSk7CisgICAgICAgIGFwcGVuZEFyZ3Moc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSAuLi5BcmdzPgorICAg
IENTU1NoYXBlU2VnbWVudFZhbHVlKENTU1NoYXBlU2VnbWVudDo6U2VnbWVudFR5cGUgdHlwZSwg
Q1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYg
dGFyZ2V0LCBBcmdzIC4uLmFyZ3MpCisgICAgICAgIDogQ1NTU2hhcGVTZWdtZW50KHR5cGUpCisg
ICAgICAgICwgbV9hZmZpbml0eShhZmZpbml0eSkKKyAgICAgICAgLCBtX3RhcmdldChXVEZNb3Zl
KHRhcmdldCkpCisgICAgICAgICwgbV9hcmd1bWVudHMoQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpKQorICAgIHsKKyAgICAgICAgYXBwZW5kQXJncyhzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworICAgIH0KKworICAgIENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0
eSBtX2FmZmluaXR5OworICAgIFJlZjxDU1NWYWx1ZT4gbV90YXJnZXQ7CisgICAgUmVmPENTU1Zh
bHVlTGlzdD4gbV9hcmd1bWVudHM7Cit9OworCit9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NT
U19WQUxVRShDU1NTaGFwZVNlZ21lbnQsIGlzU2hhcGVTZWdtZW50VmFsdWUoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuY3BwCmluZGV4IDVlMjE4MjI2M2ZjZWE1Y2FmZjM2M2U0ZmY0NDAzOTQzODExZjZk
YWMuLjYzMDllM2ZmNzNkY2NiNjY3MzFmMjI0YjY0OWQ3ODkyZGEyZWQxNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlLmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIkNTU1JheVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTU2hhZG93VmFsdWUu
aCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5j
dGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NWYWx1ZUxpc3QuaCIKQEAgLTIzMCw2ICsyMzEsOCBAQCBib29sIENTU1ZhbHVlOjplcXVh
bHMoY29uc3QgQ1NTVmFsdWUmIG90aGVyKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGNvbXBh
cmVDU1NWYWx1ZXM8Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGNh
c2UgRm9udFN0eWxlUmFuZ2VDbGFzczoKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFs
dWVzPENTU0ZvbnRTdHlsZVJhbmdlVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2Ug
U2hhcGVTZWdtZW50Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxD
U1NTaGFwZVNlZ21lbnQ+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTMzOSw2ICszNDIsOCBAQCBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0
KCk7CiAgICAgY2FzZSBGb250U3R5bGVSYW5nZUNsYXNzOgogICAgICAgICByZXR1cm4gZG93bmNh
c3Q8Q1NTRm9udFN0eWxlUmFuZ2VWYWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKKyAgICBj
YXNlIFNoYXBlU2VnbWVudENsYXNzOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTU2hhcGVT
ZWdtZW50PigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtNDk3LDYgKzUwMiw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQog
ICAgIGNhc2UgRm9udFN0eWxlUmFuZ2VDbGFzczoKICAgICAgICAgZGVsZXRlIGRvd25jYXN0PENT
U0ZvbnRTdHlsZVJhbmdlVmFsdWU+KHRoaXMpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBT
aGFwZVNlZ21lbnRDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU1NoYXBlU2VnbWVu
dD4odGhpcyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IGRhZGU1OGRhMjA2OGI3ZWVjY2RhYTMzMTkx
OGM0NGQzYTc2ZTA1YzguLjNmNzVhZjMwYWI5MDI4YWViMmQxNTJmMTQ1Yzk4OTM1N2I1MTllYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0xMzQsNiArMTM0LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNHcmlkQXV0b1JlcGVhdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0g
R3JpZEF1dG9SZXBlYXRDbGFzczsgfQogICAgIGJvb2wgaXNHcmlkSW50ZWdlclJlcGVhdFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gR3JpZEludGVnZXJSZXBlYXRDbGFzczsg
fQogICAgIGJvb2wgaXNHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9j
bGFzc1R5cGUgPT0gR3JpZFRlbXBsYXRlQXJlYXNDbGFzczsgfQorICAgIGJvb2wgaXNTaGFwZVNl
Z21lbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFNoYXBlU2VnbWVudENs
YXNzOyB9CiAgICAgYm9vbCBpc0dyaWRMaW5lTmFtZXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xhc3NUeXBlID09IEdyaWRMaW5lTmFtZXNDbGFzczsgfQogICAgIGJvb2wgaXNTdWJncmlkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTdWJncmlkQ2xhc3M7IH0KICAgICBi
b29sIGlzVW5pY29kZVJhbmdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBV
bmljb2RlUmFuZ2VDbGFzczsgfQpAQCAtMjA5LDYgKzIxMCw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgQ2FsY3VsYXRpb25DbGFzcywKICAgICAgICAgR3JpZFRlbXBsYXRlQXJlYXNDbGFzcywKICAg
ICAgICAgVmFsdWVQYWlyQ2xhc3MsCisgICAgICAgIFNoYXBlU2VnbWVudENsYXNzLAogCiAgICAg
ICAgIENTU0NvbnRlbnREaXN0cmlidXRpb25DbGFzcywKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVLZXl3b3Jkcy5pbgppbmRleCAyZGQ0YzBiYWMzYzlhM2E0ZDYzYmFlZGMyOTkxMDgwMmI1MjIw
MmY5Li4xYjY1NGViMjE5ZDRlMWM5YjIyOGZlMTcxNTg1MzkzODA1YzViMTM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtMTI4Niw2ICsxMjg2LDI3IEBAIHJlY3QK
IAogLy8gc2hhcGVzCiBwb2x5Z29uCitzaGFwZQorCisvLyBzaGFwZSgpCisvLyBmcm9tCisvLyB0
bworLy8gbW92ZQorbGluZQoraGxpbmUKK3ZsaW5lCitjdXJ2ZQorLy8gc21vb3RoCithcmMKK2Ns
b3NlCit2aWEKK29mCitieQorY3cKK2NjdworLy8gbGFyZ2UKKy8vIHNtYWxsCisvLyByb3RhdGUK
IAogLy8gQGZvbnQtZmFjZSBzcmMKIGZvcm1hdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhcGVT
ZWdtZW50RnVuY3Rpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2NiMTBmOGFhMzE3MjIwMzAxZjQyOTZh
ZjU4NmJlODJlNmVhNzFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1No
YXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTAsMCArMSwyMjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcGVTZWdtZW50RnVuY3Rpb25zLmgiCisKKyNp
bmNsdWRlICJCYXNpY1NoYXBlU2VnbWVudC5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKKyNpbmNsdWRlICJDU1NW
YWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgorI2luY2x1ZGUgIlBhaXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjb252
ZXJ0UG9pbnRUb0NTU1ZhbHVlKGNvbnN0IExlbmd0aFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8mIHBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpOworICAgIHJldHVybiBwb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZSgKKyAgICAgICAg
cG9vbC5jcmVhdGVWYWx1ZShwb2ludC54KCksIHN0eWxlKSwKKyAgICAgICAgcG9vbC5jcmVhdGVW
YWx1ZShwb2ludC55KCksIHN0eWxlKSwKKyAgICAgICAgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNv
ZGluZzo6RG9Ob3RDb2FsZXNjZSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZT4gYXV0
byB0b0NTU0FyZ3MoY29uc3QgVmFsdWUmLCBjb25zdCBSZW5kZXJTdHlsZSYpOworCit0ZW1wbGF0
ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBMZW5ndGgmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZTxSZWY8Q1NTVmFsdWU+PihD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHZhbHVlLCBzdHlsZSkpOworfQor
Cit0ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJnczxMZW5ndGhQb2ludD4oY29uc3QgTGVuZ3RoUG9p
bnQmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6
bWFrZV90dXBsZShjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLCBzdHlsZSkpOworfQorCit0
ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVl
JiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBzdGQ6Om1h
a2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUudGFyZ2V0UG9p
bnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5wb2ludDEs
IHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5wb2ludDIsIHN0
eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NBcmdzKGNvbnN0IEN1cnZlVG9RdWFk
cmF0aWNTaGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorewor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFs
dWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NW
YWx1ZSh2YWx1ZS5wb2ludDEsIHN0eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NB
cmdzKGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIHZhbHVlLCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSgKKyAgICAg
ICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS50YXJnZXRQb2ludCwgc3R5bGUpLAorICAg
ICAgICBjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnBvaW50Miwgc3R5bGUpKTsKK30KKwor
dGVtcGxhdGU8PgorYXV0byB0b0NTU0FyZ3MoY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiB2YWx1
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8mIHBvb2wgPSBDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpOworICAgIGF1dG8gcmFkaXVzID0gUGFpcjo6Y3JlYXRlKAorICAg
ICAgICBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlLnJhZGl1cy53aWR0aCwgc3R5bGUpLAorICAgICAg
ICBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlLnJhZGl1cy5oZWlnaHQsIHN0eWxlKSwKKyAgICAgICAg
UGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpOworCisgICAgcmV0dXJuIHN0
ZDo6bWFrZV90dXBsZSgKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS50YXJn
ZXRQb2ludCwgc3R5bGUpLAorICAgICAgICBwb29sLmNyZWF0ZVZhbHVlKFdURk1vdmUocmFkaXVz
KSksCisgICAgICAgIHZhbHVlLnN3ZWVwID8gQ1NTVmFsdWVDdyA6IENTU1ZhbHVlQ2N3LAorICAg
ICAgICB2YWx1ZS5sYXJnZUFyYyA/IENTU1ZhbHVlTGFyZ2UgOiBDU1NWYWx1ZVNtYWxsLAorICAg
ICAgICBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlLmFuZ2xlLCBDU1NVbml0VHlwZTo6Q1NTX0RFRykp
OworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiB0b0NTU1NoYXBlU2VnbWVudChjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBzZWdtZW50KQoreworICAg
IGF1dG8gdG9DU1MgPSBbJl0oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5
LCBhdXRvIGNyZWF0ZSwgY29uc3QgYXV0byYgYXMpIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6YXBw
bHkoY3JlYXRlLCBzdGQ6OnR1cGxlX2NhdChzdGQ6Om1ha2VfdHVwbGUoYWZmaW5pdHkpLCB0b0NT
U0FyZ3MoKHNlZ21lbnQuKmFzKSgpLCBzdHlsZSkpKTsKKyAgICB9OworCisjZGVmaW5lIENSRUFU
RV9DU1NfU0hBUEVfU0VHTUVOVF9GUk9NX0JBU0lDX1NIQVBFX1NFR01FTlQoVHlwZSkgXAorICAg
IGNhc2UgU2hhcGVTZWdtZW50IyNUeXBlOjpBYnNTZWdUeXBlOiBcCisgICAgICAgIHJldHVybiB0
b0NTUyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRlLCBDU1NTaGFwZVNl
Z21lbnQ6OmNyZWF0ZSMjVHlwZSwgJkJhc2ljU2hhcGVTZWdtZW50OjphcyMjVHlwZSk7IFwKKyAg
ICBjYXNlIFNoYXBlU2VnbWVudCMjVHlwZTo6UmVsU2VnVHlwZTogXAorICAgICAgICByZXR1cm4g
dG9DU1MoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5OjpSZWxhdGl2ZSwgQ1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGUjI1R5cGUsICZCYXNpY1NoYXBlU2VnbWVudDo6YXMjI1R5cGUpOyBcCisK
KyAgICBzd2l0Y2ggKHNlZ21lbnQudHlwZSgpKSB7CisgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRo
OgorICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKwor
ICAgICAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9WQUxVRShDUkVBVEVfQ1NT
X1NIQVBFX1NFR01FTlRfRlJPTV9CQVNJQ19TSEFQRV9TRUdNRU5UKQorCisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQordGVtcGxhdGUgPGNsYXNz
IERlZmluaXRpb24+CitTVkdQYXRoU2VnVHlwZSBzZWdtZW50VHlwZShjb25zdCBDU1NTaGFwZVNl
Z21lbnRWYWx1ZSYgc2VnbWVudFdpdGhWYWx1ZSkKK3sKKyAgICByZXR1cm4gc2VnbWVudFdpdGhW
YWx1ZS5hZmZpbml0eSgpID09IENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eTo6QWJzb2x1
dGUgPyBEZWZpbml0aW9uOjpBYnNTZWdUeXBlIDogRGVmaW5pdGlvbjo6UmVsU2VnVHlwZTsKK30K
KworUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBmcm9tQ1NTU2hhcGVTZWdtZW50KGNvbnN0IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBDU1NTaGFwZVNlZ21l
bnQmIGNzc1NlZ21lbnQpCit7CisgICAgYXV0byB0b0xlbmd0aCA9IFsmXShjb25zdCBDU1NWYWx1
ZSYgdmFsdWUpIC0+IExlbmd0aCB7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwg
Rml4ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252
ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CisgICAgfTsKKworICAgIGF1dG8gdG9MZW5ndGhQb2lu
dCA9IFsmXShjb25zdCBDU1NWYWx1ZSYgdmFsdWUpIC0+IExlbmd0aFBvaW50IHsKKyAgICAgICAg
YXV0byBwYWlyID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5wYWlyVmFsdWUo
KTsKKyAgICAgICAgQVNTRVJUKHBhaXIpOworICAgICAgICByZXR1cm4gTGVuZ3RoUG9pbnQgeyB0
b0xlbmd0aCgqcGFpci0+Zmlyc3QoKSksIHRvTGVuZ3RoKCpwYWlyLT5zZWNvbmQoKSkgfTsKKyAg
ICB9OworCisgICAgYXV0byB0b0xlbmd0aFNpemUgPSBbJl0oY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KSAtPiBMZW5ndGhTaXplIHsKKyAgICAgICAgYXV0byBwYWlyID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKS5wYWlyVmFsdWUoKTsKKyAgICAgICAgQVNTRVJUKHBhaXIpOworICAg
ICAgICByZXR1cm4gTGVuZ3RoU2l6ZSB7IHRvTGVuZ3RoKCpwYWlyLT5maXJzdCgpKSwgdG9MZW5n
dGgoKnBhaXItPnNlY29uZCgpKSB9OworICAgIH07CisKKyAgICBhdXRvIHR5cGUgPSBjc3NTZWdt
ZW50LnR5cGUoKTsKKworICAgIGlmICh0eXBlID09IENTU1NoYXBlU2VnbWVudDo6Q2xvc2VQYXRo
KQorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOwor
CisgICAgY29uc3QgYXV0byYgc2VnbWVudFdpdGhWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IENT
U1NoYXBlU2VnbWVudFZhbHVlJj4oY3NzU2VnbWVudCk7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6TW92ZVRvOiB7CisgICAgICAgIHJldHVybiBCYXNp
Y1NoYXBlU2VnbWVudDo6Y3JlYXRlTW92ZVRvKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hh
cGVTZWdtZW50TW92ZVRvPihzZWdtZW50V2l0aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3Ro
UG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkpOworICAgIH0KKworICAgIGNhc2UgQ1NT
U2hhcGVTZWdtZW50OjpMaW5lVG86CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6
Y3JlYXRlTGluZVRvKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50TGluZVRv
PihzZWdtZW50V2l0aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdp
dGhWYWx1ZS50YXJnZXQoKSkpOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkxpbmVUb0hv
cml6b250YWw6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRv
SG9yaXpvbnRhbCgKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudExpbmVUb0hv
cml6b250YWw+KHNlZ21lbnRXaXRoVmFsdWUpLAorICAgICAgICAgICAgdG9MZW5ndGgoc2VnbWVu
dFdpdGhWYWx1ZS50YXJnZXQoKSkpOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkxpbmVU
b1ZlcnRpY2FsOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVU
b1ZlcnRpY2FsKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50TGluZVRvVmVy
dGljYWw+KHNlZ21lbnRXaXRoVmFsdWUpLAorICAgICAgICAgICAgdG9MZW5ndGgoc2VnbWVudFdp
dGhWYWx1ZS50YXJnZXQoKSkpOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkN1cnZlVG9D
dWJpYzoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3Vi
aWMoCisgICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWM+KHNl
Z21lbnRXaXRoVmFsdWUpLCB7CisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50
V2l0aFZhbHVlLmFyZ3VtZW50KDApKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNl
Z21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMSkpLAorICAgICAgICAgICAgICAgIHRvTGVuZ3RoUG9p
bnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAgICAgIH0pOworCisgICAgY2Fz
ZSBDU1NTaGFwZVNlZ21lbnQ6OkN1cnZlVG9RdWFkcmF0aWM6CisgICAgICAgIHJldHVybiBCYXNp
Y1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpYygKKyAgICAgICAgICAgIHNlZ21l
bnRUeXBlPFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWM+KHNlZ21lbnRXaXRoVmFsdWUpLCB7
CisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50
KDApKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUudGFy
Z2V0KCkpCisgICAgICAgICAgICB9KTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpDdXJ2
ZVRvQ3ViaWNTbW9vdGg6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRl
Q3VydmVUb0N1YmljU21vb3RoKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50
Q3VydmVUb0N1YmljU21vb3RoPihzZWdtZW50V2l0aFZhbHVlKSwgeworICAgICAgICAgICAgICAg
IHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgwKSksCisgICAgICAgICAg
ICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQorICAgICAgICAg
ICAgfSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q3VydmVUb1F1YWRyYXRpY1Ntb290
aDoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJh
dGljU21vb3RoKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50Q3VydmVUb1F1
YWRyYXRpY1Ntb290aD4oc2VnbWVudFdpdGhWYWx1ZSksCisgICAgICAgICAgICB0b0xlbmd0aFBv
aW50KHNlZ21lbnRXaXRoVmFsdWUudGFyZ2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdt
ZW50OjpBcmNUbzoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVBcmNU
bygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudEFyY1RvPihzZWdtZW50V2l0
aFZhbHVlKSwgeworICAgICAgICAgICAgICAgIC5yYWRpdXMgPSB0b0xlbmd0aFNpemUoc2VnbWVu
dFdpdGhWYWx1ZS5hcmd1bWVudCgwKSksCisgICAgICAgICAgICAgICAgLnN3ZWVwID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMSkpLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUN3LAorICAgICAgICAgICAgICAgIC5sYXJnZUFyYyA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPihzZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50KDIpKS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVMYXJnZSwKKyAgICAgICAgICAgICAgICAuYW5nbGUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgzKSkuZmxvYXRWYWx1
ZShDU1NVbml0VHlwZTo6Q1NTX0RFRyksCisgICAgICAgICAgICAgICAgLnRhcmdldFBvaW50ID0g
dG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQorICAgICAgICAgICAgfSk7
CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q2xvc2VQYXRoOgorICAgICAgICByZXR1cm4g
QmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworICAgIH0KKworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2hhcGVTZWdtZW50RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhcGVTZWdtZW50
RnVuY3Rpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY0MGQ3MWUyOWE1MDgzODI1M2UwYzJlYTcwOTYxMTQ0
OTFkNjJkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21l
bnRGdW5jdGlvbnMuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBCYXNpY1NoYXBlU2VnbWVudDsKK2NsYXNzIENTU1NoYXBlU2Vn
bWVudDsKK2NsYXNzIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE7CitjbGFzcyBSZW5kZXJTdHls
ZTsKKworUmVmPENTU1NoYXBlU2VnbWVudD4gdG9DU1NTaGFwZVNlZ21lbnQoY29uc3QgUmVuZGVy
U3R5bGUmLCBjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYpOworUmVmPEJhc2ljU2hhcGVTZWdtZW50
PiBmcm9tQ1NTU2hhcGVTZWdtZW50KGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBj
b25zdCBDU1NTaGFwZVNlZ21lbnQmKTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCBkMWI1ZDM0NTU1OTEwYmQ4MzNlYWU5ZmZi
Yzk1N2JjMWNkMzI0OTBiLi44ZWE0ZmE4NmVmNGI0ZWJhYzZmN2RmMWYxZDc0M2JlNDllZmFhZDVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNw
cApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKICNp
bmNsdWRlICJDU1NGb250RmVhdHVyZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udFBhbGV0dGVW
YWx1ZXNPdmVycmlkZUNvbG9yc1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTU2hhcGVTZWdtZW50Lmgi
CiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKICNpbmNsdWRlICJDU1NGb250VmFyaWF0aW9u
VmFsdWUuaCIKICNlbmRpZgpAQCAtMjY1Miw2ICsyNjUzLDE5NiBAQCBzdGF0aWMgUmVmUHRyPENT
U0Jhc2ljU2hhcGVQYXRoPiBjb25zdW1lQmFzaWNTaGFwZVBhdGgoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgYXJncwogICAgIHJldHVybiBzaGFwZTsKIH0KIAorc3RhdGljIFJlZlB0cjxDU1NTaGFwZVNl
Z21lbnQ+IGNvbnN1bWVTaGFwZVNlZ21lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBhdXRvIGNvbW1hbmQgPSBhcmdz
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgaWYgKGNvbW1hbmQuaWQoKSA9PSBD
U1NWYWx1ZUNsb3NlKQorICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9z
ZVBhdGgoKTsKKworICAgIGlmICghaWRlbnRNYXRjaGVzPENTU1ZhbHVlVG8sIENTU1ZhbHVlQnk+
KGFyZ3MucGVlaygpLmlkKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8g
YWZmaW5pdHkgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSA9PSBDU1NW
YWx1ZVRvID8gQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5OjpBYnNvbHV0ZSA6IENTU1No
YXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eTo6UmVsYXRpdmU7CisgICAgYXV0byBjb25zdW1lTmV4
dExlbmd0aE9yUGVyY2VudCA9IFsmXSgpIHsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhP
clBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOworICAgIH07CisK
KyAgICBpZiAoY29tbWFuZC5pZCgpID09IENTU1ZhbHVlSGxpbmUgfHwgY29tbWFuZC5pZCgpID09
IENTU1ZhbHVlVmxpbmUpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IGNvbnN1bWVOZXh0TGVuZ3Ro
T3JQZXJjZW50KCk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICByZXR1cm4gY29tbWFuZC5pZCgpID09IENTU1ZhbHVlSGxpbmUKKyAg
ICAgICAgICAgID8gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKGFmZmlu
aXR5LCB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKQorICAgICAgICAgICAgOiBDU1NTaGFwZVNlZ21l
bnQ6OmNyZWF0ZUxpbmVUb1ZlcnRpY2FsKGFmZmluaXR5LCB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgp
KTsKKyAgICB9CisKKyAgICBhdXRvIGNvbnN1bWVOZXh0Q29vcmRpbmF0ZXMgPSBbJl0gKCkgLT4g
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB7CisgICAgICAgIGF1dG8geCA9IGNvbnN1bWVOZXh0
TGVuZ3RoT3JQZXJjZW50KCk7CisgICAgICAgIGlmICgheCkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgIGF1dG8geSA9IGNvbnN1bWVOZXh0TGVuZ3RoT3JQZXJjZW50KCk7
CisgICAgICAgIGlmICgheSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
IHJldHVybiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoeC5yZWxlYXNlTm9uTnVsbCgpLCB5LnJl
bGVhc2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkRvTm90Q29hbGVz
Y2UpOworICAgIH07CisKKyAgICBhdXRvIGF0RW5kT2ZTZWdtZW50ID0gWyZdICgpIHsKKyAgICAg
ICAgcmV0dXJuIGFyZ3MuYXRFbmQoKSB8fCBhcmdzLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tl
bjsKKyAgICB9OworCisgICAgYXV0byB0YXJnZXRQb2ludCA9IGNvbnN1bWVOZXh0Q29vcmRpbmF0
ZXMoKTsKKyAgICBpZiAoIXRhcmdldFBvaW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHN3aXRjaCAoY29tbWFuZC5pZCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZU1vdmU6CisgICAg
ICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZU1vdmVUbyhhZmZpbml0eSwgdGFyZ2V0
UG9pbnQucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICBjYXNlIENTU1ZhbHVlTGluZToKKyAgICAg
ICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvKGFmZmluaXR5LCB0YXJnZXRQ
b2ludC5yZWxlYXNlTm9uTnVsbCgpKTsKKworICAgIGNhc2UgQ1NTVmFsdWVDdXJ2ZTogeworICAg
ICAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSAhPSBDU1NWYWx1ZVZpYSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KTsKKyAgICAgICAgYXV0byB2aWFQb2ludDEgPSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7Cisg
ICAgICAgIGlmICghdmlhUG9pbnQxKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAgICAgaWYgKGF0RW5kT2ZTZWdtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKGFmZmluaXR5LCB0YXJnZXRQb2ludC5yZWxl
YXNlTm9uTnVsbCgpLCB2aWFQb2ludDEucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICAgICAgYXV0
byB2aWFQb2ludDIgPSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7CisgICAgICAgIGlmICghdmlh
UG9pbnQyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIENT
U1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljKGFmZmluaXR5LCAgdGFyZ2V0UG9pbnQu
cmVsZWFzZU5vbk51bGwoKSwgdmlhUG9pbnQxLnJlbGVhc2VOb25OdWxsKCksIHZpYVBvaW50Mi5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisKKyAgICBjYXNlIENTU1ZhbHVlU21vb3RoOiB7Cisg
ICAgICAgIGlmIChhcmdzLnBlZWsoKS5pZCgpICE9IENTU1ZhbHVlVmlhKQorICAgICAgICAgICAg
cmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aChhZmZp
bml0eSwgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCkpOworCisgICAgICAgIGFyZ3MuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgYXV0byB2aWFQb2ludCA9IGNvbnN1
bWVOZXh0Q29vcmRpbmF0ZXMoKTsKKyAgICAgICAgaWYgKCF2aWFQb2ludCkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0
ZUN1cnZlVG9DdWJpY1Ntb290aChhZmZpbml0eSwgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxs
KCksIHZpYVBvaW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KKworICAgIGNhc2UgQ1NTVmFs
dWVBcmM6IHsKKyAgICAgICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgIT0gQ1NTVmFsdWVPZikKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKTsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByeCA9IGNv
bnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpOb25O
ZWdhdGl2ZSk7CisgICAgICAgIGlmICghcngpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJ5OworICAgICAgICBpZiAoYXJn
cy5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pCisgICAgICAgICAgICByeSA9IHJ4OworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJ5ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdz
LCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKKyAgICAgICAgICAgIGlm
ICghcnkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IHN3ZWVwOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPENTU1ZhbHVlSUQ+IHNpemU7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gYW5nbGU7CisK
KyAgICAgICAgd2hpbGUgKCFhdEVuZE9mU2VnbWVudCgpKSB7CisgICAgICAgICAgICBhdXRvIG5l
eHRJZGVudCA9IGFyZ3MucGVlaygpLmlkKCk7CisgICAgICAgICAgICBpZiAoaWRlbnRNYXRjaGVz
PENTU1ZhbHVlUm90YXRlPihuZXh0SWRlbnQpICYmICFhbmdsZSkgeworICAgICAgICAgICAgICAg
IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOworICAgICAgICAgICAgICAg
IGFuZ2xlID0gY29uc3VtZUFuZ2xlKGFyZ3MsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6
Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyazo6Rm9yYmlkKTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NW
YWx1ZUN3LCBDU1NWYWx1ZUNjdz4obmV4dElkZW50KSAmJiAhc3dlZXAuaGFzX3ZhbHVlKCkpIHsK
KyAgICAgICAgICAgICAgICBzd2VlcCA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS5pZCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlTGFyZ2UsIENTU1ZhbHVlU21hbGw+KG5l
eHRJZGVudCkgJiYgIXNpemUuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBzaXplID0g
YXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCFhbmdsZSkKKyAgICAgICAgICAgIGFuZ2xlID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NVbml0VHlwZTo6Q1NTX0RFRyk7CisKKyAgICAg
ICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQXJjVG8oCisgICAgICAgICAgICBhZmZp
bml0eSwKKyAgICAgICAgICAgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCksCisgICAgICAg
ICAgICBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIocngucmVsZWFzZU5vbk51bGwoKSwgcnkucmVs
ZWFzZU5vbk51bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpLAor
ICAgICAgICAgICAgc3dlZXAudmFsdWVfb3IoQ1NTVmFsdWVDY3cpLAorICAgICAgICAgICAgc2l6
ZS52YWx1ZV9vcihDU1NWYWx1ZVNtYWxsKSwKKyAgICAgICAgICAgIGFuZ2xlLnJlbGVhc2VOb25O
dWxsKCkpOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9Cit9CisKK3N0YXRpYyBSZWZQdHI8Q1NTQmFzaWNTaGFwZVNoYXBlPiBjb25zdW1lQmFzaWNT
aGFwZVNoYXBlKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmIGNvbnRleHQpCit7CisgICAgV2luZFJ1bGUgd2luZFJ1bGUgPSBXaW5kUnVsZTo6Tm9uWmVy
bzsKKworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVFdmVub2RkLCBDU1NWYWx1ZU5vbnpl
cm8+KGFyZ3MucGVlaygpLmlkKCkpKQorICAgICAgICB3aW5kUnVsZSA9IGFyZ3MuY29uc3VtZUlu
Y2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpID09IENTU1ZhbHVlRXZlbm9kZCA/IFdpbmRSdWxlOjpF
dmVuT2RkIDogV2luZFJ1bGU6Ok5vblplcm87CisKKyAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSAh
PSBDU1NWYWx1ZUZyb20pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXJncy5jb25z
dW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBpbml0aWFsWCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBW
YWx1ZVJhbmdlOjpBbGwpOworICAgIGlmICghaW5pdGlhbFgpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpbml0aWFsWSA9IGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOworICAg
IGlmICghaW5pdGlhbFkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFjb25z
dW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGF1dG8gc2VnbWVudHMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJh
dGVkKCk7CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGF1dG8gc2VnbWVudCA9IGNvbnN1bWVT
aGFwZVNlZ21lbnQoYXJncywgY29udGV4dCk7CisgICAgICAgIGlmICghc2VnbWVudCkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIHNlZ21lbnRzLT5hcHBlbmQoc2VnbWVu
dC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgaWYgKGFyZ3MuYXRFbmQoKSkKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8g
c2hhcGUgPSBDU1NCYXNpY1NoYXBlU2hhcGU6OmNyZWF0ZSgKKyAgICAgICAgY3JlYXRlUHJpbWl0
aXZlVmFsdWVQYWlyKAorICAgICAgICAgICAgaW5pdGlhbFgucmVsZWFzZU5vbk51bGwoKSwKKyAg
ICAgICAgICAgIGluaXRpYWxZLnJlbGVhc2VOb25OdWxsKCksCisgICAgICAgICAgICBQYWlyOjpJ
ZGVudGljYWxWYWx1ZUVuY29kaW5nOjpEb05vdENvYWxlc2NlKSwKKyAgICAgICAgV1RGTW92ZShz
ZWdtZW50cykpOworCisgICAgc2hhcGUtPnNldFdpbmRSdWxlKHdpbmRSdWxlKTsKKyAgICByZXR1
cm4gc2hhcGU7Cit9CisKIHN0YXRpYyB2b2lkIGNvbXBsZXRlNFNpZGVzKFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gc2lkZVs0XSkKIHsKICAgICBpZiAoc2lkZVszXSkKQEAgLTI3NTcsNiArMjk0
OCw4IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVCYXNpY1NoYXBl
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjCiAgICAgICAgIHNoYXBlID0gY29uc3VtZUJh
c2ljU2hhcGVJbnNldChhcmdzLCBjb250ZXh0KTsKICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1
ZVBhdGgpCiAgICAgICAgIHNoYXBlID0gY29uc3VtZUJhc2ljU2hhcGVQYXRoKGFyZ3MpOworICAg
IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlU2hhcGUpCisgICAgICAgIHNoYXBlID0gY29uc3VtZUJh
c2ljU2hhcGVTaGFwZShhcmdzLCBjb250ZXh0KTsKICAgICBpZiAoIXNoYXBlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICByYW5nZSA9IHJhbmdlQ29weTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM3OTY5YmZiNjFkNGI3Mjc4ZjNlNWVmMDM1NmNlYzM2MmQ2MTJiZjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3Bw
CkBAIC0wLDAgKzEsMjg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE5vYW0gUm9zZW50
aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkJhc2ljU2hhcGVTZWdtZW50LmgiCisKKyNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIK
KyNpbmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAiU1ZHUGF0aEJ1aWxkZXIuaCIKKyNpbmNsdWRl
ICJTVkdQYXRoUGFyc2VyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZy5oIgorI2luY2x1ZGUgIlNW
R1BhdGhTZWdJbXBsLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNvdXJjZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlZmluaXRpb24+CitjbGFzcyBCYXNpY1No
YXBlU2VnbWVudFZhbHVlIDogcHVibGljIEJhc2ljU2hhcGVTZWdtZW50IHsKK3B1YmxpYzoKKyAg
ICBjb25zdCB0eXBlbmFtZSBEZWZpbml0aW9uOjpWYWx1ZSYgdmFsdWUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKHR5cGUoKSA9PSBEZWZpbml0aW9uOjpBYnNTZWdUeXBlIHx8IHR5cGUo
KSA9PSBEZWZpbml0aW9uOjpSZWxTZWdUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7Cisg
ICAgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCkKKyAgICAg
ICAgICAgICYmIHZhbHVlKCkgPT0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNTaGFwZVNlZ21lbnRW
YWx1ZTxEZWZpbml0aW9uPiY+KG90aGVyKS52YWx1ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBS
ZWY8QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZT4gY3JlYXRlKEJhc2ljU2hhcGVTZWdtZW50OjpUeXBl
IHR5cGUsIHR5cGVuYW1lIERlZmluaXRpb246OlZhbHVlJiYgdmFsdWUpCisgICAgeworICAgICAg
ICBBU1NFUlQodHlwZSA9PSBEZWZpbml0aW9uOjpBYnNTZWdUeXBlIHx8IHR5cGUgPT0gRGVmaW5p
dGlvbjo6UmVsU2VnVHlwZSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJhc2ljU2hh
cGVTZWdtZW50VmFsdWU8RGVmaW5pdGlvbj4odHlwZSwgV1RGTW92ZSh2YWx1ZSkpKTsKKyAgICB9
CisKK3Byb3RlY3RlZDoKKyAgICBCYXNpY1NoYXBlU2VnbWVudFZhbHVlKEJhc2ljU2hhcGVTZWdt
ZW50OjpUeXBlIHR5cGUsIHR5cGVuYW1lIERlZmluaXRpb246OlZhbHVlJiYgdmFsdWUpCisgICAg
ICAgIDogQmFzaWNTaGFwZVNlZ21lbnQodHlwZSkKKyAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUo
dmFsdWUpKSB7IH0KKworcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBEZWZpbml0aW9uOjpWYWx1ZSBt
X3ZhbHVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyBjb25zdCB0eXBlbmFt
ZSBUOjpWYWx1ZSYgZXh0cmFjdFZhbHVlKGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBzZWcpCit7
CisgICAgQVNTRVJUKHNlZy50eXBlKCkgPT0gVDo6QWJzU2VnVHlwZSB8fCBzZWcudHlwZSgpID09
IFQ6OlJlbFNlZ1R5cGUpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY1NoYXBl
U2VnbWVudFZhbHVlPFQ+Jj4oc2VnKS52YWx1ZSgpOworfQorCitib29sIEJhc2ljU2hhcGVTZWdt
ZW50OjplcXVhbHMoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdAoreworICAg
IGF1dG8gdHlwZSA9IHRoaXMtPnR5cGUoKTsKKyAgICBpZiAodHlwZSAhPSBvdGhlci50eXBlKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworI2RlZmluZSBDT01QQVJFX1NIQVBFX1NFR01FTlRf
VkFMVUUoVHlwZSkgXAorICAgIGNhc2UgU2hhcGVTZWdtZW50IyNUeXBlOjpBYnNTZWdUeXBlOiBc
CisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6OlJlbFNlZ1R5cGU6IFwKKyAgICAgICAgcmV0
dXJuIGV4dHJhY3RWYWx1ZTxTaGFwZVNlZ21lbnQjI1R5cGU+KCp0aGlzKSA9PSBleHRyYWN0VmFs
dWU8U2hhcGVTZWdtZW50IyNUeXBlPihvdGhlcik7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAg
ICBjYXNlIFBhdGhTZWdDbG9zZVBhdGg6CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAg
IEZPUl9FQUNIX1NIQVBFX1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKENPTVBBUkVfU0hBUEVfU0VH
TUVOVF9WQUxVRSkKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworI2RlZmluZSBJ
TVBMRU1FTlRfU0hBUEVfU0VHTUVOVF9WQUxVRShUWVBFKSBcCitSZWY8QmFzaWNTaGFwZVNlZ21l
bnQ+IEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGUjI1RZUEUoQmFzaWNTaGFwZVNlZ21lbnQ6OlR5
cGUgdHlwZSwgdHlwZW5hbWUgU2hhcGVTZWdtZW50IyNUWVBFOjpWYWx1ZSYmIHZhbHVlKSBcCit7
IFwKKyAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxTaGFwZVNlZ21lbnQjI1RZUEU+
OjpjcmVhdGUodHlwZSwgV1RGTW92ZSh2YWx1ZSkpOyBcCit9IFwKK2NvbnN0IHR5cGVuYW1lIFNo
YXBlU2VnbWVudCMjVFlQRTo6VmFsdWUmIEJhc2ljU2hhcGVTZWdtZW50OjphcyMjVFlQRSgpIGNv
bnN0IFwKK3sgXAorICAgIHJldHVybiBleHRyYWN0VmFsdWU8U2hhcGVTZWdtZW50IyNUWVBFPigq
dGhpcyk7IFwKK30KKworRk9SX0VBQ0hfU0hBUEVfU0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoSU1Q
TEVNRU5UX1NIQVBFX1NFR01FTlRfVkFMVUUpCisKK0N1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUg
YmxlbmQoY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29uc3QgQ3VydmVU
b0N1YmljU2hhcGVTZWdWYWx1ZSYgdG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICByZXR1cm4geworICAgICAgICBibGVuZChmcm9tLnBvaW50MSwgdG8ucG9pbnQxLCBj
b250ZXh0KSwKKyAgICAgICAgYmxlbmQoZnJvbS5wb2ludDIsIHRvLnBvaW50MiwgY29udGV4dCks
CisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRhcmdldFBvaW50LCBjb250ZXh0
KSwKKyAgICB9OworfQorCitDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNv
bnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIGZyb20sIGNvbnN0IEN1cnZlVG9D
dWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRl
eHQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgYmxlbmQoZnJvbS5wb2ludDIsIHRvLnBvaW50
MiwgY29udGV4dCksCisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRhcmdldFBv
aW50LCBjb250ZXh0KSwKKyAgICB9OworfQorCitDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1
ZSBibGVuZChjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29uc3Qg
Q3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQm
IGNvbnRleHQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgYmxlbmQoZnJvbS5wb2ludDEsIHRv
LnBvaW50MSwgY29udGV4dCksCisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRh
cmdldFBvaW50LCBjb250ZXh0KSwKKyAgICB9OworfQorCitBcmNUb1NoYXBlU2VnVmFsdWUgYmxl
bmQoY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiBmcm9tLCBjb25zdCBBcmNUb1NoYXBlU2VnVmFs
dWUmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHsK
KyAgICAgICAgYmxlbmQoZnJvbS5yYWRpdXMsIHRvLnJhZGl1cywgY29udGV4dCksCisgICAgICAg
IGJsZW5kKGZyb20uYW5nbGUsIHRvLmFuZ2xlLCBjb250ZXh0KSwKKyAgICAgICAgY29udGV4dC5w
cm9ncmVzcyA8IDAuNWYgPyBmcm9tLnN3ZWVwIDogdG8uc3dlZXAsCisgICAgICAgIGNvbnRleHQu
cHJvZ3Jlc3MgPCAwLjVmID8gZnJvbS5sYXJnZUFyYyA6IHRvLmxhcmdlQXJjLAorICAgICAgICBi
bGVuZChmcm9tLnRhcmdldFBvaW50LCB0by50YXJnZXRQb2ludCwgY29udGV4dCkKKyAgICB9Owor
fQorCitSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IEJhc2ljU2hhcGVTZWdtZW50OjpibGVuZChjb25z
dCBCYXNpY1NoYXBlU2VnbWVudCYgZnJvbSwgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0
KSBjb25zdAoreworICAgIGF1dG8gdHlwZSA9IHRoaXMtPnR5cGUoKTsKKyAgICBBU1NFUlQodHlw
ZSA9PSBmcm9tLnR5cGUoKSk7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFBhdGhT
ZWdDbG9zZVBhdGg6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xv
c2VQYXRoKCk7CisKKyNkZWZpbmUgQkxFTkRfU0VHTUVOVF9UWVBFKFR5cGUpIFwKKyAgICBjYXNl
IFNoYXBlU2VnbWVudCMjVHlwZTo6QWJzU2VnVHlwZTogXAorICAgIGNhc2UgU2hhcGVTZWdtZW50
IyNUeXBlOjpSZWxTZWdUeXBlOiBcCisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudFZh
bHVlPFNoYXBlU2VnbWVudCMjVHlwZT46OmNyZWF0ZSh0eXBlLCBXZWJDb3JlOjpibGVuZChleHRy
YWN0VmFsdWU8U2hhcGVTZWdtZW50IyNUeXBlPihmcm9tKSwgZXh0cmFjdFZhbHVlPFNoYXBlU2Vn
bWVudCMjVHlwZT4oKnRoaXMpLCBjb250ZXh0KSk7CisKKyAgICAgICAgRk9SX0VBQ0hfU0hBUEVf
U0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoQkxFTkRfU0VHTUVOVF9UWVBFKQorICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KK2NsYXNzIFNoYXBlU1ZH
UGF0aFNvdXJjZSBmaW5hbCA6IHB1YmxpYyBTVkdQYXRoU291cmNlIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBTaGFwZVNWR1BhdGhTb3VyY2UoY29uc3QgTGVuZ3RoUG9pbnQmIHN0YXJ0LCBjb25z
dCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIHNlZ21lbnRzLCBjb25zdCBGbG9hdFNp
emUmIHNpemUpCisgICAgICAgIDogbV9zdGFydChzdGFydCkKKyAgICAgICAgLCBtX3NlZ21lbnRz
KHNlZ21lbnRzKQorICAgICAgICAsIG1fc2l6ZShzaXplKQorICAgICAgICAsIG1faXRlbUVuZChz
ZWdtZW50cy5zaXplKCkpCisgICAgICAgIHsKKworICAgICAgICB9CisKK3ByaXZhdGU6CisgICAg
Ym9vbCBoYXNNb3JlRGF0YSgpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9p
dGVtQ3VycmVudCA8IG1faXRlbUVuZDsKKyAgICB9CisKKyAgICBib29sIG1vdmVUb05leHRUb2tl
bigpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFNWR1BhdGhTZWdUeXBlIG5leHRDb21t
YW5kKFNWR1BhdGhTZWdUeXBlKSBmaW5hbAorICAgIHsKKyAgICAgICAgYXV0byB0eXBlID0gbV9z
ZWdtZW50cy5hdChtX2l0ZW1DdXJyZW50KS0+dHlwZSgpOworICAgICAgICArK21faXRlbUN1cnJl
bnQ7CisgICAgICAgIHJldHVybiB0eXBlOworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZH
UGF0aFNlZ1R5cGU+IHBhcnNlU1ZHU2VnbWVudFR5cGUoKSBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIFBhdGhTZWdNb3ZlVG9BYnM7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQ
YXRoU291cmNlOjpNb3ZlVG9TZWdtZW50PiBwYXJzZU1vdmVUb1NlZ21lbnQoKSBmaW5hbAorICAg
IHsKKyAgICAgICAgaWYgKCFtX2l0ZW1DdXJyZW50KQorICAgICAgICAgICAgcmV0dXJuIFNWR1Bh
dGhTb3VyY2U6Ok1vdmVUb1NlZ21lbnQgeyBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQobV9zdGFy
dCwgbV9zaXplKSB9OworCisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdt
ZW50IHsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlPFNoYXBlU2VnbWVudE1vdmVUbz4o
KSwgbV9zaXplKSB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6
TGluZVRvU2VnbWVudD4gcGFyc2VMaW5lVG9TZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBTVkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50IHsgZmxvYXRQb2ludEZvckxlbmd0
aFBvaW50KHZhbHVlPFNoYXBlU2VnbWVudExpbmVUbz4oKSwgbV9zaXplKSB9OworICAgIH0KKwor
ICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+
IHBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0
dXJuIFNWR1BhdGhTb3VyY2U6OkxpbmVUb0hvcml6b250YWxTZWdtZW50IHsgZmxvYXRWYWx1ZUZv
ckxlbmd0aCh2YWx1ZTxTaGFwZVNlZ21lbnRMaW5lVG9Ib3Jpem9udGFsPigpLCBtX3NpemUud2lk
dGgoKSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVU
b1ZlcnRpY2FsU2VnbWVudD4gcGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKSBmaW5hbAorICAg
IHsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkxpbmVUb1ZlcnRpY2FsU2VnbWVudCB7
IGZsb2F0VmFsdWVGb3JMZW5ndGgodmFsdWU8U2hhcGVTZWdtZW50TGluZVRvVmVydGljYWw+KCks
IG1fc2l6ZS5oZWlnaHQoKSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhT
b3VyY2U6OkN1cnZlVG9DdWJpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCgpIGZp
bmFsCisgICAgeworICAgICAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBl
U2VnbWVudEN1cnZlVG9DdWJpYz4oKTsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1
cnZlVG9DdWJpY1NlZ21lbnQgeyAgICAgICAgCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVu
Z3RoUG9pbnQodmFsdWUucG9pbnQxLCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZv
ckxlbmd0aFBvaW50KHZhbHVlLnBvaW50MiwgbV9zaXplKSwKKyAgICAgICAgICAgIGZsb2F0UG9p
bnRGb3JMZW5ndGhQb2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXplKQorICAgICAgICB9Owor
ICAgIH0KKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1Ntb290
aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCgpIGZpbmFsCisgICAgewor
ICAgICAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEN1cnZl
VG9DdWJpY1Ntb290aD4oKTsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9D
dWJpY1Ntb290aFNlZ21lbnQgeyAgICAgICAgCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVu
Z3RoUG9pbnQodmFsdWUucG9pbnQyLCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZv
ckxlbmd0aFBvaW50KHZhbHVlLnRhcmdldFBvaW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAg
fQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2Vn
bWVudD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAg
ICBjb25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEN1cnZlVG9RdWFk
cmF0aWM+KCk7CisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGlj
U2VnbWVudCB7CisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUucG9p
bnQxLCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVl
LnRhcmdldFBvaW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQorCisgICAgc3RkOjpvcHRp
b25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4gcGFyc2VD
dXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICByZXR1
cm4gU1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQgeyBmbG9hdFBv
aW50Rm9yTGVuZ3RoUG9pbnQodmFsdWU8U2hhcGVTZWdtZW50Q3VydmVUb1F1YWRyYXRpY1Ntb290
aD4oKSwgbV9zaXplKSB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJj
ZTo6QXJjVG9TZWdtZW50PiBwYXJzZUFyY1RvU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAg
ICBjb25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEFyY1RvPigpOwor
ICAgICAgICBhdXRvIHJhZGl1cyA9IGZsb2F0U2l6ZUZvckxlbmd0aFNpemUodmFsdWUucmFkaXVz
LCBtX3NpemUpOworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50IHsK
KyAgICAgICAgICAgIC5yeCA9IHJhZGl1cy53aWR0aCgpLAorICAgICAgICAgICAgLnJ5ID0gcmFk
aXVzLmhlaWdodCgpLAorICAgICAgICAgICAgLmFuZ2xlID0gdmFsdWUuYW5nbGUsCisgICAgICAg
ICAgICAubGFyZ2VBcmMgPSB2YWx1ZS5sYXJnZUFyYywKKyAgICAgICAgICAgIC5zd2VlcCA9IHZh
bHVlLnN3ZWVwLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnRh
cmdldFBvaW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBjb25zdCB0eXBlbmFtZSBUOjpWYWx1ZSYgdmFsdWUoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1faXRlbUN1cnJlbnQgPD0gbV9zZWdtZW50cy5zaXplKCkpOworICAgICAg
ICByZXR1cm4gZXh0cmFjdFZhbHVlPFQ+KG1fc2VnbWVudHMuYXQobV9pdGVtQ3VycmVudCAtIDEp
LmdldCgpKTsKKyAgICB9CisKKyAgICBjb25zdCBMZW5ndGhQb2ludCYgbV9zdGFydDsKKyAgICBj
b25zdCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIG1fc2VnbWVudHM7CisgICAgRmxv
YXRTaXplIG1fc2l6ZTsKKyAgICBzaXplX3QgbV9pdGVtRW5kOworICAgIHNpemVfdCBtX2l0ZW1D
dXJyZW50ID0gMDsKK307CisKK1BhdGggQmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aChjb25zdCBM
ZW5ndGhQb2ludCYgc3RhcnQsIGNvbnN0IFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYg
c2VnbWVudHMsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBTaGFwZVNWR1BhdGhTb3Vy
Y2Ugc291cmNlKHN0YXJ0LCBzZWdtZW50cywgc2l6ZSk7CisgICAgUGF0aCBwYXRoOworICAgIFNW
R1BhdGhCdWlsZGVyIGJ1aWxkZXIocGF0aCk7CisgICAgU1ZHUGF0aFBhcnNlcjo6cGFyc2Uoc291
cmNlLCBidWlsZGVyKTsKKyAgICByZXR1cm4gcGF0aDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NWQxOGNlODUwNmNlNjJkZDMyNjU3NTRkZTA3NDZhZDBiYzE5NDZmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmgKQEAg
LTAsMCArMSwxNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkxlbmd0
aC5oIgorI2luY2x1ZGUgIkxlbmd0aFBvaW50LmgiCisjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgor
I2luY2x1ZGUgIlNWR1BhdGhTZWcuaCIKKyNpbmNsdWRlICJTVkdQYXRoU291cmNlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEJsZW5kaW5nQ29udGV4dDsKK2NsYXNzIEZsb2F0
UmVjdDsKK2NsYXNzIFBhdGg7CisKK3N0cnVjdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlIHsK
KyAgICBMZW5ndGhQb2ludCBwb2ludDE7CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQyOworICAgIExl
bmd0aFBvaW50IHRhcmdldFBvaW50OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXJ2ZVRv
Q3ViaWNTaGFwZVNlZ1ZhbHVlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBw
b2ludDEgPT0gb3RoZXIucG9pbnQxICYmIHBvaW50MiA9PSBvdGhlci5wb2ludDIgJiYgdGFyZ2V0
UG9pbnQgPT0gb3RoZXIudGFyZ2V0UG9pbnQ7CisgICAgfQorfTsKKworc3RydWN0IEN1cnZlVG9D
dWJpY1Ntb290aFNoYXBlU2VnVmFsdWUgeworICAgIExlbmd0aFBvaW50IHBvaW50MjsKKyAgICBM
ZW5ndGhQb2ludCB0YXJnZXRQb2ludDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VydmVU
b0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gcG9pbnQyID09IG90aGVyLnBvaW50MiAmJiB0YXJnZXRQb2ludCA9PSBvdGhlci50YXJn
ZXRQb2ludDsKKyAgICB9Cit9OworCitzdHJ1Y3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFs
dWUgeworICAgIExlbmd0aFBvaW50IHBvaW50MTsKKyAgICBMZW5ndGhQb2ludCB0YXJnZXRQb2lu
dDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdW
YWx1ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gcG9pbnQxID09IG90aGVy
LnBvaW50MSAmJiB0YXJnZXRQb2ludCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9Cit9Owor
CisKK3N0cnVjdCBBcmNUb1NoYXBlU2VnVmFsdWUgeworICAgIExlbmd0aFNpemUgcmFkaXVzOwor
ICAgIGZsb2F0IGFuZ2xlID0gMDsKKyAgICBib29sIHN3ZWVwID0gZmFsc2U7CisgICAgYm9vbCBs
YXJnZUFyYyA9IGZhbHNlOworICAgIExlbmd0aFBvaW50IHRhcmdldFBvaW50OworCisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gcmFkaXVzID09IG90aGVyLnJhZGl1cyAmJiBhbmdsZSA9PSBvdGhl
ci5hbmdsZSAmJiBzd2VlcCA9PSBvdGhlci5zd2VlcCAmJiBsYXJnZUFyYyA9PSBvdGhlci5sYXJn
ZUFyYyAmJiB0YXJnZXRQb2ludCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9Cit9OworCisK
K0N1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb0N1YmljU2hhcGVT
ZWdWYWx1ZSYsIGNvbnN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGlu
Z0NvbnRleHQmKTsKK0N1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3Qg
Q3VydmVUb0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290
aFNoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKTsKK0N1cnZlVG9RdWFkcmF0
aWNTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
JiwgY29uc3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0Nv
bnRleHQmKTsKK0FyY1RvU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBBcmNUb1NoYXBlU2VnVmFs
dWUmLCBjb25zdCBBcmNUb1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCBTVkdQYXRoU2VnVHlwZSBBYnNUeXBlLCBT
VkdQYXRoU2VnVHlwZSBSZWxUeXBlPgorc3RydWN0IFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9u
IHsKKyAgICB0eXBlZGVmIFZhbHVlVHlwZSBWYWx1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1
dG8gQWJzU2VnVHlwZSA9IEFic1R5cGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIFJlbFNl
Z1R5cGUgPSBSZWxUeXBlOworfTsKKworc3RydWN0IFNoYXBlU2VnbWVudE1vdmVUbyA6IHB1Ymxp
YyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxMZW5ndGhQb2ludCwgUGF0aFNlZ01vdmVUb0Fi
cywgUGF0aFNlZ01vdmVUb1JlbD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudExpbmVUbyA6IHB1
YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxMZW5ndGhQb2ludCwgUGF0aFNlZ0xpbmVU
b0FicywgUGF0aFNlZ0xpbmVUb1JlbD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudExpbmVUb0hv
cml6b250YWwgOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248TGVuZ3RoLCBQYXRo
U2VnTGluZVRvSG9yaXpvbnRhbEFicywgUGF0aFNlZ0xpbmVUb0hvcml6b250YWxSZWw+IHsgfTsK
K3N0cnVjdCBTaGFwZVNlZ21lbnRMaW5lVG9WZXJ0aWNhbCA6IHB1YmxpYyBTaGFwZVNlZ21lbnRU
eXBlRGVmaW5pdGlvbjxMZW5ndGgsIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbEFicywgUGF0aFNlZ0xp
bmVUb1ZlcnRpY2FsUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50Q3VydmVUb0N1YmljIDog
cHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFs
dWUsIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnMsIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNSZWw+IHsgfTsK
K3N0cnVjdCBTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljIDogcHVibGljIFNoYXBlU2VnbWVu
dFR5cGVEZWZpbml0aW9uPEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlLCBQYXRoU2VnQ3Vy
dmVUb1F1YWRyYXRpY0FicywgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNSZWw+IHsgfTsKK3N0cnVj
dCBTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWNTbW9vdGggOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlw
ZURlZmluaXRpb248Q3VydmVUb0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSwgUGF0aFNlZ0N1cnZl
VG9DdWJpY1Ntb290aEFicywgUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aFJlbD4geyB9Oworc3Ry
dWN0IFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWNTbW9vdGggOiBwdWJsaWMgU2hhcGVTZWdt
ZW50VHlwZURlZmluaXRpb248TGVuZ3RoUG9pbnQsIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21v
b3RoQWJzLCBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aFJlbD4geyB9Oworc3RydWN0IFNo
YXBlU2VnbWVudEFyY1RvIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPEFyY1Rv
U2hhcGVTZWdWYWx1ZSwgUGF0aFNlZ0FyY0FicywgUGF0aFNlZ0FyY1JlbD4geyB9OworCisjZGVm
aW5lIEZPUl9FQUNIX1NIQVBFX1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKE1hY3JvKSBcCisgICAg
TWFjcm8oTW92ZVRvKSBcCisgICAgTWFjcm8oTGluZVRvKSBcCisgICAgTWFjcm8oTGluZVRvSG9y
aXpvbnRhbCkgXAorICAgIE1hY3JvKExpbmVUb1ZlcnRpY2FsKSBcCisgICAgTWFjcm8oQ3VydmVU
b0N1YmljKSBcCisgICAgTWFjcm8oQ3VydmVUb1F1YWRyYXRpYykgXAorICAgIE1hY3JvKEN1cnZl
VG9DdWJpY1Ntb290aCkgXAorICAgIE1hY3JvKEN1cnZlVG9RdWFkcmF0aWNTbW9vdGgpIFwKKyAg
ICBNYWNybyhBcmNUbykKKworY2xhc3MgQmFzaWNTaGFwZVNlZ21lbnQgOiBwdWJsaWMgUmVmQ291
bnRlZDxCYXNpY1NoYXBlU2VnbWVudD4geworcHVibGljOgorICAgIHR5cGVkZWYgU1ZHUGF0aFNl
Z1R5cGUgVHlwZTsKKyAgICB+QmFzaWNTaGFwZVNlZ21lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIFJlZjxCYXNpY1NoYXBl
U2VnbWVudD4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIGZyb20sIGNvbnN0IEJsZW5k
aW5nQ29udGV4dCYpIGNvbnN0OworICAgIGJvb2wgZXF1YWxzKGNvbnN0IEJhc2ljU2hhcGVTZWdt
ZW50JikgY29uc3Q7CisKKyAgICBzdGF0aWMgUGF0aCB0b1BhdGgoY29uc3QgTGVuZ3RoUG9pbnQm
IHN0YXJ0LCBjb25zdCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mLCBjb25zdCBGbG9h
dFNpemUmKTsKKworI2RlZmluZSBERUZJTkVfU0hBUEVfU0VHTUVOVF9UWVBFKFQpIFwKKyAgICBz
dGF0aWMgUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBjcmVhdGUjI1QoVHlwZSwgdHlwZW5hbWUgU2hh
cGVTZWdtZW50IyNUOjpWYWx1ZSYmKTsgXAorICAgIGNvbnN0IHR5cGVuYW1lIFNoYXBlU2VnbWVu
dCMjVDo6VmFsdWUmIGFzIyNUKCkgY29uc3Q7CisKKyAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5U
X1RZUEVfV0lUSF9WQUxVRShERUZJTkVfU0hBUEVfU0VHTUVOVF9UWVBFKQorCisgICAgc3RhdGlj
IFJlZjxCYXNpY1NoYXBlU2VnbWVudD4gY3JlYXRlQ2xvc2VQYXRoKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEJhc2ljU2hhcGVTZWdtZW50KFBhdGhTZWdDbG9zZVBhdGgp
KTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBCYXNpY1NoYXBlU2VnbWVudChUeXBlIHQpCisg
ICAgICAgIDogbV90eXBlKHQpIHsgfQorCitwcml2YXRlOgorICAgIFR5cGUgbV90eXBlOworfTsK
KworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNT
aGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNw
cAppbmRleCAwODZhNmY2YTYzYTI1ZTUwMjNhZTk1YmZhODRmNGZhN2Q0ZmZjMjYyLi42NzNmZWE2
YzRkMjYzMDBhNjg3ZjlkNWRhM2I4NjMzZTg1ZTAwMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKQEAgLTEyMSw2ICsxMjEsNDQgQEAgc3Ry
dWN0IFRyYW5zZm9ybWVkQnl0ZVN0cmVhbVBhdGhQb2xpY3kgOiBUaW55TFJVQ2FjaGVQb2xpY3k8
U1ZHUGF0aFRyYW5zZm9ybWVkQnkKICAgICBzdGF0aWMgUGF0aCBjcmVhdGVWYWx1ZUZvcktleShj
b25zdCBTVkdQYXRoVHJhbnNmb3JtZWRCeXRlU3RyZWFtJiBzdHJlYW0pIHsgcmV0dXJuIHN0cmVh
bS5wYXRoKCk7IH0KIH07CiAKK3N0cnVjdCBTaGFwZVNlZ21lbnRzV2l0aEJveCB7CisgICAgTGVu
Z3RoUG9pbnQgc3RhcnQ7CisgICAgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+IHNlZ21l
bnRzOworICAgIEZsb2F0UmVjdCBib3g7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hh
cGVTZWdtZW50c1dpdGhCb3gmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGJveCAh
PSBvdGhlci5ib3ggfHwgc2VnbWVudHMuc2l6ZSgpID09IG90aGVyLnNlZ21lbnRzLnNpemUoKSB8
fCBzdGFydCAhPSBvdGhlci5zdGFydCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlZ21lbnRzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICBpZiAoIXNlZ21lbnRzLmF0KGkpLT5lcXVhbHMob3RoZXIuc2VnbWVudHMuYXQoaSku
Z2V0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFw
ZVNlZ21lbnRzV2l0aEJveCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7CisgICAgfQorfTsKKworc3RydWN0IFNoYXBlU2VnbWVudHNQYXRoUG9s
aWN5IDogVGlueUxSVUNhY2hlUG9saWN5PFNoYXBlU2VnbWVudHNXaXRoQm94LCBQYXRoPiB7Cisg
ICAgc3RhdGljIGJvb2wgaXNLZXlOdWxsKGNvbnN0IFNoYXBlU2VnbWVudHNXaXRoQm94JiBzZWdt
ZW50c1dpdGhCb3gpCisgICAgeworICAgICAgICByZXR1cm4gc2VnbWVudHNXaXRoQm94LnNlZ21l
bnRzLmlzRW1wdHkoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGF0aCBjcmVhdGVWYWx1ZUZvcktl
eShjb25zdCBTaGFwZVNlZ21lbnRzV2l0aEJveCYgc2VnbWVudHNXaXRoQm94KQorICAgIHsKKyAg
ICAgICAgYXV0byBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aChzZWdtZW50c1dpdGhC
b3guc3RhcnQsIHNlZ21lbnRzV2l0aEJveC5zZWdtZW50cywgc2VnbWVudHNXaXRoQm94LmJveC5z
aXplKCkpOworICAgICAgICBwYXRoLnRyYW5zbGF0ZSh0b0Zsb2F0U2l6ZShzZWdtZW50c1dpdGhC
b3guYm94LmxvY2F0aW9uKCkpKTsKKyAgICAgICAgcmV0dXJuIHBhdGg7CisgICAgfQorfTsKKwog
c3RhdGljIGNvbnN0IFBhdGgmIGNhY2hlZEVsbGlwc2VQYXRoKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPEZsb2F0UmVjdCwg
UGF0aCwgNCwgRWxsaXBzZVBhdGhQb2xpY3k+PiBjYWNoZTsKQEAgLTE0NSw2ICsxODMsMTIgQEAg
c3RhdGljIGNvbnN0IFBhdGgmIGNhY2hlZFRyYW5zZm9ybWVkQnl0ZVN0cmVhbVBhdGgoY29uc3Qg
U1ZHUGF0aEJ5dGVTdHJlYW0mIHN0cmUKICAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KFNWR1Bh
dGhUcmFuc2Zvcm1lZEJ5dGVTdHJlYW0geyBzdHJlYW0sIHpvb20sIG9mZnNldCB9KTsKIH0KIAor
c3RhdGljIGNvbnN0IFBhdGgmIGNhY2hlZFNoYXBlU2VnbWVudHNQYXRoKGNvbnN0IExlbmd0aFBv
aW50JiBmcm9tLCBjb25zdCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIHNlZ21lbnRz
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRp
bnlMUlVDYWNoZTxTaGFwZVNlZ21lbnRzV2l0aEJveCwgUGF0aCwgNCwgU2hhcGVTZWdtZW50c1Bh
dGhQb2xpY3k+PiBjYWNoZTsKKyAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KFNoYXBlU2VnbWVu
dHNXaXRoQm94IHsgZnJvbSwgc2VnbWVudHMsIHJlY3QgfSk7Cit9CisKIGJvb2wgQmFzaWNTaGFw
ZUNpcmNsZTo6b3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJiBvdGhlcikgY29uc3QKIHsKICAg
ICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKQEAgLTQ2Myw2ICs1MDcsNzggQEAgdm9pZCBC
YXNpY1NoYXBlSW5zZXQ6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJib3R0b20tbGVmdC1yYWRpdXMiLCBib3R0b21MZWZ0UmFkaXVzKCkpOwogfQogCisK
K0Jhc2ljU2hhcGVTaGFwZTo6QmFzaWNTaGFwZVNoYXBlKGNvbnN0IExlbmd0aFBvaW50JiBmcm9t
LCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mJiBzZWdtZW50cykKKyAgICA6IG1fc2Vn
bWVudHMobWFrZVVuaXF1ZTxWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4+KFdURk1vdmUo
c2VnbWVudHMpKSkKKyAgICAsIG1fZnJvbShmcm9tKQoreworfQorCitjb25zdCBQYXRoJiBCYXNp
Y1NoYXBlU2hhcGU6OnBhdGgoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkKK3sKKyAgICBy
ZXR1cm4gY2FjaGVkU2hhcGVTZWdtZW50c1BhdGgobV9mcm9tLCAqbV9zZWdtZW50cywgYm91bmRp
bmdCb3gpOworfQorCitib29sIEJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PShjb25zdCBCYXNp
Y1NoYXBlJiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgQmFzaWNTaGFwZVNoYXBlJiBvdGhl
clNoYXBlID0gZG93bmNhc3Q8QmFzaWNTaGFwZVNoYXBlPihvdGhlcik7CisgICAgYXV0byBzaXpl
ID0gdGhpcy0+c2l6ZSgpOworICAgIGlmICh3aW5kUnVsZSgpICE9IG90aGVyU2hhcGUud2luZFJ1
bGUoKSB8fCBzaXplID09IG90aGVyU2hhcGUuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAo
IWF0KGkpLmVxdWFscyhvdGhlclNoYXBlLmF0KGkpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCYXNpY1NoYXBlU2hhcGU6
OmNhbkJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIG90aGVyKSBjb25zdAoreworICAgIGlmICh0eXBl
KCkgIT0gb3RoZXIudHlwZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHNp
emUgPSB0aGlzLT5zaXplKCk7CisgICAgYXV0byYgb3RoZXJTaGFwZSA9IGRvd25jYXN0PEJhc2lj
U2hhcGVTaGFwZT4ob3RoZXIpOworICAgIGlmICh3aW5kUnVsZSgpICE9IG90aGVyU2hhcGUud2lu
ZFJ1bGUoKSB8fCBzaXplICE9IG90aGVyU2hhcGUuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBp
ZiAoYXQoaSkudHlwZSgpICE9IG90aGVyU2hhcGUuYXQoaSkudHlwZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitSZWY8QmFzaWNT
aGFwZT4gQmFzaWNTaGFwZVNoYXBlOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBmcm9tLCBjb25z
dCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHR5cGUoKSA9
PSBmcm9tLnR5cGUoKSk7CisgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOworICAgIGF1dG8m
IGZyb21TaGFwZSA9IGRvd25jYXN0PEJhc2ljU2hhcGVTaGFwZT4oZnJvbSk7CisgICAgQVNTRVJU
KHNpemUgPT0gZnJvbVNoYXBlLnNpemUoKSk7CisKKyAgICBWZWN0b3I8UmVmPEJhc2ljU2hhcGVT
ZWdtZW50Pj4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUp
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoYXQoaSkuYmxlbmQoZnJvbVNoYXBlLmF0KGkpLCBjb250ZXh0KSk7CisKKyAgICBh
dXRvIG5ld1NoYXBlID0gQmFzaWNTaGFwZVNoYXBlOjpjcmVhdGUoV2ViQ29yZTo6YmxlbmQoZnJv
bVNoYXBlLmZyb20oKSwgbV9mcm9tLCBjb250ZXh0KSwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICBu
ZXdTaGFwZS0+c2V0V2luZFJ1bGUod2luZFJ1bGUoKSk7CisgICAgcmV0dXJuIG5ld1NoYXBlOwor
fQorCit2b2lkIEJhc2ljU2hhcGVTaGFwZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKK3sK
KyAgICB0cy5kdW1wUHJvcGVydHkoIndpbmQtcnVsZSIsIHdpbmRSdWxlKCkpOworICAgIC8vIEZJ
WE1FOiBwcmludCB0aGUgYnl0ZSBzdHJlYW0/Cit9CisKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBCYXNpY1NoYXBlUmFkaXVzOjpUeXBlIHJhZGl1c1R5cGUp
CiB7CiAgICAgc3dpdGNoIChyYWRpdXNUeXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9CYXNpY1NoYXBlcy5oCmluZGV4IDliZjAzNzM0NzZiNTNlNWM3YTRhOWJjNjIzOWU0
NWVjNGFkNTM0ZTQuLjMxZThmM2RmNWRjYjE2MmU4MjUzNzM0ZDRiNWNjZWI5MGNlYzkxOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCkBAIC0zMCw2
ICszMCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUg
Ikxlbmd0aFBvaW50LmgiCiAjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgogI2luY2x1ZGUgIldpbmRS
dWxlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ3LDYgKzQ4LDcgQEAgc3Ry
dWN0IEJsZW5kaW5nQ29udGV4dDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIFBhdGg7CiBjbGFz
cyBSZW5kZXJCb3g7CitjbGFzcyBCYXNpY1NoYXBlU2VnbWVudDsKIGNsYXNzIFNWR1BhdGhCeXRl
U3RyZWFtOwogCiBjbGFzcyBCYXNpY1NoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8QmFzaWNTaGFw
ZT4gewpAQCAtNTgsNyArNjAsOCBAQCBwdWJsaWM6CiAgICAgICAgIFBhdGgsCiAgICAgICAgIENp
cmNsZSwKICAgICAgICAgRWxsaXBzZSwKLSAgICAgICAgSW5zZXQKKyAgICAgICAgSW5zZXQsCisg
ICAgICAgIFNoYXBlCiAgICAgfTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAw
OwpAQCAtMzQzLDYgKzM0Niw0MSBAQCBwcml2YXRlOgogICAgIExlbmd0aFNpemUgbV9ib3R0b21M
ZWZ0UmFkaXVzOwogfTsKIAorY2xhc3MgQmFzaWNTaGFwZVNoYXBlIDogcHVibGljIEJhc2ljU2hh
cGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QmFzaWNTaGFwZVNoYXBlPiBjcmVhdGUoY29u
c3QgTGVuZ3RoUG9pbnQmIGZyb20sIFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYmIHNl
Z21lbnRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNTaGFwZVNo
YXBlKGZyb20sIFdURk1vdmUoc2VnbWVudHMpKSk7CisgICAgfQorCisgICAgdm9pZCBzZXRXaW5k
UnVsZShXaW5kUnVsZSB3aW5kUnVsZSkgeyBtX3dpbmRSdWxlID0gd2luZFJ1bGU7IH0KKyAgICBX
aW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0K
KworICAgIGNvbnN0IExlbmd0aFBvaW50JiBmcm9tKCkgY29uc3QgeyByZXR1cm4gbV9mcm9tOyB9
CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMtPnNpemUoKTsg
fQorICAgIGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1
cm4gbV9zZWdtZW50cy0+YXQoaSkuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBCYXNpY1NoYXBl
U2hhcGUoY29uc3QgTGVuZ3RoUG9pbnQmLCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4m
Jik7CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBUeXBlOjpTaGFw
ZTsgfQorCisKKyAgICBjb25zdCBQYXRoJiBwYXRoKGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OworCisgICAgYm9vbCBjYW5CbGVuZChjb25zdCBCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIGZyb20sIGNvbnN0
IEJsZW5kaW5nQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEJhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZvaWQgZHVtcChUZXh0
U3RyZWFtJikgY29uc3QgZmluYWw7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlZjxC
YXNpY1NoYXBlU2VnbWVudD4+PiBtX3NlZ21lbnRzOworICAgIFdpbmRSdWxlIG1fd2luZFJ1bGUg
eyBXaW5kUnVsZTo6Tm9uWmVybyB9OworICAgIExlbmd0aFBvaW50IG1fZnJvbTsKK307CisKIFdU
Rjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBCYXNpY1No
YXBlUmFkaXVzJik7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiwgY29uc3QgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUmKTsKIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBCYXNpY1NoYXBlJik7CkBAIC0zNTks
MyArMzk3LDQgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQRShCYXNpY1NoYXBl
RWxsaXBzZSwgQmFzaWNTaGFwZTo6VHlwZTo6RWxsaXBzZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkFTSUNfU0hBUEUoQmFzaWNTaGFwZVBvbHlnb24sIEJhc2ljU2hhcGU6OlR5cGU6OlBvbHln
b24pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVQYXRoLCBC
YXNpY1NoYXBlOjpUeXBlOjpQYXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQ
RShCYXNpY1NoYXBlSW5zZXQsIEJhc2ljU2hhcGU6OlR5cGU6Okluc2V0KQorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CQVNJQ19TSEFQRShCYXNpY1NoYXBlU2hhcGUsIEJhc2ljU2hhcGU6OlR5cGU6
OlNoYXBlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGQzNDUzNDhmOWQ5ZmMyMTIzZDE5NWNhM2E5YzkyYjM1MTRlMzI4NGUu
LjRmNjYxMDMwZDJkNDFhYWYxYWI5NGI5M2MxNDIxY2MzZjI3MmQxNDEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMi0wNC0xOSAgTm9hbSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgW0NTUyBTaGFwZXNdIEFkZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzkwOTE5NDc2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogdW5za2lwIENTUyBzaGFwZSgpIHRl
c3RzCisKIDIwMjItMDQtMTggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViR1BVXSBVbnNraXAgYXBpL3ZhbGlkYXRpb24vY3JlYXRlU2FtcGxl
ci5odG1sIPCfjokKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDY0ZWE2NTdlNmUw
NDJhYzNkMTAxOGM4ZGQ4ZDhmYzAyMjVmZWJhMDcuLmFkZjY0NWUyMzkyZDVhOTc5N2YyZjdjNjRm
OWRiMGYzMjRmMDc2YzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIwIEBACisyMDIyLTA0LTE5ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBbQ1NTIFNoYXBlc10gQWRkIHN1cHBvcnQgZm9yIHNoYXBlKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODM3MQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vOTA5MTk0NzY+CisKKyAgICAgICAgQW1lbmRlZCB0ZXN0cyB0byBzdXBwb3J0
IENTUyBzaGFwZSgpCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNr
aW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWw6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRo
LXNoYXBlLTAwMy5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1h
c2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRtbDoKKyAgICAg
ICAgICAgICAgICBOZWVkZWQgdG8gY2hhbmdlIHRoZSB0ZXN0IGEgYml0IGJlY2F1c2Ugb2Ygc3Ry
YXkgcGl4ZWxzLiBXaWxsIHVwc3RyZWFtLgorCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1tYXNraW5nL3BhcnNpbmcvY2xpcC1wYXRoLXNoYXBlLXBhcnNpbmctZXhwZWN0
ZWQudHh0OgorICAgICAgICAgICAgICAgIE5vdyBwYXNzZXMKKwogMjAyMi0wNC0xOCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVu
dCBDU1NUcmFuc2Zvcm1WYWx1ZS5pczJECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhZTc2MjZiM2Jm
MzlhN2FiODY2YmY0YzQyOGY2YTM4Y2IxODYxOWE0Li5iZjA5MmRkNTJkM2FiMWUwNTQ5OGZhYjBj
NmU5ZGU4ZWMzOWQ4NGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIxOTksMTUgKzIxOTksNiBA
QCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBh
dGgvY2xpcC1wYXRoLXZpZXdCb3gtMWMuaAogd2Via2l0Lm9yZy9iLzEwNDQ0MiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRo
LXVybC1yZWZlcmVuY2UtY2hhbmdlLWZyb20tZW1wdHkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzIyOTUxMCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLWRlc2NlbmRhbnQtdGV4dC1tdXRhdGVk
LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgQ1NTIHNoYXBlKCkKLXdlYmtpdC5v
cmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tp
bmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMi11bml0cy5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUt
MDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAt
cGF0aC1zaGFwZS0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
ODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlw
LXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1t
YXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtaW50ZXJwb2xhdGlvbi0wMDEuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBl
LWludGVycG9sYXRpb24tMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9y
Zy9iLzIyOTM3MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2lu
Zy9jbGlwL2NsaXAtZmlsdGVyLW9yZGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8yMjkzNzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1h
c2tpbmcvbWFzay1pbWFnZS9tYXNrLWltYWdlLXVybC1sb2NhbC1tYXNrLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMjkzNzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvbWFzay1pbWFnZS9tYXNrLWltYWdlLXVybC1yZW1vdGUt
bWFzay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgv
Y2xpcC1wYXRoLXNoYXBlLTAwMy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0
aC1zaGFwZS0wMDMtZXhwZWN0ZWQuaHRtbAppbmRleCA0NmUwOThjNGViNjQ4OWZjNDQzMDFkNmJm
OWIyNDNlODM2YjJjYTMxLi4zMWU5N2M5MTQ3NDQ4YWE4NDkyNjQyZTQxOTZhYTkxYjVjYTZhNDg4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy1leHBlY3RlZC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWwK
QEAgLTksMTQgKzksMjMgQEAKICAgICB3aWR0aDogMTAwcHg7CiAgICAgaGVpZ2h0OiAxMDBweDsK
ICAgfQotICAjcmVmIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKworICAjcmVmLCAj
YWN0dWFsIHsKICAgICBjbGlwLXBhdGg6IHBhdGgobm9uemVybywgIk0gMTAgMTAsIFEgNDAgMCA2
MCAyMCwgVCA5MCAwLCBjIDEwIDQwIDIwIDIwIC0yMCA2MCwgcyAtMTAgNzAgLTQwIC0xMCIpOwog
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgfQorCisgICNyZWYgeworICAgIGJhY2tncm91bmQt
Y29sb3I6IHJlZDsKKyAgfQorCisgICNhY3R1YWwgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworICB9CiA8L3N0eWxlPgogPGJvZHk+CiAgIDxwPllvdSBzaG91bGQgc2VlIG5vIHJlZC48
L3A+CiAgIDxkaXYgaWQ9InJlZiI+PC9kaXY+CisgIDxkaXYgaWQ9ImFjdHVhbCI+PC9kaXY+CiA8
L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBl
LTAwMy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbAppbmRleCAy
MmU3ZDlhYWY1Mzc0YzliN2U0ZTNjMmQ1MGVjZWZiY2VjMTM0YjY2Li5lMDE3MDkwMDVhYzhjZjhl
MzVkMDYyYTY4NTdiNjQ2MjdiNWViZTA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1w
YXRoLXNoYXBlLTAwMy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAz
Lmh0bWwKQEAgLTYsNiArNiw3IEBACiAgIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InJlZmVyZW5j
ZS9jbGlwLXBhdGgtc2hhcGUtMDAzLXJlZi5odG1sIj4KICAgPG1ldGEgbmFtZT0iYXNzZXJ0IiBj
b250ZW50PSJUaGUgY2xpcC1wYXRoIHByb3BlcnR5IHRha2VzIHRoZSBiYXNpYyBzaGFwZQogCSdz
aGFwZSgpJyBmb3IgY2xpcHBpbmcuIFRlc3QgY3VydmVzLiI+CisgIDxtZXRhIG5hbWU9ImZ1enp5
IiBjb250ZW50PSJtYXhEaWZmZXJlbmNlPTgwOyB0b3RhbFBpeGVscz0zOTQiPgogPC9oZWFkPgog
PHN0eWxlPgogICBkaXYgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFw
ZS0wMDQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4
cGVjdGVkLmh0bWwKaW5kZXggZWM4Zjk0MTA3OTUxMzhmN2EzNDkwZDdhNDE2OWI1ZWJkNWUzNzQ3
NC4uMTBmNDU3YjkxMTg0ZjEwMTMwNjg5YTI3MzA1ZmMyZGQzNjZlMjgzMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tp
bmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9j
bGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwNC1leHBlY3RlZC5odG1sCkBAIC05LDE0ICs5LDIz
IEBACiAgICAgd2lkdGg6IDEwMHB4OwogICAgIGhlaWdodDogMTAwcHg7CiAgIH0KLSAgI3JlZiB7
Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisKKyAgI3JlZiwgI2FjdHVhbCB7CiAgICAg
Y2xpcC1wYXRoOiBwYXRoKG5vbnplcm8sICJNIDIwIDIwIEEgMjUgMTIgMCAwIDEgODAgMjAsIGEg
MzMgMzMgMTIwIDEgMSAtNDAgNTAsIEEgMjAgMjUgMCAwIDAgMjAgMjAiKTsKICAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CiAgIH0KKworICAjcmVmIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7
CisgIH0KKworICAjYWN0dWFsIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgfQog
PC9zdHlsZT4KIDxib2R5PgogICA8cD5Zb3Ugc2hvdWxkIHNlZSBubyByZWQuPC9wPgogICA8ZGl2
IGlkPSJyZWYiPjwvZGl2PgorICA8ZGl2IGlkPSJhY3R1YWwiPjwvZGl2PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2luZy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtbWFza2luZy9wYXJzaW5nL2NsaXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4
dAppbmRleCBlOTRhZWU4YjZiNGNiMDRmN2FmZTgyYWQ2NWIzYzE0OGJjNDExMjVmLi5lMDU4MGVk
ZmMxZDhlZjMyNzc1YjVkOTZmMzg3ZWU1ZTdhNDdhMzBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5n
L2NsaXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2Ns
aXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dApAQCAtMSwyNCArMSwyNCBAQAogCi1G
QUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMHB4IDBweCwgbGluZSB0byAx
MHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFs
czogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBl
LnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShldmVub2RkIGZyb20gMHB4IDBweCwgbGluZSB0
byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2Vx
dWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJ
TCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShub256ZXJvIGZyb20gMHB4IDBweCwgbGlu
ZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90
X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgot
RkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZSggIGZyb20gMHB4ICAgIDBweCwgbGlu
ZSAgdG8gMTBweCAgMTBweCAgICAgKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNz
ZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFs
dWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxZW0gNTAlLCBs
aW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9u
b3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIi
Ci1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKEV2ZW5PZGQgZnJvbSAwcHggMFB4
LCBDTE9TRSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxz
OiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUu
c3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMWNoIDUwcHgsIGxpbmUgdG8gMTByZW0g
MTB2aCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBw
cm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5
bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMWNoIC01MHB4LCBsaW5lIHRvIC0xMCUgMTJw
eCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9w
ZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVb
J2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBtb3ZlIGJ5IDEwcHggNXB4LCBs
aW5lIGJ5IDIwcHggNDAlLCBjbG9zZSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFz
c2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZh
bHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4
LCBobGluZSBieSAxMHB4LCB2bGluZSB0byA1cmVtKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkg
dmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2Fs
bG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAx
MHB4IDEwcHgsIHZsaW5lIGJ5IDUlLCBobGluZSB0byAxdncpIiBzaG91bGQgc2V0IHRoZSBwcm9w
ZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3Qg
ZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShm
cm9tIDEwcHggMTBweCwgY3VydmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNob3VsZCBz
ZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQg
YmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCdd
ID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEwcmVtIDFw
eCAyMHZoIDFjaCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1
YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlM
IGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2ZSBieSA1
MHB4IDIwcHggdmlhIDEwcmVtIDFweCAyMHZoIDFjaCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5
IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNh
bGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20g
MTBweCAxMHB4LCBzbW9vdGggdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUg
c2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0g
InNoYXBlKGZyb20gMTBweCAxMHB4LCBzbW9vdGggdG8gNTBweCAxcHQpIiBzaG91bGQgc2V0IHRo
ZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNl
dCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJz
aGFwZShmcm9tIDEwcHggMTBweCwgYXJjIHRvIDUwcHggMXB0IG9mIDEwcHggMTBweCkiIHNob3Vs
ZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91
bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0
aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBhcmMgdG8gNTBweCAxcHQgb2YgMTBweCAxMHB4
IHNtYWxsIHJvdGF0ZSAwZGVnKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0
X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUg
IiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMCUgMXJlbSwgYXJj
IHRvIDUwcHggMXB0IG9mIDIwJSBjdyBsYXJnZSByb3RhdGUgMjVkZWcpIiBzaG91bGQgc2V0IHRo
ZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNl
dCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJz
aGFwZShldmVub2RkIGZyb20gMHB4IDBweCwgY2xvc2UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0
eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlz
YWxsb3dlZCB2YWx1ZSAiIgorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9t
IDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFs
dWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAw
cHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BB
U1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUobm9uemVybyBmcm9tIDBweCAwcHgsIGxp
bmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5z
dHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoICBmcm9tIDBweCAgICAwcHgsIGxpbmUgIHRvIDEw
cHggIDEwcHggICAgICkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5
bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMWVtIDUwJSwgbGluZSB0byAxMHB4IDEwcHgp
IiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgn
XSA9ICJzaGFwZShFdmVuT2RkIGZyb20gMHB4IDBQeCwgQ0xPU0UpIiBzaG91bGQgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFj
aCA1MHB4LCBsaW5lIHRvIDEwcmVtIDEwdmgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1
ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFjaCAtNTBweCwgbGlu
ZSB0byAtMTAlIDEycHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0
eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgbW92ZSBieSAxMHB4IDVw
eCwgbGluZSBieSAyMHB4IDQwJSwgY2xvc2UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1
ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgaGxp
bmUgYnkgMTBweCwgdmxpbmUgdG8gNXJlbSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVl
CitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCB2bGlu
ZSBieSA1JSwgaGxpbmUgdG8gMXZ3KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BB
U1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRv
IDUwcHggMjBweCB2aWEgMTByZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQor
UEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUg
dG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQgc2V0IHRoZSBwcm9w
ZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHgg
MTBweCwgY3VydmUgYnkgNTBweCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQg
c2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShmcm9tIDEwcHggMTBweCwgc21vb3RoIHRvIDUwcHggMjBweCB2aWEgMTByZW0gMSUpIiBzaG91
bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJz
aGFwZShmcm9tIDEwcHggMTBweCwgc21vb3RoIHRvIDUwcHggMXB0KSIgc2hvdWxkIHNldCB0aGUg
cHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAx
MHB4IDEwcHgsIGFyYyB0byA1MHB4IDFwdCBvZiAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEw
cHggMTBweCwgYXJjIHRvIDUwcHggMXB0IG9mIDEwcHggMTBweCBzbWFsbCByb3RhdGUgMGRlZyki
IHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCdd
ID0gInNoYXBlKGZyb20gMTAlIDFyZW0sIGFyYyB0byA1MHB4IDFwdCBvZiAyMCUgY3cgbGFyZ2Ug
cm90YXRlIDI1ZGVnKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHls
ZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGNsb3NlKSIgc2hv
dWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKIFBBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAi
c2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGNsb3NlIHBhdGgpIiBzaG91bGQgbm90IHNldCB0
aGUgcHJvcGVydHkgdmFsdWUKIFBBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUobm9u
emVybywgZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBub3Qgc2V0IHRo
ZSBwcm9wZXJ0eSB2YWx1ZQogUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9t
IDEwcHggMTBweCwgY3VydmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSkiIHNob3VsZCBub3Qgc2V0
IHRoZSBwcm9wZXJ0eSB2YWx1ZQo=
</data>
<flag name="commit-queue"
          id="486579"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457867</attachid>
            <date>2022-04-19 01:11:50 -0700</date>
            <delta_ts>2022-04-19 02:51:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238371-20220419111147.patch</filename>
            <type>text/plain</type>
            <size>96860</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0MDhiYzRlZDIxNmNh
YWM1ZWVlZTUyMDkyNWQ3NzYzOGU0M2QwZC4uYzhmMjI3MTg0NDc0MGQ5Njc0Mjg0YzY3ODkyNGUx
ZjgwODQyODU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0xOSAgTm9h
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFk
ZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBDU1Mgc2hhcGUoKSBieSBpbnRyb2R1Y2luZyBzaGFwZSBzZWdtZW50IGFuZCBCYXNpY1NoYXBl
U2hhcGUuCisgICAgICAgIFNoYXBlU2hhcGUgaXMgYSB2ZWN0b3Igb2Ygc2hhcGUgc2VnbWVudHMs
IHdoZXJlIGVhY2ggc2VnbWVudCBibGVuZHMgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgVGhlIHNo
YXBlIHVsdGltYXRlbHkgY3JlYXRlcyBhbiBTVkdQYXRoU291cmNlIHRvIGNvbnZlcnQgdGhlIHJl
c3BvbnNpdmUgc2hhcGUsIHdoaWNoCisgICAgICAgIGlzIGJhc2VkIG9uIExlbmd0aCB2YWx1ZXMs
IHRvIGFuIGFic29sdXRlIFBhdGggb2JqZWN0IHRoYXQgY2FuIGJlIGRyYXduLgorCisgICAgICAg
IFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXNoYXBlcy0yLyNzaGFwZS1mdW5jdGlv
bgorCisgICAgICAgIFVuc2tpcHBlZCBzZXZlcmFsIHJlbGV2YW50IFdQVHMuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgICAgICBOZXcgZmlsZXMg
YWRkZWQKKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZhbHVlRm9yQmFzaWNTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9MZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpiYXNpY1NoYXBlRm9yVmFsdWUpOgor
ICAgICAgICAgICAgICAgIEFkZGVkIHRoZSBCYXNpY1NoYXBlU2hhcGUgdHlwZQorCisgICAgICAg
ICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Q1NTQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2lj
U2hhcGVTaGFwZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6
CisgICAgICAgICAgICAgICAgQWRkZWQgdGhlIENTU0Jhc2ljU2hhcGVTaGFwZQorCisgICAgICAg
ICogY3NzL0NTU1NoYXBlU2VnbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
aGFwZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NT
U2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudDo6Q1NTU2hh
cGVTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OnRhcmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6YXJndW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OmFmZmluaXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjphcHBlbmRBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpDU1NTaGFwZVNlZ21l
bnRWYWx1ZSk6CisgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB0byBkbyB3aXRoIHRoZSBzZWdt
ZW50IG9mIHRoZSBzaGFwZSB3aGlsZSBpbiBDU1Mgc3BhY2UsCisgICAgICAgICAgICAgICAgaW5j
bHVkaW5nIHNlcmlhbGl6YXRpb24gZm9yIGdldENvbXB1dGVkU3R5bGUoKQorCisgICAgICAgICog
Y3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzU2hhcGVTZWdtZW50VmFsdWUgY29uc3Qp
OgorICAgICAgICAgICAgICAgIENTU1NoYXBlU2VnbWVudCBpcyBhIHR5cGUgb2YgdmFsdWUKKwor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAgICAgICAgIE5ldyBr
ZXl3b3JkcyBmb3Igc2hhcGUoKQorCisgICAgICAgICogY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9u
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFBvaW50VG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0FyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6dG9DU1NB
cmdzPExlbmd0aFBvaW50Pik6CisgICAgICAgIChXZWJDb3JlOjp0b0NTU1NoYXBlU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpzZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpmcm9t
Q1NTU2hhcGVTZWdtZW50KToKKyAgICAgICAgKiBjc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmg6
IEFkZGVkLgorICAgICAgICAgICAgICAgIENvbnZlcnRpbmcgc2hhcGUgc2VnbWVudHMgdG8vZnJv
bSBDU1Mgc3BhY2UKKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNoYXBlU2VnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVC
YXNpY1NoYXBlKToKKyAgICAgICAgICAgICAgICBQYXJzZSBhIHNoYXBlIHByb3BlcnR5CisKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OnZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzaWNTaGFwZVNlZ21lbnQ6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6YmxlbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFyY1RvU2hhcGVTZWdWYWx1
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVu
dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6Y3Jl
YXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50OjpCYXNp
Y1NoYXBlU2VnbWVudCk6CisgICAgICAgICAgICAgICAgQmxlbmRpbmcsIGNvbXBhcmluZyBhbmQg
Y29udmVydGluZyB0byBhYnNvbHV0ZSBwYXRoCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhCb3g6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhC
b3g6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1Bh
dGhQb2xpY3k6OmlzS2V5TnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVNlZ21lbnRzUGF0
aFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU2hh
cGVTZWdtZW50c1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpCYXNp
Y1NoYXBlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpwYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6YmxlbmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZVNoYXBlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2V0V2luZFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpmcm9tIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlU2hhcGU6OmF0IGNvbnN0KToKKyAgICAgICAgICAgICAgICBBZGQgQmFz
aWNTaGFwZVNoYXBlCisKIDIwMjItMDQtMTggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgUGxhdGZvcm1NZWRpYUVuZ2luZUNsYXNzTmFt
ZSBtYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODBiYmVhOGU3MjM0ZjA1NWVmZDZlMzQwMDc1
MGIzN2YzMzE3OGNhZS4uZWJlYzFlMGIwZDhjODhjMzk0NDRkZDg4NGI4MDNlNDk3MmU3MDY0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC01NTQsNiArNTU0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9DU1NSdWxlTGlzdC5oCiAgICAgY3NzL0NTU1Nl
bGVjdG9yLmgKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKyAgICBjc3MvQ1NTU2hhcGVTZWdt
ZW50LmgKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCiAgICAgY3NzL0NTU1N0eWxlUnVs
ZS5oCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMTg4Nyw2ICsxODg4LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hh
cGUuaAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCiAKKyAgICByZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaAogICAgIHJlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5oCiAgICAgcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAogICAgIHJlbmRlcmlu
Zy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBhZjNkMDZhNWIwYmJjNjhm
YzAxMTMzYmNjZmUxZjJjZDk3MGU4OWUuLjM0ZDMyYTg4MTYyNTdkNDVkZGFkOTgyYTk3YzdjMTRi
NzFkMDM4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC03NzEsNiArNzcxLDcgQEAgY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmNwcAogY3NzL0NTU1NlbGVjdG9yLmNwcAogY3NzL0NTU1NlbGVjdG9yTGlz
dC5jcHAKIGNzcy9DU1NTaGFkb3dWYWx1ZS5jcHAKK2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCiBj
c3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKIGNzcy9DU1NTdHlsZVJ1bGUuY3BwCiBjc3MvQ1NT
U3R5bGVTaGVldC5jcHAKQEAgLTI0NDksNiArMjQ1MCw3IEBAIHJlbmRlcmluZy9zaGFwZXMvUmVj
dGFuZ2xlU2hhcGUuY3BwCiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogcmVuZGVyaW5nL3No
YXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNw
cAorcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmNwcAogcmVuZGVyaW5nL3N0eWxl
L0JvcmRlckRhdGEuY3BwCiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCiByZW5kZXJp
bmcvc3R5bGUvRmlsbExheWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2MTc2MzlkZjcyMDZmYzQ4NDU3MDQ4ZWU0NGJh
ODk0M2M1MmM3YTIuLmY1NDE5MDgyMzdkNjE1NGJlNDIwZWQ2N2M5MDg1ZTY0NTlkMDQ1NGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ0NTIsNiArNDQ1MiwxMCBAQAogCQlDQTNCRjY3RTEwRDk5QkFFMDBFNkNFNTMgLyogU2Ny
b2xsQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNBNkMxNTMwMjIwQjk4
Q0MwMDU1Q0JGQyAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFBRTNCODFGQjgwRUFFMDBGNUVGQjIgLyog
SlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNBN0U5QjQ5MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVs
UGFpbnRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDQTdFOUI0NzI0MzYxREM1MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5o
ICovOyB9OworCQlDQTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBODE2Q0Iz
Mjc3ODQ4MUUwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oICovOyB9OworCQlDQTgxNkNC
OTI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyog
Q1NTU2hhcGVTZWdtZW50LmggKi87IH07CisJCUNBODE2Q0JDMjc3ODlBQUQwMDJCRDNDNiAvKiBT
aGFwZVNlZ21lbnRGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0E4MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1
bmN0aW9ucy5jcHAgKi87IH07CisJCUNBODE2Q0JEMjc3ODlBQUQwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRGdW5jdGlvbnMu
aCAqLzsgfTsKIAkJQ0FFOUY5MTAxNDY0NDFGMDAwQzI0NUIwIC8qIENTU0FzcGVjdFJhdGlvVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBRTlG
OTBFMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggKi87IH07CiAJCUNC
MzhGRDUyMUNDRjkzOTQwMDU5MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCMzhGRDRFMUNDRjkzN0UwMDU5
MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuaCAqLzsgfTsKIAkJQ0IzOEZENUIxQ0QyMzI1QjAw
NTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0IzOEZENTkxQ0QyMzE0NTAwNTkyQTNGIC8q
IEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oICovOyB9OwpAQCAtMTU5NDcsNiArMTU5NTEs
NyBAQAogCQlDQTA5MUQ4NjIzQ0Y5MDc4MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHlsZUltYWdlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0EwOTFEODkyM0NGOTA4ODAwQUQ0MzQ2IC8qIFN0eWxlSW1hZ2VTZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3R5bGVJbWFnZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQTE2MzVEQzIwNzJFNzY5MDBFN0QyQ0UgLyogUmVmZXJyZXJQb2xpY3kuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmZXJyZXJQb2xpY3kuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDQTE2NkNDQjI3ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hh
cGVTZWdtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1NoYXBlU2VnbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMTkzM0Q1MjQwN0Q2NDAwMDcxMjQxQSAvKiBQ
ZXJmb3JtYW5jZVBhaW50VGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZvcm1hbmNlUGFpbnRU
aW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0ExOTMzRDgyNDA3RURDRjAw
NzEyNDFBIC8qIFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDQTNBNEFBQjI1NDE2RTNDMDA2Q0RBRTIgLyogSW1hZ2VSZXNvbHV0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlUmVzb2x1dGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTk2Miw2ICsxNTk2NywxMSBAQAogCQlDQTZD
MTUzODIyMEQxRUIzMDA1NUNCRkMgLyogSlNJREJDdXJzb3JXaXRoVmFsdWVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJDdXJzb3JXaXRoVmFsdWVD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTdFOUI0NzI0MzYxREM1
MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb250ZW50ZnVsUGFpbnRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNBN0U5QjQ4MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFpbnRD
aGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRm
dWxQYWludENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNC
MzI3Nzg0ODFFMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0E4MTZDQjQyNzc4NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2ljU2hhcGVTZWdt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4MTZDQjgyNzc4NDgyRTAw
MkJEM0M2IC8qIENTU1NoYXBlU2VnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDU1NTaGFwZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4
MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFwZVNlZ21lbnRGdW5jdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCQjI3Nzg5QUE3MDAyQkQzQzYg
LyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQUU5RjkwRDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIw
IC8qIENTU0FzcGVjdFJhdGlvVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
QjM4RkQ0QTFDQ0NGMkREMDA1OTJBM0YgLyogUGVyZm9ybWFuY2VFbnRyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJmb3JtYW5jZUVudHJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5Njg4LDYgKzI5Njk4LDggQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCUZCRDZBRjgyMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi8s
CiAJCQkJRkJENkFGODMxNUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8sCisJCQkJ
Q0E4MTZDQjQyNzc4NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJ
CQlDQTgxNkNCMzI3Nzg0ODFFMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLywKIAkJ
CQkwRjI4M0E5MTIzNTYzMTI2MDA0Nzk0Q0EgLyogQm9yZGVyRGF0YS5jcHAgKi8sCiAJCQkJQkM1
RUI1RTAwRTgxQkU4NzAwQjI1OTY1IC8qIEJvcmRlckRhdGEuaCAqLywKIAkJCQlCQzVFQjVEQTBF
ODFCN0VBMDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCAqLywKQEAgLTMxOTYxLDYgKzMxOTczLDgg
QEAKIAkJCQlFNEMxNzg5NjBFRTY5MDM4MDA4MjRENjkgLyogQ1NTU2VsZWN0b3JMaXN0LmggKi8s
CiAJCQkJQTgwRTZDQ0EwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmNwcCAqLywK
IAkJCQlBODBFNkNCRTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU2hhZG93VmFsdWUuaCAqLywKKwkJ
CQlDQTE2NkNDQjI3ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJ
CQlDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggKi8sCiAJCQkJ
N0NERThFQkMxRjE5M0JDNTAwMTY4RkU3IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uY3BwICovLAog
CQkJCUE4MEU2RTBEMEExOTkxMUMwMDdGQjhDNSAvKiBDU1NTdHlsZURlY2xhcmF0aW9uLmggKi8s
CiAJCQkJMTQyMDExQUUwQTAwMzExNzAwODMwM0Y5IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaWRs
ICovLApAQCAtMzIwOTYsNiArMzIxMTAsOCBAQAogCQkJCTQzQjg1RUQ2MThDQkVDOTcwMEUzMUFG
NCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuaW4gKi8s
CiAJCQkJMjZBQTBGOUExOEQyOTczRDAwNDE5MzgxIC8qIFNlbGVjdG9yUHNldWRvRWxlbWVudFR5
cGVNYXAuaW4gKi8sCiAJCQkJNDMxMDdCRTExOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNl
dWRvVHlwZU1hcC5oICovLAorCQkJCUNBODE2Q0JBMjc3ODlBQTIwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuY3BwICovLAorCQkJCUNBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBT
aGFwZVNlZ21lbnRGdW5jdGlvbnMuaCAqLywKIAkJCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQg
LyogU3R5bGVDb2xvci5jcHAgKi8sCiAJCQkJOTQxODI3ODkxRDhCMjQyMjAwNDkyNzY0IC8qIFN0
eWxlQ29sb3IuaCAqLywKIAkJCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRp
YS5jcHAgKi8sCkBAIC0zMzg1Niw2ICszMzg3Miw3IEBACiAJCQkJNzE1NkJDQTEyMUNBMzUwRjAw
NTM0Mzk3IC8qIEJhc2ljRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4
QTE1RUYyNURGMDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkJENkFGOEMxNUVGMjYwNDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDQTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFCMjNBMzI4MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVU
ZXh0SW5zZXJ0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCM0QwQTQ0RUZDNzAw
Rjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEy
NDBEMDA2QzFEMDBFRjZGMjYgLyogQmlkaUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMzQz
NDcsNiArMzQzNjQsNyBAQAogCQkJCUU0QzE3ODlCMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxl
Y3Rvckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0REU1QzhFMUQ4MDgwMjcwMDE2NEYyQSAv
KiBDU1NTZWxlY3RvclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRTgwQTE5ODlD
QTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNC
OTI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQTUzOEEyQTI2RjAxMDQyMDA5NjVGQzggLyogQ1NTU2tldy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkE1MzhBMkIyNkYwMTA0NTAwOTY1RkM4IC8qIENTU1NrZXdYLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyQTUzOEEyQzI2RjAxMDQ4MDA5NjVGQzggLyogQ1NTU2tld1kuaCBpbiBIZWFkZXJzICov
LApAQCAtMzc0ODQsNiArMzc1MDIsNyBAQAogCQkJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAv
KiBTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NUIxNzVENDFFRTAwQzIxRUM4IC8q
IFNoYXBlSW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTUyMTc1RDNGM0UwMEMy
MUVDOCAvKiBTaGFwZU91dHNpZGVJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNCRDI3
Nzg5QUFEMDAyQkQzQzYgLyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDFBRjE1MDE2NTZGMTUxMDBDNkQ0RjcgLyogU2hhcGVWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUQ5RjBGQzEyMTIyMDI5QjAwNUQ4RkQ0IC8qIFNoYXJlRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE0QTk1NEUwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zOTAzMCw2ICszOTA0OSw3IEBACiAJCQkJNDNCODVFRDQxOENCRUM1
MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1h
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkFBMEY5RTE4RDJBMThCMDA0MTkzODEgLyogU2Vs
ZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0Q1OERG
RDFGOTU2NUE4MDAxMTI3OTEgLyogU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0E4
MTZDQkMyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MURGMkQ1RTI3QTk0NTJBMDBGMjVBMjEgLyogU2hhcmVkVmlkZW9GcmFt
ZUluZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTBBODFGOTAyMkE0MDA1MTAyQ0UgLyog
U29mdExpbmtMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUFBMTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCmluZGV4IDlkZjJjZmY3
OTU3ZTQ1ZDg5YjcyMWE3MWU3NWUyOGQ4NWE1ZTc5YTcuLjE3NzIyMjZhZmViNzNkODQ0OTU5N2Q2
YWRlMzY4M2U2N2IxZDVjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1No
YXBlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0
aW9ucy5jcHAKQEAgLTMwLDEzICszMCwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkJhc2ljU2hhcGVGdW5jdGlvbnMuaCIKIAorI2luY2x1ZGUgIkJhc2ljU2hhcGVTZWdtZW50
LmgiCiAjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKICNpbmNsdWRlICJDU1NCYXNpY1NoYXBlcy5o
IgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJDU1NT
aGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJQYWly
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVh
bS5oIgorI2luY2x1ZGUgIlNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTE1NCw2ICsxNTcsMjIgQEAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1
ZUZvckJhc2ljU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCYXNpY1MKICAg
ICAgICAgYmFzaWNTaGFwZVZhbHVlID0gV1RGTW92ZShpbnNldFZhbHVlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorICAgIGNhc2UgQmFzaWNTaGFwZTo6VHlwZTo6U2hhcGU6IHsKKyAgICAgICAg
YXV0byYgc2hhcGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGUpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
KyAgICAgICAgYXV0byBzaXplID0gc2hhcGUuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHRvQ1NTU2hh
cGVTZWdtZW50KHN0eWxlLCBzaGFwZS5hdChpKSkpOworCisgICAgICAgIGF1dG8gZnJvbSA9IGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoCisgICAgICAgICAgICBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc2hhcGUuZnJvbSgpLngoKSwgc3R5bGUpLAorICAgICAgICAgICAg
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYXBlLmZyb20oKS55KCksIHN0eWxlKSwgUGFpcjo6
SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSkpOworCisgICAgICAgIGF1dG8g
c2hhcGVWYWx1ZSA9IENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3JlYXRlKFdURk1vdmUoZnJvbSksIFdU
Rk1vdmUocmVzdWx0KSk7CisgICAgICAgIHNoYXBlVmFsdWUtPnNldFdpbmRSdWxlKHNoYXBlLndp
bmRSdWxlKCkpOworICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBXVEZNb3ZlKHNoYXBlVmFsdWUp
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShiYXNpY1NoYXBlVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0xNjQs
NiArMTgzLDEyIEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjCiAgICAgcmV0dXJuIHZhbHVlLT5j
b252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IEZpeGVkRmxvYXRDb252ZXJz
aW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oY29udmVyc2lv
bkRhdGEpOwogfQogCitzdGF0aWMgTGVuZ3RoUG9pbnQgY29udmVydFRvTGVuZ3RoUG9pbnQoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKK3sKKyAgICBhdXRvJiBwYWlyID0gKihkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgpKTsKKyAgICByZXR1cm4geyBjb252ZXJ0VG9MZW5ndGgo
Y29udmVyc2lvbkRhdGEsIHBhaXIuZmlyc3QoKSksIGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9u
RGF0YSwgcGFpci5zZWNvbmQoKSkgfTsKK30KKwogc3RhdGljIExlbmd0aFNpemUgY29udmVydFRv
TGVuZ3RoU2l6ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0
YSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlKQogewogICAgIGlmICghdmFsdWUpCkBA
IC0yOTcsNiArMzIyLDIwIEBAIFJlZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9yVmFsdWUoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhCiAgICAgICAgIGJhc2lj
U2hhcGUgPSBXVEZNb3ZlKHBhdGgpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBD
U1NCYXNpY1NoYXBlOjpDU1NCYXNpY1NoYXBlU2hhcGVUeXBlOiB7CisgICAgICAgIGF1dG8mIHNo
YXBlVmFsdWUgPSBkb3duY2FzdDxDU1NCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGVWYWx1ZSk7
CisgICAgICAgIGNvbnN0IGF1dG8mIGNzc1NlZ21lbnRzID0gc2hhcGVWYWx1ZS5zZWdtZW50cygp
OworICAgICAgICBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4gc2VnbWVudHMoY3NzU2Vn
bWVudHMubGVuZ3RoKCkpOworICAgICAgICBzdGQ6OnRyYW5zZm9ybShzdGQ6OmJlZ2luKGNzc1Nl
Z21lbnRzKSwgc3RkOjplbmQoY3NzU2VnbWVudHMpLCBzZWdtZW50cy5iZWdpbigpLCBbJl0gKGNv
bnN0IGF1dG8mIGNzc1NlZ21lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBmcm9tQ1NTU2hhcGVT
ZWdtZW50KGNvbnZlcnNpb25EYXRhLCBkb3duY2FzdDxDU1NTaGFwZVNlZ21lbnQ+KGNzc1NlZ21l
bnQuZ2V0KCkpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byBzaGFwZSA9IEJhc2ljU2hh
cGVTaGFwZTo6Y3JlYXRlKGNvbnZlcnRUb0xlbmd0aFBvaW50KGNvbnZlcnNpb25EYXRhLCBzaGFw
ZVZhbHVlLmZyb20oKSksIFdURk1vdmUoc2VnbWVudHMpKTsKKyAgICAgICAgc2hhcGUtPnNldFdp
bmRSdWxlKHNoYXBlVmFsdWUud2luZFJ1bGUoKSk7CisKKyAgICAgICAgYmFzaWNTaGFwZSA9IFdU
Rk1vdmUoc2hhcGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJu
IGJhc2ljU2hhcGUucmVsZWFzZU5vbk51bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFw
ZXMuY3BwCmluZGV4IDg5ZTA5ZjU3MmMzNTE2MzgzZjdiMjYyZDU0MGMwM2RlMDJlODQ4NTAuLjg1
ZjY3NmZlNjE2NGFhMGI0MDg4ODMxZDA1NjQ4ODMyZTUwMGZiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtMjIyLDYgKzIyMiwzOCBAQCBib29sIENTU0Jhc2ljU2hh
cGVQYXRoOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYgb3RoZXJTaGFwZSkgY29uc3QKICAg
ICByZXR1cm4gd2luZFJ1bGUoKSA9PSBvdGhlclNoYXBlUGF0aC53aW5kUnVsZSgpICYmIHBhdGhE
YXRhKCkgPT0gb3RoZXJTaGFwZVBhdGgucGF0aERhdGEoKTsKIH0KIAorQ1NTQmFzaWNTaGFwZVNo
YXBlOjpDU1NCYXNpY1NoYXBlU2hhcGUoUmVmPENTU1ZhbHVlPiYmIGZyb20sIFJlZjxDU1NWYWx1
ZUxpc3Q+JiYgc2VnbWVudHMpCisgICAgOiBtX3NlZ21lbnRzKFdURk1vdmUoc2VnbWVudHMpKSwg
bV9mcm9tKFdURk1vdmUoZnJvbSkpCit7IAorfQorCitib29sIENTU0Jhc2ljU2hhcGVTaGFwZTo6
ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIG90aGVyU2hhcGUpIGNvbnN0Cit7CisgICAgaWYg
KCFpczxDU1NCYXNpY1NoYXBlU2hhcGU+KG90aGVyU2hhcGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBhdXRvJiBvdGhlclNoYXBlU2hhcGUgPSBkb3duY2FzdDxDU1NCYXNpY1NoYXBl
U2hhcGU+KG90aGVyU2hhcGUpOworICAgIHJldHVybiB3aW5kUnVsZSgpID09IG90aGVyU2hhcGVT
aGFwZS53aW5kUnVsZSgpCisgICAgICAgICYmIGZyb20oKSA9PSBvdGhlclNoYXBlU2hhcGUuZnJv
bSgpCisgICAgICAgICYmIHNlZ21lbnRzKCkuZXF1YWxzKG90aGVyU2hhcGVTaGFwZS5zZWdtZW50
cygpKTsKK30KKworU3RyaW5nIENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3NzVGV4dCgpIGNvbnN0Cit7
CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGlmICh3aW5kUnVsZSgpID09IFdpbmRS
dWxlOjpFdmVuT2RkKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgic2hhcGUoZXZlbm9kZCAiKTsK
KyAgICBlbHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJzaGFwZSgiKTsKKworICAgIGF1dG8q
IHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oZnJvbSgpKS5wYWlyVmFsdWUoKTsK
KyAgICBBU1NFUlQocGFpcik7CisgICAgYnVpbGRlci5hcHBlbmQoImZyb20gIiwgcGFpci0+Y3Nz
VGV4dCgpLCAiLCAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChzZWdtZW50cygpLmNzc1RleHQoKSwg
IikiKTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKIHN0YXRpYyBTdHJp
bmcgYnVpbGRQb2x5Z29uU3RyaW5nKGNvbnN0IFdpbmRSdWxlJiB3aW5kUnVsZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBvaW50cykKIHsKICAgICBBU1NFUlQoIShwb2ludHMuc2l6ZSgpICUgMikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAppbmRleCAxMDVjNDYwOTQxZDY3NDRlNTdi
ZTdhMzVkNmIwNGZjNzNmYWJiYmVjLi42M2FhOGY5ZWU0MzE1NjZiZDE5YmM0NTczMzA3OWM1ZTVk
ZTlmM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaApAQCAtMzgsNiArMzgsMTAg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CitjbGFz
cyBDU1NTaGFwZVNlZ21lbnQ7CitjbGFzcyBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXI7CitjbGFz
cyBDU1NWYWx1ZTsKK2NsYXNzIENTU1ZhbHVlTGlzdDsKIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFt
OwogCiBjbGFzcyBDU1NCYXNpY1NoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTQmFzaWNTaGFw
ZT4gewpAQCAtNDcsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgICAgIENTU0Jhc2ljU2hhcGVDaXJj
bGVUeXBlLAogICAgICAgICBDU1NCYXNpY1NoYXBlRWxsaXBzZVR5cGUsCiAgICAgICAgIENTU0Jh
c2ljU2hhcGVJbnNldFR5cGUsCi0gICAgICAgIENTU0Jhc2ljU2hhcGVQYXRoVHlwZQorICAgICAg
ICBDU1NCYXNpY1NoYXBlUGF0aFR5cGUsCisgICAgICAgIENTU0Jhc2ljU2hhcGVTaGFwZVR5cGUK
ICAgICB9OwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CkBAIC0yMzMsNiAr
MjM4LDM1IEBAIHByaXZhdGU6CiAgICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFdpbmRSdWxlOjpO
b25aZXJvIH07CiB9OwogCitjbGFzcyBDU1NCYXNpY1NoYXBlU2hhcGUgZmluYWwgOiBwdWJsaWMg
Q1NTQmFzaWNTaGFwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDU1NCYXNpY1NoYXBlU2hh
cGU+IGNyZWF0ZShSZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJiBzZWdt
ZW50cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0Jhc2ljU2hhcGVT
aGFwZShXVEZNb3ZlKGZyb20pLCBXVEZNb3ZlKHNlZ21lbnRzKSkpOworICAgIH0KKworICAgIGNv
bnN0IENTU1ZhbHVlTGlzdCYgc2VnbWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fc2VnbWVudHMuZ2V0KCk7CisgICAgfQorCisgICAgdm9pZCBzZXRXaW5kUnVsZShXaW5kUnVs
ZSBydWxlKSB7IG1fd2luZFJ1bGUgPSBydWxlOyB9CisgICAgV2luZFJ1bGUgd2luZFJ1bGUoKSBj
b25zdCB7IHJldHVybiBtX3dpbmRSdWxlOyB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgZnJvbSgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJvbS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIENTU0Jhc2lj
U2hhcGVTaGFwZShSZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJik7CisK
KyAgICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDU1NCYXNpY1NoYXBlU2hhcGVU
eXBlOyB9CisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGVxdWFs
cyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3QgZmluYWw7CisKKyAgICBSZWY8Q1NTVmFsdWVM
aXN0PiBtX3NlZ21lbnRzOworICAgIFJlZjxDU1NWYWx1ZT4gbV9mcm9tOworICAgIFdpbmRSdWxl
IG1fd2luZFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OworfTsKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBF
UyhUb1ZhbHVlVHlwZU5hbWUpIFwKQEAgLTI0NSwzICsyNzksNCBAQCBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0NTU19CQVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZUNpcmNsZSkKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlRWxsaXBzZSkKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUG9seWdvbikK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUGF0
aCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBl
U2hhcGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFi
ZDY1ZTc4ZTI0OTRkMDJlMDExN2U3NTAwMzA4OTkxMDBiYmRhYTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNwcApAQCAtMCwwICsxLDE5MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ1NTU2hhcGVTZWdtZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8o
Q1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYg
dGFyZ2V0KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKE1vdmVU
bywgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+
IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZp
bml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCkKK3sKKyAgICByZXR1cm4gQ1NT
U2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShMaW5lVG8sIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdl
dCkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxp
bmVUb0hvcml6b250YWwoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBS
ZWY8Q1NTVmFsdWU+JiYgeCkKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNy
ZWF0ZShMaW5lVG9Ib3Jpem9udGFsLCBhZmZpbml0eSwgV1RGTW92ZSh4KSk7Cit9CisKK1JlZjxD
U1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwoQ1NT
U2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgeSkK
K3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShMaW5lVG9WZXJ0aWNh
bCwgYWZmaW5pdHksIFdURk1vdmUoeSkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NT
aGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpYyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZm
aW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBw
MSwgUmVmPENTU1ZhbHVlPiYmIHAyKQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1
ZTo6Y3JlYXRlKEN1cnZlVG9DdWJpYywgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92
ZShwMSksIFdURk1vdmUocDIpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZp
bml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAx
KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEN1cnZlVG9RdWFk
cmF0aWMsIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUocDEpKTsKK30KKworUmVm
PENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWNTbW9v
dGgoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+
JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcDIpCit7CisgICAgcmV0dXJuIENTU1NoYXBlU2Vn
bWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb0N1YmljU21vb3RoLCBhZmZpbml0eSwgV1RGTW92ZSh0
YXJnZXQpLCBXVEZNb3ZlKHAyKSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBl
U2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aChDU1NTaGFwZVNlZ21lbnQ6OkNv
b3JkQWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpCit7CisgICAgcmV0
dXJuIENTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb1F1YWRyYXRpY1Ntb290aCwg
YWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENT
U1NoYXBlU2VnbWVudDo6Y3JlYXRlQXJjVG8oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5
IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcmFkaXVz
LCBDU1NWYWx1ZUlEIHN3ZWVwLCBDU1NWYWx1ZUlEIHNpemUsIFJlZjxDU1NWYWx1ZT4mJiBhbmds
ZSkKK3sKKyAgICBBU1NFUlQoc3dlZXAgPT0gQ1NTVmFsdWVDY3cgfHwgc3dlZXAgPT0gQ1NTVmFs
dWVDdyk7CisgICAgQVNTRVJUKHNpemUgPT0gQ1NTVmFsdWVTbWFsbCB8fCBzaXplID09IENTU1Zh
bHVlTGFyZ2UpOworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEFyY1Rv
LCBhZmZpbml0eSwKKyAgICAgICAgV1RGTW92ZSh0YXJnZXQpLAorICAgICAgICBXVEZNb3ZlKHJh
ZGl1cyksCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3dlZXApLAorICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHNpemUpLAorICAgICAgICBXVEZNb3ZlKGFuZ2xl
KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xv
c2VQYXRoKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKihuZXcgQ1NTU2hhcGVTZWdtZW50KENs
b3NlUGF0aCkpKTsKK30KKworYm9vbCBDU1NTaGFwZVNlZ21lbnQ6OmVxdWFscyhjb25zdCBDU1NT
aGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gb3RoZXIudHlw
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV90eXBlID09IENsb3NlUGF0
aCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q1NTU2hhcGVTZWdtZW50VmFsdWUmPigqdGhpcykuZXF1YWxzKHN0YXRpY19jYXN0PGNvbnN0IENT
U1NoYXBlU2VnbWVudFZhbHVlJj4ob3RoZXIpKTsKK30KKworU3RyaW5nIENTU1NoYXBlU2VnbWVu
dDo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHlwZSA9PSBDU1NTaGFwZVNl
Z21lbnQ6OkNsb3NlUGF0aCkKKyAgICAgICAgcmV0dXJuICJjbG9zZSI7CisKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUqPih0aGlzKS0+Y3VzdG9tQ1NT
VGV4dCgpOworfQorCitib29sIENTU1NoYXBlU2VnbWVudFZhbHVlOjplcXVhbHMoY29uc3QgQ1NT
U2hhcGVTZWdtZW50JiBvdGhlcikgY29uc3QKK3sKKyAgICBBU1NFUlQodHlwZSgpID09IG90aGVy
LnR5cGUoKSk7CisgICAgY29uc3QgYXV0byYgb3RoZXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0
IENTU1NoYXBlU2VnbWVudFZhbHVlJj4ob3RoZXIpOworICAgIHJldHVybiBvdGhlclZhbHVlLm1f
YWZmaW5pdHkgPT0gbV9hZmZpbml0eQorICAgICAgICAmJiBvdGhlclZhbHVlLnRhcmdldCgpLmVx
dWFscyh0YXJnZXQoKSkKKyAgICAgICAgJiYgb3RoZXJWYWx1ZS5tX2FyZ3VtZW50cy5nZXQoKS5l
cXVhbHMobV9hcmd1bWVudHMuZ2V0KCkpOworfQorCitTdHJpbmcgQ1NTU2hhcGVTZWdtZW50VmFs
dWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAoreworICAgIGNvbnN0IGF1dG8gY29tbWFuZCA9IFsm
XSgpIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsKKyAgICAgICAgY2FzZSBNb3ZlVG86Cisg
ICAgICAgICAgICByZXR1cm4gIm1vdmUiOworICAgICAgICBjYXNlIExpbmVUbzoKKyAgICAgICAg
ICAgIHJldHVybiAibGluZSI7CisgICAgICAgIGNhc2UgTGluZVRvSG9yaXpvbnRhbDoKKyAgICAg
ICAgICAgIHJldHVybiAiaGxpbmUiOworICAgICAgICBjYXNlIExpbmVUb1ZlcnRpY2FsOgorICAg
ICAgICAgICAgcmV0dXJuICJ2bGluZSI7CisgICAgICAgIGNhc2UgQ3VydmVUb0N1YmljOgorICAg
ICAgICBjYXNlIEN1cnZlVG9RdWFkcmF0aWM6CisgICAgICAgICAgICByZXR1cm4gImN1cnZlIjsK
KyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWNTbW9vdGg6CisgICAgICAgIGNhc2UgQ3VydmVUb1F1
YWRyYXRpY1Ntb290aDoKKyAgICAgICAgICAgIHJldHVybiAic21vb3RoIjsKKyAgICAgICAgY2Fz
ZSBBcmNUbzoKKyAgICAgICAgICAgIHJldHVybiAiYXJjIjsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuICIiOwor
ICAgICAgICB9CisKKyAgICB9OworCisgICAgY29uc3QgYXV0byBjb25qdW5jdGlvbiA9IFsmXSgp
IHsKKyAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsKKyAgICAgICAgY2FzZSBNb3ZlVG86CisgICAg
ICAgIGNhc2UgTGluZVRvOgorICAgICAgICBjYXNlIExpbmVUb0hvcml6b250YWw6CisgICAgICAg
IGNhc2UgTGluZVRvVmVydGljYWw6CisgICAgICAgIGNhc2UgQ3VydmVUb1F1YWRyYXRpY1Ntb290
aDoKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWM6Cisg
ICAgICAgIGNhc2UgQ3VydmVUb1F1YWRyYXRpYzoKKyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWNT
bW9vdGg6CisgICAgICAgICAgICByZXR1cm4gIiB2aWEgIjsKKyAgICAgICAgY2FzZSBBcmNUbzoK
KyAgICAgICAgICAgIHJldHVybiAiIG9mICI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAg
fQorICAgIH07CisKKyAgICBhdXRvIGJ5VG8gPSBtX2FmZmluaXR5ID09IENTU1NoYXBlU2VnbWVu
dDo6Q29vcmRBZmZpbml0eTo6QWJzb2x1dGUgPyAiIHRvICIgOiAiIGJ5ICI7CisgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKGNvbW1hbmQoKSwgYnlUbywgbV90
YXJnZXQtPmNzc1RleHQoKSwgY29uanVuY3Rpb24oKSk7CisgICAgaWYgKHR5cGUoKSA9PSBBcmNU
bykgeworICAgICAgICBidWlsZGVyLmFwcGVuZChhcmd1bWVudCgwKS5jc3NUZXh0KCkpOworICAg
ICAgICBjb25zdCBhdXRvJiBzd2VlcCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihhcmd1
bWVudCgxKSk7CisgICAgICAgIGNvbnN0IGF1dG8mIHNpemUgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oYXJndW1lbnQoMikpOworICAgICAgICBjb25zdCBhdXRvJiBhbmdsZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPihhcmd1bWVudCgzKSk7CisKKyAgICAgICAgaWYgKHN3ZWVw
LnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUN3KQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBj
dyIpOworCisgICAgICAgIGlmIChzaXplLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxhcmdlKQorICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBsYXJnZSIpOworCisgICAgICAgIGlmIChhbmdsZS5j
b21wdXRlRGVncmVlcygpKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiByb3RhdGUgIiwg
YW5nbGUuY3NzVGV4dCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9h
cmd1bWVudHMtPmNzc1RleHQoKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYXBlU2VnbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYXBlU2VnbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4ZTdkMzkz
ZWEzNmIyODE3OTc2MDY2N2UzYzRhMzI4ZTNiNmFkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1NoYXBlU2VnbWVudCA6IHB1YmxpYyBDU1NW
YWx1ZSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBDb29yZEFmZmluaXR5IHsKKyAgICAgICAg
QWJzb2x1dGUsIFJlbGF0aXZlCisgICAgfTsKKworICAgIGVudW0gU2VnbWVudFR5cGUgeworICAg
ICAgICBNb3ZlVG8sCisgICAgICAgIExpbmVUbywKKyAgICAgICAgTGluZVRvSG9yaXpvbnRhbCwK
KyAgICAgICAgTGluZVRvVmVydGljYWwsCisgICAgICAgIEN1cnZlVG9DdWJpYywKKyAgICAgICAg
Q3VydmVUb1F1YWRyYXRpYywKKyAgICAgICAgQ3VydmVUb0N1YmljU21vb3RoLAorICAgICAgICBD
dXJ2ZVRvUXVhZHJhdGljU21vb3RoLAorICAgICAgICBBcmNUbywKKyAgICAgICAgQ2xvc2VQYXRo
CisgICAgfTsKKworICAgIFNlZ21lbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0
OworICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CisgICAgfkNTU1NoYXBlU2VnbWVu
dCgpID0gZGVmYXVsdDsKKworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVD
bG9zZVBhdGgoKTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRlTW92ZVRv
KENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpOworICAgIHN0YXRpYyBSZWY8
Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG8oQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVl
PiYmIHRhcmdldCk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUxpbmVU
b0hvcml6b250YWwoQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHgpOworICAgIHN0YXRp
YyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG9WZXJ0aWNhbChDb29yZEFmZmluaXR5
LCBSZWY8Q1NTVmFsdWU+JiYgeSk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNy
ZWF0ZUN1cnZlVG9DdWJpYyhDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBS
ZWY8Q1NTVmFsdWU+JiYgcDEsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAgc3RhdGljIFJlZjxD
U1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWMoQ29vcmRBZmZpbml0eSwgUmVm
PENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxKTsKKyAgICBzdGF0aWMgUmVm
PENTU1NoYXBlU2VnbWVudD4gY3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKENvb3JkQWZmaW5pdHks
IFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAgc3RhdGlj
IFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoQ29vcmRB
ZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFw
ZVNlZ21lbnQ+IGNyZWF0ZUFyY1RvKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJn
ZXQsIFJlZjxDU1NWYWx1ZT4mJiByYWRpdXMsIENTU1ZhbHVlSUQgc3dlZXAsIENTU1ZhbHVlSUQg
c2l6ZSwgUmVmPENTU1ZhbHVlPiYmIGFuZ2xlKTsKKworcHJvdGVjdGVkOgorICAgIENTU1NoYXBl
U2VnbWVudChTZWdtZW50VHlwZSB0eXBlKQorICAgICAgICA6IENTU1ZhbHVlKFNoYXBlU2VnbWVu
dENsYXNzKQorICAgICAgICAsIG1fdHlwZSh0eXBlKSB7IH0KKworcHJpdmF0ZToKKyAgICBTZWdt
ZW50VHlwZSBtX3R5cGU7Cit9OworCitjbGFzcyBDU1NTaGFwZVNlZ21lbnRWYWx1ZSA6IHB1Ymxp
YyBDU1NTaGFwZVNlZ21lbnQgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSAuLi5B
cmdzPgorICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGUoQ1NTU2hhcGVTZWdt
ZW50OjpTZWdtZW50VHlwZSB0eXBlLAorICAgICAgICBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZm
aW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIEFyZ3MuLi4gYXJndW1lbnRz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU2hhcGVTZWdtZW50VmFs
dWUodHlwZSwgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3VtZW50cykuLi4pKTsKKyAgICB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgdGFyZ2V0KCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKKyAgICB9CisKKyAgICBj
b25zdCBDU1NWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGkpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQobV9hcmd1bWVudHMtPmxlbmd0aCgpID4gaSk7CisgICAgICAgIHJldHVybiAqKG1fYXJn
dW1lbnRzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICB9CisKKyAgICBDU1NTaGFw
ZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHkoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fYWZmaW5pdHk7CisgICAgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTU2hh
cGVTZWdtZW50JiBvdGhlcikgY29uc3Q7CisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICB2b2lkIGFwcGVuZEFyZ3MoKSB7IH0KKyAgICB2b2lkIGFwcGVu
ZEFyZ3MoUmVmPENTU1ZhbHVlPiYmIHYpIHsgbV9hcmd1bWVudHMtPmFwcGVuZChXVEZNb3ZlKHYp
KTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgLi4uQXJncz4KKyAgICB2b2lkIGFwcGVuZEFy
Z3MoUmVmPENTU1ZhbHVlPiYmIHYsIEFyZ3MgLi4uYXJncykKKyAgICB7CisgICAgICAgIGFwcGVu
ZEFyZ3MoV1RGTW92ZSh2KSk7CisgICAgICAgIGFwcGVuZEFyZ3Moc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSAuLi5BcmdzPgorICAg
IENTU1NoYXBlU2VnbWVudFZhbHVlKENTU1NoYXBlU2VnbWVudDo6U2VnbWVudFR5cGUgdHlwZSwg
Q1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYg
dGFyZ2V0LCBBcmdzIC4uLmFyZ3MpCisgICAgICAgIDogQ1NTU2hhcGVTZWdtZW50KHR5cGUpCisg
ICAgICAgICwgbV9hZmZpbml0eShhZmZpbml0eSkKKyAgICAgICAgLCBtX3RhcmdldChXVEZNb3Zl
KHRhcmdldCkpCisgICAgICAgICwgbV9hcmd1bWVudHMoQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpKQorICAgIHsKKyAgICAgICAgYXBwZW5kQXJncyhzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworICAgIH0KKworICAgIENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0
eSBtX2FmZmluaXR5OworICAgIFJlZjxDU1NWYWx1ZT4gbV90YXJnZXQ7CisgICAgUmVmPENTU1Zh
bHVlTGlzdD4gbV9hcmd1bWVudHM7Cit9OworCit9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NT
U19WQUxVRShDU1NTaGFwZVNlZ21lbnQsIGlzU2hhcGVTZWdtZW50VmFsdWUoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuY3BwCmluZGV4IDVlMjE4MjI2M2ZjZWE1Y2FmZjM2M2U0ZmY0NDAzOTQzODExZjZk
YWMuLjYzMDllM2ZmNzNkY2NiNjY3MzFmMjI0YjY0OWQ3ODkyZGEyZWQxNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlLmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIkNTU1JheVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTU2hhZG93VmFsdWUu
aCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5j
dGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NWYWx1ZUxpc3QuaCIKQEAgLTIzMCw2ICsyMzEsOCBAQCBib29sIENTU1ZhbHVlOjplcXVh
bHMoY29uc3QgQ1NTVmFsdWUmIG90aGVyKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGNvbXBh
cmVDU1NWYWx1ZXM8Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGNh
c2UgRm9udFN0eWxlUmFuZ2VDbGFzczoKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFs
dWVzPENTU0ZvbnRTdHlsZVJhbmdlVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2Ug
U2hhcGVTZWdtZW50Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxD
U1NTaGFwZVNlZ21lbnQ+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTMzOSw2ICszNDIsOCBAQCBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0
KCk7CiAgICAgY2FzZSBGb250U3R5bGVSYW5nZUNsYXNzOgogICAgICAgICByZXR1cm4gZG93bmNh
c3Q8Q1NTRm9udFN0eWxlUmFuZ2VWYWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKKyAgICBj
YXNlIFNoYXBlU2VnbWVudENsYXNzOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTU2hhcGVT
ZWdtZW50PigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtNDk3LDYgKzUwMiw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQog
ICAgIGNhc2UgRm9udFN0eWxlUmFuZ2VDbGFzczoKICAgICAgICAgZGVsZXRlIGRvd25jYXN0PENT
U0ZvbnRTdHlsZVJhbmdlVmFsdWU+KHRoaXMpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBT
aGFwZVNlZ21lbnRDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU1NoYXBlU2VnbWVu
dD4odGhpcyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IGRhZGU1OGRhMjA2OGI3ZWVjY2RhYTMzMTkx
OGM0NGQzYTc2ZTA1YzguLjNmNzVhZjMwYWI5MDI4YWViMmQxNTJmMTQ1Yzk4OTM1N2I1MTllYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0xMzQsNiArMTM0LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNHcmlkQXV0b1JlcGVhdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0g
R3JpZEF1dG9SZXBlYXRDbGFzczsgfQogICAgIGJvb2wgaXNHcmlkSW50ZWdlclJlcGVhdFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gR3JpZEludGVnZXJSZXBlYXRDbGFzczsg
fQogICAgIGJvb2wgaXNHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9j
bGFzc1R5cGUgPT0gR3JpZFRlbXBsYXRlQXJlYXNDbGFzczsgfQorICAgIGJvb2wgaXNTaGFwZVNl
Z21lbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFNoYXBlU2VnbWVudENs
YXNzOyB9CiAgICAgYm9vbCBpc0dyaWRMaW5lTmFtZXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xhc3NUeXBlID09IEdyaWRMaW5lTmFtZXNDbGFzczsgfQogICAgIGJvb2wgaXNTdWJncmlkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTdWJncmlkQ2xhc3M7IH0KICAgICBi
b29sIGlzVW5pY29kZVJhbmdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBV
bmljb2RlUmFuZ2VDbGFzczsgfQpAQCAtMjA5LDYgKzIxMCw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgQ2FsY3VsYXRpb25DbGFzcywKICAgICAgICAgR3JpZFRlbXBsYXRlQXJlYXNDbGFzcywKICAg
ICAgICAgVmFsdWVQYWlyQ2xhc3MsCisgICAgICAgIFNoYXBlU2VnbWVudENsYXNzLAogCiAgICAg
ICAgIENTU0NvbnRlbnREaXN0cmlidXRpb25DbGFzcywKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVLZXl3b3Jkcy5pbgppbmRleCAyZGQ0YzBiYWMzYzlhM2E0ZDYzYmFlZGMyOTkxMDgwMmI1MjIw
MmY5Li4xYjY1NGViMjE5ZDRlMWM5YjIyOGZlMTcxNTg1MzkzODA1YzViMTM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtMTI4Niw2ICsxMjg2LDI3IEBAIHJlY3QK
IAogLy8gc2hhcGVzCiBwb2x5Z29uCitzaGFwZQorCisvLyBzaGFwZSgpCisvLyBmcm9tCisvLyB0
bworLy8gbW92ZQorbGluZQoraGxpbmUKK3ZsaW5lCitjdXJ2ZQorLy8gc21vb3RoCithcmMKK2Ns
b3NlCit2aWEKK29mCitieQorY3cKK2NjdworLy8gbGFyZ2UKKy8vIHNtYWxsCisvLyByb3RhdGUK
IAogLy8gQGZvbnQtZmFjZSBzcmMKIGZvcm1hdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhcGVT
ZWdtZW50RnVuY3Rpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2NiMTBmOGFhMzE3MjIwMzAxZjQyOTZh
ZjU4NmJlODJlNmVhNzFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1No
YXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTAsMCArMSwyMjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcGVTZWdtZW50RnVuY3Rpb25zLmgiCisKKyNp
bmNsdWRlICJCYXNpY1NoYXBlU2VnbWVudC5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKKyNpbmNsdWRlICJDU1NW
YWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgorI2luY2x1ZGUgIlBhaXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjb252
ZXJ0UG9pbnRUb0NTU1ZhbHVlKGNvbnN0IExlbmd0aFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8mIHBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpOworICAgIHJldHVybiBwb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZSgKKyAgICAgICAg
cG9vbC5jcmVhdGVWYWx1ZShwb2ludC54KCksIHN0eWxlKSwKKyAgICAgICAgcG9vbC5jcmVhdGVW
YWx1ZShwb2ludC55KCksIHN0eWxlKSwKKyAgICAgICAgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNv
ZGluZzo6RG9Ob3RDb2FsZXNjZSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZT4gYXV0
byB0b0NTU0FyZ3MoY29uc3QgVmFsdWUmLCBjb25zdCBSZW5kZXJTdHlsZSYpOworCit0ZW1wbGF0
ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBMZW5ndGgmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZTxSZWY8Q1NTVmFsdWU+PihD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHZhbHVlLCBzdHlsZSkpOworfQor
Cit0ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJnczxMZW5ndGhQb2ludD4oY29uc3QgTGVuZ3RoUG9p
bnQmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6
bWFrZV90dXBsZShjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLCBzdHlsZSkpOworfQorCit0
ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVl
JiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBzdGQ6Om1h
a2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUudGFyZ2V0UG9p
bnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5wb2ludDEs
IHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5wb2ludDIsIHN0
eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NBcmdzKGNvbnN0IEN1cnZlVG9RdWFk
cmF0aWNTaGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorewor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFs
dWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NW
YWx1ZSh2YWx1ZS5wb2ludDEsIHN0eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NB
cmdzKGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIHZhbHVlLCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSgKKyAgICAg
ICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS50YXJnZXRQb2ludCwgc3R5bGUpLAorICAg
ICAgICBjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnBvaW50Miwgc3R5bGUpKTsKK30KKwor
dGVtcGxhdGU8PgorYXV0byB0b0NTU0FyZ3MoY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiB2YWx1
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8mIHBvb2wgPSBDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpOworICAgIGF1dG8gcmFkaXVzID0gUGFpcjo6Y3JlYXRlKAorICAg
ICAgICBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlLnJhZGl1cy53aWR0aCwgc3R5bGUpLAorICAgICAg
ICBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlLnJhZGl1cy5oZWlnaHQsIHN0eWxlKSwKKyAgICAgICAg
UGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpOworCisgICAgcmV0dXJuIHN0
ZDo6bWFrZV90dXBsZSgKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS50YXJn
ZXRQb2ludCwgc3R5bGUpLAorICAgICAgICBwb29sLmNyZWF0ZVZhbHVlKFdURk1vdmUocmFkaXVz
KSksCisgICAgICAgIHZhbHVlLnN3ZWVwID8gQ1NTVmFsdWVDdyA6IENTU1ZhbHVlQ2N3LAorICAg
ICAgICB2YWx1ZS5sYXJnZUFyYyA/IENTU1ZhbHVlTGFyZ2UgOiBDU1NWYWx1ZVNtYWxsLAorICAg
ICAgICBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlLmFuZ2xlLCBDU1NVbml0VHlwZTo6Q1NTX0RFRykp
OworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiB0b0NTU1NoYXBlU2VnbWVudChjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBzZWdtZW50KQoreworICAg
IGF1dG8gdG9DU1MgPSBbJl0oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5
LCBhdXRvIGNyZWF0ZSwgY29uc3QgYXV0byYgYXMpIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6YXBw
bHkoY3JlYXRlLCBzdGQ6OnR1cGxlX2NhdChzdGQ6Om1ha2VfdHVwbGUoYWZmaW5pdHkpLCB0b0NT
U0FyZ3MoKHNlZ21lbnQuKmFzKSgpLCBzdHlsZSkpKTsKKyAgICB9OworCisjZGVmaW5lIENSRUFU
RV9DU1NfU0hBUEVfU0VHTUVOVF9GUk9NX0JBU0lDX1NIQVBFX1NFR01FTlQoVHlwZSkgXAorICAg
IGNhc2UgU2hhcGVTZWdtZW50IyNUeXBlOjpBYnNTZWdUeXBlOiBcCisgICAgICAgIHJldHVybiB0
b0NTUyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRlLCBDU1NTaGFwZVNl
Z21lbnQ6OmNyZWF0ZSMjVHlwZSwgJkJhc2ljU2hhcGVTZWdtZW50OjphcyMjVHlwZSk7IFwKKyAg
ICBjYXNlIFNoYXBlU2VnbWVudCMjVHlwZTo6UmVsU2VnVHlwZTogXAorICAgICAgICByZXR1cm4g
dG9DU1MoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5OjpSZWxhdGl2ZSwgQ1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGUjI1R5cGUsICZCYXNpY1NoYXBlU2VnbWVudDo6YXMjI1R5cGUpOyBcCisK
KyAgICBzd2l0Y2ggKHNlZ21lbnQudHlwZSgpKSB7CisgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRo
OgorICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKwor
ICAgICAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9WQUxVRShDUkVBVEVfQ1NT
X1NIQVBFX1NFR01FTlRfRlJPTV9CQVNJQ19TSEFQRV9TRUdNRU5UKQorCisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQordGVtcGxhdGUgPGNsYXNz
IERlZmluaXRpb24+CitTVkdQYXRoU2VnVHlwZSBzZWdtZW50VHlwZShjb25zdCBDU1NTaGFwZVNl
Z21lbnRWYWx1ZSYgc2VnbWVudFdpdGhWYWx1ZSkKK3sKKyAgICByZXR1cm4gc2VnbWVudFdpdGhW
YWx1ZS5hZmZpbml0eSgpID09IENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eTo6QWJzb2x1
dGUgPyBEZWZpbml0aW9uOjpBYnNTZWdUeXBlIDogRGVmaW5pdGlvbjo6UmVsU2VnVHlwZTsKK30K
KworUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBmcm9tQ1NTU2hhcGVTZWdtZW50KGNvbnN0IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBDU1NTaGFwZVNlZ21l
bnQmIGNzc1NlZ21lbnQpCit7CisgICAgYXV0byB0b0xlbmd0aCA9IFsmXShjb25zdCBDU1NWYWx1
ZSYgdmFsdWUpIC0+IExlbmd0aCB7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwg
Rml4ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252
ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CisgICAgfTsKKworICAgIGF1dG8gdG9MZW5ndGhQb2lu
dCA9IFsmXShjb25zdCBDU1NWYWx1ZSYgdmFsdWUpIC0+IExlbmd0aFBvaW50IHsKKyAgICAgICAg
YXV0byBwYWlyID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5wYWlyVmFsdWUo
KTsKKyAgICAgICAgQVNTRVJUKHBhaXIpOworICAgICAgICByZXR1cm4gTGVuZ3RoUG9pbnQgeyB0
b0xlbmd0aCgqcGFpci0+Zmlyc3QoKSksIHRvTGVuZ3RoKCpwYWlyLT5zZWNvbmQoKSkgfTsKKyAg
ICB9OworCisgICAgYXV0byB0b0xlbmd0aFNpemUgPSBbJl0oY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KSAtPiBMZW5ndGhTaXplIHsKKyAgICAgICAgYXV0byBwYWlyID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKS5wYWlyVmFsdWUoKTsKKyAgICAgICAgQVNTRVJUKHBhaXIpOworICAg
ICAgICByZXR1cm4gTGVuZ3RoU2l6ZSB7IHRvTGVuZ3RoKCpwYWlyLT5maXJzdCgpKSwgdG9MZW5n
dGgoKnBhaXItPnNlY29uZCgpKSB9OworICAgIH07CisKKyAgICBhdXRvIHR5cGUgPSBjc3NTZWdt
ZW50LnR5cGUoKTsKKworICAgIGlmICh0eXBlID09IENTU1NoYXBlU2VnbWVudDo6Q2xvc2VQYXRo
KQorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOwor
CisgICAgY29uc3QgYXV0byYgc2VnbWVudFdpdGhWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IENT
U1NoYXBlU2VnbWVudFZhbHVlJj4oY3NzU2VnbWVudCk7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6TW92ZVRvOiB7CisgICAgICAgIHJldHVybiBCYXNp
Y1NoYXBlU2VnbWVudDo6Y3JlYXRlTW92ZVRvKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hh
cGVTZWdtZW50TW92ZVRvPihzZWdtZW50V2l0aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3Ro
UG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkpOworICAgIH0KKworICAgIGNhc2UgQ1NT
U2hhcGVTZWdtZW50OjpMaW5lVG86CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6
Y3JlYXRlTGluZVRvKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50TGluZVRv
PihzZWdtZW50V2l0aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdp
dGhWYWx1ZS50YXJnZXQoKSkpOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkxpbmVUb0hv
cml6b250YWw6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRv
SG9yaXpvbnRhbCgKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudExpbmVUb0hv
cml6b250YWw+KHNlZ21lbnRXaXRoVmFsdWUpLAorICAgICAgICAgICAgdG9MZW5ndGgoc2VnbWVu
dFdpdGhWYWx1ZS50YXJnZXQoKSkpOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkxpbmVU
b1ZlcnRpY2FsOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVU
b1ZlcnRpY2FsKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50TGluZVRvVmVy
dGljYWw+KHNlZ21lbnRXaXRoVmFsdWUpLAorICAgICAgICAgICAgdG9MZW5ndGgoc2VnbWVudFdp
dGhWYWx1ZS50YXJnZXQoKSkpOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkN1cnZlVG9D
dWJpYzoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3Vi
aWMoCisgICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWM+KHNl
Z21lbnRXaXRoVmFsdWUpLCB7CisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50
V2l0aFZhbHVlLmFyZ3VtZW50KDApKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNl
Z21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMSkpLAorICAgICAgICAgICAgICAgIHRvTGVuZ3RoUG9p
bnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAgICAgIH0pOworCisgICAgY2Fz
ZSBDU1NTaGFwZVNlZ21lbnQ6OkN1cnZlVG9RdWFkcmF0aWM6CisgICAgICAgIHJldHVybiBCYXNp
Y1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpYygKKyAgICAgICAgICAgIHNlZ21l
bnRUeXBlPFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWM+KHNlZ21lbnRXaXRoVmFsdWUpLCB7
CisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50
KDApKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUudGFy
Z2V0KCkpCisgICAgICAgICAgICB9KTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpDdXJ2
ZVRvQ3ViaWNTbW9vdGg6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRl
Q3VydmVUb0N1YmljU21vb3RoKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50
Q3VydmVUb0N1YmljU21vb3RoPihzZWdtZW50V2l0aFZhbHVlKSwgeworICAgICAgICAgICAgICAg
IHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgwKSksCisgICAgICAgICAg
ICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQorICAgICAgICAg
ICAgfSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q3VydmVUb1F1YWRyYXRpY1Ntb290
aDoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJh
dGljU21vb3RoKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50Q3VydmVUb1F1
YWRyYXRpY1Ntb290aD4oc2VnbWVudFdpdGhWYWx1ZSksCisgICAgICAgICAgICB0b0xlbmd0aFBv
aW50KHNlZ21lbnRXaXRoVmFsdWUudGFyZ2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdt
ZW50OjpBcmNUbzoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVBcmNU
bygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudEFyY1RvPihzZWdtZW50V2l0
aFZhbHVlKSwgeworICAgICAgICAgICAgICAgIC5yYWRpdXMgPSB0b0xlbmd0aFNpemUoc2VnbWVu
dFdpdGhWYWx1ZS5hcmd1bWVudCgwKSksCisgICAgICAgICAgICAgICAgLnN3ZWVwID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMSkpLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUN3LAorICAgICAgICAgICAgICAgIC5sYXJnZUFyYyA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPihzZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50KDIpKS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVMYXJnZSwKKyAgICAgICAgICAgICAgICAuYW5nbGUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgzKSkuZmxvYXRWYWx1
ZShDU1NVbml0VHlwZTo6Q1NTX0RFRyksCisgICAgICAgICAgICAgICAgLnRhcmdldFBvaW50ID0g
dG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQorICAgICAgICAgICAgfSk7
CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q2xvc2VQYXRoOgorICAgICAgICByZXR1cm4g
QmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworICAgIH0KKworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2hhcGVTZWdtZW50RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhcGVTZWdtZW50
RnVuY3Rpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY0MGQ3MWUyOWE1MDgzODI1M2UwYzJlYTcwOTYxMTQ0
OTFkNjJkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21l
bnRGdW5jdGlvbnMuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBCYXNpY1NoYXBlU2VnbWVudDsKK2NsYXNzIENTU1NoYXBlU2Vn
bWVudDsKK2NsYXNzIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE7CitjbGFzcyBSZW5kZXJTdHls
ZTsKKworUmVmPENTU1NoYXBlU2VnbWVudD4gdG9DU1NTaGFwZVNlZ21lbnQoY29uc3QgUmVuZGVy
U3R5bGUmLCBjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYpOworUmVmPEJhc2ljU2hhcGVTZWdtZW50
PiBmcm9tQ1NTU2hhcGVTZWdtZW50KGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBj
b25zdCBDU1NTaGFwZVNlZ21lbnQmKTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCBkMWI1ZDM0NTU1OTEwYmQ4MzNlYWU5ZmZi
Yzk1N2JjMWNkMzI0OTBiLi44ZWE0ZmE4NmVmNGI0ZWJhYzZmN2RmMWYxZDc0M2JlNDllZmFhZDVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNw
cApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKICNp
bmNsdWRlICJDU1NGb250RmVhdHVyZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udFBhbGV0dGVW
YWx1ZXNPdmVycmlkZUNvbG9yc1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTU2hhcGVTZWdtZW50Lmgi
CiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKICNpbmNsdWRlICJDU1NGb250VmFyaWF0aW9u
VmFsdWUuaCIKICNlbmRpZgpAQCAtMjY1Miw2ICsyNjUzLDE5NiBAQCBzdGF0aWMgUmVmUHRyPENT
U0Jhc2ljU2hhcGVQYXRoPiBjb25zdW1lQmFzaWNTaGFwZVBhdGgoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgYXJncwogICAgIHJldHVybiBzaGFwZTsKIH0KIAorc3RhdGljIFJlZlB0cjxDU1NTaGFwZVNl
Z21lbnQ+IGNvbnN1bWVTaGFwZVNlZ21lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBhdXRvIGNvbW1hbmQgPSBhcmdz
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgaWYgKGNvbW1hbmQuaWQoKSA9PSBD
U1NWYWx1ZUNsb3NlKQorICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9z
ZVBhdGgoKTsKKworICAgIGlmICghaWRlbnRNYXRjaGVzPENTU1ZhbHVlVG8sIENTU1ZhbHVlQnk+
KGFyZ3MucGVlaygpLmlkKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8g
YWZmaW5pdHkgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSA9PSBDU1NW
YWx1ZVRvID8gQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5OjpBYnNvbHV0ZSA6IENTU1No
YXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eTo6UmVsYXRpdmU7CisgICAgYXV0byBjb25zdW1lTmV4
dExlbmd0aE9yUGVyY2VudCA9IFsmXSgpIHsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhP
clBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOworICAgIH07CisK
KyAgICBpZiAoY29tbWFuZC5pZCgpID09IENTU1ZhbHVlSGxpbmUgfHwgY29tbWFuZC5pZCgpID09
IENTU1ZhbHVlVmxpbmUpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IGNvbnN1bWVOZXh0TGVuZ3Ro
T3JQZXJjZW50KCk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICByZXR1cm4gY29tbWFuZC5pZCgpID09IENTU1ZhbHVlSGxpbmUKKyAg
ICAgICAgICAgID8gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKGFmZmlu
aXR5LCB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKQorICAgICAgICAgICAgOiBDU1NTaGFwZVNlZ21l
bnQ6OmNyZWF0ZUxpbmVUb1ZlcnRpY2FsKGFmZmluaXR5LCB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgp
KTsKKyAgICB9CisKKyAgICBhdXRvIGNvbnN1bWVOZXh0Q29vcmRpbmF0ZXMgPSBbJl0gKCkgLT4g
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB7CisgICAgICAgIGF1dG8geCA9IGNvbnN1bWVOZXh0
TGVuZ3RoT3JQZXJjZW50KCk7CisgICAgICAgIGlmICgheCkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgIGF1dG8geSA9IGNvbnN1bWVOZXh0TGVuZ3RoT3JQZXJjZW50KCk7
CisgICAgICAgIGlmICgheSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
IHJldHVybiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoeC5yZWxlYXNlTm9uTnVsbCgpLCB5LnJl
bGVhc2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkRvTm90Q29hbGVz
Y2UpOworICAgIH07CisKKyAgICBhdXRvIGF0RW5kT2ZTZWdtZW50ID0gWyZdICgpIHsKKyAgICAg
ICAgcmV0dXJuIGFyZ3MuYXRFbmQoKSB8fCBhcmdzLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tl
bjsKKyAgICB9OworCisgICAgYXV0byB0YXJnZXRQb2ludCA9IGNvbnN1bWVOZXh0Q29vcmRpbmF0
ZXMoKTsKKyAgICBpZiAoIXRhcmdldFBvaW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHN3aXRjaCAoY29tbWFuZC5pZCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZU1vdmU6CisgICAg
ICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZU1vdmVUbyhhZmZpbml0eSwgdGFyZ2V0
UG9pbnQucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICBjYXNlIENTU1ZhbHVlTGluZToKKyAgICAg
ICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvKGFmZmluaXR5LCB0YXJnZXRQ
b2ludC5yZWxlYXNlTm9uTnVsbCgpKTsKKworICAgIGNhc2UgQ1NTVmFsdWVDdXJ2ZTogeworICAg
ICAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSAhPSBDU1NWYWx1ZVZpYSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KTsKKyAgICAgICAgYXV0byB2aWFQb2ludDEgPSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7Cisg
ICAgICAgIGlmICghdmlhUG9pbnQxKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAgICAgaWYgKGF0RW5kT2ZTZWdtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKGFmZmluaXR5LCB0YXJnZXRQb2ludC5yZWxl
YXNlTm9uTnVsbCgpLCB2aWFQb2ludDEucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICAgICAgYXV0
byB2aWFQb2ludDIgPSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7CisgICAgICAgIGlmICghdmlh
UG9pbnQyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIENT
U1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljKGFmZmluaXR5LCAgdGFyZ2V0UG9pbnQu
cmVsZWFzZU5vbk51bGwoKSwgdmlhUG9pbnQxLnJlbGVhc2VOb25OdWxsKCksIHZpYVBvaW50Mi5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisKKyAgICBjYXNlIENTU1ZhbHVlU21vb3RoOiB7Cisg
ICAgICAgIGlmIChhcmdzLnBlZWsoKS5pZCgpICE9IENTU1ZhbHVlVmlhKQorICAgICAgICAgICAg
cmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aChhZmZp
bml0eSwgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCkpOworCisgICAgICAgIGFyZ3MuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgYXV0byB2aWFQb2ludCA9IGNvbnN1
bWVOZXh0Q29vcmRpbmF0ZXMoKTsKKyAgICAgICAgaWYgKCF2aWFQb2ludCkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0
ZUN1cnZlVG9DdWJpY1Ntb290aChhZmZpbml0eSwgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxs
KCksIHZpYVBvaW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KKworICAgIGNhc2UgQ1NTVmFs
dWVBcmM6IHsKKyAgICAgICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgIT0gQ1NTVmFsdWVPZikKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKTsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByeCA9IGNv
bnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpOb25O
ZWdhdGl2ZSk7CisgICAgICAgIGlmICghcngpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJ5OworICAgICAgICBpZiAoYXJn
cy5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pCisgICAgICAgICAgICByeSA9IHJ4OworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJ5ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdz
LCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKKyAgICAgICAgICAgIGlm
ICghcnkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IHN3ZWVwOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPENTU1ZhbHVlSUQ+IHNpemU7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gYW5nbGU7CisK
KyAgICAgICAgd2hpbGUgKCFhdEVuZE9mU2VnbWVudCgpKSB7CisgICAgICAgICAgICBhdXRvIG5l
eHRJZGVudCA9IGFyZ3MucGVlaygpLmlkKCk7CisgICAgICAgICAgICBpZiAoaWRlbnRNYXRjaGVz
PENTU1ZhbHVlUm90YXRlPihuZXh0SWRlbnQpICYmICFhbmdsZSkgeworICAgICAgICAgICAgICAg
IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOworICAgICAgICAgICAgICAg
IGFuZ2xlID0gY29uc3VtZUFuZ2xlKGFyZ3MsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6
Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyazo6Rm9yYmlkKTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NW
YWx1ZUN3LCBDU1NWYWx1ZUNjdz4obmV4dElkZW50KSAmJiAhc3dlZXAuaGFzX3ZhbHVlKCkpIHsK
KyAgICAgICAgICAgICAgICBzd2VlcCA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS5pZCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlTGFyZ2UsIENTU1ZhbHVlU21hbGw+KG5l
eHRJZGVudCkgJiYgIXNpemUuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBzaXplID0g
YXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCFhbmdsZSkKKyAgICAgICAgICAgIGFuZ2xlID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NVbml0VHlwZTo6Q1NTX0RFRyk7CisKKyAgICAg
ICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQXJjVG8oCisgICAgICAgICAgICBhZmZp
bml0eSwKKyAgICAgICAgICAgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCksCisgICAgICAg
ICAgICBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIocngucmVsZWFzZU5vbk51bGwoKSwgcnkucmVs
ZWFzZU5vbk51bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpLAor
ICAgICAgICAgICAgc3dlZXAudmFsdWVfb3IoQ1NTVmFsdWVDY3cpLAorICAgICAgICAgICAgc2l6
ZS52YWx1ZV9vcihDU1NWYWx1ZVNtYWxsKSwKKyAgICAgICAgICAgIGFuZ2xlLnJlbGVhc2VOb25O
dWxsKCkpOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9Cit9CisKK3N0YXRpYyBSZWZQdHI8Q1NTQmFzaWNTaGFwZVNoYXBlPiBjb25zdW1lQmFzaWNT
aGFwZVNoYXBlKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmIGNvbnRleHQpCit7CisgICAgV2luZFJ1bGUgd2luZFJ1bGUgPSBXaW5kUnVsZTo6Tm9uWmVy
bzsKKworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVFdmVub2RkLCBDU1NWYWx1ZU5vbnpl
cm8+KGFyZ3MucGVlaygpLmlkKCkpKQorICAgICAgICB3aW5kUnVsZSA9IGFyZ3MuY29uc3VtZUlu
Y2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpID09IENTU1ZhbHVlRXZlbm9kZCA/IFdpbmRSdWxlOjpF
dmVuT2RkIDogV2luZFJ1bGU6Ok5vblplcm87CisKKyAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSAh
PSBDU1NWYWx1ZUZyb20pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXJncy5jb25z
dW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBpbml0aWFsWCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBW
YWx1ZVJhbmdlOjpBbGwpOworICAgIGlmICghaW5pdGlhbFgpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpbml0aWFsWSA9IGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOworICAg
IGlmICghaW5pdGlhbFkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFjb25z
dW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGF1dG8gc2VnbWVudHMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJh
dGVkKCk7CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGF1dG8gc2VnbWVudCA9IGNvbnN1bWVT
aGFwZVNlZ21lbnQoYXJncywgY29udGV4dCk7CisgICAgICAgIGlmICghc2VnbWVudCkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIHNlZ21lbnRzLT5hcHBlbmQoc2VnbWVu
dC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgaWYgKGFyZ3MuYXRFbmQoKSkKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8g
c2hhcGUgPSBDU1NCYXNpY1NoYXBlU2hhcGU6OmNyZWF0ZSgKKyAgICAgICAgY3JlYXRlUHJpbWl0
aXZlVmFsdWVQYWlyKAorICAgICAgICAgICAgaW5pdGlhbFgucmVsZWFzZU5vbk51bGwoKSwKKyAg
ICAgICAgICAgIGluaXRpYWxZLnJlbGVhc2VOb25OdWxsKCksCisgICAgICAgICAgICBQYWlyOjpJ
ZGVudGljYWxWYWx1ZUVuY29kaW5nOjpEb05vdENvYWxlc2NlKSwKKyAgICAgICAgV1RGTW92ZShz
ZWdtZW50cykpOworCisgICAgc2hhcGUtPnNldFdpbmRSdWxlKHdpbmRSdWxlKTsKKyAgICByZXR1
cm4gc2hhcGU7Cit9CisKIHN0YXRpYyB2b2lkIGNvbXBsZXRlNFNpZGVzKFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gc2lkZVs0XSkKIHsKICAgICBpZiAoc2lkZVszXSkKQEAgLTI3NTcsNiArMjk0
OCw4IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVCYXNpY1NoYXBl
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjCiAgICAgICAgIHNoYXBlID0gY29uc3VtZUJh
c2ljU2hhcGVJbnNldChhcmdzLCBjb250ZXh0KTsKICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1
ZVBhdGgpCiAgICAgICAgIHNoYXBlID0gY29uc3VtZUJhc2ljU2hhcGVQYXRoKGFyZ3MpOworICAg
IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlU2hhcGUpCisgICAgICAgIHNoYXBlID0gY29uc3VtZUJh
c2ljU2hhcGVTaGFwZShhcmdzLCBjb250ZXh0KTsKICAgICBpZiAoIXNoYXBlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICByYW5nZSA9IHJhbmdlQ29weTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJlMWZiMGVhOWNmZDkxM2M1NWRlNDQ0NjQ5OGY1ODhhMWQ4NTY0MmQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3Bw
CkBAIC0wLDAgKzEsMjkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE5vYW0gUm9zZW50
aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkJhc2ljU2hhcGVTZWdtZW50LmgiCisKKyNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIK
KyNpbmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAiU1ZHUGF0aEJ1aWxkZXIuaCIKKyNpbmNsdWRl
ICJTVkdQYXRoUGFyc2VyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZy5oIgorI2luY2x1ZGUgIlNW
R1BhdGhTZWdJbXBsLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNvdXJjZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlZmluaXRpb24+CitjbGFzcyBCYXNpY1No
YXBlU2VnbWVudFZhbHVlIDogcHVibGljIEJhc2ljU2hhcGVTZWdtZW50IHsKK3B1YmxpYzoKKyAg
ICBjb25zdCB0eXBlbmFtZSBEZWZpbml0aW9uOjpWYWx1ZSYgdmFsdWUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKHR5cGUoKSA9PSBEZWZpbml0aW9uOjpBYnNTZWdUeXBlIHx8IHR5cGUo
KSA9PSBEZWZpbml0aW9uOjpSZWxTZWdUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7Cisg
ICAgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCkKKyAgICAg
ICAgICAgICYmIHZhbHVlKCkgPT0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNTaGFwZVNlZ21lbnRW
YWx1ZTxEZWZpbml0aW9uPiY+KG90aGVyKS52YWx1ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBS
ZWY8QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZT4gY3JlYXRlKEJhc2ljU2hhcGVTZWdtZW50OjpUeXBl
IHR5cGUsIHR5cGVuYW1lIERlZmluaXRpb246OlZhbHVlJiYgdmFsdWUpCisgICAgeworICAgICAg
ICBBU1NFUlQodHlwZSA9PSBEZWZpbml0aW9uOjpBYnNTZWdUeXBlIHx8IHR5cGUgPT0gRGVmaW5p
dGlvbjo6UmVsU2VnVHlwZSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJhc2ljU2hh
cGVTZWdtZW50VmFsdWU8RGVmaW5pdGlvbj4odHlwZSwgV1RGTW92ZSh2YWx1ZSkpKTsKKyAgICB9
CisKK3Byb3RlY3RlZDoKKyAgICBCYXNpY1NoYXBlU2VnbWVudFZhbHVlKEJhc2ljU2hhcGVTZWdt
ZW50OjpUeXBlIHR5cGUsIHR5cGVuYW1lIERlZmluaXRpb246OlZhbHVlJiYgdmFsdWUpCisgICAg
ICAgIDogQmFzaWNTaGFwZVNlZ21lbnQodHlwZSkKKyAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUo
dmFsdWUpKSB7IH0KKworcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBEZWZpbml0aW9uOjpWYWx1ZSBt
X3ZhbHVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyBjb25zdCB0eXBlbmFt
ZSBUOjpWYWx1ZSYgZXh0cmFjdFZhbHVlKGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBzZWcpCit7
CisgICAgQVNTRVJUKHNlZy50eXBlKCkgPT0gVDo6QWJzU2VnVHlwZSB8fCBzZWcudHlwZSgpID09
IFQ6OlJlbFNlZ1R5cGUpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY1NoYXBl
U2VnbWVudFZhbHVlPFQ+Jj4oc2VnKS52YWx1ZSgpOworfQorCitib29sIEJhc2ljU2hhcGVTZWdt
ZW50OjplcXVhbHMoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdAoreworICAg
IGF1dG8gdHlwZSA9IHRoaXMtPnR5cGUoKTsKKyAgICBpZiAodHlwZSAhPSBvdGhlci50eXBlKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworI2RlZmluZSBDT01QQVJFX1NIQVBFX1NFR01FTlRf
VkFMVUUoVHlwZSkgXAorICAgIGNhc2UgU2hhcGVTZWdtZW50IyNUeXBlOjpBYnNTZWdUeXBlOiBc
CisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6OlJlbFNlZ1R5cGU6IFwKKyAgICAgICAgcmV0
dXJuIGV4dHJhY3RWYWx1ZTxTaGFwZVNlZ21lbnQjI1R5cGU+KCp0aGlzKSA9PSBleHRyYWN0VmFs
dWU8U2hhcGVTZWdtZW50IyNUeXBlPihvdGhlcik7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAg
ICBjYXNlIFBhdGhTZWdDbG9zZVBhdGg6CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAg
IEZPUl9FQUNIX1NIQVBFX1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKENPTVBBUkVfU0hBUEVfU0VH
TUVOVF9WQUxVRSkKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworI2RlZmluZSBJ
TVBMRU1FTlRfU0hBUEVfU0VHTUVOVF9WQUxVRShUWVBFKSBcCitSZWY8QmFzaWNTaGFwZVNlZ21l
bnQ+IEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGUjI1RZUEUoQmFzaWNTaGFwZVNlZ21lbnQ6OlR5
cGUgdHlwZSwgdHlwZW5hbWUgU2hhcGVTZWdtZW50IyNUWVBFOjpWYWx1ZSYmIHZhbHVlKSBcCit7
IFwKKyAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxTaGFwZVNlZ21lbnQjI1RZUEU+
OjpjcmVhdGUodHlwZSwgV1RGTW92ZSh2YWx1ZSkpOyBcCit9IFwKK2NvbnN0IHR5cGVuYW1lIFNo
YXBlU2VnbWVudCMjVFlQRTo6VmFsdWUmIEJhc2ljU2hhcGVTZWdtZW50OjphcyMjVFlQRSgpIGNv
bnN0IFwKK3sgXAorICAgIHJldHVybiBleHRyYWN0VmFsdWU8U2hhcGVTZWdtZW50IyNUWVBFPigq
dGhpcyk7IFwKK30KKworRk9SX0VBQ0hfU0hBUEVfU0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoSU1Q
TEVNRU5UX1NIQVBFX1NFR01FTlRfVkFMVUUpCisKK0N1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUg
YmxlbmQoY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29uc3QgQ3VydmVU
b0N1YmljU2hhcGVTZWdWYWx1ZSYgdG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICByZXR1cm4geworICAgICAgICBibGVuZChmcm9tLnBvaW50MSwgdG8ucG9pbnQxLCBj
b250ZXh0KSwKKyAgICAgICAgYmxlbmQoZnJvbS5wb2ludDIsIHRvLnBvaW50MiwgY29udGV4dCks
CisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRhcmdldFBvaW50LCBjb250ZXh0
KSwKKyAgICB9OworfQorCitDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNv
bnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIGZyb20sIGNvbnN0IEN1cnZlVG9D
dWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRl
eHQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgYmxlbmQoZnJvbS5wb2ludDIsIHRvLnBvaW50
MiwgY29udGV4dCksCisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRhcmdldFBv
aW50LCBjb250ZXh0KSwKKyAgICB9OworfQorCitDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1
ZSBibGVuZChjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29uc3Qg
Q3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQm
IGNvbnRleHQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgYmxlbmQoZnJvbS5wb2ludDEsIHRv
LnBvaW50MSwgY29udGV4dCksCisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRh
cmdldFBvaW50LCBjb250ZXh0KSwKKyAgICB9OworfQorCitBcmNUb1NoYXBlU2VnVmFsdWUgYmxl
bmQoY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiBmcm9tLCBjb25zdCBBcmNUb1NoYXBlU2VnVmFs
dWUmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHsK
KyAgICAgICAgYmxlbmQoZnJvbS5yYWRpdXMsIHRvLnJhZGl1cywgY29udGV4dCksCisgICAgICAg
IGJsZW5kKGZyb20uYW5nbGUsIHRvLmFuZ2xlLCBjb250ZXh0KSwKKyAgICAgICAgY29udGV4dC5w
cm9ncmVzcyA8IDAuNWYgPyBmcm9tLnN3ZWVwIDogdG8uc3dlZXAsCisgICAgICAgIGNvbnRleHQu
cHJvZ3Jlc3MgPCAwLjVmID8gZnJvbS5sYXJnZUFyYyA6IHRvLmxhcmdlQXJjLAorICAgICAgICBi
bGVuZChmcm9tLnRhcmdldFBvaW50LCB0by50YXJnZXRQb2ludCwgY29udGV4dCkKKyAgICB9Owor
fQorCitSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IEJhc2ljU2hhcGVTZWdtZW50OjpibGVuZChjb25z
dCBCYXNpY1NoYXBlU2VnbWVudCYgZnJvbSwgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0
KSBjb25zdAoreworICAgIGF1dG8gdHlwZSA9IHRoaXMtPnR5cGUoKTsKKyAgICBBU1NFUlQodHlw
ZSA9PSBmcm9tLnR5cGUoKSk7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFBhdGhT
ZWdDbG9zZVBhdGg6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xv
c2VQYXRoKCk7CisKKyNkZWZpbmUgQkxFTkRfU0VHTUVOVF9UWVBFKFR5cGUpIFwKKyAgICBjYXNl
IFNoYXBlU2VnbWVudCMjVHlwZTo6QWJzU2VnVHlwZTogXAorICAgIGNhc2UgU2hhcGVTZWdtZW50
IyNUeXBlOjpSZWxTZWdUeXBlOiBcCisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudFZh
bHVlPFNoYXBlU2VnbWVudCMjVHlwZT46OmNyZWF0ZSh0eXBlLCBXZWJDb3JlOjpibGVuZChleHRy
YWN0VmFsdWU8U2hhcGVTZWdtZW50IyNUeXBlPihmcm9tKSwgZXh0cmFjdFZhbHVlPFNoYXBlU2Vn
bWVudCMjVHlwZT4oKnRoaXMpLCBjb250ZXh0KSk7CisKKyAgICAgICAgRk9SX0VBQ0hfU0hBUEVf
U0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoQkxFTkRfU0VHTUVOVF9UWVBFKQorICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gQmFzaWNTaGFw
ZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworICAgIH0KK30KK2NsYXNzIFNoYXBlU1ZHUGF0
aFNvdXJjZSBmaW5hbCA6IHB1YmxpYyBTVkdQYXRoU291cmNlIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBTaGFwZVNWR1BhdGhTb3VyY2UoY29uc3QgTGVuZ3RoUG9pbnQmIHN0YXJ0LCBjb25zdCBW
ZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIHNlZ21lbnRzLCBjb25zdCBGbG9hdFNpemUm
IHNpemUpCisgICAgICAgIDogbV9zdGFydChzdGFydCkKKyAgICAgICAgLCBtX3NlZ21lbnRzKHNl
Z21lbnRzKQorICAgICAgICAsIG1fc2l6ZShzaXplKQorICAgICAgICAsIG1faXRlbUVuZChzZWdt
ZW50cy5zaXplKCkpCisgICAgICAgIHsKKworICAgICAgICB9CisKK3ByaXZhdGU6CisgICAgYm9v
bCBoYXNNb3JlRGF0YSgpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9pdGVt
Q3VycmVudCA8IG1faXRlbUVuZDsKKyAgICB9CisKKyAgICBib29sIG1vdmVUb05leHRUb2tlbigp
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFNWR1BhdGhTZWdUeXBlIG5leHRDb21tYW5k
KFNWR1BhdGhTZWdUeXBlKSBmaW5hbAorICAgIHsKKyAgICAgICAgYXV0byB0eXBlID0gbV9zZWdt
ZW50cy5hdChtX2l0ZW1DdXJyZW50KS0+dHlwZSgpOworICAgICAgICArK21faXRlbUN1cnJlbnQ7
CisgICAgICAgIHJldHVybiB0eXBlOworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0
aFNlZ1R5cGU+IHBhcnNlU1ZHU2VnbWVudFR5cGUoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0
dXJuIFBhdGhTZWdNb3ZlVG9BYnM7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRo
U291cmNlOjpNb3ZlVG9TZWdtZW50PiBwYXJzZU1vdmVUb1NlZ21lbnQoKSBmaW5hbAorICAgIHsK
KyAgICAgICAgaWYgKCFtX2l0ZW1DdXJyZW50KQorICAgICAgICAgICAgcmV0dXJuIFNWR1BhdGhT
b3VyY2U6Ok1vdmVUb1NlZ21lbnQgeyBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQobV9zdGFydCwg
bV9zaXplKSB9OworCisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50
IHsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlPFNoYXBlU2VnbWVudE1vdmVUbz4oKSwg
bV9zaXplKSB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGlu
ZVRvU2VnbWVudD4gcGFyc2VMaW5lVG9TZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJl
dHVybiBTVkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50IHsgZmxvYXRQb2ludEZvckxlbmd0aFBv
aW50KHZhbHVlPFNoYXBlU2VnbWVudExpbmVUbz4oKSwgbV9zaXplKSB9OworICAgIH0KKworICAg
IHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IHBh
cnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IFNWR1BhdGhTb3VyY2U6OkxpbmVUb0hvcml6b250YWxTZWdtZW50IHsgZmxvYXRWYWx1ZUZvckxl
bmd0aCh2YWx1ZTxTaGFwZVNlZ21lbnRMaW5lVG9Ib3Jpem9udGFsPigpLCBtX3NpemUud2lkdGgo
KSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb1Zl
cnRpY2FsU2VnbWVudD4gcGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKSBmaW5hbAorICAgIHsK
KyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkxpbmVUb1ZlcnRpY2FsU2VnbWVudCB7IGZs
b2F0VmFsdWVGb3JMZW5ndGgodmFsdWU8U2hhcGVTZWdtZW50TGluZVRvVmVydGljYWw+KCksIG1f
c2l6ZS5oZWlnaHQoKSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3Vy
Y2U6OkN1cnZlVG9DdWJpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCgpIGZpbmFs
CisgICAgeworICAgICAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2Vn
bWVudEN1cnZlVG9DdWJpYz4oKTsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZl
VG9DdWJpY1NlZ21lbnQgeyAgICAgICAgCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3Ro
UG9pbnQodmFsdWUucG9pbnQxLCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxl
bmd0aFBvaW50KHZhbHVlLnBvaW50MiwgbV9zaXplKSwKKyAgICAgICAgICAgIGZsb2F0UG9pbnRG
b3JMZW5ndGhQb2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXplKQorICAgICAgICB9OworICAg
IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1Ntb290aFNl
Z21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCgpIGZpbmFsCisgICAgeworICAg
ICAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEN1cnZlVG9D
dWJpY1Ntb290aD4oKTsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJp
Y1Ntb290aFNlZ21lbnQgeyAgICAgICAgCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3Ro
UG9pbnQodmFsdWUucG9pbnQyLCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxl
bmd0aFBvaW50KHZhbHVlLnRhcmdldFBvaW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQor
CisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVu
dD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICBj
b25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0
aWM+KCk7CisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2Vn
bWVudCB7CisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUucG9pbnQx
LCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnRh
cmdldFBvaW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQorCisgICAgc3RkOjpvcHRpb25h
bDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4gcGFyc2VDdXJ2
ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQgeyBmbG9hdFBvaW50
Rm9yTGVuZ3RoUG9pbnQodmFsdWU8U2hhcGVTZWdtZW50Q3VydmVUb1F1YWRyYXRpY1Ntb290aD4o
KSwgbV9zaXplKSB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6
QXJjVG9TZWdtZW50PiBwYXJzZUFyY1RvU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICBj
b25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEFyY1RvPigpOworICAg
ICAgICBhdXRvIHJhZGl1cyA9IGZsb2F0U2l6ZUZvckxlbmd0aFNpemUodmFsdWUucmFkaXVzLCBt
X3NpemUpOworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50IHsKKyAg
ICAgICAgICAgIC5yeCA9IHJhZGl1cy53aWR0aCgpLAorICAgICAgICAgICAgLnJ5ID0gcmFkaXVz
LmhlaWdodCgpLAorICAgICAgICAgICAgLmFuZ2xlID0gdmFsdWUuYW5nbGUsCisgICAgICAgICAg
ICAubGFyZ2VBcmMgPSB2YWx1ZS5sYXJnZUFyYywKKyAgICAgICAgICAgIC5zd2VlcCA9IHZhbHVl
LnN3ZWVwLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnRhcmdl
dFBvaW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBjb25zdCB0eXBlbmFtZSBUOjpWYWx1ZSYgdmFsdWUoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1faXRlbUN1cnJlbnQgPD0gbV9zZWdtZW50cy5zaXplKCkpOworICAgICAgICBy
ZXR1cm4gZXh0cmFjdFZhbHVlPFQ+KG1fc2VnbWVudHMuYXQobV9pdGVtQ3VycmVudCAtIDEpLmdl
dCgpKTsKKyAgICB9CisKKyAgICBjb25zdCBMZW5ndGhQb2ludCYgbV9zdGFydDsKKyAgICBjb25z
dCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIG1fc2VnbWVudHM7CisgICAgRmxvYXRT
aXplIG1fc2l6ZTsKKyAgICBzaXplX3QgbV9pdGVtRW5kOworICAgIHNpemVfdCBtX2l0ZW1DdXJy
ZW50ID0gMDsKK307CisKK1BhdGggQmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aChjb25zdCBMZW5n
dGhQb2ludCYgc3RhcnQsIGNvbnN0IFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYgc2Vn
bWVudHMsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBTaGFwZVNWR1BhdGhTb3VyY2Ug
c291cmNlKHN0YXJ0LCBzZWdtZW50cywgc2l6ZSk7CisgICAgUGF0aCBwYXRoOworICAgIFNWR1Bh
dGhCdWlsZGVyIGJ1aWxkZXIocGF0aCk7CisgICAgU1ZHUGF0aFBhcnNlcjo6cGFyc2Uoc291cmNl
LCBidWlsZGVyKTsKKyAgICByZXR1cm4gcGF0aDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWQx
OGNlODUwNmNlNjJkZDMyNjU3NTRkZTA3NDZhZDBiYzE5NDZmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmgKQEAgLTAs
MCArMSwxNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkxlbmd0aC5o
IgorI2luY2x1ZGUgIkxlbmd0aFBvaW50LmgiCisjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgorI2lu
Y2x1ZGUgIlNWR1BhdGhTZWcuaCIKKyNpbmNsdWRlICJTVkdQYXRoU291cmNlLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEJsZW5kaW5nQ29udGV4dDsKK2NsYXNzIEZsb2F0UmVj
dDsKK2NsYXNzIFBhdGg7CisKK3N0cnVjdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlIHsKKyAg
ICBMZW5ndGhQb2ludCBwb2ludDE7CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQyOworICAgIExlbmd0
aFBvaW50IHRhcmdldFBvaW50OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXJ2ZVRvQ3Vi
aWNTaGFwZVNlZ1ZhbHVlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBwb2lu
dDEgPT0gb3RoZXIucG9pbnQxICYmIHBvaW50MiA9PSBvdGhlci5wb2ludDIgJiYgdGFyZ2V0UG9p
bnQgPT0gb3RoZXIudGFyZ2V0UG9pbnQ7CisgICAgfQorfTsKKworc3RydWN0IEN1cnZlVG9DdWJp
Y1Ntb290aFNoYXBlU2VnVmFsdWUgeworICAgIExlbmd0aFBvaW50IHBvaW50MjsKKyAgICBMZW5n
dGhQb2ludCB0YXJnZXRQb2ludDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VydmVUb0N1
YmljU21vb3RoU2hhcGVTZWdWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gcG9pbnQyID09IG90aGVyLnBvaW50MiAmJiB0YXJnZXRQb2ludCA9PSBvdGhlci50YXJnZXRQ
b2ludDsKKyAgICB9Cit9OworCitzdHJ1Y3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUg
eworICAgIExlbmd0aFBvaW50IHBvaW50MTsKKyAgICBMZW5ndGhQb2ludCB0YXJnZXRQb2ludDsK
KworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1
ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gcG9pbnQxID09IG90aGVyLnBv
aW50MSAmJiB0YXJnZXRQb2ludCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9Cit9OworCisK
K3N0cnVjdCBBcmNUb1NoYXBlU2VnVmFsdWUgeworICAgIExlbmd0aFNpemUgcmFkaXVzOworICAg
IGZsb2F0IGFuZ2xlID0gMDsKKyAgICBib29sIHN3ZWVwID0gZmFsc2U7CisgICAgYm9vbCBsYXJn
ZUFyYyA9IGZhbHNlOworICAgIExlbmd0aFBvaW50IHRhcmdldFBvaW50OworCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gcmFkaXVzID09IG90aGVyLnJhZGl1cyAmJiBhbmdsZSA9PSBvdGhlci5h
bmdsZSAmJiBzd2VlcCA9PSBvdGhlci5zd2VlcCAmJiBsYXJnZUFyYyA9PSBvdGhlci5sYXJnZUFy
YyAmJiB0YXJnZXRQb2ludCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9Cit9OworCisKK0N1
cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdW
YWx1ZSYsIGNvbnN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0Nv
bnRleHQmKTsKK0N1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3Vy
dmVUb0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNo
YXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKTsKK0N1cnZlVG9RdWFkcmF0aWNT
aGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlJiwg
Y29uc3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRl
eHQmKTsKK0FyY1RvU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBBcmNUb1NoYXBlU2VnVmFsdWUm
LCBjb25zdCBBcmNUb1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCBTVkdQYXRoU2VnVHlwZSBBYnNUeXBlLCBTVkdQ
YXRoU2VnVHlwZSBSZWxUeXBlPgorc3RydWN0IFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uIHsK
KyAgICB0eXBlZGVmIFZhbHVlVHlwZSBWYWx1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g
QWJzU2VnVHlwZSA9IEFic1R5cGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIFJlbFNlZ1R5
cGUgPSBSZWxUeXBlOworfTsKKworc3RydWN0IFNoYXBlU2VnbWVudE1vdmVUbyA6IHB1YmxpYyBT
aGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxMZW5ndGhQb2ludCwgUGF0aFNlZ01vdmVUb0Ficywg
UGF0aFNlZ01vdmVUb1JlbD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudExpbmVUbyA6IHB1Ymxp
YyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxMZW5ndGhQb2ludCwgUGF0aFNlZ0xpbmVUb0Fi
cywgUGF0aFNlZ0xpbmVUb1JlbD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudExpbmVUb0hvcml6
b250YWwgOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248TGVuZ3RoLCBQYXRoU2Vn
TGluZVRvSG9yaXpvbnRhbEFicywgUGF0aFNlZ0xpbmVUb0hvcml6b250YWxSZWw+IHsgfTsKK3N0
cnVjdCBTaGFwZVNlZ21lbnRMaW5lVG9WZXJ0aWNhbCA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBl
RGVmaW5pdGlvbjxMZW5ndGgsIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbEFicywgUGF0aFNlZ0xpbmVU
b1ZlcnRpY2FsUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50Q3VydmVUb0N1YmljIDogcHVi
bGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUs
IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnMsIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNSZWw+IHsgfTsKK3N0
cnVjdCBTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljIDogcHVibGljIFNoYXBlU2VnbWVudFR5
cGVEZWZpbml0aW9uPEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlLCBQYXRoU2VnQ3VydmVU
b1F1YWRyYXRpY0FicywgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNSZWw+IHsgfTsKK3N0cnVjdCBT
aGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWNTbW9vdGggOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURl
ZmluaXRpb248Q3VydmVUb0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSwgUGF0aFNlZ0N1cnZlVG9D
dWJpY1Ntb290aEFicywgUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aFJlbD4geyB9Oworc3RydWN0
IFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWNTbW9vdGggOiBwdWJsaWMgU2hhcGVTZWdtZW50
VHlwZURlZmluaXRpb248TGVuZ3RoUG9pbnQsIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21vb3Ro
QWJzLCBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aFJlbD4geyB9Oworc3RydWN0IFNoYXBl
U2VnbWVudEFyY1RvIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPEFyY1RvU2hh
cGVTZWdWYWx1ZSwgUGF0aFNlZ0FyY0FicywgUGF0aFNlZ0FyY1JlbD4geyB9OworCisjZGVmaW5l
IEZPUl9FQUNIX1NIQVBFX1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKE1hY3JvKSBcCisgICAgTWFj
cm8oTW92ZVRvKSBcCisgICAgTWFjcm8oTGluZVRvKSBcCisgICAgTWFjcm8oTGluZVRvSG9yaXpv
bnRhbCkgXAorICAgIE1hY3JvKExpbmVUb1ZlcnRpY2FsKSBcCisgICAgTWFjcm8oQ3VydmVUb0N1
YmljKSBcCisgICAgTWFjcm8oQ3VydmVUb1F1YWRyYXRpYykgXAorICAgIE1hY3JvKEN1cnZlVG9D
dWJpY1Ntb290aCkgXAorICAgIE1hY3JvKEN1cnZlVG9RdWFkcmF0aWNTbW9vdGgpIFwKKyAgICBN
YWNybyhBcmNUbykKKworY2xhc3MgQmFzaWNTaGFwZVNlZ21lbnQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxCYXNpY1NoYXBlU2VnbWVudD4geworcHVibGljOgorICAgIHR5cGVkZWYgU1ZHUGF0aFNlZ1R5
cGUgVHlwZTsKKyAgICB+QmFzaWNTaGFwZVNlZ21lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIFJlZjxCYXNpY1NoYXBlU2Vn
bWVudD4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIGZyb20sIGNvbnN0IEJsZW5kaW5n
Q29udGV4dCYpIGNvbnN0OworICAgIGJvb2wgZXF1YWxzKGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50
JikgY29uc3Q7CisKKyAgICBzdGF0aWMgUGF0aCB0b1BhdGgoY29uc3QgTGVuZ3RoUG9pbnQmIHN0
YXJ0LCBjb25zdCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mLCBjb25zdCBGbG9hdFNp
emUmKTsKKworI2RlZmluZSBERUZJTkVfU0hBUEVfU0VHTUVOVF9UWVBFKFQpIFwKKyAgICBzdGF0
aWMgUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBjcmVhdGUjI1QoVHlwZSwgdHlwZW5hbWUgU2hhcGVT
ZWdtZW50IyNUOjpWYWx1ZSYmKTsgXAorICAgIGNvbnN0IHR5cGVuYW1lIFNoYXBlU2VnbWVudCMj
VDo6VmFsdWUmIGFzIyNUKCkgY29uc3Q7CisKKyAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZ
UEVfV0lUSF9WQUxVRShERUZJTkVfU0hBUEVfU0VHTUVOVF9UWVBFKQorCisgICAgc3RhdGljIFJl
ZjxCYXNpY1NoYXBlU2VnbWVudD4gY3JlYXRlQ2xvc2VQYXRoKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEJhc2ljU2hhcGVTZWdtZW50KFBhdGhTZWdDbG9zZVBhdGgpKTsK
KyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBCYXNpY1NoYXBlU2VnbWVudChUeXBlIHQpCisgICAg
ICAgIDogbV90eXBlKHQpIHsgfQorCitwcml2YXRlOgorICAgIFR5cGUgbV90eXBlOworfTsKKwor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApp
bmRleCAwODZhNmY2YTYzYTI1ZTUwMjNhZTk1YmZhODRmNGZhN2Q0ZmZjMjYyLi42NzNmZWE2YzRk
MjYzMDBhNjg3ZjlkNWRhM2I4NjMzZTg1ZTAwMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKQEAgLTEyMSw2ICsxMjEsNDQgQEAgc3RydWN0
IFRyYW5zZm9ybWVkQnl0ZVN0cmVhbVBhdGhQb2xpY3kgOiBUaW55TFJVQ2FjaGVQb2xpY3k8U1ZH
UGF0aFRyYW5zZm9ybWVkQnkKICAgICBzdGF0aWMgUGF0aCBjcmVhdGVWYWx1ZUZvcktleShjb25z
dCBTVkdQYXRoVHJhbnNmb3JtZWRCeXRlU3RyZWFtJiBzdHJlYW0pIHsgcmV0dXJuIHN0cmVhbS5w
YXRoKCk7IH0KIH07CiAKK3N0cnVjdCBTaGFwZVNlZ21lbnRzV2l0aEJveCB7CisgICAgTGVuZ3Ro
UG9pbnQgc3RhcnQ7CisgICAgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+IHNlZ21lbnRz
OworICAgIEZsb2F0UmVjdCBib3g7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcGVT
ZWdtZW50c1dpdGhCb3gmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGJveCAhPSBv
dGhlci5ib3ggfHwgc2VnbWVudHMuc2l6ZSgpID09IG90aGVyLnNlZ21lbnRzLnNpemUoKSB8fCBz
dGFydCAhPSBvdGhlci5zdGFydCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlZ21lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICBpZiAoIXNlZ21lbnRzLmF0KGkpLT5lcXVhbHMob3RoZXIuc2VnbWVudHMuYXQoaSkuZ2V0
KCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFwZVNl
Z21lbnRzV2l0aEJveCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7CisgICAgfQorfTsKKworc3RydWN0IFNoYXBlU2VnbWVudHNQYXRoUG9saWN5
IDogVGlueUxSVUNhY2hlUG9saWN5PFNoYXBlU2VnbWVudHNXaXRoQm94LCBQYXRoPiB7CisgICAg
c3RhdGljIGJvb2wgaXNLZXlOdWxsKGNvbnN0IFNoYXBlU2VnbWVudHNXaXRoQm94JiBzZWdtZW50
c1dpdGhCb3gpCisgICAgeworICAgICAgICByZXR1cm4gc2VnbWVudHNXaXRoQm94LnNlZ21lbnRz
LmlzRW1wdHkoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGF0aCBjcmVhdGVWYWx1ZUZvcktleShj
b25zdCBTaGFwZVNlZ21lbnRzV2l0aEJveCYgc2VnbWVudHNXaXRoQm94KQorICAgIHsKKyAgICAg
ICAgYXV0byBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aChzZWdtZW50c1dpdGhCb3gu
c3RhcnQsIHNlZ21lbnRzV2l0aEJveC5zZWdtZW50cywgc2VnbWVudHNXaXRoQm94LmJveC5zaXpl
KCkpOworICAgICAgICBwYXRoLnRyYW5zbGF0ZSh0b0Zsb2F0U2l6ZShzZWdtZW50c1dpdGhCb3gu
Ym94LmxvY2F0aW9uKCkpKTsKKyAgICAgICAgcmV0dXJuIHBhdGg7CisgICAgfQorfTsKKwogc3Rh
dGljIGNvbnN0IFBhdGgmIGNhY2hlZEVsbGlwc2VQYXRoKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPEZsb2F0UmVjdCwgUGF0
aCwgNCwgRWxsaXBzZVBhdGhQb2xpY3k+PiBjYWNoZTsKQEAgLTE0NSw2ICsxODMsMTIgQEAgc3Rh
dGljIGNvbnN0IFBhdGgmIGNhY2hlZFRyYW5zZm9ybWVkQnl0ZVN0cmVhbVBhdGgoY29uc3QgU1ZH
UGF0aEJ5dGVTdHJlYW0mIHN0cmUKICAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KFNWR1BhdGhU
cmFuc2Zvcm1lZEJ5dGVTdHJlYW0geyBzdHJlYW0sIHpvb20sIG9mZnNldCB9KTsKIH0KIAorc3Rh
dGljIGNvbnN0IFBhdGgmIGNhY2hlZFNoYXBlU2VnbWVudHNQYXRoKGNvbnN0IExlbmd0aFBvaW50
JiBmcm9tLCBjb25zdCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIHNlZ21lbnRzLCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlM
UlVDYWNoZTxTaGFwZVNlZ21lbnRzV2l0aEJveCwgUGF0aCwgNCwgU2hhcGVTZWdtZW50c1BhdGhQ
b2xpY3k+PiBjYWNoZTsKKyAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KFNoYXBlU2VnbWVudHNX
aXRoQm94IHsgZnJvbSwgc2VnbWVudHMsIHJlY3QgfSk7Cit9CisKIGJvb2wgQmFzaWNTaGFwZUNp
cmNsZTo6b3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJiBvdGhlcikgY29uc3QKIHsKICAgICBp
ZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKQEAgLTQ2Myw2ICs1MDcsNzggQEAgdm9pZCBCYXNp
Y1NoYXBlSW5zZXQ6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgdHMuZHVtcFByb3Bl
cnR5KCJib3R0b20tbGVmdC1yYWRpdXMiLCBib3R0b21MZWZ0UmFkaXVzKCkpOwogfQogCisKK0Jh
c2ljU2hhcGVTaGFwZTo6QmFzaWNTaGFwZVNoYXBlKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBW
ZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mJiBzZWdtZW50cykKKyAgICA6IG1fc2VnbWVu
dHMobWFrZVVuaXF1ZTxWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4+KFdURk1vdmUoc2Vn
bWVudHMpKSkKKyAgICAsIG1fZnJvbShmcm9tKQoreworfQorCitjb25zdCBQYXRoJiBCYXNpY1No
YXBlU2hhcGU6OnBhdGgoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkKK3sKKyAgICByZXR1
cm4gY2FjaGVkU2hhcGVTZWdtZW50c1BhdGgobV9mcm9tLCAqbV9zZWdtZW50cywgYm91bmRpbmdC
b3gpOworfQorCitib29sIEJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PShjb25zdCBCYXNpY1No
YXBlJiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgQmFzaWNTaGFwZVNoYXBlJiBvdGhlclNo
YXBlID0gZG93bmNhc3Q8QmFzaWNTaGFwZVNoYXBlPihvdGhlcik7CisgICAgYXV0byBzaXplID0g
dGhpcy0+c2l6ZSgpOworICAgIGlmICh3aW5kUnVsZSgpICE9IG90aGVyU2hhcGUud2luZFJ1bGUo
KSB8fCBzaXplID09IG90aGVyU2hhcGUuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoIWF0
KGkpLmVxdWFscyhvdGhlclNoYXBlLmF0KGkpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCYXNpY1NoYXBlU2hhcGU6OmNh
bkJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIG90aGVyKSBjb25zdAoreworICAgIGlmICh0eXBlKCkg
IT0gb3RoZXIudHlwZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHNpemUg
PSB0aGlzLT5zaXplKCk7CisgICAgYXV0byYgb3RoZXJTaGFwZSA9IGRvd25jYXN0PEJhc2ljU2hh
cGVTaGFwZT4ob3RoZXIpOworICAgIGlmICh3aW5kUnVsZSgpICE9IG90aGVyU2hhcGUud2luZFJ1
bGUoKSB8fCBzaXplICE9IG90aGVyU2hhcGUuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAo
YXQoaSkudHlwZSgpICE9IG90aGVyU2hhcGUuYXQoaSkudHlwZSgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitSZWY8QmFzaWNTaGFw
ZT4gQmFzaWNTaGFwZVNoYXBlOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBmcm9tLCBjb25zdCBC
bGVuZGluZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBm
cm9tLnR5cGUoKSk7CisgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOworICAgIGF1dG8mIGZy
b21TaGFwZSA9IGRvd25jYXN0PEJhc2ljU2hhcGVTaGFwZT4oZnJvbSk7CisgICAgQVNTRVJUKHNp
emUgPT0gZnJvbVNoYXBlLnNpemUoKSk7CisKKyAgICBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdt
ZW50Pj4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHJlc3VsdC5h
cHBlbmQoYXQoaSkuYmxlbmQoZnJvbVNoYXBlLmF0KGkpLCBjb250ZXh0KSk7CisKKyAgICBhdXRv
IG5ld1NoYXBlID0gQmFzaWNTaGFwZVNoYXBlOjpjcmVhdGUoV2ViQ29yZTo6YmxlbmQoZnJvbVNo
YXBlLmZyb20oKSwgbV9mcm9tLCBjb250ZXh0KSwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICBuZXdT
aGFwZS0+c2V0V2luZFJ1bGUod2luZFJ1bGUoKSk7CisgICAgcmV0dXJuIG5ld1NoYXBlOworfQor
Cit2b2lkIEJhc2ljU2hhcGVTaGFwZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKK3sKKyAg
ICB0cy5kdW1wUHJvcGVydHkoIndpbmQtcnVsZSIsIHdpbmRSdWxlKCkpOworICAgIC8vIEZJWE1F
OiBwcmludCB0aGUgYnl0ZSBzdHJlYW0/Cit9CisKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBCYXNpY1NoYXBlUmFkaXVzOjpUeXBlIHJhZGl1c1R5cGUpCiB7
CiAgICAgc3dpdGNoIChyYWRpdXNUeXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9CYXNpY1NoYXBlcy5oCmluZGV4IDliZjAzNzM0NzZiNTNlNWM3YTRhOWJjNjIzOWU0NWVj
NGFkNTM0ZTQuLjMxZThmM2RmNWRjYjE2MmU4MjUzNzM0ZDRiNWNjZWI5MGNlYzkxOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCkBAIC0zMCw2ICsz
MCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIkxl
bmd0aFBvaW50LmgiCiAjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgogI2luY2x1ZGUgIldpbmRSdWxl
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ3LDYgKzQ4LDcgQEAgc3RydWN0
IEJsZW5kaW5nQ29udGV4dDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIFBhdGg7CiBjbGFzcyBS
ZW5kZXJCb3g7CitjbGFzcyBCYXNpY1NoYXBlU2VnbWVudDsKIGNsYXNzIFNWR1BhdGhCeXRlU3Ry
ZWFtOwogCiBjbGFzcyBCYXNpY1NoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8QmFzaWNTaGFwZT4g
ewpAQCAtNTgsNyArNjAsOCBAQCBwdWJsaWM6CiAgICAgICAgIFBhdGgsCiAgICAgICAgIENpcmNs
ZSwKICAgICAgICAgRWxsaXBzZSwKLSAgICAgICAgSW5zZXQKKyAgICAgICAgSW5zZXQsCisgICAg
ICAgIFNoYXBlCiAgICAgfTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwpA
QCAtMzQzLDYgKzM0Niw0MSBAQCBwcml2YXRlOgogICAgIExlbmd0aFNpemUgbV9ib3R0b21MZWZ0
UmFkaXVzOwogfTsKIAorY2xhc3MgQmFzaWNTaGFwZVNoYXBlIDogcHVibGljIEJhc2ljU2hhcGUg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QmFzaWNTaGFwZVNoYXBlPiBjcmVhdGUoY29uc3Qg
TGVuZ3RoUG9pbnQmIGZyb20sIFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYmIHNlZ21l
bnRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNTaGFwZVNoYXBl
KGZyb20sIFdURk1vdmUoc2VnbWVudHMpKSk7CisgICAgfQorCisgICAgdm9pZCBzZXRXaW5kUnVs
ZShXaW5kUnVsZSB3aW5kUnVsZSkgeyBtX3dpbmRSdWxlID0gd2luZFJ1bGU7IH0KKyAgICBXaW5k
UnVsZSB3aW5kUnVsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0KKwor
ICAgIGNvbnN0IExlbmd0aFBvaW50JiBmcm9tKCkgY29uc3QgeyByZXR1cm4gbV9mcm9tOyB9CisK
KyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMtPnNpemUoKTsgfQor
ICAgIGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4g
bV9zZWdtZW50cy0+YXQoaSkuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBCYXNpY1NoYXBlU2hh
cGUoY29uc3QgTGVuZ3RoUG9pbnQmLCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mJik7
CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBUeXBlOjpTaGFwZTsg
fQorCisKKyAgICBjb25zdCBQYXRoJiBwYXRoKGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwor
CisgICAgYm9vbCBjYW5CbGVuZChjb25zdCBCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIGZyb20sIGNvbnN0IEJs
ZW5kaW5nQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEJhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZvaWQgZHVtcChUZXh0U3Ry
ZWFtJikgY29uc3QgZmluYWw7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlZjxCYXNp
Y1NoYXBlU2VnbWVudD4+PiBtX3NlZ21lbnRzOworICAgIFdpbmRSdWxlIG1fd2luZFJ1bGUgeyBX
aW5kUnVsZTo6Tm9uWmVybyB9OworICAgIExlbmd0aFBvaW50IG1fZnJvbTsKK307CisKIFdURjo6
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBCYXNpY1NoYXBl
UmFkaXVzJik7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwg
Y29uc3QgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUmKTsKIFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBCYXNpY1NoYXBlJik7CkBAIC0zNTksMyAr
Mzk3LDQgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQRShCYXNpY1NoYXBlRWxs
aXBzZSwgQmFzaWNTaGFwZTo6VHlwZTo6RWxsaXBzZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkFTSUNfU0hBUEUoQmFzaWNTaGFwZVBvbHlnb24sIEJhc2ljU2hhcGU6OlR5cGU6OlBvbHlnb24p
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVQYXRoLCBCYXNp
Y1NoYXBlOjpUeXBlOjpQYXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQRShC
YXNpY1NoYXBlSW5zZXQsIEJhc2ljU2hhcGU6OlR5cGU6Okluc2V0KQorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CQVNJQ19TSEFQRShCYXNpY1NoYXBlU2hhcGUsIEJhc2ljU2hhcGU6OlR5cGU6OlNo
YXBlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGQzNDUzNDhmOWQ5ZmMyMTIzZDE5NWNhM2E5YzkyYjM1MTRlMzI4NGUuLjRm
NjYxMDMwZDJkNDFhYWYxYWI5NGI5M2MxNDIxY2MzZjI3MmQxNDEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMi0wNC0xOSAgTm9hbSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW0NTUyBTaGFwZXNdIEFkZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzkwOTE5NDc2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogdW5za2lwIENTUyBzaGFwZSgpIHRlc3Rz
CisKIDIwMjItMDQtMTggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2ViR1BVXSBVbnNraXAgYXBpL3ZhbGlkYXRpb24vY3JlYXRlU2FtcGxlci5o
dG1sIPCfjokKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDY0ZWE2NTdlNmUwNDJh
YzNkMTAxOGM4ZGQ4ZDhmYzAyMjVmZWJhMDcuLmFkZjY0NWUyMzkyZDVhOTc5N2YyZjdjNjRmOWRi
MGYzMjRmMDc2YzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDIyLTA0LTE5ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBbQ1NTIFNoYXBlc10gQWRkIHN1cHBvcnQgZm9yIHNoYXBlKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODM3MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vOTA5MTk0NzY+CisKKyAgICAgICAgQW1lbmRlZCB0ZXN0cyB0byBzdXBwb3J0IENT
UyBzaGFwZSgpCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5n
L2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNo
YXBlLTAwMy5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tp
bmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAg
ICAgICAgICBOZWVkZWQgdG8gY2hhbmdlIHRoZSB0ZXN0IGEgYml0IGJlY2F1c2Ugb2Ygc3RyYXkg
cGl4ZWxzLiBXaWxsIHVwc3RyZWFtLgorCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1tYXNraW5nL3BhcnNpbmcvY2xpcC1wYXRoLXNoYXBlLXBhcnNpbmctZXhwZWN0ZWQu
dHh0OgorICAgICAgICAgICAgICAgIE5vdyBwYXNzZXMKKwogMjAyMi0wNC0xOCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBD
U1NUcmFuc2Zvcm1WYWx1ZS5pczJECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhZTc2MjZiM2JmMzlh
N2FiODY2YmY0YzQyOGY2YTM4Y2IxODYxOWE0Li5iZjA5MmRkNTJkM2FiMWUwNTQ5OGZhYjBjNmU5
ZGU4ZWMzOWQ4NGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIxOTksMTUgKzIxOTksNiBAQCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgv
Y2xpcC1wYXRoLXZpZXdCb3gtMWMuaAogd2Via2l0Lm9yZy9iLzEwNDQ0MiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXVy
bC1yZWZlcmVuY2UtY2hhbmdlLWZyb20tZW1wdHkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzIyOTUxMCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLWRlc2NlbmRhbnQtdGV4dC1tdXRhdGVkLTAw
MS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgQ1NTIHNoYXBlKCkKLXdlYmtpdC5vcmcv
Yi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcv
Y2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMi11bml0cy5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAy
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0
aC1zaGFwZS0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3
MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBh
dGgvY2xpcC1wYXRoLXNoYXBlLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNr
aW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtaW50ZXJwb2xhdGlvbi0wMDEuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLWlu
dGVycG9sYXRpb24tMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9i
LzIyOTM3MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9j
bGlwL2NsaXAtZmlsdGVyLW9yZGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8yMjkzNzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tp
bmcvbWFzay1pbWFnZS9tYXNrLWltYWdlLXVybC1sb2NhbC1tYXNrLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMjkzNzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW1hc2tpbmcvbWFzay1pbWFnZS9tYXNrLWltYWdlLXVybC1yZW1vdGUtbWFz
ay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xp
cC1wYXRoLXNoYXBlLTAwMy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1z
aGFwZS0wMDMtZXhwZWN0ZWQuaHRtbAppbmRleCA0NmUwOThjNGViNjQ4OWZjNDQzMDFkNmJmOWIy
NDNlODM2YjJjYTMxLi4zMWU5N2M5MTQ3NDQ4YWE4NDkyNjQyZTQxOTZhYTkxYjVjYTZhNDg4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy1leHBlY3RlZC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWwKQEAg
LTksMTQgKzksMjMgQEAKICAgICB3aWR0aDogMTAwcHg7CiAgICAgaGVpZ2h0OiAxMDBweDsKICAg
fQotICAjcmVmIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKworICAjcmVmLCAjYWN0
dWFsIHsKICAgICBjbGlwLXBhdGg6IHBhdGgobm9uemVybywgIk0gMTAgMTAsIFEgNDAgMCA2MCAy
MCwgVCA5MCAwLCBjIDEwIDQwIDIwIDIwIC0yMCA2MCwgcyAtMTAgNzAgLTQwIC0xMCIpOwogICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgfQorCisgICNyZWYgeworICAgIGJhY2tncm91bmQtY29s
b3I6IHJlZDsKKyAgfQorCisgICNhY3R1YWwgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVu
OworICB9CiA8L3N0eWxlPgogPGJvZHk+CiAgIDxwPllvdSBzaG91bGQgc2VlIG5vIHJlZC48L3A+
CiAgIDxkaXYgaWQ9InJlZiI+PC9kaXY+CisgIDxkaXYgaWQ9ImFjdHVhbCI+PC9kaXY+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAw
My5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbAppbmRleCAyMmU3
ZDlhYWY1Mzc0YzliN2U0ZTNjMmQ1MGVjZWZiY2VjMTM0YjY2Li5lMDE3MDkwMDVhYzhjZjhlMzVk
MDYyYTY4NTdiNjQ2MjdiNWViZTA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRo
LXNoYXBlLTAwMy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLmh0
bWwKQEAgLTYsNiArNiw3IEBACiAgIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InJlZmVyZW5jZS9j
bGlwLXBhdGgtc2hhcGUtMDAzLXJlZi5odG1sIj4KICAgPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250
ZW50PSJUaGUgY2xpcC1wYXRoIHByb3BlcnR5IHRha2VzIHRoZSBiYXNpYyBzaGFwZQogCSdzaGFw
ZSgpJyBmb3IgY2xpcHBpbmcuIFRlc3QgY3VydmVzLiI+CisgIDxtZXRhIG5hbWU9ImZ1enp5IiBj
b250ZW50PSJtYXhEaWZmZXJlbmNlPTgwOyB0b3RhbFBpeGVscz0zOTQiPgogPC9oZWFkPgogPHN0
eWxlPgogICBkaXYgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0w
MDQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4cGVj
dGVkLmh0bWwKaW5kZXggZWM4Zjk0MTA3OTUxMzhmN2EzNDkwZDdhNDE2OWI1ZWJkNWUzNzQ3NC4u
MTBmNDU3YjkxMTg0ZjEwMTMwNjg5YTI3MzA1ZmMyZGQzNjZlMjgzMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcv
Y2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlw
LXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwNC1leHBlY3RlZC5odG1sCkBAIC05LDE0ICs5LDIzIEBA
CiAgICAgd2lkdGg6IDEwMHB4OwogICAgIGhlaWdodDogMTAwcHg7CiAgIH0KLSAgI3JlZiB7Ci0g
ICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisKKyAgI3JlZiwgI2FjdHVhbCB7CiAgICAgY2xp
cC1wYXRoOiBwYXRoKG5vbnplcm8sICJNIDIwIDIwIEEgMjUgMTIgMCAwIDEgODAgMjAsIGEgMzMg
MzMgMTIwIDEgMSAtNDAgNTAsIEEgMjAgMjUgMCAwIDAgMjAgMjAiKTsKICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CiAgIH0KKworICAjcmVmIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Cisg
IH0KKworICAjYWN0dWFsIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgfQogPC9z
dHlsZT4KIDxib2R5PgogICA8cD5Zb3Ugc2hvdWxkIHNlZSBubyByZWQuPC9wPgogICA8ZGl2IGlk
PSJyZWYiPjwvZGl2PgorICA8ZGl2IGlkPSJhY3R1YWwiPjwvZGl2PgogPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2luZy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtbWFza2luZy9wYXJzaW5nL2NsaXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dApp
bmRleCBlOTRhZWU4YjZiNGNiMDRmN2FmZTgyYWQ2NWIzYzE0OGJjNDExMjVmLi5lMDU4MGVkZmMx
ZDhlZjMyNzc1YjVkOTZmMzg3ZWU1ZTdhNDdhMzBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2Ns
aXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2NsaXAt
cGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dApAQCAtMSwyNCArMSwyNCBAQAogCi1GQUlM
IGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMHB4IDBweCwgbGluZSB0byAxMHB4
IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczog
cHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0
eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShldmVub2RkIGZyb20gMHB4IDBweCwgbGluZSB0byAx
MHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFs
czogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBl
LnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShub256ZXJvIGZyb20gMHB4IDBweCwgbGluZSB0
byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2Vx
dWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJ
TCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZSggIGZyb20gMHB4ICAgIDBweCwgbGluZSAg
dG8gMTBweCAgMTBweCAgICAgKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0
X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUg
IiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxZW0gNTAlLCBsaW5l
IHRvIDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3Rf
ZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1G
QUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKEV2ZW5PZGQgZnJvbSAwcHggMFB4LCBD
TE9TRSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBw
cm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5
bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMWNoIDUwcHgsIGxpbmUgdG8gMTByZW0gMTB2
aCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9w
ZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVb
J2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMWNoIC01MHB4LCBsaW5lIHRvIC0xMCUgMTJweCki
IHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0
eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2Ns
aXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBtb3ZlIGJ5IDEwcHggNXB4LCBsaW5l
IGJ5IDIwcHggNDAlLCBjbG9zZSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2Vy
dF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVl
ICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBo
bGluZSBieSAxMHB4LCB2bGluZSB0byA1cmVtKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFs
dWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93
ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4
IDEwcHgsIHZsaW5lIGJ5IDUlLCBobGluZSB0byAxdncpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0
eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlz
YWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9t
IDEwcHggMTBweCwgY3VydmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUg
c2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0g
InNoYXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEwcmVtIDFweCAy
MHZoIDFjaCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxz
OiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUu
c3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2ZSBieSA1MHB4
IDIwcHggdmlhIDEwcmVtIDFweCAyMHZoIDFjaCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZh
bHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxv
d2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBw
eCAxMHB4LCBzbW9vdGggdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNob3VsZCBzZXQgdGhl
IHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0
IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNo
YXBlKGZyb20gMTBweCAxMHB4LCBzbW9vdGggdG8gNTBweCAxcHQpIiBzaG91bGQgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBn
b3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShmcm9tIDEwcHggMTBweCwgYXJjIHRvIDUwcHggMXB0IG9mIDEwcHggMTBweCkiIHNob3VsZCBz
ZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQg
YmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCdd
ID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBhcmMgdG8gNTBweCAxcHQgb2YgMTBweCAxMHB4IHNt
YWxsIHJvdGF0ZSAwZGVnKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25v
dF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIK
LUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMCUgMXJlbSwgYXJjIHRv
IDUwcHggMXB0IG9mIDIwJSBjdyBsYXJnZSByb3RhdGUgMjVkZWcpIiBzaG91bGQgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBn
b3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShldmVub2RkIGZyb20gMHB4IDBweCwgY2xvc2UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxs
b3dlZCB2YWx1ZSAiIgorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDBw
eCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUK
K1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgs
IGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1Mg
ZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUobm9uemVybyBmcm9tIDBweCAwcHgsIGxpbmUg
dG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHls
ZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoICBmcm9tIDBweCAgICAwcHgsIGxpbmUgIHRvIDEwcHgg
IDEwcHggICAgICkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVb
J2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMWVtIDUwJSwgbGluZSB0byAxMHB4IDEwcHgpIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9
ICJzaGFwZShFdmVuT2RkIGZyb20gMHB4IDBQeCwgQ0xPU0UpIiBzaG91bGQgc2V0IHRoZSBwcm9w
ZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFjaCA1
MHB4LCBsaW5lIHRvIDEwcmVtIDEwdmgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQor
UEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFjaCAtNTBweCwgbGluZSB0
byAtMTAlIDEycHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxl
WydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgbW92ZSBieSAxMHB4IDVweCwg
bGluZSBieSAyMHB4IDQwJSwgY2xvc2UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQor
UEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgaGxpbmUg
YnkgMTBweCwgdmxpbmUgdG8gNXJlbSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQ
QVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCB2bGluZSBi
eSA1JSwgaGxpbmUgdG8gMXZ3KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1Mg
ZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUw
cHggMjBweCB2aWEgMTByZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFT
UyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUgdG8g
NTBweCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0
eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBw
eCwgY3VydmUgYnkgNTBweCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQgc2V0
IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShm
cm9tIDEwcHggMTBweCwgc21vb3RoIHRvIDUwcHggMjBweCB2aWEgMTByZW0gMSUpIiBzaG91bGQg
c2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShmcm9tIDEwcHggMTBweCwgc21vb3RoIHRvIDUwcHggMXB0KSIgc2hvdWxkIHNldCB0aGUgcHJv
cGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4
IDEwcHgsIGFyYyB0byA1MHB4IDFwdCBvZiAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9w
ZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHgg
MTBweCwgYXJjIHRvIDUwcHggMXB0IG9mIDEwcHggMTBweCBzbWFsbCByb3RhdGUgMGRlZykiIHNo
b3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0g
InNoYXBlKGZyb20gMTAlIDFyZW0sIGFyYyB0byA1MHB4IDFwdCBvZiAyMCUgY3cgbGFyZ2Ugcm90
YXRlIDI1ZGVnKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Y2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGNsb3NlKSIgc2hvdWxk
IHNldCB0aGUgcHJvcGVydHkgdmFsdWUKIFBBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hh
cGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGNsb3NlIHBhdGgpIiBzaG91bGQgbm90IHNldCB0aGUg
cHJvcGVydHkgdmFsdWUKIFBBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUobm9uemVy
bywgZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBub3Qgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZQogUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEw
cHggMTBweCwgY3VydmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSkiIHNob3VsZCBub3Qgc2V0IHRo
ZSBwcm9wZXJ0eSB2YWx1ZQo=
</data>
<flag name="commit-queue"
          id="486584"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457870</attachid>
            <date>2022-04-19 02:42:57 -0700</date>
            <delta_ts>2022-04-19 03:06:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238371-20220419124254.patch</filename>
            <type>text/plain</type>
            <size>96860</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0MDhiYzRlZDIxNmNh
YWM1ZWVlZTUyMDkyNWQ3NzYzOGU0M2QwZC4uYzhmMjI3MTg0NDc0MGQ5Njc0Mjg0YzY3ODkyNGUx
ZjgwODQyODU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0xOSAgTm9h
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFk
ZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBDU1Mgc2hhcGUoKSBieSBpbnRyb2R1Y2luZyBzaGFwZSBzZWdtZW50IGFuZCBCYXNpY1NoYXBl
U2hhcGUuCisgICAgICAgIFNoYXBlU2hhcGUgaXMgYSB2ZWN0b3Igb2Ygc2hhcGUgc2VnbWVudHMs
IHdoZXJlIGVhY2ggc2VnbWVudCBibGVuZHMgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgVGhlIHNo
YXBlIHVsdGltYXRlbHkgY3JlYXRlcyBhbiBTVkdQYXRoU291cmNlIHRvIGNvbnZlcnQgdGhlIHJl
c3BvbnNpdmUgc2hhcGUsIHdoaWNoCisgICAgICAgIGlzIGJhc2VkIG9uIExlbmd0aCB2YWx1ZXMs
IHRvIGFuIGFic29sdXRlIFBhdGggb2JqZWN0IHRoYXQgY2FuIGJlIGRyYXduLgorCisgICAgICAg
IFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXNoYXBlcy0yLyNzaGFwZS1mdW5jdGlv
bgorCisgICAgICAgIFVuc2tpcHBlZCBzZXZlcmFsIHJlbGV2YW50IFdQVHMuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgICAgICBOZXcgZmlsZXMg
YWRkZWQKKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZhbHVlRm9yQmFzaWNTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9MZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpiYXNpY1NoYXBlRm9yVmFsdWUpOgor
ICAgICAgICAgICAgICAgIEFkZGVkIHRoZSBCYXNpY1NoYXBlU2hhcGUgdHlwZQorCisgICAgICAg
ICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Q1NTQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2lj
U2hhcGVTaGFwZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6
CisgICAgICAgICAgICAgICAgQWRkZWQgdGhlIENTU0Jhc2ljU2hhcGVTaGFwZQorCisgICAgICAg
ICogY3NzL0NTU1NoYXBlU2VnbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
aGFwZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NT
U2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudDo6Q1NTU2hh
cGVTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OnRhcmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6YXJndW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OmFmZmluaXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjphcHBlbmRBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpDU1NTaGFwZVNlZ21l
bnRWYWx1ZSk6CisgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB0byBkbyB3aXRoIHRoZSBzZWdt
ZW50IG9mIHRoZSBzaGFwZSB3aGlsZSBpbiBDU1Mgc3BhY2UsCisgICAgICAgICAgICAgICAgaW5j
bHVkaW5nIHNlcmlhbGl6YXRpb24gZm9yIGdldENvbXB1dGVkU3R5bGUoKQorCisgICAgICAgICog
Y3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzU2hhcGVTZWdtZW50VmFsdWUgY29uc3Qp
OgorICAgICAgICAgICAgICAgIENTU1NoYXBlU2VnbWVudCBpcyBhIHR5cGUgb2YgdmFsdWUKKwor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAgICAgICAgIE5ldyBr
ZXl3b3JkcyBmb3Igc2hhcGUoKQorCisgICAgICAgICogY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9u
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFBvaW50VG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0FyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6dG9DU1NB
cmdzPExlbmd0aFBvaW50Pik6CisgICAgICAgIChXZWJDb3JlOjp0b0NTU1NoYXBlU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpzZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpmcm9t
Q1NTU2hhcGVTZWdtZW50KToKKyAgICAgICAgKiBjc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmg6
IEFkZGVkLgorICAgICAgICAgICAgICAgIENvbnZlcnRpbmcgc2hhcGUgc2VnbWVudHMgdG8vZnJv
bSBDU1Mgc3BhY2UKKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNoYXBlU2VnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVC
YXNpY1NoYXBlKToKKyAgICAgICAgICAgICAgICBQYXJzZSBhIHNoYXBlIHByb3BlcnR5CisKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OnZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzaWNTaGFwZVNlZ21lbnQ6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6YmxlbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFyY1RvU2hhcGVTZWdWYWx1
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVu
dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6Y3Jl
YXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50OjpCYXNp
Y1NoYXBlU2VnbWVudCk6CisgICAgICAgICAgICAgICAgQmxlbmRpbmcsIGNvbXBhcmluZyBhbmQg
Y29udmVydGluZyB0byBhYnNvbHV0ZSBwYXRoCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhCb3g6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhC
b3g6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1Bh
dGhQb2xpY3k6OmlzS2V5TnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVNlZ21lbnRzUGF0
aFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU2hh
cGVTZWdtZW50c1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpCYXNp
Y1NoYXBlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpwYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6YmxlbmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZVNoYXBlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2V0V2luZFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpmcm9tIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlU2hhcGU6OmF0IGNvbnN0KToKKyAgICAgICAgICAgICAgICBBZGQgQmFz
aWNTaGFwZVNoYXBlCisKIDIwMjItMDQtMTggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgUGxhdGZvcm1NZWRpYUVuZ2luZUNsYXNzTmFt
ZSBtYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODBiYmVhOGU3MjM0ZjA1NWVmZDZlMzQwMDc1
MGIzN2YzMzE3OGNhZS4uZWJlYzFlMGIwZDhjODhjMzk0NDRkZDg4NGI4MDNlNDk3MmU3MDY0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC01NTQsNiArNTU0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9DU1NSdWxlTGlzdC5oCiAgICAgY3NzL0NTU1Nl
bGVjdG9yLmgKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKyAgICBjc3MvQ1NTU2hhcGVTZWdt
ZW50LmgKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCiAgICAgY3NzL0NTU1N0eWxlUnVs
ZS5oCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMTg4Nyw2ICsxODg4LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hh
cGUuaAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCiAKKyAgICByZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaAogICAgIHJlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5oCiAgICAgcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAogICAgIHJlbmRlcmlu
Zy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBhZjNkMDZhNWIwYmJjNjhm
YzAxMTMzYmNjZmUxZjJjZDk3MGU4OWUuLjM0ZDMyYTg4MTYyNTdkNDVkZGFkOTgyYTk3YzdjMTRi
NzFkMDM4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC03NzEsNiArNzcxLDcgQEAgY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmNwcAogY3NzL0NTU1NlbGVjdG9yLmNwcAogY3NzL0NTU1NlbGVjdG9yTGlz
dC5jcHAKIGNzcy9DU1NTaGFkb3dWYWx1ZS5jcHAKK2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCiBj
c3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKIGNzcy9DU1NTdHlsZVJ1bGUuY3BwCiBjc3MvQ1NT
U3R5bGVTaGVldC5jcHAKQEAgLTI0NDksNiArMjQ1MCw3IEBAIHJlbmRlcmluZy9zaGFwZXMvUmVj
dGFuZ2xlU2hhcGUuY3BwCiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogcmVuZGVyaW5nL3No
YXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNw
cAorcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmNwcAogcmVuZGVyaW5nL3N0eWxl
L0JvcmRlckRhdGEuY3BwCiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCiByZW5kZXJp
bmcvc3R5bGUvRmlsbExheWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2MTc2MzlkZjcyMDZmYzQ4NDU3MDQ4ZWU0NGJh
ODk0M2M1MmM3YTIuLmY1NDE5MDgyMzdkNjE1NGJlNDIwZWQ2N2M5MDg1ZTY0NTlkMDQ1NGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ0NTIsNiArNDQ1MiwxMCBAQAogCQlDQTNCRjY3RTEwRDk5QkFFMDBFNkNFNTMgLyogU2Ny
b2xsQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNBNkMxNTMwMjIwQjk4
Q0MwMDU1Q0JGQyAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFBRTNCODFGQjgwRUFFMDBGNUVGQjIgLyog
SlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNBN0U5QjQ5MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVs
UGFpbnRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDQTdFOUI0NzI0MzYxREM1MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5o
ICovOyB9OworCQlDQTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBODE2Q0Iz
Mjc3ODQ4MUUwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oICovOyB9OworCQlDQTgxNkNC
OTI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyog
Q1NTU2hhcGVTZWdtZW50LmggKi87IH07CisJCUNBODE2Q0JDMjc3ODlBQUQwMDJCRDNDNiAvKiBT
aGFwZVNlZ21lbnRGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0E4MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1
bmN0aW9ucy5jcHAgKi87IH07CisJCUNBODE2Q0JEMjc3ODlBQUQwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRGdW5jdGlvbnMu
aCAqLzsgfTsKIAkJQ0FFOUY5MTAxNDY0NDFGMDAwQzI0NUIwIC8qIENTU0FzcGVjdFJhdGlvVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBRTlG
OTBFMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggKi87IH07CiAJCUNC
MzhGRDUyMUNDRjkzOTQwMDU5MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCMzhGRDRFMUNDRjkzN0UwMDU5
MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuaCAqLzsgfTsKIAkJQ0IzOEZENUIxQ0QyMzI1QjAw
NTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0IzOEZENTkxQ0QyMzE0NTAwNTkyQTNGIC8q
IEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oICovOyB9OwpAQCAtMTU5NDcsNiArMTU5NTEs
NyBAQAogCQlDQTA5MUQ4NjIzQ0Y5MDc4MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHlsZUltYWdlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0EwOTFEODkyM0NGOTA4ODAwQUQ0MzQ2IC8qIFN0eWxlSW1hZ2VTZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3R5bGVJbWFnZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQTE2MzVEQzIwNzJFNzY5MDBFN0QyQ0UgLyogUmVmZXJyZXJQb2xpY3kuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmZXJyZXJQb2xpY3kuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDQTE2NkNDQjI3ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hh
cGVTZWdtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1NoYXBlU2VnbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMTkzM0Q1MjQwN0Q2NDAwMDcxMjQxQSAvKiBQ
ZXJmb3JtYW5jZVBhaW50VGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZvcm1hbmNlUGFpbnRU
aW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0ExOTMzRDgyNDA3RURDRjAw
NzEyNDFBIC8qIFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDQTNBNEFBQjI1NDE2RTNDMDA2Q0RBRTIgLyogSW1hZ2VSZXNvbHV0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlUmVzb2x1dGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTk2Miw2ICsxNTk2NywxMSBAQAogCQlDQTZD
MTUzODIyMEQxRUIzMDA1NUNCRkMgLyogSlNJREJDdXJzb3JXaXRoVmFsdWVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJDdXJzb3JXaXRoVmFsdWVD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTdFOUI0NzI0MzYxREM1
MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb250ZW50ZnVsUGFpbnRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNBN0U5QjQ4MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFpbnRD
aGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRm
dWxQYWludENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNC
MzI3Nzg0ODFFMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0E4MTZDQjQyNzc4NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2ljU2hhcGVTZWdt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4MTZDQjgyNzc4NDgyRTAw
MkJEM0M2IC8qIENTU1NoYXBlU2VnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDU1NTaGFwZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4
MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFwZVNlZ21lbnRGdW5jdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCQjI3Nzg5QUE3MDAyQkQzQzYg
LyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQUU5RjkwRDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIw
IC8qIENTU0FzcGVjdFJhdGlvVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
QjM4RkQ0QTFDQ0NGMkREMDA1OTJBM0YgLyogUGVyZm9ybWFuY2VFbnRyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJmb3JtYW5jZUVudHJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5Njg4LDYgKzI5Njk4LDggQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCUZCRDZBRjgyMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi8s
CiAJCQkJRkJENkFGODMxNUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8sCisJCQkJ
Q0E4MTZDQjQyNzc4NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJ
CQlDQTgxNkNCMzI3Nzg0ODFFMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLywKIAkJ
CQkwRjI4M0E5MTIzNTYzMTI2MDA0Nzk0Q0EgLyogQm9yZGVyRGF0YS5jcHAgKi8sCiAJCQkJQkM1
RUI1RTAwRTgxQkU4NzAwQjI1OTY1IC8qIEJvcmRlckRhdGEuaCAqLywKIAkJCQlCQzVFQjVEQTBF
ODFCN0VBMDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCAqLywKQEAgLTMxOTYxLDYgKzMxOTczLDgg
QEAKIAkJCQlFNEMxNzg5NjBFRTY5MDM4MDA4MjRENjkgLyogQ1NTU2VsZWN0b3JMaXN0LmggKi8s
CiAJCQkJQTgwRTZDQ0EwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmNwcCAqLywK
IAkJCQlBODBFNkNCRTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU2hhZG93VmFsdWUuaCAqLywKKwkJ
CQlDQTE2NkNDQjI3ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJ
CQlDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggKi8sCiAJCQkJ
N0NERThFQkMxRjE5M0JDNTAwMTY4RkU3IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uY3BwICovLAog
CQkJCUE4MEU2RTBEMEExOTkxMUMwMDdGQjhDNSAvKiBDU1NTdHlsZURlY2xhcmF0aW9uLmggKi8s
CiAJCQkJMTQyMDExQUUwQTAwMzExNzAwODMwM0Y5IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaWRs
ICovLApAQCAtMzIwOTYsNiArMzIxMTAsOCBAQAogCQkJCTQzQjg1RUQ2MThDQkVDOTcwMEUzMUFG
NCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuaW4gKi8s
CiAJCQkJMjZBQTBGOUExOEQyOTczRDAwNDE5MzgxIC8qIFNlbGVjdG9yUHNldWRvRWxlbWVudFR5
cGVNYXAuaW4gKi8sCiAJCQkJNDMxMDdCRTExOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNl
dWRvVHlwZU1hcC5oICovLAorCQkJCUNBODE2Q0JBMjc3ODlBQTIwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuY3BwICovLAorCQkJCUNBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBT
aGFwZVNlZ21lbnRGdW5jdGlvbnMuaCAqLywKIAkJCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQg
LyogU3R5bGVDb2xvci5jcHAgKi8sCiAJCQkJOTQxODI3ODkxRDhCMjQyMjAwNDkyNzY0IC8qIFN0
eWxlQ29sb3IuaCAqLywKIAkJCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRp
YS5jcHAgKi8sCkBAIC0zMzg1Niw2ICszMzg3Miw3IEBACiAJCQkJNzE1NkJDQTEyMUNBMzUwRjAw
NTM0Mzk3IC8qIEJhc2ljRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4
QTE1RUYyNURGMDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkJENkFGOEMxNUVGMjYwNDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDQTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFCMjNBMzI4MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVU
ZXh0SW5zZXJ0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCM0QwQTQ0RUZDNzAw
Rjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEy
NDBEMDA2QzFEMDBFRjZGMjYgLyogQmlkaUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMzQz
NDcsNiArMzQzNjQsNyBAQAogCQkJCUU0QzE3ODlCMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxl
Y3Rvckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0REU1QzhFMUQ4MDgwMjcwMDE2NEYyQSAv
KiBDU1NTZWxlY3RvclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRTgwQTE5ODlD
QTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNC
OTI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQTUzOEEyQTI2RjAxMDQyMDA5NjVGQzggLyogQ1NTU2tldy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkE1MzhBMkIyNkYwMTA0NTAwOTY1RkM4IC8qIENTU1NrZXdYLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyQTUzOEEyQzI2RjAxMDQ4MDA5NjVGQzggLyogQ1NTU2tld1kuaCBpbiBIZWFkZXJzICov
LApAQCAtMzc0ODQsNiArMzc1MDIsNyBAQAogCQkJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAv
KiBTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NUIxNzVENDFFRTAwQzIxRUM4IC8q
IFNoYXBlSW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTUyMTc1RDNGM0UwMEMy
MUVDOCAvKiBTaGFwZU91dHNpZGVJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNCRDI3
Nzg5QUFEMDAyQkQzQzYgLyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDFBRjE1MDE2NTZGMTUxMDBDNkQ0RjcgLyogU2hhcGVWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUQ5RjBGQzEyMTIyMDI5QjAwNUQ4RkQ0IC8qIFNoYXJlRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE0QTk1NEUwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zOTAzMCw2ICszOTA0OSw3IEBACiAJCQkJNDNCODVFRDQxOENCRUM1
MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1h
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkFBMEY5RTE4RDJBMThCMDA0MTkzODEgLyogU2Vs
ZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0Q1OERG
RDFGOTU2NUE4MDAxMTI3OTEgLyogU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0E4
MTZDQkMyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MURGMkQ1RTI3QTk0NTJBMDBGMjVBMjEgLyogU2hhcmVkVmlkZW9GcmFt
ZUluZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTBBODFGOTAyMkE0MDA1MTAyQ0UgLyog
U29mdExpbmtMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUFBMTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCmluZGV4IDlkZjJjZmY3
OTU3ZTQ1ZDg5YjcyMWE3MWU3NWUyOGQ4NWE1ZTc5YTcuLjE3NzIyMjZhZmViNzNkODQ0OTU5N2Q2
YWRlMzY4M2U2N2IxZDVjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1No
YXBlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0
aW9ucy5jcHAKQEAgLTMwLDEzICszMCwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkJhc2ljU2hhcGVGdW5jdGlvbnMuaCIKIAorI2luY2x1ZGUgIkJhc2ljU2hhcGVTZWdtZW50
LmgiCiAjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKICNpbmNsdWRlICJDU1NCYXNpY1NoYXBlcy5o
IgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJDU1NT
aGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJQYWly
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVh
bS5oIgorI2luY2x1ZGUgIlNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTE1NCw2ICsxNTcsMjIgQEAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1
ZUZvckJhc2ljU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCYXNpY1MKICAg
ICAgICAgYmFzaWNTaGFwZVZhbHVlID0gV1RGTW92ZShpbnNldFZhbHVlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorICAgIGNhc2UgQmFzaWNTaGFwZTo6VHlwZTo6U2hhcGU6IHsKKyAgICAgICAg
YXV0byYgc2hhcGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGUpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
KyAgICAgICAgYXV0byBzaXplID0gc2hhcGUuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHRvQ1NTU2hh
cGVTZWdtZW50KHN0eWxlLCBzaGFwZS5hdChpKSkpOworCisgICAgICAgIGF1dG8gZnJvbSA9IGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoCisgICAgICAgICAgICBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc2hhcGUuZnJvbSgpLngoKSwgc3R5bGUpLAorICAgICAgICAgICAg
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYXBlLmZyb20oKS55KCksIHN0eWxlKSwgUGFpcjo6
SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSkpOworCisgICAgICAgIGF1dG8g
c2hhcGVWYWx1ZSA9IENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3JlYXRlKFdURk1vdmUoZnJvbSksIFdU
Rk1vdmUocmVzdWx0KSk7CisgICAgICAgIHNoYXBlVmFsdWUtPnNldFdpbmRSdWxlKHNoYXBlLndp
bmRSdWxlKCkpOworICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBXVEZNb3ZlKHNoYXBlVmFsdWUp
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShiYXNpY1NoYXBlVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0xNjQs
NiArMTgzLDEyIEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjCiAgICAgcmV0dXJuIHZhbHVlLT5j
b252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IEZpeGVkRmxvYXRDb252ZXJz
aW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oY29udmVyc2lv
bkRhdGEpOwogfQogCitzdGF0aWMgTGVuZ3RoUG9pbnQgY29udmVydFRvTGVuZ3RoUG9pbnQoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKK3sKKyAgICBhdXRvJiBwYWlyID0gKihkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgpKTsKKyAgICByZXR1cm4geyBjb252ZXJ0VG9MZW5ndGgo
Y29udmVyc2lvbkRhdGEsIHBhaXIuZmlyc3QoKSksIGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9u
RGF0YSwgcGFpci5zZWNvbmQoKSkgfTsKK30KKwogc3RhdGljIExlbmd0aFNpemUgY29udmVydFRv
TGVuZ3RoU2l6ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0
YSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlKQogewogICAgIGlmICghdmFsdWUpCkBA
IC0yOTcsNiArMzIyLDIwIEBAIFJlZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9yVmFsdWUoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhCiAgICAgICAgIGJhc2lj
U2hhcGUgPSBXVEZNb3ZlKHBhdGgpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBD
U1NCYXNpY1NoYXBlOjpDU1NCYXNpY1NoYXBlU2hhcGVUeXBlOiB7CisgICAgICAgIGF1dG8mIHNo
YXBlVmFsdWUgPSBkb3duY2FzdDxDU1NCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGVWYWx1ZSk7
CisgICAgICAgIGNvbnN0IGF1dG8mIGNzc1NlZ21lbnRzID0gc2hhcGVWYWx1ZS5zZWdtZW50cygp
OworICAgICAgICBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4gc2VnbWVudHMoY3NzU2Vn
bWVudHMubGVuZ3RoKCkpOworICAgICAgICBzdGQ6OnRyYW5zZm9ybShzdGQ6OmJlZ2luKGNzc1Nl
Z21lbnRzKSwgc3RkOjplbmQoY3NzU2VnbWVudHMpLCBzZWdtZW50cy5iZWdpbigpLCBbJl0gKGNv
bnN0IGF1dG8mIGNzc1NlZ21lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBmcm9tQ1NTU2hhcGVT
ZWdtZW50KGNvbnZlcnNpb25EYXRhLCBkb3duY2FzdDxDU1NTaGFwZVNlZ21lbnQ+KGNzc1NlZ21l
bnQuZ2V0KCkpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byBzaGFwZSA9IEJhc2ljU2hh
cGVTaGFwZTo6Y3JlYXRlKGNvbnZlcnRUb0xlbmd0aFBvaW50KGNvbnZlcnNpb25EYXRhLCBzaGFw
ZVZhbHVlLmZyb20oKSksIFdURk1vdmUoc2VnbWVudHMpKTsKKyAgICAgICAgc2hhcGUtPnNldFdp
bmRSdWxlKHNoYXBlVmFsdWUud2luZFJ1bGUoKSk7CisKKyAgICAgICAgYmFzaWNTaGFwZSA9IFdU
Rk1vdmUoc2hhcGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJu
IGJhc2ljU2hhcGUucmVsZWFzZU5vbk51bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFw
ZXMuY3BwCmluZGV4IDg5ZTA5ZjU3MmMzNTE2MzgzZjdiMjYyZDU0MGMwM2RlMDJlODQ4NTAuLjg1
ZjY3NmZlNjE2NGFhMGI0MDg4ODMxZDA1NjQ4ODMyZTUwMGZiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtMjIyLDYgKzIyMiwzOCBAQCBib29sIENTU0Jhc2ljU2hh
cGVQYXRoOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYgb3RoZXJTaGFwZSkgY29uc3QKICAg
ICByZXR1cm4gd2luZFJ1bGUoKSA9PSBvdGhlclNoYXBlUGF0aC53aW5kUnVsZSgpICYmIHBhdGhE
YXRhKCkgPT0gb3RoZXJTaGFwZVBhdGgucGF0aERhdGEoKTsKIH0KIAorQ1NTQmFzaWNTaGFwZVNo
YXBlOjpDU1NCYXNpY1NoYXBlU2hhcGUoUmVmPENTU1ZhbHVlPiYmIGZyb20sIFJlZjxDU1NWYWx1
ZUxpc3Q+JiYgc2VnbWVudHMpCisgICAgOiBtX3NlZ21lbnRzKFdURk1vdmUoc2VnbWVudHMpKSwg
bV9mcm9tKFdURk1vdmUoZnJvbSkpCit7IAorfQorCitib29sIENTU0Jhc2ljU2hhcGVTaGFwZTo6
ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIG90aGVyU2hhcGUpIGNvbnN0Cit7CisgICAgaWYg
KCFpczxDU1NCYXNpY1NoYXBlU2hhcGU+KG90aGVyU2hhcGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBhdXRvJiBvdGhlclNoYXBlU2hhcGUgPSBkb3duY2FzdDxDU1NCYXNpY1NoYXBl
U2hhcGU+KG90aGVyU2hhcGUpOworICAgIHJldHVybiB3aW5kUnVsZSgpID09IG90aGVyU2hhcGVT
aGFwZS53aW5kUnVsZSgpCisgICAgICAgICYmIGZyb20oKSA9PSBvdGhlclNoYXBlU2hhcGUuZnJv
bSgpCisgICAgICAgICYmIHNlZ21lbnRzKCkuZXF1YWxzKG90aGVyU2hhcGVTaGFwZS5zZWdtZW50
cygpKTsKK30KKworU3RyaW5nIENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3NzVGV4dCgpIGNvbnN0Cit7
CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGlmICh3aW5kUnVsZSgpID09IFdpbmRS
dWxlOjpFdmVuT2RkKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgic2hhcGUoZXZlbm9kZCAiKTsK
KyAgICBlbHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJzaGFwZSgiKTsKKworICAgIGF1dG8q
IHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oZnJvbSgpKS5wYWlyVmFsdWUoKTsK
KyAgICBBU1NFUlQocGFpcik7CisgICAgYnVpbGRlci5hcHBlbmQoImZyb20gIiwgcGFpci0+Y3Nz
VGV4dCgpLCAiLCAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChzZWdtZW50cygpLmNzc1RleHQoKSwg
IikiKTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKIHN0YXRpYyBTdHJp
bmcgYnVpbGRQb2x5Z29uU3RyaW5nKGNvbnN0IFdpbmRSdWxlJiB3aW5kUnVsZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBvaW50cykKIHsKICAgICBBU1NFUlQoIShwb2ludHMuc2l6ZSgpICUgMikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAppbmRleCAxMDVjNDYwOTQxZDY3NDRlNTdi
ZTdhMzVkNmIwNGZjNzNmYWJiYmVjLi42M2FhOGY5ZWU0MzE1NjZiZDE5YmM0NTczMzA3OWM1ZTVk
ZTlmM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaApAQCAtMzgsNiArMzgsMTAg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CitjbGFz
cyBDU1NTaGFwZVNlZ21lbnQ7CitjbGFzcyBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXI7CitjbGFz
cyBDU1NWYWx1ZTsKK2NsYXNzIENTU1ZhbHVlTGlzdDsKIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFt
OwogCiBjbGFzcyBDU1NCYXNpY1NoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTQmFzaWNTaGFw
ZT4gewpAQCAtNDcsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgICAgIENTU0Jhc2ljU2hhcGVDaXJj
bGVUeXBlLAogICAgICAgICBDU1NCYXNpY1NoYXBlRWxsaXBzZVR5cGUsCiAgICAgICAgIENTU0Jh
c2ljU2hhcGVJbnNldFR5cGUsCi0gICAgICAgIENTU0Jhc2ljU2hhcGVQYXRoVHlwZQorICAgICAg
ICBDU1NCYXNpY1NoYXBlUGF0aFR5cGUsCisgICAgICAgIENTU0Jhc2ljU2hhcGVTaGFwZVR5cGUK
ICAgICB9OwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CkBAIC0yMzMsNiAr
MjM4LDM1IEBAIHByaXZhdGU6CiAgICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFdpbmRSdWxlOjpO
b25aZXJvIH07CiB9OwogCitjbGFzcyBDU1NCYXNpY1NoYXBlU2hhcGUgZmluYWwgOiBwdWJsaWMg
Q1NTQmFzaWNTaGFwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDU1NCYXNpY1NoYXBlU2hh
cGU+IGNyZWF0ZShSZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJiBzZWdt
ZW50cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0Jhc2ljU2hhcGVT
aGFwZShXVEZNb3ZlKGZyb20pLCBXVEZNb3ZlKHNlZ21lbnRzKSkpOworICAgIH0KKworICAgIGNv
bnN0IENTU1ZhbHVlTGlzdCYgc2VnbWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fc2VnbWVudHMuZ2V0KCk7CisgICAgfQorCisgICAgdm9pZCBzZXRXaW5kUnVsZShXaW5kUnVs
ZSBydWxlKSB7IG1fd2luZFJ1bGUgPSBydWxlOyB9CisgICAgV2luZFJ1bGUgd2luZFJ1bGUoKSBj
b25zdCB7IHJldHVybiBtX3dpbmRSdWxlOyB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgZnJvbSgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJvbS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIENTU0Jhc2lj
U2hhcGVTaGFwZShSZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJik7CisK
KyAgICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDU1NCYXNpY1NoYXBlU2hhcGVU
eXBlOyB9CisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGVxdWFs
cyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3QgZmluYWw7CisKKyAgICBSZWY8Q1NTVmFsdWVM
aXN0PiBtX3NlZ21lbnRzOworICAgIFJlZjxDU1NWYWx1ZT4gbV9mcm9tOworICAgIFdpbmRSdWxl
IG1fd2luZFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OworfTsKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBF
UyhUb1ZhbHVlVHlwZU5hbWUpIFwKQEAgLTI0NSwzICsyNzksNCBAQCBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0NTU19CQVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZUNpcmNsZSkKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlRWxsaXBzZSkKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUG9seWdvbikK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUGF0
aCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBl
U2hhcGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFi
ZDY1ZTc4ZTI0OTRkMDJlMDExN2U3NTAwMzA4OTkxMDBiYmRhYTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNwcApAQCAtMCwwICsxLDE5MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ1NTU2hhcGVTZWdtZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8o
Q1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYg
dGFyZ2V0KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKE1vdmVU
bywgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+
IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZp
bml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCkKK3sKKyAgICByZXR1cm4gQ1NT
U2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShMaW5lVG8sIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdl
dCkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxp
bmVUb0hvcml6b250YWwoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBS
ZWY8Q1NTVmFsdWU+JiYgeCkKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNy
ZWF0ZShMaW5lVG9Ib3Jpem9udGFsLCBhZmZpbml0eSwgV1RGTW92ZSh4KSk7Cit9CisKK1JlZjxD
U1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwoQ1NT
U2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgeSkK
K3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShMaW5lVG9WZXJ0aWNh
bCwgYWZmaW5pdHksIFdURk1vdmUoeSkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NT
aGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpYyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZm
aW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBw
MSwgUmVmPENTU1ZhbHVlPiYmIHAyKQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1
ZTo6Y3JlYXRlKEN1cnZlVG9DdWJpYywgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92
ZShwMSksIFdURk1vdmUocDIpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZp
bml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAx
KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEN1cnZlVG9RdWFk
cmF0aWMsIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUocDEpKTsKK30KKworUmVm
PENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWNTbW9v
dGgoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+
JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcDIpCit7CisgICAgcmV0dXJuIENTU1NoYXBlU2Vn
bWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb0N1YmljU21vb3RoLCBhZmZpbml0eSwgV1RGTW92ZSh0
YXJnZXQpLCBXVEZNb3ZlKHAyKSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBl
U2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aChDU1NTaGFwZVNlZ21lbnQ6OkNv
b3JkQWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpCit7CisgICAgcmV0
dXJuIENTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb1F1YWRyYXRpY1Ntb290aCwg
YWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENT
U1NoYXBlU2VnbWVudDo6Y3JlYXRlQXJjVG8oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5
IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcmFkaXVz
LCBDU1NWYWx1ZUlEIHN3ZWVwLCBDU1NWYWx1ZUlEIHNpemUsIFJlZjxDU1NWYWx1ZT4mJiBhbmds
ZSkKK3sKKyAgICBBU1NFUlQoc3dlZXAgPT0gQ1NTVmFsdWVDY3cgfHwgc3dlZXAgPT0gQ1NTVmFs
dWVDdyk7CisgICAgQVNTRVJUKHNpemUgPT0gQ1NTVmFsdWVTbWFsbCB8fCBzaXplID09IENTU1Zh
bHVlTGFyZ2UpOworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEFyY1Rv
LCBhZmZpbml0eSwKKyAgICAgICAgV1RGTW92ZSh0YXJnZXQpLAorICAgICAgICBXVEZNb3ZlKHJh
ZGl1cyksCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3dlZXApLAorICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHNpemUpLAorICAgICAgICBXVEZNb3ZlKGFuZ2xl
KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xv
c2VQYXRoKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKihuZXcgQ1NTU2hhcGVTZWdtZW50KENs
b3NlUGF0aCkpKTsKK30KKworYm9vbCBDU1NTaGFwZVNlZ21lbnQ6OmVxdWFscyhjb25zdCBDU1NT
aGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gb3RoZXIudHlw
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV90eXBlID09IENsb3NlUGF0
aCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q1NTU2hhcGVTZWdtZW50VmFsdWUmPigqdGhpcykuZXF1YWxzKHN0YXRpY19jYXN0PGNvbnN0IENT
U1NoYXBlU2VnbWVudFZhbHVlJj4ob3RoZXIpKTsKK30KKworU3RyaW5nIENTU1NoYXBlU2VnbWVu
dDo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHlwZSA9PSBDU1NTaGFwZVNl
Z21lbnQ6OkNsb3NlUGF0aCkKKyAgICAgICAgcmV0dXJuICJjbG9zZSI7CisKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUqPih0aGlzKS0+Y3VzdG9tQ1NT
VGV4dCgpOworfQorCitib29sIENTU1NoYXBlU2VnbWVudFZhbHVlOjplcXVhbHMoY29uc3QgQ1NT
U2hhcGVTZWdtZW50JiBvdGhlcikgY29uc3QKK3sKKyAgICBBU1NFUlQodHlwZSgpID09IG90aGVy
LnR5cGUoKSk7CisgICAgY29uc3QgYXV0byYgb3RoZXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0
IENTU1NoYXBlU2VnbWVudFZhbHVlJj4ob3RoZXIpOworICAgIHJldHVybiBvdGhlclZhbHVlLm1f
YWZmaW5pdHkgPT0gbV9hZmZpbml0eQorICAgICAgICAmJiBvdGhlclZhbHVlLnRhcmdldCgpLmVx
dWFscyh0YXJnZXQoKSkKKyAgICAgICAgJiYgb3RoZXJWYWx1ZS5tX2FyZ3VtZW50cy5nZXQoKS5l
cXVhbHMobV9hcmd1bWVudHMuZ2V0KCkpOworfQorCitTdHJpbmcgQ1NTU2hhcGVTZWdtZW50VmFs
dWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAoreworICAgIGNvbnN0IGF1dG8gY29tbWFuZCA9IFsm
XSgpIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsKKyAgICAgICAgY2FzZSBNb3ZlVG86Cisg
ICAgICAgICAgICByZXR1cm4gIm1vdmUiOworICAgICAgICBjYXNlIExpbmVUbzoKKyAgICAgICAg
ICAgIHJldHVybiAibGluZSI7CisgICAgICAgIGNhc2UgTGluZVRvSG9yaXpvbnRhbDoKKyAgICAg
ICAgICAgIHJldHVybiAiaGxpbmUiOworICAgICAgICBjYXNlIExpbmVUb1ZlcnRpY2FsOgorICAg
ICAgICAgICAgcmV0dXJuICJ2bGluZSI7CisgICAgICAgIGNhc2UgQ3VydmVUb0N1YmljOgorICAg
ICAgICBjYXNlIEN1cnZlVG9RdWFkcmF0aWM6CisgICAgICAgICAgICByZXR1cm4gImN1cnZlIjsK
KyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWNTbW9vdGg6CisgICAgICAgIGNhc2UgQ3VydmVUb1F1
YWRyYXRpY1Ntb290aDoKKyAgICAgICAgICAgIHJldHVybiAic21vb3RoIjsKKyAgICAgICAgY2Fz
ZSBBcmNUbzoKKyAgICAgICAgICAgIHJldHVybiAiYXJjIjsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuICIiOwor
ICAgICAgICB9CisKKyAgICB9OworCisgICAgY29uc3QgYXV0byBjb25qdW5jdGlvbiA9IFsmXSgp
IHsKKyAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsKKyAgICAgICAgY2FzZSBNb3ZlVG86CisgICAg
ICAgIGNhc2UgTGluZVRvOgorICAgICAgICBjYXNlIExpbmVUb0hvcml6b250YWw6CisgICAgICAg
IGNhc2UgTGluZVRvVmVydGljYWw6CisgICAgICAgIGNhc2UgQ3VydmVUb1F1YWRyYXRpY1Ntb290
aDoKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWM6Cisg
ICAgICAgIGNhc2UgQ3VydmVUb1F1YWRyYXRpYzoKKyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWNT
bW9vdGg6CisgICAgICAgICAgICByZXR1cm4gIiB2aWEgIjsKKyAgICAgICAgY2FzZSBBcmNUbzoK
KyAgICAgICAgICAgIHJldHVybiAiIG9mICI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAg
fQorICAgIH07CisKKyAgICBhdXRvIGJ5VG8gPSBtX2FmZmluaXR5ID09IENTU1NoYXBlU2VnbWVu
dDo6Q29vcmRBZmZpbml0eTo6QWJzb2x1dGUgPyAiIHRvICIgOiAiIGJ5ICI7CisgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKGNvbW1hbmQoKSwgYnlUbywgbV90
YXJnZXQtPmNzc1RleHQoKSwgY29uanVuY3Rpb24oKSk7CisgICAgaWYgKHR5cGUoKSA9PSBBcmNU
bykgeworICAgICAgICBidWlsZGVyLmFwcGVuZChhcmd1bWVudCgwKS5jc3NUZXh0KCkpOworICAg
ICAgICBjb25zdCBhdXRvJiBzd2VlcCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihhcmd1
bWVudCgxKSk7CisgICAgICAgIGNvbnN0IGF1dG8mIHNpemUgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oYXJndW1lbnQoMikpOworICAgICAgICBjb25zdCBhdXRvJiBhbmdsZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPihhcmd1bWVudCgzKSk7CisKKyAgICAgICAgaWYgKHN3ZWVw
LnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUN3KQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBj
dyIpOworCisgICAgICAgIGlmIChzaXplLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxhcmdlKQorICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBsYXJnZSIpOworCisgICAgICAgIGlmIChhbmdsZS5j
b21wdXRlRGVncmVlcygpKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiByb3RhdGUgIiwg
YW5nbGUuY3NzVGV4dCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9h
cmd1bWVudHMtPmNzc1RleHQoKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYXBlU2VnbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYXBlU2VnbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4ZTdkMzkz
ZWEzNmIyODE3OTc2MDY2N2UzYzRhMzI4ZTNiNmFkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmgKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1NoYXBlU2VnbWVudCA6IHB1YmxpYyBDU1NW
YWx1ZSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBDb29yZEFmZmluaXR5IHsKKyAgICAgICAg
QWJzb2x1dGUsIFJlbGF0aXZlCisgICAgfTsKKworICAgIGVudW0gU2VnbWVudFR5cGUgeworICAg
ICAgICBNb3ZlVG8sCisgICAgICAgIExpbmVUbywKKyAgICAgICAgTGluZVRvSG9yaXpvbnRhbCwK
KyAgICAgICAgTGluZVRvVmVydGljYWwsCisgICAgICAgIEN1cnZlVG9DdWJpYywKKyAgICAgICAg
Q3VydmVUb1F1YWRyYXRpYywKKyAgICAgICAgQ3VydmVUb0N1YmljU21vb3RoLAorICAgICAgICBD
dXJ2ZVRvUXVhZHJhdGljU21vb3RoLAorICAgICAgICBBcmNUbywKKyAgICAgICAgQ2xvc2VQYXRo
CisgICAgfTsKKworICAgIFNlZ21lbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0
OworICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CisgICAgfkNTU1NoYXBlU2VnbWVu
dCgpID0gZGVmYXVsdDsKKworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVD
bG9zZVBhdGgoKTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRlTW92ZVRv
KENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpOworICAgIHN0YXRpYyBSZWY8
Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG8oQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVl
PiYmIHRhcmdldCk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUxpbmVU
b0hvcml6b250YWwoQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHgpOworICAgIHN0YXRp
YyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG9WZXJ0aWNhbChDb29yZEFmZmluaXR5
LCBSZWY8Q1NTVmFsdWU+JiYgeSk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNy
ZWF0ZUN1cnZlVG9DdWJpYyhDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBS
ZWY8Q1NTVmFsdWU+JiYgcDEsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAgc3RhdGljIFJlZjxD
U1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWMoQ29vcmRBZmZpbml0eSwgUmVm
PENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxKTsKKyAgICBzdGF0aWMgUmVm
PENTU1NoYXBlU2VnbWVudD4gY3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKENvb3JkQWZmaW5pdHks
IFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAgc3RhdGlj
IFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoQ29vcmRB
ZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFw
ZVNlZ21lbnQ+IGNyZWF0ZUFyY1RvKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJn
ZXQsIFJlZjxDU1NWYWx1ZT4mJiByYWRpdXMsIENTU1ZhbHVlSUQgc3dlZXAsIENTU1ZhbHVlSUQg
c2l6ZSwgUmVmPENTU1ZhbHVlPiYmIGFuZ2xlKTsKKworcHJvdGVjdGVkOgorICAgIENTU1NoYXBl
U2VnbWVudChTZWdtZW50VHlwZSB0eXBlKQorICAgICAgICA6IENTU1ZhbHVlKFNoYXBlU2VnbWVu
dENsYXNzKQorICAgICAgICAsIG1fdHlwZSh0eXBlKSB7IH0KKworcHJpdmF0ZToKKyAgICBTZWdt
ZW50VHlwZSBtX3R5cGU7Cit9OworCitjbGFzcyBDU1NTaGFwZVNlZ21lbnRWYWx1ZSA6IHB1Ymxp
YyBDU1NTaGFwZVNlZ21lbnQgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSAuLi5B
cmdzPgorICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGUoQ1NTU2hhcGVTZWdt
ZW50OjpTZWdtZW50VHlwZSB0eXBlLAorICAgICAgICBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZm
aW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIEFyZ3MuLi4gYXJndW1lbnRz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU2hhcGVTZWdtZW50VmFs
dWUodHlwZSwgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3VtZW50cykuLi4pKTsKKyAgICB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgdGFyZ2V0KCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKKyAgICB9CisKKyAgICBj
b25zdCBDU1NWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGkpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQobV9hcmd1bWVudHMtPmxlbmd0aCgpID4gaSk7CisgICAgICAgIHJldHVybiAqKG1fYXJn
dW1lbnRzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICB9CisKKyAgICBDU1NTaGFw
ZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHkoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fYWZmaW5pdHk7CisgICAgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTU2hh
cGVTZWdtZW50JiBvdGhlcikgY29uc3Q7CisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICB2b2lkIGFwcGVuZEFyZ3MoKSB7IH0KKyAgICB2b2lkIGFwcGVu
ZEFyZ3MoUmVmPENTU1ZhbHVlPiYmIHYpIHsgbV9hcmd1bWVudHMtPmFwcGVuZChXVEZNb3ZlKHYp
KTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgLi4uQXJncz4KKyAgICB2b2lkIGFwcGVuZEFy
Z3MoUmVmPENTU1ZhbHVlPiYmIHYsIEFyZ3MgLi4uYXJncykKKyAgICB7CisgICAgICAgIGFwcGVu
ZEFyZ3MoV1RGTW92ZSh2KSk7CisgICAgICAgIGFwcGVuZEFyZ3Moc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSAuLi5BcmdzPgorICAg
IENTU1NoYXBlU2VnbWVudFZhbHVlKENTU1NoYXBlU2VnbWVudDo6U2VnbWVudFR5cGUgdHlwZSwg
Q1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYg
dGFyZ2V0LCBBcmdzIC4uLmFyZ3MpCisgICAgICAgIDogQ1NTU2hhcGVTZWdtZW50KHR5cGUpCisg
ICAgICAgICwgbV9hZmZpbml0eShhZmZpbml0eSkKKyAgICAgICAgLCBtX3RhcmdldChXVEZNb3Zl
KHRhcmdldCkpCisgICAgICAgICwgbV9hcmd1bWVudHMoQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpKQorICAgIHsKKyAgICAgICAgYXBwZW5kQXJncyhzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworICAgIH0KKworICAgIENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0
eSBtX2FmZmluaXR5OworICAgIFJlZjxDU1NWYWx1ZT4gbV90YXJnZXQ7CisgICAgUmVmPENTU1Zh
bHVlTGlzdD4gbV9hcmd1bWVudHM7Cit9OworCit9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NT
U19WQUxVRShDU1NTaGFwZVNlZ21lbnQsIGlzU2hhcGVTZWdtZW50VmFsdWUoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuY3BwCmluZGV4IDVlMjE4MjI2M2ZjZWE1Y2FmZjM2M2U0ZmY0NDAzOTQzODExZjZk
YWMuLjYzMDllM2ZmNzNkY2NiNjY3MzFmMjI0YjY0OWQ3ODkyZGEyZWQxNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlLmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIkNTU1JheVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTU2hhZG93VmFsdWUu
aCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5j
dGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NWYWx1ZUxpc3QuaCIKQEAgLTIzMCw2ICsyMzEsOCBAQCBib29sIENTU1ZhbHVlOjplcXVh
bHMoY29uc3QgQ1NTVmFsdWUmIG90aGVyKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGNvbXBh
cmVDU1NWYWx1ZXM8Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGNh
c2UgRm9udFN0eWxlUmFuZ2VDbGFzczoKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFs
dWVzPENTU0ZvbnRTdHlsZVJhbmdlVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2Ug
U2hhcGVTZWdtZW50Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxD
U1NTaGFwZVNlZ21lbnQ+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTMzOSw2ICszNDIsOCBAQCBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0
KCk7CiAgICAgY2FzZSBGb250U3R5bGVSYW5nZUNsYXNzOgogICAgICAgICByZXR1cm4gZG93bmNh
c3Q8Q1NTRm9udFN0eWxlUmFuZ2VWYWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKKyAgICBj
YXNlIFNoYXBlU2VnbWVudENsYXNzOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTU2hhcGVT
ZWdtZW50PigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtNDk3LDYgKzUwMiw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQog
ICAgIGNhc2UgRm9udFN0eWxlUmFuZ2VDbGFzczoKICAgICAgICAgZGVsZXRlIGRvd25jYXN0PENT
U0ZvbnRTdHlsZVJhbmdlVmFsdWU+KHRoaXMpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBT
aGFwZVNlZ21lbnRDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU1NoYXBlU2VnbWVu
dD4odGhpcyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IGRhZGU1OGRhMjA2OGI3ZWVjY2RhYTMzMTkx
OGM0NGQzYTc2ZTA1YzguLjNmNzVhZjMwYWI5MDI4YWViMmQxNTJmMTQ1Yzk4OTM1N2I1MTllYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0xMzQsNiArMTM0LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNHcmlkQXV0b1JlcGVhdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0g
R3JpZEF1dG9SZXBlYXRDbGFzczsgfQogICAgIGJvb2wgaXNHcmlkSW50ZWdlclJlcGVhdFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gR3JpZEludGVnZXJSZXBlYXRDbGFzczsg
fQogICAgIGJvb2wgaXNHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9j
bGFzc1R5cGUgPT0gR3JpZFRlbXBsYXRlQXJlYXNDbGFzczsgfQorICAgIGJvb2wgaXNTaGFwZVNl
Z21lbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFNoYXBlU2VnbWVudENs
YXNzOyB9CiAgICAgYm9vbCBpc0dyaWRMaW5lTmFtZXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xhc3NUeXBlID09IEdyaWRMaW5lTmFtZXNDbGFzczsgfQogICAgIGJvb2wgaXNTdWJncmlkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTdWJncmlkQ2xhc3M7IH0KICAgICBi
b29sIGlzVW5pY29kZVJhbmdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBV
bmljb2RlUmFuZ2VDbGFzczsgfQpAQCAtMjA5LDYgKzIxMCw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgQ2FsY3VsYXRpb25DbGFzcywKICAgICAgICAgR3JpZFRlbXBsYXRlQXJlYXNDbGFzcywKICAg
ICAgICAgVmFsdWVQYWlyQ2xhc3MsCisgICAgICAgIFNoYXBlU2VnbWVudENsYXNzLAogCiAgICAg
ICAgIENTU0NvbnRlbnREaXN0cmlidXRpb25DbGFzcywKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVLZXl3b3Jkcy5pbgppbmRleCAyZGQ0YzBiYWMzYzlhM2E0ZDYzYmFlZGMyOTkxMDgwMmI1MjIw
MmY5Li4xYjY1NGViMjE5ZDRlMWM5YjIyOGZlMTcxNTg1MzkzODA1YzViMTM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtMTI4Niw2ICsxMjg2LDI3IEBAIHJlY3QK
IAogLy8gc2hhcGVzCiBwb2x5Z29uCitzaGFwZQorCisvLyBzaGFwZSgpCisvLyBmcm9tCisvLyB0
bworLy8gbW92ZQorbGluZQoraGxpbmUKK3ZsaW5lCitjdXJ2ZQorLy8gc21vb3RoCithcmMKK2Ns
b3NlCit2aWEKK29mCitieQorY3cKK2NjdworLy8gbGFyZ2UKKy8vIHNtYWxsCisvLyByb3RhdGUK
IAogLy8gQGZvbnQtZmFjZSBzcmMKIGZvcm1hdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhcGVT
ZWdtZW50RnVuY3Rpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2NiMTBmOGFhMzE3MjIwMzAxZjQyOTZh
ZjU4NmJlODJlNmVhNzFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1No
YXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTAsMCArMSwyMjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcGVTZWdtZW50RnVuY3Rpb25zLmgiCisKKyNp
bmNsdWRlICJCYXNpY1NoYXBlU2VnbWVudC5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKKyNpbmNsdWRlICJDU1NW
YWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgorI2luY2x1ZGUgIlBhaXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjb252
ZXJ0UG9pbnRUb0NTU1ZhbHVlKGNvbnN0IExlbmd0aFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8mIHBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpOworICAgIHJldHVybiBwb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZSgKKyAgICAgICAg
cG9vbC5jcmVhdGVWYWx1ZShwb2ludC54KCksIHN0eWxlKSwKKyAgICAgICAgcG9vbC5jcmVhdGVW
YWx1ZShwb2ludC55KCksIHN0eWxlKSwKKyAgICAgICAgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNv
ZGluZzo6RG9Ob3RDb2FsZXNjZSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZT4gYXV0
byB0b0NTU0FyZ3MoY29uc3QgVmFsdWUmLCBjb25zdCBSZW5kZXJTdHlsZSYpOworCit0ZW1wbGF0
ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBMZW5ndGgmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZTxSZWY8Q1NTVmFsdWU+PihD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHZhbHVlLCBzdHlsZSkpOworfQor
Cit0ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJnczxMZW5ndGhQb2ludD4oY29uc3QgTGVuZ3RoUG9p
bnQmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6
bWFrZV90dXBsZShjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLCBzdHlsZSkpOworfQorCit0
ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVl
JiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBzdGQ6Om1h
a2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUudGFyZ2V0UG9p
bnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5wb2ludDEs
IHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5wb2ludDIsIHN0
eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NBcmdzKGNvbnN0IEN1cnZlVG9RdWFk
cmF0aWNTaGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorewor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFs
dWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NW
YWx1ZSh2YWx1ZS5wb2ludDEsIHN0eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NB
cmdzKGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIHZhbHVlLCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSgKKyAgICAg
ICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS50YXJnZXRQb2ludCwgc3R5bGUpLAorICAg
ICAgICBjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnBvaW50Miwgc3R5bGUpKTsKK30KKwor
dGVtcGxhdGU8PgorYXV0byB0b0NTU0FyZ3MoY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiB2YWx1
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8mIHBvb2wgPSBDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpOworICAgIGF1dG8gcmFkaXVzID0gUGFpcjo6Y3JlYXRlKAorICAg
ICAgICBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlLnJhZGl1cy53aWR0aCwgc3R5bGUpLAorICAgICAg
ICBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlLnJhZGl1cy5oZWlnaHQsIHN0eWxlKSwKKyAgICAgICAg
UGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpOworCisgICAgcmV0dXJuIHN0
ZDo6bWFrZV90dXBsZSgKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS50YXJn
ZXRQb2ludCwgc3R5bGUpLAorICAgICAgICBwb29sLmNyZWF0ZVZhbHVlKFdURk1vdmUocmFkaXVz
KSksCisgICAgICAgIHZhbHVlLnN3ZWVwID8gQ1NTVmFsdWVDdyA6IENTU1ZhbHVlQ2N3LAorICAg
ICAgICB2YWx1ZS5sYXJnZUFyYyA/IENTU1ZhbHVlTGFyZ2UgOiBDU1NWYWx1ZVNtYWxsLAorICAg
ICAgICBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlLmFuZ2xlLCBDU1NVbml0VHlwZTo6Q1NTX0RFRykp
OworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiB0b0NTU1NoYXBlU2VnbWVudChjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBzZWdtZW50KQoreworICAg
IGF1dG8gdG9DU1MgPSBbJl0oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5
LCBhdXRvIGNyZWF0ZSwgY29uc3QgYXV0byYgYXMpIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6YXBw
bHkoY3JlYXRlLCBzdGQ6OnR1cGxlX2NhdChzdGQ6Om1ha2VfdHVwbGUoYWZmaW5pdHkpLCB0b0NT
U0FyZ3MoKHNlZ21lbnQuKmFzKSgpLCBzdHlsZSkpKTsKKyAgICB9OworCisjZGVmaW5lIENSRUFU
RV9DU1NfU0hBUEVfU0VHTUVOVF9GUk9NX0JBU0lDX1NIQVBFX1NFR01FTlQoVHlwZSkgXAorICAg
IGNhc2UgU2hhcGVTZWdtZW50IyNUeXBlOjpBYnNTZWdUeXBlOiBcCisgICAgICAgIHJldHVybiB0
b0NTUyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRlLCBDU1NTaGFwZVNl
Z21lbnQ6OmNyZWF0ZSMjVHlwZSwgJkJhc2ljU2hhcGVTZWdtZW50OjphcyMjVHlwZSk7IFwKKyAg
ICBjYXNlIFNoYXBlU2VnbWVudCMjVHlwZTo6UmVsU2VnVHlwZTogXAorICAgICAgICByZXR1cm4g
dG9DU1MoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5OjpSZWxhdGl2ZSwgQ1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGUjI1R5cGUsICZCYXNpY1NoYXBlU2VnbWVudDo6YXMjI1R5cGUpOyBcCisK
KyAgICBzd2l0Y2ggKHNlZ21lbnQudHlwZSgpKSB7CisgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRo
OgorICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKwor
ICAgICAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9WQUxVRShDUkVBVEVfQ1NT
X1NIQVBFX1NFR01FTlRfRlJPTV9CQVNJQ19TSEFQRV9TRUdNRU5UKQorCisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQordGVtcGxhdGUgPGNsYXNz
IERlZmluaXRpb24+CitTVkdQYXRoU2VnVHlwZSBzZWdtZW50VHlwZShjb25zdCBDU1NTaGFwZVNl
Z21lbnRWYWx1ZSYgc2VnbWVudFdpdGhWYWx1ZSkKK3sKKyAgICByZXR1cm4gc2VnbWVudFdpdGhW
YWx1ZS5hZmZpbml0eSgpID09IENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eTo6QWJzb2x1
dGUgPyBEZWZpbml0aW9uOjpBYnNTZWdUeXBlIDogRGVmaW5pdGlvbjo6UmVsU2VnVHlwZTsKK30K
KworUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBmcm9tQ1NTU2hhcGVTZWdtZW50KGNvbnN0IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBDU1NTaGFwZVNlZ21l
bnQmIGNzc1NlZ21lbnQpCit7CisgICAgYXV0byB0b0xlbmd0aCA9IFsmXShjb25zdCBDU1NWYWx1
ZSYgdmFsdWUpIC0+IExlbmd0aCB7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwg
Rml4ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252
ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CisgICAgfTsKKworICAgIGF1dG8gdG9MZW5ndGhQb2lu
dCA9IFsmXShjb25zdCBDU1NWYWx1ZSYgdmFsdWUpIC0+IExlbmd0aFBvaW50IHsKKyAgICAgICAg
YXV0byBwYWlyID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5wYWlyVmFsdWUo
KTsKKyAgICAgICAgQVNTRVJUKHBhaXIpOworICAgICAgICByZXR1cm4gTGVuZ3RoUG9pbnQgeyB0
b0xlbmd0aCgqcGFpci0+Zmlyc3QoKSksIHRvTGVuZ3RoKCpwYWlyLT5zZWNvbmQoKSkgfTsKKyAg
ICB9OworCisgICAgYXV0byB0b0xlbmd0aFNpemUgPSBbJl0oY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KSAtPiBMZW5ndGhTaXplIHsKKyAgICAgICAgYXV0byBwYWlyID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKS5wYWlyVmFsdWUoKTsKKyAgICAgICAgQVNTRVJUKHBhaXIpOworICAg
ICAgICByZXR1cm4gTGVuZ3RoU2l6ZSB7IHRvTGVuZ3RoKCpwYWlyLT5maXJzdCgpKSwgdG9MZW5n
dGgoKnBhaXItPnNlY29uZCgpKSB9OworICAgIH07CisKKyAgICBhdXRvIHR5cGUgPSBjc3NTZWdt
ZW50LnR5cGUoKTsKKworICAgIGlmICh0eXBlID09IENTU1NoYXBlU2VnbWVudDo6Q2xvc2VQYXRo
KQorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOwor
CisgICAgY29uc3QgYXV0byYgc2VnbWVudFdpdGhWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IENT
U1NoYXBlU2VnbWVudFZhbHVlJj4oY3NzU2VnbWVudCk7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6TW92ZVRvOiB7CisgICAgICAgIHJldHVybiBCYXNp
Y1NoYXBlU2VnbWVudDo6Y3JlYXRlTW92ZVRvKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hh
cGVTZWdtZW50TW92ZVRvPihzZWdtZW50V2l0aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3Ro
UG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkpOworICAgIH0KKworICAgIGNhc2UgQ1NT
U2hhcGVTZWdtZW50OjpMaW5lVG86CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6
Y3JlYXRlTGluZVRvKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50TGluZVRv
PihzZWdtZW50V2l0aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdp
dGhWYWx1ZS50YXJnZXQoKSkpOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkxpbmVUb0hv
cml6b250YWw6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRv
SG9yaXpvbnRhbCgKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudExpbmVUb0hv
cml6b250YWw+KHNlZ21lbnRXaXRoVmFsdWUpLAorICAgICAgICAgICAgdG9MZW5ndGgoc2VnbWVu
dFdpdGhWYWx1ZS50YXJnZXQoKSkpOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkxpbmVU
b1ZlcnRpY2FsOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVU
b1ZlcnRpY2FsKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50TGluZVRvVmVy
dGljYWw+KHNlZ21lbnRXaXRoVmFsdWUpLAorICAgICAgICAgICAgdG9MZW5ndGgoc2VnbWVudFdp
dGhWYWx1ZS50YXJnZXQoKSkpOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkN1cnZlVG9D
dWJpYzoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3Vi
aWMoCisgICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWM+KHNl
Z21lbnRXaXRoVmFsdWUpLCB7CisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50
V2l0aFZhbHVlLmFyZ3VtZW50KDApKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNl
Z21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMSkpLAorICAgICAgICAgICAgICAgIHRvTGVuZ3RoUG9p
bnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAgICAgIH0pOworCisgICAgY2Fz
ZSBDU1NTaGFwZVNlZ21lbnQ6OkN1cnZlVG9RdWFkcmF0aWM6CisgICAgICAgIHJldHVybiBCYXNp
Y1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpYygKKyAgICAgICAgICAgIHNlZ21l
bnRUeXBlPFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWM+KHNlZ21lbnRXaXRoVmFsdWUpLCB7
CisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50
KDApKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUudGFy
Z2V0KCkpCisgICAgICAgICAgICB9KTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpDdXJ2
ZVRvQ3ViaWNTbW9vdGg6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRl
Q3VydmVUb0N1YmljU21vb3RoKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50
Q3VydmVUb0N1YmljU21vb3RoPihzZWdtZW50V2l0aFZhbHVlKSwgeworICAgICAgICAgICAgICAg
IHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgwKSksCisgICAgICAgICAg
ICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQorICAgICAgICAg
ICAgfSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q3VydmVUb1F1YWRyYXRpY1Ntb290
aDoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJh
dGljU21vb3RoKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50Q3VydmVUb1F1
YWRyYXRpY1Ntb290aD4oc2VnbWVudFdpdGhWYWx1ZSksCisgICAgICAgICAgICB0b0xlbmd0aFBv
aW50KHNlZ21lbnRXaXRoVmFsdWUudGFyZ2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdt
ZW50OjpBcmNUbzoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVBcmNU
bygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudEFyY1RvPihzZWdtZW50V2l0
aFZhbHVlKSwgeworICAgICAgICAgICAgICAgIC5yYWRpdXMgPSB0b0xlbmd0aFNpemUoc2VnbWVu
dFdpdGhWYWx1ZS5hcmd1bWVudCgwKSksCisgICAgICAgICAgICAgICAgLnN3ZWVwID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMSkpLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUN3LAorICAgICAgICAgICAgICAgIC5sYXJnZUFyYyA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPihzZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50KDIpKS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVMYXJnZSwKKyAgICAgICAgICAgICAgICAuYW5nbGUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgzKSkuZmxvYXRWYWx1
ZShDU1NVbml0VHlwZTo6Q1NTX0RFRyksCisgICAgICAgICAgICAgICAgLnRhcmdldFBvaW50ID0g
dG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQorICAgICAgICAgICAgfSk7
CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q2xvc2VQYXRoOgorICAgICAgICByZXR1cm4g
QmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworICAgIH0KKworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2hhcGVTZWdtZW50RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhcGVTZWdtZW50
RnVuY3Rpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY0MGQ3MWUyOWE1MDgzODI1M2UwYzJlYTcwOTYxMTQ0
OTFkNjJkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21l
bnRGdW5jdGlvbnMuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBCYXNpY1NoYXBlU2VnbWVudDsKK2NsYXNzIENTU1NoYXBlU2Vn
bWVudDsKK2NsYXNzIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE7CitjbGFzcyBSZW5kZXJTdHls
ZTsKKworUmVmPENTU1NoYXBlU2VnbWVudD4gdG9DU1NTaGFwZVNlZ21lbnQoY29uc3QgUmVuZGVy
U3R5bGUmLCBjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYpOworUmVmPEJhc2ljU2hhcGVTZWdtZW50
PiBmcm9tQ1NTU2hhcGVTZWdtZW50KGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBj
b25zdCBDU1NTaGFwZVNlZ21lbnQmKTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCBkMWI1ZDM0NTU1OTEwYmQ4MzNlYWU5ZmZi
Yzk1N2JjMWNkMzI0OTBiLi44ZWE0ZmE4NmVmNGI0ZWJhYzZmN2RmMWYxZDc0M2JlNDllZmFhZDVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNw
cApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKICNp
bmNsdWRlICJDU1NGb250RmVhdHVyZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udFBhbGV0dGVW
YWx1ZXNPdmVycmlkZUNvbG9yc1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTU2hhcGVTZWdtZW50Lmgi
CiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKICNpbmNsdWRlICJDU1NGb250VmFyaWF0aW9u
VmFsdWUuaCIKICNlbmRpZgpAQCAtMjY1Miw2ICsyNjUzLDE5NiBAQCBzdGF0aWMgUmVmUHRyPENT
U0Jhc2ljU2hhcGVQYXRoPiBjb25zdW1lQmFzaWNTaGFwZVBhdGgoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgYXJncwogICAgIHJldHVybiBzaGFwZTsKIH0KIAorc3RhdGljIFJlZlB0cjxDU1NTaGFwZVNl
Z21lbnQ+IGNvbnN1bWVTaGFwZVNlZ21lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBhdXRvIGNvbW1hbmQgPSBhcmdz
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgaWYgKGNvbW1hbmQuaWQoKSA9PSBD
U1NWYWx1ZUNsb3NlKQorICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9z
ZVBhdGgoKTsKKworICAgIGlmICghaWRlbnRNYXRjaGVzPENTU1ZhbHVlVG8sIENTU1ZhbHVlQnk+
KGFyZ3MucGVlaygpLmlkKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8g
YWZmaW5pdHkgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSA9PSBDU1NW
YWx1ZVRvID8gQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5OjpBYnNvbHV0ZSA6IENTU1No
YXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eTo6UmVsYXRpdmU7CisgICAgYXV0byBjb25zdW1lTmV4
dExlbmd0aE9yUGVyY2VudCA9IFsmXSgpIHsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhP
clBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOworICAgIH07CisK
KyAgICBpZiAoY29tbWFuZC5pZCgpID09IENTU1ZhbHVlSGxpbmUgfHwgY29tbWFuZC5pZCgpID09
IENTU1ZhbHVlVmxpbmUpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IGNvbnN1bWVOZXh0TGVuZ3Ro
T3JQZXJjZW50KCk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICByZXR1cm4gY29tbWFuZC5pZCgpID09IENTU1ZhbHVlSGxpbmUKKyAg
ICAgICAgICAgID8gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKGFmZmlu
aXR5LCB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKQorICAgICAgICAgICAgOiBDU1NTaGFwZVNlZ21l
bnQ6OmNyZWF0ZUxpbmVUb1ZlcnRpY2FsKGFmZmluaXR5LCB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgp
KTsKKyAgICB9CisKKyAgICBhdXRvIGNvbnN1bWVOZXh0Q29vcmRpbmF0ZXMgPSBbJl0gKCkgLT4g
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB7CisgICAgICAgIGF1dG8geCA9IGNvbnN1bWVOZXh0
TGVuZ3RoT3JQZXJjZW50KCk7CisgICAgICAgIGlmICgheCkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgIGF1dG8geSA9IGNvbnN1bWVOZXh0TGVuZ3RoT3JQZXJjZW50KCk7
CisgICAgICAgIGlmICgheSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
IHJldHVybiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoeC5yZWxlYXNlTm9uTnVsbCgpLCB5LnJl
bGVhc2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkRvTm90Q29hbGVz
Y2UpOworICAgIH07CisKKyAgICBhdXRvIGF0RW5kT2ZTZWdtZW50ID0gWyZdICgpIHsKKyAgICAg
ICAgcmV0dXJuIGFyZ3MuYXRFbmQoKSB8fCBhcmdzLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tl
bjsKKyAgICB9OworCisgICAgYXV0byB0YXJnZXRQb2ludCA9IGNvbnN1bWVOZXh0Q29vcmRpbmF0
ZXMoKTsKKyAgICBpZiAoIXRhcmdldFBvaW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHN3aXRjaCAoY29tbWFuZC5pZCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZU1vdmU6CisgICAg
ICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZU1vdmVUbyhhZmZpbml0eSwgdGFyZ2V0
UG9pbnQucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICBjYXNlIENTU1ZhbHVlTGluZToKKyAgICAg
ICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvKGFmZmluaXR5LCB0YXJnZXRQ
b2ludC5yZWxlYXNlTm9uTnVsbCgpKTsKKworICAgIGNhc2UgQ1NTVmFsdWVDdXJ2ZTogeworICAg
ICAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSAhPSBDU1NWYWx1ZVZpYSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KTsKKyAgICAgICAgYXV0byB2aWFQb2ludDEgPSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7Cisg
ICAgICAgIGlmICghdmlhUG9pbnQxKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAgICAgaWYgKGF0RW5kT2ZTZWdtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKGFmZmluaXR5LCB0YXJnZXRQb2ludC5yZWxl
YXNlTm9uTnVsbCgpLCB2aWFQb2ludDEucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICAgICAgYXV0
byB2aWFQb2ludDIgPSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7CisgICAgICAgIGlmICghdmlh
UG9pbnQyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIENT
U1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljKGFmZmluaXR5LCAgdGFyZ2V0UG9pbnQu
cmVsZWFzZU5vbk51bGwoKSwgdmlhUG9pbnQxLnJlbGVhc2VOb25OdWxsKCksIHZpYVBvaW50Mi5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisKKyAgICBjYXNlIENTU1ZhbHVlU21vb3RoOiB7Cisg
ICAgICAgIGlmIChhcmdzLnBlZWsoKS5pZCgpICE9IENTU1ZhbHVlVmlhKQorICAgICAgICAgICAg
cmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aChhZmZp
bml0eSwgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCkpOworCisgICAgICAgIGFyZ3MuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgYXV0byB2aWFQb2ludCA9IGNvbnN1
bWVOZXh0Q29vcmRpbmF0ZXMoKTsKKyAgICAgICAgaWYgKCF2aWFQb2ludCkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0
ZUN1cnZlVG9DdWJpY1Ntb290aChhZmZpbml0eSwgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxs
KCksIHZpYVBvaW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KKworICAgIGNhc2UgQ1NTVmFs
dWVBcmM6IHsKKyAgICAgICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgIT0gQ1NTVmFsdWVPZikKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKTsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByeCA9IGNv
bnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpOb25O
ZWdhdGl2ZSk7CisgICAgICAgIGlmICghcngpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJ5OworICAgICAgICBpZiAoYXJn
cy5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pCisgICAgICAgICAgICByeSA9IHJ4OworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJ5ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdz
LCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKKyAgICAgICAgICAgIGlm
ICghcnkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IHN3ZWVwOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPENTU1ZhbHVlSUQ+IHNpemU7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gYW5nbGU7CisK
KyAgICAgICAgd2hpbGUgKCFhdEVuZE9mU2VnbWVudCgpKSB7CisgICAgICAgICAgICBhdXRvIG5l
eHRJZGVudCA9IGFyZ3MucGVlaygpLmlkKCk7CisgICAgICAgICAgICBpZiAoaWRlbnRNYXRjaGVz
PENTU1ZhbHVlUm90YXRlPihuZXh0SWRlbnQpICYmICFhbmdsZSkgeworICAgICAgICAgICAgICAg
IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOworICAgICAgICAgICAgICAg
IGFuZ2xlID0gY29uc3VtZUFuZ2xlKGFyZ3MsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6
Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyazo6Rm9yYmlkKTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NW
YWx1ZUN3LCBDU1NWYWx1ZUNjdz4obmV4dElkZW50KSAmJiAhc3dlZXAuaGFzX3ZhbHVlKCkpIHsK
KyAgICAgICAgICAgICAgICBzd2VlcCA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS5pZCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlTGFyZ2UsIENTU1ZhbHVlU21hbGw+KG5l
eHRJZGVudCkgJiYgIXNpemUuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBzaXplID0g
YXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCFhbmdsZSkKKyAgICAgICAgICAgIGFuZ2xlID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NVbml0VHlwZTo6Q1NTX0RFRyk7CisKKyAgICAg
ICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQXJjVG8oCisgICAgICAgICAgICBhZmZp
bml0eSwKKyAgICAgICAgICAgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCksCisgICAgICAg
ICAgICBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIocngucmVsZWFzZU5vbk51bGwoKSwgcnkucmVs
ZWFzZU5vbk51bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpLAor
ICAgICAgICAgICAgc3dlZXAudmFsdWVfb3IoQ1NTVmFsdWVDY3cpLAorICAgICAgICAgICAgc2l6
ZS52YWx1ZV9vcihDU1NWYWx1ZVNtYWxsKSwKKyAgICAgICAgICAgIGFuZ2xlLnJlbGVhc2VOb25O
dWxsKCkpOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9Cit9CisKK3N0YXRpYyBSZWZQdHI8Q1NTQmFzaWNTaGFwZVNoYXBlPiBjb25zdW1lQmFzaWNT
aGFwZVNoYXBlKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmIGNvbnRleHQpCit7CisgICAgV2luZFJ1bGUgd2luZFJ1bGUgPSBXaW5kUnVsZTo6Tm9uWmVy
bzsKKworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVFdmVub2RkLCBDU1NWYWx1ZU5vbnpl
cm8+KGFyZ3MucGVlaygpLmlkKCkpKQorICAgICAgICB3aW5kUnVsZSA9IGFyZ3MuY29uc3VtZUlu
Y2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpID09IENTU1ZhbHVlRXZlbm9kZCA/IFdpbmRSdWxlOjpF
dmVuT2RkIDogV2luZFJ1bGU6Ok5vblplcm87CisKKyAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSAh
PSBDU1NWYWx1ZUZyb20pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXJncy5jb25z
dW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBpbml0aWFsWCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBW
YWx1ZVJhbmdlOjpBbGwpOworICAgIGlmICghaW5pdGlhbFgpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpbml0aWFsWSA9IGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOworICAg
IGlmICghaW5pdGlhbFkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFjb25z
dW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGF1dG8gc2VnbWVudHMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJh
dGVkKCk7CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGF1dG8gc2VnbWVudCA9IGNvbnN1bWVT
aGFwZVNlZ21lbnQoYXJncywgY29udGV4dCk7CisgICAgICAgIGlmICghc2VnbWVudCkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIHNlZ21lbnRzLT5hcHBlbmQoc2VnbWVu
dC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgaWYgKGFyZ3MuYXRFbmQoKSkKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8g
c2hhcGUgPSBDU1NCYXNpY1NoYXBlU2hhcGU6OmNyZWF0ZSgKKyAgICAgICAgY3JlYXRlUHJpbWl0
aXZlVmFsdWVQYWlyKAorICAgICAgICAgICAgaW5pdGlhbFgucmVsZWFzZU5vbk51bGwoKSwKKyAg
ICAgICAgICAgIGluaXRpYWxZLnJlbGVhc2VOb25OdWxsKCksCisgICAgICAgICAgICBQYWlyOjpJ
ZGVudGljYWxWYWx1ZUVuY29kaW5nOjpEb05vdENvYWxlc2NlKSwKKyAgICAgICAgV1RGTW92ZShz
ZWdtZW50cykpOworCisgICAgc2hhcGUtPnNldFdpbmRSdWxlKHdpbmRSdWxlKTsKKyAgICByZXR1
cm4gc2hhcGU7Cit9CisKIHN0YXRpYyB2b2lkIGNvbXBsZXRlNFNpZGVzKFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gc2lkZVs0XSkKIHsKICAgICBpZiAoc2lkZVszXSkKQEAgLTI3NTcsNiArMjk0
OCw4IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVCYXNpY1NoYXBl
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjCiAgICAgICAgIHNoYXBlID0gY29uc3VtZUJh
c2ljU2hhcGVJbnNldChhcmdzLCBjb250ZXh0KTsKICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1
ZVBhdGgpCiAgICAgICAgIHNoYXBlID0gY29uc3VtZUJhc2ljU2hhcGVQYXRoKGFyZ3MpOworICAg
IGVsc2UgaWYgKGlkID09IENTU1ZhbHVlU2hhcGUpCisgICAgICAgIHNoYXBlID0gY29uc3VtZUJh
c2ljU2hhcGVTaGFwZShhcmdzLCBjb250ZXh0KTsKICAgICBpZiAoIXNoYXBlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICByYW5nZSA9IHJhbmdlQ29weTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJlMWZiMGVhOWNmZDkxM2M1NWRlNDQ0NjQ5OGY1ODhhMWQ4NTY0MmQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3Bw
CkBAIC0wLDAgKzEsMjkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE5vYW0gUm9zZW50
aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkJhc2ljU2hhcGVTZWdtZW50LmgiCisKKyNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIK
KyNpbmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAiU1ZHUGF0aEJ1aWxkZXIuaCIKKyNpbmNsdWRl
ICJTVkdQYXRoUGFyc2VyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZy5oIgorI2luY2x1ZGUgIlNW
R1BhdGhTZWdJbXBsLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNvdXJjZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlZmluaXRpb24+CitjbGFzcyBCYXNpY1No
YXBlU2VnbWVudFZhbHVlIDogcHVibGljIEJhc2ljU2hhcGVTZWdtZW50IHsKK3B1YmxpYzoKKyAg
ICBjb25zdCB0eXBlbmFtZSBEZWZpbml0aW9uOjpWYWx1ZSYgdmFsdWUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKHR5cGUoKSA9PSBEZWZpbml0aW9uOjpBYnNTZWdUeXBlIHx8IHR5cGUo
KSA9PSBEZWZpbml0aW9uOjpSZWxTZWdUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7Cisg
ICAgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCkKKyAgICAg
ICAgICAgICYmIHZhbHVlKCkgPT0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNTaGFwZVNlZ21lbnRW
YWx1ZTxEZWZpbml0aW9uPiY+KG90aGVyKS52YWx1ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBS
ZWY8QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZT4gY3JlYXRlKEJhc2ljU2hhcGVTZWdtZW50OjpUeXBl
IHR5cGUsIHR5cGVuYW1lIERlZmluaXRpb246OlZhbHVlJiYgdmFsdWUpCisgICAgeworICAgICAg
ICBBU1NFUlQodHlwZSA9PSBEZWZpbml0aW9uOjpBYnNTZWdUeXBlIHx8IHR5cGUgPT0gRGVmaW5p
dGlvbjo6UmVsU2VnVHlwZSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJhc2ljU2hh
cGVTZWdtZW50VmFsdWU8RGVmaW5pdGlvbj4odHlwZSwgV1RGTW92ZSh2YWx1ZSkpKTsKKyAgICB9
CisKK3Byb3RlY3RlZDoKKyAgICBCYXNpY1NoYXBlU2VnbWVudFZhbHVlKEJhc2ljU2hhcGVTZWdt
ZW50OjpUeXBlIHR5cGUsIHR5cGVuYW1lIERlZmluaXRpb246OlZhbHVlJiYgdmFsdWUpCisgICAg
ICAgIDogQmFzaWNTaGFwZVNlZ21lbnQodHlwZSkKKyAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUo
dmFsdWUpKSB7IH0KKworcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBEZWZpbml0aW9uOjpWYWx1ZSBt
X3ZhbHVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyBjb25zdCB0eXBlbmFt
ZSBUOjpWYWx1ZSYgZXh0cmFjdFZhbHVlKGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBzZWcpCit7
CisgICAgQVNTRVJUKHNlZy50eXBlKCkgPT0gVDo6QWJzU2VnVHlwZSB8fCBzZWcudHlwZSgpID09
IFQ6OlJlbFNlZ1R5cGUpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY1NoYXBl
U2VnbWVudFZhbHVlPFQ+Jj4oc2VnKS52YWx1ZSgpOworfQorCitib29sIEJhc2ljU2hhcGVTZWdt
ZW50OjplcXVhbHMoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdAoreworICAg
IGF1dG8gdHlwZSA9IHRoaXMtPnR5cGUoKTsKKyAgICBpZiAodHlwZSAhPSBvdGhlci50eXBlKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworI2RlZmluZSBDT01QQVJFX1NIQVBFX1NFR01FTlRf
VkFMVUUoVHlwZSkgXAorICAgIGNhc2UgU2hhcGVTZWdtZW50IyNUeXBlOjpBYnNTZWdUeXBlOiBc
CisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6OlJlbFNlZ1R5cGU6IFwKKyAgICAgICAgcmV0
dXJuIGV4dHJhY3RWYWx1ZTxTaGFwZVNlZ21lbnQjI1R5cGU+KCp0aGlzKSA9PSBleHRyYWN0VmFs
dWU8U2hhcGVTZWdtZW50IyNUeXBlPihvdGhlcik7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAg
ICBjYXNlIFBhdGhTZWdDbG9zZVBhdGg6CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAg
IEZPUl9FQUNIX1NIQVBFX1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKENPTVBBUkVfU0hBUEVfU0VH
TUVOVF9WQUxVRSkKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworI2RlZmluZSBJ
TVBMRU1FTlRfU0hBUEVfU0VHTUVOVF9WQUxVRShUWVBFKSBcCitSZWY8QmFzaWNTaGFwZVNlZ21l
bnQ+IEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGUjI1RZUEUoQmFzaWNTaGFwZVNlZ21lbnQ6OlR5
cGUgdHlwZSwgdHlwZW5hbWUgU2hhcGVTZWdtZW50IyNUWVBFOjpWYWx1ZSYmIHZhbHVlKSBcCit7
IFwKKyAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxTaGFwZVNlZ21lbnQjI1RZUEU+
OjpjcmVhdGUodHlwZSwgV1RGTW92ZSh2YWx1ZSkpOyBcCit9IFwKK2NvbnN0IHR5cGVuYW1lIFNo
YXBlU2VnbWVudCMjVFlQRTo6VmFsdWUmIEJhc2ljU2hhcGVTZWdtZW50OjphcyMjVFlQRSgpIGNv
bnN0IFwKK3sgXAorICAgIHJldHVybiBleHRyYWN0VmFsdWU8U2hhcGVTZWdtZW50IyNUWVBFPigq
dGhpcyk7IFwKK30KKworRk9SX0VBQ0hfU0hBUEVfU0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoSU1Q
TEVNRU5UX1NIQVBFX1NFR01FTlRfVkFMVUUpCisKK0N1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUg
YmxlbmQoY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29uc3QgQ3VydmVU
b0N1YmljU2hhcGVTZWdWYWx1ZSYgdG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICByZXR1cm4geworICAgICAgICBibGVuZChmcm9tLnBvaW50MSwgdG8ucG9pbnQxLCBj
b250ZXh0KSwKKyAgICAgICAgYmxlbmQoZnJvbS5wb2ludDIsIHRvLnBvaW50MiwgY29udGV4dCks
CisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRhcmdldFBvaW50LCBjb250ZXh0
KSwKKyAgICB9OworfQorCitDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNv
bnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIGZyb20sIGNvbnN0IEN1cnZlVG9D
dWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRl
eHQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgYmxlbmQoZnJvbS5wb2ludDIsIHRvLnBvaW50
MiwgY29udGV4dCksCisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRhcmdldFBv
aW50LCBjb250ZXh0KSwKKyAgICB9OworfQorCitDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1
ZSBibGVuZChjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29uc3Qg
Q3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQm
IGNvbnRleHQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgYmxlbmQoZnJvbS5wb2ludDEsIHRv
LnBvaW50MSwgY29udGV4dCksCisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRh
cmdldFBvaW50LCBjb250ZXh0KSwKKyAgICB9OworfQorCitBcmNUb1NoYXBlU2VnVmFsdWUgYmxl
bmQoY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiBmcm9tLCBjb25zdCBBcmNUb1NoYXBlU2VnVmFs
dWUmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHsK
KyAgICAgICAgYmxlbmQoZnJvbS5yYWRpdXMsIHRvLnJhZGl1cywgY29udGV4dCksCisgICAgICAg
IGJsZW5kKGZyb20uYW5nbGUsIHRvLmFuZ2xlLCBjb250ZXh0KSwKKyAgICAgICAgY29udGV4dC5w
cm9ncmVzcyA8IDAuNWYgPyBmcm9tLnN3ZWVwIDogdG8uc3dlZXAsCisgICAgICAgIGNvbnRleHQu
cHJvZ3Jlc3MgPCAwLjVmID8gZnJvbS5sYXJnZUFyYyA6IHRvLmxhcmdlQXJjLAorICAgICAgICBi
bGVuZChmcm9tLnRhcmdldFBvaW50LCB0by50YXJnZXRQb2ludCwgY29udGV4dCkKKyAgICB9Owor
fQorCitSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IEJhc2ljU2hhcGVTZWdtZW50OjpibGVuZChjb25z
dCBCYXNpY1NoYXBlU2VnbWVudCYgZnJvbSwgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0
KSBjb25zdAoreworICAgIGF1dG8gdHlwZSA9IHRoaXMtPnR5cGUoKTsKKyAgICBBU1NFUlQodHlw
ZSA9PSBmcm9tLnR5cGUoKSk7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFBhdGhT
ZWdDbG9zZVBhdGg6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xv
c2VQYXRoKCk7CisKKyNkZWZpbmUgQkxFTkRfU0VHTUVOVF9UWVBFKFR5cGUpIFwKKyAgICBjYXNl
IFNoYXBlU2VnbWVudCMjVHlwZTo6QWJzU2VnVHlwZTogXAorICAgIGNhc2UgU2hhcGVTZWdtZW50
IyNUeXBlOjpSZWxTZWdUeXBlOiBcCisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudFZh
bHVlPFNoYXBlU2VnbWVudCMjVHlwZT46OmNyZWF0ZSh0eXBlLCBXZWJDb3JlOjpibGVuZChleHRy
YWN0VmFsdWU8U2hhcGVTZWdtZW50IyNUeXBlPihmcm9tKSwgZXh0cmFjdFZhbHVlPFNoYXBlU2Vn
bWVudCMjVHlwZT4oKnRoaXMpLCBjb250ZXh0KSk7CisKKyAgICAgICAgRk9SX0VBQ0hfU0hBUEVf
U0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoQkxFTkRfU0VHTUVOVF9UWVBFKQorICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gQmFzaWNTaGFw
ZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworICAgIH0KK30KK2NsYXNzIFNoYXBlU1ZHUGF0
aFNvdXJjZSBmaW5hbCA6IHB1YmxpYyBTVkdQYXRoU291cmNlIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBTaGFwZVNWR1BhdGhTb3VyY2UoY29uc3QgTGVuZ3RoUG9pbnQmIHN0YXJ0LCBjb25zdCBW
ZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIHNlZ21lbnRzLCBjb25zdCBGbG9hdFNpemUm
IHNpemUpCisgICAgICAgIDogbV9zdGFydChzdGFydCkKKyAgICAgICAgLCBtX3NlZ21lbnRzKHNl
Z21lbnRzKQorICAgICAgICAsIG1fc2l6ZShzaXplKQorICAgICAgICAsIG1faXRlbUVuZChzZWdt
ZW50cy5zaXplKCkpCisgICAgICAgIHsKKworICAgICAgICB9CisKK3ByaXZhdGU6CisgICAgYm9v
bCBoYXNNb3JlRGF0YSgpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9pdGVt
Q3VycmVudCA8IG1faXRlbUVuZDsKKyAgICB9CisKKyAgICBib29sIG1vdmVUb05leHRUb2tlbigp
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFNWR1BhdGhTZWdUeXBlIG5leHRDb21tYW5k
KFNWR1BhdGhTZWdUeXBlKSBmaW5hbAorICAgIHsKKyAgICAgICAgYXV0byB0eXBlID0gbV9zZWdt
ZW50cy5hdChtX2l0ZW1DdXJyZW50KS0+dHlwZSgpOworICAgICAgICArK21faXRlbUN1cnJlbnQ7
CisgICAgICAgIHJldHVybiB0eXBlOworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0
aFNlZ1R5cGU+IHBhcnNlU1ZHU2VnbWVudFR5cGUoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0
dXJuIFBhdGhTZWdNb3ZlVG9BYnM7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRo
U291cmNlOjpNb3ZlVG9TZWdtZW50PiBwYXJzZU1vdmVUb1NlZ21lbnQoKSBmaW5hbAorICAgIHsK
KyAgICAgICAgaWYgKCFtX2l0ZW1DdXJyZW50KQorICAgICAgICAgICAgcmV0dXJuIFNWR1BhdGhT
b3VyY2U6Ok1vdmVUb1NlZ21lbnQgeyBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQobV9zdGFydCwg
bV9zaXplKSB9OworCisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50
IHsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlPFNoYXBlU2VnbWVudE1vdmVUbz4oKSwg
bV9zaXplKSB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGlu
ZVRvU2VnbWVudD4gcGFyc2VMaW5lVG9TZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJl
dHVybiBTVkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50IHsgZmxvYXRQb2ludEZvckxlbmd0aFBv
aW50KHZhbHVlPFNoYXBlU2VnbWVudExpbmVUbz4oKSwgbV9zaXplKSB9OworICAgIH0KKworICAg
IHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IHBh
cnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IFNWR1BhdGhTb3VyY2U6OkxpbmVUb0hvcml6b250YWxTZWdtZW50IHsgZmxvYXRWYWx1ZUZvckxl
bmd0aCh2YWx1ZTxTaGFwZVNlZ21lbnRMaW5lVG9Ib3Jpem9udGFsPigpLCBtX3NpemUud2lkdGgo
KSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb1Zl
cnRpY2FsU2VnbWVudD4gcGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKSBmaW5hbAorICAgIHsK
KyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkxpbmVUb1ZlcnRpY2FsU2VnbWVudCB7IGZs
b2F0VmFsdWVGb3JMZW5ndGgodmFsdWU8U2hhcGVTZWdtZW50TGluZVRvVmVydGljYWw+KCksIG1f
c2l6ZS5oZWlnaHQoKSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3Vy
Y2U6OkN1cnZlVG9DdWJpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCgpIGZpbmFs
CisgICAgeworICAgICAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2Vn
bWVudEN1cnZlVG9DdWJpYz4oKTsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZl
VG9DdWJpY1NlZ21lbnQgeyAgICAgICAgCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3Ro
UG9pbnQodmFsdWUucG9pbnQxLCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxl
bmd0aFBvaW50KHZhbHVlLnBvaW50MiwgbV9zaXplKSwKKyAgICAgICAgICAgIGZsb2F0UG9pbnRG
b3JMZW5ndGhQb2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXplKQorICAgICAgICB9OworICAg
IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1Ntb290aFNl
Z21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCgpIGZpbmFsCisgICAgeworICAg
ICAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEN1cnZlVG9D
dWJpY1Ntb290aD4oKTsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJp
Y1Ntb290aFNlZ21lbnQgeyAgICAgICAgCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3Ro
UG9pbnQodmFsdWUucG9pbnQyLCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxl
bmd0aFBvaW50KHZhbHVlLnRhcmdldFBvaW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQor
CisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVu
dD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICBj
b25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0
aWM+KCk7CisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2Vn
bWVudCB7CisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUucG9pbnQx
LCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnRh
cmdldFBvaW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQorCisgICAgc3RkOjpvcHRpb25h
bDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4gcGFyc2VDdXJ2
ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQgeyBmbG9hdFBvaW50
Rm9yTGVuZ3RoUG9pbnQodmFsdWU8U2hhcGVTZWdtZW50Q3VydmVUb1F1YWRyYXRpY1Ntb290aD4o
KSwgbV9zaXplKSB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6
QXJjVG9TZWdtZW50PiBwYXJzZUFyY1RvU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICBj
b25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEFyY1RvPigpOworICAg
ICAgICBhdXRvIHJhZGl1cyA9IGZsb2F0U2l6ZUZvckxlbmd0aFNpemUodmFsdWUucmFkaXVzLCBt
X3NpemUpOworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50IHsKKyAg
ICAgICAgICAgIC5yeCA9IHJhZGl1cy53aWR0aCgpLAorICAgICAgICAgICAgLnJ5ID0gcmFkaXVz
LmhlaWdodCgpLAorICAgICAgICAgICAgLmFuZ2xlID0gdmFsdWUuYW5nbGUsCisgICAgICAgICAg
ICAubGFyZ2VBcmMgPSB2YWx1ZS5sYXJnZUFyYywKKyAgICAgICAgICAgIC5zd2VlcCA9IHZhbHVl
LnN3ZWVwLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnRhcmdl
dFBvaW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBjb25zdCB0eXBlbmFtZSBUOjpWYWx1ZSYgdmFsdWUoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1faXRlbUN1cnJlbnQgPD0gbV9zZWdtZW50cy5zaXplKCkpOworICAgICAgICBy
ZXR1cm4gZXh0cmFjdFZhbHVlPFQ+KG1fc2VnbWVudHMuYXQobV9pdGVtQ3VycmVudCAtIDEpLmdl
dCgpKTsKKyAgICB9CisKKyAgICBjb25zdCBMZW5ndGhQb2ludCYgbV9zdGFydDsKKyAgICBjb25z
dCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIG1fc2VnbWVudHM7CisgICAgRmxvYXRT
aXplIG1fc2l6ZTsKKyAgICBzaXplX3QgbV9pdGVtRW5kOworICAgIHNpemVfdCBtX2l0ZW1DdXJy
ZW50ID0gMDsKK307CisKK1BhdGggQmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aChjb25zdCBMZW5n
dGhQb2ludCYgc3RhcnQsIGNvbnN0IFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYgc2Vn
bWVudHMsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBTaGFwZVNWR1BhdGhTb3VyY2Ug
c291cmNlKHN0YXJ0LCBzZWdtZW50cywgc2l6ZSk7CisgICAgUGF0aCBwYXRoOworICAgIFNWR1Bh
dGhCdWlsZGVyIGJ1aWxkZXIocGF0aCk7CisgICAgU1ZHUGF0aFBhcnNlcjo6cGFyc2Uoc291cmNl
LCBidWlsZGVyKTsKKyAgICByZXR1cm4gcGF0aDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWQx
OGNlODUwNmNlNjJkZDMyNjU3NTRkZTA3NDZhZDBiYzE5NDZmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmgKQEAgLTAs
MCArMSwxNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkxlbmd0aC5o
IgorI2luY2x1ZGUgIkxlbmd0aFBvaW50LmgiCisjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgorI2lu
Y2x1ZGUgIlNWR1BhdGhTZWcuaCIKKyNpbmNsdWRlICJTVkdQYXRoU291cmNlLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEJsZW5kaW5nQ29udGV4dDsKK2NsYXNzIEZsb2F0UmVj
dDsKK2NsYXNzIFBhdGg7CisKK3N0cnVjdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlIHsKKyAg
ICBMZW5ndGhQb2ludCBwb2ludDE7CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQyOworICAgIExlbmd0
aFBvaW50IHRhcmdldFBvaW50OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXJ2ZVRvQ3Vi
aWNTaGFwZVNlZ1ZhbHVlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBwb2lu
dDEgPT0gb3RoZXIucG9pbnQxICYmIHBvaW50MiA9PSBvdGhlci5wb2ludDIgJiYgdGFyZ2V0UG9p
bnQgPT0gb3RoZXIudGFyZ2V0UG9pbnQ7CisgICAgfQorfTsKKworc3RydWN0IEN1cnZlVG9DdWJp
Y1Ntb290aFNoYXBlU2VnVmFsdWUgeworICAgIExlbmd0aFBvaW50IHBvaW50MjsKKyAgICBMZW5n
dGhQb2ludCB0YXJnZXRQb2ludDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VydmVUb0N1
YmljU21vb3RoU2hhcGVTZWdWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gcG9pbnQyID09IG90aGVyLnBvaW50MiAmJiB0YXJnZXRQb2ludCA9PSBvdGhlci50YXJnZXRQ
b2ludDsKKyAgICB9Cit9OworCitzdHJ1Y3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUg
eworICAgIExlbmd0aFBvaW50IHBvaW50MTsKKyAgICBMZW5ndGhQb2ludCB0YXJnZXRQb2ludDsK
KworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1
ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gcG9pbnQxID09IG90aGVyLnBv
aW50MSAmJiB0YXJnZXRQb2ludCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9Cit9OworCisK
K3N0cnVjdCBBcmNUb1NoYXBlU2VnVmFsdWUgeworICAgIExlbmd0aFNpemUgcmFkaXVzOworICAg
IGZsb2F0IGFuZ2xlID0gMDsKKyAgICBib29sIHN3ZWVwID0gZmFsc2U7CisgICAgYm9vbCBsYXJn
ZUFyYyA9IGZhbHNlOworICAgIExlbmd0aFBvaW50IHRhcmdldFBvaW50OworCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gcmFkaXVzID09IG90aGVyLnJhZGl1cyAmJiBhbmdsZSA9PSBvdGhlci5h
bmdsZSAmJiBzd2VlcCA9PSBvdGhlci5zd2VlcCAmJiBsYXJnZUFyYyA9PSBvdGhlci5sYXJnZUFy
YyAmJiB0YXJnZXRQb2ludCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9Cit9OworCisKK0N1
cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdW
YWx1ZSYsIGNvbnN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0Nv
bnRleHQmKTsKK0N1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3Vy
dmVUb0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNo
YXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKTsKK0N1cnZlVG9RdWFkcmF0aWNT
aGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlJiwg
Y29uc3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRl
eHQmKTsKK0FyY1RvU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBBcmNUb1NoYXBlU2VnVmFsdWUm
LCBjb25zdCBBcmNUb1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCBTVkdQYXRoU2VnVHlwZSBBYnNUeXBlLCBTVkdQ
YXRoU2VnVHlwZSBSZWxUeXBlPgorc3RydWN0IFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uIHsK
KyAgICB0eXBlZGVmIFZhbHVlVHlwZSBWYWx1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g
QWJzU2VnVHlwZSA9IEFic1R5cGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIFJlbFNlZ1R5
cGUgPSBSZWxUeXBlOworfTsKKworc3RydWN0IFNoYXBlU2VnbWVudE1vdmVUbyA6IHB1YmxpYyBT
aGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxMZW5ndGhQb2ludCwgUGF0aFNlZ01vdmVUb0Ficywg
UGF0aFNlZ01vdmVUb1JlbD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudExpbmVUbyA6IHB1Ymxp
YyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxMZW5ndGhQb2ludCwgUGF0aFNlZ0xpbmVUb0Fi
cywgUGF0aFNlZ0xpbmVUb1JlbD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudExpbmVUb0hvcml6
b250YWwgOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248TGVuZ3RoLCBQYXRoU2Vn
TGluZVRvSG9yaXpvbnRhbEFicywgUGF0aFNlZ0xpbmVUb0hvcml6b250YWxSZWw+IHsgfTsKK3N0
cnVjdCBTaGFwZVNlZ21lbnRMaW5lVG9WZXJ0aWNhbCA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBl
RGVmaW5pdGlvbjxMZW5ndGgsIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbEFicywgUGF0aFNlZ0xpbmVU
b1ZlcnRpY2FsUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50Q3VydmVUb0N1YmljIDogcHVi
bGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUs
IFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnMsIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNSZWw+IHsgfTsKK3N0
cnVjdCBTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljIDogcHVibGljIFNoYXBlU2VnbWVudFR5
cGVEZWZpbml0aW9uPEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlLCBQYXRoU2VnQ3VydmVU
b1F1YWRyYXRpY0FicywgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNSZWw+IHsgfTsKK3N0cnVjdCBT
aGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWNTbW9vdGggOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURl
ZmluaXRpb248Q3VydmVUb0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSwgUGF0aFNlZ0N1cnZlVG9D
dWJpY1Ntb290aEFicywgUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aFJlbD4geyB9Oworc3RydWN0
IFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWNTbW9vdGggOiBwdWJsaWMgU2hhcGVTZWdtZW50
VHlwZURlZmluaXRpb248TGVuZ3RoUG9pbnQsIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21vb3Ro
QWJzLCBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aFJlbD4geyB9Oworc3RydWN0IFNoYXBl
U2VnbWVudEFyY1RvIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPEFyY1RvU2hh
cGVTZWdWYWx1ZSwgUGF0aFNlZ0FyY0FicywgUGF0aFNlZ0FyY1JlbD4geyB9OworCisjZGVmaW5l
IEZPUl9FQUNIX1NIQVBFX1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKE1hY3JvKSBcCisgICAgTWFj
cm8oTW92ZVRvKSBcCisgICAgTWFjcm8oTGluZVRvKSBcCisgICAgTWFjcm8oTGluZVRvSG9yaXpv
bnRhbCkgXAorICAgIE1hY3JvKExpbmVUb1ZlcnRpY2FsKSBcCisgICAgTWFjcm8oQ3VydmVUb0N1
YmljKSBcCisgICAgTWFjcm8oQ3VydmVUb1F1YWRyYXRpYykgXAorICAgIE1hY3JvKEN1cnZlVG9D
dWJpY1Ntb290aCkgXAorICAgIE1hY3JvKEN1cnZlVG9RdWFkcmF0aWNTbW9vdGgpIFwKKyAgICBN
YWNybyhBcmNUbykKKworY2xhc3MgQmFzaWNTaGFwZVNlZ21lbnQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxCYXNpY1NoYXBlU2VnbWVudD4geworcHVibGljOgorICAgIHR5cGVkZWYgU1ZHUGF0aFNlZ1R5
cGUgVHlwZTsKKyAgICB+QmFzaWNTaGFwZVNlZ21lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIFJlZjxCYXNpY1NoYXBlU2Vn
bWVudD4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIGZyb20sIGNvbnN0IEJsZW5kaW5n
Q29udGV4dCYpIGNvbnN0OworICAgIGJvb2wgZXF1YWxzKGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50
JikgY29uc3Q7CisKKyAgICBzdGF0aWMgUGF0aCB0b1BhdGgoY29uc3QgTGVuZ3RoUG9pbnQmIHN0
YXJ0LCBjb25zdCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mLCBjb25zdCBGbG9hdFNp
emUmKTsKKworI2RlZmluZSBERUZJTkVfU0hBUEVfU0VHTUVOVF9UWVBFKFQpIFwKKyAgICBzdGF0
aWMgUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBjcmVhdGUjI1QoVHlwZSwgdHlwZW5hbWUgU2hhcGVT
ZWdtZW50IyNUOjpWYWx1ZSYmKTsgXAorICAgIGNvbnN0IHR5cGVuYW1lIFNoYXBlU2VnbWVudCMj
VDo6VmFsdWUmIGFzIyNUKCkgY29uc3Q7CisKKyAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZ
UEVfV0lUSF9WQUxVRShERUZJTkVfU0hBUEVfU0VHTUVOVF9UWVBFKQorCisgICAgc3RhdGljIFJl
ZjxCYXNpY1NoYXBlU2VnbWVudD4gY3JlYXRlQ2xvc2VQYXRoKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEJhc2ljU2hhcGVTZWdtZW50KFBhdGhTZWdDbG9zZVBhdGgpKTsK
KyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBCYXNpY1NoYXBlU2VnbWVudChUeXBlIHQpCisgICAg
ICAgIDogbV90eXBlKHQpIHsgfQorCitwcml2YXRlOgorICAgIFR5cGUgbV90eXBlOworfTsKKwor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApp
bmRleCAwODZhNmY2YTYzYTI1ZTUwMjNhZTk1YmZhODRmNGZhN2Q0ZmZjMjYyLi42NzNmZWE2YzRk
MjYzMDBhNjg3ZjlkNWRhM2I4NjMzZTg1ZTAwMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKQEAgLTEyMSw2ICsxMjEsNDQgQEAgc3RydWN0
IFRyYW5zZm9ybWVkQnl0ZVN0cmVhbVBhdGhQb2xpY3kgOiBUaW55TFJVQ2FjaGVQb2xpY3k8U1ZH
UGF0aFRyYW5zZm9ybWVkQnkKICAgICBzdGF0aWMgUGF0aCBjcmVhdGVWYWx1ZUZvcktleShjb25z
dCBTVkdQYXRoVHJhbnNmb3JtZWRCeXRlU3RyZWFtJiBzdHJlYW0pIHsgcmV0dXJuIHN0cmVhbS5w
YXRoKCk7IH0KIH07CiAKK3N0cnVjdCBTaGFwZVNlZ21lbnRzV2l0aEJveCB7CisgICAgTGVuZ3Ro
UG9pbnQgc3RhcnQ7CisgICAgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+IHNlZ21lbnRz
OworICAgIEZsb2F0UmVjdCBib3g7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcGVT
ZWdtZW50c1dpdGhCb3gmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGJveCAhPSBv
dGhlci5ib3ggfHwgc2VnbWVudHMuc2l6ZSgpID09IG90aGVyLnNlZ21lbnRzLnNpemUoKSB8fCBz
dGFydCAhPSBvdGhlci5zdGFydCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlZ21lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICBpZiAoIXNlZ21lbnRzLmF0KGkpLT5lcXVhbHMob3RoZXIuc2VnbWVudHMuYXQoaSkuZ2V0
KCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFwZVNl
Z21lbnRzV2l0aEJveCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7CisgICAgfQorfTsKKworc3RydWN0IFNoYXBlU2VnbWVudHNQYXRoUG9saWN5
IDogVGlueUxSVUNhY2hlUG9saWN5PFNoYXBlU2VnbWVudHNXaXRoQm94LCBQYXRoPiB7CisgICAg
c3RhdGljIGJvb2wgaXNLZXlOdWxsKGNvbnN0IFNoYXBlU2VnbWVudHNXaXRoQm94JiBzZWdtZW50
c1dpdGhCb3gpCisgICAgeworICAgICAgICByZXR1cm4gc2VnbWVudHNXaXRoQm94LnNlZ21lbnRz
LmlzRW1wdHkoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGF0aCBjcmVhdGVWYWx1ZUZvcktleShj
b25zdCBTaGFwZVNlZ21lbnRzV2l0aEJveCYgc2VnbWVudHNXaXRoQm94KQorICAgIHsKKyAgICAg
ICAgYXV0byBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aChzZWdtZW50c1dpdGhCb3gu
c3RhcnQsIHNlZ21lbnRzV2l0aEJveC5zZWdtZW50cywgc2VnbWVudHNXaXRoQm94LmJveC5zaXpl
KCkpOworICAgICAgICBwYXRoLnRyYW5zbGF0ZSh0b0Zsb2F0U2l6ZShzZWdtZW50c1dpdGhCb3gu
Ym94LmxvY2F0aW9uKCkpKTsKKyAgICAgICAgcmV0dXJuIHBhdGg7CisgICAgfQorfTsKKwogc3Rh
dGljIGNvbnN0IFBhdGgmIGNhY2hlZEVsbGlwc2VQYXRoKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPEZsb2F0UmVjdCwgUGF0
aCwgNCwgRWxsaXBzZVBhdGhQb2xpY3k+PiBjYWNoZTsKQEAgLTE0NSw2ICsxODMsMTIgQEAgc3Rh
dGljIGNvbnN0IFBhdGgmIGNhY2hlZFRyYW5zZm9ybWVkQnl0ZVN0cmVhbVBhdGgoY29uc3QgU1ZH
UGF0aEJ5dGVTdHJlYW0mIHN0cmUKICAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KFNWR1BhdGhU
cmFuc2Zvcm1lZEJ5dGVTdHJlYW0geyBzdHJlYW0sIHpvb20sIG9mZnNldCB9KTsKIH0KIAorc3Rh
dGljIGNvbnN0IFBhdGgmIGNhY2hlZFNoYXBlU2VnbWVudHNQYXRoKGNvbnN0IExlbmd0aFBvaW50
JiBmcm9tLCBjb25zdCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIHNlZ21lbnRzLCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlM
UlVDYWNoZTxTaGFwZVNlZ21lbnRzV2l0aEJveCwgUGF0aCwgNCwgU2hhcGVTZWdtZW50c1BhdGhQ
b2xpY3k+PiBjYWNoZTsKKyAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KFNoYXBlU2VnbWVudHNX
aXRoQm94IHsgZnJvbSwgc2VnbWVudHMsIHJlY3QgfSk7Cit9CisKIGJvb2wgQmFzaWNTaGFwZUNp
cmNsZTo6b3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJiBvdGhlcikgY29uc3QKIHsKICAgICBp
ZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKQEAgLTQ2Myw2ICs1MDcsNzggQEAgdm9pZCBCYXNp
Y1NoYXBlSW5zZXQ6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgdHMuZHVtcFByb3Bl
cnR5KCJib3R0b20tbGVmdC1yYWRpdXMiLCBib3R0b21MZWZ0UmFkaXVzKCkpOwogfQogCisKK0Jh
c2ljU2hhcGVTaGFwZTo6QmFzaWNTaGFwZVNoYXBlKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBW
ZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mJiBzZWdtZW50cykKKyAgICA6IG1fc2VnbWVu
dHMobWFrZVVuaXF1ZTxWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4+KFdURk1vdmUoc2Vn
bWVudHMpKSkKKyAgICAsIG1fZnJvbShmcm9tKQoreworfQorCitjb25zdCBQYXRoJiBCYXNpY1No
YXBlU2hhcGU6OnBhdGgoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkKK3sKKyAgICByZXR1
cm4gY2FjaGVkU2hhcGVTZWdtZW50c1BhdGgobV9mcm9tLCAqbV9zZWdtZW50cywgYm91bmRpbmdC
b3gpOworfQorCitib29sIEJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PShjb25zdCBCYXNpY1No
YXBlJiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgQmFzaWNTaGFwZVNoYXBlJiBvdGhlclNo
YXBlID0gZG93bmNhc3Q8QmFzaWNTaGFwZVNoYXBlPihvdGhlcik7CisgICAgYXV0byBzaXplID0g
dGhpcy0+c2l6ZSgpOworICAgIGlmICh3aW5kUnVsZSgpICE9IG90aGVyU2hhcGUud2luZFJ1bGUo
KSB8fCBzaXplID09IG90aGVyU2hhcGUuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoIWF0
KGkpLmVxdWFscyhvdGhlclNoYXBlLmF0KGkpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCYXNpY1NoYXBlU2hhcGU6OmNh
bkJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIG90aGVyKSBjb25zdAoreworICAgIGlmICh0eXBlKCkg
IT0gb3RoZXIudHlwZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHNpemUg
PSB0aGlzLT5zaXplKCk7CisgICAgYXV0byYgb3RoZXJTaGFwZSA9IGRvd25jYXN0PEJhc2ljU2hh
cGVTaGFwZT4ob3RoZXIpOworICAgIGlmICh3aW5kUnVsZSgpICE9IG90aGVyU2hhcGUud2luZFJ1
bGUoKSB8fCBzaXplICE9IG90aGVyU2hhcGUuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAo
YXQoaSkudHlwZSgpICE9IG90aGVyU2hhcGUuYXQoaSkudHlwZSgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitSZWY8QmFzaWNTaGFw
ZT4gQmFzaWNTaGFwZVNoYXBlOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBmcm9tLCBjb25zdCBC
bGVuZGluZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBm
cm9tLnR5cGUoKSk7CisgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOworICAgIGF1dG8mIGZy
b21TaGFwZSA9IGRvd25jYXN0PEJhc2ljU2hhcGVTaGFwZT4oZnJvbSk7CisgICAgQVNTRVJUKHNp
emUgPT0gZnJvbVNoYXBlLnNpemUoKSk7CisKKyAgICBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdt
ZW50Pj4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHJlc3VsdC5h
cHBlbmQoYXQoaSkuYmxlbmQoZnJvbVNoYXBlLmF0KGkpLCBjb250ZXh0KSk7CisKKyAgICBhdXRv
IG5ld1NoYXBlID0gQmFzaWNTaGFwZVNoYXBlOjpjcmVhdGUoV2ViQ29yZTo6YmxlbmQoZnJvbVNo
YXBlLmZyb20oKSwgbV9mcm9tLCBjb250ZXh0KSwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICBuZXdT
aGFwZS0+c2V0V2luZFJ1bGUod2luZFJ1bGUoKSk7CisgICAgcmV0dXJuIG5ld1NoYXBlOworfQor
Cit2b2lkIEJhc2ljU2hhcGVTaGFwZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKK3sKKyAg
ICB0cy5kdW1wUHJvcGVydHkoIndpbmQtcnVsZSIsIHdpbmRSdWxlKCkpOworICAgIC8vIEZJWE1F
OiBwcmludCB0aGUgYnl0ZSBzdHJlYW0/Cit9CisKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBCYXNpY1NoYXBlUmFkaXVzOjpUeXBlIHJhZGl1c1R5cGUpCiB7
CiAgICAgc3dpdGNoIChyYWRpdXNUeXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9CYXNpY1NoYXBlcy5oCmluZGV4IDliZjAzNzM0NzZiNTNlNWM3YTRhOWJjNjIzOWU0NWVj
NGFkNTM0ZTQuLjMxZThmM2RmNWRjYjE2MmU4MjUzNzM0ZDRiNWNjZWI5MGNlYzkxOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCkBAIC0zMCw2ICsz
MCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIkxl
bmd0aFBvaW50LmgiCiAjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgogI2luY2x1ZGUgIldpbmRSdWxl
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ3LDYgKzQ4LDcgQEAgc3RydWN0
IEJsZW5kaW5nQ29udGV4dDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIFBhdGg7CiBjbGFzcyBS
ZW5kZXJCb3g7CitjbGFzcyBCYXNpY1NoYXBlU2VnbWVudDsKIGNsYXNzIFNWR1BhdGhCeXRlU3Ry
ZWFtOwogCiBjbGFzcyBCYXNpY1NoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8QmFzaWNTaGFwZT4g
ewpAQCAtNTgsNyArNjAsOCBAQCBwdWJsaWM6CiAgICAgICAgIFBhdGgsCiAgICAgICAgIENpcmNs
ZSwKICAgICAgICAgRWxsaXBzZSwKLSAgICAgICAgSW5zZXQKKyAgICAgICAgSW5zZXQsCisgICAg
ICAgIFNoYXBlCiAgICAgfTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwpA
QCAtMzQzLDYgKzM0Niw0MSBAQCBwcml2YXRlOgogICAgIExlbmd0aFNpemUgbV9ib3R0b21MZWZ0
UmFkaXVzOwogfTsKIAorY2xhc3MgQmFzaWNTaGFwZVNoYXBlIDogcHVibGljIEJhc2ljU2hhcGUg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QmFzaWNTaGFwZVNoYXBlPiBjcmVhdGUoY29uc3Qg
TGVuZ3RoUG9pbnQmIGZyb20sIFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYmIHNlZ21l
bnRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNTaGFwZVNoYXBl
KGZyb20sIFdURk1vdmUoc2VnbWVudHMpKSk7CisgICAgfQorCisgICAgdm9pZCBzZXRXaW5kUnVs
ZShXaW5kUnVsZSB3aW5kUnVsZSkgeyBtX3dpbmRSdWxlID0gd2luZFJ1bGU7IH0KKyAgICBXaW5k
UnVsZSB3aW5kUnVsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0KKwor
ICAgIGNvbnN0IExlbmd0aFBvaW50JiBmcm9tKCkgY29uc3QgeyByZXR1cm4gbV9mcm9tOyB9CisK
KyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMtPnNpemUoKTsgfQor
ICAgIGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4g
bV9zZWdtZW50cy0+YXQoaSkuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBCYXNpY1NoYXBlU2hh
cGUoY29uc3QgTGVuZ3RoUG9pbnQmLCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mJik7
CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBUeXBlOjpTaGFwZTsg
fQorCisKKyAgICBjb25zdCBQYXRoJiBwYXRoKGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwor
CisgICAgYm9vbCBjYW5CbGVuZChjb25zdCBCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIGZyb20sIGNvbnN0IEJs
ZW5kaW5nQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEJhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZvaWQgZHVtcChUZXh0U3Ry
ZWFtJikgY29uc3QgZmluYWw7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlZjxCYXNp
Y1NoYXBlU2VnbWVudD4+PiBtX3NlZ21lbnRzOworICAgIFdpbmRSdWxlIG1fd2luZFJ1bGUgeyBX
aW5kUnVsZTo6Tm9uWmVybyB9OworICAgIExlbmd0aFBvaW50IG1fZnJvbTsKK307CisKIFdURjo6
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBCYXNpY1NoYXBl
UmFkaXVzJik7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwg
Y29uc3QgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUmKTsKIFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBCYXNpY1NoYXBlJik7CkBAIC0zNTksMyAr
Mzk3LDQgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQRShCYXNpY1NoYXBlRWxs
aXBzZSwgQmFzaWNTaGFwZTo6VHlwZTo6RWxsaXBzZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkFTSUNfU0hBUEUoQmFzaWNTaGFwZVBvbHlnb24sIEJhc2ljU2hhcGU6OlR5cGU6OlBvbHlnb24p
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVQYXRoLCBCYXNp
Y1NoYXBlOjpUeXBlOjpQYXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQRShC
YXNpY1NoYXBlSW5zZXQsIEJhc2ljU2hhcGU6OlR5cGU6Okluc2V0KQorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CQVNJQ19TSEFQRShCYXNpY1NoYXBlU2hhcGUsIEJhc2ljU2hhcGU6OlR5cGU6OlNo
YXBlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGQzNDUzNDhmOWQ5ZmMyMTIzZDE5NWNhM2E5YzkyYjM1MTRlMzI4NGUuLjRm
NjYxMDMwZDJkNDFhYWYxYWI5NGI5M2MxNDIxY2MzZjI3MmQxNDEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMi0wNC0xOSAgTm9hbSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW0NTUyBTaGFwZXNdIEFkZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzkwOTE5NDc2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogdW5za2lwIENTUyBzaGFwZSgpIHRlc3Rz
CisKIDIwMjItMDQtMTggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2ViR1BVXSBVbnNraXAgYXBpL3ZhbGlkYXRpb24vY3JlYXRlU2FtcGxlci5o
dG1sIPCfjokKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDY0ZWE2NTdlNmUwNDJh
YzNkMTAxOGM4ZGQ4ZDhmYzAyMjVmZWJhMDcuLmFkZjY0NWUyMzkyZDVhOTc5N2YyZjdjNjRmOWRi
MGYzMjRmMDc2YzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDIyLTA0LTE5ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBbQ1NTIFNoYXBlc10gQWRkIHN1cHBvcnQgZm9yIHNoYXBlKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODM3MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vOTA5MTk0NzY+CisKKyAgICAgICAgQW1lbmRlZCB0ZXN0cyB0byBzdXBwb3J0IENT
UyBzaGFwZSgpCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5n
L2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNo
YXBlLTAwMy5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tp
bmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAg
ICAgICAgICBOZWVkZWQgdG8gY2hhbmdlIHRoZSB0ZXN0IGEgYml0IGJlY2F1c2Ugb2Ygc3RyYXkg
cGl4ZWxzLiBXaWxsIHVwc3RyZWFtLgorCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1tYXNraW5nL3BhcnNpbmcvY2xpcC1wYXRoLXNoYXBlLXBhcnNpbmctZXhwZWN0ZWQu
dHh0OgorICAgICAgICAgICAgICAgIE5vdyBwYXNzZXMKKwogMjAyMi0wNC0xOCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBD
U1NUcmFuc2Zvcm1WYWx1ZS5pczJECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhZTc2MjZiM2JmMzlh
N2FiODY2YmY0YzQyOGY2YTM4Y2IxODYxOWE0Li5iZjA5MmRkNTJkM2FiMWUwNTQ5OGZhYjBjNmU5
ZGU4ZWMzOWQ4NGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIxOTksMTUgKzIxOTksNiBAQCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgv
Y2xpcC1wYXRoLXZpZXdCb3gtMWMuaAogd2Via2l0Lm9yZy9iLzEwNDQ0MiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXVy
bC1yZWZlcmVuY2UtY2hhbmdlLWZyb20tZW1wdHkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzIyOTUxMCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLWRlc2NlbmRhbnQtdGV4dC1tdXRhdGVkLTAw
MS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgQ1NTIHNoYXBlKCkKLXdlYmtpdC5vcmcv
Yi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcv
Y2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMi11bml0cy5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAy
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0
aC1zaGFwZS0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3
MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBh
dGgvY2xpcC1wYXRoLXNoYXBlLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNr
aW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtaW50ZXJwb2xhdGlvbi0wMDEuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLWlu
dGVycG9sYXRpb24tMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9i
LzIyOTM3MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9j
bGlwL2NsaXAtZmlsdGVyLW9yZGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8yMjkzNzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tp
bmcvbWFzay1pbWFnZS9tYXNrLWltYWdlLXVybC1sb2NhbC1tYXNrLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMjkzNzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW1hc2tpbmcvbWFzay1pbWFnZS9tYXNrLWltYWdlLXVybC1yZW1vdGUtbWFz
ay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xp
cC1wYXRoLXNoYXBlLTAwMy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1z
aGFwZS0wMDMtZXhwZWN0ZWQuaHRtbAppbmRleCA0NmUwOThjNGViNjQ4OWZjNDQzMDFkNmJmOWIy
NDNlODM2YjJjYTMxLi4zMWU5N2M5MTQ3NDQ4YWE4NDkyNjQyZTQxOTZhYTkxYjVjYTZhNDg4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy1leHBlY3RlZC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWwKQEAg
LTksMTQgKzksMjMgQEAKICAgICB3aWR0aDogMTAwcHg7CiAgICAgaGVpZ2h0OiAxMDBweDsKICAg
fQotICAjcmVmIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKworICAjcmVmLCAjYWN0
dWFsIHsKICAgICBjbGlwLXBhdGg6IHBhdGgobm9uemVybywgIk0gMTAgMTAsIFEgNDAgMCA2MCAy
MCwgVCA5MCAwLCBjIDEwIDQwIDIwIDIwIC0yMCA2MCwgcyAtMTAgNzAgLTQwIC0xMCIpOwogICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgfQorCisgICNyZWYgeworICAgIGJhY2tncm91bmQtY29s
b3I6IHJlZDsKKyAgfQorCisgICNhY3R1YWwgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVu
OworICB9CiA8L3N0eWxlPgogPGJvZHk+CiAgIDxwPllvdSBzaG91bGQgc2VlIG5vIHJlZC48L3A+
CiAgIDxkaXYgaWQ9InJlZiI+PC9kaXY+CisgIDxkaXYgaWQ9ImFjdHVhbCI+PC9kaXY+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAw
My5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbAppbmRleCAyMmU3
ZDlhYWY1Mzc0YzliN2U0ZTNjMmQ1MGVjZWZiY2VjMTM0YjY2Li5lMDE3MDkwMDVhYzhjZjhlMzVk
MDYyYTY4NTdiNjQ2MjdiNWViZTA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRo
LXNoYXBlLTAwMy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLmh0
bWwKQEAgLTYsNiArNiw3IEBACiAgIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InJlZmVyZW5jZS9j
bGlwLXBhdGgtc2hhcGUtMDAzLXJlZi5odG1sIj4KICAgPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250
ZW50PSJUaGUgY2xpcC1wYXRoIHByb3BlcnR5IHRha2VzIHRoZSBiYXNpYyBzaGFwZQogCSdzaGFw
ZSgpJyBmb3IgY2xpcHBpbmcuIFRlc3QgY3VydmVzLiI+CisgIDxtZXRhIG5hbWU9ImZ1enp5IiBj
b250ZW50PSJtYXhEaWZmZXJlbmNlPTgwOyB0b3RhbFBpeGVscz0zOTQiPgogPC9oZWFkPgogPHN0
eWxlPgogICBkaXYgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0w
MDQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4cGVj
dGVkLmh0bWwKaW5kZXggZWM4Zjk0MTA3OTUxMzhmN2EzNDkwZDdhNDE2OWI1ZWJkNWUzNzQ3NC4u
MTBmNDU3YjkxMTg0ZjEwMTMwNjg5YTI3MzA1ZmMyZGQzNjZlMjgzMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcv
Y2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlw
LXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwNC1leHBlY3RlZC5odG1sCkBAIC05LDE0ICs5LDIzIEBA
CiAgICAgd2lkdGg6IDEwMHB4OwogICAgIGhlaWdodDogMTAwcHg7CiAgIH0KLSAgI3JlZiB7Ci0g
ICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisKKyAgI3JlZiwgI2FjdHVhbCB7CiAgICAgY2xp
cC1wYXRoOiBwYXRoKG5vbnplcm8sICJNIDIwIDIwIEEgMjUgMTIgMCAwIDEgODAgMjAsIGEgMzMg
MzMgMTIwIDEgMSAtNDAgNTAsIEEgMjAgMjUgMCAwIDAgMjAgMjAiKTsKICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CiAgIH0KKworICAjcmVmIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Cisg
IH0KKworICAjYWN0dWFsIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgfQogPC9z
dHlsZT4KIDxib2R5PgogICA8cD5Zb3Ugc2hvdWxkIHNlZSBubyByZWQuPC9wPgogICA8ZGl2IGlk
PSJyZWYiPjwvZGl2PgorICA8ZGl2IGlkPSJhY3R1YWwiPjwvZGl2PgogPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2luZy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtbWFza2luZy9wYXJzaW5nL2NsaXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dApp
bmRleCBlOTRhZWU4YjZiNGNiMDRmN2FmZTgyYWQ2NWIzYzE0OGJjNDExMjVmLi5lMDU4MGVkZmMx
ZDhlZjMyNzc1YjVkOTZmMzg3ZWU1ZTdhNDdhMzBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2Ns
aXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2NsaXAt
cGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dApAQCAtMSwyNCArMSwyNCBAQAogCi1GQUlM
IGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMHB4IDBweCwgbGluZSB0byAxMHB4
IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczog
cHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0
eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShldmVub2RkIGZyb20gMHB4IDBweCwgbGluZSB0byAx
MHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFs
czogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBl
LnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShub256ZXJvIGZyb20gMHB4IDBweCwgbGluZSB0
byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2Vx
dWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJ
TCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZSggIGZyb20gMHB4ICAgIDBweCwgbGluZSAg
dG8gMTBweCAgMTBweCAgICAgKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0
X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUg
IiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxZW0gNTAlLCBsaW5l
IHRvIDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3Rf
ZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1G
QUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKEV2ZW5PZGQgZnJvbSAwcHggMFB4LCBD
TE9TRSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBw
cm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5
bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMWNoIDUwcHgsIGxpbmUgdG8gMTByZW0gMTB2
aCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9w
ZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVb
J2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMWNoIC01MHB4LCBsaW5lIHRvIC0xMCUgMTJweCki
IHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0
eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2Ns
aXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBtb3ZlIGJ5IDEwcHggNXB4LCBsaW5l
IGJ5IDIwcHggNDAlLCBjbG9zZSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2Vy
dF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVl
ICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBo
bGluZSBieSAxMHB4LCB2bGluZSB0byA1cmVtKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFs
dWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93
ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4
IDEwcHgsIHZsaW5lIGJ5IDUlLCBobGluZSB0byAxdncpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0
eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlz
YWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9t
IDEwcHggMTBweCwgY3VydmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUg
c2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0g
InNoYXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEwcmVtIDFweCAy
MHZoIDFjaCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxz
OiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUu
c3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2ZSBieSA1MHB4
IDIwcHggdmlhIDEwcmVtIDFweCAyMHZoIDFjaCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZh
bHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxv
d2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBw
eCAxMHB4LCBzbW9vdGggdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNob3VsZCBzZXQgdGhl
IHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0
IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNo
YXBlKGZyb20gMTBweCAxMHB4LCBzbW9vdGggdG8gNTBweCAxcHQpIiBzaG91bGQgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBn
b3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShmcm9tIDEwcHggMTBweCwgYXJjIHRvIDUwcHggMXB0IG9mIDEwcHggMTBweCkiIHNob3VsZCBz
ZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQg
YmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCdd
ID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBhcmMgdG8gNTBweCAxcHQgb2YgMTBweCAxMHB4IHNt
YWxsIHJvdGF0ZSAwZGVnKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25v
dF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIK
LUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMCUgMXJlbSwgYXJjIHRv
IDUwcHggMXB0IG9mIDIwJSBjdyBsYXJnZSByb3RhdGUgMjVkZWcpIiBzaG91bGQgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBn
b3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShldmVub2RkIGZyb20gMHB4IDBweCwgY2xvc2UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxs
b3dlZCB2YWx1ZSAiIgorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDBw
eCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUK
K1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgs
IGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1Mg
ZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUobm9uemVybyBmcm9tIDBweCAwcHgsIGxpbmUg
dG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHls
ZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoICBmcm9tIDBweCAgICAwcHgsIGxpbmUgIHRvIDEwcHgg
IDEwcHggICAgICkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVb
J2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMWVtIDUwJSwgbGluZSB0byAxMHB4IDEwcHgpIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9
ICJzaGFwZShFdmVuT2RkIGZyb20gMHB4IDBQeCwgQ0xPU0UpIiBzaG91bGQgc2V0IHRoZSBwcm9w
ZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFjaCA1
MHB4LCBsaW5lIHRvIDEwcmVtIDEwdmgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQor
UEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFjaCAtNTBweCwgbGluZSB0
byAtMTAlIDEycHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxl
WydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgbW92ZSBieSAxMHB4IDVweCwg
bGluZSBieSAyMHB4IDQwJSwgY2xvc2UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQor
UEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgaGxpbmUg
YnkgMTBweCwgdmxpbmUgdG8gNXJlbSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQ
QVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCB2bGluZSBi
eSA1JSwgaGxpbmUgdG8gMXZ3KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1Mg
ZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUw
cHggMjBweCB2aWEgMTByZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFT
UyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUgdG8g
NTBweCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0
eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBw
eCwgY3VydmUgYnkgNTBweCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQgc2V0
IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShm
cm9tIDEwcHggMTBweCwgc21vb3RoIHRvIDUwcHggMjBweCB2aWEgMTByZW0gMSUpIiBzaG91bGQg
c2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShmcm9tIDEwcHggMTBweCwgc21vb3RoIHRvIDUwcHggMXB0KSIgc2hvdWxkIHNldCB0aGUgcHJv
cGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4
IDEwcHgsIGFyYyB0byA1MHB4IDFwdCBvZiAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9w
ZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHgg
MTBweCwgYXJjIHRvIDUwcHggMXB0IG9mIDEwcHggMTBweCBzbWFsbCByb3RhdGUgMGRlZykiIHNo
b3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0g
InNoYXBlKGZyb20gMTAlIDFyZW0sIGFyYyB0byA1MHB4IDFwdCBvZiAyMCUgY3cgbGFyZ2Ugcm90
YXRlIDI1ZGVnKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Y2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGNsb3NlKSIgc2hvdWxk
IHNldCB0aGUgcHJvcGVydHkgdmFsdWUKIFBBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hh
cGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGNsb3NlIHBhdGgpIiBzaG91bGQgbm90IHNldCB0aGUg
cHJvcGVydHkgdmFsdWUKIFBBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUobm9uemVy
bywgZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBub3Qgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZQogUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEw
cHggMTBweCwgY3VydmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSkiIHNob3VsZCBub3Qgc2V0IHRo
ZSBwcm9wZXJ0eSB2YWx1ZQo=
</data>
<flag name="commit-queue"
          id="486586"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457874</attachid>
            <date>2022-04-19 03:00:33 -0700</date>
            <delta_ts>2022-04-19 04:37:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238371-20220419130030.patch</filename>
            <type>text/plain</type>
            <size>96894</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0MDhiYzRlZDIxNmNh
YWM1ZWVlZTUyMDkyNWQ3NzYzOGU0M2QwZC4uYzhmMjI3MTg0NDc0MGQ5Njc0Mjg0YzY3ODkyNGUx
ZjgwODQyODU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0xOSAgTm9h
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFk
ZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBDU1Mgc2hhcGUoKSBieSBpbnRyb2R1Y2luZyBzaGFwZSBzZWdtZW50IGFuZCBCYXNpY1NoYXBl
U2hhcGUuCisgICAgICAgIFNoYXBlU2hhcGUgaXMgYSB2ZWN0b3Igb2Ygc2hhcGUgc2VnbWVudHMs
IHdoZXJlIGVhY2ggc2VnbWVudCBibGVuZHMgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgVGhlIHNo
YXBlIHVsdGltYXRlbHkgY3JlYXRlcyBhbiBTVkdQYXRoU291cmNlIHRvIGNvbnZlcnQgdGhlIHJl
c3BvbnNpdmUgc2hhcGUsIHdoaWNoCisgICAgICAgIGlzIGJhc2VkIG9uIExlbmd0aCB2YWx1ZXMs
IHRvIGFuIGFic29sdXRlIFBhdGggb2JqZWN0IHRoYXQgY2FuIGJlIGRyYXduLgorCisgICAgICAg
IFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXNoYXBlcy0yLyNzaGFwZS1mdW5jdGlv
bgorCisgICAgICAgIFVuc2tpcHBlZCBzZXZlcmFsIHJlbGV2YW50IFdQVHMuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgICAgICBOZXcgZmlsZXMg
YWRkZWQKKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZhbHVlRm9yQmFzaWNTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9MZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpiYXNpY1NoYXBlRm9yVmFsdWUpOgor
ICAgICAgICAgICAgICAgIEFkZGVkIHRoZSBCYXNpY1NoYXBlU2hhcGUgdHlwZQorCisgICAgICAg
ICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Q1NTQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2lj
U2hhcGVTaGFwZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6
CisgICAgICAgICAgICAgICAgQWRkZWQgdGhlIENTU0Jhc2ljU2hhcGVTaGFwZQorCisgICAgICAg
ICogY3NzL0NTU1NoYXBlU2VnbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
aGFwZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NT
U2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudDo6Q1NTU2hh
cGVTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OnRhcmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6YXJndW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OmFmZmluaXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjphcHBlbmRBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpDU1NTaGFwZVNlZ21l
bnRWYWx1ZSk6CisgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB0byBkbyB3aXRoIHRoZSBzZWdt
ZW50IG9mIHRoZSBzaGFwZSB3aGlsZSBpbiBDU1Mgc3BhY2UsCisgICAgICAgICAgICAgICAgaW5j
bHVkaW5nIHNlcmlhbGl6YXRpb24gZm9yIGdldENvbXB1dGVkU3R5bGUoKQorCisgICAgICAgICog
Y3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzU2hhcGVTZWdtZW50VmFsdWUgY29uc3Qp
OgorICAgICAgICAgICAgICAgIENTU1NoYXBlU2VnbWVudCBpcyBhIHR5cGUgb2YgdmFsdWUKKwor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAgICAgICAgIE5ldyBr
ZXl3b3JkcyBmb3Igc2hhcGUoKQorCisgICAgICAgICogY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9u
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFBvaW50VG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0FyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6dG9DU1NB
cmdzPExlbmd0aFBvaW50Pik6CisgICAgICAgIChXZWJDb3JlOjp0b0NTU1NoYXBlU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpzZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpmcm9t
Q1NTU2hhcGVTZWdtZW50KToKKyAgICAgICAgKiBjc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmg6
IEFkZGVkLgorICAgICAgICAgICAgICAgIENvbnZlcnRpbmcgc2hhcGUgc2VnbWVudHMgdG8vZnJv
bSBDU1Mgc3BhY2UKKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNoYXBlU2VnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVC
YXNpY1NoYXBlKToKKyAgICAgICAgICAgICAgICBQYXJzZSBhIHNoYXBlIHByb3BlcnR5CisKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OnZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzaWNTaGFwZVNlZ21lbnQ6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6YmxlbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFyY1RvU2hhcGVTZWdWYWx1
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVu
dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6Y3Jl
YXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50OjpCYXNp
Y1NoYXBlU2VnbWVudCk6CisgICAgICAgICAgICAgICAgQmxlbmRpbmcsIGNvbXBhcmluZyBhbmQg
Y29udmVydGluZyB0byBhYnNvbHV0ZSBwYXRoCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhCb3g6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhC
b3g6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1Bh
dGhQb2xpY3k6OmlzS2V5TnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVNlZ21lbnRzUGF0
aFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU2hh
cGVTZWdtZW50c1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpCYXNp
Y1NoYXBlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpwYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6YmxlbmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZVNoYXBlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2V0V2luZFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpmcm9tIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlU2hhcGU6OmF0IGNvbnN0KToKKyAgICAgICAgICAgICAgICBBZGQgQmFz
aWNTaGFwZVNoYXBlCisKIDIwMjItMDQtMTggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgUGxhdGZvcm1NZWRpYUVuZ2luZUNsYXNzTmFt
ZSBtYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODBiYmVhOGU3MjM0ZjA1NWVmZDZlMzQwMDc1
MGIzN2YzMzE3OGNhZS4uZWJlYzFlMGIwZDhjODhjMzk0NDRkZDg4NGI4MDNlNDk3MmU3MDY0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC01NTQsNiArNTU0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9DU1NSdWxlTGlzdC5oCiAgICAgY3NzL0NTU1Nl
bGVjdG9yLmgKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKyAgICBjc3MvQ1NTU2hhcGVTZWdt
ZW50LmgKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCiAgICAgY3NzL0NTU1N0eWxlUnVs
ZS5oCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMTg4Nyw2ICsxODg4LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hh
cGUuaAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCiAKKyAgICByZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaAogICAgIHJlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5oCiAgICAgcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAogICAgIHJlbmRlcmlu
Zy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBhZjNkMDZhNWIwYmJjNjhm
YzAxMTMzYmNjZmUxZjJjZDk3MGU4OWUuLjM0ZDMyYTg4MTYyNTdkNDVkZGFkOTgyYTk3YzdjMTRi
NzFkMDM4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC03NzEsNiArNzcxLDcgQEAgY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmNwcAogY3NzL0NTU1NlbGVjdG9yLmNwcAogY3NzL0NTU1NlbGVjdG9yTGlz
dC5jcHAKIGNzcy9DU1NTaGFkb3dWYWx1ZS5jcHAKK2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCiBj
c3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKIGNzcy9DU1NTdHlsZVJ1bGUuY3BwCiBjc3MvQ1NT
U3R5bGVTaGVldC5jcHAKQEAgLTI0NDksNiArMjQ1MCw3IEBAIHJlbmRlcmluZy9zaGFwZXMvUmVj
dGFuZ2xlU2hhcGUuY3BwCiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogcmVuZGVyaW5nL3No
YXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNw
cAorcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmNwcAogcmVuZGVyaW5nL3N0eWxl
L0JvcmRlckRhdGEuY3BwCiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCiByZW5kZXJp
bmcvc3R5bGUvRmlsbExheWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2MTc2MzlkZjcyMDZmYzQ4NDU3MDQ4ZWU0NGJh
ODk0M2M1MmM3YTIuLmY1NDE5MDgyMzdkNjE1NGJlNDIwZWQ2N2M5MDg1ZTY0NTlkMDQ1NGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ0NTIsNiArNDQ1MiwxMCBAQAogCQlDQTNCRjY3RTEwRDk5QkFFMDBFNkNFNTMgLyogU2Ny
b2xsQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNBNkMxNTMwMjIwQjk4
Q0MwMDU1Q0JGQyAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFBRTNCODFGQjgwRUFFMDBGNUVGQjIgLyog
SlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNBN0U5QjQ5MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVs
UGFpbnRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDQTdFOUI0NzI0MzYxREM1MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5o
ICovOyB9OworCQlDQTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBODE2Q0Iz
Mjc3ODQ4MUUwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oICovOyB9OworCQlDQTgxNkNC
OTI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyog
Q1NTU2hhcGVTZWdtZW50LmggKi87IH07CisJCUNBODE2Q0JDMjc3ODlBQUQwMDJCRDNDNiAvKiBT
aGFwZVNlZ21lbnRGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0E4MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1
bmN0aW9ucy5jcHAgKi87IH07CisJCUNBODE2Q0JEMjc3ODlBQUQwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRGdW5jdGlvbnMu
aCAqLzsgfTsKIAkJQ0FFOUY5MTAxNDY0NDFGMDAwQzI0NUIwIC8qIENTU0FzcGVjdFJhdGlvVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBRTlG
OTBFMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggKi87IH07CiAJCUNC
MzhGRDUyMUNDRjkzOTQwMDU5MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCMzhGRDRFMUNDRjkzN0UwMDU5
MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuaCAqLzsgfTsKIAkJQ0IzOEZENUIxQ0QyMzI1QjAw
NTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0IzOEZENTkxQ0QyMzE0NTAwNTkyQTNGIC8q
IEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oICovOyB9OwpAQCAtMTU5NDcsNiArMTU5NTEs
NyBAQAogCQlDQTA5MUQ4NjIzQ0Y5MDc4MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHlsZUltYWdlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0EwOTFEODkyM0NGOTA4ODAwQUQ0MzQ2IC8qIFN0eWxlSW1hZ2VTZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3R5bGVJbWFnZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQTE2MzVEQzIwNzJFNzY5MDBFN0QyQ0UgLyogUmVmZXJyZXJQb2xpY3kuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmZXJyZXJQb2xpY3kuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDQTE2NkNDQjI3ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hh
cGVTZWdtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1NoYXBlU2VnbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMTkzM0Q1MjQwN0Q2NDAwMDcxMjQxQSAvKiBQ
ZXJmb3JtYW5jZVBhaW50VGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZvcm1hbmNlUGFpbnRU
aW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0ExOTMzRDgyNDA3RURDRjAw
NzEyNDFBIC8qIFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDQTNBNEFBQjI1NDE2RTNDMDA2Q0RBRTIgLyogSW1hZ2VSZXNvbHV0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlUmVzb2x1dGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTk2Miw2ICsxNTk2NywxMSBAQAogCQlDQTZD
MTUzODIyMEQxRUIzMDA1NUNCRkMgLyogSlNJREJDdXJzb3JXaXRoVmFsdWVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJDdXJzb3JXaXRoVmFsdWVD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTdFOUI0NzI0MzYxREM1
MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb250ZW50ZnVsUGFpbnRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNBN0U5QjQ4MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFpbnRD
aGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRm
dWxQYWludENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNC
MzI3Nzg0ODFFMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0E4MTZDQjQyNzc4NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2ljU2hhcGVTZWdt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4MTZDQjgyNzc4NDgyRTAw
MkJEM0M2IC8qIENTU1NoYXBlU2VnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDU1NTaGFwZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4
MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFwZVNlZ21lbnRGdW5jdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCQjI3Nzg5QUE3MDAyQkQzQzYg
LyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQUU5RjkwRDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIw
IC8qIENTU0FzcGVjdFJhdGlvVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
QjM4RkQ0QTFDQ0NGMkREMDA1OTJBM0YgLyogUGVyZm9ybWFuY2VFbnRyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJmb3JtYW5jZUVudHJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5Njg4LDYgKzI5Njk4LDggQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCUZCRDZBRjgyMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi8s
CiAJCQkJRkJENkFGODMxNUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8sCisJCQkJ
Q0E4MTZDQjQyNzc4NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJ
CQlDQTgxNkNCMzI3Nzg0ODFFMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLywKIAkJ
CQkwRjI4M0E5MTIzNTYzMTI2MDA0Nzk0Q0EgLyogQm9yZGVyRGF0YS5jcHAgKi8sCiAJCQkJQkM1
RUI1RTAwRTgxQkU4NzAwQjI1OTY1IC8qIEJvcmRlckRhdGEuaCAqLywKIAkJCQlCQzVFQjVEQTBF
ODFCN0VBMDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCAqLywKQEAgLTMxOTYxLDYgKzMxOTczLDgg
QEAKIAkJCQlFNEMxNzg5NjBFRTY5MDM4MDA4MjRENjkgLyogQ1NTU2VsZWN0b3JMaXN0LmggKi8s
CiAJCQkJQTgwRTZDQ0EwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmNwcCAqLywK
IAkJCQlBODBFNkNCRTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU2hhZG93VmFsdWUuaCAqLywKKwkJ
CQlDQTE2NkNDQjI3ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJ
CQlDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggKi8sCiAJCQkJ
N0NERThFQkMxRjE5M0JDNTAwMTY4RkU3IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uY3BwICovLAog
CQkJCUE4MEU2RTBEMEExOTkxMUMwMDdGQjhDNSAvKiBDU1NTdHlsZURlY2xhcmF0aW9uLmggKi8s
CiAJCQkJMTQyMDExQUUwQTAwMzExNzAwODMwM0Y5IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaWRs
ICovLApAQCAtMzIwOTYsNiArMzIxMTAsOCBAQAogCQkJCTQzQjg1RUQ2MThDQkVDOTcwMEUzMUFG
NCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuaW4gKi8s
CiAJCQkJMjZBQTBGOUExOEQyOTczRDAwNDE5MzgxIC8qIFNlbGVjdG9yUHNldWRvRWxlbWVudFR5
cGVNYXAuaW4gKi8sCiAJCQkJNDMxMDdCRTExOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNl
dWRvVHlwZU1hcC5oICovLAorCQkJCUNBODE2Q0JBMjc3ODlBQTIwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuY3BwICovLAorCQkJCUNBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBT
aGFwZVNlZ21lbnRGdW5jdGlvbnMuaCAqLywKIAkJCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQg
LyogU3R5bGVDb2xvci5jcHAgKi8sCiAJCQkJOTQxODI3ODkxRDhCMjQyMjAwNDkyNzY0IC8qIFN0
eWxlQ29sb3IuaCAqLywKIAkJCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRp
YS5jcHAgKi8sCkBAIC0zMzg1Niw2ICszMzg3Miw3IEBACiAJCQkJNzE1NkJDQTEyMUNBMzUwRjAw
NTM0Mzk3IC8qIEJhc2ljRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4
QTE1RUYyNURGMDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkJENkFGOEMxNUVGMjYwNDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDQTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFCMjNBMzI4MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVU
ZXh0SW5zZXJ0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCM0QwQTQ0RUZDNzAw
Rjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEy
NDBEMDA2QzFEMDBFRjZGMjYgLyogQmlkaUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMzQz
NDcsNiArMzQzNjQsNyBAQAogCQkJCUU0QzE3ODlCMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxl
Y3Rvckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0REU1QzhFMUQ4MDgwMjcwMDE2NEYyQSAv
KiBDU1NTZWxlY3RvclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRTgwQTE5ODlD
QTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNC
OTI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQTUzOEEyQTI2RjAxMDQyMDA5NjVGQzggLyogQ1NTU2tldy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkE1MzhBMkIyNkYwMTA0NTAwOTY1RkM4IC8qIENTU1NrZXdYLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyQTUzOEEyQzI2RjAxMDQ4MDA5NjVGQzggLyogQ1NTU2tld1kuaCBpbiBIZWFkZXJzICov
LApAQCAtMzc0ODQsNiArMzc1MDIsNyBAQAogCQkJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAv
KiBTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NUIxNzVENDFFRTAwQzIxRUM4IC8q
IFNoYXBlSW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTUyMTc1RDNGM0UwMEMy
MUVDOCAvKiBTaGFwZU91dHNpZGVJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNCRDI3
Nzg5QUFEMDAyQkQzQzYgLyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDFBRjE1MDE2NTZGMTUxMDBDNkQ0RjcgLyogU2hhcGVWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUQ5RjBGQzEyMTIyMDI5QjAwNUQ4RkQ0IC8qIFNoYXJlRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE0QTk1NEUwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zOTAzMCw2ICszOTA0OSw3IEBACiAJCQkJNDNCODVFRDQxOENCRUM1
MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1h
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkFBMEY5RTE4RDJBMThCMDA0MTkzODEgLyogU2Vs
ZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0Q1OERG
RDFGOTU2NUE4MDAxMTI3OTEgLyogU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0E4
MTZDQkMyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MURGMkQ1RTI3QTk0NTJBMDBGMjVBMjEgLyogU2hhcmVkVmlkZW9GcmFt
ZUluZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTBBODFGOTAyMkE0MDA1MTAyQ0UgLyog
U29mdExpbmtMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUFBMTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCmluZGV4IDlkZjJjZmY3
OTU3ZTQ1ZDg5YjcyMWE3MWU3NWUyOGQ4NWE1ZTc5YTcuLjE3NzIyMjZhZmViNzNkODQ0OTU5N2Q2
YWRlMzY4M2U2N2IxZDVjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1No
YXBlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0
aW9ucy5jcHAKQEAgLTMwLDEzICszMCwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkJhc2ljU2hhcGVGdW5jdGlvbnMuaCIKIAorI2luY2x1ZGUgIkJhc2ljU2hhcGVTZWdtZW50
LmgiCiAjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKICNpbmNsdWRlICJDU1NCYXNpY1NoYXBlcy5o
IgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJDU1NT
aGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJQYWly
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVh
bS5oIgorI2luY2x1ZGUgIlNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTE1NCw2ICsxNTcsMjIgQEAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1
ZUZvckJhc2ljU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCYXNpY1MKICAg
ICAgICAgYmFzaWNTaGFwZVZhbHVlID0gV1RGTW92ZShpbnNldFZhbHVlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorICAgIGNhc2UgQmFzaWNTaGFwZTo6VHlwZTo6U2hhcGU6IHsKKyAgICAgICAg
YXV0byYgc2hhcGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGUpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
KyAgICAgICAgYXV0byBzaXplID0gc2hhcGUuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHRvQ1NTU2hh
cGVTZWdtZW50KHN0eWxlLCBzaGFwZS5hdChpKSkpOworCisgICAgICAgIGF1dG8gZnJvbSA9IGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoCisgICAgICAgICAgICBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc2hhcGUuZnJvbSgpLngoKSwgc3R5bGUpLAorICAgICAgICAgICAg
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYXBlLmZyb20oKS55KCksIHN0eWxlKSwgUGFpcjo6
SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSkpOworCisgICAgICAgIGF1dG8g
c2hhcGVWYWx1ZSA9IENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3JlYXRlKFdURk1vdmUoZnJvbSksIFdU
Rk1vdmUocmVzdWx0KSk7CisgICAgICAgIHNoYXBlVmFsdWUtPnNldFdpbmRSdWxlKHNoYXBlLndp
bmRSdWxlKCkpOworICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBXVEZNb3ZlKHNoYXBlVmFsdWUp
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShiYXNpY1NoYXBlVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0xNjQs
NiArMTgzLDEyIEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjCiAgICAgcmV0dXJuIHZhbHVlLT5j
b252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IEZpeGVkRmxvYXRDb252ZXJz
aW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oY29udmVyc2lv
bkRhdGEpOwogfQogCitzdGF0aWMgTGVuZ3RoUG9pbnQgY29udmVydFRvTGVuZ3RoUG9pbnQoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKK3sKKyAgICBhdXRvJiBwYWlyID0gKihkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgpKTsKKyAgICByZXR1cm4geyBjb252ZXJ0VG9MZW5ndGgo
Y29udmVyc2lvbkRhdGEsIHBhaXIuZmlyc3QoKSksIGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9u
RGF0YSwgcGFpci5zZWNvbmQoKSkgfTsKK30KKwogc3RhdGljIExlbmd0aFNpemUgY29udmVydFRv
TGVuZ3RoU2l6ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0
YSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlKQogewogICAgIGlmICghdmFsdWUpCkBA
IC0yOTcsNiArMzIyLDIwIEBAIFJlZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9yVmFsdWUoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhCiAgICAgICAgIGJhc2lj
U2hhcGUgPSBXVEZNb3ZlKHBhdGgpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBD
U1NCYXNpY1NoYXBlOjpDU1NCYXNpY1NoYXBlU2hhcGVUeXBlOiB7CisgICAgICAgIGF1dG8mIHNo
YXBlVmFsdWUgPSBkb3duY2FzdDxDU1NCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGVWYWx1ZSk7
CisgICAgICAgIGNvbnN0IGF1dG8mIGNzc1NlZ21lbnRzID0gc2hhcGVWYWx1ZS5zZWdtZW50cygp
OworICAgICAgICBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4gc2VnbWVudHMoY3NzU2Vn
bWVudHMubGVuZ3RoKCkpOworICAgICAgICBzdGQ6OnRyYW5zZm9ybShzdGQ6OmJlZ2luKGNzc1Nl
Z21lbnRzKSwgc3RkOjplbmQoY3NzU2VnbWVudHMpLCBzZWdtZW50cy5iZWdpbigpLCBbJl0gKGNv
bnN0IGF1dG8mIGNzc1NlZ21lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBmcm9tQ1NTU2hhcGVT
ZWdtZW50KGNvbnZlcnNpb25EYXRhLCBkb3duY2FzdDxDU1NTaGFwZVNlZ21lbnQ+KGNzc1NlZ21l
bnQuZ2V0KCkpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byBzaGFwZSA9IEJhc2ljU2hh
cGVTaGFwZTo6Y3JlYXRlKGNvbnZlcnRUb0xlbmd0aFBvaW50KGNvbnZlcnNpb25EYXRhLCBzaGFw
ZVZhbHVlLmZyb20oKSksIFdURk1vdmUoc2VnbWVudHMpKTsKKyAgICAgICAgc2hhcGUtPnNldFdp
bmRSdWxlKHNoYXBlVmFsdWUud2luZFJ1bGUoKSk7CisKKyAgICAgICAgYmFzaWNTaGFwZSA9IFdU
Rk1vdmUoc2hhcGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJu
IGJhc2ljU2hhcGUucmVsZWFzZU5vbk51bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFw
ZXMuY3BwCmluZGV4IDg5ZTA5ZjU3MmMzNTE2MzgzZjdiMjYyZDU0MGMwM2RlMDJlODQ4NTAuLjg1
ZjY3NmZlNjE2NGFhMGI0MDg4ODMxZDA1NjQ4ODMyZTUwMGZiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtMjIyLDYgKzIyMiwzOCBAQCBib29sIENTU0Jhc2ljU2hh
cGVQYXRoOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYgb3RoZXJTaGFwZSkgY29uc3QKICAg
ICByZXR1cm4gd2luZFJ1bGUoKSA9PSBvdGhlclNoYXBlUGF0aC53aW5kUnVsZSgpICYmIHBhdGhE
YXRhKCkgPT0gb3RoZXJTaGFwZVBhdGgucGF0aERhdGEoKTsKIH0KIAorQ1NTQmFzaWNTaGFwZVNo
YXBlOjpDU1NCYXNpY1NoYXBlU2hhcGUoUmVmPENTU1ZhbHVlPiYmIGZyb20sIFJlZjxDU1NWYWx1
ZUxpc3Q+JiYgc2VnbWVudHMpCisgICAgOiBtX3NlZ21lbnRzKFdURk1vdmUoc2VnbWVudHMpKSwg
bV9mcm9tKFdURk1vdmUoZnJvbSkpCit7IAorfQorCitib29sIENTU0Jhc2ljU2hhcGVTaGFwZTo6
ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIG90aGVyU2hhcGUpIGNvbnN0Cit7CisgICAgaWYg
KCFpczxDU1NCYXNpY1NoYXBlU2hhcGU+KG90aGVyU2hhcGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBhdXRvJiBvdGhlclNoYXBlU2hhcGUgPSBkb3duY2FzdDxDU1NCYXNpY1NoYXBl
U2hhcGU+KG90aGVyU2hhcGUpOworICAgIHJldHVybiB3aW5kUnVsZSgpID09IG90aGVyU2hhcGVT
aGFwZS53aW5kUnVsZSgpCisgICAgICAgICYmIGZyb20oKSA9PSBvdGhlclNoYXBlU2hhcGUuZnJv
bSgpCisgICAgICAgICYmIHNlZ21lbnRzKCkuZXF1YWxzKG90aGVyU2hhcGVTaGFwZS5zZWdtZW50
cygpKTsKK30KKworU3RyaW5nIENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3NzVGV4dCgpIGNvbnN0Cit7
CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGlmICh3aW5kUnVsZSgpID09IFdpbmRS
dWxlOjpFdmVuT2RkKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgic2hhcGUoZXZlbm9kZCAiKTsK
KyAgICBlbHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJzaGFwZSgiKTsKKworICAgIGF1dG8q
IHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oZnJvbSgpKS5wYWlyVmFsdWUoKTsK
KyAgICBBU1NFUlQocGFpcik7CisgICAgYnVpbGRlci5hcHBlbmQoImZyb20gIiwgcGFpci0+Y3Nz
VGV4dCgpLCAiLCAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChzZWdtZW50cygpLmNzc1RleHQoKSwg
IikiKTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKIHN0YXRpYyBTdHJp
bmcgYnVpbGRQb2x5Z29uU3RyaW5nKGNvbnN0IFdpbmRSdWxlJiB3aW5kUnVsZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBvaW50cykKIHsKICAgICBBU1NFUlQoIShwb2ludHMuc2l6ZSgpICUgMikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAppbmRleCAxMDVjNDYwOTQxZDY3NDRlNTdi
ZTdhMzVkNmIwNGZjNzNmYWJiYmVjLi42M2FhOGY5ZWU0MzE1NjZiZDE5YmM0NTczMzA3OWM1ZTVk
ZTlmM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaApAQCAtMzgsNiArMzgsMTAg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CitjbGFz
cyBDU1NTaGFwZVNlZ21lbnQ7CitjbGFzcyBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXI7CitjbGFz
cyBDU1NWYWx1ZTsKK2NsYXNzIENTU1ZhbHVlTGlzdDsKIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFt
OwogCiBjbGFzcyBDU1NCYXNpY1NoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTQmFzaWNTaGFw
ZT4gewpAQCAtNDcsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgICAgIENTU0Jhc2ljU2hhcGVDaXJj
bGVUeXBlLAogICAgICAgICBDU1NCYXNpY1NoYXBlRWxsaXBzZVR5cGUsCiAgICAgICAgIENTU0Jh
c2ljU2hhcGVJbnNldFR5cGUsCi0gICAgICAgIENTU0Jhc2ljU2hhcGVQYXRoVHlwZQorICAgICAg
ICBDU1NCYXNpY1NoYXBlUGF0aFR5cGUsCisgICAgICAgIENTU0Jhc2ljU2hhcGVTaGFwZVR5cGUK
ICAgICB9OwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CkBAIC0yMzMsNiAr
MjM4LDM1IEBAIHByaXZhdGU6CiAgICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFdpbmRSdWxlOjpO
b25aZXJvIH07CiB9OwogCitjbGFzcyBDU1NCYXNpY1NoYXBlU2hhcGUgZmluYWwgOiBwdWJsaWMg
Q1NTQmFzaWNTaGFwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDU1NCYXNpY1NoYXBlU2hh
cGU+IGNyZWF0ZShSZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJiBzZWdt
ZW50cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0Jhc2ljU2hhcGVT
aGFwZShXVEZNb3ZlKGZyb20pLCBXVEZNb3ZlKHNlZ21lbnRzKSkpOworICAgIH0KKworICAgIGNv
bnN0IENTU1ZhbHVlTGlzdCYgc2VnbWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fc2VnbWVudHMuZ2V0KCk7CisgICAgfQorCisgICAgdm9pZCBzZXRXaW5kUnVsZShXaW5kUnVs
ZSBydWxlKSB7IG1fd2luZFJ1bGUgPSBydWxlOyB9CisgICAgV2luZFJ1bGUgd2luZFJ1bGUoKSBj
b25zdCB7IHJldHVybiBtX3dpbmRSdWxlOyB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgZnJvbSgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJvbS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIENTU0Jhc2lj
U2hhcGVTaGFwZShSZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJik7CisK
KyAgICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDU1NCYXNpY1NoYXBlU2hhcGVU
eXBlOyB9CisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGVxdWFs
cyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3QgZmluYWw7CisKKyAgICBSZWY8Q1NTVmFsdWVM
aXN0PiBtX3NlZ21lbnRzOworICAgIFJlZjxDU1NWYWx1ZT4gbV9mcm9tOworICAgIFdpbmRSdWxl
IG1fd2luZFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OworfTsKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBF
UyhUb1ZhbHVlVHlwZU5hbWUpIFwKQEAgLTI0NSwzICsyNzksNCBAQCBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0NTU19CQVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZUNpcmNsZSkKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlRWxsaXBzZSkKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUG9seWdvbikK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUGF0
aCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBl
U2hhcGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3
ODYxNGNjNWYzOWVlYzMzMGQzZGI4OTNlZGEzYWNlNzM4M2VlYTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNwcApAQCAtMCwwICsxLDE5MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ1NTU2hhcGVTZWdtZW50LmgiCisKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgor
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxDU1NTaGFwZVNlZ21l
bnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTW92ZVRvKENTU1NoYXBlU2VnbWVudDo6Q29vcmRB
ZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCkKK3sKKyAgICByZXR1cm4g
Q1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShNb3ZlVG8sIGFmZmluaXR5LCBXVEZNb3ZlKHRh
cmdldCkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0
ZUxpbmVUbyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NW
YWx1ZT4mJiB0YXJnZXQpCit7CisgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVh
dGUoTGluZVRvLCBhZmZpbml0eSwgV1RGTW92ZSh0YXJnZXQpKTsKK30KKworUmVmPENTU1NoYXBl
U2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKENTU1NoYXBl
U2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHgpCit7Cisg
ICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoTGluZVRvSG9yaXpvbnRhbCwg
YWZmaW5pdHksIFdURk1vdmUoeCkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFw
ZVNlZ21lbnQ6OmNyZWF0ZUxpbmVUb1ZlcnRpY2FsKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZp
bml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHkpCit7CisgICAgcmV0dXJuIENTU1NoYXBl
U2VnbWVudFZhbHVlOjpjcmVhdGUoTGluZVRvVmVydGljYWwsIGFmZmluaXR5LCBXVEZNb3ZlKHkp
KTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2
ZVRvQ3ViaWMoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NT
VmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcDEsIFJlZjxDU1NWYWx1ZT4mJiBwMikK
K3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShDdXJ2ZVRvQ3ViaWMs
IGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUocDEpLCBXVEZNb3ZlKHAyKSk7Cit9
CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1
YWRyYXRpYyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NW
YWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBwMSkKK3sKKyAgICByZXR1cm4gQ1NTU2hh
cGVTZWdtZW50VmFsdWU6OmNyZWF0ZShDdXJ2ZVRvUXVhZHJhdGljLCBhZmZpbml0eSwgV1RGTW92
ZSh0YXJnZXQpLCBXVEZNb3ZlKHAxKSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKENTU1NoYXBlU2VnbWVudDo6Q29v
cmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVl
PiYmIHAyKQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEN1cnZl
VG9DdWJpY1Ntb290aCwgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92ZShwMikpOwor
fQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9R
dWFkcmF0aWNTbW9vdGgoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBS
ZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1
ZTo6Y3JlYXRlKEN1cnZlVG9RdWFkcmF0aWNTbW9vdGgsIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdl
dCkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFy
Y1RvKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVl
PiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHJhZGl1cywgQ1NTVmFsdWVJRCBzd2VlcCwgQ1NT
VmFsdWVJRCBzaXplLCBSZWY8Q1NTVmFsdWU+JiYgYW5nbGUpCit7CisgICAgQVNTRVJUKHN3ZWVw
ID09IENTU1ZhbHVlQ2N3IHx8IHN3ZWVwID09IENTU1ZhbHVlQ3cpOworICAgIEFTU0VSVChzaXpl
ID09IENTU1ZhbHVlU21hbGwgfHwgc2l6ZSA9PSBDU1NWYWx1ZUxhcmdlKTsKKyAgICByZXR1cm4g
Q1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShBcmNUbywgYWZmaW5pdHksCisgICAgICAgIFdU
Rk1vdmUodGFyZ2V0KSwKKyAgICAgICAgV1RGTW92ZShyYWRpdXMpLAorICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHN3ZWVwKSwKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShzaXplKSwKKyAgICAgICAgV1RGTW92ZShhbmdsZSkpOworfQorCitSZWY8Q1NTU2hhcGVT
ZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCoobmV3IENTU1NoYXBlU2VnbWVudChDbG9zZVBhdGgpKSk7Cit9CisKK2Jvb2wg
Q1NTU2hhcGVTZWdtZW50OjplcXVhbHMoY29uc3QgQ1NTU2hhcGVTZWdtZW50JiBvdGhlcikgY29u
c3QKK3sKKyAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKG1fdHlwZSA9PSBDbG9zZVBhdGgpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU1NoYXBlU2VnbWVudFZhbHVlJj4o
KnRoaXMpLmVxdWFscyhzdGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21lbnRWYWx1ZSY+KG90
aGVyKSk7Cit9CisKK1N0cmluZyBDU1NTaGFwZVNlZ21lbnQ6OmN1c3RvbUNTU1RleHQoKSBjb25z
dAoreworICAgIGlmIChtX3R5cGUgPT0gQ1NTU2hhcGVTZWdtZW50OjpDbG9zZVBhdGgpCisgICAg
ICAgIHJldHVybiAiY2xvc2UiOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU1No
YXBlU2VnbWVudFZhbHVlKj4odGhpcyktPmN1c3RvbUNTU1RleHQoKTsKK30KKworYm9vbCBDU1NT
aGFwZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNv
bnN0Cit7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBvdGhlci50eXBlKCkpOworICAgIGNvbnN0IGF1
dG8mIG90aGVyVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21lbnRWYWx1ZSY+
KG90aGVyKTsKKyAgICByZXR1cm4gb3RoZXJWYWx1ZS5tX2FmZmluaXR5ID09IG1fYWZmaW5pdHkK
KyAgICAgICAgJiYgb3RoZXJWYWx1ZS50YXJnZXQoKS5lcXVhbHModGFyZ2V0KCkpCisgICAgICAg
ICYmIG90aGVyVmFsdWUubV9hcmd1bWVudHMuZ2V0KCkuZXF1YWxzKG1fYXJndW1lbnRzLmdldCgp
KTsKK30KKworU3RyaW5nIENTU1NoYXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29u
c3QKK3sKKyAgICBjb25zdCBhdXRvIGNvbW1hbmQgPSBbJl0oKSB7CisgICAgICAgIHN3aXRjaCAo
dHlwZSgpKSB7CisgICAgICAgIGNhc2UgTW92ZVRvOgorICAgICAgICAgICAgcmV0dXJuICJtb3Zl
IjsKKyAgICAgICAgY2FzZSBMaW5lVG86CisgICAgICAgICAgICByZXR1cm4gImxpbmUiOworICAg
ICAgICBjYXNlIExpbmVUb0hvcml6b250YWw6CisgICAgICAgICAgICByZXR1cm4gImhsaW5lIjsK
KyAgICAgICAgY2FzZSBMaW5lVG9WZXJ0aWNhbDoKKyAgICAgICAgICAgIHJldHVybiAidmxpbmUi
OworICAgICAgICBjYXNlIEN1cnZlVG9DdWJpYzoKKyAgICAgICAgY2FzZSBDdXJ2ZVRvUXVhZHJh
dGljOgorICAgICAgICAgICAgcmV0dXJuICJjdXJ2ZSI7CisgICAgICAgIGNhc2UgQ3VydmVUb0N1
YmljU21vb3RoOgorICAgICAgICBjYXNlIEN1cnZlVG9RdWFkcmF0aWNTbW9vdGg6CisgICAgICAg
ICAgICByZXR1cm4gInNtb290aCI7CisgICAgICAgIGNhc2UgQXJjVG86CisgICAgICAgICAgICBy
ZXR1cm4gImFyYyI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorCisgICAgfTsKKwor
ICAgIGNvbnN0IGF1dG8gY29uanVuY3Rpb24gPSBbJl0oKSB7CisgICAgICAgIHN3aXRjaCAodHlw
ZSgpKSB7CisgICAgICAgIGNhc2UgTW92ZVRvOgorICAgICAgICBjYXNlIExpbmVUbzoKKyAgICAg
ICAgY2FzZSBMaW5lVG9Ib3Jpem9udGFsOgorICAgICAgICBjYXNlIExpbmVUb1ZlcnRpY2FsOgor
ICAgICAgICBjYXNlIEN1cnZlVG9RdWFkcmF0aWNTbW9vdGg6CisgICAgICAgICAgICByZXR1cm4g
IiI7CisgICAgICAgIGNhc2UgQ3VydmVUb0N1YmljOgorICAgICAgICBjYXNlIEN1cnZlVG9RdWFk
cmF0aWM6CisgICAgICAgIGNhc2UgQ3VydmVUb0N1YmljU21vb3RoOgorICAgICAgICAgICAgcmV0
dXJuICIgdmlhICI7CisgICAgICAgIGNhc2UgQXJjVG86CisgICAgICAgICAgICByZXR1cm4gIiBv
ZiAiOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYXV0byBi
eVRvID0gbV9hZmZpbml0eSA9PSBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29s
dXRlID8gIiB0byAiIDogIiBieSAiOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBi
dWlsZGVyLmFwcGVuZChjb21tYW5kKCksIGJ5VG8sIG1fdGFyZ2V0LT5jc3NUZXh0KCksIGNvbmp1
bmN0aW9uKCkpOworICAgIGlmICh0eXBlKCkgPT0gQXJjVG8pIHsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoYXJndW1lbnQoMCkuY3NzVGV4dCgpKTsKKyAgICAgICAgY29uc3QgYXV0byYgc3dlZXAg
PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oYXJndW1lbnQoMSkpOworICAgICAgICBjb25z
dCBhdXRvJiBzaXplID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGFyZ3VtZW50KDIpKTsK
KyAgICAgICAgY29uc3QgYXV0byYgYW5nbGUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
YXJndW1lbnQoMykpOworCisgICAgICAgIGlmIChzd2VlcC52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVD
dykKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgY3ciKTsKKworICAgICAgICBpZiAoc2l6
ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMYXJnZSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCIgbGFyZ2UiKTsKKworICAgICAgICBpZiAoYW5nbGUuY29tcHV0ZURlZ3JlZXMoKSkKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgcm90YXRlICIsIGFuZ2xlLmNzc1RleHQoKSk7CisgICAg
fSBlbHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fYXJndW1lbnRzLT5jc3NUZXh0KCkpOwor
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
aGFwZVNlZ21lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGU3ZDM5M2VhMzZiMjgxNzk3NjA2NjdlM2M0YTMy
OGUzYjZhZDBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYXBl
U2VnbWVudC5oCkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE5v
YW0gUm9zZW50aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8
d3RmL1R5cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBDU1NTaGFwZVNlZ21lbnQgOiBwdWJsaWMgQ1NTVmFsdWUgeworcHVibGljOgorICAgIGVu
dW0gY2xhc3MgQ29vcmRBZmZpbml0eSB7CisgICAgICAgIEFic29sdXRlLCBSZWxhdGl2ZQorICAg
IH07CisKKyAgICBlbnVtIFNlZ21lbnRUeXBlIHsKKyAgICAgICAgTW92ZVRvLAorICAgICAgICBM
aW5lVG8sCisgICAgICAgIExpbmVUb0hvcml6b250YWwsCisgICAgICAgIExpbmVUb1ZlcnRpY2Fs
LAorICAgICAgICBDdXJ2ZVRvQ3ViaWMsCisgICAgICAgIEN1cnZlVG9RdWFkcmF0aWMsCisgICAg
ICAgIEN1cnZlVG9DdWJpY1Ntb290aCwKKyAgICAgICAgQ3VydmVUb1F1YWRyYXRpY1Ntb290aCwK
KyAgICAgICAgQXJjVG8sCisgICAgICAgIENsb3NlUGF0aAorICAgIH07CisKKyAgICBTZWdtZW50
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICBib29sIGVxdWFscyhj
b25zdCBDU1NTaGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdDsKKyAgICBTdHJpbmcgY3VzdG9tQ1NT
VGV4dCgpIGNvbnN0OworICAgIH5DU1NTaGFwZVNlZ21lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBz
dGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRlQ2xvc2VQYXRoKCk7CisgICAgc3RhdGlj
IFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZU1vdmVUbyhDb29yZEFmZmluaXR5LCBSZWY8Q1NT
VmFsdWU+JiYgdGFyZ2V0KTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRl
TGluZVRvKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpOworICAgIHN0YXRp
YyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKENvb3JkQWZmaW5p
dHksIFJlZjxDU1NWYWx1ZT4mJiB4KTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4g
Y3JlYXRlTGluZVRvVmVydGljYWwoQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHkpOwor
ICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVDdXJ2ZVRvQ3ViaWMoQ29vcmRB
ZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxLCBSZWY8
Q1NTVmFsdWU+JiYgcDIpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVD
dXJ2ZVRvUXVhZHJhdGljKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJl
ZjxDU1NWYWx1ZT4mJiBwMSk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0
ZUN1cnZlVG9DdWJpY1Ntb290aChDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0
LCBSZWY8Q1NTVmFsdWU+JiYgcDIpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBj
cmVhdGVDdXJ2ZVRvUXVhZHJhdGljU21vb3RoKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4m
JiB0YXJnZXQpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVBcmNUbyhD
b29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcmFk
aXVzLCBDU1NWYWx1ZUlEIHN3ZWVwLCBDU1NWYWx1ZUlEIHNpemUsIFJlZjxDU1NWYWx1ZT4mJiBh
bmdsZSk7CisKK3Byb3RlY3RlZDoKKyAgICBDU1NTaGFwZVNlZ21lbnQoU2VnbWVudFR5cGUgdHlw
ZSkKKyAgICAgICAgOiBDU1NWYWx1ZShTaGFwZVNlZ21lbnRDbGFzcykKKyAgICAgICAgLCBtX3R5
cGUodHlwZSkgeyB9CisKK3ByaXZhdGU6CisgICAgU2VnbWVudFR5cGUgbV90eXBlOworfTsKKwor
Y2xhc3MgQ1NTU2hhcGVTZWdtZW50VmFsdWUgOiBwdWJsaWMgQ1NTU2hhcGVTZWdtZW50IHsKK3B1
YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgLi4uQXJncz4KKyAgICBzdGF0aWMgUmVmPENT
U1NoYXBlU2VnbWVudD4gY3JlYXRlKENTU1NoYXBlU2VnbWVudDo6U2VnbWVudFR5cGUgdHlwZSwK
KyAgICAgICAgQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NT
VmFsdWU+JiYgdGFyZ2V0LCBBcmdzLi4uIGFyZ3VtZW50cykKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENTU1NoYXBlU2VnbWVudFZhbHVlKHR5cGUsIGFmZmluaXR5LCBXVEZN
b3ZlKHRhcmdldCksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmd1bWVudHMpLi4uKSk7CisgICAgfQor
CisgICAgY29uc3QgQ1NTVmFsdWUmIHRhcmdldCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV90YXJnZXQuZ2V0KCk7CisgICAgfQorCisgICAgY29uc3QgQ1NTVmFsdWUmIGFyZ3VtZW50
KHNpemVfdCBpKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRzLT5sZW5n
dGgoKSA+IGkpOworICAgICAgICByZXR1cm4gKihtX2FyZ3VtZW50cy0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjayhpKSk7CisgICAgfQorCisgICAgQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5
IGFmZmluaXR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FmZmluaXR5OworICAg
IH0KKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0
OworICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBhcHBlbmRBcmdzKCkgeyB9CisgICAgdm9pZCBhcHBlbmRBcmdzKFJlZjxDU1NWYWx1ZT4mJiB2
KSB7IG1fYXJndW1lbnRzLT5hcHBlbmQoV1RGTW92ZSh2KSk7IH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIC4uLkFyZ3M+CisgICAgdm9pZCBhcHBlbmRBcmdzKFJlZjxDU1NWYWx1ZT4mJiB2LCBB
cmdzIC4uLmFyZ3MpCisgICAgeworICAgICAgICBhcHBlbmRBcmdzKFdURk1vdmUodikpOworICAg
ICAgICBhcHBlbmRBcmdzKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgLi4uQXJncz4KKyAgICBDU1NTaGFwZVNlZ21lbnRWYWx1ZShD
U1NTaGFwZVNlZ21lbnQ6OlNlZ21lbnRUeXBlIHR5cGUsIENTU1NoYXBlU2VnbWVudDo6Q29vcmRB
ZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgQXJncyAuLi5hcmdzKQor
ICAgICAgICA6IENTU1NoYXBlU2VnbWVudCh0eXBlKQorICAgICAgICAsIG1fYWZmaW5pdHkoYWZm
aW5pdHkpCisgICAgICAgICwgbV90YXJnZXQoV1RGTW92ZSh0YXJnZXQpKQorICAgICAgICAsIG1f
YXJndW1lbnRzKENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKSkKKyAgICB7Cisg
ICAgICAgIGFwcGVuZEFyZ3Moc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisK
KyAgICBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgbV9hZmZpbml0eTsKKyAgICBSZWY8
Q1NTVmFsdWU+IG1fdGFyZ2V0OworICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IG1fYXJndW1lbnRzOwor
fTsKKworfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfVkFMVUUoQ1NTU2hhcGVTZWdtZW50
LCBpc1NoYXBlU2VnbWVudFZhbHVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCA1ZTIx
ODIyNjNmY2VhNWNhZmYzNjNlNGZmNDQwMzk0MzgxMWY2ZGFjLi42MzA5ZTNmZjczZGNjYjY2NzMx
ZjIyNGI2NDlkNzg5MmRhMmVkMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTYwLDYg
KzYwLDcgQEAKICNpbmNsdWRlICJDU1NSYXlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1JlZmxlY3RW
YWx1ZS5oIgogI2luY2x1ZGUgIkNTU1NoYWRvd1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTU2hhcGVT
ZWdtZW50LmgiCiAjaW5jbHVkZSAiQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU1VuaWNvZGVSYW5nZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCkBAIC0y
MzAsNiArMjMxLDggQEAgYm9vbCBDU1NWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1ZhbHVlJiBvdGhl
cikgY29uc3QKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0ZvbnRTdHls
ZVZhbHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNlIEZvbnRTdHlsZVJhbmdlQ2xhc3M6
CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NGb250U3R5bGVSYW5nZVZh
bHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFNoYXBlU2VnbWVudENsYXNzOgorICAg
ICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTU2hhcGVTZWdtZW50PigqdGhpcywg
b3RoZXIpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzksNiArMzQyLDggQEAgU3RyaW5n
IENTU1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0Zv
bnRTdHlsZVZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIGNhc2UgRm9udFN0eWxl
UmFuZ2VDbGFzczoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0ZvbnRTdHlsZVJhbmdlVmFs
dWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CisgICAgY2FzZSBTaGFwZVNlZ21lbnRDbGFzczoK
KyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1NoYXBlU2VnbWVudD4oKnRoaXMpLmN1c3RvbUNT
U1RleHQoKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ5Nyw2ICs1
MDIsOSBAQCB2b2lkIENTU1ZhbHVlOjpkZXN0cm95KCkKICAgICBjYXNlIEZvbnRTdHlsZVJhbmdl
Q2xhc3M6CiAgICAgICAgIGRlbGV0ZSBkb3duY2FzdDxDU1NGb250U3R5bGVSYW5nZVZhbHVlPih0
aGlzKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2hhcGVTZWdtZW50Q2xhc3M6CisgICAg
ICAgIGRlbGV0ZSBkb3duY2FzdDxDU1NTaGFwZVNlZ21lbnQ+KHRoaXMpOworICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUu
aAppbmRleCBkYWRlNThkYTIwNjhiN2VlY2NkYWEzMzE5MThjNDRkM2E3NmUwNWM4Li4zZjc1YWYz
MGFiOTAyOGFlYjJkMTUyZjE0NWM5ODkzNTdiNTE5ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApA
QCAtMTM0LDYgKzEzNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR3JpZEF1dG9SZXBlYXRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEdyaWRBdXRvUmVwZWF0Q2xhc3M7IH0K
ICAgICBib29sIGlzR3JpZEludGVnZXJSZXBlYXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xh
c3NUeXBlID09IEdyaWRJbnRlZ2VyUmVwZWF0Q2xhc3M7IH0KICAgICBib29sIGlzR3JpZFRlbXBs
YXRlQXJlYXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEdyaWRUZW1wbGF0
ZUFyZWFzQ2xhc3M7IH0KKyAgICBib29sIGlzU2hhcGVTZWdtZW50VmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX2NsYXNzVHlwZSA9PSBTaGFwZVNlZ21lbnRDbGFzczsgfQogICAgIGJvb2wgaXNHcmlk
TGluZU5hbWVzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBHcmlkTGluZU5h
bWVzQ2xhc3M7IH0KICAgICBib29sIGlzU3ViZ3JpZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9j
bGFzc1R5cGUgPT0gU3ViZ3JpZENsYXNzOyB9CiAgICAgYm9vbCBpc1VuaWNvZGVSYW5nZVZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gVW5pY29kZVJhbmdlQ2xhc3M7IH0KQEAg
LTIwOSw2ICsyMTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIENhbGN1bGF0aW9uQ2xhc3MsCiAg
ICAgICAgIEdyaWRUZW1wbGF0ZUFyZWFzQ2xhc3MsCiAgICAgICAgIFZhbHVlUGFpckNsYXNzLAor
ICAgICAgICBTaGFwZVNlZ21lbnRDbGFzcywKIAogICAgICAgICBDU1NDb250ZW50RGlzdHJpYnV0
aW9uQ2xhc3MsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdv
cmRzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggMmRk
NGMwYmFjM2M5YTNhNGQ2M2JhZWRjMjk5MTA4MDJiNTIyMDJmOS4uMWI2NTRlYjIxOWQ0ZTFjOWIy
MjhmZTE3MTU4NTM5MzgwNWM1YjEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29y
ZHMuaW4KQEAgLTEyODYsNiArMTI4NiwyNyBAQCByZWN0CiAKIC8vIHNoYXBlcwogcG9seWdvbgor
c2hhcGUKKworLy8gc2hhcGUoKQorLy8gZnJvbQorLy8gdG8KKy8vIG1vdmUKK2xpbmUKK2hsaW5l
Cit2bGluZQorY3VydmUKKy8vIHNtb290aAorYXJjCitjbG9zZQordmlhCitvZgorYnkKK2N3Citj
Y3cKKy8vIGxhcmdlCisvLyBzbWFsbAorLy8gcm90YXRlCiAKIC8vIEBmb250LWZhY2Ugc3JjCiBm
b3JtYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5jdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzNjYjEwZjhhYTMxNzIyMDMwMWY0Mjk2YWY1ODZiZTgyZTZlYTcxZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMuY3Bw
CkBAIC0wLDAgKzEsMjIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE5vYW0gUm9zZW50
aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIgorCisjaW5jbHVkZSAiQmFzaWNTaGFwZVNlZ21l
bnQuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAi
Q1NTU2hhcGVTZWdtZW50LmgiCisjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NW
YWx1ZVBvb2wuaCIKKyNpbmNsdWRlICJQYWlyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY29udmVydFBvaW50VG9DU1NWYWx1ZShjb25z
dCBMZW5ndGhQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICBh
dXRvJiBwb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKKyAgICByZXR1cm4gcG9vbC5j
cmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoCisgICAgICAgIHBvb2wuY3JlYXRlVmFsdWUocG9pbnQu
eCgpLCBzdHlsZSksCisgICAgICAgIHBvb2wuY3JlYXRlVmFsdWUocG9pbnQueSgpLCBzdHlsZSks
CisgICAgICAgIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkRvTm90Q29hbGVzY2UpKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWU+IGF1dG8gdG9DU1NBcmdzKGNvbnN0IFZhbHVl
JiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKKwordGVtcGxhdGU8PgorYXV0byB0b0NTU0FyZ3MoY29u
c3QgTGVuZ3RoJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVy
biBzdGQ6Om1ha2VfdHVwbGU8UmVmPENTU1ZhbHVlPj4oQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsKK30KKwordGVtcGxhdGU8PgorYXV0byB0b0NT
U0FyZ3M8TGVuZ3RoUG9pbnQ+KGNvbnN0IExlbmd0aFBvaW50JiB2YWx1ZSwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoY29udmVydFBvaW50
VG9DU1NWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsKK30KKwordGVtcGxhdGU8PgorYXV0byB0b0NTU0Fy
Z3MoY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKAorICAgICAgICBjb252
ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnRhcmdldFBvaW50LCBzdHlsZSksCisgICAgICAgIGNv
bnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUucG9pbnQxLCBzdHlsZSksCisgICAgICAgIGNvbnZl
cnRQb2ludFRvQ1NTVmFsdWUodmFsdWUucG9pbnQyLCBzdHlsZSkpOworfQorCit0ZW1wbGF0ZTw+
CithdXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYgdmFs
dWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3R1
cGxlKAorICAgICAgICBjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnRhcmdldFBvaW50LCBz
dHlsZSksCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUucG9pbnQxLCBzdHls
ZSkpOworfQorCit0ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvQ3ViaWNT
bW9vdGhTaGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorewor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFs
dWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NW
YWx1ZSh2YWx1ZS5wb2ludDIsIHN0eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NB
cmdzKGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkKK3sKKyAgICBhdXRvJiBwb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKKyAg
ICBhdXRvIHJhZGl1cyA9IFBhaXI6OmNyZWF0ZSgKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZSh2
YWx1ZS5yYWRpdXMud2lkdGgsIHN0eWxlKSwKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZSh2YWx1
ZS5yYWRpdXMuaGVpZ2h0LCBzdHlsZSksCisgICAgICAgIFBhaXI6OklkZW50aWNhbFZhbHVlRW5j
b2Rpbmc6OkNvYWxlc2NlKTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAg
IGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAg
ICAgcG9vbC5jcmVhdGVWYWx1ZShXVEZNb3ZlKHJhZGl1cykpLAorICAgICAgICB2YWx1ZS5zd2Vl
cCA/IENTU1ZhbHVlQ3cgOiBDU1NWYWx1ZUNjdywKKyAgICAgICAgdmFsdWUubGFyZ2VBcmMgPyBD
U1NWYWx1ZUxhcmdlIDogQ1NTVmFsdWVTbWFsbCwKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZSh2
YWx1ZS5hbmdsZSwgQ1NTVW5pdFR5cGU6OkNTU19ERUcpKTsKK30KKworUmVmPENTU1NoYXBlU2Vn
bWVudD4gdG9DU1NTaGFwZVNlZ21lbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBC
YXNpY1NoYXBlU2VnbWVudCYgc2VnbWVudCkKK3sKKyAgICBhdXRvIHRvQ1NTID0gWyZdKENTU1No
YXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgYXV0byBjcmVhdGUsIGNvbnN0IGF1
dG8mIGFzKSB7CisgICAgICAgIHJldHVybiBzdGQ6OmFwcGx5KGNyZWF0ZSwgc3RkOjp0dXBsZV9j
YXQoc3RkOjptYWtlX3R1cGxlKGFmZmluaXR5KSwgdG9DU1NBcmdzKChzZWdtZW50LiphcykoKSwg
c3R5bGUpKSk7CisgICAgfTsKKworI2RlZmluZSBDUkVBVEVfQ1NTX1NIQVBFX1NFR01FTlRfRlJP
TV9CQVNJQ19TSEFQRV9TRUdNRU5UKFR5cGUpIFwKKyAgICBjYXNlIFNoYXBlU2VnbWVudCMjVHlw
ZTo6QWJzU2VnVHlwZTogXAorICAgICAgICByZXR1cm4gdG9DU1MoQ1NTU2hhcGVTZWdtZW50OjpD
b29yZEFmZmluaXR5OjpBYnNvbHV0ZSwgQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGUjI1R5cGUsICZC
YXNpY1NoYXBlU2VnbWVudDo6YXMjI1R5cGUpOyBcCisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5
cGU6OlJlbFNlZ1R5cGU6IFwKKyAgICAgICAgcmV0dXJuIHRvQ1NTKENTU1NoYXBlU2VnbWVudDo6
Q29vcmRBZmZpbml0eTo6UmVsYXRpdmUsIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlIyNUeXBlLCAm
QmFzaWNTaGFwZVNlZ21lbnQ6OmFzIyNUeXBlKTsgXAorCisgICAgc3dpdGNoIChzZWdtZW50LnR5
cGUoKSkgeworICAgIGNhc2UgUGF0aFNlZ0Nsb3NlUGF0aDoKKyAgICAgICAgcmV0dXJuIENTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisKKyAgICAgICAgRk9SX0VBQ0hfU0hBUEVf
U0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoQ1JFQVRFX0NTU19TSEFQRV9TRUdNRU5UX0ZST01fQkFT
SUNfU0hBUEVfU0VHTUVOVCkKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KK30KK3RlbXBsYXRlIDxjbGFzcyBEZWZpbml0aW9uPgorU1ZHUGF0aFNl
Z1R5cGUgc2VnbWVudFR5cGUoY29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUmIHNlZ21lbnRXaXRo
VmFsdWUpCit7CisgICAgcmV0dXJuIHNlZ21lbnRXaXRoVmFsdWUuYWZmaW5pdHkoKSA9PSBDU1NT
aGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRlID8gRGVmaW5pdGlvbjo6QWJzU2Vn
VHlwZSA6IERlZmluaXRpb246OlJlbFNlZ1R5cGU7Cit9CisKK1JlZjxCYXNpY1NoYXBlU2VnbWVu
dD4gZnJvbUNTU1NoYXBlU2VnbWVudChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBj
b252ZXJzaW9uRGF0YSwgY29uc3QgQ1NTU2hhcGVTZWdtZW50JiBjc3NTZWdtZW50KQoreworICAg
IGF1dG8gdG9MZW5ndGggPSBbJl0oY29uc3QgQ1NTVmFsdWUmIHZhbHVlKSAtPiBMZW5ndGggewor
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5jb252ZXJ0
VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IEZpeGVkRmxvYXRDb252ZXJzaW9uIHwg
UGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEp
OworICAgIH07CisKKyAgICBhdXRvIHRvTGVuZ3RoUG9pbnQgPSBbJl0oY29uc3QgQ1NTVmFsdWUm
IHZhbHVlKSAtPiBMZW5ndGhQb2ludCB7CisgICAgICAgIGF1dG8gcGFpciA9IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkucGFpclZhbHVlKCk7CisgICAgICAgIEFTU0VSVChwYWly
KTsKKyAgICAgICAgcmV0dXJuIExlbmd0aFBvaW50IHsgdG9MZW5ndGgoKnBhaXItPmZpcnN0KCkp
LCB0b0xlbmd0aCgqcGFpci0+c2Vjb25kKCkpIH07CisgICAgfTsKKworICAgIGF1dG8gdG9MZW5n
dGhTaXplID0gWyZdKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkgLT4gTGVuZ3RoU2l6ZSB7CisgICAg
ICAgIGF1dG8gcGFpciA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkucGFpclZh
bHVlKCk7CisgICAgICAgIEFTU0VSVChwYWlyKTsKKyAgICAgICAgcmV0dXJuIExlbmd0aFNpemUg
eyB0b0xlbmd0aCgqcGFpci0+Zmlyc3QoKSksIHRvTGVuZ3RoKCpwYWlyLT5zZWNvbmQoKSkgfTsK
KyAgICB9OworCisgICAgYXV0byB0eXBlID0gY3NzU2VnbWVudC50eXBlKCk7CisKKyAgICBpZiAo
dHlwZSA9PSBDU1NTaGFwZVNlZ21lbnQ6OkNsb3NlUGF0aCkKKyAgICAgICAgcmV0dXJuIEJhc2lj
U2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKworICAgIGNvbnN0IGF1dG8mIHNlZ21l
bnRXaXRoVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21lbnRWYWx1ZSY+KGNz
c1NlZ21lbnQpOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBDU1NTaGFwZVNlZ21l
bnQ6Ok1vdmVUbzogeworICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZU1v
dmVUbygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudE1vdmVUbz4oc2VnbWVu
dFdpdGhWYWx1ZSksCisgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUu
dGFyZ2V0KCkpKTsKKyAgICB9CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6TGluZVRvOgor
ICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVUbygKKyAgICAgICAg
ICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudExpbmVUbz4oc2VnbWVudFdpdGhWYWx1ZSksCisg
ICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUudGFyZ2V0KCkpKTsKKwor
ICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpMaW5lVG9Ib3Jpem9udGFsOgorICAgICAgICByZXR1
cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVUb0hvcml6b250YWwoCisgICAgICAgICAg
ICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRMaW5lVG9Ib3Jpem9udGFsPihzZWdtZW50V2l0aFZh
bHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoKHNlZ21lbnRXaXRoVmFsdWUudGFyZ2V0KCkpKTsK
KworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpMaW5lVG9WZXJ0aWNhbDoKKyAgICAgICAgcmV0
dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9WZXJ0aWNhbCgKKyAgICAgICAgICAg
IHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudExpbmVUb1ZlcnRpY2FsPihzZWdtZW50V2l0aFZhbHVl
KSwKKyAgICAgICAgICAgIHRvTGVuZ3RoKHNlZ21lbnRXaXRoVmFsdWUudGFyZ2V0KCkpKTsKKwor
ICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpDdXJ2ZVRvQ3ViaWM6CisgICAgICAgIHJldHVybiBC
YXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljKAorICAgICAgICAgICAgc2VnbWVu
dFR5cGU8U2hhcGVTZWdtZW50Q3VydmVUb0N1YmljPihzZWdtZW50V2l0aFZhbHVlKSwgeworICAg
ICAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgwKSks
CisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50
KDEpKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUudGFy
Z2V0KCkpCisgICAgICAgICAgICB9KTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpDdXJ2
ZVRvUXVhZHJhdGljOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1
cnZlVG9RdWFkcmF0aWMoCisgICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRDdXJ2
ZVRvUXVhZHJhdGljPihzZWdtZW50V2l0aFZhbHVlKSwgeworICAgICAgICAgICAgICAgIHRvTGVu
Z3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgwKSksCisgICAgICAgICAgICAgICAg
dG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQorICAgICAgICAgICAgfSk7
CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q3VydmVUb0N1YmljU21vb3RoOgorICAgICAg
ICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpY1Ntb290aCgKKyAg
ICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudEN1cnZlVG9DdWJpY1Ntb290aD4oc2Vn
bWVudFdpdGhWYWx1ZSksIHsKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRX
aXRoVmFsdWUuYXJndW1lbnQoMCkpLAorICAgICAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2Vn
bWVudFdpdGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAgICAgIH0pOworCisgICAgY2FzZSBDU1NT
aGFwZVNlZ21lbnQ6OkN1cnZlVG9RdWFkcmF0aWNTbW9vdGg6CisgICAgICAgIHJldHVybiBCYXNp
Y1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCgKKyAgICAgICAgICAg
IHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWNTbW9vdGg+KHNlZ21lbnRX
aXRoVmFsdWUpLAorICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRh
cmdldCgpKSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6QXJjVG86CisgICAgICAgIHJl
dHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQXJjVG8oCisgICAgICAgICAgICBzZWdtZW50
VHlwZTxTaGFwZVNlZ21lbnRBcmNUbz4oc2VnbWVudFdpdGhWYWx1ZSksIHsKKyAgICAgICAgICAg
ICAgICAucmFkaXVzID0gdG9MZW5ndGhTaXplKHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMCkp
LAorICAgICAgICAgICAgICAgIC5zd2VlcCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihz
ZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50KDEpKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDdywKKyAg
ICAgICAgICAgICAgICAubGFyZ2VBcmMgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oc2Vn
bWVudFdpdGhWYWx1ZS5hcmd1bWVudCgyKSkudmFsdWVJRCgpID09IENTU1ZhbHVlTGFyZ2UsCisg
ICAgICAgICAgICAgICAgLmFuZ2xlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHNlZ21l
bnRXaXRoVmFsdWUuYXJndW1lbnQoMykpLmZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19ERUcp
LAorICAgICAgICAgICAgICAgIC50YXJnZXRQb2ludCA9IHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdp
dGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAgICAgIH0pOworCisgICAgY2FzZSBDU1NTaGFwZVNl
Z21lbnQ6OkNsb3NlUGF0aDoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVh
dGVDbG9zZVBhdGgoKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ2NDBkNzFlMjlhNTA4MzgyNTNlMGMyZWE3MDk2MTE0NDkxZDYyZDMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmgKQEAgLTAsMCAr
MSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9y
YXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKA
nEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJF
CisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQmFz
aWNTaGFwZVNlZ21lbnQ7CitjbGFzcyBDU1NTaGFwZVNlZ21lbnQ7CitjbGFzcyBDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhOworY2xhc3MgUmVuZGVyU3R5bGU7CisKK1JlZjxDU1NTaGFwZVNlZ21l
bnQ+IHRvQ1NTU2hhcGVTZWdtZW50KGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgQmFzaWNTaGFw
ZVNlZ21lbnQmKTsKK1JlZjxCYXNpY1NoYXBlU2VnbWVudD4gZnJvbUNTU1NoYXBlU2VnbWVudChj
b25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgY29uc3QgQ1NTU2hhcGVTZWdtZW50Jik7
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5j
cHAKaW5kZXggZDFiNWQzNDU1NTkxMGJkODMzZWFlOWZmYmM5NTdiYzFjZDMyNDkwYi4uOGVhNGZh
ODZlZjRiNGViYWM2ZjdkZjFmMWQ3NDNiZTQ5ZWZhYWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNp
bmNsdWRlICJDU1NGb250RmFjZVNyY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZlYXR1cmVW
YWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRQYWxldHRlVmFsdWVzT3ZlcnJpZGVDb2xvcnNWYWx1
ZS5oIgorI2luY2x1ZGUgIkNTU1NoYXBlU2VnbWVudC5oIgogI2lmIEVOQUJMRShWQVJJQVRJT05f
Rk9OVFMpCiAjaW5jbHVkZSAiQ1NTRm9udFZhcmlhdGlvblZhbHVlLmgiCiAjZW5kaWYKQEAgLTI2
NTIsNiArMjY1MywxOTYgQEAgc3RhdGljIFJlZlB0cjxDU1NCYXNpY1NoYXBlUGF0aD4gY29uc3Vt
ZUJhc2ljU2hhcGVQYXRoKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MKICAgICByZXR1cm4gc2hh
cGU7CiB9CiAKK3N0YXRpYyBSZWZQdHI8Q1NTU2hhcGVTZWdtZW50PiBjb25zdW1lU2hhcGVTZWdt
ZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQpCit7CisgICAgYXV0byBjb21tYW5kID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpOworICAgIGlmIChjb21tYW5kLmlkKCkgPT0gQ1NTVmFsdWVDbG9zZSkKKyAgICAgICAg
cmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisKKyAgICBpZiAoIWlk
ZW50TWF0Y2hlczxDU1NWYWx1ZVRvLCBDU1NWYWx1ZUJ5PihhcmdzLnBlZWsoKS5pZCgpKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGFmZmluaXR5ID0gYXJncy5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVUbyA/IENTU1NoYXBlU2VnbWVu
dDo6Q29vcmRBZmZpbml0eTo6QWJzb2x1dGUgOiBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5p
dHk6OlJlbGF0aXZlOworICAgIGF1dG8gY29uc3VtZU5leHRMZW5ndGhPclBlcmNlbnQgPSBbJl0o
KSB7CisgICAgICAgIHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQu
bW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKKyAgICB9OworCisgICAgaWYgKGNvbW1hbmQuaWQoKSA9
PSBDU1NWYWx1ZUhsaW5lIHx8IGNvbW1hbmQuaWQoKSA9PSBDU1NWYWx1ZVZsaW5lKSB7CisgICAg
ICAgIGF1dG8gdmFsdWUgPSBjb25zdW1lTmV4dExlbmd0aE9yUGVyY2VudCgpOworICAgICAgICBp
ZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJu
IGNvbW1hbmQuaWQoKSA9PSBDU1NWYWx1ZUhsaW5lCisgICAgICAgICAgICA/IENTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlTGluZVRvSG9yaXpvbnRhbChhZmZpbml0eSwgdmFsdWUucmVsZWFzZU5vbk51
bGwoKSkKKyAgICAgICAgICAgIDogQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9WZXJ0aWNh
bChhZmZpbml0eSwgdmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorCisgICAgYXV0byBj
b25zdW1lTmV4dENvb3JkaW5hdGVzID0gWyZdICgpIC0+IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4geworICAgICAgICBhdXRvIHggPSBjb25zdW1lTmV4dExlbmd0aE9yUGVyY2VudCgpOworICAg
ICAgICBpZiAoIXgpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRv
IHkgPSBjb25zdW1lTmV4dExlbmd0aE9yUGVyY2VudCgpOworICAgICAgICBpZiAoIXkpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gY3JlYXRlUHJpbWl0aXZl
VmFsdWVQYWlyKHgucmVsZWFzZU5vbk51bGwoKSwgeS5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJ
ZGVudGljYWxWYWx1ZUVuY29kaW5nOjpEb05vdENvYWxlc2NlKTsKKyAgICB9OworCisgICAgYXV0
byBhdEVuZE9mU2VnbWVudCA9IFsmXSAoKSB7CisgICAgICAgIHJldHVybiBhcmdzLmF0RW5kKCkg
fHwgYXJncy5wZWVrKCkudHlwZSgpID09IENvbW1hVG9rZW47CisgICAgfTsKKworICAgIGF1dG8g
dGFyZ2V0UG9pbnQgPSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7CisgICAgaWYgKCF0YXJnZXRQ
b2ludCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzd2l0Y2ggKGNvbW1hbmQuaWQo
KSkgeworICAgIGNhc2UgQ1NTVmFsdWVNb3ZlOgorICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdt
ZW50OjpjcmVhdGVNb3ZlVG8oYWZmaW5pdHksIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCkp
OworCisgICAgY2FzZSBDU1NWYWx1ZUxpbmU6CisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21l
bnQ6OmNyZWF0ZUxpbmVUbyhhZmZpbml0eSwgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSk7
CisKKyAgICBjYXNlIENTU1ZhbHVlQ3VydmU6IHsKKyAgICAgICAgaWYgKGFyZ3MucGVlaygpLmlk
KCkgIT0gQ1NTVmFsdWVWaWEpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAg
ICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGF1dG8gdmlhUG9p
bnQxID0gY29uc3VtZU5leHRDb29yZGluYXRlcygpOworICAgICAgICBpZiAoIXZpYVBvaW50MSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGlmIChhdEVuZE9mU2VnbWVu
dCgpKQorICAgICAgICAgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1
YWRyYXRpYyhhZmZpbml0eSwgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSwgdmlhUG9pbnQx
LnJlbGVhc2VOb25OdWxsKCkpOworCisgICAgICAgIGF1dG8gdmlhUG9pbnQyID0gY29uc3VtZU5l
eHRDb29yZGluYXRlcygpOworICAgICAgICBpZiAoIXZpYVBvaW50MikKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1
cnZlVG9DdWJpYyhhZmZpbml0eSwgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCksIHZpYVBv
aW50MS5yZWxlYXNlTm9uTnVsbCgpLCB2aWFQb2ludDIucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
fQorCisgICAgY2FzZSBDU1NWYWx1ZVNtb290aDogeworICAgICAgICBpZiAoYXJncy5wZWVrKCku
aWQoKSAhPSBDU1NWYWx1ZVZpYSkKKyAgICAgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6
OmNyZWF0ZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoYWZmaW5pdHksICB0YXJnZXRQb2ludC5yZWxl
YXNlTm9uTnVsbCgpKTsKKworICAgICAgICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCk7CisgICAgICAgIGF1dG8gdmlhUG9pbnQgPSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7Cisg
ICAgICAgIGlmICghdmlhUG9pbnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
ICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWNTbW9vdGgoYWZm
aW5pdHksICB0YXJnZXRQb2ludC5yZWxlYXNlTm9uTnVsbCgpLCB2aWFQb2ludC5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICB9CisKKyAgICBjYXNlIENTU1ZhbHVlQXJjOiB7CisgICAgICAgIGlmIChh
cmdzLnBlZWsoKS5pZCgpICE9IENTU1ZhbHVlT2YpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgICAgICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcnggPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFy
Z3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOworICAgICAgICBpZiAo
IXJ4KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiByeTsKKyAgICAgICAgaWYgKGFyZ3MucGVlaygpLnR5cGUoKSA9PSBJZGVu
dFRva2VuKQorICAgICAgICAgICAgcnkgPSByeDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICByeSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJh
bmdlOjpOb25OZWdhdGl2ZSk7CisgICAgICAgICAgICBpZiAoIXJ5KQorICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxDU1NW
YWx1ZUlEPiBzd2VlcDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBzaXplOwor
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IGFuZ2xlOworCisgICAgICAgIHdoaWxlICghYXRFbmRP
ZlNlZ21lbnQoKSkgeworICAgICAgICAgICAgYXV0byBuZXh0SWRlbnQgPSBhcmdzLnBlZWsoKS5p
ZCgpOworICAgICAgICAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZVJvdGF0ZT4obmV4dElk
ZW50KSAmJiAhYW5nbGUpIHsKKyAgICAgICAgICAgICAgICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdX
aGl0ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAgICAgICAgICBhbmdsZSA9IGNvbnN1bWVBbmdsZShh
cmdzLCBjb250ZXh0Lm1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVp
cms6OkZvcmJpZCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVDdywgQ1NTVmFsdWVDY3c+KG5l
eHRJZGVudCkgJiYgIXN3ZWVwLmhhc192YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgc3dlZXAg
PSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlkZW50TWF0Y2hl
czxDU1NWYWx1ZUxhcmdlLCBDU1NWYWx1ZVNtYWxsPihuZXh0SWRlbnQpICYmICFzaXplLmhhc192
YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgc2l6ZSA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1do
aXRlc3BhY2UoKS5pZCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghYW5nbGUpCisgICAgICAgICAgICBhbmdsZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
MCwgQ1NTVW5pdFR5cGU6OkNTU19ERUcpOworCisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21l
bnQ6OmNyZWF0ZUFyY1RvKAorICAgICAgICAgICAgYWZmaW5pdHksCisgICAgICAgICAgICB0YXJn
ZXRQb2ludC5yZWxlYXNlTm9uTnVsbCgpLAorICAgICAgICAgICAgY3JlYXRlUHJpbWl0aXZlVmFs
dWVQYWlyKHJ4LnJlbGVhc2VOb25OdWxsKCksIHJ5LnJlbGVhc2VOb25OdWxsKCksIFBhaXI6Oklk
ZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNvYWxlc2NlKSwKKyAgICAgICAgICAgIHN3ZWVwLnZhbHVl
X29yKENTU1ZhbHVlQ2N3KSwKKyAgICAgICAgICAgIHNpemUudmFsdWVfb3IoQ1NTVmFsdWVTbWFs
bCksCisgICAgICAgICAgICBhbmdsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitzdGF0aWMgUmVmUHRy
PENTU0Jhc2ljU2hhcGVTaGFwZT4gY29uc3VtZUJhc2ljU2hhcGVTaGFwZShDU1NQYXJzZXJUb2tl
blJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIFdp
bmRSdWxlIHdpbmRSdWxlID0gV2luZFJ1bGU6Ok5vblplcm87CisKKyAgICBpZiAoaWRlbnRNYXRj
aGVzPENTU1ZhbHVlRXZlbm9kZCwgQ1NTVmFsdWVOb256ZXJvPihhcmdzLnBlZWsoKS5pZCgpKSkK
KyAgICAgICAgd2luZFJ1bGUgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQo
KSA9PSBDU1NWYWx1ZUV2ZW5vZGQgPyBXaW5kUnVsZTo6RXZlbk9kZCA6IFdpbmRSdWxlOjpOb25a
ZXJvOworCisgICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgIT0gQ1NTVmFsdWVGcm9tKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KTsKKworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaW5pdGlhbFggPSBjb25zdW1lTGVu
Z3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKKyAgICBp
ZiAoIWluaXRpYWxYKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gaW5pdGlhbFkgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNv
bnRleHQubW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKKyAgICBpZiAoIWluaXRpYWxZKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVz
cGFjZShhcmdzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHNlZ21lbnRz
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworCisgICAgZm9yICg7Oykg
eworICAgICAgICBhdXRvIHNlZ21lbnQgPSBjb25zdW1lU2hhcGVTZWdtZW50KGFyZ3MsIGNvbnRl
eHQpOworICAgICAgICBpZiAoIXNlZ21lbnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgICAgICBzZWdtZW50cy0+YXBwZW5kKHNlZ21lbnQucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgICAgIGlmIChhcmdzLmF0RW5kKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBp
ZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIHNoYXBlID0gQ1NTQmFzaWNTaGFwZVNo
YXBlOjpjcmVhdGUoCisgICAgICAgIGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcigKKyAgICAgICAg
ICAgIGluaXRpYWxYLnJlbGVhc2VOb25OdWxsKCksCisgICAgICAgICAgICBpbml0aWFsWS5yZWxl
YXNlTm9uTnVsbCgpLAorICAgICAgICAgICAgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6
RG9Ob3RDb2FsZXNjZSksCisgICAgICAgIFdURk1vdmUoc2VnbWVudHMpKTsKKworICAgIHNoYXBl
LT5zZXRXaW5kUnVsZSh3aW5kUnVsZSk7CisgICAgcmV0dXJuIHNoYXBlOworfQorCiBzdGF0aWMg
dm9pZCBjb21wbGV0ZTRTaWRlcyhSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNpZGVbNF0pCiB7
CiAgICAgaWYgKHNpZGVbM10pCkBAIC0yNzU3LDYgKzI5NDgsOCBAQCBzdGF0aWMgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQmFzaWNTaGFwZShDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgYwogICAgICAgICBzaGFwZSA9IGNvbnN1bWVCYXNpY1NoYXBlSW5zZXQoYXJncywgY29u
dGV4dCk7CiAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVQYXRoKQogICAgICAgICBzaGFwZSA9
IGNvbnN1bWVCYXNpY1NoYXBlUGF0aChhcmdzKTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1
ZVNoYXBlKQorICAgICAgICBzaGFwZSA9IGNvbnN1bWVCYXNpY1NoYXBlU2hhcGUoYXJncywgY29u
dGV4dCk7CiAgICAgaWYgKCFzaGFwZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmFu
Z2UgPSByYW5nZUNvcHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0Jhc2ljU2hhcGVTZWdtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTFmYjBlYTljZmQ5MTNjNTVkZTQ0
NDY0OThmNTg4YTFkODU2NDJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmNwcApAQCAtMCwwICsxLDI5MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCYXNpY1NoYXBlU2VnbWVudC5o
IgorCisjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiUGF0aC5oIgorI2lu
Y2x1ZGUgIlNWR1BhdGhCdWlsZGVyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlci5oIgorI2lu
Y2x1ZGUgIlNWR1BhdGhTZWcuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnSW1wbC5oIgorI2luY2x1
ZGUgIlNWR1BhdGhTb3VyY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBEZWZpbml0aW9uPgorY2xhc3MgQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZSA6IHB1Ymxp
YyBCYXNpY1NoYXBlU2VnbWVudCB7CitwdWJsaWM6CisgICAgY29uc3QgdHlwZW5hbWUgRGVmaW5p
dGlvbjo6VmFsdWUmIHZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh0eXBlKCkg
PT0gRGVmaW5pdGlvbjo6QWJzU2VnVHlwZSB8fCB0eXBlKCkgPT0gRGVmaW5pdGlvbjo6UmVsU2Vn
VHlwZSk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlOworICAgIH0KKworICAgIGJvb2wgZXF1YWxz
KGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiB0eXBlKCkgPT0gb3RoZXIudHlwZSgpCisgICAgICAgICAgICAmJiB2YWx1ZSgpID09IHN0
YXRpY19jYXN0PGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50VmFsdWU8RGVmaW5pdGlvbj4mPihvdGhl
cikudmFsdWUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUmVmPEJhc2ljU2hhcGVTZWdtZW50VmFs
dWU+IGNyZWF0ZShCYXNpY1NoYXBlU2VnbWVudDo6VHlwZSB0eXBlLCB0eXBlbmFtZSBEZWZpbml0
aW9uOjpWYWx1ZSYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHR5cGUgPT0gRGVmaW5p
dGlvbjo6QWJzU2VnVHlwZSB8fCB0eXBlID09IERlZmluaXRpb246OlJlbFNlZ1R5cGUpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXNpY1NoYXBlU2VnbWVudFZhbHVlPERlZmluaXRp
b24+KHR5cGUsIFdURk1vdmUodmFsdWUpKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgQmFz
aWNTaGFwZVNlZ21lbnRWYWx1ZShCYXNpY1NoYXBlU2VnbWVudDo6VHlwZSB0eXBlLCB0eXBlbmFt
ZSBEZWZpbml0aW9uOjpWYWx1ZSYmIHZhbHVlKQorICAgICAgICA6IEJhc2ljU2hhcGVTZWdtZW50
KHR5cGUpCisgICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkgeyB9CisKK3ByaXZhdGU6
CisgICAgdHlwZW5hbWUgRGVmaW5pdGlvbjo6VmFsdWUgbV92YWx1ZTsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitzdGF0aWMgY29uc3QgdHlwZW5hbWUgVDo6VmFsdWUmIGV4dHJhY3RWYWx1
ZShjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYgc2VnKQoreworICAgIEFTU0VSVChzZWcudHlwZSgp
ID09IFQ6OkFic1NlZ1R5cGUgfHwgc2VnLnR5cGUoKSA9PSBUOjpSZWxTZWdUeXBlKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxUPiY+KHNlZyku
dmFsdWUoKTsKK30KKworYm9vbCBCYXNpY1NoYXBlU2VnbWVudDo6ZXF1YWxzKGNvbnN0IEJhc2lj
U2hhcGVTZWdtZW50JiBvdGhlcikgY29uc3QKK3sKKyAgICBhdXRvIHR5cGUgPSB0aGlzLT50eXBl
KCk7CisgICAgaWYgKHR5cGUgIT0gb3RoZXIudHlwZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyNkZWZpbmUgQ09NUEFSRV9TSEFQRV9TRUdNRU5UX1ZBTFVFKFR5cGUpIFwKKyAgICBjYXNl
IFNoYXBlU2VnbWVudCMjVHlwZTo6QWJzU2VnVHlwZTogXAorICAgIGNhc2UgU2hhcGVTZWdtZW50
IyNUeXBlOjpSZWxTZWdUeXBlOiBcCisgICAgICAgIHJldHVybiBleHRyYWN0VmFsdWU8U2hhcGVT
ZWdtZW50IyNUeXBlPigqdGhpcykgPT0gZXh0cmFjdFZhbHVlPFNoYXBlU2VnbWVudCMjVHlwZT4o
b3RoZXIpOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRo
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5U
X1RZUEVfV0lUSF9WQUxVRShDT01QQVJFX1NIQVBFX1NFR01FTlRfVkFMVUUpCisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNkZWZpbmUgSU1QTEVNRU5UX1NIQVBFX1NFR01FTlRf
VkFMVUUoVFlQRSkgXAorUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBCYXNpY1NoYXBlU2VnbWVudDo6
Y3JlYXRlIyNUWVBFKEJhc2ljU2hhcGVTZWdtZW50OjpUeXBlIHR5cGUsIHR5cGVuYW1lIFNoYXBl
U2VnbWVudCMjVFlQRTo6VmFsdWUmJiB2YWx1ZSkgXAoreyBcCisgICAgcmV0dXJuIEJhc2ljU2hh
cGVTZWdtZW50VmFsdWU8U2hhcGVTZWdtZW50IyNUWVBFPjo6Y3JlYXRlKHR5cGUsIFdURk1vdmUo
dmFsdWUpKTsgXAorfSBcCitjb25zdCB0eXBlbmFtZSBTaGFwZVNlZ21lbnQjI1RZUEU6OlZhbHVl
JiBCYXNpY1NoYXBlU2VnbWVudDo6YXMjI1RZUEUoKSBjb25zdCBcCit7IFwKKyAgICByZXR1cm4g
ZXh0cmFjdFZhbHVlPFNoYXBlU2VnbWVudCMjVFlQRT4oKnRoaXMpOyBcCit9CisKK0ZPUl9FQUNI
X1NIQVBFX1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKElNUExFTUVOVF9TSEFQRV9TRUdNRU5UX1ZB
TFVFKQorCitDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1cnZlVG9DdWJp
Y1NoYXBlU2VnVmFsdWUmIGZyb20sIGNvbnN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUmIHRv
LCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHsKKyAgICAg
ICAgYmxlbmQoZnJvbS5wb2ludDEsIHRvLnBvaW50MSwgY29udGV4dCksCisgICAgICAgIGJsZW5k
KGZyb20ucG9pbnQyLCB0by5wb2ludDIsIGNvbnRleHQpLAorICAgICAgICBibGVuZChmcm9tLnRh
cmdldFBvaW50LCB0by50YXJnZXRQb2ludCwgY29udGV4dCksCisgICAgfTsKK30KKworQ3VydmVU
b0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBDdXJ2ZVRvQ3ViaWNTbW9vdGhT
aGFwZVNlZ1ZhbHVlJiBmcm9tLCBjb25zdCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVl
JiB0bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQoreworICAgIHJldHVybiB7Cisg
ICAgICAgIGJsZW5kKGZyb20ucG9pbnQyLCB0by5wb2ludDIsIGNvbnRleHQpLAorICAgICAgICBi
bGVuZChmcm9tLnRhcmdldFBvaW50LCB0by50YXJnZXRQb2ludCwgY29udGV4dCksCisgICAgfTsK
K30KKworQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb1F1
YWRyYXRpY1NoYXBlU2VnVmFsdWUmIGZyb20sIGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNl
Z1ZhbHVlJiB0bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQoreworICAgIHJldHVy
biB7CisgICAgICAgIGJsZW5kKGZyb20ucG9pbnQxLCB0by5wb2ludDEsIGNvbnRleHQpLAorICAg
ICAgICBibGVuZChmcm9tLnRhcmdldFBvaW50LCB0by50YXJnZXRQb2ludCwgY29udGV4dCksCisg
ICAgfTsKK30KKworQXJjVG9TaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEFyY1RvU2hhcGVTZWdW
YWx1ZSYgZnJvbSwgY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiB0bywgY29uc3QgQmxlbmRpbmdD
b250ZXh0JiBjb250ZXh0KQoreworICAgIHJldHVybiB7CisgICAgICAgIGJsZW5kKGZyb20ucmFk
aXVzLCB0by5yYWRpdXMsIGNvbnRleHQpLAorICAgICAgICBibGVuZChmcm9tLmFuZ2xlLCB0by5h
bmdsZSwgY29udGV4dCksCisgICAgICAgIGNvbnRleHQucHJvZ3Jlc3MgPCAwLjVmID8gZnJvbS5z
d2VlcCA6IHRvLnN3ZWVwLAorICAgICAgICBjb250ZXh0LnByb2dyZXNzIDwgMC41ZiA/IGZyb20u
bGFyZ2VBcmMgOiB0by5sYXJnZUFyYywKKyAgICAgICAgYmxlbmQoZnJvbS50YXJnZXRQb2ludCwg
dG8udGFyZ2V0UG9pbnQsIGNvbnRleHQpCisgICAgfTsKK30KKworUmVmPEJhc2ljU2hhcGVTZWdt
ZW50PiBCYXNpY1NoYXBlU2VnbWVudDo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIGZy
b20sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBhdXRvIHR5
cGUgPSB0aGlzLT50eXBlKCk7CisgICAgQVNTRVJUKHR5cGUgPT0gZnJvbS50eXBlKCkpOworCisg
ICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgorICAgICAgICBy
ZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworCisjZGVmaW5lIEJM
RU5EX1NFR01FTlRfVFlQRShUeXBlKSBcCisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6OkFi
c1NlZ1R5cGU6IFwKKyAgICBjYXNlIFNoYXBlU2VnbWVudCMjVHlwZTo6UmVsU2VnVHlwZTogXAor
ICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxTaGFwZVNlZ21lbnQjI1R5cGU+
OjpjcmVhdGUodHlwZSwgV2ViQ29yZTo6YmxlbmQoZXh0cmFjdFZhbHVlPFNoYXBlU2VnbWVudCMj
VHlwZT4oZnJvbSksIGV4dHJhY3RWYWx1ZTxTaGFwZVNlZ21lbnQjI1R5cGU+KCp0aGlzKSwgY29u
dGV4dCkpOworCisgICAgICAgIEZPUl9FQUNIX1NIQVBFX1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVF
KEJMRU5EX1NFR01FTlRfVFlQRSkKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBh
dGgoKTsKKyAgICB9Cit9CitjbGFzcyBTaGFwZVNWR1BhdGhTb3VyY2UgZmluYWwgOiBwdWJsaWMg
U1ZHUGF0aFNvdXJjZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2hhcGVTVkdQYXRoU291cmNl
KGNvbnN0IExlbmd0aFBvaW50JiBzdGFydCwgY29uc3QgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2Vn
bWVudD4+JiBzZWdtZW50cywgY29uc3QgRmxvYXRTaXplJiBzaXplKQorICAgICAgICA6IG1fc3Rh
cnQoc3RhcnQpCisgICAgICAgICwgbV9zZWdtZW50cyhzZWdtZW50cykKKyAgICAgICAgLCBtX3Np
emUoc2l6ZSkKKyAgICAgICAgLCBtX2l0ZW1FbmQoc2VnbWVudHMuc2l6ZSgpKQorICAgICAgICB7
CisKKyAgICAgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgaGFzTW9yZURhdGEoKSBjb25zdCBm
aW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXRlbUN1cnJlbnQgPCBtX2l0ZW1FbmQ7Cisg
ICAgfQorCisgICAgYm9vbCBtb3ZlVG9OZXh0VG9rZW4oKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CisKKyAgICBTVkdQYXRoU2VnVHlwZSBuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSkgZmluYWwK
KyAgICB7CisgICAgICAgIGF1dG8gdHlwZSA9IG1fc2VnbWVudHMuYXQobV9pdGVtQ3VycmVudCkt
PnR5cGUoKTsKKyAgICAgICAgKyttX2l0ZW1DdXJyZW50OworICAgICAgICByZXR1cm4gdHlwZTsK
KyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTZWdUeXBlPiBwYXJzZVNWR1NlZ21l
bnRUeXBlKCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBQYXRoU2VnTW92ZVRvQWJzOwor
ICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TW92ZVRvU2VnbWVudD4g
cGFyc2VNb3ZlVG9TZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9pdGVtQ3Vy
cmVudCkKKyAgICAgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50IHsg
ZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KG1fc3RhcnQsIG1fc2l6ZSkgfTsKKworICAgICAgICBy
ZXR1cm4gU1ZHUGF0aFNvdXJjZTo6TW92ZVRvU2VnbWVudCB7IGZsb2F0UG9pbnRGb3JMZW5ndGhQ
b2ludCh2YWx1ZTxTaGFwZVNlZ21lbnRNb3ZlVG8+KCksIG1fc2l6ZSkgfTsKKyAgICB9CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb1NlZ21lbnQ+IHBhcnNlTGluZVRv
U2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6TGlu
ZVRvU2VnbWVudCB7IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZTxTaGFwZVNlZ21lbnRM
aW5lVG8+KCksIG1fc2l6ZSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhT
b3VyY2U6OkxpbmVUb0hvcml6b250YWxTZWdtZW50PiBwYXJzZUxpbmVUb0hvcml6b250YWxTZWdt
ZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpMaW5lVG9I
b3Jpem9udGFsU2VnbWVudCB7IGZsb2F0VmFsdWVGb3JMZW5ndGgodmFsdWU8U2hhcGVTZWdtZW50
TGluZVRvSG9yaXpvbnRhbD4oKSwgbV9zaXplLndpZHRoKCkpIH07CisgICAgfQorCisgICAgc3Rk
OjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IHBhcnNlTGlu
ZVRvVmVydGljYWxTZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdQYXRo
U291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21lbnQgeyBmbG9hdFZhbHVlRm9yTGVuZ3RoKHZhbHVl
PFNoYXBlU2VnbWVudExpbmVUb1ZlcnRpY2FsPigpLCBtX3NpemUuaGVpZ2h0KCkpIH07CisgICAg
fQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTZWdtZW50
PiBwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgY29uc3Qg
YXV0byYgdmFsdWUgPSB0aGlzLT52YWx1ZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWM+KCk7Cisg
ICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTZWdtZW50IHsgICAgICAg
IAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnBvaW50MSwgbV9z
aXplKSwKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS5wb2ludDIs
IG1fc2l6ZSksCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUudGFy
Z2V0UG9pbnQsIG1fc2l6ZSkKKyAgICAgICAgfTsKKyAgICB9CisgICAgc3RkOjpvcHRpb25hbDxT
VkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50PiBwYXJzZUN1cnZlVG9DdWJp
Y1Ntb290aFNlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byYgdmFsdWUg
PSB0aGlzLT52YWx1ZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWNTbW9vdGg+KCk7CisgICAgICAg
IHJldHVybiBTVkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50IHsgICAgICAg
IAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnBvaW50MiwgbV9z
aXplKSwKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS50YXJnZXRQ
b2ludCwgbV9zaXplKQorICAgICAgICB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZH
UGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRp
Y1NlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byYgdmFsdWUgPSB0aGlz
LT52YWx1ZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljPigpOworICAgICAgICByZXR1cm4g
U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQgeworICAgICAgICAgICAgZmxv
YXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnBvaW50MSwgbV9zaXplKSwKKyAgICAgICAgICAg
IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXplKQorICAg
ICAgICB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVU
b1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21l
bnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9R
dWFkcmF0aWNTbW9vdGhTZWdtZW50IHsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlPFNo
YXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWNTbW9vdGg+KCksIG1fc2l6ZSkgfTsKKyAgICB9CisK
KyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkFyY1RvU2VnbWVudD4gcGFyc2VBcmNU
b1NlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byYgdmFsdWUgPSB0aGlz
LT52YWx1ZTxTaGFwZVNlZ21lbnRBcmNUbz4oKTsKKyAgICAgICAgYXV0byByYWRpdXMgPSBmbG9h
dFNpemVGb3JMZW5ndGhTaXplKHZhbHVlLnJhZGl1cywgbV9zaXplKTsKKyAgICAgICAgcmV0dXJu
IFNWR1BhdGhTb3VyY2U6OkFyY1RvU2VnbWVudCB7CisgICAgICAgICAgICAucnggPSByYWRpdXMu
d2lkdGgoKSwKKyAgICAgICAgICAgIC5yeSA9IHJhZGl1cy5oZWlnaHQoKSwKKyAgICAgICAgICAg
IC5hbmdsZSA9IHZhbHVlLmFuZ2xlLAorICAgICAgICAgICAgLmxhcmdlQXJjID0gdmFsdWUubGFy
Z2VBcmMsCisgICAgICAgICAgICAuc3dlZXAgPSB2YWx1ZS5zd2VlcCwKKyAgICAgICAgICAgIGZs
b2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXplKQorICAgICAg
ICB9OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgY29uc3QgdHlwZW5h
bWUgVDo6VmFsdWUmIHZhbHVlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2l0ZW1DdXJyZW50
IDw9IG1fc2VnbWVudHMuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RWYWx1ZTxUPiht
X3NlZ21lbnRzLmF0KG1faXRlbUN1cnJlbnQgLSAxKS5nZXQoKSk7CisgICAgfQorCisgICAgY29u
c3QgTGVuZ3RoUG9pbnQmIG1fc3RhcnQ7CisgICAgY29uc3QgVmVjdG9yPFJlZjxCYXNpY1NoYXBl
U2VnbWVudD4+JiBtX3NlZ21lbnRzOworICAgIEZsb2F0U2l6ZSBtX3NpemU7CisgICAgc2l6ZV90
IG1faXRlbUVuZDsKKyAgICBzaXplX3QgbV9pdGVtQ3VycmVudCA9IDA7Cit9OworCitQYXRoIEJh
c2ljU2hhcGVTZWdtZW50Ojp0b1BhdGgoY29uc3QgTGVuZ3RoUG9pbnQmIHN0YXJ0LCBjb25zdCBW
ZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIHNlZ21lbnRzLCBjb25zdCBGbG9hdFNpemUm
IHNpemUpCit7CisgICAgU2hhcGVTVkdQYXRoU291cmNlIHNvdXJjZShzdGFydCwgc2VnbWVudHMs
IHNpemUpOworICAgIFBhdGggcGF0aDsKKyAgICBTVkdQYXRoQnVpbGRlciBidWlsZGVyKHBhdGgp
OworICAgIFNWR1BhdGhQYXJzZXI6OnBhcnNlKHNvdXJjZSwgYnVpbGRlcik7CisgICAgcmV0dXJu
IHBhdGg7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9CYXNpY1NoYXBlU2VnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jh
c2ljU2hhcGVTZWdtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDVkMThjZTg1MDZjZTYyZGQzMjY1NzU0ZGUw
NzQ2YWQwYmMxOTQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5oCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIE5vYW0gUm9zZW50aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJMZW5ndGguaCIKKyNpbmNsdWRlICJMZW5ndGhQb2lu
dC5oIgorI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnLmgiCisj
aW5jbHVkZSAiU1ZHUGF0aFNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVj
dCBCbGVuZGluZ0NvbnRleHQ7CitjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBQYXRoOworCitzdHJ1
Y3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSB7CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQxOwor
ICAgIExlbmd0aFBvaW50IHBvaW50MjsKKyAgICBMZW5ndGhQb2ludCB0YXJnZXRQb2ludDsKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gcG9pbnQxID09IG90aGVyLnBvaW50MSAmJiBw
b2ludDIgPT0gb3RoZXIucG9pbnQyICYmIHRhcmdldFBvaW50ID09IG90aGVyLnRhcmdldFBvaW50
OworICAgIH0KK307CisKK3N0cnVjdCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlIHsK
KyAgICBMZW5ndGhQb2ludCBwb2ludDI7CisgICAgTGVuZ3RoUG9pbnQgdGFyZ2V0UG9pbnQ7Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUm
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHBvaW50MiA9PSBvdGhlci5wb2lu
dDIgJiYgdGFyZ2V0UG9pbnQgPT0gb3RoZXIudGFyZ2V0UG9pbnQ7CisgICAgfQorfTsKKworc3Ry
dWN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlIHsKKyAgICBMZW5ndGhQb2ludCBwb2lu
dDE7CisgICAgTGVuZ3RoUG9pbnQgdGFyZ2V0UG9pbnQ7CisKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIHBvaW50MSA9PSBvdGhlci5wb2ludDEgJiYgdGFyZ2V0UG9pbnQgPT0g
b3RoZXIudGFyZ2V0UG9pbnQ7CisgICAgfQorfTsKKworCitzdHJ1Y3QgQXJjVG9TaGFwZVNlZ1Zh
bHVlIHsKKyAgICBMZW5ndGhTaXplIHJhZGl1czsKKyAgICBmbG9hdCBhbmdsZSA9IDA7CisgICAg
Ym9vbCBzd2VlcCA9IGZhbHNlOworICAgIGJvb2wgbGFyZ2VBcmMgPSBmYWxzZTsKKyAgICBMZW5n
dGhQb2ludCB0YXJnZXRQb2ludDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBcmNUb1No
YXBlU2VnVmFsdWUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJhZGl1cyA9
PSBvdGhlci5yYWRpdXMgJiYgYW5nbGUgPT0gb3RoZXIuYW5nbGUgJiYgc3dlZXAgPT0gb3RoZXIu
c3dlZXAgJiYgbGFyZ2VBcmMgPT0gb3RoZXIubGFyZ2VBcmMgJiYgdGFyZ2V0UG9pbnQgPT0gb3Ro
ZXIudGFyZ2V0UG9pbnQ7CisgICAgfQorfTsKKworCitDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVl
IGJsZW5kKGNvbnN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBDdXJ2ZVRvQ3Vi
aWNTaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQmxlbmRpbmdDb250ZXh0Jik7CitDdXJ2ZVRvQ3ViaWNT
bW9vdGhTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2Vn
VmFsdWUmLCBjb25zdCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQmxl
bmRpbmdDb250ZXh0Jik7CitDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSBibGVuZChjb25z
dCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNT
aGFwZVNlZ1ZhbHVlJiwgY29uc3QgQmxlbmRpbmdDb250ZXh0Jik7CitBcmNUb1NoYXBlU2VnVmFs
dWUgYmxlbmQoY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQXJjVG9TaGFwZVNlZ1Zh
bHVlJiwgY29uc3QgQmxlbmRpbmdDb250ZXh0Jik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVl
VHlwZSwgU1ZHUGF0aFNlZ1R5cGUgQWJzVHlwZSwgU1ZHUGF0aFNlZ1R5cGUgUmVsVHlwZT4KK3N0
cnVjdCBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbiB7CisgICAgdHlwZWRlZiBWYWx1ZVR5cGUg
VmFsdWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFic1NlZ1R5cGUgPSBBYnNUeXBlOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBSZWxTZWdUeXBlID0gUmVsVHlwZTsKK307CisKK3N0
cnVjdCBTaGFwZVNlZ21lbnRNb3ZlVG8gOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRp
b248TGVuZ3RoUG9pbnQsIFBhdGhTZWdNb3ZlVG9BYnMsIFBhdGhTZWdNb3ZlVG9SZWw+IHsgfTsK
K3N0cnVjdCBTaGFwZVNlZ21lbnRMaW5lVG8gOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmlu
aXRpb248TGVuZ3RoUG9pbnQsIFBhdGhTZWdMaW5lVG9BYnMsIFBhdGhTZWdMaW5lVG9SZWw+IHsg
fTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRMaW5lVG9Ib3Jpem9udGFsIDogcHVibGljIFNoYXBlU2Vn
bWVudFR5cGVEZWZpbml0aW9uPExlbmd0aCwgUGF0aFNlZ0xpbmVUb0hvcml6b250YWxBYnMsIFBh
dGhTZWdMaW5lVG9Ib3Jpem9udGFsUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50TGluZVRv
VmVydGljYWwgOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248TGVuZ3RoLCBQYXRo
U2VnTGluZVRvVmVydGljYWxBYnMsIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbFJlbD4geyB9Oworc3Ry
dWN0IFNoYXBlU2VnbWVudEN1cnZlVG9DdWJpYyA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVm
aW5pdGlvbjxDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlLCBQYXRoU2VnQ3VydmVUb0N1YmljQWJz
LCBQYXRoU2VnQ3VydmVUb0N1YmljUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50Q3VydmVU
b1F1YWRyYXRpYyA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxDdXJ2ZVRvUXVh
ZHJhdGljU2hhcGVTZWdWYWx1ZSwgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNBYnMsIFBhdGhTZWdD
dXJ2ZVRvUXVhZHJhdGljUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50Q3VydmVUb0N1Ymlj
U21vb3RoIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPEN1cnZlVG9DdWJpY1Nt
b290aFNoYXBlU2VnVmFsdWUsIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhBYnMsIFBhdGhTZWdD
dXJ2ZVRvQ3ViaWNTbW9vdGhSZWw+IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVh
ZHJhdGljU21vb3RoIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPExlbmd0aFBv
aW50LCBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aEFicywgUGF0aFNlZ0N1cnZlVG9RdWFk
cmF0aWNTbW9vdGhSZWw+IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRBcmNUbyA6IHB1YmxpYyBT
aGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxBcmNUb1NoYXBlU2VnVmFsdWUsIFBhdGhTZWdBcmNB
YnMsIFBhdGhTZWdBcmNSZWw+IHsgfTsKKworI2RlZmluZSBGT1JfRUFDSF9TSEFQRV9TRUdNRU5U
X1RZUEVfV0lUSF9WQUxVRShNYWNybykgXAorICAgIE1hY3JvKE1vdmVUbykgXAorICAgIE1hY3Jv
KExpbmVUbykgXAorICAgIE1hY3JvKExpbmVUb0hvcml6b250YWwpIFwKKyAgICBNYWNybyhMaW5l
VG9WZXJ0aWNhbCkgXAorICAgIE1hY3JvKEN1cnZlVG9DdWJpYykgXAorICAgIE1hY3JvKEN1cnZl
VG9RdWFkcmF0aWMpIFwKKyAgICBNYWNybyhDdXJ2ZVRvQ3ViaWNTbW9vdGgpIFwKKyAgICBNYWNy
byhDdXJ2ZVRvUXVhZHJhdGljU21vb3RoKSBcCisgICAgTWFjcm8oQXJjVG8pCisKK2NsYXNzIEJh
c2ljU2hhcGVTZWdtZW50IDogcHVibGljIFJlZkNvdW50ZWQ8QmFzaWNTaGFwZVNlZ21lbnQ+IHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIFNWR1BhdGhTZWdUeXBlIFR5cGU7CisgICAgfkJhc2ljU2hh
cGVTZWdtZW50KCkgPSBkZWZhdWx0OworCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CisKKyAgICBSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGJsZW5kKGNvbnN0IEJhc2lj
U2hhcGVTZWdtZW50JiBmcm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKSBjb25zdDsKKyAgICBi
b29sIGVxdWFscyhjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYpIGNvbnN0OworCisgICAgc3RhdGlj
IFBhdGggdG9QYXRoKGNvbnN0IExlbmd0aFBvaW50JiBzdGFydCwgY29uc3QgVmVjdG9yPFJlZjxC
YXNpY1NoYXBlU2VnbWVudD4+JiwgY29uc3QgRmxvYXRTaXplJik7CisKKyNkZWZpbmUgREVGSU5F
X1NIQVBFX1NFR01FTlRfVFlQRShUKSBcCisgICAgc3RhdGljIFJlZjxCYXNpY1NoYXBlU2VnbWVu
dD4gY3JlYXRlIyNUKFR5cGUsIHR5cGVuYW1lIFNoYXBlU2VnbWVudCMjVDo6VmFsdWUmJik7IFwK
KyAgICBjb25zdCB0eXBlbmFtZSBTaGFwZVNlZ21lbnQjI1Q6OlZhbHVlJiBhcyMjVCgpIGNvbnN0
OworCisgICAgRk9SX0VBQ0hfU0hBUEVfU0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoREVGSU5FX1NI
QVBFX1NFR01FTlRfVFlQRSkKKworICAgIHN0YXRpYyBSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGNy
ZWF0ZUNsb3NlUGF0aCgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXNp
Y1NoYXBlU2VnbWVudChQYXRoU2VnQ2xvc2VQYXRoKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgQmFzaWNTaGFwZVNlZ21lbnQoVHlwZSB0KQorICAgICAgICA6IG1fdHlwZSh0KSB7IH0KKwor
cHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKK307CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggMDg2YTZmNmE2M2EyNWU1MDIz
YWU5NWJmYTg0ZjRmYTdkNGZmYzI2Mi4uNjczZmVhNmM0ZDI2MzAwYTY4N2Y5ZDVkYTNiODYzM2U4
NWUwMDFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2lj
U2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuY3BwCkBAIC0xMjEsNiArMTIxLDQ0IEBAIHN0cnVjdCBUcmFuc2Zvcm1lZEJ5dGVTdHJlYW1Q
YXRoUG9saWN5IDogVGlueUxSVUNhY2hlUG9saWN5PFNWR1BhdGhUcmFuc2Zvcm1lZEJ5CiAgICAg
c3RhdGljIFBhdGggY3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgU1ZHUGF0aFRyYW5zZm9ybWVkQnl0
ZVN0cmVhbSYgc3RyZWFtKSB7IHJldHVybiBzdHJlYW0ucGF0aCgpOyB9CiB9OwogCitzdHJ1Y3Qg
U2hhcGVTZWdtZW50c1dpdGhCb3ggeworICAgIExlbmd0aFBvaW50IHN0YXJ0OworICAgIFZlY3Rv
cjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiBzZWdtZW50czsKKyAgICBGbG9hdFJlY3QgYm94Owor
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBlU2VnbWVudHNXaXRoQm94JiBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChib3ggIT0gb3RoZXIuYm94IHx8IHNlZ21lbnRzLnNp
emUoKSA9PSBvdGhlci5zZWdtZW50cy5zaXplKCkgfHwgc3RhcnQgIT0gb3RoZXIuc3RhcnQpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzZWdtZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFzZWdtZW50cy5hdChp
KS0+ZXF1YWxzKG90aGVyLnNlZ21lbnRzLmF0KGkpLmdldCgpKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcGVTZWdtZW50c1dpdGhCb3gmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KK307
CisKK3N0cnVjdCBTaGFwZVNlZ21lbnRzUGF0aFBvbGljeSA6IFRpbnlMUlVDYWNoZVBvbGljeTxT
aGFwZVNlZ21lbnRzV2l0aEJveCwgUGF0aD4geworICAgIHN0YXRpYyBib29sIGlzS2V5TnVsbChj
b25zdCBTaGFwZVNlZ21lbnRzV2l0aEJveCYgc2VnbWVudHNXaXRoQm94KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHNlZ21lbnRzV2l0aEJveC5zZWdtZW50cy5pc0VtcHR5KCk7CisgICAgfQorCisg
ICAgc3RhdGljIFBhdGggY3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgU2hhcGVTZWdtZW50c1dpdGhC
b3gmIHNlZ21lbnRzV2l0aEJveCkKKyAgICB7CisgICAgICAgIGF1dG8gcGF0aCA9IEJhc2ljU2hh
cGVTZWdtZW50Ojp0b1BhdGgoc2VnbWVudHNXaXRoQm94LnN0YXJ0LCBzZWdtZW50c1dpdGhCb3gu
c2VnbWVudHMsIHNlZ21lbnRzV2l0aEJveC5ib3guc2l6ZSgpKTsKKyAgICAgICAgcGF0aC50cmFu
c2xhdGUodG9GbG9hdFNpemUoc2VnbWVudHNXaXRoQm94LmJveC5sb2NhdGlvbigpKSk7CisgICAg
ICAgIHJldHVybiBwYXRoOworICAgIH0KK307CisKIHN0YXRpYyBjb25zdCBQYXRoJiBjYWNoZWRF
bGxpcHNlUGF0aChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFRpbnlMUlVDYWNoZTxGbG9hdFJlY3QsIFBhdGgsIDQsIEVsbGlwc2VQYXRoUG9saWN5
Pj4gY2FjaGU7CkBAIC0xNDUsNiArMTgzLDEyIEBAIHN0YXRpYyBjb25zdCBQYXRoJiBjYWNoZWRU
cmFuc2Zvcm1lZEJ5dGVTdHJlYW1QYXRoKGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJiBzdHJlCiAg
ICAgcmV0dXJuIGNhY2hlLmdldCgpLmdldChTVkdQYXRoVHJhbnNmb3JtZWRCeXRlU3RyZWFtIHsg
c3RyZWFtLCB6b29tLCBvZmZzZXQgfSk7CiB9CiAKK3N0YXRpYyBjb25zdCBQYXRoJiBjYWNoZWRT
aGFwZVNlZ21lbnRzUGF0aChjb25zdCBMZW5ndGhQb2ludCYgZnJvbSwgY29uc3QgVmVjdG9yPFJl
ZjxCYXNpY1NoYXBlU2VnbWVudD4+JiBzZWdtZW50cywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8U2hhcGVTZWdtZW50c1dp
dGhCb3gsIFBhdGgsIDQsIFNoYXBlU2VnbWVudHNQYXRoUG9saWN5Pj4gY2FjaGU7CisgICAgcmV0
dXJuIGNhY2hlLmdldCgpLmdldChTaGFwZVNlZ21lbnRzV2l0aEJveCB7IGZyb20sIHNlZ21lbnRz
LCByZWN0IH0pOworfQorCiBib29sIEJhc2ljU2hhcGVDaXJjbGU6Om9wZXJhdG9yPT0oY29uc3Qg
QmFzaWNTaGFwZSYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBvdGhlci50eXBl
KCkpCkBAIC00NjMsNiArNTA3LDc4IEBAIHZvaWQgQmFzaWNTaGFwZUluc2V0OjpkdW1wKFRleHRT
dHJlYW0mIHRzKSBjb25zdAogICAgIHRzLmR1bXBQcm9wZXJ0eSgiYm90dG9tLWxlZnQtcmFkaXVz
IiwgYm90dG9tTGVmdFJhZGl1cygpKTsKIH0KIAorCitCYXNpY1NoYXBlU2hhcGU6OkJhc2ljU2hh
cGVTaGFwZShjb25zdCBMZW5ndGhQb2ludCYgZnJvbSwgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2Vn
bWVudD4+JiYgc2VnbWVudHMpCisgICAgOiBtX3NlZ21lbnRzKG1ha2VVbmlxdWU8VmVjdG9yPFJl
ZjxCYXNpY1NoYXBlU2VnbWVudD4+PihXVEZNb3ZlKHNlZ21lbnRzKSkpCisgICAgLCBtX2Zyb20o
ZnJvbSkKK3sKK30KKworY29uc3QgUGF0aCYgQmFzaWNTaGFwZVNoYXBlOjpwYXRoKGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3gpCit7CisgICAgcmV0dXJuIGNhY2hlZFNoYXBlU2VnbWVudHNQ
YXRoKG1fZnJvbSwgKm1fc2VnbWVudHMsIGJvdW5kaW5nQm94KTsKK30KKworYm9vbCBCYXNpY1No
YXBlU2hhcGU6Om9wZXJhdG9yPT0oY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIpIGNvbnN0Cit7Cisg
ICAgaWYgKHR5cGUoKSAhPSBvdGhlci50eXBlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGNvbnN0IEJhc2ljU2hhcGVTaGFwZSYgb3RoZXJTaGFwZSA9IGRvd25jYXN0PEJhc2ljU2hh
cGVTaGFwZT4ob3RoZXIpOworICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAgICBpZiAo
d2luZFJ1bGUoKSAhPSBvdGhlclNoYXBlLndpbmRSdWxlKCkgfHwgc2l6ZSA9PSBvdGhlclNoYXBl
LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYgKCFhdChpKS5lcXVhbHMob3RoZXJTaGFwZS5h
dChpKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgQmFzaWNTaGFwZVNoYXBlOjpjYW5CbGVuZChjb25zdCBCYXNpY1NoYXBl
JiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOworICAgIGF1
dG8mIG90aGVyU2hhcGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+KG90aGVyKTsKKyAgICBp
ZiAod2luZFJ1bGUoKSAhPSBvdGhlclNoYXBlLndpbmRSdWxlKCkgfHwgc2l6ZSAhPSBvdGhlclNo
YXBlLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYgKGF0KGkpLnR5cGUoKSAhPSBvdGhlclNo
YXBlLmF0KGkpLnR5cGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVTaGFwZTo6Ymxl
bmQoY29uc3QgQmFzaWNTaGFwZSYgZnJvbSwgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0
KSBjb25zdAoreworICAgIEFTU0VSVCh0eXBlKCkgPT0gZnJvbS50eXBlKCkpOworICAgIGF1dG8g
c2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAgICBhdXRvJiBmcm9tU2hhcGUgPSBkb3duY2FzdDxCYXNp
Y1NoYXBlU2hhcGU+KGZyb20pOworICAgIEFTU0VSVChzaXplID09IGZyb21TaGFwZS5zaXplKCkp
OworCisgICAgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+IHJlc3VsdDsKKyAgICByZXN1
bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKQorICAgICAgICByZXN1bHQuYXBwZW5kKGF0KGkpLmJsZW5kKGZyb21T
aGFwZS5hdChpKSwgY29udGV4dCkpOworCisgICAgYXV0byBuZXdTaGFwZSA9IEJhc2ljU2hhcGVT
aGFwZTo6Y3JlYXRlKFdlYkNvcmU6OmJsZW5kKGZyb21TaGFwZS5mcm9tKCksIG1fZnJvbSwgY29u
dGV4dCksIFdURk1vdmUocmVzdWx0KSk7CisgICAgbmV3U2hhcGUtPnNldFdpbmRSdWxlKHdpbmRS
dWxlKCkpOworICAgIHJldHVybiBuZXdTaGFwZTsKK30KKwordm9pZCBCYXNpY1NoYXBlU2hhcGU6
OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Cit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ3aW5k
LXJ1bGUiLCB3aW5kUnVsZSgpKTsKKyAgICAvLyBGSVhNRTogcHJpbnQgdGhlIGJ5dGUgc3RyZWFt
PworfQorCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQmFz
aWNTaGFwZVJhZGl1czo6VHlwZSByYWRpdXNUeXBlKQogewogICAgIHN3aXRjaCAocmFkaXVzVHlw
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hh
cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAppbmRl
eCA5YmYwMzczNDc2YjUzZTVjN2E0YTliYzYyMzllNDVlYzRhZDUzNGU0Li4zMWU4ZjNkZjVkY2Ix
NjJlODI1MzczNGQ0YjVjY2ViOTBjZWM5MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQmFzaWNTaGFwZXMuaApAQCAtMzAsNiArMzAsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJMZW5ndGguaCIKKyNpbmNsdWRlICJMZW5ndGhQb2ludC5oIgogI2luY2x1ZGUg
Ikxlbmd0aFNpemUuaCIKICNpbmNsdWRlICJXaW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CkBAIC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBCbGVuZGluZ0NvbnRleHQ7CiBjbGFz
cyBGbG9hdFJlY3Q7CiBjbGFzcyBQYXRoOwogY2xhc3MgUmVuZGVyQm94OworY2xhc3MgQmFzaWNT
aGFwZVNlZ21lbnQ7CiBjbGFzcyBTVkdQYXRoQnl0ZVN0cmVhbTsKIAogY2xhc3MgQmFzaWNTaGFw
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEJhc2ljU2hhcGU+IHsKQEAgLTU4LDcgKzYwLDggQEAgcHVi
bGljOgogICAgICAgICBQYXRoLAogICAgICAgICBDaXJjbGUsCiAgICAgICAgIEVsbGlwc2UsCi0g
ICAgICAgIEluc2V0CisgICAgICAgIEluc2V0LAorICAgICAgICBTaGFwZQogICAgIH07CiAKICAg
ICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKQEAgLTM0Myw2ICszNDYsNDEgQEAgcHJp
dmF0ZToKICAgICBMZW5ndGhTaXplIG1fYm90dG9tTGVmdFJhZGl1czsKIH07CiAKK2NsYXNzIEJh
c2ljU2hhcGVTaGFwZSA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPEJhc2ljU2hhcGVTaGFwZT4gY3JlYXRlKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBWZWN0
b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mJiBzZWdtZW50cykKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEJhc2ljU2hhcGVTaGFwZShmcm9tLCBXVEZNb3ZlKHNlZ21lbnRz
KSkpOworICAgIH0KKworICAgIHZvaWQgc2V0V2luZFJ1bGUoV2luZFJ1bGUgd2luZFJ1bGUpIHsg
bV93aW5kUnVsZSA9IHdpbmRSdWxlOyB9CisgICAgV2luZFJ1bGUgd2luZFJ1bGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3dpbmRSdWxlOyB9CisKKyAgICBjb25zdCBMZW5ndGhQb2ludCYg
ZnJvbSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbTsgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NlZ21lbnRzLT5zaXplKCk7IH0KKyAgICBjb25zdCBCYXNpY1NoYXBlU2Vn
bWVudCYgYXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMtPmF0KGkpLmdldCgp
OyB9CisKK3ByaXZhdGU6CisgICAgQmFzaWNTaGFwZVNoYXBlKGNvbnN0IExlbmd0aFBvaW50Jiwg
VmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+JiYpOworCisgICAgVHlwZSB0eXBlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gVHlwZTo6U2hhcGU7IH0KKworCisgICAgY29uc3QgUGF0aCYg
cGF0aChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKworICAgIGJvb2wgY2FuQmxlbmQoY29u
c3QgQmFzaWNTaGFwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxCYXNpY1NoYXBlPiBibGVu
ZChjb25zdCBCYXNpY1NoYXBlJiBmcm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJikgY29uc3Qg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0IGZpbmFsOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+Pj4gbV9zZWdt
ZW50czsKKyAgICBXaW5kUnVsZSBtX3dpbmRSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKKyAg
ICBMZW5ndGhQb2ludCBtX2Zyb207Cit9OworCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQmFzaWNTaGFwZVJhZGl1cyYpOwogV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEJhc2ljU2hhcGVDZW50ZXJD
b29yZGluYXRlJik7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiwgY29uc3QgQmFzaWNTaGFwZSYpOwpAQCAtMzU5LDMgKzM5Nyw0IEBAIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkFTSUNfU0hBUEUoQmFzaWNTaGFwZUVsbGlwc2UsIEJhc2ljU2hhcGU6OlR5cGU6
OkVsbGlwc2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVQ
b2x5Z29uLCBCYXNpY1NoYXBlOjpUeXBlOjpQb2x5Z29uKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CQVNJQ19TSEFQRShCYXNpY1NoYXBlUGF0aCwgQmFzaWNTaGFwZTo6VHlwZTo6UGF0aCkKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkFTSUNfU0hBUEUoQmFzaWNTaGFwZUluc2V0LCBCYXNpY1No
YXBlOjpUeXBlOjpJbnNldCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkFTSUNfU0hBUEUoQmFz
aWNTaGFwZVNoYXBlLCBCYXNpY1NoYXBlOjpUeXBlOjpTaGFwZSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMzQ1MzQ4Zjlk
OWZjMjEyM2QxOTVjYTNhOWM5MmIzNTE0ZTMyODRlLi40ZjY2MTAzMGQyZDQxYWFmMWFiOTRiOTNj
MTQyMWNjM2YyNzJkMTQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDQtMTkgIE5vYW0g
Um9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgU2hhcGVzXSBBZGQg
c3VwcG9ydCBmb3Igc2hhcGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM4MzcxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MDkxOTQ3Nj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBl
Y3RhdGlvbnM6IHVuc2tpcCBDU1Mgc2hhcGUoKSB0ZXN0cworCiAyMDIyLTA0LTE4ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gVW5z
a2lwIGFwaS92YWxpZGF0aW9uL2NyZWF0ZVNhbXBsZXIuaHRtbCDwn46JCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwppbmRleCA2NGVhNjU3ZTZlMDQyYWMzZDEwMThjOGRkOGQ4ZmMwMjI1ZmVi
YTA3Li5hZGY2NDVlMjM5MmQ1YTk3OTdmMmY3YzY0ZjlkYjBmMzI0ZjA3NmMzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMi0wNC0xOSAgTm9hbSBS
b3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFkZCBz
dXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2PgorCisg
ICAgICAgIEFtZW5kZWQgdGVzdHMgdG8gc3VwcG9ydCBDU1Mgc2hhcGUoKQorCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNo
YXBlLTAwMy1leHBlY3RlZC5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbDoKKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgt
c2hhcGUtMDA0LWV4cGVjdGVkLmh0bWw6CisgICAgICAgICAgICAgICAgTmVlZGVkIHRvIGNoYW5n
ZSB0aGUgdGVzdCBhIGJpdCBiZWNhdXNlIG9mIHN0cmF5IHBpeGVscy4gV2lsbCB1cHN0cmVhbS4K
KworCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5n
L2NsaXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgICAgICAgICBO
b3cgcGFzc2VzCisKIDIwMjItMDQtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgQ1NTVHJhbnNmb3JtVmFsdWUuaXMyRApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggYWU3NjI2YjNiZjM5YTdhYjg2NmJmNGM0MjhmNmEzOGNiMTg2
MTlhNC4uYmYwOTJkZDUyZDNhYjFlMDU0OThmYWIwYzZlOWRlOGVjMzlkODRhOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0yMTk5LDE1ICsyMTk5LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC12aWV3Qm94LTFjLmgK
IHdlYmtpdC5vcmcvYi8xMDQ0NDIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC11cmwtcmVmZXJlbmNlLWNoYW5nZS1mcm9t
LWVtcHR5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMjk1MTAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2Ns
aXAtcGF0aC1kZXNjZW5kYW50LXRleHQtbXV0YXRlZC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogCi0jIENTUyBzaGFwZSgpCi13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hh
cGUtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2Ns
aXAtcGF0aC1zaGFwZS0wMDItdW5pdHMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFz
a2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRo
LXNoYXBlLWludGVycG9sYXRpb24tMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1h
c2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS1pbnRlcnBvbGF0aW9uLTAwMi5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMjkzNzAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC9jbGlwLWZpbHRlci1vcmRlci5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjI5MzcwIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL21hc2staW1hZ2UvbWFzay1pbWFn
ZS11cmwtbG9jYWwtbWFzay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MjI5MzcwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL21h
c2staW1hZ2UvbWFzay1pbWFnZS11cmwtcmVtb3RlLW1hc2suaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWwK
aW5kZXggNDZlMDk4YzRlYjY0ODlmYzQ0MzAxZDZiZjliMjQzZTgzNmIyY2EzMS4uMzFlOTdjOTE0
NzQ0OGFhODQ5MjY0MmU0MTk2YWE5MWI1Y2E2YTQ4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRo
L2NsaXAtcGF0aC1zaGFwZS0wMDMtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xp
cC1wYXRoLXNoYXBlLTAwMy1leHBlY3RlZC5odG1sCkBAIC05LDE0ICs5LDIzIEBACiAgICAgd2lk
dGg6IDEwMHB4OwogICAgIGhlaWdodDogMTAwcHg7CiAgIH0KLSAgI3JlZiB7Ci0gICAgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47CisKKyAgI3JlZiwgI2FjdHVhbCB7CiAgICAgY2xpcC1wYXRoOiBw
YXRoKG5vbnplcm8sICJNIDEwIDEwLCBRIDQwIDAgNjAgMjAsIFQgOTAgMCwgYyAxMCA0MCAyMCAy
MCAtMjAgNjAsIHMgLTEwIDcwIC00MCAtMTAiKTsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAg
IH0KKworICAjcmVmIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgIH0KKworICAjYWN0
dWFsIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgfQogPC9zdHlsZT4KIDxib2R5
PgogICA8cD5Zb3Ugc2hvdWxkIHNlZSBubyByZWQuPC9wPgogICA8ZGl2IGlkPSJyZWYiPjwvZGl2
PgorICA8ZGl2IGlkPSJhY3R1YWwiPjwvZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1h
c2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9j
bGlwLXBhdGgtc2hhcGUtMDAzLmh0bWwKaW5kZXggMjJlN2Q5YWFmNTM3NGM5YjdlNGUzYzJkNTBl
Y2VmYmNlYzEzNGI2Ni4uZTAxNzA5MDA1YWM4Y2Y4ZTM1ZDA2MmE2ODU3YjY0NjI3YjVlYmUwOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2lu
Zy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy5odG1sCkBAIC02LDYgKzYsNyBAQAogICA8
bGluayByZWw9Im1hdGNoIiBocmVmPSJyZWZlcmVuY2UvY2xpcC1wYXRoLXNoYXBlLTAwMy1yZWYu
aHRtbCI+CiAgIDxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVGhlIGNsaXAtcGF0aCBwcm9w
ZXJ0eSB0YWtlcyB0aGUgYmFzaWMgc2hhcGUKIAknc2hhcGUoKScgZm9yIGNsaXBwaW5nLiBUZXN0
IGN1cnZlcy4iPgorICA8bWV0YSBuYW1lPSJmdXp6eSIgY29udGVudD0ibWF4RGlmZmVyZW5jZT04
MDsgdG90YWxQaXhlbHM9Mzk0Ij4KIDwvaGVhZD4KIDxzdHlsZT4KICAgZGl2IHsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1t
YXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9j
bGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwNC1leHBlY3RlZC5odG1sCmluZGV4IGVjOGY5NDEw
Nzk1MTM4ZjdhMzQ5MGQ3YTQxNjliNWViZDVlMzc0NzQuLjEwZjQ1N2I5MTE4NGYxMDEzMDY4OWEy
NzMwNWZjMmRkMzY2ZTI4MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hh
cGUtMDA0LWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0w
MDQtZXhwZWN0ZWQuaHRtbApAQCAtOSwxNCArOSwyMyBAQAogICAgIHdpZHRoOiAxMDBweDsKICAg
ICBoZWlnaHQ6IDEwMHB4OwogICB9Ci0gICNyZWYgewotICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworCisgICNyZWYsICNhY3R1YWwgewogICAgIGNsaXAtcGF0aDogcGF0aChub256ZXJvLCAi
TSAyMCAyMCBBIDI1IDEyIDAgMCAxIDgwIDIwLCBhIDMzIDMzIDEyMCAxIDEgLTQwIDUwLCBBIDIw
IDI1IDAgMCAwIDIwIDIwIik7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICB9CisKKyAgI3Jl
ZiB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICB9CisKKyAgI2FjdHVhbCB7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgIH0KIDwvc3R5bGU+CiA8Ym9keT4KICAgPHA+WW91
IHNob3VsZCBzZWUgbm8gcmVkLjwvcD4KICAgPGRpdiBpZD0icmVmIj48L2Rpdj4KKyAgPGRpdiBp
ZD0iYWN0dWFsIj48L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL3BhcnNp
bmcvY2xpcC1wYXRoLXNoYXBlLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvcGFyc2luZy9jbGlw
LXBhdGgtc2hhcGUtcGFyc2luZy1leHBlY3RlZC50eHQKaW5kZXggZTk0YWVlOGI2YjRjYjA0Zjdh
ZmU4MmFkNjViM2MxNDhiYzQxMTI1Zi4uZTA1ODBlZGZjMWQ4ZWYzMjc3NWI1ZDk2ZjM4N2VlNWU3
YTQ3YTMwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2luZy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2luZy1leHBl
Y3RlZC50eHQKQEAgLTEsMjQgKzEsMjQgQEAKIAotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9
ICJzaGFwZShmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUg
cHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQg
Z290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hh
cGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0
aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBz
ZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAi
c2hhcGUobm9uemVybyBmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNl
dCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBi
ZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10g
PSAic2hhcGUoICBmcm9tIDBweCAgICAwcHgsIGxpbmUgIHRvIDEwcHggIDEwcHggICAgICkiIHNo
b3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBz
aG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAt
cGF0aCddID0gInNoYXBlKGZyb20gMWVtIDUwJSwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQg
c2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxk
IGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgn
XSA9ICJzaGFwZShFdmVuT2RkIGZyb20gMHB4IDBQeCwgQ0xPU0UpIiBzaG91bGQgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBn
b3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShmcm9tIDFjaCA1MHB4LCBsaW5lIHRvIDEwcmVtIDEwdmgpIiBzaG91bGQgc2V0IHRoZSBwcm9w
ZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3Qg
ZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShm
cm9tIDFjaCAtNTBweCwgbGluZSB0byAtMTAlIDEycHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0
eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlz
YWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9t
IDEwcHggMTBweCwgbW92ZSBieSAxMHB4IDVweCwgbGluZSBieSAyMHB4IDQwJSwgY2xvc2UpIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkg
c2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlw
LXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgaGxpbmUgYnkgMTBweCwgdmxpbmUgdG8g
NXJlbSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBw
cm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5
bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCB2bGluZSBieSA1JSwgaGxp
bmUgdG8gMXZ3KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVh
bHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwg
ZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUw
cHggMjBweCB2aWEgMTByZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3Nl
cnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1
ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwg
Y3VydmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQgc2V0IHRo
ZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNl
dCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJz
aGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUgYnkgNTBweCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2
aCAxY2gpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczog
cHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0
eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgc21vb3RoIHRvIDUwcHgg
MjBweCB2aWEgMTByZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRf
bm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAi
IgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgc21v
b3RoIHRvIDUwcHggMXB0KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25v
dF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIK
LUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGFyYyB0
byA1MHB4IDFwdCBvZiAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBh
c3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2
YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBw
eCwgYXJjIHRvIDUwcHggMXB0IG9mIDEwcHggMTBweCBzbWFsbCByb3RhdGUgMGRlZykiIHNob3Vs
ZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91
bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0
aCddID0gInNoYXBlKGZyb20gMTAlIDFyZW0sIGFyYyB0byA1MHB4IDFwdCBvZiAyMCUgY3cgbGFy
Z2Ugcm90YXRlIDI1ZGVnKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25v
dF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIK
LUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgs
IGNsb3NlKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6
IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKK1BBU1MgZS5z
dHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBw
eCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0
aCddID0gInNoYXBlKGV2ZW5vZGQgZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNo
b3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0g
InNoYXBlKG5vbnplcm8gZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBz
ZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBl
KCAgZnJvbSAwcHggICAgMHB4LCBsaW5lICB0byAxMHB4ICAxMHB4ICAgICApIiBzaG91bGQgc2V0
IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShm
cm9tIDFlbSA1MCUsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkg
dmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoRXZlbk9kZCBmcm9tIDBw
eCAwUHgsIENMT1NFKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHls
ZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxY2ggNTBweCwgbGluZSB0byAxMHJlbSAxMHZo
KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRo
J10gPSAic2hhcGUoZnJvbSAxY2ggLTUwcHgsIGxpbmUgdG8gLTEwJSAxMnB4KSIgc2hvdWxkIHNl
dCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUo
ZnJvbSAxMHB4IDEwcHgsIG1vdmUgYnkgMTBweCA1cHgsIGxpbmUgYnkgMjBweCA0MCUsIGNsb3Nl
KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRo
J10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGhsaW5lIGJ5IDEwcHgsIHZsaW5lIHRvIDVyZW0p
IiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgn
XSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgdmxpbmUgYnkgNSUsIGhsaW5lIHRvIDF2dykiIHNo
b3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0g
InNoYXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEwcmVtIDElKSIg
c2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10g
PSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUwcHggMjBweCB2aWEgMTByZW0gMXB4
IDIwdmggMWNoKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Y2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIGJ5IDUwcHggMjBweCB2
aWEgMTByZW0gMXB4IDIwdmggMWNoKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BB
U1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIHNtb290aCB0
byA1MHB4IDIwcHggdmlhIDEwcmVtIDElKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUK
K1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIHNtb290
aCB0byA1MHB4IDFwdCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5
bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBhcmMgdG8gNTBweCAxcHQg
b2YgMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHls
ZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGFyYyB0byA1MHB4IDFwdCBv
ZiAxMHB4IDEwcHggc21hbGwgcm90YXRlIDBkZWcpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwJSAxcmVtLCBh
cmMgdG8gNTBweCAxcHQgb2YgMjAlIGN3IGxhcmdlIHJvdGF0ZSAyNWRlZykiIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGV2
ZW5vZGQgZnJvbSAwcHggMHB4LCBjbG9zZSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVl
CiBQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGV2ZW5vZGQgZnJvbSAwcHggMHB4
LCBjbG9zZSBwYXRoKSIgc2hvdWxkIG5vdCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCiBQQVNTIGUu
c3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKG5vbnplcm8sIGZyb20gMHB4IDBweCwgbGluZSB0
byAxMHB4IDEwcHgpIiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkgdmFsdWUKIFBBU1MgZS5z
dHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUwcHgg
MjBweCB2aWEgMTByZW0pIiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkgdmFsdWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457877</attachid>
            <date>2022-04-19 04:37:54 -0700</date>
            <delta_ts>2022-04-19 06:13:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238371-20220419143751.patch</filename>
            <type>text/plain</type>
            <size>96996</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0MDhiYzRlZDIxNmNh
YWM1ZWVlZTUyMDkyNWQ3NzYzOGU0M2QwZC4uYzhmMjI3MTg0NDc0MGQ5Njc0Mjg0YzY3ODkyNGUx
ZjgwODQyODU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0xOSAgTm9h
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFk
ZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBDU1Mgc2hhcGUoKSBieSBpbnRyb2R1Y2luZyBzaGFwZSBzZWdtZW50IGFuZCBCYXNpY1NoYXBl
U2hhcGUuCisgICAgICAgIFNoYXBlU2hhcGUgaXMgYSB2ZWN0b3Igb2Ygc2hhcGUgc2VnbWVudHMs
IHdoZXJlIGVhY2ggc2VnbWVudCBibGVuZHMgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgVGhlIHNo
YXBlIHVsdGltYXRlbHkgY3JlYXRlcyBhbiBTVkdQYXRoU291cmNlIHRvIGNvbnZlcnQgdGhlIHJl
c3BvbnNpdmUgc2hhcGUsIHdoaWNoCisgICAgICAgIGlzIGJhc2VkIG9uIExlbmd0aCB2YWx1ZXMs
IHRvIGFuIGFic29sdXRlIFBhdGggb2JqZWN0IHRoYXQgY2FuIGJlIGRyYXduLgorCisgICAgICAg
IFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXNoYXBlcy0yLyNzaGFwZS1mdW5jdGlv
bgorCisgICAgICAgIFVuc2tpcHBlZCBzZXZlcmFsIHJlbGV2YW50IFdQVHMuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgICAgICBOZXcgZmlsZXMg
YWRkZWQKKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZhbHVlRm9yQmFzaWNTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9MZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpiYXNpY1NoYXBlRm9yVmFsdWUpOgor
ICAgICAgICAgICAgICAgIEFkZGVkIHRoZSBCYXNpY1NoYXBlU2hhcGUgdHlwZQorCisgICAgICAg
ICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Q1NTQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2lj
U2hhcGVTaGFwZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6
CisgICAgICAgICAgICAgICAgQWRkZWQgdGhlIENTU0Jhc2ljU2hhcGVTaGFwZQorCisgICAgICAg
ICogY3NzL0NTU1NoYXBlU2VnbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
aGFwZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NT
U2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudDo6Q1NTU2hh
cGVTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OnRhcmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6YXJndW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OmFmZmluaXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjphcHBlbmRBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpDU1NTaGFwZVNlZ21l
bnRWYWx1ZSk6CisgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB0byBkbyB3aXRoIHRoZSBzZWdt
ZW50IG9mIHRoZSBzaGFwZSB3aGlsZSBpbiBDU1Mgc3BhY2UsCisgICAgICAgICAgICAgICAgaW5j
bHVkaW5nIHNlcmlhbGl6YXRpb24gZm9yIGdldENvbXB1dGVkU3R5bGUoKQorCisgICAgICAgICog
Y3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzU2hhcGVTZWdtZW50VmFsdWUgY29uc3Qp
OgorICAgICAgICAgICAgICAgIENTU1NoYXBlU2VnbWVudCBpcyBhIHR5cGUgb2YgdmFsdWUKKwor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAgICAgICAgIE5ldyBr
ZXl3b3JkcyBmb3Igc2hhcGUoKQorCisgICAgICAgICogY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9u
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFBvaW50VG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0FyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6dG9DU1NB
cmdzPExlbmd0aFBvaW50Pik6CisgICAgICAgIChXZWJDb3JlOjp0b0NTU1NoYXBlU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpzZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpmcm9t
Q1NTU2hhcGVTZWdtZW50KToKKyAgICAgICAgKiBjc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmg6
IEFkZGVkLgorICAgICAgICAgICAgICAgIENvbnZlcnRpbmcgc2hhcGUgc2VnbWVudHMgdG8vZnJv
bSBDU1Mgc3BhY2UKKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNoYXBlU2VnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVC
YXNpY1NoYXBlKToKKyAgICAgICAgICAgICAgICBQYXJzZSBhIHNoYXBlIHByb3BlcnR5CisKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OnZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzaWNTaGFwZVNlZ21lbnQ6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6YmxlbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFyY1RvU2hhcGVTZWdWYWx1
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVu
dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6Y3Jl
YXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50OjpCYXNp
Y1NoYXBlU2VnbWVudCk6CisgICAgICAgICAgICAgICAgQmxlbmRpbmcsIGNvbXBhcmluZyBhbmQg
Y29udmVydGluZyB0byBhYnNvbHV0ZSBwYXRoCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhCb3g6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhC
b3g6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1Bh
dGhQb2xpY3k6OmlzS2V5TnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVNlZ21lbnRzUGF0
aFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU2hh
cGVTZWdtZW50c1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpCYXNp
Y1NoYXBlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpwYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6YmxlbmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZVNoYXBlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2V0V2luZFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpmcm9tIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlU2hhcGU6OmF0IGNvbnN0KToKKyAgICAgICAgICAgICAgICBBZGQgQmFz
aWNTaGFwZVNoYXBlCisKIDIwMjItMDQtMTggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgUGxhdGZvcm1NZWRpYUVuZ2luZUNsYXNzTmFt
ZSBtYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODBiYmVhOGU3MjM0ZjA1NWVmZDZlMzQwMDc1
MGIzN2YzMzE3OGNhZS4uZWJlYzFlMGIwZDhjODhjMzk0NDRkZDg4NGI4MDNlNDk3MmU3MDY0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC01NTQsNiArNTU0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9DU1NSdWxlTGlzdC5oCiAgICAgY3NzL0NTU1Nl
bGVjdG9yLmgKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKyAgICBjc3MvQ1NTU2hhcGVTZWdt
ZW50LmgKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCiAgICAgY3NzL0NTU1N0eWxlUnVs
ZS5oCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMTg4Nyw2ICsxODg4LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hh
cGUuaAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCiAKKyAgICByZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaAogICAgIHJlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5oCiAgICAgcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAogICAgIHJlbmRlcmlu
Zy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBhZjNkMDZhNWIwYmJjNjhm
YzAxMTMzYmNjZmUxZjJjZDk3MGU4OWUuLjM0ZDMyYTg4MTYyNTdkNDVkZGFkOTgyYTk3YzdjMTRi
NzFkMDM4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC03NzEsNiArNzcxLDcgQEAgY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmNwcAogY3NzL0NTU1NlbGVjdG9yLmNwcAogY3NzL0NTU1NlbGVjdG9yTGlz
dC5jcHAKIGNzcy9DU1NTaGFkb3dWYWx1ZS5jcHAKK2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCiBj
c3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKIGNzcy9DU1NTdHlsZVJ1bGUuY3BwCiBjc3MvQ1NT
U3R5bGVTaGVldC5jcHAKQEAgLTI0NDksNiArMjQ1MCw3IEBAIHJlbmRlcmluZy9zaGFwZXMvUmVj
dGFuZ2xlU2hhcGUuY3BwCiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogcmVuZGVyaW5nL3No
YXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNw
cAorcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmNwcAogcmVuZGVyaW5nL3N0eWxl
L0JvcmRlckRhdGEuY3BwCiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCiByZW5kZXJp
bmcvc3R5bGUvRmlsbExheWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2MTc2MzlkZjcyMDZmYzQ4NDU3MDQ4ZWU0NGJh
ODk0M2M1MmM3YTIuLmY1NDE5MDgyMzdkNjE1NGJlNDIwZWQ2N2M5MDg1ZTY0NTlkMDQ1NGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ0NTIsNiArNDQ1MiwxMCBAQAogCQlDQTNCRjY3RTEwRDk5QkFFMDBFNkNFNTMgLyogU2Ny
b2xsQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNBNkMxNTMwMjIwQjk4
Q0MwMDU1Q0JGQyAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFBRTNCODFGQjgwRUFFMDBGNUVGQjIgLyog
SlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNBN0U5QjQ5MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVs
UGFpbnRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDQTdFOUI0NzI0MzYxREM1MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5o
ICovOyB9OworCQlDQTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBODE2Q0Iz
Mjc3ODQ4MUUwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oICovOyB9OworCQlDQTgxNkNC
OTI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyog
Q1NTU2hhcGVTZWdtZW50LmggKi87IH07CisJCUNBODE2Q0JDMjc3ODlBQUQwMDJCRDNDNiAvKiBT
aGFwZVNlZ21lbnRGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0E4MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1
bmN0aW9ucy5jcHAgKi87IH07CisJCUNBODE2Q0JEMjc3ODlBQUQwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRGdW5jdGlvbnMu
aCAqLzsgfTsKIAkJQ0FFOUY5MTAxNDY0NDFGMDAwQzI0NUIwIC8qIENTU0FzcGVjdFJhdGlvVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBRTlG
OTBFMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggKi87IH07CiAJCUNC
MzhGRDUyMUNDRjkzOTQwMDU5MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCMzhGRDRFMUNDRjkzN0UwMDU5
MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuaCAqLzsgfTsKIAkJQ0IzOEZENUIxQ0QyMzI1QjAw
NTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0IzOEZENTkxQ0QyMzE0NTAwNTkyQTNGIC8q
IEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oICovOyB9OwpAQCAtMTU5NDcsNiArMTU5NTEs
NyBAQAogCQlDQTA5MUQ4NjIzQ0Y5MDc4MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHlsZUltYWdlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0EwOTFEODkyM0NGOTA4ODAwQUQ0MzQ2IC8qIFN0eWxlSW1hZ2VTZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3R5bGVJbWFnZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQTE2MzVEQzIwNzJFNzY5MDBFN0QyQ0UgLyogUmVmZXJyZXJQb2xpY3kuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmZXJyZXJQb2xpY3kuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDQTE2NkNDQjI3ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hh
cGVTZWdtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1NoYXBlU2VnbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMTkzM0Q1MjQwN0Q2NDAwMDcxMjQxQSAvKiBQ
ZXJmb3JtYW5jZVBhaW50VGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZvcm1hbmNlUGFpbnRU
aW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0ExOTMzRDgyNDA3RURDRjAw
NzEyNDFBIC8qIFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDQTNBNEFBQjI1NDE2RTNDMDA2Q0RBRTIgLyogSW1hZ2VSZXNvbHV0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlUmVzb2x1dGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTk2Miw2ICsxNTk2NywxMSBAQAogCQlDQTZD
MTUzODIyMEQxRUIzMDA1NUNCRkMgLyogSlNJREJDdXJzb3JXaXRoVmFsdWVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJDdXJzb3JXaXRoVmFsdWVD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTdFOUI0NzI0MzYxREM1
MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb250ZW50ZnVsUGFpbnRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNBN0U5QjQ4MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFpbnRD
aGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRm
dWxQYWludENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNC
MzI3Nzg0ODFFMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0E4MTZDQjQyNzc4NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2ljU2hhcGVTZWdt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4MTZDQjgyNzc4NDgyRTAw
MkJEM0M2IC8qIENTU1NoYXBlU2VnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDU1NTaGFwZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4
MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFwZVNlZ21lbnRGdW5jdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCQjI3Nzg5QUE3MDAyQkQzQzYg
LyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQUU5RjkwRDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIw
IC8qIENTU0FzcGVjdFJhdGlvVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
QjM4RkQ0QTFDQ0NGMkREMDA1OTJBM0YgLyogUGVyZm9ybWFuY2VFbnRyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJmb3JtYW5jZUVudHJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5Njg4LDYgKzI5Njk4LDggQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCUZCRDZBRjgyMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi8s
CiAJCQkJRkJENkFGODMxNUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8sCisJCQkJ
Q0E4MTZDQjQyNzc4NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJ
CQlDQTgxNkNCMzI3Nzg0ODFFMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLywKIAkJ
CQkwRjI4M0E5MTIzNTYzMTI2MDA0Nzk0Q0EgLyogQm9yZGVyRGF0YS5jcHAgKi8sCiAJCQkJQkM1
RUI1RTAwRTgxQkU4NzAwQjI1OTY1IC8qIEJvcmRlckRhdGEuaCAqLywKIAkJCQlCQzVFQjVEQTBF
ODFCN0VBMDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCAqLywKQEAgLTMxOTYxLDYgKzMxOTczLDgg
QEAKIAkJCQlFNEMxNzg5NjBFRTY5MDM4MDA4MjRENjkgLyogQ1NTU2VsZWN0b3JMaXN0LmggKi8s
CiAJCQkJQTgwRTZDQ0EwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmNwcCAqLywK
IAkJCQlBODBFNkNCRTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU2hhZG93VmFsdWUuaCAqLywKKwkJ
CQlDQTE2NkNDQjI3ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJ
CQlDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggKi8sCiAJCQkJ
N0NERThFQkMxRjE5M0JDNTAwMTY4RkU3IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uY3BwICovLAog
CQkJCUE4MEU2RTBEMEExOTkxMUMwMDdGQjhDNSAvKiBDU1NTdHlsZURlY2xhcmF0aW9uLmggKi8s
CiAJCQkJMTQyMDExQUUwQTAwMzExNzAwODMwM0Y5IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaWRs
ICovLApAQCAtMzIwOTYsNiArMzIxMTAsOCBAQAogCQkJCTQzQjg1RUQ2MThDQkVDOTcwMEUzMUFG
NCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuaW4gKi8s
CiAJCQkJMjZBQTBGOUExOEQyOTczRDAwNDE5MzgxIC8qIFNlbGVjdG9yUHNldWRvRWxlbWVudFR5
cGVNYXAuaW4gKi8sCiAJCQkJNDMxMDdCRTExOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNl
dWRvVHlwZU1hcC5oICovLAorCQkJCUNBODE2Q0JBMjc3ODlBQTIwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuY3BwICovLAorCQkJCUNBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBT
aGFwZVNlZ21lbnRGdW5jdGlvbnMuaCAqLywKIAkJCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQg
LyogU3R5bGVDb2xvci5jcHAgKi8sCiAJCQkJOTQxODI3ODkxRDhCMjQyMjAwNDkyNzY0IC8qIFN0
eWxlQ29sb3IuaCAqLywKIAkJCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRp
YS5jcHAgKi8sCkBAIC0zMzg1Niw2ICszMzg3Miw3IEBACiAJCQkJNzE1NkJDQTEyMUNBMzUwRjAw
NTM0Mzk3IC8qIEJhc2ljRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4
QTE1RUYyNURGMDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkJENkFGOEMxNUVGMjYwNDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDQTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFCMjNBMzI4MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVU
ZXh0SW5zZXJ0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCM0QwQTQ0RUZDNzAw
Rjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEy
NDBEMDA2QzFEMDBFRjZGMjYgLyogQmlkaUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMzQz
NDcsNiArMzQzNjQsNyBAQAogCQkJCUU0QzE3ODlCMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxl
Y3Rvckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0REU1QzhFMUQ4MDgwMjcwMDE2NEYyQSAv
KiBDU1NTZWxlY3RvclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRTgwQTE5ODlD
QTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNC
OTI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQTUzOEEyQTI2RjAxMDQyMDA5NjVGQzggLyogQ1NTU2tldy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkE1MzhBMkIyNkYwMTA0NTAwOTY1RkM4IC8qIENTU1NrZXdYLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyQTUzOEEyQzI2RjAxMDQ4MDA5NjVGQzggLyogQ1NTU2tld1kuaCBpbiBIZWFkZXJzICov
LApAQCAtMzc0ODQsNiArMzc1MDIsNyBAQAogCQkJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAv
KiBTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NUIxNzVENDFFRTAwQzIxRUM4IC8q
IFNoYXBlSW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTUyMTc1RDNGM0UwMEMy
MUVDOCAvKiBTaGFwZU91dHNpZGVJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNCRDI3
Nzg5QUFEMDAyQkQzQzYgLyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDFBRjE1MDE2NTZGMTUxMDBDNkQ0RjcgLyogU2hhcGVWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUQ5RjBGQzEyMTIyMDI5QjAwNUQ4RkQ0IC8qIFNoYXJlRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE0QTk1NEUwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zOTAzMCw2ICszOTA0OSw3IEBACiAJCQkJNDNCODVFRDQxOENCRUM1
MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1h
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkFBMEY5RTE4RDJBMThCMDA0MTkzODEgLyogU2Vs
ZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0Q1OERG
RDFGOTU2NUE4MDAxMTI3OTEgLyogU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0E4
MTZDQkMyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MURGMkQ1RTI3QTk0NTJBMDBGMjVBMjEgLyogU2hhcmVkVmlkZW9GcmFt
ZUluZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTBBODFGOTAyMkE0MDA1MTAyQ0UgLyog
U29mdExpbmtMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUFBMTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCmluZGV4IDlkZjJjZmY3
OTU3ZTQ1ZDg5YjcyMWE3MWU3NWUyOGQ4NWE1ZTc5YTcuLjE3NzIyMjZhZmViNzNkODQ0OTU5N2Q2
YWRlMzY4M2U2N2IxZDVjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1No
YXBlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0
aW9ucy5jcHAKQEAgLTMwLDEzICszMCwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkJhc2ljU2hhcGVGdW5jdGlvbnMuaCIKIAorI2luY2x1ZGUgIkJhc2ljU2hhcGVTZWdtZW50
LmgiCiAjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKICNpbmNsdWRlICJDU1NCYXNpY1NoYXBlcy5o
IgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJDU1NT
aGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJQYWly
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVh
bS5oIgorI2luY2x1ZGUgIlNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTE1NCw2ICsxNTcsMjIgQEAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1
ZUZvckJhc2ljU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCYXNpY1MKICAg
ICAgICAgYmFzaWNTaGFwZVZhbHVlID0gV1RGTW92ZShpbnNldFZhbHVlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorICAgIGNhc2UgQmFzaWNTaGFwZTo6VHlwZTo6U2hhcGU6IHsKKyAgICAgICAg
YXV0byYgc2hhcGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGUpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
KyAgICAgICAgYXV0byBzaXplID0gc2hhcGUuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHRvQ1NTU2hh
cGVTZWdtZW50KHN0eWxlLCBzaGFwZS5hdChpKSkpOworCisgICAgICAgIGF1dG8gZnJvbSA9IGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoCisgICAgICAgICAgICBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc2hhcGUuZnJvbSgpLngoKSwgc3R5bGUpLAorICAgICAgICAgICAg
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYXBlLmZyb20oKS55KCksIHN0eWxlKSwgUGFpcjo6
SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSkpOworCisgICAgICAgIGF1dG8g
c2hhcGVWYWx1ZSA9IENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3JlYXRlKFdURk1vdmUoZnJvbSksIFdU
Rk1vdmUocmVzdWx0KSk7CisgICAgICAgIHNoYXBlVmFsdWUtPnNldFdpbmRSdWxlKHNoYXBlLndp
bmRSdWxlKCkpOworICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBXVEZNb3ZlKHNoYXBlVmFsdWUp
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShiYXNpY1NoYXBlVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0xNjQs
NiArMTgzLDEyIEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjCiAgICAgcmV0dXJuIHZhbHVlLT5j
b252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IEZpeGVkRmxvYXRDb252ZXJz
aW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oY29udmVyc2lv
bkRhdGEpOwogfQogCitzdGF0aWMgTGVuZ3RoUG9pbnQgY29udmVydFRvTGVuZ3RoUG9pbnQoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKK3sKKyAgICBhdXRvJiBwYWlyID0gKihkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgpKTsKKyAgICByZXR1cm4geyBjb252ZXJ0VG9MZW5ndGgo
Y29udmVyc2lvbkRhdGEsIHBhaXIuZmlyc3QoKSksIGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9u
RGF0YSwgcGFpci5zZWNvbmQoKSkgfTsKK30KKwogc3RhdGljIExlbmd0aFNpemUgY29udmVydFRv
TGVuZ3RoU2l6ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0
YSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlKQogewogICAgIGlmICghdmFsdWUpCkBA
IC0yOTcsNiArMzIyLDIwIEBAIFJlZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9yVmFsdWUoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhCiAgICAgICAgIGJhc2lj
U2hhcGUgPSBXVEZNb3ZlKHBhdGgpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBD
U1NCYXNpY1NoYXBlOjpDU1NCYXNpY1NoYXBlU2hhcGVUeXBlOiB7CisgICAgICAgIGF1dG8mIHNo
YXBlVmFsdWUgPSBkb3duY2FzdDxDU1NCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGVWYWx1ZSk7
CisgICAgICAgIGNvbnN0IGF1dG8mIGNzc1NlZ21lbnRzID0gc2hhcGVWYWx1ZS5zZWdtZW50cygp
OworICAgICAgICBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4gc2VnbWVudHMoY3NzU2Vn
bWVudHMubGVuZ3RoKCkpOworICAgICAgICBzdGQ6OnRyYW5zZm9ybShzdGQ6OmJlZ2luKGNzc1Nl
Z21lbnRzKSwgc3RkOjplbmQoY3NzU2VnbWVudHMpLCBzZWdtZW50cy5iZWdpbigpLCBbJl0gKGNv
bnN0IGF1dG8mIGNzc1NlZ21lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBmcm9tQ1NTU2hhcGVT
ZWdtZW50KGNvbnZlcnNpb25EYXRhLCBkb3duY2FzdDxDU1NTaGFwZVNlZ21lbnQ+KGNzc1NlZ21l
bnQuZ2V0KCkpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byBzaGFwZSA9IEJhc2ljU2hh
cGVTaGFwZTo6Y3JlYXRlKGNvbnZlcnRUb0xlbmd0aFBvaW50KGNvbnZlcnNpb25EYXRhLCBzaGFw
ZVZhbHVlLmZyb20oKSksIFdURk1vdmUoc2VnbWVudHMpKTsKKyAgICAgICAgc2hhcGUtPnNldFdp
bmRSdWxlKHNoYXBlVmFsdWUud2luZFJ1bGUoKSk7CisKKyAgICAgICAgYmFzaWNTaGFwZSA9IFdU
Rk1vdmUoc2hhcGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJu
IGJhc2ljU2hhcGUucmVsZWFzZU5vbk51bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFw
ZXMuY3BwCmluZGV4IDg5ZTA5ZjU3MmMzNTE2MzgzZjdiMjYyZDU0MGMwM2RlMDJlODQ4NTAuLjg1
ZjY3NmZlNjE2NGFhMGI0MDg4ODMxZDA1NjQ4ODMyZTUwMGZiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtMjIyLDYgKzIyMiwzOCBAQCBib29sIENTU0Jhc2ljU2hh
cGVQYXRoOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYgb3RoZXJTaGFwZSkgY29uc3QKICAg
ICByZXR1cm4gd2luZFJ1bGUoKSA9PSBvdGhlclNoYXBlUGF0aC53aW5kUnVsZSgpICYmIHBhdGhE
YXRhKCkgPT0gb3RoZXJTaGFwZVBhdGgucGF0aERhdGEoKTsKIH0KIAorQ1NTQmFzaWNTaGFwZVNo
YXBlOjpDU1NCYXNpY1NoYXBlU2hhcGUoUmVmPENTU1ZhbHVlPiYmIGZyb20sIFJlZjxDU1NWYWx1
ZUxpc3Q+JiYgc2VnbWVudHMpCisgICAgOiBtX3NlZ21lbnRzKFdURk1vdmUoc2VnbWVudHMpKSwg
bV9mcm9tKFdURk1vdmUoZnJvbSkpCit7IAorfQorCitib29sIENTU0Jhc2ljU2hhcGVTaGFwZTo6
ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIG90aGVyU2hhcGUpIGNvbnN0Cit7CisgICAgaWYg
KCFpczxDU1NCYXNpY1NoYXBlU2hhcGU+KG90aGVyU2hhcGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBhdXRvJiBvdGhlclNoYXBlU2hhcGUgPSBkb3duY2FzdDxDU1NCYXNpY1NoYXBl
U2hhcGU+KG90aGVyU2hhcGUpOworICAgIHJldHVybiB3aW5kUnVsZSgpID09IG90aGVyU2hhcGVT
aGFwZS53aW5kUnVsZSgpCisgICAgICAgICYmIGZyb20oKSA9PSBvdGhlclNoYXBlU2hhcGUuZnJv
bSgpCisgICAgICAgICYmIHNlZ21lbnRzKCkuZXF1YWxzKG90aGVyU2hhcGVTaGFwZS5zZWdtZW50
cygpKTsKK30KKworU3RyaW5nIENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3NzVGV4dCgpIGNvbnN0Cit7
CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGlmICh3aW5kUnVsZSgpID09IFdpbmRS
dWxlOjpFdmVuT2RkKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgic2hhcGUoZXZlbm9kZCAiKTsK
KyAgICBlbHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJzaGFwZSgiKTsKKworICAgIGF1dG8q
IHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oZnJvbSgpKS5wYWlyVmFsdWUoKTsK
KyAgICBBU1NFUlQocGFpcik7CisgICAgYnVpbGRlci5hcHBlbmQoImZyb20gIiwgcGFpci0+Y3Nz
VGV4dCgpLCAiLCAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChzZWdtZW50cygpLmNzc1RleHQoKSwg
IikiKTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKIHN0YXRpYyBTdHJp
bmcgYnVpbGRQb2x5Z29uU3RyaW5nKGNvbnN0IFdpbmRSdWxlJiB3aW5kUnVsZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBvaW50cykKIHsKICAgICBBU1NFUlQoIShwb2ludHMuc2l6ZSgpICUgMikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAppbmRleCAxMDVjNDYwOTQxZDY3NDRlNTdi
ZTdhMzVkNmIwNGZjNzNmYWJiYmVjLi42M2FhOGY5ZWU0MzE1NjZiZDE5YmM0NTczMzA3OWM1ZTVk
ZTlmM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaApAQCAtMzgsNiArMzgsMTAg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CitjbGFz
cyBDU1NTaGFwZVNlZ21lbnQ7CitjbGFzcyBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXI7CitjbGFz
cyBDU1NWYWx1ZTsKK2NsYXNzIENTU1ZhbHVlTGlzdDsKIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFt
OwogCiBjbGFzcyBDU1NCYXNpY1NoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTQmFzaWNTaGFw
ZT4gewpAQCAtNDcsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgICAgIENTU0Jhc2ljU2hhcGVDaXJj
bGVUeXBlLAogICAgICAgICBDU1NCYXNpY1NoYXBlRWxsaXBzZVR5cGUsCiAgICAgICAgIENTU0Jh
c2ljU2hhcGVJbnNldFR5cGUsCi0gICAgICAgIENTU0Jhc2ljU2hhcGVQYXRoVHlwZQorICAgICAg
ICBDU1NCYXNpY1NoYXBlUGF0aFR5cGUsCisgICAgICAgIENTU0Jhc2ljU2hhcGVTaGFwZVR5cGUK
ICAgICB9OwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CkBAIC0yMzMsNiAr
MjM4LDM1IEBAIHByaXZhdGU6CiAgICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFdpbmRSdWxlOjpO
b25aZXJvIH07CiB9OwogCitjbGFzcyBDU1NCYXNpY1NoYXBlU2hhcGUgZmluYWwgOiBwdWJsaWMg
Q1NTQmFzaWNTaGFwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDU1NCYXNpY1NoYXBlU2hh
cGU+IGNyZWF0ZShSZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJiBzZWdt
ZW50cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0Jhc2ljU2hhcGVT
aGFwZShXVEZNb3ZlKGZyb20pLCBXVEZNb3ZlKHNlZ21lbnRzKSkpOworICAgIH0KKworICAgIGNv
bnN0IENTU1ZhbHVlTGlzdCYgc2VnbWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fc2VnbWVudHMuZ2V0KCk7CisgICAgfQorCisgICAgdm9pZCBzZXRXaW5kUnVsZShXaW5kUnVs
ZSBydWxlKSB7IG1fd2luZFJ1bGUgPSBydWxlOyB9CisgICAgV2luZFJ1bGUgd2luZFJ1bGUoKSBj
b25zdCB7IHJldHVybiBtX3dpbmRSdWxlOyB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgZnJvbSgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJvbS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIENTU0Jhc2lj
U2hhcGVTaGFwZShSZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJik7CisK
KyAgICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDU1NCYXNpY1NoYXBlU2hhcGVU
eXBlOyB9CisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGVxdWFs
cyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3QgZmluYWw7CisKKyAgICBSZWY8Q1NTVmFsdWVM
aXN0PiBtX3NlZ21lbnRzOworICAgIFJlZjxDU1NWYWx1ZT4gbV9mcm9tOworICAgIFdpbmRSdWxl
IG1fd2luZFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OworfTsKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBF
UyhUb1ZhbHVlVHlwZU5hbWUpIFwKQEAgLTI0NSwzICsyNzksNCBAQCBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0NTU19CQVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZUNpcmNsZSkKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlRWxsaXBzZSkKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUG9seWdvbikK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUGF0
aCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBl
U2hhcGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgw
ODA1MGNhZmI4NTg0MDk3ZmY5YWI4YjBmZWI4MzA3YWU3ZDA2NzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNwcApAQCAtMCwwICsxLDE5MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ1NTU2hhcGVTZWdtZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8o
Q1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYg
dGFyZ2V0KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKE1vdmVU
bywgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+
IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZp
bml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCkKK3sKKyAgICByZXR1cm4gQ1NT
U2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShMaW5lVG8sIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdl
dCkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxp
bmVUb0hvcml6b250YWwoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBS
ZWY8Q1NTVmFsdWU+JiYgeCkKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNy
ZWF0ZShMaW5lVG9Ib3Jpem9udGFsLCBhZmZpbml0eSwgV1RGTW92ZSh4KSk7Cit9CisKK1JlZjxD
U1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwoQ1NT
U2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgeSkK
K3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShMaW5lVG9WZXJ0aWNh
bCwgYWZmaW5pdHksIFdURk1vdmUoeSkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NT
aGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpYyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZm
aW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBw
MSwgUmVmPENTU1ZhbHVlPiYmIHAyKQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1
ZTo6Y3JlYXRlKEN1cnZlVG9DdWJpYywgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92
ZShwMSksIFdURk1vdmUocDIpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZp
bml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAx
KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEN1cnZlVG9RdWFk
cmF0aWMsIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUocDEpKTsKK30KKworUmVm
PENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWNTbW9v
dGgoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+
JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcDIpCit7CisgICAgcmV0dXJuIENTU1NoYXBlU2Vn
bWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb0N1YmljU21vb3RoLCBhZmZpbml0eSwgV1RGTW92ZSh0
YXJnZXQpLCBXVEZNb3ZlKHAyKSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBl
U2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aChDU1NTaGFwZVNlZ21lbnQ6OkNv
b3JkQWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpCit7CisgICAgcmV0
dXJuIENTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb1F1YWRyYXRpY1Ntb290aCwg
YWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENT
U1NoYXBlU2VnbWVudDo6Y3JlYXRlQXJjVG8oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5
IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcmFkaXVz
LCBDU1NWYWx1ZUlEIHN3ZWVwLCBDU1NWYWx1ZUlEIHNpemUsIFJlZjxDU1NWYWx1ZT4mJiBhbmds
ZSkKK3sKKyAgICBBU1NFUlQoc3dlZXAgPT0gQ1NTVmFsdWVDY3cgfHwgc3dlZXAgPT0gQ1NTVmFs
dWVDdyk7CisgICAgQVNTRVJUKHNpemUgPT0gQ1NTVmFsdWVTbWFsbCB8fCBzaXplID09IENTU1Zh
bHVlTGFyZ2UpOworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEFyY1Rv
LCBhZmZpbml0eSwKKyAgICAgICAgV1RGTW92ZSh0YXJnZXQpLAorICAgICAgICBXVEZNb3ZlKHJh
ZGl1cyksCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3dlZXApLAorICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHNpemUpLAorICAgICAgICBXVEZNb3ZlKGFuZ2xl
KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xv
c2VQYXRoKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKihuZXcgQ1NTU2hhcGVTZWdtZW50KENs
b3NlUGF0aCkpKTsKK30KKworYm9vbCBDU1NTaGFwZVNlZ21lbnQ6OmVxdWFscyhjb25zdCBDU1NT
aGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gb3RoZXIudHlw
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV90eXBlID09IENsb3NlUGF0
aCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q1NTU2hhcGVTZWdtZW50VmFsdWUmPigqdGhpcykuZXF1YWxzKHN0YXRpY19jYXN0PGNvbnN0IENT
U1NoYXBlU2VnbWVudFZhbHVlJj4ob3RoZXIpKTsKK30KKworU3RyaW5nIENTU1NoYXBlU2VnbWVu
dDo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHlwZSA9PSBDU1NTaGFwZVNl
Z21lbnQ6OkNsb3NlUGF0aCkKKyAgICAgICAgcmV0dXJuICJjbG9zZSJfczsKKworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21lbnRWYWx1ZSo+KHRoaXMpLT5jdXN0b21D
U1NUZXh0KCk7Cit9CisKK2Jvb2wgQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyhjb25zdCBD
U1NTaGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdAoreworICAgIEFTU0VSVCh0eXBlKCkgPT0gb3Ro
ZXIudHlwZSgpKTsKKyAgICBjb25zdCBhdXRvJiBvdGhlclZhbHVlID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUmPihvdGhlcik7CisgICAgcmV0dXJuIG90aGVyVmFsdWUu
bV9hZmZpbml0eSA9PSBtX2FmZmluaXR5CisgICAgICAgICYmIG90aGVyVmFsdWUudGFyZ2V0KCku
ZXF1YWxzKHRhcmdldCgpKQorICAgICAgICAmJiBvdGhlclZhbHVlLm1fYXJndW1lbnRzLmdldCgp
LmVxdWFscyhtX2FyZ3VtZW50cy5nZXQoKSk7Cit9CisKK1N0cmluZyBDU1NTaGFwZVNlZ21lbnRW
YWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0Cit7CisgICAgY29uc3QgYXV0byBjb21tYW5kID0g
WyZdKCkgeworICAgICAgICBzd2l0Y2ggKHR5cGUoKSkgeworICAgICAgICBjYXNlIE1vdmVUbzoK
KyAgICAgICAgICAgIHJldHVybiAibW92ZSI7CisgICAgICAgIGNhc2UgTGluZVRvOgorICAgICAg
ICAgICAgcmV0dXJuICJsaW5lIjsKKyAgICAgICAgY2FzZSBMaW5lVG9Ib3Jpem9udGFsOgorICAg
ICAgICAgICAgcmV0dXJuICJobGluZSI7CisgICAgICAgIGNhc2UgTGluZVRvVmVydGljYWw6Cisg
ICAgICAgICAgICByZXR1cm4gInZsaW5lIjsKKyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWM6Cisg
ICAgICAgIGNhc2UgQ3VydmVUb1F1YWRyYXRpYzoKKyAgICAgICAgICAgIHJldHVybiAiY3VydmUi
OworICAgICAgICBjYXNlIEN1cnZlVG9DdWJpY1Ntb290aDoKKyAgICAgICAgY2FzZSBDdXJ2ZVRv
UXVhZHJhdGljU21vb3RoOgorICAgICAgICAgICAgcmV0dXJuICJzbW9vdGgiOworICAgICAgICBj
YXNlIEFyY1RvOgorICAgICAgICAgICAgcmV0dXJuICJhcmMiOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gIiI7
CisgICAgICAgIH0KKworICAgIH07CisKKyAgICBjb25zdCBhdXRvIGNvbmp1bmN0aW9uID0gWyZd
KCkgeworICAgICAgICBzd2l0Y2ggKHR5cGUoKSkgeworICAgICAgICBjYXNlIE1vdmVUbzoKKyAg
ICAgICAgY2FzZSBMaW5lVG86CisgICAgICAgIGNhc2UgTGluZVRvSG9yaXpvbnRhbDoKKyAgICAg
ICAgY2FzZSBMaW5lVG9WZXJ0aWNhbDoKKyAgICAgICAgY2FzZSBDdXJ2ZVRvUXVhZHJhdGljU21v
b3RoOgorICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICBjYXNlIEN1cnZlVG9DdWJpYzoK
KyAgICAgICAgY2FzZSBDdXJ2ZVRvUXVhZHJhdGljOgorICAgICAgICBjYXNlIEN1cnZlVG9DdWJp
Y1Ntb290aDoKKyAgICAgICAgICAgIHJldHVybiAiIHZpYSAiOworICAgICAgICBjYXNlIEFyY1Rv
OgorICAgICAgICAgICAgcmV0dXJuICIgb2YgIjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAg
ICB9CisgICAgfTsKKworICAgIGF1dG8gYnlUbyA9IG1fYWZmaW5pdHkgPT0gQ1NTU2hhcGVTZWdt
ZW50OjpDb29yZEFmZmluaXR5OjpBYnNvbHV0ZSA/ICIgdG8gIiA6ICIgYnkgIjsKKyAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoY29tbWFuZCgpLCBieVRvLCBt
X3RhcmdldC0+Y3NzVGV4dCgpLCBjb25qdW5jdGlvbigpKTsKKyAgICBpZiAodHlwZSgpID09IEFy
Y1RvKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3VtZW50KDApLmNzc1RleHQoKSk7Cisg
ICAgICAgIGNvbnN0IGF1dG8mIHN3ZWVwID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGFy
Z3VtZW50KDEpKTsKKyAgICAgICAgY29uc3QgYXV0byYgc2l6ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPihhcmd1bWVudCgyKSk7CisgICAgICAgIGNvbnN0IGF1dG8mIGFuZ2xlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGFyZ3VtZW50KDMpKTsKKworICAgICAgICBpZiAoc3dl
ZXAudmFsdWVJRCgpID09IENTU1ZhbHVlQ3cpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
IGN3Iik7CisKKyAgICAgICAgaWYgKHNpemUudmFsdWVJRCgpID09IENTU1ZhbHVlTGFyZ2UpCisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIGxhcmdlIik7CisKKyAgICAgICAgaWYgKGFuZ2xl
LmNvbXB1dGVEZWdyZWVzKCkpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIHJvdGF0ZSAi
LCBhbmdsZS5jc3NUZXh0KCkpOworICAgIH0gZWxzZQorICAgICAgICBidWlsZGVyLmFwcGVuZCht
X2FyZ3VtZW50cy0+Y3NzVGV4dCgpKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwNzM2
YTAzMzZmMTVhMDQzMWFhNTUxOGExYWRjYjI1MTE4MTc4YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuaApAQCAtMCwwICsxLDEzNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNp
bmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8
d3RmL1R5cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBDU1NTaGFwZVNlZ21lbnQgOiBwdWJsaWMgQ1NTVmFsdWUgeworcHVibGljOgorICAgIGVu
dW0gY2xhc3MgQ29vcmRBZmZpbml0eSB7CisgICAgICAgIEFic29sdXRlLCBSZWxhdGl2ZQorICAg
IH07CisKKyAgICBlbnVtIFNlZ21lbnRUeXBlIHsKKyAgICAgICAgTW92ZVRvLAorICAgICAgICBM
aW5lVG8sCisgICAgICAgIExpbmVUb0hvcml6b250YWwsCisgICAgICAgIExpbmVUb1ZlcnRpY2Fs
LAorICAgICAgICBDdXJ2ZVRvQ3ViaWMsCisgICAgICAgIEN1cnZlVG9RdWFkcmF0aWMsCisgICAg
ICAgIEN1cnZlVG9DdWJpY1Ntb290aCwKKyAgICAgICAgQ3VydmVUb1F1YWRyYXRpY1Ntb290aCwK
KyAgICAgICAgQXJjVG8sCisgICAgICAgIENsb3NlUGF0aAorICAgIH07CisKKyAgICBTZWdtZW50
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICBib29sIGVxdWFscyhj
b25zdCBDU1NTaGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdDsKKyAgICBTdHJpbmcgY3VzdG9tQ1NT
VGV4dCgpIGNvbnN0OworICAgIH5DU1NTaGFwZVNlZ21lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBz
dGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRlQ2xvc2VQYXRoKCk7CisgICAgc3RhdGlj
IFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZU1vdmVUbyhDb29yZEFmZmluaXR5LCBSZWY8Q1NT
VmFsdWU+JiYgdGFyZ2V0KTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRl
TGluZVRvKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpOworICAgIHN0YXRp
YyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKENvb3JkQWZmaW5p
dHksIFJlZjxDU1NWYWx1ZT4mJiB4KTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4g
Y3JlYXRlTGluZVRvVmVydGljYWwoQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHkpOwor
ICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVDdXJ2ZVRvQ3ViaWMoQ29vcmRB
ZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxLCBSZWY8
Q1NTVmFsdWU+JiYgcDIpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVD
dXJ2ZVRvUXVhZHJhdGljKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJl
ZjxDU1NWYWx1ZT4mJiBwMSk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0
ZUN1cnZlVG9DdWJpY1Ntb290aChDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0
LCBSZWY8Q1NTVmFsdWU+JiYgcDIpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBj
cmVhdGVDdXJ2ZVRvUXVhZHJhdGljU21vb3RoKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4m
JiB0YXJnZXQpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVBcmNUbyhD
b29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcmFk
aXVzLCBDU1NWYWx1ZUlEIHN3ZWVwLCBDU1NWYWx1ZUlEIHNpemUsIFJlZjxDU1NWYWx1ZT4mJiBh
bmdsZSk7CisKK3Byb3RlY3RlZDoKKyAgICBDU1NTaGFwZVNlZ21lbnQoU2VnbWVudFR5cGUgdHlw
ZSkKKyAgICAgICAgOiBDU1NWYWx1ZShTaGFwZVNlZ21lbnRDbGFzcykKKyAgICAgICAgLCBtX3R5
cGUodHlwZSkgeyB9CisKK3ByaXZhdGU6CisgICAgU2VnbWVudFR5cGUgbV90eXBlOworfTsKKwor
Y2xhc3MgQ1NTU2hhcGVTZWdtZW50VmFsdWUgOiBwdWJsaWMgQ1NTU2hhcGVTZWdtZW50IHsKK3B1
YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgLi4uQXJncz4KKyAgICBzdGF0aWMgUmVmPENT
U1NoYXBlU2VnbWVudD4gY3JlYXRlKENTU1NoYXBlU2VnbWVudDo6U2VnbWVudFR5cGUgdHlwZSwK
KyAgICAgICAgQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NT
VmFsdWU+JiYgdGFyZ2V0LCBBcmdzLi4uIGFyZ3VtZW50cykKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENTU1NoYXBlU2VnbWVudFZhbHVlKHR5cGUsIGFmZmluaXR5LCBXVEZN
b3ZlKHRhcmdldCksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmd1bWVudHMpLi4uKSk7CisgICAgfQor
CisgICAgY29uc3QgQ1NTVmFsdWUmIHRhcmdldCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV90YXJnZXQuZ2V0KCk7CisgICAgfQorCisgICAgY29uc3QgQ1NTVmFsdWUmIGFyZ3VtZW50
KHNpemVfdCBpKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRzLT5sZW5n
dGgoKSA+IGkpOworICAgICAgICByZXR1cm4gKihtX2FyZ3VtZW50cy0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjayhpKSk7CisgICAgfQorCisgICAgQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5
IGFmZmluaXR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FmZmluaXR5OworICAg
IH0KKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0
OworICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBhcHBlbmRBcmdzKCkgeyB9CisgICAgdm9pZCBhcHBlbmRBcmdzKFJlZjxDU1NWYWx1ZT4mJiB2
KSB7IG1fYXJndW1lbnRzLT5hcHBlbmQoV1RGTW92ZSh2KSk7IH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIC4uLkFyZ3M+CisgICAgdm9pZCBhcHBlbmRBcmdzKFJlZjxDU1NWYWx1ZT4mJiB2LCBB
cmdzIC4uLmFyZ3MpCisgICAgeworICAgICAgICBhcHBlbmRBcmdzKFdURk1vdmUodikpOworICAg
ICAgICBhcHBlbmRBcmdzKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgLi4uQXJncz4KKyAgICBDU1NTaGFwZVNlZ21lbnRWYWx1ZShD
U1NTaGFwZVNlZ21lbnQ6OlNlZ21lbnRUeXBlIHR5cGUsIENTU1NoYXBlU2VnbWVudDo6Q29vcmRB
ZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgQXJncyAuLi5hcmdzKQor
ICAgICAgICA6IENTU1NoYXBlU2VnbWVudCh0eXBlKQorICAgICAgICAsIG1fYWZmaW5pdHkoYWZm
aW5pdHkpCisgICAgICAgICwgbV90YXJnZXQoV1RGTW92ZSh0YXJnZXQpKQorICAgICAgICAsIG1f
YXJndW1lbnRzKENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKSkKKyAgICB7Cisg
ICAgICAgIGFwcGVuZEFyZ3Moc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisK
KyAgICBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgbV9hZmZpbml0eTsKKyAgICBSZWY8
Q1NTVmFsdWU+IG1fdGFyZ2V0OworICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IG1fYXJndW1lbnRzOwor
fTsKKworfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfVkFMVUUoQ1NTU2hhcGVTZWdtZW50
LCBpc1NoYXBlU2VnbWVudFZhbHVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCA1ZTIx
ODIyNjNmY2VhNWNhZmYzNjNlNGZmNDQwMzk0MzgxMWY2ZGFjLi42MzA5ZTNmZjczZGNjYjY2NzMx
ZjIyNGI2NDlkNzg5MmRhMmVkMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTYwLDYg
KzYwLDcgQEAKICNpbmNsdWRlICJDU1NSYXlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1JlZmxlY3RW
YWx1ZS5oIgogI2luY2x1ZGUgIkNTU1NoYWRvd1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTU2hhcGVT
ZWdtZW50LmgiCiAjaW5jbHVkZSAiQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU1VuaWNvZGVSYW5nZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCkBAIC0y
MzAsNiArMjMxLDggQEAgYm9vbCBDU1NWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1ZhbHVlJiBvdGhl
cikgY29uc3QKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0ZvbnRTdHls
ZVZhbHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNlIEZvbnRTdHlsZVJhbmdlQ2xhc3M6
CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NGb250U3R5bGVSYW5nZVZh
bHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFNoYXBlU2VnbWVudENsYXNzOgorICAg
ICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTU2hhcGVTZWdtZW50PigqdGhpcywg
b3RoZXIpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzksNiArMzQyLDggQEAgU3RyaW5n
IENTU1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0Zv
bnRTdHlsZVZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIGNhc2UgRm9udFN0eWxl
UmFuZ2VDbGFzczoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0ZvbnRTdHlsZVJhbmdlVmFs
dWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CisgICAgY2FzZSBTaGFwZVNlZ21lbnRDbGFzczoK
KyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1NoYXBlU2VnbWVudD4oKnRoaXMpLmN1c3RvbUNT
U1RleHQoKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ5Nyw2ICs1
MDIsOSBAQCB2b2lkIENTU1ZhbHVlOjpkZXN0cm95KCkKICAgICBjYXNlIEZvbnRTdHlsZVJhbmdl
Q2xhc3M6CiAgICAgICAgIGRlbGV0ZSBkb3duY2FzdDxDU1NGb250U3R5bGVSYW5nZVZhbHVlPih0
aGlzKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2hhcGVTZWdtZW50Q2xhc3M6CisgICAg
ICAgIGRlbGV0ZSBkb3duY2FzdDxDU1NTaGFwZVNlZ21lbnQ+KHRoaXMpOworICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUu
aAppbmRleCBkYWRlNThkYTIwNjhiN2VlY2NkYWEzMzE5MThjNDRkM2E3NmUwNWM4Li4zZjc1YWYz
MGFiOTAyOGFlYjJkMTUyZjE0NWM5ODkzNTdiNTE5ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApA
QCAtMTM0LDYgKzEzNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR3JpZEF1dG9SZXBlYXRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEdyaWRBdXRvUmVwZWF0Q2xhc3M7IH0K
ICAgICBib29sIGlzR3JpZEludGVnZXJSZXBlYXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xh
c3NUeXBlID09IEdyaWRJbnRlZ2VyUmVwZWF0Q2xhc3M7IH0KICAgICBib29sIGlzR3JpZFRlbXBs
YXRlQXJlYXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEdyaWRUZW1wbGF0
ZUFyZWFzQ2xhc3M7IH0KKyAgICBib29sIGlzU2hhcGVTZWdtZW50VmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX2NsYXNzVHlwZSA9PSBTaGFwZVNlZ21lbnRDbGFzczsgfQogICAgIGJvb2wgaXNHcmlk
TGluZU5hbWVzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBHcmlkTGluZU5h
bWVzQ2xhc3M7IH0KICAgICBib29sIGlzU3ViZ3JpZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9j
bGFzc1R5cGUgPT0gU3ViZ3JpZENsYXNzOyB9CiAgICAgYm9vbCBpc1VuaWNvZGVSYW5nZVZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gVW5pY29kZVJhbmdlQ2xhc3M7IH0KQEAg
LTIwOSw2ICsyMTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIENhbGN1bGF0aW9uQ2xhc3MsCiAg
ICAgICAgIEdyaWRUZW1wbGF0ZUFyZWFzQ2xhc3MsCiAgICAgICAgIFZhbHVlUGFpckNsYXNzLAor
ICAgICAgICBTaGFwZVNlZ21lbnRDbGFzcywKIAogICAgICAgICBDU1NDb250ZW50RGlzdHJpYnV0
aW9uQ2xhc3MsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdv
cmRzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggMmRk
NGMwYmFjM2M5YTNhNGQ2M2JhZWRjMjk5MTA4MDJiNTIyMDJmOS4uMWI2NTRlYjIxOWQ0ZTFjOWIy
MjhmZTE3MTU4NTM5MzgwNWM1YjEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29y
ZHMuaW4KQEAgLTEyODYsNiArMTI4NiwyNyBAQCByZWN0CiAKIC8vIHNoYXBlcwogcG9seWdvbgor
c2hhcGUKKworLy8gc2hhcGUoKQorLy8gZnJvbQorLy8gdG8KKy8vIG1vdmUKK2xpbmUKK2hsaW5l
Cit2bGluZQorY3VydmUKKy8vIHNtb290aAorYXJjCitjbG9zZQordmlhCitvZgorYnkKK2N3Citj
Y3cKKy8vIGxhcmdlCisvLyBzbWFsbAorLy8gcm90YXRlCiAKIC8vIEBmb250LWZhY2Ugc3JjCiBm
b3JtYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5jdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODRhNTJmZmQ4NjBlZDczZDRlNzNhZmQxNmQzZWJiYzM1NGMyOGU1ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMuY3Bw
CkBAIC0wLDAgKzEsMjI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE5vYW0gUm9zZW50
aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIgorCisjaW5jbHVkZSAiQmFzaWNTaGFwZVNlZ21l
bnQuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAi
Q1NTU2hhcGVTZWdtZW50LmgiCisjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NW
YWx1ZVBvb2wuaCIKKyNpbmNsdWRlICJQYWlyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY29udmVydFBvaW50VG9DU1NWYWx1ZShjb25z
dCBMZW5ndGhQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICBh
dXRvJiBwb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKKyAgICByZXR1cm4gcG9vbC5j
cmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoCisgICAgICAgIHBvb2wuY3JlYXRlVmFsdWUocG9pbnQu
eCgpLCBzdHlsZSksCisgICAgICAgIHBvb2wuY3JlYXRlVmFsdWUocG9pbnQueSgpLCBzdHlsZSks
CisgICAgICAgIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkRvTm90Q29hbGVzY2UpKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWU+IGF1dG8gdG9DU1NBcmdzKGNvbnN0IFZhbHVl
JiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKKwordGVtcGxhdGU8PgorYXV0byB0b0NTU0FyZ3MoY29u
c3QgTGVuZ3RoJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVy
biBzdGQ6Om1ha2VfdHVwbGU8UmVmPENTU1ZhbHVlPj4oQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsKK30KKwordGVtcGxhdGU8PgorYXV0byB0b0NT
U0FyZ3M8TGVuZ3RoUG9pbnQ+KGNvbnN0IExlbmd0aFBvaW50JiB2YWx1ZSwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoY29udmVydFBvaW50
VG9DU1NWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsKK30KKwordGVtcGxhdGU8PgorYXV0byB0b0NTU0Fy
Z3MoY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKAorICAgICAgICBjb252
ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnRhcmdldFBvaW50LCBzdHlsZSksCisgICAgICAgIGNv
bnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUucG9pbnQxLCBzdHlsZSksCisgICAgICAgIGNvbnZl
cnRQb2ludFRvQ1NTVmFsdWUodmFsdWUucG9pbnQyLCBzdHlsZSkpOworfQorCit0ZW1wbGF0ZTw+
CithdXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYgdmFs
dWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3R1
cGxlKAorICAgICAgICBjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnRhcmdldFBvaW50LCBz
dHlsZSksCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUucG9pbnQxLCBzdHls
ZSkpOworfQorCit0ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvQ3ViaWNT
bW9vdGhTaGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorewor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFs
dWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NW
YWx1ZSh2YWx1ZS5wb2ludDIsIHN0eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NB
cmdzKGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkKK3sKKyAgICBhdXRvJiBwb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKKyAg
ICBhdXRvIHJhZGl1cyA9IFBhaXI6OmNyZWF0ZSgKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZSh2
YWx1ZS5yYWRpdXMud2lkdGgsIHN0eWxlKSwKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZSh2YWx1
ZS5yYWRpdXMuaGVpZ2h0LCBzdHlsZSksCisgICAgICAgIFBhaXI6OklkZW50aWNhbFZhbHVlRW5j
b2Rpbmc6OkNvYWxlc2NlKTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAg
IGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAg
ICAgcG9vbC5jcmVhdGVWYWx1ZShXVEZNb3ZlKHJhZGl1cykpLAorICAgICAgICB2YWx1ZS5zd2Vl
cCA/IENTU1ZhbHVlQ3cgOiBDU1NWYWx1ZUNjdywKKyAgICAgICAgdmFsdWUubGFyZ2VBcmMgPyBD
U1NWYWx1ZUxhcmdlIDogQ1NTVmFsdWVTbWFsbCwKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZSh2
YWx1ZS5hbmdsZSwgQ1NTVW5pdFR5cGU6OkNTU19ERUcpKTsKK30KKworUmVmPENTU1NoYXBlU2Vn
bWVudD4gdG9DU1NTaGFwZVNlZ21lbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBC
YXNpY1NoYXBlU2VnbWVudCYgc2VnbWVudCkKK3sKKyAgICBhdXRvIHRvQ1NTID0gWyZdKENTU1No
YXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgYXV0byBjcmVhdGUsIGNvbnN0IGF1
dG8mIGFzKSB7CisgICAgICAgIHJldHVybiBzdGQ6OmFwcGx5KGNyZWF0ZSwgc3RkOjp0dXBsZV9j
YXQoc3RkOjptYWtlX3R1cGxlKGFmZmluaXR5KSwgdG9DU1NBcmdzKChzZWdtZW50LiphcykoKSwg
c3R5bGUpKSk7CisgICAgfTsKKworI2RlZmluZSBDUkVBVEVfQ1NTX1NIQVBFX1NFR01FTlRfRlJP
TV9CQVNJQ19TSEFQRV9TRUdNRU5UKFR5cGUpIFwKKyAgICBjYXNlIFNoYXBlU2VnbWVudCMjVHlw
ZTo6QWJzU2VnVHlwZTogXAorICAgICAgICByZXR1cm4gdG9DU1MoQ1NTU2hhcGVTZWdtZW50OjpD
b29yZEFmZmluaXR5OjpBYnNvbHV0ZSwgQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGUjI1R5cGUsICZC
YXNpY1NoYXBlU2VnbWVudDo6YXMjI1R5cGUpOyBcCisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5
cGU6OlJlbFNlZ1R5cGU6IFwKKyAgICAgICAgcmV0dXJuIHRvQ1NTKENTU1NoYXBlU2VnbWVudDo6
Q29vcmRBZmZpbml0eTo6UmVsYXRpdmUsIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlIyNUeXBlLCAm
QmFzaWNTaGFwZVNlZ21lbnQ6OmFzIyNUeXBlKTsgXAorCisgICAgc3dpdGNoIChzZWdtZW50LnR5
cGUoKSkgeworICAgIGNhc2UgUGF0aFNlZ0Nsb3NlUGF0aDoKKyAgICAgICAgcmV0dXJuIENTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisKKyAgICAgICAgRk9SX0VBQ0hfU0hBUEVf
U0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoQ1JFQVRFX0NTU19TSEFQRV9TRUdNRU5UX0ZST01fQkFT
SUNfU0hBUEVfU0VHTUVOVCkKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgo
KTsKKyAgICB9Cit9Cit0ZW1wbGF0ZSA8Y2xhc3MgRGVmaW5pdGlvbj4KK1NWR1BhdGhTZWdUeXBl
IHNlZ21lbnRUeXBlKGNvbnN0IENTU1NoYXBlU2VnbWVudFZhbHVlJiBzZWdtZW50V2l0aFZhbHVl
KQoreworICAgIHJldHVybiBzZWdtZW50V2l0aFZhbHVlLmFmZmluaXR5KCkgPT0gQ1NTU2hhcGVT
ZWdtZW50OjpDb29yZEFmZmluaXR5OjpBYnNvbHV0ZSA/IERlZmluaXRpb246OkFic1NlZ1R5cGUg
OiBEZWZpbml0aW9uOjpSZWxTZWdUeXBlOworfQorCitSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGZy
b21DU1NTaGFwZVNlZ21lbnQoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVy
c2lvbkRhdGEsIGNvbnN0IENTU1NoYXBlU2VnbWVudCYgY3NzU2VnbWVudCkKK3sKKyAgICBhdXRv
IHRvTGVuZ3RoID0gWyZdKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkgLT4gTGVuZ3RoIHsKKyAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuY29udmVydFRvTGVu
Z3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNl
bnRDb252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKKyAg
ICB9OworCisgICAgYXV0byB0b0xlbmd0aFBvaW50ID0gWyZdKGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkgLT4gTGVuZ3RoUG9pbnQgeworICAgICAgICBhdXRvIHBhaXIgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgpOworICAgICAgICBBU1NFUlQocGFpcik7Cisg
ICAgICAgIHJldHVybiBMZW5ndGhQb2ludCB7IHRvTGVuZ3RoKCpwYWlyLT5maXJzdCgpKSwgdG9M
ZW5ndGgoKnBhaXItPnNlY29uZCgpKSB9OworICAgIH07CisKKyAgICBhdXRvIHRvTGVuZ3RoU2l6
ZSA9IFsmXShjb25zdCBDU1NWYWx1ZSYgdmFsdWUpIC0+IExlbmd0aFNpemUgeworICAgICAgICBh
dXRvIHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgp
OworICAgICAgICBBU1NFUlQocGFpcik7CisgICAgICAgIHJldHVybiBMZW5ndGhTaXplIHsgdG9M
ZW5ndGgoKnBhaXItPmZpcnN0KCkpLCB0b0xlbmd0aCgqcGFpci0+c2Vjb25kKCkpIH07CisgICAg
fTsKKworICAgIGF1dG8gdHlwZSA9IGNzc1NlZ21lbnQudHlwZSgpOworCisgICAgaWYgKHR5cGUg
PT0gQ1NTU2hhcGVTZWdtZW50OjpDbG9zZVBhdGgpCisgICAgICAgIHJldHVybiBCYXNpY1NoYXBl
U2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisKKyAgICBjb25zdCBhdXRvJiBzZWdtZW50V2l0
aFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUmPihjc3NTZWdt
ZW50KTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpN
b3ZlVG86IHsKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8o
CisgICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRNb3ZlVG8+KHNlZ21lbnRXaXRo
VmFsdWUpLAorICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdl
dCgpKSk7CisgICAgfQorCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkxpbmVUbzoKKyAgICAg
ICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG8oCisgICAgICAgICAgICBz
ZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRMaW5lVG8+KHNlZ21lbnRXaXRoVmFsdWUpLAorICAgICAg
ICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKSk7CisKKyAgICBj
YXNlIENTU1NoYXBlU2VnbWVudDo6TGluZVRvSG9yaXpvbnRhbDoKKyAgICAgICAgcmV0dXJuIEJh
c2ljU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKAorICAgICAgICAgICAgc2Vn
bWVudFR5cGU8U2hhcGVTZWdtZW50TGluZVRvSG9yaXpvbnRhbD4oc2VnbWVudFdpdGhWYWx1ZSks
CisgICAgICAgICAgICB0b0xlbmd0aChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKSk7CisKKyAg
ICBjYXNlIENTU1NoYXBlU2VnbWVudDo6TGluZVRvVmVydGljYWw6CisgICAgICAgIHJldHVybiBC
YXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwoCisgICAgICAgICAgICBzZWdt
ZW50VHlwZTxTaGFwZVNlZ21lbnRMaW5lVG9WZXJ0aWNhbD4oc2VnbWVudFdpdGhWYWx1ZSksCisg
ICAgICAgICAgICB0b0xlbmd0aChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKSk7CisKKyAgICBj
YXNlIENTU1NoYXBlU2VnbWVudDo6Q3VydmVUb0N1YmljOgorICAgICAgICByZXR1cm4gQmFzaWNT
aGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpYygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBl
PFNoYXBlU2VnbWVudEN1cnZlVG9DdWJpYz4oc2VnbWVudFdpdGhWYWx1ZSksIHsKKyAgICAgICAg
ICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMCkpLAorICAg
ICAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgxKSks
CisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgp
KQorICAgICAgICAgICAgfSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q3VydmVUb1F1
YWRyYXRpYzoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRv
UXVhZHJhdGljKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50Q3VydmVUb1F1
YWRyYXRpYz4oc2VnbWVudFdpdGhWYWx1ZSksIHsKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBv
aW50KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMCkpLAorICAgICAgICAgICAgICAgIHRvTGVu
Z3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAgICAgIH0pOworCisg
ICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkN1cnZlVG9DdWJpY1Ntb290aDoKKyAgICAgICAgcmV0
dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWNTbW9vdGgoCisgICAgICAg
ICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWNTbW9vdGg+KHNlZ21lbnRX
aXRoVmFsdWUpLCB7CisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZh
bHVlLmFyZ3VtZW50KDApKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRX
aXRoVmFsdWUudGFyZ2V0KCkpCisgICAgICAgICAgICB9KTsKKworICAgIGNhc2UgQ1NTU2hhcGVT
ZWdtZW50OjpDdXJ2ZVRvUXVhZHJhdGljU21vb3RoOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFw
ZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoCisgICAgICAgICAgICBzZWdt
ZW50VHlwZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljU21vb3RoPihzZWdtZW50V2l0aFZh
bHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQo
KSkpOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkFyY1RvOgorICAgICAgICByZXR1cm4g
QmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8
U2hhcGVTZWdtZW50QXJjVG8+KHNlZ21lbnRXaXRoVmFsdWUpLCB7CisgICAgICAgICAgICAgICAg
LnJhZGl1cyA9IHRvTGVuZ3RoU2l6ZShzZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50KDApKSwKKyAg
ICAgICAgICAgICAgICAuc3dlZXAgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oc2VnbWVu
dFdpdGhWYWx1ZS5hcmd1bWVudCgxKSkudmFsdWVJRCgpID09IENTU1ZhbHVlQ3csCisgICAgICAg
ICAgICAgICAgLmxhcmdlQXJjID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHNlZ21lbnRX
aXRoVmFsdWUuYXJndW1lbnQoMikpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxhcmdlLAorICAgICAg
ICAgICAgICAgIC5hbmdsZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihzZWdtZW50V2l0
aFZhbHVlLmFyZ3VtZW50KDMpKS5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfREVHKSwKKyAg
ICAgICAgICAgICAgICAudGFyZ2V0UG9pbnQgPSB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFs
dWUudGFyZ2V0KCkpCisgICAgICAgICAgICB9KTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50
OjpDbG9zZVBhdGg6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xv
c2VQYXRoKCk7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2NDBkNzFlMjlh
NTA4MzgyNTNlMGMyZWE3MDk2MTE0NDkxZDYyZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmgKQEAgLTAsMCArMSw0NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
CisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3
dGYvUmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQmFzaWNTaGFwZVNlZ21l
bnQ7CitjbGFzcyBDU1NTaGFwZVNlZ21lbnQ7CitjbGFzcyBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhOworY2xhc3MgUmVuZGVyU3R5bGU7CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IHRvQ1NTU2hh
cGVTZWdtZW50KGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmKTsK
K1JlZjxCYXNpY1NoYXBlU2VnbWVudD4gZnJvbUNTU1NoYXBlU2VnbWVudChjb25zdCBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhJiwgY29uc3QgQ1NTU2hhcGVTZWdtZW50Jik7CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggZDFi
NWQzNDU1NTkxMGJkODMzZWFlOWZmYmM5NTdiYzFjZDMyNDkwYi4uOGVhNGZhODZlZjRiNGViYWM2
ZjdkZjFmMWQ3NDNiZTQ5ZWZhYWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJDU1NG
b250RmFjZVNyY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkNTU0ZvbnRQYWxldHRlVmFsdWVzT3ZlcnJpZGVDb2xvcnNWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU1NoYXBlU2VnbWVudC5oIgogI2lmIEVOQUJMRShWQVJJQVRJT05fRk9OVFMpCiAjaW5j
bHVkZSAiQ1NTRm9udFZhcmlhdGlvblZhbHVlLmgiCiAjZW5kaWYKQEAgLTI2NTIsNiArMjY1Mywx
OTYgQEAgc3RhdGljIFJlZlB0cjxDU1NCYXNpY1NoYXBlUGF0aD4gY29uc3VtZUJhc2ljU2hhcGVQ
YXRoKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MKICAgICByZXR1cm4gc2hhcGU7CiB9CiAKK3N0
YXRpYyBSZWZQdHI8Q1NTU2hhcGVTZWdtZW50PiBjb25zdW1lU2hhcGVTZWdtZW50KENTU1BhcnNl
clRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7Cisg
ICAgYXV0byBjb21tYW5kID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAg
IGlmIChjb21tYW5kLmlkKCkgPT0gQ1NTVmFsdWVDbG9zZSkKKyAgICAgICAgcmV0dXJuIENTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisKKyAgICBpZiAoIWlkZW50TWF0Y2hlczxD
U1NWYWx1ZVRvLCBDU1NWYWx1ZUJ5PihhcmdzLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBhdXRvIGFmZmluaXR5ID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVUbyA/IENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZp
bml0eTo6QWJzb2x1dGUgOiBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OlJlbGF0aXZl
OworICAgIGF1dG8gY29uc3VtZU5leHRMZW5ndGhPclBlcmNlbnQgPSBbJl0oKSB7CisgICAgICAg
IHJldHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFsdWVS
YW5nZTo6QWxsKTsKKyAgICB9OworCisgICAgaWYgKGNvbW1hbmQuaWQoKSA9PSBDU1NWYWx1ZUhs
aW5lIHx8IGNvbW1hbmQuaWQoKSA9PSBDU1NWYWx1ZVZsaW5lKSB7CisgICAgICAgIGF1dG8gdmFs
dWUgPSBjb25zdW1lTmV4dExlbmd0aE9yUGVyY2VudCgpOworICAgICAgICBpZiAoIXZhbHVlKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIGNvbW1hbmQuaWQo
KSA9PSBDU1NWYWx1ZUhsaW5lCisgICAgICAgICAgICA/IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRl
TGluZVRvSG9yaXpvbnRhbChhZmZpbml0eSwgdmFsdWUucmVsZWFzZU5vbk51bGwoKSkKKyAgICAg
ICAgICAgIDogQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9WZXJ0aWNhbChhZmZpbml0eSwg
dmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorCisgICAgYXV0byBjb25zdW1lTmV4dENv
b3JkaW5hdGVzID0gWyZdICgpIC0+IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geworICAgICAg
ICBhdXRvIHggPSBjb25zdW1lTmV4dExlbmd0aE9yUGVyY2VudCgpOworICAgICAgICBpZiAoIXgp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvIHkgPSBjb25zdW1l
TmV4dExlbmd0aE9yUGVyY2VudCgpOworICAgICAgICBpZiAoIXkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHgu
cmVsZWFzZU5vbk51bGwoKSwgeS5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJZGVudGljYWxWYWx1
ZUVuY29kaW5nOjpEb05vdENvYWxlc2NlKTsKKyAgICB9OworCisgICAgYXV0byBhdEVuZE9mU2Vn
bWVudCA9IFsmXSAoKSB7CisgICAgICAgIHJldHVybiBhcmdzLmF0RW5kKCkgfHwgYXJncy5wZWVr
KCkudHlwZSgpID09IENvbW1hVG9rZW47CisgICAgfTsKKworICAgIGF1dG8gdGFyZ2V0UG9pbnQg
PSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7CisgICAgaWYgKCF0YXJnZXRQb2ludCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzd2l0Y2ggKGNvbW1hbmQuaWQoKSkgeworICAgIGNh
c2UgQ1NTVmFsdWVNb3ZlOgorICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVN
b3ZlVG8oYWZmaW5pdHksIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCkpOworCisgICAgY2Fz
ZSBDU1NWYWx1ZUxpbmU6CisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxp
bmVUbyhhZmZpbml0eSwgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICBjYXNl
IENTU1ZhbHVlQ3VydmU6IHsKKyAgICAgICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgIT0gQ1NTVmFs
dWVWaWEpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhcmdzLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGF1dG8gdmlhUG9pbnQxID0gY29uc3Vt
ZU5leHRDb29yZGluYXRlcygpOworICAgICAgICBpZiAoIXZpYVBvaW50MSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIGlmIChhdEVuZE9mU2VnbWVudCgpKQorICAgICAg
ICAgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpYyhhZmZp
bml0eSwgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSwgdmlhUG9pbnQxLnJlbGVhc2VOb25O
dWxsKCkpOworCisgICAgICAgIGF1dG8gdmlhUG9pbnQyID0gY29uc3VtZU5leHRDb29yZGluYXRl
cygpOworICAgICAgICBpZiAoIXZpYVBvaW50MikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpYyhh
ZmZpbml0eSwgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCksIHZpYVBvaW50MS5yZWxlYXNl
Tm9uTnVsbCgpLCB2aWFQb2ludDIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorCisgICAgY2Fz
ZSBDU1NWYWx1ZVNtb290aDogeworICAgICAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSAhPSBDU1NW
YWx1ZVZpYSkKKyAgICAgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZl
VG9RdWFkcmF0aWNTbW9vdGgoYWZmaW5pdHksICB0YXJnZXRQb2ludC5yZWxlYXNlTm9uTnVsbCgp
KTsKKworICAgICAgICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAg
IGF1dG8gdmlhUG9pbnQgPSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7CisgICAgICAgIGlmICgh
dmlhUG9pbnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4g
Q1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWNTbW9vdGgoYWZmaW5pdHksICB0YXJn
ZXRQb2ludC5yZWxlYXNlTm9uTnVsbCgpLCB2aWFQb2ludC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICB9CisKKyAgICBjYXNlIENTU1ZhbHVlQXJjOiB7CisgICAgICAgIGlmIChhcmdzLnBlZWsoKS5p
ZCgpICE9IENTU1ZhbHVlT2YpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAg
ICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gcnggPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQu
bW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOworICAgICAgICBpZiAoIXJ4KQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiByeTsKKyAgICAgICAgaWYgKGFyZ3MucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKQorICAg
ICAgICAgICAgcnkgPSByeDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByeSA9IGNvbnN1
bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdh
dGl2ZSk7CisgICAgICAgICAgICBpZiAoIXJ5KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICB9CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBzd2Vl
cDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBzaXplOworICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IGFuZ2xlOworCisgICAgICAgIHdoaWxlICghYXRFbmRPZlNlZ21lbnQoKSkg
eworICAgICAgICAgICAgYXV0byBuZXh0SWRlbnQgPSBhcmdzLnBlZWsoKS5pZCgpOworICAgICAg
ICAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZVJvdGF0ZT4obmV4dElkZW50KSAmJiAhYW5n
bGUpIHsKKyAgICAgICAgICAgICAgICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
aWQoKTsKKyAgICAgICAgICAgICAgICBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBjb250ZXh0
Lm1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6OkZvcmJpZCk7
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVDdywgQ1NTVmFsdWVDY3c+KG5leHRJZGVudCkgJiYg
IXN3ZWVwLmhhc192YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgc3dlZXAgPSBhcmdzLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZUxh
cmdlLCBDU1NWYWx1ZVNtYWxsPihuZXh0SWRlbnQpICYmICFzaXplLmhhc192YWx1ZSgpKSB7Cisg
ICAgICAgICAgICAgICAgc2l6ZSA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5p
ZCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghYW5nbGUpCisg
ICAgICAgICAgICBhbmdsZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMCwgQ1NTVW5pdFR5
cGU6OkNTU19ERUcpOworCisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFy
Y1RvKAorICAgICAgICAgICAgYWZmaW5pdHksCisgICAgICAgICAgICB0YXJnZXRQb2ludC5yZWxl
YXNlTm9uTnVsbCgpLAorICAgICAgICAgICAgY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHJ4LnJl
bGVhc2VOb25OdWxsKCksIHJ5LnJlbGVhc2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVl
RW5jb2Rpbmc6OkNvYWxlc2NlKSwKKyAgICAgICAgICAgIHN3ZWVwLnZhbHVlX29yKENTU1ZhbHVl
Q2N3KSwKKyAgICAgICAgICAgIHNpemUudmFsdWVfb3IoQ1NTVmFsdWVTbWFsbCksCisgICAgICAg
ICAgICBhbmdsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitzdGF0aWMgUmVmUHRyPENTU0Jhc2ljU2hh
cGVTaGFwZT4gY29uc3VtZUJhc2ljU2hhcGVTaGFwZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdz
LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIFdpbmRSdWxlIHdpbmRS
dWxlID0gV2luZFJ1bGU6Ok5vblplcm87CisKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVl
RXZlbm9kZCwgQ1NTVmFsdWVOb256ZXJvPihhcmdzLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgd2lu
ZFJ1bGUgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSA9PSBDU1NWYWx1
ZUV2ZW5vZGQgPyBXaW5kUnVsZTo6RXZlbk9kZCA6IFdpbmRSdWxlOjpOb25aZXJvOworCisgICAg
aWYgKGFyZ3MucGVlaygpLmlkKCkgIT0gQ1NTVmFsdWVGcm9tKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKworICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaW5pdGlhbFggPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50
KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKKyAgICBpZiAoIWluaXRpYWxY
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gaW5pdGlhbFkgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwg
VmFsdWVSYW5nZTo6QWxsKTsKKyAgICBpZiAoIWluaXRpYWxZKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHNlZ21lbnRzID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworCisgICAgZm9yICg7OykgeworICAgICAgICBh
dXRvIHNlZ21lbnQgPSBjb25zdW1lU2hhcGVTZWdtZW50KGFyZ3MsIGNvbnRleHQpOworICAgICAg
ICBpZiAoIXNlZ21lbnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBz
ZWdtZW50cy0+YXBwZW5kKHNlZ21lbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGlmIChh
cmdzLmF0RW5kKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoIWNvbnN1bWVD
b21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBhdXRvIHNoYXBlID0gQ1NTQmFzaWNTaGFwZVNoYXBlOjpjcmVhdGUo
CisgICAgICAgIGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcigKKyAgICAgICAgICAgIGluaXRpYWxY
LnJlbGVhc2VOb25OdWxsKCksCisgICAgICAgICAgICBpbml0aWFsWS5yZWxlYXNlTm9uTnVsbCgp
LAorICAgICAgICAgICAgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNj
ZSksCisgICAgICAgIFdURk1vdmUoc2VnbWVudHMpKTsKKworICAgIHNoYXBlLT5zZXRXaW5kUnVs
ZSh3aW5kUnVsZSk7CisgICAgcmV0dXJuIHNoYXBlOworfQorCiBzdGF0aWMgdm9pZCBjb21wbGV0
ZTRTaWRlcyhSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNpZGVbNF0pCiB7CiAgICAgaWYgKHNp
ZGVbM10pCkBAIC0yNzU3LDYgKzI5NDgsOCBAQCBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBjb25zdW1lQmFzaWNTaGFwZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgYwogICAg
ICAgICBzaGFwZSA9IGNvbnN1bWVCYXNpY1NoYXBlSW5zZXQoYXJncywgY29udGV4dCk7CiAgICAg
ZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVQYXRoKQogICAgICAgICBzaGFwZSA9IGNvbnN1bWVCYXNp
Y1NoYXBlUGF0aChhcmdzKTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVNoYXBlKQorICAg
ICAgICBzaGFwZSA9IGNvbnN1bWVCYXNpY1NoYXBlU2hhcGUoYXJncywgY29udGV4dCk7CiAgICAg
aWYgKCFzaGFwZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmFuZ2UgPSByYW5nZUNv
cHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZVNlZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVT
ZWdtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTFmYjBlYTljZmQ5MTNjNTVkZTQ0NDY0OThmNTg4YTFk
ODU2NDJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0Jhc2ljU2hhcGVTZWdtZW50LmNwcApAQCAtMCwwICsxLDI5MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCYXNpY1NoYXBlU2VnbWVudC5oIgorCisjaW5jbHVk
ZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiUGF0aC5oIgorI2luY2x1ZGUgIlNWR1Bh
dGhCdWlsZGVyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlci5oIgorI2luY2x1ZGUgIlNWR1Bh
dGhTZWcuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnSW1wbC5oIgorI2luY2x1ZGUgIlNWR1BhdGhT
b3VyY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWZp
bml0aW9uPgorY2xhc3MgQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZSA6IHB1YmxpYyBCYXNpY1NoYXBl
U2VnbWVudCB7CitwdWJsaWM6CisgICAgY29uc3QgdHlwZW5hbWUgRGVmaW5pdGlvbjo6VmFsdWUm
IHZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh0eXBlKCkgPT0gRGVmaW5pdGlv
bjo6QWJzU2VnVHlwZSB8fCB0eXBlKCkgPT0gRGVmaW5pdGlvbjo6UmVsU2VnVHlwZSk7CisgICAg
ICAgIHJldHVybiBtX3ZhbHVlOworICAgIH0KKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IEJhc2lj
U2hhcGVTZWdtZW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlKCkg
PT0gb3RoZXIudHlwZSgpCisgICAgICAgICAgICAmJiB2YWx1ZSgpID09IHN0YXRpY19jYXN0PGNv
bnN0IEJhc2ljU2hhcGVTZWdtZW50VmFsdWU8RGVmaW5pdGlvbj4mPihvdGhlcikudmFsdWUoKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgUmVmPEJhc2ljU2hhcGVTZWdtZW50VmFsdWU+IGNyZWF0ZShC
YXNpY1NoYXBlU2VnbWVudDo6VHlwZSB0eXBlLCB0eXBlbmFtZSBEZWZpbml0aW9uOjpWYWx1ZSYm
IHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHR5cGUgPT0gRGVmaW5pdGlvbjo6QWJzU2Vn
VHlwZSB8fCB0eXBlID09IERlZmluaXRpb246OlJlbFNlZ1R5cGUpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBCYXNpY1NoYXBlU2VnbWVudFZhbHVlPERlZmluaXRpb24+KHR5cGUsIFdU
Rk1vdmUodmFsdWUpKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgQmFzaWNTaGFwZVNlZ21l
bnRWYWx1ZShCYXNpY1NoYXBlU2VnbWVudDo6VHlwZSB0eXBlLCB0eXBlbmFtZSBEZWZpbml0aW9u
OjpWYWx1ZSYmIHZhbHVlKQorICAgICAgICA6IEJhc2ljU2hhcGVTZWdtZW50KHR5cGUpCisgICAg
ICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkgeyB9CisKK3ByaXZhdGU6CisgICAgdHlwZW5h
bWUgRGVmaW5pdGlvbjo6VmFsdWUgbV92YWx1ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitzdGF0aWMgY29uc3QgdHlwZW5hbWUgVDo6VmFsdWUmIGV4dHJhY3RWYWx1ZShjb25zdCBCYXNp
Y1NoYXBlU2VnbWVudCYgc2VnKQoreworICAgIEFTU0VSVChzZWcudHlwZSgpID09IFQ6OkFic1Nl
Z1R5cGUgfHwgc2VnLnR5cGUoKSA9PSBUOjpSZWxTZWdUeXBlKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxUPiY+KHNlZykudmFsdWUoKTsKK30K
KworYm9vbCBCYXNpY1NoYXBlU2VnbWVudDo6ZXF1YWxzKGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50
JiBvdGhlcikgY29uc3QKK3sKKyAgICBhdXRvIHR5cGUgPSB0aGlzLT50eXBlKCk7CisgICAgaWYg
KHR5cGUgIT0gb3RoZXIudHlwZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNkZWZpbmUg
Q09NUEFSRV9TSEFQRV9TRUdNRU5UX1ZBTFVFKFR5cGUpIFwKKyAgICBjYXNlIFNoYXBlU2VnbWVu
dCMjVHlwZTo6QWJzU2VnVHlwZTogXAorICAgIGNhc2UgU2hhcGVTZWdtZW50IyNUeXBlOjpSZWxT
ZWdUeXBlOiBcCisgICAgICAgIHJldHVybiBleHRyYWN0VmFsdWU8U2hhcGVTZWdtZW50IyNUeXBl
PigqdGhpcykgPT0gZXh0cmFjdFZhbHVlPFNoYXBlU2VnbWVudCMjVHlwZT4ob3RoZXIpOworCisg
ICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgICAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9W
QUxVRShDT01QQVJFX1NIQVBFX1NFR01FTlRfVkFMVUUpCisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKKyNkZWZpbmUgSU1QTEVNRU5UX1NIQVBFX1NFR01FTlRfVkFMVUUoVFlQRSkg
XAorUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlIyNUWVBF
KEJhc2ljU2hhcGVTZWdtZW50OjpUeXBlIHR5cGUsIHR5cGVuYW1lIFNoYXBlU2VnbWVudCMjVFlQ
RTo6VmFsdWUmJiB2YWx1ZSkgXAoreyBcCisgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50VmFs
dWU8U2hhcGVTZWdtZW50IyNUWVBFPjo6Y3JlYXRlKHR5cGUsIFdURk1vdmUodmFsdWUpKTsgXAor
fSBcCitjb25zdCB0eXBlbmFtZSBTaGFwZVNlZ21lbnQjI1RZUEU6OlZhbHVlJiBCYXNpY1NoYXBl
U2VnbWVudDo6YXMjI1RZUEUoKSBjb25zdCBcCit7IFwKKyAgICByZXR1cm4gZXh0cmFjdFZhbHVl
PFNoYXBlU2VnbWVudCMjVFlQRT4oKnRoaXMpOyBcCit9CisKK0ZPUl9FQUNIX1NIQVBFX1NFR01F
TlRfVFlQRV9XSVRIX1ZBTFVFKElNUExFTUVOVF9TSEFQRV9TRUdNRU5UX1ZBTFVFKQorCitDdXJ2
ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFs
dWUmIGZyb20sIGNvbnN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUmIHRvLCBjb25zdCBCbGVu
ZGluZ0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgYmxlbmQoZnJv
bS5wb2ludDEsIHRvLnBvaW50MSwgY29udGV4dCksCisgICAgICAgIGJsZW5kKGZyb20ucG9pbnQy
LCB0by5wb2ludDIsIGNvbnRleHQpLAorICAgICAgICBibGVuZChmcm9tLnRhcmdldFBvaW50LCB0
by50YXJnZXRQb2ludCwgY29udGV4dCksCisgICAgfTsKK30KKworQ3VydmVUb0N1YmljU21vb3Ro
U2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVl
JiBmcm9tLCBjb25zdCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiB0bywgY29uc3Qg
QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQoreworICAgIHJldHVybiB7CisgICAgICAgIGJsZW5k
KGZyb20ucG9pbnQyLCB0by5wb2ludDIsIGNvbnRleHQpLAorICAgICAgICBibGVuZChmcm9tLnRh
cmdldFBvaW50LCB0by50YXJnZXRQb2ludCwgY29udGV4dCksCisgICAgfTsKK30KKworQ3VydmVU
b1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBl
U2VnVmFsdWUmIGZyb20sIGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlJiB0bywg
Y29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQoreworICAgIHJldHVybiB7CisgICAgICAg
IGJsZW5kKGZyb20ucG9pbnQxLCB0by5wb2ludDEsIGNvbnRleHQpLAorICAgICAgICBibGVuZChm
cm9tLnRhcmdldFBvaW50LCB0by50YXJnZXRQb2ludCwgY29udGV4dCksCisgICAgfTsKK30KKwor
QXJjVG9TaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYgZnJvbSwg
Y29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiB0bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250
ZXh0KQoreworICAgIHJldHVybiB7CisgICAgICAgIGJsZW5kKGZyb20ucmFkaXVzLCB0by5yYWRp
dXMsIGNvbnRleHQpLAorICAgICAgICBibGVuZChmcm9tLmFuZ2xlLCB0by5hbmdsZSwgY29udGV4
dCksCisgICAgICAgIGNvbnRleHQucHJvZ3Jlc3MgPCAwLjVmID8gZnJvbS5zd2VlcCA6IHRvLnN3
ZWVwLAorICAgICAgICBjb250ZXh0LnByb2dyZXNzIDwgMC41ZiA/IGZyb20ubGFyZ2VBcmMgOiB0
by5sYXJnZUFyYywKKyAgICAgICAgYmxlbmQoZnJvbS50YXJnZXRQb2ludCwgdG8udGFyZ2V0UG9p
bnQsIGNvbnRleHQpCisgICAgfTsKK30KKworUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBCYXNpY1No
YXBlU2VnbWVudDo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIGZyb20sIGNvbnN0IEJs
ZW5kaW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBhdXRvIHR5cGUgPSB0aGlzLT50
eXBlKCk7CisgICAgQVNTRVJUKHR5cGUgPT0gZnJvbS50eXBlKCkpOworCisgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgorICAgICAgICByZXR1cm4gQmFzaWNT
aGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworCisjZGVmaW5lIEJMRU5EX1NFR01FTlRf
VFlQRShUeXBlKSBcCisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6OkFic1NlZ1R5cGU6IFwK
KyAgICBjYXNlIFNoYXBlU2VnbWVudCMjVHlwZTo6UmVsU2VnVHlwZTogXAorICAgICAgICByZXR1
cm4gQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxTaGFwZVNlZ21lbnQjI1R5cGU+OjpjcmVhdGUodHlw
ZSwgV2ViQ29yZTo6YmxlbmQoZXh0cmFjdFZhbHVlPFNoYXBlU2VnbWVudCMjVHlwZT4oZnJvbSks
IGV4dHJhY3RWYWx1ZTxTaGFwZVNlZ21lbnQjI1R5cGU+KCp0aGlzKSwgY29udGV4dCkpOworCisg
ICAgICAgIEZPUl9FQUNIX1NIQVBFX1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKEJMRU5EX1NFR01F
TlRfVFlQRSkKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKyAgICB9
Cit9CitjbGFzcyBTaGFwZVNWR1BhdGhTb3VyY2UgZmluYWwgOiBwdWJsaWMgU1ZHUGF0aFNvdXJj
ZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2hhcGVTVkdQYXRoU291cmNlKGNvbnN0IExlbmd0
aFBvaW50JiBzdGFydCwgY29uc3QgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+JiBzZWdt
ZW50cywgY29uc3QgRmxvYXRTaXplJiBzaXplKQorICAgICAgICA6IG1fc3RhcnQoc3RhcnQpCisg
ICAgICAgICwgbV9zZWdtZW50cyhzZWdtZW50cykKKyAgICAgICAgLCBtX3NpemUoc2l6ZSkKKyAg
ICAgICAgLCBtX2l0ZW1FbmQoc2VnbWVudHMuc2l6ZSgpKQorICAgICAgICB7CisKKyAgICAgICAg
fQorCitwcml2YXRlOgorICAgIGJvb2wgaGFzTW9yZURhdGEoKSBjb25zdCBmaW5hbAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1faXRlbUN1cnJlbnQgPCBtX2l0ZW1FbmQ7CisgICAgfQorCisgICAg
Ym9vbCBtb3ZlVG9OZXh0VG9rZW4oKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBTVkdQ
YXRoU2VnVHlwZSBuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSkgZmluYWwKKyAgICB7CisgICAg
ICAgIGF1dG8gdHlwZSA9IG1fc2VnbWVudHMuYXQobV9pdGVtQ3VycmVudCktPnR5cGUoKTsKKyAg
ICAgICAgKyttX2l0ZW1DdXJyZW50OworICAgICAgICByZXR1cm4gdHlwZTsKKyAgICB9CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTZWdUeXBlPiBwYXJzZVNWR1NlZ21lbnRUeXBlKCkgZmlu
YWwKKyAgICB7CisgICAgICAgIHJldHVybiBQYXRoU2VnTW92ZVRvQWJzOworICAgIH0KKworICAg
IHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TW92ZVRvU2VnbWVudD4gcGFyc2VNb3ZlVG9T
ZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9pdGVtQ3VycmVudCkKKyAgICAg
ICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50IHsgZmxvYXRQb2ludEZv
ckxlbmd0aFBvaW50KG1fc3RhcnQsIG1fc2l6ZSkgfTsKKworICAgICAgICByZXR1cm4gU1ZHUGF0
aFNvdXJjZTo6TW92ZVRvU2VnbWVudCB7IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZTxT
aGFwZVNlZ21lbnRNb3ZlVG8+KCksIG1fc2l6ZSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlv
bmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb1NlZ21lbnQ+IHBhcnNlTGluZVRvU2VnbWVudCgpIGZp
bmFsCisgICAgeworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6TGluZVRvU2VnbWVudCB7
IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZTxTaGFwZVNlZ21lbnRMaW5lVG8+KCksIG1f
c2l6ZSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVU
b0hvcml6b250YWxTZWdtZW50PiBwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KCkgZmluYWwK
KyAgICB7CisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFsU2Vn
bWVudCB7IGZsb2F0VmFsdWVGb3JMZW5ndGgodmFsdWU8U2hhcGVTZWdtZW50TGluZVRvSG9yaXpv
bnRhbD4oKSwgbV9zaXplLndpZHRoKCkpIH07CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxT
VkdQYXRoU291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IHBhcnNlTGluZVRvVmVydGljYWxT
ZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpMaW5l
VG9WZXJ0aWNhbFNlZ21lbnQgeyBmbG9hdFZhbHVlRm9yTGVuZ3RoKHZhbHVlPFNoYXBlU2VnbWVu
dExpbmVUb1ZlcnRpY2FsPigpLCBtX3NpemUuaGVpZ2h0KCkpIH07CisgICAgfQorCisgICAgc3Rk
OjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBwYXJzZUN1cnZl
VG9DdWJpY1NlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byYgdmFsdWUg
PSB0aGlzLT52YWx1ZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWM+KCk7CisgICAgICAgIHJldHVy
biBTVkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTZWdtZW50IHsgICAgICAgIAorICAgICAgICAg
ICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnBvaW50MSwgbV9zaXplKSwKKyAgICAg
ICAgICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS5wb2ludDIsIG1fc2l6ZSksCisg
ICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUudGFyZ2V0UG9pbnQsIG1f
c2l6ZSkKKyAgICAgICAgfTsKKyAgICB9CisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNl
OjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50PiBwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21l
bnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byYgdmFsdWUgPSB0aGlzLT52YWx1
ZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWNTbW9vdGg+KCk7CisgICAgICAgIHJldHVybiBTVkdQ
YXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50IHsgICAgICAgIAorICAgICAgICAg
ICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnBvaW50MiwgbV9zaXplKSwKKyAgICAg
ICAgICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXpl
KQorICAgICAgICB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6
Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKSBm
aW5hbAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byYgdmFsdWUgPSB0aGlzLT52YWx1ZTxTaGFw
ZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljPigpOworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJj
ZTo6Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQgeworICAgICAgICAgICAgZmxvYXRQb2ludEZvckxl
bmd0aFBvaW50KHZhbHVlLnBvaW50MSwgbV9zaXplKSwKKyAgICAgICAgICAgIGZsb2F0UG9pbnRG
b3JMZW5ndGhQb2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXplKQorICAgICAgICB9OworICAg
IH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1Nt
b290aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoKSBmaW5hbAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTbW9v
dGhTZWdtZW50IHsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlPFNoYXBlU2VnbWVudEN1
cnZlVG9RdWFkcmF0aWNTbW9vdGg+KCksIG1fc2l6ZSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9w
dGlvbmFsPFNWR1BhdGhTb3VyY2U6OkFyY1RvU2VnbWVudD4gcGFyc2VBcmNUb1NlZ21lbnQoKSBm
aW5hbAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byYgdmFsdWUgPSB0aGlzLT52YWx1ZTxTaGFw
ZVNlZ21lbnRBcmNUbz4oKTsKKyAgICAgICAgYXV0byByYWRpdXMgPSBmbG9hdFNpemVGb3JMZW5n
dGhTaXplKHZhbHVlLnJhZGl1cywgbV9zaXplKTsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3Vy
Y2U6OkFyY1RvU2VnbWVudCB7CisgICAgICAgICAgICAucnggPSByYWRpdXMud2lkdGgoKSwKKyAg
ICAgICAgICAgIC5yeSA9IHJhZGl1cy5oZWlnaHQoKSwKKyAgICAgICAgICAgIC5hbmdsZSA9IHZh
bHVlLmFuZ2xlLAorICAgICAgICAgICAgLmxhcmdlQXJjID0gdmFsdWUubGFyZ2VBcmMsCisgICAg
ICAgICAgICAuc3dlZXAgPSB2YWx1ZS5zd2VlcCwKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JM
ZW5ndGhQb2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXplKQorICAgICAgICB9OworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgY29uc3QgdHlwZW5hbWUgVDo6VmFsdWUm
IHZhbHVlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2l0ZW1DdXJyZW50IDw9IG1fc2VnbWVu
dHMuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RWYWx1ZTxUPihtX3NlZ21lbnRzLmF0
KG1faXRlbUN1cnJlbnQgLSAxKS5nZXQoKSk7CisgICAgfQorCisgICAgY29uc3QgTGVuZ3RoUG9p
bnQmIG1fc3RhcnQ7CisgICAgY29uc3QgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+JiBt
X3NlZ21lbnRzOworICAgIEZsb2F0U2l6ZSBtX3NpemU7CisgICAgc2l6ZV90IG1faXRlbUVuZDsK
KyAgICBzaXplX3QgbV9pdGVtQ3VycmVudCA9IDA7Cit9OworCitQYXRoIEJhc2ljU2hhcGVTZWdt
ZW50Ojp0b1BhdGgoY29uc3QgTGVuZ3RoUG9pbnQmIHN0YXJ0LCBjb25zdCBWZWN0b3I8UmVmPEJh
c2ljU2hhcGVTZWdtZW50Pj4mIHNlZ21lbnRzLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCit7Cisg
ICAgU2hhcGVTVkdQYXRoU291cmNlIHNvdXJjZShzdGFydCwgc2VnbWVudHMsIHNpemUpOworICAg
IFBhdGggcGF0aDsKKyAgICBTVkdQYXRoQnVpbGRlciBidWlsZGVyKHBhdGgpOworICAgIFNWR1Bh
dGhQYXJzZXI6OnBhcnNlKHNvdXJjZSwgYnVpbGRlcik7CisgICAgcmV0dXJuIHBhdGg7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBl
U2VnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdt
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDVkMThjZTg1MDZjZTYyZGQzMjY1NzU0ZGUwNzQ2YWQwYmMxOTQ2
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlU2VnbWVudC5oCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIE5vYW0gUm9zZW50aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJMZW5ndGguaCIKKyNpbmNsdWRlICJMZW5ndGhQb2ludC5oIgorI2luY2x1
ZGUgIkxlbmd0aFNpemUuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnLmgiCisjaW5jbHVkZSAiU1ZH
UGF0aFNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBCbGVuZGluZ0Nv
bnRleHQ7CitjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBQYXRoOworCitzdHJ1Y3QgQ3VydmVUb0N1
YmljU2hhcGVTZWdWYWx1ZSB7CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQxOworICAgIExlbmd0aFBv
aW50IHBvaW50MjsKKyAgICBMZW5ndGhQb2ludCB0YXJnZXRQb2ludDsKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gcG9pbnQxID09IG90aGVyLnBvaW50MSAmJiBwb2ludDIgPT0gb3Ro
ZXIucG9pbnQyICYmIHRhcmdldFBvaW50ID09IG90aGVyLnRhcmdldFBvaW50OworICAgIH0KK307
CisKK3N0cnVjdCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlIHsKKyAgICBMZW5ndGhQ
b2ludCBwb2ludDI7CisgICAgTGVuZ3RoUG9pbnQgdGFyZ2V0UG9pbnQ7CisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIG90aGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIHBvaW50MiA9PSBvdGhlci5wb2ludDIgJiYgdGFyZ2V0
UG9pbnQgPT0gb3RoZXIudGFyZ2V0UG9pbnQ7CisgICAgfQorfTsKKworc3RydWN0IEN1cnZlVG9R
dWFkcmF0aWNTaGFwZVNlZ1ZhbHVlIHsKKyAgICBMZW5ndGhQb2ludCBwb2ludDE7CisgICAgTGVu
Z3RoUG9pbnQgdGFyZ2V0UG9pbnQ7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VydmVU
b1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIHBvaW50MSA9PSBvdGhlci5wb2ludDEgJiYgdGFyZ2V0UG9pbnQgPT0gb3RoZXIudGFyZ2V0
UG9pbnQ7CisgICAgfQorfTsKKworCitzdHJ1Y3QgQXJjVG9TaGFwZVNlZ1ZhbHVlIHsKKyAgICBM
ZW5ndGhTaXplIHJhZGl1czsKKyAgICBmbG9hdCBhbmdsZSA9IDA7CisgICAgYm9vbCBzd2VlcCA9
IGZhbHNlOworICAgIGJvb2wgbGFyZ2VBcmMgPSBmYWxzZTsKKyAgICBMZW5ndGhQb2ludCB0YXJn
ZXRQb2ludDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBcmNUb1NoYXBlU2VnVmFsdWUm
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJhZGl1cyA9PSBvdGhlci5yYWRp
dXMgJiYgYW5nbGUgPT0gb3RoZXIuYW5nbGUgJiYgc3dlZXAgPT0gb3RoZXIuc3dlZXAgJiYgbGFy
Z2VBcmMgPT0gb3RoZXIubGFyZ2VBcmMgJiYgdGFyZ2V0UG9pbnQgPT0gb3RoZXIudGFyZ2V0UG9p
bnQ7CisgICAgfQorfTsKKworCitDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0
IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1Zh
bHVlJiwgY29uc3QgQmxlbmRpbmdDb250ZXh0Jik7CitDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNl
Z1ZhbHVlIGJsZW5kKGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmLCBjb25z
dCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQmxlbmRpbmdDb250ZXh0
Jik7CitDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBDdXJ2ZVRvUXVh
ZHJhdGljU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
JiwgY29uc3QgQmxlbmRpbmdDb250ZXh0Jik7CitBcmNUb1NoYXBlU2VnVmFsdWUgYmxlbmQoY29u
c3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiwgY29uc3Qg
QmxlbmRpbmdDb250ZXh0Jik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgU1ZHUGF0
aFNlZ1R5cGUgQWJzVHlwZSwgU1ZHUGF0aFNlZ1R5cGUgUmVsVHlwZT4KK3N0cnVjdCBTaGFwZVNl
Z21lbnRUeXBlRGVmaW5pdGlvbiB7CisgICAgdHlwZWRlZiBWYWx1ZVR5cGUgVmFsdWU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBhdXRvIEFic1NlZ1R5cGUgPSBBYnNUeXBlOworICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBSZWxTZWdUeXBlID0gUmVsVHlwZTsKK307CisKK3N0cnVjdCBTaGFwZVNl
Z21lbnRNb3ZlVG8gOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248TGVuZ3RoUG9p
bnQsIFBhdGhTZWdNb3ZlVG9BYnMsIFBhdGhTZWdNb3ZlVG9SZWw+IHsgfTsKK3N0cnVjdCBTaGFw
ZVNlZ21lbnRMaW5lVG8gOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248TGVuZ3Ro
UG9pbnQsIFBhdGhTZWdMaW5lVG9BYnMsIFBhdGhTZWdMaW5lVG9SZWw+IHsgfTsKK3N0cnVjdCBT
aGFwZVNlZ21lbnRMaW5lVG9Ib3Jpem9udGFsIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZp
bml0aW9uPExlbmd0aCwgUGF0aFNlZ0xpbmVUb0hvcml6b250YWxBYnMsIFBhdGhTZWdMaW5lVG9I
b3Jpem9udGFsUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50TGluZVRvVmVydGljYWwgOiBw
dWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248TGVuZ3RoLCBQYXRoU2VnTGluZVRvVmVy
dGljYWxBYnMsIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbFJlbD4geyB9Oworc3RydWN0IFNoYXBlU2Vn
bWVudEN1cnZlVG9DdWJpYyA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxDdXJ2
ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlLCBQYXRoU2VnQ3VydmVUb0N1YmljQWJzLCBQYXRoU2VnQ3Vy
dmVUb0N1YmljUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50Q3VydmVUb1F1YWRyYXRpYyA6
IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxDdXJ2ZVRvUXVhZHJhdGljU2hhcGVT
ZWdWYWx1ZSwgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNBYnMsIFBhdGhTZWdDdXJ2ZVRvUXVhZHJh
dGljUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50Q3VydmVUb0N1YmljU21vb3RoIDogcHVi
bGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2Vn
VmFsdWUsIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhBYnMsIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNT
bW9vdGhSZWw+IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljU21vb3Ro
IDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPExlbmd0aFBvaW50LCBQYXRoU2Vn
Q3VydmVUb1F1YWRyYXRpY1Ntb290aEFicywgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhS
ZWw+IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRBcmNUbyA6IHB1YmxpYyBTaGFwZVNlZ21lbnRU
eXBlRGVmaW5pdGlvbjxBcmNUb1NoYXBlU2VnVmFsdWUsIFBhdGhTZWdBcmNBYnMsIFBhdGhTZWdB
cmNSZWw+IHsgfTsKKworI2RlZmluZSBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9W
QUxVRShNYWNybykgXAorICAgIE1hY3JvKE1vdmVUbykgXAorICAgIE1hY3JvKExpbmVUbykgXAor
ICAgIE1hY3JvKExpbmVUb0hvcml6b250YWwpIFwKKyAgICBNYWNybyhMaW5lVG9WZXJ0aWNhbCkg
XAorICAgIE1hY3JvKEN1cnZlVG9DdWJpYykgXAorICAgIE1hY3JvKEN1cnZlVG9RdWFkcmF0aWMp
IFwKKyAgICBNYWNybyhDdXJ2ZVRvQ3ViaWNTbW9vdGgpIFwKKyAgICBNYWNybyhDdXJ2ZVRvUXVh
ZHJhdGljU21vb3RoKSBcCisgICAgTWFjcm8oQXJjVG8pCisKK2NsYXNzIEJhc2ljU2hhcGVTZWdt
ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8QmFzaWNTaGFwZVNlZ21lbnQ+IHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIFNWR1BhdGhTZWdUeXBlIFR5cGU7CisgICAgfkJhc2ljU2hhcGVTZWdtZW50KCkg
PSBkZWZhdWx0OworCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisK
KyAgICBSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50
JiBmcm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKSBjb25zdDsKKyAgICBib29sIGVxdWFscyhj
b25zdCBCYXNpY1NoYXBlU2VnbWVudCYpIGNvbnN0OworCisgICAgc3RhdGljIFBhdGggdG9QYXRo
KGNvbnN0IExlbmd0aFBvaW50JiBzdGFydCwgY29uc3QgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2Vn
bWVudD4+JiwgY29uc3QgRmxvYXRTaXplJik7CisKKyNkZWZpbmUgREVGSU5FX1NIQVBFX1NFR01F
TlRfVFlQRShUKSBcCisgICAgc3RhdGljIFJlZjxCYXNpY1NoYXBlU2VnbWVudD4gY3JlYXRlIyNU
KFR5cGUsIHR5cGVuYW1lIFNoYXBlU2VnbWVudCMjVDo6VmFsdWUmJik7IFwKKyAgICBjb25zdCB0
eXBlbmFtZSBTaGFwZVNlZ21lbnQjI1Q6OlZhbHVlJiBhcyMjVCgpIGNvbnN0OworCisgICAgRk9S
X0VBQ0hfU0hBUEVfU0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoREVGSU5FX1NIQVBFX1NFR01FTlRf
VFlQRSkKKworICAgIHN0YXRpYyBSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGNyZWF0ZUNsb3NlUGF0
aCgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXNpY1NoYXBlU2VnbWVu
dChQYXRoU2VnQ2xvc2VQYXRoKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgQmFzaWNTaGFw
ZVNlZ21lbnQoVHlwZSB0KQorICAgICAgICA6IG1fdHlwZSh0KSB7IH0KKworcHJpdmF0ZToKKyAg
ICBUeXBlIG1fdHlwZTsKK307CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggMDg2YTZmNmE2M2EyNWU1MDIzYWU5NWJmYTg0ZjRm
YTdkNGZmYzI2Mi4uNjczZmVhNmM0ZDI2MzAwYTY4N2Y5ZDVkYTNiODYzM2U4NWUwMDFiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCkBAIC0x
MjEsNiArMTIxLDQ0IEBAIHN0cnVjdCBUcmFuc2Zvcm1lZEJ5dGVTdHJlYW1QYXRoUG9saWN5IDog
VGlueUxSVUNhY2hlUG9saWN5PFNWR1BhdGhUcmFuc2Zvcm1lZEJ5CiAgICAgc3RhdGljIFBhdGgg
Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgU1ZHUGF0aFRyYW5zZm9ybWVkQnl0ZVN0cmVhbSYgc3Ry
ZWFtKSB7IHJldHVybiBzdHJlYW0ucGF0aCgpOyB9CiB9OwogCitzdHJ1Y3QgU2hhcGVTZWdtZW50
c1dpdGhCb3ggeworICAgIExlbmd0aFBvaW50IHN0YXJ0OworICAgIFZlY3RvcjxSZWY8QmFzaWNT
aGFwZVNlZ21lbnQ+PiBzZWdtZW50czsKKyAgICBGbG9hdFJlY3QgYm94OworCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFNoYXBlU2VnbWVudHNXaXRoQm94JiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIGlmIChib3ggIT0gb3RoZXIuYm94IHx8IHNlZ21lbnRzLnNpemUoKSA9PSBvdGhl
ci5zZWdtZW50cy5zaXplKCkgfHwgc3RhcnQgIT0gb3RoZXIuc3RhcnQpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZWdtZW50cy5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFzZWdtZW50cy5hdChpKS0+ZXF1YWxzKG90
aGVyLnNlZ21lbnRzLmF0KGkpLmdldCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgU2hhcGVTZWdtZW50c1dpdGhCb3gmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KK307CisKK3N0cnVjdCBT
aGFwZVNlZ21lbnRzUGF0aFBvbGljeSA6IFRpbnlMUlVDYWNoZVBvbGljeTxTaGFwZVNlZ21lbnRz
V2l0aEJveCwgUGF0aD4geworICAgIHN0YXRpYyBib29sIGlzS2V5TnVsbChjb25zdCBTaGFwZVNl
Z21lbnRzV2l0aEJveCYgc2VnbWVudHNXaXRoQm94KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNl
Z21lbnRzV2l0aEJveC5zZWdtZW50cy5pc0VtcHR5KCk7CisgICAgfQorCisgICAgc3RhdGljIFBh
dGggY3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgU2hhcGVTZWdtZW50c1dpdGhCb3gmIHNlZ21lbnRz
V2l0aEJveCkKKyAgICB7CisgICAgICAgIGF1dG8gcGF0aCA9IEJhc2ljU2hhcGVTZWdtZW50Ojp0
b1BhdGgoc2VnbWVudHNXaXRoQm94LnN0YXJ0LCBzZWdtZW50c1dpdGhCb3guc2VnbWVudHMsIHNl
Z21lbnRzV2l0aEJveC5ib3guc2l6ZSgpKTsKKyAgICAgICAgcGF0aC50cmFuc2xhdGUodG9GbG9h
dFNpemUoc2VnbWVudHNXaXRoQm94LmJveC5sb2NhdGlvbigpKSk7CisgICAgICAgIHJldHVybiBw
YXRoOworICAgIH0KK307CisKIHN0YXRpYyBjb25zdCBQYXRoJiBjYWNoZWRFbGxpcHNlUGF0aChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlM
UlVDYWNoZTxGbG9hdFJlY3QsIFBhdGgsIDQsIEVsbGlwc2VQYXRoUG9saWN5Pj4gY2FjaGU7CkBA
IC0xNDUsNiArMTgzLDEyIEBAIHN0YXRpYyBjb25zdCBQYXRoJiBjYWNoZWRUcmFuc2Zvcm1lZEJ5
dGVTdHJlYW1QYXRoKGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJiBzdHJlCiAgICAgcmV0dXJuIGNh
Y2hlLmdldCgpLmdldChTVkdQYXRoVHJhbnNmb3JtZWRCeXRlU3RyZWFtIHsgc3RyZWFtLCB6b29t
LCBvZmZzZXQgfSk7CiB9CiAKK3N0YXRpYyBjb25zdCBQYXRoJiBjYWNoZWRTaGFwZVNlZ21lbnRz
UGF0aChjb25zdCBMZW5ndGhQb2ludCYgZnJvbSwgY29uc3QgVmVjdG9yPFJlZjxCYXNpY1NoYXBl
U2VnbWVudD4+JiBzZWdtZW50cywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8U2hhcGVTZWdtZW50c1dpdGhCb3gsIFBhdGgs
IDQsIFNoYXBlU2VnbWVudHNQYXRoUG9saWN5Pj4gY2FjaGU7CisgICAgcmV0dXJuIGNhY2hlLmdl
dCgpLmdldChTaGFwZVNlZ21lbnRzV2l0aEJveCB7IGZyb20sIHNlZ21lbnRzLCByZWN0IH0pOwor
fQorCiBib29sIEJhc2ljU2hhcGVDaXJjbGU6Om9wZXJhdG9yPT0oY29uc3QgQmFzaWNTaGFwZSYg
b3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBvdGhlci50eXBlKCkpCkBAIC00NjMs
NiArNTA3LDc4IEBAIHZvaWQgQmFzaWNTaGFwZUluc2V0OjpkdW1wKFRleHRTdHJlYW0mIHRzKSBj
b25zdAogICAgIHRzLmR1bXBQcm9wZXJ0eSgiYm90dG9tLWxlZnQtcmFkaXVzIiwgYm90dG9tTGVm
dFJhZGl1cygpKTsKIH0KIAorCitCYXNpY1NoYXBlU2hhcGU6OkJhc2ljU2hhcGVTaGFwZShjb25z
dCBMZW5ndGhQb2ludCYgZnJvbSwgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+JiYgc2Vn
bWVudHMpCisgICAgOiBtX3NlZ21lbnRzKG1ha2VVbmlxdWU8VmVjdG9yPFJlZjxCYXNpY1NoYXBl
U2VnbWVudD4+PihXVEZNb3ZlKHNlZ21lbnRzKSkpCisgICAgLCBtX2Zyb20oZnJvbSkKK3sKK30K
KworY29uc3QgUGF0aCYgQmFzaWNTaGFwZVNoYXBlOjpwYXRoKGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3gpCit7CisgICAgcmV0dXJuIGNhY2hlZFNoYXBlU2VnbWVudHNQYXRoKG1fZnJvbSwg
Km1fc2VnbWVudHMsIGJvdW5kaW5nQm94KTsKK30KKworYm9vbCBCYXNpY1NoYXBlU2hhcGU6Om9w
ZXJhdG9yPT0oY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUo
KSAhPSBvdGhlci50eXBlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IEJh
c2ljU2hhcGVTaGFwZSYgb3RoZXJTaGFwZSA9IGRvd25jYXN0PEJhc2ljU2hhcGVTaGFwZT4ob3Ro
ZXIpOworICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAgICBpZiAod2luZFJ1bGUoKSAh
PSBvdGhlclNoYXBlLndpbmRSdWxlKCkgfHwgc2l6ZSA9PSBvdGhlclNoYXBlLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKKyAgICAgICAgaWYgKCFhdChpKS5lcXVhbHMob3RoZXJTaGFwZS5hdChpKSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgQmFzaWNTaGFwZVNoYXBlOjpjYW5CbGVuZChjb25zdCBCYXNpY1NoYXBlJiBvdGhlcikgY29u
c3QKK3sKKyAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOworICAgIGF1dG8mIG90aGVyU2hh
cGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+KG90aGVyKTsKKyAgICBpZiAod2luZFJ1bGUo
KSAhPSBvdGhlclNoYXBlLndpbmRSdWxlKCkgfHwgc2l6ZSAhPSBvdGhlclNoYXBlLnNpemUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKKyAgICAgICAgaWYgKGF0KGkpLnR5cGUoKSAhPSBvdGhlclNoYXBlLmF0KGkpLnR5
cGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVTaGFwZTo6YmxlbmQoY29uc3QgQmFz
aWNTaGFwZSYgZnJvbSwgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KSBjb25zdAorewor
ICAgIEFTU0VSVCh0eXBlKCkgPT0gZnJvbS50eXBlKCkpOworICAgIGF1dG8gc2l6ZSA9IHRoaXMt
PnNpemUoKTsKKyAgICBhdXRvJiBmcm9tU2hhcGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+
KGZyb20pOworICAgIEFTU0VSVChzaXplID09IGZyb21TaGFwZS5zaXplKCkpOworCisgICAgVmVj
dG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+IHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShzaXplKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKQorICAgICAgICByZXN1bHQuYXBwZW5kKGF0KGkpLmJsZW5kKGZyb21TaGFwZS5hdChpKSwg
Y29udGV4dCkpOworCisgICAgYXV0byBuZXdTaGFwZSA9IEJhc2ljU2hhcGVTaGFwZTo6Y3JlYXRl
KFdlYkNvcmU6OmJsZW5kKGZyb21TaGFwZS5mcm9tKCksIG1fZnJvbSwgY29udGV4dCksIFdURk1v
dmUocmVzdWx0KSk7CisgICAgbmV3U2hhcGUtPnNldFdpbmRSdWxlKHdpbmRSdWxlKCkpOworICAg
IHJldHVybiBuZXdTaGFwZTsKK30KKwordm9pZCBCYXNpY1NoYXBlU2hhcGU6OmR1bXAoVGV4dFN0
cmVhbSYgdHMpIGNvbnN0Cit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ3aW5kLXJ1bGUiLCB3aW5k
UnVsZSgpKTsKKyAgICAvLyBGSVhNRTogcHJpbnQgdGhlIGJ5dGUgc3RyZWFtPworfQorCiBzdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQmFzaWNTaGFwZVJhZGl1
czo6VHlwZSByYWRpdXNUeXBlKQogewogICAgIHN3aXRjaCAocmFkaXVzVHlwZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAppbmRleCA5YmYwMzczNDc2
YjUzZTVjN2E0YTliYzYyMzllNDVlYzRhZDUzNGU0Li4zMWU4ZjNkZjVkY2IxNjJlODI1MzczNGQ0
YjVjY2ViOTBjZWM5MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQmFzaWNTaGFwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFz
aWNTaGFwZXMuaApAQCAtMzAsNiArMzAsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJM
ZW5ndGguaCIKKyNpbmNsdWRlICJMZW5ndGhQb2ludC5oIgogI2luY2x1ZGUgIkxlbmd0aFNpemUu
aCIKICNpbmNsdWRlICJXaW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBA
IC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBCbGVuZGluZ0NvbnRleHQ7CiBjbGFzcyBGbG9hdFJlY3Q7
CiBjbGFzcyBQYXRoOwogY2xhc3MgUmVuZGVyQm94OworY2xhc3MgQmFzaWNTaGFwZVNlZ21lbnQ7
CiBjbGFzcyBTVkdQYXRoQnl0ZVN0cmVhbTsKIAogY2xhc3MgQmFzaWNTaGFwZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPEJhc2ljU2hhcGU+IHsKQEAgLTU4LDcgKzYwLDggQEAgcHVibGljOgogICAgICAg
ICBQYXRoLAogICAgICAgICBDaXJjbGUsCiAgICAgICAgIEVsbGlwc2UsCi0gICAgICAgIEluc2V0
CisgICAgICAgIEluc2V0LAorICAgICAgICBTaGFwZQogICAgIH07CiAKICAgICB2aXJ0dWFsIFR5
cGUgdHlwZSgpIGNvbnN0ID0gMDsKQEAgLTM0Myw2ICszNDYsNDEgQEAgcHJpdmF0ZToKICAgICBM
ZW5ndGhTaXplIG1fYm90dG9tTGVmdFJhZGl1czsKIH07CiAKK2NsYXNzIEJhc2ljU2hhcGVTaGFw
ZSA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEJhc2ljU2hh
cGVTaGFwZT4gY3JlYXRlKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBWZWN0b3I8UmVmPEJhc2lj
U2hhcGVTZWdtZW50Pj4mJiBzZWdtZW50cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEJhc2ljU2hhcGVTaGFwZShmcm9tLCBXVEZNb3ZlKHNlZ21lbnRzKSkpOworICAgIH0K
KworICAgIHZvaWQgc2V0V2luZFJ1bGUoV2luZFJ1bGUgd2luZFJ1bGUpIHsgbV93aW5kUnVsZSA9
IHdpbmRSdWxlOyB9CisgICAgV2luZFJ1bGUgd2luZFJ1bGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3dpbmRSdWxlOyB9CisKKyAgICBjb25zdCBMZW5ndGhQb2ludCYgZnJvbSgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJvbTsgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NlZ21lbnRzLT5zaXplKCk7IH0KKyAgICBjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYgYXQoc2l6
ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMtPmF0KGkpLmdldCgpOyB9CisKK3ByaXZh
dGU6CisgICAgQmFzaWNTaGFwZVNoYXBlKGNvbnN0IExlbmd0aFBvaW50JiwgVmVjdG9yPFJlZjxC
YXNpY1NoYXBlU2VnbWVudD4+JiYpOworCisgICAgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gVHlwZTo6U2hhcGU7IH0KKworCisgICAgY29uc3QgUGF0aCYgcGF0aChjb25zdCBG
bG9hdFJlY3QmKSBvdmVycmlkZTsKKworICAgIGJvb2wgY2FuQmxlbmQoY29uc3QgQmFzaWNTaGFw
ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxCYXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNp
Y1NoYXBlJiBmcm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKwor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7CisK
KyAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0IGZpbmFsOworCisgICAgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+Pj4gbV9zZWdtZW50czsKKyAgICBX
aW5kUnVsZSBtX3dpbmRSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKKyAgICBMZW5ndGhQb2lu
dCBtX2Zyb207Cit9OworCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgY29uc3QgQmFzaWNTaGFwZVJhZGl1cyYpOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlJik7
CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQmFz
aWNTaGFwZSYpOwpAQCAtMzU5LDMgKzM5Nyw0IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkFT
SUNfU0hBUEUoQmFzaWNTaGFwZUVsbGlwc2UsIEJhc2ljU2hhcGU6OlR5cGU6OkVsbGlwc2UpCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVQb2x5Z29uLCBCYXNp
Y1NoYXBlOjpUeXBlOjpQb2x5Z29uKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQ
RShCYXNpY1NoYXBlUGF0aCwgQmFzaWNTaGFwZTo6VHlwZTo6UGF0aCkKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkFTSUNfU0hBUEUoQmFzaWNTaGFwZUluc2V0LCBCYXNpY1NoYXBlOjpUeXBlOjpJ
bnNldCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkFTSUNfU0hBUEUoQmFzaWNTaGFwZVNoYXBl
LCBCYXNpY1NoYXBlOjpUeXBlOjpTaGFwZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMzQ1MzQ4ZjlkOWZjMjEyM2QxOTVj
YTNhOWM5MmIzNTE0ZTMyODRlLi40ZjY2MTAzMGQyZDQxYWFmMWFiOTRiOTNjMTQyMWNjM2YyNzJk
MTQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDQtMTkgIE5vYW0gUm9zZW50aGFsICA8
bm9hbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgU2hhcGVzXSBBZGQgc3VwcG9ydCBmb3Ig
c2hhcGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4MzcxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MDkxOTQ3Nj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IHVu
c2tpcCBDU1Mgc2hhcGUoKSB0ZXN0cworCiAyMDIyLTA0LTE4ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gVW5za2lwIGFwaS92YWxp
ZGF0aW9uL2NyZWF0ZVNhbXBsZXIuaHRtbCDwn46JCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwppbmRleCA2NGVhNjU3ZTZlMDQyYWMzZDEwMThjOGRkOGQ4ZmMwMjI1ZmViYTA3Li5hZGY2NDVl
MjM5MmQ1YTk3OTdmMmY3YzY0ZjlkYjBmMzI0ZjA3NmMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMi0wNC0xOSAgTm9hbSBSb3NlbnRoYWwgIDxu
b2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFkZCBzdXBwb3J0IGZvciBz
aGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2PgorCisgICAgICAgIEFtZW5k
ZWQgdGVzdHMgdG8gc3VwcG9ydCBDU1Mgc2hhcGUoKQorCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy1leHBl
Y3RlZC5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcv
Y2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4
cGVjdGVkLmh0bWw6CisgICAgICAgICAgICAgICAgTmVlZGVkIHRvIGNoYW5nZSB0aGUgdGVzdCBh
IGJpdCBiZWNhdXNlIG9mIHN0cmF5IHBpeGVscy4gV2lsbCB1cHN0cmVhbS4KKworCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2NsaXAtcGF0aC1z
aGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgICAgICAgICBOb3cgcGFzc2VzCisK
IDIwMjItMDQtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBJbXBsZW1lbnQgQ1NTVHJhbnNmb3JtVmFsdWUuaXMyRApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggYWU3NjI2YjNiZjM5YTdhYjg2NmJmNGM0MjhmNmEzOGNiMTg2MTlhNC4uYmYwOTJk
ZDUyZDNhYjFlMDU0OThmYWIwYzZlOWRlOGVjMzlkODRhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBA
IC0yMTk5LDE1ICsyMTk5LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC12aWV3Qm94LTFjLmgKIHdlYmtpdC5vcmcv
Yi8xMDQ0NDIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcv
Y2xpcC1wYXRoL2NsaXAtcGF0aC11cmwtcmVmZXJlbmNlLWNoYW5nZS1mcm9tLWVtcHR5Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMjk1MTAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1kZXNj
ZW5kYW50LXRleHQtbXV0YXRlZC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi0jIENT
UyBzaGFwZSgpCi13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAxLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFw
ZS0wMDItdW5pdHMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3
MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBh
dGgvY2xpcC1wYXRoLXNoYXBlLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNr
aW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLWludGVy
cG9sYXRpb24tMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgz
NzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1w
YXRoL2NsaXAtcGF0aC1zaGFwZS1pbnRlcnBvbGF0aW9uLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMjkzNzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC9jbGlwLWZpbHRlci1vcmRlci5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjI5MzcwIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL21hc2staW1hZ2UvbWFzay1pbWFnZS11cmwtbG9jYWwt
bWFzay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjI5MzcwIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL21hc2staW1hZ2UvbWFz
ay1pbWFnZS11cmwtcmVtb3RlLW1hc2suaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5n
L2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWwKaW5kZXggNDZlMDk4
YzRlYjY0ODlmYzQ0MzAxZDZiZjliMjQzZTgzNmIyY2EzMS4uMzFlOTdjOTE0NzQ0OGFhODQ5MjY0
MmU0MTk2YWE5MWI1Y2E2YTQ4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1z
aGFwZS0wMDMtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBl
LTAwMy1leHBlY3RlZC5odG1sCkBAIC05LDE0ICs5LDIzIEBACiAgICAgd2lkdGg6IDEwMHB4Owog
ICAgIGhlaWdodDogMTAwcHg7CiAgIH0KLSAgI3JlZiB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW47CisKKyAgI3JlZiwgI2FjdHVhbCB7CiAgICAgY2xpcC1wYXRoOiBwYXRoKG5vbnplcm8s
ICJNIDEwIDEwLCBRIDQwIDAgNjAgMjAsIFQgOTAgMCwgYyAxMCA0MCAyMCAyMCAtMjAgNjAsIHMg
LTEwIDcwIC00MCAtMTAiKTsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgIH0KKworICAjcmVm
IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgIH0KKworICAjYWN0dWFsIHsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgfQogPC9zdHlsZT4KIDxib2R5PgogICA8cD5Zb3Ug
c2hvdWxkIHNlZSBubyByZWQuPC9wPgogICA8ZGl2IGlkPSJyZWYiPjwvZGl2PgorICA8ZGl2IGlk
PSJhY3R1YWwiPjwvZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1w
YXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hh
cGUtMDAzLmh0bWwKaW5kZXggMjJlN2Q5YWFmNTM3NGM5YjdlNGUzYzJkNTBlY2VmYmNlYzEzNGI2
Ni4uZTAxNzA5MDA1YWM4Y2Y4ZTM1ZDA2MmE2ODU3YjY0NjI3YjVlYmUwOCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tp
bmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgv
Y2xpcC1wYXRoLXNoYXBlLTAwMy5odG1sCkBAIC02LDYgKzYsNyBAQAogICA8bGluayByZWw9Im1h
dGNoIiBocmVmPSJyZWZlcmVuY2UvY2xpcC1wYXRoLXNoYXBlLTAwMy1yZWYuaHRtbCI+CiAgIDxt
ZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVGhlIGNsaXAtcGF0aCBwcm9wZXJ0eSB0YWtlcyB0
aGUgYmFzaWMgc2hhcGUKIAknc2hhcGUoKScgZm9yIGNsaXBwaW5nLiBUZXN0IGN1cnZlcy4iPgor
ICA8bWV0YSBuYW1lPSJmdXp6eSIgY29udGVudD0ibWF4RGlmZmVyZW5jZT04MDsgdG90YWxQaXhl
bHM9Mzk0Ij4KIDwvaGVhZD4KIDxzdHlsZT4KICAgZGl2IHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAt
cGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xp
cC1wYXRoLXNoYXBlLTAwNC1leHBlY3RlZC5odG1sCmluZGV4IGVjOGY5NDEwNzk1MTM4ZjdhMzQ5
MGQ3YTQxNjliNWViZDVlMzc0NzQuLjEwZjQ1N2I5MTE4NGYxMDEzMDY4OWEyNzMwNWZjMmRkMzY2
ZTI4MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4cGVj
dGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQu
aHRtbApAQCAtOSwxNCArOSwyMyBAQAogICAgIHdpZHRoOiAxMDBweDsKICAgICBoZWlnaHQ6IDEw
MHB4OwogICB9Ci0gICNyZWYgewotICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworCisgICNy
ZWYsICNhY3R1YWwgewogICAgIGNsaXAtcGF0aDogcGF0aChub256ZXJvLCAiTSAyMCAyMCBBIDI1
IDEyIDAgMCAxIDgwIDIwLCBhIDMzIDMzIDEyMCAxIDEgLTQwIDUwLCBBIDIwIDI1IDAgMCAwIDIw
IDIwIik7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICB9CisKKyAgI3JlZiB7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogcmVkOworICB9CisKKyAgI2FjdHVhbCB7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogZ3JlZW47CisgIH0KIDwvc3R5bGU+CiA8Ym9keT4KICAgPHA+WW91IHNob3VsZCBzZWUg
bm8gcmVkLjwvcD4KICAgPGRpdiBpZD0icmVmIj48L2Rpdj4KKyAgPGRpdiBpZD0iYWN0dWFsIj48
L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL3BhcnNpbmcvY2xpcC1wYXRo
LXNoYXBlLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUt
cGFyc2luZy1leHBlY3RlZC50eHQKaW5kZXggZTk0YWVlOGI2YjRjYjA0ZjdhZmU4MmFkNjViM2Mx
NDhiYzQxMTI1Zi4uZTA1ODBlZGZjMWQ4ZWYzMjc3NWI1ZDk2ZjM4N2VlNWU3YTQ3YTMwZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2luZy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2luZy1leHBlY3RlZC50eHQKQEAg
LTEsMjQgKzEsMjQgQEAKIAotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9t
IDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFs
dWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93
ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBm
cm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkg
dmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2Fs
bG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUobm9uemVy
byBmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVy
dHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRp
c2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoICBm
cm9tIDBweCAgICAwcHgsIGxpbmUgIHRvIDEwcHggIDEwcHggICAgICkiIHNob3VsZCBzZXQgdGhl
IHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0
IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNo
YXBlKGZyb20gMWVtIDUwJSwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9w
ZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3Qg
ZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShF
dmVuT2RkIGZyb20gMHB4IDBQeCwgQ0xPU0UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1
ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dl
ZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFjaCA1
MHB4LCBsaW5lIHRvIDEwcmVtIDEwdmgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBh
c3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2
YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFjaCAtNTBw
eCwgbGluZSB0byAtMTAlIDEycHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3Nl
cnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1
ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwg
bW92ZSBieSAxMHB4IDVweCwgbGluZSBieSAyMHB4IDQwJSwgY2xvc2UpIiBzaG91bGQgc2V0IHRo
ZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNl
dCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJz
aGFwZShmcm9tIDEwcHggMTBweCwgaGxpbmUgYnkgMTBweCwgdmxpbmUgdG8gNXJlbSkiIHNob3Vs
ZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91
bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0
aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCB2bGluZSBieSA1JSwgaGxpbmUgdG8gMXZ3KSIg
c2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5
IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xp
cC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUwcHggMjBweCB2aWEg
MTByZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFs
czogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBl
LnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUgdG8gNTBw
eCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxs
b3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEw
cHggMTBweCwgY3VydmUgYnkgNTBweCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91
bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hv
dWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBh
dGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgc21vb3RoIHRvIDUwcHggMjBweCB2aWEgMTBy
ZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczog
cHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0
eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgc21vb3RoIHRvIDUwcHgg
MXB0KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHBy
b3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHls
ZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGFyYyB0byA1MHB4IDFwdCBv
ZiAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2Vx
dWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJ
TCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgYXJjIHRvIDUw
cHggMXB0IG9mIDEwcHggMTBweCBzbWFsbCByb3RhdGUgMGRlZykiIHNob3VsZCBzZXQgdGhlIHBy
b3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdv
dCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBl
KGZyb20gMTAlIDFyZW0sIGFyYyB0byA1MHB4IDFwdCBvZiAyMCUgY3cgbGFyZ2Ugcm90YXRlIDI1
ZGVnKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHBy
b3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHls
ZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGNsb3NlKSIgc2hv
dWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNo
b3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKK1BBU1MgZS5zdHlsZVsnY2xpcC1w
YXRoJ10gPSAic2hhcGUoZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBz
ZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBl
KGV2ZW5vZGQgZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhl
IHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKG5vbnpl
cm8gZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3Bl
cnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKCAgZnJvbSAwcHgg
ICAgMHB4LCBsaW5lICB0byAxMHB4ICAxMHB4ICAgICApIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0
eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFlbSA1MCUs
IGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1Mg
ZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoRXZlbk9kZCBmcm9tIDBweCAwUHgsIENMT1NF
KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRo
J10gPSAic2hhcGUoZnJvbSAxY2ggNTBweCwgbGluZSB0byAxMHJlbSAxMHZoKSIgc2hvdWxkIHNl
dCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUo
ZnJvbSAxY2ggLTUwcHgsIGxpbmUgdG8gLTEwJSAxMnB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVy
dHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEw
cHgsIG1vdmUgYnkgMTBweCA1cHgsIGxpbmUgYnkgMjBweCA0MCUsIGNsb3NlKSIgc2hvdWxkIHNl
dCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUo
ZnJvbSAxMHB4IDEwcHgsIGhsaW5lIGJ5IDEwcHgsIHZsaW5lIHRvIDVyZW0pIiBzaG91bGQgc2V0
IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShm
cm9tIDEwcHggMTBweCwgdmxpbmUgYnkgNSUsIGhsaW5lIHRvIDF2dykiIHNob3VsZCBzZXQgdGhl
IHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20g
MTBweCAxMHB4LCBjdXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEwcmVtIDElKSIgc2hvdWxkIHNldCB0
aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJv
bSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUwcHggMjBweCB2aWEgMTByZW0gMXB4IDIwdmggMWNoKSIg
c2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10g
PSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIGJ5IDUwcHggMjBweCB2aWEgMTByZW0gMXB4
IDIwdmggMWNoKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Y2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIHNtb290aCB0byA1MHB4IDIwcHgg
dmlhIDEwcmVtIDElKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHls
ZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIHNtb290aCB0byA1MHB4IDFw
dCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0
aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBhcmMgdG8gNTBweCAxcHQgb2YgMTBweCAxMHB4
KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRo
J10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGFyYyB0byA1MHB4IDFwdCBvZiAxMHB4IDEwcHgg
c21hbGwgcm90YXRlIDBkZWcpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBl
LnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwJSAxcmVtLCBhcmMgdG8gNTBweCAx
cHQgb2YgMjAlIGN3IGxhcmdlIHJvdGF0ZSAyNWRlZykiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5
IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGV2ZW5vZGQgZnJvbSAw
cHggMHB4LCBjbG9zZSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCiBQQVNTIGUuc3R5
bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGV2ZW5vZGQgZnJvbSAwcHggMHB4LCBjbG9zZSBwYXRo
KSIgc2hvdWxkIG5vdCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCiBQQVNTIGUuc3R5bGVbJ2NsaXAt
cGF0aCddID0gInNoYXBlKG5vbnplcm8sIGZyb20gMHB4IDBweCwgbGluZSB0byAxMHB4IDEwcHgp
IiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkgdmFsdWUKIFBBU1MgZS5zdHlsZVsnY2xpcC1w
YXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUwcHggMjBweCB2aWEgMTBy
ZW0pIiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkgdmFsdWUK
</data>
<flag name="commit-queue"
          id="486596"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457881</attachid>
            <date>2022-04-19 05:58:30 -0700</date>
            <delta_ts>2022-04-19 07:06:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238371-20220419155827.patch</filename>
            <type>text/plain</type>
            <size>96993</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0MDhiYzRlZDIxNmNh
YWM1ZWVlZTUyMDkyNWQ3NzYzOGU0M2QwZC4uYzhmMjI3MTg0NDc0MGQ5Njc0Mjg0YzY3ODkyNGUx
ZjgwODQyODU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0xOSAgTm9h
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFk
ZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBDU1Mgc2hhcGUoKSBieSBpbnRyb2R1Y2luZyBzaGFwZSBzZWdtZW50IGFuZCBCYXNpY1NoYXBl
U2hhcGUuCisgICAgICAgIFNoYXBlU2hhcGUgaXMgYSB2ZWN0b3Igb2Ygc2hhcGUgc2VnbWVudHMs
IHdoZXJlIGVhY2ggc2VnbWVudCBibGVuZHMgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgVGhlIHNo
YXBlIHVsdGltYXRlbHkgY3JlYXRlcyBhbiBTVkdQYXRoU291cmNlIHRvIGNvbnZlcnQgdGhlIHJl
c3BvbnNpdmUgc2hhcGUsIHdoaWNoCisgICAgICAgIGlzIGJhc2VkIG9uIExlbmd0aCB2YWx1ZXMs
IHRvIGFuIGFic29sdXRlIFBhdGggb2JqZWN0IHRoYXQgY2FuIGJlIGRyYXduLgorCisgICAgICAg
IFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXNoYXBlcy0yLyNzaGFwZS1mdW5jdGlv
bgorCisgICAgICAgIFVuc2tpcHBlZCBzZXZlcmFsIHJlbGV2YW50IFdQVHMuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgICAgICBOZXcgZmlsZXMg
YWRkZWQKKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZhbHVlRm9yQmFzaWNTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9MZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpiYXNpY1NoYXBlRm9yVmFsdWUpOgor
ICAgICAgICAgICAgICAgIEFkZGVkIHRoZSBCYXNpY1NoYXBlU2hhcGUgdHlwZQorCisgICAgICAg
ICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Q1NTQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2lj
U2hhcGVTaGFwZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6
CisgICAgICAgICAgICAgICAgQWRkZWQgdGhlIENTU0Jhc2ljU2hhcGVTaGFwZQorCisgICAgICAg
ICogY3NzL0NTU1NoYXBlU2VnbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
aGFwZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NT
U2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudDo6Q1NTU2hh
cGVTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OnRhcmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6YXJndW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OmFmZmluaXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjphcHBlbmRBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpDU1NTaGFwZVNlZ21l
bnRWYWx1ZSk6CisgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB0byBkbyB3aXRoIHRoZSBzZWdt
ZW50IG9mIHRoZSBzaGFwZSB3aGlsZSBpbiBDU1Mgc3BhY2UsCisgICAgICAgICAgICAgICAgaW5j
bHVkaW5nIHNlcmlhbGl6YXRpb24gZm9yIGdldENvbXB1dGVkU3R5bGUoKQorCisgICAgICAgICog
Y3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzU2hhcGVTZWdtZW50VmFsdWUgY29uc3Qp
OgorICAgICAgICAgICAgICAgIENTU1NoYXBlU2VnbWVudCBpcyBhIHR5cGUgb2YgdmFsdWUKKwor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAgICAgICAgIE5ldyBr
ZXl3b3JkcyBmb3Igc2hhcGUoKQorCisgICAgICAgICogY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9u
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFBvaW50VG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0FyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6dG9DU1NB
cmdzPExlbmd0aFBvaW50Pik6CisgICAgICAgIChXZWJDb3JlOjp0b0NTU1NoYXBlU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpzZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpmcm9t
Q1NTU2hhcGVTZWdtZW50KToKKyAgICAgICAgKiBjc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmg6
IEFkZGVkLgorICAgICAgICAgICAgICAgIENvbnZlcnRpbmcgc2hhcGUgc2VnbWVudHMgdG8vZnJv
bSBDU1Mgc3BhY2UKKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNoYXBlU2VnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVC
YXNpY1NoYXBlKToKKyAgICAgICAgICAgICAgICBQYXJzZSBhIHNoYXBlIHByb3BlcnR5CisKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OnZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzaWNTaGFwZVNlZ21lbnQ6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6YmxlbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFyY1RvU2hhcGVTZWdWYWx1
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVu
dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6Y3Jl
YXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50OjpCYXNp
Y1NoYXBlU2VnbWVudCk6CisgICAgICAgICAgICAgICAgQmxlbmRpbmcsIGNvbXBhcmluZyBhbmQg
Y29udmVydGluZyB0byBhYnNvbHV0ZSBwYXRoCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhCb3g6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhC
b3g6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1Bh
dGhQb2xpY3k6OmlzS2V5TnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVNlZ21lbnRzUGF0
aFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU2hh
cGVTZWdtZW50c1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpCYXNp
Y1NoYXBlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpwYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6YmxlbmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZVNoYXBlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2V0V2luZFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpmcm9tIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlU2hhcGU6OmF0IGNvbnN0KToKKyAgICAgICAgICAgICAgICBBZGQgQmFz
aWNTaGFwZVNoYXBlCisKIDIwMjItMDQtMTggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgUGxhdGZvcm1NZWRpYUVuZ2luZUNsYXNzTmFt
ZSBtYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODBiYmVhOGU3MjM0ZjA1NWVmZDZlMzQwMDc1
MGIzN2YzMzE3OGNhZS4uZWJlYzFlMGIwZDhjODhjMzk0NDRkZDg4NGI4MDNlNDk3MmU3MDY0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC01NTQsNiArNTU0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9DU1NSdWxlTGlzdC5oCiAgICAgY3NzL0NTU1Nl
bGVjdG9yLmgKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKyAgICBjc3MvQ1NTU2hhcGVTZWdt
ZW50LmgKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCiAgICAgY3NzL0NTU1N0eWxlUnVs
ZS5oCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMTg4Nyw2ICsxODg4LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hh
cGUuaAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCiAKKyAgICByZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaAogICAgIHJlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5oCiAgICAgcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAogICAgIHJlbmRlcmlu
Zy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBhZjNkMDZhNWIwYmJjNjhm
YzAxMTMzYmNjZmUxZjJjZDk3MGU4OWUuLjM0ZDMyYTg4MTYyNTdkNDVkZGFkOTgyYTk3YzdjMTRi
NzFkMDM4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC03NzEsNiArNzcxLDcgQEAgY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmNwcAogY3NzL0NTU1NlbGVjdG9yLmNwcAogY3NzL0NTU1NlbGVjdG9yTGlz
dC5jcHAKIGNzcy9DU1NTaGFkb3dWYWx1ZS5jcHAKK2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCiBj
c3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKIGNzcy9DU1NTdHlsZVJ1bGUuY3BwCiBjc3MvQ1NT
U3R5bGVTaGVldC5jcHAKQEAgLTI0NDksNiArMjQ1MCw3IEBAIHJlbmRlcmluZy9zaGFwZXMvUmVj
dGFuZ2xlU2hhcGUuY3BwCiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogcmVuZGVyaW5nL3No
YXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNw
cAorcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmNwcAogcmVuZGVyaW5nL3N0eWxl
L0JvcmRlckRhdGEuY3BwCiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCiByZW5kZXJp
bmcvc3R5bGUvRmlsbExheWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2MTc2MzlkZjcyMDZmYzQ4NDU3MDQ4ZWU0NGJh
ODk0M2M1MmM3YTIuLmY1NDE5MDgyMzdkNjE1NGJlNDIwZWQ2N2M5MDg1ZTY0NTlkMDQ1NGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ0NTIsNiArNDQ1MiwxMCBAQAogCQlDQTNCRjY3RTEwRDk5QkFFMDBFNkNFNTMgLyogU2Ny
b2xsQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNBNkMxNTMwMjIwQjk4
Q0MwMDU1Q0JGQyAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFBRTNCODFGQjgwRUFFMDBGNUVGQjIgLyog
SlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNBN0U5QjQ5MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVs
UGFpbnRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDQTdFOUI0NzI0MzYxREM1MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5o
ICovOyB9OworCQlDQTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBODE2Q0Iz
Mjc3ODQ4MUUwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oICovOyB9OworCQlDQTgxNkNC
OTI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyog
Q1NTU2hhcGVTZWdtZW50LmggKi87IH07CisJCUNBODE2Q0JDMjc3ODlBQUQwMDJCRDNDNiAvKiBT
aGFwZVNlZ21lbnRGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0E4MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1
bmN0aW9ucy5jcHAgKi87IH07CisJCUNBODE2Q0JEMjc3ODlBQUQwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRGdW5jdGlvbnMu
aCAqLzsgfTsKIAkJQ0FFOUY5MTAxNDY0NDFGMDAwQzI0NUIwIC8qIENTU0FzcGVjdFJhdGlvVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBRTlG
OTBFMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggKi87IH07CiAJCUNC
MzhGRDUyMUNDRjkzOTQwMDU5MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCMzhGRDRFMUNDRjkzN0UwMDU5
MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuaCAqLzsgfTsKIAkJQ0IzOEZENUIxQ0QyMzI1QjAw
NTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0IzOEZENTkxQ0QyMzE0NTAwNTkyQTNGIC8q
IEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oICovOyB9OwpAQCAtMTU5NDcsNiArMTU5NTEs
NyBAQAogCQlDQTA5MUQ4NjIzQ0Y5MDc4MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHlsZUltYWdlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0EwOTFEODkyM0NGOTA4ODAwQUQ0MzQ2IC8qIFN0eWxlSW1hZ2VTZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3R5bGVJbWFnZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQTE2MzVEQzIwNzJFNzY5MDBFN0QyQ0UgLyogUmVmZXJyZXJQb2xpY3kuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmZXJyZXJQb2xpY3kuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDQTE2NkNDQjI3ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hh
cGVTZWdtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1NoYXBlU2VnbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMTkzM0Q1MjQwN0Q2NDAwMDcxMjQxQSAvKiBQ
ZXJmb3JtYW5jZVBhaW50VGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZvcm1hbmNlUGFpbnRU
aW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0ExOTMzRDgyNDA3RURDRjAw
NzEyNDFBIC8qIFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDQTNBNEFBQjI1NDE2RTNDMDA2Q0RBRTIgLyogSW1hZ2VSZXNvbHV0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlUmVzb2x1dGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTk2Miw2ICsxNTk2NywxMSBAQAogCQlDQTZD
MTUzODIyMEQxRUIzMDA1NUNCRkMgLyogSlNJREJDdXJzb3JXaXRoVmFsdWVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJDdXJzb3JXaXRoVmFsdWVD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTdFOUI0NzI0MzYxREM1
MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb250ZW50ZnVsUGFpbnRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNBN0U5QjQ4MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFpbnRD
aGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRm
dWxQYWludENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNC
MzI3Nzg0ODFFMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0E4MTZDQjQyNzc4NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2ljU2hhcGVTZWdt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4MTZDQjgyNzc4NDgyRTAw
MkJEM0M2IC8qIENTU1NoYXBlU2VnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDU1NTaGFwZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4
MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFwZVNlZ21lbnRGdW5jdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCQjI3Nzg5QUE3MDAyQkQzQzYg
LyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQUU5RjkwRDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIw
IC8qIENTU0FzcGVjdFJhdGlvVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
QjM4RkQ0QTFDQ0NGMkREMDA1OTJBM0YgLyogUGVyZm9ybWFuY2VFbnRyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJmb3JtYW5jZUVudHJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5Njg4LDYgKzI5Njk4LDggQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCUZCRDZBRjgyMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi8s
CiAJCQkJRkJENkFGODMxNUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8sCisJCQkJ
Q0E4MTZDQjQyNzc4NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJ
CQlDQTgxNkNCMzI3Nzg0ODFFMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLywKIAkJ
CQkwRjI4M0E5MTIzNTYzMTI2MDA0Nzk0Q0EgLyogQm9yZGVyRGF0YS5jcHAgKi8sCiAJCQkJQkM1
RUI1RTAwRTgxQkU4NzAwQjI1OTY1IC8qIEJvcmRlckRhdGEuaCAqLywKIAkJCQlCQzVFQjVEQTBF
ODFCN0VBMDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCAqLywKQEAgLTMxOTYxLDYgKzMxOTczLDgg
QEAKIAkJCQlFNEMxNzg5NjBFRTY5MDM4MDA4MjRENjkgLyogQ1NTU2VsZWN0b3JMaXN0LmggKi8s
CiAJCQkJQTgwRTZDQ0EwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmNwcCAqLywK
IAkJCQlBODBFNkNCRTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU2hhZG93VmFsdWUuaCAqLywKKwkJ
CQlDQTE2NkNDQjI3ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJ
CQlDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggKi8sCiAJCQkJ
N0NERThFQkMxRjE5M0JDNTAwMTY4RkU3IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uY3BwICovLAog
CQkJCUE4MEU2RTBEMEExOTkxMUMwMDdGQjhDNSAvKiBDU1NTdHlsZURlY2xhcmF0aW9uLmggKi8s
CiAJCQkJMTQyMDExQUUwQTAwMzExNzAwODMwM0Y5IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaWRs
ICovLApAQCAtMzIwOTYsNiArMzIxMTAsOCBAQAogCQkJCTQzQjg1RUQ2MThDQkVDOTcwMEUzMUFG
NCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuaW4gKi8s
CiAJCQkJMjZBQTBGOUExOEQyOTczRDAwNDE5MzgxIC8qIFNlbGVjdG9yUHNldWRvRWxlbWVudFR5
cGVNYXAuaW4gKi8sCiAJCQkJNDMxMDdCRTExOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNl
dWRvVHlwZU1hcC5oICovLAorCQkJCUNBODE2Q0JBMjc3ODlBQTIwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuY3BwICovLAorCQkJCUNBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBT
aGFwZVNlZ21lbnRGdW5jdGlvbnMuaCAqLywKIAkJCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQg
LyogU3R5bGVDb2xvci5jcHAgKi8sCiAJCQkJOTQxODI3ODkxRDhCMjQyMjAwNDkyNzY0IC8qIFN0
eWxlQ29sb3IuaCAqLywKIAkJCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRp
YS5jcHAgKi8sCkBAIC0zMzg1Niw2ICszMzg3Miw3IEBACiAJCQkJNzE1NkJDQTEyMUNBMzUwRjAw
NTM0Mzk3IC8qIEJhc2ljRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4
QTE1RUYyNURGMDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkJENkFGOEMxNUVGMjYwNDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDQTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFCMjNBMzI4MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVU
ZXh0SW5zZXJ0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCM0QwQTQ0RUZDNzAw
Rjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEy
NDBEMDA2QzFEMDBFRjZGMjYgLyogQmlkaUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMzQz
NDcsNiArMzQzNjQsNyBAQAogCQkJCUU0QzE3ODlCMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxl
Y3Rvckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0REU1QzhFMUQ4MDgwMjcwMDE2NEYyQSAv
KiBDU1NTZWxlY3RvclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRTgwQTE5ODlD
QTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNC
OTI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQTUzOEEyQTI2RjAxMDQyMDA5NjVGQzggLyogQ1NTU2tldy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkE1MzhBMkIyNkYwMTA0NTAwOTY1RkM4IC8qIENTU1NrZXdYLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyQTUzOEEyQzI2RjAxMDQ4MDA5NjVGQzggLyogQ1NTU2tld1kuaCBpbiBIZWFkZXJzICov
LApAQCAtMzc0ODQsNiArMzc1MDIsNyBAQAogCQkJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAv
KiBTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NUIxNzVENDFFRTAwQzIxRUM4IC8q
IFNoYXBlSW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTUyMTc1RDNGM0UwMEMy
MUVDOCAvKiBTaGFwZU91dHNpZGVJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNCRDI3
Nzg5QUFEMDAyQkQzQzYgLyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDFBRjE1MDE2NTZGMTUxMDBDNkQ0RjcgLyogU2hhcGVWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUQ5RjBGQzEyMTIyMDI5QjAwNUQ4RkQ0IC8qIFNoYXJlRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE0QTk1NEUwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zOTAzMCw2ICszOTA0OSw3IEBACiAJCQkJNDNCODVFRDQxOENCRUM1
MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1h
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkFBMEY5RTE4RDJBMThCMDA0MTkzODEgLyogU2Vs
ZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0Q1OERG
RDFGOTU2NUE4MDAxMTI3OTEgLyogU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0E4
MTZDQkMyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MURGMkQ1RTI3QTk0NTJBMDBGMjVBMjEgLyogU2hhcmVkVmlkZW9GcmFt
ZUluZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTBBODFGOTAyMkE0MDA1MTAyQ0UgLyog
U29mdExpbmtMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUFBMTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCmluZGV4IDlkZjJjZmY3
OTU3ZTQ1ZDg5YjcyMWE3MWU3NWUyOGQ4NWE1ZTc5YTcuLjE3NzIyMjZhZmViNzNkODQ0OTU5N2Q2
YWRlMzY4M2U2N2IxZDVjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1No
YXBlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0
aW9ucy5jcHAKQEAgLTMwLDEzICszMCwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkJhc2ljU2hhcGVGdW5jdGlvbnMuaCIKIAorI2luY2x1ZGUgIkJhc2ljU2hhcGVTZWdtZW50
LmgiCiAjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKICNpbmNsdWRlICJDU1NCYXNpY1NoYXBlcy5o
IgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJDU1NT
aGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJQYWly
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVh
bS5oIgorI2luY2x1ZGUgIlNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTE1NCw2ICsxNTcsMjIgQEAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1
ZUZvckJhc2ljU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCYXNpY1MKICAg
ICAgICAgYmFzaWNTaGFwZVZhbHVlID0gV1RGTW92ZShpbnNldFZhbHVlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorICAgIGNhc2UgQmFzaWNTaGFwZTo6VHlwZTo6U2hhcGU6IHsKKyAgICAgICAg
YXV0byYgc2hhcGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGUpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
KyAgICAgICAgYXV0byBzaXplID0gc2hhcGUuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHRvQ1NTU2hh
cGVTZWdtZW50KHN0eWxlLCBzaGFwZS5hdChpKSkpOworCisgICAgICAgIGF1dG8gZnJvbSA9IGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoCisgICAgICAgICAgICBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc2hhcGUuZnJvbSgpLngoKSwgc3R5bGUpLAorICAgICAgICAgICAg
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYXBlLmZyb20oKS55KCksIHN0eWxlKSwgUGFpcjo6
SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSkpOworCisgICAgICAgIGF1dG8g
c2hhcGVWYWx1ZSA9IENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3JlYXRlKFdURk1vdmUoZnJvbSksIFdU
Rk1vdmUocmVzdWx0KSk7CisgICAgICAgIHNoYXBlVmFsdWUtPnNldFdpbmRSdWxlKHNoYXBlLndp
bmRSdWxlKCkpOworICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBXVEZNb3ZlKHNoYXBlVmFsdWUp
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShiYXNpY1NoYXBlVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0xNjQs
NiArMTgzLDEyIEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjCiAgICAgcmV0dXJuIHZhbHVlLT5j
b252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IEZpeGVkRmxvYXRDb252ZXJz
aW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oY29udmVyc2lv
bkRhdGEpOwogfQogCitzdGF0aWMgTGVuZ3RoUG9pbnQgY29udmVydFRvTGVuZ3RoUG9pbnQoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKK3sKKyAgICBhdXRvJiBwYWlyID0gKihkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgpKTsKKyAgICByZXR1cm4geyBjb252ZXJ0VG9MZW5ndGgo
Y29udmVyc2lvbkRhdGEsIHBhaXIuZmlyc3QoKSksIGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9u
RGF0YSwgcGFpci5zZWNvbmQoKSkgfTsKK30KKwogc3RhdGljIExlbmd0aFNpemUgY29udmVydFRv
TGVuZ3RoU2l6ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0
YSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlKQogewogICAgIGlmICghdmFsdWUpCkBA
IC0yOTcsNiArMzIyLDIwIEBAIFJlZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9yVmFsdWUoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhCiAgICAgICAgIGJhc2lj
U2hhcGUgPSBXVEZNb3ZlKHBhdGgpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBD
U1NCYXNpY1NoYXBlOjpDU1NCYXNpY1NoYXBlU2hhcGVUeXBlOiB7CisgICAgICAgIGF1dG8mIHNo
YXBlVmFsdWUgPSBkb3duY2FzdDxDU1NCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGVWYWx1ZSk7
CisgICAgICAgIGNvbnN0IGF1dG8mIGNzc1NlZ21lbnRzID0gc2hhcGVWYWx1ZS5zZWdtZW50cygp
OworICAgICAgICBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4gc2VnbWVudHMoY3NzU2Vn
bWVudHMubGVuZ3RoKCkpOworICAgICAgICBzdGQ6OnRyYW5zZm9ybShzdGQ6OmJlZ2luKGNzc1Nl
Z21lbnRzKSwgc3RkOjplbmQoY3NzU2VnbWVudHMpLCBzZWdtZW50cy5iZWdpbigpLCBbJl0gKGNv
bnN0IGF1dG8mIGNzc1NlZ21lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBmcm9tQ1NTU2hhcGVT
ZWdtZW50KGNvbnZlcnNpb25EYXRhLCBkb3duY2FzdDxDU1NTaGFwZVNlZ21lbnQ+KGNzc1NlZ21l
bnQuZ2V0KCkpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byBzaGFwZSA9IEJhc2ljU2hh
cGVTaGFwZTo6Y3JlYXRlKGNvbnZlcnRUb0xlbmd0aFBvaW50KGNvbnZlcnNpb25EYXRhLCBzaGFw
ZVZhbHVlLmZyb20oKSksIFdURk1vdmUoc2VnbWVudHMpKTsKKyAgICAgICAgc2hhcGUtPnNldFdp
bmRSdWxlKHNoYXBlVmFsdWUud2luZFJ1bGUoKSk7CisKKyAgICAgICAgYmFzaWNTaGFwZSA9IFdU
Rk1vdmUoc2hhcGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJu
IGJhc2ljU2hhcGUucmVsZWFzZU5vbk51bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFw
ZXMuY3BwCmluZGV4IDg5ZTA5ZjU3MmMzNTE2MzgzZjdiMjYyZDU0MGMwM2RlMDJlODQ4NTAuLjg1
ZjY3NmZlNjE2NGFhMGI0MDg4ODMxZDA1NjQ4ODMyZTUwMGZiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtMjIyLDYgKzIyMiwzOCBAQCBib29sIENTU0Jhc2ljU2hh
cGVQYXRoOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYgb3RoZXJTaGFwZSkgY29uc3QKICAg
ICByZXR1cm4gd2luZFJ1bGUoKSA9PSBvdGhlclNoYXBlUGF0aC53aW5kUnVsZSgpICYmIHBhdGhE
YXRhKCkgPT0gb3RoZXJTaGFwZVBhdGgucGF0aERhdGEoKTsKIH0KIAorQ1NTQmFzaWNTaGFwZVNo
YXBlOjpDU1NCYXNpY1NoYXBlU2hhcGUoUmVmPENTU1ZhbHVlPiYmIGZyb20sIFJlZjxDU1NWYWx1
ZUxpc3Q+JiYgc2VnbWVudHMpCisgICAgOiBtX3NlZ21lbnRzKFdURk1vdmUoc2VnbWVudHMpKSwg
bV9mcm9tKFdURk1vdmUoZnJvbSkpCit7IAorfQorCitib29sIENTU0Jhc2ljU2hhcGVTaGFwZTo6
ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIG90aGVyU2hhcGUpIGNvbnN0Cit7CisgICAgaWYg
KCFpczxDU1NCYXNpY1NoYXBlU2hhcGU+KG90aGVyU2hhcGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBhdXRvJiBvdGhlclNoYXBlU2hhcGUgPSBkb3duY2FzdDxDU1NCYXNpY1NoYXBl
U2hhcGU+KG90aGVyU2hhcGUpOworICAgIHJldHVybiB3aW5kUnVsZSgpID09IG90aGVyU2hhcGVT
aGFwZS53aW5kUnVsZSgpCisgICAgICAgICYmIGZyb20oKSA9PSBvdGhlclNoYXBlU2hhcGUuZnJv
bSgpCisgICAgICAgICYmIHNlZ21lbnRzKCkuZXF1YWxzKG90aGVyU2hhcGVTaGFwZS5zZWdtZW50
cygpKTsKK30KKworU3RyaW5nIENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3NzVGV4dCgpIGNvbnN0Cit7
CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGlmICh3aW5kUnVsZSgpID09IFdpbmRS
dWxlOjpFdmVuT2RkKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgic2hhcGUoZXZlbm9kZCAiKTsK
KyAgICBlbHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJzaGFwZSgiKTsKKworICAgIGF1dG8q
IHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oZnJvbSgpKS5wYWlyVmFsdWUoKTsK
KyAgICBBU1NFUlQocGFpcik7CisgICAgYnVpbGRlci5hcHBlbmQoImZyb20gIiwgcGFpci0+Y3Nz
VGV4dCgpLCAiLCAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChzZWdtZW50cygpLmNzc1RleHQoKSwg
IikiKTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKIHN0YXRpYyBTdHJp
bmcgYnVpbGRQb2x5Z29uU3RyaW5nKGNvbnN0IFdpbmRSdWxlJiB3aW5kUnVsZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBvaW50cykKIHsKICAgICBBU1NFUlQoIShwb2ludHMuc2l6ZSgpICUgMikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAppbmRleCAxMDVjNDYwOTQxZDY3NDRlNTdi
ZTdhMzVkNmIwNGZjNzNmYWJiYmVjLi4xNjMwNmRmMjllYjkzYTlkZDMzOWUwYzJmYTYxNDhjY2E4
MjQ4MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaApAQCAtMzgsNiArMzgsMTAg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CitjbGFz
cyBDU1NTaGFwZVNlZ21lbnQ7CitjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZVBhaXI7CitjbGFzcyBD
U1NWYWx1ZTsKK2NsYXNzIENTU1ZhbHVlTGlzdDsKIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFtOwog
CiBjbGFzcyBDU1NCYXNpY1NoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTQmFzaWNTaGFwZT4g
ewpAQCAtNDcsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgICAgIENTU0Jhc2ljU2hhcGVDaXJjbGVU
eXBlLAogICAgICAgICBDU1NCYXNpY1NoYXBlRWxsaXBzZVR5cGUsCiAgICAgICAgIENTU0Jhc2lj
U2hhcGVJbnNldFR5cGUsCi0gICAgICAgIENTU0Jhc2ljU2hhcGVQYXRoVHlwZQorICAgICAgICBD
U1NCYXNpY1NoYXBlUGF0aFR5cGUsCisgICAgICAgIENTU0Jhc2ljU2hhcGVTaGFwZVR5cGUKICAg
ICB9OwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CkBAIC0yMzMsNiArMjM4
LDM1IEBAIHByaXZhdGU6CiAgICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFdpbmRSdWxlOjpOb25a
ZXJvIH07CiB9OwogCitjbGFzcyBDU1NCYXNpY1NoYXBlU2hhcGUgZmluYWwgOiBwdWJsaWMgQ1NT
QmFzaWNTaGFwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDU1NCYXNpY1NoYXBlU2hhcGU+
IGNyZWF0ZShSZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJiBzZWdtZW50
cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0Jhc2ljU2hhcGVTaGFw
ZShXVEZNb3ZlKGZyb20pLCBXVEZNb3ZlKHNlZ21lbnRzKSkpOworICAgIH0KKworICAgIGNvbnN0
IENTU1ZhbHVlTGlzdCYgc2VnbWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
c2VnbWVudHMuZ2V0KCk7CisgICAgfQorCisgICAgdm9pZCBzZXRXaW5kUnVsZShXaW5kUnVsZSBy
dWxlKSB7IG1fd2luZFJ1bGUgPSBydWxlOyB9CisgICAgV2luZFJ1bGUgd2luZFJ1bGUoKSBjb25z
dCB7IHJldHVybiBtX3dpbmRSdWxlOyB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgZnJvbSgpIGNv
bnN0IHsgcmV0dXJuIG1fZnJvbS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIENTU0Jhc2ljU2hh
cGVTaGFwZShSZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJik7CisKKyAg
ICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDU1NCYXNpY1NoYXBlU2hhcGVUeXBl
OyB9CisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGVxdWFscyhj
b25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3QgZmluYWw7CisKKyAgICBSZWY8Q1NTVmFsdWVMaXN0
PiBtX3NlZ21lbnRzOworICAgIFJlZjxDU1NWYWx1ZT4gbV9mcm9tOworICAgIFdpbmRSdWxlIG1f
d2luZFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhU
b1ZhbHVlVHlwZU5hbWUpIFwKQEAgLTI0NSwzICsyNzksNCBAQCBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0NTU19CQVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZUNpcmNsZSkKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlRWxsaXBzZSkKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUG9seWdvbikKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUGF0aCkK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlU2hh
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwODA1
MGNhZmI4NTg0MDk3ZmY5YWI4YjBmZWI4MzA3YWU3ZDA2NzkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNwcApAQCAtMCwwICsxLDE5MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q1NTU2hhcGVTZWdtZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8oQ1NT
U2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFy
Z2V0KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKE1vdmVUbywg
YWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENT
U1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0
eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCkKK3sKKyAgICByZXR1cm4gQ1NTU2hh
cGVTZWdtZW50VmFsdWU6OmNyZWF0ZShMaW5lVG8sIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdldCkp
OworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVU
b0hvcml6b250YWwoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8
Q1NTVmFsdWU+JiYgeCkKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0
ZShMaW5lVG9Ib3Jpem9udGFsLCBhZmZpbml0eSwgV1RGTW92ZSh4KSk7Cit9CisKK1JlZjxDU1NT
aGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwoQ1NTU2hh
cGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgeSkKK3sK
KyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShMaW5lVG9WZXJ0aWNhbCwg
YWZmaW5pdHksIFdURk1vdmUoeSkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFw
ZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpYyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5p
dHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBwMSwg
UmVmPENTU1ZhbHVlPiYmIHAyKQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6
Y3JlYXRlKEN1cnZlVG9DdWJpYywgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92ZShw
MSksIFdURk1vdmUocDIpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdt
ZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0
eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxKQor
eworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEN1cnZlVG9RdWFkcmF0
aWMsIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUocDEpKTsKK30KKworUmVmPENT
U1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWNTbW9vdGgo
Q1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYg
dGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcDIpCit7CisgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVu
dFZhbHVlOjpjcmVhdGUoQ3VydmVUb0N1YmljU21vb3RoLCBhZmZpbml0eSwgV1RGTW92ZSh0YXJn
ZXQpLCBXVEZNb3ZlKHAyKSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aChDU1NTaGFwZVNlZ21lbnQ6OkNvb3Jk
QWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpCit7CisgICAgcmV0dXJu
IENTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb1F1YWRyYXRpY1Ntb290aCwgYWZm
aW5pdHksIFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQXJjVG8oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFm
ZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcmFkaXVzLCBD
U1NWYWx1ZUlEIHN3ZWVwLCBDU1NWYWx1ZUlEIHNpemUsIFJlZjxDU1NWYWx1ZT4mJiBhbmdsZSkK
K3sKKyAgICBBU1NFUlQoc3dlZXAgPT0gQ1NTVmFsdWVDY3cgfHwgc3dlZXAgPT0gQ1NTVmFsdWVD
dyk7CisgICAgQVNTRVJUKHNpemUgPT0gQ1NTVmFsdWVTbWFsbCB8fCBzaXplID09IENTU1ZhbHVl
TGFyZ2UpOworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEFyY1RvLCBh
ZmZpbml0eSwKKyAgICAgICAgV1RGTW92ZSh0YXJnZXQpLAorICAgICAgICBXVEZNb3ZlKHJhZGl1
cyksCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3dlZXApLAorICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHNpemUpLAorICAgICAgICBXVEZNb3ZlKGFuZ2xlKSk7
Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQ
YXRoKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKihuZXcgQ1NTU2hhcGVTZWdtZW50KENsb3Nl
UGF0aCkpKTsKK30KKworYm9vbCBDU1NTaGFwZVNlZ21lbnQ6OmVxdWFscyhjb25zdCBDU1NTaGFw
ZVNlZ21lbnQmIG90aGVyKSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gb3RoZXIudHlwZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV90eXBlID09IENsb3NlUGF0aCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NT
U2hhcGVTZWdtZW50VmFsdWUmPigqdGhpcykuZXF1YWxzKHN0YXRpY19jYXN0PGNvbnN0IENTU1No
YXBlU2VnbWVudFZhbHVlJj4ob3RoZXIpKTsKK30KKworU3RyaW5nIENTU1NoYXBlU2VnbWVudDo6
Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHlwZSA9PSBDU1NTaGFwZVNlZ21l
bnQ6OkNsb3NlUGF0aCkKKyAgICAgICAgcmV0dXJuICJjbG9zZSJfczsKKworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21lbnRWYWx1ZSo+KHRoaXMpLT5jdXN0b21DU1NU
ZXh0KCk7Cit9CisKK2Jvb2wgQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyhjb25zdCBDU1NT
aGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdAoreworICAgIEFTU0VSVCh0eXBlKCkgPT0gb3RoZXIu
dHlwZSgpKTsKKyAgICBjb25zdCBhdXRvJiBvdGhlclZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q1NTU2hhcGVTZWdtZW50VmFsdWUmPihvdGhlcik7CisgICAgcmV0dXJuIG90aGVyVmFsdWUubV9h
ZmZpbml0eSA9PSBtX2FmZmluaXR5CisgICAgICAgICYmIG90aGVyVmFsdWUudGFyZ2V0KCkuZXF1
YWxzKHRhcmdldCgpKQorICAgICAgICAmJiBvdGhlclZhbHVlLm1fYXJndW1lbnRzLmdldCgpLmVx
dWFscyhtX2FyZ3VtZW50cy5nZXQoKSk7Cit9CisKK1N0cmluZyBDU1NTaGFwZVNlZ21lbnRWYWx1
ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0Cit7CisgICAgY29uc3QgYXV0byBjb21tYW5kID0gWyZd
KCkgeworICAgICAgICBzd2l0Y2ggKHR5cGUoKSkgeworICAgICAgICBjYXNlIE1vdmVUbzoKKyAg
ICAgICAgICAgIHJldHVybiAibW92ZSI7CisgICAgICAgIGNhc2UgTGluZVRvOgorICAgICAgICAg
ICAgcmV0dXJuICJsaW5lIjsKKyAgICAgICAgY2FzZSBMaW5lVG9Ib3Jpem9udGFsOgorICAgICAg
ICAgICAgcmV0dXJuICJobGluZSI7CisgICAgICAgIGNhc2UgTGluZVRvVmVydGljYWw6CisgICAg
ICAgICAgICByZXR1cm4gInZsaW5lIjsKKyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWM6CisgICAg
ICAgIGNhc2UgQ3VydmVUb1F1YWRyYXRpYzoKKyAgICAgICAgICAgIHJldHVybiAiY3VydmUiOwor
ICAgICAgICBjYXNlIEN1cnZlVG9DdWJpY1Ntb290aDoKKyAgICAgICAgY2FzZSBDdXJ2ZVRvUXVh
ZHJhdGljU21vb3RoOgorICAgICAgICAgICAgcmV0dXJuICJzbW9vdGgiOworICAgICAgICBjYXNl
IEFyY1RvOgorICAgICAgICAgICAgcmV0dXJuICJhcmMiOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gIiI7Cisg
ICAgICAgIH0KKworICAgIH07CisKKyAgICBjb25zdCBhdXRvIGNvbmp1bmN0aW9uID0gWyZdKCkg
eworICAgICAgICBzd2l0Y2ggKHR5cGUoKSkgeworICAgICAgICBjYXNlIE1vdmVUbzoKKyAgICAg
ICAgY2FzZSBMaW5lVG86CisgICAgICAgIGNhc2UgTGluZVRvSG9yaXpvbnRhbDoKKyAgICAgICAg
Y2FzZSBMaW5lVG9WZXJ0aWNhbDoKKyAgICAgICAgY2FzZSBDdXJ2ZVRvUXVhZHJhdGljU21vb3Ro
OgorICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICBjYXNlIEN1cnZlVG9DdWJpYzoKKyAg
ICAgICAgY2FzZSBDdXJ2ZVRvUXVhZHJhdGljOgorICAgICAgICBjYXNlIEN1cnZlVG9DdWJpY1Nt
b290aDoKKyAgICAgICAgICAgIHJldHVybiAiIHZpYSAiOworICAgICAgICBjYXNlIEFyY1RvOgor
ICAgICAgICAgICAgcmV0dXJuICIgb2YgIjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9
CisgICAgfTsKKworICAgIGF1dG8gYnlUbyA9IG1fYWZmaW5pdHkgPT0gQ1NTU2hhcGVTZWdtZW50
OjpDb29yZEFmZmluaXR5OjpBYnNvbHV0ZSA/ICIgdG8gIiA6ICIgYnkgIjsKKyAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoY29tbWFuZCgpLCBieVRvLCBtX3Rh
cmdldC0+Y3NzVGV4dCgpLCBjb25qdW5jdGlvbigpKTsKKyAgICBpZiAodHlwZSgpID09IEFyY1Rv
KSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3VtZW50KDApLmNzc1RleHQoKSk7CisgICAg
ICAgIGNvbnN0IGF1dG8mIHN3ZWVwID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGFyZ3Vt
ZW50KDEpKTsKKyAgICAgICAgY29uc3QgYXV0byYgc2l6ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPihhcmd1bWVudCgyKSk7CisgICAgICAgIGNvbnN0IGF1dG8mIGFuZ2xlID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGFyZ3VtZW50KDMpKTsKKworICAgICAgICBpZiAoc3dlZXAu
dmFsdWVJRCgpID09IENTU1ZhbHVlQ3cpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIGN3
Iik7CisKKyAgICAgICAgaWYgKHNpemUudmFsdWVJRCgpID09IENTU1ZhbHVlTGFyZ2UpCisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiIGxhcmdlIik7CisKKyAgICAgICAgaWYgKGFuZ2xlLmNv
bXB1dGVEZWdyZWVzKCkpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIHJvdGF0ZSAiLCBh
bmdsZS5jc3NUZXh0KCkpOworICAgIH0gZWxzZQorICAgICAgICBidWlsZGVyLmFwcGVuZChtX2Fy
Z3VtZW50cy0+Y3NzVGV4dCgpKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwNzM2YTAz
MzZmMTVhMDQzMWFhNTUxOGExYWRjYjI1MTE4MTc4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuaApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNs
dWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3Rm
L1R5cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBDU1NTaGFwZVNlZ21lbnQgOiBwdWJsaWMgQ1NTVmFsdWUgeworcHVibGljOgorICAgIGVudW0g
Y2xhc3MgQ29vcmRBZmZpbml0eSB7CisgICAgICAgIEFic29sdXRlLCBSZWxhdGl2ZQorICAgIH07
CisKKyAgICBlbnVtIFNlZ21lbnRUeXBlIHsKKyAgICAgICAgTW92ZVRvLAorICAgICAgICBMaW5l
VG8sCisgICAgICAgIExpbmVUb0hvcml6b250YWwsCisgICAgICAgIExpbmVUb1ZlcnRpY2FsLAor
ICAgICAgICBDdXJ2ZVRvQ3ViaWMsCisgICAgICAgIEN1cnZlVG9RdWFkcmF0aWMsCisgICAgICAg
IEN1cnZlVG9DdWJpY1Ntb290aCwKKyAgICAgICAgQ3VydmVUb1F1YWRyYXRpY1Ntb290aCwKKyAg
ICAgICAgQXJjVG8sCisgICAgICAgIENsb3NlUGF0aAorICAgIH07CisKKyAgICBTZWdtZW50VHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICBib29sIGVxdWFscyhjb25z
dCBDU1NTaGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdDsKKyAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4
dCgpIGNvbnN0OworICAgIH5DU1NTaGFwZVNlZ21lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0
aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRlQ2xvc2VQYXRoKCk7CisgICAgc3RhdGljIFJl
ZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZU1vdmVUbyhDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFs
dWU+JiYgdGFyZ2V0KTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRlTGlu
ZVRvKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpOworICAgIHN0YXRpYyBS
ZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKENvb3JkQWZmaW5pdHks
IFJlZjxDU1NWYWx1ZT4mJiB4KTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3Jl
YXRlTGluZVRvVmVydGljYWwoQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHkpOworICAg
IHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVDdXJ2ZVRvQ3ViaWMoQ29vcmRBZmZp
bml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxLCBSZWY8Q1NT
VmFsdWU+JiYgcDIpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVDdXJ2
ZVRvUXVhZHJhdGljKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxD
U1NWYWx1ZT4mJiBwMSk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1
cnZlVG9DdWJpY1Ntb290aChDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBS
ZWY8Q1NTVmFsdWU+JiYgcDIpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVh
dGVDdXJ2ZVRvUXVhZHJhdGljU21vb3RoKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0
YXJnZXQpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVBcmNUbyhDb29y
ZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcmFkaXVz
LCBDU1NWYWx1ZUlEIHN3ZWVwLCBDU1NWYWx1ZUlEIHNpemUsIFJlZjxDU1NWYWx1ZT4mJiBhbmds
ZSk7CisKK3Byb3RlY3RlZDoKKyAgICBDU1NTaGFwZVNlZ21lbnQoU2VnbWVudFR5cGUgdHlwZSkK
KyAgICAgICAgOiBDU1NWYWx1ZShTaGFwZVNlZ21lbnRDbGFzcykKKyAgICAgICAgLCBtX3R5cGUo
dHlwZSkgeyB9CisKK3ByaXZhdGU6CisgICAgU2VnbWVudFR5cGUgbV90eXBlOworfTsKKworY2xh
c3MgQ1NTU2hhcGVTZWdtZW50VmFsdWUgOiBwdWJsaWMgQ1NTU2hhcGVTZWdtZW50IHsKK3B1Ymxp
YzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgLi4uQXJncz4KKyAgICBzdGF0aWMgUmVmPENTU1No
YXBlU2VnbWVudD4gY3JlYXRlKENTU1NoYXBlU2VnbWVudDo6U2VnbWVudFR5cGUgdHlwZSwKKyAg
ICAgICAgQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFs
dWU+JiYgdGFyZ2V0LCBBcmdzLi4uIGFyZ3VtZW50cykKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU1NoYXBlU2VnbWVudFZhbHVlKHR5cGUsIGFmZmluaXR5LCBXVEZNb3Zl
KHRhcmdldCksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmd1bWVudHMpLi4uKSk7CisgICAgfQorCisg
ICAgY29uc3QgQ1NTVmFsdWUmIHRhcmdldCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV90YXJnZXQuZ2V0KCk7CisgICAgfQorCisgICAgY29uc3QgQ1NTVmFsdWUmIGFyZ3VtZW50KHNp
emVfdCBpKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRzLT5sZW5ndGgo
KSA+IGkpOworICAgICAgICByZXR1cm4gKihtX2FyZ3VtZW50cy0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjayhpKSk7CisgICAgfQorCisgICAgQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFm
ZmluaXR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FmZmluaXR5OworICAgIH0K
KworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0Owor
ICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9pZCBh
cHBlbmRBcmdzKCkgeyB9CisgICAgdm9pZCBhcHBlbmRBcmdzKFJlZjxDU1NWYWx1ZT4mJiB2KSB7
IG1fYXJndW1lbnRzLT5hcHBlbmQoV1RGTW92ZSh2KSk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIC4uLkFyZ3M+CisgICAgdm9pZCBhcHBlbmRBcmdzKFJlZjxDU1NWYWx1ZT4mJiB2LCBBcmdz
IC4uLmFyZ3MpCisgICAgeworICAgICAgICBhcHBlbmRBcmdzKFdURk1vdmUodikpOworICAgICAg
ICBhcHBlbmRBcmdzKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgLi4uQXJncz4KKyAgICBDU1NTaGFwZVNlZ21lbnRWYWx1ZShDU1NT
aGFwZVNlZ21lbnQ6OlNlZ21lbnRUeXBlIHR5cGUsIENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZp
bml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgQXJncyAuLi5hcmdzKQorICAg
ICAgICA6IENTU1NoYXBlU2VnbWVudCh0eXBlKQorICAgICAgICAsIG1fYWZmaW5pdHkoYWZmaW5p
dHkpCisgICAgICAgICwgbV90YXJnZXQoV1RGTW92ZSh0YXJnZXQpKQorICAgICAgICAsIG1fYXJn
dW1lbnRzKENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKSkKKyAgICB7CisgICAg
ICAgIGFwcGVuZEFyZ3Moc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAg
ICBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgbV9hZmZpbml0eTsKKyAgICBSZWY8Q1NT
VmFsdWU+IG1fdGFyZ2V0OworICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IG1fYXJndW1lbnRzOworfTsK
KworfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfVkFMVUUoQ1NTU2hhcGVTZWdtZW50LCBp
c1NoYXBlU2VnbWVudFZhbHVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCA1ZTIxODIy
NjNmY2VhNWNhZmYzNjNlNGZmNDQwMzk0MzgxMWY2ZGFjLi42MzA5ZTNmZjczZGNjYjY2NzMxZjIy
NGI2NDlkNzg5MmRhMmVkMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTYwLDYgKzYw
LDcgQEAKICNpbmNsdWRlICJDU1NSYXlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1
ZS5oIgogI2luY2x1ZGUgIkNTU1NoYWRvd1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTU2hhcGVTZWdt
ZW50LmgiCiAjaW5jbHVkZSAiQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNT
U1VuaWNvZGVSYW5nZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCkBAIC0yMzAs
NiArMjMxLDggQEAgYm9vbCBDU1NWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1ZhbHVlJiBvdGhlcikg
Y29uc3QKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0ZvbnRTdHlsZVZh
bHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNlIEZvbnRTdHlsZVJhbmdlQ2xhc3M6CiAg
ICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NGb250U3R5bGVSYW5nZVZhbHVl
PigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFNoYXBlU2VnbWVudENsYXNzOgorICAgICAg
ICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTU2hhcGVTZWdtZW50PigqdGhpcywgb3Ro
ZXIpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzksNiArMzQyLDggQEAgU3RyaW5nIENT
U1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0ZvbnRT
dHlsZVZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIGNhc2UgRm9udFN0eWxlUmFu
Z2VDbGFzczoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0ZvbnRTdHlsZVJhbmdlVmFsdWU+
KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CisgICAgY2FzZSBTaGFwZVNlZ21lbnRDbGFzczoKKyAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1NoYXBlU2VnbWVudD4oKnRoaXMpLmN1c3RvbUNTU1Rl
eHQoKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ5Nyw2ICs1MDIs
OSBAQCB2b2lkIENTU1ZhbHVlOjpkZXN0cm95KCkKICAgICBjYXNlIEZvbnRTdHlsZVJhbmdlQ2xh
c3M6CiAgICAgICAgIGRlbGV0ZSBkb3duY2FzdDxDU1NGb250U3R5bGVSYW5nZVZhbHVlPih0aGlz
KTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2hhcGVTZWdtZW50Q2xhc3M6CisgICAgICAg
IGRlbGV0ZSBkb3duY2FzdDxDU1NTaGFwZVNlZ21lbnQ+KHRoaXMpOworICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApp
bmRleCBkYWRlNThkYTIwNjhiN2VlY2NkYWEzMzE5MThjNDRkM2E3NmUwNWM4Li4zZjc1YWYzMGFi
OTAyOGFlYjJkMTUyZjE0NWM5ODkzNTdiNTE5ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAt
MTM0LDYgKzEzNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR3JpZEF1dG9SZXBlYXRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEdyaWRBdXRvUmVwZWF0Q2xhc3M7IH0KICAg
ICBib29sIGlzR3JpZEludGVnZXJSZXBlYXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NU
eXBlID09IEdyaWRJbnRlZ2VyUmVwZWF0Q2xhc3M7IH0KICAgICBib29sIGlzR3JpZFRlbXBsYXRl
QXJlYXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEdyaWRUZW1wbGF0ZUFy
ZWFzQ2xhc3M7IH0KKyAgICBib29sIGlzU2hhcGVTZWdtZW50VmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2NsYXNzVHlwZSA9PSBTaGFwZVNlZ21lbnRDbGFzczsgfQogICAgIGJvb2wgaXNHcmlkTGlu
ZU5hbWVzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBHcmlkTGluZU5hbWVz
Q2xhc3M7IH0KICAgICBib29sIGlzU3ViZ3JpZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFz
c1R5cGUgPT0gU3ViZ3JpZENsYXNzOyB9CiAgICAgYm9vbCBpc1VuaWNvZGVSYW5nZVZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gVW5pY29kZVJhbmdlQ2xhc3M7IH0KQEAgLTIw
OSw2ICsyMTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIENhbGN1bGF0aW9uQ2xhc3MsCiAgICAg
ICAgIEdyaWRUZW1wbGF0ZUFyZWFzQ2xhc3MsCiAgICAgICAgIFZhbHVlUGFpckNsYXNzLAorICAg
ICAgICBTaGFwZVNlZ21lbnRDbGFzcywKIAogICAgICAgICBDU1NDb250ZW50RGlzdHJpYnV0aW9u
Q2xhc3MsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggMmRkNGMw
YmFjM2M5YTNhNGQ2M2JhZWRjMjk5MTA4MDJiNTIyMDJmOS4uMWI2NTRlYjIxOWQ0ZTFjOWIyMjhm
ZTE3MTU4NTM5MzgwNWM1YjEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlS2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMu
aW4KQEAgLTEyODYsNiArMTI4NiwyNyBAQCByZWN0CiAKIC8vIHNoYXBlcwogcG9seWdvbgorc2hh
cGUKKworLy8gc2hhcGUoKQorLy8gZnJvbQorLy8gdG8KKy8vIG1vdmUKK2xpbmUKK2hsaW5lCit2
bGluZQorY3VydmUKKy8vIHNtb290aAorYXJjCitjbG9zZQordmlhCitvZgorYnkKK2N3CitjY3cK
Ky8vIGxhcmdlCisvLyBzbWFsbAorLy8gcm90YXRlCiAKIC8vIEBmb250LWZhY2Ugc3JjCiBmb3Jt
YXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODRhNTJmZmQ4NjBlZDczZDRlNzNhZmQxNmQzZWJiYzM1NGMyOGU1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMuY3BwCkBA
IC0wLDAgKzEsMjI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE5vYW0gUm9zZW50aGFs
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIgorCisjaW5jbHVkZSAiQmFzaWNTaGFwZVNlZ21lbnQu
aCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NT
U2hhcGVTZWdtZW50LmgiCisjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NWYWx1
ZVBvb2wuaCIKKyNpbmNsdWRlICJQYWlyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY29udmVydFBvaW50VG9DU1NWYWx1ZShjb25zdCBM
ZW5ndGhQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICBhdXRv
JiBwb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKKyAgICByZXR1cm4gcG9vbC5jcmVh
dGVWYWx1ZShQYWlyOjpjcmVhdGUoCisgICAgICAgIHBvb2wuY3JlYXRlVmFsdWUocG9pbnQueCgp
LCBzdHlsZSksCisgICAgICAgIHBvb2wuY3JlYXRlVmFsdWUocG9pbnQueSgpLCBzdHlsZSksCisg
ICAgICAgIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkRvTm90Q29hbGVzY2UpKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWU+IGF1dG8gdG9DU1NBcmdzKGNvbnN0IFZhbHVlJiwg
Y29uc3QgUmVuZGVyU3R5bGUmKTsKKwordGVtcGxhdGU8PgorYXV0byB0b0NTU0FyZ3MoY29uc3Qg
TGVuZ3RoJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBz
dGQ6Om1ha2VfdHVwbGU8UmVmPENTU1ZhbHVlPj4oQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsKK30KKwordGVtcGxhdGU8PgorYXV0byB0b0NTU0Fy
Z3M8TGVuZ3RoUG9pbnQ+KGNvbnN0IExlbmd0aFBvaW50JiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoY29udmVydFBvaW50VG9D
U1NWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsKK30KKwordGVtcGxhdGU8PgorYXV0byB0b0NTU0FyZ3Mo
Y29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKAorICAgICAgICBjb252ZXJ0
UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnRhcmdldFBvaW50LCBzdHlsZSksCisgICAgICAgIGNvbnZl
cnRQb2ludFRvQ1NTVmFsdWUodmFsdWUucG9pbnQxLCBzdHlsZSksCisgICAgICAgIGNvbnZlcnRQ
b2ludFRvQ1NTVmFsdWUodmFsdWUucG9pbnQyLCBzdHlsZSkpOworfQorCit0ZW1wbGF0ZTw+Cith
dXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYgdmFsdWUs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxl
KAorICAgICAgICBjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnRhcmdldFBvaW50LCBzdHls
ZSksCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUucG9pbnQxLCBzdHlsZSkp
OworfQorCit0ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvQ3ViaWNTbW9v
dGhTaGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAg
IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUo
dmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1
ZSh2YWx1ZS5wb2ludDIsIHN0eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NBcmdz
KGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkKK3sKKyAgICBhdXRvJiBwb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKKyAgICBh
dXRvIHJhZGl1cyA9IFBhaXI6OmNyZWF0ZSgKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZSh2YWx1
ZS5yYWRpdXMud2lkdGgsIHN0eWxlKSwKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZSh2YWx1ZS5y
YWRpdXMuaGVpZ2h0LCBzdHlsZSksCisgICAgICAgIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rp
bmc6OkNvYWxlc2NlKTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNv
bnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAg
cG9vbC5jcmVhdGVWYWx1ZShXVEZNb3ZlKHJhZGl1cykpLAorICAgICAgICB2YWx1ZS5zd2VlcCA/
IENTU1ZhbHVlQ3cgOiBDU1NWYWx1ZUNjdywKKyAgICAgICAgdmFsdWUubGFyZ2VBcmMgPyBDU1NW
YWx1ZUxhcmdlIDogQ1NTVmFsdWVTbWFsbCwKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZSh2YWx1
ZS5hbmdsZSwgQ1NTVW5pdFR5cGU6OkNTU19ERUcpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVu
dD4gdG9DU1NTaGFwZVNlZ21lbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCYXNp
Y1NoYXBlU2VnbWVudCYgc2VnbWVudCkKK3sKKyAgICBhdXRvIHRvQ1NTID0gWyZdKENTU1NoYXBl
U2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgYXV0byBjcmVhdGUsIGNvbnN0IGF1dG8m
IGFzKSB7CisgICAgICAgIHJldHVybiBzdGQ6OmFwcGx5KGNyZWF0ZSwgc3RkOjp0dXBsZV9jYXQo
c3RkOjptYWtlX3R1cGxlKGFmZmluaXR5KSwgdG9DU1NBcmdzKChzZWdtZW50LiphcykoKSwgc3R5
bGUpKSk7CisgICAgfTsKKworI2RlZmluZSBDUkVBVEVfQ1NTX1NIQVBFX1NFR01FTlRfRlJPTV9C
QVNJQ19TSEFQRV9TRUdNRU5UKFR5cGUpIFwKKyAgICBjYXNlIFNoYXBlU2VnbWVudCMjVHlwZTo6
QWJzU2VnVHlwZTogXAorICAgICAgICByZXR1cm4gdG9DU1MoQ1NTU2hhcGVTZWdtZW50OjpDb29y
ZEFmZmluaXR5OjpBYnNvbHV0ZSwgQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGUjI1R5cGUsICZCYXNp
Y1NoYXBlU2VnbWVudDo6YXMjI1R5cGUpOyBcCisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6
OlJlbFNlZ1R5cGU6IFwKKyAgICAgICAgcmV0dXJuIHRvQ1NTKENTU1NoYXBlU2VnbWVudDo6Q29v
cmRBZmZpbml0eTo6UmVsYXRpdmUsIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlIyNUeXBlLCAmQmFz
aWNTaGFwZVNlZ21lbnQ6OmFzIyNUeXBlKTsgXAorCisgICAgc3dpdGNoIChzZWdtZW50LnR5cGUo
KSkgeworICAgIGNhc2UgUGF0aFNlZ0Nsb3NlUGF0aDoKKyAgICAgICAgcmV0dXJuIENTU1NoYXBl
U2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisKKyAgICAgICAgRk9SX0VBQ0hfU0hBUEVfU0VH
TUVOVF9UWVBFX1dJVEhfVkFMVUUoQ1JFQVRFX0NTU19TSEFQRV9TRUdNRU5UX0ZST01fQkFTSUNf
U0hBUEVfU0VHTUVOVCkKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsK
KyAgICB9Cit9Cit0ZW1wbGF0ZSA8Y2xhc3MgRGVmaW5pdGlvbj4KK1NWR1BhdGhTZWdUeXBlIHNl
Z21lbnRUeXBlKGNvbnN0IENTU1NoYXBlU2VnbWVudFZhbHVlJiBzZWdtZW50V2l0aFZhbHVlKQor
eworICAgIHJldHVybiBzZWdtZW50V2l0aFZhbHVlLmFmZmluaXR5KCkgPT0gQ1NTU2hhcGVTZWdt
ZW50OjpDb29yZEFmZmluaXR5OjpBYnNvbHV0ZSA/IERlZmluaXRpb246OkFic1NlZ1R5cGUgOiBE
ZWZpbml0aW9uOjpSZWxTZWdUeXBlOworfQorCitSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGZyb21D
U1NTaGFwZVNlZ21lbnQoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lv
bkRhdGEsIGNvbnN0IENTU1NoYXBlU2VnbWVudCYgY3NzU2VnbWVudCkKK3sKKyAgICBhdXRvIHRv
TGVuZ3RoID0gWyZdKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkgLT4gTGVuZ3RoIHsKKyAgICAgICAg
cmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuY29udmVydFRvTGVuZ3Ro
PEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRD
b252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKKyAgICB9
OworCisgICAgYXV0byB0b0xlbmd0aFBvaW50ID0gWyZdKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkg
LT4gTGVuZ3RoUG9pbnQgeworICAgICAgICBhdXRvIHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgpOworICAgICAgICBBU1NFUlQocGFpcik7CisgICAg
ICAgIHJldHVybiBMZW5ndGhQb2ludCB7IHRvTGVuZ3RoKCpwYWlyLT5maXJzdCgpKSwgdG9MZW5n
dGgoKnBhaXItPnNlY29uZCgpKSB9OworICAgIH07CisKKyAgICBhdXRvIHRvTGVuZ3RoU2l6ZSA9
IFsmXShjb25zdCBDU1NWYWx1ZSYgdmFsdWUpIC0+IExlbmd0aFNpemUgeworICAgICAgICBhdXRv
IHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgpOwor
ICAgICAgICBBU1NFUlQocGFpcik7CisgICAgICAgIHJldHVybiBMZW5ndGhTaXplIHsgdG9MZW5n
dGgoKnBhaXItPmZpcnN0KCkpLCB0b0xlbmd0aCgqcGFpci0+c2Vjb25kKCkpIH07CisgICAgfTsK
KworICAgIGF1dG8gdHlwZSA9IGNzc1NlZ21lbnQudHlwZSgpOworCisgICAgaWYgKHR5cGUgPT0g
Q1NTU2hhcGVTZWdtZW50OjpDbG9zZVBhdGgpCisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2Vn
bWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisKKyAgICBjb25zdCBhdXRvJiBzZWdtZW50V2l0aFZh
bHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUmPihjc3NTZWdtZW50
KTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpNb3Zl
VG86IHsKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8oCisg
ICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRNb3ZlVG8+KHNlZ21lbnRXaXRoVmFs
dWUpLAorICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgp
KSk7CisgICAgfQorCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkxpbmVUbzoKKyAgICAgICAg
cmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG8oCisgICAgICAgICAgICBzZWdt
ZW50VHlwZTxTaGFwZVNlZ21lbnRMaW5lVG8+KHNlZ21lbnRXaXRoVmFsdWUpLAorICAgICAgICAg
ICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKSk7CisKKyAgICBjYXNl
IENTU1NoYXBlU2VnbWVudDo6TGluZVRvSG9yaXpvbnRhbDoKKyAgICAgICAgcmV0dXJuIEJhc2lj
U2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKAorICAgICAgICAgICAgc2VnbWVu
dFR5cGU8U2hhcGVTZWdtZW50TGluZVRvSG9yaXpvbnRhbD4oc2VnbWVudFdpdGhWYWx1ZSksCisg
ICAgICAgICAgICB0b0xlbmd0aChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKSk7CisKKyAgICBj
YXNlIENTU1NoYXBlU2VnbWVudDo6TGluZVRvVmVydGljYWw6CisgICAgICAgIHJldHVybiBCYXNp
Y1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwoCisgICAgICAgICAgICBzZWdtZW50
VHlwZTxTaGFwZVNlZ21lbnRMaW5lVG9WZXJ0aWNhbD4oc2VnbWVudFdpdGhWYWx1ZSksCisgICAg
ICAgICAgICB0b0xlbmd0aChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKSk7CisKKyAgICBjYXNl
IENTU1NoYXBlU2VnbWVudDo6Q3VydmVUb0N1YmljOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFw
ZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpYygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNo
YXBlU2VnbWVudEN1cnZlVG9DdWJpYz4oc2VnbWVudFdpdGhWYWx1ZSksIHsKKyAgICAgICAgICAg
ICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMCkpLAorICAgICAg
ICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgxKSksCisg
ICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQor
ICAgICAgICAgICAgfSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q3VydmVUb1F1YWRy
YXRpYzoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVh
ZHJhdGljKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50Q3VydmVUb1F1YWRy
YXRpYz4oc2VnbWVudFdpdGhWYWx1ZSksIHsKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50
KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMCkpLAorICAgICAgICAgICAgICAgIHRvTGVuZ3Ro
UG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAgICAgIH0pOworCisgICAg
Y2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkN1cnZlVG9DdWJpY1Ntb290aDoKKyAgICAgICAgcmV0dXJu
IEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWNTbW9vdGgoCisgICAgICAgICAg
ICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWNTbW9vdGg+KHNlZ21lbnRXaXRo
VmFsdWUpLCB7CisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVl
LmFyZ3VtZW50KDApKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRo
VmFsdWUudGFyZ2V0KCkpCisgICAgICAgICAgICB9KTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdt
ZW50OjpDdXJ2ZVRvUXVhZHJhdGljU21vb3RoOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNl
Z21lbnQ6OmNyZWF0ZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoCisgICAgICAgICAgICBzZWdtZW50
VHlwZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljU21vb3RoPihzZWdtZW50V2l0aFZhbHVl
KSwKKyAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkp
OworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkFyY1RvOgorICAgICAgICByZXR1cm4gQmFz
aWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hh
cGVTZWdtZW50QXJjVG8+KHNlZ21lbnRXaXRoVmFsdWUpLCB7CisgICAgICAgICAgICAgICAgLnJh
ZGl1cyA9IHRvTGVuZ3RoU2l6ZShzZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50KDApKSwKKyAgICAg
ICAgICAgICAgICAuc3dlZXAgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oc2VnbWVudFdp
dGhWYWx1ZS5hcmd1bWVudCgxKSkudmFsdWVJRCgpID09IENTU1ZhbHVlQ3csCisgICAgICAgICAg
ICAgICAgLmxhcmdlQXJjID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHNlZ21lbnRXaXRo
VmFsdWUuYXJndW1lbnQoMikpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxhcmdlLAorICAgICAgICAg
ICAgICAgIC5hbmdsZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihzZWdtZW50V2l0aFZh
bHVlLmFyZ3VtZW50KDMpKS5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfREVHKSwKKyAgICAg
ICAgICAgICAgICAudGFyZ2V0UG9pbnQgPSB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUu
dGFyZ2V0KCkpCisgICAgICAgICAgICB9KTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpD
bG9zZVBhdGg6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQ
YXRoKCk7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEJh
c2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2NDBkNzFlMjlhNTA4
MzgyNTNlMGMyZWE3MDk2MTE0NDkxZDYyZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisg
KiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYv
UmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQmFzaWNTaGFwZVNlZ21lbnQ7
CitjbGFzcyBDU1NTaGFwZVNlZ21lbnQ7CitjbGFzcyBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
OworY2xhc3MgUmVuZGVyU3R5bGU7CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IHRvQ1NTU2hhcGVT
ZWdtZW50KGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmKTsKK1Jl
ZjxCYXNpY1NoYXBlU2VnbWVudD4gZnJvbUNTU1NoYXBlU2VnbWVudChjb25zdCBDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhJiwgY29uc3QgQ1NTU2hhcGVTZWdtZW50Jik7CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggZDFiNWQz
NDU1NTkxMGJkODMzZWFlOWZmYmM5NTdiYzFjZDMyNDkwYi4uOGVhNGZhODZlZjRiNGViYWM2Zjdk
ZjFmMWQ3NDNiZTQ5ZWZhYWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJDU1NGb250
RmFjZVNyY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU0ZvbnRQYWxldHRlVmFsdWVzT3ZlcnJpZGVDb2xvcnNWYWx1ZS5oIgorI2luY2x1ZGUg
IkNTU1NoYXBlU2VnbWVudC5oIgogI2lmIEVOQUJMRShWQVJJQVRJT05fRk9OVFMpCiAjaW5jbHVk
ZSAiQ1NTRm9udFZhcmlhdGlvblZhbHVlLmgiCiAjZW5kaWYKQEAgLTI2NTIsNiArMjY1MywxOTYg
QEAgc3RhdGljIFJlZlB0cjxDU1NCYXNpY1NoYXBlUGF0aD4gY29uc3VtZUJhc2ljU2hhcGVQYXRo
KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MKICAgICByZXR1cm4gc2hhcGU7CiB9CiAKK3N0YXRp
YyBSZWZQdHI8Q1NTU2hhcGVTZWdtZW50PiBjb25zdW1lU2hhcGVTZWdtZW50KENTU1BhcnNlclRv
a2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAg
YXV0byBjb21tYW5kID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIGlm
IChjb21tYW5kLmlkKCkgPT0gQ1NTVmFsdWVDbG9zZSkKKyAgICAgICAgcmV0dXJuIENTU1NoYXBl
U2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisKKyAgICBpZiAoIWlkZW50TWF0Y2hlczxDU1NW
YWx1ZVRvLCBDU1NWYWx1ZUJ5PihhcmdzLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBhdXRvIGFmZmluaXR5ID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVUbyA/IENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0
eTo6QWJzb2x1dGUgOiBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OlJlbGF0aXZlOwor
ICAgIGF1dG8gY29uc3VtZU5leHRMZW5ndGhPclBlcmNlbnQgPSBbJl0oKSB7CisgICAgICAgIHJl
dHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5n
ZTo6QWxsKTsKKyAgICB9OworCisgICAgaWYgKGNvbW1hbmQuaWQoKSA9PSBDU1NWYWx1ZUhsaW5l
IHx8IGNvbW1hbmQuaWQoKSA9PSBDU1NWYWx1ZVZsaW5lKSB7CisgICAgICAgIGF1dG8gdmFsdWUg
PSBjb25zdW1lTmV4dExlbmd0aE9yUGVyY2VudCgpOworICAgICAgICBpZiAoIXZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIGNvbW1hbmQuaWQoKSA9
PSBDU1NWYWx1ZUhsaW5lCisgICAgICAgICAgICA/IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGlu
ZVRvSG9yaXpvbnRhbChhZmZpbml0eSwgdmFsdWUucmVsZWFzZU5vbk51bGwoKSkKKyAgICAgICAg
ICAgIDogQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9WZXJ0aWNhbChhZmZpbml0eSwgdmFs
dWUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorCisgICAgYXV0byBjb25zdW1lTmV4dENvb3Jk
aW5hdGVzID0gWyZdICgpIC0+IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geworICAgICAgICBh
dXRvIHggPSBjb25zdW1lTmV4dExlbmd0aE9yUGVyY2VudCgpOworICAgICAgICBpZiAoIXgpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvIHkgPSBjb25zdW1lTmV4
dExlbmd0aE9yUGVyY2VudCgpOworICAgICAgICBpZiAoIXkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICByZXR1cm4gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHgucmVs
ZWFzZU5vbk51bGwoKSwgeS5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVu
Y29kaW5nOjpEb05vdENvYWxlc2NlKTsKKyAgICB9OworCisgICAgYXV0byBhdEVuZE9mU2VnbWVu
dCA9IFsmXSAoKSB7CisgICAgICAgIHJldHVybiBhcmdzLmF0RW5kKCkgfHwgYXJncy5wZWVrKCku
dHlwZSgpID09IENvbW1hVG9rZW47CisgICAgfTsKKworICAgIGF1dG8gdGFyZ2V0UG9pbnQgPSBj
b25zdW1lTmV4dENvb3JkaW5hdGVzKCk7CisgICAgaWYgKCF0YXJnZXRQb2ludCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBzd2l0Y2ggKGNvbW1hbmQuaWQoKSkgeworICAgIGNhc2Ug
Q1NTVmFsdWVNb3ZlOgorICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVNb3Zl
VG8oYWZmaW5pdHksIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCkpOworCisgICAgY2FzZSBD
U1NWYWx1ZUxpbmU6CisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVU
byhhZmZpbml0eSwgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICBjYXNlIENT
U1ZhbHVlQ3VydmU6IHsKKyAgICAgICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgIT0gQ1NTVmFsdWVW
aWEpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhcmdzLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGF1dG8gdmlhUG9pbnQxID0gY29uc3VtZU5l
eHRDb29yZGluYXRlcygpOworICAgICAgICBpZiAoIXZpYVBvaW50MSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgICAgIGlmIChhdEVuZE9mU2VnbWVudCgpKQorICAgICAgICAg
ICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpYyhhZmZpbml0
eSwgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSwgdmlhUG9pbnQxLnJlbGVhc2VOb25OdWxs
KCkpOworCisgICAgICAgIGF1dG8gdmlhUG9pbnQyID0gY29uc3VtZU5leHRDb29yZGluYXRlcygp
OworICAgICAgICBpZiAoIXZpYVBvaW50MikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpYyhhZmZp
bml0eSwgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCksIHZpYVBvaW50MS5yZWxlYXNlTm9u
TnVsbCgpLCB2aWFQb2ludDIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorCisgICAgY2FzZSBD
U1NWYWx1ZVNtb290aDogeworICAgICAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSAhPSBDU1NWYWx1
ZVZpYSkKKyAgICAgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9R
dWFkcmF0aWNTbW9vdGgoYWZmaW5pdHksICB0YXJnZXRQb2ludC5yZWxlYXNlTm9uTnVsbCgpKTsK
KworICAgICAgICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGF1
dG8gdmlhUG9pbnQgPSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7CisgICAgICAgIGlmICghdmlh
UG9pbnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gQ1NT
U2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWNTbW9vdGgoYWZmaW5pdHksICB0YXJnZXRQ
b2ludC5yZWxlYXNlTm9uTnVsbCgpLCB2aWFQb2ludC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9
CisKKyAgICBjYXNlIENTU1ZhbHVlQXJjOiB7CisgICAgICAgIGlmIChhcmdzLnBlZWsoKS5pZCgp
ICE9IENTU1ZhbHVlT2YpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBh
cmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gcnggPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9k
ZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOworICAgICAgICBpZiAoIXJ4KQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBy
eTsKKyAgICAgICAgaWYgKGFyZ3MucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKQorICAgICAg
ICAgICAgcnkgPSByeDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByeSA9IGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2
ZSk7CisgICAgICAgICAgICBpZiAoIXJ5KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICB9CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBzd2VlcDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBzaXplOworICAgICAgICBSZWZQdHI8
Q1NTVmFsdWU+IGFuZ2xlOworCisgICAgICAgIHdoaWxlICghYXRFbmRPZlNlZ21lbnQoKSkgewor
ICAgICAgICAgICAgYXV0byBuZXh0SWRlbnQgPSBhcmdzLnBlZWsoKS5pZCgpOworICAgICAgICAg
ICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZVJvdGF0ZT4obmV4dElkZW50KSAmJiAhYW5nbGUp
IHsKKyAgICAgICAgICAgICAgICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQo
KTsKKyAgICAgICAgICAgICAgICBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBjb250ZXh0Lm1v
ZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6OkZvcmJpZCk7Cisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChpZGVudE1hdGNoZXM8Q1NTVmFsdWVDdywgQ1NTVmFsdWVDY3c+KG5leHRJZGVudCkgJiYgIXN3
ZWVwLmhhc192YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgc3dlZXAgPSBhcmdzLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZUxhcmdl
LCBDU1NWYWx1ZVNtYWxsPihuZXh0SWRlbnQpICYmICFzaXplLmhhc192YWx1ZSgpKSB7CisgICAg
ICAgICAgICAgICAgc2l6ZSA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgp
OworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghYW5nbGUpCisgICAg
ICAgICAgICBhbmdsZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMCwgQ1NTVW5pdFR5cGU6
OkNTU19ERUcpOworCisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1Rv
KAorICAgICAgICAgICAgYWZmaW5pdHksCisgICAgICAgICAgICB0YXJnZXRQb2ludC5yZWxlYXNl
Tm9uTnVsbCgpLAorICAgICAgICAgICAgY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHJ4LnJlbGVh
c2VOb25OdWxsKCksIHJ5LnJlbGVhc2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5j
b2Rpbmc6OkNvYWxlc2NlKSwKKyAgICAgICAgICAgIHN3ZWVwLnZhbHVlX29yKENTU1ZhbHVlQ2N3
KSwKKyAgICAgICAgICAgIHNpemUudmFsdWVfb3IoQ1NTVmFsdWVTbWFsbCksCisgICAgICAgICAg
ICBhbmdsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitzdGF0aWMgUmVmUHRyPENTU0Jhc2ljU2hhcGVT
aGFwZT4gY29uc3VtZUJhc2ljU2hhcGVTaGFwZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIFdpbmRSdWxlIHdpbmRSdWxl
ID0gV2luZFJ1bGU6Ok5vblplcm87CisKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlRXZl
bm9kZCwgQ1NTVmFsdWVOb256ZXJvPihhcmdzLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgd2luZFJ1
bGUgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSA9PSBDU1NWYWx1ZUV2
ZW5vZGQgPyBXaW5kUnVsZTo6RXZlbk9kZCA6IFdpbmRSdWxlOjpOb25aZXJvOworCisgICAgaWYg
KGFyZ3MucGVlaygpLmlkKCkgIT0gQ1NTVmFsdWVGcm9tKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKworICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gaW5pdGlhbFggPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFy
Z3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKKyAgICBpZiAoIWluaXRpYWxYKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
aW5pdGlhbFkgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFs
dWVSYW5nZTo6QWxsKTsKKyAgICBpZiAoIWluaXRpYWxZKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHNlZ21lbnRzID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworCisgICAgZm9yICg7OykgeworICAgICAgICBhdXRv
IHNlZ21lbnQgPSBjb25zdW1lU2hhcGVTZWdtZW50KGFyZ3MsIGNvbnRleHQpOworICAgICAgICBp
ZiAoIXNlZ21lbnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBzZWdt
ZW50cy0+YXBwZW5kKHNlZ21lbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGlmIChhcmdz
LmF0RW5kKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoIWNvbnN1bWVDb21t
YUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICBhdXRvIHNoYXBlID0gQ1NTQmFzaWNTaGFwZVNoYXBlOjpjcmVhdGUoCisg
ICAgICAgIGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcigKKyAgICAgICAgICAgIGluaXRpYWxYLnJl
bGVhc2VOb25OdWxsKCksCisgICAgICAgICAgICBpbml0aWFsWS5yZWxlYXNlTm9uTnVsbCgpLAor
ICAgICAgICAgICAgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSks
CisgICAgICAgIFdURk1vdmUoc2VnbWVudHMpKTsKKworICAgIHNoYXBlLT5zZXRXaW5kUnVsZSh3
aW5kUnVsZSk7CisgICAgcmV0dXJuIHNoYXBlOworfQorCiBzdGF0aWMgdm9pZCBjb21wbGV0ZTRT
aWRlcyhSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNpZGVbNF0pCiB7CiAgICAgaWYgKHNpZGVb
M10pCkBAIC0yNzU3LDYgKzI5NDgsOCBAQCBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBjb25zdW1lQmFzaWNTaGFwZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgYwogICAgICAg
ICBzaGFwZSA9IGNvbnN1bWVCYXNpY1NoYXBlSW5zZXQoYXJncywgY29udGV4dCk7CiAgICAgZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVQYXRoKQogICAgICAgICBzaGFwZSA9IGNvbnN1bWVCYXNpY1No
YXBlUGF0aChhcmdzKTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVNoYXBlKQorICAgICAg
ICBzaGFwZSA9IGNvbnN1bWVCYXNpY1NoYXBlU2hhcGUoYXJncywgY29udGV4dCk7CiAgICAgaWYg
KCFzaGFwZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmFuZ2UgPSByYW5nZUNvcHk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNl
Z21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdt
ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZTFmYjBlYTljZmQ5MTNjNTVkZTQ0NDY0OThmNTg4YTFkODU2
NDJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jh
c2ljU2hhcGVTZWdtZW50LmNwcApAQCAtMCwwICsxLDI5MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJCYXNpY1NoYXBlU2VnbWVudC5oIgorCisjaW5jbHVkZSAi
TGVuZ3RoRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiUGF0aC5oIgorI2luY2x1ZGUgIlNWR1BhdGhC
dWlsZGVyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlci5oIgorI2luY2x1ZGUgIlNWR1BhdGhT
ZWcuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnSW1wbC5oIgorI2luY2x1ZGUgIlNWR1BhdGhTb3Vy
Y2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWZpbml0
aW9uPgorY2xhc3MgQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZSA6IHB1YmxpYyBCYXNpY1NoYXBlU2Vn
bWVudCB7CitwdWJsaWM6CisgICAgY29uc3QgdHlwZW5hbWUgRGVmaW5pdGlvbjo6VmFsdWUmIHZh
bHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh0eXBlKCkgPT0gRGVmaW5pdGlvbjo6
QWJzU2VnVHlwZSB8fCB0eXBlKCkgPT0gRGVmaW5pdGlvbjo6UmVsU2VnVHlwZSk7CisgICAgICAg
IHJldHVybiBtX3ZhbHVlOworICAgIH0KKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IEJhc2ljU2hh
cGVTZWdtZW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlKCkgPT0g
b3RoZXIudHlwZSgpCisgICAgICAgICAgICAmJiB2YWx1ZSgpID09IHN0YXRpY19jYXN0PGNvbnN0
IEJhc2ljU2hhcGVTZWdtZW50VmFsdWU8RGVmaW5pdGlvbj4mPihvdGhlcikudmFsdWUoKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgUmVmPEJhc2ljU2hhcGVTZWdtZW50VmFsdWU+IGNyZWF0ZShCYXNp
Y1NoYXBlU2VnbWVudDo6VHlwZSB0eXBlLCB0eXBlbmFtZSBEZWZpbml0aW9uOjpWYWx1ZSYmIHZh
bHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHR5cGUgPT0gRGVmaW5pdGlvbjo6QWJzU2VnVHlw
ZSB8fCB0eXBlID09IERlZmluaXRpb246OlJlbFNlZ1R5cGUpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCYXNpY1NoYXBlU2VnbWVudFZhbHVlPERlZmluaXRpb24+KHR5cGUsIFdURk1v
dmUodmFsdWUpKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgQmFzaWNTaGFwZVNlZ21lbnRW
YWx1ZShCYXNpY1NoYXBlU2VnbWVudDo6VHlwZSB0eXBlLCB0eXBlbmFtZSBEZWZpbml0aW9uOjpW
YWx1ZSYmIHZhbHVlKQorICAgICAgICA6IEJhc2ljU2hhcGVTZWdtZW50KHR5cGUpCisgICAgICAg
ICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkgeyB9CisKK3ByaXZhdGU6CisgICAgdHlwZW5hbWUg
RGVmaW5pdGlvbjo6VmFsdWUgbV92YWx1ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citz
dGF0aWMgY29uc3QgdHlwZW5hbWUgVDo6VmFsdWUmIGV4dHJhY3RWYWx1ZShjb25zdCBCYXNpY1No
YXBlU2VnbWVudCYgc2VnKQoreworICAgIEFTU0VSVChzZWcudHlwZSgpID09IFQ6OkFic1NlZ1R5
cGUgfHwgc2VnLnR5cGUoKSA9PSBUOjpSZWxTZWdUeXBlKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxUPiY+KHNlZykudmFsdWUoKTsKK30KKwor
Ym9vbCBCYXNpY1NoYXBlU2VnbWVudDo6ZXF1YWxzKGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBv
dGhlcikgY29uc3QKK3sKKyAgICBhdXRvIHR5cGUgPSB0aGlzLT50eXBlKCk7CisgICAgaWYgKHR5
cGUgIT0gb3RoZXIudHlwZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNkZWZpbmUgQ09N
UEFSRV9TSEFQRV9TRUdNRU5UX1ZBTFVFKFR5cGUpIFwKKyAgICBjYXNlIFNoYXBlU2VnbWVudCMj
VHlwZTo6QWJzU2VnVHlwZTogXAorICAgIGNhc2UgU2hhcGVTZWdtZW50IyNUeXBlOjpSZWxTZWdU
eXBlOiBcCisgICAgICAgIHJldHVybiBleHRyYWN0VmFsdWU8U2hhcGVTZWdtZW50IyNUeXBlPigq
dGhpcykgPT0gZXh0cmFjdFZhbHVlPFNoYXBlU2VnbWVudCMjVHlwZT4ob3RoZXIpOworCisgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgICAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9WQUxV
RShDT01QQVJFX1NIQVBFX1NFR01FTlRfVkFMVUUpCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKKyNkZWZpbmUgSU1QTEVNRU5UX1NIQVBFX1NFR01FTlRfVkFMVUUoVFlQRSkgXAor
UmVmPEJhc2ljU2hhcGVTZWdtZW50PiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlIyNUWVBFKEJh
c2ljU2hhcGVTZWdtZW50OjpUeXBlIHR5cGUsIHR5cGVuYW1lIFNoYXBlU2VnbWVudCMjVFlQRTo6
VmFsdWUmJiB2YWx1ZSkgXAoreyBcCisgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50VmFsdWU8
U2hhcGVTZWdtZW50IyNUWVBFPjo6Y3JlYXRlKHR5cGUsIFdURk1vdmUodmFsdWUpKTsgXAorfSBc
Citjb25zdCB0eXBlbmFtZSBTaGFwZVNlZ21lbnQjI1RZUEU6OlZhbHVlJiBCYXNpY1NoYXBlU2Vn
bWVudDo6YXMjI1RZUEUoKSBjb25zdCBcCit7IFwKKyAgICByZXR1cm4gZXh0cmFjdFZhbHVlPFNo
YXBlU2VnbWVudCMjVFlQRT4oKnRoaXMpOyBcCit9CisKK0ZPUl9FQUNIX1NIQVBFX1NFR01FTlRf
VFlQRV9XSVRIX1ZBTFVFKElNUExFTUVOVF9TSEFQRV9TRUdNRU5UX1ZBTFVFKQorCitDdXJ2ZVRv
Q3ViaWNTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUm
IGZyb20sIGNvbnN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUmIHRvLCBjb25zdCBCbGVuZGlu
Z0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgYmxlbmQoZnJvbS5w
b2ludDEsIHRvLnBvaW50MSwgY29udGV4dCksCisgICAgICAgIGJsZW5kKGZyb20ucG9pbnQyLCB0
by5wb2ludDIsIGNvbnRleHQpLAorICAgICAgICBibGVuZChmcm9tLnRhcmdldFBvaW50LCB0by50
YXJnZXRQb2ludCwgY29udGV4dCksCisgICAgfTsKK30KKworQ3VydmVUb0N1YmljU21vb3RoU2hh
cGVTZWdWYWx1ZSBibGVuZChjb25zdCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiBm
cm9tLCBjb25zdCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiB0bywgY29uc3QgQmxl
bmRpbmdDb250ZXh0JiBjb250ZXh0KQoreworICAgIHJldHVybiB7CisgICAgICAgIGJsZW5kKGZy
b20ucG9pbnQyLCB0by5wb2ludDIsIGNvbnRleHQpLAorICAgICAgICBibGVuZChmcm9tLnRhcmdl
dFBvaW50LCB0by50YXJnZXRQb2ludCwgY29udGV4dCksCisgICAgfTsKK30KKworQ3VydmVUb1F1
YWRyYXRpY1NoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2Vn
VmFsdWUmIGZyb20sIGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlJiB0bywgY29u
c3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQoreworICAgIHJldHVybiB7CisgICAgICAgIGJs
ZW5kKGZyb20ucG9pbnQxLCB0by5wb2ludDEsIGNvbnRleHQpLAorICAgICAgICBibGVuZChmcm9t
LnRhcmdldFBvaW50LCB0by50YXJnZXRQb2ludCwgY29udGV4dCksCisgICAgfTsKK30KKworQXJj
VG9TaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29u
c3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiB0bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0
KQoreworICAgIHJldHVybiB7CisgICAgICAgIGJsZW5kKGZyb20ucmFkaXVzLCB0by5yYWRpdXMs
IGNvbnRleHQpLAorICAgICAgICBibGVuZChmcm9tLmFuZ2xlLCB0by5hbmdsZSwgY29udGV4dCks
CisgICAgICAgIGNvbnRleHQucHJvZ3Jlc3MgPCAwLjVmID8gZnJvbS5zd2VlcCA6IHRvLnN3ZWVw
LAorICAgICAgICBjb250ZXh0LnByb2dyZXNzIDwgMC41ZiA/IGZyb20ubGFyZ2VBcmMgOiB0by5s
YXJnZUFyYywKKyAgICAgICAgYmxlbmQoZnJvbS50YXJnZXRQb2ludCwgdG8udGFyZ2V0UG9pbnQs
IGNvbnRleHQpCisgICAgfTsKK30KKworUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBCYXNpY1NoYXBl
U2VnbWVudDo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIGZyb20sIGNvbnN0IEJsZW5k
aW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBhdXRvIHR5cGUgPSB0aGlzLT50eXBl
KCk7CisgICAgQVNTRVJUKHR5cGUgPT0gZnJvbS50eXBlKCkpOworCisgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFw
ZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworCisjZGVmaW5lIEJMRU5EX1NFR01FTlRfVFlQ
RShUeXBlKSBcCisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6OkFic1NlZ1R5cGU6IFwKKyAg
ICBjYXNlIFNoYXBlU2VnbWVudCMjVHlwZTo6UmVsU2VnVHlwZTogXAorICAgICAgICByZXR1cm4g
QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxTaGFwZVNlZ21lbnQjI1R5cGU+OjpjcmVhdGUodHlwZSwg
V2ViQ29yZTo6YmxlbmQoZXh0cmFjdFZhbHVlPFNoYXBlU2VnbWVudCMjVHlwZT4oZnJvbSksIGV4
dHJhY3RWYWx1ZTxTaGFwZVNlZ21lbnQjI1R5cGU+KCp0aGlzKSwgY29udGV4dCkpOworCisgICAg
ICAgIEZPUl9FQUNIX1NIQVBFX1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKEJMRU5EX1NFR01FTlRf
VFlQRSkKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKyAgICB9Cit9
CitjbGFzcyBTaGFwZVNWR1BhdGhTb3VyY2UgZmluYWwgOiBwdWJsaWMgU1ZHUGF0aFNvdXJjZSB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2hhcGVTVkdQYXRoU291cmNlKGNvbnN0IExlbmd0aFBv
aW50JiBzdGFydCwgY29uc3QgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+JiBzZWdtZW50
cywgY29uc3QgRmxvYXRTaXplJiBzaXplKQorICAgICAgICA6IG1fc3RhcnQoc3RhcnQpCisgICAg
ICAgICwgbV9zZWdtZW50cyhzZWdtZW50cykKKyAgICAgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAg
ICAgLCBtX2l0ZW1FbmQoc2VnbWVudHMuc2l6ZSgpKQorICAgICAgICB7CisKKyAgICAgICAgfQor
Citwcml2YXRlOgorICAgIGJvb2wgaGFzTW9yZURhdGEoKSBjb25zdCBmaW5hbAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1faXRlbUN1cnJlbnQgPCBtX2l0ZW1FbmQ7CisgICAgfQorCisgICAgYm9v
bCBtb3ZlVG9OZXh0VG9rZW4oKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBTVkdQYXRo
U2VnVHlwZSBuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSkgZmluYWwKKyAgICB7CisgICAgICAg
IGF1dG8gdHlwZSA9IG1fc2VnbWVudHMuYXQobV9pdGVtQ3VycmVudCktPnR5cGUoKTsKKyAgICAg
ICAgKyttX2l0ZW1DdXJyZW50OworICAgICAgICByZXR1cm4gdHlwZTsKKyAgICB9CisKKyAgICBz
dGQ6Om9wdGlvbmFsPFNWR1BhdGhTZWdUeXBlPiBwYXJzZVNWR1NlZ21lbnRUeXBlKCkgZmluYWwK
KyAgICB7CisgICAgICAgIHJldHVybiBQYXRoU2VnTW92ZVRvQWJzOworICAgIH0KKworICAgIHN0
ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TW92ZVRvU2VnbWVudD4gcGFyc2VNb3ZlVG9TZWdt
ZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9pdGVtQ3VycmVudCkKKyAgICAgICAg
ICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50IHsgZmxvYXRQb2ludEZvckxl
bmd0aFBvaW50KG1fc3RhcnQsIG1fc2l6ZSkgfTsKKworICAgICAgICByZXR1cm4gU1ZHUGF0aFNv
dXJjZTo6TW92ZVRvU2VnbWVudCB7IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZTxTaGFw
ZVNlZ21lbnRNb3ZlVG8+KCksIG1fc2l6ZSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFs
PFNWR1BhdGhTb3VyY2U6OkxpbmVUb1NlZ21lbnQ+IHBhcnNlTGluZVRvU2VnbWVudCgpIGZpbmFs
CisgICAgeworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6TGluZVRvU2VnbWVudCB7IGZs
b2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZTxTaGFwZVNlZ21lbnRMaW5lVG8+KCksIG1fc2l6
ZSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb0hv
cml6b250YWxTZWdtZW50PiBwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KCkgZmluYWwKKyAg
ICB7CisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFsU2VnbWVu
dCB7IGZsb2F0VmFsdWVGb3JMZW5ndGgodmFsdWU8U2hhcGVTZWdtZW50TGluZVRvSG9yaXpvbnRh
bD4oKSwgbV9zaXplLndpZHRoKCkpIH07CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQ
YXRoU291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IHBhcnNlTGluZVRvVmVydGljYWxTZWdt
ZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpMaW5lVG9W
ZXJ0aWNhbFNlZ21lbnQgeyBmbG9hdFZhbHVlRm9yTGVuZ3RoKHZhbHVlPFNoYXBlU2VnbWVudExp
bmVUb1ZlcnRpY2FsPigpLCBtX3NpemUuaGVpZ2h0KCkpIH07CisgICAgfQorCisgICAgc3RkOjpv
cHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBwYXJzZUN1cnZlVG9D
dWJpY1NlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byYgdmFsdWUgPSB0
aGlzLT52YWx1ZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWM+KCk7CisgICAgICAgIHJldHVybiBT
VkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTZWdtZW50IHsgICAgICAgIAorICAgICAgICAgICAg
ZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnBvaW50MSwgbV9zaXplKSwKKyAgICAgICAg
ICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS5wb2ludDIsIG1fc2l6ZSksCisgICAg
ICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUudGFyZ2V0UG9pbnQsIG1fc2l6
ZSkKKyAgICAgICAgfTsKKyAgICB9CisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpD
dXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50PiBwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQo
KSBmaW5hbAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byYgdmFsdWUgPSB0aGlzLT52YWx1ZTxT
aGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWNTbW9vdGg+KCk7CisgICAgICAgIHJldHVybiBTVkdQYXRo
U291cmNlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50IHsgICAgICAgIAorICAgICAgICAgICAg
ZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnBvaW50MiwgbV9zaXplKSwKKyAgICAgICAg
ICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXplKQor
ICAgICAgICB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3Vy
dmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKSBmaW5h
bAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byYgdmFsdWUgPSB0aGlzLT52YWx1ZTxTaGFwZVNl
Z21lbnRDdXJ2ZVRvUXVhZHJhdGljPigpOworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6
Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQgeworICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0
aFBvaW50KHZhbHVlLnBvaW50MSwgbV9zaXplKSwKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JM
ZW5ndGhQb2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXplKQorICAgICAgICB9OworICAgIH0K
KworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1Ntb290
aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoKSBmaW5hbAorICAg
IHsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTbW9vdGhT
ZWdtZW50IHsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlPFNoYXBlU2VnbWVudEN1cnZl
VG9RdWFkcmF0aWNTbW9vdGg+KCksIG1fc2l6ZSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlv
bmFsPFNWR1BhdGhTb3VyY2U6OkFyY1RvU2VnbWVudD4gcGFyc2VBcmNUb1NlZ21lbnQoKSBmaW5h
bAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byYgdmFsdWUgPSB0aGlzLT52YWx1ZTxTaGFwZVNl
Z21lbnRBcmNUbz4oKTsKKyAgICAgICAgYXV0byByYWRpdXMgPSBmbG9hdFNpemVGb3JMZW5ndGhT
aXplKHZhbHVlLnJhZGl1cywgbV9zaXplKTsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6
OkFyY1RvU2VnbWVudCB7CisgICAgICAgICAgICAucnggPSByYWRpdXMud2lkdGgoKSwKKyAgICAg
ICAgICAgIC5yeSA9IHJhZGl1cy5oZWlnaHQoKSwKKyAgICAgICAgICAgIC5hbmdsZSA9IHZhbHVl
LmFuZ2xlLAorICAgICAgICAgICAgLmxhcmdlQXJjID0gdmFsdWUubGFyZ2VBcmMsCisgICAgICAg
ICAgICAuc3dlZXAgPSB2YWx1ZS5zd2VlcCwKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JMZW5n
dGhQb2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXplKQorICAgICAgICB9OworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgY29uc3QgdHlwZW5hbWUgVDo6VmFsdWUmIHZh
bHVlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2l0ZW1DdXJyZW50IDw9IG1fc2VnbWVudHMu
c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RWYWx1ZTxUPihtX3NlZ21lbnRzLmF0KG1f
aXRlbUN1cnJlbnQgLSAxKS5nZXQoKSk7CisgICAgfQorCisgICAgY29uc3QgTGVuZ3RoUG9pbnQm
IG1fc3RhcnQ7CisgICAgY29uc3QgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+JiBtX3Nl
Z21lbnRzOworICAgIEZsb2F0U2l6ZSBtX3NpemU7CisgICAgc2l6ZV90IG1faXRlbUVuZDsKKyAg
ICBzaXplX3QgbV9pdGVtQ3VycmVudCA9IDA7Cit9OworCitQYXRoIEJhc2ljU2hhcGVTZWdtZW50
Ojp0b1BhdGgoY29uc3QgTGVuZ3RoUG9pbnQmIHN0YXJ0LCBjb25zdCBWZWN0b3I8UmVmPEJhc2lj
U2hhcGVTZWdtZW50Pj4mIHNlZ21lbnRzLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCit7CisgICAg
U2hhcGVTVkdQYXRoU291cmNlIHNvdXJjZShzdGFydCwgc2VnbWVudHMsIHNpemUpOworICAgIFBh
dGggcGF0aDsKKyAgICBTVkdQYXRoQnVpbGRlciBidWlsZGVyKHBhdGgpOworICAgIFNWR1BhdGhQ
YXJzZXI6OnBhcnNlKHNvdXJjZSwgYnVpbGRlcik7CisgICAgcmV0dXJuIHBhdGg7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlU2Vn
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDVkMThjZTg1MDZjZTYyZGQzMjY1NzU0ZGUwNzQ2YWQwYmMxOTQ2Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1No
YXBlU2VnbWVudC5oCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IE5vYW0gUm9zZW50aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJMZW5ndGguaCIKKyNpbmNsdWRlICJMZW5ndGhQb2ludC5oIgorI2luY2x1ZGUg
Ikxlbmd0aFNpemUuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnLmgiCisjaW5jbHVkZSAiU1ZHUGF0
aFNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBCbGVuZGluZ0NvbnRl
eHQ7CitjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBQYXRoOworCitzdHJ1Y3QgQ3VydmVUb0N1Ymlj
U2hhcGVTZWdWYWx1ZSB7CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQxOworICAgIExlbmd0aFBvaW50
IHBvaW50MjsKKyAgICBMZW5ndGhQb2ludCB0YXJnZXRQb2ludDsKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gcG9pbnQxID09IG90aGVyLnBvaW50MSAmJiBwb2ludDIgPT0gb3RoZXIu
cG9pbnQyICYmIHRhcmdldFBvaW50ID09IG90aGVyLnRhcmdldFBvaW50OworICAgIH0KK307CisK
K3N0cnVjdCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlIHsKKyAgICBMZW5ndGhQb2lu
dCBwb2ludDI7CisgICAgTGVuZ3RoUG9pbnQgdGFyZ2V0UG9pbnQ7CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHBvaW50MiA9PSBvdGhlci5wb2ludDIgJiYgdGFyZ2V0UG9p
bnQgPT0gb3RoZXIudGFyZ2V0UG9pbnQ7CisgICAgfQorfTsKKworc3RydWN0IEN1cnZlVG9RdWFk
cmF0aWNTaGFwZVNlZ1ZhbHVlIHsKKyAgICBMZW5ndGhQb2ludCBwb2ludDE7CisgICAgTGVuZ3Ro
UG9pbnQgdGFyZ2V0UG9pbnQ7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VydmVUb1F1
YWRyYXRpY1NoYXBlU2VnVmFsdWUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IHBvaW50MSA9PSBvdGhlci5wb2ludDEgJiYgdGFyZ2V0UG9pbnQgPT0gb3RoZXIudGFyZ2V0UG9p
bnQ7CisgICAgfQorfTsKKworCitzdHJ1Y3QgQXJjVG9TaGFwZVNlZ1ZhbHVlIHsKKyAgICBMZW5n
dGhTaXplIHJhZGl1czsKKyAgICBmbG9hdCBhbmdsZSA9IDA7CisgICAgYm9vbCBzd2VlcCA9IGZh
bHNlOworICAgIGJvb2wgbGFyZ2VBcmMgPSBmYWxzZTsKKyAgICBMZW5ndGhQb2ludCB0YXJnZXRQ
b2ludDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBcmNUb1NoYXBlU2VnVmFsdWUmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJhZGl1cyA9PSBvdGhlci5yYWRpdXMg
JiYgYW5nbGUgPT0gb3RoZXIuYW5nbGUgJiYgc3dlZXAgPT0gb3RoZXIuc3dlZXAgJiYgbGFyZ2VB
cmMgPT0gb3RoZXIubGFyZ2VBcmMgJiYgdGFyZ2V0UG9pbnQgPT0gb3RoZXIudGFyZ2V0UG9pbnQ7
CisgICAgfQorfTsKKworCitDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1
cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVl
JiwgY29uc3QgQmxlbmRpbmdDb250ZXh0Jik7CitDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1Zh
bHVlIGJsZW5kKGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmLCBjb25zdCBD
dXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQmxlbmRpbmdDb250ZXh0Jik7
CitDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBDdXJ2ZVRvUXVhZHJh
dGljU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlJiwg
Y29uc3QgQmxlbmRpbmdDb250ZXh0Jik7CitBcmNUb1NoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3Qg
QXJjVG9TaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQmxl
bmRpbmdDb250ZXh0Jik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgU1ZHUGF0aFNl
Z1R5cGUgQWJzVHlwZSwgU1ZHUGF0aFNlZ1R5cGUgUmVsVHlwZT4KK3N0cnVjdCBTaGFwZVNlZ21l
bnRUeXBlRGVmaW5pdGlvbiB7CisgICAgdHlwZWRlZiBWYWx1ZVR5cGUgVmFsdWU7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIEFic1NlZ1R5cGUgPSBBYnNUeXBlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBSZWxTZWdUeXBlID0gUmVsVHlwZTsKK307CisKK3N0cnVjdCBTaGFwZVNlZ21l
bnRNb3ZlVG8gOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248TGVuZ3RoUG9pbnQs
IFBhdGhTZWdNb3ZlVG9BYnMsIFBhdGhTZWdNb3ZlVG9SZWw+IHsgfTsKK3N0cnVjdCBTaGFwZVNl
Z21lbnRMaW5lVG8gOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248TGVuZ3RoUG9p
bnQsIFBhdGhTZWdMaW5lVG9BYnMsIFBhdGhTZWdMaW5lVG9SZWw+IHsgfTsKK3N0cnVjdCBTaGFw
ZVNlZ21lbnRMaW5lVG9Ib3Jpem9udGFsIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0
aW9uPExlbmd0aCwgUGF0aFNlZ0xpbmVUb0hvcml6b250YWxBYnMsIFBhdGhTZWdMaW5lVG9Ib3Jp
em9udGFsUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50TGluZVRvVmVydGljYWwgOiBwdWJs
aWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248TGVuZ3RoLCBQYXRoU2VnTGluZVRvVmVydGlj
YWxBYnMsIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbFJlbD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVu
dEN1cnZlVG9DdWJpYyA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxDdXJ2ZVRv
Q3ViaWNTaGFwZVNlZ1ZhbHVlLCBQYXRoU2VnQ3VydmVUb0N1YmljQWJzLCBQYXRoU2VnQ3VydmVU
b0N1YmljUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50Q3VydmVUb1F1YWRyYXRpYyA6IHB1
YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdW
YWx1ZSwgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNBYnMsIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGlj
UmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50Q3VydmVUb0N1YmljU21vb3RoIDogcHVibGlj
IFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFs
dWUsIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhBYnMsIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9v
dGhSZWw+IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljU21vb3RoIDog
cHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPExlbmd0aFBvaW50LCBQYXRoU2VnQ3Vy
dmVUb1F1YWRyYXRpY1Ntb290aEFicywgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhSZWw+
IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRBcmNUbyA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBl
RGVmaW5pdGlvbjxBcmNUb1NoYXBlU2VnVmFsdWUsIFBhdGhTZWdBcmNBYnMsIFBhdGhTZWdBcmNS
ZWw+IHsgfTsKKworI2RlZmluZSBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9WQUxV
RShNYWNybykgXAorICAgIE1hY3JvKE1vdmVUbykgXAorICAgIE1hY3JvKExpbmVUbykgXAorICAg
IE1hY3JvKExpbmVUb0hvcml6b250YWwpIFwKKyAgICBNYWNybyhMaW5lVG9WZXJ0aWNhbCkgXAor
ICAgIE1hY3JvKEN1cnZlVG9DdWJpYykgXAorICAgIE1hY3JvKEN1cnZlVG9RdWFkcmF0aWMpIFwK
KyAgICBNYWNybyhDdXJ2ZVRvQ3ViaWNTbW9vdGgpIFwKKyAgICBNYWNybyhDdXJ2ZVRvUXVhZHJh
dGljU21vb3RoKSBcCisgICAgTWFjcm8oQXJjVG8pCisKK2NsYXNzIEJhc2ljU2hhcGVTZWdtZW50
IDogcHVibGljIFJlZkNvdW50ZWQ8QmFzaWNTaGFwZVNlZ21lbnQ+IHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIFNWR1BhdGhTZWdUeXBlIFR5cGU7CisgICAgfkJhc2ljU2hhcGVTZWdtZW50KCkgPSBk
ZWZhdWx0OworCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAg
ICBSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBm
cm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKSBjb25zdDsKKyAgICBib29sIGVxdWFscyhjb25z
dCBCYXNpY1NoYXBlU2VnbWVudCYpIGNvbnN0OworCisgICAgc3RhdGljIFBhdGggdG9QYXRoKGNv
bnN0IExlbmd0aFBvaW50JiBzdGFydCwgY29uc3QgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVu
dD4+JiwgY29uc3QgRmxvYXRTaXplJik7CisKKyNkZWZpbmUgREVGSU5FX1NIQVBFX1NFR01FTlRf
VFlQRShUKSBcCisgICAgc3RhdGljIFJlZjxCYXNpY1NoYXBlU2VnbWVudD4gY3JlYXRlIyNUKFR5
cGUsIHR5cGVuYW1lIFNoYXBlU2VnbWVudCMjVDo6VmFsdWUmJik7IFwKKyAgICBjb25zdCB0eXBl
bmFtZSBTaGFwZVNlZ21lbnQjI1Q6OlZhbHVlJiBhcyMjVCgpIGNvbnN0OworCisgICAgRk9SX0VB
Q0hfU0hBUEVfU0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoREVGSU5FX1NIQVBFX1NFR01FTlRfVFlQ
RSkKKworICAgIHN0YXRpYyBSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGNyZWF0ZUNsb3NlUGF0aCgp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXNpY1NoYXBlU2VnbWVudChQ
YXRoU2VnQ2xvc2VQYXRoKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgQmFzaWNTaGFwZVNl
Z21lbnQoVHlwZSB0KQorICAgICAgICA6IG1fdHlwZSh0KSB7IH0KKworcHJpdmF0ZToKKyAgICBU
eXBlIG1fdHlwZTsKK307CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggMDg2YTZmNmE2M2EyNWU1MDIzYWU5NWJmYTg0ZjRmYTdk
NGZmYzI2Mi4uNjczZmVhNmM0ZDI2MzAwYTY4N2Y5ZDVkYTNiODYzM2U4NWUwMDFiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCkBAIC0xMjEs
NiArMTIxLDQ0IEBAIHN0cnVjdCBUcmFuc2Zvcm1lZEJ5dGVTdHJlYW1QYXRoUG9saWN5IDogVGlu
eUxSVUNhY2hlUG9saWN5PFNWR1BhdGhUcmFuc2Zvcm1lZEJ5CiAgICAgc3RhdGljIFBhdGggY3Jl
YXRlVmFsdWVGb3JLZXkoY29uc3QgU1ZHUGF0aFRyYW5zZm9ybWVkQnl0ZVN0cmVhbSYgc3RyZWFt
KSB7IHJldHVybiBzdHJlYW0ucGF0aCgpOyB9CiB9OwogCitzdHJ1Y3QgU2hhcGVTZWdtZW50c1dp
dGhCb3ggeworICAgIExlbmd0aFBvaW50IHN0YXJ0OworICAgIFZlY3RvcjxSZWY8QmFzaWNTaGFw
ZVNlZ21lbnQ+PiBzZWdtZW50czsKKyAgICBGbG9hdFJlY3QgYm94OworCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFNoYXBlU2VnbWVudHNXaXRoQm94JiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChib3ggIT0gb3RoZXIuYm94IHx8IHNlZ21lbnRzLnNpemUoKSA9PSBvdGhlci5z
ZWdtZW50cy5zaXplKCkgfHwgc3RhcnQgIT0gb3RoZXIuc3RhcnQpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZWdtZW50cy5zaXpl
KCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFzZWdtZW50cy5hdChpKS0+ZXF1YWxzKG90aGVy
LnNlZ21lbnRzLmF0KGkpLmdldCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgU2hhcGVTZWdtZW50c1dpdGhCb3gmIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KK307CisKK3N0cnVjdCBTaGFw
ZVNlZ21lbnRzUGF0aFBvbGljeSA6IFRpbnlMUlVDYWNoZVBvbGljeTxTaGFwZVNlZ21lbnRzV2l0
aEJveCwgUGF0aD4geworICAgIHN0YXRpYyBib29sIGlzS2V5TnVsbChjb25zdCBTaGFwZVNlZ21l
bnRzV2l0aEJveCYgc2VnbWVudHNXaXRoQm94KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlZ21l
bnRzV2l0aEJveC5zZWdtZW50cy5pc0VtcHR5KCk7CisgICAgfQorCisgICAgc3RhdGljIFBhdGgg
Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgU2hhcGVTZWdtZW50c1dpdGhCb3gmIHNlZ21lbnRzV2l0
aEJveCkKKyAgICB7CisgICAgICAgIGF1dG8gcGF0aCA9IEJhc2ljU2hhcGVTZWdtZW50Ojp0b1Bh
dGgoc2VnbWVudHNXaXRoQm94LnN0YXJ0LCBzZWdtZW50c1dpdGhCb3guc2VnbWVudHMsIHNlZ21l
bnRzV2l0aEJveC5ib3guc2l6ZSgpKTsKKyAgICAgICAgcGF0aC50cmFuc2xhdGUodG9GbG9hdFNp
emUoc2VnbWVudHNXaXRoQm94LmJveC5sb2NhdGlvbigpKSk7CisgICAgICAgIHJldHVybiBwYXRo
OworICAgIH0KK307CisKIHN0YXRpYyBjb25zdCBQYXRoJiBjYWNoZWRFbGxpcHNlUGF0aChjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlMUlVD
YWNoZTxGbG9hdFJlY3QsIFBhdGgsIDQsIEVsbGlwc2VQYXRoUG9saWN5Pj4gY2FjaGU7CkBAIC0x
NDUsNiArMTgzLDEyIEBAIHN0YXRpYyBjb25zdCBQYXRoJiBjYWNoZWRUcmFuc2Zvcm1lZEJ5dGVT
dHJlYW1QYXRoKGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJiBzdHJlCiAgICAgcmV0dXJuIGNhY2hl
LmdldCgpLmdldChTVkdQYXRoVHJhbnNmb3JtZWRCeXRlU3RyZWFtIHsgc3RyZWFtLCB6b29tLCBv
ZmZzZXQgfSk7CiB9CiAKK3N0YXRpYyBjb25zdCBQYXRoJiBjYWNoZWRTaGFwZVNlZ21lbnRzUGF0
aChjb25zdCBMZW5ndGhQb2ludCYgZnJvbSwgY29uc3QgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2Vn
bWVudD4+JiBzZWdtZW50cywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8U2hhcGVTZWdtZW50c1dpdGhCb3gsIFBhdGgsIDQs
IFNoYXBlU2VnbWVudHNQYXRoUG9saWN5Pj4gY2FjaGU7CisgICAgcmV0dXJuIGNhY2hlLmdldCgp
LmdldChTaGFwZVNlZ21lbnRzV2l0aEJveCB7IGZyb20sIHNlZ21lbnRzLCByZWN0IH0pOworfQor
CiBib29sIEJhc2ljU2hhcGVDaXJjbGU6Om9wZXJhdG9yPT0oY29uc3QgQmFzaWNTaGFwZSYgb3Ro
ZXIpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBvdGhlci50eXBlKCkpCkBAIC00NjMsNiAr
NTA3LDc4IEBAIHZvaWQgQmFzaWNTaGFwZUluc2V0OjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25z
dAogICAgIHRzLmR1bXBQcm9wZXJ0eSgiYm90dG9tLWxlZnQtcmFkaXVzIiwgYm90dG9tTGVmdFJh
ZGl1cygpKTsKIH0KIAorCitCYXNpY1NoYXBlU2hhcGU6OkJhc2ljU2hhcGVTaGFwZShjb25zdCBM
ZW5ndGhQb2ludCYgZnJvbSwgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+JiYgc2VnbWVu
dHMpCisgICAgOiBtX3NlZ21lbnRzKG1ha2VVbmlxdWU8VmVjdG9yPFJlZjxCYXNpY1NoYXBlU2Vn
bWVudD4+PihXVEZNb3ZlKHNlZ21lbnRzKSkpCisgICAgLCBtX2Zyb20oZnJvbSkKK3sKK30KKwor
Y29uc3QgUGF0aCYgQmFzaWNTaGFwZVNoYXBlOjpwYXRoKGNvbnN0IEZsb2F0UmVjdCYgYm91bmRp
bmdCb3gpCit7CisgICAgcmV0dXJuIGNhY2hlZFNoYXBlU2VnbWVudHNQYXRoKG1fZnJvbSwgKm1f
c2VnbWVudHMsIGJvdW5kaW5nQm94KTsKK30KKworYm9vbCBCYXNpY1NoYXBlU2hhcGU6Om9wZXJh
dG9yPT0oY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUoKSAh
PSBvdGhlci50eXBlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IEJhc2lj
U2hhcGVTaGFwZSYgb3RoZXJTaGFwZSA9IGRvd25jYXN0PEJhc2ljU2hhcGVTaGFwZT4ob3RoZXIp
OworICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAgICBpZiAod2luZFJ1bGUoKSAhPSBv
dGhlclNoYXBlLndpbmRSdWxlKCkgfHwgc2l6ZSA9PSBvdGhlclNoYXBlLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKKyAgICAgICAgaWYgKCFhdChpKS5lcXVhbHMob3RoZXJTaGFwZS5hdChpKSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
QmFzaWNTaGFwZVNoYXBlOjpjYW5CbGVuZChjb25zdCBCYXNpY1NoYXBlJiBvdGhlcikgY29uc3QK
K3sKKyAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOworICAgIGF1dG8mIG90aGVyU2hhcGUg
PSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+KG90aGVyKTsKKyAgICBpZiAod2luZFJ1bGUoKSAh
PSBvdGhlclNoYXBlLndpbmRSdWxlKCkgfHwgc2l6ZSAhPSBvdGhlclNoYXBlLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKKyAgICAgICAgaWYgKGF0KGkpLnR5cGUoKSAhPSBvdGhlclNoYXBlLmF0KGkpLnR5cGUo
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVTaGFwZTo6YmxlbmQoY29uc3QgQmFzaWNT
aGFwZSYgZnJvbSwgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KSBjb25zdAoreworICAg
IEFTU0VSVCh0eXBlKCkgPT0gZnJvbS50eXBlKCkpOworICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNp
emUoKTsKKyAgICBhdXRvJiBmcm9tU2hhcGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+KGZy
b20pOworICAgIEFTU0VSVChzaXplID09IGZyb21TaGFwZS5zaXplKCkpOworCisgICAgVmVjdG9y
PFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+IHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShzaXplKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQorICAgICAgICByZXN1bHQuYXBwZW5kKGF0KGkpLmJsZW5kKGZyb21TaGFwZS5hdChpKSwgY29u
dGV4dCkpOworCisgICAgYXV0byBuZXdTaGFwZSA9IEJhc2ljU2hhcGVTaGFwZTo6Y3JlYXRlKFdl
YkNvcmU6OmJsZW5kKGZyb21TaGFwZS5mcm9tKCksIG1fZnJvbSwgY29udGV4dCksIFdURk1vdmUo
cmVzdWx0KSk7CisgICAgbmV3U2hhcGUtPnNldFdpbmRSdWxlKHdpbmRSdWxlKCkpOworICAgIHJl
dHVybiBuZXdTaGFwZTsKK30KKwordm9pZCBCYXNpY1NoYXBlU2hhcGU6OmR1bXAoVGV4dFN0cmVh
bSYgdHMpIGNvbnN0Cit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ3aW5kLXJ1bGUiLCB3aW5kUnVs
ZSgpKTsKKyAgICAvLyBGSVhNRTogcHJpbnQgdGhlIGJ5dGUgc3RyZWFtPworfQorCiBzdGF0aWMg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQmFzaWNTaGFwZVJhZGl1czo6
VHlwZSByYWRpdXNUeXBlKQogewogICAgIHN3aXRjaCAocmFkaXVzVHlwZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAppbmRleCA5YmYwMzczNDc2YjUz
ZTVjN2E0YTliYzYyMzllNDVlYzRhZDUzNGU0Li4zMWU4ZjNkZjVkY2IxNjJlODI1MzczNGQ0YjVj
Y2ViOTBjZWM5MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNT
aGFwZXMuaApAQCAtMzAsNiArMzAsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJMZW5n
dGguaCIKKyNpbmNsdWRlICJMZW5ndGhQb2ludC5oIgogI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIK
ICNpbmNsdWRlICJXaW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00
Nyw2ICs0OCw3IEBAIHN0cnVjdCBCbGVuZGluZ0NvbnRleHQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBj
bGFzcyBQYXRoOwogY2xhc3MgUmVuZGVyQm94OworY2xhc3MgQmFzaWNTaGFwZVNlZ21lbnQ7CiBj
bGFzcyBTVkdQYXRoQnl0ZVN0cmVhbTsKIAogY2xhc3MgQmFzaWNTaGFwZSA6IHB1YmxpYyBSZWZD
b3VudGVkPEJhc2ljU2hhcGU+IHsKQEAgLTU4LDcgKzYwLDggQEAgcHVibGljOgogICAgICAgICBQ
YXRoLAogICAgICAgICBDaXJjbGUsCiAgICAgICAgIEVsbGlwc2UsCi0gICAgICAgIEluc2V0Cisg
ICAgICAgIEluc2V0LAorICAgICAgICBTaGFwZQogICAgIH07CiAKICAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0ID0gMDsKQEAgLTM0Myw2ICszNDYsNDEgQEAgcHJpdmF0ZToKICAgICBMZW5n
dGhTaXplIG1fYm90dG9tTGVmdFJhZGl1czsKIH07CiAKK2NsYXNzIEJhc2ljU2hhcGVTaGFwZSA6
IHB1YmxpYyBCYXNpY1NoYXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEJhc2ljU2hhcGVT
aGFwZT4gY3JlYXRlKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBWZWN0b3I8UmVmPEJhc2ljU2hh
cGVTZWdtZW50Pj4mJiBzZWdtZW50cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEJhc2ljU2hhcGVTaGFwZShmcm9tLCBXVEZNb3ZlKHNlZ21lbnRzKSkpOworICAgIH0KKwor
ICAgIHZvaWQgc2V0V2luZFJ1bGUoV2luZFJ1bGUgd2luZFJ1bGUpIHsgbV93aW5kUnVsZSA9IHdp
bmRSdWxlOyB9CisgICAgV2luZFJ1bGUgd2luZFJ1bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3dpbmRSdWxlOyB9CisKKyAgICBjb25zdCBMZW5ndGhQb2ludCYgZnJvbSgpIGNvbnN0IHsg
cmV0dXJuIG1fZnJvbTsgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Nl
Z21lbnRzLT5zaXplKCk7IH0KKyAgICBjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYgYXQoc2l6ZV90
IGkpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMtPmF0KGkpLmdldCgpOyB9CisKK3ByaXZhdGU6
CisgICAgQmFzaWNTaGFwZVNoYXBlKGNvbnN0IExlbmd0aFBvaW50JiwgVmVjdG9yPFJlZjxCYXNp
Y1NoYXBlU2VnbWVudD4+JiYpOworCisgICAgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gVHlwZTo6U2hhcGU7IH0KKworCisgICAgY29uc3QgUGF0aCYgcGF0aChjb25zdCBGbG9h
dFJlY3QmKSBvdmVycmlkZTsKKworICAgIGJvb2wgY2FuQmxlbmQoY29uc3QgQmFzaWNTaGFwZSYp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxCYXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1No
YXBlJiBmcm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKworICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAg
ICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0IGZpbmFsOworCisgICAgc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+Pj4gbV9zZWdtZW50czsKKyAgICBXaW5k
UnVsZSBtX3dpbmRSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKKyAgICBMZW5ndGhQb2ludCBt
X2Zyb207Cit9OworCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiwgY29uc3QgQmFzaWNTaGFwZVJhZGl1cyYpOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlJik7CiBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQmFzaWNT
aGFwZSYpOwpAQCAtMzU5LDMgKzM5Nyw0IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkFTSUNf
U0hBUEUoQmFzaWNTaGFwZUVsbGlwc2UsIEJhc2ljU2hhcGU6OlR5cGU6OkVsbGlwc2UpCiBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVQb2x5Z29uLCBCYXNpY1No
YXBlOjpUeXBlOjpQb2x5Z29uKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQRShC
YXNpY1NoYXBlUGF0aCwgQmFzaWNTaGFwZTo6VHlwZTo6UGF0aCkKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkFTSUNfU0hBUEUoQmFzaWNTaGFwZUluc2V0LCBCYXNpY1NoYXBlOjpUeXBlOjpJbnNl
dCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkFTSUNfU0hBUEUoQmFzaWNTaGFwZVNoYXBlLCBC
YXNpY1NoYXBlOjpUeXBlOjpTaGFwZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMzQ1MzQ4ZjlkOWZjMjEyM2QxOTVjYTNh
OWM5MmIzNTE0ZTMyODRlLi40ZjY2MTAzMGQyZDQxYWFmMWFiOTRiOTNjMTQyMWNjM2YyNzJkMTQx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDQtMTkgIE5vYW0gUm9zZW50aGFsICA8bm9h
bUB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgU2hhcGVzXSBBZGQgc3VwcG9ydCBmb3Igc2hh
cGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
MzcxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MDkxOTQ3Nj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IHVuc2tp
cCBDU1Mgc2hhcGUoKSB0ZXN0cworCiAyMDIyLTA0LTE4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gVW5za2lwIGFwaS92YWxpZGF0
aW9uL2NyZWF0ZVNhbXBsZXIuaHRtbCDwn46JCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCA2NGVhNjU3ZTZlMDQyYWMzZDEwMThjOGRkOGQ4ZmMwMjI1ZmViYTA3Li5hZGY2NDVlMjM5
MmQ1YTk3OTdmMmY3YzY0ZjlkYjBmMzI0ZjA3NmMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMi0wNC0xOSAgTm9hbSBSb3NlbnRoYWwgIDxub2Ft
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFkZCBzdXBwb3J0IGZvciBzaGFw
ZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgz
NzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2PgorCisgICAgICAgIEFtZW5kZWQg
dGVzdHMgdG8gc3VwcG9ydCBDU1Mgc2hhcGUoKQorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy1leHBlY3Rl
ZC5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xp
cC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4cGVj
dGVkLmh0bWw6CisgICAgICAgICAgICAgICAgTmVlZGVkIHRvIGNoYW5nZSB0aGUgdGVzdCBhIGJp
dCBiZWNhdXNlIG9mIHN0cmF5IHBpeGVscy4gV2lsbCB1cHN0cmVhbS4KKworCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2NsaXAtcGF0aC1zaGFw
ZS1wYXJzaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgICAgICAgICBOb3cgcGFzc2VzCisKIDIw
MjItMDQtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBJbXBsZW1lbnQgQ1NTVHJhbnNmb3JtVmFsdWUuaXMyRApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggYWU3NjI2YjNiZjM5YTdhYjg2NmJmNGM0MjhmNmEzOGNiMTg2MTlhNC4uYmYwOTJkZDUy
ZDNhYjFlMDU0OThmYWIwYzZlOWRlOGVjMzlkODRhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0y
MTk5LDE1ICsyMTk5LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC12aWV3Qm94LTFjLmgKIHdlYmtpdC5vcmcvYi8x
MDQ0NDIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xp
cC1wYXRoL2NsaXAtcGF0aC11cmwtcmVmZXJlbmNlLWNoYW5nZS1mcm9tLWVtcHR5Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMjk1MTAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1kZXNjZW5k
YW50LXRleHQtbXV0YXRlZC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi0jIENTUyBz
aGFwZSgpCi13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAxLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0w
MDItdW5pdHMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgv
Y2xpcC1wYXRoLXNoYXBlLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5n
L2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLWludGVycG9s
YXRpb24tMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRo
L2NsaXAtcGF0aC1zaGFwZS1pbnRlcnBvbGF0aW9uLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi0KIHdlYmtpdC5vcmcvYi8yMjkzNzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC9jbGlwLWZpbHRlci1vcmRlci5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjI5MzcwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tYXNraW5nL21hc2staW1hZ2UvbWFzay1pbWFnZS11cmwtbG9jYWwtbWFz
ay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjI5MzcwIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL21hc2staW1hZ2UvbWFzay1p
bWFnZS11cmwtcmVtb3RlLW1hc2suaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1h
c2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2Ns
aXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWwKaW5kZXggNDZlMDk4YzRl
YjY0ODlmYzQ0MzAxZDZiZjliMjQzZTgzNmIyY2EzMS4uMzFlOTdjOTE0NzQ0OGFhODQ5MjY0MmU0
MTk2YWE5MWI1Y2E2YTQ4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFw
ZS0wMDMtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAw
My1leHBlY3RlZC5odG1sCkBAIC05LDE0ICs5LDIzIEBACiAgICAgd2lkdGg6IDEwMHB4OwogICAg
IGhlaWdodDogMTAwcHg7CiAgIH0KLSAgI3JlZiB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47CisKKyAgI3JlZiwgI2FjdHVhbCB7CiAgICAgY2xpcC1wYXRoOiBwYXRoKG5vbnplcm8sICJN
IDEwIDEwLCBRIDQwIDAgNjAgMjAsIFQgOTAgMCwgYyAxMCA0MCAyMCAyMCAtMjAgNjAsIHMgLTEw
IDcwIC00MCAtMTAiKTsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgIH0KKworICAjcmVmIHsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgIH0KKworICAjYWN0dWFsIHsKKyAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgfQogPC9zdHlsZT4KIDxib2R5PgogICA8cD5Zb3Ugc2hv
dWxkIHNlZSBubyByZWQuPC9wPgogICA8ZGl2IGlkPSJyZWYiPjwvZGl2PgorICA8ZGl2IGlkPSJh
Y3R1YWwiPjwvZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRo
L2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUt
MDAzLmh0bWwKaW5kZXggMjJlN2Q5YWFmNTM3NGM5YjdlNGUzYzJkNTBlY2VmYmNlYzEzNGI2Ni4u
ZTAxNzA5MDA1YWM4Y2Y4ZTM1ZDA2MmE2ODU3YjY0NjI3YjVlYmUwOCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcv
Y2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xp
cC1wYXRoLXNoYXBlLTAwMy5odG1sCkBAIC02LDYgKzYsNyBAQAogICA8bGluayByZWw9Im1hdGNo
IiBocmVmPSJyZWZlcmVuY2UvY2xpcC1wYXRoLXNoYXBlLTAwMy1yZWYuaHRtbCI+CiAgIDxtZXRh
IG5hbWU9ImFzc2VydCIgY29udGVudD0iVGhlIGNsaXAtcGF0aCBwcm9wZXJ0eSB0YWtlcyB0aGUg
YmFzaWMgc2hhcGUKIAknc2hhcGUoKScgZm9yIGNsaXBwaW5nLiBUZXN0IGN1cnZlcy4iPgorICA8
bWV0YSBuYW1lPSJmdXp6eSIgY29udGVudD0ibWF4RGlmZmVyZW5jZT04MDsgdG90YWxQaXhlbHM9
Mzk0Ij4KIDwvaGVhZD4KIDxzdHlsZT4KICAgZGl2IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0
aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1w
YXRoLXNoYXBlLTAwNC1leHBlY3RlZC5odG1sCmluZGV4IGVjOGY5NDEwNzk1MTM4ZjdhMzQ5MGQ3
YTQxNjliNWViZDVlMzc0NzQuLjEwZjQ1N2I5MTE4NGYxMDEzMDY4OWEyNzMwNWZjMmRkMzY2ZTI4
MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4cGVjdGVk
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRt
bApAQCAtOSwxNCArOSwyMyBAQAogICAgIHdpZHRoOiAxMDBweDsKICAgICBoZWlnaHQ6IDEwMHB4
OwogICB9Ci0gICNyZWYgewotICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworCisgICNyZWYs
ICNhY3R1YWwgewogICAgIGNsaXAtcGF0aDogcGF0aChub256ZXJvLCAiTSAyMCAyMCBBIDI1IDEy
IDAgMCAxIDgwIDIwLCBhIDMzIDMzIDEyMCAxIDEgLTQwIDUwLCBBIDIwIDI1IDAgMCAwIDIwIDIw
Iik7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICB9CisKKyAgI3JlZiB7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogcmVkOworICB9CisKKyAgI2FjdHVhbCB7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogZ3JlZW47CisgIH0KIDwvc3R5bGU+CiA8Ym9keT4KICAgPHA+WW91IHNob3VsZCBzZWUgbm8g
cmVkLjwvcD4KICAgPGRpdiBpZD0icmVmIj48L2Rpdj4KKyAgPGRpdiBpZD0iYWN0dWFsIj48L2Rp
dj4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL3BhcnNpbmcvY2xpcC1wYXRoLXNo
YXBlLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFy
c2luZy1leHBlY3RlZC50eHQKaW5kZXggZTk0YWVlOGI2YjRjYjA0ZjdhZmU4MmFkNjViM2MxNDhi
YzQxMTI1Zi4uZTA1ODBlZGZjMWQ4ZWYzMjc3NWI1ZDk2ZjM4N2VlNWU3YTQ3YTMwZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2luZy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1h
c2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTEs
MjQgKzEsMjQgQEAKIAotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDBw
eCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUg
YXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQg
dmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9t
IDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFs
dWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93
ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUobm9uemVybyBm
cm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkg
dmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2Fs
bG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoICBmcm9t
IDBweCAgICAwcHgsIGxpbmUgIHRvIDEwcHggIDEwcHggICAgICkiIHNob3VsZCBzZXQgdGhlIHBy
b3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdv
dCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBl
KGZyb20gMWVtIDUwJSwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0
eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlz
YWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShFdmVu
T2RkIGZyb20gMHB4IDBQeCwgQ0xPU0UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBh
c3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2
YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFjaCA1MHB4
LCBsaW5lIHRvIDEwcmVtIDEwdmgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3Nl
cnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1
ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFjaCAtNTBweCwg
bGluZSB0byAtMTAlIDEycHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRf
bm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAi
IgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgbW92
ZSBieSAxMHB4IDVweCwgbGluZSBieSAyMHB4IDQwJSwgY2xvc2UpIiBzaG91bGQgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBn
b3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShmcm9tIDEwcHggMTBweCwgaGxpbmUgYnkgMTBweCwgdmxpbmUgdG8gNXJlbSkiIHNob3VsZCBz
ZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQg
YmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCdd
ID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCB2bGluZSBieSA1JSwgaGxpbmUgdG8gMXZ3KSIgc2hv
dWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNo
b3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1w
YXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUwcHggMjBweCB2aWEgMTBy
ZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczog
cHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0
eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUgdG8gNTBweCAy
MHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1
ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dl
ZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHgg
MTBweCwgY3VydmUgYnkgNTBweCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQg
c2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxk
IGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgn
XSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgc21vb3RoIHRvIDUwcHggMjBweCB2aWEgMTByZW0g
MSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJv
cGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxl
WydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgc21vb3RoIHRvIDUwcHggMXB0
KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3Bl
cnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsn
Y2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGFyYyB0byA1MHB4IDFwdCBvZiAx
MHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFs
czogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBl
LnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgYXJjIHRvIDUwcHgg
MXB0IG9mIDEwcHggMTBweCBzbWFsbCByb3RhdGUgMGRlZykiIHNob3VsZCBzZXQgdGhlIHByb3Bl
cnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBk
aXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZy
b20gMTAlIDFyZW0sIGFyYyB0byA1MHB4IDFwdCBvZiAyMCUgY3cgbGFyZ2Ugcm90YXRlIDI1ZGVn
KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3Bl
cnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsn
Y2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGNsb3NlKSIgc2hvdWxk
IHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3Vs
ZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRo
J10gPSAic2hhcGUoZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGV2
ZW5vZGQgZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHBy
b3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKG5vbnplcm8g
ZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5
IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKCAgZnJvbSAwcHggICAg
MHB4LCBsaW5lICB0byAxMHB4ICAxMHB4ICAgICApIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFlbSA1MCUsIGxp
bmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5z
dHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoRXZlbk9kZCBmcm9tIDBweCAwUHgsIENMT1NFKSIg
c2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10g
PSAic2hhcGUoZnJvbSAxY2ggNTBweCwgbGluZSB0byAxMHJlbSAxMHZoKSIgc2hvdWxkIHNldCB0
aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJv
bSAxY2ggLTUwcHgsIGxpbmUgdG8gLTEwJSAxMnB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkg
dmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgs
IG1vdmUgYnkgMTBweCA1cHgsIGxpbmUgYnkgMjBweCA0MCUsIGNsb3NlKSIgc2hvdWxkIHNldCB0
aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJv
bSAxMHB4IDEwcHgsIGhsaW5lIGJ5IDEwcHgsIHZsaW5lIHRvIDVyZW0pIiBzaG91bGQgc2V0IHRo
ZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9t
IDEwcHggMTBweCwgdmxpbmUgYnkgNSUsIGhsaW5lIHRvIDF2dykiIHNob3VsZCBzZXQgdGhlIHBy
b3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBw
eCAxMHB4LCBjdXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEwcmVtIDElKSIgc2hvdWxkIHNldCB0aGUg
cHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAx
MHB4IDEwcHgsIGN1cnZlIHRvIDUwcHggMjBweCB2aWEgMTByZW0gMXB4IDIwdmggMWNoKSIgc2hv
dWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAi
c2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIGJ5IDUwcHggMjBweCB2aWEgMTByZW0gMXB4IDIw
dmggMWNoKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xp
cC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIHNtb290aCB0byA1MHB4IDIwcHggdmlh
IDEwcmVtIDElKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Y2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIHNtb290aCB0byA1MHB4IDFwdCki
IHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCdd
ID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBhcmMgdG8gNTBweCAxcHQgb2YgMTBweCAxMHB4KSIg
c2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10g
PSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGFyYyB0byA1MHB4IDFwdCBvZiAxMHB4IDEwcHggc21h
bGwgcm90YXRlIDBkZWcpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0
eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwJSAxcmVtLCBhcmMgdG8gNTBweCAxcHQg
b2YgMjAlIGN3IGxhcmdlIHJvdGF0ZSAyNWRlZykiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZh
bHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGV2ZW5vZGQgZnJvbSAwcHgg
MHB4LCBjbG9zZSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCiBQQVNTIGUuc3R5bGVb
J2NsaXAtcGF0aCddID0gInNoYXBlKGV2ZW5vZGQgZnJvbSAwcHggMHB4LCBjbG9zZSBwYXRoKSIg
c2hvdWxkIG5vdCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCiBQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0
aCddID0gInNoYXBlKG5vbnplcm8sIGZyb20gMHB4IDBweCwgbGluZSB0byAxMHB4IDEwcHgpIiBz
aG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkgdmFsdWUKIFBBU1MgZS5zdHlsZVsnY2xpcC1wYXRo
J10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUwcHggMjBweCB2aWEgMTByZW0p
IiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkgdmFsdWUK
</data>
<flag name="commit-queue"
          id="486604"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457885</attachid>
            <date>2022-04-19 06:57:10 -0700</date>
            <delta_ts>2022-04-19 07:24:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238371-20220419165707.patch</filename>
            <type>text/plain</type>
            <size>97008</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0MDhiYzRlZDIxNmNh
YWM1ZWVlZTUyMDkyNWQ3NzYzOGU0M2QwZC4uYzhmMjI3MTg0NDc0MGQ5Njc0Mjg0YzY3ODkyNGUx
ZjgwODQyODU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0xOSAgTm9h
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFk
ZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBDU1Mgc2hhcGUoKSBieSBpbnRyb2R1Y2luZyBzaGFwZSBzZWdtZW50IGFuZCBCYXNpY1NoYXBl
U2hhcGUuCisgICAgICAgIFNoYXBlU2hhcGUgaXMgYSB2ZWN0b3Igb2Ygc2hhcGUgc2VnbWVudHMs
IHdoZXJlIGVhY2ggc2VnbWVudCBibGVuZHMgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgVGhlIHNo
YXBlIHVsdGltYXRlbHkgY3JlYXRlcyBhbiBTVkdQYXRoU291cmNlIHRvIGNvbnZlcnQgdGhlIHJl
c3BvbnNpdmUgc2hhcGUsIHdoaWNoCisgICAgICAgIGlzIGJhc2VkIG9uIExlbmd0aCB2YWx1ZXMs
IHRvIGFuIGFic29sdXRlIFBhdGggb2JqZWN0IHRoYXQgY2FuIGJlIGRyYXduLgorCisgICAgICAg
IFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXNoYXBlcy0yLyNzaGFwZS1mdW5jdGlv
bgorCisgICAgICAgIFVuc2tpcHBlZCBzZXZlcmFsIHJlbGV2YW50IFdQVHMuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgICAgICBOZXcgZmlsZXMg
YWRkZWQKKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZhbHVlRm9yQmFzaWNTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9MZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpiYXNpY1NoYXBlRm9yVmFsdWUpOgor
ICAgICAgICAgICAgICAgIEFkZGVkIHRoZSBCYXNpY1NoYXBlU2hhcGUgdHlwZQorCisgICAgICAg
ICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Q1NTQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2lj
U2hhcGVTaGFwZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6
CisgICAgICAgICAgICAgICAgQWRkZWQgdGhlIENTU0Jhc2ljU2hhcGVTaGFwZQorCisgICAgICAg
ICogY3NzL0NTU1NoYXBlU2VnbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
aGFwZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NT
U2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudDo6Q1NTU2hh
cGVTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OnRhcmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6YXJndW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OmFmZmluaXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjphcHBlbmRBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpDU1NTaGFwZVNlZ21l
bnRWYWx1ZSk6CisgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB0byBkbyB3aXRoIHRoZSBzZWdt
ZW50IG9mIHRoZSBzaGFwZSB3aGlsZSBpbiBDU1Mgc3BhY2UsCisgICAgICAgICAgICAgICAgaW5j
bHVkaW5nIHNlcmlhbGl6YXRpb24gZm9yIGdldENvbXB1dGVkU3R5bGUoKQorCisgICAgICAgICog
Y3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzU2hhcGVTZWdtZW50VmFsdWUgY29uc3Qp
OgorICAgICAgICAgICAgICAgIENTU1NoYXBlU2VnbWVudCBpcyBhIHR5cGUgb2YgdmFsdWUKKwor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAgICAgICAgIE5ldyBr
ZXl3b3JkcyBmb3Igc2hhcGUoKQorCisgICAgICAgICogY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9u
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFBvaW50VG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0FyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6dG9DU1NB
cmdzPExlbmd0aFBvaW50Pik6CisgICAgICAgIChXZWJDb3JlOjp0b0NTU1NoYXBlU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpzZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpmcm9t
Q1NTU2hhcGVTZWdtZW50KToKKyAgICAgICAgKiBjc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmg6
IEFkZGVkLgorICAgICAgICAgICAgICAgIENvbnZlcnRpbmcgc2hhcGUgc2VnbWVudHMgdG8vZnJv
bSBDU1Mgc3BhY2UKKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNoYXBlU2VnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVC
YXNpY1NoYXBlKToKKyAgICAgICAgICAgICAgICBQYXJzZSBhIHNoYXBlIHByb3BlcnR5CisKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OnZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzaWNTaGFwZVNlZ21lbnQ6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6YmxlbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFyY1RvU2hhcGVTZWdWYWx1
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVu
dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6Y3Jl
YXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50OjpCYXNp
Y1NoYXBlU2VnbWVudCk6CisgICAgICAgICAgICAgICAgQmxlbmRpbmcsIGNvbXBhcmluZyBhbmQg
Y29udmVydGluZyB0byBhYnNvbHV0ZSBwYXRoCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhCb3g6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhC
b3g6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1Bh
dGhQb2xpY3k6OmlzS2V5TnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVNlZ21lbnRzUGF0
aFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU2hh
cGVTZWdtZW50c1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpCYXNp
Y1NoYXBlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpwYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6YmxlbmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZVNoYXBlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2V0V2luZFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpmcm9tIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlU2hhcGU6OmF0IGNvbnN0KToKKyAgICAgICAgICAgICAgICBBZGQgQmFz
aWNTaGFwZVNoYXBlCisKIDIwMjItMDQtMTggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgUGxhdGZvcm1NZWRpYUVuZ2luZUNsYXNzTmFt
ZSBtYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODBiYmVhOGU3MjM0ZjA1NWVmZDZlMzQwMDc1
MGIzN2YzMzE3OGNhZS4uZWJlYzFlMGIwZDhjODhjMzk0NDRkZDg4NGI4MDNlNDk3MmU3MDY0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC01NTQsNiArNTU0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9DU1NSdWxlTGlzdC5oCiAgICAgY3NzL0NTU1Nl
bGVjdG9yLmgKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKyAgICBjc3MvQ1NTU2hhcGVTZWdt
ZW50LmgKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCiAgICAgY3NzL0NTU1N0eWxlUnVs
ZS5oCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMTg4Nyw2ICsxODg4LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hh
cGUuaAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCiAKKyAgICByZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaAogICAgIHJlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5oCiAgICAgcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAogICAgIHJlbmRlcmlu
Zy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBhZjNkMDZhNWIwYmJjNjhm
YzAxMTMzYmNjZmUxZjJjZDk3MGU4OWUuLjM0ZDMyYTg4MTYyNTdkNDVkZGFkOTgyYTk3YzdjMTRi
NzFkMDM4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC03NzEsNiArNzcxLDcgQEAgY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmNwcAogY3NzL0NTU1NlbGVjdG9yLmNwcAogY3NzL0NTU1NlbGVjdG9yTGlz
dC5jcHAKIGNzcy9DU1NTaGFkb3dWYWx1ZS5jcHAKK2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCiBj
c3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKIGNzcy9DU1NTdHlsZVJ1bGUuY3BwCiBjc3MvQ1NT
U3R5bGVTaGVldC5jcHAKQEAgLTI0NDksNiArMjQ1MCw3IEBAIHJlbmRlcmluZy9zaGFwZXMvUmVj
dGFuZ2xlU2hhcGUuY3BwCiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogcmVuZGVyaW5nL3No
YXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNw
cAorcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmNwcAogcmVuZGVyaW5nL3N0eWxl
L0JvcmRlckRhdGEuY3BwCiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCiByZW5kZXJp
bmcvc3R5bGUvRmlsbExheWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2MTc2MzlkZjcyMDZmYzQ4NDU3MDQ4ZWU0NGJh
ODk0M2M1MmM3YTIuLmY1NDE5MDgyMzdkNjE1NGJlNDIwZWQ2N2M5MDg1ZTY0NTlkMDQ1NGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQ0NTIsNiArNDQ1MiwxMCBAQAogCQlDQTNCRjY3RTEwRDk5QkFFMDBFNkNFNTMgLyogU2Ny
b2xsQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNBNkMxNTMwMjIwQjk4
Q0MwMDU1Q0JGQyAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFBRTNCODFGQjgwRUFFMDBGNUVGQjIgLyog
SlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNBN0U5QjQ5MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVs
UGFpbnRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDQTdFOUI0NzI0MzYxREM1MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5o
ICovOyB9OworCQlDQTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBODE2Q0Iz
Mjc3ODQ4MUUwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oICovOyB9OworCQlDQTgxNkNC
OTI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyog
Q1NTU2hhcGVTZWdtZW50LmggKi87IH07CisJCUNBODE2Q0JDMjc3ODlBQUQwMDJCRDNDNiAvKiBT
aGFwZVNlZ21lbnRGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0E4MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1
bmN0aW9ucy5jcHAgKi87IH07CisJCUNBODE2Q0JEMjc3ODlBQUQwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRGdW5jdGlvbnMu
aCAqLzsgfTsKIAkJQ0FFOUY5MTAxNDY0NDFGMDAwQzI0NUIwIC8qIENTU0FzcGVjdFJhdGlvVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBRTlG
OTBFMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggKi87IH07CiAJCUNC
MzhGRDUyMUNDRjkzOTQwMDU5MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENCMzhGRDRFMUNDRjkzN0UwMDU5
MkEzRiAvKiBKU1BlcmZvcm1hbmNlRW50cnkuaCAqLzsgfTsKIAkJQ0IzOEZENUIxQ0QyMzI1QjAw
NTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0IzOEZENTkxQ0QyMzE0NTAwNTkyQTNGIC8q
IEpTUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oICovOyB9OwpAQCAtMTU5NDcsNiArMTU5NTEs
NyBAQAogCQlDQTA5MUQ4NjIzQ0Y5MDc4MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHlsZUltYWdlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0EwOTFEODkyM0NGOTA4ODAwQUQ0MzQ2IC8qIFN0eWxlSW1hZ2VTZXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3R5bGVJbWFnZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQTE2MzVEQzIwNzJFNzY5MDBFN0QyQ0UgLyogUmVmZXJyZXJQb2xpY3kuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmZXJyZXJQb2xpY3kuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDQTE2NkNDQjI3ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hh
cGVTZWdtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1NoYXBlU2VnbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMTkzM0Q1MjQwN0Q2NDAwMDcxMjQxQSAvKiBQ
ZXJmb3JtYW5jZVBhaW50VGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZvcm1hbmNlUGFpbnRU
aW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0ExOTMzRDgyNDA3RURDRjAw
NzEyNDFBIC8qIFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDQTNBNEFBQjI1NDE2RTNDMDA2Q0RBRTIgLyogSW1hZ2VSZXNvbHV0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlUmVzb2x1dGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTk2Miw2ICsxNTk2NywxMSBAQAogCQlDQTZD
MTUzODIyMEQxRUIzMDA1NUNCRkMgLyogSlNJREJDdXJzb3JXaXRoVmFsdWVDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJDdXJzb3JXaXRoVmFsdWVD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTdFOUI0NzI0MzYxREM1
MDA0RTg5RjYgLyogQ29udGVudGZ1bFBhaW50Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb250ZW50ZnVsUGFpbnRDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNBN0U5QjQ4MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFpbnRD
aGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRm
dWxQYWludENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNC
MzI3Nzg0ODFFMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0E4MTZDQjQyNzc4NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2ljU2hhcGVTZWdt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4MTZDQjgyNzc4NDgyRTAw
MkJEM0M2IC8qIENTU1NoYXBlU2VnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDU1NTaGFwZVNlZ21lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0E4
MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFwZVNlZ21lbnRGdW5jdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCQjI3Nzg5QUE3MDAyQkQzQzYg
LyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQUU5RjkwRDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIw
IC8qIENTU0FzcGVjdFJhdGlvVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
QjM4RkQ0QTFDQ0NGMkREMDA1OTJBM0YgLyogUGVyZm9ybWFuY2VFbnRyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJmb3JtYW5jZUVudHJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5Njg4LDYgKzI5Njk4LDggQEAKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCUZCRDZBRjgyMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi8s
CiAJCQkJRkJENkFGODMxNUVGMjFBMzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8sCisJCQkJ
Q0E4MTZDQjQyNzc4NDgxRjAwMkJEM0M2IC8qIEJhc2ljU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJ
CQlDQTgxNkNCMzI3Nzg0ODFFMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuaCAqLywKIAkJ
CQkwRjI4M0E5MTIzNTYzMTI2MDA0Nzk0Q0EgLyogQm9yZGVyRGF0YS5jcHAgKi8sCiAJCQkJQkM1
RUI1RTAwRTgxQkU4NzAwQjI1OTY1IC8qIEJvcmRlckRhdGEuaCAqLywKIAkJCQlCQzVFQjVEQTBF
ODFCN0VBMDBCMjU5NjUgLyogQm9yZGVyVmFsdWUuaCAqLywKQEAgLTMxOTYxLDYgKzMxOTczLDgg
QEAKIAkJCQlFNEMxNzg5NjBFRTY5MDM4MDA4MjRENjkgLyogQ1NTU2VsZWN0b3JMaXN0LmggKi8s
CiAJCQkJQTgwRTZDQ0EwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmNwcCAqLywK
IAkJCQlBODBFNkNCRTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU2hhZG93VmFsdWUuaCAqLywKKwkJ
CQlDQTE2NkNDQjI3ODA2ODdEMDA0NTIyQjMgLyogQ1NTU2hhcGVTZWdtZW50LmNwcCAqLywKKwkJ
CQlDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggKi8sCiAJCQkJ
N0NERThFQkMxRjE5M0JDNTAwMTY4RkU3IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uY3BwICovLAog
CQkJCUE4MEU2RTBEMEExOTkxMUMwMDdGQjhDNSAvKiBDU1NTdHlsZURlY2xhcmF0aW9uLmggKi8s
CiAJCQkJMTQyMDExQUUwQTAwMzExNzAwODMwM0Y5IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaWRs
ICovLApAQCAtMzIwOTYsNiArMzIxMTAsOCBAQAogCQkJCTQzQjg1RUQ2MThDQkVDOTcwMEUzMUFG
NCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuaW4gKi8s
CiAJCQkJMjZBQTBGOUExOEQyOTczRDAwNDE5MzgxIC8qIFNlbGVjdG9yUHNldWRvRWxlbWVudFR5
cGVNYXAuaW4gKi8sCiAJCQkJNDMxMDdCRTExOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNl
dWRvVHlwZU1hcC5oICovLAorCQkJCUNBODE2Q0JBMjc3ODlBQTIwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuY3BwICovLAorCQkJCUNBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBT
aGFwZVNlZ21lbnRGdW5jdGlvbnMuaCAqLywKIAkJCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQg
LyogU3R5bGVDb2xvci5jcHAgKi8sCiAJCQkJOTQxODI3ODkxRDhCMjQyMjAwNDkyNzY0IC8qIFN0
eWxlQ29sb3IuaCAqLywKIAkJCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRp
YS5jcHAgKi8sCkBAIC0zMzg1Niw2ICszMzg3Miw3IEBACiAJCQkJNzE1NkJDQTEyMUNBMzUwRjAw
NTM0Mzk3IC8qIEJhc2ljRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4
QTE1RUYyNURGMDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkJENkFGOEMxNUVGMjYwNDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDQTgxNkNCNjI3Nzg0ODIwMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFCMjNBMzI4MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVU
ZXh0SW5zZXJ0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCM0QwQTQ0RUZDNzAw
Rjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEy
NDBEMDA2QzFEMDBFRjZGMjYgLyogQmlkaUNvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtMzQz
NDcsNiArMzQzNjQsNyBAQAogCQkJCUU0QzE3ODlCMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxl
Y3Rvckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0REU1QzhFMUQ4MDgwMjcwMDE2NEYyQSAv
KiBDU1NTZWxlY3RvclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRTgwQTE5ODlD
QTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNC
OTI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQTUzOEEyQTI2RjAxMDQyMDA5NjVGQzggLyogQ1NTU2tldy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkE1MzhBMkIyNkYwMTA0NTAwOTY1RkM4IC8qIENTU1NrZXdYLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyQTUzOEEyQzI2RjAxMDQ4MDA5NjVGQzggLyogQ1NTU2tld1kuaCBpbiBIZWFkZXJzICov
LApAQCAtMzc0ODQsNiArMzc1MDIsNyBAQAogCQkJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAv
KiBTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NUIxNzVENDFFRTAwQzIxRUM4IC8q
IFNoYXBlSW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTUyMTc1RDNGM0UwMEMy
MUVDOCAvKiBTaGFwZU91dHNpZGVJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlDQTgxNkNCRDI3
Nzg5QUFEMDAyQkQzQzYgLyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDFBRjE1MDE2NTZGMTUxMDBDNkQ0RjcgLyogU2hhcGVWYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUQ5RjBGQzEyMTIyMDI5QjAwNUQ4RkQ0IC8qIFNoYXJlRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE0QTk1NEUwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zOTAzMCw2ICszOTA0OSw3IEBACiAJCQkJNDNCODVFRDQxOENCRUM1
MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1h
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkFBMEY5RTE4RDJBMThCMDA0MTkzODEgLyogU2Vs
ZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0Q1OERG
RDFGOTU2NUE4MDAxMTI3OTEgLyogU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0E4
MTZDQkMyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MURGMkQ1RTI3QTk0NTJBMDBGMjVBMjEgLyogU2hhcmVkVmlkZW9GcmFt
ZUluZm8ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzhGMTBBODFGOTAyMkE0MDA1MTAyQ0UgLyog
U29mdExpbmtMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhCNUFBMTgwNDdGRjEw
MDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCmluZGV4IDlkZjJjZmY3
OTU3ZTQ1ZDg5YjcyMWE3MWU3NWUyOGQ4NWE1ZTc5YTcuLjE3NzIyMjZhZmViNzNkODQ0OTU5N2Q2
YWRlMzY4M2U2N2IxZDVjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1No
YXBlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0
aW9ucy5jcHAKQEAgLTMwLDEzICszMCwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkJhc2ljU2hhcGVGdW5jdGlvbnMuaCIKIAorI2luY2x1ZGUgIkJhc2ljU2hhcGVTZWdtZW50
LmgiCiAjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKICNpbmNsdWRlICJDU1NCYXNpY1NoYXBlcy5o
IgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJDU1NT
aGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJQYWly
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVh
bS5oIgorI2luY2x1ZGUgIlNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTE1NCw2ICsxNTcsMjIgQEAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1
ZUZvckJhc2ljU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCYXNpY1MKICAg
ICAgICAgYmFzaWNTaGFwZVZhbHVlID0gV1RGTW92ZShpbnNldFZhbHVlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorICAgIGNhc2UgQmFzaWNTaGFwZTo6VHlwZTo6U2hhcGU6IHsKKyAgICAgICAg
YXV0byYgc2hhcGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGUpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsK
KyAgICAgICAgYXV0byBzaXplID0gc2hhcGUuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKHRvQ1NTU2hh
cGVTZWdtZW50KHN0eWxlLCBzaGFwZS5hdChpKSkpOworCisgICAgICAgIGF1dG8gZnJvbSA9IGNz
c1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoCisgICAgICAgICAgICBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc2hhcGUuZnJvbSgpLngoKSwgc3R5bGUpLAorICAgICAgICAgICAg
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYXBlLmZyb20oKS55KCksIHN0eWxlKSwgUGFpcjo6
SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSkpOworCisgICAgICAgIGF1dG8g
c2hhcGVWYWx1ZSA9IENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3JlYXRlKFdURk1vdmUoZnJvbSksIFdU
Rk1vdmUocmVzdWx0KSk7CisgICAgICAgIHNoYXBlVmFsdWUtPnNldFdpbmRSdWxlKHNoYXBlLndp
bmRSdWxlKCkpOworICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBXVEZNb3ZlKHNoYXBlVmFsdWUp
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShiYXNpY1NoYXBlVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0xNjQs
NiArMTgzLDEyIEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjCiAgICAgcmV0dXJuIHZhbHVlLT5j
b252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IEZpeGVkRmxvYXRDb252ZXJz
aW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oY29udmVyc2lv
bkRhdGEpOwogfQogCitzdGF0aWMgTGVuZ3RoUG9pbnQgY29udmVydFRvTGVuZ3RoUG9pbnQoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKK3sKKyAgICBhdXRvJiBwYWlyID0gKihkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgpKTsKKyAgICByZXR1cm4geyBjb252ZXJ0VG9MZW5ndGgo
Y29udmVyc2lvbkRhdGEsIHBhaXIuZmlyc3QoKSksIGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9u
RGF0YSwgcGFpci5zZWNvbmQoKSkgfTsKK30KKwogc3RhdGljIExlbmd0aFNpemUgY29udmVydFRv
TGVuZ3RoU2l6ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0
YSwgY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlKQogewogICAgIGlmICghdmFsdWUpCkBA
IC0yOTcsNiArMzIyLDIwIEBAIFJlZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9yVmFsdWUoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhCiAgICAgICAgIGJhc2lj
U2hhcGUgPSBXVEZNb3ZlKHBhdGgpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBD
U1NCYXNpY1NoYXBlOjpDU1NCYXNpY1NoYXBlU2hhcGVUeXBlOiB7CisgICAgICAgIGF1dG8mIHNo
YXBlVmFsdWUgPSBkb3duY2FzdDxDU1NCYXNpY1NoYXBlU2hhcGU+KGJhc2ljU2hhcGVWYWx1ZSk7
CisgICAgICAgIGNvbnN0IGF1dG8mIGNzc1NlZ21lbnRzID0gc2hhcGVWYWx1ZS5zZWdtZW50cygp
OworICAgICAgICBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4gc2VnbWVudHMoY3NzU2Vn
bWVudHMubGVuZ3RoKCkpOworICAgICAgICBzdGQ6OnRyYW5zZm9ybShzdGQ6OmJlZ2luKGNzc1Nl
Z21lbnRzKSwgc3RkOjplbmQoY3NzU2VnbWVudHMpLCBzZWdtZW50cy5iZWdpbigpLCBbJl0gKGNv
bnN0IGF1dG8mIGNzc1NlZ21lbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBmcm9tQ1NTU2hhcGVT
ZWdtZW50KGNvbnZlcnNpb25EYXRhLCBkb3duY2FzdDxDU1NTaGFwZVNlZ21lbnQ+KGNzc1NlZ21l
bnQuZ2V0KCkpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byBzaGFwZSA9IEJhc2ljU2hh
cGVTaGFwZTo6Y3JlYXRlKGNvbnZlcnRUb0xlbmd0aFBvaW50KGNvbnZlcnNpb25EYXRhLCBzaGFw
ZVZhbHVlLmZyb20oKSksIFdURk1vdmUoc2VnbWVudHMpKTsKKyAgICAgICAgc2hhcGUtPnNldFdp
bmRSdWxlKHNoYXBlVmFsdWUud2luZFJ1bGUoKSk7CisKKyAgICAgICAgYmFzaWNTaGFwZSA9IFdU
Rk1vdmUoc2hhcGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgcmV0dXJu
IGJhc2ljU2hhcGUucmVsZWFzZU5vbk51bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFw
ZXMuY3BwCmluZGV4IDg5ZTA5ZjU3MmMzNTE2MzgzZjdiMjYyZDU0MGMwM2RlMDJlODQ4NTAuLjg1
ZjY3NmZlNjE2NGFhMGI0MDg4ODMxZDA1NjQ4ODMyZTUwMGZiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtMjIyLDYgKzIyMiwzOCBAQCBib29sIENTU0Jhc2ljU2hh
cGVQYXRoOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYgb3RoZXJTaGFwZSkgY29uc3QKICAg
ICByZXR1cm4gd2luZFJ1bGUoKSA9PSBvdGhlclNoYXBlUGF0aC53aW5kUnVsZSgpICYmIHBhdGhE
YXRhKCkgPT0gb3RoZXJTaGFwZVBhdGgucGF0aERhdGEoKTsKIH0KIAorQ1NTQmFzaWNTaGFwZVNo
YXBlOjpDU1NCYXNpY1NoYXBlU2hhcGUoUmVmPENTU1ZhbHVlPiYmIGZyb20sIFJlZjxDU1NWYWx1
ZUxpc3Q+JiYgc2VnbWVudHMpCisgICAgOiBtX3NlZ21lbnRzKFdURk1vdmUoc2VnbWVudHMpKSwg
bV9mcm9tKFdURk1vdmUoZnJvbSkpCit7IAorfQorCitib29sIENTU0Jhc2ljU2hhcGVTaGFwZTo6
ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIG90aGVyU2hhcGUpIGNvbnN0Cit7CisgICAgaWYg
KCFpczxDU1NCYXNpY1NoYXBlU2hhcGU+KG90aGVyU2hhcGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBhdXRvJiBvdGhlclNoYXBlU2hhcGUgPSBkb3duY2FzdDxDU1NCYXNpY1NoYXBl
U2hhcGU+KG90aGVyU2hhcGUpOworICAgIHJldHVybiB3aW5kUnVsZSgpID09IG90aGVyU2hhcGVT
aGFwZS53aW5kUnVsZSgpCisgICAgICAgICYmIGZyb20oKSA9PSBvdGhlclNoYXBlU2hhcGUuZnJv
bSgpCisgICAgICAgICYmIHNlZ21lbnRzKCkuZXF1YWxzKG90aGVyU2hhcGVTaGFwZS5zZWdtZW50
cygpKTsKK30KKworU3RyaW5nIENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3NzVGV4dCgpIGNvbnN0Cit7
CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGlmICh3aW5kUnVsZSgpID09IFdpbmRS
dWxlOjpFdmVuT2RkKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgic2hhcGUoZXZlbm9kZCAiKTsK
KyAgICBlbHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJzaGFwZSgiKTsKKworICAgIGF1dG8q
IHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oZnJvbSgpKS5wYWlyVmFsdWUoKTsK
KyAgICBBU1NFUlQocGFpcik7CisgICAgYnVpbGRlci5hcHBlbmQoImZyb20gIiwgcGFpci0+Y3Nz
VGV4dCgpLCAiLCAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChzZWdtZW50cygpLmNzc1RleHQoKSwg
IikiKTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKIHN0YXRpYyBTdHJp
bmcgYnVpbGRQb2x5Z29uU3RyaW5nKGNvbnN0IFdpbmRSdWxlJiB3aW5kUnVsZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBvaW50cykKIHsKICAgICBBU1NFUlQoIShwb2ludHMuc2l6ZSgpICUgMikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAppbmRleCAxMDVjNDYwOTQxZDY3NDRlNTdi
ZTdhMzVkNmIwNGZjNzNmYWJiYmVjLi4xNjMwNmRmMjllYjkzYTlkZDMzOWUwYzJmYTYxNDhjY2E4
MjQ4MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaApAQCAtMzgsNiArMzgsMTAg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CitjbGFz
cyBDU1NTaGFwZVNlZ21lbnQ7CitjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZVBhaXI7CitjbGFzcyBD
U1NWYWx1ZTsKK2NsYXNzIENTU1ZhbHVlTGlzdDsKIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFtOwog
CiBjbGFzcyBDU1NCYXNpY1NoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTQmFzaWNTaGFwZT4g
ewpAQCAtNDcsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgICAgIENTU0Jhc2ljU2hhcGVDaXJjbGVU
eXBlLAogICAgICAgICBDU1NCYXNpY1NoYXBlRWxsaXBzZVR5cGUsCiAgICAgICAgIENTU0Jhc2lj
U2hhcGVJbnNldFR5cGUsCi0gICAgICAgIENTU0Jhc2ljU2hhcGVQYXRoVHlwZQorICAgICAgICBD
U1NCYXNpY1NoYXBlUGF0aFR5cGUsCisgICAgICAgIENTU0Jhc2ljU2hhcGVTaGFwZVR5cGUKICAg
ICB9OwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CkBAIC0yMzMsNiArMjM4
LDM1IEBAIHByaXZhdGU6CiAgICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFdpbmRSdWxlOjpOb25a
ZXJvIH07CiB9OwogCitjbGFzcyBDU1NCYXNpY1NoYXBlU2hhcGUgZmluYWwgOiBwdWJsaWMgQ1NT
QmFzaWNTaGFwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxDU1NCYXNpY1NoYXBlU2hhcGU+
IGNyZWF0ZShSZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJiBzZWdtZW50
cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0Jhc2ljU2hhcGVTaGFw
ZShXVEZNb3ZlKGZyb20pLCBXVEZNb3ZlKHNlZ21lbnRzKSkpOworICAgIH0KKworICAgIGNvbnN0
IENTU1ZhbHVlTGlzdCYgc2VnbWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
c2VnbWVudHMuZ2V0KCk7CisgICAgfQorCisgICAgdm9pZCBzZXRXaW5kUnVsZShXaW5kUnVsZSBy
dWxlKSB7IG1fd2luZFJ1bGUgPSBydWxlOyB9CisgICAgV2luZFJ1bGUgd2luZFJ1bGUoKSBjb25z
dCB7IHJldHVybiBtX3dpbmRSdWxlOyB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgZnJvbSgpIGNv
bnN0IHsgcmV0dXJuIG1fZnJvbS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIENTU0Jhc2ljU2hh
cGVTaGFwZShSZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJik7CisKKyAg
ICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDU1NCYXNpY1NoYXBlU2hhcGVUeXBl
OyB9CisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGVxdWFscyhj
b25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3QgZmluYWw7CisKKyAgICBSZWY8Q1NTVmFsdWVMaXN0
PiBtX3NlZ21lbnRzOworICAgIFJlZjxDU1NWYWx1ZT4gbV9mcm9tOworICAgIFdpbmRSdWxlIG1f
d2luZFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhU
b1ZhbHVlVHlwZU5hbWUpIFwKQEAgLTI0NSwzICsyNzksNCBAQCBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0NTU19CQVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZUNpcmNsZSkKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlRWxsaXBzZSkKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUG9seWdvbikKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlUGF0aCkK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NCYXNpY1NoYXBlU2hh
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwODA1
MGNhZmI4NTg0MDk3ZmY5YWI4YjBmZWI4MzA3YWU3ZDA2NzkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNwcApAQCAtMCwwICsxLDE5MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q1NTU2hhcGVTZWdtZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8oQ1NT
U2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFy
Z2V0KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKE1vdmVUbywg
YWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENT
U1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0
eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCkKK3sKKyAgICByZXR1cm4gQ1NTU2hh
cGVTZWdtZW50VmFsdWU6OmNyZWF0ZShMaW5lVG8sIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdldCkp
OworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVU
b0hvcml6b250YWwoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8
Q1NTVmFsdWU+JiYgeCkKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0
ZShMaW5lVG9Ib3Jpem9udGFsLCBhZmZpbml0eSwgV1RGTW92ZSh4KSk7Cit9CisKK1JlZjxDU1NT
aGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwoQ1NTU2hh
cGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgeSkKK3sK
KyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShMaW5lVG9WZXJ0aWNhbCwg
YWZmaW5pdHksIFdURk1vdmUoeSkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFw
ZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpYyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5p
dHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBwMSwg
UmVmPENTU1ZhbHVlPiYmIHAyKQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6
Y3JlYXRlKEN1cnZlVG9DdWJpYywgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92ZShw
MSksIFdURk1vdmUocDIpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdt
ZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0
eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxKQor
eworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEN1cnZlVG9RdWFkcmF0
aWMsIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUocDEpKTsKK30KKworUmVmPENT
U1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWNTbW9vdGgo
Q1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYg
dGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcDIpCit7CisgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVu
dFZhbHVlOjpjcmVhdGUoQ3VydmVUb0N1YmljU21vb3RoLCBhZmZpbml0eSwgV1RGTW92ZSh0YXJn
ZXQpLCBXVEZNb3ZlKHAyKSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aChDU1NTaGFwZVNlZ21lbnQ6OkNvb3Jk
QWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpCit7CisgICAgcmV0dXJu
IENTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb1F1YWRyYXRpY1Ntb290aCwgYWZm
aW5pdHksIFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQXJjVG8oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFm
ZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcmFkaXVzLCBD
U1NWYWx1ZUlEIHN3ZWVwLCBDU1NWYWx1ZUlEIHNpemUsIFJlZjxDU1NWYWx1ZT4mJiBhbmdsZSkK
K3sKKyAgICBBU1NFUlQoc3dlZXAgPT0gQ1NTVmFsdWVDY3cgfHwgc3dlZXAgPT0gQ1NTVmFsdWVD
dyk7CisgICAgQVNTRVJUKHNpemUgPT0gQ1NTVmFsdWVTbWFsbCB8fCBzaXplID09IENTU1ZhbHVl
TGFyZ2UpOworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKEFyY1RvLCBh
ZmZpbml0eSwKKyAgICAgICAgV1RGTW92ZSh0YXJnZXQpLAorICAgICAgICBXVEZNb3ZlKHJhZGl1
cyksCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3dlZXApLAorICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHNpemUpLAorICAgICAgICBXVEZNb3ZlKGFuZ2xlKSk7
Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQ
YXRoKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKihuZXcgQ1NTU2hhcGVTZWdtZW50KENsb3Nl
UGF0aCkpKTsKK30KKworYm9vbCBDU1NTaGFwZVNlZ21lbnQ6OmVxdWFscyhjb25zdCBDU1NTaGFw
ZVNlZ21lbnQmIG90aGVyKSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gb3RoZXIudHlwZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV90eXBlID09IENsb3NlUGF0aCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NT
U2hhcGVTZWdtZW50VmFsdWUmPigqdGhpcykuZXF1YWxzKHN0YXRpY19jYXN0PGNvbnN0IENTU1No
YXBlU2VnbWVudFZhbHVlJj4ob3RoZXIpKTsKK30KKworU3RyaW5nIENTU1NoYXBlU2VnbWVudDo6
Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKG1fdHlwZSA9PSBDU1NTaGFwZVNlZ21l
bnQ6OkNsb3NlUGF0aCkKKyAgICAgICAgcmV0dXJuICJjbG9zZSJfczsKKworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21lbnRWYWx1ZSo+KHRoaXMpLT5jdXN0b21DU1NU
ZXh0KCk7Cit9CisKK2Jvb2wgQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyhjb25zdCBDU1NT
aGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdAoreworICAgIEFTU0VSVCh0eXBlKCkgPT0gb3RoZXIu
dHlwZSgpKTsKKyAgICBjb25zdCBhdXRvJiBvdGhlclZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q1NTU2hhcGVTZWdtZW50VmFsdWUmPihvdGhlcik7CisgICAgcmV0dXJuIG90aGVyVmFsdWUubV9h
ZmZpbml0eSA9PSBtX2FmZmluaXR5CisgICAgICAgICYmIG90aGVyVmFsdWUudGFyZ2V0KCkuZXF1
YWxzKHRhcmdldCgpKQorICAgICAgICAmJiBvdGhlclZhbHVlLm1fYXJndW1lbnRzLmdldCgpLmVx
dWFscyhtX2FyZ3VtZW50cy5nZXQoKSk7Cit9CisKK1N0cmluZyBDU1NTaGFwZVNlZ21lbnRWYWx1
ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0Cit7CisgICAgY29uc3QgYXV0byBjb21tYW5kID0gWyZd
KCkgeworICAgICAgICBzd2l0Y2ggKHR5cGUoKSkgeworICAgICAgICBjYXNlIE1vdmVUbzoKKyAg
ICAgICAgICAgIHJldHVybiAibW92ZSI7CisgICAgICAgIGNhc2UgTGluZVRvOgorICAgICAgICAg
ICAgcmV0dXJuICJsaW5lIjsKKyAgICAgICAgY2FzZSBMaW5lVG9Ib3Jpem9udGFsOgorICAgICAg
ICAgICAgcmV0dXJuICJobGluZSI7CisgICAgICAgIGNhc2UgTGluZVRvVmVydGljYWw6CisgICAg
ICAgICAgICByZXR1cm4gInZsaW5lIjsKKyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWM6CisgICAg
ICAgIGNhc2UgQ3VydmVUb1F1YWRyYXRpYzoKKyAgICAgICAgICAgIHJldHVybiAiY3VydmUiOwor
ICAgICAgICBjYXNlIEN1cnZlVG9DdWJpY1Ntb290aDoKKyAgICAgICAgY2FzZSBDdXJ2ZVRvUXVh
ZHJhdGljU21vb3RoOgorICAgICAgICAgICAgcmV0dXJuICJzbW9vdGgiOworICAgICAgICBjYXNl
IEFyY1RvOgorICAgICAgICAgICAgcmV0dXJuICJhcmMiOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gIiI7Cisg
ICAgICAgIH0KKworICAgIH07CisKKyAgICBjb25zdCBhdXRvIGNvbmp1bmN0aW9uID0gWyZdKCkg
eworICAgICAgICBzd2l0Y2ggKHR5cGUoKSkgeworICAgICAgICBjYXNlIE1vdmVUbzoKKyAgICAg
ICAgY2FzZSBMaW5lVG86CisgICAgICAgIGNhc2UgTGluZVRvSG9yaXpvbnRhbDoKKyAgICAgICAg
Y2FzZSBMaW5lVG9WZXJ0aWNhbDoKKyAgICAgICAgY2FzZSBDdXJ2ZVRvUXVhZHJhdGljU21vb3Ro
OgorICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICBjYXNlIEN1cnZlVG9DdWJpYzoKKyAg
ICAgICAgY2FzZSBDdXJ2ZVRvUXVhZHJhdGljOgorICAgICAgICBjYXNlIEN1cnZlVG9DdWJpY1Nt
b290aDoKKyAgICAgICAgICAgIHJldHVybiAiIHZpYSAiOworICAgICAgICBjYXNlIEFyY1RvOgor
ICAgICAgICAgICAgcmV0dXJuICIgb2YgIjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9
CisgICAgfTsKKworICAgIGF1dG8gYnlUbyA9IG1fYWZmaW5pdHkgPT0gQ1NTU2hhcGVTZWdtZW50
OjpDb29yZEFmZmluaXR5OjpBYnNvbHV0ZSA/ICIgdG8gIiA6ICIgYnkgIjsKKyAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoY29tbWFuZCgpLCBieVRvLCBtX3Rh
cmdldC0+Y3NzVGV4dCgpLCBjb25qdW5jdGlvbigpKTsKKyAgICBpZiAodHlwZSgpID09IEFyY1Rv
KSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3VtZW50KDApLmNzc1RleHQoKSk7CisgICAg
ICAgIGNvbnN0IGF1dG8mIHN3ZWVwID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGFyZ3Vt
ZW50KDEpKTsKKyAgICAgICAgY29uc3QgYXV0byYgc2l6ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPihhcmd1bWVudCgyKSk7CisgICAgICAgIGNvbnN0IGF1dG8mIGFuZ2xlID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGFyZ3VtZW50KDMpKTsKKworICAgICAgICBpZiAoc3dlZXAu
dmFsdWVJRCgpID09IENTU1ZhbHVlQ3cpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIGN3
Iik7CisKKyAgICAgICAgaWYgKHNpemUudmFsdWVJRCgpID09IENTU1ZhbHVlTGFyZ2UpCisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiIGxhcmdlIik7CisKKyAgICAgICAgaWYgKGFuZ2xlLmNv
bXB1dGVEZWdyZWVzKCkpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiIHJvdGF0ZSAiLCBh
bmdsZS5jc3NUZXh0KCkpOworICAgIH0gZWxzZQorICAgICAgICBidWlsZGVyLmFwcGVuZChtX2Fy
Z3VtZW50cy0+Y3NzVGV4dCgpKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwNzM2YTAz
MzZmMTVhMDQzMWFhNTUxOGExYWRjYjI1MTE4MTc4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuaApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNs
dWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3Rm
L1R5cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBDU1NTaGFwZVNlZ21lbnQgOiBwdWJsaWMgQ1NTVmFsdWUgeworcHVibGljOgorICAgIGVudW0g
Y2xhc3MgQ29vcmRBZmZpbml0eSB7CisgICAgICAgIEFic29sdXRlLCBSZWxhdGl2ZQorICAgIH07
CisKKyAgICBlbnVtIFNlZ21lbnRUeXBlIHsKKyAgICAgICAgTW92ZVRvLAorICAgICAgICBMaW5l
VG8sCisgICAgICAgIExpbmVUb0hvcml6b250YWwsCisgICAgICAgIExpbmVUb1ZlcnRpY2FsLAor
ICAgICAgICBDdXJ2ZVRvQ3ViaWMsCisgICAgICAgIEN1cnZlVG9RdWFkcmF0aWMsCisgICAgICAg
IEN1cnZlVG9DdWJpY1Ntb290aCwKKyAgICAgICAgQ3VydmVUb1F1YWRyYXRpY1Ntb290aCwKKyAg
ICAgICAgQXJjVG8sCisgICAgICAgIENsb3NlUGF0aAorICAgIH07CisKKyAgICBTZWdtZW50VHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICBib29sIGVxdWFscyhjb25z
dCBDU1NTaGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdDsKKyAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4
dCgpIGNvbnN0OworICAgIH5DU1NTaGFwZVNlZ21lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0
aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRlQ2xvc2VQYXRoKCk7CisgICAgc3RhdGljIFJl
ZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZU1vdmVUbyhDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFs
dWU+JiYgdGFyZ2V0KTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRlTGlu
ZVRvKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpOworICAgIHN0YXRpYyBS
ZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKENvb3JkQWZmaW5pdHks
IFJlZjxDU1NWYWx1ZT4mJiB4KTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3Jl
YXRlTGluZVRvVmVydGljYWwoQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHkpOworICAg
IHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVDdXJ2ZVRvQ3ViaWMoQ29vcmRBZmZp
bml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxLCBSZWY8Q1NT
VmFsdWU+JiYgcDIpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVDdXJ2
ZVRvUXVhZHJhdGljKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxD
U1NWYWx1ZT4mJiBwMSk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1
cnZlVG9DdWJpY1Ntb290aChDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBS
ZWY8Q1NTVmFsdWU+JiYgcDIpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVh
dGVDdXJ2ZVRvUXVhZHJhdGljU21vb3RoKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0
YXJnZXQpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVBcmNUbyhDb29y
ZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcmFkaXVz
LCBDU1NWYWx1ZUlEIHN3ZWVwLCBDU1NWYWx1ZUlEIHNpemUsIFJlZjxDU1NWYWx1ZT4mJiBhbmds
ZSk7CisKK3Byb3RlY3RlZDoKKyAgICBDU1NTaGFwZVNlZ21lbnQoU2VnbWVudFR5cGUgdHlwZSkK
KyAgICAgICAgOiBDU1NWYWx1ZShTaGFwZVNlZ21lbnRDbGFzcykKKyAgICAgICAgLCBtX3R5cGUo
dHlwZSkgeyB9CisKK3ByaXZhdGU6CisgICAgU2VnbWVudFR5cGUgbV90eXBlOworfTsKKworY2xh
c3MgQ1NTU2hhcGVTZWdtZW50VmFsdWUgOiBwdWJsaWMgQ1NTU2hhcGVTZWdtZW50IHsKK3B1Ymxp
YzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgLi4uQXJncz4KKyAgICBzdGF0aWMgUmVmPENTU1No
YXBlU2VnbWVudD4gY3JlYXRlKENTU1NoYXBlU2VnbWVudDo6U2VnbWVudFR5cGUgdHlwZSwKKyAg
ICAgICAgQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFs
dWU+JiYgdGFyZ2V0LCBBcmdzLi4uIGFyZ3VtZW50cykKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU1NoYXBlU2VnbWVudFZhbHVlKHR5cGUsIGFmZmluaXR5LCBXVEZNb3Zl
KHRhcmdldCksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmd1bWVudHMpLi4uKSk7CisgICAgfQorCisg
ICAgY29uc3QgQ1NTVmFsdWUmIHRhcmdldCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV90YXJnZXQuZ2V0KCk7CisgICAgfQorCisgICAgY29uc3QgQ1NTVmFsdWUmIGFyZ3VtZW50KHNp
emVfdCBpKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRzLT5sZW5ndGgo
KSA+IGkpOworICAgICAgICByZXR1cm4gKihtX2FyZ3VtZW50cy0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjayhpKSk7CisgICAgfQorCisgICAgQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFm
ZmluaXR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FmZmluaXR5OworICAgIH0K
KworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0Owor
ICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9pZCBh
cHBlbmRBcmdzKCkgeyB9CisgICAgdm9pZCBhcHBlbmRBcmdzKFJlZjxDU1NWYWx1ZT4mJiB2KSB7
IG1fYXJndW1lbnRzLT5hcHBlbmQoV1RGTW92ZSh2KSk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIC4uLkFyZ3M+CisgICAgdm9pZCBhcHBlbmRBcmdzKFJlZjxDU1NWYWx1ZT4mJiB2LCBBcmdz
IC4uLmFyZ3MpCisgICAgeworICAgICAgICBhcHBlbmRBcmdzKFdURk1vdmUodikpOworICAgICAg
ICBhcHBlbmRBcmdzKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgLi4uQXJncz4KKyAgICBDU1NTaGFwZVNlZ21lbnRWYWx1ZShDU1NT
aGFwZVNlZ21lbnQ6OlNlZ21lbnRUeXBlIHR5cGUsIENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZp
bml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgQXJncyAuLi5hcmdzKQorICAg
ICAgICA6IENTU1NoYXBlU2VnbWVudCh0eXBlKQorICAgICAgICAsIG1fYWZmaW5pdHkoYWZmaW5p
dHkpCisgICAgICAgICwgbV90YXJnZXQoV1RGTW92ZSh0YXJnZXQpKQorICAgICAgICAsIG1fYXJn
dW1lbnRzKENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKSkKKyAgICB7CisgICAg
ICAgIGFwcGVuZEFyZ3Moc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAg
ICBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgbV9hZmZpbml0eTsKKyAgICBSZWY8Q1NT
VmFsdWU+IG1fdGFyZ2V0OworICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IG1fYXJndW1lbnRzOworfTsK
KworfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfVkFMVUUoQ1NTU2hhcGVTZWdtZW50LCBp
c1NoYXBlU2VnbWVudFZhbHVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCA1ZTIxODIy
NjNmY2VhNWNhZmYzNjNlNGZmNDQwMzk0MzgxMWY2ZGFjLi42MzA5ZTNmZjczZGNjYjY2NzMxZjIy
NGI2NDlkNzg5MmRhMmVkMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTYwLDYgKzYw
LDcgQEAKICNpbmNsdWRlICJDU1NSYXlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1
ZS5oIgogI2luY2x1ZGUgIkNTU1NoYWRvd1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTU2hhcGVTZWdt
ZW50LmgiCiAjaW5jbHVkZSAiQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNT
U1VuaWNvZGVSYW5nZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCkBAIC0yMzAs
NiArMjMxLDggQEAgYm9vbCBDU1NWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1ZhbHVlJiBvdGhlcikg
Y29uc3QKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0ZvbnRTdHlsZVZh
bHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNlIEZvbnRTdHlsZVJhbmdlQ2xhc3M6CiAg
ICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NGb250U3R5bGVSYW5nZVZhbHVl
PigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFNoYXBlU2VnbWVudENsYXNzOgorICAgICAg
ICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTU2hhcGVTZWdtZW50PigqdGhpcywgb3Ro
ZXIpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzksNiArMzQyLDggQEAgU3RyaW5nIENT
U1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0ZvbnRT
dHlsZVZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIGNhc2UgRm9udFN0eWxlUmFu
Z2VDbGFzczoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0ZvbnRTdHlsZVJhbmdlVmFsdWU+
KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CisgICAgY2FzZSBTaGFwZVNlZ21lbnRDbGFzczoKKyAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1NoYXBlU2VnbWVudD4oKnRoaXMpLmN1c3RvbUNTU1Rl
eHQoKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ5Nyw2ICs1MDIs
OSBAQCB2b2lkIENTU1ZhbHVlOjpkZXN0cm95KCkKICAgICBjYXNlIEZvbnRTdHlsZVJhbmdlQ2xh
c3M6CiAgICAgICAgIGRlbGV0ZSBkb3duY2FzdDxDU1NGb250U3R5bGVSYW5nZVZhbHVlPih0aGlz
KTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2hhcGVTZWdtZW50Q2xhc3M6CisgICAgICAg
IGRlbGV0ZSBkb3duY2FzdDxDU1NTaGFwZVNlZ21lbnQ+KHRoaXMpOworICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApp
bmRleCBkYWRlNThkYTIwNjhiN2VlY2NkYWEzMzE5MThjNDRkM2E3NmUwNWM4Li4zZjc1YWYzMGFi
OTAyOGFlYjJkMTUyZjE0NWM5ODkzNTdiNTE5ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAt
MTM0LDYgKzEzNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR3JpZEF1dG9SZXBlYXRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEdyaWRBdXRvUmVwZWF0Q2xhc3M7IH0KICAg
ICBib29sIGlzR3JpZEludGVnZXJSZXBlYXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NU
eXBlID09IEdyaWRJbnRlZ2VyUmVwZWF0Q2xhc3M7IH0KICAgICBib29sIGlzR3JpZFRlbXBsYXRl
QXJlYXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEdyaWRUZW1wbGF0ZUFy
ZWFzQ2xhc3M7IH0KKyAgICBib29sIGlzU2hhcGVTZWdtZW50VmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2NsYXNzVHlwZSA9PSBTaGFwZVNlZ21lbnRDbGFzczsgfQogICAgIGJvb2wgaXNHcmlkTGlu
ZU5hbWVzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBHcmlkTGluZU5hbWVz
Q2xhc3M7IH0KICAgICBib29sIGlzU3ViZ3JpZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFz
c1R5cGUgPT0gU3ViZ3JpZENsYXNzOyB9CiAgICAgYm9vbCBpc1VuaWNvZGVSYW5nZVZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gVW5pY29kZVJhbmdlQ2xhc3M7IH0KQEAgLTIw
OSw2ICsyMTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIENhbGN1bGF0aW9uQ2xhc3MsCiAgICAg
ICAgIEdyaWRUZW1wbGF0ZUFyZWFzQ2xhc3MsCiAgICAgICAgIFZhbHVlUGFpckNsYXNzLAorICAg
ICAgICBTaGFwZVNlZ21lbnRDbGFzcywKIAogICAgICAgICBDU1NDb250ZW50RGlzdHJpYnV0aW9u
Q2xhc3MsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggMmRkNGMw
YmFjM2M5YTNhNGQ2M2JhZWRjMjk5MTA4MDJiNTIyMDJmOS4uMWI2NTRlYjIxOWQ0ZTFjOWIyMjhm
ZTE3MTU4NTM5MzgwNWM1YjEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlS2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMu
aW4KQEAgLTEyODYsNiArMTI4NiwyNyBAQCByZWN0CiAKIC8vIHNoYXBlcwogcG9seWdvbgorc2hh
cGUKKworLy8gc2hhcGUoKQorLy8gZnJvbQorLy8gdG8KKy8vIG1vdmUKK2xpbmUKK2hsaW5lCit2
bGluZQorY3VydmUKKy8vIHNtb290aAorYXJjCitjbG9zZQordmlhCitvZgorYnkKK2N3CitjY3cK
Ky8vIGxhcmdlCisvLyBzbWFsbAorLy8gcm90YXRlCiAKIC8vIEBmb250LWZhY2Ugc3JjCiBmb3Jt
YXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODRhNTJmZmQ4NjBlZDczZDRlNzNhZmQxNmQzZWJiYzM1NGMyOGU1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMuY3BwCkBA
IC0wLDAgKzEsMjI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE5vYW0gUm9zZW50aGFs
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIgorCisjaW5jbHVkZSAiQmFzaWNTaGFwZVNlZ21lbnQu
aCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NT
U2hhcGVTZWdtZW50LmgiCisjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NWYWx1
ZVBvb2wuaCIKKyNpbmNsdWRlICJQYWlyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY29udmVydFBvaW50VG9DU1NWYWx1ZShjb25zdCBM
ZW5ndGhQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICBhdXRv
JiBwb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKKyAgICByZXR1cm4gcG9vbC5jcmVh
dGVWYWx1ZShQYWlyOjpjcmVhdGUoCisgICAgICAgIHBvb2wuY3JlYXRlVmFsdWUocG9pbnQueCgp
LCBzdHlsZSksCisgICAgICAgIHBvb2wuY3JlYXRlVmFsdWUocG9pbnQueSgpLCBzdHlsZSksCisg
ICAgICAgIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkRvTm90Q29hbGVzY2UpKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWU+IGF1dG8gdG9DU1NBcmdzKGNvbnN0IFZhbHVlJiwg
Y29uc3QgUmVuZGVyU3R5bGUmKTsKKwordGVtcGxhdGU8PgorYXV0byB0b0NTU0FyZ3MoY29uc3Qg
TGVuZ3RoJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBz
dGQ6Om1ha2VfdHVwbGU8UmVmPENTU1ZhbHVlPj4oQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsKK30KKwordGVtcGxhdGU8PgorYXV0byB0b0NTU0Fy
Z3M8TGVuZ3RoUG9pbnQ+KGNvbnN0IExlbmd0aFBvaW50JiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoY29udmVydFBvaW50VG9D
U1NWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsKK30KKwordGVtcGxhdGU8PgorYXV0byB0b0NTU0FyZ3Mo
Y29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKAorICAgICAgICBjb252ZXJ0
UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnRhcmdldFBvaW50LCBzdHlsZSksCisgICAgICAgIGNvbnZl
cnRQb2ludFRvQ1NTVmFsdWUodmFsdWUucG9pbnQxLCBzdHlsZSksCisgICAgICAgIGNvbnZlcnRQ
b2ludFRvQ1NTVmFsdWUodmFsdWUucG9pbnQyLCBzdHlsZSkpOworfQorCit0ZW1wbGF0ZTw+Cith
dXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYgdmFsdWUs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxl
KAorICAgICAgICBjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnRhcmdldFBvaW50LCBzdHls
ZSksCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUucG9pbnQxLCBzdHlsZSkp
OworfQorCit0ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvQ3ViaWNTbW9v
dGhTaGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAg
IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUo
dmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1
ZSh2YWx1ZS5wb2ludDIsIHN0eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NBcmdz
KGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkKK3sKKyAgICBhdXRvJiBwb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKKyAgICBh
dXRvIHJhZGl1cyA9IFBhaXI6OmNyZWF0ZSgKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZSh2YWx1
ZS5yYWRpdXMud2lkdGgsIHN0eWxlKSwKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZSh2YWx1ZS5y
YWRpdXMuaGVpZ2h0LCBzdHlsZSksCisgICAgICAgIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rp
bmc6OkNvYWxlc2NlKTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNv
bnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAg
cG9vbC5jcmVhdGVWYWx1ZShXVEZNb3ZlKHJhZGl1cykpLAorICAgICAgICB2YWx1ZS5zd2VlcCA/
IENTU1ZhbHVlQ3cgOiBDU1NWYWx1ZUNjdywKKyAgICAgICAgdmFsdWUubGFyZ2VBcmMgPyBDU1NW
YWx1ZUxhcmdlIDogQ1NTVmFsdWVTbWFsbCwKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZSh2YWx1
ZS5hbmdsZSwgQ1NTVW5pdFR5cGU6OkNTU19ERUcpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVu
dD4gdG9DU1NTaGFwZVNlZ21lbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCYXNp
Y1NoYXBlU2VnbWVudCYgc2VnbWVudCkKK3sKKyAgICBhdXRvIHRvQ1NTID0gWyZdKENTU1NoYXBl
U2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgYXV0byBjcmVhdGUsIGNvbnN0IGF1dG8m
IGFzKSB7CisgICAgICAgIHJldHVybiBzdGQ6OmFwcGx5KGNyZWF0ZSwgc3RkOjp0dXBsZV9jYXQo
c3RkOjptYWtlX3R1cGxlKGFmZmluaXR5KSwgdG9DU1NBcmdzKChzZWdtZW50LiphcykoKSwgc3R5
bGUpKSk7CisgICAgfTsKKworI2RlZmluZSBDUkVBVEVfQ1NTX1NIQVBFX1NFR01FTlRfRlJPTV9C
QVNJQ19TSEFQRV9TRUdNRU5UKFR5cGUpIFwKKyAgICBjYXNlIFNoYXBlU2VnbWVudCMjVHlwZTo6
QWJzU2VnVHlwZTogXAorICAgICAgICByZXR1cm4gdG9DU1MoQ1NTU2hhcGVTZWdtZW50OjpDb29y
ZEFmZmluaXR5OjpBYnNvbHV0ZSwgQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGUjI1R5cGUsICZCYXNp
Y1NoYXBlU2VnbWVudDo6YXMjI1R5cGUpOyBcCisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6
OlJlbFNlZ1R5cGU6IFwKKyAgICAgICAgcmV0dXJuIHRvQ1NTKENTU1NoYXBlU2VnbWVudDo6Q29v
cmRBZmZpbml0eTo6UmVsYXRpdmUsIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlIyNUeXBlLCAmQmFz
aWNTaGFwZVNlZ21lbnQ6OmFzIyNUeXBlKTsgXAorCisgICAgc3dpdGNoIChzZWdtZW50LnR5cGUo
KSkgeworICAgIGNhc2UgUGF0aFNlZ0Nsb3NlUGF0aDoKKyAgICAgICAgcmV0dXJuIENTU1NoYXBl
U2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisKKyAgICAgICAgRk9SX0VBQ0hfU0hBUEVfU0VH
TUVOVF9UWVBFX1dJVEhfVkFMVUUoQ1JFQVRFX0NTU19TSEFQRV9TRUdNRU5UX0ZST01fQkFTSUNf
U0hBUEVfU0VHTUVOVCkKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsK
KyAgICB9Cit9Cit0ZW1wbGF0ZSA8Y2xhc3MgRGVmaW5pdGlvbj4KK1NWR1BhdGhTZWdUeXBlIHNl
Z21lbnRUeXBlKGNvbnN0IENTU1NoYXBlU2VnbWVudFZhbHVlJiBzZWdtZW50V2l0aFZhbHVlKQor
eworICAgIHJldHVybiBzZWdtZW50V2l0aFZhbHVlLmFmZmluaXR5KCkgPT0gQ1NTU2hhcGVTZWdt
ZW50OjpDb29yZEFmZmluaXR5OjpBYnNvbHV0ZSA/IERlZmluaXRpb246OkFic1NlZ1R5cGUgOiBE
ZWZpbml0aW9uOjpSZWxTZWdUeXBlOworfQorCitSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGZyb21D
U1NTaGFwZVNlZ21lbnQoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lv
bkRhdGEsIGNvbnN0IENTU1NoYXBlU2VnbWVudCYgY3NzU2VnbWVudCkKK3sKKyAgICBhdXRvIHRv
TGVuZ3RoID0gWyZdKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkgLT4gTGVuZ3RoIHsKKyAgICAgICAg
cmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuY29udmVydFRvTGVuZ3Ro
PEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRD
b252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKKyAgICB9
OworCisgICAgYXV0byB0b0xlbmd0aFBvaW50ID0gWyZdKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkg
LT4gTGVuZ3RoUG9pbnQgeworICAgICAgICBhdXRvIHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgpOworICAgICAgICBBU1NFUlQocGFpcik7CisgICAg
ICAgIHJldHVybiBMZW5ndGhQb2ludCB7IHRvTGVuZ3RoKCpwYWlyLT5maXJzdCgpKSwgdG9MZW5n
dGgoKnBhaXItPnNlY29uZCgpKSB9OworICAgIH07CisKKyAgICBhdXRvIHRvTGVuZ3RoU2l6ZSA9
IFsmXShjb25zdCBDU1NWYWx1ZSYgdmFsdWUpIC0+IExlbmd0aFNpemUgeworICAgICAgICBhdXRv
IHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgpOwor
ICAgICAgICBBU1NFUlQocGFpcik7CisgICAgICAgIHJldHVybiBMZW5ndGhTaXplIHsgdG9MZW5n
dGgoKnBhaXItPmZpcnN0KCkpLCB0b0xlbmd0aCgqcGFpci0+c2Vjb25kKCkpIH07CisgICAgfTsK
KworICAgIGF1dG8gdHlwZSA9IGNzc1NlZ21lbnQudHlwZSgpOworCisgICAgaWYgKHR5cGUgPT0g
Q1NTU2hhcGVTZWdtZW50OjpDbG9zZVBhdGgpCisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2Vn
bWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisKKyAgICBjb25zdCBhdXRvJiBzZWdtZW50V2l0aFZh
bHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUmPihjc3NTZWdtZW50
KTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpNb3Zl
VG86IHsKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8oCisg
ICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRNb3ZlVG8+KHNlZ21lbnRXaXRoVmFs
dWUpLAorICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgp
KSk7CisgICAgfQorCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkxpbmVUbzoKKyAgICAgICAg
cmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG8oCisgICAgICAgICAgICBzZWdt
ZW50VHlwZTxTaGFwZVNlZ21lbnRMaW5lVG8+KHNlZ21lbnRXaXRoVmFsdWUpLAorICAgICAgICAg
ICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKSk7CisKKyAgICBjYXNl
IENTU1NoYXBlU2VnbWVudDo6TGluZVRvSG9yaXpvbnRhbDoKKyAgICAgICAgcmV0dXJuIEJhc2lj
U2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKAorICAgICAgICAgICAgc2VnbWVu
dFR5cGU8U2hhcGVTZWdtZW50TGluZVRvSG9yaXpvbnRhbD4oc2VnbWVudFdpdGhWYWx1ZSksCisg
ICAgICAgICAgICB0b0xlbmd0aChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKSk7CisKKyAgICBj
YXNlIENTU1NoYXBlU2VnbWVudDo6TGluZVRvVmVydGljYWw6CisgICAgICAgIHJldHVybiBCYXNp
Y1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwoCisgICAgICAgICAgICBzZWdtZW50
VHlwZTxTaGFwZVNlZ21lbnRMaW5lVG9WZXJ0aWNhbD4oc2VnbWVudFdpdGhWYWx1ZSksCisgICAg
ICAgICAgICB0b0xlbmd0aChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKSk7CisKKyAgICBjYXNl
IENTU1NoYXBlU2VnbWVudDo6Q3VydmVUb0N1YmljOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFw
ZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpYygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNo
YXBlU2VnbWVudEN1cnZlVG9DdWJpYz4oc2VnbWVudFdpdGhWYWx1ZSksIHsKKyAgICAgICAgICAg
ICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMCkpLAorICAgICAg
ICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgxKSksCisg
ICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQor
ICAgICAgICAgICAgfSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q3VydmVUb1F1YWRy
YXRpYzoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVh
ZHJhdGljKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50Q3VydmVUb1F1YWRy
YXRpYz4oc2VnbWVudFdpdGhWYWx1ZSksIHsKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50
KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMCkpLAorICAgICAgICAgICAgICAgIHRvTGVuZ3Ro
UG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAgICAgIH0pOworCisgICAg
Y2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkN1cnZlVG9DdWJpY1Ntb290aDoKKyAgICAgICAgcmV0dXJu
IEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWNTbW9vdGgoCisgICAgICAgICAg
ICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWNTbW9vdGg+KHNlZ21lbnRXaXRo
VmFsdWUpLCB7CisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVl
LmFyZ3VtZW50KDApKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRo
VmFsdWUudGFyZ2V0KCkpCisgICAgICAgICAgICB9KTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdt
ZW50OjpDdXJ2ZVRvUXVhZHJhdGljU21vb3RoOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNl
Z21lbnQ6OmNyZWF0ZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoCisgICAgICAgICAgICBzZWdtZW50
VHlwZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljU21vb3RoPihzZWdtZW50V2l0aFZhbHVl
KSwKKyAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkp
OworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkFyY1RvOgorICAgICAgICByZXR1cm4gQmFz
aWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hh
cGVTZWdtZW50QXJjVG8+KHNlZ21lbnRXaXRoVmFsdWUpLCB7CisgICAgICAgICAgICAgICAgLnJh
ZGl1cyA9IHRvTGVuZ3RoU2l6ZShzZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50KDApKSwKKyAgICAg
ICAgICAgICAgICAuc3dlZXAgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oc2VnbWVudFdp
dGhWYWx1ZS5hcmd1bWVudCgxKSkudmFsdWVJRCgpID09IENTU1ZhbHVlQ3csCisgICAgICAgICAg
ICAgICAgLmxhcmdlQXJjID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHNlZ21lbnRXaXRo
VmFsdWUuYXJndW1lbnQoMikpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxhcmdlLAorICAgICAgICAg
ICAgICAgIC5hbmdsZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihzZWdtZW50V2l0aFZh
bHVlLmFyZ3VtZW50KDMpKS5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfREVHKSwKKyAgICAg
ICAgICAgICAgICAudGFyZ2V0UG9pbnQgPSB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUu
dGFyZ2V0KCkpCisgICAgICAgICAgICB9KTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpD
bG9zZVBhdGg6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQ
YXRoKCk7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEJh
c2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2NDBkNzFlMjlhNTA4
MzgyNTNlMGMyZWE3MDk2MTE0NDkxZDYyZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisg
KiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYv
UmVmLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQmFzaWNTaGFwZVNlZ21lbnQ7
CitjbGFzcyBDU1NTaGFwZVNlZ21lbnQ7CitjbGFzcyBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
OworY2xhc3MgUmVuZGVyU3R5bGU7CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IHRvQ1NTU2hhcGVT
ZWdtZW50KGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmKTsKK1Jl
ZjxCYXNpY1NoYXBlU2VnbWVudD4gZnJvbUNTU1NoYXBlU2VnbWVudChjb25zdCBDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhJiwgY29uc3QgQ1NTU2hhcGVTZWdtZW50Jik7CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggZDFiNWQz
NDU1NTkxMGJkODMzZWFlOWZmYmM5NTdiYzFjZDMyNDkwYi4uOGVhNGZhODZlZjRiNGViYWM2Zjdk
ZjFmMWQ3NDNiZTQ5ZWZhYWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJDU1NGb250
RmFjZVNyY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU0ZvbnRQYWxldHRlVmFsdWVzT3ZlcnJpZGVDb2xvcnNWYWx1ZS5oIgorI2luY2x1ZGUg
IkNTU1NoYXBlU2VnbWVudC5oIgogI2lmIEVOQUJMRShWQVJJQVRJT05fRk9OVFMpCiAjaW5jbHVk
ZSAiQ1NTRm9udFZhcmlhdGlvblZhbHVlLmgiCiAjZW5kaWYKQEAgLTI2NTIsNiArMjY1MywxOTYg
QEAgc3RhdGljIFJlZlB0cjxDU1NCYXNpY1NoYXBlUGF0aD4gY29uc3VtZUJhc2ljU2hhcGVQYXRo
KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MKICAgICByZXR1cm4gc2hhcGU7CiB9CiAKK3N0YXRp
YyBSZWZQdHI8Q1NTU2hhcGVTZWdtZW50PiBjb25zdW1lU2hhcGVTZWdtZW50KENTU1BhcnNlclRv
a2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAg
YXV0byBjb21tYW5kID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgIGlm
IChjb21tYW5kLmlkKCkgPT0gQ1NTVmFsdWVDbG9zZSkKKyAgICAgICAgcmV0dXJuIENTU1NoYXBl
U2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisKKyAgICBpZiAoIWlkZW50TWF0Y2hlczxDU1NW
YWx1ZVRvLCBDU1NWYWx1ZUJ5PihhcmdzLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBhdXRvIGFmZmluaXR5ID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVUbyA/IENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0
eTo6QWJzb2x1dGUgOiBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OlJlbGF0aXZlOwor
ICAgIGF1dG8gY29uc3VtZU5leHRMZW5ndGhPclBlcmNlbnQgPSBbJl0oKSB7CisgICAgICAgIHJl
dHVybiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5n
ZTo6QWxsKTsKKyAgICB9OworCisgICAgaWYgKGNvbW1hbmQuaWQoKSA9PSBDU1NWYWx1ZUhsaW5l
IHx8IGNvbW1hbmQuaWQoKSA9PSBDU1NWYWx1ZVZsaW5lKSB7CisgICAgICAgIGF1dG8gdmFsdWUg
PSBjb25zdW1lTmV4dExlbmd0aE9yUGVyY2VudCgpOworICAgICAgICBpZiAoIXZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIGNvbW1hbmQuaWQoKSA9
PSBDU1NWYWx1ZUhsaW5lCisgICAgICAgICAgICA/IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGlu
ZVRvSG9yaXpvbnRhbChhZmZpbml0eSwgdmFsdWUucmVsZWFzZU5vbk51bGwoKSkKKyAgICAgICAg
ICAgIDogQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9WZXJ0aWNhbChhZmZpbml0eSwgdmFs
dWUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorCisgICAgYXV0byBjb25zdW1lTmV4dENvb3Jk
aW5hdGVzID0gWyZdICgpIC0+IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geworICAgICAgICBh
dXRvIHggPSBjb25zdW1lTmV4dExlbmd0aE9yUGVyY2VudCgpOworICAgICAgICBpZiAoIXgpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvIHkgPSBjb25zdW1lTmV4
dExlbmd0aE9yUGVyY2VudCgpOworICAgICAgICBpZiAoIXkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICByZXR1cm4gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHgucmVs
ZWFzZU5vbk51bGwoKSwgeS5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVu
Y29kaW5nOjpEb05vdENvYWxlc2NlKTsKKyAgICB9OworCisgICAgYXV0byBhdEVuZE9mU2VnbWVu
dCA9IFsmXSAoKSB7CisgICAgICAgIHJldHVybiBhcmdzLmF0RW5kKCkgfHwgYXJncy5wZWVrKCku
dHlwZSgpID09IENvbW1hVG9rZW47CisgICAgfTsKKworICAgIGF1dG8gdGFyZ2V0UG9pbnQgPSBj
b25zdW1lTmV4dENvb3JkaW5hdGVzKCk7CisgICAgaWYgKCF0YXJnZXRQb2ludCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBzd2l0Y2ggKGNvbW1hbmQuaWQoKSkgeworICAgIGNhc2Ug
Q1NTVmFsdWVNb3ZlOgorICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVNb3Zl
VG8oYWZmaW5pdHksIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCkpOworCisgICAgY2FzZSBD
U1NWYWx1ZUxpbmU6CisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVU
byhhZmZpbml0eSwgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICBjYXNlIENT
U1ZhbHVlQ3VydmU6IHsKKyAgICAgICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgIT0gQ1NTVmFsdWVW
aWEpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhcmdzLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGF1dG8gdmlhUG9pbnQxID0gY29uc3VtZU5l
eHRDb29yZGluYXRlcygpOworICAgICAgICBpZiAoIXZpYVBvaW50MSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgICAgIGlmIChhdEVuZE9mU2VnbWVudCgpKQorICAgICAgICAg
ICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpYyhhZmZpbml0
eSwgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSwgdmlhUG9pbnQxLnJlbGVhc2VOb25OdWxs
KCkpOworCisgICAgICAgIGF1dG8gdmlhUG9pbnQyID0gY29uc3VtZU5leHRDb29yZGluYXRlcygp
OworICAgICAgICBpZiAoIXZpYVBvaW50MikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpYyhhZmZp
bml0eSwgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCksIHZpYVBvaW50MS5yZWxlYXNlTm9u
TnVsbCgpLCB2aWFQb2ludDIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorCisgICAgY2FzZSBD
U1NWYWx1ZVNtb290aDogeworICAgICAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSAhPSBDU1NWYWx1
ZVZpYSkKKyAgICAgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9R
dWFkcmF0aWNTbW9vdGgoYWZmaW5pdHksICB0YXJnZXRQb2ludC5yZWxlYXNlTm9uTnVsbCgpKTsK
KworICAgICAgICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGF1
dG8gdmlhUG9pbnQgPSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7CisgICAgICAgIGlmICghdmlh
UG9pbnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gQ1NT
U2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWNTbW9vdGgoYWZmaW5pdHksICB0YXJnZXRQ
b2ludC5yZWxlYXNlTm9uTnVsbCgpLCB2aWFQb2ludC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9
CisKKyAgICBjYXNlIENTU1ZhbHVlQXJjOiB7CisgICAgICAgIGlmIChhcmdzLnBlZWsoKS5pZCgp
ICE9IENTU1ZhbHVlT2YpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBh
cmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gcnggPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9k
ZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOworICAgICAgICBpZiAoIXJ4KQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBy
eTsKKyAgICAgICAgaWYgKGFyZ3MucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKQorICAgICAg
ICAgICAgcnkgPSByeDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByeSA9IGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2
ZSk7CisgICAgICAgICAgICBpZiAoIXJ5KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICB9CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBzd2VlcDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUlEPiBzaXplOworICAgICAgICBSZWZQdHI8
Q1NTVmFsdWU+IGFuZ2xlOworCisgICAgICAgIHdoaWxlICghYXRFbmRPZlNlZ21lbnQoKSkgewor
ICAgICAgICAgICAgYXV0byBuZXh0SWRlbnQgPSBhcmdzLnBlZWsoKS5pZCgpOworICAgICAgICAg
ICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZVJvdGF0ZT4obmV4dElkZW50KSAmJiAhYW5nbGUp
IHsKKyAgICAgICAgICAgICAgICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQo
KTsKKyAgICAgICAgICAgICAgICBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBjb250ZXh0Lm1v
ZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6OkZvcmJpZCk7Cisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChpZGVudE1hdGNoZXM8Q1NTVmFsdWVDdywgQ1NTVmFsdWVDY3c+KG5leHRJZGVudCkgJiYgIXN3
ZWVwLmhhc192YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgc3dlZXAgPSBhcmdzLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZUxhcmdl
LCBDU1NWYWx1ZVNtYWxsPihuZXh0SWRlbnQpICYmICFzaXplLmhhc192YWx1ZSgpKSB7CisgICAg
ICAgICAgICAgICAgc2l6ZSA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgp
OworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghYW5nbGUpCisgICAg
ICAgICAgICBhbmdsZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMCwgQ1NTVW5pdFR5cGU6
OkNTU19ERUcpOworCisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1Rv
KAorICAgICAgICAgICAgYWZmaW5pdHksCisgICAgICAgICAgICB0YXJnZXRQb2ludC5yZWxlYXNl
Tm9uTnVsbCgpLAorICAgICAgICAgICAgY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHJ4LnJlbGVh
c2VOb25OdWxsKCksIHJ5LnJlbGVhc2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5j
b2Rpbmc6OkNvYWxlc2NlKSwKKyAgICAgICAgICAgIHN3ZWVwLnZhbHVlX29yKENTU1ZhbHVlQ2N3
KSwKKyAgICAgICAgICAgIHNpemUudmFsdWVfb3IoQ1NTVmFsdWVTbWFsbCksCisgICAgICAgICAg
ICBhbmdsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitzdGF0aWMgUmVmUHRyPENTU0Jhc2ljU2hhcGVT
aGFwZT4gY29uc3VtZUJhc2ljU2hhcGVTaGFwZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIFdpbmRSdWxlIHdpbmRSdWxl
ID0gV2luZFJ1bGU6Ok5vblplcm87CisKKyAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlRXZl
bm9kZCwgQ1NTVmFsdWVOb256ZXJvPihhcmdzLnBlZWsoKS5pZCgpKSkKKyAgICAgICAgd2luZFJ1
bGUgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSA9PSBDU1NWYWx1ZUV2
ZW5vZGQgPyBXaW5kUnVsZTo6RXZlbk9kZCA6IFdpbmRSdWxlOjpOb25aZXJvOworCisgICAgaWYg
KGFyZ3MucGVlaygpLmlkKCkgIT0gQ1NTVmFsdWVGcm9tKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKworICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gaW5pdGlhbFggPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFy
Z3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKKyAgICBpZiAoIWluaXRpYWxYKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
aW5pdGlhbFkgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFs
dWVSYW5nZTo6QWxsKTsKKyAgICBpZiAoIWluaXRpYWxZKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHNlZ21lbnRzID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworCisgICAgZm9yICg7OykgeworICAgICAgICBhdXRv
IHNlZ21lbnQgPSBjb25zdW1lU2hhcGVTZWdtZW50KGFyZ3MsIGNvbnRleHQpOworICAgICAgICBp
ZiAoIXNlZ21lbnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBzZWdt
ZW50cy0+YXBwZW5kKHNlZ21lbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGlmIChhcmdz
LmF0RW5kKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoIWNvbnN1bWVDb21t
YUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICBhdXRvIHNoYXBlID0gQ1NTQmFzaWNTaGFwZVNoYXBlOjpjcmVhdGUoCisg
ICAgICAgIGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcigKKyAgICAgICAgICAgIGluaXRpYWxYLnJl
bGVhc2VOb25OdWxsKCksCisgICAgICAgICAgICBpbml0aWFsWS5yZWxlYXNlTm9uTnVsbCgpLAor
ICAgICAgICAgICAgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSks
CisgICAgICAgIFdURk1vdmUoc2VnbWVudHMpKTsKKworICAgIHNoYXBlLT5zZXRXaW5kUnVsZSh3
aW5kUnVsZSk7CisgICAgcmV0dXJuIHNoYXBlOworfQorCiBzdGF0aWMgdm9pZCBjb21wbGV0ZTRT
aWRlcyhSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNpZGVbNF0pCiB7CiAgICAgaWYgKHNpZGVb
M10pCkBAIC0yNzU3LDYgKzI5NDgsOCBAQCBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBjb25zdW1lQmFzaWNTaGFwZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgYwogICAgICAg
ICBzaGFwZSA9IGNvbnN1bWVCYXNpY1NoYXBlSW5zZXQoYXJncywgY29udGV4dCk7CiAgICAgZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVQYXRoKQogICAgICAgICBzaGFwZSA9IGNvbnN1bWVCYXNpY1No
YXBlUGF0aChhcmdzKTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVNoYXBlKQorICAgICAg
ICBzaGFwZSA9IGNvbnN1bWVCYXNpY1NoYXBlU2hhcGUoYXJncywgY29udGV4dCk7CiAgICAgaWYg
KCFzaGFwZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmFuZ2UgPSByYW5nZUNvcHk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNl
Z21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdt
ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42YTJkMDc5ZWExNzdhZjQ2ZmU2YzI3ODJiMWVkNDFhMWM2MWFj
ZWRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jh
c2ljU2hhcGVTZWdtZW50LmNwcApAQCAtMCwwICsxLDI5MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJCYXNpY1NoYXBlU2VnbWVudC5oIgorCisjaW5jbHVkZSAi
TGVuZ3RoRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiUGF0aC5oIgorI2luY2x1ZGUgIlNWR1BhdGhC
dWlsZGVyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlci5oIgorI2luY2x1ZGUgIlNWR1BhdGhT
ZWcuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnSW1wbC5oIgorI2luY2x1ZGUgIlNWR1BhdGhTb3Vy
Y2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWZpbml0
aW9uPgorY2xhc3MgQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZSA6IHB1YmxpYyBCYXNpY1NoYXBlU2Vn
bWVudCB7CitwdWJsaWM6CisgICAgY29uc3QgdHlwZW5hbWUgRGVmaW5pdGlvbjo6VmFsdWUmIHZh
bHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh0eXBlKCkgPT0gRGVmaW5pdGlvbjo6
QWJzU2VnVHlwZSB8fCB0eXBlKCkgPT0gRGVmaW5pdGlvbjo6UmVsU2VnVHlwZSk7CisgICAgICAg
IHJldHVybiBtX3ZhbHVlOworICAgIH0KKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IEJhc2ljU2hh
cGVTZWdtZW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlKCkgPT0g
b3RoZXIudHlwZSgpCisgICAgICAgICAgICAmJiB2YWx1ZSgpID09IHN0YXRpY19jYXN0PGNvbnN0
IEJhc2ljU2hhcGVTZWdtZW50VmFsdWU8RGVmaW5pdGlvbj4mPihvdGhlcikudmFsdWUoKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgUmVmPEJhc2ljU2hhcGVTZWdtZW50VmFsdWU+IGNyZWF0ZShCYXNp
Y1NoYXBlU2VnbWVudDo6VHlwZSB0eXBlLCB0eXBlbmFtZSBEZWZpbml0aW9uOjpWYWx1ZSYmIHZh
bHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHR5cGUgPT0gRGVmaW5pdGlvbjo6QWJzU2VnVHlw
ZSB8fCB0eXBlID09IERlZmluaXRpb246OlJlbFNlZ1R5cGUpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCYXNpY1NoYXBlU2VnbWVudFZhbHVlPERlZmluaXRpb24+KHR5cGUsIFdURk1v
dmUodmFsdWUpKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgQmFzaWNTaGFwZVNlZ21lbnRW
YWx1ZShCYXNpY1NoYXBlU2VnbWVudDo6VHlwZSB0eXBlLCB0eXBlbmFtZSBEZWZpbml0aW9uOjpW
YWx1ZSYmIHZhbHVlKQorICAgICAgICA6IEJhc2ljU2hhcGVTZWdtZW50KHR5cGUpCisgICAgICAg
ICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkgeyB9CisKK3ByaXZhdGU6CisgICAgdHlwZW5hbWUg
RGVmaW5pdGlvbjo6VmFsdWUgbV92YWx1ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citz
dGF0aWMgY29uc3QgdHlwZW5hbWUgVDo6VmFsdWUmIGV4dHJhY3RWYWx1ZShjb25zdCBCYXNpY1No
YXBlU2VnbWVudCYgc2VnKQoreworICAgIEFTU0VSVChzZWcudHlwZSgpID09IFQ6OkFic1NlZ1R5
cGUgfHwgc2VnLnR5cGUoKSA9PSBUOjpSZWxTZWdUeXBlKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxUPiY+KHNlZykudmFsdWUoKTsKK30KKwor
Ym9vbCBCYXNpY1NoYXBlU2VnbWVudDo6ZXF1YWxzKGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBv
dGhlcikgY29uc3QKK3sKKyAgICBhdXRvIHR5cGUgPSB0aGlzLT50eXBlKCk7CisgICAgaWYgKHR5
cGUgIT0gb3RoZXIudHlwZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNkZWZpbmUgQ09N
UEFSRV9TSEFQRV9TRUdNRU5UX1ZBTFVFKFR5cGUpIFwKKyAgICBjYXNlIFNoYXBlU2VnbWVudCMj
VHlwZTo6QWJzU2VnVHlwZTogXAorICAgIGNhc2UgU2hhcGVTZWdtZW50IyNUeXBlOjpSZWxTZWdU
eXBlOiBcCisgICAgICAgIHJldHVybiBleHRyYWN0VmFsdWU8U2hhcGVTZWdtZW50IyNUeXBlPigq
dGhpcykgPT0gZXh0cmFjdFZhbHVlPFNoYXBlU2VnbWVudCMjVHlwZT4ob3RoZXIpOworCisgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgICAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9WQUxV
RShDT01QQVJFX1NIQVBFX1NFR01FTlRfVkFMVUUpCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKKyNkZWZpbmUgSU1QTEVNRU5UX1NIQVBFX1NFR01FTlRfVkFMVUUoVFlQRSkgXAor
UmVmPEJhc2ljU2hhcGVTZWdtZW50PiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlIyNUWVBFKEJh
c2ljU2hhcGVTZWdtZW50OjpUeXBlIHR5cGUsIHR5cGVuYW1lIFNoYXBlU2VnbWVudCMjVFlQRTo6
VmFsdWUmJiB2YWx1ZSkgXAoreyBcCisgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50VmFsdWU8
U2hhcGVTZWdtZW50IyNUWVBFPjo6Y3JlYXRlKHR5cGUsIFdURk1vdmUodmFsdWUpKTsgXAorfSBc
Citjb25zdCB0eXBlbmFtZSBTaGFwZVNlZ21lbnQjI1RZUEU6OlZhbHVlJiBCYXNpY1NoYXBlU2Vn
bWVudDo6YXMjI1RZUEUoKSBjb25zdCBcCit7IFwKKyAgICByZXR1cm4gZXh0cmFjdFZhbHVlPFNo
YXBlU2VnbWVudCMjVFlQRT4oKnRoaXMpOyBcCit9CisKK0ZPUl9FQUNIX1NIQVBFX1NFR01FTlRf
VFlQRV9XSVRIX1ZBTFVFKElNUExFTUVOVF9TSEFQRV9TRUdNRU5UX1ZBTFVFKQorCitDdXJ2ZVRv
Q3ViaWNTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUm
IGZyb20sIGNvbnN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUmIHRvLCBjb25zdCBCbGVuZGlu
Z0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgYmxlbmQoZnJvbS5w
b2ludDEsIHRvLnBvaW50MSwgY29udGV4dCksCisgICAgICAgIGJsZW5kKGZyb20ucG9pbnQyLCB0
by5wb2ludDIsIGNvbnRleHQpLAorICAgICAgICBibGVuZChmcm9tLnRhcmdldFBvaW50LCB0by50
YXJnZXRQb2ludCwgY29udGV4dCksCisgICAgfTsKK30KKworQ3VydmVUb0N1YmljU21vb3RoU2hh
cGVTZWdWYWx1ZSBibGVuZChjb25zdCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiBm
cm9tLCBjb25zdCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiB0bywgY29uc3QgQmxl
bmRpbmdDb250ZXh0JiBjb250ZXh0KQoreworICAgIHJldHVybiB7CisgICAgICAgIGJsZW5kKGZy
b20ucG9pbnQyLCB0by5wb2ludDIsIGNvbnRleHQpLAorICAgICAgICBibGVuZChmcm9tLnRhcmdl
dFBvaW50LCB0by50YXJnZXRQb2ludCwgY29udGV4dCksCisgICAgfTsKK30KKworQ3VydmVUb1F1
YWRyYXRpY1NoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2Vn
VmFsdWUmIGZyb20sIGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlJiB0bywgY29u
c3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQoreworICAgIHJldHVybiB7CisgICAgICAgIGJs
ZW5kKGZyb20ucG9pbnQxLCB0by5wb2ludDEsIGNvbnRleHQpLAorICAgICAgICBibGVuZChmcm9t
LnRhcmdldFBvaW50LCB0by50YXJnZXRQb2ludCwgY29udGV4dCksCisgICAgfTsKK30KKworQXJj
VG9TaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29u
c3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiB0bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0
KQoreworICAgIHJldHVybiB7CisgICAgICAgIGJsZW5kKGZyb20ucmFkaXVzLCB0by5yYWRpdXMs
IGNvbnRleHQpLAorICAgICAgICBibGVuZChmcm9tLmFuZ2xlLCB0by5hbmdsZSwgY29udGV4dCks
CisgICAgICAgIGNvbnRleHQucHJvZ3Jlc3MgPCAwLjVmID8gZnJvbS5zd2VlcCA6IHRvLnN3ZWVw
LAorICAgICAgICBjb250ZXh0LnByb2dyZXNzIDwgMC41ZiA/IGZyb20ubGFyZ2VBcmMgOiB0by5s
YXJnZUFyYywKKyAgICAgICAgYmxlbmQoZnJvbS50YXJnZXRQb2ludCwgdG8udGFyZ2V0UG9pbnQs
IGNvbnRleHQpCisgICAgfTsKK30KKworUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBCYXNpY1NoYXBl
U2VnbWVudDo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIGZyb20sIGNvbnN0IEJsZW5k
aW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBhdXRvIHR5cGUgPSB0aGlzLT50eXBl
KCk7CisgICAgQVNTRVJUKHR5cGUgPT0gZnJvbS50eXBlKCkpOworCisgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFw
ZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworCisjZGVmaW5lIEJMRU5EX1NFR01FTlRfVFlQ
RShUeXBlKSBcCisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6OkFic1NlZ1R5cGU6IFwKKyAg
ICBjYXNlIFNoYXBlU2VnbWVudCMjVHlwZTo6UmVsU2VnVHlwZTogXAorICAgICAgICByZXR1cm4g
QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxTaGFwZVNlZ21lbnQjI1R5cGU+OjpjcmVhdGUodHlwZSwg
V2ViQ29yZTo6YmxlbmQoZXh0cmFjdFZhbHVlPFNoYXBlU2VnbWVudCMjVHlwZT4oZnJvbSksIGV4
dHJhY3RWYWx1ZTxTaGFwZVNlZ21lbnQjI1R5cGU+KCp0aGlzKSwgY29udGV4dCkpOworCisgICAg
ICAgIEZPUl9FQUNIX1NIQVBFX1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKEJMRU5EX1NFR01FTlRf
VFlQRSkKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKyAgICB9Cit9
CitjbGFzcyBTaGFwZVNWR1BhdGhTb3VyY2UgZmluYWwgOiBwdWJsaWMgU1ZHUGF0aFNvdXJjZSB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2hhcGVTVkdQYXRoU291cmNlKGNvbnN0IExlbmd0aFBv
aW50JiBzdGFydCwgY29uc3QgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+JiBzZWdtZW50
cywgY29uc3QgRmxvYXRTaXplJiBzaXplKQorICAgICAgICA6IG1fc3RhcnQoc3RhcnQpCisgICAg
ICAgICwgbV9zZWdtZW50cyhzZWdtZW50cykKKyAgICAgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAg
ICAgLCBtX2l0ZW1FbmQoc2VnbWVudHMuc2l6ZSgpKQorICAgICAgICB7CisKKyAgICAgICAgfQor
Citwcml2YXRlOgorICAgIGJvb2wgaGFzTW9yZURhdGEoKSBjb25zdCBmaW5hbAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1faXRlbUN1cnJlbnQgPCBtX2l0ZW1FbmQ7CisgICAgfQorCisgICAgYm9v
bCBtb3ZlVG9OZXh0VG9rZW4oKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBTVkdQYXRo
U2VnVHlwZSBuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSkgZmluYWwKKyAgICB7CisgICAgICAg
IGF1dG8gdHlwZSA9IG1fc2VnbWVudHMuYXQobV9pdGVtQ3VycmVudCktPnR5cGUoKTsKKyAgICAg
ICAgKyttX2l0ZW1DdXJyZW50OworICAgICAgICByZXR1cm4gdHlwZTsKKyAgICB9CisKKyAgICBz
dGQ6Om9wdGlvbmFsPFNWR1BhdGhTZWdUeXBlPiBwYXJzZVNWR1NlZ21lbnRUeXBlKCkgZmluYWwK
KyAgICB7CisgICAgICAgIHJldHVybiBQYXRoU2VnTW92ZVRvQWJzOworICAgIH0KKworICAgIHN0
ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TW92ZVRvU2VnbWVudD4gcGFyc2VNb3ZlVG9TZWdt
ZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9pdGVtQ3VycmVudCkKKyAgICAgICAg
ICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50IHsgZmxvYXRQb2ludEZvckxl
bmd0aFBvaW50KG1fc3RhcnQsIG1fc2l6ZSkgfTsKKworICAgICAgICByZXR1cm4gU1ZHUGF0aFNv
dXJjZTo6TW92ZVRvU2VnbWVudCB7IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZTxTaGFw
ZVNlZ21lbnRNb3ZlVG8+KCksIG1fc2l6ZSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFs
PFNWR1BhdGhTb3VyY2U6OkxpbmVUb1NlZ21lbnQ+IHBhcnNlTGluZVRvU2VnbWVudCgpIGZpbmFs
CisgICAgeworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6TGluZVRvU2VnbWVudCB7IGZs
b2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZTxTaGFwZVNlZ21lbnRMaW5lVG8+KCksIG1fc2l6
ZSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb0hv
cml6b250YWxTZWdtZW50PiBwYXJzZUxpbmVUb0hvcml6b250YWxTZWdtZW50KCkgZmluYWwKKyAg
ICB7CisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFsU2VnbWVu
dCB7IGZsb2F0VmFsdWVGb3JMZW5ndGgodmFsdWU8U2hhcGVTZWdtZW50TGluZVRvSG9yaXpvbnRh
bD4oKSwgbV9zaXplLndpZHRoKCkpIH07CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQ
YXRoU291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IHBhcnNlTGluZVRvVmVydGljYWxTZWdt
ZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpMaW5lVG9W
ZXJ0aWNhbFNlZ21lbnQgeyBmbG9hdFZhbHVlRm9yTGVuZ3RoKHZhbHVlPFNoYXBlU2VnbWVudExp
bmVUb1ZlcnRpY2FsPigpLCBtX3NpemUuaGVpZ2h0KCkpIH07CisgICAgfQorCisgICAgc3RkOjpv
cHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBwYXJzZUN1cnZlVG9D
dWJpY1NlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byYgdmFsdWUgPSB0
aGlzLT52YWx1ZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWM+KCk7CisgICAgICAgIHJldHVybiBT
VkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTZWdtZW50IHsgICAgICAgIAorICAgICAgICAgICAg
ZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnBvaW50MSwgbV9zaXplKSwKKyAgICAgICAg
ICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS5wb2ludDIsIG1fc2l6ZSksCisgICAg
ICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUudGFyZ2V0UG9pbnQsIG1fc2l6
ZSkKKyAgICAgICAgfTsKKyAgICB9CisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpD
dXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50PiBwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQo
KSBmaW5hbAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byYgdmFsdWUgPSB0aGlzLT52YWx1ZTxT
aGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWNTbW9vdGg+KCk7CisgICAgICAgIHJldHVybiBTVkdQYXRo
U291cmNlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50IHsgICAgICAgIAorICAgICAgICAgICAg
ZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnBvaW50MiwgbV9zaXplKSwKKyAgICAgICAg
ICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXplKQor
ICAgICAgICB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3Vy
dmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKSBmaW5h
bAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byYgdmFsdWUgPSB0aGlzLT52YWx1ZTxTaGFwZVNl
Z21lbnRDdXJ2ZVRvUXVhZHJhdGljPigpOworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6
Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQgeworICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0
aFBvaW50KHZhbHVlLnBvaW50MSwgbV9zaXplKSwKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JM
ZW5ndGhQb2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXplKQorICAgICAgICB9OworICAgIH0K
KworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1Ntb290
aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoKSBmaW5hbAorICAg
IHsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTbW9vdGhT
ZWdtZW50IHsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlPFNoYXBlU2VnbWVudEN1cnZl
VG9RdWFkcmF0aWNTbW9vdGg+KCksIG1fc2l6ZSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlv
bmFsPFNWR1BhdGhTb3VyY2U6OkFyY1RvU2VnbWVudD4gcGFyc2VBcmNUb1NlZ21lbnQoKSBmaW5h
bAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byYgdmFsdWUgPSB0aGlzLT52YWx1ZTxTaGFwZVNl
Z21lbnRBcmNUbz4oKTsKKyAgICAgICAgYXV0byByYWRpdXMgPSBmbG9hdFNpemVGb3JMZW5ndGhT
aXplKHZhbHVlLnJhZGl1cywgbV9zaXplKTsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6
OkFyY1RvU2VnbWVudCB7CisgICAgICAgICAgICAucnggPSByYWRpdXMud2lkdGgoKSwKKyAgICAg
ICAgICAgIC5yeSA9IHJhZGl1cy5oZWlnaHQoKSwKKyAgICAgICAgICAgIC5hbmdsZSA9IHZhbHVl
LmFuZ2xlLAorICAgICAgICAgICAgLmxhcmdlQXJjID0gdmFsdWUubGFyZ2VBcmMsCisgICAgICAg
ICAgICAuc3dlZXAgPSB2YWx1ZS5zd2VlcCwKKyAgICAgICAgICAgIC50YXJnZXRQb2ludCA9IGZs
b2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXplKQorICAgICAg
ICB9OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgY29uc3QgdHlwZW5h
bWUgVDo6VmFsdWUmIHZhbHVlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2l0ZW1DdXJyZW50
IDw9IG1fc2VnbWVudHMuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RWYWx1ZTxUPiht
X3NlZ21lbnRzLmF0KG1faXRlbUN1cnJlbnQgLSAxKS5nZXQoKSk7CisgICAgfQorCisgICAgY29u
c3QgTGVuZ3RoUG9pbnQmIG1fc3RhcnQ7CisgICAgY29uc3QgVmVjdG9yPFJlZjxCYXNpY1NoYXBl
U2VnbWVudD4+JiBtX3NlZ21lbnRzOworICAgIEZsb2F0U2l6ZSBtX3NpemU7CisgICAgc2l6ZV90
IG1faXRlbUVuZDsKKyAgICBzaXplX3QgbV9pdGVtQ3VycmVudCA9IDA7Cit9OworCitQYXRoIEJh
c2ljU2hhcGVTZWdtZW50Ojp0b1BhdGgoY29uc3QgTGVuZ3RoUG9pbnQmIHN0YXJ0LCBjb25zdCBW
ZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIHNlZ21lbnRzLCBjb25zdCBGbG9hdFNpemUm
IHNpemUpCit7CisgICAgU2hhcGVTVkdQYXRoU291cmNlIHNvdXJjZShzdGFydCwgc2VnbWVudHMs
IHNpemUpOworICAgIFBhdGggcGF0aDsKKyAgICBTVkdQYXRoQnVpbGRlciBidWlsZGVyKHBhdGgp
OworICAgIFNWR1BhdGhQYXJzZXI6OnBhcnNlKHNvdXJjZSwgYnVpbGRlcik7CisgICAgcmV0dXJu
IHBhdGg7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9CYXNpY1NoYXBlU2VnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jh
c2ljU2hhcGVTZWdtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDVkMThjZTg1MDZjZTYyZGQzMjY1NzU0ZGUw
NzQ2YWQwYmMxOTQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5oCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIE5vYW0gUm9zZW50aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJMZW5ndGguaCIKKyNpbmNsdWRlICJMZW5ndGhQb2lu
dC5oIgorI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnLmgiCisj
aW5jbHVkZSAiU1ZHUGF0aFNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVj
dCBCbGVuZGluZ0NvbnRleHQ7CitjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBQYXRoOworCitzdHJ1
Y3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSB7CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQxOwor
ICAgIExlbmd0aFBvaW50IHBvaW50MjsKKyAgICBMZW5ndGhQb2ludCB0YXJnZXRQb2ludDsKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gcG9pbnQxID09IG90aGVyLnBvaW50MSAmJiBw
b2ludDIgPT0gb3RoZXIucG9pbnQyICYmIHRhcmdldFBvaW50ID09IG90aGVyLnRhcmdldFBvaW50
OworICAgIH0KK307CisKK3N0cnVjdCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlIHsK
KyAgICBMZW5ndGhQb2ludCBwb2ludDI7CisgICAgTGVuZ3RoUG9pbnQgdGFyZ2V0UG9pbnQ7Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUm
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHBvaW50MiA9PSBvdGhlci5wb2lu
dDIgJiYgdGFyZ2V0UG9pbnQgPT0gb3RoZXIudGFyZ2V0UG9pbnQ7CisgICAgfQorfTsKKworc3Ry
dWN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlIHsKKyAgICBMZW5ndGhQb2ludCBwb2lu
dDE7CisgICAgTGVuZ3RoUG9pbnQgdGFyZ2V0UG9pbnQ7CisKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIHBvaW50MSA9PSBvdGhlci5wb2ludDEgJiYgdGFyZ2V0UG9pbnQgPT0g
b3RoZXIudGFyZ2V0UG9pbnQ7CisgICAgfQorfTsKKworCitzdHJ1Y3QgQXJjVG9TaGFwZVNlZ1Zh
bHVlIHsKKyAgICBMZW5ndGhTaXplIHJhZGl1czsKKyAgICBmbG9hdCBhbmdsZSA9IDA7CisgICAg
Ym9vbCBzd2VlcCA9IGZhbHNlOworICAgIGJvb2wgbGFyZ2VBcmMgPSBmYWxzZTsKKyAgICBMZW5n
dGhQb2ludCB0YXJnZXRQb2ludDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBcmNUb1No
YXBlU2VnVmFsdWUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJhZGl1cyA9
PSBvdGhlci5yYWRpdXMgJiYgYW5nbGUgPT0gb3RoZXIuYW5nbGUgJiYgc3dlZXAgPT0gb3RoZXIu
c3dlZXAgJiYgbGFyZ2VBcmMgPT0gb3RoZXIubGFyZ2VBcmMgJiYgdGFyZ2V0UG9pbnQgPT0gb3Ro
ZXIudGFyZ2V0UG9pbnQ7CisgICAgfQorfTsKKworCitDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVl
IGJsZW5kKGNvbnN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBDdXJ2ZVRvQ3Vi
aWNTaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQmxlbmRpbmdDb250ZXh0Jik7CitDdXJ2ZVRvQ3ViaWNT
bW9vdGhTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2Vn
VmFsdWUmLCBjb25zdCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQmxl
bmRpbmdDb250ZXh0Jik7CitDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSBibGVuZChjb25z
dCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNT
aGFwZVNlZ1ZhbHVlJiwgY29uc3QgQmxlbmRpbmdDb250ZXh0Jik7CitBcmNUb1NoYXBlU2VnVmFs
dWUgYmxlbmQoY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQXJjVG9TaGFwZVNlZ1Zh
bHVlJiwgY29uc3QgQmxlbmRpbmdDb250ZXh0Jik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVl
VHlwZSwgU1ZHUGF0aFNlZ1R5cGUgQWJzVHlwZSwgU1ZHUGF0aFNlZ1R5cGUgUmVsVHlwZT4KK3N0
cnVjdCBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbiB7CisgICAgdHlwZWRlZiBWYWx1ZVR5cGUg
VmFsdWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIEFic1NlZ1R5cGUgPSBBYnNUeXBlOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBSZWxTZWdUeXBlID0gUmVsVHlwZTsKK307CisKK3N0
cnVjdCBTaGFwZVNlZ21lbnRNb3ZlVG8gOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRp
b248TGVuZ3RoUG9pbnQsIFBhdGhTZWdNb3ZlVG9BYnMsIFBhdGhTZWdNb3ZlVG9SZWw+IHsgfTsK
K3N0cnVjdCBTaGFwZVNlZ21lbnRMaW5lVG8gOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmlu
aXRpb248TGVuZ3RoUG9pbnQsIFBhdGhTZWdMaW5lVG9BYnMsIFBhdGhTZWdMaW5lVG9SZWw+IHsg
fTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRMaW5lVG9Ib3Jpem9udGFsIDogcHVibGljIFNoYXBlU2Vn
bWVudFR5cGVEZWZpbml0aW9uPExlbmd0aCwgUGF0aFNlZ0xpbmVUb0hvcml6b250YWxBYnMsIFBh
dGhTZWdMaW5lVG9Ib3Jpem9udGFsUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50TGluZVRv
VmVydGljYWwgOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248TGVuZ3RoLCBQYXRo
U2VnTGluZVRvVmVydGljYWxBYnMsIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbFJlbD4geyB9Oworc3Ry
dWN0IFNoYXBlU2VnbWVudEN1cnZlVG9DdWJpYyA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVm
aW5pdGlvbjxDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlLCBQYXRoU2VnQ3VydmVUb0N1YmljQWJz
LCBQYXRoU2VnQ3VydmVUb0N1YmljUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50Q3VydmVU
b1F1YWRyYXRpYyA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxDdXJ2ZVRvUXVh
ZHJhdGljU2hhcGVTZWdWYWx1ZSwgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNBYnMsIFBhdGhTZWdD
dXJ2ZVRvUXVhZHJhdGljUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50Q3VydmVUb0N1Ymlj
U21vb3RoIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPEN1cnZlVG9DdWJpY1Nt
b290aFNoYXBlU2VnVmFsdWUsIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhBYnMsIFBhdGhTZWdD
dXJ2ZVRvQ3ViaWNTbW9vdGhSZWw+IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVh
ZHJhdGljU21vb3RoIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPExlbmd0aFBv
aW50LCBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aEFicywgUGF0aFNlZ0N1cnZlVG9RdWFk
cmF0aWNTbW9vdGhSZWw+IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRBcmNUbyA6IHB1YmxpYyBT
aGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxBcmNUb1NoYXBlU2VnVmFsdWUsIFBhdGhTZWdBcmNB
YnMsIFBhdGhTZWdBcmNSZWw+IHsgfTsKKworI2RlZmluZSBGT1JfRUFDSF9TSEFQRV9TRUdNRU5U
X1RZUEVfV0lUSF9WQUxVRShNYWNybykgXAorICAgIE1hY3JvKE1vdmVUbykgXAorICAgIE1hY3Jv
KExpbmVUbykgXAorICAgIE1hY3JvKExpbmVUb0hvcml6b250YWwpIFwKKyAgICBNYWNybyhMaW5l
VG9WZXJ0aWNhbCkgXAorICAgIE1hY3JvKEN1cnZlVG9DdWJpYykgXAorICAgIE1hY3JvKEN1cnZl
VG9RdWFkcmF0aWMpIFwKKyAgICBNYWNybyhDdXJ2ZVRvQ3ViaWNTbW9vdGgpIFwKKyAgICBNYWNy
byhDdXJ2ZVRvUXVhZHJhdGljU21vb3RoKSBcCisgICAgTWFjcm8oQXJjVG8pCisKK2NsYXNzIEJh
c2ljU2hhcGVTZWdtZW50IDogcHVibGljIFJlZkNvdW50ZWQ8QmFzaWNTaGFwZVNlZ21lbnQ+IHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIFNWR1BhdGhTZWdUeXBlIFR5cGU7CisgICAgfkJhc2ljU2hh
cGVTZWdtZW50KCkgPSBkZWZhdWx0OworCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CisKKyAgICBSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGJsZW5kKGNvbnN0IEJhc2lj
U2hhcGVTZWdtZW50JiBmcm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKSBjb25zdDsKKyAgICBi
b29sIGVxdWFscyhjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYpIGNvbnN0OworCisgICAgc3RhdGlj
IFBhdGggdG9QYXRoKGNvbnN0IExlbmd0aFBvaW50JiBzdGFydCwgY29uc3QgVmVjdG9yPFJlZjxC
YXNpY1NoYXBlU2VnbWVudD4+JiwgY29uc3QgRmxvYXRTaXplJik7CisKKyNkZWZpbmUgREVGSU5F
X1NIQVBFX1NFR01FTlRfVFlQRShUKSBcCisgICAgc3RhdGljIFJlZjxCYXNpY1NoYXBlU2VnbWVu
dD4gY3JlYXRlIyNUKFR5cGUsIHR5cGVuYW1lIFNoYXBlU2VnbWVudCMjVDo6VmFsdWUmJik7IFwK
KyAgICBjb25zdCB0eXBlbmFtZSBTaGFwZVNlZ21lbnQjI1Q6OlZhbHVlJiBhcyMjVCgpIGNvbnN0
OworCisgICAgRk9SX0VBQ0hfU0hBUEVfU0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoREVGSU5FX1NI
QVBFX1NFR01FTlRfVFlQRSkKKworICAgIHN0YXRpYyBSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGNy
ZWF0ZUNsb3NlUGF0aCgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXNp
Y1NoYXBlU2VnbWVudChQYXRoU2VnQ2xvc2VQYXRoKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgQmFzaWNTaGFwZVNlZ21lbnQoVHlwZSB0KQorICAgICAgICA6IG1fdHlwZSh0KSB7IH0KKwor
cHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKK307CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggMDg2YTZmNmE2M2EyNWU1MDIz
YWU5NWJmYTg0ZjRmYTdkNGZmYzI2Mi4uNjczZmVhNmM0ZDI2MzAwYTY4N2Y5ZDVkYTNiODYzM2U4
NWUwMDFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2lj
U2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuY3BwCkBAIC0xMjEsNiArMTIxLDQ0IEBAIHN0cnVjdCBUcmFuc2Zvcm1lZEJ5dGVTdHJlYW1Q
YXRoUG9saWN5IDogVGlueUxSVUNhY2hlUG9saWN5PFNWR1BhdGhUcmFuc2Zvcm1lZEJ5CiAgICAg
c3RhdGljIFBhdGggY3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgU1ZHUGF0aFRyYW5zZm9ybWVkQnl0
ZVN0cmVhbSYgc3RyZWFtKSB7IHJldHVybiBzdHJlYW0ucGF0aCgpOyB9CiB9OwogCitzdHJ1Y3Qg
U2hhcGVTZWdtZW50c1dpdGhCb3ggeworICAgIExlbmd0aFBvaW50IHN0YXJ0OworICAgIFZlY3Rv
cjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiBzZWdtZW50czsKKyAgICBGbG9hdFJlY3QgYm94Owor
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBlU2VnbWVudHNXaXRoQm94JiBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChib3ggIT0gb3RoZXIuYm94IHx8IHNlZ21lbnRzLnNp
emUoKSA9PSBvdGhlci5zZWdtZW50cy5zaXplKCkgfHwgc3RhcnQgIT0gb3RoZXIuc3RhcnQpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzZWdtZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFzZWdtZW50cy5hdChp
KS0+ZXF1YWxzKG90aGVyLnNlZ21lbnRzLmF0KGkpLmdldCgpKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcGVTZWdtZW50c1dpdGhCb3gmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KK307
CisKK3N0cnVjdCBTaGFwZVNlZ21lbnRzUGF0aFBvbGljeSA6IFRpbnlMUlVDYWNoZVBvbGljeTxT
aGFwZVNlZ21lbnRzV2l0aEJveCwgUGF0aD4geworICAgIHN0YXRpYyBib29sIGlzS2V5TnVsbChj
b25zdCBTaGFwZVNlZ21lbnRzV2l0aEJveCYgc2VnbWVudHNXaXRoQm94KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHNlZ21lbnRzV2l0aEJveC5zZWdtZW50cy5pc0VtcHR5KCk7CisgICAgfQorCisg
ICAgc3RhdGljIFBhdGggY3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgU2hhcGVTZWdtZW50c1dpdGhC
b3gmIHNlZ21lbnRzV2l0aEJveCkKKyAgICB7CisgICAgICAgIGF1dG8gcGF0aCA9IEJhc2ljU2hh
cGVTZWdtZW50Ojp0b1BhdGgoc2VnbWVudHNXaXRoQm94LnN0YXJ0LCBzZWdtZW50c1dpdGhCb3gu
c2VnbWVudHMsIHNlZ21lbnRzV2l0aEJveC5ib3guc2l6ZSgpKTsKKyAgICAgICAgcGF0aC50cmFu
c2xhdGUodG9GbG9hdFNpemUoc2VnbWVudHNXaXRoQm94LmJveC5sb2NhdGlvbigpKSk7CisgICAg
ICAgIHJldHVybiBwYXRoOworICAgIH0KK307CisKIHN0YXRpYyBjb25zdCBQYXRoJiBjYWNoZWRF
bGxpcHNlUGF0aChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFRpbnlMUlVDYWNoZTxGbG9hdFJlY3QsIFBhdGgsIDQsIEVsbGlwc2VQYXRoUG9saWN5
Pj4gY2FjaGU7CkBAIC0xNDUsNiArMTgzLDEyIEBAIHN0YXRpYyBjb25zdCBQYXRoJiBjYWNoZWRU
cmFuc2Zvcm1lZEJ5dGVTdHJlYW1QYXRoKGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJiBzdHJlCiAg
ICAgcmV0dXJuIGNhY2hlLmdldCgpLmdldChTVkdQYXRoVHJhbnNmb3JtZWRCeXRlU3RyZWFtIHsg
c3RyZWFtLCB6b29tLCBvZmZzZXQgfSk7CiB9CiAKK3N0YXRpYyBjb25zdCBQYXRoJiBjYWNoZWRT
aGFwZVNlZ21lbnRzUGF0aChjb25zdCBMZW5ndGhQb2ludCYgZnJvbSwgY29uc3QgVmVjdG9yPFJl
ZjxCYXNpY1NoYXBlU2VnbWVudD4+JiBzZWdtZW50cywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8U2hhcGVTZWdtZW50c1dp
dGhCb3gsIFBhdGgsIDQsIFNoYXBlU2VnbWVudHNQYXRoUG9saWN5Pj4gY2FjaGU7CisgICAgcmV0
dXJuIGNhY2hlLmdldCgpLmdldChTaGFwZVNlZ21lbnRzV2l0aEJveCB7IGZyb20sIHNlZ21lbnRz
LCByZWN0IH0pOworfQorCiBib29sIEJhc2ljU2hhcGVDaXJjbGU6Om9wZXJhdG9yPT0oY29uc3Qg
QmFzaWNTaGFwZSYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBvdGhlci50eXBl
KCkpCkBAIC00NjMsNiArNTA3LDc4IEBAIHZvaWQgQmFzaWNTaGFwZUluc2V0OjpkdW1wKFRleHRT
dHJlYW0mIHRzKSBjb25zdAogICAgIHRzLmR1bXBQcm9wZXJ0eSgiYm90dG9tLWxlZnQtcmFkaXVz
IiwgYm90dG9tTGVmdFJhZGl1cygpKTsKIH0KIAorCitCYXNpY1NoYXBlU2hhcGU6OkJhc2ljU2hh
cGVTaGFwZShjb25zdCBMZW5ndGhQb2ludCYgZnJvbSwgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2Vn
bWVudD4+JiYgc2VnbWVudHMpCisgICAgOiBtX3NlZ21lbnRzKG1ha2VVbmlxdWU8VmVjdG9yPFJl
ZjxCYXNpY1NoYXBlU2VnbWVudD4+PihXVEZNb3ZlKHNlZ21lbnRzKSkpCisgICAgLCBtX2Zyb20o
ZnJvbSkKK3sKK30KKworY29uc3QgUGF0aCYgQmFzaWNTaGFwZVNoYXBlOjpwYXRoKGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3gpCit7CisgICAgcmV0dXJuIGNhY2hlZFNoYXBlU2VnbWVudHNQ
YXRoKG1fZnJvbSwgKm1fc2VnbWVudHMsIGJvdW5kaW5nQm94KTsKK30KKworYm9vbCBCYXNpY1No
YXBlU2hhcGU6Om9wZXJhdG9yPT0oY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIpIGNvbnN0Cit7Cisg
ICAgaWYgKHR5cGUoKSAhPSBvdGhlci50eXBlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGNvbnN0IEJhc2ljU2hhcGVTaGFwZSYgb3RoZXJTaGFwZSA9IGRvd25jYXN0PEJhc2ljU2hh
cGVTaGFwZT4ob3RoZXIpOworICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAgICBpZiAo
d2luZFJ1bGUoKSAhPSBvdGhlclNoYXBlLndpbmRSdWxlKCkgfHwgc2l6ZSA9PSBvdGhlclNoYXBl
LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYgKCFhdChpKS5lcXVhbHMob3RoZXJTaGFwZS5h
dChpKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgQmFzaWNTaGFwZVNoYXBlOjpjYW5CbGVuZChjb25zdCBCYXNpY1NoYXBl
JiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOworICAgIGF1
dG8mIG90aGVyU2hhcGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+KG90aGVyKTsKKyAgICBp
ZiAod2luZFJ1bGUoKSAhPSBvdGhlclNoYXBlLndpbmRSdWxlKCkgfHwgc2l6ZSAhPSBvdGhlclNo
YXBlLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYgKGF0KGkpLnR5cGUoKSAhPSBvdGhlclNo
YXBlLmF0KGkpLnR5cGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVTaGFwZTo6Ymxl
bmQoY29uc3QgQmFzaWNTaGFwZSYgZnJvbSwgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0
KSBjb25zdAoreworICAgIEFTU0VSVCh0eXBlKCkgPT0gZnJvbS50eXBlKCkpOworICAgIGF1dG8g
c2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAgICBhdXRvJiBmcm9tU2hhcGUgPSBkb3duY2FzdDxCYXNp
Y1NoYXBlU2hhcGU+KGZyb20pOworICAgIEFTU0VSVChzaXplID09IGZyb21TaGFwZS5zaXplKCkp
OworCisgICAgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+IHJlc3VsdDsKKyAgICByZXN1
bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKQorICAgICAgICByZXN1bHQuYXBwZW5kKGF0KGkpLmJsZW5kKGZyb21T
aGFwZS5hdChpKSwgY29udGV4dCkpOworCisgICAgYXV0byBuZXdTaGFwZSA9IEJhc2ljU2hhcGVT
aGFwZTo6Y3JlYXRlKFdlYkNvcmU6OmJsZW5kKGZyb21TaGFwZS5mcm9tKCksIG1fZnJvbSwgY29u
dGV4dCksIFdURk1vdmUocmVzdWx0KSk7CisgICAgbmV3U2hhcGUtPnNldFdpbmRSdWxlKHdpbmRS
dWxlKCkpOworICAgIHJldHVybiBuZXdTaGFwZTsKK30KKwordm9pZCBCYXNpY1NoYXBlU2hhcGU6
OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Cit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ3aW5k
LXJ1bGUiLCB3aW5kUnVsZSgpKTsKKyAgICAvLyBGSVhNRTogcHJpbnQgdGhlIGJ5dGUgc3RyZWFt
PworfQorCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQmFz
aWNTaGFwZVJhZGl1czo6VHlwZSByYWRpdXNUeXBlKQogewogICAgIHN3aXRjaCAocmFkaXVzVHlw
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hh
cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAppbmRl
eCA5YmYwMzczNDc2YjUzZTVjN2E0YTliYzYyMzllNDVlYzRhZDUzNGU0Li4zMWU4ZjNkZjVkY2Ix
NjJlODI1MzczNGQ0YjVjY2ViOTBjZWM5MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQmFzaWNTaGFwZXMuaApAQCAtMzAsNiArMzAsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJMZW5ndGguaCIKKyNpbmNsdWRlICJMZW5ndGhQb2ludC5oIgogI2luY2x1ZGUg
Ikxlbmd0aFNpemUuaCIKICNpbmNsdWRlICJXaW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CkBAIC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBCbGVuZGluZ0NvbnRleHQ7CiBjbGFz
cyBGbG9hdFJlY3Q7CiBjbGFzcyBQYXRoOwogY2xhc3MgUmVuZGVyQm94OworY2xhc3MgQmFzaWNT
aGFwZVNlZ21lbnQ7CiBjbGFzcyBTVkdQYXRoQnl0ZVN0cmVhbTsKIAogY2xhc3MgQmFzaWNTaGFw
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEJhc2ljU2hhcGU+IHsKQEAgLTU4LDcgKzYwLDggQEAgcHVi
bGljOgogICAgICAgICBQYXRoLAogICAgICAgICBDaXJjbGUsCiAgICAgICAgIEVsbGlwc2UsCi0g
ICAgICAgIEluc2V0CisgICAgICAgIEluc2V0LAorICAgICAgICBTaGFwZQogICAgIH07CiAKICAg
ICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKQEAgLTM0Myw2ICszNDYsNDEgQEAgcHJp
dmF0ZToKICAgICBMZW5ndGhTaXplIG1fYm90dG9tTGVmdFJhZGl1czsKIH07CiAKK2NsYXNzIEJh
c2ljU2hhcGVTaGFwZSA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPEJhc2ljU2hhcGVTaGFwZT4gY3JlYXRlKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBWZWN0
b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mJiBzZWdtZW50cykKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEJhc2ljU2hhcGVTaGFwZShmcm9tLCBXVEZNb3ZlKHNlZ21lbnRz
KSkpOworICAgIH0KKworICAgIHZvaWQgc2V0V2luZFJ1bGUoV2luZFJ1bGUgd2luZFJ1bGUpIHsg
bV93aW5kUnVsZSA9IHdpbmRSdWxlOyB9CisgICAgV2luZFJ1bGUgd2luZFJ1bGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3dpbmRSdWxlOyB9CisKKyAgICBjb25zdCBMZW5ndGhQb2ludCYg
ZnJvbSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbTsgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NlZ21lbnRzLT5zaXplKCk7IH0KKyAgICBjb25zdCBCYXNpY1NoYXBlU2Vn
bWVudCYgYXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMtPmF0KGkpLmdldCgp
OyB9CisKK3ByaXZhdGU6CisgICAgQmFzaWNTaGFwZVNoYXBlKGNvbnN0IExlbmd0aFBvaW50Jiwg
VmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+JiYpOworCisgICAgVHlwZSB0eXBlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gVHlwZTo6U2hhcGU7IH0KKworCisgICAgY29uc3QgUGF0aCYg
cGF0aChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKworICAgIGJvb2wgY2FuQmxlbmQoY29u
c3QgQmFzaWNTaGFwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxCYXNpY1NoYXBlPiBibGVu
ZChjb25zdCBCYXNpY1NoYXBlJiBmcm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJikgY29uc3Qg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0IGZpbmFsOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+Pj4gbV9zZWdt
ZW50czsKKyAgICBXaW5kUnVsZSBtX3dpbmRSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKKyAg
ICBMZW5ndGhQb2ludCBtX2Zyb207Cit9OworCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQmFzaWNTaGFwZVJhZGl1cyYpOwogV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEJhc2ljU2hhcGVDZW50ZXJD
b29yZGluYXRlJik7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiwgY29uc3QgQmFzaWNTaGFwZSYpOwpAQCAtMzU5LDMgKzM5Nyw0IEBAIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkFTSUNfU0hBUEUoQmFzaWNTaGFwZUVsbGlwc2UsIEJhc2ljU2hhcGU6OlR5cGU6
OkVsbGlwc2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVQ
b2x5Z29uLCBCYXNpY1NoYXBlOjpUeXBlOjpQb2x5Z29uKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CQVNJQ19TSEFQRShCYXNpY1NoYXBlUGF0aCwgQmFzaWNTaGFwZTo6VHlwZTo6UGF0aCkKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkFTSUNfU0hBUEUoQmFzaWNTaGFwZUluc2V0LCBCYXNpY1No
YXBlOjpUeXBlOjpJbnNldCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkFTSUNfU0hBUEUoQmFz
aWNTaGFwZVNoYXBlLCBCYXNpY1NoYXBlOjpUeXBlOjpTaGFwZSkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMzQ1MzQ4Zjlk
OWZjMjEyM2QxOTVjYTNhOWM5MmIzNTE0ZTMyODRlLi40ZjY2MTAzMGQyZDQxYWFmMWFiOTRiOTNj
MTQyMWNjM2YyNzJkMTQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDQtMTkgIE5vYW0g
Um9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgU2hhcGVzXSBBZGQg
c3VwcG9ydCBmb3Igc2hhcGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM4MzcxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MDkxOTQ3Nj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBl
Y3RhdGlvbnM6IHVuc2tpcCBDU1Mgc2hhcGUoKSB0ZXN0cworCiAyMDIyLTA0LTE4ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gVW5z
a2lwIGFwaS92YWxpZGF0aW9uL2NyZWF0ZVNhbXBsZXIuaHRtbCDwn46JCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwppbmRleCA2NGVhNjU3ZTZlMDQyYWMzZDEwMThjOGRkOGQ4ZmMwMjI1ZmVi
YTA3Li5hZGY2NDVlMjM5MmQ1YTk3OTdmMmY3YzY0ZjlkYjBmMzI0ZjA3NmMzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMi0wNC0xOSAgTm9hbSBS
b3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFkZCBz
dXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2PgorCisg
ICAgICAgIEFtZW5kZWQgdGVzdHMgdG8gc3VwcG9ydCBDU1Mgc2hhcGUoKQorCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNo
YXBlLTAwMy1leHBlY3RlZC5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbDoKKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgt
c2hhcGUtMDA0LWV4cGVjdGVkLmh0bWw6CisgICAgICAgICAgICAgICAgTmVlZGVkIHRvIGNoYW5n
ZSB0aGUgdGVzdCBhIGJpdCBiZWNhdXNlIG9mIHN0cmF5IHBpeGVscy4gV2lsbCB1cHN0cmVhbS4K
KworCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5n
L2NsaXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgICAgICAgICBO
b3cgcGFzc2VzCisKIDIwMjItMDQtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgQ1NTVHJhbnNmb3JtVmFsdWUuaXMyRApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggYWU3NjI2YjNiZjM5YTdhYjg2NmJmNGM0MjhmNmEzOGNiMTg2
MTlhNC4uYmYwOTJkZDUyZDNhYjFlMDU0OThmYWIwYzZlOWRlOGVjMzlkODRhOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0yMTk5LDE1ICsyMTk5LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC12aWV3Qm94LTFjLmgK
IHdlYmtpdC5vcmcvYi8xMDQ0NDIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC11cmwtcmVmZXJlbmNlLWNoYW5nZS1mcm9t
LWVtcHR5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMjk1MTAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2Ns
aXAtcGF0aC1kZXNjZW5kYW50LXRleHQtbXV0YXRlZC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogCi0jIENTUyBzaGFwZSgpCi13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hh
cGUtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2Ns
aXAtcGF0aC1zaGFwZS0wMDItdW5pdHMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFz
a2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRo
LXNoYXBlLWludGVycG9sYXRpb24tMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1h
c2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS1pbnRlcnBvbGF0aW9uLTAwMi5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCi0KIHdlYmtpdC5vcmcvYi8yMjkzNzAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC9jbGlwLWZpbHRlci1vcmRlci5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjI5MzcwIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL21hc2staW1hZ2UvbWFzay1pbWFn
ZS11cmwtbG9jYWwtbWFzay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MjI5MzcwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL21h
c2staW1hZ2UvbWFzay1pbWFnZS11cmwtcmVtb3RlLW1hc2suaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWwK
aW5kZXggNDZlMDk4YzRlYjY0ODlmYzQ0MzAxZDZiZjliMjQzZTgzNmIyY2EzMS4uMzFlOTdjOTE0
NzQ0OGFhODQ5MjY0MmU0MTk2YWE5MWI1Y2E2YTQ4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRo
L2NsaXAtcGF0aC1zaGFwZS0wMDMtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xp
cC1wYXRoLXNoYXBlLTAwMy1leHBlY3RlZC5odG1sCkBAIC05LDE0ICs5LDIzIEBACiAgICAgd2lk
dGg6IDEwMHB4OwogICAgIGhlaWdodDogMTAwcHg7CiAgIH0KLSAgI3JlZiB7Ci0gICAgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47CisKKyAgI3JlZiwgI2FjdHVhbCB7CiAgICAgY2xpcC1wYXRoOiBw
YXRoKG5vbnplcm8sICJNIDEwIDEwLCBRIDQwIDAgNjAgMjAsIFQgOTAgMCwgYyAxMCA0MCAyMCAy
MCAtMjAgNjAsIHMgLTEwIDcwIC00MCAtMTAiKTsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAg
IH0KKworICAjcmVmIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgIH0KKworICAjYWN0
dWFsIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgfQogPC9zdHlsZT4KIDxib2R5
PgogICA8cD5Zb3Ugc2hvdWxkIHNlZSBubyByZWQuPC9wPgogICA8ZGl2IGlkPSJyZWYiPjwvZGl2
PgorICA8ZGl2IGlkPSJhY3R1YWwiPjwvZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1h
c2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9j
bGlwLXBhdGgtc2hhcGUtMDAzLmh0bWwKaW5kZXggMjJlN2Q5YWFmNTM3NGM5YjdlNGUzYzJkNTBl
Y2VmYmNlYzEzNGI2Ni4uZTAxNzA5MDA1YWM4Y2Y4ZTM1ZDA2MmE2ODU3YjY0NjI3YjVlYmUwOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2lu
Zy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy5odG1sCkBAIC02LDYgKzYsNyBAQAogICA8
bGluayByZWw9Im1hdGNoIiBocmVmPSJyZWZlcmVuY2UvY2xpcC1wYXRoLXNoYXBlLTAwMy1yZWYu
aHRtbCI+CiAgIDxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iVGhlIGNsaXAtcGF0aCBwcm9w
ZXJ0eSB0YWtlcyB0aGUgYmFzaWMgc2hhcGUKIAknc2hhcGUoKScgZm9yIGNsaXBwaW5nLiBUZXN0
IGN1cnZlcy4iPgorICA8bWV0YSBuYW1lPSJmdXp6eSIgY29udGVudD0ibWF4RGlmZmVyZW5jZT04
MDsgdG90YWxQaXhlbHM9Mzk0Ij4KIDwvaGVhZD4KIDxzdHlsZT4KICAgZGl2IHsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1t
YXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9j
bGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwNC1leHBlY3RlZC5odG1sCmluZGV4IGVjOGY5NDEw
Nzk1MTM4ZjdhMzQ5MGQ3YTQxNjliNWViZDVlMzc0NzQuLjEwZjQ1N2I5MTE4NGYxMDEzMDY4OWEy
NzMwNWZjMmRkMzY2ZTI4MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hh
cGUtMDA0LWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0w
MDQtZXhwZWN0ZWQuaHRtbApAQCAtOSwxNCArOSwyMyBAQAogICAgIHdpZHRoOiAxMDBweDsKICAg
ICBoZWlnaHQ6IDEwMHB4OwogICB9Ci0gICNyZWYgewotICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworCisgICNyZWYsICNhY3R1YWwgewogICAgIGNsaXAtcGF0aDogcGF0aChub256ZXJvLCAi
TSAyMCAyMCBBIDI1IDEyIDAgMCAxIDgwIDIwLCBhIDMzIDMzIDEyMCAxIDEgLTQwIDUwLCBBIDIw
IDI1IDAgMCAwIDIwIDIwIik7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICB9CisKKyAgI3Jl
ZiB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICB9CisKKyAgI2FjdHVhbCB7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgIH0KIDwvc3R5bGU+CiA8Ym9keT4KICAgPHA+WW91
IHNob3VsZCBzZWUgbm8gcmVkLjwvcD4KICAgPGRpdiBpZD0icmVmIj48L2Rpdj4KKyAgPGRpdiBp
ZD0iYWN0dWFsIj48L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL3BhcnNp
bmcvY2xpcC1wYXRoLXNoYXBlLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvcGFyc2luZy9jbGlw
LXBhdGgtc2hhcGUtcGFyc2luZy1leHBlY3RlZC50eHQKaW5kZXggZTk0YWVlOGI2YjRjYjA0Zjdh
ZmU4MmFkNjViM2MxNDhiYzQxMTI1Zi4uZTA1ODBlZGZjMWQ4ZWYzMjc3NWI1ZDk2ZjM4N2VlNWU3
YTQ3YTMwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2luZy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2luZy1leHBl
Y3RlZC50eHQKQEAgLTEsMjQgKzEsMjQgQEAKIAotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9
ICJzaGFwZShmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUg
cHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQg
Z290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hh
cGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0
aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBz
ZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAi
c2hhcGUobm9uemVybyBmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNl
dCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBi
ZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10g
PSAic2hhcGUoICBmcm9tIDBweCAgICAwcHgsIGxpbmUgIHRvIDEwcHggIDEwcHggICAgICkiIHNo
b3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBz
aG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAt
cGF0aCddID0gInNoYXBlKGZyb20gMWVtIDUwJSwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQg
c2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxk
IGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgn
XSA9ICJzaGFwZShFdmVuT2RkIGZyb20gMHB4IDBQeCwgQ0xPU0UpIiBzaG91bGQgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBn
b3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShmcm9tIDFjaCA1MHB4LCBsaW5lIHRvIDEwcmVtIDEwdmgpIiBzaG91bGQgc2V0IHRoZSBwcm9w
ZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3Qg
ZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShm
cm9tIDFjaCAtNTBweCwgbGluZSB0byAtMTAlIDEycHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0
eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlz
YWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9t
IDEwcHggMTBweCwgbW92ZSBieSAxMHB4IDVweCwgbGluZSBieSAyMHB4IDQwJSwgY2xvc2UpIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkg
c2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlw
LXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgaGxpbmUgYnkgMTBweCwgdmxpbmUgdG8g
NXJlbSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBw
cm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5
bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCB2bGluZSBieSA1JSwgaGxp
bmUgdG8gMXZ3KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVh
bHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwg
ZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUw
cHggMjBweCB2aWEgMTByZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3Nl
cnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1
ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwg
Y3VydmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQgc2V0IHRo
ZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNl
dCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJz
aGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUgYnkgNTBweCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2
aCAxY2gpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczog
cHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0
eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgc21vb3RoIHRvIDUwcHgg
MjBweCB2aWEgMTByZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRf
bm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAi
IgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgc21v
b3RoIHRvIDUwcHggMXB0KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25v
dF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIK
LUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGFyYyB0
byA1MHB4IDFwdCBvZiAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBh
c3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2
YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBw
eCwgYXJjIHRvIDUwcHggMXB0IG9mIDEwcHggMTBweCBzbWFsbCByb3RhdGUgMGRlZykiIHNob3Vs
ZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91
bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0
aCddID0gInNoYXBlKGZyb20gMTAlIDFyZW0sIGFyYyB0byA1MHB4IDFwdCBvZiAyMCUgY3cgbGFy
Z2Ugcm90YXRlIDI1ZGVnKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25v
dF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIK
LUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgs
IGNsb3NlKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6
IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKK1BBU1MgZS5z
dHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBw
eCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0
aCddID0gInNoYXBlKGV2ZW5vZGQgZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNo
b3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0g
InNoYXBlKG5vbnplcm8gZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBz
ZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBl
KCAgZnJvbSAwcHggICAgMHB4LCBsaW5lICB0byAxMHB4ICAxMHB4ICAgICApIiBzaG91bGQgc2V0
IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShm
cm9tIDFlbSA1MCUsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkg
dmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoRXZlbk9kZCBmcm9tIDBw
eCAwUHgsIENMT1NFKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHls
ZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxY2ggNTBweCwgbGluZSB0byAxMHJlbSAxMHZo
KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRo
J10gPSAic2hhcGUoZnJvbSAxY2ggLTUwcHgsIGxpbmUgdG8gLTEwJSAxMnB4KSIgc2hvdWxkIHNl
dCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUo
ZnJvbSAxMHB4IDEwcHgsIG1vdmUgYnkgMTBweCA1cHgsIGxpbmUgYnkgMjBweCA0MCUsIGNsb3Nl
KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRo
J10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGhsaW5lIGJ5IDEwcHgsIHZsaW5lIHRvIDVyZW0p
IiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgn
XSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgdmxpbmUgYnkgNSUsIGhsaW5lIHRvIDF2dykiIHNo
b3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0g
InNoYXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEwcmVtIDElKSIg
c2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10g
PSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUwcHggMjBweCB2aWEgMTByZW0gMXB4
IDIwdmggMWNoKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Y2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIGJ5IDUwcHggMjBweCB2
aWEgMTByZW0gMXB4IDIwdmggMWNoKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BB
U1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIHNtb290aCB0
byA1MHB4IDIwcHggdmlhIDEwcmVtIDElKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUK
K1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIHNtb290
aCB0byA1MHB4IDFwdCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5
bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBhcmMgdG8gNTBweCAxcHQg
b2YgMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHls
ZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGFyYyB0byA1MHB4IDFwdCBv
ZiAxMHB4IDEwcHggc21hbGwgcm90YXRlIDBkZWcpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwJSAxcmVtLCBh
cmMgdG8gNTBweCAxcHQgb2YgMjAlIGN3IGxhcmdlIHJvdGF0ZSAyNWRlZykiIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGV2
ZW5vZGQgZnJvbSAwcHggMHB4LCBjbG9zZSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVl
CiBQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGV2ZW5vZGQgZnJvbSAwcHggMHB4
LCBjbG9zZSBwYXRoKSIgc2hvdWxkIG5vdCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCiBQQVNTIGUu
c3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKG5vbnplcm8sIGZyb20gMHB4IDBweCwgbGluZSB0
byAxMHB4IDEwcHgpIiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkgdmFsdWUKIFBBU1MgZS5z
dHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUwcHgg
MjBweCB2aWEgMTByZW0pIiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkgdmFsdWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457889</attachid>
            <date>2022-04-19 07:24:20 -0700</date>
            <delta_ts>2022-04-19 07:34:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238371-20220419172417.patch</filename>
            <type>text/plain</type>
            <size>97496</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0MDhiYzRlZDIxNmNh
YWM1ZWVlZTUyMDkyNWQ3NzYzOGU0M2QwZC4uYzhmMjI3MTg0NDc0MGQ5Njc0Mjg0YzY3ODkyNGUx
ZjgwODQyODU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0xOSAgTm9h
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFk
ZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBDU1Mgc2hhcGUoKSBieSBpbnRyb2R1Y2luZyBzaGFwZSBzZWdtZW50IGFuZCBCYXNpY1NoYXBl
U2hhcGUuCisgICAgICAgIFNoYXBlU2hhcGUgaXMgYSB2ZWN0b3Igb2Ygc2hhcGUgc2VnbWVudHMs
IHdoZXJlIGVhY2ggc2VnbWVudCBibGVuZHMgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgVGhlIHNo
YXBlIHVsdGltYXRlbHkgY3JlYXRlcyBhbiBTVkdQYXRoU291cmNlIHRvIGNvbnZlcnQgdGhlIHJl
c3BvbnNpdmUgc2hhcGUsIHdoaWNoCisgICAgICAgIGlzIGJhc2VkIG9uIExlbmd0aCB2YWx1ZXMs
IHRvIGFuIGFic29sdXRlIFBhdGggb2JqZWN0IHRoYXQgY2FuIGJlIGRyYXduLgorCisgICAgICAg
IFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXNoYXBlcy0yLyNzaGFwZS1mdW5jdGlv
bgorCisgICAgICAgIFVuc2tpcHBlZCBzZXZlcmFsIHJlbGV2YW50IFdQVHMuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgICAgICBOZXcgZmlsZXMg
YWRkZWQKKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZhbHVlRm9yQmFzaWNTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9MZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpiYXNpY1NoYXBlRm9yVmFsdWUpOgor
ICAgICAgICAgICAgICAgIEFkZGVkIHRoZSBCYXNpY1NoYXBlU2hhcGUgdHlwZQorCisgICAgICAg
ICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Q1NTQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2lj
U2hhcGVTaGFwZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6
CisgICAgICAgICAgICAgICAgQWRkZWQgdGhlIENTU0Jhc2ljU2hhcGVTaGFwZQorCisgICAgICAg
ICogY3NzL0NTU1NoYXBlU2VnbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
aGFwZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NT
U2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudDo6Q1NTU2hh
cGVTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OnRhcmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6YXJndW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OmFmZmluaXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjphcHBlbmRBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpDU1NTaGFwZVNlZ21l
bnRWYWx1ZSk6CisgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB0byBkbyB3aXRoIHRoZSBzZWdt
ZW50IG9mIHRoZSBzaGFwZSB3aGlsZSBpbiBDU1Mgc3BhY2UsCisgICAgICAgICAgICAgICAgaW5j
bHVkaW5nIHNlcmlhbGl6YXRpb24gZm9yIGdldENvbXB1dGVkU3R5bGUoKQorCisgICAgICAgICog
Y3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzU2hhcGVTZWdtZW50VmFsdWUgY29uc3Qp
OgorICAgICAgICAgICAgICAgIENTU1NoYXBlU2VnbWVudCBpcyBhIHR5cGUgb2YgdmFsdWUKKwor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAgICAgICAgIE5ldyBr
ZXl3b3JkcyBmb3Igc2hhcGUoKQorCisgICAgICAgICogY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9u
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFBvaW50VG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0FyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6dG9DU1NB
cmdzPExlbmd0aFBvaW50Pik6CisgICAgICAgIChXZWJDb3JlOjp0b0NTU1NoYXBlU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpzZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpmcm9t
Q1NTU2hhcGVTZWdtZW50KToKKyAgICAgICAgKiBjc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmg6
IEFkZGVkLgorICAgICAgICAgICAgICAgIENvbnZlcnRpbmcgc2hhcGUgc2VnbWVudHMgdG8vZnJv
bSBDU1Mgc3BhY2UKKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNoYXBlU2VnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVC
YXNpY1NoYXBlKToKKyAgICAgICAgICAgICAgICBQYXJzZSBhIHNoYXBlIHByb3BlcnR5CisKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OnZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzaWNTaGFwZVNlZ21lbnQ6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6YmxlbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFyY1RvU2hhcGVTZWdWYWx1
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVu
dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6Y3Jl
YXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50OjpCYXNp
Y1NoYXBlU2VnbWVudCk6CisgICAgICAgICAgICAgICAgQmxlbmRpbmcsIGNvbXBhcmluZyBhbmQg
Y29udmVydGluZyB0byBhYnNvbHV0ZSBwYXRoCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhCb3g6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhC
b3g6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1Bh
dGhQb2xpY3k6OmlzS2V5TnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVNlZ21lbnRzUGF0
aFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU2hh
cGVTZWdtZW50c1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpCYXNp
Y1NoYXBlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpwYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6YmxlbmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZVNoYXBlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2V0V2luZFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpmcm9tIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlU2hhcGU6OmF0IGNvbnN0KToKKyAgICAgICAgICAgICAgICBBZGQgQmFz
aWNTaGFwZVNoYXBlCisKIDIwMjItMDQtMTggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgUGxhdGZvcm1NZWRpYUVuZ2luZUNsYXNzTmFt
ZSBtYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODBiYmVhOGU3MjM0ZjA1NWVmZDZlMzQwMDc1
MGIzN2YzMzE3OGNhZS4uNDAxMTNhOGU2MzkzYWQ0Y2JhNmE4ODBjYWVhMmJhYWNkNDJhYzQ0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC01NTQsNiArNTU0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9DU1NSdWxlTGlzdC5oCiAgICAgY3NzL0NTU1Nl
bGVjdG9yLmgKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKyAgICBjc3MvQ1NTU2hhcGVTZWdt
ZW50LmgKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCiAgICAgY3NzL0NTU1N0eWxlUnVs
ZS5oCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtNTgwLDYgKzU4MSw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBjc3MvTWVkaWFRdWVyeUV4cHJlc3Np
b24uaAogICAgIGNzcy9NZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5oCiAgICAgY3NzL1JlY3QuaAor
ICAgIGNzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMuaAogICAgIGNzcy9TdHlsZUNvbG9yLmgKICAg
ICBjc3MvU3R5bGVQcm9wZXJ0aWVzLmgKICAgICBjc3MvU3R5bGVSdWxlLmgKQEAgLTE4ODcsNiAr
MTg4OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmgKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUlu
Zm8uaAogCisgICAgcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmgKICAgICByZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAogICAgIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRh
LmgKICAgICByZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAw
YWYzZDA2YTViMGJiYzY4ZmMwMTEzM2JjY2ZlMWYyY2Q5NzBlODllLi4xNWFhODI2MjY5YzNjODc4
NDZhZjVmYmQ0MzVlMDNjYjJiOGVjMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNzcxLDYgKzc3MSw3
IEBAIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKIGNzcy9DU1NTZWxlY3Rvci5jcHAKIGNz
cy9DU1NTZWxlY3Rvckxpc3QuY3BwCiBjc3MvQ1NTU2hhZG93VmFsdWUuY3BwCitjc3MvQ1NTU2hh
cGVTZWdtZW50LmNwcAogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCiBjc3MvQ1NTU3R5bGVS
dWxlLmNwcAogY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC04MTIsNiArODEzLDcgQEAgY3NzL1By
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcAogY3NzL1NlbGVjdG9yRmls
dGVyLmNwcAorY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAKIGNzcy9TdHlsZUNvbG9yLmNw
cAogY3NzL1N0eWxlTWVkaWEuY3BwCiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMjQ0OSw2
ICsyNDUxLDcgQEAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAKIHJlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwCiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3Bw
CiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCityZW5kZXJpbmcvc3R5bGUvQmFzaWNT
aGFwZVNlZ21lbnQuY3BwCiByZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5jcHAKIHJlbmRlcmlu
Zy9zdHlsZS9Db250ZW50RGF0YS5jcHAKIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYTYxNzYzOWRmNzIwNmZjNDg0NTcwNDhlZTQ0YmE4OTQzYzUyYzdhMi4uZjU0MTkwODIzN2Q2
MTU0YmU0MjBlZDY3YzkwODVlNjQ1OWQwNDU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ1Miw2ICs0NDUyLDEwIEBACiAJ
CUNBM0JGNjdFMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EzQkY2N0QxMEQ5OUJBRTAwRTZD
RTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0E2QzE1MzAyMjBCOThDQzAwNTVDQkZDIC8qIEpTVmFsdWVJbldy
YXBwZWRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMUFFM0I4MUZCODBFQUUwMEY1RUZCMiAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0E3RTlC
NDkyNDM2MURDNTAwNEU4OUY2IC8qIENvbnRlbnRmdWxQYWludENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBN0U5QjQ3MjQzNjFEQzUwMDRF
ODlGNiAvKiBDb250ZW50ZnVsUGFpbnRDaGVja2VyLmggKi87IH07CisJCUNBODE2Q0I2Mjc3ODQ4
MjAwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0E4MTZDQjMyNzc4NDgxRTAwMkJEM0M2IC8qIEJhc2lj
U2hhcGVTZWdtZW50LmggKi87IH07CisJCUNBODE2Q0I5Mjc3ODQ4MkUwMDJCRDNDNiAvKiBDU1NT
aGFwZVNlZ21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENBODE2Q0I4Mjc3ODQ4MkUwMDJCRDNDNiAvKiBDU1NTaGFwZVNlZ21lbnQuaCAqLzsgfTsK
KwkJQ0E4MTZDQkMyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTgxNkNCQTI3
Nzg5QUEyMDAyQkQzQzYgLyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmNwcCAqLzsgfTsKKwkJQ0E4
MTZDQkQyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0E4MTZDQkIyNzc4OUFBNzAw
MkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oICovOyB9OwogCQlDQUU5RjkxMDE0NjQ0
MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIwIC8qIENT
U0FzcGVjdFJhdGlvVmFsdWUuaCAqLzsgfTsKIAkJQ0IzOEZENTIxQ0NGOTM5NDAwNTkyQTNGIC8q
IEpTUGVyZm9ybWFuY2VFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0IzOEZENEUxQ0NGOTM3RTAwNTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VFbnRy
eS5oICovOyB9OwogCQlDQjM4RkQ1QjFDRDIzMjVCMDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDQjM4RkQ1OTFDRDIzMTQ1MDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nLmggKi87IH07CkBAIC0xNTk0Nyw2ICsxNTk1MSw3IEBACiAJCUNBMDkxRDg2MjNDRjkwNzgw
MEFENDM0NiAvKiBTdHlsZUltYWdlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlSW1h
Z2VTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTA5MUQ4OTIzQ0Y5MDg4
MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUltYWdlU2V0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMTYzNURDMjA3MkU3NjkwMEU3RDJD
RSAvKiBSZWZlcnJlclBvbGljeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZWZlcnJlclBvbGljeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNB
MTY2Q0NCMjc4MDY4N0QwMDQ1MjJCMyAvKiBDU1NTaGFwZVNlZ21lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ1NTU2hhcGVTZWdtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0ExOTMzRDUyNDA3RDY0MDAwNzEyNDFBIC8qIFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VQYWludFRpbWluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDQTE5MzNEODI0MDdFRENGMDA3MTI0MUEgLyogUGVyZm9ybWFuY2VQYWlu
dFRpbWluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGVyZm9ybWFuY2VQYWludFRpbWlu
Zy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0E0QUFCMjU0MTZFM0MwMDZD
REFFMiAvKiBJbWFnZVJlc29sdXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW1hZ2VSZXNvbHV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE1OTYyLDYgKzE1OTY3LDExIEBACiAJCUNBNkMxNTM4MjIwRDFFQjMwMDU1Q0JGQyAvKiBK
U0lEQkN1cnNvcldpdGhWYWx1ZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0lEQkN1cnNvcldpdGhWYWx1ZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNBN0U5QjQ3MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFp
bnRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRmdWxQ
YWludENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0E3RTlCNDgyNDM2
MURDNTAwNEU4OUY2IC8qIENvbnRlbnRmdWxQYWludENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudGZ1bFBhaW50Q2hlY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNBODE2Q0IzMjc3ODQ4MUUwMDJCRDNDNiAvKiBCYXNp
Y1NoYXBlU2VnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNpY1No
YXBlU2VnbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCNDI3Nzg0
ODFGMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1NoYXBlU2VnbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCQTI3Nzg5QUEyMDAyQkQzQzYgLyog
U2hhcGVTZWdtZW50RnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRGdW5jdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcGVTZWdtZW50RnVuY3Rpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBRTlGOTBEMTQ2NDQxRjAwMEMyNDVC
MCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENTU0FzcGVjdFJhdGlvVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDQUU5RjkwRTE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNCMzhGRDRBMUNDQ0YyREQwMDU5MkEzRiAv
KiBQZXJmb3JtYW5jZUVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBlcmZvcm1hbmNlRW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Mjk2ODgsNiArMjk2OTgsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRkJENkFGODIxNUVGMjFB
MzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmNwcCAqLywKIAkJCQlGQkQ2QUY4MzE1RUYyMUEzMDA4
QjcxMTAgLyogQmFzaWNTaGFwZXMuaCAqLywKKwkJCQlDQTgxNkNCNDI3Nzg0ODFGMDAyQkQzQzYg
LyogQmFzaWNTaGFwZVNlZ21lbnQuY3BwICovLAorCQkJCUNBODE2Q0IzMjc3ODQ4MUUwMDJCRDND
NiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oICovLAogCQkJCTBGMjgzQTkxMjM1NjMxMjYwMDQ3OTRD
QSAvKiBCb3JkZXJEYXRhLmNwcCAqLywKIAkJCQlCQzVFQjVFMDBFODFCRTg3MDBCMjU5NjUgLyog
Qm9yZGVyRGF0YS5oICovLAogCQkJCUJDNUVCNURBMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJW
YWx1ZS5oICovLApAQCAtMzE5NjEsNiArMzE5NzMsOCBAQAogCQkJCUU0QzE3ODk2MEVFNjkwMzgw
MDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCAqLywKIAkJCQlBODBFNkNDQTBBMTk4OUNBMDA3
RkI4QzUgLyogQ1NTU2hhZG93VmFsdWUuY3BwICovLAogCQkJCUE4MEU2Q0JFMEExOTg5Q0EwMDdG
QjhDNSAvKiBDU1NTaGFkb3dWYWx1ZS5oICovLAorCQkJCUNBMTY2Q0NCMjc4MDY4N0QwMDQ1MjJC
MyAvKiBDU1NTaGFwZVNlZ21lbnQuY3BwICovLAorCQkJCUNBODE2Q0I4Mjc3ODQ4MkUwMDJCRDND
NiAvKiBDU1NTaGFwZVNlZ21lbnQuaCAqLywKIAkJCQk3Q0RFOEVCQzFGMTkzQkM1MDAxNjhGRTcg
LyogQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgKi8sCiAJCQkJQTgwRTZFMEQwQTE5OTExQzAwN0ZC
OEM1IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaCAqLywKIAkJCQkxNDIwMTFBRTBBMDAzMTE3MDA4
MzAzRjkgLyogQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwgKi8sCkBAIC0zMjA5Niw2ICszMjExMCw4
IEBACiAJCQkJNDNCODVFRDYxOENCRUM5NzAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NB
bmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5pbiAqLywKIAkJCQkyNkFBMEY5QTE4RDI5NzNEMDA0
MTkzODEgLyogU2VsZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5pbiAqLywKIAkJCQk0MzEwN0JF
MTE4Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggKi8sCisJCQkJQ0E4
MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgKi8sCisJ
CQkJQ0E4MTZDQkIyNzc4OUFBNzAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oICov
LAogCQkJCTk0MTgyNzg4MUQ4QjI0MjIwMDQ5Mjc2NCAvKiBTdHlsZUNvbG9yLmNwcCAqLywKIAkJ
CQk5NDE4Mjc4OTFEOEIyNDIyMDA0OTI3NjQgLyogU3R5bGVDb2xvci5oICovLAogCQkJCTBGRjUw
MjZFMTAyQkE5NjYwMDY2RjM5QSAvKiBTdHlsZU1lZGlhLmNwcCAqLywKQEAgLTMzODU2LDYgKzMz
ODcyLDcgQEAKIAkJCQk3MTU2QkNBMTIxQ0EzNTBGMDA1MzQzOTcgLyogQmFzaWNFZmZlY3RUaW1p
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCRDZBRjhBMTVFRjI1REYwMDhCNzExMCAvKiBCYXNp
Y1NoYXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4QzE1RUYyNjA0MDA4
QjcxMTAgLyogQmFzaWNTaGFwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNBODE2Q0I2Mjc3ODQ4
MjAwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIy
M0EzMjgwOUJCQTdEMDAwNjdDQzUzIC8qIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NTAzMUIzRDBBNDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5sb2FkRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTI0MEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRp
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDM0Nyw2ICszNDM2NCw3IEBACiAJCQkJRTRD
MTc4OUIwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTRERTVDOEUxRDgwODAyNzAwMTY0RjJBIC8qIENTU1NlbGVjdG9yUGFyc2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODBFNkNFODBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU2hhZG93VmFs
dWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNBODE2Q0I5Mjc3ODQ4MkUwMDJCRDNDNiAvKiBDU1NT
aGFwZVNlZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNTM4QTJBMjZGMDEwNDIwMDk2NUZD
OCAvKiBDU1NTa2V3LmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTUzOEEyQjI2RjAxMDQ1MDA5NjVG
QzggLyogQ1NTU2tld1guaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNTM4QTJDMjZGMDEwNDgwMDk2
NUZDOCAvKiBDU1NTa2V3WS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzQ4NCw2ICszNzUwMiw3IEBA
CiAJCQkJRkQ0NUE5NEYxNzVEM0YzRTAwQzIxRUM4IC8qIFNoYXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDQ1QTk1QjE3NUQ0MUVFMDBDMjFFQzggLyogU2hhcGVJbnRlcnZhbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQ0NUE5NTIxNzVEM0YzRTAwQzIxRUM4IC8qIFNoYXBlT3V0c2lkZUluZm8u
aCBpbiBIZWFkZXJzICovLAorCQkJCUNBODE2Q0JEMjc3ODlBQUQwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMUFGMTUwMTY1NkYxNTEwMEM2
RDRGNyAvKiBTaGFwZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRDlGMEZDMTIxMjIwMjlC
MDA1RDhGRDQgLyogU2hhcmVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOTU0RTBCNEVE
Q0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTM5MDMwLDYg
KzM5MDQ5LDcgQEAKIAkJCQk0M0I4NUVENDE4Q0JFQzUyMDBFMzFBRjQgLyogU2VsZWN0b3JQc2V1
ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTI2QUEwRjlFMThEMkExOEIwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFw
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRDU4REZEMUY5NTY1QTgwMDExMjc5MSAvKiBTZXR0
aW5ncy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDQTgxNkNCQzI3Nzg5QUFEMDAyQkQzQzYgLyog
U2hhcGVTZWdtZW50RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxREYyRDVFMjdB
OTQ1MkEwMEYyNUEyMSAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUzOEYxMEE4MUY5MDIyQTQwMDUxMDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0RDOEI1QUExODA0N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNT
aGFwZUZ1bmN0aW9ucy5jcHAKaW5kZXggOWRmMmNmZjc5NTdlNDVkODliNzIxYTcxZTc1ZTI4ZDg1
YTVlNzlhNy4uMTc3MjIyNmFmZWI3M2Q4NDQ5NTk3ZDZhZGUzNjgzZTY3YjFkNWNhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcApAQCAtMzAsMTMgKzMwLDE2
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQmFzaWNTaGFwZUZ1bmN0aW9ucy5o
IgogCisjaW5jbHVkZSAiQmFzaWNTaGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJCYXNpY1NoYXBl
cy5oIgogI2luY2x1ZGUgIkNTU0Jhc2ljU2hhcGVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZl
VmFsdWVNYXBwaW5ncy5oIgorI2luY2x1ZGUgIkNTU1NoYXBlU2VnbWVudC5oIgogI2luY2x1ZGUg
IkNTU1ZhbHVlUG9vbC5oIgogI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtLmgiCisjaW5jbHVkZSAiU2hhcGVTZWdt
ZW50RnVuY3Rpb25zLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTU0LDYgKzE1Nywy
MiBAQCBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlRm9yQmFzaWNTaGFwZShjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJhc2ljUwogICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBX
VEZNb3ZlKGluc2V0VmFsdWUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBCYXNp
Y1NoYXBlOjpUeXBlOjpTaGFwZTogeworICAgICAgICBhdXRvJiBzaGFwZSA9IGRvd25jYXN0PEJh
c2ljU2hhcGVTaGFwZT4oYmFzaWNTaGFwZSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICBhdXRvIHNpemUgPSBzaGFw
ZS5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAg
ICAgICAgICAgcmVzdWx0LT5hcHBlbmQodG9DU1NTaGFwZVNlZ21lbnQoc3R5bGUsIHNoYXBlLmF0
KGkpKSk7CisKKyAgICAgICAgYXV0byBmcm9tID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKFBh
aXI6OmNyZWF0ZSgKKyAgICAgICAgICAgIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzaGFwZS5m
cm9tKCkueCgpLCBzdHlsZSksCisgICAgICAgICAgICBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c2hhcGUuZnJvbSgpLnkoKSwgc3R5bGUpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpE
b05vdENvYWxlc2NlKSk7CisKKyAgICAgICAgYXV0byBzaGFwZVZhbHVlID0gQ1NTQmFzaWNTaGFw
ZVNoYXBlOjpjcmVhdGUoV1RGTW92ZShmcm9tKSwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAg
c2hhcGVWYWx1ZS0+c2V0V2luZFJ1bGUoc2hhcGUud2luZFJ1bGUoKSk7CisgICAgICAgIGJhc2lj
U2hhcGVWYWx1ZSA9IFdURk1vdmUoc2hhcGVWYWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICB9CiAKICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJhc2ljU2hhcGVW
YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTE2NCw2ICsxODMsMTIgQEAgc3RhdGljIExlbmd0
aCBjb252ZXJ0VG9MZW5ndGgoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVy
c2lvbkRhdGEsIGMKICAgICByZXR1cm4gdmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVn
ZXJDb252ZXJzaW9uIHwgRml4ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8
IENhbGN1bGF0ZWRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CiB9CiAKK3N0YXRpYyBMZW5n
dGhQb2ludCBjb252ZXJ0VG9MZW5ndGhQb2ludChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiBjb252ZXJzaW9uRGF0YSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoreworICAgIGF1dG8m
IHBhaXIgPSAqKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkucGFpclZhbHVlKCkp
OworICAgIHJldHVybiB7IGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci5maXJz
dCgpKSwgY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLnNlY29uZCgpKSB9Owor
fQorCiBzdGF0aWMgTGVuZ3RoU2l6ZSBjb252ZXJ0VG9MZW5ndGhTaXplKGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1
ZSogdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTI5Nyw2ICszMjIsMjAgQEAgUmVmPEJh
c2ljU2hhcGU+IGJhc2ljU2hhcGVGb3JWYWx1ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiBjb252ZXJzaW9uRGEKICAgICAgICAgYmFzaWNTaGFwZSA9IFdURk1vdmUocGF0aCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIENTU0Jhc2ljU2hhcGU6OkNTU0Jhc2ljU2hh
cGVTaGFwZVR5cGU6IHsKKyAgICAgICAgYXV0byYgc2hhcGVWYWx1ZSA9IGRvd25jYXN0PENTU0Jh
c2ljU2hhcGVTaGFwZT4oYmFzaWNTaGFwZVZhbHVlKTsKKyAgICAgICAgY29uc3QgYXV0byYgY3Nz
U2VnbWVudHMgPSBzaGFwZVZhbHVlLnNlZ21lbnRzKCk7CisgICAgICAgIFZlY3RvcjxSZWY8QmFz
aWNTaGFwZVNlZ21lbnQ+PiBzZWdtZW50cyhjc3NTZWdtZW50cy5sZW5ndGgoKSk7CisgICAgICAg
IHN0ZDo6dHJhbnNmb3JtKHN0ZDo6YmVnaW4oY3NzU2VnbWVudHMpLCBzdGQ6OmVuZChjc3NTZWdt
ZW50cyksIHNlZ21lbnRzLmJlZ2luKCksIFsmXSAoY29uc3QgYXV0byYgY3NzU2VnbWVudCkgewor
ICAgICAgICAgICAgcmV0dXJuIGZyb21DU1NTaGFwZVNlZ21lbnQoY29udmVyc2lvbkRhdGEsIGRv
d25jYXN0PENTU1NoYXBlU2VnbWVudD4oY3NzU2VnbWVudC5nZXQoKSkpOworICAgICAgICB9KTsK
KworICAgICAgICBhdXRvIHNoYXBlID0gQmFzaWNTaGFwZVNoYXBlOjpjcmVhdGUoY29udmVydFRv
TGVuZ3RoUG9pbnQoY29udmVyc2lvbkRhdGEsIHNoYXBlVmFsdWUuZnJvbSgpKSwgV1RGTW92ZShz
ZWdtZW50cykpOworICAgICAgICBzaGFwZS0+c2V0V2luZFJ1bGUoc2hhcGVWYWx1ZS53aW5kUnVs
ZSgpKTsKKworICAgICAgICBiYXNpY1NoYXBlID0gV1RGTW92ZShzaGFwZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gYmFzaWNTaGFwZS5yZWxlYXNlTm9uTnVs
bCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKaW5kZXggODllMDlmNTcyYzM1
MTYzODNmN2IyNjJkNTQwYzAzZGUwMmU4NDg1MC4uODVmNjc2ZmU2MTY0YWEwYjQwODg4MzFkMDU2
NDg4MzJlNTAwZmI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hh
cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCkBAIC0y
MjIsNiArMjIyLDM4IEBAIGJvb2wgQ1NTQmFzaWNTaGFwZVBhdGg6OmVxdWFscyhjb25zdCBDU1NC
YXNpY1NoYXBlJiBvdGhlclNoYXBlKSBjb25zdAogICAgIHJldHVybiB3aW5kUnVsZSgpID09IG90
aGVyU2hhcGVQYXRoLndpbmRSdWxlKCkgJiYgcGF0aERhdGEoKSA9PSBvdGhlclNoYXBlUGF0aC5w
YXRoRGF0YSgpOwogfQogCitDU1NCYXNpY1NoYXBlU2hhcGU6OkNTU0Jhc2ljU2hhcGVTaGFwZShS
ZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJiBzZWdtZW50cykKKyAgICA6
IG1fc2VnbWVudHMoV1RGTW92ZShzZWdtZW50cykpLCBtX2Zyb20oV1RGTW92ZShmcm9tKSkKK3sg
Cit9CisKK2Jvb2wgQ1NTQmFzaWNTaGFwZVNoYXBlOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFw
ZSYgb3RoZXJTaGFwZSkgY29uc3QKK3sKKyAgICBpZiAoIWlzPENTU0Jhc2ljU2hhcGVTaGFwZT4o
b3RoZXJTaGFwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8mIG90aGVyU2hh
cGVTaGFwZSA9IGRvd25jYXN0PENTU0Jhc2ljU2hhcGVTaGFwZT4ob3RoZXJTaGFwZSk7CisgICAg
cmV0dXJuIHdpbmRSdWxlKCkgPT0gb3RoZXJTaGFwZVNoYXBlLndpbmRSdWxlKCkKKyAgICAgICAg
JiYgZnJvbSgpID09IG90aGVyU2hhcGVTaGFwZS5mcm9tKCkKKyAgICAgICAgJiYgc2VnbWVudHMo
KS5lcXVhbHMob3RoZXJTaGFwZVNoYXBlLnNlZ21lbnRzKCkpOworfQorCitTdHJpbmcgQ1NTQmFz
aWNTaGFwZVNoYXBlOjpjc3NUZXh0KCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgaWYgKHdpbmRSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJzaGFwZShldmVub2RkICIpOworICAgIGVsc2UKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoInNoYXBlKCIpOworCisgICAgYXV0byogcGFpciA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPihmcm9tKCkpLnBhaXJWYWx1ZSgpOworICAgIEFTU0VSVChwYWlyKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCgiZnJvbSAiLCBwYWlyLT5jc3NUZXh0KCksICIsICIpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKHNlZ21lbnRzKCkuY3NzVGV4dCgpLCAiKSIpOworCisgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKK30KKwogc3RhdGljIFN0cmluZyBidWlsZFBvbHlnb25TdHJpbmcoY29u
c3QgV2luZFJ1bGUmIHdpbmRSdWxlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcG9pbnRzKQogewog
ICAgIEFTU0VSVCghKHBvaW50cy5zaXplKCkgJSAyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1No
YXBlcy5oCmluZGV4IDEwNWM0NjA5NDFkNjc0NGU1N2JlN2EzNWQ2YjA0ZmM3M2ZhYmJiZWMuLjE2
MzA2ZGYyOWViOTNhOWRkMzM5ZTBjMmZhNjE0OGNjYTgyNDgzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCYXNpY1NoYXBlcy5oCkBAIC0zOCw2ICszOCwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKK2NsYXNzIENTU1NoYXBlU2VnbWVudDsKK2NsYXNz
IENTU1ByaW1pdGl2ZVZhbHVlUGFpcjsKK2NsYXNzIENTU1ZhbHVlOworY2xhc3MgQ1NTVmFsdWVM
aXN0OwogY2xhc3MgU1ZHUGF0aEJ5dGVTdHJlYW07CiAKIGNsYXNzIENTU0Jhc2ljU2hhcGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxDU1NCYXNpY1NoYXBlPiB7CkBAIC00Nyw3ICs1MSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgQ1NTQmFzaWNTaGFwZUNpcmNsZVR5cGUsCiAgICAgICAgIENTU0Jhc2ljU2hh
cGVFbGxpcHNlVHlwZSwKICAgICAgICAgQ1NTQmFzaWNTaGFwZUluc2V0VHlwZSwKLSAgICAgICAg
Q1NTQmFzaWNTaGFwZVBhdGhUeXBlCisgICAgICAgIENTU0Jhc2ljU2hhcGVQYXRoVHlwZSwKKyAg
ICAgICAgQ1NTQmFzaWNTaGFwZVNoYXBlVHlwZQogICAgIH07CiAKICAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0ID0gMDsKQEAgLTIzMyw2ICsyMzgsMzUgQEAgcHJpdmF0ZToKICAgICBXaW5k
UnVsZSBtX3dpbmRSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKIH07CiAKK2NsYXNzIENTU0Jh
c2ljU2hhcGVTaGFwZSBmaW5hbCA6IHB1YmxpYyBDU1NCYXNpY1NoYXBlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPENTU0Jhc2ljU2hhcGVTaGFwZT4gY3JlYXRlKFJlZjxDU1NWYWx1ZT4mJiBm
cm9tLCBSZWY8Q1NTVmFsdWVMaXN0PiYmIHNlZ21lbnRzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTQmFzaWNTaGFwZVNoYXBlKFdURk1vdmUoZnJvbSksIFdURk1vdmUo
c2VnbWVudHMpKSk7CisgICAgfQorCisgICAgY29uc3QgQ1NTVmFsdWVMaXN0JiBzZWdtZW50cygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zZWdtZW50cy5nZXQoKTsKKyAgICB9CisK
KyAgICB2b2lkIHNldFdpbmRSdWxlKFdpbmRSdWxlIHJ1bGUpIHsgbV93aW5kUnVsZSA9IHJ1bGU7
IH0KKyAgICBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0K
KworICAgIGNvbnN0IENTU1ZhbHVlJiBmcm9tKCkgY29uc3QgeyByZXR1cm4gbV9mcm9tLmdldCgp
OyB9CisKK3ByaXZhdGU6CisgICAgQ1NTQmFzaWNTaGFwZVNoYXBlKFJlZjxDU1NWYWx1ZT4mJiBm
cm9tLCBSZWY8Q1NTVmFsdWVMaXN0PiYmKTsKKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIENTU0Jhc2ljU2hhcGVTaGFwZVR5cGU7IH0KKyAgICBTdHJpbmcgY3NzVGV4dCgp
IGNvbnN0IGZpbmFsOworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25z
dCBmaW5hbDsKKworICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IG1fc2VnbWVudHM7CisgICAgUmVmPENT
U1ZhbHVlPiBtX2Zyb207CisgICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFdpbmRSdWxlOjpOb25a
ZXJvIH07Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNkZWZpbmUgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19DU1NfQkFTSUNfU0hBUEVTKFRvVmFsdWVUeXBlTmFtZSkgXApAQCAtMjQ1
LDMgKzI3OSw0IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NC
YXNpY1NoYXBlQ2lyY2xlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfQkFTSUNfU0hBUEVT
KENTU0Jhc2ljU2hhcGVFbGxpcHNlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfQkFTSUNf
U0hBUEVTKENTU0Jhc2ljU2hhcGVQb2x5Z29uKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1Nf
QkFTSUNfU0hBUEVTKENTU0Jhc2ljU2hhcGVQYXRoKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19D
U1NfQkFTSUNfU0hBUEVTKENTU0Jhc2ljU2hhcGVTaGFwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1No
YXBlU2VnbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA4MDUwY2FmYjg1ODQwOTdmZjlhYjhiMGZlYjgz
MDdhZTdkMDY3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFw
ZVNlZ21lbnQuY3BwCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IE5vYW0gUm9zZW50aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKKworI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBD
U1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZU1vdmVUbyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5p
dHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpCit7CisgICAgcmV0dXJuIENTU1No
YXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoTW92ZVRvLCBhZmZpbml0eSwgV1RGTW92ZSh0YXJnZXQp
KTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5l
VG8oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+
JiYgdGFyZ2V0KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKExp
bmVUbywgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21l
bnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvSG9yaXpvbnRhbChDU1NTaGFwZVNlZ21l
bnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB4KQoreworICAgIHJl
dHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKExpbmVUb0hvcml6b250YWwsIGFmZmlu
aXR5LCBXVEZNb3ZlKHgpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdt
ZW50OjpjcmVhdGVMaW5lVG9WZXJ0aWNhbChDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkg
YWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB5KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21l
bnRWYWx1ZTo6Y3JlYXRlKExpbmVUb1ZlcnRpY2FsLCBhZmZpbml0eSwgV1RGTW92ZSh5KSk7Cit9
CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1
YmljKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVl
PiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxLCBSZWY8Q1NTVmFsdWU+JiYgcDIpCit7Cisg
ICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb0N1YmljLCBhZmZp
bml0eSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHAxKSwgV1RGTW92ZShwMikpOworfQorCitS
ZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9RdWFkcmF0
aWMoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+
JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcDEpCit7CisgICAgcmV0dXJuIENTU1NoYXBlU2Vn
bWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb1F1YWRyYXRpYywgYWZmaW5pdHksIFdURk1vdmUodGFy
Z2V0KSwgV1RGTW92ZShwMSkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNl
Z21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpY1Ntb290aChDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZm
aW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBw
MikKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShDdXJ2ZVRvQ3Vi
aWNTbW9vdGgsIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUocDIpKTsKK30KKwor
UmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJh
dGljU21vb3RoKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENT
U1ZhbHVlPiYmIHRhcmdldCkKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNy
ZWF0ZShDdXJ2ZVRvUXVhZHJhdGljU21vb3RoLCBhZmZpbml0eSwgV1RGTW92ZSh0YXJnZXQpKTsK
K30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVBcmNUbyhD
U1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0
YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiByYWRpdXMsIENTU1ZhbHVlSUQgc3dlZXAsIENTU1ZhbHVl
SUQgc2l6ZSwgUmVmPENTU1ZhbHVlPiYmIGFuZ2xlKQoreworICAgIEFTU0VSVChzd2VlcCA9PSBD
U1NWYWx1ZUNjdyB8fCBzd2VlcCA9PSBDU1NWYWx1ZUN3KTsKKyAgICBBU1NFUlQoc2l6ZSA9PSBD
U1NWYWx1ZVNtYWxsIHx8IHNpemUgPT0gQ1NTVmFsdWVMYXJnZSk7CisgICAgcmV0dXJuIENTU1No
YXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoQXJjVG8sIGFmZmluaXR5LAorICAgICAgICBXVEZNb3Zl
KHRhcmdldCksCisgICAgICAgIFdURk1vdmUocmFkaXVzKSwKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShzd2VlcCksCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c2l6ZSksCisgICAgICAgIFdURk1vdmUoYW5nbGUpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVu
dD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqKG5ldyBDU1NTaGFwZVNlZ21lbnQoQ2xvc2VQYXRoKSkpOworfQorCitib29sIENTU1No
YXBlU2VnbWVudDo6ZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0Cit7
CisgICAgaWYgKHR5cGUoKSAhPSBvdGhlci50eXBlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChtX3R5cGUgPT0gQ2xvc2VQYXRoKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21lbnRWYWx1ZSY+KCp0aGlz
KS5lcXVhbHMoc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUmPihvdGhlcikp
OworfQorCitTdHJpbmcgQ1NTU2hhcGVTZWdtZW50OjpjdXN0b21DU1NUZXh0KCkgY29uc3QKK3sK
KyAgICBpZiAobV90eXBlID09IENTU1NoYXBlU2VnbWVudDo6Q2xvc2VQYXRoKQorICAgICAgICBy
ZXR1cm4gImNsb3NlIl9zOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU1NoYXBl
U2VnbWVudFZhbHVlKj4odGhpcyktPmN1c3RvbUNTU1RleHQoKTsKK30KKworYm9vbCBDU1NTaGFw
ZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0
Cit7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBvdGhlci50eXBlKCkpOworICAgIGNvbnN0IGF1dG8m
IG90aGVyVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21lbnRWYWx1ZSY+KG90
aGVyKTsKKyAgICByZXR1cm4gb3RoZXJWYWx1ZS5tX2FmZmluaXR5ID09IG1fYWZmaW5pdHkKKyAg
ICAgICAgJiYgb3RoZXJWYWx1ZS50YXJnZXQoKS5lcXVhbHModGFyZ2V0KCkpCisgICAgICAgICYm
IG90aGVyVmFsdWUubV9hcmd1bWVudHMuZ2V0KCkuZXF1YWxzKG1fYXJndW1lbnRzLmdldCgpKTsK
K30KKworU3RyaW5nIENTU1NoYXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QK
K3sKKyAgICBjb25zdCBhdXRvIGNvbW1hbmQgPSBbJl0oKSB7CisgICAgICAgIHN3aXRjaCAodHlw
ZSgpKSB7CisgICAgICAgIGNhc2UgTW92ZVRvOgorICAgICAgICAgICAgcmV0dXJuICJtb3ZlIjsK
KyAgICAgICAgY2FzZSBMaW5lVG86CisgICAgICAgICAgICByZXR1cm4gImxpbmUiOworICAgICAg
ICBjYXNlIExpbmVUb0hvcml6b250YWw6CisgICAgICAgICAgICByZXR1cm4gImhsaW5lIjsKKyAg
ICAgICAgY2FzZSBMaW5lVG9WZXJ0aWNhbDoKKyAgICAgICAgICAgIHJldHVybiAidmxpbmUiOwor
ICAgICAgICBjYXNlIEN1cnZlVG9DdWJpYzoKKyAgICAgICAgY2FzZSBDdXJ2ZVRvUXVhZHJhdGlj
OgorICAgICAgICAgICAgcmV0dXJuICJjdXJ2ZSI7CisgICAgICAgIGNhc2UgQ3VydmVUb0N1Ymlj
U21vb3RoOgorICAgICAgICBjYXNlIEN1cnZlVG9RdWFkcmF0aWNTbW9vdGg6CisgICAgICAgICAg
ICByZXR1cm4gInNtb290aCI7CisgICAgICAgIGNhc2UgQXJjVG86CisgICAgICAgICAgICByZXR1
cm4gImFyYyI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorCisgICAgfTsKKworICAg
IGNvbnN0IGF1dG8gY29uanVuY3Rpb24gPSBbJl0oKSB7CisgICAgICAgIHN3aXRjaCAodHlwZSgp
KSB7CisgICAgICAgIGNhc2UgTW92ZVRvOgorICAgICAgICBjYXNlIExpbmVUbzoKKyAgICAgICAg
Y2FzZSBMaW5lVG9Ib3Jpem9udGFsOgorICAgICAgICBjYXNlIExpbmVUb1ZlcnRpY2FsOgorICAg
ICAgICBjYXNlIEN1cnZlVG9RdWFkcmF0aWNTbW9vdGg6CisgICAgICAgICAgICByZXR1cm4gIiI7
CisgICAgICAgIGNhc2UgQ3VydmVUb0N1YmljOgorICAgICAgICBjYXNlIEN1cnZlVG9RdWFkcmF0
aWM6CisgICAgICAgIGNhc2UgQ3VydmVUb0N1YmljU21vb3RoOgorICAgICAgICAgICAgcmV0dXJu
ICIgdmlhICI7CisgICAgICAgIGNhc2UgQXJjVG86CisgICAgICAgICAgICByZXR1cm4gIiBvZiAi
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYXV0byBieVRv
ID0gbV9hZmZpbml0eSA9PSBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRl
ID8gIiB0byAiIDogIiBieSAiOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWls
ZGVyLmFwcGVuZChjb21tYW5kKCksIGJ5VG8sIG1fdGFyZ2V0LT5jc3NUZXh0KCksIGNvbmp1bmN0
aW9uKCkpOworICAgIGlmICh0eXBlKCkgPT0gQXJjVG8pIHsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoYXJndW1lbnQoMCkuY3NzVGV4dCgpKTsKKyAgICAgICAgY29uc3QgYXV0byYgc3dlZXAgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oYXJndW1lbnQoMSkpOworICAgICAgICBjb25zdCBh
dXRvJiBzaXplID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGFyZ3VtZW50KDIpKTsKKyAg
ICAgICAgY29uc3QgYXV0byYgYW5nbGUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oYXJn
dW1lbnQoMykpOworCisgICAgICAgIGlmIChzd2VlcC52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDdykK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgY3ciKTsKKworICAgICAgICBpZiAoc2l6ZS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMYXJnZSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIg
bGFyZ2UiKTsKKworICAgICAgICBpZiAoYW5nbGUuY29tcHV0ZURlZ3JlZXMoKSkKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCIgcm90YXRlICIsIGFuZ2xlLmNzc1RleHQoKSk7CisgICAgfSBl
bHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fYXJndW1lbnRzLT5jc3NUZXh0KCkpOworICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFw
ZVNlZ21lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDA3MzZhMDMzNmYxNWEwNDMxYWE1NTE4YTFhZGNiMjUx
MTgxNzhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYXBlU2Vn
bWVudC5oCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE5vYW0g
Um9zZW50aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1NoYXBlU2VnbWVudCA6IHB1Ymxp
YyBDU1NWYWx1ZSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBDb29yZEFmZmluaXR5IHsKKyAg
ICAgICAgQWJzb2x1dGUsIFJlbGF0aXZlCisgICAgfTsKKworICAgIGVudW0gU2VnbWVudFR5cGUg
eworICAgICAgICBNb3ZlVG8sCisgICAgICAgIExpbmVUbywKKyAgICAgICAgTGluZVRvSG9yaXpv
bnRhbCwKKyAgICAgICAgTGluZVRvVmVydGljYWwsCisgICAgICAgIEN1cnZlVG9DdWJpYywKKyAg
ICAgICAgQ3VydmVUb1F1YWRyYXRpYywKKyAgICAgICAgQ3VydmVUb0N1YmljU21vb3RoLAorICAg
ICAgICBDdXJ2ZVRvUXVhZHJhdGljU21vb3RoLAorICAgICAgICBBcmNUbywKKyAgICAgICAgQ2xv
c2VQYXRoCisgICAgfTsKKworICAgIFNlZ21lbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIp
IGNvbnN0OworICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CisgICAgfkNTU1NoYXBl
U2VnbWVudCgpID0gZGVmYXVsdDsKKworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBj
cmVhdGVDbG9zZVBhdGgoKTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRl
TW92ZVRvKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpOworICAgIHN0YXRp
YyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG8oQ29vcmRBZmZpbml0eSwgUmVmPENT
U1ZhbHVlPiYmIHRhcmdldCk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0
ZUxpbmVUb0hvcml6b250YWwoQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHgpOworICAg
IHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG9WZXJ0aWNhbChDb29yZEFm
ZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgeSk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21l
bnQ+IGNyZWF0ZUN1cnZlVG9DdWJpYyhDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFy
Z2V0LCBSZWY8Q1NTVmFsdWU+JiYgcDEsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAgc3RhdGlj
IFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWMoQ29vcmRBZmZpbml0
eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxKTsKKyAgICBzdGF0
aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKENvb3JkQWZm
aW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAg
c3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGgo
Q29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCk7CisgICAgc3RhdGljIFJlZjxD
U1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUFyY1RvKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4m
JiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiByYWRpdXMsIENTU1ZhbHVlSUQgc3dlZXAsIENTU1Zh
bHVlSUQgc2l6ZSwgUmVmPENTU1ZhbHVlPiYmIGFuZ2xlKTsKKworcHJvdGVjdGVkOgorICAgIENT
U1NoYXBlU2VnbWVudChTZWdtZW50VHlwZSB0eXBlKQorICAgICAgICA6IENTU1ZhbHVlKFNoYXBl
U2VnbWVudENsYXNzKQorICAgICAgICAsIG1fdHlwZSh0eXBlKSB7IH0KKworcHJpdmF0ZToKKyAg
ICBTZWdtZW50VHlwZSBtX3R5cGU7Cit9OworCitjbGFzcyBDU1NTaGFwZVNlZ21lbnRWYWx1ZSA6
IHB1YmxpYyBDU1NTaGFwZVNlZ21lbnQgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSAuLi5BcmdzPgorICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGUoQ1NTU2hh
cGVTZWdtZW50OjpTZWdtZW50VHlwZSB0eXBlLAorICAgICAgICBDU1NTaGFwZVNlZ21lbnQ6OkNv
b3JkQWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIEFyZ3MuLi4gYXJn
dW1lbnRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU2hhcGVTZWdt
ZW50VmFsdWUodHlwZSwgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3VtZW50cykuLi4pKTsKKyAgICB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgdGFyZ2V0
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKKyAgICB9CisK
KyAgICBjb25zdCBDU1NWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGkpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQobV9hcmd1bWVudHMtPmxlbmd0aCgpID4gaSk7CisgICAgICAgIHJldHVybiAq
KG1fYXJndW1lbnRzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICB9CisKKyAgICBD
U1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHkoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYWZmaW5pdHk7CisgICAgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3Qg
Q1NTU2hhcGVTZWdtZW50JiBvdGhlcikgY29uc3Q7CisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQo
KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICB2b2lkIGFwcGVuZEFyZ3MoKSB7IH0KKyAgICB2b2lk
IGFwcGVuZEFyZ3MoUmVmPENTU1ZhbHVlPiYmIHYpIHsgbV9hcmd1bWVudHMtPmFwcGVuZChXVEZN
b3ZlKHYpKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgLi4uQXJncz4KKyAgICB2b2lkIGFw
cGVuZEFyZ3MoUmVmPENTU1ZhbHVlPiYmIHYsIEFyZ3MgLi4uYXJncykKKyAgICB7CisgICAgICAg
IGFwcGVuZEFyZ3MoV1RGTW92ZSh2KSk7CisgICAgICAgIGFwcGVuZEFyZ3Moc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSAuLi5Bcmdz
PgorICAgIENTU1NoYXBlU2VnbWVudFZhbHVlKENTU1NoYXBlU2VnbWVudDo6U2VnbWVudFR5cGUg
dHlwZSwgQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFs
dWU+JiYgdGFyZ2V0LCBBcmdzIC4uLmFyZ3MpCisgICAgICAgIDogQ1NTU2hhcGVTZWdtZW50KHR5
cGUpCisgICAgICAgICwgbV9hZmZpbml0eShhZmZpbml0eSkKKyAgICAgICAgLCBtX3RhcmdldChX
VEZNb3ZlKHRhcmdldCkpCisgICAgICAgICwgbV9hcmd1bWVudHMoQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpKQorICAgIHsKKyAgICAgICAgYXBwZW5kQXJncyhzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOworICAgIH0KKworICAgIENTU1NoYXBlU2VnbWVudDo6Q29vcmRB
ZmZpbml0eSBtX2FmZmluaXR5OworICAgIFJlZjxDU1NWYWx1ZT4gbV90YXJnZXQ7CisgICAgUmVm
PENTU1ZhbHVlTGlzdD4gbV9hcmd1bWVudHM7Cit9OworCit9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0NTU19WQUxVRShDU1NTaGFwZVNlZ21lbnQsIGlzU2hhcGVTZWdtZW50VmFsdWUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWUuY3BwCmluZGV4IDVlMjE4MjI2M2ZjZWE1Y2FmZjM2M2U0ZmY0NDAzOTQz
ODExZjZkYWMuLjYzMDllM2ZmNzNkY2NiNjY3MzFmMjI0YjY0OWQ3ODkyZGEyZWQxNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlLmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIkNTU1JheVZh
bHVlLmgiCiAjaW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTU2hhZG93
VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJDU1NUaW1p
bmdGdW5jdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCIKICNp
bmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKQEAgLTIzMCw2ICsyMzEsOCBAQCBib29sIENTU1ZhbHVl
OjplcXVhbHMoY29uc3QgQ1NTVmFsdWUmIG90aGVyKSBjb25zdAogICAgICAgICAgICAgcmV0dXJu
IGNvbXBhcmVDU1NWYWx1ZXM8Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzLCBvdGhlcik7CiAgICAg
ICAgIGNhc2UgRm9udFN0eWxlUmFuZ2VDbGFzczoKICAgICAgICAgICAgIHJldHVybiBjb21wYXJl
Q1NTVmFsdWVzPENTU0ZvbnRTdHlsZVJhbmdlVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAg
IGNhc2UgU2hhcGVTZWdtZW50Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1Zh
bHVlczxDU1NTaGFwZVNlZ21lbnQ+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTMzOSw2ICszNDIsOCBAQCBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAog
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzKS5jdXN0b21D
U1NUZXh0KCk7CiAgICAgY2FzZSBGb250U3R5bGVSYW5nZUNsYXNzOgogICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8Q1NTRm9udFN0eWxlUmFuZ2VWYWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsK
KyAgICBjYXNlIFNoYXBlU2VnbWVudENsYXNzOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NT
U2hhcGVTZWdtZW50PigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIH0KIAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDk3LDYgKzUwMiw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ry
b3koKQogICAgIGNhc2UgRm9udFN0eWxlUmFuZ2VDbGFzczoKICAgICAgICAgZGVsZXRlIGRvd25j
YXN0PENTU0ZvbnRTdHlsZVJhbmdlVmFsdWU+KHRoaXMpOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBTaGFwZVNlZ21lbnRDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU1NoYXBl
U2VnbWVudD4odGhpcyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IGRhZGU1OGRhMjA2OGI3ZWVjY2Rh
YTMzMTkxOGM0NGQzYTc2ZTA1YzguLjNmNzVhZjMwYWI5MDI4YWViMmQxNTJmMTQ1Yzk4OTM1N2I1
MTllYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0xMzQsNiArMTM0LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNHcmlkQXV0b1JlcGVhdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5
cGUgPT0gR3JpZEF1dG9SZXBlYXRDbGFzczsgfQogICAgIGJvb2wgaXNHcmlkSW50ZWdlclJlcGVh
dFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gR3JpZEludGVnZXJSZXBlYXRD
bGFzczsgfQogICAgIGJvb2wgaXNHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9jbGFzc1R5cGUgPT0gR3JpZFRlbXBsYXRlQXJlYXNDbGFzczsgfQorICAgIGJvb2wgaXNT
aGFwZVNlZ21lbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFNoYXBlU2Vn
bWVudENsYXNzOyB9CiAgICAgYm9vbCBpc0dyaWRMaW5lTmFtZXNWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xhc3NUeXBlID09IEdyaWRMaW5lTmFtZXNDbGFzczsgfQogICAgIGJvb2wgaXNTdWJn
cmlkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTdWJncmlkQ2xhc3M7IH0K
ICAgICBib29sIGlzVW5pY29kZVJhbmdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlw
ZSA9PSBVbmljb2RlUmFuZ2VDbGFzczsgfQpAQCAtMjA5LDYgKzIxMCw3IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgQ2FsY3VsYXRpb25DbGFzcywKICAgICAgICAgR3JpZFRlbXBsYXRlQXJlYXNDbGFz
cywKICAgICAgICAgVmFsdWVQYWlyQ2xhc3MsCisgICAgICAgIFNoYXBlU2VnbWVudENsYXNzLAog
CiAgICAgICAgIENTU0NvbnRlbnREaXN0cmlidXRpb25DbGFzcywKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCAyZGQ0YzBiYWMzYzlhM2E0ZDYzYmFlZGMyOTkxMDgw
MmI1MjIwMmY5Li4xYjY1NGViMjE5ZDRlMWM5YjIyOGZlMTcxNTg1MzkzODA1YzViMTM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtMTI4Niw2ICsxMjg2LDI3IEBA
IHJlY3QKIAogLy8gc2hhcGVzCiBwb2x5Z29uCitzaGFwZQorCisvLyBzaGFwZSgpCisvLyBmcm9t
CisvLyB0bworLy8gbW92ZQorbGluZQoraGxpbmUKK3ZsaW5lCitjdXJ2ZQorLy8gc21vb3RoCith
cmMKK2Nsb3NlCit2aWEKK29mCitieQorY3cKK2NjdworLy8gbGFyZ2UKKy8vIHNtYWxsCisvLyBy
b3RhdGUKIAogLy8gQGZvbnQtZmFjZSBzcmMKIGZvcm1hdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2hhcGVTZWdtZW50RnVuY3Rpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NGE1MmZmZDg2MGVkNzNkNGU3
M2FmZDE2ZDNlYmJjMzU0YzI4ZTVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTAsMCArMSwyMjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcGVTZWdtZW50RnVuY3Rpb25zLmgi
CisKKyNpbmNsdWRlICJCYXNpY1NoYXBlU2VnbWVudC5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKKyNpbmNsdWRl
ICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgorI2luY2x1ZGUgIlBhaXIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKGNvbnN0IExlbmd0aFBvaW50JiBwb2ludCwgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8mIHBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpOworICAgIHJldHVybiBwb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZSgKKyAg
ICAgICAgcG9vbC5jcmVhdGVWYWx1ZShwb2ludC54KCksIHN0eWxlKSwKKyAgICAgICAgcG9vbC5j
cmVhdGVWYWx1ZShwb2ludC55KCksIHN0eWxlKSwKKyAgICAgICAgUGFpcjo6SWRlbnRpY2FsVmFs
dWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1
ZT4gYXV0byB0b0NTU0FyZ3MoY29uc3QgVmFsdWUmLCBjb25zdCBSZW5kZXJTdHlsZSYpOworCit0
ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBMZW5ndGgmIHZhbHVlLCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZTxSZWY8Q1NTVmFs
dWU+PihDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHZhbHVlLCBzdHlsZSkp
OworfQorCit0ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJnczxMZW5ndGhQb2ludD4oY29uc3QgTGVu
Z3RoUG9pbnQmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJu
IHN0ZDo6bWFrZV90dXBsZShjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLCBzdHlsZSkpOwor
fQorCit0ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNl
Z1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBz
dGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUudGFy
Z2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5w
b2ludDEsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5wb2lu
dDIsIHN0eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NBcmdzKGNvbnN0IEN1cnZl
VG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRv
Q1NTVmFsdWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50
VG9DU1NWYWx1ZSh2YWx1ZS5wb2ludDEsIHN0eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8g
dG9DU1NBcmdzKGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIHZhbHVlLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSgK
KyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS50YXJnZXRQb2ludCwgc3R5bGUp
LAorICAgICAgICBjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnBvaW50Miwgc3R5bGUpKTsK
K30KKwordGVtcGxhdGU8PgorYXV0byB0b0NTU0FyZ3MoY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVl
JiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8mIHBvb2wgPSBD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOworICAgIGF1dG8gcmFkaXVzID0gUGFpcjo6Y3JlYXRl
KAorICAgICAgICBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlLnJhZGl1cy53aWR0aCwgc3R5bGUpLAor
ICAgICAgICBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlLnJhZGl1cy5oZWlnaHQsIHN0eWxlKSwKKyAg
ICAgICAgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpOworCisgICAgcmV0
dXJuIHN0ZDo6bWFrZV90dXBsZSgKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1
ZS50YXJnZXRQb2ludCwgc3R5bGUpLAorICAgICAgICBwb29sLmNyZWF0ZVZhbHVlKFdURk1vdmUo
cmFkaXVzKSksCisgICAgICAgIHZhbHVlLnN3ZWVwID8gQ1NTVmFsdWVDdyA6IENTU1ZhbHVlQ2N3
LAorICAgICAgICB2YWx1ZS5sYXJnZUFyYyA/IENTU1ZhbHVlTGFyZ2UgOiBDU1NWYWx1ZVNtYWxs
LAorICAgICAgICBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlLmFuZ2xlLCBDU1NVbml0VHlwZTo6Q1NT
X0RFRykpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiB0b0NTU1NoYXBlU2VnbWVudChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBzZWdtZW50KQor
eworICAgIGF1dG8gdG9DU1MgPSBbJl0oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFm
ZmluaXR5LCBhdXRvIGNyZWF0ZSwgY29uc3QgYXV0byYgYXMpIHsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6YXBwbHkoY3JlYXRlLCBzdGQ6OnR1cGxlX2NhdChzdGQ6Om1ha2VfdHVwbGUoYWZmaW5pdHkp
LCB0b0NTU0FyZ3MoKHNlZ21lbnQuKmFzKSgpLCBzdHlsZSkpKTsKKyAgICB9OworCisjZGVmaW5l
IENSRUFURV9DU1NfU0hBUEVfU0VHTUVOVF9GUk9NX0JBU0lDX1NIQVBFX1NFR01FTlQoVHlwZSkg
XAorICAgIGNhc2UgU2hhcGVTZWdtZW50IyNUeXBlOjpBYnNTZWdUeXBlOiBcCisgICAgICAgIHJl
dHVybiB0b0NTUyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRlLCBDU1NT
aGFwZVNlZ21lbnQ6OmNyZWF0ZSMjVHlwZSwgJkJhc2ljU2hhcGVTZWdtZW50OjphcyMjVHlwZSk7
IFwKKyAgICBjYXNlIFNoYXBlU2VnbWVudCMjVHlwZTo6UmVsU2VnVHlwZTogXAorICAgICAgICBy
ZXR1cm4gdG9DU1MoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5OjpSZWxhdGl2ZSwgQ1NT
U2hhcGVTZWdtZW50OjpjcmVhdGUjI1R5cGUsICZCYXNpY1NoYXBlU2VnbWVudDo6YXMjI1R5cGUp
OyBcCisKKyAgICBzd2l0Y2ggKHNlZ21lbnQudHlwZSgpKSB7CisgICAgY2FzZSBQYXRoU2VnQ2xv
c2VQYXRoOgorICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgo
KTsKKworICAgICAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9WQUxVRShDUkVB
VEVfQ1NTX1NIQVBFX1NFR01FTlRfRlJPTV9CQVNJQ19TSEFQRV9TRUdNRU5UKQorCisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBDU1NT
aGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworICAgIH0KK30KK3RlbXBsYXRlIDxjbGFz
cyBEZWZpbml0aW9uPgorU1ZHUGF0aFNlZ1R5cGUgc2VnbWVudFR5cGUoY29uc3QgQ1NTU2hhcGVT
ZWdtZW50VmFsdWUmIHNlZ21lbnRXaXRoVmFsdWUpCit7CisgICAgcmV0dXJuIHNlZ21lbnRXaXRo
VmFsdWUuYWZmaW5pdHkoKSA9PSBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29s
dXRlID8gRGVmaW5pdGlvbjo6QWJzU2VnVHlwZSA6IERlZmluaXRpb246OlJlbFNlZ1R5cGU7Cit9
CisKK1JlZjxCYXNpY1NoYXBlU2VnbWVudD4gZnJvbUNTU1NoYXBlU2VnbWVudChjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgY29uc3QgQ1NTU2hhcGVTZWdt
ZW50JiBjc3NTZWdtZW50KQoreworICAgIGF1dG8gdG9MZW5ndGggPSBbJl0oY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKSAtPiBMZW5ndGggeworICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKS5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8
IEZpeGVkRmxvYXRDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29u
dmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOworICAgIH07CisKKyAgICBhdXRvIHRvTGVuZ3RoUG9p
bnQgPSBbJl0oY29uc3QgQ1NTVmFsdWUmIHZhbHVlKSAtPiBMZW5ndGhQb2ludCB7CisgICAgICAg
IGF1dG8gcGFpciA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkucGFpclZhbHVl
KCk7CisgICAgICAgIEFTU0VSVChwYWlyKTsKKyAgICAgICAgcmV0dXJuIExlbmd0aFBvaW50IHsg
dG9MZW5ndGgoKnBhaXItPmZpcnN0KCkpLCB0b0xlbmd0aCgqcGFpci0+c2Vjb25kKCkpIH07Cisg
ICAgfTsKKworICAgIGF1dG8gdG9MZW5ndGhTaXplID0gWyZdKGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkgLT4gTGVuZ3RoU2l6ZSB7CisgICAgICAgIGF1dG8gcGFpciA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkucGFpclZhbHVlKCk7CisgICAgICAgIEFTU0VSVChwYWlyKTsKKyAg
ICAgICAgcmV0dXJuIExlbmd0aFNpemUgeyB0b0xlbmd0aCgqcGFpci0+Zmlyc3QoKSksIHRvTGVu
Z3RoKCpwYWlyLT5zZWNvbmQoKSkgfTsKKyAgICB9OworCisgICAgYXV0byB0eXBlID0gY3NzU2Vn
bWVudC50eXBlKCk7CisKKyAgICBpZiAodHlwZSA9PSBDU1NTaGFwZVNlZ21lbnQ6OkNsb3NlUGF0
aCkKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsK
KworICAgIGNvbnN0IGF1dG8mIHNlZ21lbnRXaXRoVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBD
U1NTaGFwZVNlZ21lbnRWYWx1ZSY+KGNzc1NlZ21lbnQpOworCisgICAgc3dpdGNoICh0eXBlKSB7
CisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6Ok1vdmVUbzogeworICAgICAgICByZXR1cm4gQmFz
aWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZU1vdmVUbygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNo
YXBlU2VnbWVudE1vdmVUbz4oc2VnbWVudFdpdGhWYWx1ZSksCisgICAgICAgICAgICB0b0xlbmd0
aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUudGFyZ2V0KCkpKTsKKyAgICB9CisKKyAgICBjYXNlIENT
U1NoYXBlU2VnbWVudDo6TGluZVRvOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6
OmNyZWF0ZUxpbmVUbygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudExpbmVU
bz4oc2VnbWVudFdpdGhWYWx1ZSksCisgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRX
aXRoVmFsdWUudGFyZ2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpMaW5lVG9I
b3Jpem9udGFsOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVU
b0hvcml6b250YWwoCisgICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRMaW5lVG9I
b3Jpem9udGFsPihzZWdtZW50V2l0aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoKHNlZ21l
bnRXaXRoVmFsdWUudGFyZ2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpMaW5l
VG9WZXJ0aWNhbDoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5l
VG9WZXJ0aWNhbCgKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudExpbmVUb1Zl
cnRpY2FsPihzZWdtZW50V2l0aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoKHNlZ21lbnRX
aXRoVmFsdWUudGFyZ2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpDdXJ2ZVRv
Q3ViaWM6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1
YmljKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50Q3VydmVUb0N1YmljPihz
ZWdtZW50V2l0aFZhbHVlKSwgeworICAgICAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVu
dFdpdGhWYWx1ZS5hcmd1bWVudCgwKSksCisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChz
ZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50KDEpKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBv
aW50KHNlZ21lbnRXaXRoVmFsdWUudGFyZ2V0KCkpCisgICAgICAgICAgICB9KTsKKworICAgIGNh
c2UgQ1NTU2hhcGVTZWdtZW50OjpDdXJ2ZVRvUXVhZHJhdGljOgorICAgICAgICByZXR1cm4gQmFz
aWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9RdWFkcmF0aWMoCisgICAgICAgICAgICBzZWdt
ZW50VHlwZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljPihzZWdtZW50V2l0aFZhbHVlKSwg
eworICAgICAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVu
dCgwKSksCisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRh
cmdldCgpKQorICAgICAgICAgICAgfSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q3Vy
dmVUb0N1YmljU21vb3RoOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0
ZUN1cnZlVG9DdWJpY1Ntb290aCgKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVu
dEN1cnZlVG9DdWJpY1Ntb290aD4oc2VnbWVudFdpdGhWYWx1ZSksIHsKKyAgICAgICAgICAgICAg
ICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMCkpLAorICAgICAgICAg
ICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAg
ICAgIH0pOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkN1cnZlVG9RdWFkcmF0aWNTbW9v
dGg6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRy
YXRpY1Ntb290aCgKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudEN1cnZlVG9R
dWFkcmF0aWNTbW9vdGg+KHNlZ21lbnRXaXRoVmFsdWUpLAorICAgICAgICAgICAgdG9MZW5ndGhQ
b2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2Vn
bWVudDo6QXJjVG86CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQXJj
VG8oCisgICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRBcmNUbz4oc2VnbWVudFdp
dGhWYWx1ZSksIHsKKyAgICAgICAgICAgICAgICAucmFkaXVzID0gdG9MZW5ndGhTaXplKHNlZ21l
bnRXaXRoVmFsdWUuYXJndW1lbnQoMCkpLAorICAgICAgICAgICAgICAgIC5zd2VlcCA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPihzZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50KDEpKS52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVDdywKKyAgICAgICAgICAgICAgICAubGFyZ2VBcmMgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgyKSkudmFsdWVJ
RCgpID09IENTU1ZhbHVlTGFyZ2UsCisgICAgICAgICAgICAgICAgLmFuZ2xlID0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMykpLmZsb2F0VmFs
dWUoQ1NTVW5pdFR5cGU6OkNTU19ERUcpLAorICAgICAgICAgICAgICAgIC50YXJnZXRQb2ludCA9
IHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAgICAgIH0p
OworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkNsb3NlUGF0aDoKKyAgICAgICAgcmV0dXJu
IEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKyAgICB9CisKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNs
b3NlUGF0aCgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhcGVT
ZWdtZW50RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhcGVTZWdtZW50RnVuY3Rp
b25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDY0MGQ3MWUyOWE1MDgzODI1M2UwYzJlYTcwOTYxMTQ0OTFkNjJk
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5j
dGlvbnMuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBCYXNpY1NoYXBlU2VnbWVudDsKK2NsYXNzIENTU1NoYXBlU2VnbWVudDsK
K2NsYXNzIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE7CitjbGFzcyBSZW5kZXJTdHlsZTsKKwor
UmVmPENTU1NoYXBlU2VnbWVudD4gdG9DU1NTaGFwZVNlZ21lbnQoY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYpOworUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBmcm9t
Q1NTU2hhcGVTZWdtZW50KGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBjb25zdCBD
U1NTaGFwZVNlZ21lbnQmKTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCBkMWI1ZDM0NTU1OTEwYmQ4MzNlYWU5ZmZiYzk1N2Jj
MWNkMzI0OTBiLi44ZWE0ZmE4NmVmNGI0ZWJhYzZmN2RmMWYxZDc0M2JlNDllZmFhZDVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAt
NDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NGb250RmVhdHVyZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udFBhbGV0dGVWYWx1ZXNP
dmVycmlkZUNvbG9yc1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTU2hhcGVTZWdtZW50LmgiCiAjaWYg
RU5BQkxFKFZBUklBVElPTl9GT05UUykKICNpbmNsdWRlICJDU1NGb250VmFyaWF0aW9uVmFsdWUu
aCIKICNlbmRpZgpAQCAtMjY1Miw2ICsyNjUzLDE5NiBAQCBzdGF0aWMgUmVmUHRyPENTU0Jhc2lj
U2hhcGVQYXRoPiBjb25zdW1lQmFzaWNTaGFwZVBhdGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJn
cwogICAgIHJldHVybiBzaGFwZTsKIH0KIAorc3RhdGljIFJlZlB0cjxDU1NTaGFwZVNlZ21lbnQ+
IGNvbnN1bWVTaGFwZVNlZ21lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBhdXRvIGNvbW1hbmQgPSBhcmdzLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgaWYgKGNvbW1hbmQuaWQoKSA9PSBDU1NWYWx1
ZUNsb3NlKQorICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgo
KTsKKworICAgIGlmICghaWRlbnRNYXRjaGVzPENTU1ZhbHVlVG8sIENTU1ZhbHVlQnk+KGFyZ3Mu
cGVlaygpLmlkKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gYWZmaW5p
dHkgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKSA9PSBDU1NWYWx1ZVRv
ID8gQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5OjpBYnNvbHV0ZSA6IENTU1NoYXBlU2Vn
bWVudDo6Q29vcmRBZmZpbml0eTo6UmVsYXRpdmU7CisgICAgYXV0byBjb25zdW1lTmV4dExlbmd0
aE9yUGVyY2VudCA9IFsmXSgpIHsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNl
bnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOworICAgIH07CisKKyAgICBp
ZiAoY29tbWFuZC5pZCgpID09IENTU1ZhbHVlSGxpbmUgfHwgY29tbWFuZC5pZCgpID09IENTU1Zh
bHVlVmxpbmUpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IGNvbnN1bWVOZXh0TGVuZ3RoT3JQZXJj
ZW50KCk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgICAgICByZXR1cm4gY29tbWFuZC5pZCgpID09IENTU1ZhbHVlSGxpbmUKKyAgICAgICAg
ICAgID8gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKGFmZmluaXR5LCB2
YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKQorICAgICAgICAgICAgOiBDU1NTaGFwZVNlZ21lbnQ6OmNy
ZWF0ZUxpbmVUb1ZlcnRpY2FsKGFmZmluaXR5LCB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICB9CisKKyAgICBhdXRvIGNvbnN1bWVOZXh0Q29vcmRpbmF0ZXMgPSBbJl0gKCkgLT4gUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiB7CisgICAgICAgIGF1dG8geCA9IGNvbnN1bWVOZXh0TGVuZ3Ro
T3JQZXJjZW50KCk7CisgICAgICAgIGlmICgheCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgICAgIGF1dG8geSA9IGNvbnN1bWVOZXh0TGVuZ3RoT3JQZXJjZW50KCk7CisgICAg
ICAgIGlmICgheSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIHJldHVy
biBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoeC5yZWxlYXNlTm9uTnVsbCgpLCB5LnJlbGVhc2VO
b25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkRvTm90Q29hbGVzY2UpOwor
ICAgIH07CisKKyAgICBhdXRvIGF0RW5kT2ZTZWdtZW50ID0gWyZdICgpIHsKKyAgICAgICAgcmV0
dXJuIGFyZ3MuYXRFbmQoKSB8fCBhcmdzLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tlbjsKKyAg
ICB9OworCisgICAgYXV0byB0YXJnZXRQb2ludCA9IGNvbnN1bWVOZXh0Q29vcmRpbmF0ZXMoKTsK
KyAgICBpZiAoIXRhcmdldFBvaW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN3
aXRjaCAoY29tbWFuZC5pZCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZU1vdmU6CisgICAgICAgIHJl
dHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZU1vdmVUbyhhZmZpbml0eSwgdGFyZ2V0UG9pbnQu
cmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICBjYXNlIENTU1ZhbHVlTGluZToKKyAgICAgICAgcmV0
dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvKGFmZmluaXR5LCB0YXJnZXRQb2ludC5y
ZWxlYXNlTm9uTnVsbCgpKTsKKworICAgIGNhc2UgQ1NTVmFsdWVDdXJ2ZTogeworICAgICAgICBp
ZiAoYXJncy5wZWVrKCkuaWQoKSAhPSBDU1NWYWx1ZVZpYSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAg
ICAgICAgYXV0byB2aWFQb2ludDEgPSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7CisgICAgICAg
IGlmICghdmlhUG9pbnQxKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAg
aWYgKGF0RW5kT2ZTZWdtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50
OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKGFmZmluaXR5LCB0YXJnZXRQb2ludC5yZWxlYXNlTm9u
TnVsbCgpLCB2aWFQb2ludDEucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICAgICAgYXV0byB2aWFQ
b2ludDIgPSBjb25zdW1lTmV4dENvb3JkaW5hdGVzKCk7CisgICAgICAgIGlmICghdmlhUG9pbnQy
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIENTU1NoYXBl
U2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljKGFmZmluaXR5LCAgdGFyZ2V0UG9pbnQucmVsZWFz
ZU5vbk51bGwoKSwgdmlhUG9pbnQxLnJlbGVhc2VOb25OdWxsKCksIHZpYVBvaW50Mi5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICB9CisKKyAgICBjYXNlIENTU1ZhbHVlU21vb3RoOiB7CisgICAgICAg
IGlmIChhcmdzLnBlZWsoKS5pZCgpICE9IENTU1ZhbHVlVmlhKQorICAgICAgICAgICAgcmV0dXJu
IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aChhZmZpbml0eSwg
IHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCkpOworCisgICAgICAgIGFyZ3MuY29uc3VtZUlu
Y2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgYXV0byB2aWFQb2ludCA9IGNvbnN1bWVOZXh0
Q29vcmRpbmF0ZXMoKTsKKyAgICAgICAgaWYgKCF2aWFQb2ludCkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZl
VG9DdWJpY1Ntb290aChhZmZpbml0eSwgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCksIHZp
YVBvaW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KKworICAgIGNhc2UgQ1NTVmFsdWVBcmM6
IHsKKyAgICAgICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgIT0gQ1NTVmFsdWVPZikKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRl
c3BhY2UoKTsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByeCA9IGNvbnN1bWVM
ZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2
ZSk7CisgICAgICAgIGlmICghcngpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJ5OworICAgICAgICBpZiAoYXJncy5wZWVr
KCkudHlwZSgpID09IElkZW50VG9rZW4pCisgICAgICAgICAgICByeSA9IHJ4OworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHJ5ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250
ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKKyAgICAgICAgICAgIGlmICghcnkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBz
dGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IHN3ZWVwOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENT
U1ZhbHVlSUQ+IHNpemU7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gYW5nbGU7CisKKyAgICAg
ICAgd2hpbGUgKCFhdEVuZE9mU2VnbWVudCgpKSB7CisgICAgICAgICAgICBhdXRvIG5leHRJZGVu
dCA9IGFyZ3MucGVlaygpLmlkKCk7CisgICAgICAgICAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1Zh
bHVlUm90YXRlPihuZXh0SWRlbnQpICYmICFhbmdsZSkgeworICAgICAgICAgICAgICAgIGFyZ3Mu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOworICAgICAgICAgICAgICAgIGFuZ2xl
ID0gY29uc3VtZUFuZ2xlKGFyZ3MsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlk
LCBVbml0bGVzc1plcm9RdWlyazo6Rm9yYmlkKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZUN3
LCBDU1NWYWx1ZUNjdz4obmV4dElkZW50KSAmJiAhc3dlZXAuaGFzX3ZhbHVlKCkpIHsKKyAgICAg
ICAgICAgICAgICBzd2VlcCA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgp
OworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlTGFyZ2UsIENTU1ZhbHVlU21hbGw+KG5leHRJZGVu
dCkgJiYgIXNpemUuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBzaXplID0gYXJncy5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCFhbmdsZSkKKyAgICAgICAgICAgIGFuZ2xlID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NVbml0VHlwZTo6Q1NTX0RFRyk7CisKKyAgICAgICAgcmV0
dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQXJjVG8oCisgICAgICAgICAgICBhZmZpbml0eSwK
KyAgICAgICAgICAgIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCksCisgICAgICAgICAgICBj
cmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIocngucmVsZWFzZU5vbk51bGwoKSwgcnkucmVsZWFzZU5v
bk51bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpLAorICAgICAg
ICAgICAgc3dlZXAudmFsdWVfb3IoQ1NTVmFsdWVDY3cpLAorICAgICAgICAgICAgc2l6ZS52YWx1
ZV9vcihDU1NWYWx1ZVNtYWxsKSwKKyAgICAgICAgICAgIGFuZ2xlLnJlbGVhc2VOb25OdWxsKCkp
OworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9
CisKK3N0YXRpYyBSZWZQdHI8Q1NTQmFzaWNTaGFwZVNoYXBlPiBjb25zdW1lQmFzaWNTaGFwZVNo
YXBlKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQpCit7CisgICAgV2luZFJ1bGUgd2luZFJ1bGUgPSBXaW5kUnVsZTo6Tm9uWmVybzsKKwor
ICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVFdmVub2RkLCBDU1NWYWx1ZU5vbnplcm8+KGFy
Z3MucGVlaygpLmlkKCkpKQorICAgICAgICB3aW5kUnVsZSA9IGFyZ3MuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKS5pZCgpID09IENTU1ZhbHVlRXZlbm9kZCA/IFdpbmRSdWxlOjpFdmVuT2Rk
IDogV2luZFJ1bGU6Ok5vblplcm87CisKKyAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSAhPSBDU1NW
YWx1ZUZyb20pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXJncy5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpOworCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpbml0
aWFsWCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJh
bmdlOjpBbGwpOworICAgIGlmICghaW5pdGlhbFgpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpbml0aWFsWSA9IGNvbnN1bWVMZW5ndGhP
clBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOworICAgIGlmICgh
aW5pdGlhbFkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKCFjb25zdW1lQ29t
bWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGF1dG8gc2VnbWVudHMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7
CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGF1dG8gc2VnbWVudCA9IGNvbnN1bWVTaGFwZVNl
Z21lbnQoYXJncywgY29udGV4dCk7CisgICAgICAgIGlmICghc2VnbWVudCkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIHNlZ21lbnRzLT5hcHBlbmQoc2VnbWVudC5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICAgICAgaWYgKGFyZ3MuYXRFbmQoKSkKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8gc2hhcGUg
PSBDU1NCYXNpY1NoYXBlU2hhcGU6OmNyZWF0ZSgKKyAgICAgICAgY3JlYXRlUHJpbWl0aXZlVmFs
dWVQYWlyKAorICAgICAgICAgICAgaW5pdGlhbFgucmVsZWFzZU5vbk51bGwoKSwKKyAgICAgICAg
ICAgIGluaXRpYWxZLnJlbGVhc2VOb25OdWxsKCksCisgICAgICAgICAgICBQYWlyOjpJZGVudGlj
YWxWYWx1ZUVuY29kaW5nOjpEb05vdENvYWxlc2NlKSwKKyAgICAgICAgV1RGTW92ZShzZWdtZW50
cykpOworCisgICAgc2hhcGUtPnNldFdpbmRSdWxlKHdpbmRSdWxlKTsKKyAgICByZXR1cm4gc2hh
cGU7Cit9CisKIHN0YXRpYyB2b2lkIGNvbXBsZXRlNFNpZGVzKFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gc2lkZVs0XSkKIHsKICAgICBpZiAoc2lkZVszXSkKQEAgLTI3NTcsNiArMjk0OCw4IEBA
IHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVCYXNpY1NoYXBlKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjCiAgICAgICAgIHNoYXBlID0gY29uc3VtZUJhc2ljU2hh
cGVJbnNldChhcmdzLCBjb250ZXh0KTsKICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVBhdGgp
CiAgICAgICAgIHNoYXBlID0gY29uc3VtZUJhc2ljU2hhcGVQYXRoKGFyZ3MpOworICAgIGVsc2Ug
aWYgKGlkID09IENTU1ZhbHVlU2hhcGUpCisgICAgICAgIHNoYXBlID0gY29uc3VtZUJhc2ljU2hh
cGVTaGFwZShhcmdzLCBjb250ZXh0KTsKICAgICBpZiAoIXNoYXBlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICByYW5nZSA9IHJhbmdlQ29weTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhMmQw
NzllYTE3N2FmNDZmZTZjMjc4MmIxZWQ0MWExYzYxYWNlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwCkBAIC0w
LDAgKzEsMjkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE5vYW0gUm9zZW50aGFsIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJh
c2ljU2hhcGVTZWdtZW50LmgiCisKKyNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKKyNpbmNs
dWRlICJQYXRoLmgiCisjaW5jbHVkZSAiU1ZHUGF0aEJ1aWxkZXIuaCIKKyNpbmNsdWRlICJTVkdQ
YXRoUGFyc2VyLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZy5oIgorI2luY2x1ZGUgIlNWR1BhdGhT
ZWdJbXBsLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlZmluaXRpb24+CitjbGFzcyBCYXNpY1NoYXBlU2Vn
bWVudFZhbHVlIDogcHVibGljIEJhc2ljU2hhcGVTZWdtZW50IHsKK3B1YmxpYzoKKyAgICBjb25z
dCB0eXBlbmFtZSBEZWZpbml0aW9uOjpWYWx1ZSYgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHR5cGUoKSA9PSBEZWZpbml0aW9uOjpBYnNTZWdUeXBlIHx8IHR5cGUoKSA9PSBE
ZWZpbml0aW9uOjpSZWxTZWdUeXBlKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7CisgICAgfQor
CisgICAgYm9vbCBlcXVhbHMoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCkKKyAgICAgICAgICAg
ICYmIHZhbHVlKCkgPT0gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxE
ZWZpbml0aW9uPiY+KG90aGVyKS52YWx1ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8QmFz
aWNTaGFwZVNlZ21lbnRWYWx1ZT4gY3JlYXRlKEJhc2ljU2hhcGVTZWdtZW50OjpUeXBlIHR5cGUs
IHR5cGVuYW1lIERlZmluaXRpb246OlZhbHVlJiYgdmFsdWUpCisgICAgeworICAgICAgICBBU1NF
UlQodHlwZSA9PSBEZWZpbml0aW9uOjpBYnNTZWdUeXBlIHx8IHR5cGUgPT0gRGVmaW5pdGlvbjo6
UmVsU2VnVHlwZSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJhc2ljU2hhcGVTZWdt
ZW50VmFsdWU8RGVmaW5pdGlvbj4odHlwZSwgV1RGTW92ZSh2YWx1ZSkpKTsKKyAgICB9CisKK3By
b3RlY3RlZDoKKyAgICBCYXNpY1NoYXBlU2VnbWVudFZhbHVlKEJhc2ljU2hhcGVTZWdtZW50OjpU
eXBlIHR5cGUsIHR5cGVuYW1lIERlZmluaXRpb246OlZhbHVlJiYgdmFsdWUpCisgICAgICAgIDog
QmFzaWNTaGFwZVNlZ21lbnQodHlwZSkKKyAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUp
KSB7IH0KKworcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBEZWZpbml0aW9uOjpWYWx1ZSBtX3ZhbHVl
OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyBjb25zdCB0eXBlbmFtZSBUOjpW
YWx1ZSYgZXh0cmFjdFZhbHVlKGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBzZWcpCit7CisgICAg
QVNTRVJUKHNlZy50eXBlKCkgPT0gVDo6QWJzU2VnVHlwZSB8fCBzZWcudHlwZSgpID09IFQ6OlJl
bFNlZ1R5cGUpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY1NoYXBlU2VnbWVu
dFZhbHVlPFQ+Jj4oc2VnKS52YWx1ZSgpOworfQorCitib29sIEJhc2ljU2hhcGVTZWdtZW50Ojpl
cXVhbHMoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdAoreworICAgIGF1dG8g
dHlwZSA9IHRoaXMtPnR5cGUoKTsKKyAgICBpZiAodHlwZSAhPSBvdGhlci50eXBlKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworI2RlZmluZSBDT01QQVJFX1NIQVBFX1NFR01FTlRfVkFMVUUo
VHlwZSkgXAorICAgIGNhc2UgU2hhcGVTZWdtZW50IyNUeXBlOjpBYnNTZWdUeXBlOiBcCisgICAg
Y2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6OlJlbFNlZ1R5cGU6IFwKKyAgICAgICAgcmV0dXJuIGV4
dHJhY3RWYWx1ZTxTaGFwZVNlZ21lbnQjI1R5cGU+KCp0aGlzKSA9PSBleHRyYWN0VmFsdWU8U2hh
cGVTZWdtZW50IyNUeXBlPihvdGhlcik7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IFBhdGhTZWdDbG9zZVBhdGg6CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIEZPUl9F
QUNIX1NIQVBFX1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKENPTVBBUkVfU0hBUEVfU0VHTUVOVF9W
QUxVRSkKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworI2RlZmluZSBJTVBMRU1F
TlRfU0hBUEVfU0VHTUVOVF9WQUxVRShUWVBFKSBcCitSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IEJh
c2ljU2hhcGVTZWdtZW50OjpjcmVhdGUjI1RZUEUoQmFzaWNTaGFwZVNlZ21lbnQ6OlR5cGUgdHlw
ZSwgdHlwZW5hbWUgU2hhcGVTZWdtZW50IyNUWVBFOjpWYWx1ZSYmIHZhbHVlKSBcCit7IFwKKyAg
ICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxTaGFwZVNlZ21lbnQjI1RZUEU+OjpjcmVh
dGUodHlwZSwgV1RGTW92ZSh2YWx1ZSkpOyBcCit9IFwKK2NvbnN0IHR5cGVuYW1lIFNoYXBlU2Vn
bWVudCMjVFlQRTo6VmFsdWUmIEJhc2ljU2hhcGVTZWdtZW50OjphcyMjVFlQRSgpIGNvbnN0IFwK
K3sgXAorICAgIHJldHVybiBleHRyYWN0VmFsdWU8U2hhcGVTZWdtZW50IyNUWVBFPigqdGhpcyk7
IFwKK30KKworRk9SX0VBQ0hfU0hBUEVfU0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoSU1QTEVNRU5U
X1NIQVBFX1NFR01FTlRfVkFMVUUpCisKK0N1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUgYmxlbmQo
Y29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29uc3QgQ3VydmVUb0N1Ymlj
U2hhcGVTZWdWYWx1ZSYgdG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKK3sKKyAg
ICByZXR1cm4geworICAgICAgICBibGVuZChmcm9tLnBvaW50MSwgdG8ucG9pbnQxLCBjb250ZXh0
KSwKKyAgICAgICAgYmxlbmQoZnJvbS5wb2ludDIsIHRvLnBvaW50MiwgY29udGV4dCksCisgICAg
ICAgIGJsZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRhcmdldFBvaW50LCBjb250ZXh0KSwKKyAg
ICB9OworfQorCitDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1
cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIGZyb20sIGNvbnN0IEN1cnZlVG9DdWJpY1Nt
b290aFNoYXBlU2VnVmFsdWUmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCit7
CisgICAgcmV0dXJuIHsKKyAgICAgICAgYmxlbmQoZnJvbS5wb2ludDIsIHRvLnBvaW50MiwgY29u
dGV4dCksCisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRhcmdldFBvaW50LCBj
b250ZXh0KSwKKyAgICB9OworfQorCitDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSBibGVu
ZChjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29uc3QgQ3VydmVU
b1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRl
eHQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgYmxlbmQoZnJvbS5wb2ludDEsIHRvLnBvaW50
MSwgY29udGV4dCksCisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRhcmdldFBv
aW50LCBjb250ZXh0KSwKKyAgICB9OworfQorCitBcmNUb1NoYXBlU2VnVmFsdWUgYmxlbmQoY29u
c3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiBmcm9tLCBjb25zdCBBcmNUb1NoYXBlU2VnVmFsdWUmIHRv
LCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHsKKyAgICAg
ICAgYmxlbmQoZnJvbS5yYWRpdXMsIHRvLnJhZGl1cywgY29udGV4dCksCisgICAgICAgIGJsZW5k
KGZyb20uYW5nbGUsIHRvLmFuZ2xlLCBjb250ZXh0KSwKKyAgICAgICAgY29udGV4dC5wcm9ncmVz
cyA8IDAuNWYgPyBmcm9tLnN3ZWVwIDogdG8uc3dlZXAsCisgICAgICAgIGNvbnRleHQucHJvZ3Jl
c3MgPCAwLjVmID8gZnJvbS5sYXJnZUFyYyA6IHRvLmxhcmdlQXJjLAorICAgICAgICBibGVuZChm
cm9tLnRhcmdldFBvaW50LCB0by50YXJnZXRQb2ludCwgY29udGV4dCkKKyAgICB9OworfQorCitS
ZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IEJhc2ljU2hhcGVTZWdtZW50OjpibGVuZChjb25zdCBCYXNp
Y1NoYXBlU2VnbWVudCYgZnJvbSwgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KSBjb25z
dAoreworICAgIGF1dG8gdHlwZSA9IHRoaXMtPnR5cGUoKTsKKyAgICBBU1NFUlQodHlwZSA9PSBm
cm9tLnR5cGUoKSk7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFBhdGhTZWdDbG9z
ZVBhdGg6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRo
KCk7CisKKyNkZWZpbmUgQkxFTkRfU0VHTUVOVF9UWVBFKFR5cGUpIFwKKyAgICBjYXNlIFNoYXBl
U2VnbWVudCMjVHlwZTo6QWJzU2VnVHlwZTogXAorICAgIGNhc2UgU2hhcGVTZWdtZW50IyNUeXBl
OjpSZWxTZWdUeXBlOiBcCisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudFZhbHVlPFNo
YXBlU2VnbWVudCMjVHlwZT46OmNyZWF0ZSh0eXBlLCBXZWJDb3JlOjpibGVuZChleHRyYWN0VmFs
dWU8U2hhcGVTZWdtZW50IyNUeXBlPihmcm9tKSwgZXh0cmFjdFZhbHVlPFNoYXBlU2VnbWVudCMj
VHlwZT4oKnRoaXMpLCBjb250ZXh0KSk7CisKKyAgICAgICAgRk9SX0VBQ0hfU0hBUEVfU0VHTUVO
VF9UWVBFX1dJVEhfVkFMVUUoQkxFTkRfU0VHTUVOVF9UWVBFKQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21l
bnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworICAgIH0KK30KK2NsYXNzIFNoYXBlU1ZHUGF0aFNvdXJj
ZSBmaW5hbCA6IHB1YmxpYyBTVkdQYXRoU291cmNlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBT
aGFwZVNWR1BhdGhTb3VyY2UoY29uc3QgTGVuZ3RoUG9pbnQmIHN0YXJ0LCBjb25zdCBWZWN0b3I8
UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIHNlZ21lbnRzLCBjb25zdCBGbG9hdFNpemUmIHNpemUp
CisgICAgICAgIDogbV9zdGFydChzdGFydCkKKyAgICAgICAgLCBtX3NlZ21lbnRzKHNlZ21lbnRz
KQorICAgICAgICAsIG1fc2l6ZShzaXplKQorICAgICAgICAsIG1faXRlbUVuZChzZWdtZW50cy5z
aXplKCkpCisgICAgICAgIHsKKworICAgICAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBoYXNN
b3JlRGF0YSgpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gbV9pdGVtQ3VycmVu
dCA8IG1faXRlbUVuZDsKKyAgICB9CisKKyAgICBib29sIG1vdmVUb05leHRUb2tlbigpIGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KKworICAgIFNWR1BhdGhTZWdUeXBlIG5leHRDb21tYW5kKFNWR1Bh
dGhTZWdUeXBlKSBmaW5hbAorICAgIHsKKyAgICAgICAgYXV0byB0eXBlID0gbV9zZWdtZW50cy5h
dChtX2l0ZW1DdXJyZW50KS0+dHlwZSgpOworICAgICAgICArK21faXRlbUN1cnJlbnQ7CisgICAg
ICAgIHJldHVybiB0eXBlOworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNlZ1R5
cGU+IHBhcnNlU1ZHU2VnbWVudFR5cGUoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFBh
dGhTZWdNb3ZlVG9BYnM7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNl
OjpNb3ZlVG9TZWdtZW50PiBwYXJzZU1vdmVUb1NlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2l0ZW1DdXJyZW50KQorICAgICAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6
Ok1vdmVUb1NlZ21lbnQgeyBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQobV9zdGFydCwgbV9zaXpl
KSB9OworCisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50IHsgZmxv
YXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlPFNoYXBlU2VnbWVudE1vdmVUbz4oKSwgbV9zaXpl
KSB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvU2Vn
bWVudD4gcGFyc2VMaW5lVG9TZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBT
VkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50IHsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZh
bHVlPFNoYXBlU2VnbWVudExpbmVUbz4oKSwgbV9zaXplKSB9OworICAgIH0KKworICAgIHN0ZDo6
b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IHBhcnNlTGlu
ZVRvSG9yaXpvbnRhbFNlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFNWR1Bh
dGhTb3VyY2U6OkxpbmVUb0hvcml6b250YWxTZWdtZW50IHsgZmxvYXRWYWx1ZUZvckxlbmd0aCh2
YWx1ZTxTaGFwZVNlZ21lbnRMaW5lVG9Ib3Jpem9udGFsPigpLCBtX3NpemUud2lkdGgoKSkgfTsK
KyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb1ZlcnRpY2Fs
U2VnbWVudD4gcGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkxpbmVUb1ZlcnRpY2FsU2VnbWVudCB7IGZsb2F0VmFs
dWVGb3JMZW5ndGgodmFsdWU8U2hhcGVTZWdtZW50TGluZVRvVmVydGljYWw+KCksIG1fc2l6ZS5o
ZWlnaHQoKSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1
cnZlVG9DdWJpY1NlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCgpIGZpbmFsCisgICAg
eworICAgICAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEN1
cnZlVG9DdWJpYz4oKTsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJp
Y1NlZ21lbnQgeyAgICAgICAgCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQo
dmFsdWUucG9pbnQxLCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBv
aW50KHZhbHVlLnBvaW50MiwgbV9zaXplKSwKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JMZW5n
dGhQb2ludCh2YWx1ZS50YXJnZXRQb2ludCwgbV9zaXplKQorICAgICAgICB9OworICAgIH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+
IHBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICBj
b25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEN1cnZlVG9DdWJpY1Nt
b290aD4oKTsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1Ntb290
aFNlZ21lbnQgeyAgICAgICAgCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQo
dmFsdWUucG9pbnQyLCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBv
aW50KHZhbHVlLnRhcmdldFBvaW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQorCisgICAg
c3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gcGFy
c2VDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICBjb25zdCBh
dXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWM+KCk7
CisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCB7
CisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUucG9pbnQxLCBtX3Np
emUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnRhcmdldFBv
aW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQ
YXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4gcGFyc2VDdXJ2ZVRvUXVh
ZHJhdGljU21vb3RoU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gU1ZHUGF0
aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQgeyBmbG9hdFBvaW50Rm9yTGVu
Z3RoUG9pbnQodmFsdWU8U2hhcGVTZWdtZW50Q3VydmVUb1F1YWRyYXRpY1Ntb290aD4oKSwgbV9z
aXplKSB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6QXJjVG9T
ZWdtZW50PiBwYXJzZUFyY1RvU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICBjb25zdCBh
dXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEFyY1RvPigpOworICAgICAgICBh
dXRvIHJhZGl1cyA9IGZsb2F0U2l6ZUZvckxlbmd0aFNpemUodmFsdWUucmFkaXVzLCBtX3NpemUp
OworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50IHsKKyAgICAgICAg
ICAgIC5yeCA9IHJhZGl1cy53aWR0aCgpLAorICAgICAgICAgICAgLnJ5ID0gcmFkaXVzLmhlaWdo
dCgpLAorICAgICAgICAgICAgLmFuZ2xlID0gdmFsdWUuYW5nbGUsCisgICAgICAgICAgICAubGFy
Z2VBcmMgPSB2YWx1ZS5sYXJnZUFyYywKKyAgICAgICAgICAgIC5zd2VlcCA9IHZhbHVlLnN3ZWVw
LAorICAgICAgICAgICAgLnRhcmdldFBvaW50ID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZh
bHVlLnRhcmdldFBvaW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICBjb25zdCB0eXBlbmFtZSBUOjpWYWx1ZSYgdmFsdWUoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1faXRlbUN1cnJlbnQgPD0gbV9zZWdtZW50cy5zaXplKCkpOwor
ICAgICAgICByZXR1cm4gZXh0cmFjdFZhbHVlPFQ+KG1fc2VnbWVudHMuYXQobV9pdGVtQ3VycmVu
dCAtIDEpLmdldCgpKTsKKyAgICB9CisKKyAgICBjb25zdCBMZW5ndGhQb2ludCYgbV9zdGFydDsK
KyAgICBjb25zdCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIG1fc2VnbWVudHM7Cisg
ICAgRmxvYXRTaXplIG1fc2l6ZTsKKyAgICBzaXplX3QgbV9pdGVtRW5kOworICAgIHNpemVfdCBt
X2l0ZW1DdXJyZW50ID0gMDsKK307CisKK1BhdGggQmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aChj
b25zdCBMZW5ndGhQb2ludCYgc3RhcnQsIGNvbnN0IFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21l
bnQ+PiYgc2VnbWVudHMsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBTaGFwZVNWR1Bh
dGhTb3VyY2Ugc291cmNlKHN0YXJ0LCBzZWdtZW50cywgc2l6ZSk7CisgICAgUGF0aCBwYXRoOwor
ICAgIFNWR1BhdGhCdWlsZGVyIGJ1aWxkZXIocGF0aCk7CisgICAgU1ZHUGF0aFBhcnNlcjo6cGFy
c2Uoc291cmNlLCBidWlsZGVyKTsKKyAgICByZXR1cm4gcGF0aDsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNWQxOGNlODUwNmNlNjJkZDMyNjU3NTRkZTA3NDZhZDBiYzE5NDZmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50
LmgKQEAgLTAsMCArMSwxNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3Nl
bnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ikxlbmd0aC5oIgorI2luY2x1ZGUgIkxlbmd0aFBvaW50LmgiCisjaW5jbHVkZSAiTGVuZ3RoU2l6
ZS5oIgorI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCIKKyNpbmNsdWRlICJTVkdQYXRoU291cmNlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEJsZW5kaW5nQ29udGV4dDsKK2NsYXNz
IEZsb2F0UmVjdDsKK2NsYXNzIFBhdGg7CisKK3N0cnVjdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1Zh
bHVlIHsKKyAgICBMZW5ndGhQb2ludCBwb2ludDE7CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQyOwor
ICAgIExlbmd0aFBvaW50IHRhcmdldFBvaW50OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
dXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBwb2ludDEgPT0gb3RoZXIucG9pbnQxICYmIHBvaW50MiA9PSBvdGhlci5wb2ludDIgJiYg
dGFyZ2V0UG9pbnQgPT0gb3RoZXIudGFyZ2V0UG9pbnQ7CisgICAgfQorfTsKKworc3RydWN0IEN1
cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUgeworICAgIExlbmd0aFBvaW50IHBvaW50MjsK
KyAgICBMZW5ndGhQb2ludCB0YXJnZXRQb2ludDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q3VydmVUb0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gcG9pbnQyID09IG90aGVyLnBvaW50MiAmJiB0YXJnZXRQb2ludCA9PSBvdGhl
ci50YXJnZXRQb2ludDsKKyAgICB9Cit9OworCitzdHJ1Y3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBl
U2VnVmFsdWUgeworICAgIExlbmd0aFBvaW50IHBvaW50MTsKKyAgICBMZW5ndGhQb2ludCB0YXJn
ZXRQb2ludDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hh
cGVTZWdWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gcG9pbnQxID09
IG90aGVyLnBvaW50MSAmJiB0YXJnZXRQb2ludCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9
Cit9OworCisKK3N0cnVjdCBBcmNUb1NoYXBlU2VnVmFsdWUgeworICAgIExlbmd0aFNpemUgcmFk
aXVzOworICAgIGZsb2F0IGFuZ2xlID0gMDsKKyAgICBib29sIHN3ZWVwID0gZmFsc2U7CisgICAg
Ym9vbCBsYXJnZUFyYyA9IGZhbHNlOworICAgIExlbmd0aFBvaW50IHRhcmdldFBvaW50OworCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYgb3RoZXIpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gcmFkaXVzID09IG90aGVyLnJhZGl1cyAmJiBhbmdsZSA9
PSBvdGhlci5hbmdsZSAmJiBzd2VlcCA9PSBvdGhlci5zd2VlcCAmJiBsYXJnZUFyYyA9PSBvdGhl
ci5sYXJnZUFyYyAmJiB0YXJnZXRQb2ludCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9Cit9
OworCisKK0N1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb0N1Ymlj
U2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBC
bGVuZGluZ0NvbnRleHQmKTsKK0N1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUgYmxlbmQo
Y29uc3QgQ3VydmVUb0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEN1cnZlVG9DdWJp
Y1Ntb290aFNoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKTsKK0N1cnZlVG9R
dWFkcmF0aWNTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNl
Z1ZhbHVlJiwgY29uc3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVu
ZGluZ0NvbnRleHQmKTsKK0FyY1RvU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBBcmNUb1NoYXBl
U2VnVmFsdWUmLCBjb25zdCBBcmNUb1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRl
eHQmKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCBTVkdQYXRoU2VnVHlwZSBBYnNU
eXBlLCBTVkdQYXRoU2VnVHlwZSBSZWxUeXBlPgorc3RydWN0IFNoYXBlU2VnbWVudFR5cGVEZWZp
bml0aW9uIHsKKyAgICB0eXBlZGVmIFZhbHVlVHlwZSBWYWx1ZTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGF1dG8gQWJzU2VnVHlwZSA9IEFic1R5cGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IFJlbFNlZ1R5cGUgPSBSZWxUeXBlOworfTsKKworc3RydWN0IFNoYXBlU2VnbWVudE1vdmVUbyA6
IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxMZW5ndGhQb2ludCwgUGF0aFNlZ01v
dmVUb0FicywgUGF0aFNlZ01vdmVUb1JlbD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudExpbmVU
byA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxMZW5ndGhQb2ludCwgUGF0aFNl
Z0xpbmVUb0FicywgUGF0aFNlZ0xpbmVUb1JlbD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudExp
bmVUb0hvcml6b250YWwgOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248TGVuZ3Ro
LCBQYXRoU2VnTGluZVRvSG9yaXpvbnRhbEFicywgUGF0aFNlZ0xpbmVUb0hvcml6b250YWxSZWw+
IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRMaW5lVG9WZXJ0aWNhbCA6IHB1YmxpYyBTaGFwZVNl
Z21lbnRUeXBlRGVmaW5pdGlvbjxMZW5ndGgsIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbEFicywgUGF0
aFNlZ0xpbmVUb1ZlcnRpY2FsUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50Q3VydmVUb0N1
YmljIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPEN1cnZlVG9DdWJpY1NoYXBl
U2VnVmFsdWUsIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNBYnMsIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNSZWw+
IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljIDogcHVibGljIFNoYXBl
U2VnbWVudFR5cGVEZWZpbml0aW9uPEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlLCBQYXRo
U2VnQ3VydmVUb1F1YWRyYXRpY0FicywgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNSZWw+IHsgfTsK
K3N0cnVjdCBTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWNTbW9vdGggOiBwdWJsaWMgU2hhcGVTZWdt
ZW50VHlwZURlZmluaXRpb248Q3VydmVUb0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSwgUGF0aFNl
Z0N1cnZlVG9DdWJpY1Ntb290aEFicywgUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aFJlbD4geyB9
Oworc3RydWN0IFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWNTbW9vdGggOiBwdWJsaWMgU2hh
cGVTZWdtZW50VHlwZURlZmluaXRpb248TGVuZ3RoUG9pbnQsIFBhdGhTZWdDdXJ2ZVRvUXVhZHJh
dGljU21vb3RoQWJzLCBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1Ntb290aFJlbD4geyB9Oworc3Ry
dWN0IFNoYXBlU2VnbWVudEFyY1RvIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9u
PEFyY1RvU2hhcGVTZWdWYWx1ZSwgUGF0aFNlZ0FyY0FicywgUGF0aFNlZ0FyY1JlbD4geyB9Owor
CisjZGVmaW5lIEZPUl9FQUNIX1NIQVBFX1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKE1hY3JvKSBc
CisgICAgTWFjcm8oTW92ZVRvKSBcCisgICAgTWFjcm8oTGluZVRvKSBcCisgICAgTWFjcm8oTGlu
ZVRvSG9yaXpvbnRhbCkgXAorICAgIE1hY3JvKExpbmVUb1ZlcnRpY2FsKSBcCisgICAgTWFjcm8o
Q3VydmVUb0N1YmljKSBcCisgICAgTWFjcm8oQ3VydmVUb1F1YWRyYXRpYykgXAorICAgIE1hY3Jv
KEN1cnZlVG9DdWJpY1Ntb290aCkgXAorICAgIE1hY3JvKEN1cnZlVG9RdWFkcmF0aWNTbW9vdGgp
IFwKKyAgICBNYWNybyhBcmNUbykKKworY2xhc3MgQmFzaWNTaGFwZVNlZ21lbnQgOiBwdWJsaWMg
UmVmQ291bnRlZDxCYXNpY1NoYXBlU2VnbWVudD4geworcHVibGljOgorICAgIHR5cGVkZWYgU1ZH
UGF0aFNlZ1R5cGUgVHlwZTsKKyAgICB+QmFzaWNTaGFwZVNlZ21lbnQoKSA9IGRlZmF1bHQ7CisK
KyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIFJlZjxCYXNp
Y1NoYXBlU2VnbWVudD4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIGZyb20sIGNvbnN0
IEJsZW5kaW5nQ29udGV4dCYpIGNvbnN0OworICAgIGJvb2wgZXF1YWxzKGNvbnN0IEJhc2ljU2hh
cGVTZWdtZW50JikgY29uc3Q7CisKKyAgICBzdGF0aWMgUGF0aCB0b1BhdGgoY29uc3QgTGVuZ3Ro
UG9pbnQmIHN0YXJ0LCBjb25zdCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mLCBjb25z
dCBGbG9hdFNpemUmKTsKKworI2RlZmluZSBERUZJTkVfU0hBUEVfU0VHTUVOVF9UWVBFKFQpIFwK
KyAgICBzdGF0aWMgUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBjcmVhdGUjI1QoVHlwZSwgdHlwZW5h
bWUgU2hhcGVTZWdtZW50IyNUOjpWYWx1ZSYmKTsgXAorICAgIGNvbnN0IHR5cGVuYW1lIFNoYXBl
U2VnbWVudCMjVDo6VmFsdWUmIGFzIyNUKCkgY29uc3Q7CisKKyAgICBGT1JfRUFDSF9TSEFQRV9T
RUdNRU5UX1RZUEVfV0lUSF9WQUxVRShERUZJTkVfU0hBUEVfU0VHTUVOVF9UWVBFKQorCisgICAg
c3RhdGljIFJlZjxCYXNpY1NoYXBlU2VnbWVudD4gY3JlYXRlQ2xvc2VQYXRoKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJhc2ljU2hhcGVTZWdtZW50KFBhdGhTZWdDbG9z
ZVBhdGgpKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBCYXNpY1NoYXBlU2VnbWVudChUeXBl
IHQpCisgICAgICAgIDogbV90eXBlKHQpIHsgfQorCitwcml2YXRlOgorICAgIFR5cGUgbV90eXBl
OworfTsKKworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hh
cGVzLmNwcAppbmRleCAwODZhNmY2YTYzYTI1ZTUwMjNhZTk1YmZhODRmNGZhN2Q0ZmZjMjYyLi42
NzNmZWE2YzRkMjYzMDBhNjg3ZjlkNWRhM2I4NjMzZTg1ZTAwMWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKQEAgLTEyMSw2ICsxMjEsNDQg
QEAgc3RydWN0IFRyYW5zZm9ybWVkQnl0ZVN0cmVhbVBhdGhQb2xpY3kgOiBUaW55TFJVQ2FjaGVQ
b2xpY3k8U1ZHUGF0aFRyYW5zZm9ybWVkQnkKICAgICBzdGF0aWMgUGF0aCBjcmVhdGVWYWx1ZUZv
cktleShjb25zdCBTVkdQYXRoVHJhbnNmb3JtZWRCeXRlU3RyZWFtJiBzdHJlYW0pIHsgcmV0dXJu
IHN0cmVhbS5wYXRoKCk7IH0KIH07CiAKK3N0cnVjdCBTaGFwZVNlZ21lbnRzV2l0aEJveCB7Cisg
ICAgTGVuZ3RoUG9pbnQgc3RhcnQ7CisgICAgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+
IHNlZ21lbnRzOworICAgIEZsb2F0UmVjdCBib3g7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2hhcGVTZWdtZW50c1dpdGhCb3gmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KGJveCAhPSBvdGhlci5ib3ggfHwgc2VnbWVudHMuc2l6ZSgpID09IG90aGVyLnNlZ21lbnRzLnNp
emUoKSB8fCBzdGFydCAhPSBvdGhlci5zdGFydCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlZ21lbnRzLnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICBpZiAoIXNlZ21lbnRzLmF0KGkpLT5lcXVhbHMob3RoZXIuc2VnbWVudHMu
YXQoaSkuZ2V0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTaGFwZVNlZ21lbnRzV2l0aEJveCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorfTsKKworc3RydWN0IFNoYXBlU2VnbWVudHNQ
YXRoUG9saWN5IDogVGlueUxSVUNhY2hlUG9saWN5PFNoYXBlU2VnbWVudHNXaXRoQm94LCBQYXRo
PiB7CisgICAgc3RhdGljIGJvb2wgaXNLZXlOdWxsKGNvbnN0IFNoYXBlU2VnbWVudHNXaXRoQm94
JiBzZWdtZW50c1dpdGhCb3gpCisgICAgeworICAgICAgICByZXR1cm4gc2VnbWVudHNXaXRoQm94
LnNlZ21lbnRzLmlzRW1wdHkoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGF0aCBjcmVhdGVWYWx1
ZUZvcktleShjb25zdCBTaGFwZVNlZ21lbnRzV2l0aEJveCYgc2VnbWVudHNXaXRoQm94KQorICAg
IHsKKyAgICAgICAgYXV0byBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aChzZWdtZW50
c1dpdGhCb3guc3RhcnQsIHNlZ21lbnRzV2l0aEJveC5zZWdtZW50cywgc2VnbWVudHNXaXRoQm94
LmJveC5zaXplKCkpOworICAgICAgICBwYXRoLnRyYW5zbGF0ZSh0b0Zsb2F0U2l6ZShzZWdtZW50
c1dpdGhCb3guYm94LmxvY2F0aW9uKCkpKTsKKyAgICAgICAgcmV0dXJuIHBhdGg7CisgICAgfQor
fTsKKwogc3RhdGljIGNvbnN0IFBhdGgmIGNhY2hlZEVsbGlwc2VQYXRoKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPEZsb2F0
UmVjdCwgUGF0aCwgNCwgRWxsaXBzZVBhdGhQb2xpY3k+PiBjYWNoZTsKQEAgLTE0NSw2ICsxODMs
MTIgQEAgc3RhdGljIGNvbnN0IFBhdGgmIGNhY2hlZFRyYW5zZm9ybWVkQnl0ZVN0cmVhbVBhdGgo
Y29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0mIHN0cmUKICAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0
KFNWR1BhdGhUcmFuc2Zvcm1lZEJ5dGVTdHJlYW0geyBzdHJlYW0sIHpvb20sIG9mZnNldCB9KTsK
IH0KIAorc3RhdGljIGNvbnN0IFBhdGgmIGNhY2hlZFNoYXBlU2VnbWVudHNQYXRoKGNvbnN0IExl
bmd0aFBvaW50JiBmcm9tLCBjb25zdCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIHNl
Z21lbnRzLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFRpbnlMUlVDYWNoZTxTaGFwZVNlZ21lbnRzV2l0aEJveCwgUGF0aCwgNCwgU2hhcGVTZWdt
ZW50c1BhdGhQb2xpY3k+PiBjYWNoZTsKKyAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KFNoYXBl
U2VnbWVudHNXaXRoQm94IHsgZnJvbSwgc2VnbWVudHMsIHJlY3QgfSk7Cit9CisKIGJvb2wgQmFz
aWNTaGFwZUNpcmNsZTo6b3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJiBvdGhlcikgY29uc3QK
IHsKICAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKQEAgLTQ2Myw2ICs1MDcsNzggQEAg
dm9pZCBCYXNpY1NoYXBlSW5zZXQ6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgdHMu
ZHVtcFByb3BlcnR5KCJib3R0b20tbGVmdC1yYWRpdXMiLCBib3R0b21MZWZ0UmFkaXVzKCkpOwog
fQogCisKK0Jhc2ljU2hhcGVTaGFwZTo6QmFzaWNTaGFwZVNoYXBlKGNvbnN0IExlbmd0aFBvaW50
JiBmcm9tLCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mJiBzZWdtZW50cykKKyAgICA6
IG1fc2VnbWVudHMobWFrZVVuaXF1ZTxWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4+KFdU
Rk1vdmUoc2VnbWVudHMpKSkKKyAgICAsIG1fZnJvbShmcm9tKQoreworfQorCitjb25zdCBQYXRo
JiBCYXNpY1NoYXBlU2hhcGU6OnBhdGgoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkKK3sK
KyAgICByZXR1cm4gY2FjaGVkU2hhcGVTZWdtZW50c1BhdGgobV9mcm9tLCAqbV9zZWdtZW50cywg
Ym91bmRpbmdCb3gpOworfQorCitib29sIEJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PShjb25z
dCBCYXNpY1NoYXBlJiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5
cGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgQmFzaWNTaGFwZVNoYXBl
JiBvdGhlclNoYXBlID0gZG93bmNhc3Q8QmFzaWNTaGFwZVNoYXBlPihvdGhlcik7CisgICAgYXV0
byBzaXplID0gdGhpcy0+c2l6ZSgpOworICAgIGlmICh3aW5kUnVsZSgpICE9IG90aGVyU2hhcGUu
d2luZFJ1bGUoKSB8fCBzaXplID09IG90aGVyU2hhcGUuc2l6ZSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAg
ICBpZiAoIWF0KGkpLmVxdWFscyhvdGhlclNoYXBlLmF0KGkpKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCYXNpY1NoYXBl
U2hhcGU6OmNhbkJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIG90aGVyKSBjb25zdAoreworICAgIGlm
ICh0eXBlKCkgIT0gb3RoZXIudHlwZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBh
dXRvIHNpemUgPSB0aGlzLT5zaXplKCk7CisgICAgYXV0byYgb3RoZXJTaGFwZSA9IGRvd25jYXN0
PEJhc2ljU2hhcGVTaGFwZT4ob3RoZXIpOworICAgIGlmICh3aW5kUnVsZSgpICE9IG90aGVyU2hh
cGUud2luZFJ1bGUoKSB8fCBzaXplICE9IG90aGVyU2hhcGUuc2l6ZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgICBpZiAoYXQoaSkudHlwZSgpICE9IG90aGVyU2hhcGUuYXQoaSkudHlwZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitSZWY8
QmFzaWNTaGFwZT4gQmFzaWNTaGFwZVNoYXBlOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBmcm9t
LCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHR5
cGUoKSA9PSBmcm9tLnR5cGUoKSk7CisgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOworICAg
IGF1dG8mIGZyb21TaGFwZSA9IGRvd25jYXN0PEJhc2ljU2hhcGVTaGFwZT4oZnJvbSk7CisgICAg
QVNTRVJUKHNpemUgPT0gZnJvbVNoYXBlLnNpemUoKSk7CisKKyAgICBWZWN0b3I8UmVmPEJhc2lj
U2hhcGVTZWdtZW50Pj4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHNpemUpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAg
IHJlc3VsdC5hcHBlbmQoYXQoaSkuYmxlbmQoZnJvbVNoYXBlLmF0KGkpLCBjb250ZXh0KSk7CisK
KyAgICBhdXRvIG5ld1NoYXBlID0gQmFzaWNTaGFwZVNoYXBlOjpjcmVhdGUoV2ViQ29yZTo6Ymxl
bmQoZnJvbVNoYXBlLmZyb20oKSwgbV9mcm9tLCBjb250ZXh0KSwgV1RGTW92ZShyZXN1bHQpKTsK
KyAgICBuZXdTaGFwZS0+c2V0V2luZFJ1bGUod2luZFJ1bGUoKSk7CisgICAgcmV0dXJuIG5ld1No
YXBlOworfQorCit2b2lkIEJhc2ljU2hhcGVTaGFwZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29u
c3QKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoIndpbmQtcnVsZSIsIHdpbmRSdWxlKCkpOworICAg
IC8vIEZJWE1FOiBwcmludCB0aGUgYnl0ZSBzdHJlYW0/Cit9CisKIHN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBCYXNpY1NoYXBlUmFkaXVzOjpUeXBlIHJhZGl1
c1R5cGUpCiB7CiAgICAgc3dpdGNoIChyYWRpdXNUeXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCmluZGV4IDliZjAzNzM0NzZiNTNlNWM3YTRhOWJj
NjIzOWU0NWVjNGFkNTM0ZTQuLjMxZThmM2RmNWRjYjE2MmU4MjUzNzM0ZDRiNWNjZWI5MGNlYzkx
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCkBA
IC0zMCw2ICszMCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2lu
Y2x1ZGUgIkxlbmd0aFBvaW50LmgiCiAjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgogI2luY2x1ZGUg
IldpbmRSdWxlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ3LDYgKzQ4LDcg
QEAgc3RydWN0IEJsZW5kaW5nQ29udGV4dDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIFBhdGg7
CiBjbGFzcyBSZW5kZXJCb3g7CitjbGFzcyBCYXNpY1NoYXBlU2VnbWVudDsKIGNsYXNzIFNWR1Bh
dGhCeXRlU3RyZWFtOwogCiBjbGFzcyBCYXNpY1NoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8QmFz
aWNTaGFwZT4gewpAQCAtNTgsNyArNjAsOCBAQCBwdWJsaWM6CiAgICAgICAgIFBhdGgsCiAgICAg
ICAgIENpcmNsZSwKICAgICAgICAgRWxsaXBzZSwKLSAgICAgICAgSW5zZXQKKyAgICAgICAgSW5z
ZXQsCisgICAgICAgIFNoYXBlCiAgICAgfTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29u
c3QgPSAwOwpAQCAtMzQzLDYgKzM0Niw0MSBAQCBwcml2YXRlOgogICAgIExlbmd0aFNpemUgbV9i
b3R0b21MZWZ0UmFkaXVzOwogfTsKIAorY2xhc3MgQmFzaWNTaGFwZVNoYXBlIDogcHVibGljIEJh
c2ljU2hhcGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QmFzaWNTaGFwZVNoYXBlPiBjcmVh
dGUoY29uc3QgTGVuZ3RoUG9pbnQmIGZyb20sIFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+
PiYmIHNlZ21lbnRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNT
aGFwZVNoYXBlKGZyb20sIFdURk1vdmUoc2VnbWVudHMpKSk7CisgICAgfQorCisgICAgdm9pZCBz
ZXRXaW5kUnVsZShXaW5kUnVsZSB3aW5kUnVsZSkgeyBtX3dpbmRSdWxlID0gd2luZFJ1bGU7IH0K
KyAgICBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2luZFJ1
bGU7IH0KKworICAgIGNvbnN0IExlbmd0aFBvaW50JiBmcm9tKCkgY29uc3QgeyByZXR1cm4gbV9m
cm9tOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMtPnNp
emUoKTsgfQorICAgIGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBhdChzaXplX3QgaSkgY29uc3Qg
eyByZXR1cm4gbV9zZWdtZW50cy0+YXQoaSkuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBCYXNp
Y1NoYXBlU2hhcGUoY29uc3QgTGVuZ3RoUG9pbnQmLCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdt
ZW50Pj4mJik7CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBUeXBl
OjpTaGFwZTsgfQorCisKKyAgICBjb25zdCBQYXRoJiBwYXRoKGNvbnN0IEZsb2F0UmVjdCYpIG92
ZXJyaWRlOworCisgICAgYm9vbCBjYW5CbGVuZChjb25zdCBCYXNpY1NoYXBlJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIGZyb20s
IGNvbnN0IEJsZW5kaW5nQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEJhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZvaWQgZHVt
cChUZXh0U3RyZWFtJikgY29uc3QgZmluYWw7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+PiBtX3NlZ21lbnRzOworICAgIFdpbmRSdWxlIG1fd2lu
ZFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OworICAgIExlbmd0aFBvaW50IG1fZnJvbTsKK307
CisKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBC
YXNpY1NoYXBlUmFkaXVzJik7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgY29uc3QgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUmKTsKIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBCYXNpY1NoYXBlJik7CkBA
IC0zNTksMyArMzk3LDQgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQRShCYXNp
Y1NoYXBlRWxsaXBzZSwgQmFzaWNTaGFwZTo6VHlwZTo6RWxsaXBzZSkKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkFTSUNfU0hBUEUoQmFzaWNTaGFwZVBvbHlnb24sIEJhc2ljU2hhcGU6OlR5cGU6
OlBvbHlnb24pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVQ
YXRoLCBCYXNpY1NoYXBlOjpUeXBlOjpQYXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CQVNJ
Q19TSEFQRShCYXNpY1NoYXBlSW5zZXQsIEJhc2ljU2hhcGU6OlR5cGU6Okluc2V0KQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQRShCYXNpY1NoYXBlU2hhcGUsIEJhc2ljU2hhcGU6
OlR5cGU6OlNoYXBlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQzNDUzNDhmOWQ5ZmMyMTIzZDE5NWNhM2E5YzkyYjM1MTRl
MzI4NGUuLjRmNjYxMDMwZDJkNDFhYWYxYWI5NGI5M2MxNDIxY2MzZjI3MmQxNDEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAyMi0wNC0xOSAgTm9hbSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFkZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogdW5za2lwIENTUyBzaGFw
ZSgpIHRlc3RzCisKIDIwMjItMDQtMTggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBVbnNraXAgYXBpL3ZhbGlkYXRpb24vY3JlYXRl
U2FtcGxlci5odG1sIPCfjokKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDY0ZWE2
NTdlNmUwNDJhYzNkMTAxOGM4ZGQ4ZDhmYzAyMjVmZWJhMDcuLmFkZjY0NWUyMzkyZDVhOTc5N2Yy
ZjdjNjRmOWRiMGYzMjRmMDc2YzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDIyLTA0LTE5ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBbQ1NTIFNoYXBlc10gQWRkIHN1cHBvcnQgZm9yIHNoYXBlKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODM3MQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vOTA5MTk0NzY+CisKKyAgICAgICAgQW1lbmRlZCB0ZXN0cyB0byBz
dXBwb3J0IENTUyBzaGFwZSgpCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWw6Cisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xp
cC1wYXRoLXNoYXBlLTAwMy5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRtbDoK
KyAgICAgICAgICAgICAgICBOZWVkZWQgdG8gY2hhbmdlIHRoZSB0ZXN0IGEgYml0IGJlY2F1c2Ug
b2Ygc3RyYXkgcGl4ZWxzLiBXaWxsIHVwc3RyZWFtLgorCisKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL3BhcnNpbmcvY2xpcC1wYXRoLXNoYXBlLXBhcnNpbmct
ZXhwZWN0ZWQudHh0OgorICAgICAgICAgICAgICAgIE5vdyBwYXNzZXMKKwogMjAyMi0wNC0xOCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIElt
cGxlbWVudCBDU1NUcmFuc2Zvcm1WYWx1ZS5pczJECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhZTc2
MjZiM2JmMzlhN2FiODY2YmY0YzQyOGY2YTM4Y2IxODYxOWE0Li5iZjA5MmRkNTJkM2FiMWUwNTQ5
OGZhYjBjNmU5ZGU4ZWMzOWQ4NGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIxOTksMTUgKzIx
OTksNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9j
bGlwLXBhdGgvY2xpcC1wYXRoLXZpZXdCb3gtMWMuaAogd2Via2l0Lm9yZy9iLzEwNDQ0MiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xp
cC1wYXRoLXVybC1yZWZlcmVuY2UtY2hhbmdlLWZyb20tZW1wdHkuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzIyOTUxMCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLWRlc2NlbmRhbnQtdGV4dC1t
dXRhdGVkLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgQ1NTIHNoYXBlKCkKLXdl
YmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDEuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMi11bml0cy5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgt
c2hhcGUtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRo
L2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2lu
Zy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtaW50ZXJwb2xhdGlvbi0wMDEu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRo
LXNoYXBlLWludGVycG9sYXRpb24tMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Vi
a2l0Lm9yZy9iLzIyOTM3MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
bWFza2luZy9jbGlwL2NsaXAtZmlsdGVyLW9yZGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8yMjkzNzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW1hc2tpbmcvbWFzay1pbWFnZS9tYXNrLWltYWdlLXVybC1sb2NhbC1tYXNrLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMjkzNzAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvbWFzay1pbWFnZS9tYXNrLWltYWdlLXVybC1y
ZW1vdGUtbWFzay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlw
LXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2Ns
aXAtcGF0aC1zaGFwZS0wMDMtZXhwZWN0ZWQuaHRtbAppbmRleCA0NmUwOThjNGViNjQ4OWZjNDQz
MDFkNmJmOWIyNDNlODM2YjJjYTMxLi4zMWU5N2M5MTQ3NDQ4YWE4NDkyNjQyZTQxOTZhYTkxYjVj
YTZhNDg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy1leHBl
Y3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVk
Lmh0bWwKQEAgLTksMTQgKzksMjMgQEAKICAgICB3aWR0aDogMTAwcHg7CiAgICAgaGVpZ2h0OiAx
MDBweDsKICAgfQotICAjcmVmIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKworICAj
cmVmLCAjYWN0dWFsIHsKICAgICBjbGlwLXBhdGg6IHBhdGgobm9uemVybywgIk0gMTAgMTAsIFEg
NDAgMCA2MCAyMCwgVCA5MCAwLCBjIDEwIDQwIDIwIDIwIC0yMCA2MCwgcyAtMTAgNzAgLTQwIC0x
MCIpOwogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgfQorCisgICNyZWYgeworICAgIGJhY2tn
cm91bmQtY29sb3I6IHJlZDsKKyAgfQorCisgICNhY3R1YWwgeworICAgIGJhY2tncm91bmQtY29s
b3I6IGdyZWVuOworICB9CiA8L3N0eWxlPgogPGJvZHk+CiAgIDxwPllvdSBzaG91bGQgc2VlIG5v
IHJlZC48L3A+CiAgIDxkaXYgaWQ9InJlZiI+PC9kaXY+CisgIDxkaXYgaWQ9ImFjdHVhbCI+PC9k
aXY+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRo
LXNoYXBlLTAwMy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbApp
bmRleCAyMmU3ZDlhYWY1Mzc0YzliN2U0ZTNjMmQ1MGVjZWZiY2VjMTM0YjY2Li5lMDE3MDkwMDVh
YzhjZjhlMzVkMDYyYTY4NTdiNjQ2MjdiNWViZTA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgv
Y2xpcC1wYXRoLXNoYXBlLTAwMy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hh
cGUtMDAzLmh0bWwKQEAgLTYsNiArNiw3IEBACiAgIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InJl
ZmVyZW5jZS9jbGlwLXBhdGgtc2hhcGUtMDAzLXJlZi5odG1sIj4KICAgPG1ldGEgbmFtZT0iYXNz
ZXJ0IiBjb250ZW50PSJUaGUgY2xpcC1wYXRoIHByb3BlcnR5IHRha2VzIHRoZSBiYXNpYyBzaGFw
ZQogCSdzaGFwZSgpJyBmb3IgY2xpcHBpbmcuIFRlc3QgY3VydmVzLiI+CisgIDxtZXRhIG5hbWU9
ImZ1enp5IiBjb250ZW50PSJtYXhEaWZmZXJlbmNlPTgwOyB0b3RhbFBpeGVscz0zOTQiPgogPC9o
ZWFkPgogPHN0eWxlPgogICBkaXYgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0
aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUt
MDA0LWV4cGVjdGVkLmh0bWwKaW5kZXggZWM4Zjk0MTA3OTUxMzhmN2EzNDkwZDdhNDE2OWI1ZWJk
NWUzNzQ3NC4uMTBmNDU3YjkxMTg0ZjEwMTMwNjg5YTI3MzA1ZmMyZGQzNjZlMjgzMiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFz
a2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwNC1leHBlY3RlZC5odG1sCkBAIC05LDE0
ICs5LDIzIEBACiAgICAgd2lkdGg6IDEwMHB4OwogICAgIGhlaWdodDogMTAwcHg7CiAgIH0KLSAg
I3JlZiB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisKKyAgI3JlZiwgI2FjdHVhbCB7
CiAgICAgY2xpcC1wYXRoOiBwYXRoKG5vbnplcm8sICJNIDIwIDIwIEEgMjUgMTIgMCAwIDEgODAg
MjAsIGEgMzMgMzMgMTIwIDEgMSAtNDAgNTAsIEEgMjAgMjUgMCAwIDAgMjAgMjAiKTsKICAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CiAgIH0KKworICAjcmVmIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZWQ7CisgIH0KKworICAjYWN0dWFsIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsK
KyAgfQogPC9zdHlsZT4KIDxib2R5PgogICA8cD5Zb3Ugc2hvdWxkIHNlZSBubyByZWQuPC9wPgog
ICA8ZGl2IGlkPSJyZWYiPjwvZGl2PgorICA8ZGl2IGlkPSJhY3R1YWwiPjwvZGl2PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2lu
Zy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2NsaXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVj
dGVkLnR4dAppbmRleCBlOTRhZWU4YjZiNGNiMDRmN2FmZTgyYWQ2NWIzYzE0OGJjNDExMjVmLi5l
MDU4MGVkZmMxZDhlZjMyNzc1YjVkOTZmMzg3ZWU1ZTdhNDdhMzBkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9w
YXJzaW5nL2NsaXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJz
aW5nL2NsaXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dApAQCAtMSwyNCArMSwyNCBA
QAogCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMHB4IDBweCwgbGlu
ZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90
X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgot
RkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShldmVub2RkIGZyb20gMHB4IDBweCwg
bGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRf
bm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAi
IgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShub256ZXJvIGZyb20gMHB4IDBw
eCwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3Nl
cnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1
ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZSggIGZyb20gMHB4ICAgIDBw
eCwgbGluZSAgdG8gMTBweCAgMTBweCAgICAgKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFs
dWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93
ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxZW0g
NTAlLCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFz
c2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZh
bHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKEV2ZW5PZGQgZnJvbSAw
cHggMFB4LCBDTE9TRSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3Rf
ZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1G
QUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMWNoIDUwcHgsIGxpbmUgdG8g
MTByZW0gMTB2aCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1
YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlM
IGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMWNoIC01MHB4LCBsaW5lIHRvIC0x
MCUgMTJweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxz
OiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUu
c3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBtb3ZlIGJ5IDEwcHgg
NXB4LCBsaW5lIGJ5IDIwcHggNDAlLCBjbG9zZSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZh
bHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxv
d2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBw
eCAxMHB4LCBobGluZSBieSAxMHB4LCB2bGluZSB0byA1cmVtKSIgc2hvdWxkIHNldCB0aGUgcHJv
cGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290
IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUo
ZnJvbSAxMHB4IDEwcHgsIHZsaW5lIGJ5IDUlLCBobGluZSB0byAxdncpIiBzaG91bGQgc2V0IHRo
ZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNl
dCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJz
aGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNo
b3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBz
aG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAt
cGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEw
cmVtIDFweCAyMHZoIDFjaCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9u
b3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIi
Ci1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2
ZSBieSA1MHB4IDIwcHggdmlhIDEwcmVtIDFweCAyMHZoIDFjaCkiIHNob3VsZCBzZXQgdGhlIHBy
b3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdv
dCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBl
KGZyb20gMTBweCAxMHB4LCBzbW9vdGggdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNob3Vs
ZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91
bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0
aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBzbW9vdGggdG8gNTBweCAxcHQpIiBzaG91bGQg
c2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxk
IGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgn
XSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgYXJjIHRvIDUwcHggMXB0IG9mIDEwcHggMTBweCki
IHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0
eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2Ns
aXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBhcmMgdG8gNTBweCAxcHQgb2YgMTBw
eCAxMHB4IHNtYWxsIHJvdGF0ZSAwZGVnKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUg
YXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQg
dmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMCUgMXJl
bSwgYXJjIHRvIDUwcHggMXB0IG9mIDIwJSBjdyBsYXJnZSByb3RhdGUgMjVkZWcpIiBzaG91bGQg
c2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxk
IGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgn
XSA9ICJzaGFwZShldmVub2RkIGZyb20gMHB4IDBweCwgY2xvc2UpIiBzaG91bGQgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBn
b3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVy
dHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9t
IDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFs
dWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUobm9uemVybyBmcm9tIDBweCAw
cHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BB
U1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoICBmcm9tIDBweCAgICAwcHgsIGxpbmUg
IHRvIDEwcHggIDEwcHggICAgICkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNT
IGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMWVtIDUwJSwgbGluZSB0byAxMHB4
IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlw
LXBhdGgnXSA9ICJzaGFwZShFdmVuT2RkIGZyb20gMHB4IDBQeCwgQ0xPU0UpIiBzaG91bGQgc2V0
IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShm
cm9tIDFjaCA1MHB4LCBsaW5lIHRvIDEwcmVtIDEwdmgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0
eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFjaCAtNTBw
eCwgbGluZSB0byAtMTAlIDEycHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFT
UyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgbW92ZSBieSAx
MHB4IDVweCwgbGluZSBieSAyMHB4IDQwJSwgY2xvc2UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0
eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBw
eCwgaGxpbmUgYnkgMTBweCwgdmxpbmUgdG8gNXJlbSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5
IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4
LCB2bGluZSBieSA1JSwgaGxpbmUgdG8gMXZ3KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFs
dWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1
cnZlIHRvIDUwcHggMjBweCB2aWEgMTByZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwg
Y3VydmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQgc2V0IHRo
ZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9t
IDEwcHggMTBweCwgY3VydmUgYnkgNTBweCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9
ICJzaGFwZShmcm9tIDEwcHggMTBweCwgc21vb3RoIHRvIDUwcHggMjBweCB2aWEgMTByZW0gMSUp
IiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgn
XSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgc21vb3RoIHRvIDUwcHggMXB0KSIgc2hvdWxkIHNl
dCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUo
ZnJvbSAxMHB4IDEwcHgsIGFyYyB0byA1MHB4IDFwdCBvZiAxMHB4IDEwcHgpIiBzaG91bGQgc2V0
IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShm
cm9tIDEwcHggMTBweCwgYXJjIHRvIDUwcHggMXB0IG9mIDEwcHggMTBweCBzbWFsbCByb3RhdGUg
MGRlZykiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAt
cGF0aCddID0gInNoYXBlKGZyb20gMTAlIDFyZW0sIGFyYyB0byA1MHB4IDFwdCBvZiAyMCUgY3cg
bGFyZ2Ugcm90YXRlIDI1ZGVnKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1Mg
ZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGNsb3Nl
KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKIFBBU1MgZS5zdHlsZVsnY2xpcC1wYXRo
J10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGNsb3NlIHBhdGgpIiBzaG91bGQgbm90
IHNldCB0aGUgcHJvcGVydHkgdmFsdWUKIFBBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hh
cGUobm9uemVybywgZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBub3Qg
c2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQogUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShmcm9tIDEwcHggMTBweCwgY3VydmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSkiIHNob3VsZCBu
b3Qgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457891</attachid>
            <date>2022-04-19 07:34:25 -0700</date>
            <delta_ts>2022-04-19 09:20:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238371-20220419173422.patch</filename>
            <type>text/plain</type>
            <size>97441</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0MDhiYzRlZDIxNmNh
YWM1ZWVlZTUyMDkyNWQ3NzYzOGU0M2QwZC4uYzhmMjI3MTg0NDc0MGQ5Njc0Mjg0YzY3ODkyNGUx
ZjgwODQyODU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0xOSAgTm9h
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFk
ZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBDU1Mgc2hhcGUoKSBieSBpbnRyb2R1Y2luZyBzaGFwZSBzZWdtZW50IGFuZCBCYXNpY1NoYXBl
U2hhcGUuCisgICAgICAgIFNoYXBlU2hhcGUgaXMgYSB2ZWN0b3Igb2Ygc2hhcGUgc2VnbWVudHMs
IHdoZXJlIGVhY2ggc2VnbWVudCBibGVuZHMgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgVGhlIHNo
YXBlIHVsdGltYXRlbHkgY3JlYXRlcyBhbiBTVkdQYXRoU291cmNlIHRvIGNvbnZlcnQgdGhlIHJl
c3BvbnNpdmUgc2hhcGUsIHdoaWNoCisgICAgICAgIGlzIGJhc2VkIG9uIExlbmd0aCB2YWx1ZXMs
IHRvIGFuIGFic29sdXRlIFBhdGggb2JqZWN0IHRoYXQgY2FuIGJlIGRyYXduLgorCisgICAgICAg
IFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXNoYXBlcy0yLyNzaGFwZS1mdW5jdGlv
bgorCisgICAgICAgIFVuc2tpcHBlZCBzZXZlcmFsIHJlbGV2YW50IFdQVHMuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgICAgICBOZXcgZmlsZXMg
YWRkZWQKKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZhbHVlRm9yQmFzaWNTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9MZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpiYXNpY1NoYXBlRm9yVmFsdWUpOgor
ICAgICAgICAgICAgICAgIEFkZGVkIHRoZSBCYXNpY1NoYXBlU2hhcGUgdHlwZQorCisgICAgICAg
ICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Q1NTQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2lj
U2hhcGVTaGFwZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6
CisgICAgICAgICAgICAgICAgQWRkZWQgdGhlIENTU0Jhc2ljU2hhcGVTaGFwZQorCisgICAgICAg
ICogY3NzL0NTU1NoYXBlU2VnbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
aGFwZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NT
U2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudDo6Q1NTU2hh
cGVTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OnRhcmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6YXJndW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OmFmZmluaXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjphcHBlbmRBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpDU1NTaGFwZVNlZ21l
bnRWYWx1ZSk6CisgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB0byBkbyB3aXRoIHRoZSBzZWdt
ZW50IG9mIHRoZSBzaGFwZSB3aGlsZSBpbiBDU1Mgc3BhY2UsCisgICAgICAgICAgICAgICAgaW5j
bHVkaW5nIHNlcmlhbGl6YXRpb24gZm9yIGdldENvbXB1dGVkU3R5bGUoKQorCisgICAgICAgICog
Y3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzU2hhcGVTZWdtZW50VmFsdWUgY29uc3Qp
OgorICAgICAgICAgICAgICAgIENTU1NoYXBlU2VnbWVudCBpcyBhIHR5cGUgb2YgdmFsdWUKKwor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAgICAgICAgIE5ldyBr
ZXl3b3JkcyBmb3Igc2hhcGUoKQorCisgICAgICAgICogY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9u
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFBvaW50VG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0FyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6dG9DU1NB
cmdzPExlbmd0aFBvaW50Pik6CisgICAgICAgIChXZWJDb3JlOjp0b0NTU1NoYXBlU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpzZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpmcm9t
Q1NTU2hhcGVTZWdtZW50KToKKyAgICAgICAgKiBjc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmg6
IEFkZGVkLgorICAgICAgICAgICAgICAgIENvbnZlcnRpbmcgc2hhcGUgc2VnbWVudHMgdG8vZnJv
bSBDU1Mgc3BhY2UKKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNoYXBlU2VnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVC
YXNpY1NoYXBlKToKKyAgICAgICAgICAgICAgICBQYXJzZSBhIHNoYXBlIHByb3BlcnR5CisKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OnZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzaWNTaGFwZVNlZ21lbnQ6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6YmxlbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFyY1RvU2hhcGVTZWdWYWx1
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVu
dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6Y3Jl
YXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50OjpCYXNp
Y1NoYXBlU2VnbWVudCk6CisgICAgICAgICAgICAgICAgQmxlbmRpbmcsIGNvbXBhcmluZyBhbmQg
Y29udmVydGluZyB0byBhYnNvbHV0ZSBwYXRoCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhCb3g6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhC
b3g6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1Bh
dGhQb2xpY3k6OmlzS2V5TnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVNlZ21lbnRzUGF0
aFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU2hh
cGVTZWdtZW50c1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpCYXNp
Y1NoYXBlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpwYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6YmxlbmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZVNoYXBlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2V0V2luZFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpmcm9tIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlU2hhcGU6OmF0IGNvbnN0KToKKyAgICAgICAgICAgICAgICBBZGQgQmFz
aWNTaGFwZVNoYXBlCisKIDIwMjItMDQtMTggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgUGxhdGZvcm1NZWRpYUVuZ2luZUNsYXNzTmFt
ZSBtYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODBiYmVhOGU3MjM0ZjA1NWVmZDZlMzQwMDc1
MGIzN2YzMzE3OGNhZS4uNDAxMTNhOGU2MzkzYWQ0Y2JhNmE4ODBjYWVhMmJhYWNkNDJhYzQ0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC01NTQsNiArNTU0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9DU1NSdWxlTGlzdC5oCiAgICAgY3NzL0NTU1Nl
bGVjdG9yLmgKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKyAgICBjc3MvQ1NTU2hhcGVTZWdt
ZW50LmgKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCiAgICAgY3NzL0NTU1N0eWxlUnVs
ZS5oCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtNTgwLDYgKzU4MSw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBjc3MvTWVkaWFRdWVyeUV4cHJlc3Np
b24uaAogICAgIGNzcy9NZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5oCiAgICAgY3NzL1JlY3QuaAor
ICAgIGNzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMuaAogICAgIGNzcy9TdHlsZUNvbG9yLmgKICAg
ICBjc3MvU3R5bGVQcm9wZXJ0aWVzLmgKICAgICBjc3MvU3R5bGVSdWxlLmgKQEAgLTE4ODcsNiAr
MTg4OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmgKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUlu
Zm8uaAogCisgICAgcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmgKICAgICByZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAogICAgIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRh
LmgKICAgICByZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAw
YWYzZDA2YTViMGJiYzY4ZmMwMTEzM2JjY2ZlMWYyY2Q5NzBlODllLi4xNWFhODI2MjY5YzNjODc4
NDZhZjVmYmQ0MzVlMDNjYjJiOGVjMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNzcxLDYgKzc3MSw3
IEBAIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKIGNzcy9DU1NTZWxlY3Rvci5jcHAKIGNz
cy9DU1NTZWxlY3Rvckxpc3QuY3BwCiBjc3MvQ1NTU2hhZG93VmFsdWUuY3BwCitjc3MvQ1NTU2hh
cGVTZWdtZW50LmNwcAogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCiBjc3MvQ1NTU3R5bGVS
dWxlLmNwcAogY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC04MTIsNiArODEzLDcgQEAgY3NzL1By
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcAogY3NzL1NlbGVjdG9yRmls
dGVyLmNwcAorY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAKIGNzcy9TdHlsZUNvbG9yLmNw
cAogY3NzL1N0eWxlTWVkaWEuY3BwCiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMjQ0OSw2
ICsyNDUxLDcgQEAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAKIHJlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwCiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3Bw
CiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCityZW5kZXJpbmcvc3R5bGUvQmFzaWNT
aGFwZVNlZ21lbnQuY3BwCiByZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5jcHAKIHJlbmRlcmlu
Zy9zdHlsZS9Db250ZW50RGF0YS5jcHAKIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYTYxNzYzOWRmNzIwNmZjNDg0NTcwNDhlZTQ0YmE4OTQzYzUyYzdhMi4uZjU0MTkwODIzN2Q2
MTU0YmU0MjBlZDY3YzkwODVlNjQ1OWQwNDU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ1Miw2ICs0NDUyLDEwIEBACiAJ
CUNBM0JGNjdFMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EzQkY2N0QxMEQ5OUJBRTAwRTZD
RTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0E2QzE1MzAyMjBCOThDQzAwNTVDQkZDIC8qIEpTVmFsdWVJbldy
YXBwZWRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMUFFM0I4MUZCODBFQUUwMEY1RUZCMiAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0E3RTlC
NDkyNDM2MURDNTAwNEU4OUY2IC8qIENvbnRlbnRmdWxQYWludENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBN0U5QjQ3MjQzNjFEQzUwMDRF
ODlGNiAvKiBDb250ZW50ZnVsUGFpbnRDaGVja2VyLmggKi87IH07CisJCUNBODE2Q0I2Mjc3ODQ4
MjAwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0E4MTZDQjMyNzc4NDgxRTAwMkJEM0M2IC8qIEJhc2lj
U2hhcGVTZWdtZW50LmggKi87IH07CisJCUNBODE2Q0I5Mjc3ODQ4MkUwMDJCRDNDNiAvKiBDU1NT
aGFwZVNlZ21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENBODE2Q0I4Mjc3ODQ4MkUwMDJCRDNDNiAvKiBDU1NTaGFwZVNlZ21lbnQuaCAqLzsgfTsK
KwkJQ0E4MTZDQkMyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTgxNkNCQTI3
Nzg5QUEyMDAyQkQzQzYgLyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmNwcCAqLzsgfTsKKwkJQ0E4
MTZDQkQyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0E4MTZDQkIyNzc4OUFBNzAw
MkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oICovOyB9OwogCQlDQUU5RjkxMDE0NjQ0
MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIwIC8qIENT
U0FzcGVjdFJhdGlvVmFsdWUuaCAqLzsgfTsKIAkJQ0IzOEZENTIxQ0NGOTM5NDAwNTkyQTNGIC8q
IEpTUGVyZm9ybWFuY2VFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0IzOEZENEUxQ0NGOTM3RTAwNTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VFbnRy
eS5oICovOyB9OwogCQlDQjM4RkQ1QjFDRDIzMjVCMDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDQjM4RkQ1OTFDRDIzMTQ1MDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nLmggKi87IH07CkBAIC0xNTk0Nyw2ICsxNTk1MSw3IEBACiAJCUNBMDkxRDg2MjNDRjkwNzgw
MEFENDM0NiAvKiBTdHlsZUltYWdlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlSW1h
Z2VTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTA5MUQ4OTIzQ0Y5MDg4
MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUltYWdlU2V0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMTYzNURDMjA3MkU3NjkwMEU3RDJD
RSAvKiBSZWZlcnJlclBvbGljeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZWZlcnJlclBvbGljeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNB
MTY2Q0NCMjc4MDY4N0QwMDQ1MjJCMyAvKiBDU1NTaGFwZVNlZ21lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ1NTU2hhcGVTZWdtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0ExOTMzRDUyNDA3RDY0MDAwNzEyNDFBIC8qIFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VQYWludFRpbWluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDQTE5MzNEODI0MDdFRENGMDA3MTI0MUEgLyogUGVyZm9ybWFuY2VQYWlu
dFRpbWluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGVyZm9ybWFuY2VQYWludFRpbWlu
Zy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0E0QUFCMjU0MTZFM0MwMDZD
REFFMiAvKiBJbWFnZVJlc29sdXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW1hZ2VSZXNvbHV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE1OTYyLDYgKzE1OTY3LDExIEBACiAJCUNBNkMxNTM4MjIwRDFFQjMwMDU1Q0JGQyAvKiBK
U0lEQkN1cnNvcldpdGhWYWx1ZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0lEQkN1cnNvcldpdGhWYWx1ZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNBN0U5QjQ3MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFp
bnRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRmdWxQ
YWludENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0E3RTlCNDgyNDM2
MURDNTAwNEU4OUY2IC8qIENvbnRlbnRmdWxQYWludENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudGZ1bFBhaW50Q2hlY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNBODE2Q0IzMjc3ODQ4MUUwMDJCRDNDNiAvKiBCYXNp
Y1NoYXBlU2VnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNpY1No
YXBlU2VnbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCNDI3Nzg0
ODFGMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1NoYXBlU2VnbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCQTI3Nzg5QUEyMDAyQkQzQzYgLyog
U2hhcGVTZWdtZW50RnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRGdW5jdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcGVTZWdtZW50RnVuY3Rpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBRTlGOTBEMTQ2NDQxRjAwMEMyNDVC
MCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENTU0FzcGVjdFJhdGlvVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDQUU5RjkwRTE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNCMzhGRDRBMUNDQ0YyREQwMDU5MkEzRiAv
KiBQZXJmb3JtYW5jZUVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBlcmZvcm1hbmNlRW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Mjk2ODgsNiArMjk2OTgsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRkJENkFGODIxNUVGMjFB
MzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmNwcCAqLywKIAkJCQlGQkQ2QUY4MzE1RUYyMUEzMDA4
QjcxMTAgLyogQmFzaWNTaGFwZXMuaCAqLywKKwkJCQlDQTgxNkNCNDI3Nzg0ODFGMDAyQkQzQzYg
LyogQmFzaWNTaGFwZVNlZ21lbnQuY3BwICovLAorCQkJCUNBODE2Q0IzMjc3ODQ4MUUwMDJCRDND
NiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oICovLAogCQkJCTBGMjgzQTkxMjM1NjMxMjYwMDQ3OTRD
QSAvKiBCb3JkZXJEYXRhLmNwcCAqLywKIAkJCQlCQzVFQjVFMDBFODFCRTg3MDBCMjU5NjUgLyog
Qm9yZGVyRGF0YS5oICovLAogCQkJCUJDNUVCNURBMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJW
YWx1ZS5oICovLApAQCAtMzE5NjEsNiArMzE5NzMsOCBAQAogCQkJCUU0QzE3ODk2MEVFNjkwMzgw
MDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCAqLywKIAkJCQlBODBFNkNDQTBBMTk4OUNBMDA3
RkI4QzUgLyogQ1NTU2hhZG93VmFsdWUuY3BwICovLAogCQkJCUE4MEU2Q0JFMEExOTg5Q0EwMDdG
QjhDNSAvKiBDU1NTaGFkb3dWYWx1ZS5oICovLAorCQkJCUNBMTY2Q0NCMjc4MDY4N0QwMDQ1MjJC
MyAvKiBDU1NTaGFwZVNlZ21lbnQuY3BwICovLAorCQkJCUNBODE2Q0I4Mjc3ODQ4MkUwMDJCRDND
NiAvKiBDU1NTaGFwZVNlZ21lbnQuaCAqLywKIAkJCQk3Q0RFOEVCQzFGMTkzQkM1MDAxNjhGRTcg
LyogQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgKi8sCiAJCQkJQTgwRTZFMEQwQTE5OTExQzAwN0ZC
OEM1IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaCAqLywKIAkJCQkxNDIwMTFBRTBBMDAzMTE3MDA4
MzAzRjkgLyogQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwgKi8sCkBAIC0zMjA5Niw2ICszMjExMCw4
IEBACiAJCQkJNDNCODVFRDYxOENCRUM5NzAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NB
bmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5pbiAqLywKIAkJCQkyNkFBMEY5QTE4RDI5NzNEMDA0
MTkzODEgLyogU2VsZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5pbiAqLywKIAkJCQk0MzEwN0JF
MTE4Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggKi8sCisJCQkJQ0E4
MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgKi8sCisJ
CQkJQ0E4MTZDQkIyNzc4OUFBNzAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oICov
LAogCQkJCTk0MTgyNzg4MUQ4QjI0MjIwMDQ5Mjc2NCAvKiBTdHlsZUNvbG9yLmNwcCAqLywKIAkJ
CQk5NDE4Mjc4OTFEOEIyNDIyMDA0OTI3NjQgLyogU3R5bGVDb2xvci5oICovLAogCQkJCTBGRjUw
MjZFMTAyQkE5NjYwMDY2RjM5QSAvKiBTdHlsZU1lZGlhLmNwcCAqLywKQEAgLTMzODU2LDYgKzMz
ODcyLDcgQEAKIAkJCQk3MTU2QkNBMTIxQ0EzNTBGMDA1MzQzOTcgLyogQmFzaWNFZmZlY3RUaW1p
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCRDZBRjhBMTVFRjI1REYwMDhCNzExMCAvKiBCYXNp
Y1NoYXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4QzE1RUYyNjA0MDA4
QjcxMTAgLyogQmFzaWNTaGFwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNBODE2Q0I2Mjc3ODQ4
MjAwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIy
M0EzMjgwOUJCQTdEMDAwNjdDQzUzIC8qIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NTAzMUIzRDBBNDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5sb2FkRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTI0MEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRp
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDM0Nyw2ICszNDM2NCw3IEBACiAJCQkJRTRD
MTc4OUIwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTRERTVDOEUxRDgwODAyNzAwMTY0RjJBIC8qIENTU1NlbGVjdG9yUGFyc2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODBFNkNFODBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU2hhZG93VmFs
dWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNBODE2Q0I5Mjc3ODQ4MkUwMDJCRDNDNiAvKiBDU1NT
aGFwZVNlZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNTM4QTJBMjZGMDEwNDIwMDk2NUZD
OCAvKiBDU1NTa2V3LmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTUzOEEyQjI2RjAxMDQ1MDA5NjVG
QzggLyogQ1NTU2tld1guaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNTM4QTJDMjZGMDEwNDgwMDk2
NUZDOCAvKiBDU1NTa2V3WS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzQ4NCw2ICszNzUwMiw3IEBA
CiAJCQkJRkQ0NUE5NEYxNzVEM0YzRTAwQzIxRUM4IC8qIFNoYXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDQ1QTk1QjE3NUQ0MUVFMDBDMjFFQzggLyogU2hhcGVJbnRlcnZhbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQ0NUE5NTIxNzVEM0YzRTAwQzIxRUM4IC8qIFNoYXBlT3V0c2lkZUluZm8u
aCBpbiBIZWFkZXJzICovLAorCQkJCUNBODE2Q0JEMjc3ODlBQUQwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMUFGMTUwMTY1NkYxNTEwMEM2
RDRGNyAvKiBTaGFwZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRDlGMEZDMTIxMjIwMjlC
MDA1RDhGRDQgLyogU2hhcmVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOTU0RTBCNEVE
Q0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTM5MDMwLDYg
KzM5MDQ5LDcgQEAKIAkJCQk0M0I4NUVENDE4Q0JFQzUyMDBFMzFBRjQgLyogU2VsZWN0b3JQc2V1
ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTI2QUEwRjlFMThEMkExOEIwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFw
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRDU4REZEMUY5NTY1QTgwMDExMjc5MSAvKiBTZXR0
aW5ncy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDQTgxNkNCQzI3Nzg5QUFEMDAyQkQzQzYgLyog
U2hhcGVTZWdtZW50RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxREYyRDVFMjdB
OTQ1MkEwMEYyNUEyMSAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUzOEYxMEE4MUY5MDIyQTQwMDUxMDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0RDOEI1QUExODA0N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNT
aGFwZUZ1bmN0aW9ucy5jcHAKaW5kZXggOWRmMmNmZjc5NTdlNDVkODliNzIxYTcxZTc1ZTI4ZDg1
YTVlNzlhNy4uMTc3MjIyNmFmZWI3M2Q4NDQ5NTk3ZDZhZGUzNjgzZTY3YjFkNWNhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcApAQCAtMzAsMTMgKzMwLDE2
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQmFzaWNTaGFwZUZ1bmN0aW9ucy5o
IgogCisjaW5jbHVkZSAiQmFzaWNTaGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJCYXNpY1NoYXBl
cy5oIgogI2luY2x1ZGUgIkNTU0Jhc2ljU2hhcGVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZl
VmFsdWVNYXBwaW5ncy5oIgorI2luY2x1ZGUgIkNTU1NoYXBlU2VnbWVudC5oIgogI2luY2x1ZGUg
IkNTU1ZhbHVlUG9vbC5oIgogI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtLmgiCisjaW5jbHVkZSAiU2hhcGVTZWdt
ZW50RnVuY3Rpb25zLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTU0LDYgKzE1Nywy
MiBAQCBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlRm9yQmFzaWNTaGFwZShjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJhc2ljUwogICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBX
VEZNb3ZlKGluc2V0VmFsdWUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBCYXNp
Y1NoYXBlOjpUeXBlOjpTaGFwZTogeworICAgICAgICBhdXRvJiBzaGFwZSA9IGRvd25jYXN0PEJh
c2ljU2hhcGVTaGFwZT4oYmFzaWNTaGFwZSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICBhdXRvIHNpemUgPSBzaGFw
ZS5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAg
ICAgICAgICAgcmVzdWx0LT5hcHBlbmQodG9DU1NTaGFwZVNlZ21lbnQoc3R5bGUsIHNoYXBlLmF0
KGkpKSk7CisKKyAgICAgICAgYXV0byBmcm9tID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKFBh
aXI6OmNyZWF0ZSgKKyAgICAgICAgICAgIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzaGFwZS5m
cm9tKCkueCgpLCBzdHlsZSksCisgICAgICAgICAgICBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c2hhcGUuZnJvbSgpLnkoKSwgc3R5bGUpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpE
b05vdENvYWxlc2NlKSk7CisKKyAgICAgICAgYXV0byBzaGFwZVZhbHVlID0gQ1NTQmFzaWNTaGFw
ZVNoYXBlOjpjcmVhdGUoV1RGTW92ZShmcm9tKSwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAg
c2hhcGVWYWx1ZS0+c2V0V2luZFJ1bGUoc2hhcGUud2luZFJ1bGUoKSk7CisgICAgICAgIGJhc2lj
U2hhcGVWYWx1ZSA9IFdURk1vdmUoc2hhcGVWYWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICB9CiAKICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJhc2ljU2hhcGVW
YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTE2NCw2ICsxODMsMTIgQEAgc3RhdGljIExlbmd0
aCBjb252ZXJ0VG9MZW5ndGgoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVy
c2lvbkRhdGEsIGMKICAgICByZXR1cm4gdmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVn
ZXJDb252ZXJzaW9uIHwgRml4ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8
IENhbGN1bGF0ZWRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CiB9CiAKK3N0YXRpYyBMZW5n
dGhQb2ludCBjb252ZXJ0VG9MZW5ndGhQb2ludChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiBjb252ZXJzaW9uRGF0YSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoreworICAgIGF1dG8m
IHBhaXIgPSAqKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkucGFpclZhbHVlKCkp
OworICAgIHJldHVybiB7IGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci5maXJz
dCgpKSwgY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLnNlY29uZCgpKSB9Owor
fQorCiBzdGF0aWMgTGVuZ3RoU2l6ZSBjb252ZXJ0VG9MZW5ndGhTaXplKGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1
ZSogdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTI5Nyw2ICszMjIsMjAgQEAgUmVmPEJh
c2ljU2hhcGU+IGJhc2ljU2hhcGVGb3JWYWx1ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiBjb252ZXJzaW9uRGEKICAgICAgICAgYmFzaWNTaGFwZSA9IFdURk1vdmUocGF0aCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIENTU0Jhc2ljU2hhcGU6OkNTU0Jhc2ljU2hh
cGVTaGFwZVR5cGU6IHsKKyAgICAgICAgYXV0byYgc2hhcGVWYWx1ZSA9IGRvd25jYXN0PENTU0Jh
c2ljU2hhcGVTaGFwZT4oYmFzaWNTaGFwZVZhbHVlKTsKKyAgICAgICAgY29uc3QgYXV0byYgY3Nz
U2VnbWVudHMgPSBzaGFwZVZhbHVlLnNlZ21lbnRzKCk7CisgICAgICAgIFZlY3RvcjxSZWY8QmFz
aWNTaGFwZVNlZ21lbnQ+PiBzZWdtZW50cyhjc3NTZWdtZW50cy5sZW5ndGgoKSk7CisgICAgICAg
IHN0ZDo6dHJhbnNmb3JtKHN0ZDo6YmVnaW4oY3NzU2VnbWVudHMpLCBzdGQ6OmVuZChjc3NTZWdt
ZW50cyksIHNlZ21lbnRzLmJlZ2luKCksIFsmXSAoY29uc3QgYXV0byYgY3NzU2VnbWVudCkgewor
ICAgICAgICAgICAgcmV0dXJuIGZyb21DU1NTaGFwZVNlZ21lbnQoY29udmVyc2lvbkRhdGEsIGRv
d25jYXN0PENTU1NoYXBlU2VnbWVudD4oY3NzU2VnbWVudC5nZXQoKSkpOworICAgICAgICB9KTsK
KworICAgICAgICBhdXRvIHNoYXBlID0gQmFzaWNTaGFwZVNoYXBlOjpjcmVhdGUoY29udmVydFRv
TGVuZ3RoUG9pbnQoY29udmVyc2lvbkRhdGEsIHNoYXBlVmFsdWUuZnJvbSgpKSwgV1RGTW92ZShz
ZWdtZW50cykpOworICAgICAgICBzaGFwZS0+c2V0V2luZFJ1bGUoc2hhcGVWYWx1ZS53aW5kUnVs
ZSgpKTsKKworICAgICAgICBiYXNpY1NoYXBlID0gV1RGTW92ZShzaGFwZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gYmFzaWNTaGFwZS5yZWxlYXNlTm9uTnVs
bCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKaW5kZXggODllMDlmNTcyYzM1
MTYzODNmN2IyNjJkNTQwYzAzZGUwMmU4NDg1MC4uODVmNjc2ZmU2MTY0YWEwYjQwODg4MzFkMDU2
NDg4MzJlNTAwZmI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hh
cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCkBAIC0y
MjIsNiArMjIyLDM4IEBAIGJvb2wgQ1NTQmFzaWNTaGFwZVBhdGg6OmVxdWFscyhjb25zdCBDU1NC
YXNpY1NoYXBlJiBvdGhlclNoYXBlKSBjb25zdAogICAgIHJldHVybiB3aW5kUnVsZSgpID09IG90
aGVyU2hhcGVQYXRoLndpbmRSdWxlKCkgJiYgcGF0aERhdGEoKSA9PSBvdGhlclNoYXBlUGF0aC5w
YXRoRGF0YSgpOwogfQogCitDU1NCYXNpY1NoYXBlU2hhcGU6OkNTU0Jhc2ljU2hhcGVTaGFwZShS
ZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJiBzZWdtZW50cykKKyAgICA6
IG1fc2VnbWVudHMoV1RGTW92ZShzZWdtZW50cykpLCBtX2Zyb20oV1RGTW92ZShmcm9tKSkKK3sg
Cit9CisKK2Jvb2wgQ1NTQmFzaWNTaGFwZVNoYXBlOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFw
ZSYgb3RoZXJTaGFwZSkgY29uc3QKK3sKKyAgICBpZiAoIWlzPENTU0Jhc2ljU2hhcGVTaGFwZT4o
b3RoZXJTaGFwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8mIG90aGVyU2hh
cGVTaGFwZSA9IGRvd25jYXN0PENTU0Jhc2ljU2hhcGVTaGFwZT4ob3RoZXJTaGFwZSk7CisgICAg
cmV0dXJuIHdpbmRSdWxlKCkgPT0gb3RoZXJTaGFwZVNoYXBlLndpbmRSdWxlKCkKKyAgICAgICAg
JiYgZnJvbSgpID09IG90aGVyU2hhcGVTaGFwZS5mcm9tKCkKKyAgICAgICAgJiYgc2VnbWVudHMo
KS5lcXVhbHMob3RoZXJTaGFwZVNoYXBlLnNlZ21lbnRzKCkpOworfQorCitTdHJpbmcgQ1NTQmFz
aWNTaGFwZVNoYXBlOjpjc3NUZXh0KCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgaWYgKHdpbmRSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJzaGFwZShldmVub2RkICIpOworICAgIGVsc2UKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoInNoYXBlKCIpOworCisgICAgYXV0byogcGFpciA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPihmcm9tKCkpLnBhaXJWYWx1ZSgpOworICAgIEFTU0VSVChwYWlyKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCgiZnJvbSAiLCBwYWlyLT5jc3NUZXh0KCksICIsICIpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKHNlZ21lbnRzKCkuY3NzVGV4dCgpLCAiKSIpOworCisgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKK30KKwogc3RhdGljIFN0cmluZyBidWlsZFBvbHlnb25TdHJpbmcoY29u
c3QgV2luZFJ1bGUmIHdpbmRSdWxlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcG9pbnRzKQogewog
ICAgIEFTU0VSVCghKHBvaW50cy5zaXplKCkgJSAyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1No
YXBlcy5oCmluZGV4IDEwNWM0NjA5NDFkNjc0NGU1N2JlN2EzNWQ2YjA0ZmM3M2ZhYmJiZWMuLjE2
MzA2ZGYyOWViOTNhOWRkMzM5ZTBjMmZhNjE0OGNjYTgyNDgzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCYXNpY1NoYXBlcy5oCkBAIC0zOCw2ICszOCwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKK2NsYXNzIENTU1NoYXBlU2VnbWVudDsKK2NsYXNz
IENTU1ByaW1pdGl2ZVZhbHVlUGFpcjsKK2NsYXNzIENTU1ZhbHVlOworY2xhc3MgQ1NTVmFsdWVM
aXN0OwogY2xhc3MgU1ZHUGF0aEJ5dGVTdHJlYW07CiAKIGNsYXNzIENTU0Jhc2ljU2hhcGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxDU1NCYXNpY1NoYXBlPiB7CkBAIC00Nyw3ICs1MSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgQ1NTQmFzaWNTaGFwZUNpcmNsZVR5cGUsCiAgICAgICAgIENTU0Jhc2ljU2hh
cGVFbGxpcHNlVHlwZSwKICAgICAgICAgQ1NTQmFzaWNTaGFwZUluc2V0VHlwZSwKLSAgICAgICAg
Q1NTQmFzaWNTaGFwZVBhdGhUeXBlCisgICAgICAgIENTU0Jhc2ljU2hhcGVQYXRoVHlwZSwKKyAg
ICAgICAgQ1NTQmFzaWNTaGFwZVNoYXBlVHlwZQogICAgIH07CiAKICAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0ID0gMDsKQEAgLTIzMyw2ICsyMzgsMzUgQEAgcHJpdmF0ZToKICAgICBXaW5k
UnVsZSBtX3dpbmRSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKIH07CiAKK2NsYXNzIENTU0Jh
c2ljU2hhcGVTaGFwZSBmaW5hbCA6IHB1YmxpYyBDU1NCYXNpY1NoYXBlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPENTU0Jhc2ljU2hhcGVTaGFwZT4gY3JlYXRlKFJlZjxDU1NWYWx1ZT4mJiBm
cm9tLCBSZWY8Q1NTVmFsdWVMaXN0PiYmIHNlZ21lbnRzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTQmFzaWNTaGFwZVNoYXBlKFdURk1vdmUoZnJvbSksIFdURk1vdmUo
c2VnbWVudHMpKSk7CisgICAgfQorCisgICAgY29uc3QgQ1NTVmFsdWVMaXN0JiBzZWdtZW50cygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zZWdtZW50cy5nZXQoKTsKKyAgICB9CisK
KyAgICB2b2lkIHNldFdpbmRSdWxlKFdpbmRSdWxlIHJ1bGUpIHsgbV93aW5kUnVsZSA9IHJ1bGU7
IH0KKyAgICBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0K
KworICAgIGNvbnN0IENTU1ZhbHVlJiBmcm9tKCkgY29uc3QgeyByZXR1cm4gbV9mcm9tLmdldCgp
OyB9CisKK3ByaXZhdGU6CisgICAgQ1NTQmFzaWNTaGFwZVNoYXBlKFJlZjxDU1NWYWx1ZT4mJiBm
cm9tLCBSZWY8Q1NTVmFsdWVMaXN0PiYmKTsKKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIENTU0Jhc2ljU2hhcGVTaGFwZVR5cGU7IH0KKyAgICBTdHJpbmcgY3NzVGV4dCgp
IGNvbnN0IGZpbmFsOworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25z
dCBmaW5hbDsKKworICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IG1fc2VnbWVudHM7CisgICAgUmVmPENT
U1ZhbHVlPiBtX2Zyb207CisgICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFdpbmRSdWxlOjpOb25a
ZXJvIH07Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNkZWZpbmUgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19DU1NfQkFTSUNfU0hBUEVTKFRvVmFsdWVUeXBlTmFtZSkgXApAQCAtMjQ1
LDMgKzI3OSw0IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NC
YXNpY1NoYXBlQ2lyY2xlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfQkFTSUNfU0hBUEVT
KENTU0Jhc2ljU2hhcGVFbGxpcHNlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfQkFTSUNf
U0hBUEVTKENTU0Jhc2ljU2hhcGVQb2x5Z29uKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1Nf
QkFTSUNfU0hBUEVTKENTU0Jhc2ljU2hhcGVQYXRoKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19D
U1NfQkFTSUNfU0hBUEVTKENTU0Jhc2ljU2hhcGVTaGFwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1No
YXBlU2VnbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA4MDUwY2FmYjg1ODQwOTdmZjlhYjhiMGZlYjgz
MDdhZTdkMDY3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFw
ZVNlZ21lbnQuY3BwCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IE5vYW0gUm9zZW50aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKKworI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBD
U1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZU1vdmVUbyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5p
dHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpCit7CisgICAgcmV0dXJuIENTU1No
YXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoTW92ZVRvLCBhZmZpbml0eSwgV1RGTW92ZSh0YXJnZXQp
KTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5l
VG8oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+
JiYgdGFyZ2V0KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKExp
bmVUbywgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21l
bnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvSG9yaXpvbnRhbChDU1NTaGFwZVNlZ21l
bnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB4KQoreworICAgIHJl
dHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKExpbmVUb0hvcml6b250YWwsIGFmZmlu
aXR5LCBXVEZNb3ZlKHgpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdt
ZW50OjpjcmVhdGVMaW5lVG9WZXJ0aWNhbChDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkg
YWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB5KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21l
bnRWYWx1ZTo6Y3JlYXRlKExpbmVUb1ZlcnRpY2FsLCBhZmZpbml0eSwgV1RGTW92ZSh5KSk7Cit9
CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1
YmljKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVl
PiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxLCBSZWY8Q1NTVmFsdWU+JiYgcDIpCit7Cisg
ICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb0N1YmljLCBhZmZp
bml0eSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHAxKSwgV1RGTW92ZShwMikpOworfQorCitS
ZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9RdWFkcmF0
aWMoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+
JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcDEpCit7CisgICAgcmV0dXJuIENTU1NoYXBlU2Vn
bWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb1F1YWRyYXRpYywgYWZmaW5pdHksIFdURk1vdmUodGFy
Z2V0KSwgV1RGTW92ZShwMSkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNl
Z21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpY1Ntb290aChDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZm
aW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBw
MikKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShDdXJ2ZVRvQ3Vi
aWNTbW9vdGgsIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUocDIpKTsKK30KKwor
UmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJh
dGljU21vb3RoKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENT
U1ZhbHVlPiYmIHRhcmdldCkKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNy
ZWF0ZShDdXJ2ZVRvUXVhZHJhdGljU21vb3RoLCBhZmZpbml0eSwgV1RGTW92ZSh0YXJnZXQpKTsK
K30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVBcmNUbyhD
U1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0
YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiByYWRpdXMsIENTU1ZhbHVlSUQgc3dlZXAsIENTU1ZhbHVl
SUQgc2l6ZSwgUmVmPENTU1ZhbHVlPiYmIGFuZ2xlKQoreworICAgIEFTU0VSVChzd2VlcCA9PSBD
U1NWYWx1ZUNjdyB8fCBzd2VlcCA9PSBDU1NWYWx1ZUN3KTsKKyAgICBBU1NFUlQoc2l6ZSA9PSBD
U1NWYWx1ZVNtYWxsIHx8IHNpemUgPT0gQ1NTVmFsdWVMYXJnZSk7CisgICAgcmV0dXJuIENTU1No
YXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoQXJjVG8sIGFmZmluaXR5LAorICAgICAgICBXVEZNb3Zl
KHRhcmdldCksCisgICAgICAgIFdURk1vdmUocmFkaXVzKSwKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShzd2VlcCksCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c2l6ZSksCisgICAgICAgIFdURk1vdmUoYW5nbGUpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVu
dD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqKG5ldyBDU1NTaGFwZVNlZ21lbnQoQ2xvc2VQYXRoKSkpOworfQorCitib29sIENTU1No
YXBlU2VnbWVudDo6ZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0Cit7
CisgICAgaWYgKHR5cGUoKSAhPSBvdGhlci50eXBlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChtX3R5cGUgPT0gQ2xvc2VQYXRoKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21lbnRWYWx1ZSY+KCp0aGlz
KS5lcXVhbHMoc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUmPihvdGhlcikp
OworfQorCitTdHJpbmcgQ1NTU2hhcGVTZWdtZW50OjpjdXN0b21DU1NUZXh0KCkgY29uc3QKK3sK
KyAgICBpZiAobV90eXBlID09IENTU1NoYXBlU2VnbWVudDo6Q2xvc2VQYXRoKQorICAgICAgICBy
ZXR1cm4gImNsb3NlIl9zOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU1NoYXBl
U2VnbWVudFZhbHVlKj4odGhpcyktPmN1c3RvbUNTU1RleHQoKTsKK30KKworYm9vbCBDU1NTaGFw
ZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0
Cit7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBvdGhlci50eXBlKCkpOworICAgIGNvbnN0IGF1dG8m
IG90aGVyVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21lbnRWYWx1ZSY+KG90
aGVyKTsKKyAgICByZXR1cm4gb3RoZXJWYWx1ZS5tX2FmZmluaXR5ID09IG1fYWZmaW5pdHkKKyAg
ICAgICAgJiYgb3RoZXJWYWx1ZS50YXJnZXQoKS5lcXVhbHModGFyZ2V0KCkpCisgICAgICAgICYm
IG90aGVyVmFsdWUubV9hcmd1bWVudHMuZ2V0KCkuZXF1YWxzKG1fYXJndW1lbnRzLmdldCgpKTsK
K30KKworU3RyaW5nIENTU1NoYXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QK
K3sKKyAgICBjb25zdCBhdXRvIGNvbW1hbmQgPSBbJl0oKSB7CisgICAgICAgIHN3aXRjaCAodHlw
ZSgpKSB7CisgICAgICAgIGNhc2UgTW92ZVRvOgorICAgICAgICAgICAgcmV0dXJuICJtb3ZlIjsK
KyAgICAgICAgY2FzZSBMaW5lVG86CisgICAgICAgICAgICByZXR1cm4gImxpbmUiOworICAgICAg
ICBjYXNlIExpbmVUb0hvcml6b250YWw6CisgICAgICAgICAgICByZXR1cm4gImhsaW5lIjsKKyAg
ICAgICAgY2FzZSBMaW5lVG9WZXJ0aWNhbDoKKyAgICAgICAgICAgIHJldHVybiAidmxpbmUiOwor
ICAgICAgICBjYXNlIEN1cnZlVG9DdWJpYzoKKyAgICAgICAgY2FzZSBDdXJ2ZVRvUXVhZHJhdGlj
OgorICAgICAgICAgICAgcmV0dXJuICJjdXJ2ZSI7CisgICAgICAgIGNhc2UgQ3VydmVUb0N1Ymlj
U21vb3RoOgorICAgICAgICBjYXNlIEN1cnZlVG9RdWFkcmF0aWNTbW9vdGg6CisgICAgICAgICAg
ICByZXR1cm4gInNtb290aCI7CisgICAgICAgIGNhc2UgQXJjVG86CisgICAgICAgICAgICByZXR1
cm4gImFyYyI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorCisgICAgfTsKKworICAg
IGNvbnN0IGF1dG8gY29uanVuY3Rpb24gPSBbJl0oKSB7CisgICAgICAgIHN3aXRjaCAodHlwZSgp
KSB7CisgICAgICAgIGNhc2UgTW92ZVRvOgorICAgICAgICBjYXNlIExpbmVUbzoKKyAgICAgICAg
Y2FzZSBMaW5lVG9Ib3Jpem9udGFsOgorICAgICAgICBjYXNlIExpbmVUb1ZlcnRpY2FsOgorICAg
ICAgICBjYXNlIEN1cnZlVG9RdWFkcmF0aWNTbW9vdGg6CisgICAgICAgICAgICByZXR1cm4gIiI7
CisgICAgICAgIGNhc2UgQ3VydmVUb0N1YmljOgorICAgICAgICBjYXNlIEN1cnZlVG9RdWFkcmF0
aWM6CisgICAgICAgIGNhc2UgQ3VydmVUb0N1YmljU21vb3RoOgorICAgICAgICAgICAgcmV0dXJu
ICIgdmlhICI7CisgICAgICAgIGNhc2UgQXJjVG86CisgICAgICAgICAgICByZXR1cm4gIiBvZiAi
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYXV0byBieVRv
ID0gbV9hZmZpbml0eSA9PSBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRl
ID8gIiB0byAiIDogIiBieSAiOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWls
ZGVyLmFwcGVuZChjb21tYW5kKCksIGJ5VG8sIG1fdGFyZ2V0LT5jc3NUZXh0KCksIGNvbmp1bmN0
aW9uKCkpOworICAgIGlmICh0eXBlKCkgPT0gQXJjVG8pIHsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoYXJndW1lbnQoMCkuY3NzVGV4dCgpKTsKKyAgICAgICAgY29uc3QgYXV0byYgc3dlZXAgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oYXJndW1lbnQoMSkpOworICAgICAgICBjb25zdCBh
dXRvJiBzaXplID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGFyZ3VtZW50KDIpKTsKKyAg
ICAgICAgY29uc3QgYXV0byYgYW5nbGUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oYXJn
dW1lbnQoMykpOworCisgICAgICAgIGlmIChzd2VlcC52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDdykK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgY3ciKTsKKworICAgICAgICBpZiAoc2l6ZS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMYXJnZSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIg
bGFyZ2UiKTsKKworICAgICAgICBpZiAoYW5nbGUuY29tcHV0ZURlZ3JlZXMoKSkKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCIgcm90YXRlICIsIGFuZ2xlLmNzc1RleHQoKSk7CisgICAgfSBl
bHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fYXJndW1lbnRzLT5jc3NUZXh0KCkpOworICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFw
ZVNlZ21lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDA3MzZhMDMzNmYxNWEwNDMxYWE1NTE4YTFhZGNiMjUx
MTgxNzhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYXBlU2Vn
bWVudC5oCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE5vYW0g
Um9zZW50aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1NoYXBlU2VnbWVudCA6IHB1Ymxp
YyBDU1NWYWx1ZSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBDb29yZEFmZmluaXR5IHsKKyAg
ICAgICAgQWJzb2x1dGUsIFJlbGF0aXZlCisgICAgfTsKKworICAgIGVudW0gU2VnbWVudFR5cGUg
eworICAgICAgICBNb3ZlVG8sCisgICAgICAgIExpbmVUbywKKyAgICAgICAgTGluZVRvSG9yaXpv
bnRhbCwKKyAgICAgICAgTGluZVRvVmVydGljYWwsCisgICAgICAgIEN1cnZlVG9DdWJpYywKKyAg
ICAgICAgQ3VydmVUb1F1YWRyYXRpYywKKyAgICAgICAgQ3VydmVUb0N1YmljU21vb3RoLAorICAg
ICAgICBDdXJ2ZVRvUXVhZHJhdGljU21vb3RoLAorICAgICAgICBBcmNUbywKKyAgICAgICAgQ2xv
c2VQYXRoCisgICAgfTsKKworICAgIFNlZ21lbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIp
IGNvbnN0OworICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CisgICAgfkNTU1NoYXBl
U2VnbWVudCgpID0gZGVmYXVsdDsKKworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBj
cmVhdGVDbG9zZVBhdGgoKTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRl
TW92ZVRvKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpOworICAgIHN0YXRp
YyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG8oQ29vcmRBZmZpbml0eSwgUmVmPENT
U1ZhbHVlPiYmIHRhcmdldCk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0
ZUxpbmVUb0hvcml6b250YWwoQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHgpOworICAg
IHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG9WZXJ0aWNhbChDb29yZEFm
ZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgeSk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21l
bnQ+IGNyZWF0ZUN1cnZlVG9DdWJpYyhDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFy
Z2V0LCBSZWY8Q1NTVmFsdWU+JiYgcDEsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAgc3RhdGlj
IFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWMoQ29vcmRBZmZpbml0
eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxKTsKKyAgICBzdGF0
aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKENvb3JkQWZm
aW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAg
c3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGgo
Q29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCk7CisgICAgc3RhdGljIFJlZjxD
U1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUFyY1RvKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4m
JiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiByYWRpdXMsIENTU1ZhbHVlSUQgc3dlZXAsIENTU1Zh
bHVlSUQgc2l6ZSwgUmVmPENTU1ZhbHVlPiYmIGFuZ2xlKTsKKworcHJvdGVjdGVkOgorICAgIENT
U1NoYXBlU2VnbWVudChTZWdtZW50VHlwZSB0eXBlKQorICAgICAgICA6IENTU1ZhbHVlKFNoYXBl
U2VnbWVudENsYXNzKQorICAgICAgICAsIG1fdHlwZSh0eXBlKSB7IH0KKworcHJpdmF0ZToKKyAg
ICBTZWdtZW50VHlwZSBtX3R5cGU7Cit9OworCitjbGFzcyBDU1NTaGFwZVNlZ21lbnRWYWx1ZSA6
IHB1YmxpYyBDU1NTaGFwZVNlZ21lbnQgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSAuLi5BcmdzPgorICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGUoQ1NTU2hh
cGVTZWdtZW50OjpTZWdtZW50VHlwZSB0eXBlLAorICAgICAgICBDU1NTaGFwZVNlZ21lbnQ6OkNv
b3JkQWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIEFyZ3MuLi4gYXJn
dW1lbnRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU2hhcGVTZWdt
ZW50VmFsdWUodHlwZSwgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3VtZW50cykuLi4pKTsKKyAgICB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgdGFyZ2V0
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKKyAgICB9CisK
KyAgICBjb25zdCBDU1NWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGkpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQobV9hcmd1bWVudHMtPmxlbmd0aCgpID4gaSk7CisgICAgICAgIHJldHVybiAq
KG1fYXJndW1lbnRzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICB9CisKKyAgICBD
U1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHkoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYWZmaW5pdHk7CisgICAgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3Qg
Q1NTU2hhcGVTZWdtZW50JiBvdGhlcikgY29uc3Q7CisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQo
KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICB2b2lkIGFwcGVuZEFyZ3MoKSB7IH0KKyAgICB2b2lk
IGFwcGVuZEFyZ3MoUmVmPENTU1ZhbHVlPiYmIHYpIHsgbV9hcmd1bWVudHMtPmFwcGVuZChXVEZN
b3ZlKHYpKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgLi4uQXJncz4KKyAgICB2b2lkIGFw
cGVuZEFyZ3MoUmVmPENTU1ZhbHVlPiYmIHYsIEFyZ3MgLi4uYXJncykKKyAgICB7CisgICAgICAg
IGFwcGVuZEFyZ3MoV1RGTW92ZSh2KSk7CisgICAgICAgIGFwcGVuZEFyZ3Moc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSAuLi5Bcmdz
PgorICAgIENTU1NoYXBlU2VnbWVudFZhbHVlKENTU1NoYXBlU2VnbWVudDo6U2VnbWVudFR5cGUg
dHlwZSwgQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFs
dWU+JiYgdGFyZ2V0LCBBcmdzIC4uLmFyZ3MpCisgICAgICAgIDogQ1NTU2hhcGVTZWdtZW50KHR5
cGUpCisgICAgICAgICwgbV9hZmZpbml0eShhZmZpbml0eSkKKyAgICAgICAgLCBtX3RhcmdldChX
VEZNb3ZlKHRhcmdldCkpCisgICAgICAgICwgbV9hcmd1bWVudHMoQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpKQorICAgIHsKKyAgICAgICAgYXBwZW5kQXJncyhzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOworICAgIH0KKworICAgIENTU1NoYXBlU2VnbWVudDo6Q29vcmRB
ZmZpbml0eSBtX2FmZmluaXR5OworICAgIFJlZjxDU1NWYWx1ZT4gbV90YXJnZXQ7CisgICAgUmVm
PENTU1ZhbHVlTGlzdD4gbV9hcmd1bWVudHM7Cit9OworCit9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0NTU19WQUxVRShDU1NTaGFwZVNlZ21lbnQsIGlzU2hhcGVTZWdtZW50VmFsdWUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWUuY3BwCmluZGV4IDVlMjE4MjI2M2ZjZWE1Y2FmZjM2M2U0ZmY0NDAzOTQz
ODExZjZkYWMuLjYzMDllM2ZmNzNkY2NiNjY3MzFmMjI0YjY0OWQ3ODkyZGEyZWQxNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlLmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIkNTU1JheVZh
bHVlLmgiCiAjaW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTU2hhZG93
VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJDU1NUaW1p
bmdGdW5jdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCIKICNp
bmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKQEAgLTIzMCw2ICsyMzEsOCBAQCBib29sIENTU1ZhbHVl
OjplcXVhbHMoY29uc3QgQ1NTVmFsdWUmIG90aGVyKSBjb25zdAogICAgICAgICAgICAgcmV0dXJu
IGNvbXBhcmVDU1NWYWx1ZXM8Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzLCBvdGhlcik7CiAgICAg
ICAgIGNhc2UgRm9udFN0eWxlUmFuZ2VDbGFzczoKICAgICAgICAgICAgIHJldHVybiBjb21wYXJl
Q1NTVmFsdWVzPENTU0ZvbnRTdHlsZVJhbmdlVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAg
IGNhc2UgU2hhcGVTZWdtZW50Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1Zh
bHVlczxDU1NTaGFwZVNlZ21lbnQ+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTMzOSw2ICszNDIsOCBAQCBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAog
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzKS5jdXN0b21D
U1NUZXh0KCk7CiAgICAgY2FzZSBGb250U3R5bGVSYW5nZUNsYXNzOgogICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8Q1NTRm9udFN0eWxlUmFuZ2VWYWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsK
KyAgICBjYXNlIFNoYXBlU2VnbWVudENsYXNzOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NT
U2hhcGVTZWdtZW50PigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIH0KIAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDk3LDYgKzUwMiw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ry
b3koKQogICAgIGNhc2UgRm9udFN0eWxlUmFuZ2VDbGFzczoKICAgICAgICAgZGVsZXRlIGRvd25j
YXN0PENTU0ZvbnRTdHlsZVJhbmdlVmFsdWU+KHRoaXMpOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBTaGFwZVNlZ21lbnRDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU1NoYXBl
U2VnbWVudD4odGhpcyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IGRhZGU1OGRhMjA2OGI3ZWVjY2Rh
YTMzMTkxOGM0NGQzYTc2ZTA1YzguLjNmNzVhZjMwYWI5MDI4YWViMmQxNTJmMTQ1Yzk4OTM1N2I1
MTllYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0xMzQsNiArMTM0LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNHcmlkQXV0b1JlcGVhdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5
cGUgPT0gR3JpZEF1dG9SZXBlYXRDbGFzczsgfQogICAgIGJvb2wgaXNHcmlkSW50ZWdlclJlcGVh
dFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gR3JpZEludGVnZXJSZXBlYXRD
bGFzczsgfQogICAgIGJvb2wgaXNHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9jbGFzc1R5cGUgPT0gR3JpZFRlbXBsYXRlQXJlYXNDbGFzczsgfQorICAgIGJvb2wgaXNT
aGFwZVNlZ21lbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFNoYXBlU2Vn
bWVudENsYXNzOyB9CiAgICAgYm9vbCBpc0dyaWRMaW5lTmFtZXNWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xhc3NUeXBlID09IEdyaWRMaW5lTmFtZXNDbGFzczsgfQogICAgIGJvb2wgaXNTdWJn
cmlkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTdWJncmlkQ2xhc3M7IH0K
ICAgICBib29sIGlzVW5pY29kZVJhbmdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlw
ZSA9PSBVbmljb2RlUmFuZ2VDbGFzczsgfQpAQCAtMjA5LDYgKzIxMCw3IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgQ2FsY3VsYXRpb25DbGFzcywKICAgICAgICAgR3JpZFRlbXBsYXRlQXJlYXNDbGFz
cywKICAgICAgICAgVmFsdWVQYWlyQ2xhc3MsCisgICAgICAgIFNoYXBlU2VnbWVudENsYXNzLAog
CiAgICAgICAgIENTU0NvbnRlbnREaXN0cmlidXRpb25DbGFzcywKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCAyZGQ0YzBiYWMzYzlhM2E0ZDYzYmFlZGMyOTkxMDgw
MmI1MjIwMmY5Li4xYjY1NGViMjE5ZDRlMWM5YjIyOGZlMTcxNTg1MzkzODA1YzViMTM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtMTI4Niw2ICsxMjg2LDI3IEBA
IHJlY3QKIAogLy8gc2hhcGVzCiBwb2x5Z29uCitzaGFwZQorCisvLyBzaGFwZSgpCisvLyBmcm9t
CisvLyB0bworLy8gbW92ZQorbGluZQoraGxpbmUKK3ZsaW5lCitjdXJ2ZQorLy8gc21vb3RoCith
cmMKK2Nsb3NlCit2aWEKK29mCitieQorY3cKK2NjdworLy8gbGFyZ2UKKy8vIHNtYWxsCisvLyBy
b3RhdGUKIAogLy8gQGZvbnQtZmFjZSBzcmMKIGZvcm1hdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2hhcGVTZWdtZW50RnVuY3Rpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmZiYjk5NDNiZDBmNzVmM2Fh
OTE1NTU0OGMzYWE2NTVjOGZjZTdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTAsMCArMSwyMjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcGVTZWdtZW50RnVuY3Rpb25zLmgi
CisKKyNpbmNsdWRlICJCYXNpY1NoYXBlU2VnbWVudC5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKKyNpbmNsdWRl
ICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgorI2luY2x1ZGUgIlBhaXIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKGNvbnN0IExlbmd0aFBvaW50JiBwb2ludCwgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8mIHBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpOworICAgIHJldHVybiBwb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZSgKKyAg
ICAgICAgcG9vbC5jcmVhdGVWYWx1ZShwb2ludC54KCksIHN0eWxlKSwKKyAgICAgICAgcG9vbC5j
cmVhdGVWYWx1ZShwb2ludC55KCksIHN0eWxlKSwKKyAgICAgICAgUGFpcjo6SWRlbnRpY2FsVmFs
dWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1
ZT4gYXV0byB0b0NTU0FyZ3MoY29uc3QgVmFsdWUmLCBjb25zdCBSZW5kZXJTdHlsZSYpOworCit0
ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBMZW5ndGgmIHZhbHVlLCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZTxSZWY8Q1NTVmFs
dWU+PihDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHZhbHVlLCBzdHlsZSkp
OworfQorCit0ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJnczxMZW5ndGhQb2ludD4oY29uc3QgTGVu
Z3RoUG9pbnQmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJu
IHN0ZDo6bWFrZV90dXBsZShjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLCBzdHlsZSkpOwor
fQorCit0ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNl
Z1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBz
dGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUudGFy
Z2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5w
b2ludDEsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5wb2lu
dDIsIHN0eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NBcmdzKGNvbnN0IEN1cnZl
VG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRv
Q1NTVmFsdWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50
VG9DU1NWYWx1ZSh2YWx1ZS5wb2ludDEsIHN0eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8g
dG9DU1NBcmdzKGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIHZhbHVlLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSgK
KyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS50YXJnZXRQb2ludCwgc3R5bGUp
LAorICAgICAgICBjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnBvaW50Miwgc3R5bGUpKTsK
K30KKwordGVtcGxhdGU8PgorYXV0byB0b0NTU0FyZ3MoY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVl
JiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8mIHBvb2wgPSBD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOworICAgIGF1dG8gcmFkaXVzID0gUGFpcjo6Y3JlYXRl
KAorICAgICAgICBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlLnJhZGl1cy53aWR0aCwgc3R5bGUpLAor
ICAgICAgICBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlLnJhZGl1cy5oZWlnaHQsIHN0eWxlKSwKKyAg
ICAgICAgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpOworCisgICAgcmV0
dXJuIHN0ZDo6bWFrZV90dXBsZSgKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1
ZS50YXJnZXRQb2ludCwgc3R5bGUpLAorICAgICAgICBwb29sLmNyZWF0ZVZhbHVlKFdURk1vdmUo
cmFkaXVzKSksCisgICAgICAgIHZhbHVlLnN3ZWVwID8gQ1NTVmFsdWVDdyA6IENTU1ZhbHVlQ2N3
LAorICAgICAgICB2YWx1ZS5sYXJnZUFyYyA/IENTU1ZhbHVlTGFyZ2UgOiBDU1NWYWx1ZVNtYWxs
LAorICAgICAgICBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlLmFuZ2xlLCBDU1NVbml0VHlwZTo6Q1NT
X0RFRykpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiB0b0NTU1NoYXBlU2VnbWVudChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBzZWdtZW50KQor
eworICAgIGF1dG8gdG9DU1MgPSBbJl0oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFm
ZmluaXR5LCBhdXRvIGNyZWF0ZSwgY29uc3QgYXV0byYgYXMpIHsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6YXBwbHkoY3JlYXRlLCBzdGQ6OnR1cGxlX2NhdChzdGQ6Om1ha2VfdHVwbGUoYWZmaW5pdHkp
LCB0b0NTU0FyZ3MoKHNlZ21lbnQuKmFzKSgpLCBzdHlsZSkpKTsKKyAgICB9OworCisjZGVmaW5l
IENSRUFURV9DU1NfU0hBUEVfU0VHTUVOVF9GUk9NX0JBU0lDX1NIQVBFX1NFR01FTlQoVHlwZSkg
XAorICAgIGNhc2UgU2hhcGVTZWdtZW50IyNUeXBlOjpBYnNTZWdUeXBlOiBcCisgICAgICAgIHJl
dHVybiB0b0NTUyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRlLCBDU1NT
aGFwZVNlZ21lbnQ6OmNyZWF0ZSMjVHlwZSwgJkJhc2ljU2hhcGVTZWdtZW50OjphcyMjVHlwZSk7
IFwKKyAgICBjYXNlIFNoYXBlU2VnbWVudCMjVHlwZTo6UmVsU2VnVHlwZTogXAorICAgICAgICBy
ZXR1cm4gdG9DU1MoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5OjpSZWxhdGl2ZSwgQ1NT
U2hhcGVTZWdtZW50OjpjcmVhdGUjI1R5cGUsICZCYXNpY1NoYXBlU2VnbWVudDo6YXMjI1R5cGUp
OyBcCisKKyAgICBzd2l0Y2ggKHNlZ21lbnQudHlwZSgpKSB7CisgICAgY2FzZSBQYXRoU2VnQ2xv
c2VQYXRoOgorICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgo
KTsKKworICAgICAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9WQUxVRShDUkVB
VEVfQ1NTX1NIQVBFX1NFR01FTlRfRlJPTV9CQVNJQ19TSEFQRV9TRUdNRU5UKQorCisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBDU1NT
aGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworICAgIH0KK30KK3RlbXBsYXRlIDxjbGFz
cyBEZWZpbml0aW9uPgorU1ZHUGF0aFNlZ1R5cGUgc2VnbWVudFR5cGUoY29uc3QgQ1NTU2hhcGVT
ZWdtZW50VmFsdWUmIHNlZ21lbnRXaXRoVmFsdWUpCit7CisgICAgcmV0dXJuIHNlZ21lbnRXaXRo
VmFsdWUuYWZmaW5pdHkoKSA9PSBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29s
dXRlID8gRGVmaW5pdGlvbjo6QWJzU2VnVHlwZSA6IERlZmluaXRpb246OlJlbFNlZ1R5cGU7Cit9
CisKK1JlZjxCYXNpY1NoYXBlU2VnbWVudD4gZnJvbUNTU1NoYXBlU2VnbWVudChjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgY29uc3QgQ1NTU2hhcGVTZWdt
ZW50JiBjc3NTZWdtZW50KQoreworICAgIGF1dG8gdG9MZW5ndGggPSBbJl0oY29uc3QgQ1NTVmFs
dWUmIHZhbHVlKSAtPiBMZW5ndGggeworICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKS5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8
IEZpeGVkRmxvYXRDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29u
dmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOworICAgIH07CisKKyAgICBhdXRvIHRvTGVuZ3RoUG9p
bnQgPSBbJl0oY29uc3QgQ1NTVmFsdWUmIHZhbHVlKSAtPiBMZW5ndGhQb2ludCB7CisgICAgICAg
IGF1dG8gcGFpciA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkucGFpclZhbHVl
KCk7CisgICAgICAgIEFTU0VSVChwYWlyKTsKKyAgICAgICAgcmV0dXJuIExlbmd0aFBvaW50IHsg
dG9MZW5ndGgoKnBhaXItPmZpcnN0KCkpLCB0b0xlbmd0aCgqcGFpci0+c2Vjb25kKCkpIH07Cisg
ICAgfTsKKworICAgIGF1dG8gdG9MZW5ndGhTaXplID0gWyZdKGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkgLT4gTGVuZ3RoU2l6ZSB7CisgICAgICAgIGF1dG8gcGFpciA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkucGFpclZhbHVlKCk7CisgICAgICAgIEFTU0VSVChwYWlyKTsKKyAg
ICAgICAgcmV0dXJuIExlbmd0aFNpemUgeyB0b0xlbmd0aCgqcGFpci0+Zmlyc3QoKSksIHRvTGVu
Z3RoKCpwYWlyLT5zZWNvbmQoKSkgfTsKKyAgICB9OworCisgICAgYXV0byB0eXBlID0gY3NzU2Vn
bWVudC50eXBlKCk7CisKKyAgICBpZiAodHlwZSA9PSBDU1NTaGFwZVNlZ21lbnQ6OkNsb3NlUGF0
aCkKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsK
KworICAgIGNvbnN0IGF1dG8mIHNlZ21lbnRXaXRoVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBD
U1NTaGFwZVNlZ21lbnRWYWx1ZSY+KGNzc1NlZ21lbnQpOworCisgICAgc3dpdGNoICh0eXBlKSB7
CisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6Ok1vdmVUbzogeworICAgICAgICByZXR1cm4gQmFz
aWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZU1vdmVUbygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNo
YXBlU2VnbWVudE1vdmVUbz4oc2VnbWVudFdpdGhWYWx1ZSksCisgICAgICAgICAgICB0b0xlbmd0
aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUudGFyZ2V0KCkpKTsKKyAgICB9CisKKyAgICBjYXNlIENT
U1NoYXBlU2VnbWVudDo6TGluZVRvOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6
OmNyZWF0ZUxpbmVUbygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudExpbmVU
bz4oc2VnbWVudFdpdGhWYWx1ZSksCisgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRX
aXRoVmFsdWUudGFyZ2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpMaW5lVG9I
b3Jpem9udGFsOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVU
b0hvcml6b250YWwoCisgICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRMaW5lVG9I
b3Jpem9udGFsPihzZWdtZW50V2l0aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoKHNlZ21l
bnRXaXRoVmFsdWUudGFyZ2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpMaW5l
VG9WZXJ0aWNhbDoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5l
VG9WZXJ0aWNhbCgKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudExpbmVUb1Zl
cnRpY2FsPihzZWdtZW50V2l0aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoKHNlZ21lbnRX
aXRoVmFsdWUudGFyZ2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpDdXJ2ZVRv
Q3ViaWM6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1
YmljKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50Q3VydmVUb0N1YmljPihz
ZWdtZW50V2l0aFZhbHVlKSwgeworICAgICAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVu
dFdpdGhWYWx1ZS5hcmd1bWVudCgwKSksCisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChz
ZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50KDEpKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBv
aW50KHNlZ21lbnRXaXRoVmFsdWUudGFyZ2V0KCkpCisgICAgICAgICAgICB9KTsKKworICAgIGNh
c2UgQ1NTU2hhcGVTZWdtZW50OjpDdXJ2ZVRvUXVhZHJhdGljOgorICAgICAgICByZXR1cm4gQmFz
aWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9RdWFkcmF0aWMoCisgICAgICAgICAgICBzZWdt
ZW50VHlwZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljPihzZWdtZW50V2l0aFZhbHVlKSwg
eworICAgICAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVu
dCgwKSksCisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRh
cmdldCgpKQorICAgICAgICAgICAgfSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q3Vy
dmVUb0N1YmljU21vb3RoOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0
ZUN1cnZlVG9DdWJpY1Ntb290aCgKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVu
dEN1cnZlVG9DdWJpY1Ntb290aD4oc2VnbWVudFdpdGhWYWx1ZSksIHsKKyAgICAgICAgICAgICAg
ICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMCkpLAorICAgICAgICAg
ICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAg
ICAgIH0pOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkN1cnZlVG9RdWFkcmF0aWNTbW9v
dGg6CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRy
YXRpY1Ntb290aCgKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudEN1cnZlVG9R
dWFkcmF0aWNTbW9vdGg+KHNlZ21lbnRXaXRoVmFsdWUpLAorICAgICAgICAgICAgdG9MZW5ndGhQ
b2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2Vn
bWVudDo6QXJjVG86CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQXJj
VG8oCisgICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRBcmNUbz4oc2VnbWVudFdp
dGhWYWx1ZSksIHsKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFNpemUoc2VnbWVudFdpdGhWYWx1
ZS5hcmd1bWVudCgwKSksCisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMykpLmZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6
OkNTU19ERUcpLAorICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihz
ZWdtZW50V2l0aFZhbHVlLmFyZ3VtZW50KDEpKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDdywKKyAg
ICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oc2VnbWVudFdpdGhWYWx1
ZS5hcmd1bWVudCgyKSkudmFsdWVJRCgpID09IENTU1ZhbHVlTGFyZ2UsCisgICAgICAgICAgICAg
ICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQorICAgICAgICAgICAg
fSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q2xvc2VQYXRoOgorICAgICAgICByZXR1
cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworICAgIH0KKworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRl
Q2xvc2VQYXRoKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFw
ZVNlZ21lbnRGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5j
dGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40NjQwZDcxZTI5YTUwODM4MjUzZTBjMmVhNzA5NjExNDQ5MWQ2
MmQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1
bmN0aW9ucy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRv
YmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAg
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEJhc2ljU2hhcGVTZWdtZW50OworY2xhc3MgQ1NTU2hhcGVTZWdtZW50
OworY2xhc3MgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YTsKK2NsYXNzIFJlbmRlclN0eWxlOwor
CitSZWY8Q1NTU2hhcGVTZWdtZW50PiB0b0NTU1NoYXBlU2VnbWVudChjb25zdCBSZW5kZXJTdHls
ZSYsIGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50Jik7CitSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGZy
b21DU1NTaGFwZVNlZ21lbnQoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIGNvbnN0
IENTU1NoYXBlU2VnbWVudCYpOworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IGQxYjVkMzQ1NTU5MTBiZDgzM2VhZTlmZmJjOTU3
YmMxY2QzMjQ5MGIuLjhlYTRmYTg2ZWY0YjRlYmFjNmY3ZGYxZjFkNzQzYmU0OWVmYWFkNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBA
IC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU0ZvbnRGZWF0dXJlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250UGFsZXR0ZVZhbHVl
c092ZXJyaWRlQ29sb3JzVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKICNp
ZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogI2luY2x1ZGUgIkNTU0ZvbnRWYXJpYXRpb25WYWx1
ZS5oIgogI2VuZGlmCkBAIC0yNjUyLDYgKzI2NTMsMTk2IEBAIHN0YXRpYyBSZWZQdHI8Q1NTQmFz
aWNTaGFwZVBhdGg+IGNvbnN1bWVCYXNpY1NoYXBlUGF0aChDU1NQYXJzZXJUb2tlblJhbmdlJiBh
cmdzCiAgICAgcmV0dXJuIHNoYXBlOwogfQogCitzdGF0aWMgUmVmUHRyPENTU1NoYXBlU2VnbWVu
dD4gY29uc3VtZVNoYXBlU2VnbWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBD
U1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIGF1dG8gY29tbWFuZCA9IGFyZ3MuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICBpZiAoY29tbWFuZC5pZCgpID09IENTU1Zh
bHVlQ2xvc2UpCisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0
aCgpOworCisgICAgaWYgKCFpZGVudE1hdGNoZXM8Q1NTVmFsdWVUbywgQ1NTVmFsdWVCeT4oYXJn
cy5wZWVrKCkuaWQoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBhZmZp
bml0eSA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpID09IENTU1ZhbHVl
VG8gPyBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRlIDogQ1NTU2hhcGVT
ZWdtZW50OjpDb29yZEFmZmluaXR5OjpSZWxhdGl2ZTsKKyAgICBhdXRvIGNvbnN1bWVOZXh0TGVu
Z3RoT3JQZXJjZW50ID0gWyZdKCkgeworICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVy
Y2VudChhcmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6OkFsbCk7CisgICAgfTsKKworICAg
IGlmIChjb21tYW5kLmlkKCkgPT0gQ1NTVmFsdWVIbGluZSB8fCBjb21tYW5kLmlkKCkgPT0gQ1NT
VmFsdWVWbGluZSkgeworICAgICAgICBhdXRvIHZhbHVlID0gY29uc3VtZU5leHRMZW5ndGhPclBl
cmNlbnQoKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgICAgIHJldHVybiBjb21tYW5kLmlkKCkgPT0gQ1NTVmFsdWVIbGluZQorICAgICAg
ICAgICAgPyBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVUb0hvcml6b250YWwoYWZmaW5pdHks
IHZhbHVlLnJlbGVhc2VOb25OdWxsKCkpCisgICAgICAgICAgICA6IENTU1NoYXBlU2VnbWVudDo6
Y3JlYXRlTGluZVRvVmVydGljYWwoYWZmaW5pdHksIHZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwor
ICAgIH0KKworICAgIGF1dG8gY29uc3VtZU5leHRDb29yZGluYXRlcyA9IFsmXSAoKSAtPiBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHsKKyAgICAgICAgYXV0byB4ID0gY29uc3VtZU5leHRMZW5n
dGhPclBlcmNlbnQoKTsKKyAgICAgICAgaWYgKCF4KQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICAgICAgYXV0byB5ID0gY29uc3VtZU5leHRMZW5ndGhPclBlcmNlbnQoKTsKKyAg
ICAgICAgaWYgKCF5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcih4LnJlbGVhc2VOb25OdWxsKCksIHkucmVsZWFz
ZU5vbk51bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSk7
CisgICAgfTsKKworICAgIGF1dG8gYXRFbmRPZlNlZ21lbnQgPSBbJl0gKCkgeworICAgICAgICBy
ZXR1cm4gYXJncy5hdEVuZCgpIHx8IGFyZ3MucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuOwor
ICAgIH07CisKKyAgICBhdXRvIHRhcmdldFBvaW50ID0gY29uc3VtZU5leHRDb29yZGluYXRlcygp
OworICAgIGlmICghdGFyZ2V0UG9pbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
c3dpdGNoIChjb21tYW5kLmlkKCkpIHsKKyAgICBjYXNlIENTU1ZhbHVlTW92ZToKKyAgICAgICAg
cmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTW92ZVRvKGFmZmluaXR5LCB0YXJnZXRQb2lu
dC5yZWxlYXNlTm9uTnVsbCgpKTsKKworICAgIGNhc2UgQ1NTVmFsdWVMaW5lOgorICAgICAgICBy
ZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG8oYWZmaW5pdHksIHRhcmdldFBvaW50
LnJlbGVhc2VOb25OdWxsKCkpOworCisgICAgY2FzZSBDU1NWYWx1ZUN1cnZlOiB7CisgICAgICAg
IGlmIChhcmdzLnBlZWsoKS5pZCgpICE9IENTU1ZhbHVlVmlhKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAgICAgYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwor
ICAgICAgICBhdXRvIHZpYVBvaW50MSA9IGNvbnN1bWVOZXh0Q29vcmRpbmF0ZXMoKTsKKyAgICAg
ICAgaWYgKCF2aWFQb2ludDEpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAg
ICBpZiAoYXRFbmRPZlNlZ21lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21l
bnQ6OmNyZWF0ZUN1cnZlVG9RdWFkcmF0aWMoYWZmaW5pdHksIHRhcmdldFBvaW50LnJlbGVhc2VO
b25OdWxsKCksIHZpYVBvaW50MS5yZWxlYXNlTm9uTnVsbCgpKTsKKworICAgICAgICBhdXRvIHZp
YVBvaW50MiA9IGNvbnN1bWVOZXh0Q29vcmRpbmF0ZXMoKTsKKyAgICAgICAgaWYgKCF2aWFQb2lu
dDIpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gQ1NTU2hh
cGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWMoYWZmaW5pdHksICB0YXJnZXRQb2ludC5yZWxl
YXNlTm9uTnVsbCgpLCB2aWFQb2ludDEucmVsZWFzZU5vbk51bGwoKSwgdmlhUG9pbnQyLnJlbGVh
c2VOb25OdWxsKCkpOworICAgIH0KKworICAgIGNhc2UgQ1NTVmFsdWVTbW9vdGg6IHsKKyAgICAg
ICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgIT0gQ1NTVmFsdWVWaWEpCisgICAgICAgICAgICByZXR1
cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGFmZmluaXR5
LCAgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICAgICAgYXJncy5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICBhdXRvIHZpYVBvaW50ID0gY29uc3VtZU5l
eHRDb29yZGluYXRlcygpOworICAgICAgICBpZiAoIXZpYVBvaW50KQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3Vy
dmVUb0N1YmljU21vb3RoKGFmZmluaXR5LCAgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSwg
dmlhUG9pbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorCisgICAgY2FzZSBDU1NWYWx1ZUFy
YzogeworICAgICAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSAhPSBDU1NWYWx1ZU9mKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgYXJncy5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJ4ID0gY29uc3Vt
ZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0
aXZlKTsKKyAgICAgICAgaWYgKCFyeCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcnk7CisgICAgICAgIGlmIChhcmdzLnBl
ZWsoKS50eXBlKCkgPT0gSWRlbnRUb2tlbikKKyAgICAgICAgICAgIHJ5ID0gcng7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgcnkgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNv
bnRleHQubW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOworICAgICAgICAgICAgaWYgKCFy
eSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4gc3dlZXA7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
Q1NTVmFsdWVJRD4gc2l6ZTsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBhbmdsZTsKKworICAg
ICAgICB3aGlsZSAoIWF0RW5kT2ZTZWdtZW50KCkpIHsKKyAgICAgICAgICAgIGF1dG8gbmV4dElk
ZW50ID0gYXJncy5wZWVrKCkuaWQoKTsKKyAgICAgICAgICAgIGlmIChpZGVudE1hdGNoZXM8Q1NT
VmFsdWVSb3RhdGU+KG5leHRJZGVudCkgJiYgIWFuZ2xlKSB7CisgICAgICAgICAgICAgICAgYXJn
cy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgICAgICAgICAgYW5n
bGUgPSBjb25zdW1lQW5nbGUoYXJncywgY29udGV4dC5tb2RlLCBVbml0bGVzc1F1aXJrOjpGb3Ji
aWQsIFVuaXRsZXNzWmVyb1F1aXJrOjpGb3JiaWQpOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVl
Q3csIENTU1ZhbHVlQ2N3PihuZXh0SWRlbnQpICYmICFzd2VlcC5oYXNfdmFsdWUoKSkgeworICAg
ICAgICAgICAgICAgIHN3ZWVwID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlk
KCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVMYXJnZSwgQ1NTVmFsdWVTbWFsbD4obmV4dElk
ZW50KSAmJiAhc2l6ZS5oYXNfdmFsdWUoKSkgeworICAgICAgICAgICAgICAgIHNpemUgPSBhcmdz
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIWFuZ2xlKQorICAgICAgICAgICAgYW5nbGUgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1VuaXRUeXBlOjpDU1NfREVHKTsKKworICAgICAgICBy
ZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVBcmNUbygKKyAgICAgICAgICAgIGFmZmluaXR5
LAorICAgICAgICAgICAgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSwKKyAgICAgICAgICAg
IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihyeC5yZWxlYXNlTm9uTnVsbCgpLCByeS5yZWxlYXNl
Tm9uTnVsbCgpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSksCisgICAg
ICAgICAgICBzd2VlcC52YWx1ZV9vcihDU1NWYWx1ZUNjdyksCisgICAgICAgICAgICBzaXplLnZh
bHVlX29yKENTU1ZhbHVlU21hbGwpLAorICAgICAgICAgICAgYW5nbGUucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
K30KKworc3RhdGljIFJlZlB0cjxDU1NCYXNpY1NoYXBlU2hhcGU+IGNvbnN1bWVCYXNpY1NoYXBl
U2hhcGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCkKK3sKKyAgICBXaW5kUnVsZSB3aW5kUnVsZSA9IFdpbmRSdWxlOjpOb25aZXJvOwor
CisgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZUV2ZW5vZGQsIENTU1ZhbHVlTm9uemVybz4o
YXJncy5wZWVrKCkuaWQoKSkpCisgICAgICAgIHdpbmRSdWxlID0gYXJncy5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVFdmVub2RkID8gV2luZFJ1bGU6OkV2ZW5P
ZGQgOiBXaW5kUnVsZTo6Tm9uWmVybzsKKworICAgIGlmIChhcmdzLnBlZWsoKS5pZCgpICE9IENT
U1ZhbHVlRnJvbSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhcmdzLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCk7CisKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGlu
aXRpYWxYID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVl
UmFuZ2U6OkFsbCk7CisgICAgaWYgKCFpbml0aWFsWCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGluaXRpYWxZID0gY29uc3VtZUxlbmd0
aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6OkFsbCk7CisgICAgaWYg
KCFpbml0aWFsWSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIWNvbnN1bWVD
b21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgYXV0byBzZWdtZW50cyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKKworICAgIGZvciAoOzspIHsKKyAgICAgICAgYXV0byBzZWdtZW50ID0gY29uc3VtZVNoYXBl
U2VnbWVudChhcmdzLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKCFzZWdtZW50KQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgc2VnbWVudHMtPmFwcGVuZChzZWdtZW50LnJl
bGVhc2VOb25OdWxsKCkpOworICAgICAgICBpZiAoYXJncy5hdEVuZCgpKQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFy
Z3MpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBzaGFw
ZSA9IENTU0Jhc2ljU2hhcGVTaGFwZTo6Y3JlYXRlKAorICAgICAgICBjcmVhdGVQcmltaXRpdmVW
YWx1ZVBhaXIoCisgICAgICAgICAgICBpbml0aWFsWC5yZWxlYXNlTm9uTnVsbCgpLAorICAgICAg
ICAgICAgaW5pdGlhbFkucmVsZWFzZU5vbk51bGwoKSwKKyAgICAgICAgICAgIFBhaXI6OklkZW50
aWNhbFZhbHVlRW5jb2Rpbmc6OkRvTm90Q29hbGVzY2UpLAorICAgICAgICBXVEZNb3ZlKHNlZ21l
bnRzKSk7CisKKyAgICBzaGFwZS0+c2V0V2luZFJ1bGUod2luZFJ1bGUpOworICAgIHJldHVybiBz
aGFwZTsKK30KKwogc3RhdGljIHZvaWQgY29tcGxldGU0U2lkZXMoUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBzaWRlWzRdKQogewogICAgIGlmIChzaWRlWzNdKQpAQCAtMjc1Nyw2ICsyOTQ4LDgg
QEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUJhc2ljU2hhcGUoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGMKICAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNT
aGFwZUluc2V0KGFyZ3MsIGNvbnRleHQpOwogICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlUGF0
aCkKICAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZVBhdGgoYXJncyk7CisgICAgZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVTaGFwZSkKKyAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNT
aGFwZVNoYXBlKGFyZ3MsIGNvbnRleHQpOwogICAgIGlmICghc2hhcGUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIHJhbmdlID0gcmFuZ2VDb3B5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEy
ZDA3OWVhMTc3YWY0NmZlNmMyNzgyYjFlZDQxYTFjNjFhY2VkZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5jcHAKQEAg
LTAsMCArMSwyOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
QmFzaWNTaGFwZVNlZ21lbnQuaCIKKworI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgorI2lu
Y2x1ZGUgIlBhdGguaCIKKyNpbmNsdWRlICJTVkdQYXRoQnVpbGRlci5oIgorI2luY2x1ZGUgIlNW
R1BhdGhQYXJzZXIuaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnLmgiCisjaW5jbHVkZSAiU1ZHUGF0
aFNlZ0ltcGwuaCIKKyNpbmNsdWRlICJTVkdQYXRoU291cmNlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgRGVmaW5pdGlvbj4KK2NsYXNzIEJhc2ljU2hhcGVT
ZWdtZW50VmFsdWUgOiBwdWJsaWMgQmFzaWNTaGFwZVNlZ21lbnQgeworcHVibGljOgorICAgIGNv
bnN0IHR5cGVuYW1lIERlZmluaXRpb246OlZhbHVlJiB2YWx1ZSgpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQodHlwZSgpID09IERlZmluaXRpb246OkFic1NlZ1R5cGUgfHwgdHlwZSgpID09
IERlZmluaXRpb246OlJlbFNlZ1R5cGUpOworICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9
CisKKyAgICBib29sIGVxdWFscyhjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQorICAgICAgICAg
ICAgJiYgdmFsdWUoKSA9PSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY1NoYXBlU2VnbWVudFZhbHVl
PERlZmluaXRpb24+Jj4ob3RoZXIpLnZhbHVlKCk7CisgICAgfQorCisgICAgc3RhdGljIFJlZjxC
YXNpY1NoYXBlU2VnbWVudFZhbHVlPiBjcmVhdGUoQmFzaWNTaGFwZVNlZ21lbnQ6OlR5cGUgdHlw
ZSwgdHlwZW5hbWUgRGVmaW5pdGlvbjo6VmFsdWUmJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFT
U0VSVCh0eXBlID09IERlZmluaXRpb246OkFic1NlZ1R5cGUgfHwgdHlwZSA9PSBEZWZpbml0aW9u
OjpSZWxTZWdUeXBlKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNTaGFwZVNl
Z21lbnRWYWx1ZTxEZWZpbml0aW9uPih0eXBlLCBXVEZNb3ZlKHZhbHVlKSkpOworICAgIH0KKwor
cHJvdGVjdGVkOgorICAgIEJhc2ljU2hhcGVTZWdtZW50VmFsdWUoQmFzaWNTaGFwZVNlZ21lbnQ6
OlR5cGUgdHlwZSwgdHlwZW5hbWUgRGVmaW5pdGlvbjo6VmFsdWUmJiB2YWx1ZSkKKyAgICAgICAg
OiBCYXNpY1NoYXBlU2VnbWVudCh0eXBlKQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1
ZSkpIHsgfQorCitwcml2YXRlOgorICAgIHR5cGVuYW1lIERlZmluaXRpb246OlZhbHVlIG1fdmFs
dWU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RhdGljIGNvbnN0IHR5cGVuYW1lIFQ6
OlZhbHVlJiBleHRyYWN0VmFsdWUoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIHNlZykKK3sKKyAg
ICBBU1NFUlQoc2VnLnR5cGUoKSA9PSBUOjpBYnNTZWdUeXBlIHx8IHNlZy50eXBlKCkgPT0gVDo6
UmVsU2VnVHlwZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljU2hhcGVTZWdt
ZW50VmFsdWU8VD4mPihzZWcpLnZhbHVlKCk7Cit9CisKK2Jvb2wgQmFzaWNTaGFwZVNlZ21lbnQ6
OmVxdWFscyhjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0Cit7CisgICAgYXV0
byB0eXBlID0gdGhpcy0+dHlwZSgpOworICAgIGlmICh0eXBlICE9IG90aGVyLnR5cGUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisjZGVmaW5lIENPTVBBUkVfU0hBUEVfU0VHTUVOVF9WQUxV
RShUeXBlKSBcCisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6OkFic1NlZ1R5cGU6IFwKKyAg
ICBjYXNlIFNoYXBlU2VnbWVudCMjVHlwZTo6UmVsU2VnVHlwZTogXAorICAgICAgICByZXR1cm4g
ZXh0cmFjdFZhbHVlPFNoYXBlU2VnbWVudCMjVHlwZT4oKnRoaXMpID09IGV4dHJhY3RWYWx1ZTxT
aGFwZVNlZ21lbnQjI1R5cGU+KG90aGVyKTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNh
c2UgUGF0aFNlZ0Nsb3NlUGF0aDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgRk9S
X0VBQ0hfU0hBUEVfU0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoQ09NUEFSRV9TSEFQRV9TRUdNRU5U
X1ZBTFVFKQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZGVmaW5lIElNUExF
TUVOVF9TSEFQRV9TRUdNRU5UX1ZBTFVFKFRZUEUpIFwKK1JlZjxCYXNpY1NoYXBlU2VnbWVudD4g
QmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZSMjVFlQRShCYXNpY1NoYXBlU2VnbWVudDo6VHlwZSB0
eXBlLCB0eXBlbmFtZSBTaGFwZVNlZ21lbnQjI1RZUEU6OlZhbHVlJiYgdmFsdWUpIFwKK3sgXAor
ICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudFZhbHVlPFNoYXBlU2VnbWVudCMjVFlQRT46OmNy
ZWF0ZSh0eXBlLCBXVEZNb3ZlKHZhbHVlKSk7IFwKK30gXAorY29uc3QgdHlwZW5hbWUgU2hhcGVT
ZWdtZW50IyNUWVBFOjpWYWx1ZSYgQmFzaWNTaGFwZVNlZ21lbnQ6OmFzIyNUWVBFKCkgY29uc3Qg
XAoreyBcCisgICAgcmV0dXJuIGV4dHJhY3RWYWx1ZTxTaGFwZVNlZ21lbnQjI1RZUEU+KCp0aGlz
KTsgXAorfQorCitGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9WQUxVRShJTVBMRU1F
TlRfU0hBUEVfU0VHTUVOVF9WQUxVRSkKKworQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSBibGVu
ZChjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlJiBmcm9tLCBjb25zdCBDdXJ2ZVRvQ3Vi
aWNTaGFwZVNlZ1ZhbHVlJiB0bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQorewor
ICAgIHJldHVybiB7CisgICAgICAgIGJsZW5kKGZyb20ucG9pbnQxLCB0by5wb2ludDEsIGNvbnRl
eHQpLAorICAgICAgICBibGVuZChmcm9tLnBvaW50MiwgdG8ucG9pbnQyLCBjb250ZXh0KSwKKyAg
ICAgICAgYmxlbmQoZnJvbS50YXJnZXRQb2ludCwgdG8udGFyZ2V0UG9pbnQsIGNvbnRleHQpLAor
ICAgIH07Cit9CisKK0N1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3Qg
Q3VydmVUb0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29uc3QgQ3VydmVUb0N1Ymlj
U21vb3RoU2hhcGVTZWdWYWx1ZSYgdG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICByZXR1cm4geworICAgICAgICBibGVuZChmcm9tLnBvaW50MiwgdG8ucG9pbnQyLCBj
b250ZXh0KSwKKyAgICAgICAgYmxlbmQoZnJvbS50YXJnZXRQb2ludCwgdG8udGFyZ2V0UG9pbnQs
IGNvbnRleHQpLAorICAgIH07Cit9CisKK0N1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlIGJs
ZW5kKGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlJiBmcm9tLCBjb25zdCBDdXJ2
ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYgdG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29u
dGV4dCkKK3sKKyAgICByZXR1cm4geworICAgICAgICBibGVuZChmcm9tLnBvaW50MSwgdG8ucG9p
bnQxLCBjb250ZXh0KSwKKyAgICAgICAgYmxlbmQoZnJvbS50YXJnZXRQb2ludCwgdG8udGFyZ2V0
UG9pbnQsIGNvbnRleHQpLAorICAgIH07Cit9CisKK0FyY1RvU2hhcGVTZWdWYWx1ZSBibGVuZChj
b25zdCBBcmNUb1NoYXBlU2VnVmFsdWUmIGZyb20sIGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYg
dG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1cm4geworICAg
ICAgICBibGVuZChmcm9tLnJhZGl1cywgdG8ucmFkaXVzLCBjb250ZXh0KSwKKyAgICAgICAgYmxl
bmQoZnJvbS5hbmdsZSwgdG8uYW5nbGUsIGNvbnRleHQpLAorICAgICAgICBjb250ZXh0LnByb2dy
ZXNzIDwgMC41ZiA/IGZyb20uc3dlZXAgOiB0by5zd2VlcCwKKyAgICAgICAgY29udGV4dC5wcm9n
cmVzcyA8IDAuNWYgPyBmcm9tLmxhcmdlQXJjIDogdG8ubGFyZ2VBcmMsCisgICAgICAgIGJsZW5k
KGZyb20udGFyZ2V0UG9pbnQsIHRvLnRhcmdldFBvaW50LCBjb250ZXh0KQorICAgIH07Cit9CisK
K1JlZjxCYXNpY1NoYXBlU2VnbWVudD4gQmFzaWNTaGFwZVNlZ21lbnQ6OmJsZW5kKGNvbnN0IEJh
c2ljU2hhcGVTZWdtZW50JiBmcm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpIGNv
bnN0Cit7CisgICAgYXV0byB0eXBlID0gdGhpcy0+dHlwZSgpOworICAgIEFTU0VSVCh0eXBlID09
IGZyb20udHlwZSgpKTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgUGF0aFNlZ0Ns
b3NlUGF0aDoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBh
dGgoKTsKKworI2RlZmluZSBCTEVORF9TRUdNRU5UX1RZUEUoVHlwZSkgXAorICAgIGNhc2UgU2hh
cGVTZWdtZW50IyNUeXBlOjpBYnNTZWdUeXBlOiBcCisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5
cGU6OlJlbFNlZ1R5cGU6IFwKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50VmFsdWU8
U2hhcGVTZWdtZW50IyNUeXBlPjo6Y3JlYXRlKHR5cGUsIFdlYkNvcmU6OmJsZW5kKGV4dHJhY3RW
YWx1ZTxTaGFwZVNlZ21lbnQjI1R5cGU+KGZyb20pLCBleHRyYWN0VmFsdWU8U2hhcGVTZWdtZW50
IyNUeXBlPigqdGhpcyksIGNvbnRleHQpKTsKKworICAgICAgICBGT1JfRUFDSF9TSEFQRV9TRUdN
RU5UX1RZUEVfV0lUSF9WQUxVRShCTEVORF9TRUdNRU5UX1RZUEUpCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2Vn
bWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisgICAgfQorfQorY2xhc3MgU2hhcGVTVkdQYXRoU291
cmNlIGZpbmFsIDogcHVibGljIFNWR1BhdGhTb3VyY2UgeworcHVibGljOgorICAgIGV4cGxpY2l0
IFNoYXBlU1ZHUGF0aFNvdXJjZShjb25zdCBMZW5ndGhQb2ludCYgc3RhcnQsIGNvbnN0IFZlY3Rv
cjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYgc2VnbWVudHMsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSkKKyAgICAgICAgOiBtX3N0YXJ0KHN0YXJ0KQorICAgICAgICAsIG1fc2VnbWVudHMoc2VnbWVu
dHMpCisgICAgICAgICwgbV9zaXplKHNpemUpCisgICAgICAgICwgbV9pdGVtRW5kKHNlZ21lbnRz
LnNpemUoKSkKKyAgICAgICAgeworCisgICAgICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIGhh
c01vcmVEYXRhKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX2l0ZW1DdXJy
ZW50IDwgbV9pdGVtRW5kOworICAgIH0KKworICAgIGJvb2wgbW92ZVRvTmV4dFRva2VuKCkgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgU1ZHUGF0aFNlZ1R5cGUgbmV4dENvbW1hbmQoU1ZH
UGF0aFNlZ1R5cGUpIGZpbmFsCisgICAgeworICAgICAgICBhdXRvIHR5cGUgPSBtX3NlZ21lbnRz
LmF0KG1faXRlbUN1cnJlbnQpLT50eXBlKCk7CisgICAgICAgICsrbV9pdGVtQ3VycmVudDsKKyAg
ICAgICAgcmV0dXJuIHR5cGU7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU2Vn
VHlwZT4gcGFyc2VTVkdTZWdtZW50VHlwZSgpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
UGF0aFNlZ01vdmVUb0FiczsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3Vy
Y2U6Ok1vdmVUb1NlZ21lbnQ+IHBhcnNlTW92ZVRvU2VnbWVudCgpIGZpbmFsCisgICAgeworICAg
ICAgICBpZiAoIW1faXRlbUN1cnJlbnQpCisgICAgICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJj
ZTo6TW92ZVRvU2VnbWVudCB7IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChtX3N0YXJ0LCBtX3Np
emUpIH07CisKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6Ok1vdmVUb1NlZ21lbnQgeyBm
bG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWU8U2hhcGVTZWdtZW50TW92ZVRvPigpLCBtX3Np
emUpIH07CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9T
ZWdtZW50PiBwYXJzZUxpbmVUb1NlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJu
IFNWR1BhdGhTb3VyY2U6OkxpbmVUb1NlZ21lbnQgeyBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQo
dmFsdWU8U2hhcGVTZWdtZW50TGluZVRvPigpLCBtX3NpemUpIH07CisgICAgfQorCisgICAgc3Rk
OjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gcGFyc2VM
aW5lVG9Ib3Jpem9udGFsU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gU1ZH
UGF0aFNvdXJjZTo6TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQgeyBmbG9hdFZhbHVlRm9yTGVuZ3Ro
KHZhbHVlPFNoYXBlU2VnbWVudExpbmVUb0hvcml6b250YWw+KCksIG1fc2l6ZS53aWR0aCgpKSB9
OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvVmVydGlj
YWxTZWdtZW50PiBwYXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgpIGZpbmFsCisgICAgeworICAg
ICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6TGluZVRvVmVydGljYWxTZWdtZW50IHsgZmxvYXRW
YWx1ZUZvckxlbmd0aCh2YWx1ZTxTaGFwZVNlZ21lbnRMaW5lVG9WZXJ0aWNhbD4oKSwgbV9zaXpl
LmhlaWdodCgpKSB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6
Q3VydmVUb0N1YmljU2VnbWVudD4gcGFyc2VDdXJ2ZVRvQ3ViaWNTZWdtZW50KCkgZmluYWwKKyAg
ICB7CisgICAgICAgIGNvbnN0IGF1dG8mIHZhbHVlID0gdGhpcy0+dmFsdWU8U2hhcGVTZWdtZW50
Q3VydmVUb0N1YmljPigpOworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1
YmljU2VnbWVudCB7ICAgICAgICAKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2lu
dCh2YWx1ZS5wb2ludDEsIG1fc2l6ZSksCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3Ro
UG9pbnQodmFsdWUucG9pbnQyLCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxl
bmd0aFBvaW50KHZhbHVlLnRhcmdldFBvaW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU21vb3RoU2VnbWVu
dD4gcGFyc2VDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAg
IGNvbnN0IGF1dG8mIHZhbHVlID0gdGhpcy0+dmFsdWU8U2hhcGVTZWdtZW50Q3VydmVUb0N1Ymlj
U21vb3RoPigpOworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU21v
b3RoU2VnbWVudCB7ICAgICAgICAKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2lu
dCh2YWx1ZS5wb2ludDIsIG1fc2l6ZSksCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3Ro
UG9pbnQodmFsdWUudGFyZ2V0UG9pbnQsIG1fc2l6ZSkKKyAgICAgICAgfTsKKyAgICB9CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTZWdtZW50PiBw
YXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIGNvbnN0
IGF1dG8mIHZhbHVlID0gdGhpcy0+dmFsdWU8U2hhcGVTZWdtZW50Q3VydmVUb1F1YWRyYXRpYz4o
KTsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTZWdtZW50
IHsKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS5wb2ludDEsIG1f
c2l6ZSksCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUudGFyZ2V0
UG9pbnQsIG1fc2l6ZSkKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNW
R1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50PiBwYXJzZUN1cnZlVG9R
dWFkcmF0aWNTbW9vdGhTZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdQ
YXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCB7IGZsb2F0UG9pbnRGb3JM
ZW5ndGhQb2ludCh2YWx1ZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljU21vb3RoPigpLCBt
X3NpemUpIH07CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpBcmNU
b1NlZ21lbnQ+IHBhcnNlQXJjVG9TZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIGNvbnN0
IGF1dG8mIHZhbHVlID0gdGhpcy0+dmFsdWU8U2hhcGVTZWdtZW50QXJjVG8+KCk7CisgICAgICAg
IGF1dG8gcmFkaXVzID0gZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZSh2YWx1ZS5yYWRpdXMsIG1fc2l6
ZSk7CisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpBcmNUb1NlZ21lbnQgeworICAgICAg
ICAgICAgLnJ4ID0gcmFkaXVzLndpZHRoKCksCisgICAgICAgICAgICAucnkgPSByYWRpdXMuaGVp
Z2h0KCksCisgICAgICAgICAgICAuYW5nbGUgPSB2YWx1ZS5hbmdsZSwKKyAgICAgICAgICAgIC5s
YXJnZUFyYyA9IHZhbHVlLmxhcmdlQXJjLAorICAgICAgICAgICAgLnN3ZWVwID0gdmFsdWUuc3dl
ZXAsCisgICAgICAgICAgICAudGFyZ2V0UG9pbnQgPSBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQo
dmFsdWUudGFyZ2V0UG9pbnQsIG1fc2l6ZSkKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorICAgIGNvbnN0IHR5cGVuYW1lIFQ6OlZhbHVlJiB2YWx1ZSgpCisg
ICAgeworICAgICAgICBBU1NFUlQobV9pdGVtQ3VycmVudCA8PSBtX3NlZ21lbnRzLnNpemUoKSk7
CisgICAgICAgIHJldHVybiBleHRyYWN0VmFsdWU8VD4obV9zZWdtZW50cy5hdChtX2l0ZW1DdXJy
ZW50IC0gMSkuZ2V0KCkpOworICAgIH0KKworICAgIGNvbnN0IExlbmd0aFBvaW50JiBtX3N0YXJ0
OworICAgIGNvbnN0IFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYgbV9zZWdtZW50czsK
KyAgICBGbG9hdFNpemUgbV9zaXplOworICAgIHNpemVfdCBtX2l0ZW1FbmQ7CisgICAgc2l6ZV90
IG1faXRlbUN1cnJlbnQgPSAwOworfTsKKworUGF0aCBCYXNpY1NoYXBlU2VnbWVudDo6dG9QYXRo
KGNvbnN0IExlbmd0aFBvaW50JiBzdGFydCwgY29uc3QgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2Vn
bWVudD4+JiBzZWdtZW50cywgY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIFNoYXBlU1ZH
UGF0aFNvdXJjZSBzb3VyY2Uoc3RhcnQsIHNlZ21lbnRzLCBzaXplKTsKKyAgICBQYXRoIHBhdGg7
CisgICAgU1ZHUGF0aEJ1aWxkZXIgYnVpbGRlcihwYXRoKTsKKyAgICBTVkdQYXRoUGFyc2VyOjpw
YXJzZShzb3VyY2UsIGJ1aWxkZXIpOworICAgIHJldHVybiBwYXRoOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ1ZDE4Y2U4NTA2Y2U2MmRkMzI2NTc1NGRlMDc0NmFkMGJjMTk0NmYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21l
bnQuaApAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOb2FtIFJv
c2VudGhhbCBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiTGVuZ3RoLmgiCisjaW5jbHVkZSAiTGVuZ3RoUG9pbnQuaCIKKyNpbmNsdWRlICJMZW5ndGhT
aXplLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZy5oIgorI2luY2x1ZGUgIlNWR1BhdGhTb3VyY2Uu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQmxlbmRpbmdDb250ZXh0OworY2xh
c3MgRmxvYXRSZWN0OworY2xhc3MgUGF0aDsKKworc3RydWN0IEN1cnZlVG9DdWJpY1NoYXBlU2Vn
VmFsdWUgeworICAgIExlbmd0aFBvaW50IHBvaW50MTsKKyAgICBMZW5ndGhQb2ludCBwb2ludDI7
CisgICAgTGVuZ3RoUG9pbnQgdGFyZ2V0UG9pbnQ7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIHBvaW50MSA9PSBvdGhlci5wb2ludDEgJiYgcG9pbnQyID09IG90aGVyLnBvaW50MiAm
JiB0YXJnZXRQb2ludCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9Cit9OworCitzdHJ1Y3Qg
Q3VydmVUb0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSB7CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQy
OworICAgIExlbmd0aFBvaW50IHRhcmdldFBvaW50OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBwb2ludDIgPT0gb3RoZXIucG9pbnQyICYmIHRhcmdldFBvaW50ID09IG90
aGVyLnRhcmdldFBvaW50OworICAgIH0KK307CisKK3N0cnVjdCBDdXJ2ZVRvUXVhZHJhdGljU2hh
cGVTZWdWYWx1ZSB7CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQxOworICAgIExlbmd0aFBvaW50IHRh
cmdldFBvaW50OworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNT
aGFwZVNlZ1ZhbHVlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBwb2ludDEg
PT0gb3RoZXIucG9pbnQxICYmIHRhcmdldFBvaW50ID09IG90aGVyLnRhcmdldFBvaW50OworICAg
IH0KK307CisKKworc3RydWN0IEFyY1RvU2hhcGVTZWdWYWx1ZSB7CisgICAgTGVuZ3RoU2l6ZSBy
YWRpdXM7CisgICAgZmxvYXQgYW5nbGUgPSAwOworICAgIGJvb2wgc3dlZXAgPSBmYWxzZTsKKyAg
ICBib29sIGxhcmdlQXJjID0gZmFsc2U7CisgICAgTGVuZ3RoUG9pbnQgdGFyZ2V0UG9pbnQ7CisK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiBvdGhlcikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiByYWRpdXMgPT0gb3RoZXIucmFkaXVzICYmIGFuZ2xl
ID09IG90aGVyLmFuZ2xlICYmIHN3ZWVwID09IG90aGVyLnN3ZWVwICYmIGxhcmdlQXJjID09IG90
aGVyLmxhcmdlQXJjICYmIHRhcmdldFBvaW50ID09IG90aGVyLnRhcmdldFBvaW50OworICAgIH0K
K307CisKKworQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBDdXJ2ZVRvQ3Vi
aWNTaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYsIGNvbnN0
IEJsZW5kaW5nQ29udGV4dCYpOworQ3VydmVUb0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSBibGVu
ZChjb25zdCBDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQ3VydmVUb0N1
YmljU21vb3RoU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYpOworQ3VydmVU
b1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBl
U2VnVmFsdWUmLCBjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEJs
ZW5kaW5nQ29udGV4dCYpOworQXJjVG9TaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEFyY1RvU2hh
cGVTZWdWYWx1ZSYsIGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEJsZW5kaW5nQ29u
dGV4dCYpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIFNWR1BhdGhTZWdUeXBlIEFi
c1R5cGUsIFNWR1BhdGhTZWdUeXBlIFJlbFR5cGU+CitzdHJ1Y3QgU2hhcGVTZWdtZW50VHlwZURl
ZmluaXRpb24geworICAgIHR5cGVkZWYgVmFsdWVUeXBlIFZhbHVlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBBYnNTZWdUeXBlID0gQWJzVHlwZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1
dG8gUmVsU2VnVHlwZSA9IFJlbFR5cGU7Cit9OworCitzdHJ1Y3QgU2hhcGVTZWdtZW50TW92ZVRv
IDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPExlbmd0aFBvaW50LCBQYXRoU2Vn
TW92ZVRvQWJzLCBQYXRoU2VnTW92ZVRvUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50TGlu
ZVRvIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPExlbmd0aFBvaW50LCBQYXRo
U2VnTGluZVRvQWJzLCBQYXRoU2VnTGluZVRvUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50
TGluZVRvSG9yaXpvbnRhbCA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxMZW5n
dGgsIFBhdGhTZWdMaW5lVG9Ib3Jpem9udGFsQWJzLCBQYXRoU2VnTGluZVRvSG9yaXpvbnRhbFJl
bD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudExpbmVUb1ZlcnRpY2FsIDogcHVibGljIFNoYXBl
U2VnbWVudFR5cGVEZWZpbml0aW9uPExlbmd0aCwgUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsQWJzLCBQ
YXRoU2VnTGluZVRvVmVydGljYWxSZWw+IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRDdXJ2ZVRv
Q3ViaWMgOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248Q3VydmVUb0N1YmljU2hh
cGVTZWdWYWx1ZSwgUGF0aFNlZ0N1cnZlVG9DdWJpY0FicywgUGF0aFNlZ0N1cnZlVG9DdWJpY1Jl
bD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWMgOiBwdWJsaWMgU2hh
cGVTZWdtZW50VHlwZURlZmluaXRpb248Q3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUsIFBh
dGhTZWdDdXJ2ZVRvUXVhZHJhdGljQWJzLCBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1JlbD4geyB9
Oworc3RydWN0IFNoYXBlU2VnbWVudEN1cnZlVG9DdWJpY1Ntb290aCA6IHB1YmxpYyBTaGFwZVNl
Z21lbnRUeXBlRGVmaW5pdGlvbjxDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlLCBQYXRo
U2VnQ3VydmVUb0N1YmljU21vb3RoQWJzLCBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3RoUmVsPiB7
IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50Q3VydmVUb1F1YWRyYXRpY1Ntb290aCA6IHB1YmxpYyBT
aGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxMZW5ndGhQb2ludCwgUGF0aFNlZ0N1cnZlVG9RdWFk
cmF0aWNTbW9vdGhBYnMsIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21vb3RoUmVsPiB7IH07Citz
dHJ1Y3QgU2hhcGVTZWdtZW50QXJjVG8gOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRp
b248QXJjVG9TaGFwZVNlZ1ZhbHVlLCBQYXRoU2VnQXJjQWJzLCBQYXRoU2VnQXJjUmVsPiB7IH07
CisKKyNkZWZpbmUgRk9SX0VBQ0hfU0hBUEVfU0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoTWFjcm8p
IFwKKyAgICBNYWNybyhNb3ZlVG8pIFwKKyAgICBNYWNybyhMaW5lVG8pIFwKKyAgICBNYWNybyhM
aW5lVG9Ib3Jpem9udGFsKSBcCisgICAgTWFjcm8oTGluZVRvVmVydGljYWwpIFwKKyAgICBNYWNy
byhDdXJ2ZVRvQ3ViaWMpIFwKKyAgICBNYWNybyhDdXJ2ZVRvUXVhZHJhdGljKSBcCisgICAgTWFj
cm8oQ3VydmVUb0N1YmljU21vb3RoKSBcCisgICAgTWFjcm8oQ3VydmVUb1F1YWRyYXRpY1Ntb290
aCkgXAorICAgIE1hY3JvKEFyY1RvKQorCitjbGFzcyBCYXNpY1NoYXBlU2VnbWVudCA6IHB1Ymxp
YyBSZWZDb3VudGVkPEJhc2ljU2hhcGVTZWdtZW50PiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBT
VkdQYXRoU2VnVHlwZSBUeXBlOworICAgIH5CYXNpY1NoYXBlU2VnbWVudCgpID0gZGVmYXVsdDsK
KworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgUmVmPEJh
c2ljU2hhcGVTZWdtZW50PiBibGVuZChjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYgZnJvbSwgY29u
c3QgQmxlbmRpbmdDb250ZXh0JikgY29uc3Q7CisgICAgYm9vbCBlcXVhbHMoY29uc3QgQmFzaWNT
aGFwZVNlZ21lbnQmKSBjb25zdDsKKworICAgIHN0YXRpYyBQYXRoIHRvUGF0aChjb25zdCBMZW5n
dGhQb2ludCYgc3RhcnQsIGNvbnN0IFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYsIGNv
bnN0IEZsb2F0U2l6ZSYpOworCisjZGVmaW5lIERFRklORV9TSEFQRV9TRUdNRU5UX1RZUEUoVCkg
XAorICAgIHN0YXRpYyBSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGNyZWF0ZSMjVChUeXBlLCB0eXBl
bmFtZSBTaGFwZVNlZ21lbnQjI1Q6OlZhbHVlJiYpOyBcCisgICAgY29uc3QgdHlwZW5hbWUgU2hh
cGVTZWdtZW50IyNUOjpWYWx1ZSYgYXMjI1QoKSBjb25zdDsKKworICAgIEZPUl9FQUNIX1NIQVBF
X1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKERFRklORV9TSEFQRV9TRUdNRU5UX1RZUEUpCisKKyAg
ICBzdGF0aWMgUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBjcmVhdGVDbG9zZVBhdGgoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNTaGFwZVNlZ21lbnQoUGF0aFNlZ0Ns
b3NlUGF0aCkpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIEJhc2ljU2hhcGVTZWdtZW50KFR5
cGUgdCkKKyAgICAgICAgOiBtX3R5cGUodCkgeyB9CisKK3ByaXZhdGU6CisgICAgVHlwZSBtX3R5
cGU7Cit9OworCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9CYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNT
aGFwZXMuY3BwCmluZGV4IDA4NmE2ZjZhNjNhMjVlNTAyM2FlOTViZmE4NGY0ZmE3ZDRmZmMyNjIu
LjY3M2ZlYTZjNGQyNjMwMGE2ODdmOWQ1ZGEzYjg2MzNlODVlMDAxYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtMTIxLDYgKzEyMSw0
NCBAQCBzdHJ1Y3QgVHJhbnNmb3JtZWRCeXRlU3RyZWFtUGF0aFBvbGljeSA6IFRpbnlMUlVDYWNo
ZVBvbGljeTxTVkdQYXRoVHJhbnNmb3JtZWRCeQogICAgIHN0YXRpYyBQYXRoIGNyZWF0ZVZhbHVl
Rm9yS2V5KGNvbnN0IFNWR1BhdGhUcmFuc2Zvcm1lZEJ5dGVTdHJlYW0mIHN0cmVhbSkgeyByZXR1
cm4gc3RyZWFtLnBhdGgoKTsgfQogfTsKIAorc3RydWN0IFNoYXBlU2VnbWVudHNXaXRoQm94IHsK
KyAgICBMZW5ndGhQb2ludCBzdGFydDsKKyAgICBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50
Pj4gc2VnbWVudHM7CisgICAgRmxvYXRSZWN0IGJveDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTaGFwZVNlZ21lbnRzV2l0aEJveCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAoYm94ICE9IG90aGVyLmJveCB8fCBzZWdtZW50cy5zaXplKCkgPT0gb3RoZXIuc2VnbWVudHMu
c2l6ZSgpIHx8IHN0YXJ0ICE9IG90aGVyLnN0YXJ0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2VnbWVudHMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIGlmICghc2VnbWVudHMuYXQoaSktPmVxdWFscyhvdGhlci5zZWdtZW50
cy5hdChpKS5nZXQoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFNoYXBlU2VnbWVudHNXaXRoQm94JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgU2hhcGVTZWdtZW50
c1BhdGhQb2xpY3kgOiBUaW55TFJVQ2FjaGVQb2xpY3k8U2hhcGVTZWdtZW50c1dpdGhCb3gsIFBh
dGg+IHsKKyAgICBzdGF0aWMgYm9vbCBpc0tleU51bGwoY29uc3QgU2hhcGVTZWdtZW50c1dpdGhC
b3gmIHNlZ21lbnRzV2l0aEJveCkKKyAgICB7CisgICAgICAgIHJldHVybiBzZWdtZW50c1dpdGhC
b3guc2VnbWVudHMuaXNFbXB0eSgpOworICAgIH0KKworICAgIHN0YXRpYyBQYXRoIGNyZWF0ZVZh
bHVlRm9yS2V5KGNvbnN0IFNoYXBlU2VnbWVudHNXaXRoQm94JiBzZWdtZW50c1dpdGhCb3gpCisg
ICAgeworICAgICAgICBhdXRvIHBhdGggPSBCYXNpY1NoYXBlU2VnbWVudDo6dG9QYXRoKHNlZ21l
bnRzV2l0aEJveC5zdGFydCwgc2VnbWVudHNXaXRoQm94LnNlZ21lbnRzLCBzZWdtZW50c1dpdGhC
b3guYm94LnNpemUoKSk7CisgICAgICAgIHBhdGgudHJhbnNsYXRlKHRvRmxvYXRTaXplKHNlZ21l
bnRzV2l0aEJveC5ib3gubG9jYXRpb24oKSkpOworICAgICAgICByZXR1cm4gcGF0aDsKKyAgICB9
Cit9OworCiBzdGF0aWMgY29uc3QgUGF0aCYgY2FjaGVkRWxsaXBzZVBhdGgoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8Rmxv
YXRSZWN0LCBQYXRoLCA0LCBFbGxpcHNlUGF0aFBvbGljeT4+IGNhY2hlOwpAQCAtMTQ1LDYgKzE4
MywxMiBAQCBzdGF0aWMgY29uc3QgUGF0aCYgY2FjaGVkVHJhbnNmb3JtZWRCeXRlU3RyZWFtUGF0
aChjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYgc3RyZQogICAgIHJldHVybiBjYWNoZS5nZXQoKS5n
ZXQoU1ZHUGF0aFRyYW5zZm9ybWVkQnl0ZVN0cmVhbSB7IHN0cmVhbSwgem9vbSwgb2Zmc2V0IH0p
OwogfQogCitzdGF0aWMgY29uc3QgUGF0aCYgY2FjaGVkU2hhcGVTZWdtZW50c1BhdGgoY29uc3Qg
TGVuZ3RoUG9pbnQmIGZyb20sIGNvbnN0IFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYg
c2VnbWVudHMsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VGlueUxSVUNhY2hlPFNoYXBlU2VnbWVudHNXaXRoQm94LCBQYXRoLCA0LCBTaGFwZVNl
Z21lbnRzUGF0aFBvbGljeT4+IGNhY2hlOworICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQoU2hh
cGVTZWdtZW50c1dpdGhCb3ggeyBmcm9tLCBzZWdtZW50cywgcmVjdCB9KTsKK30KKwogYm9vbCBC
YXNpY1NoYXBlQ2lyY2xlOjpvcGVyYXRvcj09KGNvbnN0IEJhc2ljU2hhcGUmIG90aGVyKSBjb25z
dAogewogICAgIGlmICh0eXBlKCkgIT0gb3RoZXIudHlwZSgpKQpAQCAtNDYzLDYgKzUwNyw3OCBA
QCB2b2lkIEJhc2ljU2hhcGVJbnNldDo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKICAgICB0
cy5kdW1wUHJvcGVydHkoImJvdHRvbS1sZWZ0LXJhZGl1cyIsIGJvdHRvbUxlZnRSYWRpdXMoKSk7
CiB9CiAKKworQmFzaWNTaGFwZVNoYXBlOjpCYXNpY1NoYXBlU2hhcGUoY29uc3QgTGVuZ3RoUG9p
bnQmIGZyb20sIFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYmIHNlZ21lbnRzKQorICAg
IDogbV9zZWdtZW50cyhtYWtlVW5pcXVlPFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+Pj4o
V1RGTW92ZShzZWdtZW50cykpKQorICAgICwgbV9mcm9tKGZyb20pCit7Cit9CisKK2NvbnN0IFBh
dGgmIEJhc2ljU2hhcGVTaGFwZTo6cGF0aChjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KQor
eworICAgIHJldHVybiBjYWNoZWRTaGFwZVNlZ21lbnRzUGF0aChtX2Zyb20sICptX3NlZ21lbnRz
LCBib3VuZGluZ0JveCk7Cit9CisKK2Jvb2wgQmFzaWNTaGFwZVNoYXBlOjpvcGVyYXRvcj09KGNv
bnN0IEJhc2ljU2hhcGUmIG90aGVyKSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gb3RoZXIu
dHlwZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBCYXNpY1NoYXBlU2hh
cGUmIG90aGVyU2hhcGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+KG90aGVyKTsKKyAgICBh
dXRvIHNpemUgPSB0aGlzLT5zaXplKCk7CisgICAgaWYgKHdpbmRSdWxlKCkgIT0gb3RoZXJTaGFw
ZS53aW5kUnVsZSgpIHx8IHNpemUgPT0gb3RoZXJTaGFwZS5zaXplKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAg
ICAgIGlmICghYXQoaSkuZXF1YWxzKG90aGVyU2hhcGUuYXQoaSkpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEJhc2ljU2hh
cGVTaGFwZTo6Y2FuQmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIpIGNvbnN0Cit7CisgICAg
aWYgKHR5cGUoKSAhPSBvdGhlci50eXBlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKKyAgICBhdXRvJiBvdGhlclNoYXBlID0gZG93bmNh
c3Q8QmFzaWNTaGFwZVNoYXBlPihvdGhlcik7CisgICAgaWYgKHdpbmRSdWxlKCkgIT0gb3RoZXJT
aGFwZS53aW5kUnVsZSgpIHx8IHNpemUgIT0gb3RoZXJTaGFwZS5zaXplKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Cisg
ICAgICAgIGlmIChhdChpKS50eXBlKCkgIT0gb3RoZXJTaGFwZS5hdChpKS50eXBlKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1Jl
ZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlU2hhcGU6OmJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIGZy
b20sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
dHlwZSgpID09IGZyb20udHlwZSgpKTsKKyAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7Cisg
ICAgYXV0byYgZnJvbVNoYXBlID0gZG93bmNhc3Q8QmFzaWNTaGFwZVNoYXBlPihmcm9tKTsKKyAg
ICBBU1NFUlQoc2l6ZSA9PSBmcm9tU2hhcGUuc2l6ZSgpKTsKKworICAgIFZlY3RvcjxSZWY8QmFz
aWNTaGFwZVNlZ21lbnQ+PiByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoc2l6ZSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZChhdChpKS5ibGVuZChmcm9tU2hhcGUuYXQoaSksIGNvbnRleHQpKTsK
KworICAgIGF1dG8gbmV3U2hhcGUgPSBCYXNpY1NoYXBlU2hhcGU6OmNyZWF0ZShXZWJDb3JlOjpi
bGVuZChmcm9tU2hhcGUuZnJvbSgpLCBtX2Zyb20sIGNvbnRleHQpLCBXVEZNb3ZlKHJlc3VsdCkp
OworICAgIG5ld1NoYXBlLT5zZXRXaW5kUnVsZSh3aW5kUnVsZSgpKTsKKyAgICByZXR1cm4gbmV3
U2hhcGU7Cit9CisKK3ZvaWQgQmFzaWNTaGFwZVNoYXBlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBj
b25zdAoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgid2luZC1ydWxlIiwgd2luZFJ1bGUoKSk7Cisg
ICAgLy8gRklYTUU6IHByaW50IHRoZSBieXRlIHN0cmVhbT8KK30KKwogc3RhdGljIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEJhc2ljU2hhcGVSYWRpdXM6OlR5cGUgcmFk
aXVzVHlwZSkKIHsKICAgICBzd2l0Y2ggKHJhZGl1c1R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmgKaW5kZXggOWJmMDM3MzQ3NmI1M2U1YzdhNGE5
YmM2MjM5ZTQ1ZWM0YWQ1MzRlNC4uMzFlOGYzZGY1ZGNiMTYyZTgyNTM3MzRkNGI1Y2NlYjkwY2Vj
OTE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hh
cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmgK
QEAgLTMwLDYgKzMwLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCisj
aW5jbHVkZSAiTGVuZ3RoUG9pbnQuaCIKICNpbmNsdWRlICJMZW5ndGhTaXplLmgiCiAjaW5jbHVk
ZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDcsNiArNDgs
NyBAQCBzdHJ1Y3QgQmxlbmRpbmdDb250ZXh0OwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgUGF0
aDsKIGNsYXNzIFJlbmRlckJveDsKK2NsYXNzIEJhc2ljU2hhcGVTZWdtZW50OwogY2xhc3MgU1ZH
UGF0aEJ5dGVTdHJlYW07CiAKIGNsYXNzIEJhc2ljU2hhcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxC
YXNpY1NoYXBlPiB7CkBAIC01OCw3ICs2MCw4IEBAIHB1YmxpYzoKICAgICAgICAgUGF0aCwKICAg
ICAgICAgQ2lyY2xlLAogICAgICAgICBFbGxpcHNlLAotICAgICAgICBJbnNldAorICAgICAgICBJ
bnNldCwKKyAgICAgICAgU2hhcGUKICAgICB9OwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBj
b25zdCA9IDA7CkBAIC0zNDMsNiArMzQ2LDQxIEBAIHByaXZhdGU6CiAgICAgTGVuZ3RoU2l6ZSBt
X2JvdHRvbUxlZnRSYWRpdXM7CiB9OwogCitjbGFzcyBCYXNpY1NoYXBlU2hhcGUgOiBwdWJsaWMg
QmFzaWNTaGFwZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxCYXNpY1NoYXBlU2hhcGU+IGNy
ZWF0ZShjb25zdCBMZW5ndGhQb2ludCYgZnJvbSwgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVu
dD4+JiYgc2VnbWVudHMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXNp
Y1NoYXBlU2hhcGUoZnJvbSwgV1RGTW92ZShzZWdtZW50cykpKTsKKyAgICB9CisKKyAgICB2b2lk
IHNldFdpbmRSdWxlKFdpbmRSdWxlIHdpbmRSdWxlKSB7IG1fd2luZFJ1bGUgPSB3aW5kUnVsZTsg
fQorICAgIFdpbmRSdWxlIHdpbmRSdWxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93aW5k
UnVsZTsgfQorCisgICAgY29uc3QgTGVuZ3RoUG9pbnQmIGZyb20oKSBjb25zdCB7IHJldHVybiBt
X2Zyb207IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy0+
c2l6ZSgpOyB9CisgICAgY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIGF0KHNpemVfdCBpKSBjb25z
dCB7IHJldHVybiBtX3NlZ21lbnRzLT5hdChpKS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIEJh
c2ljU2hhcGVTaGFwZShjb25zdCBMZW5ndGhQb2ludCYsIFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNl
Z21lbnQ+PiYmKTsKKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFR5
cGU6OlNoYXBlOyB9CisKKworICAgIGNvbnN0IFBhdGgmIHBhdGgoY29uc3QgRmxvYXRSZWN0Jikg
b3ZlcnJpZGU7CisKKyAgICBib29sIGNhbkJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgZnJv
bSwgY29uc3QgQmxlbmRpbmdDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQmFzaWNTaGFwZSYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBk
dW1wKFRleHRTdHJlYW0mKSBjb25zdCBmaW5hbDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0
b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4+IG1fc2VnbWVudHM7CisgICAgV2luZFJ1bGUgbV93
aW5kUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07CisgICAgTGVuZ3RoUG9pbnQgbV9mcm9tOwor
fTsKKwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0
IEJhc2ljU2hhcGVSYWRpdXMmKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRl
eHRTdHJlYW0mLCBjb25zdCBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZSYpOwogV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEJhc2ljU2hhcGUmKTsK
QEAgLTM1OSwzICszOTcsNCBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJh
c2ljU2hhcGVFbGxpcHNlLCBCYXNpY1NoYXBlOjpUeXBlOjpFbGxpcHNlKQogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CQVNJQ19TSEFQRShCYXNpY1NoYXBlUG9seWdvbiwgQmFzaWNTaGFwZTo6VHlw
ZTo6UG9seWdvbikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkFTSUNfU0hBUEUoQmFzaWNTaGFw
ZVBhdGgsIEJhc2ljU2hhcGU6OlR5cGU6OlBhdGgpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JB
U0lDX1NIQVBFKEJhc2ljU2hhcGVJbnNldCwgQmFzaWNTaGFwZTo6VHlwZTo6SW5zZXQpCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVTaGFwZSwgQmFzaWNTaGFw
ZTo6VHlwZTo6U2hhcGUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDM0NTM0OGY5ZDlmYzIxMjNkMTk1Y2EzYTljOTJiMzUx
NGUzMjg0ZS4uNGY2NjEwMzBkMmQ0MWFhZjFhYjk0YjkzYzE0MjFjYzNmMjcyZDE0MSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDIyLTA0LTE5ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0
Lm9yZz4KKworICAgICAgICBbQ1NTIFNoYXBlc10gQWRkIHN1cHBvcnQgZm9yIHNoYXBlKCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODM3MQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vOTA5MTk0NzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiB1bnNraXAgQ1NTIHNo
YXBlKCkgdGVzdHMKKwogMjAyMi0wNC0xOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIFVuc2tpcCBhcGkvdmFsaWRhdGlvbi9jcmVh
dGVTYW1wbGVyLmh0bWwg8J+OiQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNjRl
YTY1N2U2ZTA0MmFjM2QxMDE4YzhkZDhkOGZjMDIyNWZlYmEwNy4uYWRmNjQ1ZTIzOTJkNWE5Nzk3
ZjJmN2M2NGY5ZGIwZjMyNGYwNzZjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMjItMDQtMTkgIE5vYW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQu
b3JnPgorCisgICAgICAgIFtDU1MgU2hhcGVzXSBBZGQgc3VwcG9ydCBmb3Igc2hhcGUoKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MzcxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS85MDkxOTQ3Nj4KKworICAgICAgICBBbWVuZGVkIHRlc3RzIHRv
IHN1cHBvcnQgQ1NTIHNoYXBlKCkKKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMtZXhwZWN0ZWQuaHRtbDoK
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9j
bGlwLXBhdGgtc2hhcGUtMDAzLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwNC1leHBlY3RlZC5odG1s
OgorICAgICAgICAgICAgICAgIE5lZWRlZCB0byBjaGFuZ2UgdGhlIHRlc3QgYSBiaXQgYmVjYXVz
ZSBvZiBzdHJheSBwaXhlbHMuIFdpbGwgdXBzdHJlYW0uCisKKworICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2lu
Zy1leHBlY3RlZC50eHQ6CisgICAgICAgICAgICAgICAgTm93IHBhc3NlcworCiAyMDIyLTA0LTE4
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
SW1wbGVtZW50IENTU1RyYW5zZm9ybVZhbHVlLmlzMkQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFl
NzYyNmIzYmYzOWE3YWI4NjZiZjRjNDI4ZjZhMzhjYjE4NjE5YTQuLmJmMDkyZGQ1MmQzYWIxZTA1
NDk4ZmFiMGM2ZTlkZThlYzM5ZDg0YTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjE5OSwxNSAr
MjE5OSw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5n
L2NsaXAtcGF0aC9jbGlwLXBhdGgtdmlld0JveC0xYy5oCiB3ZWJraXQub3JnL2IvMTA0NDQyIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9j
bGlwLXBhdGgtdXJsLXJlZmVyZW5jZS1jaGFuZ2UtZnJvbS1lbXB0eS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjI5NTEwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtZGVzY2VuZGFudC10ZXh0
LW11dGF0ZWQtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotIyBDU1Mgc2hhcGUoKQot
d2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAyLXVuaXRz
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0
aC1zaGFwZS0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3
MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBh
dGgvY2xpcC1wYXRoLXNoYXBlLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNr
aW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS1pbnRlcnBvbGF0aW9uLTAw
MS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBh
dGgtc2hhcGUtaW50ZXJwb2xhdGlvbi0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiB3
ZWJraXQub3JnL2IvMjI5MzcwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1tYXNraW5nL2NsaXAvY2xpcC1maWx0ZXItb3JkZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzIyOTM3MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtbWFza2luZy9tYXNrLWltYWdlL21hc2staW1hZ2UtdXJsLWxvY2FsLW1hc2suaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIyOTM3MCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9tYXNrLWltYWdlL21hc2staW1hZ2UtdXJs
LXJlbW90ZS1tYXNrLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2Ns
aXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgv
Y2xpcC1wYXRoLXNoYXBlLTAwMy1leHBlY3RlZC5odG1sCmluZGV4IDQ2ZTA5OGM0ZWI2NDg5ZmM0
NDMwMWQ2YmY5YjI0M2U4MzZiMmNhMzEuLjMxZTk3YzkxNDc0NDhhYTg0OTI2NDJlNDE5NmFhOTFi
NWNhNmE0ODggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4
cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMtZXhwZWN0
ZWQuaHRtbApAQCAtOSwxNCArOSwyMyBAQAogICAgIHdpZHRoOiAxMDBweDsKICAgICBoZWlnaHQ6
IDEwMHB4OwogICB9Ci0gICNyZWYgewotICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworCisg
ICNyZWYsICNhY3R1YWwgewogICAgIGNsaXAtcGF0aDogcGF0aChub256ZXJvLCAiTSAxMCAxMCwg
USA0MCAwIDYwIDIwLCBUIDkwIDAsIGMgMTAgNDAgMjAgMjAgLTIwIDYwLCBzIC0xMCA3MCAtNDAg
LTEwIik7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICB9CisKKyAgI3JlZiB7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogcmVkOworICB9CisKKyAgI2FjdHVhbCB7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogZ3JlZW47CisgIH0KIDwvc3R5bGU+CiA8Ym9keT4KICAgPHA+WW91IHNob3VsZCBzZWUg
bm8gcmVkLjwvcD4KICAgPGRpdiBpZD0icmVmIj48L2Rpdj4KKyAgPGRpdiBpZD0iYWN0dWFsIj48
L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBh
dGgtc2hhcGUtMDAzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy5odG1s
CmluZGV4IDIyZTdkOWFhZjUzNzRjOWI3ZTRlM2MyZDUwZWNlZmJjZWMxMzRiNjYuLmUwMTcwOTAw
NWFjOGNmOGUzNWQwNjJhNjg1N2I2NDYyN2I1ZWJlMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0
aC9jbGlwLXBhdGgtc2hhcGUtMDAzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1z
aGFwZS0wMDMuaHRtbApAQCAtNiw2ICs2LDcgQEAKICAgPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0i
cmVmZXJlbmNlL2NsaXAtcGF0aC1zaGFwZS0wMDMtcmVmLmh0bWwiPgogICA8bWV0YSBuYW1lPSJh
c3NlcnQiIGNvbnRlbnQ9IlRoZSBjbGlwLXBhdGggcHJvcGVydHkgdGFrZXMgdGhlIGJhc2ljIHNo
YXBlCiAJJ3NoYXBlKCknIGZvciBjbGlwcGluZy4gVGVzdCBjdXJ2ZXMuIj4KKyAgPG1ldGEgbmFt
ZT0iZnV6enkiIGNvbnRlbnQ9Im1heERpZmZlcmVuY2U9ODA7IHRvdGFsUGl4ZWxzPTM5NCI+CiA8
L2hlYWQ+CiA8c3R5bGU+CiAgIGRpdiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1w
YXRoLXNoYXBlLTAwNC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFw
ZS0wMDQtZXhwZWN0ZWQuaHRtbAppbmRleCBlYzhmOTQxMDc5NTEzOGY3YTM0OTBkN2E0MTY5YjVl
YmQ1ZTM3NDc0Li4xMGY0NTdiOTExODRmMTAxMzA2ODlhMjczMDVmYzJkZDM2NmUyODMyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwNC1leHBlY3RlZC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1t
YXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4cGVjdGVkLmh0bWwKQEAgLTks
MTQgKzksMjMgQEAKICAgICB3aWR0aDogMTAwcHg7CiAgICAgaGVpZ2h0OiAxMDBweDsKICAgfQot
ICAjcmVmIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKworICAjcmVmLCAjYWN0dWFs
IHsKICAgICBjbGlwLXBhdGg6IHBhdGgobm9uemVybywgIk0gMjAgMjAgQSAyNSAxMiAwIDAgMSA4
MCAyMCwgYSAzMyAzMyAxMjAgMSAxIC00MCA1MCwgQSAyMCAyNSAwIDAgMCAyMCAyMCIpOwogICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgfQorCisgICNyZWYgeworICAgIGJhY2tncm91bmQtY29s
b3I6IHJlZDsKKyAgfQorCisgICNhY3R1YWwgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVu
OworICB9CiA8L3N0eWxlPgogPGJvZHk+CiAgIDxwPllvdSBzaG91bGQgc2VlIG5vIHJlZC48L3A+
CiAgIDxkaXYgaWQ9InJlZiI+PC9kaXY+CisgIDxkaXYgaWQ9ImFjdHVhbCI+PC9kaXY+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2NsaXAtcGF0aC1zaGFwZS1wYXJz
aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1tYXNraW5nL3BhcnNpbmcvY2xpcC1wYXRoLXNoYXBlLXBhcnNpbmctZXhw
ZWN0ZWQudHh0CmluZGV4IGU5NGFlZThiNmI0Y2IwNGY3YWZlODJhZDY1YjNjMTQ4YmM0MTEyNWYu
LmUwNTgwZWRmYzFkOGVmMzI3NzViNWQ5NmYzODdlZTVlN2E0N2EzMGQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5n
L3BhcnNpbmcvY2xpcC1wYXRoLXNoYXBlLXBhcnNpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL3Bh
cnNpbmcvY2xpcC1wYXRoLXNoYXBlLXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDI0ICsxLDI0
IEBACiAKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAwcHggMHB4LCBs
aW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9u
b3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIi
Ci1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGV2ZW5vZGQgZnJvbSAwcHggMHB4
LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2Vy
dF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVl
ICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKG5vbnplcm8gZnJvbSAwcHgg
MHB4LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFz
c2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZh
bHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKCAgZnJvbSAwcHggICAg
MHB4LCBsaW5lICB0byAxMHB4ICAxMHB4ICAgICApIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxs
b3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFl
bSA1MCUsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUg
YXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQg
dmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoRXZlbk9kZCBmcm9t
IDBweCAwUHgsIENMT1NFKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25v
dF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIK
LUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxY2ggNTBweCwgbGluZSB0
byAxMHJlbSAxMHZoKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9l
cXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZB
SUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxY2ggLTUwcHgsIGxpbmUgdG8g
LTEwJSAxMnB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVh
bHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwg
ZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIG1vdmUgYnkgMTBw
eCA1cHgsIGxpbmUgYnkgMjBweCA0MCUsIGNsb3NlKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkg
dmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2Fs
bG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAx
MHB4IDEwcHgsIGhsaW5lIGJ5IDEwcHgsIHZsaW5lIHRvIDVyZW0pIiBzaG91bGQgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBn
b3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShmcm9tIDEwcHggMTBweCwgdmxpbmUgYnkgNSUsIGhsaW5lIHRvIDF2dykiIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUg
c2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0g
InNoYXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEwcmVtIDElKSIg
c2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5
IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xp
cC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUwcHggMjBweCB2aWEg
MTByZW0gMXB4IDIwdmggMWNoKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0
X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUg
IiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1
cnZlIGJ5IDUwcHggMjBweCB2aWEgMTByZW0gMXB4IDIwdmggMWNoKSIgc2hvdWxkIHNldCB0aGUg
cHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQg
Z290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hh
cGUoZnJvbSAxMHB4IDEwcHgsIHNtb290aCB0byA1MHB4IDIwcHggdmlhIDEwcmVtIDElKSIgc2hv
dWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNo
b3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1w
YXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIHNtb290aCB0byA1MHB4IDFwdCkiIHNob3Vs
ZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91
bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0
aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBhcmMgdG8gNTBweCAxcHQgb2YgMTBweCAxMHB4
KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3Bl
cnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsn
Y2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGFyYyB0byA1MHB4IDFwdCBvZiAx
MHB4IDEwcHggc21hbGwgcm90YXRlIDBkZWcpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1
ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dl
ZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwJSAx
cmVtLCBhcmMgdG8gNTBweCAxcHQgb2YgMjAlIGN3IGxhcmdlIHJvdGF0ZSAyNWRlZykiIHNob3Vs
ZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91
bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0
aCddID0gInNoYXBlKGV2ZW5vZGQgZnJvbSAwcHggMHB4LCBjbG9zZSkiIHNob3VsZCBzZXQgdGhl
IHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0
IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNo
YXBlKGZyb20gMHB4IDBweCwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9w
ZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShldmVub2RkIGZy
b20gMHB4IDBweCwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShub256ZXJvIGZyb20gMHB4
IDBweCwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQor
UEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZSggIGZyb20gMHB4ICAgIDBweCwgbGlu
ZSAgdG8gMTBweCAgMTBweCAgICAgKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BB
U1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxZW0gNTAlLCBsaW5lIHRvIDEw
cHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2Ns
aXAtcGF0aCddID0gInNoYXBlKEV2ZW5PZGQgZnJvbSAwcHggMFB4LCBDTE9TRSkiIHNob3VsZCBz
ZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBl
KGZyb20gMWNoIDUwcHgsIGxpbmUgdG8gMTByZW0gMTB2aCkiIHNob3VsZCBzZXQgdGhlIHByb3Bl
cnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMWNoIC01
MHB4LCBsaW5lIHRvIC0xMCUgMTJweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQ
QVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBtb3ZlIGJ5
IDEwcHggNXB4LCBsaW5lIGJ5IDIwcHggNDAlLCBjbG9zZSkiIHNob3VsZCBzZXQgdGhlIHByb3Bl
cnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAx
MHB4LCBobGluZSBieSAxMHB4LCB2bGluZSB0byA1cmVtKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVy
dHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEw
cHgsIHZsaW5lIGJ5IDUlLCBobGluZSB0byAxdncpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwg
Y3VydmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5
IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4
LCBjdXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEwcmVtIDFweCAyMHZoIDFjaCkiIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZy
b20gMTBweCAxMHB4LCBjdXJ2ZSBieSA1MHB4IDIwcHggdmlhIDEwcmVtIDFweCAyMHZoIDFjaCki
IHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCdd
ID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBzbW9vdGggdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAx
JSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0
aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBzbW9vdGggdG8gNTBweCAxcHQpIiBzaG91bGQg
c2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShmcm9tIDEwcHggMTBweCwgYXJjIHRvIDUwcHggMXB0IG9mIDEwcHggMTBweCkiIHNob3VsZCBz
ZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBl
KGZyb20gMTBweCAxMHB4LCBhcmMgdG8gNTBweCAxcHQgb2YgMTBweCAxMHB4IHNtYWxsIHJvdGF0
ZSAwZGVnKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xp
cC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMCUgMXJlbSwgYXJjIHRvIDUwcHggMXB0IG9mIDIwJSBj
dyBsYXJnZSByb3RhdGUgMjVkZWcpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFT
UyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShldmVub2RkIGZyb20gMHB4IDBweCwgY2xv
c2UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQogUEFTUyBlLnN0eWxlWydjbGlwLXBh
dGgnXSA9ICJzaGFwZShldmVub2RkIGZyb20gMHB4IDBweCwgY2xvc2UgcGF0aCkiIHNob3VsZCBu
b3Qgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQogUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJz
aGFwZShub256ZXJvLCBmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIG5v
dCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCiBQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNo
YXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEwcmVtKSIgc2hvdWxk
IG5vdCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCg==
</data>
<flag name="commit-queue"
          id="486625"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457901</attachid>
            <date>2022-04-19 08:56:20 -0700</date>
            <delta_ts>2022-04-19 10:38:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238371-20220419185617.patch</filename>
            <type>text/plain</type>
            <size>97472</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0MDhiYzRlZDIxNmNh
YWM1ZWVlZTUyMDkyNWQ3NzYzOGU0M2QwZC4uYzhmMjI3MTg0NDc0MGQ5Njc0Mjg0YzY3ODkyNGUx
ZjgwODQyODU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0xOSAgTm9h
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFk
ZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBDU1Mgc2hhcGUoKSBieSBpbnRyb2R1Y2luZyBzaGFwZSBzZWdtZW50IGFuZCBCYXNpY1NoYXBl
U2hhcGUuCisgICAgICAgIFNoYXBlU2hhcGUgaXMgYSB2ZWN0b3Igb2Ygc2hhcGUgc2VnbWVudHMs
IHdoZXJlIGVhY2ggc2VnbWVudCBibGVuZHMgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgVGhlIHNo
YXBlIHVsdGltYXRlbHkgY3JlYXRlcyBhbiBTVkdQYXRoU291cmNlIHRvIGNvbnZlcnQgdGhlIHJl
c3BvbnNpdmUgc2hhcGUsIHdoaWNoCisgICAgICAgIGlzIGJhc2VkIG9uIExlbmd0aCB2YWx1ZXMs
IHRvIGFuIGFic29sdXRlIFBhdGggb2JqZWN0IHRoYXQgY2FuIGJlIGRyYXduLgorCisgICAgICAg
IFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXNoYXBlcy0yLyNzaGFwZS1mdW5jdGlv
bgorCisgICAgICAgIFVuc2tpcHBlZCBzZXZlcmFsIHJlbGV2YW50IFdQVHMuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgICAgICBOZXcgZmlsZXMg
YWRkZWQKKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZhbHVlRm9yQmFzaWNTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9MZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpiYXNpY1NoYXBlRm9yVmFsdWUpOgor
ICAgICAgICAgICAgICAgIEFkZGVkIHRoZSBCYXNpY1NoYXBlU2hhcGUgdHlwZQorCisgICAgICAg
ICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Q1NTQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2lj
U2hhcGVTaGFwZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6
CisgICAgICAgICAgICAgICAgQWRkZWQgdGhlIENTU0Jhc2ljU2hhcGVTaGFwZQorCisgICAgICAg
ICogY3NzL0NTU1NoYXBlU2VnbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
aGFwZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NT
U2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudDo6Q1NTU2hh
cGVTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OnRhcmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6YXJndW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OmFmZmluaXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjphcHBlbmRBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpDU1NTaGFwZVNlZ21l
bnRWYWx1ZSk6CisgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB0byBkbyB3aXRoIHRoZSBzZWdt
ZW50IG9mIHRoZSBzaGFwZSB3aGlsZSBpbiBDU1Mgc3BhY2UsCisgICAgICAgICAgICAgICAgaW5j
bHVkaW5nIHNlcmlhbGl6YXRpb24gZm9yIGdldENvbXB1dGVkU3R5bGUoKQorCisgICAgICAgICog
Y3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzU2hhcGVTZWdtZW50VmFsdWUgY29uc3Qp
OgorICAgICAgICAgICAgICAgIENTU1NoYXBlU2VnbWVudCBpcyBhIHR5cGUgb2YgdmFsdWUKKwor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAgICAgICAgIE5ldyBr
ZXl3b3JkcyBmb3Igc2hhcGUoKQorCisgICAgICAgICogY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9u
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFBvaW50VG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0FyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6dG9DU1NB
cmdzPExlbmd0aFBvaW50Pik6CisgICAgICAgIChXZWJDb3JlOjp0b0NTU1NoYXBlU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpzZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpmcm9t
Q1NTU2hhcGVTZWdtZW50KToKKyAgICAgICAgKiBjc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmg6
IEFkZGVkLgorICAgICAgICAgICAgICAgIENvbnZlcnRpbmcgc2hhcGUgc2VnbWVudHMgdG8vZnJv
bSBDU1Mgc3BhY2UKKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNoYXBlU2VnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVC
YXNpY1NoYXBlKToKKyAgICAgICAgICAgICAgICBQYXJzZSBhIHNoYXBlIHByb3BlcnR5CisKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OnZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzaWNTaGFwZVNlZ21lbnQ6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6YmxlbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFyY1RvU2hhcGVTZWdWYWx1
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVu
dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6Y3Jl
YXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50OjpCYXNp
Y1NoYXBlU2VnbWVudCk6CisgICAgICAgICAgICAgICAgQmxlbmRpbmcsIGNvbXBhcmluZyBhbmQg
Y29udmVydGluZyB0byBhYnNvbHV0ZSBwYXRoCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhCb3g6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhC
b3g6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1Bh
dGhQb2xpY3k6OmlzS2V5TnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVNlZ21lbnRzUGF0
aFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU2hh
cGVTZWdtZW50c1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpCYXNp
Y1NoYXBlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpwYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6YmxlbmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZVNoYXBlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2V0V2luZFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpmcm9tIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlU2hhcGU6OmF0IGNvbnN0KToKKyAgICAgICAgICAgICAgICBBZGQgQmFz
aWNTaGFwZVNoYXBlCisKIDIwMjItMDQtMTggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgUGxhdGZvcm1NZWRpYUVuZ2luZUNsYXNzTmFt
ZSBtYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODBiYmVhOGU3MjM0ZjA1NWVmZDZlMzQwMDc1
MGIzN2YzMzE3OGNhZS4uNDAxMTNhOGU2MzkzYWQ0Y2JhNmE4ODBjYWVhMmJhYWNkNDJhYzQ0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC01NTQsNiArNTU0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9DU1NSdWxlTGlzdC5oCiAgICAgY3NzL0NTU1Nl
bGVjdG9yLmgKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKyAgICBjc3MvQ1NTU2hhcGVTZWdt
ZW50LmgKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCiAgICAgY3NzL0NTU1N0eWxlUnVs
ZS5oCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtNTgwLDYgKzU4MSw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBjc3MvTWVkaWFRdWVyeUV4cHJlc3Np
b24uaAogICAgIGNzcy9NZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5oCiAgICAgY3NzL1JlY3QuaAor
ICAgIGNzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMuaAogICAgIGNzcy9TdHlsZUNvbG9yLmgKICAg
ICBjc3MvU3R5bGVQcm9wZXJ0aWVzLmgKICAgICBjc3MvU3R5bGVSdWxlLmgKQEAgLTE4ODcsNiAr
MTg4OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmgKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUlu
Zm8uaAogCisgICAgcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmgKICAgICByZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAogICAgIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRh
LmgKICAgICByZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAw
YWYzZDA2YTViMGJiYzY4ZmMwMTEzM2JjY2ZlMWYyY2Q5NzBlODllLi4xNWFhODI2MjY5YzNjODc4
NDZhZjVmYmQ0MzVlMDNjYjJiOGVjMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNzcxLDYgKzc3MSw3
IEBAIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKIGNzcy9DU1NTZWxlY3Rvci5jcHAKIGNz
cy9DU1NTZWxlY3Rvckxpc3QuY3BwCiBjc3MvQ1NTU2hhZG93VmFsdWUuY3BwCitjc3MvQ1NTU2hh
cGVTZWdtZW50LmNwcAogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCiBjc3MvQ1NTU3R5bGVS
dWxlLmNwcAogY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC04MTIsNiArODEzLDcgQEAgY3NzL1By
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcAogY3NzL1NlbGVjdG9yRmls
dGVyLmNwcAorY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAKIGNzcy9TdHlsZUNvbG9yLmNw
cAogY3NzL1N0eWxlTWVkaWEuY3BwCiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMjQ0OSw2
ICsyNDUxLDcgQEAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAKIHJlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwCiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3Bw
CiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCityZW5kZXJpbmcvc3R5bGUvQmFzaWNT
aGFwZVNlZ21lbnQuY3BwCiByZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5jcHAKIHJlbmRlcmlu
Zy9zdHlsZS9Db250ZW50RGF0YS5jcHAKIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYTYxNzYzOWRmNzIwNmZjNDg0NTcwNDhlZTQ0YmE4OTQzYzUyYzdhMi4uZjU0MTkwODIzN2Q2
MTU0YmU0MjBlZDY3YzkwODVlNjQ1OWQwNDU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ1Miw2ICs0NDUyLDEwIEBACiAJ
CUNBM0JGNjdFMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EzQkY2N0QxMEQ5OUJBRTAwRTZD
RTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0E2QzE1MzAyMjBCOThDQzAwNTVDQkZDIC8qIEpTVmFsdWVJbldy
YXBwZWRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMUFFM0I4MUZCODBFQUUwMEY1RUZCMiAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0E3RTlC
NDkyNDM2MURDNTAwNEU4OUY2IC8qIENvbnRlbnRmdWxQYWludENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBN0U5QjQ3MjQzNjFEQzUwMDRF
ODlGNiAvKiBDb250ZW50ZnVsUGFpbnRDaGVja2VyLmggKi87IH07CisJCUNBODE2Q0I2Mjc3ODQ4
MjAwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0E4MTZDQjMyNzc4NDgxRTAwMkJEM0M2IC8qIEJhc2lj
U2hhcGVTZWdtZW50LmggKi87IH07CisJCUNBODE2Q0I5Mjc3ODQ4MkUwMDJCRDNDNiAvKiBDU1NT
aGFwZVNlZ21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENBODE2Q0I4Mjc3ODQ4MkUwMDJCRDNDNiAvKiBDU1NTaGFwZVNlZ21lbnQuaCAqLzsgfTsK
KwkJQ0E4MTZDQkMyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTgxNkNCQTI3
Nzg5QUEyMDAyQkQzQzYgLyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmNwcCAqLzsgfTsKKwkJQ0E4
MTZDQkQyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0E4MTZDQkIyNzc4OUFBNzAw
MkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oICovOyB9OwogCQlDQUU5RjkxMDE0NjQ0
MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIwIC8qIENT
U0FzcGVjdFJhdGlvVmFsdWUuaCAqLzsgfTsKIAkJQ0IzOEZENTIxQ0NGOTM5NDAwNTkyQTNGIC8q
IEpTUGVyZm9ybWFuY2VFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0IzOEZENEUxQ0NGOTM3RTAwNTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VFbnRy
eS5oICovOyB9OwogCQlDQjM4RkQ1QjFDRDIzMjVCMDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDQjM4RkQ1OTFDRDIzMTQ1MDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nLmggKi87IH07CkBAIC0xNTk0Nyw2ICsxNTk1MSw3IEBACiAJCUNBMDkxRDg2MjNDRjkwNzgw
MEFENDM0NiAvKiBTdHlsZUltYWdlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlSW1h
Z2VTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTA5MUQ4OTIzQ0Y5MDg4
MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUltYWdlU2V0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMTYzNURDMjA3MkU3NjkwMEU3RDJD
RSAvKiBSZWZlcnJlclBvbGljeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZWZlcnJlclBvbGljeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNB
MTY2Q0NCMjc4MDY4N0QwMDQ1MjJCMyAvKiBDU1NTaGFwZVNlZ21lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ1NTU2hhcGVTZWdtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0ExOTMzRDUyNDA3RDY0MDAwNzEyNDFBIC8qIFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VQYWludFRpbWluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDQTE5MzNEODI0MDdFRENGMDA3MTI0MUEgLyogUGVyZm9ybWFuY2VQYWlu
dFRpbWluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGVyZm9ybWFuY2VQYWludFRpbWlu
Zy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0E0QUFCMjU0MTZFM0MwMDZD
REFFMiAvKiBJbWFnZVJlc29sdXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW1hZ2VSZXNvbHV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE1OTYyLDYgKzE1OTY3LDExIEBACiAJCUNBNkMxNTM4MjIwRDFFQjMwMDU1Q0JGQyAvKiBK
U0lEQkN1cnNvcldpdGhWYWx1ZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0lEQkN1cnNvcldpdGhWYWx1ZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNBN0U5QjQ3MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFp
bnRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRmdWxQ
YWludENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0E3RTlCNDgyNDM2
MURDNTAwNEU4OUY2IC8qIENvbnRlbnRmdWxQYWludENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudGZ1bFBhaW50Q2hlY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNBODE2Q0IzMjc3ODQ4MUUwMDJCRDNDNiAvKiBCYXNp
Y1NoYXBlU2VnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNpY1No
YXBlU2VnbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCNDI3Nzg0
ODFGMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1NoYXBlU2VnbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCQTI3Nzg5QUEyMDAyQkQzQzYgLyog
U2hhcGVTZWdtZW50RnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRGdW5jdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcGVTZWdtZW50RnVuY3Rpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBRTlGOTBEMTQ2NDQxRjAwMEMyNDVC
MCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENTU0FzcGVjdFJhdGlvVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDQUU5RjkwRTE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNCMzhGRDRBMUNDQ0YyREQwMDU5MkEzRiAv
KiBQZXJmb3JtYW5jZUVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBlcmZvcm1hbmNlRW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Mjk2ODgsNiArMjk2OTgsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRkJENkFGODIxNUVGMjFB
MzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmNwcCAqLywKIAkJCQlGQkQ2QUY4MzE1RUYyMUEzMDA4
QjcxMTAgLyogQmFzaWNTaGFwZXMuaCAqLywKKwkJCQlDQTgxNkNCNDI3Nzg0ODFGMDAyQkQzQzYg
LyogQmFzaWNTaGFwZVNlZ21lbnQuY3BwICovLAorCQkJCUNBODE2Q0IzMjc3ODQ4MUUwMDJCRDND
NiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oICovLAogCQkJCTBGMjgzQTkxMjM1NjMxMjYwMDQ3OTRD
QSAvKiBCb3JkZXJEYXRhLmNwcCAqLywKIAkJCQlCQzVFQjVFMDBFODFCRTg3MDBCMjU5NjUgLyog
Qm9yZGVyRGF0YS5oICovLAogCQkJCUJDNUVCNURBMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJW
YWx1ZS5oICovLApAQCAtMzE5NjEsNiArMzE5NzMsOCBAQAogCQkJCUU0QzE3ODk2MEVFNjkwMzgw
MDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCAqLywKIAkJCQlBODBFNkNDQTBBMTk4OUNBMDA3
RkI4QzUgLyogQ1NTU2hhZG93VmFsdWUuY3BwICovLAogCQkJCUE4MEU2Q0JFMEExOTg5Q0EwMDdG
QjhDNSAvKiBDU1NTaGFkb3dWYWx1ZS5oICovLAorCQkJCUNBMTY2Q0NCMjc4MDY4N0QwMDQ1MjJC
MyAvKiBDU1NTaGFwZVNlZ21lbnQuY3BwICovLAorCQkJCUNBODE2Q0I4Mjc3ODQ4MkUwMDJCRDND
NiAvKiBDU1NTaGFwZVNlZ21lbnQuaCAqLywKIAkJCQk3Q0RFOEVCQzFGMTkzQkM1MDAxNjhGRTcg
LyogQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgKi8sCiAJCQkJQTgwRTZFMEQwQTE5OTExQzAwN0ZC
OEM1IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaCAqLywKIAkJCQkxNDIwMTFBRTBBMDAzMTE3MDA4
MzAzRjkgLyogQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwgKi8sCkBAIC0zMjA5Niw2ICszMjExMCw4
IEBACiAJCQkJNDNCODVFRDYxOENCRUM5NzAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NB
bmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5pbiAqLywKIAkJCQkyNkFBMEY5QTE4RDI5NzNEMDA0
MTkzODEgLyogU2VsZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5pbiAqLywKIAkJCQk0MzEwN0JF
MTE4Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggKi8sCisJCQkJQ0E4
MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgKi8sCisJ
CQkJQ0E4MTZDQkIyNzc4OUFBNzAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oICov
LAogCQkJCTk0MTgyNzg4MUQ4QjI0MjIwMDQ5Mjc2NCAvKiBTdHlsZUNvbG9yLmNwcCAqLywKIAkJ
CQk5NDE4Mjc4OTFEOEIyNDIyMDA0OTI3NjQgLyogU3R5bGVDb2xvci5oICovLAogCQkJCTBGRjUw
MjZFMTAyQkE5NjYwMDY2RjM5QSAvKiBTdHlsZU1lZGlhLmNwcCAqLywKQEAgLTMzODU2LDYgKzMz
ODcyLDcgQEAKIAkJCQk3MTU2QkNBMTIxQ0EzNTBGMDA1MzQzOTcgLyogQmFzaWNFZmZlY3RUaW1p
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCRDZBRjhBMTVFRjI1REYwMDhCNzExMCAvKiBCYXNp
Y1NoYXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4QzE1RUYyNjA0MDA4
QjcxMTAgLyogQmFzaWNTaGFwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNBODE2Q0I2Mjc3ODQ4
MjAwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIy
M0EzMjgwOUJCQTdEMDAwNjdDQzUzIC8qIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NTAzMUIzRDBBNDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5sb2FkRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTI0MEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRp
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDM0Nyw2ICszNDM2NCw3IEBACiAJCQkJRTRD
MTc4OUIwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTRERTVDOEUxRDgwODAyNzAwMTY0RjJBIC8qIENTU1NlbGVjdG9yUGFyc2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODBFNkNFODBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU2hhZG93VmFs
dWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNBODE2Q0I5Mjc3ODQ4MkUwMDJCRDNDNiAvKiBDU1NT
aGFwZVNlZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNTM4QTJBMjZGMDEwNDIwMDk2NUZD
OCAvKiBDU1NTa2V3LmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTUzOEEyQjI2RjAxMDQ1MDA5NjVG
QzggLyogQ1NTU2tld1guaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNTM4QTJDMjZGMDEwNDgwMDk2
NUZDOCAvKiBDU1NTa2V3WS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzQ4NCw2ICszNzUwMiw3IEBA
CiAJCQkJRkQ0NUE5NEYxNzVEM0YzRTAwQzIxRUM4IC8qIFNoYXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDQ1QTk1QjE3NUQ0MUVFMDBDMjFFQzggLyogU2hhcGVJbnRlcnZhbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQ0NUE5NTIxNzVEM0YzRTAwQzIxRUM4IC8qIFNoYXBlT3V0c2lkZUluZm8u
aCBpbiBIZWFkZXJzICovLAorCQkJCUNBODE2Q0JEMjc3ODlBQUQwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMUFGMTUwMTY1NkYxNTEwMEM2
RDRGNyAvKiBTaGFwZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRDlGMEZDMTIxMjIwMjlC
MDA1RDhGRDQgLyogU2hhcmVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOTU0RTBCNEVE
Q0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTM5MDMwLDYg
KzM5MDQ5LDcgQEAKIAkJCQk0M0I4NUVENDE4Q0JFQzUyMDBFMzFBRjQgLyogU2VsZWN0b3JQc2V1
ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTI2QUEwRjlFMThEMkExOEIwMDQxOTM4MSAvKiBTZWxlY3RvclBzZXVkb0VsZW1lbnRUeXBlTWFw
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRDU4REZEMUY5NTY1QTgwMDExMjc5MSAvKiBTZXR0
aW5ncy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDQTgxNkNCQzI3Nzg5QUFEMDAyQkQzQzYgLyog
U2hhcGVTZWdtZW50RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxREYyRDVFMjdB
OTQ1MkEwMEYyNUEyMSAvKiBTaGFyZWRWaWRlb0ZyYW1lSW5mby5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUzOEYxMEE4MUY5MDIyQTQwMDUxMDJDRSAvKiBTb2Z0TGlua0xpYnhzbHQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0RDOEI1QUExODA0N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNT
aGFwZUZ1bmN0aW9ucy5jcHAKaW5kZXggOWRmMmNmZjc5NTdlNDVkODliNzIxYTcxZTc1ZTI4ZDg1
YTVlNzlhNy4uMTc3MjIyNmFmZWI3M2Q4NDQ5NTk3ZDZhZGUzNjgzZTY3YjFkNWNhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcApAQCAtMzAsMTMgKzMwLDE2
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQmFzaWNTaGFwZUZ1bmN0aW9ucy5o
IgogCisjaW5jbHVkZSAiQmFzaWNTaGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJCYXNpY1NoYXBl
cy5oIgogI2luY2x1ZGUgIkNTU0Jhc2ljU2hhcGVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZl
VmFsdWVNYXBwaW5ncy5oIgorI2luY2x1ZGUgIkNTU1NoYXBlU2VnbWVudC5oIgogI2luY2x1ZGUg
IkNTU1ZhbHVlUG9vbC5oIgogI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtLmgiCisjaW5jbHVkZSAiU2hhcGVTZWdt
ZW50RnVuY3Rpb25zLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTU0LDYgKzE1Nywy
MiBAQCBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlRm9yQmFzaWNTaGFwZShjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJhc2ljUwogICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBX
VEZNb3ZlKGluc2V0VmFsdWUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBCYXNp
Y1NoYXBlOjpUeXBlOjpTaGFwZTogeworICAgICAgICBhdXRvJiBzaGFwZSA9IGRvd25jYXN0PEJh
c2ljU2hhcGVTaGFwZT4oYmFzaWNTaGFwZSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICBhdXRvIHNpemUgPSBzaGFw
ZS5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAg
ICAgICAgICAgcmVzdWx0LT5hcHBlbmQodG9DU1NTaGFwZVNlZ21lbnQoc3R5bGUsIHNoYXBlLmF0
KGkpKSk7CisKKyAgICAgICAgYXV0byBmcm9tID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKFBh
aXI6OmNyZWF0ZSgKKyAgICAgICAgICAgIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzaGFwZS5m
cm9tKCkueCgpLCBzdHlsZSksCisgICAgICAgICAgICBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c2hhcGUuZnJvbSgpLnkoKSwgc3R5bGUpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpE
b05vdENvYWxlc2NlKSk7CisKKyAgICAgICAgYXV0byBzaGFwZVZhbHVlID0gQ1NTQmFzaWNTaGFw
ZVNoYXBlOjpjcmVhdGUoV1RGTW92ZShmcm9tKSwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAg
c2hhcGVWYWx1ZS0+c2V0V2luZFJ1bGUoc2hhcGUud2luZFJ1bGUoKSk7CisgICAgICAgIGJhc2lj
U2hhcGVWYWx1ZSA9IFdURk1vdmUoc2hhcGVWYWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICB9CiAKICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGJhc2ljU2hhcGVW
YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTE2NCw2ICsxODMsMTIgQEAgc3RhdGljIExlbmd0
aCBjb252ZXJ0VG9MZW5ndGgoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVy
c2lvbkRhdGEsIGMKICAgICByZXR1cm4gdmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVn
ZXJDb252ZXJzaW9uIHwgRml4ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8
IENhbGN1bGF0ZWRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CiB9CiAKK3N0YXRpYyBMZW5n
dGhQb2ludCBjb252ZXJ0VG9MZW5ndGhQb2ludChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiBjb252ZXJzaW9uRGF0YSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoreworICAgIGF1dG8m
IHBhaXIgPSAqKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkucGFpclZhbHVlKCkp
OworICAgIHJldHVybiB7IGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci5maXJz
dCgpKSwgY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCBwYWlyLnNlY29uZCgpKSB9Owor
fQorCiBzdGF0aWMgTGVuZ3RoU2l6ZSBjb252ZXJ0VG9MZW5ndGhTaXplKGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBDU1NQcmltaXRpdmVWYWx1
ZSogdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTI5Nyw2ICszMjIsMjAgQEAgUmVmPEJh
c2ljU2hhcGU+IGJhc2ljU2hhcGVGb3JWYWx1ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiBjb252ZXJzaW9uRGEKICAgICAgICAgYmFzaWNTaGFwZSA9IFdURk1vdmUocGF0aCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIENTU0Jhc2ljU2hhcGU6OkNTU0Jhc2ljU2hh
cGVTaGFwZVR5cGU6IHsKKyAgICAgICAgYXV0byYgc2hhcGVWYWx1ZSA9IGRvd25jYXN0PENTU0Jh
c2ljU2hhcGVTaGFwZT4oYmFzaWNTaGFwZVZhbHVlKTsKKyAgICAgICAgY29uc3QgYXV0byYgY3Nz
U2VnbWVudHMgPSBzaGFwZVZhbHVlLnNlZ21lbnRzKCk7CisgICAgICAgIFZlY3RvcjxSZWY8QmFz
aWNTaGFwZVNlZ21lbnQ+PiBzZWdtZW50cyhjc3NTZWdtZW50cy5sZW5ndGgoKSk7CisgICAgICAg
IHN0ZDo6dHJhbnNmb3JtKHN0ZDo6YmVnaW4oY3NzU2VnbWVudHMpLCBzdGQ6OmVuZChjc3NTZWdt
ZW50cyksIHNlZ21lbnRzLmJlZ2luKCksIFsmXSAoY29uc3QgYXV0byYgY3NzU2VnbWVudCkgewor
ICAgICAgICAgICAgcmV0dXJuIGZyb21DU1NTaGFwZVNlZ21lbnQoY29udmVyc2lvbkRhdGEsIGRv
d25jYXN0PENTU1NoYXBlU2VnbWVudD4oY3NzU2VnbWVudC5nZXQoKSkpOworICAgICAgICB9KTsK
KworICAgICAgICBhdXRvIHNoYXBlID0gQmFzaWNTaGFwZVNoYXBlOjpjcmVhdGUoY29udmVydFRv
TGVuZ3RoUG9pbnQoY29udmVyc2lvbkRhdGEsIHNoYXBlVmFsdWUuZnJvbSgpKSwgV1RGTW92ZShz
ZWdtZW50cykpOworICAgICAgICBzaGFwZS0+c2V0V2luZFJ1bGUoc2hhcGVWYWx1ZS53aW5kUnVs
ZSgpKTsKKworICAgICAgICBiYXNpY1NoYXBlID0gV1RGTW92ZShzaGFwZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gYmFzaWNTaGFwZS5yZWxlYXNlTm9uTnVs
bCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKaW5kZXggODllMDlmNTcyYzM1
MTYzODNmN2IyNjJkNTQwYzAzZGUwMmU4NDg1MC4uODVmNjc2ZmU2MTY0YWEwYjQwODg4MzFkMDU2
NDg4MzJlNTAwZmI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hh
cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCkBAIC0y
MjIsNiArMjIyLDM4IEBAIGJvb2wgQ1NTQmFzaWNTaGFwZVBhdGg6OmVxdWFscyhjb25zdCBDU1NC
YXNpY1NoYXBlJiBvdGhlclNoYXBlKSBjb25zdAogICAgIHJldHVybiB3aW5kUnVsZSgpID09IG90
aGVyU2hhcGVQYXRoLndpbmRSdWxlKCkgJiYgcGF0aERhdGEoKSA9PSBvdGhlclNoYXBlUGF0aC5w
YXRoRGF0YSgpOwogfQogCitDU1NCYXNpY1NoYXBlU2hhcGU6OkNTU0Jhc2ljU2hhcGVTaGFwZShS
ZWY8Q1NTVmFsdWU+JiYgZnJvbSwgUmVmPENTU1ZhbHVlTGlzdD4mJiBzZWdtZW50cykKKyAgICA6
IG1fc2VnbWVudHMoV1RGTW92ZShzZWdtZW50cykpLCBtX2Zyb20oV1RGTW92ZShmcm9tKSkKK3sg
Cit9CisKK2Jvb2wgQ1NTQmFzaWNTaGFwZVNoYXBlOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFw
ZSYgb3RoZXJTaGFwZSkgY29uc3QKK3sKKyAgICBpZiAoIWlzPENTU0Jhc2ljU2hhcGVTaGFwZT4o
b3RoZXJTaGFwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8mIG90aGVyU2hh
cGVTaGFwZSA9IGRvd25jYXN0PENTU0Jhc2ljU2hhcGVTaGFwZT4ob3RoZXJTaGFwZSk7CisgICAg
cmV0dXJuIHdpbmRSdWxlKCkgPT0gb3RoZXJTaGFwZVNoYXBlLndpbmRSdWxlKCkKKyAgICAgICAg
JiYgZnJvbSgpID09IG90aGVyU2hhcGVTaGFwZS5mcm9tKCkKKyAgICAgICAgJiYgc2VnbWVudHMo
KS5lcXVhbHMob3RoZXJTaGFwZVNoYXBlLnNlZ21lbnRzKCkpOworfQorCitTdHJpbmcgQ1NTQmFz
aWNTaGFwZVNoYXBlOjpjc3NUZXh0KCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgaWYgKHdpbmRSdWxlKCkgPT0gV2luZFJ1bGU6OkV2ZW5PZGQpCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJzaGFwZShldmVub2RkICIpOworICAgIGVsc2UKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoInNoYXBlKCIpOworCisgICAgYXV0byogcGFpciA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPihmcm9tKCkpLnBhaXJWYWx1ZSgpOworICAgIEFTU0VSVChwYWlyKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCgiZnJvbSAiLCBwYWlyLT5jc3NUZXh0KCksICIsICIpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKHNlZ21lbnRzKCkuY3NzVGV4dCgpLCAiKSIpOworCisgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKK30KKwogc3RhdGljIFN0cmluZyBidWlsZFBvbHlnb25TdHJpbmcoY29u
c3QgV2luZFJ1bGUmIHdpbmRSdWxlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcG9pbnRzKQogewog
ICAgIEFTU0VSVCghKHBvaW50cy5zaXplKCkgJSAyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1No
YXBlcy5oCmluZGV4IDEwNWM0NjA5NDFkNjc0NGU1N2JlN2EzNWQ2YjA0ZmM3M2ZhYmJiZWMuLjE2
MzA2ZGYyOWViOTNhOWRkMzM5ZTBjMmZhNjE0OGNjYTgyNDgzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCYXNpY1NoYXBlcy5oCkBAIC0zOCw2ICszOCwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKK2NsYXNzIENTU1NoYXBlU2VnbWVudDsKK2NsYXNz
IENTU1ByaW1pdGl2ZVZhbHVlUGFpcjsKK2NsYXNzIENTU1ZhbHVlOworY2xhc3MgQ1NTVmFsdWVM
aXN0OwogY2xhc3MgU1ZHUGF0aEJ5dGVTdHJlYW07CiAKIGNsYXNzIENTU0Jhc2ljU2hhcGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxDU1NCYXNpY1NoYXBlPiB7CkBAIC00Nyw3ICs1MSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgQ1NTQmFzaWNTaGFwZUNpcmNsZVR5cGUsCiAgICAgICAgIENTU0Jhc2ljU2hh
cGVFbGxpcHNlVHlwZSwKICAgICAgICAgQ1NTQmFzaWNTaGFwZUluc2V0VHlwZSwKLSAgICAgICAg
Q1NTQmFzaWNTaGFwZVBhdGhUeXBlCisgICAgICAgIENTU0Jhc2ljU2hhcGVQYXRoVHlwZSwKKyAg
ICAgICAgQ1NTQmFzaWNTaGFwZVNoYXBlVHlwZQogICAgIH07CiAKICAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0ID0gMDsKQEAgLTIzMyw2ICsyMzgsMzUgQEAgcHJpdmF0ZToKICAgICBXaW5k
UnVsZSBtX3dpbmRSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8gfTsKIH07CiAKK2NsYXNzIENTU0Jh
c2ljU2hhcGVTaGFwZSBmaW5hbCA6IHB1YmxpYyBDU1NCYXNpY1NoYXBlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPENTU0Jhc2ljU2hhcGVTaGFwZT4gY3JlYXRlKFJlZjxDU1NWYWx1ZT4mJiBm
cm9tLCBSZWY8Q1NTVmFsdWVMaXN0PiYmIHNlZ21lbnRzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTQmFzaWNTaGFwZVNoYXBlKFdURk1vdmUoZnJvbSksIFdURk1vdmUo
c2VnbWVudHMpKSk7CisgICAgfQorCisgICAgY29uc3QgQ1NTVmFsdWVMaXN0JiBzZWdtZW50cygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zZWdtZW50cy5nZXQoKTsKKyAgICB9CisK
KyAgICB2b2lkIHNldFdpbmRSdWxlKFdpbmRSdWxlIHJ1bGUpIHsgbV93aW5kUnVsZSA9IHJ1bGU7
IH0KKyAgICBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0K
KworICAgIGNvbnN0IENTU1ZhbHVlJiBmcm9tKCkgY29uc3QgeyByZXR1cm4gbV9mcm9tLmdldCgp
OyB9CisKK3ByaXZhdGU6CisgICAgQ1NTQmFzaWNTaGFwZVNoYXBlKFJlZjxDU1NWYWx1ZT4mJiBm
cm9tLCBSZWY8Q1NTVmFsdWVMaXN0PiYmKTsKKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIENTU0Jhc2ljU2hhcGVTaGFwZVR5cGU7IH0KKyAgICBTdHJpbmcgY3NzVGV4dCgp
IGNvbnN0IGZpbmFsOworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25z
dCBmaW5hbDsKKworICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IG1fc2VnbWVudHM7CisgICAgUmVmPENT
U1ZhbHVlPiBtX2Zyb207CisgICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFdpbmRSdWxlOjpOb25a
ZXJvIH07Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNkZWZpbmUgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19DU1NfQkFTSUNfU0hBUEVTKFRvVmFsdWVUeXBlTmFtZSkgXApAQCAtMjQ1
LDMgKzI3OSw0IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NTX0JBU0lDX1NIQVBFUyhDU1NC
YXNpY1NoYXBlQ2lyY2xlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfQkFTSUNfU0hBUEVT
KENTU0Jhc2ljU2hhcGVFbGxpcHNlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfQkFTSUNf
U0hBUEVTKENTU0Jhc2ljU2hhcGVQb2x5Z29uKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1Nf
QkFTSUNfU0hBUEVTKENTU0Jhc2ljU2hhcGVQYXRoKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19D
U1NfQkFTSUNfU0hBUEVTKENTU0Jhc2ljU2hhcGVTaGFwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1No
YXBlU2VnbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA4MDUwY2FmYjg1ODQwOTdmZjlhYjhiMGZlYjgz
MDdhZTdkMDY3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFw
ZVNlZ21lbnQuY3BwCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IE5vYW0gUm9zZW50aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKKworI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBD
U1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZU1vdmVUbyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5p
dHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpCit7CisgICAgcmV0dXJuIENTU1No
YXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoTW92ZVRvLCBhZmZpbml0eSwgV1RGTW92ZSh0YXJnZXQp
KTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5l
VG8oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+
JiYgdGFyZ2V0KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKExp
bmVUbywgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21l
bnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvSG9yaXpvbnRhbChDU1NTaGFwZVNlZ21l
bnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB4KQoreworICAgIHJl
dHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3JlYXRlKExpbmVUb0hvcml6b250YWwsIGFmZmlu
aXR5LCBXVEZNb3ZlKHgpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdt
ZW50OjpjcmVhdGVMaW5lVG9WZXJ0aWNhbChDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkg
YWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB5KQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21l
bnRWYWx1ZTo6Y3JlYXRlKExpbmVUb1ZlcnRpY2FsLCBhZmZpbml0eSwgV1RGTW92ZSh5KSk7Cit9
CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1
YmljKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVl
PiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxLCBSZWY8Q1NTVmFsdWU+JiYgcDIpCit7Cisg
ICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb0N1YmljLCBhZmZp
bml0eSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHAxKSwgV1RGTW92ZShwMikpOworfQorCitS
ZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9RdWFkcmF0
aWMoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+
JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcDEpCit7CisgICAgcmV0dXJuIENTU1NoYXBlU2Vn
bWVudFZhbHVlOjpjcmVhdGUoQ3VydmVUb1F1YWRyYXRpYywgYWZmaW5pdHksIFdURk1vdmUodGFy
Z2V0KSwgV1RGTW92ZShwMSkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNl
Z21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpY1Ntb290aChDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZm
aW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBw
MikKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShDdXJ2ZVRvQ3Vi
aWNTbW9vdGgsIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUocDIpKTsKK30KKwor
UmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJh
dGljU21vb3RoKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENT
U1ZhbHVlPiYmIHRhcmdldCkKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNy
ZWF0ZShDdXJ2ZVRvUXVhZHJhdGljU21vb3RoLCBhZmZpbml0eSwgV1RGTW92ZSh0YXJnZXQpKTsK
K30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVBcmNUbyhD
U1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0
YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiByYWRpdXMsIENTU1ZhbHVlSUQgc3dlZXAsIENTU1ZhbHVl
SUQgc2l6ZSwgUmVmPENTU1ZhbHVlPiYmIGFuZ2xlKQoreworICAgIEFTU0VSVChzd2VlcCA9PSBD
U1NWYWx1ZUNjdyB8fCBzd2VlcCA9PSBDU1NWYWx1ZUN3KTsKKyAgICBBU1NFUlQoc2l6ZSA9PSBD
U1NWYWx1ZVNtYWxsIHx8IHNpemUgPT0gQ1NTVmFsdWVMYXJnZSk7CisgICAgcmV0dXJuIENTU1No
YXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoQXJjVG8sIGFmZmluaXR5LAorICAgICAgICBXVEZNb3Zl
KHRhcmdldCksCisgICAgICAgIFdURk1vdmUocmFkaXVzKSwKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShzd2VlcCksCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c2l6ZSksCisgICAgICAgIFdURk1vdmUoYW5nbGUpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVu
dD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqKG5ldyBDU1NTaGFwZVNlZ21lbnQoQ2xvc2VQYXRoKSkpOworfQorCitib29sIENTU1No
YXBlU2VnbWVudDo6ZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0Cit7
CisgICAgaWYgKHR5cGUoKSAhPSBvdGhlci50eXBlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChtX3R5cGUgPT0gQ2xvc2VQYXRoKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21lbnRWYWx1ZSY+KCp0aGlz
KS5lcXVhbHMoc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUmPihvdGhlcikp
OworfQorCitTdHJpbmcgQ1NTU2hhcGVTZWdtZW50OjpjdXN0b21DU1NUZXh0KCkgY29uc3QKK3sK
KyAgICBpZiAobV90eXBlID09IENTU1NoYXBlU2VnbWVudDo6Q2xvc2VQYXRoKQorICAgICAgICBy
ZXR1cm4gImNsb3NlIl9zOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU1NoYXBl
U2VnbWVudFZhbHVlKj4odGhpcyktPmN1c3RvbUNTU1RleHQoKTsKK30KKworYm9vbCBDU1NTaGFw
ZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0
Cit7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBvdGhlci50eXBlKCkpOworICAgIGNvbnN0IGF1dG8m
IG90aGVyVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21lbnRWYWx1ZSY+KG90
aGVyKTsKKyAgICByZXR1cm4gb3RoZXJWYWx1ZS5tX2FmZmluaXR5ID09IG1fYWZmaW5pdHkKKyAg
ICAgICAgJiYgb3RoZXJWYWx1ZS50YXJnZXQoKS5lcXVhbHModGFyZ2V0KCkpCisgICAgICAgICYm
IG90aGVyVmFsdWUubV9hcmd1bWVudHMuZ2V0KCkuZXF1YWxzKG1fYXJndW1lbnRzLmdldCgpKTsK
K30KKworU3RyaW5nIENTU1NoYXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QK
K3sKKyAgICBjb25zdCBhdXRvIGNvbW1hbmQgPSBbJl0oKSB7CisgICAgICAgIHN3aXRjaCAodHlw
ZSgpKSB7CisgICAgICAgIGNhc2UgTW92ZVRvOgorICAgICAgICAgICAgcmV0dXJuICJtb3ZlIjsK
KyAgICAgICAgY2FzZSBMaW5lVG86CisgICAgICAgICAgICByZXR1cm4gImxpbmUiOworICAgICAg
ICBjYXNlIExpbmVUb0hvcml6b250YWw6CisgICAgICAgICAgICByZXR1cm4gImhsaW5lIjsKKyAg
ICAgICAgY2FzZSBMaW5lVG9WZXJ0aWNhbDoKKyAgICAgICAgICAgIHJldHVybiAidmxpbmUiOwor
ICAgICAgICBjYXNlIEN1cnZlVG9DdWJpYzoKKyAgICAgICAgY2FzZSBDdXJ2ZVRvUXVhZHJhdGlj
OgorICAgICAgICAgICAgcmV0dXJuICJjdXJ2ZSI7CisgICAgICAgIGNhc2UgQ3VydmVUb0N1Ymlj
U21vb3RoOgorICAgICAgICBjYXNlIEN1cnZlVG9RdWFkcmF0aWNTbW9vdGg6CisgICAgICAgICAg
ICByZXR1cm4gInNtb290aCI7CisgICAgICAgIGNhc2UgQXJjVG86CisgICAgICAgICAgICByZXR1
cm4gImFyYyI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorCisgICAgfTsKKworICAg
IGNvbnN0IGF1dG8gY29uanVuY3Rpb24gPSBbJl0oKSB7CisgICAgICAgIHN3aXRjaCAodHlwZSgp
KSB7CisgICAgICAgIGNhc2UgTW92ZVRvOgorICAgICAgICBjYXNlIExpbmVUbzoKKyAgICAgICAg
Y2FzZSBMaW5lVG9Ib3Jpem9udGFsOgorICAgICAgICBjYXNlIExpbmVUb1ZlcnRpY2FsOgorICAg
ICAgICBjYXNlIEN1cnZlVG9RdWFkcmF0aWNTbW9vdGg6CisgICAgICAgICAgICByZXR1cm4gIiI7
CisgICAgICAgIGNhc2UgQ3VydmVUb0N1YmljOgorICAgICAgICBjYXNlIEN1cnZlVG9RdWFkcmF0
aWM6CisgICAgICAgIGNhc2UgQ3VydmVUb0N1YmljU21vb3RoOgorICAgICAgICAgICAgcmV0dXJu
ICIgdmlhICI7CisgICAgICAgIGNhc2UgQXJjVG86CisgICAgICAgICAgICByZXR1cm4gIiBvZiAi
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYXV0byBieVRv
ID0gbV9hZmZpbml0eSA9PSBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRl
ID8gIiB0byAiIDogIiBieSAiOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWls
ZGVyLmFwcGVuZChjb21tYW5kKCksIGJ5VG8sIG1fdGFyZ2V0LT5jc3NUZXh0KCksIGNvbmp1bmN0
aW9uKCkpOworICAgIGlmICh0eXBlKCkgPT0gQXJjVG8pIHsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoYXJndW1lbnQoMCkuY3NzVGV4dCgpKTsKKyAgICAgICAgY29uc3QgYXV0byYgc3dlZXAgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oYXJndW1lbnQoMSkpOworICAgICAgICBjb25zdCBh
dXRvJiBzaXplID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGFyZ3VtZW50KDIpKTsKKyAg
ICAgICAgY29uc3QgYXV0byYgYW5nbGUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oYXJn
dW1lbnQoMykpOworCisgICAgICAgIGlmIChzd2VlcC52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDdykK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgY3ciKTsKKworICAgICAgICBpZiAoc2l6ZS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMYXJnZSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIg
bGFyZ2UiKTsKKworICAgICAgICBpZiAoYW5nbGUuY29tcHV0ZURlZ3JlZXMoKSkKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCIgcm90YXRlICIsIGFuZ2xlLmNzc1RleHQoKSk7CisgICAgfSBl
bHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fYXJndW1lbnRzLT5jc3NUZXh0KCkpOworICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTaGFwZVNlZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTaGFw
ZVNlZ21lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTM5YjdhNzMyYTZhYTg1ZGMxMzhiN2U4ODQ2NGI2MjM4
OTNkMGMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYXBlU2Vn
bWVudC5oCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE5vYW0g
Um9zZW50aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
KyNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVk
ZSA8d3RmL1R5cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDU1NTaGFwZVNlZ21lbnQgOiBwdWJsaWMgQ1NTVmFsdWUgeworcHVibGljOgorICAg
IGVudW0gY2xhc3MgQ29vcmRBZmZpbml0eSB7CisgICAgICAgIEFic29sdXRlLCBSZWxhdGl2ZQor
ICAgIH07CisKKyAgICBlbnVtIFNlZ21lbnRUeXBlIHsKKyAgICAgICAgTW92ZVRvLAorICAgICAg
ICBMaW5lVG8sCisgICAgICAgIExpbmVUb0hvcml6b250YWwsCisgICAgICAgIExpbmVUb1ZlcnRp
Y2FsLAorICAgICAgICBDdXJ2ZVRvQ3ViaWMsCisgICAgICAgIEN1cnZlVG9RdWFkcmF0aWMsCisg
ICAgICAgIEN1cnZlVG9DdWJpY1Ntb290aCwKKyAgICAgICAgQ3VydmVUb1F1YWRyYXRpY1Ntb290
aCwKKyAgICAgICAgQXJjVG8sCisgICAgICAgIENsb3NlUGF0aAorICAgIH07CisKKyAgICBTZWdt
ZW50VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICBib29sIGVxdWFs
cyhjb25zdCBDU1NTaGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdDsKKyAgICBTdHJpbmcgY3VzdG9t
Q1NTVGV4dCgpIGNvbnN0OworICAgIH5DU1NTaGFwZVNlZ21lbnQoKSA9IGRlZmF1bHQ7CisKKyAg
ICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRlQ2xvc2VQYXRoKCk7CisgICAgc3Rh
dGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZU1vdmVUbyhDb29yZEFmZmluaXR5LCBSZWY8
Q1NTVmFsdWU+JiYgdGFyZ2V0KTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3Jl
YXRlTGluZVRvKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpOworICAgIHN0
YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKENvb3JkQWZm
aW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB4KTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVu
dD4gY3JlYXRlTGluZVRvVmVydGljYWwoQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHkp
OworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVDdXJ2ZVRvQ3ViaWMoQ29v
cmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxLCBS
ZWY8Q1NTVmFsdWU+JiYgcDIpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVh
dGVDdXJ2ZVRvUXVhZHJhdGljKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQs
IFJlZjxDU1NWYWx1ZT4mJiBwMSk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNy
ZWF0ZUN1cnZlVG9DdWJpY1Ntb290aChDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFy
Z2V0LCBSZWY8Q1NTVmFsdWU+JiYgcDIpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50
PiBjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljU21vb3RoKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1
ZT4mJiB0YXJnZXQpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVBcmNU
byhDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYg
cmFkaXVzLCBDU1NWYWx1ZUlEIHN3ZWVwLCBDU1NWYWx1ZUlEIHNpemUsIFJlZjxDU1NWYWx1ZT4m
JiBhbmdsZSk7CisKK3Byb3RlY3RlZDoKKyAgICBDU1NTaGFwZVNlZ21lbnQoU2VnbWVudFR5cGUg
dHlwZSkKKyAgICAgICAgOiBDU1NWYWx1ZShTaGFwZVNlZ21lbnRDbGFzcykKKyAgICAgICAgLCBt
X3R5cGUodHlwZSkgeyB9CisKK3ByaXZhdGU6CisgICAgU2VnbWVudFR5cGUgbV90eXBlOworfTsK
KworY2xhc3MgQ1NTU2hhcGVTZWdtZW50VmFsdWUgOiBwdWJsaWMgQ1NTU2hhcGVTZWdtZW50IHsK
K3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgLi4uQXJncz4KKyAgICBzdGF0aWMgUmVm
PENTU1NoYXBlU2VnbWVudD4gY3JlYXRlKENTU1NoYXBlU2VnbWVudDo6U2VnbWVudFR5cGUgdHlw
ZSwKKyAgICAgICAgQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8
Q1NTVmFsdWU+JiYgdGFyZ2V0LCBBcmdzLi4uIGFyZ3VtZW50cykKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU1NoYXBlU2VnbWVudFZhbHVlKHR5cGUsIGFmZmluaXR5LCBX
VEZNb3ZlKHRhcmdldCksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmd1bWVudHMpLi4uKSk7CisgICAg
fQorCisgICAgY29uc3QgQ1NTVmFsdWUmIHRhcmdldCgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV90YXJnZXQuZ2V0KCk7CisgICAgfQorCisgICAgY29uc3QgQ1NTVmFsdWUmIGFyZ3Vt
ZW50KHNpemVfdCBpKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYXJndW1lbnRzLT5s
ZW5ndGgoKSA+IGkpOworICAgICAgICByZXR1cm4gKihtX2FyZ3VtZW50cy0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjayhpKSk7CisgICAgfQorCisgICAgQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmlu
aXR5IGFmZmluaXR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FmZmluaXR5Owor
ICAgIH0KKworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNv
bnN0OworICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
dm9pZCBhcHBlbmRBcmdzKCkgeyB9CisgICAgdm9pZCBhcHBlbmRBcmdzKFJlZjxDU1NWYWx1ZT4m
JiB2KSB7IG1fYXJndW1lbnRzLT5hcHBlbmQoV1RGTW92ZSh2KSk7IH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIC4uLkFyZ3M+CisgICAgdm9pZCBhcHBlbmRBcmdzKFJlZjxDU1NWYWx1ZT4mJiB2
LCBBcmdzIC4uLmFyZ3MpCisgICAgeworICAgICAgICBhcHBlbmRBcmdzKFdURk1vdmUodikpOwor
ICAgICAgICBhcHBlbmRBcmdzKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgLi4uQXJncz4KKyAgICBDU1NTaGFwZVNlZ21lbnRWYWx1
ZShDU1NTaGFwZVNlZ21lbnQ6OlNlZ21lbnRUeXBlIHR5cGUsIENTU1NoYXBlU2VnbWVudDo6Q29v
cmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgQXJncyAuLi5hcmdz
KQorICAgICAgICA6IENTU1NoYXBlU2VnbWVudCh0eXBlKQorICAgICAgICAsIG1fYWZmaW5pdHko
YWZmaW5pdHkpCisgICAgICAgICwgbV90YXJnZXQoV1RGTW92ZSh0YXJnZXQpKQorICAgICAgICAs
IG1fYXJndW1lbnRzKENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKSkKKyAgICB7
CisgICAgICAgIGFwcGVuZEFyZ3Moc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9
CisKKyAgICBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgbV9hZmZpbml0eTsKKyAgICBS
ZWY8Q1NTVmFsdWU+IG1fdGFyZ2V0OworICAgIFJlZjxDU1NWYWx1ZUxpc3Q+IG1fYXJndW1lbnRz
OworfTsKKworfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfVkFMVUUoQ1NTU2hhcGVTZWdt
ZW50LCBpc1NoYXBlU2VnbWVudFZhbHVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCA1
ZTIxODIyNjNmY2VhNWNhZmYzNjNlNGZmNDQwMzk0MzgxMWY2ZGFjLi42MzA5ZTNmZjczZGNjYjY2
NzMxZjIyNGI2NDlkNzg5MmRhMmVkMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTYw
LDYgKzYwLDcgQEAKICNpbmNsdWRlICJDU1NSYXlWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1JlZmxl
Y3RWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1NoYWRvd1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTU2hh
cGVTZWdtZW50LmgiCiAjaW5jbHVkZSAiQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU1VuaWNvZGVSYW5nZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCkBA
IC0yMzAsNiArMjMxLDggQEAgYm9vbCBDU1NWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1ZhbHVlJiBv
dGhlcikgY29uc3QKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0ZvbnRT
dHlsZVZhbHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNlIEZvbnRTdHlsZVJhbmdlQ2xh
c3M6CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NGb250U3R5bGVSYW5n
ZVZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFNoYXBlU2VnbWVudENsYXNzOgor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTU2hhcGVTZWdtZW50PigqdGhp
cywgb3RoZXIpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzksNiArMzQyLDggQEAgU3Ry
aW5nIENTU1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENT
U0ZvbnRTdHlsZVZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIGNhc2UgRm9udFN0
eWxlUmFuZ2VDbGFzczoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0ZvbnRTdHlsZVJhbmdl
VmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CisgICAgY2FzZSBTaGFwZVNlZ21lbnRDbGFz
czoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1NoYXBlU2VnbWVudD4oKnRoaXMpLmN1c3Rv
bUNTU1RleHQoKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ5Nyw2
ICs1MDIsOSBAQCB2b2lkIENTU1ZhbHVlOjpkZXN0cm95KCkKICAgICBjYXNlIEZvbnRTdHlsZVJh
bmdlQ2xhc3M6CiAgICAgICAgIGRlbGV0ZSBkb3duY2FzdDxDU1NGb250U3R5bGVSYW5nZVZhbHVl
Pih0aGlzKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2hhcGVTZWdtZW50Q2xhc3M6Cisg
ICAgICAgIGRlbGV0ZSBkb3duY2FzdDxDU1NTaGFwZVNlZ21lbnQ+KHRoaXMpOworICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuaAppbmRleCBkYWRlNThkYTIwNjhiN2VlY2NkYWEzMzE5MThjNDRkM2E3NmUwNWM4Li4zZjc1
YWYzMGFiOTAyOGFlYjJkMTUyZjE0NWM5ODkzNTdiNTE5ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUu
aApAQCAtMTM0LDYgKzEzNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR3JpZEF1dG9SZXBlYXRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEdyaWRBdXRvUmVwZWF0Q2xhc3M7
IH0KICAgICBib29sIGlzR3JpZEludGVnZXJSZXBlYXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xhc3NUeXBlID09IEdyaWRJbnRlZ2VyUmVwZWF0Q2xhc3M7IH0KICAgICBib29sIGlzR3JpZFRl
bXBsYXRlQXJlYXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEdyaWRUZW1w
bGF0ZUFyZWFzQ2xhc3M7IH0KKyAgICBib29sIGlzU2hhcGVTZWdtZW50VmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTaGFwZVNlZ21lbnRDbGFzczsgfQogICAgIGJvb2wgaXNH
cmlkTGluZU5hbWVzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBHcmlkTGlu
ZU5hbWVzQ2xhc3M7IH0KICAgICBib29sIGlzU3ViZ3JpZFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9jbGFzc1R5cGUgPT0gU3ViZ3JpZENsYXNzOyB9CiAgICAgYm9vbCBpc1VuaWNvZGVSYW5nZVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gVW5pY29kZVJhbmdlQ2xhc3M7IH0K
QEAgLTIwOSw2ICsyMTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIENhbGN1bGF0aW9uQ2xhc3Ms
CiAgICAgICAgIEdyaWRUZW1wbGF0ZUFyZWFzQ2xhc3MsCiAgICAgICAgIFZhbHVlUGFpckNsYXNz
LAorICAgICAgICBTaGFwZVNlZ21lbnRDbGFzcywKIAogICAgICAgICBDU1NDb250ZW50RGlzdHJp
YnV0aW9uQ2xhc3MsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtl
eXdvcmRzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXgg
MmRkNGMwYmFjM2M5YTNhNGQ2M2JhZWRjMjk5MTA4MDJiNTIyMDJmOS4uMWI2NTRlYjIxOWQ0ZTFj
OWIyMjhmZTE3MTU4NTM5MzgwNWM1YjEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5
d29yZHMuaW4KQEAgLTEyODYsNiArMTI4NiwyNyBAQCByZWN0CiAKIC8vIHNoYXBlcwogcG9seWdv
bgorc2hhcGUKKworLy8gc2hhcGUoKQorLy8gZnJvbQorLy8gdG8KKy8vIG1vdmUKK2xpbmUKK2hs
aW5lCit2bGluZQorY3VydmUKKy8vIHNtb290aAorYXJjCitjbG9zZQordmlhCitvZgorYnkKK2N3
CitjY3cKKy8vIGxhcmdlCisvLyBzbWFsbAorLy8gcm90YXRlCiAKIC8vIEBmb250LWZhY2Ugc3Jj
CiBmb3JtYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5j
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjJmYmI5OTQzYmQwZjc1ZjNhYTkxNTU1NDhjM2FhNjU1YzhmY2U3YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMu
Y3BwCkBAIC0wLDAgKzEsMjI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIE5vYW0gUm9z
ZW50aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIgorCisjaW5jbHVkZSAiQmFzaWNTaGFwZVNl
Z21lbnQuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVk
ZSAiQ1NTU2hhcGVTZWdtZW50LmgiCisjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKKyNpbmNsdWRlICJD
U1NWYWx1ZVBvb2wuaCIKKyNpbmNsdWRlICJQYWlyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY29udmVydFBvaW50VG9DU1NWYWx1ZShj
b25zdCBMZW5ndGhQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAg
ICBhdXRvJiBwb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKKyAgICByZXR1cm4gcG9v
bC5jcmVhdGVWYWx1ZShQYWlyOjpjcmVhdGUoCisgICAgICAgIHBvb2wuY3JlYXRlVmFsdWUocG9p
bnQueCgpLCBzdHlsZSksCisgICAgICAgIHBvb2wuY3JlYXRlVmFsdWUocG9pbnQueSgpLCBzdHls
ZSksCisgICAgICAgIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkRvTm90Q29hbGVzY2Up
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWU+IGF1dG8gdG9DU1NBcmdzKGNvbnN0IFZh
bHVlJiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKKwordGVtcGxhdGU8PgorYXV0byB0b0NTU0FyZ3Mo
Y29uc3QgTGVuZ3RoJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJl
dHVybiBzdGQ6Om1ha2VfdHVwbGU8UmVmPENTU1ZhbHVlPj4oQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsKK30KKwordGVtcGxhdGU8PgorYXV0byB0
b0NTU0FyZ3M8TGVuZ3RoUG9pbnQ+KGNvbnN0IExlbmd0aFBvaW50JiB2YWx1ZSwgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoY29udmVydFBv
aW50VG9DU1NWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsKK30KKwordGVtcGxhdGU8PgorYXV0byB0b0NT
U0FyZ3MoY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYgdmFsdWUsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKAorICAgICAgICBj
b252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnRhcmdldFBvaW50LCBzdHlsZSksCisgICAgICAg
IGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUucG9pbnQxLCBzdHlsZSksCisgICAgICAgIGNv
bnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUucG9pbnQyLCBzdHlsZSkpOworfQorCit0ZW1wbGF0
ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYg
dmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtl
X3R1cGxlKAorICAgICAgICBjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnRhcmdldFBvaW50
LCBzdHlsZSksCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUucG9pbnQxLCBz
dHlsZSkpOworfQorCit0ZW1wbGF0ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvQ3Vi
aWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQor
eworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NT
VmFsdWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9D
U1NWYWx1ZSh2YWx1ZS5wb2ludDIsIHN0eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9D
U1NBcmdzKGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKK3sKKyAgICBhdXRvJiBwb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsK
KyAgICBhdXRvIHJhZGl1cyA9IFBhaXI6OmNyZWF0ZSgKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1
ZSh2YWx1ZS5yYWRpdXMud2lkdGgsIHN0eWxlKSwKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZSh2
YWx1ZS5yYWRpdXMuaGVpZ2h0LCBzdHlsZSksCisgICAgICAgIFBhaXI6OklkZW50aWNhbFZhbHVl
RW5jb2Rpbmc6OkNvYWxlc2NlKTsKKworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAg
ICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAg
ICAgICAgcG9vbC5jcmVhdGVWYWx1ZShXVEZNb3ZlKHJhZGl1cykpLAorICAgICAgICB2YWx1ZS5z
d2VlcCA/IENTU1ZhbHVlQ3cgOiBDU1NWYWx1ZUNjdywKKyAgICAgICAgdmFsdWUubGFyZ2VBcmMg
PyBDU1NWYWx1ZUxhcmdlIDogQ1NTVmFsdWVTbWFsbCwKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1
ZSh2YWx1ZS5hbmdsZSwgQ1NTVW5pdFR5cGU6OkNTU19ERUcpKTsKK30KKworUmVmPENTU1NoYXBl
U2VnbWVudD4gdG9DU1NTaGFwZVNlZ21lbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBCYXNpY1NoYXBlU2VnbWVudCYgc2VnbWVudCkKK3sKKyAgICBhdXRvIHRvQ1NTID0gWyZdKENT
U1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgYXV0byBjcmVhdGUsIGNvbnN0
IGF1dG8mIGFzKSB7CisgICAgICAgIHJldHVybiBzdGQ6OmFwcGx5KGNyZWF0ZSwgc3RkOjp0dXBs
ZV9jYXQoc3RkOjptYWtlX3R1cGxlKGFmZmluaXR5KSwgdG9DU1NBcmdzKChzZWdtZW50Liphcyko
KSwgc3R5bGUpKSk7CisgICAgfTsKKworI2RlZmluZSBDUkVBVEVfQ1NTX1NIQVBFX1NFR01FTlRf
RlJPTV9CQVNJQ19TSEFQRV9TRUdNRU5UKFR5cGUpIFwKKyAgICBjYXNlIFNoYXBlU2VnbWVudCMj
VHlwZTo6QWJzU2VnVHlwZTogXAorICAgICAgICByZXR1cm4gdG9DU1MoQ1NTU2hhcGVTZWdtZW50
OjpDb29yZEFmZmluaXR5OjpBYnNvbHV0ZSwgQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGUjI1R5cGUs
ICZCYXNpY1NoYXBlU2VnbWVudDo6YXMjI1R5cGUpOyBcCisgICAgY2FzZSBTaGFwZVNlZ21lbnQj
I1R5cGU6OlJlbFNlZ1R5cGU6IFwKKyAgICAgICAgcmV0dXJuIHRvQ1NTKENTU1NoYXBlU2VnbWVu
dDo6Q29vcmRBZmZpbml0eTo6UmVsYXRpdmUsIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlIyNUeXBl
LCAmQmFzaWNTaGFwZVNlZ21lbnQ6OmFzIyNUeXBlKTsgXAorCisgICAgc3dpdGNoIChzZWdtZW50
LnR5cGUoKSkgeworICAgIGNhc2UgUGF0aFNlZ0Nsb3NlUGF0aDoKKyAgICAgICAgcmV0dXJuIENT
U1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisKKyAgICAgICAgRk9SX0VBQ0hfU0hB
UEVfU0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoQ1JFQVRFX0NTU19TSEFQRV9TRUdNRU5UX0ZST01f
QkFTSUNfU0hBUEVfU0VHTUVOVCkKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBh
dGgoKTsKKyAgICB9Cit9Cit0ZW1wbGF0ZSA8Y2xhc3MgRGVmaW5pdGlvbj4KK1NWR1BhdGhTZWdU
eXBlIHNlZ21lbnRUeXBlKGNvbnN0IENTU1NoYXBlU2VnbWVudFZhbHVlJiBzZWdtZW50V2l0aFZh
bHVlKQoreworICAgIHJldHVybiBzZWdtZW50V2l0aFZhbHVlLmFmZmluaXR5KCkgPT0gQ1NTU2hh
cGVTZWdtZW50OjpDb29yZEFmZmluaXR5OjpBYnNvbHV0ZSA/IERlZmluaXRpb246OkFic1NlZ1R5
cGUgOiBEZWZpbml0aW9uOjpSZWxTZWdUeXBlOworfQorCitSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+
IGZyb21DU1NTaGFwZVNlZ21lbnQoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29u
dmVyc2lvbkRhdGEsIGNvbnN0IENTU1NoYXBlU2VnbWVudCYgY3NzU2VnbWVudCkKK3sKKyAgICBh
dXRvIHRvTGVuZ3RoID0gWyZdKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkgLT4gTGVuZ3RoIHsKKyAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuY29udmVydFRv
TGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBl
cmNlbnRDb252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsK
KyAgICB9OworCisgICAgYXV0byB0b0xlbmd0aFBvaW50ID0gWyZdKGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSkgLT4gTGVuZ3RoUG9pbnQgeworICAgICAgICBhdXRvIHBhaXIgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpLnBhaXJWYWx1ZSgpOworICAgICAgICBBU1NFUlQocGFpcik7
CisgICAgICAgIHJldHVybiBMZW5ndGhQb2ludCB7IHRvTGVuZ3RoKCpwYWlyLT5maXJzdCgpKSwg
dG9MZW5ndGgoKnBhaXItPnNlY29uZCgpKSB9OworICAgIH07CisKKyAgICBhdXRvIHRvTGVuZ3Ro
U2l6ZSA9IFsmXShjb25zdCBDU1NWYWx1ZSYgdmFsdWUpIC0+IExlbmd0aFNpemUgeworICAgICAg
ICBhdXRvIHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnBhaXJWYWx1
ZSgpOworICAgICAgICBBU1NFUlQocGFpcik7CisgICAgICAgIHJldHVybiBMZW5ndGhTaXplIHsg
dG9MZW5ndGgoKnBhaXItPmZpcnN0KCkpLCB0b0xlbmd0aCgqcGFpci0+c2Vjb25kKCkpIH07Cisg
ICAgfTsKKworICAgIGF1dG8gdHlwZSA9IGNzc1NlZ21lbnQudHlwZSgpOworCisgICAgaWYgKHR5
cGUgPT0gQ1NTU2hhcGVTZWdtZW50OjpDbG9zZVBhdGgpCisgICAgICAgIHJldHVybiBCYXNpY1No
YXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisKKyAgICBjb25zdCBhdXRvJiBzZWdtZW50
V2l0aFZhbHVlID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUmPihjc3NT
ZWdtZW50KTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50
OjpNb3ZlVG86IHsKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVNb3Zl
VG8oCisgICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRNb3ZlVG8+KHNlZ21lbnRX
aXRoVmFsdWUpLAorICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRh
cmdldCgpKSk7CisgICAgfQorCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkxpbmVUbzoKKyAg
ICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG8oCisgICAgICAgICAg
ICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRMaW5lVG8+KHNlZ21lbnRXaXRoVmFsdWUpLAorICAg
ICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKSk7CisKKyAg
ICBjYXNlIENTU1NoYXBlU2VnbWVudDo6TGluZVRvSG9yaXpvbnRhbDoKKyAgICAgICAgcmV0dXJu
IEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKAorICAgICAgICAgICAg
c2VnbWVudFR5cGU8U2hhcGVTZWdtZW50TGluZVRvSG9yaXpvbnRhbD4oc2VnbWVudFdpdGhWYWx1
ZSksCisgICAgICAgICAgICB0b0xlbmd0aChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKSk7CisK
KyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6TGluZVRvVmVydGljYWw6CisgICAgICAgIHJldHVy
biBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwoCisgICAgICAgICAgICBz
ZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRMaW5lVG9WZXJ0aWNhbD4oc2VnbWVudFdpdGhWYWx1ZSks
CisgICAgICAgICAgICB0b0xlbmd0aChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKSk7CisKKyAg
ICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q3VydmVUb0N1YmljOgorICAgICAgICByZXR1cm4gQmFz
aWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpYygKKyAgICAgICAgICAgIHNlZ21lbnRU
eXBlPFNoYXBlU2VnbWVudEN1cnZlVG9DdWJpYz4oc2VnbWVudFdpdGhWYWx1ZSksIHsKKyAgICAg
ICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMCkpLAor
ICAgICAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgx
KSksCisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdl
dCgpKQorICAgICAgICAgICAgfSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q3VydmVU
b1F1YWRyYXRpYzoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2
ZVRvUXVhZHJhdGljKAorICAgICAgICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50Q3VydmVU
b1F1YWRyYXRpYz4oc2VnbWVudFdpdGhWYWx1ZSksIHsKKyAgICAgICAgICAgICAgICB0b0xlbmd0
aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMCkpLAorICAgICAgICAgICAgICAgIHRv
TGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAgICAgIH0pOwor
CisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkN1cnZlVG9DdWJpY1Ntb290aDoKKyAgICAgICAg
cmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWNTbW9vdGgoCisgICAg
ICAgICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWNTbW9vdGg+KHNlZ21l
bnRXaXRoVmFsdWUpLCB7CisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0
aFZhbHVlLmFyZ3VtZW50KDApKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21l
bnRXaXRoVmFsdWUudGFyZ2V0KCkpCisgICAgICAgICAgICB9KTsKKworICAgIGNhc2UgQ1NTU2hh
cGVTZWdtZW50OjpDdXJ2ZVRvUXVhZHJhdGljU21vb3RoOgorICAgICAgICByZXR1cm4gQmFzaWNT
aGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoCisgICAgICAgICAgICBz
ZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljU21vb3RoPihzZWdtZW50V2l0
aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJn
ZXQoKSkpOworCisgICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkFyY1RvOgorICAgICAgICByZXR1
cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKAorICAgICAgICAgICAgc2VnbWVudFR5
cGU8U2hhcGVTZWdtZW50QXJjVG8+KHNlZ21lbnRXaXRoVmFsdWUpLCB7CisgICAgICAgICAgICAg
ICAgdG9MZW5ndGhTaXplKHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMCkpLAorICAgICAgICAg
ICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihzZWdtZW50V2l0aFZhbHVlLmFyZ3Vt
ZW50KDMpKS5mbG9hdFZhbHVlKENTU1VuaXRUeXBlOjpDU1NfREVHKSwKKyAgICAgICAgICAgICAg
ICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgx
KSkudmFsdWVJRCgpID09IENTU1ZhbHVlQ3csCisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMikpLnZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUxhcmdlLAorICAgICAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdp
dGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAgICAgIH0pOworCisgICAgY2FzZSBDU1NTaGFwZVNl
Z21lbnQ6OkNsb3NlUGF0aDoKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVh
dGVDbG9zZVBhdGgoKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY0MGQ3
MWUyOWE1MDgzODI1M2UwYzJlYTcwOTYxMTQ0OTFkNjJkMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMuaApAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPi
gJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgor
ICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCYXNpY1NoYXBl
U2VnbWVudDsKK2NsYXNzIENTU1NoYXBlU2VnbWVudDsKK2NsYXNzIENTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGE7CitjbGFzcyBSZW5kZXJTdHlsZTsKKworUmVmPENTU1NoYXBlU2VnbWVudD4gdG9D
U1NTaGFwZVNlZ21lbnQoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBCYXNpY1NoYXBlU2VnbWVu
dCYpOworUmVmPEJhc2ljU2hhcGVTZWdtZW50PiBmcm9tQ1NTU2hhcGVTZWdtZW50KGNvbnN0IENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBjb25zdCBDU1NTaGFwZVNlZ21lbnQmKTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRl
eCBkMWI1ZDM0NTU1OTEwYmQ4MzNlYWU5ZmZiYzk1N2JjMWNkMzI0OTBiLi44ZWE0ZmE4NmVmNGI0
ZWJhYzZmN2RmMWYxZDc0M2JlNDllZmFhZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUg
IkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250RmVhdHVyZVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTRm9udFBhbGV0dGVWYWx1ZXNPdmVycmlkZUNvbG9yc1ZhbHVlLmgiCisj
aW5jbHVkZSAiQ1NTU2hhcGVTZWdtZW50LmgiCiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykK
ICNpbmNsdWRlICJDU1NGb250VmFyaWF0aW9uVmFsdWUuaCIKICNlbmRpZgpAQCAtMjY1Miw2ICsy
NjUzLDE5NiBAQCBzdGF0aWMgUmVmUHRyPENTU0Jhc2ljU2hhcGVQYXRoPiBjb25zdW1lQmFzaWNT
aGFwZVBhdGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncwogICAgIHJldHVybiBzaGFwZTsKIH0K
IAorc3RhdGljIFJlZlB0cjxDU1NTaGFwZVNlZ21lbnQ+IGNvbnN1bWVTaGFwZVNlZ21lbnQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICBhdXRvIGNvbW1hbmQgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7
CisgICAgaWYgKGNvbW1hbmQuaWQoKSA9PSBDU1NWYWx1ZUNsb3NlKQorICAgICAgICByZXR1cm4g
Q1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKworICAgIGlmICghaWRlbnRNYXRj
aGVzPENTU1ZhbHVlVG8sIENTU1ZhbHVlQnk+KGFyZ3MucGVlaygpLmlkKCkpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gYWZmaW5pdHkgPSBhcmdzLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCkuaWQoKSA9PSBDU1NWYWx1ZVRvID8gQ1NTU2hhcGVTZWdtZW50OjpDb29y
ZEFmZmluaXR5OjpBYnNvbHV0ZSA6IENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eTo6UmVs
YXRpdmU7CisgICAgYXV0byBjb25zdW1lTmV4dExlbmd0aE9yUGVyY2VudCA9IFsmXSgpIHsKKyAg
ICAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBW
YWx1ZVJhbmdlOjpBbGwpOworICAgIH07CisKKyAgICBpZiAoY29tbWFuZC5pZCgpID09IENTU1Zh
bHVlSGxpbmUgfHwgY29tbWFuZC5pZCgpID09IENTU1ZhbHVlVmxpbmUpIHsKKyAgICAgICAgYXV0
byB2YWx1ZSA9IGNvbnN1bWVOZXh0TGVuZ3RoT3JQZXJjZW50KCk7CisgICAgICAgIGlmICghdmFs
dWUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gY29tbWFu
ZC5pZCgpID09IENTU1ZhbHVlSGxpbmUKKyAgICAgICAgICAgID8gQ1NTU2hhcGVTZWdtZW50Ojpj
cmVhdGVMaW5lVG9Ib3Jpem9udGFsKGFmZmluaXR5LCB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKQor
ICAgICAgICAgICAgOiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVUb1ZlcnRpY2FsKGFmZmlu
aXR5LCB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisKKyAgICBhdXRvIGNvbnN1bWVO
ZXh0Q29vcmRpbmF0ZXMgPSBbJl0gKCkgLT4gUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB7Cisg
ICAgICAgIGF1dG8geCA9IGNvbnN1bWVOZXh0TGVuZ3RoT3JQZXJjZW50KCk7CisgICAgICAgIGlm
ICgheCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8geSA9IGNv
bnN1bWVOZXh0TGVuZ3RoT3JQZXJjZW50KCk7CisgICAgICAgIGlmICgheSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIHJldHVybiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBh
aXIoeC5yZWxlYXNlTm9uTnVsbCgpLCB5LnJlbGVhc2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNh
bFZhbHVlRW5jb2Rpbmc6OkRvTm90Q29hbGVzY2UpOworICAgIH07CisKKyAgICBhdXRvIGF0RW5k
T2ZTZWdtZW50ID0gWyZdICgpIHsKKyAgICAgICAgcmV0dXJuIGFyZ3MuYXRFbmQoKSB8fCBhcmdz
LnBlZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tlbjsKKyAgICB9OworCisgICAgYXV0byB0YXJnZXRQ
b2ludCA9IGNvbnN1bWVOZXh0Q29vcmRpbmF0ZXMoKTsKKyAgICBpZiAoIXRhcmdldFBvaW50KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN3aXRjaCAoY29tbWFuZC5pZCgpKSB7Cisg
ICAgY2FzZSBDU1NWYWx1ZU1vdmU6CisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNy
ZWF0ZU1vdmVUbyhhZmZpbml0eSwgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSk7CisKKyAg
ICBjYXNlIENTU1ZhbHVlTGluZToKKyAgICAgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3Jl
YXRlTGluZVRvKGFmZmluaXR5LCB0YXJnZXRQb2ludC5yZWxlYXNlTm9uTnVsbCgpKTsKKworICAg
IGNhc2UgQ1NTVmFsdWVDdXJ2ZTogeworICAgICAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSAhPSBD
U1NWYWx1ZVZpYSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGFyZ3Mu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgYXV0byB2aWFQb2ludDEgPSBj
b25zdW1lTmV4dENvb3JkaW5hdGVzKCk7CisgICAgICAgIGlmICghdmlhUG9pbnQxKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYgKGF0RW5kT2ZTZWdtZW50KCkpCisg
ICAgICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGlj
KGFmZmluaXR5LCB0YXJnZXRQb2ludC5yZWxlYXNlTm9uTnVsbCgpLCB2aWFQb2ludDEucmVsZWFz
ZU5vbk51bGwoKSk7CisKKyAgICAgICAgYXV0byB2aWFQb2ludDIgPSBjb25zdW1lTmV4dENvb3Jk
aW5hdGVzKCk7CisgICAgICAgIGlmICghdmlhUG9pbnQyKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1
YmljKGFmZmluaXR5LCAgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSwgdmlhUG9pbnQxLnJl
bGVhc2VOb25OdWxsKCksIHZpYVBvaW50Mi5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisKKyAg
ICBjYXNlIENTU1ZhbHVlU21vb3RoOiB7CisgICAgICAgIGlmIChhcmdzLnBlZWsoKS5pZCgpICE9
IENTU1ZhbHVlVmlhKQorICAgICAgICAgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRl
Q3VydmVUb1F1YWRyYXRpY1Ntb290aChhZmZpbml0eSwgIHRhcmdldFBvaW50LnJlbGVhc2VOb25O
dWxsKCkpOworCisgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAg
ICAgICAgYXV0byB2aWFQb2ludCA9IGNvbnN1bWVOZXh0Q29vcmRpbmF0ZXMoKTsKKyAgICAgICAg
aWYgKCF2aWFQb2ludCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIHJl
dHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJpY1Ntb290aChhZmZpbml0eSwg
IHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCksIHZpYVBvaW50LnJlbGVhc2VOb25OdWxsKCkp
OworICAgIH0KKworICAgIGNhc2UgQ1NTVmFsdWVBcmM6IHsKKyAgICAgICAgaWYgKGFyZ3MucGVl
aygpLmlkKCkgIT0gQ1NTVmFsdWVPZikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKKyAgICAgICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiByeCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29u
dGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CisgICAgICAgIGlmICghcngpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHJ5OworICAgICAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4p
CisgICAgICAgICAgICByeSA9IHJ4OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJ5ID0g
Y29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6Ok5v
bk5lZ2F0aXZlKTsKKyAgICAgICAgICAgIGlmICghcnkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+
IHN3ZWVwOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlSUQ+IHNpemU7CisgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZT4gYW5nbGU7CisKKyAgICAgICAgd2hpbGUgKCFhdEVuZE9mU2VnbWVu
dCgpKSB7CisgICAgICAgICAgICBhdXRvIG5leHRJZGVudCA9IGFyZ3MucGVlaygpLmlkKCk7Cisg
ICAgICAgICAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlUm90YXRlPihuZXh0SWRlbnQpICYm
ICFhbmdsZSkgeworICAgICAgICAgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3Bh
Y2UoKS5pZCgpOworICAgICAgICAgICAgICAgIGFuZ2xlID0gY29uc3VtZUFuZ2xlKGFyZ3MsIGNv
bnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyazo6Rm9y
YmlkKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZUN3LCBDU1NWYWx1ZUNjdz4obmV4dElkZW50
KSAmJiAhc3dlZXAuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBzd2VlcCA9IGFyZ3Mu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1Zh
bHVlTGFyZ2UsIENTU1ZhbHVlU21hbGw+KG5leHRJZGVudCkgJiYgIXNpemUuaGFzX3ZhbHVlKCkp
IHsKKyAgICAgICAgICAgICAgICBzaXplID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpLmlkKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFhbmds
ZSkKKyAgICAgICAgICAgIGFuZ2xlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgwLCBDU1NV
bml0VHlwZTo6Q1NTX0RFRyk7CisKKyAgICAgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3Jl
YXRlQXJjVG8oCisgICAgICAgICAgICBhZmZpbml0eSwKKyAgICAgICAgICAgIHRhcmdldFBvaW50
LnJlbGVhc2VOb25OdWxsKCksCisgICAgICAgICAgICBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIo
cngucmVsZWFzZU5vbk51bGwoKSwgcnkucmVsZWFzZU5vbk51bGwoKSwgUGFpcjo6SWRlbnRpY2Fs
VmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpLAorICAgICAgICAgICAgc3dlZXAudmFsdWVfb3IoQ1NT
VmFsdWVDY3cpLAorICAgICAgICAgICAgc2l6ZS52YWx1ZV9vcihDU1NWYWx1ZVNtYWxsKSwKKyAg
ICAgICAgICAgIGFuZ2xlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKK3N0YXRpYyBSZWZQdHI8Q1NTQmFz
aWNTaGFwZVNoYXBlPiBjb25zdW1lQmFzaWNTaGFwZVNoYXBlKENTU1BhcnNlclRva2VuUmFuZ2Um
IGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgV2luZFJ1bGUg
d2luZFJ1bGUgPSBXaW5kUnVsZTo6Tm9uWmVybzsKKworICAgIGlmIChpZGVudE1hdGNoZXM8Q1NT
VmFsdWVFdmVub2RkLCBDU1NWYWx1ZU5vbnplcm8+KGFyZ3MucGVlaygpLmlkKCkpKQorICAgICAg
ICB3aW5kUnVsZSA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpID09IENT
U1ZhbHVlRXZlbm9kZCA/IFdpbmRSdWxlOjpFdmVuT2RkIDogV2luZFJ1bGU6Ok5vblplcm87CisK
KyAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSAhPSBDU1NWYWx1ZUZyb20pCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworCisg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpbml0aWFsWCA9IGNvbnN1bWVMZW5ndGhPclBl
cmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwpOworICAgIGlmICghaW5p
dGlhbFgpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBpbml0aWFsWSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5t
b2RlLCBWYWx1ZVJhbmdlOjpBbGwpOworICAgIGlmICghaW5pdGlhbFkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFy
Z3MpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gc2VnbWVudHMgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisKKyAgICBmb3IgKDs7KSB7CisgICAg
ICAgIGF1dG8gc2VnbWVudCA9IGNvbnN1bWVTaGFwZVNlZ21lbnQoYXJncywgY29udGV4dCk7Cisg
ICAgICAgIGlmICghc2VnbWVudCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
ICAgIHNlZ21lbnRzLT5hcHBlbmQoc2VnbWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAg
aWYgKGFyZ3MuYXRFbmQoKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmICghY29u
c3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIGF1dG8gc2hhcGUgPSBDU1NCYXNpY1NoYXBlU2hhcGU6OmNy
ZWF0ZSgKKyAgICAgICAgY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKAorICAgICAgICAgICAgaW5p
dGlhbFgucmVsZWFzZU5vbk51bGwoKSwKKyAgICAgICAgICAgIGluaXRpYWxZLnJlbGVhc2VOb25O
dWxsKCksCisgICAgICAgICAgICBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpEb05vdENv
YWxlc2NlKSwKKyAgICAgICAgV1RGTW92ZShzZWdtZW50cykpOworCisgICAgc2hhcGUtPnNldFdp
bmRSdWxlKHdpbmRSdWxlKTsKKyAgICByZXR1cm4gc2hhcGU7Cit9CisKIHN0YXRpYyB2b2lkIGNv
bXBsZXRlNFNpZGVzKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2lkZVs0XSkKIHsKICAgICBp
ZiAoc2lkZVszXSkKQEAgLTI3NTcsNiArMjk0OCw4IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNvbnN1bWVCYXNpY1NoYXBlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBj
CiAgICAgICAgIHNoYXBlID0gY29uc3VtZUJhc2ljU2hhcGVJbnNldChhcmdzLCBjb250ZXh0KTsK
ICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVBhdGgpCiAgICAgICAgIHNoYXBlID0gY29uc3Vt
ZUJhc2ljU2hhcGVQYXRoKGFyZ3MpOworICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlU2hhcGUp
CisgICAgICAgIHNoYXBlID0gY29uc3VtZUJhc2ljU2hhcGVTaGFwZShhcmdzLCBjb250ZXh0KTsK
ICAgICBpZiAoIXNoYXBlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByYW5nZSA9IHJh
bmdlQ29weTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlU2VnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNT
aGFwZVNlZ21lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhMmQwNzllYTE3N2FmNDZmZTZjMjc4MmIxZWQ0
MWExYzYxYWNlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwCkBAIC0wLDAgKzEsMjkwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIE5vYW0gUm9zZW50aGFsIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJhc2ljU2hhcGVTZWdtZW50LmgiCisKKyNp
bmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAi
U1ZHUGF0aEJ1aWxkZXIuaCIKKyNpbmNsdWRlICJTVkdQYXRoUGFyc2VyLmgiCisjaW5jbHVkZSAi
U1ZHUGF0aFNlZy5oIgorI2luY2x1ZGUgIlNWR1BhdGhTZWdJbXBsLmgiCisjaW5jbHVkZSAiU1ZH
UGF0aFNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IERlZmluaXRpb24+CitjbGFzcyBCYXNpY1NoYXBlU2VnbWVudFZhbHVlIDogcHVibGljIEJhc2lj
U2hhcGVTZWdtZW50IHsKK3B1YmxpYzoKKyAgICBjb25zdCB0eXBlbmFtZSBEZWZpbml0aW9uOjpW
YWx1ZSYgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKHR5cGUoKSA9PSBEZWZp
bml0aW9uOjpBYnNTZWdUeXBlIHx8IHR5cGUoKSA9PSBEZWZpbml0aW9uOjpSZWxTZWdUeXBlKTsK
KyAgICAgICAgcmV0dXJuIG1fdmFsdWU7CisgICAgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3Qg
QmFzaWNTaGFwZVNlZ21lbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5
cGUoKSA9PSBvdGhlci50eXBlKCkKKyAgICAgICAgICAgICYmIHZhbHVlKCkgPT0gc3RhdGljX2Nh
c3Q8Y29uc3QgQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxEZWZpbml0aW9uPiY+KG90aGVyKS52YWx1
ZSgpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZT4gY3Jl
YXRlKEJhc2ljU2hhcGVTZWdtZW50OjpUeXBlIHR5cGUsIHR5cGVuYW1lIERlZmluaXRpb246OlZh
bHVlJiYgdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQodHlwZSA9PSBEZWZpbml0aW9uOjpB
YnNTZWdUeXBlIHx8IHR5cGUgPT0gRGVmaW5pdGlvbjo6UmVsU2VnVHlwZSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEJhc2ljU2hhcGVTZWdtZW50VmFsdWU8RGVmaW5pdGlvbj4odHlw
ZSwgV1RGTW92ZSh2YWx1ZSkpKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBCYXNpY1NoYXBl
U2VnbWVudFZhbHVlKEJhc2ljU2hhcGVTZWdtZW50OjpUeXBlIHR5cGUsIHR5cGVuYW1lIERlZmlu
aXRpb246OlZhbHVlJiYgdmFsdWUpCisgICAgICAgIDogQmFzaWNTaGFwZVNlZ21lbnQodHlwZSkK
KyAgICAgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKSB7IH0KKworcHJpdmF0ZToKKyAgICB0
eXBlbmFtZSBEZWZpbml0aW9uOjpWYWx1ZSBtX3ZhbHVlOworfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK3N0YXRpYyBjb25zdCB0eXBlbmFtZSBUOjpWYWx1ZSYgZXh0cmFjdFZhbHVlKGNvbnN0
IEJhc2ljU2hhcGVTZWdtZW50JiBzZWcpCit7CisgICAgQVNTRVJUKHNlZy50eXBlKCkgPT0gVDo6
QWJzU2VnVHlwZSB8fCBzZWcudHlwZSgpID09IFQ6OlJlbFNlZ1R5cGUpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBCYXNpY1NoYXBlU2VnbWVudFZhbHVlPFQ+Jj4oc2VnKS52YWx1ZSgp
OworfQorCitib29sIEJhc2ljU2hhcGVTZWdtZW50OjplcXVhbHMoY29uc3QgQmFzaWNTaGFwZVNl
Z21lbnQmIG90aGVyKSBjb25zdAoreworICAgIGF1dG8gdHlwZSA9IHRoaXMtPnR5cGUoKTsKKyAg
ICBpZiAodHlwZSAhPSBvdGhlci50eXBlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworI2Rl
ZmluZSBDT01QQVJFX1NIQVBFX1NFR01FTlRfVkFMVUUoVHlwZSkgXAorICAgIGNhc2UgU2hhcGVT
ZWdtZW50IyNUeXBlOjpBYnNTZWdUeXBlOiBcCisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6
OlJlbFNlZ1R5cGU6IFwKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RWYWx1ZTxTaGFwZVNlZ21lbnQj
I1R5cGU+KCp0aGlzKSA9PSBleHRyYWN0VmFsdWU8U2hhcGVTZWdtZW50IyNUeXBlPihvdGhlcik7
CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFBhdGhTZWdDbG9zZVBhdGg6CisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIEZPUl9FQUNIX1NIQVBFX1NFR01FTlRfVFlQRV9X
SVRIX1ZBTFVFKENPTVBBUkVfU0hBUEVfU0VHTUVOVF9WQUxVRSkKKyAgICBkZWZhdWx0OgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKworI2RlZmluZSBJTVBMRU1FTlRfU0hBUEVfU0VHTUVOVF9WQUxVRShU
WVBFKSBcCitSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGUj
I1RZUEUoQmFzaWNTaGFwZVNlZ21lbnQ6OlR5cGUgdHlwZSwgdHlwZW5hbWUgU2hhcGVTZWdtZW50
IyNUWVBFOjpWYWx1ZSYmIHZhbHVlKSBcCit7IFwKKyAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21l
bnRWYWx1ZTxTaGFwZVNlZ21lbnQjI1RZUEU+OjpjcmVhdGUodHlwZSwgV1RGTW92ZSh2YWx1ZSkp
OyBcCit9IFwKK2NvbnN0IHR5cGVuYW1lIFNoYXBlU2VnbWVudCMjVFlQRTo6VmFsdWUmIEJhc2lj
U2hhcGVTZWdtZW50OjphcyMjVFlQRSgpIGNvbnN0IFwKK3sgXAorICAgIHJldHVybiBleHRyYWN0
VmFsdWU8U2hhcGVTZWdtZW50IyNUWVBFPigqdGhpcyk7IFwKK30KKworRk9SX0VBQ0hfU0hBUEVf
U0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoSU1QTEVNRU5UX1NIQVBFX1NFR01FTlRfVkFMVUUpCisK
K0N1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb0N1YmljU2hhcGVT
ZWdWYWx1ZSYgZnJvbSwgY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYgdG8sIGNvbnN0
IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1cm4geworICAgICAgICBibGVu
ZChmcm9tLnBvaW50MSwgdG8ucG9pbnQxLCBjb250ZXh0KSwKKyAgICAgICAgYmxlbmQoZnJvbS5w
b2ludDIsIHRvLnBvaW50MiwgY29udGV4dCksCisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0UG9p
bnQsIHRvLnRhcmdldFBvaW50LCBjb250ZXh0KSwKKyAgICB9OworfQorCitDdXJ2ZVRvQ3ViaWNT
bW9vdGhTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2Vn
VmFsdWUmIGZyb20sIGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIHRvLCBj
b25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAg
YmxlbmQoZnJvbS5wb2ludDIsIHRvLnBvaW50MiwgY29udGV4dCksCisgICAgICAgIGJsZW5kKGZy
b20udGFyZ2V0UG9pbnQsIHRvLnRhcmdldFBvaW50LCBjb250ZXh0KSwKKyAgICB9OworfQorCitD
dXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBDdXJ2ZVRvUXVhZHJhdGlj
U2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29uc3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUm
IHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIHsKKyAg
ICAgICAgYmxlbmQoZnJvbS5wb2ludDEsIHRvLnBvaW50MSwgY29udGV4dCksCisgICAgICAgIGJs
ZW5kKGZyb20udGFyZ2V0UG9pbnQsIHRvLnRhcmdldFBvaW50LCBjb250ZXh0KSwKKyAgICB9Owor
fQorCitBcmNUb1NoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiBm
cm9tLCBjb25zdCBBcmNUb1NoYXBlU2VnVmFsdWUmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQm
IGNvbnRleHQpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgYmxlbmQoZnJvbS5yYWRpdXMsIHRv
LnJhZGl1cywgY29udGV4dCksCisgICAgICAgIGJsZW5kKGZyb20uYW5nbGUsIHRvLmFuZ2xlLCBj
b250ZXh0KSwKKyAgICAgICAgY29udGV4dC5wcm9ncmVzcyA8IDAuNWYgPyBmcm9tLnN3ZWVwIDog
dG8uc3dlZXAsCisgICAgICAgIGNvbnRleHQucHJvZ3Jlc3MgPCAwLjVmID8gZnJvbS5sYXJnZUFy
YyA6IHRvLmxhcmdlQXJjLAorICAgICAgICBibGVuZChmcm9tLnRhcmdldFBvaW50LCB0by50YXJn
ZXRQb2ludCwgY29udGV4dCkKKyAgICB9OworfQorCitSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IEJh
c2ljU2hhcGVTZWdtZW50OjpibGVuZChjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYgZnJvbSwgY29u
c3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KSBjb25zdAoreworICAgIGF1dG8gdHlwZSA9IHRo
aXMtPnR5cGUoKTsKKyAgICBBU1NFUlQodHlwZSA9PSBmcm9tLnR5cGUoKSk7CisKKyAgICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFBhdGhTZWdDbG9zZVBhdGg6CisgICAgICAgIHJldHVybiBC
YXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7CisKKyNkZWZpbmUgQkxFTkRfU0VH
TUVOVF9UWVBFKFR5cGUpIFwKKyAgICBjYXNlIFNoYXBlU2VnbWVudCMjVHlwZTo6QWJzU2VnVHlw
ZTogXAorICAgIGNhc2UgU2hhcGVTZWdtZW50IyNUeXBlOjpSZWxTZWdUeXBlOiBcCisgICAgICAg
IHJldHVybiBCYXNpY1NoYXBlU2VnbWVudFZhbHVlPFNoYXBlU2VnbWVudCMjVHlwZT46OmNyZWF0
ZSh0eXBlLCBXZWJDb3JlOjpibGVuZChleHRyYWN0VmFsdWU8U2hhcGVTZWdtZW50IyNUeXBlPihm
cm9tKSwgZXh0cmFjdFZhbHVlPFNoYXBlU2VnbWVudCMjVHlwZT4oKnRoaXMpLCBjb250ZXh0KSk7
CisKKyAgICAgICAgRk9SX0VBQ0hfU0hBUEVfU0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoQkxFTkRf
U0VHTUVOVF9UWVBFKQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOwor
ICAgIH0KK30KK2NsYXNzIFNoYXBlU1ZHUGF0aFNvdXJjZSBmaW5hbCA6IHB1YmxpYyBTVkdQYXRo
U291cmNlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTaGFwZVNWR1BhdGhTb3VyY2UoY29uc3Qg
TGVuZ3RoUG9pbnQmIHN0YXJ0LCBjb25zdCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4m
IHNlZ21lbnRzLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCisgICAgICAgIDogbV9zdGFydChzdGFy
dCkKKyAgICAgICAgLCBtX3NlZ21lbnRzKHNlZ21lbnRzKQorICAgICAgICAsIG1fc2l6ZShzaXpl
KQorICAgICAgICAsIG1faXRlbUVuZChzZWdtZW50cy5zaXplKCkpCisgICAgICAgIHsKKworICAg
ICAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBoYXNNb3JlRGF0YSgpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICByZXR1cm4gbV9pdGVtQ3VycmVudCA8IG1faXRlbUVuZDsKKyAgICB9CisK
KyAgICBib29sIG1vdmVUb05leHRUb2tlbigpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAg
IFNWR1BhdGhTZWdUeXBlIG5leHRDb21tYW5kKFNWR1BhdGhTZWdUeXBlKSBmaW5hbAorICAgIHsK
KyAgICAgICAgYXV0byB0eXBlID0gbV9zZWdtZW50cy5hdChtX2l0ZW1DdXJyZW50KS0+dHlwZSgp
OworICAgICAgICArK21faXRlbUN1cnJlbnQ7CisgICAgICAgIHJldHVybiB0eXBlOworICAgIH0K
KworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNlZ1R5cGU+IHBhcnNlU1ZHU2VnbWVudFR5cGUo
KSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFBhdGhTZWdNb3ZlVG9BYnM7CisgICAgfQor
CisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50PiBwYXJzZU1v
dmVUb1NlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2l0ZW1DdXJyZW50KQor
ICAgICAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6Ok1vdmVUb1NlZ21lbnQgeyBmbG9hdFBv
aW50Rm9yTGVuZ3RoUG9pbnQobV9zdGFydCwgbV9zaXplKSB9OworCisgICAgICAgIHJldHVybiBT
VkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50IHsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZh
bHVlPFNoYXBlU2VnbWVudE1vdmVUbz4oKSwgbV9zaXplKSB9OworICAgIH0KKworICAgIHN0ZDo6
b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvU2VnbWVudD4gcGFyc2VMaW5lVG9TZWdtZW50
KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpMaW5lVG9TZWdt
ZW50IHsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlPFNoYXBlU2VnbWVudExpbmVUbz4o
KSwgbV9zaXplKSB9OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6
TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQ+IHBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKSBm
aW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6OkxpbmVUb0hvcml6b250
YWxTZWdtZW50IHsgZmxvYXRWYWx1ZUZvckxlbmd0aCh2YWx1ZTxTaGFwZVNlZ21lbnRMaW5lVG9I
b3Jpem9udGFsPigpLCBtX3NpemUud2lkdGgoKSkgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlv
bmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb1ZlcnRpY2FsU2VnbWVudD4gcGFyc2VMaW5lVG9WZXJ0
aWNhbFNlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6
OkxpbmVUb1ZlcnRpY2FsU2VnbWVudCB7IGZsb2F0VmFsdWVGb3JMZW5ndGgodmFsdWU8U2hhcGVT
ZWdtZW50TGluZVRvVmVydGljYWw+KCksIG1fc2l6ZS5oZWlnaHQoKSkgfTsKKyAgICB9CisKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1NlZ21lbnQ+IHBhcnNl
Q3VydmVUb0N1YmljU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICBjb25zdCBhdXRvJiB2
YWx1ZSA9IHRoaXMtPnZhbHVlPFNoYXBlU2VnbWVudEN1cnZlVG9DdWJpYz4oKTsKKyAgICAgICAg
cmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1NlZ21lbnQgeyAgICAgICAgCisgICAg
ICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUucG9pbnQxLCBtX3NpemUpLAor
ICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnBvaW50MiwgbV9zaXpl
KSwKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS50YXJnZXRQb2lu
dCwgbV9zaXplKQorICAgICAgICB9OworICAgIH0KKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhT
b3VyY2U6OkN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQ+IHBhcnNlQ3VydmVUb0N1YmljU21vb3Ro
U2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMt
PnZhbHVlPFNoYXBlU2VnbWVudEN1cnZlVG9DdWJpY1Ntb290aD4oKTsKKyAgICAgICAgcmV0dXJu
IFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQgeyAgICAgICAgCisgICAg
ICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUucG9pbnQyLCBtX3NpemUpLAor
ICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnRhcmdldFBvaW50LCBt
X3NpemUpCisgICAgICAgIH07CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291
cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU2VnbWVu
dCgpIGZpbmFsCisgICAgeworICAgICAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVl
PFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWM+KCk7CisgICAgICAgIHJldHVybiBTVkdQYXRo
U291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCB7CisgICAgICAgICAgICBmbG9hdFBvaW50
Rm9yTGVuZ3RoUG9pbnQodmFsdWUucG9pbnQxLCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQ
b2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnRhcmdldFBvaW50LCBtX3NpemUpCisgICAgICAgIH07
CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJh
dGljU21vb3RoU2VnbWVudD4gcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpIGZp
bmFsCisgICAgeworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6Q3VydmVUb1F1YWRyYXRp
Y1Ntb290aFNlZ21lbnQgeyBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWU8U2hhcGVTZWdt
ZW50Q3VydmVUb1F1YWRyYXRpY1Ntb290aD4oKSwgbV9zaXplKSB9OworICAgIH0KKworICAgIHN0
ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50PiBwYXJzZUFyY1RvU2VnbWVu
dCgpIGZpbmFsCisgICAgeworICAgICAgICBjb25zdCBhdXRvJiB2YWx1ZSA9IHRoaXMtPnZhbHVl
PFNoYXBlU2VnbWVudEFyY1RvPigpOworICAgICAgICBhdXRvIHJhZGl1cyA9IGZsb2F0U2l6ZUZv
ckxlbmd0aFNpemUodmFsdWUucmFkaXVzLCBtX3NpemUpOworICAgICAgICByZXR1cm4gU1ZHUGF0
aFNvdXJjZTo6QXJjVG9TZWdtZW50IHsKKyAgICAgICAgICAgIC5yeCA9IHJhZGl1cy53aWR0aCgp
LAorICAgICAgICAgICAgLnJ5ID0gcmFkaXVzLmhlaWdodCgpLAorICAgICAgICAgICAgLmFuZ2xl
ID0gdmFsdWUuYW5nbGUsCisgICAgICAgICAgICAubGFyZ2VBcmMgPSB2YWx1ZS5sYXJnZUFyYywK
KyAgICAgICAgICAgIC5zd2VlcCA9IHZhbHVlLnN3ZWVwLAorICAgICAgICAgICAgLnRhcmdldFBv
aW50ID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZhbHVlLnRhcmdldFBvaW50LCBtX3NpemUp
CisgICAgICAgIH07CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBjb25z
dCB0eXBlbmFtZSBUOjpWYWx1ZSYgdmFsdWUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faXRl
bUN1cnJlbnQgPD0gbV9zZWdtZW50cy5zaXplKCkpOworICAgICAgICByZXR1cm4gZXh0cmFjdFZh
bHVlPFQ+KG1fc2VnbWVudHMuYXQobV9pdGVtQ3VycmVudCAtIDEpLmdldCgpKTsKKyAgICB9CisK
KyAgICBjb25zdCBMZW5ndGhQb2ludCYgbV9zdGFydDsKKyAgICBjb25zdCBWZWN0b3I8UmVmPEJh
c2ljU2hhcGVTZWdtZW50Pj4mIG1fc2VnbWVudHM7CisgICAgRmxvYXRTaXplIG1fc2l6ZTsKKyAg
ICBzaXplX3QgbV9pdGVtRW5kOworICAgIHNpemVfdCBtX2l0ZW1DdXJyZW50ID0gMDsKK307CisK
K1BhdGggQmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aChjb25zdCBMZW5ndGhQb2ludCYgc3RhcnQs
IGNvbnN0IFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYgc2VnbWVudHMsIGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBTaGFwZVNWR1BhdGhTb3VyY2Ugc291cmNlKHN0YXJ0LCBz
ZWdtZW50cywgc2l6ZSk7CisgICAgUGF0aCBwYXRoOworICAgIFNWR1BhdGhCdWlsZGVyIGJ1aWxk
ZXIocGF0aCk7CisgICAgU1ZHUGF0aFBhcnNlcjo6cGFyc2Uoc291cmNlLCBidWlsZGVyKTsKKyAg
ICByZXR1cm4gcGF0aDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNWQxOGNlODUwNmNlNjJkZDMy
NjU3NTRkZTA3NDZhZDBiYzE5NDZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmgKQEAgLTAsMCArMSwxNDkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIkxl
bmd0aFBvaW50LmgiCisjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgorI2luY2x1ZGUgIlNWR1BhdGhT
ZWcuaCIKKyNpbmNsdWRlICJTVkdQYXRoU291cmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RydWN0IEJsZW5kaW5nQ29udGV4dDsKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIFBhdGg7
CisKK3N0cnVjdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlIHsKKyAgICBMZW5ndGhQb2ludCBw
b2ludDE7CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQyOworICAgIExlbmd0aFBvaW50IHRhcmdldFBv
aW50OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBwb2ludDEgPT0gb3RoZXIucG9p
bnQxICYmIHBvaW50MiA9PSBvdGhlci5wb2ludDIgJiYgdGFyZ2V0UG9pbnQgPT0gb3RoZXIudGFy
Z2V0UG9pbnQ7CisgICAgfQorfTsKKworc3RydWN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2Vn
VmFsdWUgeworICAgIExlbmd0aFBvaW50IHBvaW50MjsKKyAgICBMZW5ndGhQb2ludCB0YXJnZXRQ
b2ludDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VydmVUb0N1YmljU21vb3RoU2hhcGVT
ZWdWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gcG9pbnQyID09IG90
aGVyLnBvaW50MiAmJiB0YXJnZXRQb2ludCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9Cit9
OworCitzdHJ1Y3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUgeworICAgIExlbmd0aFBv
aW50IHBvaW50MTsKKyAgICBMZW5ndGhQb2ludCB0YXJnZXRQb2ludDsKKworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYgb3RoZXIpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gcG9pbnQxID09IG90aGVyLnBvaW50MSAmJiB0YXJnZXRQ
b2ludCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9Cit9OworCisKK3N0cnVjdCBBcmNUb1No
YXBlU2VnVmFsdWUgeworICAgIExlbmd0aFNpemUgcmFkaXVzOworICAgIGZsb2F0IGFuZ2xlID0g
MDsKKyAgICBib29sIHN3ZWVwID0gZmFsc2U7CisgICAgYm9vbCBsYXJnZUFyYyA9IGZhbHNlOwor
ICAgIExlbmd0aFBvaW50IHRhcmdldFBvaW50OworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEFyY1RvU2hhcGVTZWdWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
cmFkaXVzID09IG90aGVyLnJhZGl1cyAmJiBhbmdsZSA9PSBvdGhlci5hbmdsZSAmJiBzd2VlcCA9
PSBvdGhlci5zd2VlcCAmJiBsYXJnZUFyYyA9PSBvdGhlci5sYXJnZUFyYyAmJiB0YXJnZXRQb2lu
dCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9Cit9OworCisKK0N1cnZlVG9DdWJpY1NoYXBl
U2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEN1
cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKTsKK0N1cnZl
VG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb0N1YmljU21vb3Ro
U2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmLCBj
b25zdCBCbGVuZGluZ0NvbnRleHQmKTsKK0N1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlIGJs
ZW5kKGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQ3VydmVUb1F1
YWRyYXRpY1NoYXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKTsKK0FyY1RvU2hh
cGVTZWdWYWx1ZSBibGVuZChjb25zdCBBcmNUb1NoYXBlU2VnVmFsdWUmLCBjb25zdCBBcmNUb1No
YXBlU2VnVmFsdWUmLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmKTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWVUeXBlLCBTVkdQYXRoU2VnVHlwZSBBYnNUeXBlLCBTVkdQYXRoU2VnVHlwZSBSZWxU
eXBlPgorc3RydWN0IFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uIHsKKyAgICB0eXBlZGVmIFZh
bHVlVHlwZSBWYWx1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gQWJzU2VnVHlwZSA9IEFi
c1R5cGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIFJlbFNlZ1R5cGUgPSBSZWxUeXBlOwor
fTsKKworc3RydWN0IFNoYXBlU2VnbWVudE1vdmVUbyA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBl
RGVmaW5pdGlvbjxMZW5ndGhQb2ludCwgUGF0aFNlZ01vdmVUb0FicywgUGF0aFNlZ01vdmVUb1Jl
bD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudExpbmVUbyA6IHB1YmxpYyBTaGFwZVNlZ21lbnRU
eXBlRGVmaW5pdGlvbjxMZW5ndGhQb2ludCwgUGF0aFNlZ0xpbmVUb0FicywgUGF0aFNlZ0xpbmVU
b1JlbD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudExpbmVUb0hvcml6b250YWwgOiBwdWJsaWMg
U2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248TGVuZ3RoLCBQYXRoU2VnTGluZVRvSG9yaXpvbnRh
bEFicywgUGF0aFNlZ0xpbmVUb0hvcml6b250YWxSZWw+IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21l
bnRMaW5lVG9WZXJ0aWNhbCA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxMZW5n
dGgsIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbEFicywgUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsUmVsPiB7
IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50Q3VydmVUb0N1YmljIDogcHVibGljIFNoYXBlU2VnbWVu
dFR5cGVEZWZpbml0aW9uPEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUsIFBhdGhTZWdDdXJ2ZVRv
Q3ViaWNBYnMsIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNSZWw+IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21l
bnRDdXJ2ZVRvUXVhZHJhdGljIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPEN1
cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlLCBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY0Ficywg
UGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNSZWw+IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRDdXJ2
ZVRvQ3ViaWNTbW9vdGggOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248Q3VydmVU
b0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSwgUGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aEFicywg
UGF0aFNlZ0N1cnZlVG9DdWJpY1Ntb290aFJlbD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudEN1
cnZlVG9RdWFkcmF0aWNTbW9vdGggOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248
TGVuZ3RoUG9pbnQsIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21vb3RoQWJzLCBQYXRoU2VnQ3Vy
dmVUb1F1YWRyYXRpY1Ntb290aFJlbD4geyB9Oworc3RydWN0IFNoYXBlU2VnbWVudEFyY1RvIDog
cHVibGljIFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPEFyY1RvU2hhcGVTZWdWYWx1ZSwgUGF0
aFNlZ0FyY0FicywgUGF0aFNlZ0FyY1JlbD4geyB9OworCisjZGVmaW5lIEZPUl9FQUNIX1NIQVBF
X1NFR01FTlRfVFlQRV9XSVRIX1ZBTFVFKE1hY3JvKSBcCisgICAgTWFjcm8oTW92ZVRvKSBcCisg
ICAgTWFjcm8oTGluZVRvKSBcCisgICAgTWFjcm8oTGluZVRvSG9yaXpvbnRhbCkgXAorICAgIE1h
Y3JvKExpbmVUb1ZlcnRpY2FsKSBcCisgICAgTWFjcm8oQ3VydmVUb0N1YmljKSBcCisgICAgTWFj
cm8oQ3VydmVUb1F1YWRyYXRpYykgXAorICAgIE1hY3JvKEN1cnZlVG9DdWJpY1Ntb290aCkgXAor
ICAgIE1hY3JvKEN1cnZlVG9RdWFkcmF0aWNTbW9vdGgpIFwKKyAgICBNYWNybyhBcmNUbykKKwor
Y2xhc3MgQmFzaWNTaGFwZVNlZ21lbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxCYXNpY1NoYXBlU2Vn
bWVudD4geworcHVibGljOgorICAgIHR5cGVkZWYgU1ZHUGF0aFNlZ1R5cGUgVHlwZTsKKyAgICB+
QmFzaWNTaGFwZVNlZ21lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KKworICAgIFJlZjxCYXNpY1NoYXBlU2VnbWVudD4gYmxlbmQoY29u
c3QgQmFzaWNTaGFwZVNlZ21lbnQmIGZyb20sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYpIGNvbnN0
OworICAgIGJvb2wgZXF1YWxzKGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JikgY29uc3Q7CisKKyAg
ICBzdGF0aWMgUGF0aCB0b1BhdGgoY29uc3QgTGVuZ3RoUG9pbnQmIHN0YXJ0LCBjb25zdCBWZWN0
b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mLCBjb25zdCBGbG9hdFNpemUmKTsKKworI2RlZmlu
ZSBERUZJTkVfU0hBUEVfU0VHTUVOVF9UWVBFKFQpIFwKKyAgICBzdGF0aWMgUmVmPEJhc2ljU2hh
cGVTZWdtZW50PiBjcmVhdGUjI1QoVHlwZSwgdHlwZW5hbWUgU2hhcGVTZWdtZW50IyNUOjpWYWx1
ZSYmKTsgXAorICAgIGNvbnN0IHR5cGVuYW1lIFNoYXBlU2VnbWVudCMjVDo6VmFsdWUmIGFzIyNU
KCkgY29uc3Q7CisKKyAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9WQUxVRShE
RUZJTkVfU0hBUEVfU0VHTUVOVF9UWVBFKQorCisgICAgc3RhdGljIFJlZjxCYXNpY1NoYXBlU2Vn
bWVudD4gY3JlYXRlQ2xvc2VQYXRoKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEJhc2ljU2hhcGVTZWdtZW50KFBhdGhTZWdDbG9zZVBhdGgpKTsKKyAgICB9CisKK3Byb3Rl
Y3RlZDoKKyAgICBCYXNpY1NoYXBlU2VnbWVudChUeXBlIHQpCisgICAgICAgIDogbV90eXBlKHQp
IHsgfQorCitwcml2YXRlOgorICAgIFR5cGUgbV90eXBlOworfTsKKworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAppbmRleCAwODZhNmY2YTYz
YTI1ZTUwMjNhZTk1YmZhODRmNGZhN2Q0ZmZjMjYyLi42NzNmZWE2YzRkMjYzMDBhNjg3ZjlkNWRh
M2I4NjMzZTg1ZTAwMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9C
YXNpY1NoYXBlcy5jcHAKQEAgLTEyMSw2ICsxMjEsNDQgQEAgc3RydWN0IFRyYW5zZm9ybWVkQnl0
ZVN0cmVhbVBhdGhQb2xpY3kgOiBUaW55TFJVQ2FjaGVQb2xpY3k8U1ZHUGF0aFRyYW5zZm9ybWVk
QnkKICAgICBzdGF0aWMgUGF0aCBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBTVkdQYXRoVHJhbnNm
b3JtZWRCeXRlU3RyZWFtJiBzdHJlYW0pIHsgcmV0dXJuIHN0cmVhbS5wYXRoKCk7IH0KIH07CiAK
K3N0cnVjdCBTaGFwZVNlZ21lbnRzV2l0aEJveCB7CisgICAgTGVuZ3RoUG9pbnQgc3RhcnQ7Cisg
ICAgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+IHNlZ21lbnRzOworICAgIEZsb2F0UmVj
dCBib3g7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcGVTZWdtZW50c1dpdGhCb3gm
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGJveCAhPSBvdGhlci5ib3ggfHwgc2Vn
bWVudHMuc2l6ZSgpID09IG90aGVyLnNlZ21lbnRzLnNpemUoKSB8fCBzdGFydCAhPSBvdGhlci5z
dGFydCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNlZ21lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoIXNlZ21l
bnRzLmF0KGkpLT5lcXVhbHMob3RoZXIuc2VnbWVudHMuYXQoaSkuZ2V0KCkpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFwZVNlZ21lbnRzV2l0aEJveCYg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Cisg
ICAgfQorfTsKKworc3RydWN0IFNoYXBlU2VnbWVudHNQYXRoUG9saWN5IDogVGlueUxSVUNhY2hl
UG9saWN5PFNoYXBlU2VnbWVudHNXaXRoQm94LCBQYXRoPiB7CisgICAgc3RhdGljIGJvb2wgaXNL
ZXlOdWxsKGNvbnN0IFNoYXBlU2VnbWVudHNXaXRoQm94JiBzZWdtZW50c1dpdGhCb3gpCisgICAg
eworICAgICAgICByZXR1cm4gc2VnbWVudHNXaXRoQm94LnNlZ21lbnRzLmlzRW1wdHkoKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgUGF0aCBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBTaGFwZVNlZ21l
bnRzV2l0aEJveCYgc2VnbWVudHNXaXRoQm94KQorICAgIHsKKyAgICAgICAgYXV0byBwYXRoID0g
QmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aChzZWdtZW50c1dpdGhCb3guc3RhcnQsIHNlZ21lbnRz
V2l0aEJveC5zZWdtZW50cywgc2VnbWVudHNXaXRoQm94LmJveC5zaXplKCkpOworICAgICAgICBw
YXRoLnRyYW5zbGF0ZSh0b0Zsb2F0U2l6ZShzZWdtZW50c1dpdGhCb3guYm94LmxvY2F0aW9uKCkp
KTsKKyAgICAgICAgcmV0dXJuIHBhdGg7CisgICAgfQorfTsKKwogc3RhdGljIGNvbnN0IFBhdGgm
IGNhY2hlZEVsbGlwc2VQYXRoKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPEZsb2F0UmVjdCwgUGF0aCwgNCwgRWxsaXBzZVBh
dGhQb2xpY3k+PiBjYWNoZTsKQEAgLTE0NSw2ICsxODMsMTIgQEAgc3RhdGljIGNvbnN0IFBhdGgm
IGNhY2hlZFRyYW5zZm9ybWVkQnl0ZVN0cmVhbVBhdGgoY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0m
IHN0cmUKICAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KFNWR1BhdGhUcmFuc2Zvcm1lZEJ5dGVT
dHJlYW0geyBzdHJlYW0sIHpvb20sIG9mZnNldCB9KTsKIH0KIAorc3RhdGljIGNvbnN0IFBhdGgm
IGNhY2hlZFNoYXBlU2VnbWVudHNQYXRoKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBjb25zdCBW
ZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mIHNlZ21lbnRzLCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlMUlVDYWNoZTxTaGFwZVNl
Z21lbnRzV2l0aEJveCwgUGF0aCwgNCwgU2hhcGVTZWdtZW50c1BhdGhQb2xpY3k+PiBjYWNoZTsK
KyAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KFNoYXBlU2VnbWVudHNXaXRoQm94IHsgZnJvbSwg
c2VnbWVudHMsIHJlY3QgfSk7Cit9CisKIGJvb2wgQmFzaWNTaGFwZUNpcmNsZTo6b3BlcmF0b3I9
PShjb25zdCBCYXNpY1NoYXBlJiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAodHlwZSgpICE9IG90
aGVyLnR5cGUoKSkKQEAgLTQ2Myw2ICs1MDcsNzggQEAgdm9pZCBCYXNpY1NoYXBlSW5zZXQ6OmR1
bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgdHMuZHVtcFByb3BlcnR5KCJib3R0b20tbGVm
dC1yYWRpdXMiLCBib3R0b21MZWZ0UmFkaXVzKCkpOwogfQogCisKK0Jhc2ljU2hhcGVTaGFwZTo6
QmFzaWNTaGFwZVNoYXBlKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBWZWN0b3I8UmVmPEJhc2lj
U2hhcGVTZWdtZW50Pj4mJiBzZWdtZW50cykKKyAgICA6IG1fc2VnbWVudHMobWFrZVVuaXF1ZTxW
ZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4+KFdURk1vdmUoc2VnbWVudHMpKSkKKyAgICAs
IG1fZnJvbShmcm9tKQoreworfQorCitjb25zdCBQYXRoJiBCYXNpY1NoYXBlU2hhcGU6OnBhdGgo
Y29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkKK3sKKyAgICByZXR1cm4gY2FjaGVkU2hhcGVT
ZWdtZW50c1BhdGgobV9mcm9tLCAqbV9zZWdtZW50cywgYm91bmRpbmdCb3gpOworfQorCitib29s
IEJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJiBvdGhlcikgY29u
c3QKK3sKKyAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgY29uc3QgQmFzaWNTaGFwZVNoYXBlJiBvdGhlclNoYXBlID0gZG93bmNhc3Q8
QmFzaWNTaGFwZVNoYXBlPihvdGhlcik7CisgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOwor
ICAgIGlmICh3aW5kUnVsZSgpICE9IG90aGVyU2hhcGUud2luZFJ1bGUoKSB8fCBzaXplID09IG90
aGVyU2hhcGUuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoIWF0KGkpLmVxdWFscyhvdGhl
clNoYXBlLmF0KGkpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kKGNvbnN0IEJh
c2ljU2hhcGUmIG90aGVyKSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gb3RoZXIudHlwZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7
CisgICAgYXV0byYgb3RoZXJTaGFwZSA9IGRvd25jYXN0PEJhc2ljU2hhcGVTaGFwZT4ob3RoZXIp
OworICAgIGlmICh3aW5kUnVsZSgpICE9IG90aGVyU2hhcGUud2luZFJ1bGUoKSB8fCBzaXplICE9
IG90aGVyU2hhcGUuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoYXQoaSkudHlwZSgpICE9
IG90aGVyU2hhcGUuYXQoaSkudHlwZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCitSZWY8QmFzaWNTaGFwZT4gQmFzaWNTaGFwZVNo
YXBlOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBmcm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQm
IGNvbnRleHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBmcm9tLnR5cGUoKSk7Cisg
ICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOworICAgIGF1dG8mIGZyb21TaGFwZSA9IGRvd25j
YXN0PEJhc2ljU2hhcGVTaGFwZT4oZnJvbSk7CisgICAgQVNTRVJUKHNpemUgPT0gZnJvbVNoYXBl
LnNpemUoKSk7CisKKyAgICBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4gcmVzdWx0Owor
ICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoYXQoaSkuYmxl
bmQoZnJvbVNoYXBlLmF0KGkpLCBjb250ZXh0KSk7CisKKyAgICBhdXRvIG5ld1NoYXBlID0gQmFz
aWNTaGFwZVNoYXBlOjpjcmVhdGUoV2ViQ29yZTo6YmxlbmQoZnJvbVNoYXBlLmZyb20oKSwgbV9m
cm9tLCBjb250ZXh0KSwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICBuZXdTaGFwZS0+c2V0V2luZFJ1
bGUod2luZFJ1bGUoKSk7CisgICAgcmV0dXJuIG5ld1NoYXBlOworfQorCit2b2lkIEJhc2ljU2hh
cGVTaGFwZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKK3sKKyAgICB0cy5kdW1wUHJvcGVy
dHkoIndpbmQtcnVsZSIsIHdpbmRSdWxlKCkpOworICAgIC8vIEZJWE1FOiBwcmludCB0aGUgYnl0
ZSBzdHJlYW0/Cit9CisKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBCYXNpY1NoYXBlUmFkaXVzOjpUeXBlIHJhZGl1c1R5cGUpCiB7CiAgICAgc3dpdGNoIChy
YWRpdXNUeXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBl
cy5oCmluZGV4IDliZjAzNzM0NzZiNTNlNWM3YTRhOWJjNjIzOWU0NWVjNGFkNTM0ZTQuLjMxZThm
M2RmNWRjYjE2MmU4MjUzNzM0ZDRiNWNjZWI5MGNlYzkxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCkBAIC0zMCw2ICszMCw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIkxlbmd0aFBvaW50LmgiCiAj
aW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgogI2luY2x1ZGUgIldpbmRSdWxlLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ3LDYgKzQ4LDcgQEAgc3RydWN0IEJsZW5kaW5nQ29udGV4
dDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIFBhdGg7CiBjbGFzcyBSZW5kZXJCb3g7CitjbGFz
cyBCYXNpY1NoYXBlU2VnbWVudDsKIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFtOwogCiBjbGFzcyBC
YXNpY1NoYXBlIDogcHVibGljIFJlZkNvdW50ZWQ8QmFzaWNTaGFwZT4gewpAQCAtNTgsNyArNjAs
OCBAQCBwdWJsaWM6CiAgICAgICAgIFBhdGgsCiAgICAgICAgIENpcmNsZSwKICAgICAgICAgRWxs
aXBzZSwKLSAgICAgICAgSW5zZXQKKyAgICAgICAgSW5zZXQsCisgICAgICAgIFNoYXBlCiAgICAg
fTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwpAQCAtMzQzLDYgKzM0Niw0
MSBAQCBwcml2YXRlOgogICAgIExlbmd0aFNpemUgbV9ib3R0b21MZWZ0UmFkaXVzOwogfTsKIAor
Y2xhc3MgQmFzaWNTaGFwZVNoYXBlIDogcHVibGljIEJhc2ljU2hhcGUgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8QmFzaWNTaGFwZVNoYXBlPiBjcmVhdGUoY29uc3QgTGVuZ3RoUG9pbnQmIGZy
b20sIFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYmIHNlZ21lbnRzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNTaGFwZVNoYXBlKGZyb20sIFdURk1vdmUo
c2VnbWVudHMpKSk7CisgICAgfQorCisgICAgdm9pZCBzZXRXaW5kUnVsZShXaW5kUnVsZSB3aW5k
UnVsZSkgeyBtX3dpbmRSdWxlID0gd2luZFJ1bGU7IH0KKyAgICBXaW5kUnVsZSB3aW5kUnVsZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0KKworICAgIGNvbnN0IExlbmd0
aFBvaW50JiBmcm9tKCkgY29uc3QgeyByZXR1cm4gbV9mcm9tOyB9CisKKyAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMtPnNpemUoKTsgfQorICAgIGNvbnN0IEJhc2lj
U2hhcGVTZWdtZW50JiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy0+YXQo
aSkuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBCYXNpY1NoYXBlU2hhcGUoY29uc3QgTGVuZ3Ro
UG9pbnQmLCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mJik7CisKKyAgICBUeXBlIHR5
cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBUeXBlOjpTaGFwZTsgfQorCisKKyAgICBjb25z
dCBQYXRoJiBwYXRoKGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworCisgICAgYm9vbCBjYW5C
bGVuZChjb25zdCBCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEJhc2ljU2hh
cGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIGZyb20sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJhc2ljU2hhcGUm
KSBjb25zdCBvdmVycmlkZTsKKworICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJikgY29uc3QgZmlu
YWw7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+
PiBtX3NlZ21lbnRzOworICAgIFdpbmRSdWxlIG1fd2luZFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVy
byB9OworICAgIExlbmd0aFBvaW50IG1fZnJvbTsKK307CisKIFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBCYXNpY1NoYXBlUmFkaXVzJik7CiBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQmFzaWNTaGFw
ZUNlbnRlckNvb3JkaW5hdGUmKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRl
eHRTdHJlYW0mLCBjb25zdCBCYXNpY1NoYXBlJik7CkBAIC0zNTksMyArMzk3LDQgQEAgU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQRShCYXNpY1NoYXBlRWxsaXBzZSwgQmFzaWNTaGFw
ZTo6VHlwZTo6RWxsaXBzZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkFTSUNfU0hBUEUoQmFz
aWNTaGFwZVBvbHlnb24sIEJhc2ljU2hhcGU6OlR5cGU6OlBvbHlnb24pCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVQYXRoLCBCYXNpY1NoYXBlOjpUeXBlOjpQ
YXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQRShCYXNpY1NoYXBlSW5zZXQs
IEJhc2ljU2hhcGU6OlR5cGU6Okluc2V0KQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CQVNJQ19T
SEFQRShCYXNpY1NoYXBlU2hhcGUsIEJhc2ljU2hhcGU6OlR5cGU6OlNoYXBlKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQz
NDUzNDhmOWQ5ZmMyMTIzZDE5NWNhM2E5YzkyYjM1MTRlMzI4NGUuLjRmNjYxMDMwZDJkNDFhYWYx
YWI5NGI5M2MxNDIxY2MzZjI3MmQxNDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wNC0x
OSAgTm9hbSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFw
ZXNdIEFkZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5
NDc2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdEV4cGVjdGF0aW9uczogdW5za2lwIENTUyBzaGFwZSgpIHRlc3RzCisKIDIwMjItMDQtMTgg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
R1BVXSBVbnNraXAgYXBpL3ZhbGlkYXRpb24vY3JlYXRlU2FtcGxlci5odG1sIPCfjokKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDY0ZWE2NTdlNmUwNDJhYzNkMTAxOGM4ZGQ4ZDhm
YzAyMjVmZWJhMDcuLmFkZjY0NWUyMzkyZDVhOTc5N2YyZjdjNjRmOWRiMGYzMjRmMDc2YzMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTA0LTE5
ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbQ1NTIFNoYXBl
c10gQWRkIHN1cHBvcnQgZm9yIHNoYXBlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODM3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTA5MTk0
NzY+CisKKyAgICAgICAgQW1lbmRlZCB0ZXN0cyB0byBzdXBwb3J0IENTUyBzaGFwZSgpCisKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlw
LXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy5odG1sOgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2Ns
aXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgICAgICAgICBOZWVkZWQg
dG8gY2hhbmdlIHRoZSB0ZXN0IGEgYml0IGJlY2F1c2Ugb2Ygc3RyYXkgcGl4ZWxzLiBXaWxsIHVw
c3RyZWFtLgorCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5n
L3BhcnNpbmcvY2xpcC1wYXRoLXNoYXBlLXBhcnNpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAg
ICAgICAgIE5vdyBwYXNzZXMKKwogMjAyMi0wNC0xOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBDU1NUcmFuc2Zvcm1WYWx1
ZS5pczJECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhZTc2MjZiM2JmMzlhN2FiODY2YmY0YzQyOGY2
YTM4Y2IxODYxOWE0Li5iZjA5MmRkNTJkM2FiMWUwNTQ5OGZhYjBjNmU5ZGU4ZWMzOWQ4NGE4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIxOTksMTUgKzIxOTksNiBAQCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXZpZXdC
b3gtMWMuaAogd2Via2l0Lm9yZy9iLzEwNDQ0MiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXVybC1yZWZlcmVuY2UtY2hh
bmdlLWZyb20tZW1wdHkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIy
OTUxMCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlw
LXBhdGgvY2xpcC1wYXRoLWRlc2NlbmRhbnQtdGV4dC1tdXRhdGVkLTAwMS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiAKLSMgQ1NTIHNoYXBlKCkKLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAt
cGF0aC1zaGFwZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIz
ODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlw
LXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMi11bml0cy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAyLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNo
YXBlLTAwNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM4MzcxIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9j
bGlwLXBhdGgtc2hhcGUtaW50ZXJwb2xhdGlvbi0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLWludGVycG9sYXRpb24tMDAy
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIyOTM3MCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwL2NsaXAtZmlsdGVy
LW9yZGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMjkzNzAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvbWFzay1pbWFnZS9t
YXNrLWltYWdlLXVybC1sb2NhbC1tYXNrLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8yMjkzNzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1h
c2tpbmcvbWFzay1pbWFnZS9tYXNrLWltYWdlLXVybC1yZW1vdGUtbWFzay5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAw
My1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMtZXhwZWN0
ZWQuaHRtbAppbmRleCA0NmUwOThjNGViNjQ4OWZjNDQzMDFkNmJmOWIyNDNlODM2YjJjYTMxLi4z
MWU5N2M5MTQ3NDQ4YWE4NDkyNjQyZTQxOTZhYTkxYjVjYTZhNDg4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9j
bGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAt
cGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWwKQEAgLTksMTQgKzksMjMgQEAK
ICAgICB3aWR0aDogMTAwcHg7CiAgICAgaGVpZ2h0OiAxMDBweDsKICAgfQotICAjcmVmIHsKLSAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKworICAjcmVmLCAjYWN0dWFsIHsKICAgICBjbGlw
LXBhdGg6IHBhdGgobm9uemVybywgIk0gMTAgMTAsIFEgNDAgMCA2MCAyMCwgVCA5MCAwLCBjIDEw
IDQwIDIwIDIwIC0yMCA2MCwgcyAtMTAgNzAgLTQwIC0xMCIpOwogICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKICAgfQorCisgICNyZWYgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgfQor
CisgICNhY3R1YWwgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICB9CiA8L3N0eWxl
PgogPGJvZHk+CiAgIDxwPllvdSBzaG91bGQgc2VlIG5vIHJlZC48L3A+CiAgIDxkaXYgaWQ9InJl
ZiI+PC9kaXY+CisgIDxkaXYgaWQ9ImFjdHVhbCI+PC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xp
cC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbAppbmRleCAyMmU3ZDlhYWY1Mzc0YzliN2U0
ZTNjMmQ1MGVjZWZiY2VjMTM0YjY2Li5lMDE3MDkwMDVhYzhjZjhlMzVkMDYyYTY4NTdiNjQ2Mjdi
NWViZTA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLmh0bWwKQEAgLTYsNiArNiw3
IEBACiAgIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InJlZmVyZW5jZS9jbGlwLXBhdGgtc2hhcGUt
MDAzLXJlZi5odG1sIj4KICAgPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUaGUgY2xpcC1w
YXRoIHByb3BlcnR5IHRha2VzIHRoZSBiYXNpYyBzaGFwZQogCSdzaGFwZSgpJyBmb3IgY2xpcHBp
bmcuIFRlc3QgY3VydmVzLiI+CisgIDxtZXRhIG5hbWU9ImZ1enp5IiBjb250ZW50PSJtYXhEaWZm
ZXJlbmNlPTgwOyB0b3RhbFBpeGVscz0zOTQiPgogPC9oZWFkPgogPHN0eWxlPgogICBkaXYgewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1t
YXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4cGVjdGVkLmh0bWwKaW5kZXgg
ZWM4Zjk0MTA3OTUxMzhmN2EzNDkwZDdhNDE2OWI1ZWJkNWUzNzQ3NC4uMTBmNDU3YjkxMTg0ZjEw
MTMwNjg5YTI3MzA1ZmMyZGQzNjZlMjgzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAt
cGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRo
LXNoYXBlLTAwNC1leHBlY3RlZC5odG1sCkBAIC05LDE0ICs5LDIzIEBACiAgICAgd2lkdGg6IDEw
MHB4OwogICAgIGhlaWdodDogMTAwcHg7CiAgIH0KLSAgI3JlZiB7Ci0gICAgYmFja2dyb3VuZC1j
b2xvcjogZ3JlZW47CisKKyAgI3JlZiwgI2FjdHVhbCB7CiAgICAgY2xpcC1wYXRoOiBwYXRoKG5v
bnplcm8sICJNIDIwIDIwIEEgMjUgMTIgMCAwIDEgODAgMjAsIGEgMzMgMzMgMTIwIDEgMSAtNDAg
NTAsIEEgMjAgMjUgMCAwIDAgMjAgMjAiKTsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgIH0K
KworICAjcmVmIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgIH0KKworICAjYWN0dWFs
IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgfQogPC9zdHlsZT4KIDxib2R5Pgog
ICA8cD5Zb3Ugc2hvdWxkIHNlZSBubyByZWQuPC9wPgogICA8ZGl2IGlkPSJyZWYiPjwvZGl2Pgor
ICA8ZGl2IGlkPSJhY3R1YWwiPjwvZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tp
bmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJz
aW5nL2NsaXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAppbmRleCBlOTRhZWU4YjZi
NGNiMDRmN2FmZTgyYWQ2NWIzYzE0OGJjNDExMjVmLi5lMDU4MGVkZmMxZDhlZjMyNzc1YjVkOTZm
Mzg3ZWU1ZTdhNDdhMzBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2NsaXAtcGF0aC1zaGFwZS1w
YXJzaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2NsaXAtcGF0aC1zaGFwZS1wYXJz
aW5nLWV4cGVjdGVkLnR4dApAQCAtMSwyNCArMSwyNCBAQAogCi1GQUlMIGUuc3R5bGVbJ2NsaXAt
cGF0aCddID0gInNoYXBlKGZyb20gMHB4IDBweCwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQg
c2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxk
IGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgn
XSA9ICJzaGFwZShldmVub2RkIGZyb20gMHB4IDBweCwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91
bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hv
dWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBh
dGgnXSA9ICJzaGFwZShub256ZXJvIGZyb20gMHB4IDBweCwgbGluZSB0byAxMHB4IDEwcHgpIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkg
c2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlw
LXBhdGgnXSA9ICJzaGFwZSggIGZyb20gMHB4ICAgIDBweCwgbGluZSAgdG8gMTBweCAgMTBweCAg
ICAgKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHBy
b3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHls
ZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxZW0gNTAlLCBsaW5lIHRvIDEwcHggMTBweCki
IHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0
eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2Ns
aXAtcGF0aCddID0gInNoYXBlKEV2ZW5PZGQgZnJvbSAwcHggMFB4LCBDTE9TRSkiIHNob3VsZCBz
ZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQg
YmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCdd
ID0gInNoYXBlKGZyb20gMWNoIDUwcHgsIGxpbmUgdG8gMTByZW0gMTB2aCkiIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUg
c2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0g
InNoYXBlKGZyb20gMWNoIC01MHB4LCBsaW5lIHRvIC0xMCUgMTJweCkiIHNob3VsZCBzZXQgdGhl
IHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0
IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNo
YXBlKGZyb20gMTBweCAxMHB4LCBtb3ZlIGJ5IDEwcHggNXB4LCBsaW5lIGJ5IDIwcHggNDAlLCBj
bG9zZSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBw
cm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5
bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBobGluZSBieSAxMHB4LCB2
bGluZSB0byA1cmVtKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9l
cXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZB
SUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIHZsaW5lIGJ5
IDUlLCBobGluZSB0byAxdncpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRf
bm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAi
IgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3Vy
dmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZh
bHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxv
d2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBw
eCAxMHB4LCBjdXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEwcmVtIDFweCAyMHZoIDFjaCkiIHNob3Vs
ZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91
bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0
aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2ZSBieSA1MHB4IDIwcHggdmlhIDEwcmVt
IDFweCAyMHZoIDFjaCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3Rf
ZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1G
QUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBzbW9vdGgg
dG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVl
IGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2Vk
IHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAx
MHB4LCBzbW9vdGggdG8gNTBweCAxcHQpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBh
c3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2
YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBw
eCwgYXJjIHRvIDUwcHggMXB0IG9mIDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5
IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNh
bGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20g
MTBweCAxMHB4LCBhcmMgdG8gNTBweCAxcHQgb2YgMTBweCAxMHB4IHNtYWxsIHJvdGF0ZSAwZGVn
KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3Bl
cnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsn
Y2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMCUgMXJlbSwgYXJjIHRvIDUwcHggMXB0IG9mIDIw
JSBjdyBsYXJnZSByb3RhdGUgMjVkZWcpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBh
c3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2
YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShldmVub2RkIGZyb20g
MHB4IDBweCwgY2xvc2UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90
X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgor
UEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDBweCAwcHgsIGxpbmUgdG8g
MTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Y2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAx
MHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1w
YXRoJ10gPSAic2hhcGUobm9uemVybyBmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIg
c2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10g
PSAic2hhcGUoICBmcm9tIDBweCAgICAwcHgsIGxpbmUgIHRvIDEwcHggIDEwcHggICAgICkiIHNo
b3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0g
InNoYXBlKGZyb20gMWVtIDUwJSwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShFdmVuT2Rk
IGZyb20gMHB4IDBQeCwgQ0xPU0UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFT
UyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFjaCA1MHB4LCBsaW5lIHRvIDEw
cmVtIDEwdmgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydj
bGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFjaCAtNTBweCwgbGluZSB0byAtMTAlIDEycHgpIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9
ICJzaGFwZShmcm9tIDEwcHggMTBweCwgbW92ZSBieSAxMHB4IDVweCwgbGluZSBieSAyMHB4IDQw
JSwgY2xvc2UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydj
bGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgaGxpbmUgYnkgMTBweCwgdmxpbmUg
dG8gNXJlbSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2Ns
aXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCB2bGluZSBieSA1JSwgaGxpbmUgdG8g
MXZ3KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1w
YXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUwcHggMjBweCB2aWEgMTBy
ZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlw
LXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUgdG8gNTBweCAyMHB4IHZpYSAx
MHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBl
LnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUgYnkgNTBw
eCAyMHB4IHZpYSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwg
c21vb3RoIHRvIDUwcHggMjBweCB2aWEgMTByZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0
eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBw
eCwgc21vb3RoIHRvIDUwcHggMXB0KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BB
U1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGFyYyB0byA1
MHB4IDFwdCBvZiAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFT
UyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgYXJjIHRvIDUw
cHggMXB0IG9mIDEwcHggMTBweCBzbWFsbCByb3RhdGUgMGRlZykiIHNob3VsZCBzZXQgdGhlIHBy
b3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTAl
IDFyZW0sIGFyYyB0byA1MHB4IDFwdCBvZiAyMCUgY3cgbGFyZ2Ugcm90YXRlIDI1ZGVnKSIgc2hv
dWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAi
c2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGNsb3NlKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVy
dHkgdmFsdWUKIFBBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9t
IDBweCAwcHgsIGNsb3NlIHBhdGgpIiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkgdmFsdWUK
IFBBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUobm9uemVybywgZnJvbSAwcHggMHB4
LCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBub3Qgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQog
UEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUg
dG8gNTBweCAyMHB4IHZpYSAxMHJlbSkiIHNob3VsZCBub3Qgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1
ZQo=
</data>
<flag name="commit-queue"
          id="486639"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457914</attachid>
            <date>2022-04-19 10:30:30 -0700</date>
            <delta_ts>2022-04-19 23:27:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238371-20220419203027.patch</filename>
            <type>text/plain</type>
            <size>96916</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0MDhiYzRlZDIxNmNh
YWM1ZWVlZTUyMDkyNWQ3NzYzOGU0M2QwZC4uYzhmMjI3MTg0NDc0MGQ5Njc0Mjg0YzY3ODkyNGUx
ZjgwODQyODU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0xOSAgTm9h
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFk
ZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBDU1Mgc2hhcGUoKSBieSBpbnRyb2R1Y2luZyBzaGFwZSBzZWdtZW50IGFuZCBCYXNpY1NoYXBl
U2hhcGUuCisgICAgICAgIFNoYXBlU2hhcGUgaXMgYSB2ZWN0b3Igb2Ygc2hhcGUgc2VnbWVudHMs
IHdoZXJlIGVhY2ggc2VnbWVudCBibGVuZHMgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgVGhlIHNo
YXBlIHVsdGltYXRlbHkgY3JlYXRlcyBhbiBTVkdQYXRoU291cmNlIHRvIGNvbnZlcnQgdGhlIHJl
c3BvbnNpdmUgc2hhcGUsIHdoaWNoCisgICAgICAgIGlzIGJhc2VkIG9uIExlbmd0aCB2YWx1ZXMs
IHRvIGFuIGFic29sdXRlIFBhdGggb2JqZWN0IHRoYXQgY2FuIGJlIGRyYXduLgorCisgICAgICAg
IFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXNoYXBlcy0yLyNzaGFwZS1mdW5jdGlv
bgorCisgICAgICAgIFVuc2tpcHBlZCBzZXZlcmFsIHJlbGV2YW50IFdQVHMuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgICAgICBOZXcgZmlsZXMg
YWRkZWQKKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZhbHVlRm9yQmFzaWNTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9MZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpiYXNpY1NoYXBlRm9yVmFsdWUpOgor
ICAgICAgICAgICAgICAgIEFkZGVkIHRoZSBCYXNpY1NoYXBlU2hhcGUgdHlwZQorCisgICAgICAg
ICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Q1NTQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2lj
U2hhcGVTaGFwZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6
CisgICAgICAgICAgICAgICAgQWRkZWQgdGhlIENTU0Jhc2ljU2hhcGVTaGFwZQorCisgICAgICAg
ICogY3NzL0NTU1NoYXBlU2VnbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
aGFwZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NT
U2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudDo6Q1NTU2hh
cGVTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OnRhcmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6YXJndW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OmFmZmluaXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjphcHBlbmRBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpDU1NTaGFwZVNlZ21l
bnRWYWx1ZSk6CisgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB0byBkbyB3aXRoIHRoZSBzZWdt
ZW50IG9mIHRoZSBzaGFwZSB3aGlsZSBpbiBDU1Mgc3BhY2UsCisgICAgICAgICAgICAgICAgaW5j
bHVkaW5nIHNlcmlhbGl6YXRpb24gZm9yIGdldENvbXB1dGVkU3R5bGUoKQorCisgICAgICAgICog
Y3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzU2hhcGVTZWdtZW50VmFsdWUgY29uc3Qp
OgorICAgICAgICAgICAgICAgIENTU1NoYXBlU2VnbWVudCBpcyBhIHR5cGUgb2YgdmFsdWUKKwor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAgICAgICAgIE5ldyBr
ZXl3b3JkcyBmb3Igc2hhcGUoKQorCisgICAgICAgICogY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9u
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFBvaW50VG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0FyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6dG9DU1NB
cmdzPExlbmd0aFBvaW50Pik6CisgICAgICAgIChXZWJDb3JlOjp0b0NTU1NoYXBlU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpzZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpmcm9t
Q1NTU2hhcGVTZWdtZW50KToKKyAgICAgICAgKiBjc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmg6
IEFkZGVkLgorICAgICAgICAgICAgICAgIENvbnZlcnRpbmcgc2hhcGUgc2VnbWVudHMgdG8vZnJv
bSBDU1Mgc3BhY2UKKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNoYXBlU2VnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVC
YXNpY1NoYXBlKToKKyAgICAgICAgICAgICAgICBQYXJzZSBhIHNoYXBlIHByb3BlcnR5CisKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OnZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzaWNTaGFwZVNlZ21lbnQ6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6YmxlbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFyY1RvU2hhcGVTZWdWYWx1
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVu
dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6Y3Jl
YXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50OjpCYXNp
Y1NoYXBlU2VnbWVudCk6CisgICAgICAgICAgICAgICAgQmxlbmRpbmcsIGNvbXBhcmluZyBhbmQg
Y29udmVydGluZyB0byBhYnNvbHV0ZSBwYXRoCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhCb3g6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhC
b3g6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1Bh
dGhQb2xpY3k6OmlzS2V5TnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVNlZ21lbnRzUGF0
aFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU2hh
cGVTZWdtZW50c1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpCYXNp
Y1NoYXBlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpwYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6YmxlbmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZVNoYXBlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2V0V2luZFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpmcm9tIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlU2hhcGU6OmF0IGNvbnN0KToKKyAgICAgICAgICAgICAgICBBZGQgQmFz
aWNTaGFwZVNoYXBlCisKIDIwMjItMDQtMTggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgUGxhdGZvcm1NZWRpYUVuZ2luZUNsYXNzTmFt
ZSBtYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODBiYmVhOGU3MjM0ZjA1NWVmZDZlMzQwMDc1
MGIzN2YzMzE3OGNhZS4uNDAxMTNhOGU2MzkzYWQ0Y2JhNmE4ODBjYWVhMmJhYWNkNDJhYzQ0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC01NTQsNiArNTU0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9DU1NSdWxlTGlzdC5oCiAgICAgY3NzL0NTU1Nl
bGVjdG9yLmgKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKyAgICBjc3MvQ1NTU2hhcGVTZWdt
ZW50LmgKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCiAgICAgY3NzL0NTU1N0eWxlUnVs
ZS5oCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtNTgwLDYgKzU4MSw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBjc3MvTWVkaWFRdWVyeUV4cHJlc3Np
b24uaAogICAgIGNzcy9NZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5oCiAgICAgY3NzL1JlY3QuaAor
ICAgIGNzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMuaAogICAgIGNzcy9TdHlsZUNvbG9yLmgKICAg
ICBjc3MvU3R5bGVQcm9wZXJ0aWVzLmgKICAgICBjc3MvU3R5bGVSdWxlLmgKQEAgLTE4ODcsNiAr
MTg4OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmgKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUlu
Zm8uaAogCisgICAgcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmgKICAgICByZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAogICAgIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRh
LmgKICAgICByZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAw
YWYzZDA2YTViMGJiYzY4ZmMwMTEzM2JjY2ZlMWYyY2Q5NzBlODllLi4xNWFhODI2MjY5YzNjODc4
NDZhZjVmYmQ0MzVlMDNjYjJiOGVjMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNzcxLDYgKzc3MSw3
IEBAIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKIGNzcy9DU1NTZWxlY3Rvci5jcHAKIGNz
cy9DU1NTZWxlY3Rvckxpc3QuY3BwCiBjc3MvQ1NTU2hhZG93VmFsdWUuY3BwCitjc3MvQ1NTU2hh
cGVTZWdtZW50LmNwcAogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCiBjc3MvQ1NTU3R5bGVS
dWxlLmNwcAogY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC04MTIsNiArODEzLDcgQEAgY3NzL1By
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcAogY3NzL1NlbGVjdG9yRmls
dGVyLmNwcAorY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAKIGNzcy9TdHlsZUNvbG9yLmNw
cAogY3NzL1N0eWxlTWVkaWEuY3BwCiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMjQ0OSw2
ICsyNDUxLDcgQEAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAKIHJlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwCiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3Bw
CiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCityZW5kZXJpbmcvc3R5bGUvQmFzaWNT
aGFwZVNlZ21lbnQuY3BwCiByZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5jcHAKIHJlbmRlcmlu
Zy9zdHlsZS9Db250ZW50RGF0YS5jcHAKIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYTYxNzYzOWRmNzIwNmZjNDg0NTcwNDhlZTQ0YmE4OTQzYzUyYzdhMi4uMzA5YWQ5MzU0MzBl
NjIxNzU3NTc5YWZhZjI3OTk5OWE5NzE2NjJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ1Miw2ICs0NDUyLDEwIEBACiAJ
CUNBM0JGNjdFMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EzQkY2N0QxMEQ5OUJBRTAwRTZD
RTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0E2QzE1MzAyMjBCOThDQzAwNTVDQkZDIC8qIEpTVmFsdWVJbldy
YXBwZWRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMUFFM0I4MUZCODBFQUUwMEY1RUZCMiAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0E3RTlC
NDkyNDM2MURDNTAwNEU4OUY2IC8qIENvbnRlbnRmdWxQYWludENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBN0U5QjQ3MjQzNjFEQzUwMDRF
ODlGNiAvKiBDb250ZW50ZnVsUGFpbnRDaGVja2VyLmggKi87IH07CisJCUNBODE2Q0I2Mjc3ODQ4
MjAwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0E4MTZDQjMyNzc4NDgxRTAwMkJEM0M2IC8qIEJhc2lj
U2hhcGVTZWdtZW50LmggKi87IH07CisJCUNBODE2Q0I5Mjc3ODQ4MkUwMDJCRDNDNiAvKiBDU1NT
aGFwZVNlZ21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENBODE2Q0I4Mjc3ODQ4MkUwMDJCRDNDNiAvKiBDU1NTaGFwZVNlZ21lbnQuaCAqLzsgfTsK
KwkJQ0E4MTZDQkMyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTgxNkNCQTI3
Nzg5QUEyMDAyQkQzQzYgLyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmNwcCAqLzsgfTsKKwkJQ0E4
MTZDQkQyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0E4MTZDQkIyNzc4OUFBNzAw
MkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oICovOyB9OwogCQlDQUU5RjkxMDE0NjQ0
MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIwIC8qIENT
U0FzcGVjdFJhdGlvVmFsdWUuaCAqLzsgfTsKIAkJQ0IzOEZENTIxQ0NGOTM5NDAwNTkyQTNGIC8q
IEpTUGVyZm9ybWFuY2VFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0IzOEZENEUxQ0NGOTM3RTAwNTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VFbnRy
eS5oICovOyB9OwogCQlDQjM4RkQ1QjFDRDIzMjVCMDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDQjM4RkQ1OTFDRDIzMTQ1MDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nLmggKi87IH07CkBAIC0xNTk0Nyw2ICsxNTk1MSw3IEBACiAJCUNBMDkxRDg2MjNDRjkwNzgw
MEFENDM0NiAvKiBTdHlsZUltYWdlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlSW1h
Z2VTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTA5MUQ4OTIzQ0Y5MDg4
MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUltYWdlU2V0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMTYzNURDMjA3MkU3NjkwMEU3RDJD
RSAvKiBSZWZlcnJlclBvbGljeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZWZlcnJlclBvbGljeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNB
MTY2Q0NCMjc4MDY4N0QwMDQ1MjJCMyAvKiBDU1NTaGFwZVNlZ21lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ1NTU2hhcGVTZWdtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0ExOTMzRDUyNDA3RDY0MDAwNzEyNDFBIC8qIFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VQYWludFRpbWluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDQTE5MzNEODI0MDdFRENGMDA3MTI0MUEgLyogUGVyZm9ybWFuY2VQYWlu
dFRpbWluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGVyZm9ybWFuY2VQYWludFRpbWlu
Zy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0E0QUFCMjU0MTZFM0MwMDZD
REFFMiAvKiBJbWFnZVJlc29sdXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW1hZ2VSZXNvbHV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE1OTYyLDYgKzE1OTY3LDExIEBACiAJCUNBNkMxNTM4MjIwRDFFQjMwMDU1Q0JGQyAvKiBK
U0lEQkN1cnNvcldpdGhWYWx1ZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0lEQkN1cnNvcldpdGhWYWx1ZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNBN0U5QjQ3MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFp
bnRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRmdWxQ
YWludENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0E3RTlCNDgyNDM2
MURDNTAwNEU4OUY2IC8qIENvbnRlbnRmdWxQYWludENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudGZ1bFBhaW50Q2hlY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNBODE2Q0IzMjc3ODQ4MUUwMDJCRDNDNiAvKiBCYXNp
Y1NoYXBlU2VnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNpY1No
YXBlU2VnbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCNDI3Nzg0
ODFGMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1NoYXBlU2VnbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCQTI3Nzg5QUEyMDAyQkQzQzYgLyog
U2hhcGVTZWdtZW50RnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRGdW5jdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcGVTZWdtZW50RnVuY3Rpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBRTlGOTBEMTQ2NDQxRjAwMEMyNDVC
MCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENTU0FzcGVjdFJhdGlvVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDQUU5RjkwRTE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNCMzhGRDRBMUNDQ0YyREQwMDU5MkEzRiAv
KiBQZXJmb3JtYW5jZUVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBlcmZvcm1hbmNlRW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Mjk2ODgsNiArMjk2OTgsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRkJENkFGODIxNUVGMjFB
MzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmNwcCAqLywKIAkJCQlGQkQ2QUY4MzE1RUYyMUEzMDA4
QjcxMTAgLyogQmFzaWNTaGFwZXMuaCAqLywKKwkJCQlDQTgxNkNCNDI3Nzg0ODFGMDAyQkQzQzYg
LyogQmFzaWNTaGFwZVNlZ21lbnQuY3BwICovLAorCQkJCUNBODE2Q0IzMjc3ODQ4MUUwMDJCRDND
NiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oICovLAogCQkJCTBGMjgzQTkxMjM1NjMxMjYwMDQ3OTRD
QSAvKiBCb3JkZXJEYXRhLmNwcCAqLywKIAkJCQlCQzVFQjVFMDBFODFCRTg3MDBCMjU5NjUgLyog
Qm9yZGVyRGF0YS5oICovLAogCQkJCUJDNUVCNURBMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJW
YWx1ZS5oICovLApAQCAtMzE5NjEsNiArMzE5NzMsOCBAQAogCQkJCUU0QzE3ODk2MEVFNjkwMzgw
MDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCAqLywKIAkJCQlBODBFNkNDQTBBMTk4OUNBMDA3
RkI4QzUgLyogQ1NTU2hhZG93VmFsdWUuY3BwICovLAogCQkJCUE4MEU2Q0JFMEExOTg5Q0EwMDdG
QjhDNSAvKiBDU1NTaGFkb3dWYWx1ZS5oICovLAorCQkJCUNBMTY2Q0NCMjc4MDY4N0QwMDQ1MjJC
MyAvKiBDU1NTaGFwZVNlZ21lbnQuY3BwICovLAorCQkJCUNBODE2Q0I4Mjc3ODQ4MkUwMDJCRDND
NiAvKiBDU1NTaGFwZVNlZ21lbnQuaCAqLywKIAkJCQk3Q0RFOEVCQzFGMTkzQkM1MDAxNjhGRTcg
LyogQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgKi8sCiAJCQkJQTgwRTZFMEQwQTE5OTExQzAwN0ZC
OEM1IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaCAqLywKIAkJCQkxNDIwMTFBRTBBMDAzMTE3MDA4
MzAzRjkgLyogQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwgKi8sCkBAIC0zMjA5Niw2ICszMjExMCw4
IEBACiAJCQkJNDNCODVFRDYxOENCRUM5NzAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NB
bmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5pbiAqLywKIAkJCQkyNkFBMEY5QTE4RDI5NzNEMDA0
MTkzODEgLyogU2VsZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5pbiAqLywKIAkJCQk0MzEwN0JF
MTE4Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggKi8sCisJCQkJQ0E4
MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgKi8sCisJ
CQkJQ0E4MTZDQkIyNzc4OUFBNzAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oICov
LAogCQkJCTk0MTgyNzg4MUQ4QjI0MjIwMDQ5Mjc2NCAvKiBTdHlsZUNvbG9yLmNwcCAqLywKIAkJ
CQk5NDE4Mjc4OTFEOEIyNDIyMDA0OTI3NjQgLyogU3R5bGVDb2xvci5oICovLAogCQkJCTBGRjUw
MjZFMTAyQkE5NjYwMDY2RjM5QSAvKiBTdHlsZU1lZGlhLmNwcCAqLywKQEAgLTMzODU2LDYgKzMz
ODcyLDcgQEAKIAkJCQk3MTU2QkNBMTIxQ0EzNTBGMDA1MzQzOTcgLyogQmFzaWNFZmZlY3RUaW1p
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCRDZBRjhBMTVFRjI1REYwMDhCNzExMCAvKiBCYXNp
Y1NoYXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4QzE1RUYyNjA0MDA4
QjcxMTAgLyogQmFzaWNTaGFwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNBODE2Q0I2Mjc3ODQ4
MjAwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIy
M0EzMjgwOUJCQTdEMDAwNjdDQzUzIC8qIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NTAzMUIzRDBBNDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5sb2FkRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTI0MEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRp
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDM0Nyw2ICszNDM2NCw3IEBACiAJCQkJRTRD
MTc4OUIwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTRERTVDOEUxRDgwODAyNzAwMTY0RjJBIC8qIENTU1NlbGVjdG9yUGFyc2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODBFNkNFODBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU2hhZG93VmFs
dWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNBODE2Q0I5Mjc3ODQ4MkUwMDJCRDNDNiAvKiBDU1NT
aGFwZVNlZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNTM4QTJBMjZGMDEwNDIwMDk2NUZD
OCAvKiBDU1NTa2V3LmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTUzOEEyQjI2RjAxMDQ1MDA5NjVG
QzggLyogQ1NTU2tld1guaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNTM4QTJDMjZGMDEwNDgwMDk2
NUZDOCAvKiBDU1NTa2V3WS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzQ4NCw2ICszNzUwMiw3IEBA
CiAJCQkJRkQ0NUE5NEYxNzVEM0YzRTAwQzIxRUM4IC8qIFNoYXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDQ1QTk1QjE3NUQ0MUVFMDBDMjFFQzggLyogU2hhcGVJbnRlcnZhbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQ0NUE5NTIxNzVEM0YzRTAwQzIxRUM4IC8qIFNoYXBlT3V0c2lkZUluZm8u
aCBpbiBIZWFkZXJzICovLAorCQkJCUNBODE2Q0JEMjc3ODlBQUQwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMUFGMTUwMTY1NkYxNTEwMEM2
RDRGNyAvKiBTaGFwZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRDlGMEZDMTIxMjIwMjlC
MDA1RDhGRDQgLyogU2hhcmVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOTU0RTBCNEVE
Q0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAppbmRleCA5ZGYyY2ZmNzk1N2U0NWQ4OWI3
MjFhNzFlNzVlMjhkODVhNWU3OWE3Li4xNzcyMjI2YWZlYjczZDg0NDk1OTdkNmFkZTM2ODNlNjdi
MWQ1Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCkBA
IC0zMCwxMyArMzAsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCYXNpY1No
YXBlRnVuY3Rpb25zLmgiCiAKKyNpbmNsdWRlICJCYXNpY1NoYXBlU2VnbWVudC5oIgogI2luY2x1
ZGUgIkJhc2ljU2hhcGVzLmgiCiAjaW5jbHVkZSAiQ1NTQmFzaWNTaGFwZXMuaCIKICNpbmNsdWRl
ICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NTU2hhcGVTZWdtZW50
LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCiAjaW5jbHVkZSAiUGFpci5oIgogI2luY2x1
ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEJ5dGVTdHJlYW0uaCIKKyNpbmNs
dWRlICJTaGFwZVNlZ21lbnRGdW5jdGlvbnMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xNTQsNiArMTU3LDIyIEBAIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JCYXNpY1No
YXBlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgQmFzaWNTCiAgICAgICAgIGJhc2lj
U2hhcGVWYWx1ZSA9IFdURk1vdmUoaW5zZXRWYWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KyAgICBjYXNlIEJhc2ljU2hhcGU6OlR5cGU6OlNoYXBlOiB7CisgICAgICAgIGF1dG8mIHNoYXBl
ID0gZG93bmNhc3Q8QmFzaWNTaGFwZVNoYXBlPihiYXNpY1NoYXBlKTsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgIGF1
dG8gc2l6ZSA9IHNoYXBlLnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpCisgICAgICAgICAgICByZXN1bHQtPmFwcGVuZCh0b0NTU1NoYXBlU2VnbWVudChz
dHlsZSwgc2hhcGUuYXQoaSkpKTsKKworICAgICAgICBhdXRvIGZyb20gPSBjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKAorICAgICAgICAgICAgY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHNoYXBlLmZyb20oKS54KCksIHN0eWxlKSwKKyAgICAgICAgICAgIGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShzaGFwZS5mcm9tKCkueSgpLCBzdHlsZSksIFBhaXI6OklkZW50aWNhbFZh
bHVlRW5jb2Rpbmc6OkRvTm90Q29hbGVzY2UpKTsKKworICAgICAgICBhdXRvIHNoYXBlVmFsdWUg
PSBDU1NCYXNpY1NoYXBlU2hhcGU6OmNyZWF0ZShXVEZNb3ZlKGZyb20pLCBXVEZNb3ZlKHJlc3Vs
dCkpOworICAgICAgICBzaGFwZVZhbHVlLT5zZXRXaW5kUnVsZShzaGFwZS53aW5kUnVsZSgpKTsK
KyAgICAgICAgYmFzaWNTaGFwZVZhbHVlID0gV1RGTW92ZShzaGFwZVZhbHVlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgIH0KIAogICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoYmFzaWNTaGFwZVZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwpAQCAtMTY0LDYgKzE4MywxMiBA
QCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhJiBjb252ZXJzaW9uRGF0YSwgYwogICAgIHJldHVybiB2YWx1ZS0+Y29udmVydFRvTGVu
Z3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNl
bnRDb252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKIH0K
IAorc3RhdGljIExlbmd0aFBvaW50IGNvbnZlcnRUb0xlbmd0aFBvaW50KGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
Cit7CisgICAgYXV0byYgcGFpciA9ICooZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KS5wYWlyVmFsdWUoKSk7CisgICAgcmV0dXJuIHsgY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25E
YXRhLCBwYWlyLmZpcnN0KCkpLCBjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHBhaXIu
c2Vjb25kKCkpIH07Cit9CisKIHN0YXRpYyBMZW5ndGhTaXplIGNvbnZlcnRUb0xlbmd0aFNpemUo
Y29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENT
U1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlKQpAQCAtMjk3LDYgKzMy
MiwyMCBAQCBSZWY8QmFzaWNTaGFwZT4gYmFzaWNTaGFwZUZvclZhbHVlKGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYQogICAgICAgICBiYXNpY1NoYXBlID0gV1RG
TW92ZShwYXRoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgQ1NTQmFzaWNTaGFw
ZTo6Q1NTQmFzaWNTaGFwZVNoYXBlVHlwZTogeworICAgICAgICBhdXRvJiBzaGFwZVZhbHVlID0g
ZG93bmNhc3Q8Q1NTQmFzaWNTaGFwZVNoYXBlPihiYXNpY1NoYXBlVmFsdWUpOworICAgICAgICBj
b25zdCBhdXRvJiBjc3NTZWdtZW50cyA9IHNoYXBlVmFsdWUuc2VnbWVudHMoKTsKKyAgICAgICAg
VmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+IHNlZ21lbnRzKGNzc1NlZ21lbnRzLmxlbmd0
aCgpKTsKKyAgICAgICAgc3RkOjp0cmFuc2Zvcm0oc3RkOjpiZWdpbihjc3NTZWdtZW50cyksIHN0
ZDo6ZW5kKGNzc1NlZ21lbnRzKSwgc2VnbWVudHMuYmVnaW4oKSwgWyZdIChjb25zdCBhdXRvJiBj
c3NTZWdtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZnJvbUNTU1NoYXBlU2VnbWVudChjb252
ZXJzaW9uRGF0YSwgZG93bmNhc3Q8Q1NTU2hhcGVTZWdtZW50Pihjc3NTZWdtZW50LmdldCgpKSk7
CisgICAgICAgIH0pOworCisgICAgICAgIGF1dG8gc2hhcGUgPSBCYXNpY1NoYXBlU2hhcGU6OmNy
ZWF0ZShjb252ZXJ0VG9MZW5ndGhQb2ludChjb252ZXJzaW9uRGF0YSwgc2hhcGVWYWx1ZS5mcm9t
KCkpLCBXVEZNb3ZlKHNlZ21lbnRzKSk7CisgICAgICAgIHNoYXBlLT5zZXRXaW5kUnVsZShzaGFw
ZVZhbHVlLndpbmRSdWxlKCkpOworCisgICAgICAgIGJhc2ljU2hhcGUgPSBXVEZNb3ZlKHNoYXBl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0KIAogICAgIHJldHVybiBiYXNpY1NoYXBl
LnJlbGVhc2VOb25OdWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFz
aWNTaGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAppbmRl
eCA4OWUwOWY1NzJjMzUxNjM4M2Y3YjI2MmQ1NDBjMDNkZTAyZTg0ODUwLi44NWY2NzZmZTYxNjRh
YTBiNDA4ODgzMWQwNTY0ODgzMmU1MDBmYjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1No
YXBlcy5jcHAKQEAgLTIyMiw2ICsyMjIsMzggQEAgYm9vbCBDU1NCYXNpY1NoYXBlUGF0aDo6ZXF1
YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIG90aGVyU2hhcGUpIGNvbnN0CiAgICAgcmV0dXJuIHdp
bmRSdWxlKCkgPT0gb3RoZXJTaGFwZVBhdGgud2luZFJ1bGUoKSAmJiBwYXRoRGF0YSgpID09IG90
aGVyU2hhcGVQYXRoLnBhdGhEYXRhKCk7CiB9CiAKK0NTU0Jhc2ljU2hhcGVTaGFwZTo6Q1NTQmFz
aWNTaGFwZVNoYXBlKFJlZjxDU1NWYWx1ZT4mJiBmcm9tLCBSZWY8Q1NTVmFsdWVMaXN0PiYmIHNl
Z21lbnRzKQorICAgIDogbV9zZWdtZW50cyhXVEZNb3ZlKHNlZ21lbnRzKSksIG1fZnJvbShXVEZN
b3ZlKGZyb20pKQoreyAKK30KKworYm9vbCBDU1NCYXNpY1NoYXBlU2hhcGU6OmVxdWFscyhjb25z
dCBDU1NCYXNpY1NoYXBlJiBvdGhlclNoYXBlKSBjb25zdAoreworICAgIGlmICghaXM8Q1NTQmFz
aWNTaGFwZVNoYXBlPihvdGhlclNoYXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
YXV0byYgb3RoZXJTaGFwZVNoYXBlID0gZG93bmNhc3Q8Q1NTQmFzaWNTaGFwZVNoYXBlPihvdGhl
clNoYXBlKTsKKyAgICByZXR1cm4gd2luZFJ1bGUoKSA9PSBvdGhlclNoYXBlU2hhcGUud2luZFJ1
bGUoKQorICAgICAgICAmJiBmcm9tKCkgPT0gb3RoZXJTaGFwZVNoYXBlLmZyb20oKQorICAgICAg
ICAmJiBzZWdtZW50cygpLmVxdWFscyhvdGhlclNoYXBlU2hhcGUuc2VnbWVudHMoKSk7Cit9CisK
K1N0cmluZyBDU1NCYXNpY1NoYXBlU2hhcGU6OmNzc1RleHQoKSBjb25zdAoreworICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKKyAgICBpZiAod2luZFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9k
ZCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoInNoYXBlKGV2ZW5vZGQgIik7CisgICAgZWxzZQor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgic2hhcGUoIik7CisKKyAgICBhdXRvKiBwYWlyID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGZyb20oKSkucGFpclZhbHVlKCk7CisgICAgQVNTRVJU
KHBhaXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJmcm9tICIsIHBhaXItPmNzc1RleHQoKSwgIiwg
Iik7CisgICAgYnVpbGRlci5hcHBlbmQoc2VnbWVudHMoKS5jc3NUZXh0KCksICIpIik7CisKKyAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCiBzdGF0aWMgU3RyaW5nIGJ1aWxkUG9s
eWdvblN0cmluZyhjb25zdCBXaW5kUnVsZSYgd2luZFJ1bGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwb2ludHMpCiB7CiAgICAgQVNTRVJUKCEocG9pbnRzLnNpemUoKSAlIDIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Jhc2ljU2hhcGVzLmgKaW5kZXggMTA1YzQ2MDk0MWQ2NzQ0ZTU3YmU3YTM1ZDZiMDRm
YzczZmFiYmJlYy4uMTYzMDZkZjI5ZWI5M2E5ZGQzMzllMGMyZmE2MTQ4Y2NhODI0ODMyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKQEAgLTM4LDYgKzM4LDEwIEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOworY2xhc3MgQ1NTU2hhcGVT
ZWdtZW50OworY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWVQYWlyOworY2xhc3MgQ1NTVmFsdWU7Citj
bGFzcyBDU1NWYWx1ZUxpc3Q7CiBjbGFzcyBTVkdQYXRoQnl0ZVN0cmVhbTsKIAogY2xhc3MgQ1NT
QmFzaWNTaGFwZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0Jhc2ljU2hhcGU+IHsKQEAgLTQ3LDcg
KzUxLDggQEAgcHVibGljOgogICAgICAgICBDU1NCYXNpY1NoYXBlQ2lyY2xlVHlwZSwKICAgICAg
ICAgQ1NTQmFzaWNTaGFwZUVsbGlwc2VUeXBlLAogICAgICAgICBDU1NCYXNpY1NoYXBlSW5zZXRU
eXBlLAotICAgICAgICBDU1NCYXNpY1NoYXBlUGF0aFR5cGUKKyAgICAgICAgQ1NTQmFzaWNTaGFw
ZVBhdGhUeXBlLAorICAgICAgICBDU1NCYXNpY1NoYXBlU2hhcGVUeXBlCiAgICAgfTsKIAogICAg
IHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwpAQCAtMjMzLDYgKzIzOCwzNSBAQCBwcml2
YXRlOgogICAgIFdpbmRSdWxlIG1fd2luZFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OwogfTsK
IAorY2xhc3MgQ1NTQmFzaWNTaGFwZVNoYXBlIGZpbmFsIDogcHVibGljIENTU0Jhc2ljU2hhcGUg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q1NTQmFzaWNTaGFwZVNoYXBlPiBjcmVhdGUoUmVm
PENTU1ZhbHVlPiYmIGZyb20sIFJlZjxDU1NWYWx1ZUxpc3Q+JiYgc2VnbWVudHMpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NCYXNpY1NoYXBlU2hhcGUoV1RGTW92ZShm
cm9tKSwgV1RGTW92ZShzZWdtZW50cykpKTsKKyAgICB9CisKKyAgICBjb25zdCBDU1NWYWx1ZUxp
c3QmIHNlZ21lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NlZ21lbnRzLmdl
dCgpOworICAgIH0KKworICAgIHZvaWQgc2V0V2luZFJ1bGUoV2luZFJ1bGUgcnVsZSkgeyBtX3dp
bmRSdWxlID0gcnVsZTsgfQorICAgIFdpbmRSdWxlIHdpbmRSdWxlKCkgY29uc3QgeyByZXR1cm4g
bV93aW5kUnVsZTsgfQorCisgICAgY29uc3QgQ1NTVmFsdWUmIGZyb20oKSBjb25zdCB7IHJldHVy
biBtX2Zyb20uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBDU1NCYXNpY1NoYXBlU2hhcGUoUmVm
PENTU1ZhbHVlPiYmIGZyb20sIFJlZjxDU1NWYWx1ZUxpc3Q+JiYpOworCisgICAgVHlwZSB0eXBl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ1NTQmFzaWNTaGFwZVNoYXBlVHlwZTsgfQorICAgIFN0
cmluZyBjc3NUZXh0KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQmFz
aWNTaGFwZSYpIGNvbnN0IGZpbmFsOworCisgICAgUmVmPENTU1ZhbHVlTGlzdD4gbV9zZWdtZW50
czsKKyAgICBSZWY8Q1NTVmFsdWU+IG1fZnJvbTsKKyAgICBXaW5kUnVsZSBtX3dpbmRSdWxlIHsg
V2luZFJ1bGU6Ok5vblplcm8gfTsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Rl
ZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19CQVNJQ19TSEFQRVMoVG9WYWx1ZVR5cGVO
YW1lKSBcCkBAIC0yNDUsMyArMjc5LDQgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfQkFT
SUNfU0hBUEVTKENTU0Jhc2ljU2hhcGVDaXJjbGUpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NT
U19CQVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZUVsbGlwc2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0NTU19CQVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZVBvbHlnb24pCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0NTU19CQVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZVBhdGgpCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0NTU19CQVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZVNoYXBlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYXBlU2VnbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDgwNTBjYWZiODU4NDA5
N2ZmOWFiOGIwZmViODMwN2FlN2QwNjc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NoYXBlU2VnbWVudC5jcHAKQEAgLTAsMCArMSwxOTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1NoYXBlU2Vn
bWVudC5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxDU1NT
aGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTW92ZVRvKENTU1NoYXBlU2VnbWVu
dDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCkKK3sKKyAg
ICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShNb3ZlVG8sIGFmZmluaXR5LCBX
VEZNb3ZlKHRhcmdldCkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21l
bnQ6OmNyZWF0ZUxpbmVUbyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHks
IFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpCit7CisgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudFZh
bHVlOjpjcmVhdGUoTGluZVRvLCBhZmZpbml0eSwgV1RGTW92ZSh0YXJnZXQpKTsKK30KKworUmVm
PENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFs
KENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYm
IHgpCit7CisgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoTGluZVRvSG9y
aXpvbnRhbCwgYWZmaW5pdHksIFdURk1vdmUoeCkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50
PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVUb1ZlcnRpY2FsKENTU1NoYXBlU2VnbWVudDo6
Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHkpCit7CisgICAgcmV0dXJu
IENTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoTGluZVRvVmVydGljYWwsIGFmZmluaXR5LCBX
VEZNb3ZlKHkpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50Ojpj
cmVhdGVDdXJ2ZVRvQ3ViaWMoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5
LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcDEsIFJlZjxDU1NWYWx1
ZT4mJiBwMikKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShDdXJ2
ZVRvQ3ViaWMsIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUocDEpLCBXVEZNb3Zl
KHAyKSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRl
Q3VydmVUb1F1YWRyYXRpYyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHks
IFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBwMSkKK3sKKyAgICByZXR1
cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShDdXJ2ZVRvUXVhZHJhdGljLCBhZmZpbml0
eSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHAxKSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21l
bnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKENTU1NoYXBlU2Vn
bWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVm
PENTU1ZhbHVlPiYmIHAyKQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3Jl
YXRlKEN1cnZlVG9DdWJpY1Ntb290aCwgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92
ZShwMikpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0
ZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFm
ZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0KQoreworICAgIHJldHVybiBDU1NTaGFwZVNl
Z21lbnRWYWx1ZTo6Y3JlYXRlKEN1cnZlVG9RdWFkcmF0aWNTbW9vdGgsIGFmZmluaXR5LCBXVEZN
b3ZlKHRhcmdldCkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6
OmNyZWF0ZUFyY1RvKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVm
PENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHJhZGl1cywgQ1NTVmFsdWVJRCBz
d2VlcCwgQ1NTVmFsdWVJRCBzaXplLCBSZWY8Q1NTVmFsdWU+JiYgYW5nbGUpCit7CisgICAgQVNT
RVJUKHN3ZWVwID09IENTU1ZhbHVlQ2N3IHx8IHN3ZWVwID09IENTU1ZhbHVlQ3cpOworICAgIEFT
U0VSVChzaXplID09IENTU1ZhbHVlU21hbGwgfHwgc2l6ZSA9PSBDU1NWYWx1ZUxhcmdlKTsKKyAg
ICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShBcmNUbywgYWZmaW5pdHksCisg
ICAgICAgIFdURk1vdmUodGFyZ2V0KSwKKyAgICAgICAgV1RGTW92ZShyYWRpdXMpLAorICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN3ZWVwKSwKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShzaXplKSwKKyAgICAgICAgV1RGTW92ZShhbmdsZSkpOworfQorCitSZWY8
Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCoobmV3IENTU1NoYXBlU2VnbWVudChDbG9zZVBhdGgpKSk7Cit9
CisKK2Jvb2wgQ1NTU2hhcGVTZWdtZW50OjplcXVhbHMoY29uc3QgQ1NTU2hhcGVTZWdtZW50JiBv
dGhlcikgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fdHlwZSA9PSBDbG9zZVBhdGgpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU1NoYXBlU2VnbWVu
dFZhbHVlJj4oKnRoaXMpLmVxdWFscyhzdGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21lbnRW
YWx1ZSY+KG90aGVyKSk7Cit9CisKK1N0cmluZyBDU1NTaGFwZVNlZ21lbnQ6OmN1c3RvbUNTU1Rl
eHQoKSBjb25zdAoreworICAgIGlmIChtX3R5cGUgPT0gQ1NTU2hhcGVTZWdtZW50OjpDbG9zZVBh
dGgpCisgICAgICAgIHJldHVybiAiY2xvc2UiX3M7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUqPih0aGlzKS0+Y3VzdG9tQ1NTVGV4dCgpOworfQor
Citib29sIENTU1NoYXBlU2VnbWVudFZhbHVlOjplcXVhbHMoY29uc3QgQ1NTU2hhcGVTZWdtZW50
JiBvdGhlcikgY29uc3QKK3sKKyAgICBBU1NFUlQodHlwZSgpID09IG90aGVyLnR5cGUoKSk7Cisg
ICAgY29uc3QgYXV0byYgb3RoZXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IENTU1NoYXBlU2Vn
bWVudFZhbHVlJj4ob3RoZXIpOworICAgIHJldHVybiBvdGhlclZhbHVlLm1fYWZmaW5pdHkgPT0g
bV9hZmZpbml0eQorICAgICAgICAmJiBvdGhlclZhbHVlLnRhcmdldCgpLmVxdWFscyh0YXJnZXQo
KSkKKyAgICAgICAgJiYgb3RoZXJWYWx1ZS5tX2FyZ3VtZW50cy5nZXQoKS5lcXVhbHMobV9hcmd1
bWVudHMuZ2V0KCkpOworfQorCitTdHJpbmcgQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmN1c3RvbUNT
U1RleHQoKSBjb25zdAoreworICAgIGNvbnN0IGF1dG8gY29tbWFuZCA9IFsmXSgpIHsKKyAgICAg
ICAgc3dpdGNoICh0eXBlKCkpIHsKKyAgICAgICAgY2FzZSBNb3ZlVG86CisgICAgICAgICAgICBy
ZXR1cm4gIm1vdmUiOworICAgICAgICBjYXNlIExpbmVUbzoKKyAgICAgICAgICAgIHJldHVybiAi
bGluZSI7CisgICAgICAgIGNhc2UgTGluZVRvSG9yaXpvbnRhbDoKKyAgICAgICAgICAgIHJldHVy
biAiaGxpbmUiOworICAgICAgICBjYXNlIExpbmVUb1ZlcnRpY2FsOgorICAgICAgICAgICAgcmV0
dXJuICJ2bGluZSI7CisgICAgICAgIGNhc2UgQ3VydmVUb0N1YmljOgorICAgICAgICBjYXNlIEN1
cnZlVG9RdWFkcmF0aWM6CisgICAgICAgICAgICByZXR1cm4gImN1cnZlIjsKKyAgICAgICAgY2Fz
ZSBDdXJ2ZVRvQ3ViaWNTbW9vdGg6CisgICAgICAgIGNhc2UgQ3VydmVUb1F1YWRyYXRpY1Ntb290
aDoKKyAgICAgICAgICAgIHJldHVybiAic21vb3RoIjsKKyAgICAgICAgY2FzZSBBcmNUbzoKKyAg
ICAgICAgICAgIHJldHVybiAiYXJjIjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisK
KyAgICB9OworCisgICAgY29uc3QgYXV0byBjb25qdW5jdGlvbiA9IFsmXSgpIHsKKyAgICAgICAg
c3dpdGNoICh0eXBlKCkpIHsKKyAgICAgICAgY2FzZSBNb3ZlVG86CisgICAgICAgIGNhc2UgTGlu
ZVRvOgorICAgICAgICBjYXNlIExpbmVUb0hvcml6b250YWw6CisgICAgICAgIGNhc2UgTGluZVRv
VmVydGljYWw6CisgICAgICAgIGNhc2UgQ3VydmVUb1F1YWRyYXRpY1Ntb290aDoKKyAgICAgICAg
ICAgIHJldHVybiAiIjsKKyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWM6CisgICAgICAgIGNhc2Ug
Q3VydmVUb1F1YWRyYXRpYzoKKyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWNTbW9vdGg6CisgICAg
ICAgICAgICByZXR1cm4gIiB2aWEgIjsKKyAgICAgICAgY2FzZSBBcmNUbzoKKyAgICAgICAgICAg
IHJldHVybiAiIG9mICI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgIH07CisK
KyAgICBhdXRvIGJ5VG8gPSBtX2FmZmluaXR5ID09IENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZp
bml0eTo6QWJzb2x1dGUgPyAiIHRvICIgOiAiIGJ5ICI7CisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKGNvbW1hbmQoKSwgYnlUbywgbV90YXJnZXQtPmNzc1Rl
eHQoKSwgY29uanVuY3Rpb24oKSk7CisgICAgaWYgKHR5cGUoKSA9PSBBcmNUbykgeworICAgICAg
ICBidWlsZGVyLmFwcGVuZChhcmd1bWVudCgwKS5jc3NUZXh0KCkpOworICAgICAgICBjb25zdCBh
dXRvJiBzd2VlcCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihhcmd1bWVudCgxKSk7Cisg
ICAgICAgIGNvbnN0IGF1dG8mIHNpemUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oYXJn
dW1lbnQoMikpOworICAgICAgICBjb25zdCBhdXRvJiBhbmdsZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPihhcmd1bWVudCgzKSk7CisKKyAgICAgICAgaWYgKHN3ZWVwLnZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUN3KQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBjdyIpOworCisgICAg
ICAgIGlmIChzaXplLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxhcmdlKQorICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIiBsYXJnZSIpOworCisgICAgICAgIGlmIChhbmdsZS5jb21wdXRlRGVncmVl
cygpKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiByb3RhdGUgIiwgYW5nbGUuY3NzVGV4
dCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9hcmd1bWVudHMtPmNz
c1RleHQoKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYXBlU2VnbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NoYXBlU2VnbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1MzliN2E3MzJhNmFhODVkYzEz
OGI3ZTg4NDY0YjYyMzg5M2QwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2hhcGVTZWdtZW50LmgKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFs
dWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1NoYXBlU2VnbWVudCA6IHB1YmxpYyBDU1NWYWx1ZSB7
CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBDb29yZEFmZmluaXR5IHsKKyAgICAgICAgQWJzb2x1
dGUsIFJlbGF0aXZlCisgICAgfTsKKworICAgIGVudW0gU2VnbWVudFR5cGUgeworICAgICAgICBN
b3ZlVG8sCisgICAgICAgIExpbmVUbywKKyAgICAgICAgTGluZVRvSG9yaXpvbnRhbCwKKyAgICAg
ICAgTGluZVRvVmVydGljYWwsCisgICAgICAgIEN1cnZlVG9DdWJpYywKKyAgICAgICAgQ3VydmVU
b1F1YWRyYXRpYywKKyAgICAgICAgQ3VydmVUb0N1YmljU21vb3RoLAorICAgICAgICBDdXJ2ZVRv
UXVhZHJhdGljU21vb3RoLAorICAgICAgICBBcmNUbywKKyAgICAgICAgQ2xvc2VQYXRoCisgICAg
fTsKKworICAgIFNlZ21lbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKwor
ICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0OworICAg
IFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CisgICAgfkNTU1NoYXBlU2VnbWVudCgpID0g
ZGVmYXVsdDsKKworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVDbG9zZVBh
dGgoKTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRlTW92ZVRvKENvb3Jk
QWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hh
cGVTZWdtZW50PiBjcmVhdGVMaW5lVG8oQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRh
cmdldCk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUxpbmVUb0hvcml6
b250YWwoQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHgpOworICAgIHN0YXRpYyBSZWY8
Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG9WZXJ0aWNhbChDb29yZEFmZmluaXR5LCBSZWY8
Q1NTVmFsdWU+JiYgeSk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1
cnZlVG9DdWJpYyhDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NT
VmFsdWU+JiYgcDEsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAgc3RhdGljIFJlZjxDU1NTaGFw
ZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWMoQ29vcmRBZmZpbml0eSwgUmVmPENTU1Zh
bHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxKTsKKyAgICBzdGF0aWMgUmVmPENTU1No
YXBlU2VnbWVudD4gY3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKENvb3JkQWZmaW5pdHksIFJlZjxD
U1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAgc3RhdGljIFJlZjxD
U1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoQ29vcmRBZmZpbml0
eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21l
bnQ+IGNyZWF0ZUFyY1RvKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJl
ZjxDU1NWYWx1ZT4mJiByYWRpdXMsIENTU1ZhbHVlSUQgc3dlZXAsIENTU1ZhbHVlSUQgc2l6ZSwg
UmVmPENTU1ZhbHVlPiYmIGFuZ2xlKTsKKworcHJvdGVjdGVkOgorICAgIENTU1NoYXBlU2VnbWVu
dChTZWdtZW50VHlwZSB0eXBlKQorICAgICAgICA6IENTU1ZhbHVlKFNoYXBlU2VnbWVudENsYXNz
KQorICAgICAgICAsIG1fdHlwZSh0eXBlKSB7IH0KKworcHJpdmF0ZToKKyAgICBTZWdtZW50VHlw
ZSBtX3R5cGU7Cit9OworCitjbGFzcyBDU1NTaGFwZVNlZ21lbnRWYWx1ZSA6IHB1YmxpYyBDU1NT
aGFwZVNlZ21lbnQgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSAuLi5BcmdzPgor
ICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGUoQ1NTU2hhcGVTZWdtZW50OjpT
ZWdtZW50VHlwZSB0eXBlLAorICAgICAgICBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkg
YWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIEFyZ3MuLi4gYXJndW1lbnRzKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU2hhcGVTZWdtZW50VmFsdWUodHlw
ZSwgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3VtZW50
cykuLi4pKTsKKyAgICB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgdGFyZ2V0KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKKyAgICB9CisKKyAgICBjb25zdCBD
U1NWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGkpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
bV9hcmd1bWVudHMtPmxlbmd0aCgpID4gaSk7CisgICAgICAgIHJldHVybiAqKG1fYXJndW1lbnRz
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICB9CisKKyAgICBDU1NTaGFwZVNlZ21l
bnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fYWZmaW5pdHk7CisgICAgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTU2hhcGVTZWdt
ZW50JiBvdGhlcikgY29uc3Q7CisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIGFwcGVuZEFyZ3MoKSB7IH0KKyAgICB2b2lkIGFwcGVuZEFyZ3Mo
UmVmPENTU1ZhbHVlPiYmIHYpIHsgbV9hcmd1bWVudHMtPmFwcGVuZChXVEZNb3ZlKHYpKTsgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgLi4uQXJncz4KKyAgICB2b2lkIGFwcGVuZEFyZ3MoUmVm
PENTU1ZhbHVlPiYmIHYsIEFyZ3MgLi4uYXJncykKKyAgICB7CisgICAgICAgIGFwcGVuZEFyZ3Mo
V1RGTW92ZSh2KSk7CisgICAgICAgIGFwcGVuZEFyZ3Moc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSAuLi5BcmdzPgorICAgIENTU1No
YXBlU2VnbWVudFZhbHVlKENTU1NoYXBlU2VnbWVudDo6U2VnbWVudFR5cGUgdHlwZSwgQ1NTU2hh
cGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0
LCBBcmdzIC4uLmFyZ3MpCisgICAgICAgIDogQ1NTU2hhcGVTZWdtZW50KHR5cGUpCisgICAgICAg
ICwgbV9hZmZpbml0eShhZmZpbml0eSkKKyAgICAgICAgLCBtX3RhcmdldChXVEZNb3ZlKHRhcmdl
dCkpCisgICAgICAgICwgbV9hcmd1bWVudHMoQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpKQorICAgIHsKKyAgICAgICAgYXBwZW5kQXJncyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pOworICAgIH0KKworICAgIENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBtX2Fm
ZmluaXR5OworICAgIFJlZjxDU1NWYWx1ZT4gbV90YXJnZXQ7CisgICAgUmVmPENTU1ZhbHVlTGlz
dD4gbV9hcmd1bWVudHM7Cit9OworCit9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19WQUxV
RShDU1NTaGFwZVNlZ21lbnQsIGlzU2hhcGVTZWdtZW50VmFsdWUoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuY3BwCmluZGV4IDVlMjE4MjI2M2ZjZWE1Y2FmZjM2M2U0ZmY0NDAzOTQzODExZjZkYWMuLjYz
MDllM2ZmNzNkY2NiNjY3MzFmMjI0YjY0OWQ3ODkyZGEyZWQxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlLmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIkNTU1JheVZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTU2hhZG93VmFsdWUuaCIKKyNp
bmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZh
bHVlLmgiCiAjaW5jbHVkZSAiQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NW
YWx1ZUxpc3QuaCIKQEAgLTIzMCw2ICsyMzEsOCBAQCBib29sIENTU1ZhbHVlOjplcXVhbHMoY29u
c3QgQ1NTVmFsdWUmIG90aGVyKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NW
YWx1ZXM8Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGNhc2UgRm9u
dFN0eWxlUmFuZ2VDbGFzczoKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENT
U0ZvbnRTdHlsZVJhbmdlVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgU2hhcGVT
ZWdtZW50Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NTaGFw
ZVNlZ21lbnQ+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMzOSw2
ICszNDIsOCBAQCBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICByZXR1
cm4gZG93bmNhc3Q8Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CiAg
ICAgY2FzZSBGb250U3R5bGVSYW5nZUNsYXNzOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NT
Rm9udFN0eWxlUmFuZ2VWYWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKKyAgICBjYXNlIFNo
YXBlU2VnbWVudENsYXNzOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTU2hhcGVTZWdtZW50
PigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtNDk3LDYgKzUwMiw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogICAgIGNh
c2UgRm9udFN0eWxlUmFuZ2VDbGFzczoKICAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU0ZvbnRT
dHlsZVJhbmdlVmFsdWU+KHRoaXMpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTaGFwZVNl
Z21lbnRDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU1NoYXBlU2VnbWVudD4odGhp
cyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IGRhZGU1OGRhMjA2OGI3ZWVjY2RhYTMzMTkxOGM0NGQz
YTc2ZTA1YzguLjNmNzVhZjMwYWI5MDI4YWViMmQxNTJmMTQ1Yzk4OTM1N2I1MTllYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5oCkBAIC0xMzQsNiArMTM0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNH
cmlkQXV0b1JlcGVhdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gR3JpZEF1
dG9SZXBlYXRDbGFzczsgfQogICAgIGJvb2wgaXNHcmlkSW50ZWdlclJlcGVhdFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gR3JpZEludGVnZXJSZXBlYXRDbGFzczsgfQogICAg
IGJvb2wgaXNHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5
cGUgPT0gR3JpZFRlbXBsYXRlQXJlYXNDbGFzczsgfQorICAgIGJvb2wgaXNTaGFwZVNlZ21lbnRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFNoYXBlU2VnbWVudENsYXNzOyB9
CiAgICAgYm9vbCBpc0dyaWRMaW5lTmFtZXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NU
eXBlID09IEdyaWRMaW5lTmFtZXNDbGFzczsgfQogICAgIGJvb2wgaXNTdWJncmlkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTdWJncmlkQ2xhc3M7IH0KICAgICBib29sIGlz
VW5pY29kZVJhbmdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBVbmljb2Rl
UmFuZ2VDbGFzczsgfQpAQCAtMjA5LDYgKzIxMCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgQ2Fs
Y3VsYXRpb25DbGFzcywKICAgICAgICAgR3JpZFRlbXBsYXRlQXJlYXNDbGFzcywKICAgICAgICAg
VmFsdWVQYWlyQ2xhc3MsCisgICAgICAgIFNoYXBlU2VnbWVudENsYXNzLAogCiAgICAgICAgIENT
U0NvbnRlbnREaXN0cmlidXRpb25DbGFzcywKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3
b3Jkcy5pbgppbmRleCAyZGQ0YzBiYWMzYzlhM2E0ZDYzYmFlZGMyOTkxMDgwMmI1MjIwMmY5Li4x
YjY1NGViMjE5ZDRlMWM5YjIyOGZlMTcxNTg1MzkzODA1YzViMTM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtMTI4Niw2ICsxMjg2LDI3IEBAIHJlY3QKIAogLy8g
c2hhcGVzCiBwb2x5Z29uCitzaGFwZQorCisvLyBzaGFwZSgpCisvLyBmcm9tCisvLyB0bworLy8g
bW92ZQorbGluZQoraGxpbmUKK3ZsaW5lCitjdXJ2ZQorLy8gc21vb3RoCithcmMKK2Nsb3NlCit2
aWEKK29mCitieQorY3cKK2NjdworLy8gbGFyZ2UKKy8vIHNtYWxsCisvLyByb3RhdGUKIAogLy8g
QGZvbnQtZmFjZSBzcmMKIGZvcm1hdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1No
YXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhcGVTZWdtZW50
RnVuY3Rpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmZiYjk5NDNiZDBmNzVmM2FhOTE1NTU0OGMzYWE2
NTVjOGZjZTdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2Vn
bWVudEZ1bmN0aW9ucy5jcHAKQEAgLTAsMCArMSwyMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcGVTZWdtZW50RnVuY3Rpb25zLmgiCisKKyNpbmNsdWRl
ICJCYXNpY1NoYXBlU2VnbWVudC5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGlu
Z3MuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZS5o
IgorI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgorI2luY2x1ZGUgIlBhaXIuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjb252ZXJ0UG9p
bnRUb0NTU1ZhbHVlKGNvbnN0IExlbmd0aFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlKQoreworICAgIGF1dG8mIHBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwor
ICAgIHJldHVybiBwb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZSgKKyAgICAgICAgcG9vbC5j
cmVhdGVWYWx1ZShwb2ludC54KCksIHN0eWxlKSwKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZShw
b2ludC55KCksIHN0eWxlKSwKKyAgICAgICAgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6
RG9Ob3RDb2FsZXNjZSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZT4gYXV0byB0b0NT
U0FyZ3MoY29uc3QgVmFsdWUmLCBjb25zdCBSZW5kZXJTdHlsZSYpOworCit0ZW1wbGF0ZTw+Cith
dXRvIHRvQ1NTQXJncyhjb25zdCBMZW5ndGgmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZTxSZWY8Q1NTVmFsdWU+PihDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHZhbHVlLCBzdHlsZSkpOworfQorCit0ZW1w
bGF0ZTw+CithdXRvIHRvQ1NTQXJnczxMZW5ndGhQb2ludD4oY29uc3QgTGVuZ3RoUG9pbnQmIHZh
bHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90
dXBsZShjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLCBzdHlsZSkpOworfQorCit0ZW1wbGF0
ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlJiB2YWx1
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVw
bGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0
eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5wb2ludDEsIHN0eWxl
KSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5wb2ludDIsIHN0eWxlKSk7
Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NBcmdzKGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNT
aGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJl
dHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFs
dWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2
YWx1ZS5wb2ludDEsIHN0eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NBcmdzKGNv
bnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIHZhbHVlLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSgKKyAgICAgICAgY29u
dmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS50YXJnZXRQb2ludCwgc3R5bGUpLAorICAgICAgICBj
b252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnBvaW50Miwgc3R5bGUpKTsKK30KKwordGVtcGxh
dGU8PgorYXV0byB0b0NTU0FyZ3MoY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8mIHBvb2wgPSBDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpOworICAgIGF1dG8gcmFkaXVzID0gUGFpcjo6Y3JlYXRlKAorICAgICAgICBw
b29sLmNyZWF0ZVZhbHVlKHZhbHVlLnJhZGl1cy53aWR0aCwgc3R5bGUpLAorICAgICAgICBwb29s
LmNyZWF0ZVZhbHVlKHZhbHVlLnJhZGl1cy5oZWlnaHQsIHN0eWxlKSwKKyAgICAgICAgUGFpcjo6
SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpOworCisgICAgcmV0dXJuIHN0ZDo6bWFr
ZV90dXBsZSgKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS50YXJnZXRQb2lu
dCwgc3R5bGUpLAorICAgICAgICBwb29sLmNyZWF0ZVZhbHVlKFdURk1vdmUocmFkaXVzKSksCisg
ICAgICAgIHZhbHVlLnN3ZWVwID8gQ1NTVmFsdWVDdyA6IENTU1ZhbHVlQ2N3LAorICAgICAgICB2
YWx1ZS5sYXJnZUFyYyA/IENTU1ZhbHVlTGFyZ2UgOiBDU1NWYWx1ZVNtYWxsLAorICAgICAgICBw
b29sLmNyZWF0ZVZhbHVlKHZhbHVlLmFuZ2xlLCBDU1NVbml0VHlwZTo6Q1NTX0RFRykpOworfQor
CitSZWY8Q1NTU2hhcGVTZWdtZW50PiB0b0NTU1NoYXBlU2VnbWVudChjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBzZWdtZW50KQoreworICAgIGF1dG8g
dG9DU1MgPSBbJl0oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBhdXRv
IGNyZWF0ZSwgY29uc3QgYXV0byYgYXMpIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6YXBwbHkoY3Jl
YXRlLCBzdGQ6OnR1cGxlX2NhdChzdGQ6Om1ha2VfdHVwbGUoYWZmaW5pdHkpLCB0b0NTU0FyZ3Mo
KHNlZ21lbnQuKmFzKSgpLCBzdHlsZSkpKTsKKyAgICB9OworCisjZGVmaW5lIENSRUFURV9DU1Nf
U0hBUEVfU0VHTUVOVF9GUk9NX0JBU0lDX1NIQVBFX1NFR01FTlQoVHlwZSkgXAorICAgIGNhc2Ug
U2hhcGVTZWdtZW50IyNUeXBlOjpBYnNTZWdUeXBlOiBcCisgICAgICAgIHJldHVybiB0b0NTUyhD
U1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRlLCBDU1NTaGFwZVNlZ21lbnQ6
OmNyZWF0ZSMjVHlwZSwgJkJhc2ljU2hhcGVTZWdtZW50OjphcyMjVHlwZSk7IFwKKyAgICBjYXNl
IFNoYXBlU2VnbWVudCMjVHlwZTo6UmVsU2VnVHlwZTogXAorICAgICAgICByZXR1cm4gdG9DU1Mo
Q1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5OjpSZWxhdGl2ZSwgQ1NTU2hhcGVTZWdtZW50
OjpjcmVhdGUjI1R5cGUsICZCYXNpY1NoYXBlU2VnbWVudDo6YXMjI1R5cGUpOyBcCisKKyAgICBz
d2l0Y2ggKHNlZ21lbnQudHlwZSgpKSB7CisgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgorICAg
ICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKworICAgICAg
ICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9WQUxVRShDUkVBVEVfQ1NTX1NIQVBF
X1NFR01FTlRfRlJPTV9CQVNJQ19TSEFQRV9TRUdNRU5UKQorCisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6
OmNyZWF0ZUNsb3NlUGF0aCgpOworICAgIH0KK30KK3RlbXBsYXRlIDxjbGFzcyBEZWZpbml0aW9u
PgorU1ZHUGF0aFNlZ1R5cGUgc2VnbWVudFR5cGUoY29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUm
IHNlZ21lbnRXaXRoVmFsdWUpCit7CisgICAgcmV0dXJuIHNlZ21lbnRXaXRoVmFsdWUuYWZmaW5p
dHkoKSA9PSBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRlID8gRGVmaW5p
dGlvbjo6QWJzU2VnVHlwZSA6IERlZmluaXRpb246OlJlbFNlZ1R5cGU7Cit9CisKK1JlZjxCYXNp
Y1NoYXBlU2VnbWVudD4gZnJvbUNTU1NoYXBlU2VnbWVudChjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgY29uc3QgQ1NTU2hhcGVTZWdtZW50JiBjc3NTZWdt
ZW50KQoreworICAgIGF1dG8gdG9MZW5ndGggPSBbJl0oY29uc3QgQ1NTVmFsdWUmIHZhbHVlKSAt
PiBMZW5ndGggeworICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IEZpeGVkRmxvYXRD
b252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oY29u
dmVyc2lvbkRhdGEpOworICAgIH07CisKKyAgICBhdXRvIHRvTGVuZ3RoUG9pbnQgPSBbJl0oY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKSAtPiBMZW5ndGhQb2ludCB7CisgICAgICAgIGF1dG8gcGFpciA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkucGFpclZhbHVlKCk7CisgICAgICAg
IEFTU0VSVChwYWlyKTsKKyAgICAgICAgcmV0dXJuIExlbmd0aFBvaW50IHsgdG9MZW5ndGgoKnBh
aXItPmZpcnN0KCkpLCB0b0xlbmd0aCgqcGFpci0+c2Vjb25kKCkpIH07CisgICAgfTsKKworICAg
IGF1dG8gdG9MZW5ndGhTaXplID0gWyZdKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkgLT4gTGVuZ3Ro
U2l6ZSB7CisgICAgICAgIGF1dG8gcGFpciA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkucGFpclZhbHVlKCk7CisgICAgICAgIEFTU0VSVChwYWlyKTsKKyAgICAgICAgcmV0dXJu
IExlbmd0aFNpemUgeyB0b0xlbmd0aCgqcGFpci0+Zmlyc3QoKSksIHRvTGVuZ3RoKCpwYWlyLT5z
ZWNvbmQoKSkgfTsKKyAgICB9OworCisgICAgYXV0byB0eXBlID0gY3NzU2VnbWVudC50eXBlKCk7
CisKKyAgICBpZiAodHlwZSA9PSBDU1NTaGFwZVNlZ21lbnQ6OkNsb3NlUGF0aCkKKyAgICAgICAg
cmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKworICAgIGNvbnN0
IGF1dG8mIHNlZ21lbnRXaXRoVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21l
bnRWYWx1ZSY+KGNzc1NlZ21lbnQpOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBD
U1NTaGFwZVNlZ21lbnQ6Ok1vdmVUbzogeworICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21l
bnQ6OmNyZWF0ZU1vdmVUbygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudE1v
dmVUbz4oc2VnbWVudFdpdGhWYWx1ZSksCisgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21l
bnRXaXRoVmFsdWUudGFyZ2V0KCkpKTsKKyAgICB9CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVu
dDo6TGluZVRvOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVU
bygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudExpbmVUbz4oc2VnbWVudFdp
dGhWYWx1ZSksCisgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUudGFy
Z2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpMaW5lVG9Ib3Jpem9udGFsOgor
ICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVUb0hvcml6b250YWwo
CisgICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRMaW5lVG9Ib3Jpem9udGFsPihz
ZWdtZW50V2l0aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoKHNlZ21lbnRXaXRoVmFsdWUu
dGFyZ2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpMaW5lVG9WZXJ0aWNhbDoK
KyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9WZXJ0aWNhbCgK
KyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudExpbmVUb1ZlcnRpY2FsPihzZWdt
ZW50V2l0aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoKHNlZ21lbnRXaXRoVmFsdWUudGFy
Z2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpDdXJ2ZVRvQ3ViaWM6CisgICAg
ICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljKAorICAgICAg
ICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50Q3VydmVUb0N1YmljPihzZWdtZW50V2l0aFZh
bHVlKSwgeworICAgICAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS5h
cmd1bWVudCgwKSksCisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZh
bHVlLmFyZ3VtZW50KDEpKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRX
aXRoVmFsdWUudGFyZ2V0KCkpCisgICAgICAgICAgICB9KTsKKworICAgIGNhc2UgQ1NTU2hhcGVT
ZWdtZW50OjpDdXJ2ZVRvUXVhZHJhdGljOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21l
bnQ6OmNyZWF0ZUN1cnZlVG9RdWFkcmF0aWMoCisgICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFw
ZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljPihzZWdtZW50V2l0aFZhbHVlKSwgeworICAgICAgICAg
ICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgwKSksCisgICAg
ICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQorICAg
ICAgICAgICAgfSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q3VydmVUb0N1YmljU21v
b3RoOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJp
Y1Ntb290aCgKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudEN1cnZlVG9DdWJp
Y1Ntb290aD4oc2VnbWVudFdpdGhWYWx1ZSksIHsKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBv
aW50KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMCkpLAorICAgICAgICAgICAgICAgIHRvTGVu
Z3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAgICAgIH0pOworCisg
ICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkN1cnZlVG9RdWFkcmF0aWNTbW9vdGg6CisgICAgICAg
IHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCgK
KyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWNTbW9v
dGg+KHNlZ21lbnRXaXRoVmFsdWUpLAorICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50
V2l0aFZhbHVlLnRhcmdldCgpKSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6QXJjVG86
CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQXJjVG8oCisgICAgICAg
ICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRBcmNUbz4oc2VnbWVudFdpdGhWYWx1ZSksIHsK
KyAgICAgICAgICAgICAgICB0b0xlbmd0aFNpemUoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgw
KSksCisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHNlZ21lbnRX
aXRoVmFsdWUuYXJndW1lbnQoMykpLmZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19ERUcpLAor
ICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihzZWdtZW50V2l0aFZh
bHVlLmFyZ3VtZW50KDEpKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDdywKKyAgICAgICAgICAgICAg
ICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgy
KSkudmFsdWVJRCgpID09IENTU1ZhbHVlTGFyZ2UsCisgICAgICAgICAgICAgICAgdG9MZW5ndGhQ
b2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQorICAgICAgICAgICAgfSk7CisKKyAgICBj
YXNlIENTU1NoYXBlU2VnbWVudDo6Q2xvc2VQYXRoOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFw
ZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5j
dGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NjQwZDcxZTI5YTUwODM4MjUzZTBjMmVhNzA5NjExNDQ5MWQ2MmQzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5oCkBA
IC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgor
ICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEJhc2ljU2hhcGVTZWdtZW50OworY2xhc3MgQ1NTU2hhcGVTZWdtZW50OworY2xhc3MgQ1NT
VG9MZW5ndGhDb252ZXJzaW9uRGF0YTsKK2NsYXNzIFJlbmRlclN0eWxlOworCitSZWY8Q1NTU2hh
cGVTZWdtZW50PiB0b0NTU1NoYXBlU2VnbWVudChjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEJh
c2ljU2hhcGVTZWdtZW50Jik7CitSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGZyb21DU1NTaGFwZVNl
Z21lbnQoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIGNvbnN0IENTU1NoYXBlU2Vn
bWVudCYpOworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuY3BwCmluZGV4IGQxYjVkMzQ1NTU5MTBiZDgzM2VhZTlmZmJjOTU3YmMxY2QzMjQ5MGIu
LjhlYTRmYTg2ZWY0YjRlYmFjNmY3ZGYxZjFkNzQzYmU0OWVmYWFkNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRG
ZWF0dXJlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250UGFsZXR0ZVZhbHVlc092ZXJyaWRlQ29s
b3JzVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKICNpZiBFTkFCTEUoVkFS
SUFUSU9OX0ZPTlRTKQogI2luY2x1ZGUgIkNTU0ZvbnRWYXJpYXRpb25WYWx1ZS5oIgogI2VuZGlm
CkBAIC0yNjUyLDYgKzI2NTMsMTk2IEBAIHN0YXRpYyBSZWZQdHI8Q1NTQmFzaWNTaGFwZVBhdGg+
IGNvbnN1bWVCYXNpY1NoYXBlUGF0aChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzCiAgICAgcmV0
dXJuIHNoYXBlOwogfQogCitzdGF0aWMgUmVmUHRyPENTU1NoYXBlU2VnbWVudD4gY29uc3VtZVNo
YXBlU2VnbWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiBjb250ZXh0KQoreworICAgIGF1dG8gY29tbWFuZCA9IGFyZ3MuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKTsKKyAgICBpZiAoY29tbWFuZC5pZCgpID09IENTU1ZhbHVlQ2xvc2UpCisg
ICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworCisgICAg
aWYgKCFpZGVudE1hdGNoZXM8Q1NTVmFsdWVUbywgQ1NTVmFsdWVCeT4oYXJncy5wZWVrKCkuaWQo
KSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBhZmZpbml0eSA9IGFyZ3Mu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpID09IENTU1ZhbHVlVG8gPyBDU1NTaGFw
ZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRlIDogQ1NTU2hhcGVTZWdtZW50OjpDb29y
ZEFmZmluaXR5OjpSZWxhdGl2ZTsKKyAgICBhdXRvIGNvbnN1bWVOZXh0TGVuZ3RoT3JQZXJjZW50
ID0gWyZdKCkgeworICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBj
b250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6OkFsbCk7CisgICAgfTsKKworICAgIGlmIChjb21tYW5k
LmlkKCkgPT0gQ1NTVmFsdWVIbGluZSB8fCBjb21tYW5kLmlkKCkgPT0gQ1NTVmFsdWVWbGluZSkg
eworICAgICAgICBhdXRvIHZhbHVlID0gY29uc3VtZU5leHRMZW5ndGhPclBlcmNlbnQoKTsKKyAg
ICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
IHJldHVybiBjb21tYW5kLmlkKCkgPT0gQ1NTVmFsdWVIbGluZQorICAgICAgICAgICAgPyBDU1NT
aGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVUb0hvcml6b250YWwoYWZmaW5pdHksIHZhbHVlLnJlbGVh
c2VOb25OdWxsKCkpCisgICAgICAgICAgICA6IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRv
VmVydGljYWwoYWZmaW5pdHksIHZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KKworICAg
IGF1dG8gY29uc3VtZU5leHRDb29yZGluYXRlcyA9IFsmXSAoKSAtPiBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHsKKyAgICAgICAgYXV0byB4ID0gY29uc3VtZU5leHRMZW5ndGhPclBlcmNlbnQo
KTsKKyAgICAgICAgaWYgKCF4KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgYXV0byB5ID0gY29uc3VtZU5leHRMZW5ndGhPclBlcmNlbnQoKTsKKyAgICAgICAgaWYgKCF5
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVBy
aW1pdGl2ZVZhbHVlUGFpcih4LnJlbGVhc2VOb25OdWxsKCksIHkucmVsZWFzZU5vbk51bGwoKSwg
UGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSk7CisgICAgfTsKKwor
ICAgIGF1dG8gYXRFbmRPZlNlZ21lbnQgPSBbJl0gKCkgeworICAgICAgICByZXR1cm4gYXJncy5h
dEVuZCgpIHx8IGFyZ3MucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuOworICAgIH07CisKKyAg
ICBhdXRvIHRhcmdldFBvaW50ID0gY29uc3VtZU5leHRDb29yZGluYXRlcygpOworICAgIGlmICgh
dGFyZ2V0UG9pbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3dpdGNoIChjb21t
YW5kLmlkKCkpIHsKKyAgICBjYXNlIENTU1ZhbHVlTW92ZToKKyAgICAgICAgcmV0dXJuIENTU1No
YXBlU2VnbWVudDo6Y3JlYXRlTW92ZVRvKGFmZmluaXR5LCB0YXJnZXRQb2ludC5yZWxlYXNlTm9u
TnVsbCgpKTsKKworICAgIGNhc2UgQ1NTVmFsdWVMaW5lOgorICAgICAgICByZXR1cm4gQ1NTU2hh
cGVTZWdtZW50OjpjcmVhdGVMaW5lVG8oYWZmaW5pdHksIHRhcmdldFBvaW50LnJlbGVhc2VOb25O
dWxsKCkpOworCisgICAgY2FzZSBDU1NWYWx1ZUN1cnZlOiB7CisgICAgICAgIGlmIChhcmdzLnBl
ZWsoKS5pZCgpICE9IENTU1ZhbHVlVmlhKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAgICAgYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICBhdXRv
IHZpYVBvaW50MSA9IGNvbnN1bWVOZXh0Q29vcmRpbmF0ZXMoKTsKKyAgICAgICAgaWYgKCF2aWFQ
b2ludDEpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBpZiAoYXRFbmRP
ZlNlZ21lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1
cnZlVG9RdWFkcmF0aWMoYWZmaW5pdHksIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCksIHZp
YVBvaW50MS5yZWxlYXNlTm9uTnVsbCgpKTsKKworICAgICAgICBhdXRvIHZpYVBvaW50MiA9IGNv
bnN1bWVOZXh0Q29vcmRpbmF0ZXMoKTsKKyAgICAgICAgaWYgKCF2aWFQb2ludDIpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50Ojpj
cmVhdGVDdXJ2ZVRvQ3ViaWMoYWZmaW5pdHksICB0YXJnZXRQb2ludC5yZWxlYXNlTm9uTnVsbCgp
LCB2aWFQb2ludDEucmVsZWFzZU5vbk51bGwoKSwgdmlhUG9pbnQyLnJlbGVhc2VOb25OdWxsKCkp
OworICAgIH0KKworICAgIGNhc2UgQ1NTVmFsdWVTbW9vdGg6IHsKKyAgICAgICAgaWYgKGFyZ3Mu
cGVlaygpLmlkKCkgIT0gQ1NTVmFsdWVWaWEpCisgICAgICAgICAgICByZXR1cm4gQ1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGFmZmluaXR5LCAgdGFyZ2V0UG9p
bnQucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICAgICAgYXJncy5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpOworICAgICAgICBhdXRvIHZpYVBvaW50ID0gY29uc3VtZU5leHRDb29yZGluYXRl
cygpOworICAgICAgICBpZiAoIXZpYVBvaW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICAgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21v
b3RoKGFmZmluaXR5LCAgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSwgdmlhUG9pbnQucmVs
ZWFzZU5vbk51bGwoKSk7CisgICAgfQorCisgICAgY2FzZSBDU1NWYWx1ZUFyYzogeworICAgICAg
ICBpZiAoYXJncy5wZWVrKCkuaWQoKSAhPSBDU1NWYWx1ZU9mKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAgICAgYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwor
ICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJ4ID0gY29uc3VtZUxlbmd0aE9yUGVy
Y2VudChhcmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKKyAgICAg
ICAgaWYgKCFyeCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gcnk7CisgICAgICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkg
PT0gSWRlbnRUb2tlbikKKyAgICAgICAgICAgIHJ5ID0gcng7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgcnkgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwg
VmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOworICAgICAgICAgICAgaWYgKCFyeSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8Q1NTVmFsdWVJRD4gc3dlZXA7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4g
c2l6ZTsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBhbmdsZTsKKworICAgICAgICB3aGlsZSAo
IWF0RW5kT2ZTZWdtZW50KCkpIHsKKyAgICAgICAgICAgIGF1dG8gbmV4dElkZW50ID0gYXJncy5w
ZWVrKCkuaWQoKTsKKyAgICAgICAgICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVSb3RhdGU+
KG5leHRJZGVudCkgJiYgIWFuZ2xlKSB7CisgICAgICAgICAgICAgICAgYXJncy5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgICAgICAgICAgYW5nbGUgPSBjb25zdW1l
QW5nbGUoYXJncywgY29udGV4dC5tb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIFVuaXRsZXNz
WmVyb1F1aXJrOjpGb3JiaWQpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlQ3csIENTU1ZhbHVl
Q2N3PihuZXh0SWRlbnQpICYmICFzd2VlcC5oYXNfdmFsdWUoKSkgeworICAgICAgICAgICAgICAg
IHN3ZWVwID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpZGVu
dE1hdGNoZXM8Q1NTVmFsdWVMYXJnZSwgQ1NTVmFsdWVTbWFsbD4obmV4dElkZW50KSAmJiAhc2l6
ZS5oYXNfdmFsdWUoKSkgeworICAgICAgICAgICAgICAgIHNpemUgPSBhcmdzLmNvbnN1bWVJbmNs
dWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIWFuZ2xlKQorICAgICAgICAgICAgYW5nbGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKDAsIENTU1VuaXRUeXBlOjpDU1NfREVHKTsKKworICAgICAgICByZXR1cm4gQ1NTU2hh
cGVTZWdtZW50OjpjcmVhdGVBcmNUbygKKyAgICAgICAgICAgIGFmZmluaXR5LAorICAgICAgICAg
ICAgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSwKKyAgICAgICAgICAgIGNyZWF0ZVByaW1p
dGl2ZVZhbHVlUGFpcihyeC5yZWxlYXNlTm9uTnVsbCgpLCByeS5yZWxlYXNlTm9uTnVsbCgpLCBQ
YWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSksCisgICAgICAgICAgICBzd2Vl
cC52YWx1ZV9vcihDU1NWYWx1ZUNjdyksCisgICAgICAgICAgICBzaXplLnZhbHVlX29yKENTU1Zh
bHVlU21hbGwpLAorICAgICAgICAgICAgYW5nbGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK30KKworc3RhdGlj
IFJlZlB0cjxDU1NCYXNpY1NoYXBlU2hhcGU+IGNvbnN1bWVCYXNpY1NoYXBlU2hhcGUoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sK
KyAgICBXaW5kUnVsZSB3aW5kUnVsZSA9IFdpbmRSdWxlOjpOb25aZXJvOworCisgICAgaWYgKGlk
ZW50TWF0Y2hlczxDU1NWYWx1ZUV2ZW5vZGQsIENTU1ZhbHVlTm9uemVybz4oYXJncy5wZWVrKCku
aWQoKSkpCisgICAgICAgIHdpbmRSdWxlID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpLmlkKCkgPT0gQ1NTVmFsdWVFdmVub2RkID8gV2luZFJ1bGU6OkV2ZW5PZGQgOiBXaW5kUnVs
ZTo6Tm9uWmVybzsKKworICAgIGlmIChhcmdzLnBlZWsoKS5pZCgpICE9IENTU1ZhbHVlRnJvbSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0
ZXNwYWNlKCk7CisKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGluaXRpYWxYID0gY29u
c3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6OkFsbCk7
CisgICAgaWYgKCFpbml0aWFsWCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGluaXRpYWxZID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChh
cmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6OkFsbCk7CisgICAgaWYgKCFpbml0aWFsWSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBz
ZWdtZW50cyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKworICAgIGZv
ciAoOzspIHsKKyAgICAgICAgYXV0byBzZWdtZW50ID0gY29uc3VtZVNoYXBlU2VnbWVudChhcmdz
LCBjb250ZXh0KTsKKyAgICAgICAgaWYgKCFzZWdtZW50KQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAgICAgc2VnbWVudHMtPmFwcGVuZChzZWdtZW50LnJlbGVhc2VOb25OdWxs
KCkpOworICAgICAgICBpZiAoYXJncy5hdEVuZCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBzaGFwZSA9IENTU0Jhc2lj
U2hhcGVTaGFwZTo6Y3JlYXRlKAorICAgICAgICBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoCisg
ICAgICAgICAgICBpbml0aWFsWC5yZWxlYXNlTm9uTnVsbCgpLAorICAgICAgICAgICAgaW5pdGlh
bFkucmVsZWFzZU5vbk51bGwoKSwKKyAgICAgICAgICAgIFBhaXI6OklkZW50aWNhbFZhbHVlRW5j
b2Rpbmc6OkRvTm90Q29hbGVzY2UpLAorICAgICAgICBXVEZNb3ZlKHNlZ21lbnRzKSk7CisKKyAg
ICBzaGFwZS0+c2V0V2luZFJ1bGUod2luZFJ1bGUpOworICAgIHJldHVybiBzaGFwZTsKK30KKwog
c3RhdGljIHZvaWQgY29tcGxldGU0U2lkZXMoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzaWRl
WzRdKQogewogICAgIGlmIChzaWRlWzNdKQpAQCAtMjc1Nyw2ICsyOTQ4LDggQEAgc3RhdGljIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUJhc2ljU2hhcGUoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIGMKICAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZUluc2V0KGFy
Z3MsIGNvbnRleHQpOwogICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlUGF0aCkKICAgICAgICAg
c2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZVBhdGgoYXJncyk7CisgICAgZWxzZSBpZiAoaWQgPT0g
Q1NTVmFsdWVTaGFwZSkKKyAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZVNoYXBlKGFy
Z3MsIGNvbnRleHQpOwogICAgIGlmICghc2hhcGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIHJhbmdlID0gcmFuZ2VDb3B5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEyZDA3OWVhMTc3YWY0
NmZlNmMyNzgyYjFlZDQxYTFjNjFhY2VkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5jcHAKQEAgLTAsMCArMSwyOTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQmFzaWNTaGFwZVNl
Z21lbnQuaCIKKworI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIlBhdGgu
aCIKKyNpbmNsdWRlICJTVkdQYXRoQnVpbGRlci5oIgorI2luY2x1ZGUgIlNWR1BhdGhQYXJzZXIu
aCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZ0ltcGwuaCIK
KyNpbmNsdWRlICJTVkdQYXRoU291cmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgRGVmaW5pdGlvbj4KK2NsYXNzIEJhc2ljU2hhcGVTZWdtZW50VmFsdWUg
OiBwdWJsaWMgQmFzaWNTaGFwZVNlZ21lbnQgeworcHVibGljOgorICAgIGNvbnN0IHR5cGVuYW1l
IERlZmluaXRpb246OlZhbHVlJiB2YWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
dHlwZSgpID09IERlZmluaXRpb246OkFic1NlZ1R5cGUgfHwgdHlwZSgpID09IERlZmluaXRpb246
OlJlbFNlZ1R5cGUpOworICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CisKKyAgICBib29s
IGVxdWFscyhjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQorICAgICAgICAgICAgJiYgdmFsdWUo
KSA9PSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY1NoYXBlU2VnbWVudFZhbHVlPERlZmluaXRpb24+
Jj4ob3RoZXIpLnZhbHVlKCk7CisgICAgfQorCisgICAgc3RhdGljIFJlZjxCYXNpY1NoYXBlU2Vn
bWVudFZhbHVlPiBjcmVhdGUoQmFzaWNTaGFwZVNlZ21lbnQ6OlR5cGUgdHlwZSwgdHlwZW5hbWUg
RGVmaW5pdGlvbjo6VmFsdWUmJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh0eXBlID09
IERlZmluaXRpb246OkFic1NlZ1R5cGUgfHwgdHlwZSA9PSBEZWZpbml0aW9uOjpSZWxTZWdUeXBl
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxE
ZWZpbml0aW9uPih0eXBlLCBXVEZNb3ZlKHZhbHVlKSkpOworICAgIH0KKworcHJvdGVjdGVkOgor
ICAgIEJhc2ljU2hhcGVTZWdtZW50VmFsdWUoQmFzaWNTaGFwZVNlZ21lbnQ6OlR5cGUgdHlwZSwg
dHlwZW5hbWUgRGVmaW5pdGlvbjo6VmFsdWUmJiB2YWx1ZSkKKyAgICAgICAgOiBCYXNpY1NoYXBl
U2VnbWVudCh0eXBlKQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpIHsgfQorCitw
cml2YXRlOgorICAgIHR5cGVuYW1lIERlZmluaXRpb246OlZhbHVlIG1fdmFsdWU7Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RhdGljIGNvbnN0IHR5cGVuYW1lIFQ6OlZhbHVlJiBleHRy
YWN0VmFsdWUoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIHNlZykKK3sKKyAgICBBU1NFUlQoc2Vn
LnR5cGUoKSA9PSBUOjpBYnNTZWdUeXBlIHx8IHNlZy50eXBlKCkgPT0gVDo6UmVsU2VnVHlwZSk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50VmFsdWU8VD4m
PihzZWcpLnZhbHVlKCk7Cit9CisKK2Jvb2wgQmFzaWNTaGFwZVNlZ21lbnQ6OmVxdWFscyhjb25z
dCBCYXNpY1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0Cit7CisgICAgYXV0byB0eXBlID0gdGhp
cy0+dHlwZSgpOworICAgIGlmICh0eXBlICE9IG90aGVyLnR5cGUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisjZGVmaW5lIENPTVBBUkVfU0hBUEVfU0VHTUVOVF9WQUxVRShUeXBlKSBcCisg
ICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6OkFic1NlZ1R5cGU6IFwKKyAgICBjYXNlIFNoYXBl
U2VnbWVudCMjVHlwZTo6UmVsU2VnVHlwZTogXAorICAgICAgICByZXR1cm4gZXh0cmFjdFZhbHVl
PFNoYXBlU2VnbWVudCMjVHlwZT4oKnRoaXMpID09IGV4dHJhY3RWYWx1ZTxTaGFwZVNlZ21lbnQj
I1R5cGU+KG90aGVyKTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgUGF0aFNlZ0Ns
b3NlUGF0aDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgRk9SX0VBQ0hfU0hBUEVf
U0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoQ09NUEFSRV9TSEFQRV9TRUdNRU5UX1ZBTFVFKQorICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZGVmaW5lIElNUExFTUVOVF9TSEFQRV9T
RUdNRU5UX1ZBTFVFKFRZUEUpIFwKK1JlZjxCYXNpY1NoYXBlU2VnbWVudD4gQmFzaWNTaGFwZVNl
Z21lbnQ6OmNyZWF0ZSMjVFlQRShCYXNpY1NoYXBlU2VnbWVudDo6VHlwZSB0eXBlLCB0eXBlbmFt
ZSBTaGFwZVNlZ21lbnQjI1RZUEU6OlZhbHVlJiYgdmFsdWUpIFwKK3sgXAorICAgIHJldHVybiBC
YXNpY1NoYXBlU2VnbWVudFZhbHVlPFNoYXBlU2VnbWVudCMjVFlQRT46OmNyZWF0ZSh0eXBlLCBX
VEZNb3ZlKHZhbHVlKSk7IFwKK30gXAorY29uc3QgdHlwZW5hbWUgU2hhcGVTZWdtZW50IyNUWVBF
OjpWYWx1ZSYgQmFzaWNTaGFwZVNlZ21lbnQ6OmFzIyNUWVBFKCkgY29uc3QgXAoreyBcCisgICAg
cmV0dXJuIGV4dHJhY3RWYWx1ZTxTaGFwZVNlZ21lbnQjI1RZUEU+KCp0aGlzKTsgXAorfQorCitG
T1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9WQUxVRShJTVBMRU1FTlRfU0hBUEVfU0VH
TUVOVF9WQUxVRSkKKworQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBDdXJ2
ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlJiBmcm9tLCBjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1Zh
bHVlJiB0bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQoreworICAgIHJldHVybiB7
CisgICAgICAgIGJsZW5kKGZyb20ucG9pbnQxLCB0by5wb2ludDEsIGNvbnRleHQpLAorICAgICAg
ICBibGVuZChmcm9tLnBvaW50MiwgdG8ucG9pbnQyLCBjb250ZXh0KSwKKyAgICAgICAgYmxlbmQo
ZnJvbS50YXJnZXRQb2ludCwgdG8udGFyZ2V0UG9pbnQsIGNvbnRleHQpLAorICAgIH07Cit9CisK
K0N1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb0N1Ymlj
U21vb3RoU2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29uc3QgQ3VydmVUb0N1YmljU21vb3RoU2hhcGVT
ZWdWYWx1ZSYgdG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1
cm4geworICAgICAgICBibGVuZChmcm9tLnBvaW50MiwgdG8ucG9pbnQyLCBjb250ZXh0KSwKKyAg
ICAgICAgYmxlbmQoZnJvbS50YXJnZXRQb2ludCwgdG8udGFyZ2V0UG9pbnQsIGNvbnRleHQpLAor
ICAgIH07Cit9CisKK0N1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1
cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlJiBmcm9tLCBjb25zdCBDdXJ2ZVRvUXVhZHJhdGlj
U2hhcGVTZWdWYWx1ZSYgdG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKK3sKKyAg
ICByZXR1cm4geworICAgICAgICBibGVuZChmcm9tLnBvaW50MSwgdG8ucG9pbnQxLCBjb250ZXh0
KSwKKyAgICAgICAgYmxlbmQoZnJvbS50YXJnZXRQb2ludCwgdG8udGFyZ2V0UG9pbnQsIGNvbnRl
eHQpLAorICAgIH07Cit9CisKK0FyY1RvU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBBcmNUb1No
YXBlU2VnVmFsdWUmIGZyb20sIGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYgdG8sIGNvbnN0IEJs
ZW5kaW5nQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1cm4geworICAgICAgICBibGVuZChm
cm9tLnJhZGl1cywgdG8ucmFkaXVzLCBjb250ZXh0KSwKKyAgICAgICAgYmxlbmQoZnJvbS5hbmds
ZSwgdG8uYW5nbGUsIGNvbnRleHQpLAorICAgICAgICBjb250ZXh0LnByb2dyZXNzIDwgMC41ZiA/
IGZyb20uc3dlZXAgOiB0by5zd2VlcCwKKyAgICAgICAgY29udGV4dC5wcm9ncmVzcyA8IDAuNWYg
PyBmcm9tLmxhcmdlQXJjIDogdG8ubGFyZ2VBcmMsCisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0
UG9pbnQsIHRvLnRhcmdldFBvaW50LCBjb250ZXh0KQorICAgIH07Cit9CisKK1JlZjxCYXNpY1No
YXBlU2VnbWVudD4gQmFzaWNTaGFwZVNlZ21lbnQ6OmJsZW5kKGNvbnN0IEJhc2ljU2hhcGVTZWdt
ZW50JiBmcm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit7CisgICAg
YXV0byB0eXBlID0gdGhpcy0+dHlwZSgpOworICAgIEFTU0VSVCh0eXBlID09IGZyb20udHlwZSgp
KTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgUGF0aFNlZ0Nsb3NlUGF0aDoKKyAg
ICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKworI2Rl
ZmluZSBCTEVORF9TRUdNRU5UX1RZUEUoVHlwZSkgXAorICAgIGNhc2UgU2hhcGVTZWdtZW50IyNU
eXBlOjpBYnNTZWdUeXBlOiBcCisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6OlJlbFNlZ1R5
cGU6IFwKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50VmFsdWU8U2hhcGVTZWdtZW50
IyNUeXBlPjo6Y3JlYXRlKHR5cGUsIFdlYkNvcmU6OmJsZW5kKGV4dHJhY3RWYWx1ZTxTaGFwZVNl
Z21lbnQjI1R5cGU+KGZyb20pLCBleHRyYWN0VmFsdWU8U2hhcGVTZWdtZW50IyNUeXBlPigqdGhp
cyksIGNvbnRleHQpKTsKKworICAgICAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lU
SF9WQUxVRShCTEVORF9TRUdNRU5UX1RZUEUpCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRl
Q2xvc2VQYXRoKCk7CisgICAgfQorfQorY2xhc3MgU2hhcGVTVkdQYXRoU291cmNlIGZpbmFsIDog
cHVibGljIFNWR1BhdGhTb3VyY2UgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNoYXBlU1ZHUGF0
aFNvdXJjZShjb25zdCBMZW5ndGhQb2ludCYgc3RhcnQsIGNvbnN0IFZlY3RvcjxSZWY8QmFzaWNT
aGFwZVNlZ21lbnQ+PiYgc2VnbWVudHMsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKKyAgICAgICAg
OiBtX3N0YXJ0KHN0YXJ0KQorICAgICAgICAsIG1fc2VnbWVudHMoc2VnbWVudHMpCisgICAgICAg
ICwgbV9zaXplKHNpemUpCisgICAgICAgICwgbV9pdGVtRW5kKHNlZ21lbnRzLnNpemUoKSkKKyAg
ICAgICAgeworCisgICAgICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIGhhc01vcmVEYXRhKCkg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX2l0ZW1DdXJyZW50IDwgbV9pdGVt
RW5kOworICAgIH0KKworICAgIGJvb2wgbW92ZVRvTmV4dFRva2VuKCkgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQorCisgICAgU1ZHUGF0aFNlZ1R5cGUgbmV4dENvbW1hbmQoU1ZHUGF0aFNlZ1R5cGUp
IGZpbmFsCisgICAgeworICAgICAgICBhdXRvIHR5cGUgPSBtX3NlZ21lbnRzLmF0KG1faXRlbUN1
cnJlbnQpLT50eXBlKCk7CisgICAgICAgICsrbV9pdGVtQ3VycmVudDsKKyAgICAgICAgcmV0dXJu
IHR5cGU7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gcGFyc2VT
VkdTZWdtZW50VHlwZSgpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gUGF0aFNlZ01vdmVU
b0FiczsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6Ok1vdmVUb1Nl
Z21lbnQ+IHBhcnNlTW92ZVRvU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1f
aXRlbUN1cnJlbnQpCisgICAgICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6TW92ZVRvU2Vn
bWVudCB7IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChtX3N0YXJ0LCBtX3NpemUpIH07CisKKyAg
ICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6Ok1vdmVUb1NlZ21lbnQgeyBmbG9hdFBvaW50Rm9y
TGVuZ3RoUG9pbnQodmFsdWU8U2hhcGVTZWdtZW50TW92ZVRvPigpLCBtX3NpemUpIH07CisgICAg
fQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50PiBwYXJz
ZUxpbmVUb1NlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3Vy
Y2U6OkxpbmVUb1NlZ21lbnQgeyBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWU8U2hhcGVT
ZWdtZW50TGluZVRvPigpLCBtX3NpemUpIH07CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxT
VkdQYXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gcGFyc2VMaW5lVG9Ib3Jpem9u
dGFsU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6
TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQgeyBmbG9hdFZhbHVlRm9yTGVuZ3RoKHZhbHVlPFNoYXBl
U2VnbWVudExpbmVUb0hvcml6b250YWw+KCksIG1fc2l6ZS53aWR0aCgpKSB9OworICAgIH0KKwor
ICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvVmVydGljYWxTZWdtZW50PiBw
YXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
U1ZHUGF0aFNvdXJjZTo6TGluZVRvVmVydGljYWxTZWdtZW50IHsgZmxvYXRWYWx1ZUZvckxlbmd0
aCh2YWx1ZTxTaGFwZVNlZ21lbnRMaW5lVG9WZXJ0aWNhbD4oKSwgbV9zaXplLmhlaWdodCgpKSB9
OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1Ymlj
U2VnbWVudD4gcGFyc2VDdXJ2ZVRvQ3ViaWNTZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAg
IGNvbnN0IGF1dG8mIHZhbHVlID0gdGhpcy0+dmFsdWU8U2hhcGVTZWdtZW50Q3VydmVUb0N1Ymlj
PigpOworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU2VnbWVudCB7
ICAgICAgICAKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS5wb2lu
dDEsIG1fc2l6ZSksCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUu
cG9pbnQyLCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZh
bHVlLnRhcmdldFBvaW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQorICAgIHN0ZDo6b3B0
aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudD4gcGFyc2VDdXJ2
ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8m
IHZhbHVlID0gdGhpcy0+dmFsdWU8U2hhcGVTZWdtZW50Q3VydmVUb0N1YmljU21vb3RoPigpOwor
ICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudCB7
ICAgICAgICAKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS5wb2lu
dDIsIG1fc2l6ZSksCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUu
dGFyZ2V0UG9pbnQsIG1fc2l6ZSkKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlv
bmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTZWdtZW50PiBwYXJzZUN1cnZlVG9R
dWFkcmF0aWNTZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8mIHZhbHVl
ID0gdGhpcy0+dmFsdWU8U2hhcGVTZWdtZW50Q3VydmVUb1F1YWRyYXRpYz4oKTsKKyAgICAgICAg
cmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTZWdtZW50IHsKKyAgICAgICAg
ICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS5wb2ludDEsIG1fc2l6ZSksCisgICAg
ICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUudGFyZ2V0UG9pbnQsIG1fc2l6
ZSkKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6
OkN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50PiBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9v
dGhTZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpD
dXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCB7IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2
YWx1ZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljU21vb3RoPigpLCBtX3NpemUpIH07Cisg
ICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpBcmNUb1NlZ21lbnQ+IHBh
cnNlQXJjVG9TZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8mIHZhbHVl
ID0gdGhpcy0+dmFsdWU8U2hhcGVTZWdtZW50QXJjVG8+KCk7CisgICAgICAgIGF1dG8gcmFkaXVz
ID0gZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZSh2YWx1ZS5yYWRpdXMsIG1fc2l6ZSk7CisgICAgICAg
IHJldHVybiBTVkdQYXRoU291cmNlOjpBcmNUb1NlZ21lbnQgeworICAgICAgICAgICAgLnJ4ID0g
cmFkaXVzLndpZHRoKCksCisgICAgICAgICAgICAucnkgPSByYWRpdXMuaGVpZ2h0KCksCisgICAg
ICAgICAgICAuYW5nbGUgPSB2YWx1ZS5hbmdsZSwKKyAgICAgICAgICAgIC5sYXJnZUFyYyA9IHZh
bHVlLmxhcmdlQXJjLAorICAgICAgICAgICAgLnN3ZWVwID0gdmFsdWUuc3dlZXAsCisgICAgICAg
ICAgICAudGFyZ2V0UG9pbnQgPSBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUudGFyZ2V0
UG9pbnQsIG1fc2l6ZSkKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgIGNvbnN0IHR5cGVuYW1lIFQ6OlZhbHVlJiB2YWx1ZSgpCisgICAgeworICAgICAg
ICBBU1NFUlQobV9pdGVtQ3VycmVudCA8PSBtX3NlZ21lbnRzLnNpemUoKSk7CisgICAgICAgIHJl
dHVybiBleHRyYWN0VmFsdWU8VD4obV9zZWdtZW50cy5hdChtX2l0ZW1DdXJyZW50IC0gMSkuZ2V0
KCkpOworICAgIH0KKworICAgIGNvbnN0IExlbmd0aFBvaW50JiBtX3N0YXJ0OworICAgIGNvbnN0
IFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYgbV9zZWdtZW50czsKKyAgICBGbG9hdFNp
emUgbV9zaXplOworICAgIHNpemVfdCBtX2l0ZW1FbmQ7CisgICAgc2l6ZV90IG1faXRlbUN1cnJl
bnQgPSAwOworfTsKKworUGF0aCBCYXNpY1NoYXBlU2VnbWVudDo6dG9QYXRoKGNvbnN0IExlbmd0
aFBvaW50JiBzdGFydCwgY29uc3QgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+JiBzZWdt
ZW50cywgY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIFNoYXBlU1ZHUGF0aFNvdXJjZSBz
b3VyY2Uoc3RhcnQsIHNlZ21lbnRzLCBzaXplKTsKKyAgICBQYXRoIHBhdGg7CisgICAgU1ZHUGF0
aEJ1aWxkZXIgYnVpbGRlcihwYXRoKTsKKyAgICBTVkdQYXRoUGFyc2VyOjpwYXJzZShzb3VyY2Us
IGJ1aWxkZXIpOworICAgIHJldHVybiBwYXRoOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1ZDE4
Y2U4NTA2Y2U2MmRkMzI2NTc1NGRlMDc0NmFkMGJjMTk0NmYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaApAQCAtMCww
ICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTGVuZ3RoLmgi
CisjaW5jbHVkZSAiTGVuZ3RoUG9pbnQuaCIKKyNpbmNsdWRlICJMZW5ndGhTaXplLmgiCisjaW5j
bHVkZSAiU1ZHUGF0aFNlZy5oIgorI2luY2x1ZGUgIlNWR1BhdGhTb3VyY2UuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQmxlbmRpbmdDb250ZXh0OworY2xhc3MgRmxvYXRSZWN0
OworY2xhc3MgUGF0aDsKKworc3RydWN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUgeworICAg
IExlbmd0aFBvaW50IHBvaW50MTsKKyAgICBMZW5ndGhQb2ludCBwb2ludDI7CisgICAgTGVuZ3Ro
UG9pbnQgdGFyZ2V0UG9pbnQ7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1cnZlVG9DdWJp
Y1NoYXBlU2VnVmFsdWUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHBvaW50
MSA9PSBvdGhlci5wb2ludDEgJiYgcG9pbnQyID09IG90aGVyLnBvaW50MiAmJiB0YXJnZXRQb2lu
dCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9Cit9OworCitzdHJ1Y3QgQ3VydmVUb0N1Ymlj
U21vb3RoU2hhcGVTZWdWYWx1ZSB7CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQyOworICAgIExlbmd0
aFBvaW50IHRhcmdldFBvaW50OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXJ2ZVRvQ3Vi
aWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBwb2ludDIgPT0gb3RoZXIucG9pbnQyICYmIHRhcmdldFBvaW50ID09IG90aGVyLnRhcmdldFBv
aW50OworICAgIH0KK307CisKK3N0cnVjdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSB7
CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQxOworICAgIExlbmd0aFBvaW50IHRhcmdldFBvaW50Owor
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBwb2ludDEgPT0gb3RoZXIucG9p
bnQxICYmIHRhcmdldFBvaW50ID09IG90aGVyLnRhcmdldFBvaW50OworICAgIH0KK307CisKKwor
c3RydWN0IEFyY1RvU2hhcGVTZWdWYWx1ZSB7CisgICAgTGVuZ3RoU2l6ZSByYWRpdXM7CisgICAg
ZmxvYXQgYW5nbGUgPSAwOworICAgIGJvb2wgc3dlZXAgPSBmYWxzZTsKKyAgICBib29sIGxhcmdl
QXJjID0gZmFsc2U7CisgICAgTGVuZ3RoUG9pbnQgdGFyZ2V0UG9pbnQ7CisKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiByYWRpdXMgPT0gb3RoZXIucmFkaXVzICYmIGFuZ2xlID09IG90aGVyLmFu
Z2xlICYmIHN3ZWVwID09IG90aGVyLnN3ZWVwICYmIGxhcmdlQXJjID09IG90aGVyLmxhcmdlQXJj
ICYmIHRhcmdldFBvaW50ID09IG90aGVyLnRhcmdldFBvaW50OworICAgIH0KK307CisKKworQ3Vy
dmVUb0N1YmljU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1Zh
bHVlJiwgY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEJsZW5kaW5nQ29u
dGV4dCYpOworQ3VydmVUb0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBDdXJ2
ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQ3VydmVUb0N1YmljU21vb3RoU2hh
cGVTZWdWYWx1ZSYsIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYpOworQ3VydmVUb1F1YWRyYXRpY1No
YXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUmLCBj
b25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEJsZW5kaW5nQ29udGV4
dCYpOworQXJjVG9TaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYs
IGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYpOworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIFNWR1BhdGhTZWdUeXBlIEFic1R5cGUsIFNWR1Bh
dGhTZWdUeXBlIFJlbFR5cGU+CitzdHJ1Y3QgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb24gewor
ICAgIHR5cGVkZWYgVmFsdWVUeXBlIFZhbHVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBB
YnNTZWdUeXBlID0gQWJzVHlwZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gUmVsU2VnVHlw
ZSA9IFJlbFR5cGU7Cit9OworCitzdHJ1Y3QgU2hhcGVTZWdtZW50TW92ZVRvIDogcHVibGljIFNo
YXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPExlbmd0aFBvaW50LCBQYXRoU2VnTW92ZVRvQWJzLCBQ
YXRoU2VnTW92ZVRvUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50TGluZVRvIDogcHVibGlj
IFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPExlbmd0aFBvaW50LCBQYXRoU2VnTGluZVRvQWJz
LCBQYXRoU2VnTGluZVRvUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50TGluZVRvSG9yaXpv
bnRhbCA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxMZW5ndGgsIFBhdGhTZWdM
aW5lVG9Ib3Jpem9udGFsQWJzLCBQYXRoU2VnTGluZVRvSG9yaXpvbnRhbFJlbD4geyB9Oworc3Ry
dWN0IFNoYXBlU2VnbWVudExpbmVUb1ZlcnRpY2FsIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVE
ZWZpbml0aW9uPExlbmd0aCwgUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsQWJzLCBQYXRoU2VnTGluZVRv
VmVydGljYWxSZWw+IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWMgOiBwdWJs
aWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSwg
UGF0aFNlZ0N1cnZlVG9DdWJpY0FicywgUGF0aFNlZ0N1cnZlVG9DdWJpY1JlbD4geyB9Oworc3Ry
dWN0IFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWMgOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlw
ZURlZmluaXRpb248Q3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUsIFBhdGhTZWdDdXJ2ZVRv
UXVhZHJhdGljQWJzLCBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1JlbD4geyB9Oworc3RydWN0IFNo
YXBlU2VnbWVudEN1cnZlVG9DdWJpY1Ntb290aCA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVm
aW5pdGlvbjxDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlLCBQYXRoU2VnQ3VydmVUb0N1
YmljU21vb3RoQWJzLCBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3RoUmVsPiB7IH07CitzdHJ1Y3Qg
U2hhcGVTZWdtZW50Q3VydmVUb1F1YWRyYXRpY1Ntb290aCA6IHB1YmxpYyBTaGFwZVNlZ21lbnRU
eXBlRGVmaW5pdGlvbjxMZW5ndGhQb2ludCwgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhB
YnMsIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21vb3RoUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVT
ZWdtZW50QXJjVG8gOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248QXJjVG9TaGFw
ZVNlZ1ZhbHVlLCBQYXRoU2VnQXJjQWJzLCBQYXRoU2VnQXJjUmVsPiB7IH07CisKKyNkZWZpbmUg
Rk9SX0VBQ0hfU0hBUEVfU0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoTWFjcm8pIFwKKyAgICBNYWNy
byhNb3ZlVG8pIFwKKyAgICBNYWNybyhMaW5lVG8pIFwKKyAgICBNYWNybyhMaW5lVG9Ib3Jpem9u
dGFsKSBcCisgICAgTWFjcm8oTGluZVRvVmVydGljYWwpIFwKKyAgICBNYWNybyhDdXJ2ZVRvQ3Vi
aWMpIFwKKyAgICBNYWNybyhDdXJ2ZVRvUXVhZHJhdGljKSBcCisgICAgTWFjcm8oQ3VydmVUb0N1
YmljU21vb3RoKSBcCisgICAgTWFjcm8oQ3VydmVUb1F1YWRyYXRpY1Ntb290aCkgXAorICAgIE1h
Y3JvKEFyY1RvKQorCitjbGFzcyBCYXNpY1NoYXBlU2VnbWVudCA6IHB1YmxpYyBSZWZDb3VudGVk
PEJhc2ljU2hhcGVTZWdtZW50PiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBTVkdQYXRoU2VnVHlw
ZSBUeXBlOworICAgIH5CYXNpY1NoYXBlU2VnbWVudCgpID0gZGVmYXVsdDsKKworICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgUmVmPEJhc2ljU2hhcGVTZWdt
ZW50PiBibGVuZChjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYgZnJvbSwgY29uc3QgQmxlbmRpbmdD
b250ZXh0JikgY29uc3Q7CisgICAgYm9vbCBlcXVhbHMoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQm
KSBjb25zdDsKKworICAgIHN0YXRpYyBQYXRoIHRvUGF0aChjb25zdCBMZW5ndGhQb2ludCYgc3Rh
cnQsIGNvbnN0IFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYsIGNvbnN0IEZsb2F0U2l6
ZSYpOworCisjZGVmaW5lIERFRklORV9TSEFQRV9TRUdNRU5UX1RZUEUoVCkgXAorICAgIHN0YXRp
YyBSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGNyZWF0ZSMjVChUeXBlLCB0eXBlbmFtZSBTaGFwZVNl
Z21lbnQjI1Q6OlZhbHVlJiYpOyBcCisgICAgY29uc3QgdHlwZW5hbWUgU2hhcGVTZWdtZW50IyNU
OjpWYWx1ZSYgYXMjI1QoKSBjb25zdDsKKworICAgIEZPUl9FQUNIX1NIQVBFX1NFR01FTlRfVFlQ
RV9XSVRIX1ZBTFVFKERFRklORV9TSEFQRV9TRUdNRU5UX1RZUEUpCisKKyAgICBzdGF0aWMgUmVm
PEJhc2ljU2hhcGVTZWdtZW50PiBjcmVhdGVDbG9zZVBhdGgoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNTaGFwZVNlZ21lbnQoUGF0aFNlZ0Nsb3NlUGF0aCkpOwor
ICAgIH0KKworcHJvdGVjdGVkOgorICAgIEJhc2ljU2hhcGVTZWdtZW50KFR5cGUgdCkKKyAgICAg
ICAgOiBtX3R5cGUodCkgeyB9CisKK3ByaXZhdGU6CisgICAgVHlwZSBtX3R5cGU7Cit9OworCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmlu
ZGV4IDA4NmE2ZjZhNjNhMjVlNTAyM2FlOTViZmE4NGY0ZmE3ZDRmZmMyNjIuLjY3M2ZlYTZjNGQy
NjMwMGE2ODdmOWQ1ZGEzYjg2MzNlODVlMDAxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtMTIxLDYgKzEyMSw0NCBAQCBzdHJ1Y3Qg
VHJhbnNmb3JtZWRCeXRlU3RyZWFtUGF0aFBvbGljeSA6IFRpbnlMUlVDYWNoZVBvbGljeTxTVkdQ
YXRoVHJhbnNmb3JtZWRCeQogICAgIHN0YXRpYyBQYXRoIGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0
IFNWR1BhdGhUcmFuc2Zvcm1lZEJ5dGVTdHJlYW0mIHN0cmVhbSkgeyByZXR1cm4gc3RyZWFtLnBh
dGgoKTsgfQogfTsKIAorc3RydWN0IFNoYXBlU2VnbWVudHNXaXRoQm94IHsKKyAgICBMZW5ndGhQ
b2ludCBzdGFydDsKKyAgICBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4gc2VnbWVudHM7
CisgICAgRmxvYXRSZWN0IGJveDsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFwZVNl
Z21lbnRzV2l0aEJveCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoYm94ICE9IG90
aGVyLmJveCB8fCBzZWdtZW50cy5zaXplKCkgPT0gb3RoZXIuc2VnbWVudHMuc2l6ZSgpIHx8IHN0
YXJ0ICE9IG90aGVyLnN0YXJ0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2VnbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
ICAgIGlmICghc2VnbWVudHMuYXQoaSktPmVxdWFscyhvdGhlci5zZWdtZW50cy5hdChpKS5nZXQo
KSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXBlU2Vn
bWVudHNXaXRoQm94JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgU2hhcGVTZWdtZW50c1BhdGhQb2xpY3kg
OiBUaW55TFJVQ2FjaGVQb2xpY3k8U2hhcGVTZWdtZW50c1dpdGhCb3gsIFBhdGg+IHsKKyAgICBz
dGF0aWMgYm9vbCBpc0tleU51bGwoY29uc3QgU2hhcGVTZWdtZW50c1dpdGhCb3gmIHNlZ21lbnRz
V2l0aEJveCkKKyAgICB7CisgICAgICAgIHJldHVybiBzZWdtZW50c1dpdGhCb3guc2VnbWVudHMu
aXNFbXB0eSgpOworICAgIH0KKworICAgIHN0YXRpYyBQYXRoIGNyZWF0ZVZhbHVlRm9yS2V5KGNv
bnN0IFNoYXBlU2VnbWVudHNXaXRoQm94JiBzZWdtZW50c1dpdGhCb3gpCisgICAgeworICAgICAg
ICBhdXRvIHBhdGggPSBCYXNpY1NoYXBlU2VnbWVudDo6dG9QYXRoKHNlZ21lbnRzV2l0aEJveC5z
dGFydCwgc2VnbWVudHNXaXRoQm94LnNlZ21lbnRzLCBzZWdtZW50c1dpdGhCb3guYm94LnNpemUo
KSk7CisgICAgICAgIHBhdGgudHJhbnNsYXRlKHRvRmxvYXRTaXplKHNlZ21lbnRzV2l0aEJveC5i
b3gubG9jYXRpb24oKSkpOworICAgICAgICByZXR1cm4gcGF0aDsKKyAgICB9Cit9OworCiBzdGF0
aWMgY29uc3QgUGF0aCYgY2FjaGVkRWxsaXBzZVBhdGgoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8RmxvYXRSZWN0LCBQYXRo
LCA0LCBFbGxpcHNlUGF0aFBvbGljeT4+IGNhY2hlOwpAQCAtMTQ1LDYgKzE4MywxMiBAQCBzdGF0
aWMgY29uc3QgUGF0aCYgY2FjaGVkVHJhbnNmb3JtZWRCeXRlU3RyZWFtUGF0aChjb25zdCBTVkdQ
YXRoQnl0ZVN0cmVhbSYgc3RyZQogICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQoU1ZHUGF0aFRy
YW5zZm9ybWVkQnl0ZVN0cmVhbSB7IHN0cmVhbSwgem9vbSwgb2Zmc2V0IH0pOwogfQogCitzdGF0
aWMgY29uc3QgUGF0aCYgY2FjaGVkU2hhcGVTZWdtZW50c1BhdGgoY29uc3QgTGVuZ3RoUG9pbnQm
IGZyb20sIGNvbnN0IFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYgc2VnbWVudHMsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxS
VUNhY2hlPFNoYXBlU2VnbWVudHNXaXRoQm94LCBQYXRoLCA0LCBTaGFwZVNlZ21lbnRzUGF0aFBv
bGljeT4+IGNhY2hlOworICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQoU2hhcGVTZWdtZW50c1dp
dGhCb3ggeyBmcm9tLCBzZWdtZW50cywgcmVjdCB9KTsKK30KKwogYm9vbCBCYXNpY1NoYXBlQ2ly
Y2xlOjpvcGVyYXRvcj09KGNvbnN0IEJhc2ljU2hhcGUmIG90aGVyKSBjb25zdAogewogICAgIGlm
ICh0eXBlKCkgIT0gb3RoZXIudHlwZSgpKQpAQCAtNDYzLDYgKzUwNyw3OCBAQCB2b2lkIEJhc2lj
U2hhcGVJbnNldDo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKICAgICB0cy5kdW1wUHJvcGVy
dHkoImJvdHRvbS1sZWZ0LXJhZGl1cyIsIGJvdHRvbUxlZnRSYWRpdXMoKSk7CiB9CiAKKworQmFz
aWNTaGFwZVNoYXBlOjpCYXNpY1NoYXBlU2hhcGUoY29uc3QgTGVuZ3RoUG9pbnQmIGZyb20sIFZl
Y3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYmIHNlZ21lbnRzKQorICAgIDogbV9zZWdtZW50
cyhtYWtlVW5pcXVlPFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+Pj4oV1RGTW92ZShzZWdt
ZW50cykpKQorICAgICwgbV9mcm9tKGZyb20pCit7Cit9CisKK2NvbnN0IFBhdGgmIEJhc2ljU2hh
cGVTaGFwZTo6cGF0aChjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KQoreworICAgIHJldHVy
biBjYWNoZWRTaGFwZVNlZ21lbnRzUGF0aChtX2Zyb20sICptX3NlZ21lbnRzLCBib3VuZGluZ0Jv
eCk7Cit9CisKK2Jvb2wgQmFzaWNTaGFwZVNoYXBlOjpvcGVyYXRvcj09KGNvbnN0IEJhc2ljU2hh
cGUmIG90aGVyKSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gb3RoZXIudHlwZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBCYXNpY1NoYXBlU2hhcGUmIG90aGVyU2hh
cGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlU2hhcGU+KG90aGVyKTsKKyAgICBhdXRvIHNpemUgPSB0
aGlzLT5zaXplKCk7CisgICAgaWYgKHdpbmRSdWxlKCkgIT0gb3RoZXJTaGFwZS53aW5kUnVsZSgp
IHx8IHNpemUgPT0gb3RoZXJTaGFwZS5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGlmICghYXQo
aSkuZXF1YWxzKG90aGVyU2hhcGUuYXQoaSkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEJhc2ljU2hhcGVTaGFwZTo6Y2Fu
QmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUoKSAh
PSBvdGhlci50eXBlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gc2l6ZSA9
IHRoaXMtPnNpemUoKTsKKyAgICBhdXRvJiBvdGhlclNoYXBlID0gZG93bmNhc3Q8QmFzaWNTaGFw
ZVNoYXBlPihvdGhlcik7CisgICAgaWYgKHdpbmRSdWxlKCkgIT0gb3RoZXJTaGFwZS53aW5kUnVs
ZSgpIHx8IHNpemUgIT0gb3RoZXJTaGFwZS5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChh
dChpKS50eXBlKCkgIT0gb3RoZXJTaGFwZS5hdChpKS50eXBlKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZjxCYXNpY1NoYXBl
PiBCYXNpY1NoYXBlU2hhcGU6OmJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIGZyb20sIGNvbnN0IEJs
ZW5kaW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBBU1NFUlQodHlwZSgpID09IGZy
b20udHlwZSgpKTsKKyAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7CisgICAgYXV0byYgZnJv
bVNoYXBlID0gZG93bmNhc3Q8QmFzaWNTaGFwZVNoYXBlPihmcm9tKTsKKyAgICBBU1NFUlQoc2l6
ZSA9PSBmcm9tU2hhcGUuc2l6ZSgpKTsKKworICAgIFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21l
bnQ+PiByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgcmVzdWx0LmFw
cGVuZChhdChpKS5ibGVuZChmcm9tU2hhcGUuYXQoaSksIGNvbnRleHQpKTsKKworICAgIGF1dG8g
bmV3U2hhcGUgPSBCYXNpY1NoYXBlU2hhcGU6OmNyZWF0ZShXZWJDb3JlOjpibGVuZChmcm9tU2hh
cGUuZnJvbSgpLCBtX2Zyb20sIGNvbnRleHQpLCBXVEZNb3ZlKHJlc3VsdCkpOworICAgIG5ld1No
YXBlLT5zZXRXaW5kUnVsZSh3aW5kUnVsZSgpKTsKKyAgICByZXR1cm4gbmV3U2hhcGU7Cit9CisK
K3ZvaWQgQmFzaWNTaGFwZVNoYXBlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAoreworICAg
IHRzLmR1bXBQcm9wZXJ0eSgid2luZC1ydWxlIiwgd2luZFJ1bGUoKSk7CisgICAgLy8gRklYTUU6
IHByaW50IHRoZSBieXRlIHN0cmVhbT8KK30KKwogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIEJhc2ljU2hhcGVSYWRpdXM6OlR5cGUgcmFkaXVzVHlwZSkKIHsK
ICAgICBzd2l0Y2ggKHJhZGl1c1R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0Jhc2ljU2hhcGVzLmgKaW5kZXggOWJmMDM3MzQ3NmI1M2U1YzdhNGE5YmM2MjM5ZTQ1ZWM0
YWQ1MzRlNC4uMzFlOGYzZGY1ZGNiMTYyZTgyNTM3MzRkNGI1Y2NlYjkwY2VjOTE5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmgKQEAgLTMwLDYgKzMw
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCisjaW5jbHVkZSAiTGVu
Z3RoUG9pbnQuaCIKICNpbmNsdWRlICJMZW5ndGhTaXplLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUu
aCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDcsNiArNDgsNyBAQCBzdHJ1Y3Qg
QmxlbmRpbmdDb250ZXh0OwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgUGF0aDsKIGNsYXNzIFJl
bmRlckJveDsKK2NsYXNzIEJhc2ljU2hhcGVTZWdtZW50OwogY2xhc3MgU1ZHUGF0aEJ5dGVTdHJl
YW07CiAKIGNsYXNzIEJhc2ljU2hhcGUgOiBwdWJsaWMgUmVmQ291bnRlZDxCYXNpY1NoYXBlPiB7
CkBAIC01OCw3ICs2MCw4IEBAIHB1YmxpYzoKICAgICAgICAgUGF0aCwKICAgICAgICAgQ2lyY2xl
LAogICAgICAgICBFbGxpcHNlLAotICAgICAgICBJbnNldAorICAgICAgICBJbnNldCwKKyAgICAg
ICAgU2hhcGUKICAgICB9OwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CkBA
IC0zNDMsNiArMzQ2LDQxIEBAIHByaXZhdGU6CiAgICAgTGVuZ3RoU2l6ZSBtX2JvdHRvbUxlZnRS
YWRpdXM7CiB9OwogCitjbGFzcyBCYXNpY1NoYXBlU2hhcGUgOiBwdWJsaWMgQmFzaWNTaGFwZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxCYXNpY1NoYXBlU2hhcGU+IGNyZWF0ZShjb25zdCBM
ZW5ndGhQb2ludCYgZnJvbSwgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+JiYgc2VnbWVu
dHMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYXNpY1NoYXBlU2hhcGUo
ZnJvbSwgV1RGTW92ZShzZWdtZW50cykpKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFdpbmRSdWxl
KFdpbmRSdWxlIHdpbmRSdWxlKSB7IG1fd2luZFJ1bGUgPSB3aW5kUnVsZTsgfQorICAgIFdpbmRS
dWxlIHdpbmRSdWxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93aW5kUnVsZTsgfQorCisg
ICAgY29uc3QgTGVuZ3RoUG9pbnQmIGZyb20oKSBjb25zdCB7IHJldHVybiBtX2Zyb207IH0KKwor
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy0+c2l6ZSgpOyB9Cisg
ICAgY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBt
X3NlZ21lbnRzLT5hdChpKS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIEJhc2ljU2hhcGVTaGFw
ZShjb25zdCBMZW5ndGhQb2ludCYsIFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYmKTsK
KworICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFR5cGU6OlNoYXBlOyB9
CisKKworICAgIGNvbnN0IFBhdGgmIHBhdGgoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisK
KyAgICBib29sIGNhbkJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgZnJvbSwgY29uc3QgQmxl
bmRpbmdDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgQmFzaWNTaGFwZSYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBkdW1wKFRleHRTdHJl
YW0mKSBjb25zdCBmaW5hbDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVmPEJhc2lj
U2hhcGVTZWdtZW50Pj4+IG1fc2VnbWVudHM7CisgICAgV2luZFJ1bGUgbV93aW5kUnVsZSB7IFdp
bmRSdWxlOjpOb25aZXJvIH07CisgICAgTGVuZ3RoUG9pbnQgbV9mcm9tOworfTsKKwogV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEJhc2ljU2hhcGVS
YWRpdXMmKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBj
b25zdCBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZSYpOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEJhc2ljU2hhcGUmKTsKQEAgLTM1OSwzICsz
OTcsNCBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVFbGxp
cHNlLCBCYXNpY1NoYXBlOjpUeXBlOjpFbGxpcHNlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
QVNJQ19TSEFQRShCYXNpY1NoYXBlUG9seWdvbiwgQmFzaWNTaGFwZTo6VHlwZTo6UG9seWdvbikK
IFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkFTSUNfU0hBUEUoQmFzaWNTaGFwZVBhdGgsIEJhc2lj
U2hhcGU6OlR5cGU6OlBhdGgpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJh
c2ljU2hhcGVJbnNldCwgQmFzaWNTaGFwZTo6VHlwZTo6SW5zZXQpCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVTaGFwZSwgQmFzaWNTaGFwZTo6VHlwZTo6U2hh
cGUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZDM0NTM0OGY5ZDlmYzIxMjNkMTk1Y2EzYTljOTJiMzUxNGUzMjg0ZS4uNGY2
NjEwMzBkMmQ0MWFhZjFhYjk0YjkzYzE0MjFjYzNmMjcyZDE0MSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIyLTA0LTE5ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBbQ1NTIFNoYXBlc10gQWRkIHN1cHBvcnQgZm9yIHNoYXBlKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODM3MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vOTA5MTk0NzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiB1bnNraXAgQ1NTIHNoYXBlKCkgdGVzdHMK
KwogMjAyMi0wNC0xOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtXZWJHUFVdIFVuc2tpcCBhcGkvdmFsaWRhdGlvbi9jcmVhdGVTYW1wbGVyLmh0
bWwg8J+OiQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNjRlYTY1N2U2ZTA0MmFj
M2QxMDE4YzhkZDhkOGZjMDIyNWZlYmEwNy4uYWRmNjQ1ZTIzOTJkNWE5Nzk3ZjJmN2M2NGY5ZGIw
ZjMyNGYwNzZjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMjItMDQtMTkgIE5vYW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFtDU1MgU2hhcGVzXSBBZGQgc3VwcG9ydCBmb3Igc2hhcGUoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MzcxCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS85MDkxOTQ3Nj4KKworICAgICAgICBBbWVuZGVkIHRlc3RzIHRvIHN1cHBvcnQgQ1NT
IHNoYXBlKCkKKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcv
Y2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hh
cGUtMDAzLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2lu
Zy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwNC1leHBlY3RlZC5odG1sOgorICAgICAgICAg
ICAgICAgIE5lZWRlZCB0byBjaGFuZ2UgdGhlIHRlc3QgYSBiaXQgYmVjYXVzZSBvZiBzdHJheSBw
aXhlbHMuIFdpbGwgdXBzdHJlYW0uCisKKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLW1hc2tpbmcvcGFyc2luZy9jbGlwLXBhdGgtc2hhcGUtcGFyc2luZy1leHBlY3RlZC50
eHQ6CisgICAgICAgICAgICAgICAgTm93IHBhc3NlcworCiAyMDIyLTA0LTE4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IENT
U1RyYW5zZm9ybVZhbHVlLmlzMkQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFlNzYyNmIzYmYzOWE3
YWI4NjZiZjRjNDI4ZjZhMzhjYjE4NjE5YTQuLmJmMDkyZGQ1MmQzYWIxZTA1NDk4ZmFiMGM2ZTlk
ZThlYzM5ZDg0YTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjE5OSwxNSArMjE5OSw2IEBAIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9j
bGlwLXBhdGgtdmlld0JveC0xYy5oCiB3ZWJraXQub3JnL2IvMTA0NDQyIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtdXJs
LXJlZmVyZW5jZS1jaGFuZ2UtZnJvbS1lbXB0eS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMjI5NTEwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtZGVzY2VuZGFudC10ZXh0LW11dGF0ZWQtMDAx
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotIyBDU1Mgc2hhcGUoKQotd2Via2l0Lm9yZy9i
LzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9j
bGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAyLXVuaXRzLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDIu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRo
LXNoYXBlLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM4Mzcx
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0
aC9jbGlwLXBhdGgtc2hhcGUtMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tp
bmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS1pbnRlcnBvbGF0aW9uLTAwMS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtaW50
ZXJwb2xhdGlvbi0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2Iv
MjI5MzcwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2Ns
aXAvY2xpcC1maWx0ZXItb3JkZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzIyOTM3MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2lu
Zy9tYXNrLWltYWdlL21hc2staW1hZ2UtdXJsLWxvY2FsLW1hc2suaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzIyOTM3MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbWFza2luZy9tYXNrLWltYWdlL21hc2staW1hZ2UtdXJsLXJlbW90ZS1tYXNr
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlw
LXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNo
YXBlLTAwMy1leHBlY3RlZC5odG1sCmluZGV4IDQ2ZTA5OGM0ZWI2NDg5ZmM0NDMwMWQ2YmY5YjI0
M2U4MzZiMmNhMzEuLjMxZTk3YzkxNDc0NDhhYTg0OTI2NDJlNDE5NmFhOTFiNWNhNmE0ODggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMtZXhwZWN0ZWQuaHRtbApAQCAt
OSwxNCArOSwyMyBAQAogICAgIHdpZHRoOiAxMDBweDsKICAgICBoZWlnaHQ6IDEwMHB4OwogICB9
Ci0gICNyZWYgewotICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworCisgICNyZWYsICNhY3R1
YWwgewogICAgIGNsaXAtcGF0aDogcGF0aChub256ZXJvLCAiTSAxMCAxMCwgUSA0MCAwIDYwIDIw
LCBUIDkwIDAsIGMgMTAgNDAgMjAgMjAgLTIwIDYwLCBzIC0xMCA3MCAtNDAgLTEwIik7CiAgICAg
cG9zaXRpb246IGFic29sdXRlOwogICB9CisKKyAgI3JlZiB7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogcmVkOworICB9CisKKyAgI2FjdHVhbCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47
CisgIH0KIDwvc3R5bGU+CiA8Ym9keT4KICAgPHA+WW91IHNob3VsZCBzZWUgbm8gcmVkLjwvcD4K
ICAgPGRpdiBpZD0icmVmIj48L2Rpdj4KKyAgPGRpdiBpZD0iYWN0dWFsIj48L2Rpdj4KIDwvYm9k
eT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy5odG1sCmluZGV4IDIyZTdk
OWFhZjUzNzRjOWI3ZTRlM2MyZDUwZWNlZmJjZWMxMzRiNjYuLmUwMTcwOTAwNWFjOGNmOGUzNWQw
NjJhNjg1N2I2NDYyN2I1ZWJlMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgt
c2hhcGUtMDAzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRt
bApAQCAtNiw2ICs2LDcgQEAKICAgPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0icmVmZXJlbmNlL2Ns
aXAtcGF0aC1zaGFwZS0wMDMtcmVmLmh0bWwiPgogICA8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRl
bnQ9IlRoZSBjbGlwLXBhdGggcHJvcGVydHkgdGFrZXMgdGhlIGJhc2ljIHNoYXBlCiAJJ3NoYXBl
KCknIGZvciBjbGlwcGluZy4gVGVzdCBjdXJ2ZXMuIj4KKyAgPG1ldGEgbmFtZT0iZnV6enkiIGNv
bnRlbnQ9Im1heERpZmZlcmVuY2U9ODA7IHRvdGFsUGl4ZWxzPTM5NCI+CiA8L2hlYWQ+CiA8c3R5
bGU+CiAgIGRpdiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAw
NC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0
ZWQuaHRtbAppbmRleCBlYzhmOTQxMDc5NTEzOGY3YTM0OTBkN2E0MTY5YjVlYmQ1ZTM3NDc0Li4x
MGY0NTdiOTExODRmMTAxMzA2ODlhMjczMDVmYzJkZDM2NmUyODMyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9j
bGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwNC1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAt
cGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4cGVjdGVkLmh0bWwKQEAgLTksMTQgKzksMjMgQEAK
ICAgICB3aWR0aDogMTAwcHg7CiAgICAgaGVpZ2h0OiAxMDBweDsKICAgfQotICAjcmVmIHsKLSAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKworICAjcmVmLCAjYWN0dWFsIHsKICAgICBjbGlw
LXBhdGg6IHBhdGgobm9uemVybywgIk0gMjAgMjAgQSAyNSAxMiAwIDAgMSA4MCAyMCwgYSAzMyAz
MyAxMjAgMSAxIC00MCA1MCwgQSAyMCAyNSAwIDAgMCAyMCAyMCIpOwogICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKICAgfQorCisgICNyZWYgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAg
fQorCisgICNhY3R1YWwgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICB9CiA8L3N0
eWxlPgogPGJvZHk+CiAgIDxwPllvdSBzaG91bGQgc2VlIG5vIHJlZC48L3A+CiAgIDxkaXYgaWQ9
InJlZiI+PC9kaXY+CisgIDxkaXYgaWQ9ImFjdHVhbCI+PC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2NsaXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1tYXNraW5nL3BhcnNpbmcvY2xpcC1wYXRoLXNoYXBlLXBhcnNpbmctZXhwZWN0ZWQudHh0Cmlu
ZGV4IGU5NGFlZThiNmI0Y2IwNGY3YWZlODJhZDY1YjNjMTQ4YmM0MTEyNWYuLmUwNTgwZWRmYzFk
OGVmMzI3NzViNWQ5NmYzODdlZTVlN2E0N2EzMGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL3BhcnNpbmcvY2xp
cC1wYXRoLXNoYXBlLXBhcnNpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL3BhcnNpbmcvY2xpcC1w
YXRoLXNoYXBlLXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDI0ICsxLDI0IEBACiAKLUZBSUwg
ZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEwcHgg
MTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBw
cm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5
bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGV2ZW5vZGQgZnJvbSAwcHggMHB4LCBsaW5lIHRvIDEw
cHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxz
OiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUu
c3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKG5vbnplcm8gZnJvbSAwcHggMHB4LCBsaW5lIHRv
IDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1
YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlM
IGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKCAgZnJvbSAwcHggICAgMHB4LCBsaW5lICB0
byAxMHB4ICAxMHB4ICAgICApIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRf
bm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAi
IgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFlbSA1MCUsIGxpbmUg
dG8gMTBweCAxMHB4KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9l
cXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZB
SUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoRXZlbk9kZCBmcm9tIDBweCAwUHgsIENM
T1NFKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHBy
b3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHls
ZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxY2ggNTBweCwgbGluZSB0byAxMHJlbSAxMHZo
KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3Bl
cnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsn
Y2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxY2ggLTUwcHgsIGxpbmUgdG8gLTEwJSAxMnB4KSIg
c2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5
IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xp
cC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIG1vdmUgYnkgMTBweCA1cHgsIGxpbmUg
YnkgMjBweCA0MCUsIGNsb3NlKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0
X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUg
IiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGhs
aW5lIGJ5IDEwcHgsIHZsaW5lIHRvIDVyZW0pIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1
ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dl
ZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHgg
MTBweCwgdmxpbmUgYnkgNSUsIGhsaW5lIHRvIDF2dykiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5
IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNh
bGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20g
MTBweCAxMHB4LCBjdXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEwcmVtIDElKSIgc2hvdWxkIHNldCB0
aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBz
ZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAi
c2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUwcHggMjBweCB2aWEgMTByZW0gMXB4IDIw
dmggMWNoKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6
IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5z
dHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIGJ5IDUwcHgg
MjBweCB2aWEgMTByZW0gMXB4IDIwdmggMWNoKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFs
dWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93
ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4
IDEwcHgsIHNtb290aCB0byA1MHB4IDIwcHggdmlhIDEwcmVtIDElKSIgc2hvdWxkIHNldCB0aGUg
cHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBiZSBzZXQg
Z290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hh
cGUoZnJvbSAxMHB4IDEwcHgsIHNtb290aCB0byA1MHB4IDFwdCkiIHNob3VsZCBzZXQgdGhlIHBy
b3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdv
dCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBl
KGZyb20gMTBweCAxMHB4LCBhcmMgdG8gNTBweCAxcHQgb2YgMTBweCAxMHB4KSIgc2hvdWxkIHNl
dCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3VsZCBi
ZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRoJ10g
PSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGFyYyB0byA1MHB4IDFwdCBvZiAxMHB4IDEwcHggc21h
bGwgcm90YXRlIDBkZWcpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90
X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgot
RkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwJSAxcmVtLCBhcmMgdG8g
NTBweCAxcHQgb2YgMjAlIGN3IGxhcmdlIHJvdGF0ZSAyNWRlZykiIHNob3VsZCBzZXQgdGhlIHBy
b3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdv
dCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBl
KGV2ZW5vZGQgZnJvbSAwcHggMHB4LCBjbG9zZSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZh
bHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxv
d2VkIHZhbHVlICIiCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMHB4
IDBweCwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQor
UEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShldmVub2RkIGZyb20gMHB4IDBweCwg
bGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBl
LnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShub256ZXJvIGZyb20gMHB4IDBweCwgbGluZSB0
byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxl
WydjbGlwLXBhdGgnXSA9ICJzaGFwZSggIGZyb20gMHB4ICAgIDBweCwgbGluZSAgdG8gMTBweCAg
MTBweCAgICAgKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Y2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxZW0gNTAlLCBsaW5lIHRvIDEwcHggMTBweCkiIHNo
b3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0g
InNoYXBlKEV2ZW5PZGQgZnJvbSAwcHggMFB4LCBDTE9TRSkiIHNob3VsZCBzZXQgdGhlIHByb3Bl
cnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMWNoIDUw
cHgsIGxpbmUgdG8gMTByZW0gMTB2aCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQ
QVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMWNoIC01MHB4LCBsaW5lIHRv
IC0xMCUgMTJweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVb
J2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBtb3ZlIGJ5IDEwcHggNXB4LCBs
aW5lIGJ5IDIwcHggNDAlLCBjbG9zZSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQ
QVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBobGluZSBi
eSAxMHB4LCB2bGluZSB0byA1cmVtKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BB
U1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIHZsaW5lIGJ5
IDUlLCBobGluZSB0byAxdncpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBl
LnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUgdG8gNTBw
eCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNT
IGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2ZSB0byA1
MHB4IDIwcHggdmlhIDEwcmVtIDFweCAyMHZoIDFjaCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5
IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4
LCBjdXJ2ZSBieSA1MHB4IDIwcHggdmlhIDEwcmVtIDFweCAyMHZoIDFjaCkiIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZy
b20gMTBweCAxMHB4LCBzbW9vdGggdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNob3VsZCBz
ZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBl
KGZyb20gMTBweCAxMHB4LCBzbW9vdGggdG8gNTBweCAxcHQpIiBzaG91bGQgc2V0IHRoZSBwcm9w
ZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHgg
MTBweCwgYXJjIHRvIDUwcHggMXB0IG9mIDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3Bl
cnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAx
MHB4LCBhcmMgdG8gNTBweCAxcHQgb2YgMTBweCAxMHB4IHNtYWxsIHJvdGF0ZSAwZGVnKSIgc2hv
dWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAi
c2hhcGUoZnJvbSAxMCUgMXJlbSwgYXJjIHRvIDUwcHggMXB0IG9mIDIwJSBjdyBsYXJnZSByb3Rh
dGUgMjVkZWcpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydj
bGlwLXBhdGgnXSA9ICJzaGFwZShldmVub2RkIGZyb20gMHB4IDBweCwgY2xvc2UpIiBzaG91bGQg
c2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQogUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShldmVub2RkIGZyb20gMHB4IDBweCwgY2xvc2UgcGF0aCkiIHNob3VsZCBub3Qgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZQogUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShub256ZXJv
LCBmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIG5vdCBzZXQgdGhlIHBy
b3BlcnR5IHZhbHVlCiBQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBw
eCAxMHB4LCBjdXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEwcmVtKSIgc2hvdWxkIG5vdCBzZXQgdGhl
IHByb3BlcnR5IHZhbHVlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457962</attachid>
            <date>2022-04-19 23:27:12 -0700</date>
            <delta_ts>2024-07-26 17:07:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238371-20220420092709.patch</filename>
            <type>text/plain</type>
            <size>97121</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0MDhiYzRlZDIxNmNh
YWM1ZWVlZTUyMDkyNWQ3NzYzOGU0M2QwZC4uYzhmMjI3MTg0NDc0MGQ5Njc0Mjg0YzY3ODkyNGUx
ZjgwODQyODU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wNC0xOSAgTm9h
bSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFk
ZCBzdXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBDU1Mgc2hhcGUoKSBieSBpbnRyb2R1Y2luZyBzaGFwZSBzZWdtZW50IGFuZCBCYXNpY1NoYXBl
U2hhcGUuCisgICAgICAgIFNoYXBlU2hhcGUgaXMgYSB2ZWN0b3Igb2Ygc2hhcGUgc2VnbWVudHMs
IHdoZXJlIGVhY2ggc2VnbWVudCBibGVuZHMgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgVGhlIHNo
YXBlIHVsdGltYXRlbHkgY3JlYXRlcyBhbiBTVkdQYXRoU291cmNlIHRvIGNvbnZlcnQgdGhlIHJl
c3BvbnNpdmUgc2hhcGUsIHdoaWNoCisgICAgICAgIGlzIGJhc2VkIG9uIExlbmd0aCB2YWx1ZXMs
IHRvIGFuIGFic29sdXRlIFBhdGggb2JqZWN0IHRoYXQgY2FuIGJlIGRyYXduLgorCisgICAgICAg
IFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXNoYXBlcy0yLyNzaGFwZS1mdW5jdGlv
bgorCisgICAgICAgIFVuc2tpcHBlZCBzZXZlcmFsIHJlbGV2YW50IFdQVHMuCisKKyAgICAgICAg
KiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgICAgICBOZXcgZmlsZXMg
YWRkZWQKKworICAgICAgICAqIGNzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZhbHVlRm9yQmFzaWNTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9MZW5ndGhQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpiYXNpY1NoYXBlRm9yVmFsdWUpOgor
ICAgICAgICAgICAgICAgIEFkZGVkIHRoZSBCYXNpY1NoYXBlU2hhcGUgdHlwZQorCisgICAgICAg
ICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Q1NTQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2lj
U2hhcGVTaGFwZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVTaGFwZTo6Y3NzVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6
CisgICAgICAgICAgICAgICAgQWRkZWQgdGhlIENTU0Jhc2ljU2hhcGVTaGFwZQorCisgICAgICAg
ICogY3NzL0NTU1NoYXBlU2VnbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2hhcGVTZWdtZW50OjpjcmVhdGVNb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2Vn
bWVudDo6Y3JlYXRlTGluZVRvVmVydGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvQ3ViaWMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUFyY1RvKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NoYXBlU2VnbWVudDo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
aGFwZVNlZ21lbnRWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1No
YXBlU2VnbWVudFZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NT
U2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudDo6Q1NTU2hh
cGVTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OnRhcmdldCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6YXJndW1lbnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2hhcGVTZWdtZW50VmFsdWU6OmFmZmluaXR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjphcHBlbmRBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NoYXBlU2VnbWVudFZhbHVlOjpDU1NTaGFwZVNlZ21l
bnRWYWx1ZSk6CisgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB0byBkbyB3aXRoIHRoZSBzZWdt
ZW50IG9mIHRoZSBzaGFwZSB3aGlsZSBpbiBDU1Mgc3BhY2UsCisgICAgICAgICAgICAgICAgaW5j
bHVkaW5nIHNlcmlhbGl6YXRpb24gZm9yIGdldENvbXB1dGVkU3R5bGUoKQorCisgICAgICAgICog
Y3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjplcXVhbHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNzc1RleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzU2hhcGVTZWdtZW50VmFsdWUgY29uc3Qp
OgorICAgICAgICAgICAgICAgIENTU1NoYXBlU2VnbWVudCBpcyBhIHR5cGUgb2YgdmFsdWUKKwor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAgICAgICAgIE5ldyBr
ZXl3b3JkcyBmb3Igc2hhcGUoKQorCisgICAgICAgICogY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9u
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFBvaW50VG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjp0b0NTU0FyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6dG9DU1NB
cmdzPExlbmd0aFBvaW50Pik6CisgICAgICAgIChXZWJDb3JlOjp0b0NTU1NoYXBlU2VnbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpzZWdtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpmcm9t
Q1NTU2hhcGVTZWdtZW50KToKKyAgICAgICAgKiBjc3MvU2hhcGVTZWdtZW50RnVuY3Rpb25zLmg6
IEFkZGVkLgorICAgICAgICAgICAgICAgIENvbnZlcnRpbmcgc2hhcGUgc2VnbWVudHMgdG8vZnJv
bSBDU1Mgc3BhY2UKKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNoYXBlU2VnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lQmFzaWNTaGFwZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVC
YXNpY1NoYXBlKToKKyAgICAgICAgICAgICAgICBQYXJzZSBhIHNoYXBlIHByb3BlcnR5CisKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OnZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50VmFsdWU6OmVxdWFscyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTo6QmFzaWNTaGFwZVNlZ21lbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzaWNTaGFwZVNlZ21lbnQ6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6YmxlbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNlZ21lbnQ6OnRvUGF0aCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFyY1RvU2hhcGVTZWdWYWx1
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVu
dDo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2VnbWVudDo6Y3Jl
YXRlQ2xvc2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTZWdtZW50OjpCYXNp
Y1NoYXBlU2VnbWVudCk6CisgICAgICAgICAgICAgICAgQmxlbmRpbmcsIGNvbXBhcmluZyBhbmQg
Y29udmVydGluZyB0byBhYnNvbHV0ZSBwYXRoCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
QmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhCb3g6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1dpdGhC
b3g6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVTZWdtZW50c1Bh
dGhQb2xpY3k6OmlzS2V5TnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVNlZ21lbnRzUGF0
aFBvbGljeTo6Y3JlYXRlVmFsdWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU2hh
cGVTZWdtZW50c1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpCYXNp
Y1NoYXBlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpwYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6YmxlbmQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZVNoYXBlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2V0V2luZFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVNoYXBlOjpmcm9tIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVTaGFwZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNpY1NoYXBlU2hhcGU6OmF0IGNvbnN0KToKKyAgICAgICAgICAgICAgICBBZGQgQmFz
aWNTaGFwZVNoYXBlCisKIDIwMjItMDQtMTggIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgUGxhdGZvcm1NZWRpYUVuZ2luZUNsYXNzTmFt
ZSBtYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggODBiYmVhOGU3MjM0ZjA1NWVmZDZlMzQwMDc1
MGIzN2YzMzE3OGNhZS4uNDAxMTNhOGU2MzkzYWQ0Y2JhNmE4ODBjYWVhMmJhYWNkNDJhYzQ0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC01NTQsNiArNTU0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIGNzcy9DU1NSdWxlTGlzdC5oCiAgICAgY3NzL0NTU1Nl
bGVjdG9yLmgKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKyAgICBjc3MvQ1NTU2hhcGVTZWdt
ZW50LmgKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCiAgICAgY3NzL0NTU1N0eWxlUnVs
ZS5oCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtNTgwLDYgKzU4MSw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBjc3MvTWVkaWFRdWVyeUV4cHJlc3Np
b24uaAogICAgIGNzcy9NZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dC5oCiAgICAgY3NzL1JlY3QuaAor
ICAgIGNzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMuaAogICAgIGNzcy9TdHlsZUNvbG9yLmgKICAg
ICBjc3MvU3R5bGVQcm9wZXJ0aWVzLmgKICAgICBjc3MvU3R5bGVSdWxlLmgKQEAgLTE4ODcsNiAr
MTg4OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmgKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUlu
Zm8uaAogCisgICAgcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmgKICAgICByZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAogICAgIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRh
LmgKICAgICByZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAw
YWYzZDA2YTViMGJiYzY4ZmMwMTEzM2JjY2ZlMWYyY2Q5NzBlODllLi4xNWFhODI2MjY5YzNjODc4
NDZhZjVmYmQ0MzVlMDNjYjJiOGVjMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNzcxLDYgKzc3MSw3
IEBAIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKIGNzcy9DU1NTZWxlY3Rvci5jcHAKIGNz
cy9DU1NTZWxlY3Rvckxpc3QuY3BwCiBjc3MvQ1NTU2hhZG93VmFsdWUuY3BwCitjc3MvQ1NTU2hh
cGVTZWdtZW50LmNwcAogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCiBjc3MvQ1NTU3R5bGVS
dWxlLmNwcAogY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC04MTIsNiArODEzLDcgQEAgY3NzL1By
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcAogY3NzL1NlbGVjdG9yRmls
dGVyLmNwcAorY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAKIGNzcy9TdHlsZUNvbG9yLmNw
cAogY3NzL1N0eWxlTWVkaWEuY3BwCiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMjQ0OSw2
ICsyNDUxLDcgQEAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAKIHJlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwCiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3Bw
CiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCityZW5kZXJpbmcvc3R5bGUvQmFzaWNT
aGFwZVNlZ21lbnQuY3BwCiByZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5jcHAKIHJlbmRlcmlu
Zy9zdHlsZS9Db250ZW50RGF0YS5jcHAKIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYTYxNzYzOWRmNzIwNmZjNDg0NTcwNDhlZTQ0YmE4OTQzYzUyYzdhMi4uMzA5YWQ5MzU0MzBl
NjIxNzU3NTc5YWZhZjI3OTk5OWE5NzE2NjJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ1Miw2ICs0NDUyLDEwIEBACiAJ
CUNBM0JGNjdFMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EzQkY2N0QxMEQ5OUJBRTAwRTZD
RTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0E2QzE1MzAyMjBCOThDQzAwNTVDQkZDIC8qIEpTVmFsdWVJbldy
YXBwZWRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMUFFM0I4MUZCODBFQUUwMEY1RUZCMiAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0E3RTlC
NDkyNDM2MURDNTAwNEU4OUY2IC8qIENvbnRlbnRmdWxQYWludENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBN0U5QjQ3MjQzNjFEQzUwMDRF
ODlGNiAvKiBDb250ZW50ZnVsUGFpbnRDaGVja2VyLmggKi87IH07CisJCUNBODE2Q0I2Mjc3ODQ4
MjAwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0E4MTZDQjMyNzc4NDgxRTAwMkJEM0M2IC8qIEJhc2lj
U2hhcGVTZWdtZW50LmggKi87IH07CisJCUNBODE2Q0I5Mjc3ODQ4MkUwMDJCRDNDNiAvKiBDU1NT
aGFwZVNlZ21lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENBODE2Q0I4Mjc3ODQ4MkUwMDJCRDNDNiAvKiBDU1NTaGFwZVNlZ21lbnQuaCAqLzsgfTsK
KwkJQ0E4MTZDQkMyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTgxNkNCQTI3
Nzg5QUEyMDAyQkQzQzYgLyogU2hhcGVTZWdtZW50RnVuY3Rpb25zLmNwcCAqLzsgfTsKKwkJQ0E4
MTZDQkQyNzc4OUFBRDAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0E4MTZDQkIyNzc4OUFBNzAw
MkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oICovOyB9OwogCQlDQUU5RjkxMDE0NjQ0
MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0FFOUY5MEUxNDY0NDFGMDAwQzI0NUIwIC8qIENT
U0FzcGVjdFJhdGlvVmFsdWUuaCAqLzsgfTsKIAkJQ0IzOEZENTIxQ0NGOTM5NDAwNTkyQTNGIC8q
IEpTUGVyZm9ybWFuY2VFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0IzOEZENEUxQ0NGOTM3RTAwNTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VFbnRy
eS5oICovOyB9OwogCQlDQjM4RkQ1QjFDRDIzMjVCMDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDQjM4RkQ1OTFDRDIzMTQ1MDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nLmggKi87IH07CkBAIC0xNTk0Nyw2ICsxNTk1MSw3IEBACiAJCUNBMDkxRDg2MjNDRjkwNzgw
MEFENDM0NiAvKiBTdHlsZUltYWdlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlSW1h
Z2VTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTA5MUQ4OTIzQ0Y5MDg4
MDBBRDQzNDYgLyogU3R5bGVJbWFnZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUltYWdlU2V0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMTYzNURDMjA3MkU3NjkwMEU3RDJD
RSAvKiBSZWZlcnJlclBvbGljeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZWZlcnJlclBvbGljeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNB
MTY2Q0NCMjc4MDY4N0QwMDQ1MjJCMyAvKiBDU1NTaGFwZVNlZ21lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ1NTU2hhcGVTZWdtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0ExOTMzRDUyNDA3RDY0MDAwNzEyNDFBIC8qIFBlcmZvcm1hbmNlUGFpbnRUaW1pbmcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VQYWludFRpbWluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDQTE5MzNEODI0MDdFRENGMDA3MTI0MUEgLyogUGVyZm9ybWFuY2VQYWlu
dFRpbWluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGVyZm9ybWFuY2VQYWludFRpbWlu
Zy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0E0QUFCMjU0MTZFM0MwMDZD
REFFMiAvKiBJbWFnZVJlc29sdXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW1hZ2VSZXNvbHV0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE1OTYyLDYgKzE1OTY3LDExIEBACiAJCUNBNkMxNTM4MjIwRDFFQjMwMDU1Q0JGQyAvKiBK
U0lEQkN1cnNvcldpdGhWYWx1ZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0lEQkN1cnNvcldpdGhWYWx1ZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNBN0U5QjQ3MjQzNjFEQzUwMDRFODlGNiAvKiBDb250ZW50ZnVsUGFp
bnRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRmdWxQ
YWludENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0E3RTlCNDgyNDM2
MURDNTAwNEU4OUY2IC8qIENvbnRlbnRmdWxQYWludENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudGZ1bFBhaW50Q2hlY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNBODE2Q0IzMjc3ODQ4MUUwMDJCRDNDNiAvKiBCYXNp
Y1NoYXBlU2VnbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNpY1No
YXBlU2VnbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCNDI3Nzg0
ODFGMDAyQkQzQzYgLyogQmFzaWNTaGFwZVNlZ21lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmFzaWNTaGFwZVNlZ21lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDQTgxNkNCODI3Nzg0ODJFMDAyQkQzQzYgLyogQ1NTU2hhcGVTZWdtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1NoYXBlU2VnbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTgxNkNCQTI3Nzg5QUEyMDAyQkQzQzYgLyog
U2hhcGVTZWdtZW50RnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNBODE2Q0JCMjc3ODlBQTcwMDJCRDNDNiAvKiBTaGFwZVNlZ21lbnRGdW5jdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcGVTZWdtZW50RnVuY3Rpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBRTlGOTBEMTQ2NDQxRjAwMEMyNDVC
MCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENTU0FzcGVjdFJhdGlvVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDQUU5RjkwRTE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNCMzhGRDRBMUNDQ0YyREQwMDU5MkEzRiAv
KiBQZXJmb3JtYW5jZUVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBlcmZvcm1hbmNlRW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Mjk2ODgsNiArMjk2OTgsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRkJENkFGODIxNUVGMjFB
MzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmNwcCAqLywKIAkJCQlGQkQ2QUY4MzE1RUYyMUEzMDA4
QjcxMTAgLyogQmFzaWNTaGFwZXMuaCAqLywKKwkJCQlDQTgxNkNCNDI3Nzg0ODFGMDAyQkQzQzYg
LyogQmFzaWNTaGFwZVNlZ21lbnQuY3BwICovLAorCQkJCUNBODE2Q0IzMjc3ODQ4MUUwMDJCRDND
NiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oICovLAogCQkJCTBGMjgzQTkxMjM1NjMxMjYwMDQ3OTRD
QSAvKiBCb3JkZXJEYXRhLmNwcCAqLywKIAkJCQlCQzVFQjVFMDBFODFCRTg3MDBCMjU5NjUgLyog
Qm9yZGVyRGF0YS5oICovLAogCQkJCUJDNUVCNURBMEU4MUI3RUEwMEIyNTk2NSAvKiBCb3JkZXJW
YWx1ZS5oICovLApAQCAtMzE5NjEsNiArMzE5NzMsOCBAQAogCQkJCUU0QzE3ODk2MEVFNjkwMzgw
MDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCAqLywKIAkJCQlBODBFNkNDQTBBMTk4OUNBMDA3
RkI4QzUgLyogQ1NTU2hhZG93VmFsdWUuY3BwICovLAogCQkJCUE4MEU2Q0JFMEExOTg5Q0EwMDdG
QjhDNSAvKiBDU1NTaGFkb3dWYWx1ZS5oICovLAorCQkJCUNBMTY2Q0NCMjc4MDY4N0QwMDQ1MjJC
MyAvKiBDU1NTaGFwZVNlZ21lbnQuY3BwICovLAorCQkJCUNBODE2Q0I4Mjc3ODQ4MkUwMDJCRDND
NiAvKiBDU1NTaGFwZVNlZ21lbnQuaCAqLywKIAkJCQk3Q0RFOEVCQzFGMTkzQkM1MDAxNjhGRTcg
LyogQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgKi8sCiAJCQkJQTgwRTZFMEQwQTE5OTExQzAwN0ZC
OEM1IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaCAqLywKIAkJCQkxNDIwMTFBRTBBMDAzMTE3MDA4
MzAzRjkgLyogQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwgKi8sCkBAIC0zMjA5Niw2ICszMjExMCw4
IEBACiAJCQkJNDNCODVFRDYxOENCRUM5NzAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NB
bmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5pbiAqLywKIAkJCQkyNkFBMEY5QTE4RDI5NzNEMDA0
MTkzODEgLyogU2VsZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5pbiAqLywKIAkJCQk0MzEwN0JF
MTE4Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggKi8sCisJCQkJQ0E4
MTZDQkEyNzc4OUFBMjAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgKi8sCisJ
CQkJQ0E4MTZDQkIyNzc4OUFBNzAwMkJEM0M2IC8qIFNoYXBlU2VnbWVudEZ1bmN0aW9ucy5oICov
LAogCQkJCTk0MTgyNzg4MUQ4QjI0MjIwMDQ5Mjc2NCAvKiBTdHlsZUNvbG9yLmNwcCAqLywKIAkJ
CQk5NDE4Mjc4OTFEOEIyNDIyMDA0OTI3NjQgLyogU3R5bGVDb2xvci5oICovLAogCQkJCTBGRjUw
MjZFMTAyQkE5NjYwMDY2RjM5QSAvKiBTdHlsZU1lZGlhLmNwcCAqLywKQEAgLTMzODU2LDYgKzMz
ODcyLDcgQEAKIAkJCQk3MTU2QkNBMTIxQ0EzNTBGMDA1MzQzOTcgLyogQmFzaWNFZmZlY3RUaW1p
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCRDZBRjhBMTVFRjI1REYwMDhCNzExMCAvKiBCYXNp
Y1NoYXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4QzE1RUYyNjA0MDA4
QjcxMTAgLyogQmFzaWNTaGFwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNBODE2Q0I2Mjc3ODQ4
MjAwMDJCRDNDNiAvKiBCYXNpY1NoYXBlU2VnbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIy
M0EzMjgwOUJCQTdEMDAwNjdDQzUzIC8qIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NTAzMUIzRDBBNDRFRkM3MDBGOTkyRTAgLyogQmVmb3JlVW5sb2FkRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTI0MEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRp
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDM0Nyw2ICszNDM2NCw3IEBACiAJCQkJRTRD
MTc4OUIwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTRERTVDOEUxRDgwODAyNzAwMTY0RjJBIC8qIENTU1NlbGVjdG9yUGFyc2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODBFNkNFODBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTU2hhZG93VmFs
dWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNBODE2Q0I5Mjc3ODQ4MkUwMDJCRDNDNiAvKiBDU1NT
aGFwZVNlZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNTM4QTJBMjZGMDEwNDIwMDk2NUZD
OCAvKiBDU1NTa2V3LmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTUzOEEyQjI2RjAxMDQ1MDA5NjVG
QzggLyogQ1NTU2tld1guaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNTM4QTJDMjZGMDEwNDgwMDk2
NUZDOCAvKiBDU1NTa2V3WS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzQ4NCw2ICszNzUwMiw3IEBA
CiAJCQkJRkQ0NUE5NEYxNzVEM0YzRTAwQzIxRUM4IC8qIFNoYXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDQ1QTk1QjE3NUQ0MUVFMDBDMjFFQzggLyogU2hhcGVJbnRlcnZhbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQ0NUE5NTIxNzVEM0YzRTAwQzIxRUM4IC8qIFNoYXBlT3V0c2lkZUluZm8u
aCBpbiBIZWFkZXJzICovLAorCQkJCUNBODE2Q0JEMjc3ODlBQUQwMDJCRDNDNiAvKiBTaGFwZVNl
Z21lbnRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMUFGMTUwMTY1NkYxNTEwMEM2
RDRGNyAvKiBTaGFwZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRDlGMEZDMTIxMjIwMjlC
MDA1RDhGRDQgLyogU2hhcmVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOTU0RTBCNEVE
Q0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAppbmRleCA5ZGYyY2ZmNzk1N2U0NWQ4OWI3
MjFhNzFlNzVlMjhkODVhNWU3OWE3Li4xNzcyMjI2YWZlYjczZDg0NDk1OTdkNmFkZTM2ODNlNjdi
MWQ1Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCkBA
IC0zMCwxMyArMzAsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCYXNpY1No
YXBlRnVuY3Rpb25zLmgiCiAKKyNpbmNsdWRlICJCYXNpY1NoYXBlU2VnbWVudC5oIgogI2luY2x1
ZGUgIkJhc2ljU2hhcGVzLmgiCiAjaW5jbHVkZSAiQ1NTQmFzaWNTaGFwZXMuaCIKICNpbmNsdWRl
ICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NTU2hhcGVTZWdtZW50
LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCiAjaW5jbHVkZSAiUGFpci5oIgogI2luY2x1
ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEJ5dGVTdHJlYW0uaCIKKyNpbmNs
dWRlICJTaGFwZVNlZ21lbnRGdW5jdGlvbnMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xNTQsNiArMTU3LDIyIEBAIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JCYXNpY1No
YXBlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgQmFzaWNTCiAgICAgICAgIGJhc2lj
U2hhcGVWYWx1ZSA9IFdURk1vdmUoaW5zZXRWYWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KyAgICBjYXNlIEJhc2ljU2hhcGU6OlR5cGU6OlNoYXBlOiB7CisgICAgICAgIGF1dG8mIHNoYXBl
ID0gZG93bmNhc3Q8QmFzaWNTaGFwZVNoYXBlPihiYXNpY1NoYXBlKTsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgIGF1
dG8gc2l6ZSA9IHNoYXBlLnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpCisgICAgICAgICAgICByZXN1bHQtPmFwcGVuZCh0b0NTU1NoYXBlU2VnbWVudChz
dHlsZSwgc2hhcGUuYXQoaSkpKTsKKworICAgICAgICBhdXRvIGZyb20gPSBjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKAorICAgICAgICAgICAgY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKHNoYXBlLmZyb20oKS54KCksIHN0eWxlKSwKKyAgICAgICAgICAgIGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShzaGFwZS5mcm9tKCkueSgpLCBzdHlsZSksIFBhaXI6OklkZW50aWNhbFZh
bHVlRW5jb2Rpbmc6OkRvTm90Q29hbGVzY2UpKTsKKworICAgICAgICBhdXRvIHNoYXBlVmFsdWUg
PSBDU1NCYXNpY1NoYXBlU2hhcGU6OmNyZWF0ZShXVEZNb3ZlKGZyb20pLCBXVEZNb3ZlKHJlc3Vs
dCkpOworICAgICAgICBzaGFwZVZhbHVlLT5zZXRXaW5kUnVsZShzaGFwZS53aW5kUnVsZSgpKTsK
KyAgICAgICAgYmFzaWNTaGFwZVZhbHVlID0gV1RGTW92ZShzaGFwZVZhbHVlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgIH0KIAogICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoYmFzaWNTaGFwZVZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwpAQCAtMTY0LDYgKzE4MywxMiBA
QCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhJiBjb252ZXJzaW9uRGF0YSwgYwogICAgIHJldHVybiB2YWx1ZS0+Y29udmVydFRvTGVu
Z3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNl
bnRDb252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKIH0K
IAorc3RhdGljIExlbmd0aFBvaW50IGNvbnZlcnRUb0xlbmd0aFBvaW50KGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
Cit7CisgICAgYXV0byYgcGFpciA9ICooZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KS5wYWlyVmFsdWUoKSk7CisgICAgcmV0dXJuIHsgY29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25E
YXRhLCBwYWlyLmZpcnN0KCkpLCBjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHBhaXIu
c2Vjb25kKCkpIH07Cit9CisKIHN0YXRpYyBMZW5ndGhTaXplIGNvbnZlcnRUb0xlbmd0aFNpemUo
Y29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIGNvbnN0IENT
U1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlKQpAQCAtMjk3LDYgKzMy
MiwyMCBAQCBSZWY8QmFzaWNTaGFwZT4gYmFzaWNTaGFwZUZvclZhbHVlKGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYQogICAgICAgICBiYXNpY1NoYXBlID0gV1RG
TW92ZShwYXRoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgQ1NTQmFzaWNTaGFw
ZTo6Q1NTQmFzaWNTaGFwZVNoYXBlVHlwZTogeworICAgICAgICBhdXRvJiBzaGFwZVZhbHVlID0g
ZG93bmNhc3Q8Q1NTQmFzaWNTaGFwZVNoYXBlPihiYXNpY1NoYXBlVmFsdWUpOworICAgICAgICBj
b25zdCBhdXRvJiBjc3NTZWdtZW50cyA9IHNoYXBlVmFsdWUuc2VnbWVudHMoKTsKKyAgICAgICAg
VmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+IHNlZ21lbnRzKGNzc1NlZ21lbnRzLmxlbmd0
aCgpKTsKKyAgICAgICAgc3RkOjp0cmFuc2Zvcm0oc3RkOjpiZWdpbihjc3NTZWdtZW50cyksIHN0
ZDo6ZW5kKGNzc1NlZ21lbnRzKSwgc2VnbWVudHMuYmVnaW4oKSwgWyZdIChjb25zdCBhdXRvJiBj
c3NTZWdtZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZnJvbUNTU1NoYXBlU2VnbWVudChjb252
ZXJzaW9uRGF0YSwgZG93bmNhc3Q8Q1NTU2hhcGVTZWdtZW50Pihjc3NTZWdtZW50LmdldCgpKSk7
CisgICAgICAgIH0pOworCisgICAgICAgIGF1dG8gc2hhcGUgPSBCYXNpY1NoYXBlU2hhcGU6OmNy
ZWF0ZShjb252ZXJ0VG9MZW5ndGhQb2ludChjb252ZXJzaW9uRGF0YSwgc2hhcGVWYWx1ZS5mcm9t
KCkpLCBXVEZNb3ZlKHNlZ21lbnRzKSk7CisgICAgICAgIHNoYXBlLT5zZXRXaW5kUnVsZShzaGFw
ZVZhbHVlLndpbmRSdWxlKCkpOworCisgICAgICAgIGJhc2ljU2hhcGUgPSBXVEZNb3ZlKHNoYXBl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0KIAogICAgIHJldHVybiBiYXNpY1NoYXBl
LnJlbGVhc2VOb25OdWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFz
aWNTaGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAppbmRl
eCA4OWUwOWY1NzJjMzUxNjM4M2Y3YjI2MmQ1NDBjMDNkZTAyZTg0ODUwLi44NWY2NzZmZTYxNjRh
YTBiNDA4ODgzMWQwNTY0ODgzMmU1MDBmYjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1No
YXBlcy5jcHAKQEAgLTIyMiw2ICsyMjIsMzggQEAgYm9vbCBDU1NCYXNpY1NoYXBlUGF0aDo6ZXF1
YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIG90aGVyU2hhcGUpIGNvbnN0CiAgICAgcmV0dXJuIHdp
bmRSdWxlKCkgPT0gb3RoZXJTaGFwZVBhdGgud2luZFJ1bGUoKSAmJiBwYXRoRGF0YSgpID09IG90
aGVyU2hhcGVQYXRoLnBhdGhEYXRhKCk7CiB9CiAKK0NTU0Jhc2ljU2hhcGVTaGFwZTo6Q1NTQmFz
aWNTaGFwZVNoYXBlKFJlZjxDU1NWYWx1ZT4mJiBmcm9tLCBSZWY8Q1NTVmFsdWVMaXN0PiYmIHNl
Z21lbnRzKQorICAgIDogbV9zZWdtZW50cyhXVEZNb3ZlKHNlZ21lbnRzKSksIG1fZnJvbShXVEZN
b3ZlKGZyb20pKQoreyAKK30KKworYm9vbCBDU1NCYXNpY1NoYXBlU2hhcGU6OmVxdWFscyhjb25z
dCBDU1NCYXNpY1NoYXBlJiBvdGhlclNoYXBlKSBjb25zdAoreworICAgIGlmICghaXM8Q1NTQmFz
aWNTaGFwZVNoYXBlPihvdGhlclNoYXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
YXV0byYgb3RoZXJTaGFwZVNoYXBlID0gZG93bmNhc3Q8Q1NTQmFzaWNTaGFwZVNoYXBlPihvdGhl
clNoYXBlKTsKKyAgICByZXR1cm4gd2luZFJ1bGUoKSA9PSBvdGhlclNoYXBlU2hhcGUud2luZFJ1
bGUoKQorICAgICAgICAmJiBmcm9tKCkgPT0gb3RoZXJTaGFwZVNoYXBlLmZyb20oKQorICAgICAg
ICAmJiBzZWdtZW50cygpLmVxdWFscyhvdGhlclNoYXBlU2hhcGUuc2VnbWVudHMoKSk7Cit9CisK
K1N0cmluZyBDU1NCYXNpY1NoYXBlU2hhcGU6OmNzc1RleHQoKSBjb25zdAoreworICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKKyAgICBpZiAod2luZFJ1bGUoKSA9PSBXaW5kUnVsZTo6RXZlbk9k
ZCkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoInNoYXBlKGV2ZW5vZGQgIik7CisgICAgZWxzZQor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgic2hhcGUoIik7CisKKyAgICBhdXRvKiBwYWlyID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGZyb20oKSkucGFpclZhbHVlKCk7CisgICAgQVNTRVJU
KHBhaXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJmcm9tICIsIHBhaXItPmNzc1RleHQoKSwgIiwg
Iik7CisgICAgYnVpbGRlci5hcHBlbmQoc2VnbWVudHMoKS5jc3NUZXh0KCksICIpIik7CisKKyAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCiBzdGF0aWMgU3RyaW5nIGJ1aWxkUG9s
eWdvblN0cmluZyhjb25zdCBXaW5kUnVsZSYgd2luZFJ1bGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwb2ludHMpCiB7CiAgICAgQVNTRVJUKCEocG9pbnRzLnNpemUoKSAlIDIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Jhc2ljU2hhcGVzLmgKaW5kZXggMTA1YzQ2MDk0MWQ2NzQ0ZTU3YmU3YTM1ZDZiMDRm
YzczZmFiYmJlYy4uMTYzMDZkZjI5ZWI5M2E5ZGQzMzllMGMyZmE2MTQ4Y2NhODI0ODMyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKQEAgLTM4LDYgKzM4LDEwIEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOworY2xhc3MgQ1NTU2hhcGVT
ZWdtZW50OworY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWVQYWlyOworY2xhc3MgQ1NTVmFsdWU7Citj
bGFzcyBDU1NWYWx1ZUxpc3Q7CiBjbGFzcyBTVkdQYXRoQnl0ZVN0cmVhbTsKIAogY2xhc3MgQ1NT
QmFzaWNTaGFwZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0Jhc2ljU2hhcGU+IHsKQEAgLTQ3LDcg
KzUxLDggQEAgcHVibGljOgogICAgICAgICBDU1NCYXNpY1NoYXBlQ2lyY2xlVHlwZSwKICAgICAg
ICAgQ1NTQmFzaWNTaGFwZUVsbGlwc2VUeXBlLAogICAgICAgICBDU1NCYXNpY1NoYXBlSW5zZXRU
eXBlLAotICAgICAgICBDU1NCYXNpY1NoYXBlUGF0aFR5cGUKKyAgICAgICAgQ1NTQmFzaWNTaGFw
ZVBhdGhUeXBlLAorICAgICAgICBDU1NCYXNpY1NoYXBlU2hhcGVUeXBlCiAgICAgfTsKIAogICAg
IHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwpAQCAtMjMzLDYgKzIzOCwzNSBAQCBwcml2
YXRlOgogICAgIFdpbmRSdWxlIG1fd2luZFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OwogfTsK
IAorY2xhc3MgQ1NTQmFzaWNTaGFwZVNoYXBlIGZpbmFsIDogcHVibGljIENTU0Jhc2ljU2hhcGUg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q1NTQmFzaWNTaGFwZVNoYXBlPiBjcmVhdGUoUmVm
PENTU1ZhbHVlPiYmIGZyb20sIFJlZjxDU1NWYWx1ZUxpc3Q+JiYgc2VnbWVudHMpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NCYXNpY1NoYXBlU2hhcGUoV1RGTW92ZShm
cm9tKSwgV1RGTW92ZShzZWdtZW50cykpKTsKKyAgICB9CisKKyAgICBjb25zdCBDU1NWYWx1ZUxp
c3QmIHNlZ21lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NlZ21lbnRzLmdl
dCgpOworICAgIH0KKworICAgIHZvaWQgc2V0V2luZFJ1bGUoV2luZFJ1bGUgcnVsZSkgeyBtX3dp
bmRSdWxlID0gcnVsZTsgfQorICAgIFdpbmRSdWxlIHdpbmRSdWxlKCkgY29uc3QgeyByZXR1cm4g
bV93aW5kUnVsZTsgfQorCisgICAgY29uc3QgQ1NTVmFsdWUmIGZyb20oKSBjb25zdCB7IHJldHVy
biBtX2Zyb20uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBDU1NCYXNpY1NoYXBlU2hhcGUoUmVm
PENTU1ZhbHVlPiYmIGZyb20sIFJlZjxDU1NWYWx1ZUxpc3Q+JiYpOworCisgICAgVHlwZSB0eXBl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ1NTQmFzaWNTaGFwZVNoYXBlVHlwZTsgfQorICAgIFN0
cmluZyBjc3NUZXh0KCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQmFz
aWNTaGFwZSYpIGNvbnN0IGZpbmFsOworCisgICAgUmVmPENTU1ZhbHVlTGlzdD4gbV9zZWdtZW50
czsKKyAgICBSZWY8Q1NTVmFsdWU+IG1fZnJvbTsKKyAgICBXaW5kUnVsZSBtX3dpbmRSdWxlIHsg
V2luZFJ1bGU6Ok5vblplcm8gfTsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Rl
ZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19CQVNJQ19TSEFQRVMoVG9WYWx1ZVR5cGVO
YW1lKSBcCkBAIC0yNDUsMyArMjc5LDQgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfQkFT
SUNfU0hBUEVTKENTU0Jhc2ljU2hhcGVDaXJjbGUpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NT
U19CQVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZUVsbGlwc2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0NTU19CQVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZVBvbHlnb24pCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0NTU19CQVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZVBhdGgpCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0NTU19CQVNJQ19TSEFQRVMoQ1NTQmFzaWNTaGFwZVNoYXBlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYXBlU2VnbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2hhcGVTZWdtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDgwNTBjYWZiODU4NDA5
N2ZmOWFiOGIwZmViODMwN2FlN2QwNjc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NoYXBlU2VnbWVudC5jcHAKQEAgLTAsMCArMSwxOTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1NoYXBlU2Vn
bWVudC5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxDU1NT
aGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTW92ZVRvKENTU1NoYXBlU2VnbWVu
dDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCkKK3sKKyAg
ICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShNb3ZlVG8sIGFmZmluaXR5LCBX
VEZNb3ZlKHRhcmdldCkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21l
bnQ6OmNyZWF0ZUxpbmVUbyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHks
IFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpCit7CisgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudFZh
bHVlOjpjcmVhdGUoTGluZVRvLCBhZmZpbml0eSwgV1RGTW92ZSh0YXJnZXQpKTsKK30KKworUmVm
PENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9Ib3Jpem9udGFs
KENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYm
IHgpCit7CisgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoTGluZVRvSG9y
aXpvbnRhbCwgYWZmaW5pdHksIFdURk1vdmUoeCkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50
PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVUb1ZlcnRpY2FsKENTU1NoYXBlU2VnbWVudDo6
Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHkpCit7CisgICAgcmV0dXJu
IENTU1NoYXBlU2VnbWVudFZhbHVlOjpjcmVhdGUoTGluZVRvVmVydGljYWwsIGFmZmluaXR5LCBX
VEZNb3ZlKHkpKTsKK30KKworUmVmPENTU1NoYXBlU2VnbWVudD4gQ1NTU2hhcGVTZWdtZW50Ojpj
cmVhdGVDdXJ2ZVRvQ3ViaWMoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5
LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NTVmFsdWU+JiYgcDEsIFJlZjxDU1NWYWx1
ZT4mJiBwMikKK3sKKyAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShDdXJ2
ZVRvQ3ViaWMsIGFmZmluaXR5LCBXVEZNb3ZlKHRhcmdldCksIFdURk1vdmUocDEpLCBXVEZNb3Zl
KHAyKSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21lbnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRl
Q3VydmVUb1F1YWRyYXRpYyhDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHks
IFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBwMSkKK3sKKyAgICByZXR1
cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShDdXJ2ZVRvUXVhZHJhdGljLCBhZmZpbml0
eSwgV1RGTW92ZSh0YXJnZXQpLCBXVEZNb3ZlKHAxKSk7Cit9CisKK1JlZjxDU1NTaGFwZVNlZ21l
bnQ+IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKENTU1NoYXBlU2Vn
bWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCwgUmVm
PENTU1ZhbHVlPiYmIHAyKQoreworICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnRWYWx1ZTo6Y3Jl
YXRlKEN1cnZlVG9DdWJpY1Ntb290aCwgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgV1RGTW92
ZShwMikpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0
ZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFm
ZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0KQoreworICAgIHJldHVybiBDU1NTaGFwZVNl
Z21lbnRWYWx1ZTo6Y3JlYXRlKEN1cnZlVG9RdWFkcmF0aWNTbW9vdGgsIGFmZmluaXR5LCBXVEZN
b3ZlKHRhcmdldCkpOworfQorCitSZWY8Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6
OmNyZWF0ZUFyY1RvKENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBhZmZpbml0eSwgUmVm
PENTU1ZhbHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHJhZGl1cywgQ1NTVmFsdWVJRCBz
d2VlcCwgQ1NTVmFsdWVJRCBzaXplLCBSZWY8Q1NTVmFsdWU+JiYgYW5nbGUpCit7CisgICAgQVNT
RVJUKHN3ZWVwID09IENTU1ZhbHVlQ2N3IHx8IHN3ZWVwID09IENTU1ZhbHVlQ3cpOworICAgIEFT
U0VSVChzaXplID09IENTU1ZhbHVlU21hbGwgfHwgc2l6ZSA9PSBDU1NWYWx1ZUxhcmdlKTsKKyAg
ICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmNyZWF0ZShBcmNUbywgYWZmaW5pdHksCisg
ICAgICAgIFdURk1vdmUodGFyZ2V0KSwKKyAgICAgICAgV1RGTW92ZShyYWRpdXMpLAorICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN3ZWVwKSwKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShzaXplKSwKKyAgICAgICAgV1RGTW92ZShhbmdsZSkpOworfQorCitSZWY8
Q1NTU2hhcGVTZWdtZW50PiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCoobmV3IENTU1NoYXBlU2VnbWVudChDbG9zZVBhdGgpKSk7Cit9
CisKK2Jvb2wgQ1NTU2hhcGVTZWdtZW50OjplcXVhbHMoY29uc3QgQ1NTU2hhcGVTZWdtZW50JiBv
dGhlcikgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fdHlwZSA9PSBDbG9zZVBhdGgpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU1NoYXBlU2VnbWVu
dFZhbHVlJj4oKnRoaXMpLmVxdWFscyhzdGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21lbnRW
YWx1ZSY+KG90aGVyKSk7Cit9CisKK1N0cmluZyBDU1NTaGFwZVNlZ21lbnQ6OmN1c3RvbUNTU1Rl
eHQoKSBjb25zdAoreworICAgIGlmIChtX3R5cGUgPT0gQ1NTU2hhcGVTZWdtZW50OjpDbG9zZVBh
dGgpCisgICAgICAgIHJldHVybiAiY2xvc2UiX3M7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUqPih0aGlzKS0+Y3VzdG9tQ1NTVGV4dCgpOworfQor
Citib29sIENTU1NoYXBlU2VnbWVudFZhbHVlOjplcXVhbHMoY29uc3QgQ1NTU2hhcGVTZWdtZW50
JiBvdGhlcikgY29uc3QKK3sKKyAgICBBU1NFUlQodHlwZSgpID09IG90aGVyLnR5cGUoKSk7Cisg
ICAgY29uc3QgYXV0byYgb3RoZXJWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IENTU1NoYXBlU2Vn
bWVudFZhbHVlJj4ob3RoZXIpOworICAgIHJldHVybiBvdGhlclZhbHVlLm1fYWZmaW5pdHkgPT0g
bV9hZmZpbml0eQorICAgICAgICAmJiBvdGhlclZhbHVlLnRhcmdldCgpLmVxdWFscyh0YXJnZXQo
KSkKKyAgICAgICAgJiYgb3RoZXJWYWx1ZS5tX2FyZ3VtZW50cy5nZXQoKS5lcXVhbHMobV9hcmd1
bWVudHMuZ2V0KCkpOworfQorCitTdHJpbmcgQ1NTU2hhcGVTZWdtZW50VmFsdWU6OmN1c3RvbUNT
U1RleHQoKSBjb25zdAoreworICAgIGNvbnN0IGF1dG8gY29tbWFuZCA9IFsmXSgpIHsKKyAgICAg
ICAgc3dpdGNoICh0eXBlKCkpIHsKKyAgICAgICAgY2FzZSBNb3ZlVG86CisgICAgICAgICAgICBy
ZXR1cm4gIm1vdmUiOworICAgICAgICBjYXNlIExpbmVUbzoKKyAgICAgICAgICAgIHJldHVybiAi
bGluZSI7CisgICAgICAgIGNhc2UgTGluZVRvSG9yaXpvbnRhbDoKKyAgICAgICAgICAgIHJldHVy
biAiaGxpbmUiOworICAgICAgICBjYXNlIExpbmVUb1ZlcnRpY2FsOgorICAgICAgICAgICAgcmV0
dXJuICJ2bGluZSI7CisgICAgICAgIGNhc2UgQ3VydmVUb0N1YmljOgorICAgICAgICBjYXNlIEN1
cnZlVG9RdWFkcmF0aWM6CisgICAgICAgICAgICByZXR1cm4gImN1cnZlIjsKKyAgICAgICAgY2Fz
ZSBDdXJ2ZVRvQ3ViaWNTbW9vdGg6CisgICAgICAgIGNhc2UgQ3VydmVUb1F1YWRyYXRpY1Ntb290
aDoKKyAgICAgICAgICAgIHJldHVybiAic21vb3RoIjsKKyAgICAgICAgY2FzZSBBcmNUbzoKKyAg
ICAgICAgICAgIHJldHVybiAiYXJjIjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisK
KyAgICB9OworCisgICAgY29uc3QgYXV0byBjb25qdW5jdGlvbiA9IFsmXSgpIHsKKyAgICAgICAg
c3dpdGNoICh0eXBlKCkpIHsKKyAgICAgICAgY2FzZSBNb3ZlVG86CisgICAgICAgIGNhc2UgTGlu
ZVRvOgorICAgICAgICBjYXNlIExpbmVUb0hvcml6b250YWw6CisgICAgICAgIGNhc2UgTGluZVRv
VmVydGljYWw6CisgICAgICAgIGNhc2UgQ3VydmVUb1F1YWRyYXRpY1Ntb290aDoKKyAgICAgICAg
ICAgIHJldHVybiAiIjsKKyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWM6CisgICAgICAgIGNhc2Ug
Q3VydmVUb1F1YWRyYXRpYzoKKyAgICAgICAgY2FzZSBDdXJ2ZVRvQ3ViaWNTbW9vdGg6CisgICAg
ICAgICAgICByZXR1cm4gIiB2aWEgIjsKKyAgICAgICAgY2FzZSBBcmNUbzoKKyAgICAgICAgICAg
IHJldHVybiAiIG9mICI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgIH07CisK
KyAgICBhdXRvIGJ5VG8gPSBtX2FmZmluaXR5ID09IENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZp
bml0eTo6QWJzb2x1dGUgPyAiIHRvICIgOiAiIGJ5ICI7CisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKGNvbW1hbmQoKSwgYnlUbywgbV90YXJnZXQtPmNzc1Rl
eHQoKSwgY29uanVuY3Rpb24oKSk7CisgICAgaWYgKHR5cGUoKSA9PSBBcmNUbykgeworICAgICAg
ICBidWlsZGVyLmFwcGVuZChhcmd1bWVudCgwKS5jc3NUZXh0KCkpOworICAgICAgICBjb25zdCBh
dXRvJiBzd2VlcCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihhcmd1bWVudCgxKSk7Cisg
ICAgICAgIGNvbnN0IGF1dG8mIHNpemUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oYXJn
dW1lbnQoMikpOworICAgICAgICBjb25zdCBhdXRvJiBhbmdsZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPihhcmd1bWVudCgzKSk7CisKKyAgICAgICAgaWYgKHN3ZWVwLnZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUN3KQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiBjdyIpOworCisgICAg
ICAgIGlmIChzaXplLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxhcmdlKQorICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIiBsYXJnZSIpOworCisgICAgICAgIGlmIChhbmdsZS5jb21wdXRlRGVncmVl
cygpKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiByb3RhdGUgIiwgYW5nbGUuY3NzVGV4
dCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9hcmd1bWVudHMtPmNz
c1RleHQoKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NoYXBlU2VnbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NoYXBlU2VnbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1MzliN2E3MzJhNmFhODVkYzEz
OGI3ZTg4NDY0YjYyMzg5M2QwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2hhcGVTZWdtZW50LmgKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFs
dWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1NoYXBlU2VnbWVudCA6IHB1YmxpYyBDU1NWYWx1ZSB7
CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBDb29yZEFmZmluaXR5IHsKKyAgICAgICAgQWJzb2x1
dGUsIFJlbGF0aXZlCisgICAgfTsKKworICAgIGVudW0gU2VnbWVudFR5cGUgeworICAgICAgICBN
b3ZlVG8sCisgICAgICAgIExpbmVUbywKKyAgICAgICAgTGluZVRvSG9yaXpvbnRhbCwKKyAgICAg
ICAgTGluZVRvVmVydGljYWwsCisgICAgICAgIEN1cnZlVG9DdWJpYywKKyAgICAgICAgQ3VydmVU
b1F1YWRyYXRpYywKKyAgICAgICAgQ3VydmVUb0N1YmljU21vb3RoLAorICAgICAgICBDdXJ2ZVRv
UXVhZHJhdGljU21vb3RoLAorICAgICAgICBBcmNUbywKKyAgICAgICAgQ2xvc2VQYXRoCisgICAg
fTsKKworICAgIFNlZ21lbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKwor
ICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0OworICAg
IFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CisgICAgfkNTU1NoYXBlU2VnbWVudCgpID0g
ZGVmYXVsdDsKKworICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVDbG9zZVBh
dGgoKTsKKyAgICBzdGF0aWMgUmVmPENTU1NoYXBlU2VnbWVudD4gY3JlYXRlTW92ZVRvKENvb3Jk
QWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQpOworICAgIHN0YXRpYyBSZWY8Q1NTU2hh
cGVTZWdtZW50PiBjcmVhdGVMaW5lVG8oQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHRh
cmdldCk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUxpbmVUb0hvcml6
b250YWwoQ29vcmRBZmZpbml0eSwgUmVmPENTU1ZhbHVlPiYmIHgpOworICAgIHN0YXRpYyBSZWY8
Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGVMaW5lVG9WZXJ0aWNhbChDb29yZEFmZmluaXR5LCBSZWY8
Q1NTVmFsdWU+JiYgeSk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1
cnZlVG9DdWJpYyhDb29yZEFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0LCBSZWY8Q1NT
VmFsdWU+JiYgcDEsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAgc3RhdGljIFJlZjxDU1NTaGFw
ZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWMoQ29vcmRBZmZpbml0eSwgUmVmPENTU1Zh
bHVlPiYmIHRhcmdldCwgUmVmPENTU1ZhbHVlPiYmIHAxKTsKKyAgICBzdGF0aWMgUmVmPENTU1No
YXBlU2VnbWVudD4gY3JlYXRlQ3VydmVUb0N1YmljU21vb3RoKENvb3JkQWZmaW5pdHksIFJlZjxD
U1NWYWx1ZT4mJiB0YXJnZXQsIFJlZjxDU1NWYWx1ZT4mJiBwMik7CisgICAgc3RhdGljIFJlZjxD
U1NTaGFwZVNlZ21lbnQ+IGNyZWF0ZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoQ29vcmRBZmZpbml0
eSwgUmVmPENTU1ZhbHVlPiYmIHRhcmdldCk7CisgICAgc3RhdGljIFJlZjxDU1NTaGFwZVNlZ21l
bnQ+IGNyZWF0ZUFyY1RvKENvb3JkQWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIFJl
ZjxDU1NWYWx1ZT4mJiByYWRpdXMsIENTU1ZhbHVlSUQgc3dlZXAsIENTU1ZhbHVlSUQgc2l6ZSwg
UmVmPENTU1ZhbHVlPiYmIGFuZ2xlKTsKKworcHJvdGVjdGVkOgorICAgIENTU1NoYXBlU2VnbWVu
dChTZWdtZW50VHlwZSB0eXBlKQorICAgICAgICA6IENTU1ZhbHVlKFNoYXBlU2VnbWVudENsYXNz
KQorICAgICAgICAsIG1fdHlwZSh0eXBlKSB7IH0KKworcHJpdmF0ZToKKyAgICBTZWdtZW50VHlw
ZSBtX3R5cGU7Cit9OworCitjbGFzcyBDU1NTaGFwZVNlZ21lbnRWYWx1ZSA6IHB1YmxpYyBDU1NT
aGFwZVNlZ21lbnQgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSAuLi5BcmdzPgor
ICAgIHN0YXRpYyBSZWY8Q1NTU2hhcGVTZWdtZW50PiBjcmVhdGUoQ1NTU2hhcGVTZWdtZW50OjpT
ZWdtZW50VHlwZSB0eXBlLAorICAgICAgICBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHkg
YWZmaW5pdHksIFJlZjxDU1NWYWx1ZT4mJiB0YXJnZXQsIEFyZ3MuLi4gYXJndW1lbnRzKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU2hhcGVTZWdtZW50VmFsdWUodHlw
ZSwgYWZmaW5pdHksIFdURk1vdmUodGFyZ2V0KSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3VtZW50
cykuLi4pKTsKKyAgICB9CisKKyAgICBjb25zdCBDU1NWYWx1ZSYgdGFyZ2V0KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX3RhcmdldC5nZXQoKTsKKyAgICB9CisKKyAgICBjb25zdCBD
U1NWYWx1ZSYgYXJndW1lbnQoc2l6ZV90IGkpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
bV9hcmd1bWVudHMtPmxlbmd0aCgpID4gaSk7CisgICAgICAgIHJldHVybiAqKG1fYXJndW1lbnRz
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICB9CisKKyAgICBDU1NTaGFwZVNlZ21l
bnQ6OkNvb3JkQWZmaW5pdHkgYWZmaW5pdHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fYWZmaW5pdHk7CisgICAgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTU2hhcGVTZWdt
ZW50JiBvdGhlcikgY29uc3Q7CisgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIGFwcGVuZEFyZ3MoKSB7IH0KKyAgICB2b2lkIGFwcGVuZEFyZ3Mo
UmVmPENTU1ZhbHVlPiYmIHYpIHsgbV9hcmd1bWVudHMtPmFwcGVuZChXVEZNb3ZlKHYpKTsgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgLi4uQXJncz4KKyAgICB2b2lkIGFwcGVuZEFyZ3MoUmVm
PENTU1ZhbHVlPiYmIHYsIEFyZ3MgLi4uYXJncykKKyAgICB7CisgICAgICAgIGFwcGVuZEFyZ3Mo
V1RGTW92ZSh2KSk7CisgICAgICAgIGFwcGVuZEFyZ3Moc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSAuLi5BcmdzPgorICAgIENTU1No
YXBlU2VnbWVudFZhbHVlKENTU1NoYXBlU2VnbWVudDo6U2VnbWVudFR5cGUgdHlwZSwgQ1NTU2hh
cGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBSZWY8Q1NTVmFsdWU+JiYgdGFyZ2V0
LCBBcmdzIC4uLmFyZ3MpCisgICAgICAgIDogQ1NTU2hhcGVTZWdtZW50KHR5cGUpCisgICAgICAg
ICwgbV9hZmZpbml0eShhZmZpbml0eSkKKyAgICAgICAgLCBtX3RhcmdldChXVEZNb3ZlKHRhcmdl
dCkpCisgICAgICAgICwgbV9hcmd1bWVudHMoQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpKQorICAgIHsKKyAgICAgICAgYXBwZW5kQXJncyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pOworICAgIH0KKworICAgIENTU1NoYXBlU2VnbWVudDo6Q29vcmRBZmZpbml0eSBtX2Fm
ZmluaXR5OworICAgIFJlZjxDU1NWYWx1ZT4gbV90YXJnZXQ7CisgICAgUmVmPENTU1ZhbHVlTGlz
dD4gbV9hcmd1bWVudHM7Cit9OworCit9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19WQUxV
RShDU1NTaGFwZVNlZ21lbnQsIGlzU2hhcGVTZWdtZW50VmFsdWUoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuY3BwCmluZGV4IDVlMjE4MjI2M2ZjZWE1Y2FmZjM2M2U0ZmY0NDAzOTQzODExZjZkYWMuLjYz
MDllM2ZmNzNkY2NiNjY3MzFmMjI0YjY0OWQ3ODkyZGEyZWQxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlLmNwcApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIkNTU1JheVZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTU2hhZG93VmFsdWUuaCIKKyNp
bmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZh
bHVlLmgiCiAjaW5jbHVkZSAiQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NW
YWx1ZUxpc3QuaCIKQEAgLTIzMCw2ICsyMzEsOCBAQCBib29sIENTU1ZhbHVlOjplcXVhbHMoY29u
c3QgQ1NTVmFsdWUmIG90aGVyKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NW
YWx1ZXM8Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGNhc2UgRm9u
dFN0eWxlUmFuZ2VDbGFzczoKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENT
U0ZvbnRTdHlsZVJhbmdlVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgU2hhcGVT
ZWdtZW50Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NTaGFw
ZVNlZ21lbnQ+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMzOSw2
ICszNDIsOCBAQCBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICByZXR1
cm4gZG93bmNhc3Q8Q1NTRm9udFN0eWxlVmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CiAg
ICAgY2FzZSBGb250U3R5bGVSYW5nZUNsYXNzOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NT
Rm9udFN0eWxlUmFuZ2VWYWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKKyAgICBjYXNlIFNo
YXBlU2VnbWVudENsYXNzOgorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTU2hhcGVTZWdtZW50
PigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtNDk3LDYgKzUwMiw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogICAgIGNh
c2UgRm9udFN0eWxlUmFuZ2VDbGFzczoKICAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU0ZvbnRT
dHlsZVJhbmdlVmFsdWU+KHRoaXMpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBTaGFwZVNl
Z21lbnRDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU1NoYXBlU2VnbWVudD4odGhp
cyk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IGRhZGU1OGRhMjA2OGI3ZWVjY2RhYTMzMTkxOGM0NGQz
YTc2ZTA1YzguLjNmNzVhZjMwYWI5MDI4YWViMmQxNTJmMTQ1Yzk4OTM1N2I1MTllYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5oCkBAIC0xMzQsNiArMTM0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNH
cmlkQXV0b1JlcGVhdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gR3JpZEF1
dG9SZXBlYXRDbGFzczsgfQogICAgIGJvb2wgaXNHcmlkSW50ZWdlclJlcGVhdFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gR3JpZEludGVnZXJSZXBlYXRDbGFzczsgfQogICAg
IGJvb2wgaXNHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5
cGUgPT0gR3JpZFRlbXBsYXRlQXJlYXNDbGFzczsgfQorICAgIGJvb2wgaXNTaGFwZVNlZ21lbnRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFNoYXBlU2VnbWVudENsYXNzOyB9
CiAgICAgYm9vbCBpc0dyaWRMaW5lTmFtZXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NU
eXBlID09IEdyaWRMaW5lTmFtZXNDbGFzczsgfQogICAgIGJvb2wgaXNTdWJncmlkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTdWJncmlkQ2xhc3M7IH0KICAgICBib29sIGlz
VW5pY29kZVJhbmdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBVbmljb2Rl
UmFuZ2VDbGFzczsgfQpAQCAtMjA5LDYgKzIxMCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgQ2Fs
Y3VsYXRpb25DbGFzcywKICAgICAgICAgR3JpZFRlbXBsYXRlQXJlYXNDbGFzcywKICAgICAgICAg
VmFsdWVQYWlyQ2xhc3MsCisgICAgICAgIFNoYXBlU2VnbWVudENsYXNzLAogCiAgICAgICAgIENT
U0NvbnRlbnREaXN0cmlidXRpb25DbGFzcywKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3
b3Jkcy5pbgppbmRleCAyZGQ0YzBiYWMzYzlhM2E0ZDYzYmFlZGMyOTkxMDgwMmI1MjIwMmY5Li4x
YjY1NGViMjE5ZDRlMWM5YjIyOGZlMTcxNTg1MzkzODA1YzViMTM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtMTI4Niw2ICsxMjg2LDI3IEBAIHJlY3QKIAogLy8g
c2hhcGVzCiBwb2x5Z29uCitzaGFwZQorCisvLyBzaGFwZSgpCisvLyBmcm9tCisvLyB0bworLy8g
bW92ZQorbGluZQoraGxpbmUKK3ZsaW5lCitjdXJ2ZQorLy8gc21vb3RoCithcmMKK2Nsb3NlCit2
aWEKK29mCitieQorY3cKK2NjdworLy8gbGFyZ2UKKy8vIHNtYWxsCisvLyByb3RhdGUKIAogLy8g
QGZvbnQtZmFjZSBzcmMKIGZvcm1hdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1No
YXBlU2VnbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhcGVTZWdtZW50
RnVuY3Rpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmZiYjk5NDNiZDBmNzVmM2FhOTE1NTU0OGMzYWE2
NTVjOGZjZTdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2Vn
bWVudEZ1bmN0aW9ucy5jcHAKQEAgLTAsMCArMSwyMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcGVTZWdtZW50RnVuY3Rpb25zLmgiCisKKyNpbmNsdWRl
ICJCYXNpY1NoYXBlU2VnbWVudC5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGlu
Z3MuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZS5o
IgorI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgorI2luY2x1ZGUgIlBhaXIuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjb252ZXJ0UG9p
bnRUb0NTU1ZhbHVlKGNvbnN0IExlbmd0aFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlKQoreworICAgIGF1dG8mIHBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwor
ICAgIHJldHVybiBwb29sLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZSgKKyAgICAgICAgcG9vbC5j
cmVhdGVWYWx1ZShwb2ludC54KCksIHN0eWxlKSwKKyAgICAgICAgcG9vbC5jcmVhdGVWYWx1ZShw
b2ludC55KCksIHN0eWxlKSwKKyAgICAgICAgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6
RG9Ob3RDb2FsZXNjZSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZT4gYXV0byB0b0NT
U0FyZ3MoY29uc3QgVmFsdWUmLCBjb25zdCBSZW5kZXJTdHlsZSYpOworCit0ZW1wbGF0ZTw+Cith
dXRvIHRvQ1NTQXJncyhjb25zdCBMZW5ndGgmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZTxSZWY8Q1NTVmFsdWU+PihDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHZhbHVlLCBzdHlsZSkpOworfQorCit0ZW1w
bGF0ZTw+CithdXRvIHRvQ1NTQXJnczxMZW5ndGhQb2ludD4oY29uc3QgTGVuZ3RoUG9pbnQmIHZh
bHVlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90
dXBsZShjb252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLCBzdHlsZSkpOworfQorCit0ZW1wbGF0
ZTw+CithdXRvIHRvQ1NTQXJncyhjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlJiB2YWx1
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdHVw
bGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFsdWUudGFyZ2V0UG9pbnQsIHN0
eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5wb2ludDEsIHN0eWxl
KSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS5wb2ludDIsIHN0eWxlKSk7
Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NBcmdzKGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNT
aGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJl
dHVybiBzdGQ6Om1ha2VfdHVwbGUoCisgICAgICAgIGNvbnZlcnRQb2ludFRvQ1NTVmFsdWUodmFs
dWUudGFyZ2V0UG9pbnQsIHN0eWxlKSwKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2
YWx1ZS5wb2ludDEsIHN0eWxlKSk7Cit9CisKK3RlbXBsYXRlPD4KK2F1dG8gdG9DU1NBcmdzKGNv
bnN0IEN1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUmIHZhbHVlLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV90dXBsZSgKKyAgICAgICAgY29u
dmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS50YXJnZXRQb2ludCwgc3R5bGUpLAorICAgICAgICBj
b252ZXJ0UG9pbnRUb0NTU1ZhbHVlKHZhbHVlLnBvaW50Miwgc3R5bGUpKTsKK30KKwordGVtcGxh
dGU8PgorYXV0byB0b0NTU0FyZ3MoY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiB2YWx1ZSwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8mIHBvb2wgPSBDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpOworICAgIGF1dG8gcmFkaXVzID0gUGFpcjo6Y3JlYXRlKAorICAgICAgICBw
b29sLmNyZWF0ZVZhbHVlKHZhbHVlLnJhZGl1cy53aWR0aCwgc3R5bGUpLAorICAgICAgICBwb29s
LmNyZWF0ZVZhbHVlKHZhbHVlLnJhZGl1cy5oZWlnaHQsIHN0eWxlKSwKKyAgICAgICAgUGFpcjo6
SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpOworCisgICAgcmV0dXJuIHN0ZDo6bWFr
ZV90dXBsZSgKKyAgICAgICAgY29udmVydFBvaW50VG9DU1NWYWx1ZSh2YWx1ZS50YXJnZXRQb2lu
dCwgc3R5bGUpLAorICAgICAgICBwb29sLmNyZWF0ZVZhbHVlKFdURk1vdmUocmFkaXVzKSksCisg
ICAgICAgIHZhbHVlLnN3ZWVwID8gQ1NTVmFsdWVDdyA6IENTU1ZhbHVlQ2N3LAorICAgICAgICB2
YWx1ZS5sYXJnZUFyYyA/IENTU1ZhbHVlTGFyZ2UgOiBDU1NWYWx1ZVNtYWxsLAorICAgICAgICBw
b29sLmNyZWF0ZVZhbHVlKHZhbHVlLmFuZ2xlLCBDU1NVbml0VHlwZTo6Q1NTX0RFRykpOworfQor
CitSZWY8Q1NTU2hhcGVTZWdtZW50PiB0b0NTU1NoYXBlU2VnbWVudChjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50JiBzZWdtZW50KQoreworICAgIGF1dG8g
dG9DU1MgPSBbJl0oQ1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5IGFmZmluaXR5LCBhdXRv
IGNyZWF0ZSwgY29uc3QgYXV0byYgYXMpIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6YXBwbHkoY3Jl
YXRlLCBzdGQ6OnR1cGxlX2NhdChzdGQ6Om1ha2VfdHVwbGUoYWZmaW5pdHkpLCB0b0NTU0FyZ3Mo
KHNlZ21lbnQuKmFzKSgpLCBzdHlsZSkpKTsKKyAgICB9OworCisjZGVmaW5lIENSRUFURV9DU1Nf
U0hBUEVfU0VHTUVOVF9GUk9NX0JBU0lDX1NIQVBFX1NFR01FTlQoVHlwZSkgXAorICAgIGNhc2Ug
U2hhcGVTZWdtZW50IyNUeXBlOjpBYnNTZWdUeXBlOiBcCisgICAgICAgIHJldHVybiB0b0NTUyhD
U1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRlLCBDU1NTaGFwZVNlZ21lbnQ6
OmNyZWF0ZSMjVHlwZSwgJkJhc2ljU2hhcGVTZWdtZW50OjphcyMjVHlwZSk7IFwKKyAgICBjYXNl
IFNoYXBlU2VnbWVudCMjVHlwZTo6UmVsU2VnVHlwZTogXAorICAgICAgICByZXR1cm4gdG9DU1Mo
Q1NTU2hhcGVTZWdtZW50OjpDb29yZEFmZmluaXR5OjpSZWxhdGl2ZSwgQ1NTU2hhcGVTZWdtZW50
OjpjcmVhdGUjI1R5cGUsICZCYXNpY1NoYXBlU2VnbWVudDo6YXMjI1R5cGUpOyBcCisKKyAgICBz
d2l0Y2ggKHNlZ21lbnQudHlwZSgpKSB7CisgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgorICAg
ICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKworICAgICAg
ICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9WQUxVRShDUkVBVEVfQ1NTX1NIQVBF
X1NFR01FTlRfRlJPTV9CQVNJQ19TSEFQRV9TRUdNRU5UKQorCisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6
OmNyZWF0ZUNsb3NlUGF0aCgpOworICAgIH0KK30KK3RlbXBsYXRlIDxjbGFzcyBEZWZpbml0aW9u
PgorU1ZHUGF0aFNlZ1R5cGUgc2VnbWVudFR5cGUoY29uc3QgQ1NTU2hhcGVTZWdtZW50VmFsdWUm
IHNlZ21lbnRXaXRoVmFsdWUpCit7CisgICAgcmV0dXJuIHNlZ21lbnRXaXRoVmFsdWUuYWZmaW5p
dHkoKSA9PSBDU1NTaGFwZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRlID8gRGVmaW5p
dGlvbjo6QWJzU2VnVHlwZSA6IERlZmluaXRpb246OlJlbFNlZ1R5cGU7Cit9CisKK1JlZjxCYXNp
Y1NoYXBlU2VnbWVudD4gZnJvbUNTU1NoYXBlU2VnbWVudChjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgY29uc3QgQ1NTU2hhcGVTZWdtZW50JiBjc3NTZWdt
ZW50KQoreworICAgIGF1dG8gdG9MZW5ndGggPSBbJl0oY29uc3QgQ1NTVmFsdWUmIHZhbHVlKSAt
PiBMZW5ndGggeworICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IEZpeGVkRmxvYXRD
b252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oY29u
dmVyc2lvbkRhdGEpOworICAgIH07CisKKyAgICBhdXRvIHRvTGVuZ3RoUG9pbnQgPSBbJl0oY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKSAtPiBMZW5ndGhQb2ludCB7CisgICAgICAgIGF1dG8gcGFpciA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkucGFpclZhbHVlKCk7CisgICAgICAg
IEFTU0VSVChwYWlyKTsKKyAgICAgICAgcmV0dXJuIExlbmd0aFBvaW50IHsgdG9MZW5ndGgoKnBh
aXItPmZpcnN0KCkpLCB0b0xlbmd0aCgqcGFpci0+c2Vjb25kKCkpIH07CisgICAgfTsKKworICAg
IGF1dG8gdG9MZW5ndGhTaXplID0gWyZdKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkgLT4gTGVuZ3Ro
U2l6ZSB7CisgICAgICAgIGF1dG8gcGFpciA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkucGFpclZhbHVlKCk7CisgICAgICAgIEFTU0VSVChwYWlyKTsKKyAgICAgICAgcmV0dXJu
IExlbmd0aFNpemUgeyB0b0xlbmd0aCgqcGFpci0+Zmlyc3QoKSksIHRvTGVuZ3RoKCpwYWlyLT5z
ZWNvbmQoKSkgfTsKKyAgICB9OworCisgICAgYXV0byB0eXBlID0gY3NzU2VnbWVudC50eXBlKCk7
CisKKyAgICBpZiAodHlwZSA9PSBDU1NTaGFwZVNlZ21lbnQ6OkNsb3NlUGF0aCkKKyAgICAgICAg
cmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKworICAgIGNvbnN0
IGF1dG8mIHNlZ21lbnRXaXRoVmFsdWUgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NTaGFwZVNlZ21l
bnRWYWx1ZSY+KGNzc1NlZ21lbnQpOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBD
U1NTaGFwZVNlZ21lbnQ6Ok1vdmVUbzogeworICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21l
bnQ6OmNyZWF0ZU1vdmVUbygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudE1v
dmVUbz4oc2VnbWVudFdpdGhWYWx1ZSksCisgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21l
bnRXaXRoVmFsdWUudGFyZ2V0KCkpKTsKKyAgICB9CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVu
dDo6TGluZVRvOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVU
bygKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudExpbmVUbz4oc2VnbWVudFdp
dGhWYWx1ZSksCisgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRXaXRoVmFsdWUudGFy
Z2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpMaW5lVG9Ib3Jpem9udGFsOgor
ICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVUb0hvcml6b250YWwo
CisgICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRMaW5lVG9Ib3Jpem9udGFsPihz
ZWdtZW50V2l0aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoKHNlZ21lbnRXaXRoVmFsdWUu
dGFyZ2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpMaW5lVG9WZXJ0aWNhbDoK
KyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVMaW5lVG9WZXJ0aWNhbCgK
KyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudExpbmVUb1ZlcnRpY2FsPihzZWdt
ZW50V2l0aFZhbHVlKSwKKyAgICAgICAgICAgIHRvTGVuZ3RoKHNlZ21lbnRXaXRoVmFsdWUudGFy
Z2V0KCkpKTsKKworICAgIGNhc2UgQ1NTU2hhcGVTZWdtZW50OjpDdXJ2ZVRvQ3ViaWM6CisgICAg
ICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljKAorICAgICAg
ICAgICAgc2VnbWVudFR5cGU8U2hhcGVTZWdtZW50Q3VydmVUb0N1YmljPihzZWdtZW50V2l0aFZh
bHVlKSwgeworICAgICAgICAgICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS5h
cmd1bWVudCgwKSksCisgICAgICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZh
bHVlLmFyZ3VtZW50KDEpKSwKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBvaW50KHNlZ21lbnRX
aXRoVmFsdWUudGFyZ2V0KCkpCisgICAgICAgICAgICB9KTsKKworICAgIGNhc2UgQ1NTU2hhcGVT
ZWdtZW50OjpDdXJ2ZVRvUXVhZHJhdGljOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21l
bnQ6OmNyZWF0ZUN1cnZlVG9RdWFkcmF0aWMoCisgICAgICAgICAgICBzZWdtZW50VHlwZTxTaGFw
ZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljPihzZWdtZW50V2l0aFZhbHVlKSwgeworICAgICAgICAg
ICAgICAgIHRvTGVuZ3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgwKSksCisgICAg
ICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQorICAg
ICAgICAgICAgfSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6Q3VydmVUb0N1YmljU21v
b3RoOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1cnZlVG9DdWJp
Y1Ntb290aCgKKyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudEN1cnZlVG9DdWJp
Y1Ntb290aD4oc2VnbWVudFdpdGhWYWx1ZSksIHsKKyAgICAgICAgICAgICAgICB0b0xlbmd0aFBv
aW50KHNlZ21lbnRXaXRoVmFsdWUuYXJndW1lbnQoMCkpLAorICAgICAgICAgICAgICAgIHRvTGVu
Z3RoUG9pbnQoc2VnbWVudFdpdGhWYWx1ZS50YXJnZXQoKSkKKyAgICAgICAgICAgIH0pOworCisg
ICAgY2FzZSBDU1NTaGFwZVNlZ21lbnQ6OkN1cnZlVG9RdWFkcmF0aWNTbW9vdGg6CisgICAgICAg
IHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb1F1YWRyYXRpY1Ntb290aCgK
KyAgICAgICAgICAgIHNlZ21lbnRUeXBlPFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWNTbW9v
dGg+KHNlZ21lbnRXaXRoVmFsdWUpLAorICAgICAgICAgICAgdG9MZW5ndGhQb2ludChzZWdtZW50
V2l0aFZhbHVlLnRhcmdldCgpKSk7CisKKyAgICBjYXNlIENTU1NoYXBlU2VnbWVudDo6QXJjVG86
CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQXJjVG8oCisgICAgICAg
ICAgICBzZWdtZW50VHlwZTxTaGFwZVNlZ21lbnRBcmNUbz4oc2VnbWVudFdpdGhWYWx1ZSksIHsK
KyAgICAgICAgICAgICAgICB0b0xlbmd0aFNpemUoc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgw
KSksCisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHNlZ21lbnRX
aXRoVmFsdWUuYXJndW1lbnQoMykpLmZsb2F0VmFsdWUoQ1NTVW5pdFR5cGU6OkNTU19ERUcpLAor
ICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihzZWdtZW50V2l0aFZh
bHVlLmFyZ3VtZW50KDEpKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDdywKKyAgICAgICAgICAgICAg
ICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oc2VnbWVudFdpdGhWYWx1ZS5hcmd1bWVudCgy
KSkudmFsdWVJRCgpID09IENTU1ZhbHVlTGFyZ2UsCisgICAgICAgICAgICAgICAgdG9MZW5ndGhQ
b2ludChzZWdtZW50V2l0aFZhbHVlLnRhcmdldCgpKQorICAgICAgICAgICAgfSk7CisKKyAgICBj
YXNlIENTU1NoYXBlU2VnbWVudDo6Q2xvc2VQYXRoOgorICAgICAgICByZXR1cm4gQmFzaWNTaGFw
ZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRlQ2xvc2VQYXRoKCk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5j
dGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFwZVNlZ21lbnRGdW5jdGlvbnMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NjQwZDcxZTI5YTUwODM4MjUzZTBjMmVhNzA5NjExNDQ5MWQ2MmQzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYXBlU2VnbWVudEZ1bmN0aW9ucy5oCkBA
IC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgor
ICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEJhc2ljU2hhcGVTZWdtZW50OworY2xhc3MgQ1NTU2hhcGVTZWdtZW50OworY2xhc3MgQ1NT
VG9MZW5ndGhDb252ZXJzaW9uRGF0YTsKK2NsYXNzIFJlbmRlclN0eWxlOworCitSZWY8Q1NTU2hh
cGVTZWdtZW50PiB0b0NTU1NoYXBlU2VnbWVudChjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEJh
c2ljU2hhcGVTZWdtZW50Jik7CitSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGZyb21DU1NTaGFwZVNl
Z21lbnQoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIGNvbnN0IENTU1NoYXBlU2Vn
bWVudCYpOworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuY3BwCmluZGV4IGQxYjVkMzQ1NTU5MTBiZDgzM2VhZTlmZmJjOTU3YmMxY2QzMjQ5MGIu
LjhlYTRmYTg2ZWY0YjRlYmFjNmY3ZGYxZjFkNzQzYmU0OWVmYWFkNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRG
ZWF0dXJlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250UGFsZXR0ZVZhbHVlc092ZXJyaWRlQ29s
b3JzVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NTaGFwZVNlZ21lbnQuaCIKICNpZiBFTkFCTEUoVkFS
SUFUSU9OX0ZPTlRTKQogI2luY2x1ZGUgIkNTU0ZvbnRWYXJpYXRpb25WYWx1ZS5oIgogI2VuZGlm
CkBAIC0yNjUyLDYgKzI2NTMsMTk2IEBAIHN0YXRpYyBSZWZQdHI8Q1NTQmFzaWNTaGFwZVBhdGg+
IGNvbnN1bWVCYXNpY1NoYXBlUGF0aChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzCiAgICAgcmV0
dXJuIHNoYXBlOwogfQogCitzdGF0aWMgUmVmUHRyPENTU1NoYXBlU2VnbWVudD4gY29uc3VtZVNo
YXBlU2VnbWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiBjb250ZXh0KQoreworICAgIGF1dG8gY29tbWFuZCA9IGFyZ3MuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKTsKKyAgICBpZiAoY29tbWFuZC5pZCgpID09IENTU1ZhbHVlQ2xvc2UpCisg
ICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUNsb3NlUGF0aCgpOworCisgICAg
aWYgKCFpZGVudE1hdGNoZXM8Q1NTVmFsdWVUbywgQ1NTVmFsdWVCeT4oYXJncy5wZWVrKCkuaWQo
KSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBhZmZpbml0eSA9IGFyZ3Mu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpID09IENTU1ZhbHVlVG8gPyBDU1NTaGFw
ZVNlZ21lbnQ6OkNvb3JkQWZmaW5pdHk6OkFic29sdXRlIDogQ1NTU2hhcGVTZWdtZW50OjpDb29y
ZEFmZmluaXR5OjpSZWxhdGl2ZTsKKyAgICBhdXRvIGNvbnN1bWVOZXh0TGVuZ3RoT3JQZXJjZW50
ID0gWyZdKCkgeworICAgICAgICByZXR1cm4gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBj
b250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6OkFsbCk7CisgICAgfTsKKworICAgIGlmIChjb21tYW5k
LmlkKCkgPT0gQ1NTVmFsdWVIbGluZSB8fCBjb21tYW5kLmlkKCkgPT0gQ1NTVmFsdWVWbGluZSkg
eworICAgICAgICBhdXRvIHZhbHVlID0gY29uc3VtZU5leHRMZW5ndGhPclBlcmNlbnQoKTsKKyAg
ICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
IHJldHVybiBjb21tYW5kLmlkKCkgPT0gQ1NTVmFsdWVIbGluZQorICAgICAgICAgICAgPyBDU1NT
aGFwZVNlZ21lbnQ6OmNyZWF0ZUxpbmVUb0hvcml6b250YWwoYWZmaW5pdHksIHZhbHVlLnJlbGVh
c2VOb25OdWxsKCkpCisgICAgICAgICAgICA6IENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlTGluZVRv
VmVydGljYWwoYWZmaW5pdHksIHZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KKworICAg
IGF1dG8gY29uc3VtZU5leHRDb29yZGluYXRlcyA9IFsmXSAoKSAtPiBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHsKKyAgICAgICAgYXV0byB4ID0gY29uc3VtZU5leHRMZW5ndGhPclBlcmNlbnQo
KTsKKyAgICAgICAgaWYgKCF4KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAg
ICAgYXV0byB5ID0gY29uc3VtZU5leHRMZW5ndGhPclBlcmNlbnQoKTsKKyAgICAgICAgaWYgKCF5
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVBy
aW1pdGl2ZVZhbHVlUGFpcih4LnJlbGVhc2VOb25OdWxsKCksIHkucmVsZWFzZU5vbk51bGwoKSwg
UGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSk7CisgICAgfTsKKwor
ICAgIGF1dG8gYXRFbmRPZlNlZ21lbnQgPSBbJl0gKCkgeworICAgICAgICByZXR1cm4gYXJncy5h
dEVuZCgpIHx8IGFyZ3MucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuOworICAgIH07CisKKyAg
ICBhdXRvIHRhcmdldFBvaW50ID0gY29uc3VtZU5leHRDb29yZGluYXRlcygpOworICAgIGlmICgh
dGFyZ2V0UG9pbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3dpdGNoIChjb21t
YW5kLmlkKCkpIHsKKyAgICBjYXNlIENTU1ZhbHVlTW92ZToKKyAgICAgICAgcmV0dXJuIENTU1No
YXBlU2VnbWVudDo6Y3JlYXRlTW92ZVRvKGFmZmluaXR5LCB0YXJnZXRQb2ludC5yZWxlYXNlTm9u
TnVsbCgpKTsKKworICAgIGNhc2UgQ1NTVmFsdWVMaW5lOgorICAgICAgICByZXR1cm4gQ1NTU2hh
cGVTZWdtZW50OjpjcmVhdGVMaW5lVG8oYWZmaW5pdHksIHRhcmdldFBvaW50LnJlbGVhc2VOb25O
dWxsKCkpOworCisgICAgY2FzZSBDU1NWYWx1ZUN1cnZlOiB7CisgICAgICAgIGlmIChhcmdzLnBl
ZWsoKS5pZCgpICE9IENTU1ZhbHVlVmlhKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAgICAgYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICBhdXRv
IHZpYVBvaW50MSA9IGNvbnN1bWVOZXh0Q29vcmRpbmF0ZXMoKTsKKyAgICAgICAgaWYgKCF2aWFQ
b2ludDEpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBpZiAoYXRFbmRP
ZlNlZ21lbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBDU1NTaGFwZVNlZ21lbnQ6OmNyZWF0ZUN1
cnZlVG9RdWFkcmF0aWMoYWZmaW5pdHksIHRhcmdldFBvaW50LnJlbGVhc2VOb25OdWxsKCksIHZp
YVBvaW50MS5yZWxlYXNlTm9uTnVsbCgpKTsKKworICAgICAgICBhdXRvIHZpYVBvaW50MiA9IGNv
bnN1bWVOZXh0Q29vcmRpbmF0ZXMoKTsKKyAgICAgICAgaWYgKCF2aWFQb2ludDIpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gQ1NTU2hhcGVTZWdtZW50Ojpj
cmVhdGVDdXJ2ZVRvQ3ViaWMoYWZmaW5pdHksICB0YXJnZXRQb2ludC5yZWxlYXNlTm9uTnVsbCgp
LCB2aWFQb2ludDEucmVsZWFzZU5vbk51bGwoKSwgdmlhUG9pbnQyLnJlbGVhc2VOb25OdWxsKCkp
OworICAgIH0KKworICAgIGNhc2UgQ1NTVmFsdWVTbW9vdGg6IHsKKyAgICAgICAgaWYgKGFyZ3Mu
cGVlaygpLmlkKCkgIT0gQ1NTVmFsdWVWaWEpCisgICAgICAgICAgICByZXR1cm4gQ1NTU2hhcGVT
ZWdtZW50OjpjcmVhdGVDdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGFmZmluaXR5LCAgdGFyZ2V0UG9p
bnQucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICAgICAgYXJncy5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpOworICAgICAgICBhdXRvIHZpYVBvaW50ID0gY29uc3VtZU5leHRDb29yZGluYXRl
cygpOworICAgICAgICBpZiAoIXZpYVBvaW50KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICAgICAgcmV0dXJuIENTU1NoYXBlU2VnbWVudDo6Y3JlYXRlQ3VydmVUb0N1YmljU21v
b3RoKGFmZmluaXR5LCAgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSwgdmlhUG9pbnQucmVs
ZWFzZU5vbk51bGwoKSk7CisgICAgfQorCisgICAgY2FzZSBDU1NWYWx1ZUFyYzogeworICAgICAg
ICBpZiAoYXJncy5wZWVrKCkuaWQoKSAhPSBDU1NWYWx1ZU9mKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAgICAgYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwor
ICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJ4ID0gY29uc3VtZUxlbmd0aE9yUGVy
Y2VudChhcmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKKyAgICAg
ICAgaWYgKCFyeCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gcnk7CisgICAgICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkg
PT0gSWRlbnRUb2tlbikKKyAgICAgICAgICAgIHJ5ID0gcng7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgcnkgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwg
VmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOworICAgICAgICAgICAgaWYgKCFyeSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8Q1NTVmFsdWVJRD4gc3dlZXA7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVJRD4g
c2l6ZTsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBhbmdsZTsKKworICAgICAgICB3aGlsZSAo
IWF0RW5kT2ZTZWdtZW50KCkpIHsKKyAgICAgICAgICAgIGF1dG8gbmV4dElkZW50ID0gYXJncy5w
ZWVrKCkuaWQoKTsKKyAgICAgICAgICAgIGlmIChpZGVudE1hdGNoZXM8Q1NTVmFsdWVSb3RhdGU+
KG5leHRJZGVudCkgJiYgIWFuZ2xlKSB7CisgICAgICAgICAgICAgICAgYXJncy5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAgICAgICAgICAgYW5nbGUgPSBjb25zdW1l
QW5nbGUoYXJncywgY29udGV4dC5tb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIFVuaXRsZXNz
WmVyb1F1aXJrOjpGb3JiaWQpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlQ3csIENTU1ZhbHVl
Q2N3PihuZXh0SWRlbnQpICYmICFzd2VlcC5oYXNfdmFsdWUoKSkgeworICAgICAgICAgICAgICAg
IHN3ZWVwID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpZGVu
dE1hdGNoZXM8Q1NTVmFsdWVMYXJnZSwgQ1NTVmFsdWVTbWFsbD4obmV4dElkZW50KSAmJiAhc2l6
ZS5oYXNfdmFsdWUoKSkgeworICAgICAgICAgICAgICAgIHNpemUgPSBhcmdzLmNvbnN1bWVJbmNs
dWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIWFuZ2xlKQorICAgICAgICAgICAgYW5nbGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKDAsIENTU1VuaXRUeXBlOjpDU1NfREVHKTsKKworICAgICAgICByZXR1cm4gQ1NTU2hh
cGVTZWdtZW50OjpjcmVhdGVBcmNUbygKKyAgICAgICAgICAgIGFmZmluaXR5LAorICAgICAgICAg
ICAgdGFyZ2V0UG9pbnQucmVsZWFzZU5vbk51bGwoKSwKKyAgICAgICAgICAgIGNyZWF0ZVByaW1p
dGl2ZVZhbHVlUGFpcihyeC5yZWxlYXNlTm9uTnVsbCgpLCByeS5yZWxlYXNlTm9uTnVsbCgpLCBQ
YWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSksCisgICAgICAgICAgICBzd2Vl
cC52YWx1ZV9vcihDU1NWYWx1ZUNjdyksCisgICAgICAgICAgICBzaXplLnZhbHVlX29yKENTU1Zh
bHVlU21hbGwpLAorICAgICAgICAgICAgYW5nbGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK30KKworc3RhdGlj
IFJlZlB0cjxDU1NCYXNpY1NoYXBlU2hhcGU+IGNvbnN1bWVCYXNpY1NoYXBlU2hhcGUoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sK
KyAgICBXaW5kUnVsZSB3aW5kUnVsZSA9IFdpbmRSdWxlOjpOb25aZXJvOworCisgICAgaWYgKGlk
ZW50TWF0Y2hlczxDU1NWYWx1ZUV2ZW5vZGQsIENTU1ZhbHVlTm9uemVybz4oYXJncy5wZWVrKCku
aWQoKSkpCisgICAgICAgIHdpbmRSdWxlID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpLmlkKCkgPT0gQ1NTVmFsdWVFdmVub2RkID8gV2luZFJ1bGU6OkV2ZW5PZGQgOiBXaW5kUnVs
ZTo6Tm9uWmVybzsKKworICAgIGlmIChhcmdzLnBlZWsoKS5pZCgpICE9IENTU1ZhbHVlRnJvbSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0
ZXNwYWNlKCk7CisKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGluaXRpYWxYID0gY29u
c3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6OkFsbCk7
CisgICAgaWYgKCFpbml0aWFsWCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGluaXRpYWxZID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChh
cmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6OkFsbCk7CisgICAgaWYgKCFpbml0aWFsWSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBz
ZWdtZW50cyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKworICAgIGZv
ciAoOzspIHsKKyAgICAgICAgYXV0byBzZWdtZW50ID0gY29uc3VtZVNoYXBlU2VnbWVudChhcmdz
LCBjb250ZXh0KTsKKyAgICAgICAgaWYgKCFzZWdtZW50KQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAgICAgc2VnbWVudHMtPmFwcGVuZChzZWdtZW50LnJlbGVhc2VOb25OdWxs
KCkpOworICAgICAgICBpZiAoYXJncy5hdEVuZCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBzaGFwZSA9IENTU0Jhc2lj
U2hhcGVTaGFwZTo6Y3JlYXRlKAorICAgICAgICBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoCisg
ICAgICAgICAgICBpbml0aWFsWC5yZWxlYXNlTm9uTnVsbCgpLAorICAgICAgICAgICAgaW5pdGlh
bFkucmVsZWFzZU5vbk51bGwoKSwKKyAgICAgICAgICAgIFBhaXI6OklkZW50aWNhbFZhbHVlRW5j
b2Rpbmc6OkRvTm90Q29hbGVzY2UpLAorICAgICAgICBXVEZNb3ZlKHNlZ21lbnRzKSk7CisKKyAg
ICBzaGFwZS0+c2V0V2luZFJ1bGUod2luZFJ1bGUpOworICAgIHJldHVybiBzaGFwZTsKK30KKwog
c3RhdGljIHZvaWQgY29tcGxldGU0U2lkZXMoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzaWRl
WzRdKQogewogICAgIGlmIChzaWRlWzNdKQpAQCAtMjc1Nyw2ICsyOTQ4LDggQEAgc3RhdGljIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUJhc2ljU2hhcGUoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIGMKICAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZUluc2V0KGFy
Z3MsIGNvbnRleHQpOwogICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlUGF0aCkKICAgICAgICAg
c2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZVBhdGgoYXJncyk7CisgICAgZWxzZSBpZiAoaWQgPT0g
Q1NTVmFsdWVTaGFwZSkKKyAgICAgICAgc2hhcGUgPSBjb25zdW1lQmFzaWNTaGFwZVNoYXBlKGFy
Z3MsIGNvbnRleHQpOwogICAgIGlmICghc2hhcGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIHJhbmdlID0gcmFuZ2VDb3B5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0Jhc2ljU2hhcGVTZWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEyZDA3OWVhMTc3YWY0
NmZlNmMyNzgyYjFlZDQxYTFjNjFhY2VkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5jcHAKQEAgLTAsMCArMSwyOTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTm9hbSBSb3NlbnRoYWwgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQmFzaWNTaGFwZVNl
Z21lbnQuaCIKKworI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIlBhdGgu
aCIKKyNpbmNsdWRlICJTVkdQYXRoQnVpbGRlci5oIgorI2luY2x1ZGUgIlNWR1BhdGhQYXJzZXIu
aCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZ0ltcGwuaCIK
KyNpbmNsdWRlICJTVkdQYXRoU291cmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgRGVmaW5pdGlvbj4KK2NsYXNzIEJhc2ljU2hhcGVTZWdtZW50VmFsdWUg
OiBwdWJsaWMgQmFzaWNTaGFwZVNlZ21lbnQgeworcHVibGljOgorICAgIGNvbnN0IHR5cGVuYW1l
IERlZmluaXRpb246OlZhbHVlJiB2YWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
dHlwZSgpID09IERlZmluaXRpb246OkFic1NlZ1R5cGUgfHwgdHlwZSgpID09IERlZmluaXRpb246
OlJlbFNlZ1R5cGUpOworICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICB9CisKKyAgICBib29s
IGVxdWFscyhjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKQorICAgICAgICAgICAgJiYgdmFsdWUo
KSA9PSBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY1NoYXBlU2VnbWVudFZhbHVlPERlZmluaXRpb24+
Jj4ob3RoZXIpLnZhbHVlKCk7CisgICAgfQorCisgICAgc3RhdGljIFJlZjxCYXNpY1NoYXBlU2Vn
bWVudFZhbHVlPiBjcmVhdGUoQmFzaWNTaGFwZVNlZ21lbnQ6OlR5cGUgdHlwZSwgdHlwZW5hbWUg
RGVmaW5pdGlvbjo6VmFsdWUmJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh0eXBlID09
IERlZmluaXRpb246OkFic1NlZ1R5cGUgfHwgdHlwZSA9PSBEZWZpbml0aW9uOjpSZWxTZWdUeXBl
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNTaGFwZVNlZ21lbnRWYWx1ZTxE
ZWZpbml0aW9uPih0eXBlLCBXVEZNb3ZlKHZhbHVlKSkpOworICAgIH0KKworcHJvdGVjdGVkOgor
ICAgIEJhc2ljU2hhcGVTZWdtZW50VmFsdWUoQmFzaWNTaGFwZVNlZ21lbnQ6OlR5cGUgdHlwZSwg
dHlwZW5hbWUgRGVmaW5pdGlvbjo6VmFsdWUmJiB2YWx1ZSkKKyAgICAgICAgOiBCYXNpY1NoYXBl
U2VnbWVudCh0eXBlKQorICAgICAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpIHsgfQorCitw
cml2YXRlOgorICAgIHR5cGVuYW1lIERlZmluaXRpb246OlZhbHVlIG1fdmFsdWU7Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RhdGljIGNvbnN0IHR5cGVuYW1lIFQ6OlZhbHVlJiBleHRy
YWN0VmFsdWUoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQmIHNlZykKK3sKKyAgICBBU1NFUlQoc2Vn
LnR5cGUoKSA9PSBUOjpBYnNTZWdUeXBlIHx8IHNlZy50eXBlKCkgPT0gVDo6UmVsU2VnVHlwZSk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljU2hhcGVTZWdtZW50VmFsdWU8VD4m
PihzZWcpLnZhbHVlKCk7Cit9CisKK2Jvb2wgQmFzaWNTaGFwZVNlZ21lbnQ6OmVxdWFscyhjb25z
dCBCYXNpY1NoYXBlU2VnbWVudCYgb3RoZXIpIGNvbnN0Cit7CisgICAgYXV0byB0eXBlID0gdGhp
cy0+dHlwZSgpOworICAgIGlmICh0eXBlICE9IG90aGVyLnR5cGUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisjZGVmaW5lIENPTVBBUkVfU0hBUEVfU0VHTUVOVF9WQUxVRShUeXBlKSBcCisg
ICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6OkFic1NlZ1R5cGU6IFwKKyAgICBjYXNlIFNoYXBl
U2VnbWVudCMjVHlwZTo6UmVsU2VnVHlwZTogXAorICAgICAgICByZXR1cm4gZXh0cmFjdFZhbHVl
PFNoYXBlU2VnbWVudCMjVHlwZT4oKnRoaXMpID09IGV4dHJhY3RWYWx1ZTxTaGFwZVNlZ21lbnQj
I1R5cGU+KG90aGVyKTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgUGF0aFNlZ0Ns
b3NlUGF0aDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgRk9SX0VBQ0hfU0hBUEVf
U0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoQ09NUEFSRV9TSEFQRV9TRUdNRU5UX1ZBTFVFKQorICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZGVmaW5lIElNUExFTUVOVF9TSEFQRV9T
RUdNRU5UX1ZBTFVFKFRZUEUpIFwKK1JlZjxCYXNpY1NoYXBlU2VnbWVudD4gQmFzaWNTaGFwZVNl
Z21lbnQ6OmNyZWF0ZSMjVFlQRShCYXNpY1NoYXBlU2VnbWVudDo6VHlwZSB0eXBlLCB0eXBlbmFt
ZSBTaGFwZVNlZ21lbnQjI1RZUEU6OlZhbHVlJiYgdmFsdWUpIFwKK3sgXAorICAgIHJldHVybiBC
YXNpY1NoYXBlU2VnbWVudFZhbHVlPFNoYXBlU2VnbWVudCMjVFlQRT46OmNyZWF0ZSh0eXBlLCBX
VEZNb3ZlKHZhbHVlKSk7IFwKK30gXAorY29uc3QgdHlwZW5hbWUgU2hhcGVTZWdtZW50IyNUWVBF
OjpWYWx1ZSYgQmFzaWNTaGFwZVNlZ21lbnQ6OmFzIyNUWVBFKCkgY29uc3QgXAoreyBcCisgICAg
cmV0dXJuIGV4dHJhY3RWYWx1ZTxTaGFwZVNlZ21lbnQjI1RZUEU+KCp0aGlzKTsgXAorfQorCitG
T1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lUSF9WQUxVRShJTVBMRU1FTlRfU0hBUEVfU0VH
TUVOVF9WQUxVRSkKKworQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBDdXJ2
ZVRvQ3ViaWNTaGFwZVNlZ1ZhbHVlJiBmcm9tLCBjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1Zh
bHVlJiB0bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQoreworICAgIHJldHVybiB7
CisgICAgICAgIGJsZW5kKGZyb20ucG9pbnQxLCB0by5wb2ludDEsIGNvbnRleHQpLAorICAgICAg
ICBibGVuZChmcm9tLnBvaW50MiwgdG8ucG9pbnQyLCBjb250ZXh0KSwKKyAgICAgICAgYmxlbmQo
ZnJvbS50YXJnZXRQb2ludCwgdG8udGFyZ2V0UG9pbnQsIGNvbnRleHQpLAorICAgIH07Cit9CisK
K0N1cnZlVG9DdWJpY1Ntb290aFNoYXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb0N1Ymlj
U21vb3RoU2hhcGVTZWdWYWx1ZSYgZnJvbSwgY29uc3QgQ3VydmVUb0N1YmljU21vb3RoU2hhcGVT
ZWdWYWx1ZSYgdG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1
cm4geworICAgICAgICBibGVuZChmcm9tLnBvaW50MiwgdG8ucG9pbnQyLCBjb250ZXh0KSwKKyAg
ICAgICAgYmxlbmQoZnJvbS50YXJnZXRQb2ludCwgdG8udGFyZ2V0UG9pbnQsIGNvbnRleHQpLAor
ICAgIH07Cit9CisKK0N1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEN1
cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVlJiBmcm9tLCBjb25zdCBDdXJ2ZVRvUXVhZHJhdGlj
U2hhcGVTZWdWYWx1ZSYgdG8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYgY29udGV4dCkKK3sKKyAg
ICByZXR1cm4geworICAgICAgICBibGVuZChmcm9tLnBvaW50MSwgdG8ucG9pbnQxLCBjb250ZXh0
KSwKKyAgICAgICAgYmxlbmQoZnJvbS50YXJnZXRQb2ludCwgdG8udGFyZ2V0UG9pbnQsIGNvbnRl
eHQpLAorICAgIH07Cit9CisKK0FyY1RvU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBBcmNUb1No
YXBlU2VnVmFsdWUmIGZyb20sIGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYgdG8sIGNvbnN0IEJs
ZW5kaW5nQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1cm4geworICAgICAgICBibGVuZChm
cm9tLnJhZGl1cywgdG8ucmFkaXVzLCBjb250ZXh0KSwKKyAgICAgICAgYmxlbmQoZnJvbS5hbmds
ZSwgdG8uYW5nbGUsIGNvbnRleHQpLAorICAgICAgICBjb250ZXh0LnByb2dyZXNzIDwgMC41ZiA/
IGZyb20uc3dlZXAgOiB0by5zd2VlcCwKKyAgICAgICAgY29udGV4dC5wcm9ncmVzcyA8IDAuNWYg
PyBmcm9tLmxhcmdlQXJjIDogdG8ubGFyZ2VBcmMsCisgICAgICAgIGJsZW5kKGZyb20udGFyZ2V0
UG9pbnQsIHRvLnRhcmdldFBvaW50LCBjb250ZXh0KQorICAgIH07Cit9CisKK1JlZjxCYXNpY1No
YXBlU2VnbWVudD4gQmFzaWNTaGFwZVNlZ21lbnQ6OmJsZW5kKGNvbnN0IEJhc2ljU2hhcGVTZWdt
ZW50JiBmcm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit7CisgICAg
YXV0byB0eXBlID0gdGhpcy0+dHlwZSgpOworICAgIEFTU0VSVCh0eXBlID09IGZyb20udHlwZSgp
KTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgUGF0aFNlZ0Nsb3NlUGF0aDoKKyAg
ICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50OjpjcmVhdGVDbG9zZVBhdGgoKTsKKworI2Rl
ZmluZSBCTEVORF9TRUdNRU5UX1RZUEUoVHlwZSkgXAorICAgIGNhc2UgU2hhcGVTZWdtZW50IyNU
eXBlOjpBYnNTZWdUeXBlOiBcCisgICAgY2FzZSBTaGFwZVNlZ21lbnQjI1R5cGU6OlJlbFNlZ1R5
cGU6IFwKKyAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVTZWdtZW50VmFsdWU8U2hhcGVTZWdtZW50
IyNUeXBlPjo6Y3JlYXRlKHR5cGUsIFdlYkNvcmU6OmJsZW5kKGV4dHJhY3RWYWx1ZTxTaGFwZVNl
Z21lbnQjI1R5cGU+KGZyb20pLCBleHRyYWN0VmFsdWU8U2hhcGVTZWdtZW50IyNUeXBlPigqdGhp
cyksIGNvbnRleHQpKTsKKworICAgICAgICBGT1JfRUFDSF9TSEFQRV9TRUdNRU5UX1RZUEVfV0lU
SF9WQUxVRShCTEVORF9TRUdNRU5UX1RZUEUpCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBCYXNpY1NoYXBlU2VnbWVudDo6Y3JlYXRl
Q2xvc2VQYXRoKCk7CisgICAgfQorfQorY2xhc3MgU2hhcGVTVkdQYXRoU291cmNlIGZpbmFsIDog
cHVibGljIFNWR1BhdGhTb3VyY2UgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNoYXBlU1ZHUGF0
aFNvdXJjZShjb25zdCBMZW5ndGhQb2ludCYgc3RhcnQsIGNvbnN0IFZlY3RvcjxSZWY8QmFzaWNT
aGFwZVNlZ21lbnQ+PiYgc2VnbWVudHMsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKKyAgICAgICAg
OiBtX3N0YXJ0KHN0YXJ0KQorICAgICAgICAsIG1fc2VnbWVudHMoc2VnbWVudHMpCisgICAgICAg
ICwgbV9zaXplKHNpemUpCisgICAgICAgICwgbV9pdGVtRW5kKHNlZ21lbnRzLnNpemUoKSkKKyAg
ICAgICAgeworCisgICAgICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIGhhc01vcmVEYXRhKCkg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBtX2l0ZW1DdXJyZW50IDwgbV9pdGVt
RW5kOworICAgIH0KKworICAgIGJvb2wgbW92ZVRvTmV4dFRva2VuKCkgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQorCisgICAgU1ZHUGF0aFNlZ1R5cGUgbmV4dENvbW1hbmQoU1ZHUGF0aFNlZ1R5cGUp
IGZpbmFsCisgICAgeworICAgICAgICBhdXRvIHR5cGUgPSBtX3NlZ21lbnRzLmF0KG1faXRlbUN1
cnJlbnQpLT50eXBlKCk7CisgICAgICAgICsrbV9pdGVtQ3VycmVudDsKKyAgICAgICAgcmV0dXJu
IHR5cGU7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gcGFyc2VT
VkdTZWdtZW50VHlwZSgpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gUGF0aFNlZ01vdmVU
b0FiczsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6Ok1vdmVUb1Nl
Z21lbnQ+IHBhcnNlTW92ZVRvU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1f
aXRlbUN1cnJlbnQpCisgICAgICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6TW92ZVRvU2Vn
bWVudCB7IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChtX3N0YXJ0LCBtX3NpemUpIH07CisKKyAg
ICAgICAgcmV0dXJuIFNWR1BhdGhTb3VyY2U6Ok1vdmVUb1NlZ21lbnQgeyBmbG9hdFBvaW50Rm9y
TGVuZ3RoUG9pbnQodmFsdWU8U2hhcGVTZWdtZW50TW92ZVRvPigpLCBtX3NpemUpIH07CisgICAg
fQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9TZWdtZW50PiBwYXJz
ZUxpbmVUb1NlZ21lbnQoKSBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuIFNWR1BhdGhTb3Vy
Y2U6OkxpbmVUb1NlZ21lbnQgeyBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWU8U2hhcGVT
ZWdtZW50TGluZVRvPigpLCBtX3NpemUpIH07CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxT
VkdQYXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gcGFyc2VMaW5lVG9Ib3Jpem9u
dGFsU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6
TGluZVRvSG9yaXpvbnRhbFNlZ21lbnQgeyBmbG9hdFZhbHVlRm9yTGVuZ3RoKHZhbHVlPFNoYXBl
U2VnbWVudExpbmVUb0hvcml6b250YWw+KCksIG1fc2l6ZS53aWR0aCgpKSB9OworICAgIH0KKwor
ICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvVmVydGljYWxTZWdtZW50PiBw
YXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudCgpIGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4g
U1ZHUGF0aFNvdXJjZTo6TGluZVRvVmVydGljYWxTZWdtZW50IHsgZmxvYXRWYWx1ZUZvckxlbmd0
aCh2YWx1ZTxTaGFwZVNlZ21lbnRMaW5lVG9WZXJ0aWNhbD4oKSwgbV9zaXplLmhlaWdodCgpKSB9
OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1Ymlj
U2VnbWVudD4gcGFyc2VDdXJ2ZVRvQ3ViaWNTZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAg
IGNvbnN0IGF1dG8mIHZhbHVlID0gdGhpcy0+dmFsdWU8U2hhcGVTZWdtZW50Q3VydmVUb0N1Ymlj
PigpOworICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU2VnbWVudCB7
ICAgICAgICAKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS5wb2lu
dDEsIG1fc2l6ZSksCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUu
cG9pbnQyLCBtX3NpemUpLAorICAgICAgICAgICAgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHZh
bHVlLnRhcmdldFBvaW50LCBtX3NpemUpCisgICAgICAgIH07CisgICAgfQorICAgIHN0ZDo6b3B0
aW9uYWw8U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudD4gcGFyc2VDdXJ2
ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8m
IHZhbHVlID0gdGhpcy0+dmFsdWU8U2hhcGVTZWdtZW50Q3VydmVUb0N1YmljU21vb3RoPigpOwor
ICAgICAgICByZXR1cm4gU1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudCB7
ICAgICAgICAKKyAgICAgICAgICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS5wb2lu
dDIsIG1fc2l6ZSksCisgICAgICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUu
dGFyZ2V0UG9pbnQsIG1fc2l6ZSkKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlv
bmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTZWdtZW50PiBwYXJzZUN1cnZlVG9R
dWFkcmF0aWNTZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8mIHZhbHVl
ID0gdGhpcy0+dmFsdWU8U2hhcGVTZWdtZW50Q3VydmVUb1F1YWRyYXRpYz4oKTsKKyAgICAgICAg
cmV0dXJuIFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTZWdtZW50IHsKKyAgICAgICAg
ICAgIGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2YWx1ZS5wb2ludDEsIG1fc2l6ZSksCisgICAg
ICAgICAgICBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUudGFyZ2V0UG9pbnQsIG1fc2l6
ZSkKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6
OkN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50PiBwYXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9v
dGhTZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdQYXRoU291cmNlOjpD
dXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCB7IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh2
YWx1ZTxTaGFwZVNlZ21lbnRDdXJ2ZVRvUXVhZHJhdGljU21vb3RoPigpLCBtX3NpemUpIH07Cisg
ICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTVkdQYXRoU291cmNlOjpBcmNUb1NlZ21lbnQ+IHBh
cnNlQXJjVG9TZWdtZW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8mIHZhbHVl
ID0gdGhpcy0+dmFsdWU8U2hhcGVTZWdtZW50QXJjVG8+KCk7CisgICAgICAgIGF1dG8gcmFkaXVz
ID0gZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZSh2YWx1ZS5yYWRpdXMsIG1fc2l6ZSk7CisgICAgICAg
IHJldHVybiBTVkdQYXRoU291cmNlOjpBcmNUb1NlZ21lbnQgeworICAgICAgICAgICAgLnJ4ID0g
cmFkaXVzLndpZHRoKCksCisgICAgICAgICAgICAucnkgPSByYWRpdXMuaGVpZ2h0KCksCisgICAg
ICAgICAgICAuYW5nbGUgPSB2YWx1ZS5hbmdsZSwKKyAgICAgICAgICAgIC5sYXJnZUFyYyA9IHZh
bHVlLmxhcmdlQXJjLAorICAgICAgICAgICAgLnN3ZWVwID0gdmFsdWUuc3dlZXAsCisgICAgICAg
ICAgICAudGFyZ2V0UG9pbnQgPSBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodmFsdWUudGFyZ2V0
UG9pbnQsIG1fc2l6ZSkKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgIGNvbnN0IHR5cGVuYW1lIFQ6OlZhbHVlJiB2YWx1ZSgpCisgICAgeworICAgICAg
ICBBU1NFUlQobV9pdGVtQ3VycmVudCA8PSBtX3NlZ21lbnRzLnNpemUoKSk7CisgICAgICAgIHJl
dHVybiBleHRyYWN0VmFsdWU8VD4obV9zZWdtZW50cy5hdChtX2l0ZW1DdXJyZW50IC0gMSkuZ2V0
KCkpOworICAgIH0KKworICAgIGNvbnN0IExlbmd0aFBvaW50JiBtX3N0YXJ0OworICAgIGNvbnN0
IFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYgbV9zZWdtZW50czsKKyAgICBGbG9hdFNp
emUgbV9zaXplOworICAgIHNpemVfdCBtX2l0ZW1FbmQ7CisgICAgc2l6ZV90IG1faXRlbUN1cnJl
bnQgPSAwOworfTsKKworUGF0aCBCYXNpY1NoYXBlU2VnbWVudDo6dG9QYXRoKGNvbnN0IExlbmd0
aFBvaW50JiBzdGFydCwgY29uc3QgVmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+JiBzZWdt
ZW50cywgY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIFNoYXBlU1ZHUGF0aFNvdXJjZSBz
b3VyY2Uoc3RhcnQsIHNlZ21lbnRzLCBzaXplKTsKKyAgICBQYXRoIHBhdGg7CisgICAgU1ZHUGF0
aEJ1aWxkZXIgYnVpbGRlcihwYXRoKTsKKyAgICBTVkdQYXRoUGFyc2VyOjpwYXJzZShzb3VyY2Us
IGJ1aWxkZXIpOworICAgIHJldHVybiBwYXRoOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlU2VnbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1ZDE4
Y2U4NTA2Y2U2MmRkMzI2NTc1NGRlMDc0NmFkMGJjMTk0NmYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZVNlZ21lbnQuaApAQCAtMCww
ICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOb2FtIFJvc2VudGhhbCBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTGVuZ3RoLmgi
CisjaW5jbHVkZSAiTGVuZ3RoUG9pbnQuaCIKKyNpbmNsdWRlICJMZW5ndGhTaXplLmgiCisjaW5j
bHVkZSAiU1ZHUGF0aFNlZy5oIgorI2luY2x1ZGUgIlNWR1BhdGhTb3VyY2UuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQmxlbmRpbmdDb250ZXh0OworY2xhc3MgRmxvYXRSZWN0
OworY2xhc3MgUGF0aDsKKworc3RydWN0IEN1cnZlVG9DdWJpY1NoYXBlU2VnVmFsdWUgeworICAg
IExlbmd0aFBvaW50IHBvaW50MTsKKyAgICBMZW5ndGhQb2ludCBwb2ludDI7CisgICAgTGVuZ3Ro
UG9pbnQgdGFyZ2V0UG9pbnQ7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1cnZlVG9DdWJp
Y1NoYXBlU2VnVmFsdWUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHBvaW50
MSA9PSBvdGhlci5wb2ludDEgJiYgcG9pbnQyID09IG90aGVyLnBvaW50MiAmJiB0YXJnZXRQb2lu
dCA9PSBvdGhlci50YXJnZXRQb2ludDsKKyAgICB9Cit9OworCitzdHJ1Y3QgQ3VydmVUb0N1Ymlj
U21vb3RoU2hhcGVTZWdWYWx1ZSB7CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQyOworICAgIExlbmd0
aFBvaW50IHRhcmdldFBvaW50OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXJ2ZVRvQ3Vi
aWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBwb2ludDIgPT0gb3RoZXIucG9pbnQyICYmIHRhcmdldFBvaW50ID09IG90aGVyLnRhcmdldFBv
aW50OworICAgIH0KK307CisKK3N0cnVjdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSB7
CisgICAgTGVuZ3RoUG9pbnQgcG9pbnQxOworICAgIExlbmd0aFBvaW50IHRhcmdldFBvaW50Owor
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1cnZlVG9RdWFkcmF0aWNTaGFwZVNlZ1ZhbHVl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBwb2ludDEgPT0gb3RoZXIucG9p
bnQxICYmIHRhcmdldFBvaW50ID09IG90aGVyLnRhcmdldFBvaW50OworICAgIH0KK307CisKKwor
c3RydWN0IEFyY1RvU2hhcGVTZWdWYWx1ZSB7CisgICAgTGVuZ3RoU2l6ZSByYWRpdXM7CisgICAg
ZmxvYXQgYW5nbGUgPSAwOworICAgIGJvb2wgc3dlZXAgPSBmYWxzZTsKKyAgICBib29sIGxhcmdl
QXJjID0gZmFsc2U7CisgICAgTGVuZ3RoUG9pbnQgdGFyZ2V0UG9pbnQ7CisKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQXJjVG9TaGFwZVNlZ1ZhbHVlJiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiByYWRpdXMgPT0gb3RoZXIucmFkaXVzICYmIGFuZ2xlID09IG90aGVyLmFu
Z2xlICYmIHN3ZWVwID09IG90aGVyLnN3ZWVwICYmIGxhcmdlQXJjID09IG90aGVyLmxhcmdlQXJj
ICYmIHRhcmdldFBvaW50ID09IG90aGVyLnRhcmdldFBvaW50OworICAgIH0KK307CisKKworQ3Vy
dmVUb0N1YmljU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBDdXJ2ZVRvQ3ViaWNTaGFwZVNlZ1Zh
bHVlJiwgY29uc3QgQ3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEJsZW5kaW5nQ29u
dGV4dCYpOworQ3VydmVUb0N1YmljU21vb3RoU2hhcGVTZWdWYWx1ZSBibGVuZChjb25zdCBDdXJ2
ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlJiwgY29uc3QgQ3VydmVUb0N1YmljU21vb3RoU2hh
cGVTZWdWYWx1ZSYsIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYpOworQ3VydmVUb1F1YWRyYXRpY1No
YXBlU2VnVmFsdWUgYmxlbmQoY29uc3QgQ3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUmLCBj
b25zdCBDdXJ2ZVRvUXVhZHJhdGljU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEJsZW5kaW5nQ29udGV4
dCYpOworQXJjVG9TaGFwZVNlZ1ZhbHVlIGJsZW5kKGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYs
IGNvbnN0IEFyY1RvU2hhcGVTZWdWYWx1ZSYsIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYpOworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIFNWR1BhdGhTZWdUeXBlIEFic1R5cGUsIFNWR1Bh
dGhTZWdUeXBlIFJlbFR5cGU+CitzdHJ1Y3QgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb24gewor
ICAgIHR5cGVkZWYgVmFsdWVUeXBlIFZhbHVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBB
YnNTZWdUeXBlID0gQWJzVHlwZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gUmVsU2VnVHlw
ZSA9IFJlbFR5cGU7Cit9OworCitzdHJ1Y3QgU2hhcGVTZWdtZW50TW92ZVRvIDogcHVibGljIFNo
YXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPExlbmd0aFBvaW50LCBQYXRoU2VnTW92ZVRvQWJzLCBQ
YXRoU2VnTW92ZVRvUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50TGluZVRvIDogcHVibGlj
IFNoYXBlU2VnbWVudFR5cGVEZWZpbml0aW9uPExlbmd0aFBvaW50LCBQYXRoU2VnTGluZVRvQWJz
LCBQYXRoU2VnTGluZVRvUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVTZWdtZW50TGluZVRvSG9yaXpv
bnRhbCA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVmaW5pdGlvbjxMZW5ndGgsIFBhdGhTZWdM
aW5lVG9Ib3Jpem9udGFsQWJzLCBQYXRoU2VnTGluZVRvSG9yaXpvbnRhbFJlbD4geyB9Oworc3Ry
dWN0IFNoYXBlU2VnbWVudExpbmVUb1ZlcnRpY2FsIDogcHVibGljIFNoYXBlU2VnbWVudFR5cGVE
ZWZpbml0aW9uPExlbmd0aCwgUGF0aFNlZ0xpbmVUb1ZlcnRpY2FsQWJzLCBQYXRoU2VnTGluZVRv
VmVydGljYWxSZWw+IHsgfTsKK3N0cnVjdCBTaGFwZVNlZ21lbnRDdXJ2ZVRvQ3ViaWMgOiBwdWJs
aWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248Q3VydmVUb0N1YmljU2hhcGVTZWdWYWx1ZSwg
UGF0aFNlZ0N1cnZlVG9DdWJpY0FicywgUGF0aFNlZ0N1cnZlVG9DdWJpY1JlbD4geyB9Oworc3Ry
dWN0IFNoYXBlU2VnbWVudEN1cnZlVG9RdWFkcmF0aWMgOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlw
ZURlZmluaXRpb248Q3VydmVUb1F1YWRyYXRpY1NoYXBlU2VnVmFsdWUsIFBhdGhTZWdDdXJ2ZVRv
UXVhZHJhdGljQWJzLCBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY1JlbD4geyB9Oworc3RydWN0IFNo
YXBlU2VnbWVudEN1cnZlVG9DdWJpY1Ntb290aCA6IHB1YmxpYyBTaGFwZVNlZ21lbnRUeXBlRGVm
aW5pdGlvbjxDdXJ2ZVRvQ3ViaWNTbW9vdGhTaGFwZVNlZ1ZhbHVlLCBQYXRoU2VnQ3VydmVUb0N1
YmljU21vb3RoQWJzLCBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3RoUmVsPiB7IH07CitzdHJ1Y3Qg
U2hhcGVTZWdtZW50Q3VydmVUb1F1YWRyYXRpY1Ntb290aCA6IHB1YmxpYyBTaGFwZVNlZ21lbnRU
eXBlRGVmaW5pdGlvbjxMZW5ndGhQb2ludCwgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhB
YnMsIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21vb3RoUmVsPiB7IH07CitzdHJ1Y3QgU2hhcGVT
ZWdtZW50QXJjVG8gOiBwdWJsaWMgU2hhcGVTZWdtZW50VHlwZURlZmluaXRpb248QXJjVG9TaGFw
ZVNlZ1ZhbHVlLCBQYXRoU2VnQXJjQWJzLCBQYXRoU2VnQXJjUmVsPiB7IH07CisKKyNkZWZpbmUg
Rk9SX0VBQ0hfU0hBUEVfU0VHTUVOVF9UWVBFX1dJVEhfVkFMVUUoTWFjcm8pIFwKKyAgICBNYWNy
byhNb3ZlVG8pIFwKKyAgICBNYWNybyhMaW5lVG8pIFwKKyAgICBNYWNybyhMaW5lVG9Ib3Jpem9u
dGFsKSBcCisgICAgTWFjcm8oTGluZVRvVmVydGljYWwpIFwKKyAgICBNYWNybyhDdXJ2ZVRvQ3Vi
aWMpIFwKKyAgICBNYWNybyhDdXJ2ZVRvUXVhZHJhdGljKSBcCisgICAgTWFjcm8oQ3VydmVUb0N1
YmljU21vb3RoKSBcCisgICAgTWFjcm8oQ3VydmVUb1F1YWRyYXRpY1Ntb290aCkgXAorICAgIE1h
Y3JvKEFyY1RvKQorCitjbGFzcyBCYXNpY1NoYXBlU2VnbWVudCA6IHB1YmxpYyBSZWZDb3VudGVk
PEJhc2ljU2hhcGVTZWdtZW50PiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBTVkdQYXRoU2VnVHlw
ZSBUeXBlOworICAgIH5CYXNpY1NoYXBlU2VnbWVudCgpID0gZGVmYXVsdDsKKworICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgUmVmPEJhc2ljU2hhcGVTZWdt
ZW50PiBibGVuZChjb25zdCBCYXNpY1NoYXBlU2VnbWVudCYgZnJvbSwgY29uc3QgQmxlbmRpbmdD
b250ZXh0JikgY29uc3Q7CisgICAgYm9vbCBlcXVhbHMoY29uc3QgQmFzaWNTaGFwZVNlZ21lbnQm
KSBjb25zdDsKKworICAgIHN0YXRpYyBQYXRoIHRvUGF0aChjb25zdCBMZW5ndGhQb2ludCYgc3Rh
cnQsIGNvbnN0IFZlY3RvcjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYsIGNvbnN0IEZsb2F0U2l6
ZSYpOworCisjZGVmaW5lIERFRklORV9TSEFQRV9TRUdNRU5UX1RZUEUoVCkgXAorICAgIHN0YXRp
YyBSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+IGNyZWF0ZSMjVChUeXBlLCB0eXBlbmFtZSBTaGFwZVNl
Z21lbnQjI1Q6OlZhbHVlJiYpOyBcCisgICAgY29uc3QgdHlwZW5hbWUgU2hhcGVTZWdtZW50IyNU
OjpWYWx1ZSYgYXMjI1QoKSBjb25zdDsKKworICAgIEZPUl9FQUNIX1NIQVBFX1NFR01FTlRfVFlQ
RV9XSVRIX1ZBTFVFKERFRklORV9TSEFQRV9TRUdNRU5UX1RZUEUpCisKKyAgICBzdGF0aWMgUmVm
PEJhc2ljU2hhcGVTZWdtZW50PiBjcmVhdGVDbG9zZVBhdGgoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNTaGFwZVNlZ21lbnQoUGF0aFNlZ0Nsb3NlUGF0aCkpOwor
ICAgIH0KKworcHJvdGVjdGVkOgorICAgIEJhc2ljU2hhcGVTZWdtZW50KFR5cGUgdCkKKyAgICAg
ICAgOiBtX3R5cGUodCkgeyB9CisKK3ByaXZhdGU6CisgICAgVHlwZSBtX3R5cGU7Cit9OworCisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmlu
ZGV4IDA4NmE2ZjZhNjNhMjVlNTAyM2FlOTViZmE4NGY0ZmE3ZDRmZmMyNjIuLjczZWU0NjkwYTk2
YjhmMWVjOTMzZjZkM2FkMzYwMDk3NDNjMjIxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVk
ZSAiQW5pbWF0aW9uVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQmFzaWNTaGFwZUZ1bmN0aW9ucy5o
IgorI2luY2x1ZGUgIkJhc2ljU2hhcGVTZWdtZW50LmgiCiAjaW5jbHVkZSAiQ2FsY3VsYXRpb25W
YWx1ZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJl
Y3QuaCIKQEAgLTEyMSw2ICsxMjIsNDQgQEAgc3RydWN0IFRyYW5zZm9ybWVkQnl0ZVN0cmVhbVBh
dGhQb2xpY3kgOiBUaW55TFJVQ2FjaGVQb2xpY3k8U1ZHUGF0aFRyYW5zZm9ybWVkQnkKICAgICBz
dGF0aWMgUGF0aCBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBTVkdQYXRoVHJhbnNmb3JtZWRCeXRl
U3RyZWFtJiBzdHJlYW0pIHsgcmV0dXJuIHN0cmVhbS5wYXRoKCk7IH0KIH07CiAKK3N0cnVjdCBT
aGFwZVNlZ21lbnRzV2l0aEJveCB7CisgICAgTGVuZ3RoUG9pbnQgc3RhcnQ7CisgICAgVmVjdG9y
PFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+IHNlZ21lbnRzOworICAgIEZsb2F0UmVjdCBib3g7CisK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcGVTZWdtZW50c1dpdGhCb3gmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKGJveCAhPSBvdGhlci5ib3ggfHwgc2VnbWVudHMuc2l6
ZSgpID09IG90aGVyLnNlZ21lbnRzLnNpemUoKSB8fCBzdGFydCAhPSBvdGhlci5zdGFydCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNlZ21lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoIXNlZ21lbnRzLmF0KGkp
LT5lcXVhbHMob3RoZXIuc2VnbWVudHMuYXQoaSkuZ2V0KCkpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFwZVNlZ21lbnRzV2l0aEJveCYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorfTsK
Kworc3RydWN0IFNoYXBlU2VnbWVudHNQYXRoUG9saWN5IDogVGlueUxSVUNhY2hlUG9saWN5PFNo
YXBlU2VnbWVudHNXaXRoQm94LCBQYXRoPiB7CisgICAgc3RhdGljIGJvb2wgaXNLZXlOdWxsKGNv
bnN0IFNoYXBlU2VnbWVudHNXaXRoQm94JiBzZWdtZW50c1dpdGhCb3gpCisgICAgeworICAgICAg
ICByZXR1cm4gc2VnbWVudHNXaXRoQm94LnNlZ21lbnRzLmlzRW1wdHkoKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgUGF0aCBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBTaGFwZVNlZ21lbnRzV2l0aEJv
eCYgc2VnbWVudHNXaXRoQm94KQorICAgIHsKKyAgICAgICAgYXV0byBwYXRoID0gQmFzaWNTaGFw
ZVNlZ21lbnQ6OnRvUGF0aChzZWdtZW50c1dpdGhCb3guc3RhcnQsIHNlZ21lbnRzV2l0aEJveC5z
ZWdtZW50cywgc2VnbWVudHNXaXRoQm94LmJveC5zaXplKCkpOworICAgICAgICBwYXRoLnRyYW5z
bGF0ZSh0b0Zsb2F0U2l6ZShzZWdtZW50c1dpdGhCb3guYm94LmxvY2F0aW9uKCkpKTsKKyAgICAg
ICAgcmV0dXJuIHBhdGg7CisgICAgfQorfTsKKwogc3RhdGljIGNvbnN0IFBhdGgmIGNhY2hlZEVs
bGlwc2VQYXRoKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VGlueUxSVUNhY2hlPEZsb2F0UmVjdCwgUGF0aCwgNCwgRWxsaXBzZVBhdGhQb2xpY3k+
PiBjYWNoZTsKQEAgLTE0NSw2ICsxODQsMTIgQEAgc3RhdGljIGNvbnN0IFBhdGgmIGNhY2hlZFRy
YW5zZm9ybWVkQnl0ZVN0cmVhbVBhdGgoY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0mIHN0cmUKICAg
ICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KFNWR1BhdGhUcmFuc2Zvcm1lZEJ5dGVTdHJlYW0geyBz
dHJlYW0sIHpvb20sIG9mZnNldCB9KTsKIH0KIAorc3RhdGljIGNvbnN0IFBhdGgmIGNhY2hlZFNo
YXBlU2VnbWVudHNQYXRoKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBjb25zdCBWZWN0b3I8UmVm
PEJhc2ljU2hhcGVTZWdtZW50Pj4mIHNlZ21lbnRzLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlMUlVDYWNoZTxTaGFwZVNlZ21lbnRzV2l0
aEJveCwgUGF0aCwgNCwgU2hhcGVTZWdtZW50c1BhdGhQb2xpY3k+PiBjYWNoZTsKKyAgICByZXR1
cm4gY2FjaGUuZ2V0KCkuZ2V0KFNoYXBlU2VnbWVudHNXaXRoQm94IHsgZnJvbSwgc2VnbWVudHMs
IHJlY3QgfSk7Cit9CisKIGJvb2wgQmFzaWNTaGFwZUNpcmNsZTo6b3BlcmF0b3I9PShjb25zdCBC
YXNpY1NoYXBlJiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUo
KSkKQEAgLTQ2Myw2ICs1MDgsNzggQEAgdm9pZCBCYXNpY1NoYXBlSW5zZXQ6OmR1bXAoVGV4dFN0
cmVhbSYgdHMpIGNvbnN0CiAgICAgdHMuZHVtcFByb3BlcnR5KCJib3R0b20tbGVmdC1yYWRpdXMi
LCBib3R0b21MZWZ0UmFkaXVzKCkpOwogfQogCisKK0Jhc2ljU2hhcGVTaGFwZTo6QmFzaWNTaGFw
ZVNoYXBlKGNvbnN0IExlbmd0aFBvaW50JiBmcm9tLCBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdt
ZW50Pj4mJiBzZWdtZW50cykKKyAgICA6IG1fc2VnbWVudHMobWFrZVVuaXF1ZTxWZWN0b3I8UmVm
PEJhc2ljU2hhcGVTZWdtZW50Pj4+KFdURk1vdmUoc2VnbWVudHMpKSkKKyAgICAsIG1fZnJvbShm
cm9tKQoreworfQorCitjb25zdCBQYXRoJiBCYXNpY1NoYXBlU2hhcGU6OnBhdGgoY29uc3QgRmxv
YXRSZWN0JiBib3VuZGluZ0JveCkKK3sKKyAgICByZXR1cm4gY2FjaGVkU2hhcGVTZWdtZW50c1Bh
dGgobV9mcm9tLCAqbV9zZWdtZW50cywgYm91bmRpbmdCb3gpOworfQorCitib29sIEJhc2ljU2hh
cGVTaGFwZTo6b3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJiBvdGhlcikgY29uc3QKK3sKKyAg
ICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgY29uc3QgQmFzaWNTaGFwZVNoYXBlJiBvdGhlclNoYXBlID0gZG93bmNhc3Q8QmFzaWNTaGFw
ZVNoYXBlPihvdGhlcik7CisgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOworICAgIGlmICh3
aW5kUnVsZSgpICE9IG90aGVyU2hhcGUud2luZFJ1bGUoKSB8fCBzaXplID09IG90aGVyU2hhcGUu
c2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoIWF0KGkpLmVxdWFscyhvdGhlclNoYXBlLmF0
KGkpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBCYXNpY1NoYXBlU2hhcGU6OmNhbkJsZW5kKGNvbnN0IEJhc2ljU2hhcGUm
IG90aGVyKSBjb25zdAoreworICAgIGlmICh0eXBlKCkgIT0gb3RoZXIudHlwZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7CisgICAgYXV0
byYgb3RoZXJTaGFwZSA9IGRvd25jYXN0PEJhc2ljU2hhcGVTaGFwZT4ob3RoZXIpOworICAgIGlm
ICh3aW5kUnVsZSgpICE9IG90aGVyU2hhcGUud2luZFJ1bGUoKSB8fCBzaXplICE9IG90aGVyU2hh
cGUuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoYXQoaSkudHlwZSgpICE9IG90aGVyU2hh
cGUuYXQoaSkudHlwZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCitSZWY8QmFzaWNTaGFwZT4gQmFzaWNTaGFwZVNoYXBlOjpibGVu
ZChjb25zdCBCYXNpY1NoYXBlJiBmcm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQp
IGNvbnN0Cit7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBmcm9tLnR5cGUoKSk7CisgICAgYXV0byBz
aXplID0gdGhpcy0+c2l6ZSgpOworICAgIGF1dG8mIGZyb21TaGFwZSA9IGRvd25jYXN0PEJhc2lj
U2hhcGVTaGFwZT4oZnJvbSk7CisgICAgQVNTRVJUKHNpemUgPT0gZnJvbVNoYXBlLnNpemUoKSk7
CisKKyAgICBWZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4gcmVzdWx0OworICAgIHJlc3Vs
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoYXQoaSkuYmxlbmQoZnJvbVNo
YXBlLmF0KGkpLCBjb250ZXh0KSk7CisKKyAgICBhdXRvIG5ld1NoYXBlID0gQmFzaWNTaGFwZVNo
YXBlOjpjcmVhdGUoV2ViQ29yZTo6YmxlbmQoZnJvbVNoYXBlLmZyb20oKSwgbV9mcm9tLCBjb250
ZXh0KSwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICBuZXdTaGFwZS0+c2V0V2luZFJ1bGUod2luZFJ1
bGUoKSk7CisgICAgcmV0dXJuIG5ld1NoYXBlOworfQorCit2b2lkIEJhc2ljU2hhcGVTaGFwZTo6
ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoIndpbmQt
cnVsZSIsIHdpbmRSdWxlKCkpOworICAgIC8vIEZJWE1FOiBwcmludCB0aGUgYnl0ZSBzdHJlYW0/
Cit9CisKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBCYXNp
Y1NoYXBlUmFkaXVzOjpUeXBlIHJhZGl1c1R5cGUpCiB7CiAgICAgc3dpdGNoIChyYWRpdXNUeXBl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCmluZGV4
IDliZjAzNzM0NzZiNTNlNWM3YTRhOWJjNjIzOWU0NWVjNGFkNTM0ZTQuLjMxZThmM2RmNWRjYjE2
MmU4MjUzNzM0ZDRiNWNjZWI5MGNlYzkxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9CYXNpY1NoYXBlcy5oCkBAIC0zMCw2ICszMCw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIkxlbmd0aFBvaW50LmgiCiAjaW5jbHVkZSAi
TGVuZ3RoU2l6ZS5oIgogI2luY2x1ZGUgIldpbmRSdWxlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KQEAgLTQ3LDYgKzQ4LDcgQEAgc3RydWN0IEJsZW5kaW5nQ29udGV4dDsKIGNsYXNz
IEZsb2F0UmVjdDsKIGNsYXNzIFBhdGg7CiBjbGFzcyBSZW5kZXJCb3g7CitjbGFzcyBCYXNpY1No
YXBlU2VnbWVudDsKIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFtOwogCiBjbGFzcyBCYXNpY1NoYXBl
IDogcHVibGljIFJlZkNvdW50ZWQ8QmFzaWNTaGFwZT4gewpAQCAtNTgsNyArNjAsOCBAQCBwdWJs
aWM6CiAgICAgICAgIFBhdGgsCiAgICAgICAgIENpcmNsZSwKICAgICAgICAgRWxsaXBzZSwKLSAg
ICAgICAgSW5zZXQKKyAgICAgICAgSW5zZXQsCisgICAgICAgIFNoYXBlCiAgICAgfTsKIAogICAg
IHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwpAQCAtMzQzLDYgKzM0Niw0MSBAQCBwcml2
YXRlOgogICAgIExlbmd0aFNpemUgbV9ib3R0b21MZWZ0UmFkaXVzOwogfTsKIAorY2xhc3MgQmFz
aWNTaGFwZVNoYXBlIDogcHVibGljIEJhc2ljU2hhcGUgeworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8QmFzaWNTaGFwZVNoYXBlPiBjcmVhdGUoY29uc3QgTGVuZ3RoUG9pbnQmIGZyb20sIFZlY3Rv
cjxSZWY8QmFzaWNTaGFwZVNlZ21lbnQ+PiYmIHNlZ21lbnRzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQmFzaWNTaGFwZVNoYXBlKGZyb20sIFdURk1vdmUoc2VnbWVudHMp
KSk7CisgICAgfQorCisgICAgdm9pZCBzZXRXaW5kUnVsZShXaW5kUnVsZSB3aW5kUnVsZSkgeyBt
X3dpbmRSdWxlID0gd2luZFJ1bGU7IH0KKyAgICBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0KKworICAgIGNvbnN0IExlbmd0aFBvaW50JiBm
cm9tKCkgY29uc3QgeyByZXR1cm4gbV9mcm9tOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VnbWVudHMtPnNpemUoKTsgfQorICAgIGNvbnN0IEJhc2ljU2hhcGVTZWdt
ZW50JiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy0+YXQoaSkuZ2V0KCk7
IH0KKworcHJpdmF0ZToKKyAgICBCYXNpY1NoYXBlU2hhcGUoY29uc3QgTGVuZ3RoUG9pbnQmLCBW
ZWN0b3I8UmVmPEJhc2ljU2hhcGVTZWdtZW50Pj4mJik7CisKKyAgICBUeXBlIHR5cGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBUeXBlOjpTaGFwZTsgfQorCisKKyAgICBjb25zdCBQYXRoJiBw
YXRoKGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworCisgICAgYm9vbCBjYW5CbGVuZChjb25z
dCBCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEJhc2ljU2hhcGU+IGJsZW5k
KGNvbnN0IEJhc2ljU2hhcGUmIGZyb20sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYpIGNvbnN0IG92
ZXJyaWRlOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJhc2ljU2hhcGUmKSBjb25zdCBv
dmVycmlkZTsKKworICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJikgY29uc3QgZmluYWw7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlZjxCYXNpY1NoYXBlU2VnbWVudD4+PiBtX3NlZ21l
bnRzOworICAgIFdpbmRSdWxlIG1fd2luZFJ1bGUgeyBXaW5kUnVsZTo6Tm9uWmVybyB9OworICAg
IExlbmd0aFBvaW50IG1fZnJvbTsKK307CisKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBjb25zdCBCYXNpY1NoYXBlUmFkaXVzJik7CiBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQmFzaWNTaGFwZUNlbnRlckNv
b3JkaW5hdGUmKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBCYXNpY1NoYXBlJik7CkBAIC0zNTksMyArMzk3LDQgQEAgU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CQVNJQ19TSEFQRShCYXNpY1NoYXBlRWxsaXBzZSwgQmFzaWNTaGFwZTo6VHlwZTo6
RWxsaXBzZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkFTSUNfU0hBUEUoQmFzaWNTaGFwZVBv
bHlnb24sIEJhc2ljU2hhcGU6OlR5cGU6OlBvbHlnb24pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVQYXRoLCBCYXNpY1NoYXBlOjpUeXBlOjpQYXRoKQogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQRShCYXNpY1NoYXBlSW5zZXQsIEJhc2ljU2hh
cGU6OlR5cGU6Okluc2V0KQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CQVNJQ19TSEFQRShCYXNp
Y1NoYXBlU2hhcGUsIEJhc2ljU2hhcGU6OlR5cGU6OlNoYXBlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQzNDUzNDhmOWQ5
ZmMyMTIzZDE5NWNhM2E5YzkyYjM1MTRlMzI4NGUuLjRmNjYxMDMwZDJkNDFhYWYxYWI5NGI5M2Mx
NDIxY2MzZjI3MmQxNDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wNC0xOSAgTm9hbSBS
b3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIEFkZCBz
dXBwb3J0IGZvciBzaGFwZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzgzNzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwOTE5NDc2PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVj
dGF0aW9uczogdW5za2lwIENTUyBzaGFwZSgpIHRlc3RzCisKIDIwMjItMDQtMTggIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBVbnNr
aXAgYXBpL3ZhbGlkYXRpb24vY3JlYXRlU2FtcGxlci5odG1sIPCfjokKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCmluZGV4IDY0ZWE2NTdlNmUwNDJhYzNkMTAxOGM4ZGQ4ZDhmYzAyMjVmZWJh
MDcuLmFkZjY0NWUyMzkyZDVhOTc5N2YyZjdjNjRmOWRiMGYzMjRmMDc2YzMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTA0LTE5ICBOb2FtIFJv
c2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbQ1NTIFNoYXBlc10gQWRkIHN1
cHBvcnQgZm9yIHNoYXBlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzODM3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTA5MTk0NzY+CisKKyAg
ICAgICAgQW1lbmRlZCB0ZXN0cyB0byBzdXBwb3J0IENTUyBzaGFwZSgpCisKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hh
cGUtMDAzLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy5odG1sOgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1z
aGFwZS0wMDQtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgICAgICAgICBOZWVkZWQgdG8gY2hhbmdl
IHRoZSB0ZXN0IGEgYml0IGJlY2F1c2Ugb2Ygc3RyYXkgcGl4ZWxzLiBXaWxsIHVwc3RyZWFtLgor
CisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL3BhcnNpbmcv
Y2xpcC1wYXRoLXNoYXBlLXBhcnNpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAgICAgICAgIE5v
dyBwYXNzZXMKKwogMjAyMi0wNC0xOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBDU1NUcmFuc2Zvcm1WYWx1ZS5pczJECmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBhZTc2MjZiM2JmMzlhN2FiODY2YmY0YzQyOGY2YTM4Y2IxODYx
OWE0Li5iZjA5MmRkNTJkM2FiMWUwNTQ5OGZhYjBjNmU5ZGU4ZWMzOWQ4NGE4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTIxOTksMTUgKzIxOTksNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXZpZXdCb3gtMWMuaAog
d2Via2l0Lm9yZy9iLzEwNDQ0MiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXVybC1yZWZlcmVuY2UtY2hhbmdlLWZyb20t
ZW1wdHkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIyOTUxMCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xp
cC1wYXRoLWRlc2NlbmRhbnQtdGV4dC1tdXRhdGVkLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiAKLSMgQ1NTIHNoYXBlKCkKLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFw
ZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xp
cC1wYXRoLXNoYXBlLTAwMi11bml0cy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjM4MzcxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNr
aW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzgzNzEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwNC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjM4MzcxIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlwLXBhdGgt
c2hhcGUtaW50ZXJwb2xhdGlvbi0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIzODM3MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFz
a2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLWludGVycG9sYXRpb24tMDAyLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzIyOTM3MCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwL2NsaXAtZmlsdGVyLW9yZGVyLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMjkzNzAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvbWFzay1pbWFnZS9tYXNrLWltYWdl
LXVybC1sb2NhbC1tYXNrLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8y
MjkzNzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvbWFz
ay1pbWFnZS9tYXNrLWltYWdlLXVybC1yZW1vdGUtbWFzay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDMtZXhwZWN0ZWQuaHRtbApp
bmRleCA0NmUwOThjNGViNjQ4OWZjNDQzMDFkNmJmOWIyNDNlODM2YjJjYTMxLi4zMWU5N2M5MTQ3
NDQ4YWE4NDkyNjQyZTQxOTZhYTkxYjVjYTZhNDg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgv
Y2xpcC1wYXRoLXNoYXBlLTAwMy1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2NsaXAtcGF0aC9jbGlw
LXBhdGgtc2hhcGUtMDAzLWV4cGVjdGVkLmh0bWwKQEAgLTksMTQgKzksMjMgQEAKICAgICB3aWR0
aDogMTAwcHg7CiAgICAgaGVpZ2h0OiAxMDBweDsKICAgfQotICAjcmVmIHsKLSAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBncmVlbjsKKworICAjcmVmLCAjYWN0dWFsIHsKICAgICBjbGlwLXBhdGg6IHBh
dGgobm9uemVybywgIk0gMTAgMTAsIFEgNDAgMCA2MCAyMCwgVCA5MCAwLCBjIDEwIDQwIDIwIDIw
IC0yMCA2MCwgcyAtMTAgNzAgLTQwIC0xMCIpOwogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAg
fQorCisgICNyZWYgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgfQorCisgICNhY3R1
YWwgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICB9CiA8L3N0eWxlPgogPGJvZHk+
CiAgIDxwPllvdSBzaG91bGQgc2VlIG5vIHJlZC48L3A+CiAgIDxkaXYgaWQ9InJlZiI+PC9kaXY+
CisgIDxkaXYgaWQ9ImFjdHVhbCI+PC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFz
a2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2Ns
aXAtcGF0aC1zaGFwZS0wMDMuaHRtbAppbmRleCAyMmU3ZDlhYWY1Mzc0YzliN2U0ZTNjMmQ1MGVj
ZWZiY2VjMTM0YjY2Li5lMDE3MDkwMDVhYzhjZjhlMzVkMDYyYTY4NTdiNjQ2MjdiNWViZTA4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAwMy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5n
L2NsaXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDAzLmh0bWwKQEAgLTYsNiArNiw3IEBACiAgIDxs
aW5rIHJlbD0ibWF0Y2giIGhyZWY9InJlZmVyZW5jZS9jbGlwLXBhdGgtc2hhcGUtMDAzLXJlZi5o
dG1sIj4KICAgPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJUaGUgY2xpcC1wYXRoIHByb3Bl
cnR5IHRha2VzIHRoZSBiYXNpYyBzaGFwZQogCSdzaGFwZSgpJyBmb3IgY2xpcHBpbmcuIFRlc3Qg
Y3VydmVzLiI+CisgIDxtZXRhIG5hbWU9ImZ1enp5IiBjb250ZW50PSJtYXhEaWZmZXJlbmNlPTgw
OyB0b3RhbFBpeGVscz0zOTQiPgogPC9oZWFkPgogPHN0eWxlPgogICBkaXYgewpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1h
c2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFwZS0wMDQtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1tYXNraW5nL2Ns
aXAtcGF0aC9jbGlwLXBhdGgtc2hhcGUtMDA0LWV4cGVjdGVkLmh0bWwKaW5kZXggZWM4Zjk0MTA3
OTUxMzhmN2EzNDkwZDdhNDE2OWI1ZWJkNWUzNzQ3NC4uMTBmNDU3YjkxMTg0ZjEwMTMwNjg5YTI3
MzA1ZmMyZGQzNjZlMjgzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1zaGFw
ZS0wMDQtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9jbGlwLXBhdGgvY2xpcC1wYXRoLXNoYXBlLTAw
NC1leHBlY3RlZC5odG1sCkBAIC05LDE0ICs5LDIzIEBACiAgICAgd2lkdGg6IDEwMHB4OwogICAg
IGhlaWdodDogMTAwcHg7CiAgIH0KLSAgI3JlZiB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47CisKKyAgI3JlZiwgI2FjdHVhbCB7CiAgICAgY2xpcC1wYXRoOiBwYXRoKG5vbnplcm8sICJN
IDIwIDIwIEEgMjUgMTIgMCAwIDEgODAgMjAsIGEgMzMgMzMgMTIwIDEgMSAtNDAgNTAsIEEgMjAg
MjUgMCAwIDAgMjAgMjAiKTsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgIH0KKworICAjcmVm
IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgIH0KKworICAjYWN0dWFsIHsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgfQogPC9zdHlsZT4KIDxib2R5PgogICA8cD5Zb3Ug
c2hvdWxkIHNlZSBubyByZWQuPC9wPgogICA8ZGl2IGlkPSJyZWYiPjwvZGl2PgorICA8ZGl2IGlk
PSJhY3R1YWwiPjwvZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLW1hc2tpbmcvcGFyc2lu
Zy9jbGlwLXBhdGgtc2hhcGUtcGFyc2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2NsaXAt
cGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVjdGVkLnR4dAppbmRleCBlOTRhZWU4YjZiNGNiMDRmN2Fm
ZTgyYWQ2NWIzYzE0OGJjNDExMjVmLi5lMDU4MGVkZmMxZDhlZjMyNzc1YjVkOTZmMzg3ZWU1ZTdh
NDdhMzBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2NsaXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtbWFza2luZy9wYXJzaW5nL2NsaXAtcGF0aC1zaGFwZS1wYXJzaW5nLWV4cGVj
dGVkLnR4dApAQCAtMSwyNCArMSwyNCBAQAogCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0g
InNoYXBlKGZyb20gMHB4IDBweCwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBw
cm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBn
b3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFw
ZShldmVub2RkIGZyb20gMHB4IDBweCwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRo
ZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNl
dCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJz
aGFwZShub256ZXJvIGZyb20gMHB4IDBweCwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0
IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJl
IHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9
ICJzaGFwZSggIGZyb20gMHB4ICAgIDBweCwgbGluZSAgdG8gMTBweCAgMTBweCAgICAgKSIgc2hv
dWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNo
b3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1w
YXRoJ10gPSAic2hhcGUoZnJvbSAxZW0gNTAlLCBsaW5lIHRvIDEwcHggMTBweCkiIHNob3VsZCBz
ZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQg
YmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCdd
ID0gInNoYXBlKEV2ZW5PZGQgZnJvbSAwcHggMFB4LCBDTE9TRSkiIHNob3VsZCBzZXQgdGhlIHBy
b3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdv
dCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBl
KGZyb20gMWNoIDUwcHgsIGxpbmUgdG8gMTByZW0gMTB2aCkiIHNob3VsZCBzZXQgdGhlIHByb3Bl
cnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBk
aXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZy
b20gMWNoIC01MHB4LCBsaW5lIHRvIC0xMCUgMTJweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5
IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNh
bGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20g
MTBweCAxMHB4LCBtb3ZlIGJ5IDEwcHggNXB4LCBsaW5lIGJ5IDIwcHggNDAlLCBjbG9zZSkiIHNo
b3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBz
aG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAt
cGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBobGluZSBieSAxMHB4LCB2bGluZSB0byA1
cmVtKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHBy
b3BlcnR5IHNob3VsZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHls
ZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIHZsaW5lIGJ5IDUlLCBobGlu
ZSB0byAxdncpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFs
czogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgotRkFJTCBl
LnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUgdG8gNTBw
eCAyMHB4IHZpYSAxMHJlbSAxJSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2Vy
dF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVl
ICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBj
dXJ2ZSB0byA1MHB4IDIwcHggdmlhIDEwcmVtIDFweCAyMHZoIDFjaCkiIHNob3VsZCBzZXQgdGhl
IHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0
IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNo
YXBlKGZyb20gMTBweCAxMHB4LCBjdXJ2ZSBieSA1MHB4IDIwcHggdmlhIDEwcmVtIDFweCAyMHZo
IDFjaCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9ub3RfZXF1YWxzOiBw
cm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIiCi1GQUlMIGUuc3R5
bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBzbW9vdGggdG8gNTBweCAy
MHB4IHZpYSAxMHJlbSAxJSkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFzc2VydF9u
b3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZhbHVlICIi
Ci1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCBzbW9v
dGggdG8gNTBweCAxcHQpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90
X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgot
RkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgYXJjIHRv
IDUwcHggMXB0IG9mIDEwcHggMTBweCkiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIGFz
c2VydF9ub3RfZXF1YWxzOiBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IGdvdCBkaXNhbGxvd2VkIHZh
bHVlICIiCi1GQUlMIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTBweCAxMHB4
LCBhcmMgdG8gNTBweCAxcHQgb2YgMTBweCAxMHB4IHNtYWxsIHJvdGF0ZSAwZGVnKSIgc2hvdWxk
IHNldCB0aGUgcHJvcGVydHkgdmFsdWUgYXNzZXJ0X25vdF9lcXVhbHM6IHByb3BlcnR5IHNob3Vs
ZCBiZSBzZXQgZ290IGRpc2FsbG93ZWQgdmFsdWUgIiIKLUZBSUwgZS5zdHlsZVsnY2xpcC1wYXRo
J10gPSAic2hhcGUoZnJvbSAxMCUgMXJlbSwgYXJjIHRvIDUwcHggMXB0IG9mIDIwJSBjdyBsYXJn
ZSByb3RhdGUgMjVkZWcpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90
X2VxdWFsczogcHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgot
RkFJTCBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShldmVub2RkIGZyb20gMHB4IDBweCwg
Y2xvc2UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBhc3NlcnRfbm90X2VxdWFsczog
cHJvcGVydHkgc2hvdWxkIGJlIHNldCBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAiIgorUEFTUyBlLnN0
eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4
KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRo
J10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hv
dWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAi
c2hhcGUobm9uemVybyBmcm9tIDBweCAwcHgsIGxpbmUgdG8gMTBweCAxMHB4KSIgc2hvdWxkIHNl
dCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUo
ICBmcm9tIDBweCAgICAwcHgsIGxpbmUgIHRvIDEwcHggIDEwcHggICAgICkiIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZy
b20gMWVtIDUwJSwgbGluZSB0byAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShFdmVuT2RkIGZyb20gMHB4
IDBQeCwgQ0xPU0UpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxl
WydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDFjaCA1MHB4LCBsaW5lIHRvIDEwcmVtIDEwdmgp
IiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgn
XSA9ICJzaGFwZShmcm9tIDFjaCAtNTBweCwgbGluZSB0byAtMTAlIDEycHgpIiBzaG91bGQgc2V0
IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShm
cm9tIDEwcHggMTBweCwgbW92ZSBieSAxMHB4IDVweCwgbGluZSBieSAyMHB4IDQwJSwgY2xvc2Up
IiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgn
XSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgaGxpbmUgYnkgMTBweCwgdmxpbmUgdG8gNXJlbSki
IHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCdd
ID0gInNoYXBlKGZyb20gMTBweCAxMHB4LCB2bGluZSBieSA1JSwgaGxpbmUgdG8gMXZ3KSIgc2hv
dWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAi
c2hhcGUoZnJvbSAxMHB4IDEwcHgsIGN1cnZlIHRvIDUwcHggMjBweCB2aWEgMTByZW0gMSUpIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9
ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUgdG8gNTBweCAyMHB4IHZpYSAxMHJlbSAxcHgg
MjB2aCAxY2gpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydj
bGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUgYnkgNTBweCAyMHB4IHZp
YSAxMHJlbSAxcHggMjB2aCAxY2gpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFT
UyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgc21vb3RoIHRv
IDUwcHggMjBweCB2aWEgMTByZW0gMSUpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQor
UEFTUyBlLnN0eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgc21vb3Ro
IHRvIDUwcHggMXB0KSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHls
ZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZnJvbSAxMHB4IDEwcHgsIGFyYyB0byA1MHB4IDFwdCBv
ZiAxMHB4IDEwcHgpIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxl
WydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgYXJjIHRvIDUwcHggMXB0IG9m
IDEwcHggMTBweCBzbWFsbCByb3RhdGUgMGRlZykiIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZh
bHVlCitQQVNTIGUuc3R5bGVbJ2NsaXAtcGF0aCddID0gInNoYXBlKGZyb20gMTAlIDFyZW0sIGFy
YyB0byA1MHB4IDFwdCBvZiAyMCUgY3cgbGFyZ2Ugcm90YXRlIDI1ZGVnKSIgc2hvdWxkIHNldCB0
aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZl
bm9kZCBmcm9tIDBweCAwcHgsIGNsb3NlKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUK
IFBBU1MgZS5zdHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUoZXZlbm9kZCBmcm9tIDBweCAwcHgs
IGNsb3NlIHBhdGgpIiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkgdmFsdWUKIFBBU1MgZS5z
dHlsZVsnY2xpcC1wYXRoJ10gPSAic2hhcGUobm9uemVybywgZnJvbSAwcHggMHB4LCBsaW5lIHRv
IDEwcHggMTBweCkiIHNob3VsZCBub3Qgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQogUEFTUyBlLnN0
eWxlWydjbGlwLXBhdGgnXSA9ICJzaGFwZShmcm9tIDEwcHggMTBweCwgY3VydmUgdG8gNTBweCAy
MHB4IHZpYSAxMHJlbSkiIHNob3VsZCBub3Qgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>