<?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>230823</bug_id>
          
          <creation_ts>2021-09-27 01:40:12 -0700</creation_ts>
          <short_desc>Run backwards propagation before we prune the graph after ForceOSRExit nodes in BytecodeParser</short_desc>
          <delta_ts>2021-10-08 20:30:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Lukas Bernhard">lukas.bernhard</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>product-security</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1797405</commentid>
    <comment_count>0</comment_count>
    <who name="Lukas Bernhard">lukas.bernhard</who>
    <bug_when>2021-09-27 01:40:12 -0700</bug_when>
    <thetext>Differential testing identifies the following samples to trigger a miscomputation in FTL.
Tested on 29c8d02c3b11c096cc67d89e5cfe8c16be42b3b7 (Fri Sep 24 09:39:18 2021 +0000)

Release/bin/jsc --validateOptions=true --useConcurrentJIT=false --useConcurrentGC=false --thresholdForJITSoon=10 --thresholdForJITAfterWarmUp=10 --thresholdForOptimizeAfterWarmUp=100 --thresholdForOptimizeAfterLongWarmUp=100 --thresholdForOptimizeSoon=100 --thresholdForFTLOptimizeAfterWarmUp=1000 --thresholdForFTLOptimizeSoon=1000 --validateBCE=true --useFTLJIT=true diff.js

function main() {
    let v38;
    let v40;

    async function v24() {
        const v33 = false;
        const v34 = -v33;
        const v37 = typeof search;
        const v39 = v38 ? v30 : 1;
        v40 = v34;
            
        for(let v41 = 0; v41 != 100000; v41++) { } 
    }   
    [1,1,1].filter(v24);
    print(Object.is(v40, 0)); // v40 should be -0, but is 0 in FTL (hence prints true in FTL, false without FTL or in v8)
}
main();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797406</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-27 01:40:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/83565088&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798742</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-29 21:10:45 -0700</bug_when>
    <thetext>Lukas, your fuzzer is producing some really amazing spec implementation bugs. Please keep the bug reports coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798743</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-29 21:12:50 -0700</bug_when>
    <thetext>The bug here is the code inside the bytecode parser that does liveness preservation for all live values after a ForceOSRExit does not properly keep around the program in such a way that the backwards prop flags are properly maintained.

Specifically, we end up with a program like:
```
a: ArithNegate(...)
SetLocal(@a, loc6)
PhantomLocal(loc6)
```

But, this doesn&apos;t tell backwards prop that we care about negative zero.

I&apos;m beginning to think that instead of all PhantomLocals, we should just emit Phantom(GetLocal) for all live things that aren&apos;t flushed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798746</commentid>
    <comment_count>4</comment_count>
      <attachid>439698</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-29 21:15:05 -0700</bug_when>
    <thetext>Created attachment 439698
test EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798748</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-29 21:17:35 -0700</bug_when>
    <thetext>FWIW, this is both a DFG/FTL bug. This test just happens to require the FTL because it&apos;ll OSR exit with a bad constant value because of this bad code inside bytecode parser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799112</commentid>
    <comment_count>6</comment_count>
      <attachid>439802</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-30 17:36:25 -0700</bug_when>
    <thetext>Created attachment 439802
test EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799119</commentid>
    <comment_count>7</comment_count>
      <attachid>439806</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-30 17:43:26 -0700</bug_when>
    <thetext>Created attachment 439806
test EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799153</commentid>
    <comment_count>8</comment_count>
      <attachid>439815</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-09-30 20:27:05 -0700</bug_when>
    <thetext>Created attachment 439815
test EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799430</commentid>
    <comment_count>9</comment_count>
      <attachid>439885</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-10-01 11:36:26 -0700</bug_when>
    <thetext>Created attachment 439885
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799441</commentid>
    <comment_count>10</comment_count>
      <attachid>439885</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-10-01 11:53:16 -0700</bug_when>
    <thetext>Comment on attachment 439885
patch

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

r=me.
Overall I&apos;m very happy to see that the ugly hack at the end of BytecodeParser which removes some of the code after OSRExits but not all is at least partly gone.

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +        That way, the phase sees the graph as if its an IR over the whole bytecode

nit: its =&gt; it&apos;s

&gt; Source/JavaScriptCore/dfg/DFGBackwardsPropagationPhase.cpp:50
&gt; +        for (size_t i = 0; i &lt; m_graph.numBlocks(); ++i) {

trivial simplification: you can do
```
for (BasicBlock* block : m_graph.blocksInNaturalOrder()) {
  m_flagsAtHead[block] = ...
```
blocksInNaturalOrder is exactly this pattern of iterating them in order and skipping any null one.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:9027
&gt; +    performBackwardsPropagation(m_graph);

Would it be possible/safe to flash a GC safe point before this? While backwards propagation is pretty quick, the bytecode parser is already responsible for many of our worst GC pauses, so I&apos;d really like to avoid making its impact on the GC any worse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799447</commentid>
    <comment_count>11</comment_count>
      <attachid>439885</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-10-01 11:59:07 -0700</bug_when>
    <thetext>Comment on attachment 439885
patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:19
&gt;&gt; +        That way, the phase sees the graph as if its an IR over the whole bytecode
&gt; 
&gt; nit: its =&gt; it&apos;s

will fix.

&gt;&gt; Source/JavaScriptCore/dfg/DFGBackwardsPropagationPhase.cpp:50
&gt;&gt; +        for (size_t i = 0; i &lt; m_graph.numBlocks(); ++i) {
&gt; 
&gt; trivial simplification: you can do
&gt; ```
&gt; for (BasicBlock* block : m_graph.blocksInNaturalOrder()) {
&gt;   m_flagsAtHead[block] = ...
&gt; ```
&gt; blocksInNaturalOrder is exactly this pattern of iterating them in order and skipping any null one.

will fix.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:9027
&gt;&gt; +    performBackwardsPropagation(m_graph);
&gt; 
&gt; Would it be possible/safe to flash a GC safe point before this? While backwards propagation is pretty quick, the bytecode parser is already responsible for many of our worst GC pauses, so I&apos;d really like to avoid making its impact on the GC any worse.

I&apos;m not 100% sure if it&apos;s safe. My guess would be yes, but it requires some analysis of what happens in bytecode parser after this code runs. If we do it, I think it should be done in its own patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799453</commentid>
    <comment_count>12</comment_count>
      <attachid>439894</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-10-01 12:04:47 -0700</bug_when>
    <thetext>Created attachment 439894
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800753</commentid>
    <comment_count>13</comment_count>
      <attachid>440264</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-10-05 14:13:32 -0700</bug_when>
    <thetext>Created attachment 440264
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801109</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-06 08:49:50 -0700</bug_when>
    <thetext>Committed r283623 (242575@main): &lt;https://commits.webkit.org/242575@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440264.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801472</commentid>
    <comment_count>15</comment_count>
      <attachid>440264</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-10-06 19:03:15 -0700</bug_when>
    <thetext>Comment on attachment 440264
patch for landing

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

&gt; Source/JavaScriptCore/dfg/DFGBackwardsPropagationPhase.cpp:225
&gt; +            variableAccessData-&gt;mergeFlags(flagsRef &amp; ~NodeBytecodeUsesAsInt); // We don&apos;t care about cross-block uses-as-int for this.

I think this logic is actually slightly off, since we incorporate the value from m_currentFlags in SetLocal.

I was trying to avoid having a separate bit to represent &quot;is alive&quot;. But, I should just add that bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801721</commentid>
    <comment_count>16</comment_count>
      <attachid>440527</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-10-07 12:40:29 -0700</bug_when>
    <thetext>Created attachment 440527
followup patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801725</commentid>
    <comment_count>17</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-10-07 12:45:36 -0700</bug_when>
    <thetext>Doing a follow up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802207</commentid>
    <comment_count>18</comment_count>
      <attachid>440527</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-08 13:07:54 -0700</bug_when>
    <thetext>Comment on attachment 440527
followup patch

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

r=me

&gt; Source/JavaScriptCore/dfg/DFGBackwardsPropagationPhase.cpp:218
&gt; +    static constexpr NodeFlags VariableIsUsed = 1 &lt;&lt; (1 + WTF::getMSBSetConstexpr(NodeBytecodeBackPropMask));

Can we have a static_assert that `1 &lt;&lt; (1 + WTF::getMSBSetConstexpr(NodeBytecodeBackPropMask))` does not exceed NodeFlags size?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802337</commentid>
    <comment_count>19</comment_count>
      <attachid>440695</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-10-08 17:56:07 -0700</bug_when>
    <thetext>Created attachment 440695
followup patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802355</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-08 20:30:00 -0700</bug_when>
    <thetext>Committed r283862 (242739@main): &lt;https://commits.webkit.org/242739@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440695.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439698</attachid>
            <date>2021-09-29 21:15:05 -0700</date>
            <delta_ts>2021-09-30 17:36:25 -0700</delta_ts>
            <desc>test EWS</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>1548</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCShyZXZpc2lvbiAyODMyODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA5NywxMyArOTA5NywxNCBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVmVjdG9yPEFyZ3VtZW50UG9zaXRpb24qPiYgYXJndW1lbnRzID0gbV9pbmxpbmVDYWxs
RnJhbWVUb0FyZ3VtZW50UG9zaXRpb25zLmdldChpbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1thcmd1bWVudC50b0FyZ3VtZW50KCldLT5hZGRW
YXJpYWJsZSh2YXJpYWJsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXgsIFNwZWNOb25l
LCBvcCwgb3JpZ2luLCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXgsIFNwZWNOb25lLCBvcCwg
b3JpZ2luLCBPcEluZm8odmFyaWFibGUpKTsKICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAg
ICAgICAgICAgICAgICAgYXV0byBhZGRGbHVzaERpcmVjdCA9IFsmXSAoSW5saW5lQ2FsbEZyYW1l
KiBpbmxpbmVDYWxsRnJhbWUsIE9wZXJhbmQgb3BlcmFuZCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgaW5zZXJ0TGl2ZW5lc3NQcmVzZXJ2aW5nT3AoaW5saW5lQ2FsbEZyYW1lLCBGbHVzaCwg
b3BlcmFuZCk7CiAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgIGF1
dG8gYWRkUGhhbnRvbUxvY2FsRGlyZWN0ID0gWyZdIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNh
bGxGcmFtZSwgT3BlcmFuZCBvcGVyYW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnNl
cnRMaXZlbmVzc1ByZXNlcnZpbmdPcChpbmxpbmVDYWxsRnJhbWUsIFBoYW50b21Mb2NhbCwgb3Bl
cmFuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gaW5zZXJ0TGl2ZW5l
c3NQcmVzZXJ2aW5nT3AoaW5saW5lQ2FsbEZyYW1lLCBHZXRMb2NhbCwgb3BlcmFuZCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXgsIFNw
ZWNOb25lLCBQaGFudG9tLCBvcmlnaW4sIEVkZ2Uobm9kZSkpOwogICAgICAgICAgICAgICAgICAg
ICB9OwogICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsSW1wbChvcmlnaW4uc2Vt
YW50aWMsIGFkZEZsdXNoRGlyZWN0LCBhZGRQaGFudG9tTG9jYWxEaXJlY3QpOwogICAgICAgICAg
ICAgICAgIH0K
</data>
<flag name="commit-queue"
          id="463434"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439802</attachid>
            <date>2021-09-30 17:36:25 -0700</date>
            <delta_ts>2021-09-30 17:43:26 -0700</delta_ts>
            <desc>test EWS</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>6487</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNr
d2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjgzMjgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsMjIgKzM0LDQzIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAotY2xhc3MgQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CitjbGFzcyBCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlIHsKIHB1YmxpYzoKICAgICBCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBQaGFzZShncmFwaCwg
ImJhY2t3YXJkcyBwcm9wYWdhdGlvbiIpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICAg
ICAgLCBtX2ZsYWdzQXRIZWFkKGdyYXBoKQogICAgIHsKICAgICB9CiAgICAgCisgICAgCiAgICAg
Ym9vbCBydW4oKQogICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2dyYXBo
Lm51bUJsb2NrcygpOyArK2kpIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9n
cmFwaC5ibG9jayhpKTsKKyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICBtX2ZsYWdzQXRIZWFkW2Jsb2NrXSA9IE9wZXJhbmRzPE5v
ZGVGbGFncz4oT3BlcmFuZHNMaWtlLCBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQp
OworICAgICAgICAgICAgbV9mbGFnc0F0SGVhZFtibG9ja10uZmlsbCgwKTsKKyAgICAgICAgfQor
CiAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgIHdoaWxlIChtX2NoYW5nZWQpIHsK
ICAgICAgICAgICAgIG1fY2hhbmdlZCA9IGZhbHNlOworCiAgICAgICAgICAgICBmb3IgKEJsb2Nr
SW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsK
ICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJ
bmRleCk7CiAgICAgICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3Vy
cmVudEZsYWdzID0gT3BlcmFuZHM8Tm9kZUZsYWdzPihPcGVyYW5kc0xpa2UsIG1fZ3JhcGguYmxv
Y2soMCktPnZhcmlhYmxlc0F0SGVhZCk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEZs
YWdzLmZpbGwoMCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vz
c29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2N1cnJlbnRGbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRGbGFnc1tpXSB8PSBtX2ZsYWdzQXRIZWFkW3N1
Y2Nlc3Nvcl1baV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgYSB0b3dlciBvZiBvdmVy
Zmxvd2luZyBhZGRpdGlvbnMgZnJvbSBjcmVhdGluZyBhIHZhbHVlIHRoYXQgaXMgb3V0IG9mIHRo
ZQogICAgICAgICAgICAgICAgIC8vIHNhZmUgMl40OCByYW5nZS4KQEAgLTU3LDYgKzc4LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5k
ZXhJbkJsb2NrID0gYmxvY2stPnNpemUoKTsgaW5kZXhJbkJsb2NrLS07KQogICAgICAgICAgICAg
ICAgICAgICBwcm9wYWdhdGUoYmxvY2stPmF0KGluZGV4SW5CbG9jaykpOworCisgICAgICAgICAg
ICAgICAgaWYgKCEobV9mbGFnc0F0SGVhZFtibG9ja10gPT0gbV9jdXJyZW50RmxhZ3MpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1fZmxhZ3NBdEhlYWRbYmxvY2tdID0gbV9jdXJyZW50RmxhZ3M7
CisgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIC8vZGF0YUxvZ0xuKCJjaGFuZ2VkIGlzIHRydWUgYXQgaGVhZCIpOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKQEAgLTE1Myw2ICsxODAs
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGlzV2l0aGluUG93ZXJPZlR3bzxwb3dlcj4o
ZWRnZS5ub2RlKCkpOwogICAgIH0KIAorICAgIHN0YXRpYyBib29sIG1lcmdlRmxhZ3MoTm9kZUZs
YWdzJiBmbGFnc1JlZiwgTm9kZUZsYWdzIG5ld0ZsYWdzKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGNoZWNrQW5kU2V0KGZsYWdzUmVmLCBmbGFnc1JlZiB8IG5ld0ZsYWdzKTsKKyAgICB9CisKICAg
ICBib29sIG1lcmdlRGVmYXVsdEZsYWdzKE5vZGUqIG5vZGUpCiAgICAgewogICAgICAgICBib29s
IGNoYW5nZWQgPSBmYWxzZTsKQEAgLTE4NCwyNSArMjE2LDM4IEBAIHByaXZhdGU6CiAgICAgICAg
IHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICBjYXNlIEdldExvY2FsOiB7CiAgICAgICAg
ICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnZhcmlh
YmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgT3BlcmFuZCBvcGVyYW5kID0gdmFyaWFibGVB
Y2Nlc3NEYXRhLT5vcGVyYW5kKCk7CiAgICAgICAgICAgICBmbGFncyAmPSB+Tm9kZUJ5dGVjb2Rl
VXNlc0FzSW50OyAvLyBXZSBkb24ndCBjYXJlIGFib3V0IGNyb3NzLWJsb2NrIHVzZXMtYXMtaW50
LgotICAgICAgICAgICAgbV9jaGFuZ2VkIHw9IHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VGbGFn
cyhmbGFncyk7CisgICAgICAgICAgICBOb2RlRmxhZ3MmIGZsYWdzUmVmID0gbV9jdXJyZW50Rmxh
Z3Mub3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgIG1lcmdlRmxhZ3MoZmxhZ3NSZWYsIGZs
YWdzKTsKKyAgICAgICAgICAgIHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VGbGFncyhmbGFnc1Jl
Zik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgU2V0TG9jYWw6IHsKICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFi
bGVBY2Nlc3NEYXRhID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgICAgICBp
ZiAoIXZhcmlhYmxlQWNjZXNzRGF0YS0+aXNMb2FkZWRGcm9tKCkpCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBmbGFncyA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+ZmxhZ3MoKTsK
KyAgICAgICAgICAgIC8vaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzTG9hZGVkRnJvbSgpKQor
ICAgICAgICAgICAgLy8gICAgYnJlYWs7CisgICAgICAgICAgICAvL2ZsYWdzID0gdmFyaWFibGVB
Y2Nlc3NEYXRhLT5mbGFncygpOworCisgICAgICAgICAgICBPcGVyYW5kIG9wZXJhbmQgPSB2YXJp
YWJsZUFjY2Vzc0RhdGEtPm9wZXJhbmQoKTsKKyAgICAgICAgICAgIE5vZGVGbGFncyBmbGFncyA9
IG1fY3VycmVudEZsYWdzLm9wZXJhbmQob3BlcmFuZCk7CisKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCEoZmxhZ3MgJiB+Tm9kZUJ5dGVjb2RlQmFja1Byb3BNYXNrKSk7CisKICAgICAgICAg
ICAgIGZsYWdzIHw9IE5vZGVCeXRlY29kZVVzZXNBc051bWJlcjsgLy8gQWNjb3VudCBmb3IgdGhl
IGZhY3QgdGhhdCBjb250cm9sIGZsb3cgbWF5IGNhdXNlIG92ZXJmbG93cyB0aGF0IG91ciBtb2Rl
bGluZyBjYW4ndCBoYW5kbGUuCiAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFn
cyhmbGFncyk7CisKKyAgICAgICAgICAgIG1fY3VycmVudEZsYWdzLm9wZXJhbmQob3BlcmFuZCkg
PSAwOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIEZsdXNoOiB7CiAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxl
QWNjZXNzRGF0YSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICAgICAgbV9j
aGFuZ2VkIHw9IHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VGbGFncyhOb2RlQnl0ZWNvZGVVc2Vz
QXNWYWx1ZSk7CisgICAgICAgICAgICBPcGVyYW5kIG9wZXJhbmQgPSB2YXJpYWJsZUFjY2Vzc0Rh
dGEtPm9wZXJhbmQoKTsKKyAgICAgICAgICAgIE5vZGVGbGFncyYgZmxhZ3NSZWYgPSBtX2N1cnJl
bnRGbGFncy5vcGVyYW5kKG9wZXJhbmQpOworICAgICAgICAgICAgbWVyZ2VGbGFncyhmbGFnc1Jl
ZiwgTm9kZUJ5dGVjb2RlVXNlc0FzVmFsdWUpOworICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NE
YXRhLT5tZXJnZUZsYWdzKGZsYWdzUmVmKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKQEAgLTQ5MSwxMyArNTM2LDE5IEBAIHByaXZhdGU6CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCisgICAgR3JhcGgmIG1fZ3JhcGg7CiAgICAgYm9vbCBtX2FsbG93TmVzdGVk
T3ZlcmZsb3dpbmdBZGRpdGlvbnM7CiAgICAgYm9vbCBtX2NoYW5nZWQ7CisKKyAgICBCbG9ja01h
cDxPcGVyYW5kczxOb2RlRmxhZ3M+PiBtX2ZsYWdzQXRIZWFkOworICAgIE9wZXJhbmRzPE5vZGVG
bGFncz4gbV9jdXJyZW50RmxhZ3M7CiB9OwogCiBib29sIHBlcmZvcm1CYWNrd2FyZHNQcm9wYWdh
dGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPEJhY2t3YXJkc1Byb3Bh
Z2F0aW9uUGhhc2U+KGdyYXBoKTsKKyAgICBCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlKGdyYXBo
KS5ydW4oKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgICAvL3JldHVybiBydW5QaGFzZTxCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlPihncmFwaCk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCShyZXZpc2lvbiAyODMyODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2lu
Y2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SGVhcC5oIgog
I2luY2x1ZGUgIkRGR0FycmF5TW9kZS5oIgorI2luY2x1ZGUgIkRGR0JhY2t3YXJkc1Byb3BhZ2F0
aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdCbG9ja1NldC5oIgogI2luY2x1ZGUgIkRGR0NhcGFi
aWxpdGllcy5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJpemUuaCIKQEAgLTkwMTgsNiArOTAxOSw4
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICBwYXJzZUNvZGVCbG9jaygpOwog
ICAgIGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVT
dGFja0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CiAKKyAgICBwZXJmb3JtQmFja3dhcmRz
UHJvcGFnYXRpb24obV9ncmFwaCk7CisKICAgICBpZiAobV9oYXNBbnlGb3JjZU9TUkV4aXRzKSB7
CiAgICAgICAgIEJsb2NrU2V0IGJsb2Nrc1RvSWdub3JlOwogICAgICAgICBmb3IgKEJhc2ljQmxv
Y2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDI4MzI4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw3
ICsyNTUsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAg
aWYgKHZhbGlkYXRpb25FbmFibGVkKCkpCiAgICAgICAgIHZhbGlkYXRlKGRmZyk7CiAgICAgCi0g
ICAgUlVOX1BIQVNFKHBlcmZvcm1CYWNrd2FyZHNQcm9wYWdhdGlvbik7CisgICAgLy9SVU5fUEhB
U0UocGVyZm9ybUJhY2t3YXJkc1Byb3BhZ2F0aW9uKTsKICAgICBSVU5fUEhBU0UocGVyZm9ybVBy
ZWRpY3Rpb25Qcm9wYWdhdGlvbik7CiAgICAgUlVOX1BIQVNFKHBlcmZvcm1GaXh1cCk7CiAgICAg
UlVOX1BIQVNFKHBlcmZvcm1JbnZhbGlkYXRpb25Qb2ludEluamVjdGlvbik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439806</attachid>
            <date>2021-09-30 17:43:26 -0700</date>
            <delta_ts>2021-09-30 20:27:05 -0700</delta_ts>
            <desc>test EWS</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>6382</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNr
d2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjgzMjgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsMjIgKzM0LDQyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAotY2xhc3MgQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CitjbGFzcyBCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlIHsKIHB1YmxpYzoKICAgICBCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBQaGFzZShncmFwaCwg
ImJhY2t3YXJkcyBwcm9wYWdhdGlvbiIpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICAg
ICAgLCBtX2ZsYWdzQXRIZWFkKGdyYXBoKQogICAgIHsKICAgICB9CiAgICAgCiAgICAgYm9vbCBy
dW4oKQogICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2dyYXBoLm51bUJs
b2NrcygpOyArK2kpIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5i
bG9jayhpKTsKKyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBtX2ZsYWdzQXRIZWFkW2Jsb2NrXSA9IE9wZXJhbmRzPE5vZGVGbGFn
cz4oT3BlcmFuZHNMaWtlLCBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQpOworICAg
ICAgICAgICAgbV9mbGFnc0F0SGVhZFtibG9ja10uZmlsbCgwKTsKKyAgICAgICAgfQorCiAgICAg
ICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgIHdoaWxlIChtX2NoYW5nZWQpIHsKICAgICAg
ICAgICAgIG1fY2hhbmdlZCA9IGZhbHNlOworCiAgICAgICAgICAgICBmb3IgKEJsb2NrSW5kZXgg
YmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKICAgICAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7
CiAgICAgICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEZs
YWdzID0gT3BlcmFuZHM8Tm9kZUZsYWdzPihPcGVyYW5kc0xpa2UsIG1fZ3JhcGguYmxvY2soMCkt
PnZhcmlhYmxlc0F0SGVhZCk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEZsYWdzLmZp
bGwoMCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDog
YmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2N1cnJlbnRGbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRGbGFnc1tpXSB8PSBtX2ZsYWdzQXRIZWFkW3N1Y2Nlc3Nv
cl1baV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgYSB0b3dlciBvZiBvdmVyZmxvd2lu
ZyBhZGRpdGlvbnMgZnJvbSBjcmVhdGluZyBhIHZhbHVlIHRoYXQgaXMgb3V0IG9mIHRoZQogICAg
ICAgICAgICAgICAgIC8vIHNhZmUgMl40OCByYW5nZS4KQEAgLTU3LDYgKzc3LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXhJbkJs
b2NrID0gYmxvY2stPnNpemUoKTsgaW5kZXhJbkJsb2NrLS07KQogICAgICAgICAgICAgICAgICAg
ICBwcm9wYWdhdGUoYmxvY2stPmF0KGluZGV4SW5CbG9jaykpOworCisgICAgICAgICAgICAgICAg
aWYgKCEobV9mbGFnc0F0SGVhZFtibG9ja10gPT0gbV9jdXJyZW50RmxhZ3MpKSB7CisgICAgICAg
ICAgICAgICAgICAgIG1fZmxhZ3NBdEhlYWRbYmxvY2tdID0gbV9jdXJyZW50RmxhZ3M7CisgICAg
ICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIC8v
ZGF0YUxvZ0xuKCJjaGFuZ2VkIGlzIHRydWUgYXQgaGVhZCIpOworICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKQEAgLTE1Myw2ICsxNzksMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGlzV2l0aGluUG93ZXJPZlR3bzxwb3dlcj4oZWRnZS5u
b2RlKCkpOwogICAgIH0KIAorICAgIHN0YXRpYyBib29sIG1lcmdlRmxhZ3MoTm9kZUZsYWdzJiBm
bGFnc1JlZiwgTm9kZUZsYWdzIG5ld0ZsYWdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoZWNr
QW5kU2V0KGZsYWdzUmVmLCBmbGFnc1JlZiB8IG5ld0ZsYWdzKTsKKyAgICB9CisKICAgICBib29s
IG1lcmdlRGVmYXVsdEZsYWdzKE5vZGUqIG5vZGUpCiAgICAgewogICAgICAgICBib29sIGNoYW5n
ZWQgPSBmYWxzZTsKQEAgLTE4NSwyNCArMjE2LDM1IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
R2V0TG9jYWw6IHsKICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nl
c3NEYXRhID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgICAgICBmbGFncyAm
PSB+Tm9kZUJ5dGVjb2RlVXNlc0FzSW50OyAvLyBXZSBkb24ndCBjYXJlIGFib3V0IGNyb3NzLWJs
b2NrIHVzZXMtYXMtaW50LgotICAgICAgICAgICAgbV9jaGFuZ2VkIHw9IHZhcmlhYmxlQWNjZXNz
RGF0YS0+bWVyZ2VGbGFncyhmbGFncyk7CisgICAgICAgICAgICBOb2RlRmxhZ3MmIGZsYWdzUmVm
ID0gbV9jdXJyZW50RmxhZ3Mub3BlcmFuZCh2YXJpYWJsZUFjY2Vzc0RhdGEtPm9wZXJhbmQoKSk7
CisgICAgICAgICAgICBtZXJnZUZsYWdzKGZsYWdzUmVmLCBmbGFncyk7CisgICAgICAgICAgICB2
YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlRmxhZ3MoZmxhZ3NSZWYpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFNldExvY2FsOiB7CiAg
ICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0Rh
dGEtPmlzTG9hZGVkRnJvbSgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZmxhZ3MgPSB2YXJpYWJsZUFjY2Vzc0RhdGEtPmZsYWdzKCk7CisgICAgICAgICAgICAvL2lmICgh
dmFyaWFibGVBY2Nlc3NEYXRhLT5pc0xvYWRlZEZyb20oKSkKKyAgICAgICAgICAgIC8vICAgIGJy
ZWFrOworICAgICAgICAgICAgLy9mbGFncyA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+ZmxhZ3MoKTsK
KworICAgICAgICAgICAgTm9kZUZsYWdzIGZsYWdzID0gbV9jdXJyZW50RmxhZ3Mub3BlcmFuZCh2
YXJpYWJsZUFjY2Vzc0RhdGEtPm9wZXJhbmQoKSk7CisKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCEoZmxhZ3MgJiB+Tm9kZUJ5dGVjb2RlQmFja1Byb3BNYXNrKSk7CisKICAgICAgICAgICAg
IGZsYWdzIHw9IE5vZGVCeXRlY29kZVVzZXNBc051bWJlcjsgLy8gQWNjb3VudCBmb3IgdGhlIGZh
Y3QgdGhhdCBjb250cm9sIGZsb3cgbWF5IGNhdXNlIG92ZXJmbG93cyB0aGF0IG91ciBtb2RlbGlu
ZyBjYW4ndCBoYW5kbGUuCiAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhm
bGFncyk7CisgICAgICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlRmxhZ3MoZmxhZ3Mp
OworCisgICAgICAgICAgICBtX2N1cnJlbnRGbGFncy5vcGVyYW5kKG9wZXJhbmQpID0gMDsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBG
bHVzaDogewogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0Rh
dGEgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgIG1fY2hhbmdlZCB8
PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzVmFsdWUp
OworICAgICAgICAgICAgTm9kZUZsYWdzJiBmbGFnc1JlZiA9IG1fY3VycmVudEZsYWdzLm9wZXJh
bmQodmFyaWFibGVBY2Nlc3NEYXRhLT5vcGVyYW5kKCkpOworICAgICAgICAgICAgbWVyZ2VGbGFn
cyhmbGFnc1JlZiwgTm9kZUJ5dGVjb2RlVXNlc0FzVmFsdWUpOworICAgICAgICAgICAgdmFyaWFi
bGVBY2Nlc3NEYXRhLT5tZXJnZUZsYWdzKGZsYWdzUmVmKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTQ5MSwxMyArNTMzLDE5IEBAIHByaXZhdGU6CiAg
ICAgICAgIH0KICAgICB9CiAgICAgCisgICAgR3JhcGgmIG1fZ3JhcGg7CiAgICAgYm9vbCBtX2Fs
bG93TmVzdGVkT3ZlcmZsb3dpbmdBZGRpdGlvbnM7CiAgICAgYm9vbCBtX2NoYW5nZWQ7CisKKyAg
ICBCbG9ja01hcDxPcGVyYW5kczxOb2RlRmxhZ3M+PiBtX2ZsYWdzQXRIZWFkOworICAgIE9wZXJh
bmRzPE5vZGVGbGFncz4gbV9jdXJyZW50RmxhZ3M7CiB9OwogCiBib29sIHBlcmZvcm1CYWNrd2Fy
ZHNQcm9wYWdhdGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPEJhY2t3
YXJkc1Byb3BhZ2F0aW9uUGhhc2U+KGdyYXBoKTsKKyAgICBCYWNrd2FyZHNQcm9wYWdhdGlvblBo
YXNlKGdyYXBoKS5ydW4oKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgICAvL3JldHVybiBydW5QaGFz
ZTxCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlPihncmFwaCk7CiB9CiAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyODMyODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
NyBAQAogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0
SGVhcC5oIgogI2luY2x1ZGUgIkRGR0FycmF5TW9kZS5oIgorI2luY2x1ZGUgIkRGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdCbG9ja1NldC5oIgogI2luY2x1ZGUg
IkRGR0NhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJpemUuaCIKQEAgLTkwMTgs
NiArOTAxOSw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICBwYXJzZUNvZGVC
bG9jaygpOwogICAgIGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tz
LCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CiAKKyAgICBwZXJmb3Jt
QmFja3dhcmRzUHJvcGFnYXRpb24obV9ncmFwaCk7CisKICAgICBpZiAobV9oYXNBbnlGb3JjZU9T
UkV4aXRzKSB7CiAgICAgICAgIEJsb2NrU2V0IGJsb2Nrc1RvSWdub3JlOwogICAgICAgICBmb3Ig
KEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDI4MzI4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI1NSw3ICsyNTUsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUlu
VGhyCiAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpCiAgICAgICAgIHZhbGlkYXRlKGRmZyk7
CiAgICAgCi0gICAgUlVOX1BIQVNFKHBlcmZvcm1CYWNrd2FyZHNQcm9wYWdhdGlvbik7CisgICAg
Ly9SVU5fUEhBU0UocGVyZm9ybUJhY2t3YXJkc1Byb3BhZ2F0aW9uKTsKICAgICBSVU5fUEhBU0Uo
cGVyZm9ybVByZWRpY3Rpb25Qcm9wYWdhdGlvbik7CiAgICAgUlVOX1BIQVNFKHBlcmZvcm1GaXh1
cCk7CiAgICAgUlVOX1BIQVNFKHBlcmZvcm1JbnZhbGlkYXRpb25Qb2ludEluamVjdGlvbik7Cg==
</data>
<flag name="commit-queue"
          id="463556"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439815</attachid>
            <date>2021-09-30 20:27:05 -0700</date>
            <delta_ts>2021-10-01 11:36:26 -0700</delta_ts>
            <desc>test EWS</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>7018</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNr
d2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjgzMjgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsMjIgKzM0LDQyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAotY2xhc3MgQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CitjbGFzcyBCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlIHsKIHB1YmxpYzoKICAgICBCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBQaGFzZShncmFwaCwg
ImJhY2t3YXJkcyBwcm9wYWdhdGlvbiIpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICAg
ICAgLCBtX2ZsYWdzQXRIZWFkKGdyYXBoKQogICAgIHsKICAgICB9CiAgICAgCiAgICAgYm9vbCBy
dW4oKQogICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2dyYXBoLm51bUJs
b2NrcygpOyArK2kpIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5i
bG9jayhpKTsKKyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBtX2ZsYWdzQXRIZWFkW2Jsb2NrXSA9IE9wZXJhbmRzPE5vZGVGbGFn
cz4oT3BlcmFuZHNMaWtlLCBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQpOworICAg
ICAgICAgICAgbV9mbGFnc0F0SGVhZFtibG9ja10uZmlsbCgwKTsKKyAgICAgICAgfQorCiAgICAg
ICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgIHdoaWxlIChtX2NoYW5nZWQpIHsKICAgICAg
ICAgICAgIG1fY2hhbmdlZCA9IGZhbHNlOworCiAgICAgICAgICAgICBmb3IgKEJsb2NrSW5kZXgg
YmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKICAgICAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7
CiAgICAgICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEZs
YWdzID0gT3BlcmFuZHM8Tm9kZUZsYWdzPihPcGVyYW5kc0xpa2UsIG1fZ3JhcGguYmxvY2soMCkt
PnZhcmlhYmxlc0F0SGVhZCk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEZsYWdzLmZp
bGwoMCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDog
YmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2N1cnJlbnRGbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRGbGFnc1tpXSB8PSBtX2ZsYWdzQXRIZWFkW3N1Y2Nlc3Nv
cl1baV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgYSB0b3dlciBvZiBvdmVyZmxvd2lu
ZyBhZGRpdGlvbnMgZnJvbSBjcmVhdGluZyBhIHZhbHVlIHRoYXQgaXMgb3V0IG9mIHRoZQogICAg
ICAgICAgICAgICAgIC8vIHNhZmUgMl40OCByYW5nZS4KQEAgLTU3LDYgKzc3LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXhJbkJs
b2NrID0gYmxvY2stPnNpemUoKTsgaW5kZXhJbkJsb2NrLS07KQogICAgICAgICAgICAgICAgICAg
ICBwcm9wYWdhdGUoYmxvY2stPmF0KGluZGV4SW5CbG9jaykpOworCisgICAgICAgICAgICAgICAg
aWYgKCEobV9mbGFnc0F0SGVhZFtibG9ja10gPT0gbV9jdXJyZW50RmxhZ3MpKSB7CisgICAgICAg
ICAgICAgICAgICAgIG1fZmxhZ3NBdEhlYWRbYmxvY2tdID0gbV9jdXJyZW50RmxhZ3M7CisgICAg
ICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIC8v
ZGF0YUxvZ0xuKCJjaGFuZ2VkIGlzIHRydWUgYXQgaGVhZCIpOworICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKQEAgLTE1Myw2ICsxNzksMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGlzV2l0aGluUG93ZXJPZlR3bzxwb3dlcj4oZWRnZS5u
b2RlKCkpOwogICAgIH0KIAorICAgIHN0YXRpYyBib29sIG1lcmdlRmxhZ3MoTm9kZUZsYWdzJiBm
bGFnc1JlZiwgTm9kZUZsYWdzIG5ld0ZsYWdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoZWNr
QW5kU2V0KGZsYWdzUmVmLCBmbGFnc1JlZiB8IG5ld0ZsYWdzKTsKKyAgICB9CisKICAgICBib29s
IG1lcmdlRGVmYXVsdEZsYWdzKE5vZGUqIG5vZGUpCiAgICAgewogICAgICAgICBib29sIGNoYW5n
ZWQgPSBmYWxzZTsKQEAgLTE4NSwyNCArMjE2LDM1IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
R2V0TG9jYWw6IHsKICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nl
c3NEYXRhID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgICAgICBmbGFncyAm
PSB+Tm9kZUJ5dGVjb2RlVXNlc0FzSW50OyAvLyBXZSBkb24ndCBjYXJlIGFib3V0IGNyb3NzLWJs
b2NrIHVzZXMtYXMtaW50LgotICAgICAgICAgICAgbV9jaGFuZ2VkIHw9IHZhcmlhYmxlQWNjZXNz
RGF0YS0+bWVyZ2VGbGFncyhmbGFncyk7CisgICAgICAgICAgICBOb2RlRmxhZ3MmIGZsYWdzUmVm
ID0gbV9jdXJyZW50RmxhZ3Mub3BlcmFuZCh2YXJpYWJsZUFjY2Vzc0RhdGEtPm9wZXJhbmQoKSk7
CisgICAgICAgICAgICBtZXJnZUZsYWdzKGZsYWdzUmVmLCBmbGFncyk7CisgICAgICAgICAgICB2
YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlRmxhZ3MoZmxhZ3NSZWYpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFNldExvY2FsOiB7CiAg
ICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0Rh
dGEtPmlzTG9hZGVkRnJvbSgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZmxhZ3MgPSB2YXJpYWJsZUFjY2Vzc0RhdGEtPmZsYWdzKCk7CisgICAgICAgICAgICAvL2lmICgh
dmFyaWFibGVBY2Nlc3NEYXRhLT5pc0xvYWRlZEZyb20oKSkKKyAgICAgICAgICAgIC8vICAgIGJy
ZWFrOworICAgICAgICAgICAgLy9mbGFncyA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+ZmxhZ3MoKTsK
KworICAgICAgICAgICAgT3BlcmFuZCBvcGVyYW5kID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5vcGVy
YW5kKCk7CisgICAgICAgICAgICBOb2RlRmxhZ3MgZmxhZ3MgPSBtX2N1cnJlbnRGbGFncy5vcGVy
YW5kKG9wZXJhbmQpOworCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKGZsYWdzICYgfk5v
ZGVCeXRlY29kZUJhY2tQcm9wTWFzaykpOworCiAgICAgICAgICAgICBmbGFncyB8PSBOb2RlQnl0
ZWNvZGVVc2VzQXNOdW1iZXI7IC8vIEFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgY29udHJvbCBm
bG93IG1heSBjYXVzZSBvdmVyZmxvd3MgdGhhdCBvdXIgbW9kZWxpbmcgY2FuJ3QgaGFuZGxlLgog
ICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCktPm1lcmdlRmxhZ3MoZmxhZ3MpOworCisgICAgICAg
ICAgICBtX2N1cnJlbnRGbGFncy5vcGVyYW5kKG9wZXJhbmQpID0gMDsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBGbHVzaDogewogICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgIG1fY2hhbmdlZCB8PSB2YXJpYWJsZUFj
Y2Vzc0RhdGEtPm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzVmFsdWUpOworICAgICAgICAg
ICAgTm9kZUZsYWdzJiBmbGFnc1JlZiA9IG1fY3VycmVudEZsYWdzLm9wZXJhbmQodmFyaWFibGVB
Y2Nlc3NEYXRhLT5vcGVyYW5kKCkpOworICAgICAgICAgICAgbWVyZ2VGbGFncyhmbGFnc1JlZiwg
Tm9kZUJ5dGVjb2RlVXNlc0FzVmFsdWUpOworICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRh
LT5tZXJnZUZsYWdzKGZsYWdzUmVmKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKQEAgLTQ5MSwxMyArNTMzLDE5IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAg
ICB9CiAgICAgCisgICAgR3JhcGgmIG1fZ3JhcGg7CiAgICAgYm9vbCBtX2FsbG93TmVzdGVkT3Zl
cmZsb3dpbmdBZGRpdGlvbnM7CiAgICAgYm9vbCBtX2NoYW5nZWQ7CisKKyAgICBCbG9ja01hcDxP
cGVyYW5kczxOb2RlRmxhZ3M+PiBtX2ZsYWdzQXRIZWFkOworICAgIE9wZXJhbmRzPE5vZGVGbGFn
cz4gbV9jdXJyZW50RmxhZ3M7CiB9OwogCiBib29sIHBlcmZvcm1CYWNrd2FyZHNQcm9wYWdhdGlv
bihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPEJhY2t3YXJkc1Byb3BhZ2F0
aW9uUGhhc2U+KGdyYXBoKTsKKyAgICBCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlKGdyYXBoKS5y
dW4oKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgICAvL3JldHVybiBydW5QaGFzZTxCYWNrd2FyZHNQ
cm9wYWdhdGlvblBoYXNlPihncmFwaCk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCShyZXZpc2lvbiAyODMyODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1
ZGUgIkNvbW1vblNsb3dQYXRocy5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SGVhcC5oIgogI2lu
Y2x1ZGUgIkRGR0FycmF5TW9kZS5oIgorI2luY2x1ZGUgIkRGR0JhY2t3YXJkc1Byb3BhZ2F0aW9u
UGhhc2UuaCIKICNpbmNsdWRlICJERkdCbG9ja1NldC5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxp
dGllcy5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJpemUuaCIKQEAgLTkwMTgsNiArOTAxOSw4IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICBwYXJzZUNvZGVCbG9jaygpOwogICAg
IGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFj
a0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CiAKKyAgICBwZXJmb3JtQmFja3dhcmRzUHJv
cGFnYXRpb24obV9ncmFwaCk7CisKICAgICBpZiAobV9oYXNBbnlGb3JjZU9TUkV4aXRzKSB7CiAg
ICAgICAgIEJsb2NrU2V0IGJsb2Nrc1RvSWdub3JlOwogICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDI4MzI4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw3ICsy
NTUsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgaWYg
KHZhbGlkYXRpb25FbmFibGVkKCkpCiAgICAgICAgIHZhbGlkYXRlKGRmZyk7CiAgICAgCi0gICAg
UlVOX1BIQVNFKHBlcmZvcm1CYWNrd2FyZHNQcm9wYWdhdGlvbik7CisgICAgLy9SVU5fUEhBU0Uo
cGVyZm9ybUJhY2t3YXJkc1Byb3BhZ2F0aW9uKTsKICAgICBSVU5fUEhBU0UocGVyZm9ybVByZWRp
Y3Rpb25Qcm9wYWdhdGlvbik7CiAgICAgUlVOX1BIQVNFKHBlcmZvcm1GaXh1cCk7CiAgICAgUlVO
X1BIQVNFKHBlcmZvcm1JbnZhbGlkYXRpb25Qb2ludEluamVjdGlvbik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1VuaWZpY2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVW5pZmljYXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDI4MzI4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVW5pZmljYXRpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgZGF0YS0+ZmluZCgpLT5tZXJnZVNob3VsZE5ldmVyVW5ib3goZGF0YS0+c2hvdWxkTmV2
ZXJVbmJveCgpKTsKICAgICAgICAgICAgIGRhdGEtPmZpbmQoKS0+bWVyZ2VJc0xvYWRlZEZyb20o
ZGF0YS0+aXNMb2FkZWRGcm9tKCkpOwogICAgICAgICAgICAgZGF0YS0+ZmluZCgpLT5tZXJnZUlz
UHJvZml0YWJsZVRvVW5ib3goZGF0YS0+aXNQcm9maXRhYmxlVG9VbmJveCgpKTsKKyAgICAgICAg
ICAgIGRhdGEtPmZpbmQoKS0+bWVyZ2VGbGFncyhkYXRhLT5mbGFncygpKTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgbV9ncmFwaC5tX3VuaWZpY2F0aW9uU3RhdGUgPSBHbG9iYWxseVVu
aWZpZWQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439885</attachid>
            <date>2021-10-01 11:36:26 -0700</date>
            <delta_ts>2021-10-01 15:22:14 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>16855</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODMzODQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTEwLTAxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFJ1biBiYWNrd2FyZHMgcHJvcGFnYXRpb24gYmVmb3JlIHdlIHBydW5l
IHRoZSBncmFwaCBhZnRlciBGb3JjZU9TUkV4aXQgbm9kZXMgaW4gQnl0ZWNvZGVQYXJzZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDgyMworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODM1NjUwODg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW4tYmFja3dhcmRzLXByb3BhZ2F0aW9uLWJlZm9y
ZS1vc3ItZXhpdC1wcnVuaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAg
IChtYWluLmFzeW5jIHYyNCk6CisgICAgICAgIChtYWluKToKKwogMjAyMS0wOS0zMCAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGUgREZHL0ZUTCBuZWVkIHRv
IGJlIGF3YXJlIHRoYXQgUHJveHkncyBjYW4gcHJvZHVjZSAiZnVuY3Rpb24iIGZvciB0eXBlb2Yg
YW5kIG1pZ2h0IGJlIGNhbGxhYmxlCkluZGV4OiBKU1Rlc3RzL3J1bi1iYWNrd2FyZHMtcHJvcGFn
YXRpb24tYmVmb3JlLW9zci1leGl0LXBydW5pbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9y
dW4tYmFja3dhcmRzLXByb3BhZ2F0aW9uLWJlZm9yZS1vc3ItZXhpdC1wcnVuaW5nLmpzCShub25l
eGlzdGVudCkKKysrIEpTVGVzdHMvcnVuLWJhY2t3YXJkcy1wcm9wYWdhdGlvbi1iZWZvcmUtb3Ny
LWV4aXQtcHJ1bmluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBACisvL0AgcnVu
RGVmYXVsdCgiLS12YWxpZGF0ZU9wdGlvbnM9dHJ1ZSIsICItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFs
c2UiLCAiLS11c2VDb25jdXJyZW50R0M9ZmFsc2UiLCAiLS10aHJlc2hvbGRGb3JKSVRTb29uPTEw
IiwgIi0tdGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXA9MTAiLCAiLS10aHJlc2hvbGRGb3JPcHRp
bWl6ZUFmdGVyV2FybVVwPTEwMCIsICItLXRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2Fy
bVVwPTEwMCIsICItLXRocmVzaG9sZEZvck9wdGltaXplU29vbj0xMDAiLCAiLS10aHJlc2hvbGRG
b3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwPTEwMDAiLCAiLS10aHJlc2hvbGRGb3JGVExPcHRpbWl6
ZVNvb249MTAwMCIsICItLXZhbGlkYXRlQkNFPXRydWUiLCAiLS11c2VGVExKSVQ9dHJ1ZSIpCisK
K2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3I7Cit9CitmdW5jdGlvbiBtYWluKCkgeworICAgIGxldCB2Mzg7CisgICAgbGV0IHY0MDsKKwor
ICAgIGFzeW5jIGZ1bmN0aW9uIHYyNCgpIHsKKyAgICAgICAgY29uc3QgdjMzID0gZmFsc2U7Cisg
ICAgICAgIGNvbnN0IHYzNCA9IC12MzM7CisgICAgICAgIGNvbnN0IHYzNyA9IHR5cGVvZiBzZWFy
Y2g7CisgICAgICAgIGNvbnN0IHYzOSA9IHYzOCA/IHYzMCA6IDE7CisgICAgICAgIHY0MCA9IHYz
NDsKKyAgICAgICAgICAgIAorICAgICAgICBmb3IgKGxldCB2NDEgPSAwOyB2NDEgIT0gMTAwMDAw
OyB2NDErKykgeyB9CisgICAgfQorICAgIFsxLDEsMV0uZmlsdGVyKHYyNCk7CisgICAgYXNzZXJ0
KE9iamVjdC5pcyh2NDAsIC0wKSA9PT0gdHJ1ZSk7CisgICAgYXNzZXJ0KE9iamVjdC5pcyh2NDAs
IDApID09PSBmYWxzZSk7Cit9CittYWluKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI4MzI4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw0MCBAQAorMjAyMS0xMC0wMSAgU2FhbSBCYXJhdGkgIDxz
YmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBSdW4gYmFja3dhcmRzIHByb3BhZ2F0aW9uIGJl
Zm9yZSB3ZSBwcnVuZSB0aGUgZ3JhcGggYWZ0ZXIgRm9yY2VPU1JFeGl0IG5vZGVzIGluIEJ5dGVj
b2RlUGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzA4MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNTY1MDg4PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlJ3ZlIGZvdW5kIHlldCBhbm90
aGVyIGJ1ZyB3aGVyZSBwcnVuaW5nIGNvZGUgYWZ0ZXIgT1NSIGV4aXRzCisgICAgICAgIGJlZm9y
ZSBydW5uaW5nIGJhY2t3YXJkcyBwcm9wYWdhdGlvbiBsZWFkcyB0byB1cyBicmVha2luZyB0aGUg
c3BlYworICAgICAgICBpbiB3ZWlyZCBJUiBzaXR1YXRpb25zLiBJbiB0aGUgcGFydGljdWxhciB0
ZXN0IGNhc2UgaGVyZSwgd2UgZW5kCisgICAgICAgIHVwIG5vdCB0aGlua2luZyB3ZSBjYXJlIGFi
b3V0IG5lZ2F0aXZlIHplcm8gZm9yIGFuIEFyaXRoTmVnYXRlLAorICAgICAgICBhbmQgd2UgZXhp
dCB0aGUgcHJvZ3JhbSB3aGlsZSByZWNvdmVyaW5nIHRoZSB2YWx1ZSAwIGluc3RlYWQgb2YgLTAu
CisgICAgICAgIAorICAgICAgICBGdW5kYW1lbnRhbGx5LCBiYWNrd2FyZHMgcHJvcGFnYXRpb24g
d2FudHMgdG8gc2VlIGFsbCBieXRlY29kZSB1c2VzLgorICAgICAgICBUaGVyZWZvcmUsIGl0IHNl
ZW1zIGxpa2UgYSBtb3JlIHNvdW5kIHN0cmF0ZWd5IHRvIHJ1biBiYWNrd2FyZHMgcHJvcGFnYXRp
b24KKyAgICAgICAgYmVmb3JlIHdlIGVuZCB1cCBtdWNraW5nIHdpdGggdGhlIGdyYXBoLiBUaGlz
IHBhdGNoIG1ha2VzIGl0IHNvIHdlIHJ1bgorICAgICAgICBiYWNrd2FyZHMgcHJvcGFnYXRpb24g
aW5zaWRlIGJ5dGVjb2RlIHBhcnNlciBiZWZvcmUgd2UgcHJ1bmUgdGhlIElSLgorICAgICAgICBU
aGF0IHdheSwgdGhlIHBoYXNlIHNlZXMgdGhlIGdyYXBoIGFzIGlmIGl0cyBhbiBJUiBvdmVyIHRo
ZSB3aG9sZSBieXRlY29kZQorICAgICAgICBncmFwaC4KKworICAgICAgICAqIGJ5dGVjb2RlL09w
ZXJhbmRzLmg6CisgICAgICAgIChKU0M6Ok9wZXJhbmRzOjpvcGVyYXRvciE9IGNvbnN0KToKKyAg
ICAgICAgKiBkZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6QmFja3dhcmRzUHJvcGFnYXRpb25Q
aGFzZSk6CisgICAgICAgIChKU0M6OkRGRzo6QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6cnVu
KToKKyAgICAgICAgKEpTQzo6REZHOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlOjptZXJnZUZs
YWdzKToKKyAgICAgICAgKEpTQzo6REZHOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlOjpwcm9w
YWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1CYWNrd2FyZHNQcm9wYWdhdGlvbik6
CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuaDoKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlND
OjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVhZEltcGwpOgorICAgICAgICAqIGRmZy9ERkdVbmlm
aWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpVbmlmaWNhdGlvblBoYXNlOjpy
dW4pOgorCiAyMDIxLTA5LTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gUmVtb3ZlIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMuaAkocmV2aXNpb24g
MjgzMjgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM5OCw2ICszOTgsMTEgQEAgcHVibGljOgogICAgICAgICAKICAgICAg
ICAgcmV0dXJuIG1fdmFsdWVzID09IG90aGVyLm1fdmFsdWVzOwogICAgIH0KKworICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBPcGVyYW5kcyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQogICAgIAogICAgIHZvaWQgZHVtcEluQ29u
dGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3Q7CiAgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyODMyODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
Y2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwyMiArMzQs
NTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1jbGFzcyBCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKKy8vIFRoaXMgcGhhc2UgaXMgcnVu
IGF0IHRoZSBlbmQgb2YgQnl0ZWNvZGVQYXJzaW5nLCBzbyB0aGUgZ3JhcGggaXNuJ3QgaW4gYSBm
dWxseSBmb3JtZWQgc3RhdGUuCisvLyBGb3IgZXhhbXBsZSwgd2UgY2FuJ3QgYWNjZXNzIHRoZSBw
cmVkZWNlc3NvciBsaXN0IG9mIGFueSBiYXNpYyBibG9ja3MgeWV0LgorCitjbGFzcyBCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlIHsKIHB1YmxpYzoKICAgICBCYWNrd2FyZHNQcm9wYWdhdGlvblBo
YXNlKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBQaGFzZShncmFwaCwgImJhY2t3YXJkcyBwcm9w
YWdhdGlvbiIpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICAgICAgLCBtX2ZsYWdzQXRI
ZWFkKGdyYXBoKQogICAgIHsKICAgICB9CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAg
ICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgd2hpbGUgKG1fY2hhbmdlZCkgewotICAg
ICAgICAgICAgbV9jaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytpKSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9jayA9IG1fZ3JhcGguYmxvY2soaSk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgbV9mbGFnc0F0SGVhZFtibG9ja10gPSBP
cGVyYW5kczxOb2RlRmxhZ3M+KE9wZXJhbmRzTGlrZSwgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFi
bGVzQXRIZWFkKTsKKyAgICAgICAgICAgIG1fZmxhZ3NBdEhlYWRbYmxvY2tdLmZpbGwoMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBib29sIGNoYW5nZWQ7CisgICAgICAgIGRvIHsKKyAgICAgICAg
ICAgIGNoYW5nZWQgPSBmYWxzZTsKKwogICAgICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2Nr
SW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgICAg
ICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAg
ICAgICAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1TdWNj
ZXNzb3JzID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFudW1TdWNjZXNzb3JzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRGbGFn
cyA9IE9wZXJhbmRzPE5vZGVGbGFncz4oT3BlcmFuZHNMaWtlLCBtX2dyYXBoLmJsb2NrKDApLT52
YXJpYWJsZXNBdEhlYWQpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50RmxhZ3Mu
ZmlsbCgwKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEZsYWdzID0gbV9mbGFnc0F0SGVhZFtibG9jay0+c3VjY2Vzc29yKDAp
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBudW1T
dWNjZXNzb3JzOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBzdWNjZXNzb3IgPSBibG9jay0+c3VjY2Vzc29yKGkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdXJyZW50RmxhZ3Muc2l6ZSgpOyArK2kp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEZsYWdzW2ldIHw9IG1f
ZmxhZ3NBdEhlYWRbc3VjY2Vzc29yXVtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgLy8gUHJldmVudCBhIHRvd2VyIG9mIG92ZXJmbG93aW5nIGFkZGl0aW9u
cyBmcm9tIGNyZWF0aW5nIGEgdmFsdWUgdGhhdCBpcyBvdXQgb2YgdGhlCiAgICAgICAgICAgICAg
ICAgLy8gc2FmZSAyXjQ4IHJhbmdlLgpAQCAtNTcsOCArODYsMTMgQEAgcHVibGljOgogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSBibG9j
ay0+c2l6ZSgpOyBpbmRleEluQmxvY2stLTspCiAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0
ZShibG9jay0+YXQoaW5kZXhJbkJsb2NrKSk7CisKKyAgICAgICAgICAgICAgICBpZiAobV9mbGFn
c0F0SGVhZFtibG9ja10gIT0gbV9jdXJyZW50RmxhZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAg
bV9mbGFnc0F0SGVhZFtibG9ja10gPSBtX2N1cnJlbnRGbGFnczsKKyAgICAgICAgICAgICAgICAg
ICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAg
ICAgICB9CisgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOwogICAgICAgICAKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMTUzLDYgKzE4NywxMSBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gaXNXaXRoaW5Qb3dlck9mVHdvPHBvd2VyPihlZGdlLm5vZGUoKSk7CiAgICAgfQogCisg
ICAgc3RhdGljIGJvb2wgbWVyZ2VGbGFncyhOb2RlRmxhZ3MmIGZsYWdzUmVmLCBOb2RlRmxhZ3Mg
bmV3RmxhZ3MpCisgICAgeworICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQoZmxhZ3NSZWYsIGZs
YWdzUmVmIHwgbmV3RmxhZ3MpOworICAgIH0KKwogICAgIGJvb2wgbWVyZ2VEZWZhdWx0RmxhZ3Mo
Tm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwpAQCAtMTg1
LDI0ICsyMjQsMzIgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRMb2NhbDogewogICAgICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlQnl0ZWNvZGVVc2Vz
QXNJbnQ7IC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgY3Jvc3MtYmxvY2sgdXNlcy1hcy1pbnQuCi0g
ICAgICAgICAgICBtX2NoYW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUZsYWdzKGZs
YWdzKTsKKyAgICAgICAgICAgIE5vZGVGbGFncyYgZmxhZ3NSZWYgPSBtX2N1cnJlbnRGbGFncy5v
cGVyYW5kKHZhcmlhYmxlQWNjZXNzRGF0YS0+b3BlcmFuZCgpKTsKKyAgICAgICAgICAgIG1lcmdl
RmxhZ3MoZmxhZ3NSZWYsIGZsYWdzKTsKKyAgICAgICAgICAgIHZhcmlhYmxlQWNjZXNzRGF0YS0+
bWVyZ2VGbGFncyhmbGFnc1JlZik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgU2V0TG9jYWw6IHsKICAgICAgICAgICAgIFZhcmlhYmxl
QWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRh
KCk7Ci0gICAgICAgICAgICBpZiAoIXZhcmlhYmxlQWNjZXNzRGF0YS0+aXNMb2FkZWRGcm9tKCkp
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBmbGFncyA9IHZhcmlhYmxlQWNj
ZXNzRGF0YS0+ZmxhZ3MoKTsKKworICAgICAgICAgICAgT3BlcmFuZCBvcGVyYW5kID0gdmFyaWFi
bGVBY2Nlc3NEYXRhLT5vcGVyYW5kKCk7CisgICAgICAgICAgICBOb2RlRmxhZ3MgZmxhZ3MgPSBt
X2N1cnJlbnRGbGFncy5vcGVyYW5kKG9wZXJhbmQpOworCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCghKGZsYWdzICYgfk5vZGVCeXRlY29kZUJhY2tQcm9wTWFzaykpOwotICAgICAgICAgICAg
ZmxhZ3MgfD0gTm9kZUJ5dGVjb2RlVXNlc0FzTnVtYmVyOyAvLyBBY2NvdW50IGZvciB0aGUgZmFj
dCB0aGF0IGNvbnRyb2wgZmxvdyBtYXkgY2F1c2Ugb3ZlcmZsb3dzIHRoYXQgb3VyIG1vZGVsaW5n
IGNhbid0IGhhbmRsZS4KKwogICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCktPm1lcmdlRmxhZ3Mo
ZmxhZ3MpOworICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUZsYWdzKGZsYWdz
KTsKKworICAgICAgICAgICAgbV9jdXJyZW50RmxhZ3Mub3BlcmFuZChvcGVyYW5kKSA9IDA7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
Rmx1c2g6IHsKICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NE
YXRhID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgICAgICBtX2NoYW5nZWQg
fD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUZsYWdzKE5vZGVCeXRlY29kZVVzZXNBc1ZhbHVl
KTsKKyAgICAgICAgICAgIE5vZGVGbGFncyYgZmxhZ3NSZWYgPSBtX2N1cnJlbnRGbGFncy5vcGVy
YW5kKHZhcmlhYmxlQWNjZXNzRGF0YS0+b3BlcmFuZCgpKTsKKyAgICAgICAgICAgIG1lcmdlRmxh
Z3MoZmxhZ3NSZWYsIE5vZGVCeXRlY29kZVVzZXNBc1ZhbHVlKTsKKyAgICAgICAgICAgIHZhcmlh
YmxlQWNjZXNzRGF0YS0+bWVyZ2VGbGFncyhmbGFnc1JlZik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC00OTEsMTMgKzUzOCwxNiBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAgICAgfQogICAgIAorICAgIEdyYXBoJiBtX2dyYXBoOwogICAgIGJvb2wgbV9h
bGxvd05lc3RlZE92ZXJmbG93aW5nQWRkaXRpb25zOwotICAgIGJvb2wgbV9jaGFuZ2VkOworCisg
ICAgQmxvY2tNYXA8T3BlcmFuZHM8Tm9kZUZsYWdzPj4gbV9mbGFnc0F0SGVhZDsKKyAgICBPcGVy
YW5kczxOb2RlRmxhZ3M+IG1fY3VycmVudEZsYWdzOwogfTsKIAotYm9vbCBwZXJmb3JtQmFja3dh
cmRzUHJvcGFnYXRpb24oR3JhcGgmIGdyYXBoKQordm9pZCBwZXJmb3JtQmFja3dhcmRzUHJvcGFn
YXRpb24oR3JhcGgmIGdyYXBoKQogewotICAgIHJldHVybiBydW5QaGFzZTxCYWNrd2FyZHNQcm9w
YWdhdGlvblBoYXNlPihncmFwaCk7CisgICAgQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZShncmFw
aCkucnVuKCk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25Q
aGFzZS5oCShyZXZpc2lvbiAyODMyODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NyBAQCBjbGFzcyBHcmFwaDsKIC8vIEluZmVyIGJhc2ljIGluZm9ybWF0aW9uIGFib3V0IGhvdyBu
b2RlcyBhcmUgdXNlZCBieSBkb2luZyBhIGJsb2NrLWxvY2FsCiAvLyBiYWNrd2FyZHMgZmxvdyBh
bmFseXNpcy4KIAotYm9vbCBwZXJmb3JtQmFja3dhcmRzUHJvcGFnYXRpb24oR3JhcGgmKTsKK3Zv
aWQgcGVyZm9ybUJhY2t3YXJkc1Byb3BhZ2F0aW9uKEdyYXBoJik7CiAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDI4MzI4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0
Myw3IEBACiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJh
Y3RIZWFwLmgiCiAjaW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCisjaW5jbHVkZSAiREZHQmFja3dh
cmRzUHJvcGFnYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR0Jsb2NrU2V0LmgiCiAjaW5jbHVk
ZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgpAQCAtOTAx
OCw2ICs5MDE5LDEzIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICBwYXJzZUNv
ZGVCbG9jaygpOwogICAgIGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxv
Y2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CiAKKyAgICAvLyBX
ZSBydW4gYmFja3dhcmRzIHByb3BhZ2F0aW9uIG5vdyBiZWNhdXNlIHRoZSBzb3VuZG5lc3Mgb2Yg
dGhhdCBwaGFzZQorICAgIC8vIHJlbGllcyBvbiBzZWVpbmcgdGhlIGdyYXBoIGFzIGlmIGl0IHdl
cmUgYW4gSVIgb3ZlciBieXRlY29kZSwgc2luY2UKKyAgICAvLyB0aGUgc3BlYy1jb3JyZWN0bmVz
cyBvZiB0aGF0IHBoYXNlIHJlbGllcyBvbiBzZWVpbmcgYWxsIGJ5dGVjb2RlIHVzZXMuCisgICAg
Ly8gVGhlcmVmb3JlLCB3ZSBydW4gdGhpcyBwYXNzIGJlZm9yZSB3ZSBkbyBhbnkgcHJ1bmluZyBv
ZiB0aGUgZ3JhcGgKKyAgICAvLyBhZnRlciBGb3JjZU9TUkV4aXQgc2l0ZXMuCisgICAgcGVyZm9y
bUJhY2t3YXJkc1Byb3BhZ2F0aW9uKG1fZ3JhcGgpOworCiAgICAgaWYgKG1faGFzQW55Rm9yY2VP
U1JFeGl0cykgewogICAgICAgICBCbG9ja1NldCBibG9ja3NUb0lnbm9yZTsKICAgICAgICAgZm9y
IChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewpA
QCAtOTA3NiwxNSArOTA4NCwxNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAKICAg
ICAgICAgICAgICAgICArK25vZGVJbmRleDsKIAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFRoaXMgdmVyaWZpZXMgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSBhbnkg
b2YgdGhlIHN1Y2Nlc3NvcnMncyBwcmVkZWNlc3NvcgotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gbGlzdCBhZnRlciBwbGFudGluZyB0aGUgVW5yZWFjaGFibGUgYmVsb3cuIEF0IHRoaXMgcG9p
bnQgaW4gdGhlIGJ5dGVjb2RlCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXJzZXIsIHdl
IGhhdmVuJ3QgbGlua2VkIHVwIHRoZSBwcmVkZWNlc3NvciBsaXN0cyB5ZXQuCi0gICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNz
b3JzKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3VjY2Vz
c29yLT5wcmVkZWNlc3NvcnMuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIFRoaXMgdmVyaWZpZXMgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSBhbnkgb2Yg
dGhlIHN1Y2Nlc3NvcnMncyBwcmVkZWNlc3NvcgorICAgICAgICAgICAgICAgICAgICAvLyBsaXN0
IGFmdGVyIHBsYW50aW5nIHRoZSBVbnJlYWNoYWJsZSBiZWxvdy4gQXQgdGhpcyBwb2ludCBpbiB0
aGUgYnl0ZWNvZGUKKyAgICAgICAgICAgICAgICAgICAgLy8gcGFyc2VyLCB3ZSBoYXZlbid0IGxp
bmtlZCB1cCB0aGUgcHJlZGVjZXNzb3IgbGlzdHMgeWV0LgorICAgICAgICAgICAgICAgICAgICBm
b3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdWNjZXNzb3ItPnByZWRlY2Vzc29ycy5p
c0VtcHR5KCkpOworICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgIGJsb2NrLT5y
ZXNpemUobm9kZUluZGV4KTsKKworICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgYXV0byBpbnNlcnRMaXZlbmVzc1ByZXNlcnZpbmdPcCA9IFsmXSAoSW5saW5lQ2FsbEZyYW1l
KiBpbmxpbmVDYWxsRnJhbWUsIE5vZGVUeXBlIG9wLCBPcGVyYW5kIG9wZXJhbmQpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBtYXBwaW5n
Lm9wZXJhbmQob3BlcmFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhcmlhYmxl
KSB7CkBAIC05MTA4LDQxICs5MTE4LDkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQog
ICAgICAgICAgICAgICAgICAgICBmbHVzaEZvclRlcm1pbmFsSW1wbChvcmlnaW4uc2VtYW50aWMs
IGFkZEZsdXNoRGlyZWN0LCBhZGRQaGFudG9tTG9jYWxEaXJlY3QpOwogICAgICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCkpOwotCi0gICAgICAgICAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQobm9kZUluZGV4KTsKLQotICAgICAgICAg
ICAgICAgICAgICBub2RlLT5vcmlnaW4gPSBvcmlnaW47Ci0gICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGguZG9Ub0NoaWxkcmVuKG5vZGUsIFsmXSAoRWRnZSBlZGdlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8ga2VlcCBkYXRhIGZsb3cgZWRnZXMgdG8gbm9k
ZXMgZGVmaW5lZCBwcmlvciB0byB0aGUgRm9yY2VPU1JFeGl0LiBUaGUgcmVhc29uCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBmb3IgdGhpcyBpcyB3ZSByZWx5IG9uIGJhY2t3YXJkcyBwcm9w
YWdhdGlvbiBiZWluZyBhYmxlIHRvIHNlZSB0aGUgImZ1bGwiIGJ5dGVjb2RlLiBUbyBtb2RlbAot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcywgd2UgcHJlc2VydmUgdXNlcyBvZiBhIG5v
ZGUgaW4gYSBnZW5lcmljIHdheSBzbyB0aGF0IGJhY2t3YXJkcyBwcm9wYWdhdGlvbiBjYW4gcmVh
c29uCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBhYm91dCB0aGVtLiBUaGVyZWZvcmUsIHdl
IGNhbid0IHJlbW92ZSB1c2VzIG9mIGEgbm9kZSB3aGljaCBpcyBkZWZpbmVkIGJlZm9yZSB0aGUg
Rm9yY2VPU1JFeGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVuIHdoZW4gd2UncmUg
YXQgYSBwb2ludCBpbiB0aGUgcHJvZ3JhbSBhZnRlciB0aGUgRm9yY2VPU1JFeGl0LCBiZWNhdXNl
IHRoYXQgd291bGQgYnJlYWsgYmFja3dhcmRzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBw
cm9wYWdhdGlvbidzIGFuYWx5c2lzIG92ZXIgdGhlIHVzZXMgb2YgYSBub2RlLiBIb3dldmVyLCB3
ZSBkb24ndCBuZWVkIHRoaXMgc2FtZSBwcmVzZXJ2YXRpb24gZm9yCi0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBub2RlcyBkZWZpbmVkIGFmdGVyIEZvcmNlT1NSRXhpdCwgYXMgd2UndmUgYWxy
ZWFkeSBleGl0dGVkIGJlZm9yZSB0aG9zZSBkZWZzLgotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGVkZ2UtPmhhc1Jlc3VsdCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2Vy
dGlvblNldC5pbnNlcnROb2RlKG5vZGVJbmRleCwgU3BlY05vbmUsIFBoYW50b20sIG9yaWdpbiwg
RWRnZShlZGdlLm5vZGUoKSwgVW50eXBlZFVzZSkpOwotICAgICAgICAgICAgICAgICAgICB9KTsK
LQotICAgICAgICAgICAgICAgICAgICBib29sIGlzVGVybWluYWwgPSBub2RlLT5pc1Rlcm1pbmFs
KCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlV2l0aG91dENoZWNrcygpOwot
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc1Rlcm1pbmFsKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXgsIFNwZWNOb25lLCBVbnJl
YWNoYWJsZSwgb3JpZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgKytub2RlSW5kZXg7Ci0gICAg
ICAgICAgICAgICAgfQotCisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
bm9kZUluZGV4LCBTcGVjTm9uZSwgVW5yZWFjaGFibGUsIG9yaWdpbik7CiAgICAgICAgICAgICAg
ICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogCi0gICAgICAgICAgICAgICAgYXV0byBu
b2RlQW5kSW5kZXggPSBibG9jay0+ZmluZFRlcm1pbmFsKCk7Ci0gICAgICAgICAgICAgICAgREZH
X0FTU0VSVChtX2dyYXBoLCBub2RlQW5kSW5kZXgubm9kZSwgbm9kZUFuZEluZGV4Lm5vZGUtPm9w
KCkgPT0gVW5yZWFjaGFibGUpOwotICAgICAgICAgICAgICAgIGJsb2NrLT5yZXNpemUobm9kZUFu
ZEluZGV4LmluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2
aXNpb24gMjgzMjgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAj
aW5jbHVkZSAiREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5oIgotI2luY2x1ZGUgIkRGR0Jh
Y2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdCeXRlQ29kZVBhcnNlci5o
IgogI2luY2x1ZGUgIkRGR0NGQVBoYXNlLmgiCiAjaW5jbHVkZSAiREZHQ0ZHU2ltcGxpZmljYXRp
b25QaGFzZS5oIgpAQCAtMjU1LDcgKzI1NCw2IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFu
Ojpjb21waWxlSW5UaHIKICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgdmFs
aWRhdGUoZGZnKTsKICAgICAKLSAgICBSVU5fUEhBU0UocGVyZm9ybUJhY2t3YXJkc1Byb3BhZ2F0
aW9uKTsKICAgICBSVU5fUEhBU0UocGVyZm9ybVByZWRpY3Rpb25Qcm9wYWdhdGlvbik7CiAgICAg
UlVOX1BIQVNFKHBlcmZvcm1GaXh1cCk7CiAgICAgUlVOX1BIQVNFKHBlcmZvcm1JbnZhbGlkYXRp
b25Qb2ludEluamVjdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vu
aWZpY2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVW5pZmljYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDI4MzI4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVW5pZmljYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc1LDYgKzc1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgZGF0YS0+ZmluZCgpLT5tZXJn
ZVNob3VsZE5ldmVyVW5ib3goZGF0YS0+c2hvdWxkTmV2ZXJVbmJveCgpKTsKICAgICAgICAgICAg
IGRhdGEtPmZpbmQoKS0+bWVyZ2VJc0xvYWRlZEZyb20oZGF0YS0+aXNMb2FkZWRGcm9tKCkpOwog
ICAgICAgICAgICAgZGF0YS0+ZmluZCgpLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3goZGF0YS0+
aXNQcm9maXRhYmxlVG9VbmJveCgpKTsKKyAgICAgICAgICAgIGRhdGEtPmZpbmQoKS0+bWVyZ2VG
bGFncyhkYXRhLT5mbGFncygpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFw
aC5tX3VuaWZpY2F0aW9uU3RhdGUgPSBHbG9iYWxseVVuaWZpZWQ7Cg==
</data>
<flag name="review"
          id="463638"
          type_id="1"
          status="+"
          setter="rmorisset"
    />
    <flag name="commit-queue"
          id="463692"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439894</attachid>
            <date>2021-10-01 12:04:47 -0700</date>
            <delta_ts>2021-10-05 14:13:32 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>16761</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODMzODQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTEwLTAxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFJ1biBiYWNrd2FyZHMgcHJvcGFnYXRpb24gYmVmb3JlIHdlIHBydW5l
IHRoZSBncmFwaCBhZnRlciBGb3JjZU9TUkV4aXQgbm9kZXMgaW4gQnl0ZWNvZGVQYXJzZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDgyMworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODM1NjUwODg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUm9i
aW4gTW9yaXNzZXQuCisKKyAgICAgICAgKiBydW4tYmFja3dhcmRzLXByb3BhZ2F0aW9uLWJlZm9y
ZS1vc3ItZXhpdC1wcnVuaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAg
IChtYWluLmFzeW5jIHYyNCk6CisgICAgICAgIChtYWluKToKKwogMjAyMS0wOS0zMCAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGUgREZHL0ZUTCBuZWVkIHRv
IGJlIGF3YXJlIHRoYXQgUHJveHkncyBjYW4gcHJvZHVjZSAiZnVuY3Rpb24iIGZvciB0eXBlb2Yg
YW5kIG1pZ2h0IGJlIGNhbGxhYmxlCkluZGV4OiBKU1Rlc3RzL3J1bi1iYWNrd2FyZHMtcHJvcGFn
YXRpb24tYmVmb3JlLW9zci1leGl0LXBydW5pbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9y
dW4tYmFja3dhcmRzLXByb3BhZ2F0aW9uLWJlZm9yZS1vc3ItZXhpdC1wcnVuaW5nLmpzCShub25l
eGlzdGVudCkKKysrIEpTVGVzdHMvcnVuLWJhY2t3YXJkcy1wcm9wYWdhdGlvbi1iZWZvcmUtb3Ny
LWV4aXQtcHJ1bmluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBACisvL0AgcnVu
RGVmYXVsdCgiLS12YWxpZGF0ZU9wdGlvbnM9dHJ1ZSIsICItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFs
c2UiLCAiLS11c2VDb25jdXJyZW50R0M9ZmFsc2UiLCAiLS10aHJlc2hvbGRGb3JKSVRTb29uPTEw
IiwgIi0tdGhyZXNob2xkRm9ySklUQWZ0ZXJXYXJtVXA9MTAiLCAiLS10aHJlc2hvbGRGb3JPcHRp
bWl6ZUFmdGVyV2FybVVwPTEwMCIsICItLXRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJMb25nV2Fy
bVVwPTEwMCIsICItLXRocmVzaG9sZEZvck9wdGltaXplU29vbj0xMDAiLCAiLS10aHJlc2hvbGRG
b3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwPTEwMDAiLCAiLS10aHJlc2hvbGRGb3JGVExPcHRpbWl6
ZVNvb249MTAwMCIsICItLXZhbGlkYXRlQkNFPXRydWUiLCAiLS11c2VGVExKSVQ9dHJ1ZSIpCisK
K2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3I7Cit9CitmdW5jdGlvbiBtYWluKCkgeworICAgIGxldCB2Mzg7CisgICAgbGV0IHY0MDsKKwor
ICAgIGFzeW5jIGZ1bmN0aW9uIHYyNCgpIHsKKyAgICAgICAgY29uc3QgdjMzID0gZmFsc2U7Cisg
ICAgICAgIGNvbnN0IHYzNCA9IC12MzM7CisgICAgICAgIGNvbnN0IHYzNyA9IHR5cGVvZiBzZWFy
Y2g7CisgICAgICAgIGNvbnN0IHYzOSA9IHYzOCA/IHYzMCA6IDE7CisgICAgICAgIHY0MCA9IHYz
NDsKKyAgICAgICAgICAgIAorICAgICAgICBmb3IgKGxldCB2NDEgPSAwOyB2NDEgIT0gMTAwMDAw
OyB2NDErKykgeyB9CisgICAgfQorICAgIFsxLDEsMV0uZmlsdGVyKHYyNCk7CisgICAgYXNzZXJ0
KE9iamVjdC5pcyh2NDAsIC0wKSA9PT0gdHJ1ZSk7CisgICAgYXNzZXJ0KE9iamVjdC5pcyh2NDAs
IDApID09PSBmYWxzZSk7Cit9CittYWluKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI4MzI4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw0MCBAQAorMjAyMS0xMC0wMSAgU2FhbSBCYXJhdGkgIDxz
YmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBSdW4gYmFja3dhcmRzIHByb3BhZ2F0aW9uIGJl
Zm9yZSB3ZSBwcnVuZSB0aGUgZ3JhcGggYWZ0ZXIgRm9yY2VPU1JFeGl0IG5vZGVzIGluIEJ5dGVj
b2RlUGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzA4MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNTY1MDg4PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFJvYmluIE1vcmlzc2V0LgorCisgICAgICAgIFdlJ3ZlIGZvdW5kIHlldCBhbm90
aGVyIGJ1ZyB3aGVyZSBwcnVuaW5nIGNvZGUgYWZ0ZXIgT1NSIGV4aXRzCisgICAgICAgIGJlZm9y
ZSBydW5uaW5nIGJhY2t3YXJkcyBwcm9wYWdhdGlvbiBsZWFkcyB0byB1cyBicmVha2luZyB0aGUg
c3BlYworICAgICAgICBpbiB3ZWlyZCBJUiBzaXR1YXRpb25zLiBJbiB0aGUgcGFydGljdWxhciB0
ZXN0IGNhc2UgaGVyZSwgd2UgZW5kCisgICAgICAgIHVwIG5vdCB0aGlua2luZyB3ZSBjYXJlIGFi
b3V0IG5lZ2F0aXZlIHplcm8gZm9yIGFuIEFyaXRoTmVnYXRlLAorICAgICAgICBhbmQgd2UgZXhp
dCB0aGUgcHJvZ3JhbSB3aGlsZSByZWNvdmVyaW5nIHRoZSB2YWx1ZSAwIGluc3RlYWQgb2YgLTAu
CisgICAgICAgIAorICAgICAgICBGdW5kYW1lbnRhbGx5LCBiYWNrd2FyZHMgcHJvcGFnYXRpb24g
d2FudHMgdG8gc2VlIGFsbCBieXRlY29kZSB1c2VzLgorICAgICAgICBUaGVyZWZvcmUsIGl0IHNl
ZW1zIGxpa2UgYSBtb3JlIHNvdW5kIHN0cmF0ZWd5IHRvIHJ1biBiYWNrd2FyZHMgcHJvcGFnYXRp
b24KKyAgICAgICAgYmVmb3JlIHdlIGVuZCB1cCBtdWNraW5nIHdpdGggdGhlIGdyYXBoLiBUaGlz
IHBhdGNoIG1ha2VzIGl0IHNvIHdlIHJ1bgorICAgICAgICBiYWNrd2FyZHMgcHJvcGFnYXRpb24g
aW5zaWRlIGJ5dGVjb2RlIHBhcnNlciBiZWZvcmUgd2UgcHJ1bmUgdGhlIElSLgorICAgICAgICBU
aGF0IHdheSwgdGhlIHBoYXNlIHNlZXMgdGhlIGdyYXBoIGFzIGlmIGl0J3MgYW4gSVIgb3ZlciB0
aGUgd2hvbGUgYnl0ZWNvZGUKKyAgICAgICAgZ3JhcGguCisKKyAgICAgICAgKiBieXRlY29kZS9P
cGVyYW5kcy5oOgorICAgICAgICAoSlNDOjpPcGVyYW5kczo6b3BlcmF0b3IhPSBjb25zdCk6Cisg
ICAgICAgICogZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2U6OkJhY2t3YXJkc1Byb3BhZ2F0aW9u
UGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2U6OnJ1
bik6CisgICAgICAgIChKU0M6OkRGRzo6QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6bWVyZ2VG
bGFncyk6CisgICAgICAgIChKU0M6OkRGRzo6QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6cHJv
cGFnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtQmFja3dhcmRzUHJvcGFnYXRpb24p
OgorICAgICAgICAqIGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmg6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAgKiBkZmcvREZHVW5p
ZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VW5pZmljYXRpb25QaGFzZTo6
cnVuKToKKwogMjAyMS0wOS0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFtKU0NdIFJlbW92ZSBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlcgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzLmgJKHJldmlzaW9u
IDI4MzI4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOTgsNiArMzk4LDExIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAg
ICAgIHJldHVybiBtX3ZhbHVlcyA9PSBvdGhlci5tX3ZhbHVlczsKICAgICB9CisKKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgT3BlcmFuZHMmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KICAgICAKICAgICB2b2lkIGR1bXBJbkNv
bnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0OwogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMjgzMjgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
YWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMjIgKzM0
LDQ4IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dh
cmRzUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CisvLyBUaGlzIHBoYXNlIGlzIHJ1
biBhdCB0aGUgZW5kIG9mIEJ5dGVjb2RlUGFyc2luZywgc28gdGhlIGdyYXBoIGlzbid0IGluIGEg
ZnVsbHkgZm9ybWVkIHN0YXRlLgorLy8gRm9yIGV4YW1wbGUsIHdlIGNhbid0IGFjY2VzcyB0aGUg
cHJlZGVjZXNzb3IgbGlzdCBvZiBhbnkgYmFzaWMgYmxvY2tzIHlldC4KKworY2xhc3MgQmFja3dh
cmRzUHJvcGFnYXRpb25QaGFzZSB7CiBwdWJsaWM6CiAgICAgQmFja3dhcmRzUHJvcGFnYXRpb25Q
aGFzZShHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogUGhhc2UoZ3JhcGgsICJiYWNrd2FyZHMgcHJv
cGFnYXRpb24iKQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgICAgICwgbV9mbGFnc0F0
SGVhZChncmFwaCkKICAgICB7CiAgICAgfQogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0g
ICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgIHdoaWxlIChtX2NoYW5nZWQpIHsKLSAg
ICAgICAgICAgIG1fY2hhbmdlZCA9IGZhbHNlOworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJs
b2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgICAgICBtX2Zs
YWdzQXRIZWFkW2Jsb2NrXSA9IE9wZXJhbmRzPE5vZGVGbGFncz4oT3BlcmFuZHNMaWtlLCBtX2dy
YXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQpOworICAgICAgICAgICAgbV9mbGFnc0F0SGVh
ZFtibG9ja10uZmlsbCgwKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAg
ICAgICAgZG8geworICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOworCiAgICAgICAgICAgICBm
b3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5k
ZXgtLTspIHsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxv
Y2soYmxvY2tJbmRleCk7CiAgICAgICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIG51bVN1Y2Nlc3NvcnMgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOworICAg
ICAgICAgICAgICAgICAgICBpZiAoIW51bVN1Y2Nlc3NvcnMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEZsYWdzID0gT3BlcmFuZHM8Tm9kZUZsYWdzPihPcGVyYW5kc0xpa2Us
IG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2N1cnJlbnRGbGFncy5maWxsKDApOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50RmxhZ3MgPSBtX2ZsYWdzQXRIZWFk
W2Jsb2NrLT5zdWNjZXNzb3IoMCldOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8IG51bVN1Y2Nlc3NvcnM7ICsraSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA9IGJsb2NrLT5zdWNjZXNzb3IoaSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2N1cnJl
bnRGbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9j
dXJyZW50RmxhZ3NbaV0gfD0gbV9mbGFnc0F0SGVhZFtzdWNjZXNzb3JdW2ldOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorCiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IGEgdG93ZXIgb2Yg
b3ZlcmZsb3dpbmcgYWRkaXRpb25zIGZyb20gY3JlYXRpbmcgYSB2YWx1ZSB0aGF0IGlzIG91dCBv
ZiB0aGUKICAgICAgICAgICAgICAgICAvLyBzYWZlIDJeNDggcmFuZ2UuCkBAIC01Nyw4ICs4Mywx
MyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGluZGV4SW5CbG9jayA9IGJsb2NrLT5zaXplKCk7IGluZGV4SW5CbG9jay0tOykKICAgICAgICAg
ICAgICAgICAgICAgcHJvcGFnYXRlKGJsb2NrLT5hdChpbmRleEluQmxvY2spKTsKKworICAgICAg
ICAgICAgICAgIGlmIChtX2ZsYWdzQXRIZWFkW2Jsb2NrXSAhPSBtX2N1cnJlbnRGbGFncykgewor
ICAgICAgICAgICAgICAgICAgICBtX2ZsYWdzQXRIZWFkW2Jsb2NrXSA9IG1fY3VycmVudEZsYWdz
OworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CiAg
ICAgICAgIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNTMsNiArMTg0LDExIEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiBpc1dpdGhpblBvd2VyT2ZUd288cG93ZXI+KGVkZ2Uu
bm9kZSgpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgYm9vbCBtZXJnZUZsYWdzKE5vZGVGbGFncyYg
ZmxhZ3NSZWYsIE5vZGVGbGFncyBuZXdGbGFncykKKyAgICB7CisgICAgICAgIHJldHVybiBjaGVj
a0FuZFNldChmbGFnc1JlZiwgZmxhZ3NSZWYgfCBuZXdGbGFncyk7CisgICAgfQorCiAgICAgYm9v
bCBtZXJnZURlZmF1bHRGbGFncyhOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgYm9vbCBjaGFu
Z2VkID0gZmFsc2U7CkBAIC0xODUsMjQgKzIyMSwzMiBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IEdldExvY2FsOiB7CiAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNj
ZXNzRGF0YSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgZmxhZ3Mg
Jj0gfk5vZGVCeXRlY29kZVVzZXNBc0ludDsgLy8gV2UgZG9uJ3QgY2FyZSBhYm91dCBjcm9zcy1i
bG9jayB1c2VzLWFzLWludC4KLSAgICAgICAgICAgIG1fY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vz
c0RhdGEtPm1lcmdlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAgTm9kZUZsYWdzJiBmbGFnc1Jl
ZiA9IG1fY3VycmVudEZsYWdzLm9wZXJhbmQodmFyaWFibGVBY2Nlc3NEYXRhLT5vcGVyYW5kKCkp
OworICAgICAgICAgICAgbWVyZ2VGbGFncyhmbGFnc1JlZiwgZmxhZ3MpOworICAgICAgICAgICAg
dmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUZsYWdzKGZsYWdzUmVmKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBTZXRMb2NhbDogewog
ICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2Rl
LT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgIGlmICghdmFyaWFibGVBY2Nlc3NE
YXRhLT5pc0xvYWRlZEZyb20oKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGZsYWdzID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5mbGFncygpOworCisgICAgICAgICAgICBPcGVy
YW5kIG9wZXJhbmQgPSB2YXJpYWJsZUFjY2Vzc0RhdGEtPm9wZXJhbmQoKTsKKyAgICAgICAgICAg
IE5vZGVGbGFncyBmbGFncyA9IG1fY3VycmVudEZsYWdzLm9wZXJhbmQob3BlcmFuZCk7CisKICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEoZmxhZ3MgJiB+Tm9kZUJ5dGVjb2RlQmFja1Byb3BN
YXNrKSk7Ci0gICAgICAgICAgICBmbGFncyB8PSBOb2RlQnl0ZWNvZGVVc2VzQXNOdW1iZXI7IC8v
IEFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgY29udHJvbCBmbG93IG1heSBjYXVzZSBvdmVyZmxv
d3MgdGhhdCBvdXIgbW9kZWxpbmcgY2FuJ3QgaGFuZGxlLgorCiAgICAgICAgICAgICBub2RlLT5j
aGlsZDEoKS0+bWVyZ2VGbGFncyhmbGFncyk7CisgICAgICAgICAgICB2YXJpYWJsZUFjY2Vzc0Rh
dGEtPm1lcmdlRmxhZ3MoZmxhZ3MpOworCisgICAgICAgICAgICBtX2N1cnJlbnRGbGFncy5vcGVy
YW5kKG9wZXJhbmQpID0gMDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBGbHVzaDogewogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAg
ICAgICAgICAgIG1fY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlRmxhZ3MoTm9k
ZUJ5dGVjb2RlVXNlc0FzVmFsdWUpOworICAgICAgICAgICAgTm9kZUZsYWdzJiBmbGFnc1JlZiA9
IG1fY3VycmVudEZsYWdzLm9wZXJhbmQodmFyaWFibGVBY2Nlc3NEYXRhLT5vcGVyYW5kKCkpOwor
ICAgICAgICAgICAgbWVyZ2VGbGFncyhmbGFnc1JlZiwgTm9kZUJ5dGVjb2RlVXNlc0FzVmFsdWUp
OworICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUZsYWdzKGZsYWdzUmVmKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTQ5MSwxMyAr
NTM1LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgR3JhcGgmIG1f
Z3JhcGg7CiAgICAgYm9vbCBtX2FsbG93TmVzdGVkT3ZlcmZsb3dpbmdBZGRpdGlvbnM7Ci0gICAg
Ym9vbCBtX2NoYW5nZWQ7CisKKyAgICBCbG9ja01hcDxPcGVyYW5kczxOb2RlRmxhZ3M+PiBtX2Zs
YWdzQXRIZWFkOworICAgIE9wZXJhbmRzPE5vZGVGbGFncz4gbV9jdXJyZW50RmxhZ3M7CiB9Owog
Ci1ib29sIHBlcmZvcm1CYWNrd2FyZHNQcm9wYWdhdGlvbihHcmFwaCYgZ3JhcGgpCit2b2lkIHBl
cmZvcm1CYWNrd2FyZHNQcm9wYWdhdGlvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgcmV0dXJuIHJ1
blBoYXNlPEJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2U+KGdyYXBoKTsKKyAgICBCYWNrd2FyZHNQ
cm9wYWdhdGlvblBoYXNlKGdyYXBoKS5ydW4oKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdh
dGlvblBoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
YWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmgJKHJldmlzaW9uIDI4MzI4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIEdyYXBoOwogLy8gSW5mZXIgYmFzaWMgaW5m
b3JtYXRpb24gYWJvdXQgaG93IG5vZGVzIGFyZSB1c2VkIGJ5IGRvaW5nIGEgYmxvY2stbG9jYWwK
IC8vIGJhY2t3YXJkcyBmbG93IGFuYWx5c2lzLgogCi1ib29sIHBlcmZvcm1CYWNrd2FyZHNQcm9w
YWdhdGlvbihHcmFwaCYpOwordm9pZCBwZXJmb3JtQmFja3dhcmRzUHJvcGFnYXRpb24oR3JhcGgm
KTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjgzMjgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIK
ICNpbmNsdWRlICJERkdBYnN0cmFjdEhlYXAuaCIKICNpbmNsdWRlICJERkdBcnJheU1vZGUuaCIK
KyNpbmNsdWRlICJERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZH
QmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJERkdD
bG9iYmVyaXplLmgiCkBAIC05MDE4LDYgKzkwMTksMTMgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2UoKQogICAgIHBhcnNlQ29kZUJsb2NrKCk7CiAgICAgbGlua0Jsb2NrcyhpbmxpbmVTdGFj
a0VudHJ5Lm1fdW5saW5rZWRCbG9ja3MsIGlubGluZVN0YWNrRW50cnkubV9ibG9ja0xpbmtpbmdU
YXJnZXRzKTsKIAorICAgIC8vIFdlIHJ1biBiYWNrd2FyZHMgcHJvcGFnYXRpb24gbm93IGJlY2F1
c2UgdGhlIHNvdW5kbmVzcyBvZiB0aGF0IHBoYXNlCisgICAgLy8gcmVsaWVzIG9uIHNlZWluZyB0
aGUgZ3JhcGggYXMgaWYgaXQgd2VyZSBhbiBJUiBvdmVyIGJ5dGVjb2RlLCBzaW5jZQorICAgIC8v
IHRoZSBzcGVjLWNvcnJlY3RuZXNzIG9mIHRoYXQgcGhhc2UgcmVsaWVzIG9uIHNlZWluZyBhbGwg
Ynl0ZWNvZGUgdXNlcy4KKyAgICAvLyBUaGVyZWZvcmUsIHdlIHJ1biB0aGlzIHBhc3MgYmVmb3Jl
IHdlIGRvIGFueSBwcnVuaW5nIG9mIHRoZSBncmFwaAorICAgIC8vIGFmdGVyIEZvcmNlT1NSRXhp
dCBzaXRlcy4KKyAgICBwZXJmb3JtQmFja3dhcmRzUHJvcGFnYXRpb24obV9ncmFwaCk7CisKICAg
ICBpZiAobV9oYXNBbnlGb3JjZU9TUkV4aXRzKSB7CiAgICAgICAgIEJsb2NrU2V0IGJsb2Nrc1Rv
SWdub3JlOwogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJ
bk5hdHVyYWxPcmRlcigpKSB7CkBAIC05MDc2LDE1ICs5MDg0LDE3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlKCkKIAogICAgICAgICAgICAgICAgICsrbm9kZUluZGV4OwogCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB2ZXJpZmllcyB0aGF0IHdlIGRvbid0
IG5lZWQgdG8gY2hhbmdlIGFueSBvZiB0aGUgc3VjY2Vzc29ycydzIHByZWRlY2Vzc29yCi0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyBsaXN0IGFmdGVyIHBsYW50aW5nIHRoZSBVbnJlYWNoYWJs
ZSBiZWxvdy4gQXQgdGhpcyBwb2ludCBpbiB0aGUgYnl0ZWNvZGUKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHBhcnNlciwgd2UgaGF2ZW4ndCBsaW5rZWQgdXAgdGhlIHByZWRlY2Vzc29yIGxp
c3RzIHlldC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vz
c29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChzdWNjZXNzb3ItPnByZWRlY2Vzc29ycy5pc0VtcHR5KCkpOwotICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB2ZXJpZmllcyB0aGF0IHdlIGRvbid0IG5l
ZWQgdG8gY2hhbmdlIGFueSBvZiB0aGUgc3VjY2Vzc29ycydzIHByZWRlY2Vzc29yCisgICAgICAg
ICAgICAgICAgICAgIC8vIGxpc3QgYWZ0ZXIgcGxhbnRpbmcgdGhlIFVucmVhY2hhYmxlIGJlbG93
LiBBdCB0aGlzIHBvaW50IGluIHRoZSBieXRlY29kZQorICAgICAgICAgICAgICAgICAgICAvLyBw
YXJzZXIsIHdlIGhhdmVuJ3QgbGlua2VkIHVwIHRoZSBwcmVkZWNlc3NvciBsaXN0cyB5ZXQuCisg
ICAgICAgICAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1
Y2Nlc3NvcnMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN1Y2Nl
c3Nvci0+cHJlZGVjZXNzb3JzLmlzRW1wdHkoKSk7CisgICAgICAgICAgICAgICAgfQogCisgICAg
ICAgICAgICAgICAgYmxvY2stPnJlc2l6ZShub2RlSW5kZXgpOworCisgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICBhdXRvIGluc2VydExpdmVuZXNzUHJlc2VydmluZ09wID0g
WyZdIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgTm9kZVR5cGUgb3AsIE9wZXJh
bmQgb3BlcmFuZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRh
KiB2YXJpYWJsZSA9IG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghdmFyaWFibGUpIHsKQEAgLTkxMDgsNDEgKzkxMTgsOSBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgICAgICAgICAgICAgIGZsdXNoRm9yVGVybWluYWxJ
bXBsKG9yaWdpbi5zZW1hbnRpYywgYWRkRmx1c2hEaXJlY3QsIGFkZFBoYW50b21Mb2NhbERpcmVj
dCk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsK
LSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZUluZGV4IDwgYmxvY2stPnNp
emUoKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2Rl
SW5kZXgpOwotCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbiA9IG9yaWdpbjsKLSAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4obm9kZSwgWyZdIChFZGdlIGVk
Z2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBrZWVwIGRh
dGEgZmxvdyBlZGdlcyB0byBub2RlcyBkZWZpbmVkIHByaW9yIHRvIHRoZSBGb3JjZU9TUkV4aXQu
IFRoZSByZWFzb24KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciB0aGlzIGlzIHdlIHJl
bHkgb24gYmFja3dhcmRzIHByb3BhZ2F0aW9uIGJlaW5nIGFibGUgdG8gc2VlIHRoZSAiZnVsbCIg
Ynl0ZWNvZGUuIFRvIG1vZGVsCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLCB3ZSBw
cmVzZXJ2ZSB1c2VzIG9mIGEgbm9kZSBpbiBhIGdlbmVyaWMgd2F5IHNvIHRoYXQgYmFja3dhcmRz
IHByb3BhZ2F0aW9uIGNhbiByZWFzb24KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFib3V0
IHRoZW0uIFRoZXJlZm9yZSwgd2UgY2FuJ3QgcmVtb3ZlIHVzZXMgb2YgYSBub2RlIHdoaWNoIGlz
IGRlZmluZWQgYmVmb3JlIHRoZSBGb3JjZU9TUkV4aXQKLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGV2ZW4gd2hlbiB3ZSdyZSBhdCBhIHBvaW50IGluIHRoZSBwcm9ncmFtIGFmdGVyIHRoZSBG
b3JjZU9TUkV4aXQsIGJlY2F1c2UgdGhhdCB3b3VsZCBicmVhayBiYWNrd2FyZHMKLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHByb3BhZ2F0aW9uJ3MgYW5hbHlzaXMgb3ZlciB0aGUgdXNlcyBv
ZiBhIG5vZGUuIEhvd2V2ZXIsIHdlIGRvbid0IG5lZWQgdGhpcyBzYW1lIHByZXNlcnZhdGlvbiBm
b3IKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vZGVzIGRlZmluZWQgYWZ0ZXIgRm9yY2VP
U1JFeGl0LCBhcyB3ZSd2ZSBhbHJlYWR5IGV4aXR0ZWQgYmVmb3JlIHRob3NlIGRlZnMuCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+aGFzUmVzdWx0KCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobm9kZUluZGV4LCBTcGVjTm9u
ZSwgUGhhbnRvbSwgb3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBVbnR5cGVkVXNlKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAgICAgIGJvb2wgaXNUZXJtaW5h
bCA9IG5vZGUtPmlzVGVybWluYWwoKTsKLQotICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1v
dmVXaXRob3V0Q2hlY2tzKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzVGVybWluYWwp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKG5vZGVJ
bmRleCwgU3BlY05vbmUsIFVucmVhY2hhYmxlLCBvcmlnaW4pOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAg
ICArK25vZGVJbmRleDsKLSAgICAgICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgICAgICBpbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXgsIFNwZWNOb25lLCBVbnJlYWNoYWJsZSwgb3Jp
Z2luKTsKICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CiAKLSAg
ICAgICAgICAgICAgICBhdXRvIG5vZGVBbmRJbmRleCA9IGJsb2NrLT5maW5kVGVybWluYWwoKTsK
LSAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGVBbmRJbmRleC5ub2RlLCBu
b2RlQW5kSW5kZXgubm9kZS0+b3AoKSA9PSBVbnJlYWNoYWJsZSk7Ci0gICAgICAgICAgICAgICAg
YmxvY2stPnJlc2l6ZShub2RlQW5kSW5kZXguaW5kZXggKyAxKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyODMyODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYg
RU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
LmgiCi0jaW5jbHVkZSAiREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oIgogI2luY2x1ZGUg
IkRGR0J5dGVDb2RlUGFyc2VyLmgiCiAjaW5jbHVkZSAiREZHQ0ZBUGhhc2UuaCIKICNpbmNsdWRl
ICJERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmgiCkBAIC0yNTUsNyArMjU0LDYgQEAgUGxhbjo6
Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgIGlmICh2YWxpZGF0aW9uRW5h
YmxlZCgpKQogICAgICAgICB2YWxpZGF0ZShkZmcpOwogICAgIAotICAgIFJVTl9QSEFTRShwZXJm
b3JtQmFja3dhcmRzUHJvcGFnYXRpb24pOwogICAgIFJVTl9QSEFTRShwZXJmb3JtUHJlZGljdGlv
blByb3BhZ2F0aW9uKTsKICAgICBSVU5fUEhBU0UocGVyZm9ybUZpeHVwKTsKICAgICBSVU5fUEhB
U0UocGVyZm9ybUludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVW5pZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVbmlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjgzMjgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVbmlmaWNhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBkYXRhLT5maW5kKCktPm1lcmdlU2hvdWxkTmV2ZXJVbmJveChkYXRhLT5zaG91bGROZXZlclVu
Ym94KCkpOwogICAgICAgICAgICAgZGF0YS0+ZmluZCgpLT5tZXJnZUlzTG9hZGVkRnJvbShkYXRh
LT5pc0xvYWRlZEZyb20oKSk7CiAgICAgICAgICAgICBkYXRhLT5maW5kKCktPm1lcmdlSXNQcm9m
aXRhYmxlVG9VbmJveChkYXRhLT5pc1Byb2ZpdGFibGVUb1VuYm94KCkpOworICAgICAgICAgICAg
ZGF0YS0+ZmluZCgpLT5tZXJnZUZsYWdzKGRhdGEtPmZsYWdzKCkpOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBtX2dyYXBoLm1fdW5pZmljYXRpb25TdGF0ZSA9IEdsb2JhbGx5VW5pZmll
ZDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440264</attachid>
            <date>2021-10-05 14:13:32 -0700</date>
            <delta_ts>2021-10-06 08:49:52 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>17232</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODM1MjYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTEwLTA0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFJ1biBiYWNrd2FyZHMgcHJvcGFnYXRpb24gYmVmb3JlIHdlIHBydW5l
IHRoZSBncmFwaCBhZnRlciBGb3JjZU9TUkV4aXQgbm9kZXMgaW4gQnl0ZWNvZGVQYXJzZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDgyMworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODM1NjUwODg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUm9i
aW4gTW9yaXNzZXQuCisKKyAgICAgICAgKiBydW4tYmFja3dhcmRzLXByb3BhZ2F0aW9uLWJlZm9y
ZS1vc3ItZXhpdC1wcnVuaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAg
IChtYWluLmFzeW5jIHYyNCk6CisgICAgICAgIChtYWluKToKKwogMjAyMS0xMC0wNCAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyaW5zaWNHZXR0ZXJBY2Nl
c3NDYXNlIGltcGxlbWVudGF0aW9uIG9mIF9fcHJvdG9fXyBuZWVkcyB0byBoYW5kbGUgZ2V0X2J5
X2lkX3dpdGhfdGhpcwpJbmRleDogSlNUZXN0cy9ydW4tYmFja3dhcmRzLXByb3BhZ2F0aW9uLWJl
Zm9yZS1vc3ItZXhpdC1wcnVuaW5nLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvcnVuLWJhY2t3
YXJkcy1wcm9wYWdhdGlvbi1iZWZvcmUtb3NyLWV4aXQtcHJ1bmluZy5qcwkobm9uZXhpc3RlbnQp
CisrKyBKU1Rlc3RzL3J1bi1iYWNrd2FyZHMtcHJvcGFnYXRpb24tYmVmb3JlLW9zci1leGl0LXBy
dW5pbmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNCBAQAorLy9AIHJ1bkRlZmF1bHQo
Ii0tdmFsaWRhdGVPcHRpb25zPXRydWUiLCAiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIiwgIi0t
dXNlQ29uY3VycmVudEdDPWZhbHNlIiwgIi0tdGhyZXNob2xkRm9ySklUU29vbj0xMCIsICItLXRo
cmVzaG9sZEZvckpJVEFmdGVyV2FybVVwPTEwIiwgIi0tdGhyZXNob2xkRm9yT3B0aW1pemVBZnRl
cldhcm1VcD0xMDAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcD0xMDAi
LCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZVNvb249MTAwIiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0
aW1pemVBZnRlcldhcm1VcD0xMDAwIiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29uPTEw
MDAiLCAiLS12YWxpZGF0ZUJDRT10cnVlIiwgIi0tdXNlRlRMSklUPXRydWUiKQorCitmdW5jdGlv
biBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yOworfQor
ZnVuY3Rpb24gbWFpbigpIHsKKyAgICBsZXQgdjM4OworICAgIGxldCB2NDA7CisKKyAgICBhc3lu
YyBmdW5jdGlvbiB2MjQoKSB7CisgICAgICAgIGNvbnN0IHYzMyA9IGZhbHNlOworICAgICAgICBj
b25zdCB2MzQgPSAtdjMzOworICAgICAgICBjb25zdCB2MzcgPSB0eXBlb2Ygc2VhcmNoOworICAg
ICAgICBjb25zdCB2MzkgPSB2MzggPyB2MzAgOiAxOworICAgICAgICB2NDAgPSB2MzQ7CisgICAg
ICAgICAgICAKKyAgICAgICAgZm9yIChsZXQgdjQxID0gMDsgdjQxICE9IDEwMDAwMDsgdjQxKysp
IHsgfQorICAgIH0KKyAgICBbMSwxLDFdLmZpbHRlcih2MjQpOworICAgIGFzc2VydChPYmplY3Qu
aXModjQwLCAtMCkgPT09IHRydWUpOworICAgIGFzc2VydChPYmplY3QuaXModjQwLCAwKSA9PT0g
ZmFsc2UpOworfQorbWFpbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyODM1MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMTAtMDQgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CisKKyAgICAgICAgUnVuIGJhY2t3YXJkcyBwcm9wYWdhdGlvbiBiZWZvcmUgd2Ug
cHJ1bmUgdGhlIGdyYXBoIGFmdGVyIEZvcmNlT1NSRXhpdCBub2RlcyBpbiBCeXRlY29kZVBhcnNl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwODIz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MzU2NTA4OD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBSb2JpbiBNb3Jpc3NldC4KKworICAgICAgICBXZSd2ZSBmb3VuZCB5ZXQgYW5vdGhlciBidWcg
d2hlcmUgcHJ1bmluZyBjb2RlIGFmdGVyIE9TUiBleGl0cworICAgICAgICBiZWZvcmUgcnVubmlu
ZyBiYWNrd2FyZHMgcHJvcGFnYXRpb24gbGVhZHMgdG8gdXMgYnJlYWtpbmcgdGhlIHNwZWMKKyAg
ICAgICAgaW4gd2VpcmQgSVIgc2l0dWF0aW9ucy4gSW4gdGhlIHBhcnRpY3VsYXIgdGVzdCBjYXNl
IGhlcmUsIHdlIGVuZAorICAgICAgICB1cCBub3QgdGhpbmtpbmcgd2UgY2FyZSBhYm91dCBuZWdh
dGl2ZSB6ZXJvIGZvciBhbiBBcml0aE5lZ2F0ZSwKKyAgICAgICAgYW5kIHdlIGV4aXQgdGhlIHBy
b2dyYW0gd2hpbGUgcmVjb3ZlcmluZyB0aGUgdmFsdWUgMCBpbnN0ZWFkIG9mIC0wLgorICAgICAg
ICAKKyAgICAgICAgRnVuZGFtZW50YWxseSwgYmFja3dhcmRzIHByb3BhZ2F0aW9uIHdhbnRzIHRv
IHNlZSBhbGwgYnl0ZWNvZGUgdXNlcy4KKyAgICAgICAgVGhlcmVmb3JlLCBpdCBzZWVtcyBsaWtl
IGEgbW9yZSBzb3VuZCBzdHJhdGVneSB0byBydW4gYmFja3dhcmRzIHByb3BhZ2F0aW9uCisgICAg
ICAgIGJlZm9yZSB3ZSBlbmQgdXAgbXVja2luZyB3aXRoIHRoZSBncmFwaC4gVGhpcyBwYXRjaCBt
YWtlcyBpdCBzbyB3ZSBydW4KKyAgICAgICAgYmFja3dhcmRzIHByb3BhZ2F0aW9uIGluc2lkZSBi
eXRlY29kZSBwYXJzZXIgYmVmb3JlIHdlIHBydW5lIHRoZSBJUi4KKyAgICAgICAgVGhhdCB3YXks
IHRoZSBwaGFzZSBzZWVzIHRoZSBncmFwaCBhcyBpZiBpdCdzIGFuIElSIG92ZXIgdGhlIHdob2xl
IGJ5dGVjb2RlCisgICAgICAgIGdyYXBoLgorCisgICAgICAgICogYnl0ZWNvZGUvT3BlcmFuZHMu
aDoKKyAgICAgICAgKEpTQzo6T3BlcmFuZHM6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAq
IGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlKToK
KyAgICAgICAgKEpTQzo6REZHOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlOjpydW4pOgorICAg
ICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2U6Om1lcmdlRmxhZ3MpOgor
ICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6
CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybUJhY2t3YXJkc1Byb3BhZ2F0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oOgorICAgICAgICAqIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OnBhcnNlKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCk6CisgICAgICAgICogZGZnL0RGR1VuaWZpY2F0aW9u
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlVuaWZpY2F0aW9uUGhhc2U6OnJ1bik6CisK
IDIwMjEtMTAtMDQgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
SW50cmluc2ljR2V0dGVyQWNjZXNzQ2FzZSBpbXBsZW1lbnRhdGlvbiBvZiBfX3Byb3RvX18gbmVl
ZHMgdG8gaGFuZGxlIGdldF9ieV9pZF93aXRoX3RoaXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCShyZXZpc2lvbiAyODM1MjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAwLDYg
KzQwMCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICByZXR1cm4gbV92YWx1ZXMgPT0g
b3RoZXIubV92YWx1ZXM7CiAgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wZXJh
bmRzJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQs
IER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDI4MzUyNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDIyICszNCw0OCBAQAogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIEJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UgOiBw
dWJsaWMgUGhhc2UgeworLy8gVGhpcyBwaGFzZSBpcyBydW4gYXQgdGhlIGVuZCBvZiBCeXRlY29k
ZVBhcnNpbmcsIHNvIHRoZSBncmFwaCBpc24ndCBpbiBhIGZ1bGx5IGZvcm1lZCBzdGF0ZS4KKy8v
IEZvciBleGFtcGxlLCB3ZSBjYW4ndCBhY2Nlc3MgdGhlIHByZWRlY2Vzc29yIGxpc3Qgb2YgYW55
IGJhc2ljIGJsb2NrcyB5ZXQuCisKK2NsYXNzIEJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2Ugewog
cHVibGljOgogICAgIEJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQotICAg
ICAgICA6IFBoYXNlKGdyYXBoLCAiYmFja3dhcmRzIHByb3BhZ2F0aW9uIikKKyAgICAgICAgOiBt
X2dyYXBoKGdyYXBoKQorICAgICAgICAsIG1fZmxhZ3NBdEhlYWQoZ3JhcGgpCiAgICAgewogICAg
IH0KICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBtX2NoYW5nZWQgPSB0cnVl
OwotICAgICAgICB3aGlsZSAobV9jaGFuZ2VkKSB7Ci0gICAgICAgICAgICBtX2NoYW5nZWQgPSBm
YWxzZTsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5O
YXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgbV9mbGFnc0F0SGVhZFtibG9ja10gPSBPcGVy
YW5kczxOb2RlRmxhZ3M+KE9wZXJhbmRzTGlrZSwgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVz
QXRIZWFkKTsKKyAgICAgICAgICAgIG1fZmxhZ3NBdEhlYWRbYmxvY2tdLmZpbGwoMCk7CisgICAg
ICAgIH0KKworICAgICAgICBib29sIGNoYW5nZWQ7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAg
IGNoYW5nZWQgPSBmYWxzZTsKKwogICAgICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5k
ZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgICAgICAg
ICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAg
ICAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1TdWNjZXNz
b3JzID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFu
dW1TdWNjZXNzb3JzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRGbGFncyA9
IE9wZXJhbmRzPE5vZGVGbGFncz4oT3BlcmFuZHNMaWtlLCBtX2dyYXBoLmJsb2NrKDApLT52YXJp
YWJsZXNBdEhlYWQpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50RmxhZ3MuZmls
bCgwKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fY3VycmVudEZsYWdzID0gbV9mbGFnc0F0SGVhZFtibG9jay0+c3VjY2Vzc29yKDApXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBudW1TdWNj
ZXNzb3JzOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBz
dWNjZXNzb3IgPSBibG9jay0+c3VjY2Vzc29yKGkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdXJyZW50RmxhZ3Muc2l6ZSgpOyArK2kpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEZsYWdzW2ldIHw9IG1fZmxh
Z3NBdEhlYWRbc3VjY2Vzc29yXVtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgLy8gUHJldmVudCBhIHRvd2VyIG9mIG92ZXJmbG93aW5nIGFkZGl0aW9ucyBm
cm9tIGNyZWF0aW5nIGEgdmFsdWUgdGhhdCBpcyBvdXQgb2YgdGhlCiAgICAgICAgICAgICAgICAg
Ly8gc2FmZSAyXjQ4IHJhbmdlLgpAQCAtNTcsOCArODMsMTMgQEAgcHVibGljOgogICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSBibG9jay0+
c2l6ZSgpOyBpbmRleEluQmxvY2stLTspCiAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZShi
bG9jay0+YXQoaW5kZXhJbkJsb2NrKSk7CisKKyAgICAgICAgICAgICAgICBpZiAobV9mbGFnc0F0
SGVhZFtibG9ja10gIT0gbV9jdXJyZW50RmxhZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9m
bGFnc0F0SGVhZFtibG9ja10gPSBtX2N1cnJlbnRGbGFnczsKKyAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAg
ICB9CisgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOwogICAgICAgICAKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMTUzLDYgKzE4NCwxMSBAQCBwcml2YXRlOgogICAgICAgICByZXR1
cm4gaXNXaXRoaW5Qb3dlck9mVHdvPHBvd2VyPihlZGdlLm5vZGUoKSk7CiAgICAgfQogCisgICAg
c3RhdGljIGJvb2wgbWVyZ2VGbGFncyhOb2RlRmxhZ3MmIGZsYWdzUmVmLCBOb2RlRmxhZ3MgbmV3
RmxhZ3MpCisgICAgeworICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQoZmxhZ3NSZWYsIGZsYWdz
UmVmIHwgbmV3RmxhZ3MpOworICAgIH0KKwogICAgIGJvb2wgbWVyZ2VEZWZhdWx0RmxhZ3MoTm9k
ZSogbm9kZSkKICAgICB7CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwpAQCAtMTg0LDI1
ICsyMjAsMzYgQEAgcHJpdmF0ZToKICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAg
ICAgIGNhc2UgR2V0TG9jYWw6IHsKICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFy
aWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgICAg
ICBmbGFncyAmPSB+Tm9kZUJ5dGVjb2RlVXNlc0FzSW50OyAvLyBXZSBkb24ndCBjYXJlIGFib3V0
IGNyb3NzLWJsb2NrIHVzZXMtYXMtaW50LgotICAgICAgICAgICAgbV9jaGFuZ2VkIHw9IHZhcmlh
YmxlQWNjZXNzRGF0YS0+bWVyZ2VGbGFncyhmbGFncyk7CisgICAgICAgICAgICBOb2RlRmxhZ3Mm
IGZsYWdzUmVmID0gbV9jdXJyZW50RmxhZ3Mub3BlcmFuZCh2YXJpYWJsZUFjY2Vzc0RhdGEtPm9w
ZXJhbmQoKSk7CisgICAgICAgICAgICBtZXJnZUZsYWdzKGZsYWdzUmVmLCBmbGFncyk7CisgICAg
ICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlRmxhZ3MoZmxhZ3NSZWYgJiB+Tm9kZUJ5
dGVjb2RlVXNlc0FzSW50KTsgLy8gV2UgZG9uJ3QgY2FyZSBhYm91dCBjcm9zcy1ibG9jayB1c2Vz
LWFzLWludCBmb3IgdGhpcy4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBTZXRMb2NhbDogewogICAgICAgICAgICAgVmFyaWFibGVBY2Nl
c3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsK
LSAgICAgICAgICAgIGlmICghdmFyaWFibGVBY2Nlc3NEYXRhLT5pc0xvYWRlZEZyb20oKSkKKwor
ICAgICAgICAgICAgT3BlcmFuZCBvcGVyYW5kID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5vcGVyYW5k
KCk7CisgICAgICAgICAgICBOb2RlRmxhZ3MgZmxhZ3MgPSBtX2N1cnJlbnRGbGFncy5vcGVyYW5k
KG9wZXJhbmQpOworICAgICAgICAgICAgaWYgKCFmbGFncykKICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGZsYWdzID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5mbGFncygpOworCiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKGZsYWdzICYgfk5vZGVCeXRlY29kZUJhY2tQcm9w
TWFzaykpOwotICAgICAgICAgICAgZmxhZ3MgfD0gTm9kZUJ5dGVjb2RlVXNlc0FzTnVtYmVyOyAv
LyBBY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0IGNvbnRyb2wgZmxvdyBtYXkgY2F1c2Ugb3ZlcmZs
b3dzIHRoYXQgb3VyIG1vZGVsaW5nIGNhbid0IGhhbmRsZS4KLSAgICAgICAgICAgIG5vZGUtPmNo
aWxkMSgpLT5tZXJnZUZsYWdzKGZsYWdzKTsKKworICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NE
YXRhLT5tZXJnZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAgIC8vIFdlIHVuaW9uIHdpdGggTm9k
ZUJ5dGVjb2RlVXNlc0FzTnVtYmVyIHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgY29udHJv
bCBmbG93IG1heSBjYXVzZSBvdmVyZmxvd3MgdGhhdCBvdXIgbW9kZWxpbmcgY2FuJ3QgaGFuZGxl
LgorICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsIGEgbG9vcCB3aGVyZSB3ZSBhbHdheXMgYWRk
IGEgY29uc3RhbnQgdmFsdWUuCisgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFn
cyhmbGFncyB8IE5vZGVCeXRlY29kZVVzZXNBc051bWJlcik7IAorCisgICAgICAgICAgICBtX2N1
cnJlbnRGbGFncy5vcGVyYW5kKG9wZXJhbmQpID0gMDsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBGbHVzaDogewogICAgICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKTsKLSAgICAgICAgICAgIG1fY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEt
Pm1lcmdlRmxhZ3MoTm9kZUJ5dGVjb2RlVXNlc0FzVmFsdWUpOworICAgICAgICAgICAgTm9kZUZs
YWdzJiBmbGFnc1JlZiA9IG1fY3VycmVudEZsYWdzLm9wZXJhbmQodmFyaWFibGVBY2Nlc3NEYXRh
LT5vcGVyYW5kKCkpOworICAgICAgICAgICAgbWVyZ2VGbGFncyhmbGFnc1JlZiwgTm9kZUJ5dGVj
b2RlVXNlc0FzVmFsdWUpOworICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUZs
YWdzKGZsYWdzUmVmKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKQEAgLTQ5MSwxMyArNTM4LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAgICAg
CisgICAgR3JhcGgmIG1fZ3JhcGg7CiAgICAgYm9vbCBtX2FsbG93TmVzdGVkT3ZlcmZsb3dpbmdB
ZGRpdGlvbnM7Ci0gICAgYm9vbCBtX2NoYW5nZWQ7CisKKyAgICBCbG9ja01hcDxPcGVyYW5kczxO
b2RlRmxhZ3M+PiBtX2ZsYWdzQXRIZWFkOworICAgIE9wZXJhbmRzPE5vZGVGbGFncz4gbV9jdXJy
ZW50RmxhZ3M7CiB9OwogCi1ib29sIHBlcmZvcm1CYWNrd2FyZHNQcm9wYWdhdGlvbihHcmFwaCYg
Z3JhcGgpCit2b2lkIHBlcmZvcm1CYWNrd2FyZHNQcm9wYWdhdGlvbihHcmFwaCYgZ3JhcGgpCiB7
Ci0gICAgcmV0dXJuIHJ1blBoYXNlPEJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2U+KGdyYXBoKTsK
KyAgICBCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlKGdyYXBoKS5ydW4oKTsKIH0KIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
YWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmgJKHJldmlzaW9uIDI4MzUy
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25Q
aGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIEdyYXBoOwogLy8g
SW5mZXIgYmFzaWMgaW5mb3JtYXRpb24gYWJvdXQgaG93IG5vZGVzIGFyZSB1c2VkIGJ5IGRvaW5n
IGEgYmxvY2stbG9jYWwKIC8vIGJhY2t3YXJkcyBmbG93IGFuYWx5c2lzLgogCi1ib29sIHBlcmZv
cm1CYWNrd2FyZHNQcm9wYWdhdGlvbihHcmFwaCYpOwordm9pZCBwZXJmb3JtQmFja3dhcmRzUHJv
cGFnYXRpb24oR3JhcGgmKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2
aXNpb24gMjgzNTI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJDb21t
b25TbG93UGF0aHMuaCIKICNpbmNsdWRlICJERkdBYnN0cmFjdEhlYXAuaCIKICNpbmNsdWRlICJE
RkdBcnJheU1vZGUuaCIKKyNpbmNsdWRlICJERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmgi
CiAjaW5jbHVkZSAiREZHQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIK
ICNpbmNsdWRlICJERkdDbG9iYmVyaXplLmgiCkBAIC05MDE4LDYgKzkwMTksMTMgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgIHBhcnNlQ29kZUJsb2NrKCk7CiAgICAgbGlua0Js
b2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3MsIGlubGluZVN0YWNrRW50cnku
bV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsKIAorICAgIC8vIFdlIHJ1biBiYWNrd2FyZHMgcHJvcGFn
YXRpb24gbm93IGJlY2F1c2UgdGhlIHNvdW5kbmVzcyBvZiB0aGF0IHBoYXNlCisgICAgLy8gcmVs
aWVzIG9uIHNlZWluZyB0aGUgZ3JhcGggYXMgaWYgaXQgd2VyZSBhbiBJUiBvdmVyIGJ5dGVjb2Rl
LCBzaW5jZQorICAgIC8vIHRoZSBzcGVjLWNvcnJlY3RuZXNzIG9mIHRoYXQgcGhhc2UgcmVsaWVz
IG9uIHNlZWluZyBhbGwgYnl0ZWNvZGUgdXNlcy4KKyAgICAvLyBUaGVyZWZvcmUsIHdlIHJ1biB0
aGlzIHBhc3MgYmVmb3JlIHdlIGRvIGFueSBwcnVuaW5nIG9mIHRoZSBncmFwaAorICAgIC8vIGFm
dGVyIEZvcmNlT1NSRXhpdCBzaXRlcy4KKyAgICBwZXJmb3JtQmFja3dhcmRzUHJvcGFnYXRpb24o
bV9ncmFwaCk7CisKICAgICBpZiAobV9oYXNBbnlGb3JjZU9TUkV4aXRzKSB7CiAgICAgICAgIEJs
b2NrU2V0IGJsb2Nrc1RvSWdub3JlOwogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDog
bV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CkBAIC05MDc2LDE1ICs5MDg0LDE3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKIAogICAgICAgICAgICAgICAgICsrbm9kZUlu
ZGV4OwogCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRh
dGlvbkVuYWJsZWQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB2ZXJpZmll
cyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gY2hhbmdlIGFueSBvZiB0aGUgc3VjY2Vzc29ycydzIHBy
ZWRlY2Vzc29yCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBsaXN0IGFmdGVyIHBsYW50aW5n
IHRoZSBVbnJlYWNoYWJsZSBiZWxvdy4gQXQgdGhpcyBwb2ludCBpbiB0aGUgYnl0ZWNvZGUKLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHBhcnNlciwgd2UgaGF2ZW4ndCBsaW5rZWQgdXAgdGhl
IHByZWRlY2Vzc29yIGxpc3RzIHlldC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoQmFz
aWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdWNjZXNzb3ItPnByZWRlY2Vzc29ycy5pc0Vt
cHR5KCkpOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHZhbGlk
YXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB2ZXJpZmllcyB0
aGF0IHdlIGRvbid0IG5lZWQgdG8gY2hhbmdlIGFueSBvZiB0aGUgc3VjY2Vzc29ycydzIHByZWRl
Y2Vzc29yCisgICAgICAgICAgICAgICAgICAgIC8vIGxpc3QgYWZ0ZXIgcGxhbnRpbmcgdGhlIFVu
cmVhY2hhYmxlIGJlbG93LiBBdCB0aGlzIHBvaW50IGluIHRoZSBieXRlY29kZQorICAgICAgICAg
ICAgICAgICAgICAvLyBwYXJzZXIsIHdlIGhhdmVuJ3QgbGlua2VkIHVwIHRoZSBwcmVkZWNlc3Nv
ciBsaXN0cyB5ZXQuCisgICAgICAgICAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vz
c29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHN1Y2Nlc3Nvci0+cHJlZGVjZXNzb3JzLmlzRW1wdHkoKSk7CisgICAgICAgICAg
ICAgICAgfQogCisgICAgICAgICAgICAgICAgYmxvY2stPnJlc2l6ZShub2RlSW5kZXgpOworCisg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBhdXRvIGluc2VydExpdmVuZXNz
UHJlc2VydmluZ09wID0gWyZdIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgTm9k
ZVR5cGUgb3AsIE9wZXJhbmQgb3BlcmFuZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFyaWFibGUpIHsKQEAgLTkxMDgsNDEgKzkxMTgs
OSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgICAgICAgICAgICAgIGZs
dXNoRm9yVGVybWluYWxJbXBsKG9yaWdpbi5zZW1hbnRpYywgYWRkRmx1c2hEaXJlY3QsIGFkZFBo
YW50b21Mb2NhbERpcmVjdCk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
d2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZUlu
ZGV4IDwgYmxvY2stPnNpemUoKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9
IGJsb2NrLT5hdChub2RlSW5kZXgpOwotCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdp
biA9IG9yaWdpbjsKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4obm9k
ZSwgWyZdIChFZGdlIGVkZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkg
bmVlZCB0byBrZWVwIGRhdGEgZmxvdyBlZGdlcyB0byBub2RlcyBkZWZpbmVkIHByaW9yIHRvIHRo
ZSBGb3JjZU9TUkV4aXQuIFRoZSByZWFzb24KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZv
ciB0aGlzIGlzIHdlIHJlbHkgb24gYmFja3dhcmRzIHByb3BhZ2F0aW9uIGJlaW5nIGFibGUgdG8g
c2VlIHRoZSAiZnVsbCIgYnl0ZWNvZGUuIFRvIG1vZGVsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyB0aGlzLCB3ZSBwcmVzZXJ2ZSB1c2VzIG9mIGEgbm9kZSBpbiBhIGdlbmVyaWMgd2F5IHNv
IHRoYXQgYmFja3dhcmRzIHByb3BhZ2F0aW9uIGNhbiByZWFzb24KLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGFib3V0IHRoZW0uIFRoZXJlZm9yZSwgd2UgY2FuJ3QgcmVtb3ZlIHVzZXMgb2Yg
YSBub2RlIHdoaWNoIGlzIGRlZmluZWQgYmVmb3JlIHRoZSBGb3JjZU9TUkV4aXQKLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGV2ZW4gd2hlbiB3ZSdyZSBhdCBhIHBvaW50IGluIHRoZSBwcm9n
cmFtIGFmdGVyIHRoZSBGb3JjZU9TUkV4aXQsIGJlY2F1c2UgdGhhdCB3b3VsZCBicmVhayBiYWNr
d2FyZHMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb3BhZ2F0aW9uJ3MgYW5hbHlzaXMg
b3ZlciB0aGUgdXNlcyBvZiBhIG5vZGUuIEhvd2V2ZXIsIHdlIGRvbid0IG5lZWQgdGhpcyBzYW1l
IHByZXNlcnZhdGlvbiBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vZGVzIGRlZmlu
ZWQgYWZ0ZXIgRm9yY2VPU1JFeGl0LCBhcyB3ZSd2ZSBhbHJlYWR5IGV4aXR0ZWQgYmVmb3JlIHRo
b3NlIGRlZnMuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+aGFzUmVzdWx0KCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUobm9k
ZUluZGV4LCBTcGVjTm9uZSwgUGhhbnRvbSwgb3JpZ2luLCBFZGdlKGVkZ2Uubm9kZSgpLCBVbnR5
cGVkVXNlKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNUZXJtaW5hbCA9IG5vZGUtPmlzVGVybWluYWwoKTsKLQotICAgICAgICAgICAgICAg
ICAgICBub2RlLT5yZW1vdmVXaXRob3V0Q2hlY2tzKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
aWYgKGlzVGVybWluYWwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5p
bnNlcnROb2RlKG5vZGVJbmRleCwgU3BlY05vbmUsIFVucmVhY2hhYmxlLCBvcmlnaW4pOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgICAgICArK25vZGVJbmRleDsKLSAgICAgICAgICAgICAgICB9Ci0KKyAgICAg
ICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShub2RlSW5kZXgsIFNwZWNOb25lLCBV
bnJlYWNoYWJsZSwgb3JpZ2luKTsKICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0
ZShibG9jayk7CiAKLSAgICAgICAgICAgICAgICBhdXRvIG5vZGVBbmRJbmRleCA9IGJsb2NrLT5m
aW5kVGVybWluYWwoKTsKLSAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGVB
bmRJbmRleC5ub2RlLCBub2RlQW5kSW5kZXgubm9kZS0+b3AoKSA9PSBVbnJlYWNoYWJsZSk7Ci0g
ICAgICAgICAgICAgICAgYmxvY2stPnJlc2l6ZShub2RlQW5kSW5kZXguaW5kZXggKyAxKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyODM1MjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw2IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJERkdBcmd1bWVudHNF
bGltaW5hdGlvblBoYXNlLmgiCi0jaW5jbHVkZSAiREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFz
ZS5oIgogI2luY2x1ZGUgIkRGR0J5dGVDb2RlUGFyc2VyLmgiCiAjaW5jbHVkZSAiREZHQ0ZBUGhh
c2UuaCIKICNpbmNsdWRlICJERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmgiCkBAIC0yNTUsNyAr
MjU0LDYgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgIGlm
ICh2YWxpZGF0aW9uRW5hYmxlZCgpKQogICAgICAgICB2YWxpZGF0ZShkZmcpOwogICAgIAotICAg
IFJVTl9QSEFTRShwZXJmb3JtQmFja3dhcmRzUHJvcGFnYXRpb24pOwogICAgIFJVTl9QSEFTRShw
ZXJmb3JtUHJlZGljdGlvblByb3BhZ2F0aW9uKTsKICAgICBSVU5fUEhBU0UocGVyZm9ybUZpeHVw
KTsKICAgICBSVU5fUEhBU0UocGVyZm9ybUludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVW5pZmljYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVbmlmaWNhdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMjgzNTI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdV
bmlmaWNhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBkYXRhLT5maW5kKCktPm1lcmdlU2hvdWxkTmV2ZXJVbmJveChkYXRh
LT5zaG91bGROZXZlclVuYm94KCkpOwogICAgICAgICAgICAgZGF0YS0+ZmluZCgpLT5tZXJnZUlz
TG9hZGVkRnJvbShkYXRhLT5pc0xvYWRlZEZyb20oKSk7CiAgICAgICAgICAgICBkYXRhLT5maW5k
KCktPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveChkYXRhLT5pc1Byb2ZpdGFibGVUb1VuYm94KCkp
OworICAgICAgICAgICAgZGF0YS0+ZmluZCgpLT5tZXJnZUZsYWdzKGRhdGEtPmZsYWdzKCkpOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLm1fdW5pZmljYXRpb25TdGF0ZSA9
IEdsb2JhbGx5VW5pZmllZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440527</attachid>
            <date>2021-10-07 12:40:29 -0700</date>
            <delta_ts>2021-10-08 17:56:07 -0700</delta_ts>
            <desc>followup patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>4391</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgzNzM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBA
CisyMDIxLTEwLTA3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFJ1biBiYWNrd2FyZHMgcHJvcGFnYXRpb24gYmVmb3JlIHdlIHBydW5lIHRoZSBncmFwaCBhZnRl
ciBGb3JjZU9TUkV4aXQgbm9kZXMgaW4gQnl0ZWNvZGVQYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDgyMworICAgICAgICA8cmRhcjovL3By
b2JsZW0vODM1NjUwODg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBJIHBvcnRlZCB0aGUgcGhhc2UgdG8gcnVuIHJpZ2h0IGFmdGVyIGJ5dGVj
b2RlIHBhcnNpbmcsIEkgd2FudGVkCisgICAgICAgIHRvIG1haW50YWluIHRoZSBzYW1lIGJlaGF2
aW9yIGFzIHRoZSBwcmlvciBwYXNzIHRoYXQgcmFuIGFmdGVyIENQUworICAgICAgICByZXRocmVh
ZGluZy4gSSBub3RpY2VkIGEgc2xpZ2h0IGJ1ZyBpbiBzb21lIG9mIG15IGxvZ2ljIHRoYXQgY2hh
bmdlZAorICAgICAgICBzb21lIG9mIGhldXJpc3RpY3MgYW5kIGhvdyB0aGV5J2QgZWZmZWN0IGRv
dWJsZSB2b3RpbmcuCisgICAgICAgIAorICAgICAgICBUaGUgb2xkIHBhdGNoIHdhcyBtaW1pY2tp
bmcgdGhlICJpcyBsb2FkZWQgZnJvbSIgYml0IGJ5IHVzaW5nIHRoZSBOb2RlRmxhZ3MuCisgICAg
ICAgIEhvd3ZlciwgdGhpcyBoYXMgc29tZSBpc3N1ZXMgd2l0aCBob3cgdGhpcyBpbnRlcmFjdHMg
d2l0aCBvdXIgb3RoZXIgdXNlcworICAgICAgICBvZiBOb2RlRmxhZ3MuIFNvLCB0byBtYWtlIHRo
aW5ncyBzaW1wbGUsIEkganVzdCBhZGQgYSBuZXcgIlZhcmlhYmxlSXNVc2VkIgorICAgICAgICBi
aXQuCisKKyAgICAgICAgKiBkZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToK
KwogMjAyMS0xMC0wNyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IGZvciBub24tdW5pZmllZCBKU0MuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRz
UHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDI4MzczMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRG
R1BoYXNlLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTQ1
LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fZmxhZ3NBdEhlYWQoZ3JhcGgpCiAgICAg
ewogICAgIH0KLSAgICAKKwogICAgIGJvb2wgcnVuKCkKICAgICB7CiAgICAgICAgIGZvciAoQmFz
aWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKQEAgLTIx
NCw2ICsyMTUsOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAgICB9CiAg
ICAgCisgICAgc3RhdGljIGNvbnN0ZXhwciBOb2RlRmxhZ3MgVmFyaWFibGVJc1VzZWQgPSAxIDw8
ICgxICsgV1RGOjpnZXRNU0JTZXRDb25zdGV4cHIoTm9kZUJ5dGVjb2RlQmFja1Byb3BNYXNrKSk7
CisgICAgc3RhdGljX2Fzc2VydCghKFZhcmlhYmxlSXNVc2VkICYgTm9kZUJ5dGVjb2RlQmFja1By
b3BNYXNrKSk7CisgICAgCiAgICAgdm9pZCBwcm9wYWdhdGUoTm9kZSogbm9kZSkKICAgICB7CiAg
ICAgICAgIE5vZGVGbGFncyBmbGFncyA9IG5vZGUtPmZsYWdzKCkgJiBOb2RlQnl0ZWNvZGVCYWNr
UHJvcE1hc2s7CkBAIC0yMjEsOSArMjI1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgc3dpdGNoIChu
b2RlLT5vcCgpKSB7CiAgICAgICAgIGNhc2UgR2V0TG9jYWw6IHsKICAgICAgICAgICAgIFZhcmlh
YmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NE
YXRhKCk7Ci0gICAgICAgICAgICBOb2RlRmxhZ3MmIGZsYWdzUmVmID0gbV9jdXJyZW50RmxhZ3Mu
b3BlcmFuZCh2YXJpYWJsZUFjY2Vzc0RhdGEtPm9wZXJhbmQoKSk7Ci0gICAgICAgICAgICBtZXJn
ZUZsYWdzKGZsYWdzUmVmLCBmbGFncyk7Ci0gICAgICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEt
Pm1lcmdlRmxhZ3MoZmxhZ3NSZWYgJiB+Tm9kZUJ5dGVjb2RlVXNlc0FzSW50KTsgLy8gV2UgZG9u
J3QgY2FyZSBhYm91dCBjcm9zcy1ibG9jayB1c2VzLWFzLWludCBmb3IgdGhpcy4KKyAgICAgICAg
ICAgIGZsYWdzIHw9IG1fY3VycmVudEZsYWdzLm9wZXJhbmQodmFyaWFibGVBY2Nlc3NEYXRhLT5v
cGVyYW5kKCkpOworICAgICAgICAgICAgZmxhZ3MgfD0gVmFyaWFibGVJc1VzZWQ7CisgICAgICAg
ICAgICBtX2N1cnJlbnRGbGFncy5vcGVyYW5kKHZhcmlhYmxlQWNjZXNzRGF0YS0+b3BlcmFuZCgp
KSA9IGZsYWdzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApA
QCAtMjMyLDEwICsyMzYsMTEgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgT3BlcmFuZCBvcGVy
YW5kID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5vcGVyYW5kKCk7CiAgICAgICAgICAgICBOb2RlRmxh
Z3MgZmxhZ3MgPSBtX2N1cnJlbnRGbGFncy5vcGVyYW5kKG9wZXJhbmQpOwotICAgICAgICAgICAg
aWYgKCFmbGFncykKKyAgICAgICAgICAgIGlmICghKGZsYWdzICYgVmFyaWFibGVJc1VzZWQpKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKGZs
YWdzICYgfk5vZGVCeXRlY29kZUJhY2tQcm9wTWFzaykpOworICAgICAgICAgICAgZmxhZ3MgJj0g
Tm9kZUJ5dGVjb2RlQmFja1Byb3BNYXNrOworICAgICAgICAgICAgZmxhZ3MgJj0gfk5vZGVCeXRl
Y29kZVVzZXNBc0ludDsgLy8gV2UgZG9uJ3QgY2FyZSBhYm91dCBjcm9zcy1ibG9jayB1c2VzLWFz
LWludC4KIAogICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUZsYWdzKGZsYWdz
KTsKICAgICAgICAgICAgIC8vIFdlIHVuaW9uIHdpdGggTm9kZUJ5dGVjb2RlVXNlc0FzTnVtYmVy
IHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgY29udHJvbCBmbG93IG1heSBjYXVzZSBvdmVy
Zmxvd3MgdGhhdCBvdXIgbW9kZWxpbmcgY2FuJ3QgaGFuZGxlLgpAQCAtMjQ4LDkgKzI1MywxMyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAgICAgICAg
ICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgICAgICBOb2RlRmxhZ3MmIGZsYWdzUmVmID0gbV9jdXJy
ZW50RmxhZ3Mub3BlcmFuZCh2YXJpYWJsZUFjY2Vzc0RhdGEtPm9wZXJhbmQoKSk7Ci0gICAgICAg
ICAgICBtZXJnZUZsYWdzKGZsYWdzUmVmLCBOb2RlQnl0ZWNvZGVVc2VzQXNWYWx1ZSk7Ci0gICAg
ICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlRmxhZ3MoZmxhZ3NSZWYpOworICAgICAg
ICAgICAgbWVyZ2VGbGFncyhtX2N1cnJlbnRGbGFncy5vcGVyYW5kKHZhcmlhYmxlQWNjZXNzRGF0
YS0+b3BlcmFuZCgpKSwgTm9kZUJ5dGVjb2RlVXNlc0FzVmFsdWUgfCBWYXJpYWJsZUlzVXNlZCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgUGhhbnRvbUxv
Y2FsOiB7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0
YSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgbWVyZ2VGbGFncyht
X2N1cnJlbnRGbGFncy5vcGVyYW5kKHZhcmlhYmxlQWNjZXNzRGF0YS0+b3BlcmFuZCgpKSwgVmFy
aWFibGVJc1VzZWQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAg
IAo=
</data>
<flag name="review"
          id="464505"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440695</attachid>
            <date>2021-10-08 17:56:07 -0700</date>
            <delta_ts>2021-10-08 20:30:01 -0700</delta_ts>
            <desc>followup patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>4551</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjgzODQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBA
CisyMDIxLTEwLTA4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFJ1biBiYWNrd2FyZHMgcHJvcGFnYXRpb24gYmVmb3JlIHdlIHBydW5lIHRoZSBncmFwaCBhZnRl
ciBGb3JjZU9TUkV4aXQgbm9kZXMgaW4gQnl0ZWNvZGVQYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDgyMworICAgICAgICA8cmRhcjovL3By
b2JsZW0vODM1NjUwODg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKwor
ICAgICAgICBXaGVuIEkgcG9ydGVkIHRoZSBwaGFzZSB0byBydW4gcmlnaHQgYWZ0ZXIgYnl0ZWNv
ZGUgcGFyc2luZywgSSB3YW50ZWQKKyAgICAgICAgdG8gbWFpbnRhaW4gdGhlIHNhbWUgYmVoYXZp
b3IgYXMgdGhlIHByaW9yIHBhc3MgdGhhdCByYW4gYWZ0ZXIgQ1BTCisgICAgICAgIHJldGhyZWFk
aW5nLiBJIG5vdGljZWQgYSBzbGlnaHQgYnVnIGluIHNvbWUgb2YgbXkgbG9naWMgdGhhdCBjaGFu
Z2VkCisgICAgICAgIHNvbWUgb2YgaGV1cmlzdGljcyBhbmQgaG93IHRoZXknZCBlZmZlY3QgZG91
YmxlIHZvdGluZy4KKyAgICAgICAgCisgICAgICAgIFRoZSBvbGQgcGF0Y2ggd2FzIG1pbWlja2lu
ZyB0aGUgImlzIGxvYWRlZCBmcm9tIiBiaXQgYnkgdXNpbmcgdGhlIE5vZGVGbGFncy4KKyAgICAg
ICAgSG93dmVyLCB0aGlzIGhhcyBzb21lIGlzc3VlcyB3aXRoIGhvdyB0aGlzIGludGVyYWN0cyB3
aXRoIG91ciBvdGhlciB1c2VzCisgICAgICAgIG9mIE5vZGVGbGFncy4gU28sIHRvIG1ha2UgdGhp
bmdzIHNpbXBsZSwgSSBqdXN0IGFkZCBhIG5ldyAiVmFyaWFibGVJc1VzZWQiCisgICAgICAgIGJp
dC4KKworICAgICAgICAqIGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgor
CiAyMDIxLTEwLTA4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4gYW5k
IFN0ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQHNvbnkuY29tPgogCiAgICAgICAgIFtKU0Nd
IEFkZCBwcml2YXRlIEMgQVBJIGZvciBKU0dsb2JhbE9iamVjdDo6c2V0RXZhbEVuYWJsZWQKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjgzODQ0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAi
REZHUGhhc2UuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApAQCAt
NDUsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9mbGFnc0F0SGVhZChncmFwaCkKICAg
ICB7CiAgICAgfQotICAgIAorCiAgICAgYm9vbCBydW4oKQogICAgIHsKICAgICAgICAgZm9yIChC
YXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewpAQCAt
MjE0LDYgKzIxNSwxMCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAgICB9
CiAgICAgCisgICAgc3RhdGljIGNvbnN0ZXhwciBOb2RlRmxhZ3MgVmFyaWFibGVJc1VzZWQgPSAx
IDw8ICgxICsgV1RGOjpnZXRNU0JTZXRDb25zdGV4cHIoTm9kZUJ5dGVjb2RlQmFja1Byb3BNYXNr
KSk7CisgICAgc3RhdGljX2Fzc2VydCghKFZhcmlhYmxlSXNVc2VkICYgTm9kZUJ5dGVjb2RlQmFj
a1Byb3BNYXNrKSk7CisgICAgc3RhdGljX2Fzc2VydChWYXJpYWJsZUlzVXNlZCA+IE5vZGVCeXRl
Y29kZUJhY2tQcm9wTWFzaywgIlZlcmlmeSB0aGUgYWJvdmUgZG9lc24ndCBvdmVyZmxvdyIpOwor
ICAgIAogICAgIHZvaWQgcHJvcGFnYXRlKE5vZGUqIG5vZGUpCiAgICAgewogICAgICAgICBOb2Rl
RmxhZ3MgZmxhZ3MgPSBub2RlLT5mbGFncygpICYgTm9kZUJ5dGVjb2RlQmFja1Byb3BNYXNrOwpA
QCAtMjIxLDkgKzIyNiw5IEBAIHByaXZhdGU6CiAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkg
ewogICAgICAgICBjYXNlIEdldExvY2FsOiB7CiAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0Rh
dGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAg
ICAgICAgICAgTm9kZUZsYWdzJiBmbGFnc1JlZiA9IG1fY3VycmVudEZsYWdzLm9wZXJhbmQodmFy
aWFibGVBY2Nlc3NEYXRhLT5vcGVyYW5kKCkpOwotICAgICAgICAgICAgbWVyZ2VGbGFncyhmbGFn
c1JlZiwgZmxhZ3MpOwotICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUZsYWdz
KGZsYWdzUmVmICYgfk5vZGVCeXRlY29kZVVzZXNBc0ludCk7IC8vIFdlIGRvbid0IGNhcmUgYWJv
dXQgY3Jvc3MtYmxvY2sgdXNlcy1hcy1pbnQgZm9yIHRoaXMuCisgICAgICAgICAgICBmbGFncyB8
PSBtX2N1cnJlbnRGbGFncy5vcGVyYW5kKHZhcmlhYmxlQWNjZXNzRGF0YS0+b3BlcmFuZCgpKTsK
KyAgICAgICAgICAgIGZsYWdzIHw9IFZhcmlhYmxlSXNVc2VkOworICAgICAgICAgICAgbV9jdXJy
ZW50RmxhZ3Mub3BlcmFuZCh2YXJpYWJsZUFjY2Vzc0RhdGEtPm9wZXJhbmQoKSkgPSBmbGFnczsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIzMiwxMCAr
MjM3LDExIEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIE9wZXJhbmQgb3BlcmFuZCA9IHZhcmlh
YmxlQWNjZXNzRGF0YS0+b3BlcmFuZCgpOwogICAgICAgICAgICAgTm9kZUZsYWdzIGZsYWdzID0g
bV9jdXJyZW50RmxhZ3Mub3BlcmFuZChvcGVyYW5kKTsKLSAgICAgICAgICAgIGlmICghZmxhZ3Mp
CisgICAgICAgICAgICBpZiAoIShmbGFncyAmIFZhcmlhYmxlSXNVc2VkKSkKICAgICAgICAgICAg
ICAgICBicmVhazsKIAotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShmbGFncyAmIH5Ob2Rl
Qnl0ZWNvZGVCYWNrUHJvcE1hc2spKTsKKyAgICAgICAgICAgIGZsYWdzICY9IE5vZGVCeXRlY29k
ZUJhY2tQcm9wTWFzazsKKyAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlQnl0ZWNvZGVVc2VzQXNJ
bnQ7IC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgY3Jvc3MtYmxvY2sgdXNlcy1hcy1pbnQuCiAKICAg
ICAgICAgICAgIHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VGbGFncyhmbGFncyk7CiAgICAgICAg
ICAgICAvLyBXZSB1bmlvbiB3aXRoIE5vZGVCeXRlY29kZVVzZXNBc051bWJlciB0byBhY2NvdW50
IGZvciB0aGUgZmFjdCB0aGF0IGNvbnRyb2wgZmxvdyBtYXkgY2F1c2Ugb3ZlcmZsb3dzIHRoYXQg
b3VyIG1vZGVsaW5nIGNhbid0IGhhbmRsZS4KQEAgLTI0OCw5ICsyNTQsMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEZsdXNoOiB7CiAgICAgICAgICAgICBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpOwotICAgICAgICAgICAgTm9kZUZsYWdzJiBmbGFnc1JlZiA9IG1fY3VycmVudEZsYWdzLm9w
ZXJhbmQodmFyaWFibGVBY2Nlc3NEYXRhLT5vcGVyYW5kKCkpOwotICAgICAgICAgICAgbWVyZ2VG
bGFncyhmbGFnc1JlZiwgTm9kZUJ5dGVjb2RlVXNlc0FzVmFsdWUpOwotICAgICAgICAgICAgdmFy
aWFibGVBY2Nlc3NEYXRhLT5tZXJnZUZsYWdzKGZsYWdzUmVmKTsKKyAgICAgICAgICAgIG1lcmdl
RmxhZ3MobV9jdXJyZW50RmxhZ3Mub3BlcmFuZCh2YXJpYWJsZUFjY2Vzc0RhdGEtPm9wZXJhbmQo
KSksIE5vZGVCeXRlY29kZVVzZXNBc1ZhbHVlIHwgVmFyaWFibGVJc1VzZWQpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDogeworICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgIG1lcmdlRmxhZ3MobV9jdXJyZW50Rmxh
Z3Mub3BlcmFuZCh2YXJpYWJsZUFjY2Vzc0RhdGEtPm9wZXJhbmQoKSksIFZhcmlhYmxlSXNVc2Vk
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
</data>

          </attachment>
      

    </bug>

</bugzilla>