<?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>160417</bug_id>
          
          <creation_ts>2016-08-01 12:37:42 -0700</creation_ts>
          <short_desc>update a class extending null w.r.t the ES7 spec</short_desc>
          <delta_ts>2017-03-07 11:01:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>160392</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>adamk</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1216221</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-01 12:37:42 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216225</commentid>
    <comment_count>1</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-08-01 12:43:44 -0700</bug_when>
    <thetext>*** Bug 160418 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216255</commentid>
    <comment_count>2</comment_count>
      <attachid>285039</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-01 13:55:11 -0700</bug_when>
    <thetext>Created attachment 285039
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216258</commentid>
    <comment_count>3</comment_count>
      <attachid>285039</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-01 13:59:07 -0700</bug_when>
    <thetext>Comment on attachment 285039
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216259</commentid>
    <comment_count>4</comment_count>
      <attachid>285039</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-08-01 14:00:27 -0700</bug_when>
    <thetext>Comment on attachment 285039
patch

I don&apos;t think this is right if you do:

let foo = null;
class A extends foo { }

Shouldn&apos;t that also be a base class? https://tc39.github.io/ecma262/#sec-runtime-semantics-classdefinitionevaluation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216274</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-01 14:28:55 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 285039 [details]
&gt; patch
&gt; 
&gt; I don&apos;t think this is right if you do:
&gt; 
&gt; let foo = null;
&gt; class A extends foo { }
&gt; 
&gt; Shouldn&apos;t that also be a base class?
&gt; https://tc39.github.io/ecma262/#sec-runtime-semantics-
&gt; classdefinitionevaluation

Yup. My implementation is quite broken.
This may be a bit annoying to refactor to make this work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216577</commentid>
    <comment_count>6</comment_count>
      <attachid>285130</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-02 13:25:30 -0700</bug_when>
    <thetext>Created attachment 285130
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216594</commentid>
    <comment_count>7</comment_count>
      <attachid>285136</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-02 13:52:07 -0700</bug_when>
    <thetext>Created attachment 285136
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216596</commentid>
    <comment_count>8</comment_count>
      <attachid>285136</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-08-02 13:58:18 -0700</bug_when>
    <thetext>Comment on attachment 285136
patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216657</commentid>
    <comment_count>9</comment_count>
      <attachid>285154</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-02 16:02:15 -0700</bug_when>
    <thetext>Created attachment 285154
patch for landing

with updated test262 results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216733</commentid>
    <comment_count>10</comment_count>
      <attachid>285154</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-02 18:29:36 -0700</bug_when>
    <thetext>Comment on attachment 285154
patch for landing

Clearing flags on attachment: 285154

Committed r204058: &lt;http://trac.webkit.org/changeset/204058&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216735</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-02 18:29:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269869</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2017-01-25 10:20:36 -0800</bug_when>
    <thetext>Heads-up that this has been reverted from ES2017 (and came in after ES2016) after a discussion at January&apos;s TC39 meeting. The spec revert was https://github.com/tc39/ecma262/commit/c57ef95c45a371f9c9485bb1c3881dbdc04524a2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284422</commentid>
    <comment_count>13</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-07 11:01:54 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Heads-up that this has been reverted from ES2017 (and came in after ES2016)
&gt; after a discussion at January&apos;s TC39 meeting. The spec revert was
&gt; https://github.com/tc39/ecma262/commit/
&gt; c57ef95c45a371f9c9485bb1c3881dbdc04524a2

Thanks for the heads up.
I filed: https://bugs.webkit.org/show_bug.cgi?id=169293 to fix this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285039</attachid>
            <date>2016-08-01 13:55:11 -0700</date>
            <delta_ts>2016-08-02 13:25:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>9421</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlbG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlbG9n
CShyZXZpc2lvbiAyMDM5NzkpCisrKyBKU1Rlc3RzL0NoYW5nZWxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE2LTA4LTAxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIHVwZGF0ZSBhIGNsYXNzIGV4dGVuZGluZyBudWxsIHcuci50IHRoZSBF
Uzcgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYwNDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzdHJlc3MvY2xhc3MtZGVyaXZlZC1mcm9tLW51bGwuanM6IEFkZGVkLgorICAgICAgICAoYXNz
ZXJ0KToKKyAgICAgICAgKEMpOgorICAgICAgICAoRSk6CisKIDIwMTYtMDgtMDEgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgV2Ugc2hvdWxkIG5vdCBr
ZWVwIHRoZSBKYXZhU2NyaXB0IHRlc3RzIGluc2lkZSB0aGUgU291cmNlL0phdmFTY3JpcHRDb3Jl
LyBkaXJlY3RvcnkuCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9jbGFzcy1kZXJpdmVkLWZyb20tbnVs
bC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9jbGFzcy1kZXJpdmVkLWZyb20tbnVs
bC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9jbGFzcy1kZXJpdmVkLWZyb20t
bnVsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACitmdW5jdGlvbiBhc3NlcnQo
YikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQhIikKK30KKwor
Y2xhc3MgQyBleHRlbmRzIG51bGwgeyB9Cithc3NlcnQoKG5ldyBDKSBpbnN0YW5jZW9mIEMpOwor
YXNzZXJ0KCEoKG5ldyBDKSBpbnN0YW5jZW9mIE9iamVjdCkpOworYXNzZXJ0KFJlZmxlY3QuZ2V0
UHJvdG90eXBlT2YoQy5wcm90b3R5cGUpID09PSBudWxsKTsKKworbGV0IG8gPSB7fQorY2xhc3Mg
RCBleHRlbmRzIG51bGwgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gbzsK
KyAgICB9Cit9Cithc3NlcnQobmV3IEQgPT09IG8pOworYXNzZXJ0KFJlZmxlY3QuZ2V0UHJvdG90
eXBlT2YoRC5wcm90b3R5cGUpID09PSBudWxsKTsKKworY2xhc3MgRSBleHRlbmRzIG51bGwgewor
ICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9Cithc3Nl
cnQoKG5ldyBFKSBpbnN0YW5jZW9mIEUpOworYXNzZXJ0KCEoKG5ldyBFKSBpbnN0YW5jZW9mIE9i
amVjdCkpOworYXNzZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoRS5wcm90b3R5cGUpID09PSBu
dWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzOTc5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI3IEBACisyMDE2LTA4LTAxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisg
ICAgICAgIHVwZGF0ZSBhIGNsYXNzIGV4dGVuZGluZyBudWxsIHcuci50IHRoZSBFUzcgc3BlYwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNDE3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGNs
YXNzIGV4dGVuZHMgbnVsbCwgaXQgc2hvdWxkIG5vdCBiZSBtYXJrZWQgYXMgYSBkZXJpdmVkIGNs
YXNzLgorICAgICAgICBUaGlzIHdhcyBjaGFuZ2VkIGluIHRoZSBFUzIwMTYgc3BlYywgYW5kIHRo
aXMgcGF0Y2ggbWFrZXMgdGhlIG5lZWRlZAorICAgICAgICBjaGFuZ2VzIGluIEpTQyB0byBmb2xs
b3cgdGhlIHNwZWMuIFRoaXMgYWxsb3dzIGNsYXNzZXMgdG8gZXh0ZW5kCisgICAgICAgIG51bGwg
YW5kIGhhdmUgdGhlaXIgZGVmYXVsdCBjb25zdHJ1Y3RvciBpbnZva2VkIHdpdGhvdXQgdGhyb3cg
YW4gZXhjZXB0aW9uLgorICAgICAgICBUaGlzIGFsc28gcHJldmVudHMgfHRoaXN8IGZyb20gYmVp
bmcgdW5kZXIgVERaIGF0IHRoZSBzdGFydCBvZiB0aGUgY29uc3RydWN0b3IuCisKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHBy
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpzZXRTdGFydE9mZnNldCk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmlzSlNOdWxsKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6cHJvcGFnYXRl
QXJndW1lbnRzVXNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAqIHBhcnNlci9TeW50
YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJhdG9yU3RhY2tQ
b3ApOgorCiAyMDE2LTA4LTAxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFN1YiBzaG91bGQgYmUgYSBNYXRoIElDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAyMDM5
NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NjEsOCArMzQ2MSw5IEBAIFJlZ2lzdGVySUQqIENsYXNz
RXhwck5vZGU6OmVtaXRCeXRlY29kZSgKICAgICAgICAgbWV0YWRhdGEtPnNldENsYXNzU291cmNl
KG1fY2xhc3NTb3VyY2UpOwogICAgICAgICBjb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fY29uc3RydWN0b3JFeHByZXNzaW9uKTsKICAgICB9IGVsc2UgeworICAgICAgICBi
b29sIGlzRGVyaXZlZENvbnN0cnVjdG9yID0gbV9jbGFzc0hlcml0YWdlICYmICFtX2NsYXNzSGVy
aXRhZ2UtPmlzTnVsbCgpOwogICAgICAgICBjb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5lbWl0TmV3
RGVmYXVsdENvbnN0cnVjdG9yKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksCi0gICAg
ICAgICAgICBtX2NsYXNzSGVyaXRhZ2UgPyBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgOiBDb25z
dHJ1Y3RvcktpbmQ6OkJhc2UsCisgICAgICAgICAgICBpc0Rlcml2ZWRDb25zdHJ1Y3RvciA/IENv
bnN0cnVjdG9yS2luZDo6RGVyaXZlZCA6IENvbnN0cnVjdG9yS2luZDo6QmFzZSwKICAgICAgICAg
ICAgIG1fbmFtZSwgZWNtYU5hbWUoKSwgbV9jbGFzc1NvdXJjZSk7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkocmV2aXNpb24gMjAzOTc5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk0Myw2ICs5NDMsMTAgQEAgcHVibGljOgogICAgICAgICBub2RlLT5zZXRTdGFy
dE9mZnNldChvZmZzZXQpOwogICAgIH0KIAorICAgIGJvb2wgaXNKU051bGwoRXhwcmVzc2lvbk5v
ZGUqIGV4cHIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZXhwci0+aXNOdWxsKCk7Cisg
ICAgfQogCiAgICAgdm9pZCBwcm9wYWdhdGVBcmd1bWVudHNVc2UoKSB7IHVzZXNBcmd1bWVudHMo
KTsgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAko
cmV2aXNpb24gMjAzOTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAzLDcgKzIzMDMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4CiAgICAgICAgIHBhcmVudENsYXNzID0gcGFyc2VNZW1i
ZXJFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShwYXJlbnRDbGFzcywg
IkNhbm5vdCBwYXJzZSB0aGUgcGFyZW50IGNsYXNzIG5hbWUiKTsKICAgICB9Ci0gICAgY29uc3Qg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCA9IHBhcmVudENsYXNzID8gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkIDogQ29uc3RydWN0b3JLaW5kOjpCYXNlOworICAgIGNvbnN0IENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQgPSAocGFyZW50Q2xhc3MgJiYgIWNvbnRleHQuaXNK
U051bGwocGFyZW50Q2xhc3MpKSA/IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCA6IENvbnN0cnVj
dG9yS2luZDo6QmFzZTsKIAogICAgIGNvbnN1bWVPckZhaWwoT1BFTkJSQUNFLCAiRXhwZWN0ZWQg
b3BlbmluZyAneycgYXQgdGhlIHN0YXJ0IG9mIGEgY2xhc3MgYm9keSIpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAkocmV2aXNpb24gMjAz
OTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4OCw2ICszODgsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
aXNPYmplY3RMaXRlcmFsKHR5cGUpIHx8IGlzQXJyYXlMaXRlcmFsKHR5cGUpOwogICAgIH0KIAor
ICAgIGJvb2wgaXNKU051bGwoRXhwcmVzc2lvblR5cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiB0eXBlID09IE51bGxFeHByOworICAgIH0KKwogICAgIHZvaWQgc2V0RW5kT2Zm
c2V0KGludCwgaW50KSB7IH0KICAgICBpbnQgZW5kT2Zmc2V0KGludCkgeyByZXR1cm4gMDsgfQog
ICAgIHZvaWQgc2V0U3RhcnRPZmZzZXQoaW50LCBpbnQpIHsgfQpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjAzOTc5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTYtMDgtMDEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisK
KyAgICAgICAgdXBkYXRlIGEgY2xhc3MgZXh0ZW5kaW5nIG51bGwgdy5yLnQgdGhlIEVTNyBzcGVj
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0MTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL3Bh
cnNlci1zeW50YXgtY2hlY2stZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0
cy9wYXJzZXItc3ludGF4LWNoZWNrLmpzOgorCiAyMDE2LTA4LTAxICBBZHJpYW4gUGVyZXogZGUg
Q2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgVXBkYXRlIEFwYWNoZSBjb25m
aWd1cmF0aW9uIGZvciBBcmNoIExpbnV4CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9wYXJzZXItc3lu
dGF4LWNoZWNrLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9wYXJz
ZXItc3ludGF4LWNoZWNrLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjAzOTc5KQorKysgTGF5b3V0
VGVzdHMvanMvcGFyc2VyLXN5bnRheC1jaGVjay1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEzNzgsNiArMTM3OCwxOCBAQCBQQVNTIFZhbGlkOiAgICJjbGFzcyBDIHsgY29uc3RydWN0
b3IoKSB7CiBQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyBjbGFzcyBDIHsgY29uc3RydWN0
b3IoKSB7IHRoaXMuX3ggPSA0NTsgfSBnZXQgZm9vKCkgeyByZXR1cm4gdGhpcy5feDt9IH0gY2xh
c3MgRCBleHRlbmRzIEMgeyBjb25zdHJ1Y3Rvcih4ID0gKCkgPT4gc3VwZXIuZm9vKSB7IHN1cGVy
KCk7IHRoaXMuX3hfZiA9IHg7IH0geCgpIHsgcmV0dXJuIHRoaXMuX3hfZigpOyB9IH0gfSIKIFBB
U1MgVmFsaWQ6ICAgImNsYXNzIEMgeyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5feCA9IDQ1OyB9IGdl
dCBmb28oKSB7IHJldHVybiB0aGlzLl94O30gfSBjbGFzcyBEIGV4dGVuZHMgQyB7IGNvbnN0cnVj
dG9yKHggPSAoKSA9PiBzdXBlcigpKSB7IHgoKTsgfSB4KCkgeyByZXR1cm4gc3VwZXIuZm9vOyB9
IH0iCiBQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyBjbGFzcyBDIHsgY29uc3RydWN0b3Io
KSB7IHRoaXMuX3ggPSA0NTsgfSBnZXQgZm9vKCkgeyByZXR1cm4gdGhpcy5feDt9IH0gY2xhc3Mg
RCBleHRlbmRzIEMgeyBjb25zdHJ1Y3Rvcih4ID0gKCkgPT4gc3VwZXIoKSkgeyB4KCk7IH0geCgp
IHsgcmV0dXJuIHN1cGVyLmZvbzsgfSB9IH0iCitQQVNTIFZhbGlkOiAgICJjbGFzcyBDIGV4dGVu
ZHMgbnVsbCB7IH0iCitQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyBjbGFzcyBDIGV4dGVu
ZHMgbnVsbCB7IH0gfSIKK1BBU1MgVmFsaWQ6ICAgImNsYXNzIEMgZXh0ZW5kcyBudWxsIHsgY29u
c3RydWN0b3IoKSB7IHRoaXMuZm9vID0gMjA7IH0gfSIKK1BBU1MgVmFsaWQ6ICAgImZ1bmN0aW9u
IGYoKSB7IGNsYXNzIEMgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuZm9vID0g
MjA7IH0gfSB9IgorUEFTUyBWYWxpZDogICAiY2xhc3MgQyBleHRlbmRzIG51bGwgeyBjb25zdHJ1
Y3RvcigpIHsgcmV0dXJuIHt9OyB9IH0iCitQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyBj
bGFzcyBDIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4ge307IH0gfSB9Igor
UEFTUyBWYWxpZDogICAiY2xhc3MgQyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgcmV0
dXJuIHRoaXM7IH0gfSIKK1BBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IGNsYXNzIEMgZXh0
ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiB0aGlzOyB9IH0gfSIKK1BBU1MgSW52
YWxpZDogImNsYXNzIEMgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IH0g
fSIKK1BBU1MgSW52YWxpZDogImZ1bmN0aW9uIGYoKSB7IGNsYXNzIEMgZXh0ZW5kcyBudWxsIHsg
Y29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IH0gfSB9IgorUEFTUyBJbnZhbGlkOiAiY2xhc3MgQyBl
eHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgbGV0IGFyciA9ICgpPT5zdXBlcigpOyB9IH0i
CitQQVNTIEludmFsaWQ6ICJmdW5jdGlvbiBmKCkgeyBjbGFzcyBDIGV4dGVuZHMgbnVsbCB7IGNv
bnN0cnVjdG9yKCkgeyBsZXQgYXJyID0gKCk9PnN1cGVyKCk7IH0gfSB9IgogV2VpcmQgdGhpbmdz
IHRoYXQgdXNlZCB0byBjcmFzaC4KIFBBU1MgSW52YWxpZDogIm9yIChbW3ticmVhayAvLyhlbHNl
aWZvIChhPTA7YTwyO2ErKyluPQogICAgICAgICBbW3thRllZIHNnYT0KSW5kZXg6IExheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9wYXJzZXItc3ludGF4LWNoZWNrLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wYXJzZXItc3ludGF4LWNoZWNrLmpzCShyZXZp
c2lvbiAyMDM5NzkpCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcGFyc2VyLXN5bnRh
eC1jaGVjay5qcwkod29ya2luZyBjb3B5KQpAQCAtODAxLDYgKzgwMSwxMiBAQCB2YWxpZCgiY2xh
c3MgQyB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLl94CiB2YWxpZCgiY2xhc3MgQyB7IGNvbnN0cnVj
dG9yKCkgeyB0aGlzLl94ID0gNDU7IH0gZ2V0IGZvbygpIHsgcmV0dXJuIHRoaXMuX3g7fSB9IGNs
YXNzIEQgZXh0ZW5kcyBDIHsgeCh5ID0gKHkgPSAoKSA9PiBzdXBlci5mb28pID0+IHtyZXR1cm4g
eSgpfSkgeyByZXR1cm4geSgpOyB9IH0iKTsKIHZhbGlkKCJjbGFzcyBDIHsgY29uc3RydWN0b3Io
KSB7IHRoaXMuX3ggPSA0NTsgfSBnZXQgZm9vKCkgeyByZXR1cm4gdGhpcy5feDt9IH0gY2xhc3Mg
RCBleHRlbmRzIEMgeyBjb25zdHJ1Y3Rvcih4ID0gKCkgPT4gc3VwZXIuZm9vKSB7IHN1cGVyKCk7
IHRoaXMuX3hfZiA9IHg7IH0geCgpIHsgcmV0dXJuIHRoaXMuX3hfZigpOyB9IH0iKTsKIHZhbGlk
KCJjbGFzcyBDIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuX3ggPSA0NTsgfSBnZXQgZm9vKCkgeyBy
ZXR1cm4gdGhpcy5feDt9IH0gY2xhc3MgRCBleHRlbmRzIEMgeyBjb25zdHJ1Y3Rvcih4ID0gKCkg
PT4gc3VwZXIoKSkgeyB4KCk7IH0geCgpIHsgcmV0dXJuIHN1cGVyLmZvbzsgfSB9Iik7Cit2YWxp
ZCgiY2xhc3MgQyBleHRlbmRzIG51bGwgeyB9Iik7Cit2YWxpZCgiY2xhc3MgQyBleHRlbmRzIG51
bGwgeyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5mb28gPSAyMDsgfSB9Iik7Cit2YWxpZCgiY2xhc3Mg
QyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHt9OyB9IH0iKTsKK3ZhbGlk
KCJjbGFzcyBDIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gdGhpczsgfSB9
Iik7CitpbnZhbGlkKCJjbGFzcyBDIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyBzdXBl
cigpOyB9IH0iKTsKK2ludmFsaWQoImNsYXNzIEMgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3Io
KSB7IGxldCBhcnIgPSAoKT0+c3VwZXIoKTsgfSB9Iik7CiAKIGRlYnVnKCJXZWlyZCB0aGluZ3Mg
dGhhdCB1c2VkIHRvIGNyYXNoLiIpOwogaW52YWxpZChgb3IgKFtbe2JyZWFrIC8vKGVsc2VpZm8g
KGE9MDthPDI7YSsrKW49Cg==
</data>
<flag name="review"
          id="308695"
          type_id="1"
          status="-"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285130</attachid>
            <date>2016-08-02 13:25:30 -0700</date>
            <delta_ts>2016-08-02 13:52:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>32808</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlbG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlbG9n
CShyZXZpc2lvbiAyMDM5NzkpCisrKyBKU1Rlc3RzL0NoYW5nZWxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDQ2IEBACisyMDE2LTA4LTAyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIHVwZGF0ZSBhIGNsYXNzIGV4dGVuZGluZyBudWxsIHcuci50IHRoZSBF
Uzcgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYwNDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBDaGFuZ2Vsb2c6CisgICAgICAgICogc3RyZXNzL2NsYXNzLWRlcml2ZWQtZnJvbS1udWxsLmpz
OiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHRl
c3QxLkMpOgorICAgICAgICAodGVzdDEpOgorICAgICAgICAoanNOdWxsKToKKyAgICAgICAgKHRl
c3QyLkMpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMuQyk6CisgICAgICAgICh0
ZXN0My5EKToKKyAgICAgICAgKHRlc3QzLkUpOgorICAgICAgICAodGVzdDMpOgorICAgICAgICAo
dGVzdDQuRSk6CisgICAgICAgICh0ZXN0NCk6CisgICAgICAgICh0ZXN0NS5FKToKKyAgICAgICAg
KHRlc3Q1KToKKyAgICAgICAgKHRlc3Q2LkJhc2UpOgorICAgICAgICAodGVzdDYuRCk6CisgICAg
ICAgICh0ZXN0Ni5FKToKKyAgICAgICAgKHRlc3Q2LkYpOgorICAgICAgICAodGVzdDYuRyk6Cisg
ICAgICAgICh0ZXN0Nik6CisKKzIwMTYtMDgtMDEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBs
ZS5jb20+CisKKyAgICAgICAgdXBkYXRlIGEgY2xhc3MgZXh0ZW5kaW5nIG51bGwgdy5yLnQgdGhl
IEVTNyBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjA0MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHN0cmVzcy9jbGFzcy1kZXJpdmVkLWZyb20tbnVsbC5qczogQWRkZWQuCisgICAgICAgIChh
c3NlcnQpOgorICAgICAgICAoQyk6CisgICAgICAgIChFKToKKwogMjAxNi0wOC0wMSAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZSBzaG91bGQgbm90
IGtlZXAgdGhlIEphdmFTY3JpcHQgdGVzdHMgaW5zaWRlIHRoZSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvIGRpcmVjdG9yeS4KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2NsYXNzLWRlcml2ZWQtZnJvbS1u
dWxsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2NsYXNzLWRlcml2ZWQtZnJvbS1u
dWxsLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2NsYXNzLWRlcml2ZWQtZnJv
bS1udWxsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI4IEBACitmdW5jdGlvbiBhc3Nl
cnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQhIikKK30K
KworZnVuY3Rpb24gdGVzdChmLCBjb3VudCA9IDEwMDApIHsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IGNvdW50OyBpKyspCisgICAgICAgIGYoKTsKK30KKworZnVuY3Rpb24gdGVzdDEoKSB7Cisg
ICAgY2xhc3MgQyBleHRlbmRzIG51bGwgeyB9CisgICAgYXNzZXJ0KChuZXcgQykgaW5zdGFuY2Vv
ZiBDKTsKKyAgICBhc3NlcnQoISgobmV3IEMpIGluc3RhbmNlb2YgT2JqZWN0KSk7CisgICAgYXNz
ZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoQy5wcm90b3R5cGUpID09PSBudWxsKTsKKworICAg
IGxldCBvID0ge30KKyAgICBjbGFzcyBEIGV4dGVuZHMgbnVsbCB7CisgICAgICAgIGNvbnN0cnVj
dG9yKCkgeworICAgICAgICAgICAgcmV0dXJuIG87CisgICAgICAgIH0KKyAgICB9CisgICAgYXNz
ZXJ0KG5ldyBEID09PSBvKTsKKyAgICBhc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihELnBy
b3RvdHlwZSkgPT09IG51bGwpOworCisgICAgY2xhc3MgRSBleHRlbmRzIG51bGwgeworICAgICAg
ICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9Cisg
ICAgfQorICAgIGFzc2VydCgobmV3IEUpIGluc3RhbmNlb2YgRSk7CisgICAgYXNzZXJ0KCEoKG5l
dyBFKSBpbnN0YW5jZW9mIE9iamVjdCkpOworICAgIGFzc2VydChSZWZsZWN0LmdldFByb3RvdHlw
ZU9mKEUucHJvdG90eXBlKSA9PT0gbnVsbCk7Cit9Cit0ZXN0KHRlc3QxKTsKKworZnVuY3Rpb24g
anNOdWxsKCkgeyByZXR1cm4gbnVsbDsgfQorZnVuY3Rpb24gdGVzdDIoKSB7CisgICAgY2xhc3Mg
QyBleHRlbmRzIGpzTnVsbCgpIHsgfQorICAgIGFzc2VydCgobmV3IEMpIGluc3RhbmNlb2YgQyk7
CisgICAgYXNzZXJ0KCEoKG5ldyBDKSBpbnN0YW5jZW9mIE9iamVjdCkpOworICAgIGFzc2VydChS
ZWZsZWN0LmdldFByb3RvdHlwZU9mKEMucHJvdG90eXBlKSA9PT0gbnVsbCk7CisKKyAgICBsZXQg
byA9IHt9CisgICAgY2xhc3MgRCBleHRlbmRzIGpzTnVsbCgpIHsKKyAgICAgICAgY29uc3RydWN0
b3IoKSB7CisgICAgICAgICAgICByZXR1cm4gbzsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3Nl
cnQobmV3IEQgPT09IG8pOworICAgIGFzc2VydChSZWZsZWN0LmdldFByb3RvdHlwZU9mKEQucHJv
dG90eXBlKSA9PT0gbnVsbCk7CisKKyAgICBjbGFzcyBFIGV4dGVuZHMganNOdWxsKCkgeworICAg
ICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9
CisgICAgfQorICAgIGFzc2VydCgobmV3IEUpIGluc3RhbmNlb2YgRSk7CisgICAgYXNzZXJ0KCEo
KG5ldyBFKSBpbnN0YW5jZW9mIE9iamVjdCkpOworICAgIGFzc2VydChSZWZsZWN0LmdldFByb3Rv
dHlwZU9mKEUucHJvdG90eXBlKSA9PT0gbnVsbCk7Cit9Cit0ZXN0KHRlc3QyKTsKKworZnVuY3Rp
b24gdGVzdDMoKSB7CisgICAgY2xhc3MgQyBleHRlbmRzIGpzTnVsbCgpIHsgY29uc3RydWN0b3Io
KSB7IHN1cGVyKCk7IH0gfQorICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgIHRyeSB7CisgICAg
ICAgIG5ldyBDOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICB0aHJldyA9IGUudG9TdHJpbmco
KSA9PT0gIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRp
bmcgJ3N1cGVyKCknKSI7CisgICAgfQorICAgIGFzc2VydCh0aHJldyk7CisKKyAgICBjbGFzcyBE
IGV4dGVuZHMganNOdWxsKCkgeyBjb25zdHJ1Y3RvcigpIHsgbGV0IGFyciA9ICgpPT5zdXBlcigp
OyBhcnIoKTsgfSB9CisgICAgdGhyZXcgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBuZXcg
RDsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgdGhyZXcgPSBlLnRvU3RyaW5nKCkgPT09ICJU
eXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICdzdXBl
cigpJykiOworICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworCisgICAgY2xhc3MgRSBleHRlbmRz
IGpzTnVsbCgpIHsgY29uc3RydWN0b3IoKSB7IGxldCBhcnIgPSAoKT0+c3VwZXIoKTsgcmV0dXJu
IHRoaXM7IH0gfQorICAgIGFzc2VydCgobmV3IEUpIGluc3RhbmNlb2YgRSk7CisgICAgYXNzZXJ0
KCEoKG5ldyBFKSBpbnN0YW5jZW9mIE9iamVjdCkpOworICAgIGFzc2VydChSZWZsZWN0LmdldFBy
b3RvdHlwZU9mKEUucHJvdG90eXBlKSA9PT0gbnVsbCk7Cit9Cit0ZXN0KHRlc3QzKTsKKworZnVu
Y3Rpb24gdGVzdDQoKSB7CisgICAgY2xhc3MgRSBleHRlbmRzIGpzTnVsbCgpIHsgY29uc3RydWN0
b3IoKSB7IHJldHVybiAyNTsgfSB9CisgICAgYXNzZXJ0KChuZXcgRSkgaW5zdGFuY2VvZiBFKTsK
KyAgICBhc3NlcnQoISgobmV3IEUpIGluc3RhbmNlb2YgT2JqZWN0KSk7CisgICAgYXNzZXJ0KFJl
ZmxlY3QuZ2V0UHJvdG90eXBlT2YoRS5wcm90b3R5cGUpID09PSBudWxsKTsKK30KK3Rlc3QodGVz
dDQpOworCitmdW5jdGlvbiB0ZXN0NSgpIHsKKyAgICBjbGFzcyBFIGV4dGVuZHMganNOdWxsKCkg
eyBjb25zdHJ1Y3RvcigpIHsgbGV0IGFyciA9ICgpPT50aGlzOyByZXR1cm4gYXJyKCk7IH0gfQor
ICAgIGFzc2VydCgobmV3IEUpIGluc3RhbmNlb2YgRSk7CisgICAgYXNzZXJ0KCEoKG5ldyBFKSBp
bnN0YW5jZW9mIE9iamVjdCkpOworICAgIGFzc2VydChSZWZsZWN0LmdldFByb3RvdHlwZU9mKEUu
cHJvdG90eXBlKSA9PT0gbnVsbCk7Cit9Cit0ZXN0KHRlc3Q1KTsKKworZnVuY3Rpb24gdGVzdDYo
KSB7CisgICAgY2xhc3MgQmFzZSB7IH0KKyAgICBjbGFzcyBEIGV4dGVuZHMgQmFzZSB7IH0KKyAg
ICBjbGFzcyBFIGV4dGVuZHMganNOdWxsKCkgeyBjb25zdHJ1Y3RvcigpIHsgbGV0IHJldCA9IHRo
aXM7IHJldHVybiByZXQ7IH0gfQorICAgIGNsYXNzIEYgZXh0ZW5kcyBqc051bGwoKSB7IGNvbnN0
cnVjdG9yKCkgeyByZXR1cm4gMjU7IH0gfQorICAgIGNsYXNzIEcgZXh0ZW5kcyBqc051bGwoKSB7
IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB9IH0KKyAgICBsZXQgcmVzdWx0ID0gUmVmbGVjdC5j
b25zdHJ1Y3QoRSwgW10sIEQpOworICAgIGFzc2VydChyZXN1bHQgaW5zdGFuY2VvZiBEKTsKKyAg
ICBhc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgT2JqZWN0KTsKKworICAgIHJlc3VsdCA9IFJlZmxl
Y3QuY29uc3RydWN0KEYsIFtdLCBEKTsKKyAgICBhc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgRCk7
CisgICAgYXNzZXJ0KHJlc3VsdCBpbnN0YW5jZW9mIE9iamVjdCk7CisKKyAgICBsZXQgdGhyZXcg
PSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBSZWZsZWN0LmNvbnN0cnVjdChHLCBbXSwgRCk7
CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHRocmV3ID0gZS50b1N0cmluZygpID09PSAiVHlw
ZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnc3VwZXIo
KScpIjsKKyAgICB9CisgICAgYXNzZXJ0KHRocmV3KTsKK30KK3Rlc3QodGVzdDYpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDM5NzkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTYt
MDgtMDIgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgdXBkYXRl
IGEgY2xhc3MgZXh0ZW5kaW5nIG51bGwgdy5yLnQgdGhlIEVTNyBzcGVjCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0MTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgY2xhc3MgZXh0ZW5kcyBu
dWxsLCBpdCBzaG91bGQgbm90IGJlIG1hcmtlZCBhcyBhIGRlcml2ZWQgY2xhc3MuCisgICAgICAg
IFRoaXMgd2FzIGNoYW5nZWQgaW4gdGhlIEVTMjAxNiBzcGVjLCBhbmQgdGhpcyBwYXRjaCBtYWtl
cyB0aGUgbmVlZGVkCisgICAgICAgIGNoYW5nZXMgaW4gSlNDIHRvIGZvbGxvdyB0aGUgc3BlYy4g
VGhpcyBhbGxvd3MgY2xhc3NlcyB0byBleHRlbmQKKyAgICAgICAgbnVsbCBhbmQgaGF2ZSB0aGVp
ciBkZWZhdWx0IGNvbnN0cnVjdG9yIGludm9rZWQgd2l0aG91dCB0aHJvd2luZyBhbiBleGNlcHRp
b24uCisgICAgICAgIFRoaXMgYWxzbyBwcmV2ZW50cyB8dGhpc3wgZnJvbSBiZWluZyB1bmRlciBU
RFogYXQgdGhlIHN0YXJ0IG9mIHRoZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgQmVjYXVzZSBFUzYg
YWxsb3dzIGFyYml0cmFyeSBleHByZXNzaW9ucyBpbiB0aGUgYGNsYXNzIDxpZGVudD4gZXh0ZW5k
cyA8ZXhwcj5gCisgICAgICAgIHN5bnRheCwgd2UgZG9uJ3Qga25vdyBzdGF0aWNhbGx5IGlmIGEg
Y29uc3RydWN0b3IgaXMgZXh0ZW5kaW5nIG51bGwgb3Igbm90LgorICAgICAgICBUaGVyZWZvcmUs
IHdlIGRvbid0IGFsd2F5cyBrbm93IHN0YXRpY2FsbHkgaWYgaXQncyBhIGJhc2Ugb3IgZGVyaXZl
ZCBjb25zdHJ1Y3Rvci4KKyAgICAgICAgSSBzb2x2ZWQgdGhpcyBieSBwdXR0aW5nIGEgYm9vbGVh
biBvbiB0aGUgY29uc3RydWN0b3IgZnVuY3Rpb24gdW5kZXIgYSBwcml2YXRlCisgICAgICAgIHN5
bWJvbCBuYW1lZCBpc0Rlcml2ZWRDb25zdHJ1Y3RvciB3aGVuIGRvaW5nIGNsYXNzIGNvbnN0cnVj
dGlvbi4gV2Ugb25seSBuZWVkCisgICAgICAgIHRvIHB1dCB0aGlzIGJvb2xlYW4gb24gY29uc3Ry
dWN0b3JzIHRoYXQgbWF5IGV4dGVuZCBudWxsLiBDb25zdHJ1Y3RvcnMgdGhhdCBhcmUKKyAgICAg
ICAgZGVjbGFyZWQgaW4gYSBjbGFzcyB3aXRoIG5vIGV4dGVuZHMgc3ludGF4IGNhbiB0ZWxsIHN0
YXRpY2FsbHkgdGhhdCB0aGV5IGFyZSBhIGJhc2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgSSd2
ZSBhbHNvIHJlbmFtZWQgdGhlIENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCBlbnVtIHZhbHVlIHRv
IGJlCisgICAgICAgIENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyB0byBiZXR0ZXIgaW5kaWNhdGUg
dGhhdCB3ZSBjYW4ndCBhbnN3ZXIKKyAgICAgICAgdGhlICJhbSBJIGEgZGVyaXZlZCBjb25zdHJ1
Y3Rvcj8iIHF1ZXN0aW9uIHN0YXRpY2FsbHkuCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0
ZURlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVBcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3Bl
SWZOZWVkZWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZEFycm93RnVuY3Rpb25M
ZXhpY2FsRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW5z
dXJlVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0RGVyaXZl
ZENvbnN0cnVjdG9yVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3BlKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OkV2YWxGdW5jdGlvbkNhbGxOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNl
ck1vZGVzLmg6CisKIDIwMTYtMDgtMDEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgU3ViIHNob3VsZCBiZSBhIE1hdGggSUMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCShyZXZp
c2lvbiAyMDM5NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q29uc3RydWN0b3JLaW5kOjpCYXNlOgogICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZSht
X3ZtLCBtYWtlU291cmNlKGJhc2VDb25zdHJ1Y3RvckNvZGUpLCBuYW1lLCBjb25zdHJ1Y3Rvcktp
bmQsIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCk7Ci0gICAgY2FzZSBDb25zdHJ1Y3Rv
cktpbmQ6OkRlcml2ZWQ6CisgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHM6CiAgICAg
ICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIG1ha2VTb3VyY2UoZGVyaXZlZENvbnN0
cnVjdG9yQ29kZSksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2Fu
Q29uc3RydWN0KTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCShyZXZpc2lvbiAy
MDM5NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBt
YWNybyhpc0FycmF5KSBcCiAgICAgbWFjcm8oaXNBcnJheUNvbnN0cnVjdG9yKSBcCiAgICAgbWFj
cm8oaXNDb25zdHJ1Y3RvcikgXAorICAgIG1hY3JvKGlzRGVyaXZlZENvbnN0cnVjdG9yKSBcCiAg
ICAgbWFjcm8oaXNSZWdFeHBPYmplY3QpIFwKICAgICBtYWNybyhjb25jYXRNZW1jcHkpIFwKICAg
ICBtYWNybyhhcHBlbmRNZW1jcHkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAy
MDM5NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYwLDkgKzU2MCwxOCBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgICAgIGlmIChTb3VyY2VQYXJzZU1v
ZGU6OkFycm93RnVuY3Rpb25Nb2RlICE9IHBhcnNlTW9kZSkgewogICAgICAgICAgICAgaWYgKGlz
Q29uc3RydWN0b3IoKSkgewogICAgICAgICAgICAgICAgIGVtaXRNb3ZlKG1fbmV3VGFyZ2V0UmVn
aXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9y
S2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICAgICAgICAgICAgICBpZiAo
Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzKSB7CisgICAgICAg
ICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gaXNEZXJpdmVkID0gbmV3TGFiZWwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gbmV3TGFiZWwoKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9pc0Rlcml2ZWRDb25zdHVjdG9yID0gYWRkVmFyKCk7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRHZXRCeUlkKG1faXNEZXJpdmVkQ29uc3R1Y3RvciwgJm1fY2FsbGVlUmVn
aXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5pc0Rlcml2ZWRDb25zdHJ1Y3Rv
clByaXZhdGVOYW1lKCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShtX2lz
RGVyaXZlZENvbnN0dWN0b3IsIGlzRGVyaXZlZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAg
IGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgICAgIGVt
aXRKdW1wKGRvbmUuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0TGFiZWwoaXNEZXJp
dmVkLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKCZtX3Ro
aXNSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBl
bWl0TGFiZWwoZG9uZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkKICAg
ICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgY29u
c3RydWN0b3Igd2l0aG91dCB8bmV3fCIpOwpAQCAtOTQ4LDcgKzk1Nyw3IEBAIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmluaXRpYWxpemVBcnJvd0YKICAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9s
VGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFt
ZXMoKS5uZXdUYXJnZXRMb2NhbFByaXZhdGVOYW1lKCkuaW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5
KFZhck9mZnNldChvZmZzZXQpKSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChp
c0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpE
ZXJpdmVkICYmIGlzU3VwZXJVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkgeworICAgICAgICBp
ZiAoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6RXh0ZW5kcyAmJiBpc1N1cGVyVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpIHsKICAgICAg
ICAgICAgIG9mZnNldCA9IGZ1bmN0aW9uU3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQo
Tm9Mb2NraW5nTmVjZXNzYXJ5KTsKICAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9sVGFibGUtPnNl
dChOb0xvY2tpbmdOZWNlc3NhcnksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5kZXJp
dmVkQ29uc3RydWN0b3JQcml2YXRlTmFtZSgpLmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeShWYXJP
ZmZzZXQob2Zmc2V0KSkpOwogICAgICAgICB9CkBAIC05NzAsNyArOTc5LDcgQEAgdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZUFycm93RgogICAgICAgICBhZGRUYXJnZXQuaXRlcmF0
b3ItPnZhbHVlLnNldElzTGV0KCk7CiAgICAgfQogCi0gICAgaWYgKGlzQ29uc3RydWN0b3IoKSAm
JiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgJiYgaXNTdXBl
clVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSB7CisgICAgaWYgKGlzQ29uc3RydWN0b3IoKSAm
JiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMgJiYgaXNTdXBl
clVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSB7CiAgICAgICAgIGF1dG8gZGVyaXZlZENvbnN0
cnVjdG9yID0gZW52aXJvbm1lbnQuYWRkKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5k
ZXJpdmVkQ29uc3RydWN0b3JQcml2YXRlTmFtZSgpKTsKICAgICAgICAgZGVyaXZlZENvbnN0cnVj
dG9yLml0ZXJhdG9yLT52YWx1ZS5zZXRJc0NhcHR1cmVkKCk7CiAgICAgICAgIGRlcml2ZWRDb25z
dHJ1Y3Rvci5pdGVyYXRvci0+dmFsdWUuc2V0SXNMZXQoKTsKQEAgLTMyNjUsMjQgKzMyNzQsMjgg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxEZWZpbmVQcgogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKQogewogICAgIGlm
IChpc0NvbnN0cnVjdG9yKCkpIHsKLSAgICAgICAgYm9vbCBkZXJpdmVkID0gY29uc3RydWN0b3JL
aW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkOworICAgICAgICBib29sIG1pZ2h0QmVE
ZXJpdmVkID0gY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzOwog
ICAgICAgICBib29sIHNyY0lzVGhpcyA9IHNyYy0+aW5kZXgoKSA9PSBtX3RoaXNSZWdpc3Rlci5p
bmRleCgpOwogCi0gICAgICAgIGlmIChkZXJpdmVkICYmIHNyY0lzVGhpcykKKyAgICAgICAgaWYg
KG1pZ2h0QmVEZXJpdmVkICYmIHNyY0lzVGhpcykKICAgICAgICAgICAgIGVtaXRURFpDaGVjayhz
cmMpOwogCiAgICAgICAgIGlmICghc3JjSXNUaGlzKSB7CiAgICAgICAgICAgICBSZWZQdHI8TGFi
ZWw+IGlzT2JqZWN0TGFiZWwgPSBuZXdMYWJlbCgpOwogICAgICAgICAgICAgZW1pdEp1bXBJZlRy
dWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBzcmMpLCBpc09iamVjdExhYmVsLmdldCgp
KTsKIAotICAgICAgICAgICAgaWYgKGRlcml2ZWQpIHsKKyAgICAgICAgICAgIGlmIChtaWdodEJl
RGVyaXZlZCkgeworICAgICAgICAgICAgICAgIEFTU0VSVChtX2lzRGVyaXZlZENvbnN0dWN0b3Ip
OworICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuVGhpcyA9IG5ld0xhYmVsKCk7
CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZkZhbHNlKG1faXNEZXJpdmVkQ29uc3R1Y3Rvciwg
cmV0dXJuVGhpcy5nZXQoKSk7CisgICAgICAgICAgICAgICAgLy8gRWxzZSwgd2UncmUgYSBkZXJp
dmVkIGNvbnN0cnVjdG9yIGhlcmUuCiAgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBpc1Vu
ZGVmaW5lZExhYmVsID0gbmV3TGFiZWwoKTsKICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1
ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHNyYyksIGlzVW5kZWZpbmVkTGFiZWwu
Z2V0KCkpOwogICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IHJldHVy
biBhIG5vbi1vYmplY3QgdHlwZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNz
LiIpOwogICAgICAgICAgICAgICAgIGVtaXRMYWJlbChpc1VuZGVmaW5lZExhYmVsLmdldCgpKTsK
ICAgICAgICAgICAgICAgICBlbWl0VERaQ2hlY2soJm1fdGhpc1JlZ2lzdGVyKTsKKyAgICAgICAg
ICAgICAgICBlbWl0TGFiZWwocmV0dXJuVGhpcy5nZXQoKSk7CiAgICAgICAgICAgICB9Ci0KICAg
ICAgICAgICAgIGVtaXRVbmFyeU5vRHN0T3Aob3BfcmV0LCAmbV90aGlzUmVnaXN0ZXIpOwogICAg
ICAgICAgICAgZW1pdExhYmVsKGlzT2JqZWN0TGFiZWwuZ2V0KCkpOwogICAgICAgICB9CkBAIC00
Mjg1LDcgKzQyOTgsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BJbmRleGVkRm9ySW5T
CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZEFycm93RnVuY3Rpb25M
ZXhpY2FsRW52aXJvbm1lbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICBB
U1NFUlQobV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpIHx8IG1fY29kZUJsb2NrLT5pc0Fy
cm93RnVuY3Rpb25Db250ZXh0KCkgfHwgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JL
aW5kOjpEZXJpdmVkIHx8IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpOworICAgIEFTU0VSVChtX2Nv
ZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkgfHwgbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlv
bkNvbnRleHQoKSB8fCBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVu
ZHMgfHwgbV9jb2RlVHlwZSA9PSBFdmFsQ29kZSk7CiAKICAgICByZXR1cm4gZW1pdFJlc29sdmVT
Y29wZShudWxscHRyLCB2YXJpYWJsZShpZGVudGlmaWVyLCBUaGlzUmVzb2x1dGlvblR5cGU6OlNj
b3BlZCkpOwogfQpAQCAtNDMxMSwxMCArNDMyNCwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdExvYWRECiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbnN1
cmVUaGlzKCkKIHsKLSAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5k
OjpEZXJpdmVkICYmIG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpICYmIGlzU3Vw
ZXJDYWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpCisgICAgaWYgKGNvbnN0cnVjdG9yS2lu
ZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyAmJiBuZWVkc1RvVXBkYXRlQXJyb3dGdW5j
dGlvbkNvbnRleHQoKSAmJiBpc1N1cGVyQ2FsbFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKQog
ICAgICAgICBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgp
OwogCi0gICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZl
ZCB8fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKKyAgICBpZiAoY29uc3RydWN0b3JL
aW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIHx8IGlzRGVyaXZlZENvbnN0cnVjdG9y
Q29udGV4dCgpKQogICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1JlZ2lzdGVyKCkpOwogCiAgICAg
cmV0dXJuIHRoaXNSZWdpc3RlcigpOwpAQCAtNDM1Nyw3ICs0MzcwLDcgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFB1dE5ld1RhcmdldAogICAgIAogdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFB1dERlcml2ZWRDb25zdHJ1Y3RvclRvQXJyb3dGdW5jdGlvbkNvbnRleHRTY29wZSgp
CiB7Ci0gICAgaWYgKChpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29u
c3RydWN0b3JLaW5kOjpEZXJpdmVkKSB8fCBtX2NvZGVCbG9jay0+aXNDbGFzc0NvbnRleHQoKSkg
eworICAgIGlmICgoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6RXh0ZW5kcykgfHwgbV9jb2RlQmxvY2stPmlzQ2xhc3NDb250ZXh0KCkpIHsK
ICAgICAgICAgaWYgKGlzU3VwZXJVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkgewogICAgICAg
ICAgICAgQVNTRVJUKG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdp
c3Rlcik7CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDIwMzk3OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtODI5LDcgKzgyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2
ZWRDb250ZXh0VHlwZTo6Tm9uZTsKIAogICAgICAgICAgICAgaWYgKG1ldGFkYXRhLT5wYXJzZU1v
ZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8
fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKKyAgICAgICAgICAgICAgICBpZiAoY29u
c3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIHx8IGlzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCgpKQogICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29udGV4
dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7CiAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAobV9jb2RlQmxvY2stPmlzQ2xhc3NDb250ZXh0KCkgfHwg
aXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkpCiAgICAgICAgICAgICAgICAgICAgIG5ld0Rlcml2ZWRD
b250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZE1ldGhvZENvbnRleHQ7CkBA
IC05MTAsNiArOTEwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIG1f
ZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX2ds
b2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3RlcklEKiBtX25l
d1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0ciB9OworICAgICAgICBSZWdpc3RlcklEKiBtX2lzRGVy
aXZlZENvbnN0dWN0b3IgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbGlua1Rp
bWVDb25zdGFudFJlZ2lzdGVyc1tMaW5rVGltZUNvbnN0YW50Q291bnRdOwogICAgICAgICBSZWdp
c3RlcklEKiBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIg
eyBudWxscHRyIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDIwMzk3OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzUxLDcgKzc1MSw3IEBAIFJlZ2lzdGVySUQqIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjpl
bWl0QnkKICAgICAvLyAgICAgICBldmFsKCJ0aGlzLmlkID0gJ0InIik7CiAgICAgLy8gICAgfQog
ICAgIC8vIH0KLSAgICBpZiAoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVj
dG9yS2luZDo6RGVyaXZlZCAmJiBnZW5lcmF0b3IubmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25D
b250ZXh0KCkgJiYgZ2VuZXJhdG9yLmlzVGhpc1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKQor
ICAgIGlmIChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpF
eHRlbmRzICYmIGdlbmVyYXRvci5uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSAm
JiBnZW5lcmF0b3IuaXNUaGlzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpCiAgICAgICAgIGdl
bmVyYXRvci5lbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgp
OwogCiAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9w
ZXJ0eU5hbWVzKCkuZXZhbCk7CkBAIC03ODUsMTEgKzc4NSwxMSBAQCBSZWdpc3RlcklEKiBGdW5j
dGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCCiAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3Vt
ZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAKICAgICAgICAgQVNTRVJUKGdlbmVyYXRvci5pc0Nv
bnN0cnVjdG9yKCkgfHwgZ2VuZXJhdG9yLmRlcml2ZWRDb250ZXh0VHlwZSgpID09IERlcml2ZWRD
b250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7Ci0gICAgICAgIEFTU0VSVChn
ZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8
IGdlbmVyYXRvci5kZXJpdmVkQ29udGV4dFR5cGUoKSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpOworICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyB8fCBnZW5lcmF0b3IuZGVy
aXZlZENvbnRleHRUeXBlKCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIGdlbmVyYXRvci5uZXdUYXJnZXQoKSk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IHJldCA9IGdlbmVyYXRvci5lbWl0Q29uc3RydWN0KHJldHVyblZhbHVlLmdldCgpLCBmdW5jLmdl
dCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAKLSAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yS2luZERlcml2
ZWQgPSBnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJp
dmVkOworICAgICAgICBib29sIGlzQ29uc3RydWN0b3JLaW5kRGVyaXZlZCA9IGdlbmVyYXRvci5j
b25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHM7CiAgICAgICAgIGJv
b2wgZG9XZVVzZUFycm93RnVuY3Rpb25JbkNvbnN0cnVjdG9yID0gaXNDb25zdHJ1Y3RvcktpbmRE
ZXJpdmVkICYmIGdlbmVyYXRvci5uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKTsK
IAogICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpIHx8
IChkb1dlVXNlQXJyb3dGdW5jdGlvbkluQ29uc3RydWN0b3IgJiYgZ2VuZXJhdG9yLmlzU3VwZXJD
YWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpKQpAQCAtMzM2NCw3ICszMzY0LDcgQEAgdm9p
ZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZQogCiAgICAgICAgIC8vIElmIHRo
ZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KICAgICAg
ICAgaWYgKCFyZXR1cm5Ob2RlKSB7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmNvbnN0cnVj
dG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBnZW5lcmF0b3IubmVlZHNU
b1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgJiYgZ2VuZXJhdG9yLmlzU3VwZXJDYWxsVXNl
ZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpCisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyAmJiBnZW5lcmF0b3IubmVl
ZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgJiYgZ2VuZXJhdG9yLmlzU3VwZXJDYWxs
VXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7IC8vIEFycm93
IGZ1bmN0aW9uIGNhbiBpbnZva2UgJ3N1cGVyJyBpbiBjb25zdHJ1Y3RvciBhbmQgYmVmb3JlIGxl
YXZlIGNvbnN0cnVjdG9yIHdlIG5lZWQgbG9hZCAndGhpcycgZnJvbSBsZXhpY2FsIGFycm93IGZ1
bmN0aW9uIGVudmlyb25tZW50CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJlZ2lzdGVySUQq
IHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIo
KSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKQEAgLTM0NjAsMTAgKzM0
NjAsMzIgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKAogICAgICAg
ICBtZXRhZGF0YS0+c2V0RWNtYU5hbWUoZWNtYU5hbWUoKSk7CiAgICAgICAgIG1ldGFkYXRhLT5z
ZXRDbGFzc1NvdXJjZShtX2NsYXNzU291cmNlKTsKICAgICAgICAgY29uc3RydWN0b3IgPSBnZW5l
cmF0b3IuZW1pdE5vZGUoZHN0LCBtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbik7CisgICAgICAgIGlm
IChtX2NsYXNzSGVyaXRhZ2UpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpc0Rl
cml2ZWRDb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0VW5hcnlPcChvcF9ub3QsIGlzRGVyaXZlZENvbnN0cnVjdG9yLmdldCgp
LAorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VW5hcnlPcChvcF9lcV9udWxsLCBpc0Rl
cml2ZWRDb25zdHJ1Y3Rvci5nZXQoKSwgc3VwZXJjbGFzcy5nZXQoKSkpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGNvbnN0cnVjdG9yLmdldCgpLCBnZW5lcmF0b3Iu
cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmlzRGVyaXZlZENvbnN0cnVjdG9yUHJpdmF0
ZU5hbWUoKSwgaXNEZXJpdmVkQ29uc3RydWN0b3IuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93
bik7CisgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBjb25zdHJ1Y3RvciA9IGdlbmVy
YXRvci5lbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCksCi0gICAgICAgICAgICBtX2NsYXNzSGVyaXRhZ2UgPyBDb25zdHJ1Y3RvcktpbmQ6OkRl
cml2ZWQgOiBDb25zdHJ1Y3RvcktpbmQ6OkJhc2UsCi0gICAgICAgICAgICBtX25hbWUsIGVjbWFO
YW1lKCksIG1fY2xhc3NTb3VyY2UpOworICAgICAgICBpZiAobV9jbGFzc0hlcml0YWdlKSB7Cisg
ICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCk7
CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcFJlZ2lzdGVyID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBzdXBlcmNsYXNzSXNO
dWxsTGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgICAgIFJlZlB0cjxMYWJl
bD4gZG9uZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworCisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEp1bXBJZlRydWUoZ2VuZXJhdG9yLmVtaXRVbmFyeU9wKG9wX2VxX251bGwsIHRlbXBSZWdp
c3Rlci5nZXQoKSwgc3VwZXJjbGFzcy5nZXQoKSksIHN1cGVyY2xhc3NJc051bGxMYWJlbC5nZXQo
KSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcihjb25z
dHJ1Y3Rvci5nZXQoKSwgQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzLCBtX25hbWUsIGVjbWFOYW1l
KCksIG1fY2xhc3NTb3VyY2UpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKHRlbXBS
ZWdpc3Rlci5nZXQoKSwganNCb29sZWFuKHRydWUpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcChkb25lLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc3Vw
ZXJjbGFzc0lzTnVsbExhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TmV3
RGVmYXVsdENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yLmdldCgpLCBDb25zdHJ1Y3RvcktpbmQ6OkJh
c2UsIG1fbmFtZSwgZWNtYU5hbWUoKSwgbV9jbGFzc1NvdXJjZSk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdExvYWQodGVtcFJlZ2lzdGVyLmdldCgpLCBqc0Jvb2xlYW4oZmFsc2UpKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoY29uc3RydWN0b3IuZ2V0KCksIGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuaXNEZXJpdmVkQ29uc3RydWN0b3JQcml2YXRl
TmFtZSgpLCB0ZW1wUmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93bik7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5lbWl0TmV3
RGVmYXVsdENvbnN0cnVjdG9yKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksCisgICAg
ICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kOjpCYXNlLCBtX25hbWUsIGVjbWFOYW1lKCksIG1f
Y2xhc3NTb3VyY2UpOworICAgICAgICB9CiAgICAgfQogCiAgICAgY29uc3QgYXV0byYgcHJvcGVy
dHlOYW1lcyA9IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCShyZXZpc2lvbiAyMDM5NzkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNCw3ICsy
MjQsNyBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgCiAgICAgICAg
IHNjb3BlLT5zZXRFdmFsQ29udGV4dFR5cGUoZXZhbENvbnRleHRUeXBlKTsKICAgICAKICAgICBp
ZiAoZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0
cnVjdG9yQ29udGV4dCkgewotICAgICAgICBzY29wZS0+c2V0Q29uc3RydWN0b3JLaW5kKENvbnN0
cnVjdG9yS2luZDo6RGVyaXZlZCk7CisgICAgICAgIHNjb3BlLT5zZXRDb25zdHJ1Y3RvcktpbmQo
Q29uc3RydWN0b3JLaW5kOjpFeHRlbmRzKTsKICAgICAgICAgc2NvcGUtPnNldEV4cGVjdGVkU3Vw
ZXJCaW5kaW5nKFN1cGVyQmluZGluZzo6TmVlZGVkKTsKICAgICB9CiAgICAgCkBAIC0yMTAxLDcg
KzIxMDEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyCiAgICAg
CiAgICAgICAgIGlmIChtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5k
OjpOb25lKSB7CiAgICAgICAgICAgICBjb25zdHJ1Y3RvcktpbmQgPSBtX2RlZmF1bHRDb25zdHJ1
Y3RvcktpbmQ7Ci0gICAgICAgICAgICBleHBlY3RlZFN1cGVyQmluZGluZyA9IG1fZGVmYXVsdENv
bnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgPyBTdXBlckJpbmRpbmc6
Ok5lZWRlZCA6IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkOworICAgICAgICAgICAgZXhwZWN0ZWRT
dXBlckJpbmRpbmcgPSBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5k
OjpFeHRlbmRzID8gU3VwZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZDsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFuZGFyZEZ1bmN0
aW9uQm9keUJsb2NrOwpAQCAtMjMwMyw3ICsyMzAzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlQ2xhc3NFeAogICAgICAgICBwYXJlbnRDbGFzcyA9IHBhcnNlTWVtYmVyRXhw
cmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UocGFyZW50Q2xhc3MsICJDYW5u
b3QgcGFyc2UgdGhlIHBhcmVudCBjbGFzcyBuYW1lIik7CiAgICAgfQotICAgIGNvbnN0IENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQgPSBwYXJlbnRDbGFzcyA/IENvbnN0cnVjdG9yS2lu
ZDo6RGVyaXZlZCA6IENvbnN0cnVjdG9yS2luZDo6QmFzZTsKKyAgICBjb25zdCBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kID0gcGFyZW50Q2xhc3MgPyBDb25zdHJ1Y3RvcktpbmQ6OkV4
dGVuZHMgOiBDb25zdHJ1Y3RvcktpbmQ6OkJhc2U7CiAKICAgICBjb25zdW1lT3JGYWlsKE9QRU5C
UkFDRSwgIkV4cGVjdGVkIG9wZW5pbmcgJ3snIGF0IHRoZSBzdGFydCBvZiBhIGNsYXNzIGJvZHki
KTsKIApAQCAtNDAxNyw3ICs0MDE3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZ1bmN0aW9uU2Nv
cGUtPmNvbnN0cnVjdG9yS2luZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
Y2xvc2VzdE9yZGluYXJ5RnVuY3Rpb25TY29wZS0+Y29uc3RydWN0b3JLaW5kKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGZ1bmN0aW9uQ29uc3RydWN0
b3JLaW5kID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgInN1cGVyIGlzIG5vdCB2YWxpZCBpbiB0
aGlzIGNvbnRleHQiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUoZnVuY3Rpb25Db25zdHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVk
LCAic3VwZXIgaXMgbm90IHZhbGlkIGluIHRoaXMgY29udGV4dCIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShmdW5jdGlvbkNvbnN0cnVjdG9yS2luZCAh
PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMsICJzdXBlciBpcyBub3QgdmFsaWQgaW4gdGhpcyBj
b250ZXh0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTY29wZSgpLT5pc0Fycm93RnVuY3Rp
b24oKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgJ
KHJldmlzaW9uIDIwMzk3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
TW9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBlbnVtIGNsYXNzIEpTUGFy
c2VyU3RyaWN0TW9kZSB7IE5vdFN0cmljCiBlbnVtIGNsYXNzIEpTUGFyc2VyQnVpbHRpbk1vZGUg
eyBOb3RCdWlsdGluLCBCdWlsdGluIH07CiBlbnVtIGNsYXNzIEpTUGFyc2VyQ29kZVR5cGUgeyBQ
cm9ncmFtLCBGdW5jdGlvbiwgTW9kdWxlIH07CiAKLWVudW0gY2xhc3MgQ29uc3RydWN0b3JLaW5k
IHsgTm9uZSwgQmFzZSwgRGVyaXZlZCB9OworZW51bSBjbGFzcyBDb25zdHJ1Y3RvcktpbmQgeyBO
b25lLCBCYXNlLCBFeHRlbmRzIH07CiBlbnVtIGNsYXNzIFN1cGVyQmluZGluZyB7IE5lZWRlZCwg
Tm90TmVlZGVkIH07CiAKIGVudW0gRGVidWdnZXJNb2RlIHsgRGVidWdnZXJPZmYsIERlYnVnZ2Vy
T24gfTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzk3OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA4LTAyICBTYWFtIEJhcmF0
aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIHVwZGF0ZSBhIGNsYXNzIGV4dGVuZGlu
ZyBudWxsIHcuci50IHRoZSBFUzcgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBqcy9jbGFzcy1zeW50YXgtZXh0ZW5kcy1leHBlY3RlZC50eHQ6
CisgICAgICAgICoganMvY2xhc3Mtc3ludGF4LXN1cGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBqcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LWV4dGVuZHMuanM6CisgICAgICAgICoganMv
c2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1zdXBlci5qczoKKwogMjAxNi0wOC0wMSAgQWRyaWFu
IFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVwZGF0ZSBB
cGFjaGUgY29uZmlndXJhdGlvbiBmb3IgQXJjaCBMaW51eApJbmRleDogTGF5b3V0VGVzdHMvanMv
Y2xhc3Mtc3ludGF4LWV4dGVuZHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjAzOTc5
KQorKysgTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LWV4dGVuZHMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC01NywxMCArNTcsMTAgQEAgUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBl
T2YoKGNsYXNzIGV4dGVuZAogUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgdW5kZWZpbmVkIHsgY29u
c3RydWN0b3IgKCkgeyB0aGlzIH0gfSk6OjpUeXBlRXJyb3I6IFRoZSBzdXBlcmNsYXNzIGlzIG5v
dCBhbiBvYmplY3QuCiBQQVNTIHggPSB1bmRlZmluZWQ7IG5ldyAoY2xhc3MgZXh0ZW5kcyB4IHsg
Y29uc3RydWN0b3IgKCkgeyBzdXBlcigpOyB9IH0pOjo6VHlwZUVycm9yOiBUaGUgc3VwZXJjbGFz
cyBpcyBub3QgYW4gb2JqZWN0LgogUEFTUyBjbGFzcyB4IHt9OyBuZXcgKGNsYXNzIGV4dGVuZHMg
bnVsbCB7IGNvbnN0cnVjdG9yICgpIHsgcmV0dXJuIG5ldyB4OyB9IH0pIGluc3RhbmNlb2YgeAot
UEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yICgpIHsgdGhpczsgfSB9
KTo6OlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUu
CitQQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyB0aGlzOyB9
IH0pCiBQQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyBzdXBl
cigpOyB9IH0pOjo6VHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZh
bHVhdGluZyAnc3VwZXIoKScpCiBQQVNTIHggPSB7fTsgbmV3IChjbGFzcyBleHRlbmRzIG51bGwg
eyBjb25zdHJ1Y3RvciAoKSB7IHJldHVybiB4IH0gfSk6Ojp4Ci1QQVNTIHkgPSAxMjsgbmV3IChj
bGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvciAoKSB7IHJldHVybiB5OyB9IH0pOjo6VHlw
ZUVycm9yOiBDYW5ub3QgcmV0dXJuIGEgbm9uLW9iamVjdCB0eXBlIGluIHRoZSBjb25zdHJ1Y3Rv
ciBvZiBhIGRlcml2ZWQgY2xhc3MuCitQQVNTIHkgPSAxMjsgY2xhc3MgQyBleHRlbmRzIG51bGwg
eyBjb25zdHJ1Y3RvciAoKSB7IHJldHVybiB5OyB9IH07IG5ldyBDIGluc3RhbmNlb2YgQzsKIFBB
U1MgY2xhc3MgeCB7fTsgbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvciAoKSB7
IHJldHVybiBuZXcgeDsgfSB9KSBpbnN0YW5jZW9mIHgKIFBBU1MgeCA9IG51bGw7IE9iamVjdC5n
ZXRQcm90b3R5cGVPZigoY2xhc3MgZXh0ZW5kcyB4IHsgfSkucHJvdG90eXBlKTo6Om51bGwKIFBB
U1MgT2JqZWN0LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGNsYXNzIHsgfSkKSW5kZXg6IExheW91
dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1zdXBlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXN1cGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MjAzOTc5KQorKysgTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LXN1cGVyLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDEyIEBAIFBBU1MgeCA9IHsgfTsgbmV3IChj
bGFzcyBleHRlbmRzIEJhc2UgeyAKIFBBU1MgeCBpbnN0YW5jZW9mIEJhc2UKIFBBU1MgbmV3IChj
bGFzcyBleHRlbmRzIEJhc2UgeyBjb25zdHJ1Y3RvcigpIHsgfSB9KTo6OlJlZmVyZW5jZUVycm9y
OiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCiBQQVNTIG5ldyAoY2xhc3Mg
ZXh0ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiAxOyB9IH0pOjo6VHlwZUVycm9y
OiBDYW5ub3QgcmV0dXJuIGEgbm9uLW9iamVjdCB0eXBlIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBh
IGRlcml2ZWQgY2xhc3MuCi1QQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0
b3IoKSB7IHJldHVybiB1bmRlZmluZWQgfSB9KTo6OlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNj
ZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCitQQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxs
IHsgY29uc3RydWN0b3IoKSB7IHJldHVybiB1bmRlZmluZWQgfSB9KQogUEFTUyBuZXcgKGNsYXNz
IGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyByZXR1cm4gdW5kZWZpbmVk
IH0gfSk6OjpUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0
aW5nICdzdXBlcigpJykKIFBBU1MgeCA9IHsgfTsgbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBj
b25zdHJ1Y3RvcigpIHsgcmV0dXJuIHggfSB9KTs6Ojp4CiBQQVNTIHggaW5zdGFuY2VvZiBPYmpl
Y3QKLVBBU1MgbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgfSB9KTo6
OlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCi1Q
QVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiAxOyB9
IH0pOjo6VHlwZUVycm9yOiBDYW5ub3QgcmV0dXJuIGEgbm9uLW9iamVjdCB0eXBlIGluIHRoZSBj
b25zdHJ1Y3RvciBvZiBhIGRlcml2ZWQgY2xhc3MuCitQQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBu
dWxsIHsgY29uc3RydWN0b3IoKSB7IH0gfSkKK1BBU1MgbmV3IChjbGFzcyBleHRlbmRzIG51bGwg
eyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIDE7IH0gfSkKIFBBU1MgbmV3IChjbGFzcyBleHRlbmRz
IG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKSB9IH0pOjo6VHlwZUVycm9yOiBmdW5jdGlv
biBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnc3VwZXIoKScpCiBQQVNTIG5ldyAo
Y2xhc3MgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKSB9IH0pOjo6U3ludGF4RXJyb3I6IHN1cGVy
IGlzIG5vdCB2YWxpZCBpbiB0aGlzIGNvbnRleHQuCiBQQVNTIGZ1bmN0aW9uIHgoKSB7IHN1cGVy
KCk7IH06OjpTeW50YXhFcnJvcjogc3VwZXIgaXMgbm90IHZhbGlkIGluIHRoaXMgY29udGV4dC4K
SW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtZXh0ZW5kcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4
LWV4dGVuZHMuanMJKHJldmlzaW9uIDIwMzk3OSkKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9jbGFzcy1zeW50YXgtZXh0ZW5kcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTE1LDEwICsx
MTUsMTAgQEAgc2hvdWxkQmUoJ09iamVjdC5nZXRQcm90b3R5cGVPZigoY2xhc3MgZQogc2hvdWxk
VGhyb3coJ25ldyAoY2xhc3MgZXh0ZW5kcyB1bmRlZmluZWQgeyBjb25zdHJ1Y3RvciAoKSB7IHRo
aXMgfSB9KScsICciVHlwZUVycm9yOiBUaGUgc3VwZXJjbGFzcyBpcyBub3QgYW4gb2JqZWN0LiIn
KTsKIHNob3VsZFRocm93KCd4ID0gdW5kZWZpbmVkOyBuZXcgKGNsYXNzIGV4dGVuZHMgeCB7IGNv
bnN0cnVjdG9yICgpIHsgc3VwZXIoKTsgfSB9KScsICciVHlwZUVycm9yOiBUaGUgc3VwZXJjbGFz
cyBpcyBub3QgYW4gb2JqZWN0LiInKTsKIHNob3VsZEJlVHJ1ZSAoJ2NsYXNzIHgge307IG5ldyAo
Y2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyByZXR1cm4gbmV3IHg7IH0gfSkg
aW5zdGFuY2VvZiB4Jyk7Ci1zaG91bGRUaHJvdygnbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBj
b25zdHJ1Y3RvciAoKSB7IHRoaXM7IH0gfSknLCAnIlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNj
ZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIicpOworc2hvdWxkTm90VGhyb3coJ25ldyAoY2xh
c3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyB0aGlzOyB9IH0pJyk7CiBzaG91bGRU
aHJvdygnbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvciAoKSB7IHN1cGVyKCk7
IH0gfSknLCAnIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1
YXRpbmcgXCdzdXBlcigpXCcpIicpOwogc2hvdWxkQmUoJ3ggPSB7fTsgbmV3IChjbGFzcyBleHRl
bmRzIG51bGwgeyBjb25zdHJ1Y3RvciAoKSB7IHJldHVybiB4IH0gfSknLCAneCcpOwotc2hvdWxk
VGhyb3coJ3kgPSAxMjsgbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvciAoKSB7
IHJldHVybiB5OyB9IH0pJywgJyJUeXBlRXJyb3I6IENhbm5vdCByZXR1cm4gYSBub24tb2JqZWN0
IHR5cGUgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEgZGVyaXZlZCBjbGFzcy4iJyk7CitzaG91bGRC
ZVRydWUoJ3kgPSAxMjsgY2xhc3MgQyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvciAoKSB7IHJl
dHVybiB5OyB9IH07IG5ldyBDIGluc3RhbmNlb2YgQzsnLCAnIlR5cGVFcnJvcjogQ2Fubm90IHJl
dHVybiBhIG5vbi1vYmplY3QgdHlwZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNs
YXNzLiInKTsKIHNob3VsZEJlVHJ1ZSAoJ2NsYXNzIHgge307IG5ldyAoY2xhc3MgZXh0ZW5kcyBu
dWxsIHsgY29uc3RydWN0b3IgKCkgeyByZXR1cm4gbmV3IHg7IH0gfSkgaW5zdGFuY2VvZiB4Jyk7
CiBzaG91bGRCZSgneCA9IG51bGw7IE9iamVjdC5nZXRQcm90b3R5cGVPZigoY2xhc3MgZXh0ZW5k
cyB4IHsgfSkucHJvdG90eXBlKScsICdudWxsJyk7CiBzaG91bGRCZVRydWUoJ09iamVjdC5wcm90
b3R5cGUuaXNQcm90b3R5cGVPZihjbGFzcyB7IH0pJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LXN1cGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtc3VwZXIuanMJKHJldmlzaW9uIDIwMzk3
OSkKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtc3VwZXIuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTExMywxMiArMTEzLDEyIEBAIHNob3VsZEJlKCd4ID0geyB9OyBu
ZXcgKGNsYXNzIGV4dGVuZHMgQmEKIHNob3VsZEJlRmFsc2UoJ3ggaW5zdGFuY2VvZiBCYXNlJyk7
CiBzaG91bGRUaHJvdygnbmV3IChjbGFzcyBleHRlbmRzIEJhc2UgeyBjb25zdHJ1Y3RvcigpIHsg
fSB9KScsICciUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJp
YWJsZS4iJyk7CiBzaG91bGRUaHJvdygnbmV3IChjbGFzcyBleHRlbmRzIEJhc2UgeyBjb25zdHJ1
Y3RvcigpIHsgcmV0dXJuIDE7IH0gfSknLCAnIlR5cGVFcnJvcjogQ2Fubm90IHJldHVybiBhIG5v
bi1vYmplY3QgdHlwZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNzLiInKTsK
LXNob3VsZFRocm93KCduZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyBy
ZXR1cm4gdW5kZWZpbmVkIH0gfSknKTsKK3Nob3VsZE5vdFRocm93KCduZXcgKGNsYXNzIGV4dGVu
ZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gdW5kZWZpbmVkIH0gfSknKTsKIHNob3Vs
ZFRocm93KCduZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigp
OyByZXR1cm4gdW5kZWZpbmVkIH0gfSknLCAnIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEg
Y29uc3RydWN0b3IgKGV2YWx1YXRpbmcgXCdzdXBlcigpXCcpIicpOwogc2hvdWxkQmUoJ3ggPSB7
IH07IG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiB4IH0g
fSk7JywgJ3gnKTsKIHNob3VsZEJlVHJ1ZSgneCBpbnN0YW5jZW9mIE9iamVjdCcpOwotc2hvdWxk
VGhyb3coJ25ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IH0gfSknLCAn
IlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIicp
Owotc2hvdWxkVGhyb3coJ25ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7
IHJldHVybiAxOyB9IH0pJywgJyJUeXBlRXJyb3I6IENhbm5vdCByZXR1cm4gYSBub24tb2JqZWN0
IHR5cGUgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEgZGVyaXZlZCBjbGFzcy4iJyk7CitzaG91bGRO
b3RUaHJvdygnbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgfSB9KScp
Oworc2hvdWxkTm90VGhyb3coJ25ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3Io
KSB7IHJldHVybiAxOyB9IH0pJyk7CiBzaG91bGRUaHJvdygnbmV3IChjbGFzcyBleHRlbmRzIG51
bGwgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKSB9IH0pJywgJyJUeXBlRXJyb3I6IGZ1bmN0aW9u
IGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nIFwnc3VwZXIoKVwnKSInKTsKIHNob3Vs
ZFRocm93KCduZXcgKGNsYXNzIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCkgfSB9KScsICciU3lu
dGF4RXJyb3I6IHN1cGVyIGlzIG5vdCB2YWxpZCBpbiB0aGlzIGNvbnRleHQuIicpOwogc2hvdWxk
VGhyb3coJ2Z1bmN0aW9uIHgoKSB7IHN1cGVyKCk7IH0nLCAnIlN5bnRheEVycm9yOiBzdXBlciBp
cyBub3QgdmFsaWQgaW4gdGhpcyBjb250ZXh0LiInKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285136</attachid>
            <date>2016-08-02 13:52:07 -0700</date>
            <delta_ts>2016-08-02 16:02:15 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>32494</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlbG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlbG9n
CShyZXZpc2lvbiAyMDQwMzgpCisrKyBKU1Rlc3RzL0NoYW5nZWxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMzIEBACisyMDE2LTA4LTAyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIHVwZGF0ZSBhIGNsYXNzIGV4dGVuZGluZyBudWxsIHcuci50IHRoZSBF
Uzcgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYwNDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzdHJlc3MvY2xhc3MtZGVyaXZlZC1mcm9tLW51bGwuanM6IEFkZGVkLgorICAgICAgICAoYXNz
ZXJ0KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAodGVzdDEuQyk6CisgICAgICAgICh0ZXN0
MSk6CisgICAgICAgIChqc051bGwpOgorICAgICAgICAodGVzdDIuQyk6CisgICAgICAgICh0ZXN0
Mik6CisgICAgICAgICh0ZXN0My5DKToKKyAgICAgICAgKHRlc3QzLkQpOgorICAgICAgICAodGVz
dDMuRSk6CisgICAgICAgICh0ZXN0Myk6CisgICAgICAgICh0ZXN0NC5FKToKKyAgICAgICAgKHRl
c3Q0KToKKyAgICAgICAgKHRlc3Q1LkUpOgorICAgICAgICAodGVzdDUpOgorICAgICAgICAodGVz
dDYuQmFzZSk6CisgICAgICAgICh0ZXN0Ni5EKToKKyAgICAgICAgKHRlc3Q2LkUpOgorICAgICAg
ICAodGVzdDYuRik6CisgICAgICAgICh0ZXN0Ni5HKToKKyAgICAgICAgKHRlc3Q2KToKKwogMjAx
Ni0wOC0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJhdGlv
bmFsaXplIHZhcmFyZ3Mgc3RhY2sgb3ZlcmZsb3cgY2hlY2tzCkluZGV4OiBKU1Rlc3RzL3N0cmVz
cy9jbGFzcy1kZXJpdmVkLWZyb20tbnVsbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVz
cy9jbGFzcy1kZXJpdmVkLWZyb20tbnVsbC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0
cmVzcy9jbGFzcy1kZXJpdmVkLWZyb20tbnVsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEyOCBAQAorZnVuY3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiQmFkISIpCit9CisKK2Z1bmN0aW9uIHRlc3QoZiwgY291bnQgPSAxMDAwKSB7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICBmKCk7Cit9CisK
K2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIGNsYXNzIEMgZXh0ZW5kcyBudWxsIHsgfQorICAgIGFz
c2VydCgobmV3IEMpIGluc3RhbmNlb2YgQyk7CisgICAgYXNzZXJ0KCEoKG5ldyBDKSBpbnN0YW5j
ZW9mIE9iamVjdCkpOworICAgIGFzc2VydChSZWZsZWN0LmdldFByb3RvdHlwZU9mKEMucHJvdG90
eXBlKSA9PT0gbnVsbCk7CisKKyAgICBsZXQgbyA9IHt9CisgICAgY2xhc3MgRCBleHRlbmRzIG51
bGwgeworICAgICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgIHJldHVybiBvOworICAg
ICAgICB9CisgICAgfQorICAgIGFzc2VydChuZXcgRCA9PT0gbyk7CisgICAgYXNzZXJ0KFJlZmxl
Y3QuZ2V0UHJvdG90eXBlT2YoRC5wcm90b3R5cGUpID09PSBudWxsKTsKKworICAgIGNsYXNzIEUg
ZXh0ZW5kcyBudWxsIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICByZXR1
cm4gdGhpczsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoKG5ldyBFKSBpbnN0YW5jZW9m
IEUpOworICAgIGFzc2VydCghKChuZXcgRSkgaW5zdGFuY2VvZiBPYmplY3QpKTsKKyAgICBhc3Nl
cnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihFLnByb3RvdHlwZSkgPT09IG51bGwpOworfQordGVz
dCh0ZXN0MSk7CisKK2Z1bmN0aW9uIGpzTnVsbCgpIHsgcmV0dXJuIG51bGw7IH0KK2Z1bmN0aW9u
IHRlc3QyKCkgeworICAgIGNsYXNzIEMgZXh0ZW5kcyBqc051bGwoKSB7IH0KKyAgICBhc3NlcnQo
KG5ldyBDKSBpbnN0YW5jZW9mIEMpOworICAgIGFzc2VydCghKChuZXcgQykgaW5zdGFuY2VvZiBP
YmplY3QpKTsKKyAgICBhc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihDLnByb3RvdHlwZSkg
PT09IG51bGwpOworCisgICAgbGV0IG8gPSB7fQorICAgIGNsYXNzIEQgZXh0ZW5kcyBqc051bGwo
KSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgcmV0dXJuIG87CisgICAg
ICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KG5ldyBEID09PSBvKTsKKyAgICBhc3NlcnQoUmVmbGVj
dC5nZXRQcm90b3R5cGVPZihELnByb3RvdHlwZSkgPT09IG51bGwpOworCisgICAgY2xhc3MgRSBl
eHRlbmRzIGpzTnVsbCgpIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdGhpczsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoKG5ldyBFKSBpbnN0YW5j
ZW9mIEUpOworICAgIGFzc2VydCghKChuZXcgRSkgaW5zdGFuY2VvZiBPYmplY3QpKTsKKyAgICBh
c3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihFLnByb3RvdHlwZSkgPT09IG51bGwpOworfQor
dGVzdCh0ZXN0Mik7CisKK2Z1bmN0aW9uIHRlc3QzKCkgeworICAgIGNsYXNzIEMgZXh0ZW5kcyBq
c051bGwoKSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB9IH0KKyAgICBsZXQgdGhyZXcgPSBm
YWxzZTsKKyAgICB0cnkgeworICAgICAgICBuZXcgQzsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgdGhyZXcgPSBlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBh
IGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICdzdXBlcigpJykiOworICAgIH0KKyAgICBhc3NlcnQo
dGhyZXcpOworCisgICAgY2xhc3MgRCBleHRlbmRzIGpzTnVsbCgpIHsgY29uc3RydWN0b3IoKSB7
IGxldCBhcnIgPSAoKT0+c3VwZXIoKTsgYXJyKCk7IH0gfQorICAgIHRocmV3ID0gZmFsc2U7Cisg
ICAgdHJ5IHsKKyAgICAgICAgbmV3IEQ7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHRocmV3
ID0gZS50b1N0cmluZygpID09PSAiVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1
Y3RvciAoZXZhbHVhdGluZyAnc3VwZXIoKScpIjsKKyAgICB9CisgICAgYXNzZXJ0KHRocmV3KTsK
KworICAgIGNsYXNzIEUgZXh0ZW5kcyBqc051bGwoKSB7IGNvbnN0cnVjdG9yKCkgeyBsZXQgYXJy
ID0gKCk9PnN1cGVyKCk7IHJldHVybiB0aGlzOyB9IH0KKyAgICBhc3NlcnQoKG5ldyBFKSBpbnN0
YW5jZW9mIEUpOworICAgIGFzc2VydCghKChuZXcgRSkgaW5zdGFuY2VvZiBPYmplY3QpKTsKKyAg
ICBhc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihFLnByb3RvdHlwZSkgPT09IG51bGwpOwor
fQordGVzdCh0ZXN0Myk7CisKK2Z1bmN0aW9uIHRlc3Q0KCkgeworICAgIGNsYXNzIEUgZXh0ZW5k
cyBqc051bGwoKSB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gMjU7IH0gfQorICAgIGFzc2VydCgo
bmV3IEUpIGluc3RhbmNlb2YgRSk7CisgICAgYXNzZXJ0KCEoKG5ldyBFKSBpbnN0YW5jZW9mIE9i
amVjdCkpOworICAgIGFzc2VydChSZWZsZWN0LmdldFByb3RvdHlwZU9mKEUucHJvdG90eXBlKSA9
PT0gbnVsbCk7Cit9Cit0ZXN0KHRlc3Q0KTsKKworZnVuY3Rpb24gdGVzdDUoKSB7CisgICAgY2xh
c3MgRSBleHRlbmRzIGpzTnVsbCgpIHsgY29uc3RydWN0b3IoKSB7IGxldCBhcnIgPSAoKT0+dGhp
czsgcmV0dXJuIGFycigpOyB9IH0KKyAgICBhc3NlcnQoKG5ldyBFKSBpbnN0YW5jZW9mIEUpOwor
ICAgIGFzc2VydCghKChuZXcgRSkgaW5zdGFuY2VvZiBPYmplY3QpKTsKKyAgICBhc3NlcnQoUmVm
bGVjdC5nZXRQcm90b3R5cGVPZihFLnByb3RvdHlwZSkgPT09IG51bGwpOworfQordGVzdCh0ZXN0
NSk7CisKK2Z1bmN0aW9uIHRlc3Q2KCkgeworICAgIGNsYXNzIEJhc2UgeyB9CisgICAgY2xhc3Mg
RCBleHRlbmRzIEJhc2UgeyB9CisgICAgY2xhc3MgRSBleHRlbmRzIGpzTnVsbCgpIHsgY29uc3Ry
dWN0b3IoKSB7IGxldCByZXQgPSB0aGlzOyByZXR1cm4gcmV0OyB9IH0KKyAgICBjbGFzcyBGIGV4
dGVuZHMganNOdWxsKCkgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIDI1OyB9IH0KKyAgICBjbGFz
cyBHIGV4dGVuZHMganNOdWxsKCkgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgfSB9CisgICAg
bGV0IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KEUsIFtdLCBEKTsKKyAgICBhc3NlcnQocmVz
dWx0IGluc3RhbmNlb2YgRCk7CisgICAgYXNzZXJ0KHJlc3VsdCBpbnN0YW5jZW9mIE9iamVjdCk7
CisKKyAgICByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChGLCBbXSwgRCk7CisgICAgYXNzZXJ0
KHJlc3VsdCBpbnN0YW5jZW9mIEQpOworICAgIGFzc2VydChyZXN1bHQgaW5zdGFuY2VvZiBPYmpl
Y3QpOworCisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgUmVmbGVj
dC5jb25zdHJ1Y3QoRywgW10sIEQpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICB0aHJldyA9
IGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0
b3IgKGV2YWx1YXRpbmcgJ3N1cGVyKCknKSI7CisgICAgfQorICAgIGFzc2VydCh0aHJldyk7Cit9
Cit0ZXN0KHRlc3Q2KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA0
MDM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDUxIEBACisyMDE2LTA4LTAyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIHVwZGF0ZSBhIGNsYXNzIGV4dGVuZGluZyBudWxsIHcuci50IHRoZSBF
Uzcgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYwNDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2hlbiBhIGNsYXNzIGV4dGVuZHMgbnVsbCwgaXQgc2hvdWxkIG5vdCBiZSBtYXJrZWQgYXMgYSBk
ZXJpdmVkIGNsYXNzLgorICAgICAgICBUaGlzIHdhcyBjaGFuZ2VkIGluIHRoZSBFUzIwMTYgc3Bl
YywgYW5kIHRoaXMgcGF0Y2ggbWFrZXMgdGhlIG5lZWRlZAorICAgICAgICBjaGFuZ2VzIGluIEpT
QyB0byBmb2xsb3cgdGhlIHNwZWMuIFRoaXMgYWxsb3dzIGNsYXNzZXMgdG8gZXh0ZW5kCisgICAg
ICAgIG51bGwgYW5kIGhhdmUgdGhlaXIgZGVmYXVsdCBjb25zdHJ1Y3RvciBpbnZva2VkIHdpdGhv
dXQgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLgorICAgICAgICBUaGlzIGFsc28gcHJldmVudHMgfHRo
aXN8IGZyb20gYmVpbmcgdW5kZXIgVERaIGF0IHRoZSBzdGFydCBvZiB0aGUgY29uc3RydWN0b3Iu
CisgICAgICAgIEJlY2F1c2UgRVM2IGFsbG93cyBhcmJpdHJhcnkgZXhwcmVzc2lvbnMgaW4gdGhl
IGBjbGFzcyA8aWRlbnQ+IGV4dGVuZHMgPGV4cHI+YAorICAgICAgICBzeW50YXgsIHdlIGRvbid0
IGtub3cgc3RhdGljYWxseSBpZiBhIGNvbnN0cnVjdG9yIGlzIGV4dGVuZGluZyBudWxsIG9yIG5v
dC4KKyAgICAgICAgVGhlcmVmb3JlLCB3ZSBkb24ndCBhbHdheXMga25vdyBzdGF0aWNhbGx5IGlm
IGl0J3MgYSBiYXNlIG9yIGRlcml2ZWQgY29uc3RydWN0b3IuCisgICAgICAgIEkgc29sdmVkIHRo
aXMgYnkgcHV0dGluZyBhIGJvb2xlYW4gb24gdGhlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIHVuZGVy
IGEgcHJpdmF0ZQorICAgICAgICBzeW1ib2wgbmFtZWQgaXNEZXJpdmVkQ29uc3RydWN0b3Igd2hl
biBkb2luZyBjbGFzcyBjb25zdHJ1Y3Rpb24uIFdlIG9ubHkgbmVlZAorICAgICAgICB0byBwdXQg
dGhpcyBib29sZWFuIG9uIGNvbnN0cnVjdG9ycyB0aGF0IG1heSBleHRlbmQgbnVsbC4gQ29uc3Ry
dWN0b3JzIHRoYXQgYXJlCisgICAgICAgIGRlY2xhcmVkIGluIGEgY2xhc3Mgd2l0aCBubyBleHRl
bmRzIHN5bnRheCBjYW4gdGVsbCBzdGF0aWNhbGx5IHRoYXQgdGhleSBhcmUgYSBiYXNlIGNvbnN0
cnVjdG9yLgorCisgICAgICAgIEkndmUgYWxzbyByZW5hbWVkIHRoZSBDb25zdHJ1Y3RvcktpbmQ6
OkRlcml2ZWQgZW51bSB2YWx1ZSB0byBiZQorICAgICAgICBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVu
ZHMgdG8gYmV0dGVyIGluZGljYXRlIHRoYXQgd2UgY2FuJ3QgYW5zd2VyCisgICAgICAgIHRoZSAi
YW0gSSBhIGRlcml2ZWQgY29uc3RydWN0b3I/IiBxdWVzdGlvbiBzdGF0aWNhbGx5LgorCisgICAg
ICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVp
bHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplQXJy
b3dGdW5jdGlvbkNvbnRleHRTY29wZUlmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXR1cm4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdExvYWRBcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVuc3VyZVRoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dERlcml2ZWRDb25zdHJ1Y3RvclRvQXJyb3dGdW5jdGlvbkNvbnRleHRT
Y29wZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtlRnVuY3Rpb24pOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25D
YWxsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpQYXJzZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24pOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorCiAyMDE2LTA4LTAyICBDc2FiYSBPc3p0
cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0FSTV0gRGlzYWJsZSBJbmxp
bmUgQ2FjaGluZyBvbiBBUk12NyB0cmFkaXRpb25hbCB1bnRpbCBwcm9wZXIgZml4CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcAkocmV2aXNpb24gMjA0MDM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcg
QEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdQogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6QmFzZToKICAgICAgICAgcmV0dXJuIGNyZWF0
ZUV4ZWN1dGFibGUobV92bSwgbWFrZVNvdXJjZShiYXNlQ29uc3RydWN0b3JDb2RlKSwgbmFtZSwg
Y29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QpOwotICAgIGNh
c2UgQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkOgorICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpF
eHRlbmRzOgogICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBtYWtlU291cmNl
KGRlcml2ZWRDb25zdHJ1Y3RvckNvZGUpLCBuYW1lLCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVj
dEFiaWxpdHk6OkNhbkNvbnN0cnVjdCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aAkocmV2aXNpb24gMjA0MDM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgbWFjcm8oaXNBcnJheSkgXAogICAgIG1hY3JvKGlzQXJyYXlDb25zdHJ1Y3Rv
cikgXAogICAgIG1hY3JvKGlzQ29uc3RydWN0b3IpIFwKKyAgICBtYWNybyhpc0Rlcml2ZWRDb25z
dHJ1Y3RvcikgXAogICAgIG1hY3JvKGlzUmVnRXhwT2JqZWN0KSBcCiAgICAgbWFjcm8oY29uY2F0
TWVtY3B5KSBcCiAgICAgbWFjcm8oYXBwZW5kTWVtY3B5KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAkocmV2aXNpb24gMjA0MDM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MCw5ICs1NjAsMTgg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgogICAgICAgICBpZiAo
U291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSAhPSBwYXJzZU1vZGUpIHsKICAgICAg
ICAgICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpIHsKICAgICAgICAgICAgICAgICBlbWl0TW92ZSht
X25ld1RhcmdldFJlZ2lzdGVyLCAmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIGlm
IChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpCisgICAgICAg
ICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5k
cykgeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IGlzRGVyaXZlZCA9IG5ld0xh
YmVsKCk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVs
KCk7CisgICAgICAgICAgICAgICAgICAgIG1faXNEZXJpdmVkQ29uc3R1Y3RvciA9IGFkZFZhcigp
OworICAgICAgICAgICAgICAgICAgICBlbWl0R2V0QnlJZChtX2lzRGVyaXZlZENvbnN0dWN0b3Is
ICZtX2NhbGxlZVJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuaXNEZXJp
dmVkQ29uc3RydWN0b3JQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEp1
bXBJZlRydWUobV9pc0Rlcml2ZWRDb25zdHVjdG9yLCBpc0Rlcml2ZWQuZ2V0KCkpOworICAgICAg
ICAgICAgICAgICAgICBlbWl0Q3JlYXRlVGhpcygmbV90aGlzUmVnaXN0ZXIpOworICAgICAgICAg
ICAgICAgICAgICBlbWl0SnVtcChkb25lLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1p
dExhYmVsKGlzRGVyaXZlZC5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRNb3ZlRW1w
dHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgZW1pdExhYmVsKGRvbmUuZ2V0KCkpOworICAgICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgICAgICBlbWl0Q3JlYXRlVGhpcygmbV90aGlzUmVnaXN0ZXIpOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUpCiAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJDYW5ub3QgY2Fs
bCBhIGNsYXNzIGNvbnN0cnVjdG9yIHdpdGhvdXQgfG5ld3wiKTsKQEAgLTk0OCw3ICs5NTcsNyBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplQXJyb3dGCiAgICAgICAgICAgICBm
dW5jdGlvblN5bWJvbFRhYmxlLT5zZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBwcm9wZXJ0eU5hbWVz
KCkuYnVpbHRpbk5hbWVzKCkubmV3VGFyZ2V0TG9jYWxQcml2YXRlTmFtZSgpLmltcGwoKSwgU3lt
Ym9sVGFibGVFbnRyeShWYXJPZmZzZXQob2Zmc2V0KSkpOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBpc1N1cGVyVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkp
IHsKKyAgICAgICAgaWYgKGlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBD
b25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMgJiYgaXNTdXBlclVzZWRJbklubmVyQXJyb3dGdW5jdGlv
bigpKSB7CiAgICAgICAgICAgICBvZmZzZXQgPSBmdW5jdGlvblN5bWJvbFRhYmxlLT50YWtlTmV4
dFNjb3BlT2Zmc2V0KE5vTG9ja2luZ05lY2Vzc2FyeSk7CiAgICAgICAgICAgICBmdW5jdGlvblN5
bWJvbFRhYmxlLT5zZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuZGVyaXZlZENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKS5pbXBsKCksIFN5bWJvbFRh
YmxlRW50cnkoVmFyT2Zmc2V0KG9mZnNldCkpKTsKICAgICAgICAgfQpAQCAtOTcwLDcgKzk3OSw3
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVBcnJvd0YKICAgICAgICAgYWRk
VGFyZ2V0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0xldCgpOwogICAgIH0KIAotICAgIGlmIChpc0Nv
bnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJp
dmVkICYmIGlzU3VwZXJVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkgeworICAgIGlmIChpc0Nv
bnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRl
bmRzICYmIGlzU3VwZXJVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkgewogICAgICAgICBhdXRv
IGRlcml2ZWRDb25zdHJ1Y3RvciA9IGVudmlyb25tZW50LmFkZChwcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkuZGVyaXZlZENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSk7CiAgICAgICAgIGRl
cml2ZWRDb25zdHJ1Y3Rvci5pdGVyYXRvci0+dmFsdWUuc2V0SXNDYXB0dXJlZCgpOwogICAgICAg
ICBkZXJpdmVkQ29uc3RydWN0b3IuaXRlcmF0b3ItPnZhbHVlLnNldElzTGV0KCk7CkBAIC0zMjY1
LDI0ICszMjc0LDI4IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsRGVmaW5lUHIK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmV0dXJuKFJlZ2lzdGVySUQqIHNy
YykKIHsKICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKSB7Ci0gICAgICAgIGJvb2wgZGVyaXZlZCA9
IGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZDsKKyAgICAgICAg
Ym9vbCBtaWdodEJlRGVyaXZlZCA9IGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6RXh0ZW5kczsKICAgICAgICAgYm9vbCBzcmNJc1RoaXMgPSBzcmMtPmluZGV4KCkgPT0gbV90
aGlzUmVnaXN0ZXIuaW5kZXgoKTsKIAotICAgICAgICBpZiAoZGVyaXZlZCAmJiBzcmNJc1RoaXMp
CisgICAgICAgIGlmIChtaWdodEJlRGVyaXZlZCAmJiBzcmNJc1RoaXMpCiAgICAgICAgICAgICBl
bWl0VERaQ2hlY2soc3JjKTsKIAogICAgICAgICBpZiAoIXNyY0lzVGhpcykgewogICAgICAgICAg
ICAgUmVmUHRyPExhYmVsPiBpc09iamVjdExhYmVsID0gbmV3TGFiZWwoKTsKICAgICAgICAgICAg
IGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgc3JjKSwgaXNPYmpl
Y3RMYWJlbC5nZXQoKSk7CiAKLSAgICAgICAgICAgIGlmIChkZXJpdmVkKSB7CisgICAgICAgICAg
ICBpZiAobWlnaHRCZURlcml2ZWQpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9pc0Rlcml2
ZWRDb25zdHVjdG9yKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHJldHVyblRoaXMg
PSBuZXdMYWJlbCgpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZGYWxzZShtX2lzRGVyaXZl
ZENvbnN0dWN0b3IsIHJldHVyblRoaXMuZ2V0KCkpOworICAgICAgICAgICAgICAgIC8vIEVsc2Us
IHdlJ3JlIGEgZGVyaXZlZCBjb25zdHJ1Y3RvciBoZXJlLgogICAgICAgICAgICAgICAgIFJlZlB0
cjxMYWJlbD4gaXNVbmRlZmluZWRMYWJlbCA9IG5ld0xhYmVsKCk7CiAgICAgICAgICAgICAgICAg
ZW1pdEp1bXBJZlRydWUoZW1pdElzVW5kZWZpbmVkKG5ld1RlbXBvcmFyeSgpLCBzcmMpLCBpc1Vu
ZGVmaW5lZExhYmVsLmdldCgpKTsKICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3Io
IkNhbm5vdCByZXR1cm4gYSBub24tb2JqZWN0IHR5cGUgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEg
ZGVyaXZlZCBjbGFzcy4iKTsKICAgICAgICAgICAgICAgICBlbWl0TGFiZWwoaXNVbmRlZmluZWRM
YWJlbC5nZXQoKSk7CiAgICAgICAgICAgICAgICAgZW1pdFREWkNoZWNrKCZtX3RoaXNSZWdpc3Rl
cik7CisgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVyblRoaXMuZ2V0KCkpOwogICAgICAg
ICAgICAgfQotCiAgICAgICAgICAgICBlbWl0VW5hcnlOb0RzdE9wKG9wX3JldCwgJm1fdGhpc1Jl
Z2lzdGVyKTsKICAgICAgICAgICAgIGVtaXRMYWJlbChpc09iamVjdExhYmVsLmdldCgpKTsKICAg
ICAgICAgfQpAQCAtNDI4NSw3ICs0Mjk4LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cG9w
SW5kZXhlZEZvckluUwogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRB
cnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIpCiB7Ci0gICAgQVNTRVJUKG1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSB8fCBtX2Nv
ZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIHx8IGNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBtX2NvZGVUeXBlID09IEV2YWxDb2RlKTsKKyAg
ICBBU1NFUlQobV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpIHx8IG1fY29kZUJsb2NrLT5p
c0Fycm93RnVuY3Rpb25Db250ZXh0KCkgfHwgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpFeHRlbmRzIHx8IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpOwogCiAgICAgcmV0dXJu
IGVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyaWFibGUoaWRlbnRpZmllciwgVGhpc1Jlc29s
dXRpb25UeXBlOjpTY29wZWQpKTsKIH0KQEAgLTQzMTEsMTAgKzQzMjQsMTAgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkRAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW5zdXJlVGhpcygpCiB7Ci0gICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENv
bnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBuZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSAmJiBpc1N1cGVyQ2FsbFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKQorICAgIGlmIChj
b25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMgJiYgbmVlZHNUb1Vw
ZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgJiYgaXNTdXBlckNhbGxVc2VkSW5Jbm5lckFycm93
RnVuY3Rpb24oKSkKICAgICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2Fs
RW52aXJvbm1lbnQoKTsKIAotICAgIGlmIChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rv
cktpbmQ6OkRlcml2ZWQgfHwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCisgICAgaWYg
KGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyB8fCBpc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKICAgICAgICAgZW1pdFREWkNoZWNrKHRoaXNSZWdpc3Rl
cigpKTsKIAogICAgIHJldHVybiB0aGlzUmVnaXN0ZXIoKTsKQEAgLTQzNTcsNyArNDM3MCw3IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXROZXdUYXJnZXQKICAgICAKIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXREZXJpdmVkQ29uc3RydWN0b3JUb0Fycm93RnVuY3Rpb25D
b250ZXh0U2NvcGUoKQogewotICAgIGlmICgoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9y
S2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkgfHwgbV9jb2RlQmxvY2stPmlzQ2xh
c3NDb250ZXh0KCkpIHsKKyAgICBpZiAoKGlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3Rvcktp
bmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMpIHx8IG1fY29kZUJsb2NrLT5pc0NsYXNz
Q29udGV4dCgpKSB7CiAgICAgICAgIGlmIChpc1N1cGVyVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9u
KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVu
dmlyb25tZW50UmVnaXN0ZXIpOwogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZp
c2lvbiAyMDQwMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyOSw3ICs4MjksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBuZXdEZXJpdmVkQ29udGV4
dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmU7CiAKICAgICAgICAgICAgIGlmIChtZXRh
ZGF0YS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkg
ewotICAgICAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6OkRlcml2ZWQgfHwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCisgICAgICAgICAg
ICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyB8
fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKICAgICAgICAgICAgICAgICAgICAgbmV3
RGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0OwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fY29kZUJsb2NrLT5pc0NsYXNz
Q29udGV4dCgpIHx8IGlzRGVyaXZlZENsYXNzQ29udGV4dCgpKQogICAgICAgICAgICAgICAgICAg
ICBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRNZXRo
b2RDb250ZXh0OwpAQCAtOTEwLDYgKzkxMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBS
ZWdpc3RlcklEKiBtX2VtcHR5VmFsdWVSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVn
aXN0ZXJJRCogbV9nbG9iYWxPYmplY3RSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVn
aXN0ZXJJRCogbV9uZXdUYXJnZXRSZWdpc3RlciB7IG51bGxwdHIgfTsKKyAgICAgICAgUmVnaXN0
ZXJJRCogbV9pc0Rlcml2ZWRDb25zdHVjdG9yIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3Rl
cklEKiBtX2xpbmtUaW1lQ29uc3RhbnRSZWdpc3RlcnNbTGlua1RpbWVDb25zdGFudENvdW50XTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogbV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9u
bWVudFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAyMDQwMzgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc1MSw3ICs3NTEsNyBAQCBSZWdpc3RlcklEKiBFdmFsRnVuY3Rp
b25DYWxsTm9kZTo6ZW1pdEJ5CiAgICAgLy8gICAgICAgZXZhbCgidGhpcy5pZCA9ICdCJyIpOwog
ICAgIC8vICAgIH0KICAgICAvLyB9Ci0gICAgaWYgKGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQo
KSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgJiYgZ2VuZXJhdG9yLm5lZWRzVG9VcGRhdGVB
cnJvd0Z1bmN0aW9uQ29udGV4dCgpICYmIGdlbmVyYXRvci5pc1RoaXNVc2VkSW5Jbm5lckFycm93
RnVuY3Rpb24oKSkKKyAgICBpZiAoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6RXh0ZW5kcyAmJiBnZW5lcmF0b3IubmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rp
b25Db250ZXh0KCkgJiYgZ2VuZXJhdG9yLmlzVGhpc1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigp
KQogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2Fs
RW52aXJvbm1lbnQoKTsKIAogICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmV2YWwpOwpAQCAtNzg1LDExICs3ODUsMTEgQEAgUmVn
aXN0ZXJJRCogRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0QgogICAgICAgICBDYWxsQXJndW1l
bnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogCiAgICAgICAgIEFTU0VSVChn
ZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpIHx8IGdlbmVyYXRvci5kZXJpdmVkQ29udGV4dFR5cGUo
KSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpOwotICAg
ICAgICBBU1NFUlQoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuZGVyaXZlZENvbnRleHRUeXBlKCkgPT0gRGVyaXZlZENv
bnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKKyAgICAgICAgQVNTRVJUKGdl
bmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMgfHwg
Z2VuZXJhdG9yLmRlcml2ZWRDb250ZXh0VHlwZSgpID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxs
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0b3IubmV3VGFyZ2V0KCkpOwogICAgICAg
ICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENvbnN0cnVjdChyZXR1cm5WYWx1ZS5n
ZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogCi0gICAgICAgIGJvb2wgaXNDb25zdHJ1
Y3RvcktpbmREZXJpdmVkID0gZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVj
dG9yS2luZDo6RGVyaXZlZDsKKyAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9yS2luZERlcml2ZWQg
PSBnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRz
OwogICAgICAgICBib29sIGRvV2VVc2VBcnJvd0Z1bmN0aW9uSW5Db25zdHJ1Y3RvciA9IGlzQ29u
c3RydWN0b3JLaW5kRGVyaXZlZCAmJiBnZW5lcmF0b3IubmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rp
b25Db250ZXh0KCk7CiAKICAgICAgICAgaWYgKGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQoKSB8fCAoZG9XZVVzZUFycm93RnVuY3Rpb25JbkNvbnN0cnVjdG9yICYmIGdlbmVy
YXRvci5pc1N1cGVyQ2FsbFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSkKQEAgLTMzNjQsNyAr
MzM2NCw3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGUKIAogICAg
ICAgICAvLyBJZiB0aGVyZSBpcyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2Vy
dCBvbmUuCiAgICAgICAgIGlmICghcmV0dXJuTm9kZSkgewotICAgICAgICAgICAgaWYgKGdlbmVy
YXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgJiYgZ2Vu
ZXJhdG9yLm5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpICYmIGdlbmVyYXRvci5p
c1N1cGVyQ2FsbFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKQorICAgICAgICAgICAgaWYgKGdl
bmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMgJiYg
Z2VuZXJhdG9yLm5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpICYmIGdlbmVyYXRv
ci5pc1N1cGVyQ2FsbFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKQogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVu
dCgpOyAvLyBBcnJvdyBmdW5jdGlvbiBjYW4gaW52b2tlICdzdXBlcicgaW4gY29uc3RydWN0b3Ig
YW5kIGJlZm9yZSBsZWF2ZSBjb25zdHJ1Y3RvciB3ZSBuZWVkIGxvYWQgJ3RoaXMnIGZyb20gbGV4
aWNhbCBhcnJvdyBmdW5jdGlvbiBlbnZpcm9ubWVudAogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3Iu
dGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7CkBA
IC0zNDYwLDEwICszNDYwLDMyIEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRl
Y29kZSgKICAgICAgICAgbWV0YWRhdGEtPnNldEVjbWFOYW1lKGVjbWFOYW1lKCkpOwogICAgICAg
ICBtZXRhZGF0YS0+c2V0Q2xhc3NTb3VyY2UobV9jbGFzc1NvdXJjZSk7CiAgICAgICAgIGNvbnN0
cnVjdG9yID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9jb25zdHJ1Y3RvckV4cHJlc3Npb24p
OworICAgICAgICBpZiAobV9jbGFzc0hlcml0YWdlKSB7CisgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gaXNEZXJpdmVkQ29uc3RydWN0b3IgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3Bfbm90LCBpc0Rlcml2ZWRDb25z
dHJ1Y3Rvci5nZXQoKSwKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3Bf
ZXFfbnVsbCwgaXNEZXJpdmVkQ29uc3RydWN0b3IuZ2V0KCksIHN1cGVyY2xhc3MuZ2V0KCkpKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChjb25zdHJ1Y3Rvci5nZXQo
KSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5pc0Rlcml2ZWRDb25z
dHJ1Y3RvclByaXZhdGVOYW1lKCksIGlzRGVyaXZlZENvbnN0cnVjdG9yLmdldCgpLCBQcm9wZXJ0
eU5vZGU6OlVua25vd24pOworICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY29uc3Ry
dWN0b3IgPSBnZW5lcmF0b3IuZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihnZW5lcmF0b3IuZmlu
YWxEZXN0aW5hdGlvbihkc3QpLAotICAgICAgICAgICAgbV9jbGFzc0hlcml0YWdlID8gQ29uc3Ry
dWN0b3JLaW5kOjpEZXJpdmVkIDogQ29uc3RydWN0b3JLaW5kOjpCYXNlLAotICAgICAgICAgICAg
bV9uYW1lLCBlY21hTmFtZSgpLCBtX2NsYXNzU291cmNlKTsKKyAgICAgICAgaWYgKG1fY2xhc3NI
ZXJpdGFnZSkgeworICAgICAgICAgICAgY29uc3RydWN0b3IgPSBnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXBSZWdpc3Rl
ciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4g
c3VwZXJjbGFzc0lzTnVsbExhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgICAg
ICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGdlbmVyYXRvci5lbWl0VW5hcnlPcChvcF9lcV9u
dWxsLCB0ZW1wUmVnaXN0ZXIuZ2V0KCksIHN1cGVyY2xhc3MuZ2V0KCkpLCBzdXBlcmNsYXNzSXNO
dWxsTGFiZWwuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXROZXdEZWZhdWx0Q29u
c3RydWN0b3IoY29uc3RydWN0b3IuZ2V0KCksIENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcywgbV9u
YW1lLCBlY21hTmFtZSgpLCBtX2NsYXNzU291cmNlKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0TG9hZCh0ZW1wUmVnaXN0ZXIuZ2V0KCksIGpzQm9vbGVhbih0cnVlKSk7CisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEp1bXAoZG9uZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKHN1cGVyY2xhc3NJc051bGxMYWJlbC5nZXQoKSk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvci5nZXQoKSwgQ29uc3Ry
dWN0b3JLaW5kOjpCYXNlLCBtX25hbWUsIGVjbWFOYW1lKCksIG1fY2xhc3NTb3VyY2UpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKHRlbXBSZWdpc3Rlci5nZXQoKSwganNCb29sZWFu
KGZhbHNlKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGRvbmUuZ2V0KCkpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGNvbnN0cnVjdG9yLmdldCgp
LCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmlzRGVyaXZlZENvbnN0
cnVjdG9yUHJpdmF0ZU5hbWUoKSwgdGVtcFJlZ2lzdGVyLmdldCgpLCBQcm9wZXJ0eU5vZGU6OlVu
a25vd24pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29uc3RydWN0b3IgPSBnZW5l
cmF0b3IuZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpLAorICAgICAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZDo6QmFzZSwgbV9uYW1lLCBl
Y21hTmFtZSgpLCBtX2NsYXNzU291cmNlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGNvbnN0
IGF1dG8mIHByb3BlcnR5TmFtZXMgPSBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAkocmV2aXNpb24gMjA0MDM4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjQsNyArMjI0LDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNv
bnN0IAogICAgICAgICBzY29wZS0+c2V0RXZhbENvbnRleHRUeXBlKGV2YWxDb250ZXh0VHlwZSk7
CiAgICAgCiAgICAgaWYgKGRlcml2ZWRDb250ZXh0VHlwZSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6
OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpIHsKLSAgICAgICAgc2NvcGUtPnNldENvbnN0cnVj
dG9yS2luZChDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpOworICAgICAgICBzY29wZS0+c2V0Q29u
c3RydWN0b3JLaW5kKENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyk7CiAgICAgICAgIHNjb3BlLT5z
ZXRFeHBlY3RlZFN1cGVyQmluZGluZyhTdXBlckJpbmRpbmc6Ok5lZWRlZCk7CiAgICAgfQogICAg
IApAQCAtMjEwMSw3ICsyMTAxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29s
IFBhcnNlcgogICAgIAogICAgICAgICBpZiAobV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kICE9IENv
bnN0cnVjdG9yS2luZDo6Tm9uZSkgewogICAgICAgICAgICAgY29uc3RydWN0b3JLaW5kID0gbV9k
ZWZhdWx0Q29uc3RydWN0b3JLaW5kOwotICAgICAgICAgICAgZXhwZWN0ZWRTdXBlckJpbmRpbmcg
PSBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkID8g
U3VwZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZDsKKyAgICAgICAg
ICAgIGV4cGVjdGVkU3VwZXJCaW5kaW5nID0gbV9kZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENv
bnN0cnVjdG9yS2luZDo6RXh0ZW5kcyA/IFN1cGVyQmluZGluZzo6TmVlZGVkIDogU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQ7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0g
U3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKQEAgLTIzMDMsNyArMjMwMyw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXgKICAgICAgICAgcGFyZW50Q2xhc3MgPSBw
YXJzZU1lbWJlckV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcmVu
dENsYXNzLCAiQ2Fubm90IHBhcnNlIHRoZSBwYXJlbnQgY2xhc3MgbmFtZSIpOwogICAgIH0KLSAg
ICBjb25zdCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kID0gcGFyZW50Q2xhc3MgPyBD
b25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgOiBDb25zdHJ1Y3RvcktpbmQ6OkJhc2U7CisgICAgY29u
c3QgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCA9IHBhcmVudENsYXNzID8gQ29uc3Ry
dWN0b3JLaW5kOjpFeHRlbmRzIDogQ29uc3RydWN0b3JLaW5kOjpCYXNlOwogCiAgICAgY29uc3Vt
ZU9yRmFpbChPUEVOQlJBQ0UsICJFeHBlY3RlZCBvcGVuaW5nICd7JyBhdCB0aGUgc3RhcnQgb2Yg
YSBjbGFzcyBib2R5Iik7CiAKQEAgLTQwMTcsNyArNDAxNyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PyBmdW5jdGlvblNjb3BlLT5jb25zdHJ1Y3RvcktpbmQoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IGNsb3Nlc3RPcmRpbmFyeUZ1bmN0aW9uU2NvcGUtPmNvbnN0cnVjdG9yS2lu
ZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShmdW5j
dGlvbkNvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsICJzdXBlciBpcyBu
b3QgdmFsaWQgaW4gdGhpcyBjb250ZXh0Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKGZ1bmN0aW9uQ29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9y
S2luZDo6RGVyaXZlZCwgInN1cGVyIGlzIG5vdCB2YWxpZCBpbiB0aGlzIGNvbnRleHQiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZnVuY3Rpb25Db25z
dHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzLCAic3VwZXIgaXMgbm90IHZh
bGlkIGluIHRoaXMgY29udGV4dCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U2NvcGUoKS0+
aXNBcnJvd0Z1bmN0aW9uKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlck1vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJNb2Rlcy5oCShyZXZpc2lvbiAyMDQwMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlck1vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgZW51
bSBjbGFzcyBKU1BhcnNlclN0cmljdE1vZGUgeyBOb3RTdHJpYwogZW51bSBjbGFzcyBKU1BhcnNl
ckJ1aWx0aW5Nb2RlIHsgTm90QnVpbHRpbiwgQnVpbHRpbiB9OwogZW51bSBjbGFzcyBKU1BhcnNl
ckNvZGVUeXBlIHsgUHJvZ3JhbSwgRnVuY3Rpb24sIE1vZHVsZSB9OwogCi1lbnVtIGNsYXNzIENv
bnN0cnVjdG9yS2luZCB7IE5vbmUsIEJhc2UsIERlcml2ZWQgfTsKK2VudW0gY2xhc3MgQ29uc3Ry
dWN0b3JLaW5kIHsgTm9uZSwgQmFzZSwgRXh0ZW5kcyB9OwogZW51bSBjbGFzcyBTdXBlckJpbmRp
bmcgeyBOZWVkZWQsIE5vdE5lZWRlZCB9OwogCiBlbnVtIERlYnVnZ2VyTW9kZSB7IERlYnVnZ2Vy
T2ZmLCBEZWJ1Z2dlck9uIH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDQwMzgpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wOC0w
MiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICB1cGRhdGUgYSBj
bGFzcyBleHRlbmRpbmcgbnVsbCB3LnIudCB0aGUgRVM3IHNwZWMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDQxNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvY2xhc3Mtc3ludGF4LWV4dGVuZHMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2NsYXNzLXN5bnRheC1zdXBlci1leHBlY3RlZC50
eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1leHRlbmRzLmpzOgor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtc3VwZXIuanM6CisKIDIwMTYt
MDgtMDIgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1vdmUg
cGFyc2luZyBvZiBvcGVyYXRvciBsZW5ndGggYXR0cmlidXRlcyB0byBNYXRoTUxPcGVyYXRvckVs
ZW1lbnQKSW5kZXg6IExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZXh0ZW5kcy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDIwNDAzOCkKKysrIExheW91dFRlc3RzL2pzL2NsYXNzLXN5
bnRheC1leHRlbmRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDEw
IEBAIFBBU1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKChjbGFzcyBleHRlbmQKIFBBU1MgbmV3IChj
bGFzcyBleHRlbmRzIHVuZGVmaW5lZCB7IGNvbnN0cnVjdG9yICgpIHsgdGhpcyB9IH0pOjo6VHlw
ZUVycm9yOiBUaGUgc3VwZXJjbGFzcyBpcyBub3QgYW4gb2JqZWN0LgogUEFTUyB4ID0gdW5kZWZp
bmVkOyBuZXcgKGNsYXNzIGV4dGVuZHMgeCB7IGNvbnN0cnVjdG9yICgpIHsgc3VwZXIoKTsgfSB9
KTo6OlR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MgaXMgbm90IGFuIG9iamVjdC4KIFBBU1MgY2xh
c3MgeCB7fTsgbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvciAoKSB7IHJldHVy
biBuZXcgeDsgfSB9KSBpbnN0YW5jZW9mIHgKLVBBU1MgbmV3IChjbGFzcyBleHRlbmRzIG51bGwg
eyBjb25zdHJ1Y3RvciAoKSB7IHRoaXM7IH0gfSk6OjpSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFj
Y2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLgorUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVs
bCB7IGNvbnN0cnVjdG9yICgpIHsgdGhpczsgfSB9KQogUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMg
bnVsbCB7IGNvbnN0cnVjdG9yICgpIHsgc3VwZXIoKTsgfSB9KTo6OlR5cGVFcnJvcjogZnVuY3Rp
b24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ3N1cGVyKCknKQogUEFTUyB4ID0g
e307IG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyByZXR1cm4geCB9
IH0pOjo6eAotUEFTUyB5ID0gMTI7IG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0
b3IgKCkgeyByZXR1cm4geTsgfSB9KTo6OlR5cGVFcnJvcjogQ2Fubm90IHJldHVybiBhIG5vbi1v
YmplY3QgdHlwZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNzLgorUEFTUyB5
ID0gMTI7IGNsYXNzIEMgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyByZXR1cm4geTsg
fSB9OyBuZXcgQyBpbnN0YW5jZW9mIEM7CiBQQVNTIGNsYXNzIHgge307IG5ldyAoY2xhc3MgZXh0
ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyByZXR1cm4gbmV3IHg7IH0gfSkgaW5zdGFuY2Vv
ZiB4CiBQQVNTIHggPSBudWxsOyBPYmplY3QuZ2V0UHJvdG90eXBlT2YoKGNsYXNzIGV4dGVuZHMg
eCB7IH0pLnByb3RvdHlwZSk6OjpudWxsCiBQQVNTIE9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5
cGVPZihjbGFzcyB7IH0pCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtc3VwZXIt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1z
dXBlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIwNDAzOCkKKysrIExheW91dFRlc3RzL2pzL2Ns
YXNzLXN5bnRheC1zdXBlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEyICsz
MCwxMiBAQCBQQVNTIHggPSB7IH07IG5ldyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgCiBQQVNTIHgg
aW5zdGFuY2VvZiBCYXNlCiBQQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgY29uc3RydWN0
b3IoKSB7IH0gfSk6OjpSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVk
IHZhcmlhYmxlLgogUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgQmFzZSB7IGNvbnN0cnVjdG9yKCkg
eyByZXR1cm4gMTsgfSB9KTo6OlR5cGVFcnJvcjogQ2Fubm90IHJldHVybiBhIG5vbi1vYmplY3Qg
dHlwZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNzLgotUEFTUyBuZXcgKGNs
YXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gdW5kZWZpbmVkIH0gfSk6
OjpSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLgor
UEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gdW5k
ZWZpbmVkIH0gfSkKIFBBU1MgbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3Rvcigp
IHsgc3VwZXIoKTsgcmV0dXJuIHVuZGVmaW5lZCB9IH0pOjo6VHlwZUVycm9yOiBmdW5jdGlvbiBp
cyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnc3VwZXIoKScpCiBQQVNTIHggPSB7IH07
IG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiB4IH0gfSk7
Ojo6eAogUEFTUyB4IGluc3RhbmNlb2YgT2JqZWN0Ci1QQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBu
dWxsIHsgY29uc3RydWN0b3IoKSB7IH0gfSk6OjpSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2Vz
cyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLgotUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7
IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gMTsgfSB9KTo6OlR5cGVFcnJvcjogQ2Fubm90IHJldHVy
biBhIG5vbi1vYmplY3QgdHlwZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNz
LgorUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyB9IH0pCitQ
QVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiAxOyB9
IH0pCiBQQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHN1cGVy
KCkgfSB9KTo6OlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1
YXRpbmcgJ3N1cGVyKCknKQogUEFTUyBuZXcgKGNsYXNzIHsgY29uc3RydWN0b3IoKSB7IHN1cGVy
KCkgfSB9KTo6OlN5bnRheEVycm9yOiBzdXBlciBpcyBub3QgdmFsaWQgaW4gdGhpcyBjb250ZXh0
LgogUEFTUyBmdW5jdGlvbiB4KCkgeyBzdXBlcigpOyB9Ojo6U3ludGF4RXJyb3I6IHN1cGVyIGlz
IG5vdCB2YWxpZCBpbiB0aGlzIGNvbnRleHQuCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvY2xhc3Mtc3ludGF4LWV4dGVuZHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1leHRlbmRzLmpzCShyZXZpc2lvbiAyMDQwMzgp
CisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LWV4dGVuZHMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTExNSwxMCArMTE1LDEwIEBAIHNob3VsZEJlKCdPYmplY3QuZ2V0
UHJvdG90eXBlT2YoKGNsYXNzIGUKIHNob3VsZFRocm93KCduZXcgKGNsYXNzIGV4dGVuZHMgdW5k
ZWZpbmVkIHsgY29uc3RydWN0b3IgKCkgeyB0aGlzIH0gfSknLCAnIlR5cGVFcnJvcjogVGhlIHN1
cGVyY2xhc3MgaXMgbm90IGFuIG9iamVjdC4iJyk7CiBzaG91bGRUaHJvdygneCA9IHVuZGVmaW5l
ZDsgbmV3IChjbGFzcyBleHRlbmRzIHggeyBjb25zdHJ1Y3RvciAoKSB7IHN1cGVyKCk7IH0gfSkn
LCAnIlR5cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MgaXMgbm90IGFuIG9iamVjdC4iJyk7CiBzaG91
bGRCZVRydWUgKCdjbGFzcyB4IHt9OyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVj
dG9yICgpIHsgcmV0dXJuIG5ldyB4OyB9IH0pIGluc3RhbmNlb2YgeCcpOwotc2hvdWxkVGhyb3co
J25ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyB0aGlzOyB9IH0pJywg
JyJSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiIn
KTsKK3Nob3VsZE5vdFRocm93KCduZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9y
ICgpIHsgdGhpczsgfSB9KScpOwogc2hvdWxkVGhyb3coJ25ldyAoY2xhc3MgZXh0ZW5kcyBudWxs
IHsgY29uc3RydWN0b3IgKCkgeyBzdXBlcigpOyB9IH0pJywgJyJUeXBlRXJyb3I6IGZ1bmN0aW9u
IGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nIFwnc3VwZXIoKVwnKSInKTsKIHNob3Vs
ZEJlKCd4ID0ge307IG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyBy
ZXR1cm4geCB9IH0pJywgJ3gnKTsKLXNob3VsZFRocm93KCd5ID0gMTI7IG5ldyAoY2xhc3MgZXh0
ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyByZXR1cm4geTsgfSB9KScsICciVHlwZUVycm9y
OiBDYW5ub3QgcmV0dXJuIGEgbm9uLW9iamVjdCB0eXBlIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBh
IGRlcml2ZWQgY2xhc3MuIicpOworc2hvdWxkQmVUcnVlKCd5ID0gMTI7IGNsYXNzIEMgZXh0ZW5k
cyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyByZXR1cm4geTsgfSB9OyBuZXcgQyBpbnN0YW5jZW9m
IEM7JywgJyJUeXBlRXJyb3I6IENhbm5vdCByZXR1cm4gYSBub24tb2JqZWN0IHR5cGUgaW4gdGhl
IGNvbnN0cnVjdG9yIG9mIGEgZGVyaXZlZCBjbGFzcy4iJyk7CiBzaG91bGRCZVRydWUgKCdjbGFz
cyB4IHt9OyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yICgpIHsgcmV0dXJu
IG5ldyB4OyB9IH0pIGluc3RhbmNlb2YgeCcpOwogc2hvdWxkQmUoJ3ggPSBudWxsOyBPYmplY3Qu
Z2V0UHJvdG90eXBlT2YoKGNsYXNzIGV4dGVuZHMgeCB7IH0pLnByb3RvdHlwZSknLCAnbnVsbCcp
Owogc2hvdWxkQmVUcnVlKCdPYmplY3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoY2xhc3MgeyB9
KScpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1zdXBl
ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3lu
dGF4LXN1cGVyLmpzCShyZXZpc2lvbiAyMDQwMzgpCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvY2xhc3Mtc3ludGF4LXN1cGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTIgKzEx
MywxMiBAQCBzaG91bGRCZSgneCA9IHsgfTsgbmV3IChjbGFzcyBleHRlbmRzIEJhCiBzaG91bGRC
ZUZhbHNlKCd4IGluc3RhbmNlb2YgQmFzZScpOwogc2hvdWxkVGhyb3coJ25ldyAoY2xhc3MgZXh0
ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7IH0gfSknLCAnIlJlZmVyZW5jZUVycm9yOiBDYW5u
b3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIicpOwogc2hvdWxkVGhyb3coJ25ldyAo
Y2xhc3MgZXh0ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiAxOyB9IH0pJywgJyJU
eXBlRXJyb3I6IENhbm5vdCByZXR1cm4gYSBub24tb2JqZWN0IHR5cGUgaW4gdGhlIGNvbnN0cnVj
dG9yIG9mIGEgZGVyaXZlZCBjbGFzcy4iJyk7Ci1zaG91bGRUaHJvdygnbmV3IChjbGFzcyBleHRl
bmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHVuZGVmaW5lZCB9IH0pJyk7CitzaG91
bGROb3RUaHJvdygnbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgcmV0
dXJuIHVuZGVmaW5lZCB9IH0pJyk7CiBzaG91bGRUaHJvdygnbmV3IChjbGFzcyBleHRlbmRzIG51
bGwgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgcmV0dXJuIHVuZGVmaW5lZCB9IH0pJywgJyJU
eXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nIFwnc3Vw
ZXIoKVwnKSInKTsKIHNob3VsZEJlKCd4ID0geyB9OyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7
IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4geCB9IH0pOycsICd4Jyk7CiBzaG91bGRCZVRydWUoJ3gg
aW5zdGFuY2VvZiBPYmplY3QnKTsKLXNob3VsZFRocm93KCduZXcgKGNsYXNzIGV4dGVuZHMgbnVs
bCB7IGNvbnN0cnVjdG9yKCkgeyB9IH0pJywgJyJSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2Vz
cyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiInKTsKLXNob3VsZFRocm93KCduZXcgKGNsYXNzIGV4
dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gMTsgfSB9KScsICciVHlwZUVycm9y
OiBDYW5ub3QgcmV0dXJuIGEgbm9uLW9iamVjdCB0eXBlIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBh
IGRlcml2ZWQgY2xhc3MuIicpOworc2hvdWxkTm90VGhyb3coJ25ldyAoY2xhc3MgZXh0ZW5kcyBu
dWxsIHsgY29uc3RydWN0b3IoKSB7IH0gfSknKTsKK3Nob3VsZE5vdFRocm93KCduZXcgKGNsYXNz
IGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gMTsgfSB9KScpOwogc2hvdWxk
VGhyb3coJ25ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCkg
fSB9KScsICciVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVh
dGluZyBcJ3N1cGVyKClcJykiJyk7CiBzaG91bGRUaHJvdygnbmV3IChjbGFzcyB7IGNvbnN0cnVj
dG9yKCkgeyBzdXBlcigpIH0gfSknLCAnIlN5bnRheEVycm9yOiBzdXBlciBpcyBub3QgdmFsaWQg
aW4gdGhpcyBjb250ZXh0LiInKTsKIHNob3VsZFRocm93KCdmdW5jdGlvbiB4KCkgeyBzdXBlcigp
OyB9JywgJyJTeW50YXhFcnJvcjogc3VwZXIgaXMgbm90IHZhbGlkIGluIHRoaXMgY29udGV4dC4i
Jyk7Cg==
</data>
<flag name="review"
          id="308774"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285154</attachid>
            <date>2016-08-02 16:02:15 -0700</date>
            <delta_ts>2016-08-02 18:29:36 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>33913</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlbG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlbG9n
CShyZXZpc2lvbiAyMDQwMzgpCisrKyBKU1Rlc3RzL0NoYW5nZWxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDM1IEBACisyMDE2LTA4LTAyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIHVwZGF0ZSBhIGNsYXNzIGV4dGVuZGluZyBudWxsIHcuci50IHRoZSBF
Uzcgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYwNDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorCisgICAgICAgICog
Q2hhbmdlbG9nOgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1kZXJpdmVkLWZyb20tbnVsbC5qczog
QWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0
MS5DKToKKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAgKGpzTnVsbCk6CisgICAgICAgICh0ZXN0
Mi5DKToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRlc3QzLkMpOgorICAgICAgICAodGVz
dDMuRCk6CisgICAgICAgICh0ZXN0My5FKToKKyAgICAgICAgKHRlc3QzKToKKyAgICAgICAgKHRl
c3Q0LkUpOgorICAgICAgICAodGVzdDQpOgorICAgICAgICAodGVzdDUuRSk6CisgICAgICAgICh0
ZXN0NSk6CisgICAgICAgICh0ZXN0Ni5CYXNlKToKKyAgICAgICAgKHRlc3Q2LkQpOgorICAgICAg
ICAodGVzdDYuRSk6CisgICAgICAgICh0ZXN0Ni5GKToKKyAgICAgICAgKHRlc3Q2LkcpOgorICAg
ICAgICAodGVzdDYpOgorICAgICAgICAqIHRlc3QyNjIueWFtbDoKKwogMjAxNi0wOC0wMSAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJhdGlvbmFsaXplIHZhcmFy
Z3Mgc3RhY2sgb3ZlcmZsb3cgY2hlY2tzCkluZGV4OiBKU1Rlc3RzL3Rlc3QyNjIueWFtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL3Rlc3QyNjIueWFtbAkocmV2aXNpb24gMjA0MDM4KQorKysgSlNU
ZXN0cy90ZXN0MjYyLnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTc1ODk4LDkgKzc1ODk4LDkgQEAK
IC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvY2xhc3Mvc3ViY2xhc3Mv
Y2xhc3MtZGVmaW5pdGlvbi1udWxsLXByb3RvLXN1cGVyLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6
bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQogLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9jbGFzcy9zdWJjbGFzcy9jbGFzcy1kZWZp
bml0aW9uLW51bGwtcHJvdG8tdGhpcy5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
Li4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJO
b0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL3N0YXRlbWVudHMvY2xhc3Mvc3ViY2xhc3MvY2xhc3MtZGVmaW5pdGlvbi1udWxsLXByb3Rv
LXRoaXMuanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4u
Ly4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIl0sIFs6c3RyaWN0XQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L3N0YXRlbWVudHMvY2xhc3Mvc3ViY2xhc3MvY2xhc3MtZGVmaW5pdGlvbi1udWxsLXByb3RvLmpz
CiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4u
Ly4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0s
IFtdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2NsYXNzL3N1YmNs
YXNzL2NsYXNzLWRlZmluaXRpb24tbnVsbC1wcm90by5qcwpJbmRleDogSlNUZXN0cy9zdHJlc3Mv
Y2xhc3MtZGVyaXZlZC1mcm9tLW51bGwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mv
Y2xhc3MtZGVyaXZlZC1mcm9tLW51bGwuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJl
c3MvY2xhc3MtZGVyaXZlZC1mcm9tLW51bGwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MjggQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkJhZCEiKQorfQorCitmdW5jdGlvbiB0ZXN0KGYsIGNvdW50ID0gMTAwMCkgewor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgZigpOworfQorCitm
dW5jdGlvbiB0ZXN0MSgpIHsKKyAgICBjbGFzcyBDIGV4dGVuZHMgbnVsbCB7IH0KKyAgICBhc3Nl
cnQoKG5ldyBDKSBpbnN0YW5jZW9mIEMpOworICAgIGFzc2VydCghKChuZXcgQykgaW5zdGFuY2Vv
ZiBPYmplY3QpKTsKKyAgICBhc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihDLnByb3RvdHlw
ZSkgPT09IG51bGwpOworCisgICAgbGV0IG8gPSB7fQorICAgIGNsYXNzIEQgZXh0ZW5kcyBudWxs
IHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICByZXR1cm4gbzsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBhc3NlcnQobmV3IEQgPT09IG8pOworICAgIGFzc2VydChSZWZsZWN0
LmdldFByb3RvdHlwZU9mKEQucHJvdG90eXBlKSA9PT0gbnVsbCk7CisKKyAgICBjbGFzcyBFIGV4
dGVuZHMgbnVsbCB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgcmV0dXJu
IHRoaXM7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KChuZXcgRSkgaW5zdGFuY2VvZiBF
KTsKKyAgICBhc3NlcnQoISgobmV3IEUpIGluc3RhbmNlb2YgT2JqZWN0KSk7CisgICAgYXNzZXJ0
KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoRS5wcm90b3R5cGUpID09PSBudWxsKTsKK30KK3Rlc3Qo
dGVzdDEpOworCitmdW5jdGlvbiBqc051bGwoKSB7IHJldHVybiBudWxsOyB9CitmdW5jdGlvbiB0
ZXN0MigpIHsKKyAgICBjbGFzcyBDIGV4dGVuZHMganNOdWxsKCkgeyB9CisgICAgYXNzZXJ0KChu
ZXcgQykgaW5zdGFuY2VvZiBDKTsKKyAgICBhc3NlcnQoISgobmV3IEMpIGluc3RhbmNlb2YgT2Jq
ZWN0KSk7CisgICAgYXNzZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoQy5wcm90b3R5cGUpID09
PSBudWxsKTsKKworICAgIGxldCBvID0ge30KKyAgICBjbGFzcyBEIGV4dGVuZHMganNOdWxsKCkg
eworICAgICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgIHJldHVybiBvOworICAgICAg
ICB9CisgICAgfQorICAgIGFzc2VydChuZXcgRCA9PT0gbyk7CisgICAgYXNzZXJ0KFJlZmxlY3Qu
Z2V0UHJvdG90eXBlT2YoRC5wcm90b3R5cGUpID09PSBudWxsKTsKKworICAgIGNsYXNzIEUgZXh0
ZW5kcyBqc051bGwoKSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgcmV0
dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KChuZXcgRSkgaW5zdGFuY2Vv
ZiBFKTsKKyAgICBhc3NlcnQoISgobmV3IEUpIGluc3RhbmNlb2YgT2JqZWN0KSk7CisgICAgYXNz
ZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoRS5wcm90b3R5cGUpID09PSBudWxsKTsKK30KK3Rl
c3QodGVzdDIpOworCitmdW5jdGlvbiB0ZXN0MygpIHsKKyAgICBjbGFzcyBDIGV4dGVuZHMganNO
dWxsKCkgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgfSB9CisgICAgbGV0IHRocmV3ID0gZmFs
c2U7CisgICAgdHJ5IHsKKyAgICAgICAgbmV3IEM7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAg
IHRocmV3ID0gZS50b1N0cmluZygpID09PSAiVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBj
b25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnc3VwZXIoKScpIjsKKyAgICB9CisgICAgYXNzZXJ0KHRo
cmV3KTsKKworICAgIGNsYXNzIEQgZXh0ZW5kcyBqc051bGwoKSB7IGNvbnN0cnVjdG9yKCkgeyBs
ZXQgYXJyID0gKCk9PnN1cGVyKCk7IGFycigpOyB9IH0KKyAgICB0aHJldyA9IGZhbHNlOworICAg
IHRyeSB7CisgICAgICAgIG5ldyBEOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICB0aHJldyA9
IGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0
b3IgKGV2YWx1YXRpbmcgJ3N1cGVyKCknKSI7CisgICAgfQorICAgIGFzc2VydCh0aHJldyk7CisK
KyAgICBjbGFzcyBFIGV4dGVuZHMganNOdWxsKCkgeyBjb25zdHJ1Y3RvcigpIHsgbGV0IGFyciA9
ICgpPT5zdXBlcigpOyByZXR1cm4gdGhpczsgfSB9CisgICAgYXNzZXJ0KChuZXcgRSkgaW5zdGFu
Y2VvZiBFKTsKKyAgICBhc3NlcnQoISgobmV3IEUpIGluc3RhbmNlb2YgT2JqZWN0KSk7CisgICAg
YXNzZXJ0KFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoRS5wcm90b3R5cGUpID09PSBudWxsKTsKK30K
K3Rlc3QodGVzdDMpOworCitmdW5jdGlvbiB0ZXN0NCgpIHsKKyAgICBjbGFzcyBFIGV4dGVuZHMg
anNOdWxsKCkgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIDI1OyB9IH0KKyAgICBhc3NlcnQoKG5l
dyBFKSBpbnN0YW5jZW9mIEUpOworICAgIGFzc2VydCghKChuZXcgRSkgaW5zdGFuY2VvZiBPYmpl
Y3QpKTsKKyAgICBhc3NlcnQoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihFLnByb3RvdHlwZSkgPT09
IG51bGwpOworfQordGVzdCh0ZXN0NCk7CisKK2Z1bmN0aW9uIHRlc3Q1KCkgeworICAgIGNsYXNz
IEUgZXh0ZW5kcyBqc051bGwoKSB7IGNvbnN0cnVjdG9yKCkgeyBsZXQgYXJyID0gKCk9PnRoaXM7
IHJldHVybiBhcnIoKTsgfSB9CisgICAgYXNzZXJ0KChuZXcgRSkgaW5zdGFuY2VvZiBFKTsKKyAg
ICBhc3NlcnQoISgobmV3IEUpIGluc3RhbmNlb2YgT2JqZWN0KSk7CisgICAgYXNzZXJ0KFJlZmxl
Y3QuZ2V0UHJvdG90eXBlT2YoRS5wcm90b3R5cGUpID09PSBudWxsKTsKK30KK3Rlc3QodGVzdDUp
OworCitmdW5jdGlvbiB0ZXN0NigpIHsKKyAgICBjbGFzcyBCYXNlIHsgfQorICAgIGNsYXNzIEQg
ZXh0ZW5kcyBCYXNlIHsgfQorICAgIGNsYXNzIEUgZXh0ZW5kcyBqc051bGwoKSB7IGNvbnN0cnVj
dG9yKCkgeyBsZXQgcmV0ID0gdGhpczsgcmV0dXJuIHJldDsgfSB9CisgICAgY2xhc3MgRiBleHRl
bmRzIGpzTnVsbCgpIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiAyNTsgfSB9CisgICAgY2xhc3Mg
RyBleHRlbmRzIGpzTnVsbCgpIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IH0gfQorICAgIGxl
dCByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChFLCBbXSwgRCk7CisgICAgYXNzZXJ0KHJlc3Vs
dCBpbnN0YW5jZW9mIEQpOworICAgIGFzc2VydChyZXN1bHQgaW5zdGFuY2VvZiBPYmplY3QpOwor
CisgICAgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoRiwgW10sIEQpOworICAgIGFzc2VydChy
ZXN1bHQgaW5zdGFuY2VvZiBEKTsKKyAgICBhc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgT2JqZWN0
KTsKKworICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIFJlZmxlY3Qu
Y29uc3RydWN0KEcsIFtdLCBEKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgdGhyZXcgPSBl
LnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9y
IChldmFsdWF0aW5nICdzdXBlcigpJykiOworICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworfQor
dGVzdCh0ZXN0Nik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDAz
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw1MSBAQAorMjAxNi0wOC0wMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNv
bT4KKworICAgICAgICB1cGRhdGUgYSBjbGFzcyBleHRlbmRpbmcgbnVsbCB3LnIudCB0aGUgRVM3
IHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MDQxNworCisgICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlci4KKworICAgICAgICBXaGVu
IGEgY2xhc3MgZXh0ZW5kcyBudWxsLCBpdCBzaG91bGQgbm90IGJlIG1hcmtlZCBhcyBhIGRlcml2
ZWQgY2xhc3MuCisgICAgICAgIFRoaXMgd2FzIGNoYW5nZWQgaW4gdGhlIEVTMjAxNiBzcGVjLCBh
bmQgdGhpcyBwYXRjaCBtYWtlcyB0aGUgbmVlZGVkCisgICAgICAgIGNoYW5nZXMgaW4gSlNDIHRv
IGZvbGxvdyB0aGUgc3BlYy4gVGhpcyBhbGxvd3MgY2xhc3NlcyB0byBleHRlbmQKKyAgICAgICAg
bnVsbCBhbmQgaGF2ZSB0aGVpciBkZWZhdWx0IGNvbnN0cnVjdG9yIGludm9rZWQgd2l0aG91dCB0
aHJvd2luZyBhbiBleGNlcHRpb24uCisgICAgICAgIFRoaXMgYWxzbyBwcmV2ZW50cyB8dGhpc3wg
ZnJvbSBiZWluZyB1bmRlciBURFogYXQgdGhlIHN0YXJ0IG9mIHRoZSBjb25zdHJ1Y3Rvci4KKyAg
ICAgICAgQmVjYXVzZSBFUzYgYWxsb3dzIGFyYml0cmFyeSBleHByZXNzaW9ucyBpbiB0aGUgYGNs
YXNzIDxpZGVudD4gZXh0ZW5kcyA8ZXhwcj5gCisgICAgICAgIHN5bnRheCwgd2UgZG9uJ3Qga25v
dyBzdGF0aWNhbGx5IGlmIGEgY29uc3RydWN0b3IgaXMgZXh0ZW5kaW5nIG51bGwgb3Igbm90Lgor
ICAgICAgICBUaGVyZWZvcmUsIHdlIGRvbid0IGFsd2F5cyBrbm93IHN0YXRpY2FsbHkgaWYgaXQn
cyBhIGJhc2Ugb3IgZGVyaXZlZCBjb25zdHJ1Y3Rvci4KKyAgICAgICAgSSBzb2x2ZWQgdGhpcyBi
eSBwdXR0aW5nIGEgYm9vbGVhbiBvbiB0aGUgY29uc3RydWN0b3IgZnVuY3Rpb24gdW5kZXIgYSBw
cml2YXRlCisgICAgICAgIHN5bWJvbCBuYW1lZCBpc0Rlcml2ZWRDb25zdHJ1Y3RvciB3aGVuIGRv
aW5nIGNsYXNzIGNvbnN0cnVjdGlvbi4gV2Ugb25seSBuZWVkCisgICAgICAgIHRvIHB1dCB0aGlz
IGJvb2xlYW4gb24gY29uc3RydWN0b3JzIHRoYXQgbWF5IGV4dGVuZCBudWxsLiBDb25zdHJ1Y3Rv
cnMgdGhhdCBhcmUKKyAgICAgICAgZGVjbGFyZWQgaW4gYSBjbGFzcyB3aXRoIG5vIGV4dGVuZHMg
c3ludGF4IGNhbiB0ZWxsIHN0YXRpY2FsbHkgdGhhdCB0aGV5IGFyZSBhIGJhc2UgY29uc3RydWN0
b3IuCisKKyAgICAgICAgSSd2ZSBhbHNvIHJlbmFtZWQgdGhlIENvbnN0cnVjdG9yS2luZDo6RGVy
aXZlZCBlbnVtIHZhbHVlIHRvIGJlCisgICAgICAgIENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyB0
byBiZXR0ZXIgaW5kaWNhdGUgdGhhdCB3ZSBjYW4ndCBhbnN3ZXIKKyAgICAgICAgdGhlICJhbSBJ
IGEgZGVyaXZlZCBjb25zdHJ1Y3Rvcj8iIHF1ZXN0aW9uIHN0YXRpY2FsbHkuCisKKyAgICAgICAg
KiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGlu
RXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVBcnJvd0Z1
bmN0aW9uQ29udGV4dFNjb3BlSWZOZWVkZWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFJldHVybik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TG9hZEFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW5zdXJlVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UHV0RGVyaXZlZENvbnN0cnVjdG9yVG9BcnJvd0Z1bmN0aW9uQ29udGV4dFNjb3Bl
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Om1ha2VGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkV2YWxGdW5jdGlvbkNhbGxO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBh
cnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5m
byk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAg
ICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisKIDIwMTYtMDgtMDIgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQVJNXSBEaXNhYmxlIElubGluZSBD
YWNoaW5nIG9uIEFSTXY3IHRyYWRpdGlvbmFsIHVudGlsIHByb3BlciBmaXgKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwCShyZXZpc2lvbiAyMDQwMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpCYXNlOgogICAgICAgICByZXR1cm4gY3JlYXRlRXhl
Y3V0YWJsZShtX3ZtLCBtYWtlU291cmNlKGJhc2VDb25zdHJ1Y3RvckNvZGUpLCBuYW1lLCBjb25z
dHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCk7Ci0gICAgY2FzZSBD
b25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQ6CisgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVu
ZHM6CiAgICAgICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIG1ha2VTb3VyY2UoZGVy
aXZlZENvbnN0cnVjdG9yQ29kZSksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJp
bGl0eTo6Q2FuQ29uc3RydWN0KTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCShy
ZXZpc2lvbiAyMDQwMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bk5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBtYWNybyhpc0FycmF5KSBcCiAgICAgbWFjcm8oaXNBcnJheUNvbnN0cnVjdG9yKSBc
CiAgICAgbWFjcm8oaXNDb25zdHJ1Y3RvcikgXAorICAgIG1hY3JvKGlzRGVyaXZlZENvbnN0cnVj
dG9yKSBcCiAgICAgbWFjcm8oaXNSZWdFeHBPYmplY3QpIFwKICAgICBtYWNybyhjb25jYXRNZW1j
cHkpIFwKICAgICBtYWNybyhhcHBlbmRNZW1jcHkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShy
ZXZpc2lvbiAyMDQwMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYwLDkgKzU2MCwxOCBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgICAgIGlmIChTb3Vy
Y2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlICE9IHBhcnNlTW9kZSkgewogICAgICAgICAg
ICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgewogICAgICAgICAgICAgICAgIGVtaXRNb3ZlKG1fbmV3
VGFyZ2V0UmVnaXN0ZXIsICZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGNv
bnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCkKKyAgICAgICAgICAg
ICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzKSB7
CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gaXNEZXJpdmVkID0gbmV3TGFiZWwo
KTsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gbmV3TGFiZWwoKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9pc0Rlcml2ZWRDb25zdHVjdG9yID0gYWRkVmFyKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGVtaXRHZXRCeUlkKG1faXNEZXJpdmVkQ29uc3R1Y3RvciwgJm1f
Y2FsbGVlUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5pc0Rlcml2ZWRD
b25zdHJ1Y3RvclByaXZhdGVOYW1lKCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElm
VHJ1ZShtX2lzRGVyaXZlZENvbnN0dWN0b3IsIGlzRGVyaXZlZC5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CisgICAgICAgICAgICAg
ICAgICAgIGVtaXRKdW1wKGRvbmUuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBlbWl0TGFi
ZWwoaXNEZXJpdmVkLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgZW1pdE1vdmVFbXB0eVZh
bHVlKCZtX3RoaXNSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBlbWl0TGFiZWwoZG9uZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKCZtX3RoaXNSZWdpc3Rlcik7CiAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6
Tm9uZSkKICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEg
Y2xhc3MgY29uc3RydWN0b3Igd2l0aG91dCB8bmV3fCIpOwpAQCAtOTQ4LDcgKzk1Nyw3IEBAIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVBcnJvd0YKICAgICAgICAgICAgIGZ1bmN0
aW9uU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIHByb3BlcnR5TmFtZXMoKS5i
dWlsdGluTmFtZXMoKS5uZXdUYXJnZXRMb2NhbFByaXZhdGVOYW1lKCkuaW1wbCgpLCBTeW1ib2xU
YWJsZUVudHJ5KFZhck9mZnNldChvZmZzZXQpKSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIGlmIChpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkICYmIGlzU3VwZXJVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkgewor
ICAgICAgICBpZiAoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6RXh0ZW5kcyAmJiBpc1N1cGVyVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkp
IHsKICAgICAgICAgICAgIG9mZnNldCA9IGZ1bmN0aW9uU3ltYm9sVGFibGUtPnRha2VOZXh0U2Nv
cGVPZmZzZXQoTm9Mb2NraW5nTmVjZXNzYXJ5KTsKICAgICAgICAgICAgIGZ1bmN0aW9uU3ltYm9s
VGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFt
ZXMoKS5kZXJpdmVkQ29uc3RydWN0b3JQcml2YXRlTmFtZSgpLmltcGwoKSwgU3ltYm9sVGFibGVF
bnRyeShWYXJPZmZzZXQob2Zmc2V0KSkpOwogICAgICAgICB9CkBAIC05NzAsNyArOTc5LDcgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZUFycm93RgogICAgICAgICBhZGRUYXJn
ZXQuaXRlcmF0b3ItPnZhbHVlLnNldElzTGV0KCk7CiAgICAgfQogCi0gICAgaWYgKGlzQ29uc3Ry
dWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQg
JiYgaXNTdXBlclVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSB7CisgICAgaWYgKGlzQ29uc3Ry
dWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMg
JiYgaXNTdXBlclVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSB7CiAgICAgICAgIGF1dG8gZGVy
aXZlZENvbnN0cnVjdG9yID0gZW52aXJvbm1lbnQuYWRkKHByb3BlcnR5TmFtZXMoKS5idWlsdGlu
TmFtZXMoKS5kZXJpdmVkQ29uc3RydWN0b3JQcml2YXRlTmFtZSgpKTsKICAgICAgICAgZGVyaXZl
ZENvbnN0cnVjdG9yLml0ZXJhdG9yLT52YWx1ZS5zZXRJc0NhcHR1cmVkKCk7CiAgICAgICAgIGRl
cml2ZWRDb25zdHJ1Y3Rvci5pdGVyYXRvci0+dmFsdWUuc2V0SXNMZXQoKTsKQEAgLTMyNjUsMjQg
KzMyNzQsMjggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxEZWZpbmVQcgogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKQog
ewogICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpIHsKLSAgICAgICAgYm9vbCBkZXJpdmVkID0gY29u
c3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkOworICAgICAgICBib29s
IG1pZ2h0QmVEZXJpdmVkID0gY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpF
eHRlbmRzOwogICAgICAgICBib29sIHNyY0lzVGhpcyA9IHNyYy0+aW5kZXgoKSA9PSBtX3RoaXNS
ZWdpc3Rlci5pbmRleCgpOwogCi0gICAgICAgIGlmIChkZXJpdmVkICYmIHNyY0lzVGhpcykKKyAg
ICAgICAgaWYgKG1pZ2h0QmVEZXJpdmVkICYmIHNyY0lzVGhpcykKICAgICAgICAgICAgIGVtaXRU
RFpDaGVjayhzcmMpOwogCiAgICAgICAgIGlmICghc3JjSXNUaGlzKSB7CiAgICAgICAgICAgICBS
ZWZQdHI8TGFiZWw+IGlzT2JqZWN0TGFiZWwgPSBuZXdMYWJlbCgpOwogICAgICAgICAgICAgZW1p
dEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCBzcmMpLCBpc09iamVjdExh
YmVsLmdldCgpKTsKIAotICAgICAgICAgICAgaWYgKGRlcml2ZWQpIHsKKyAgICAgICAgICAgIGlm
IChtaWdodEJlRGVyaXZlZCkgeworICAgICAgICAgICAgICAgIEFTU0VSVChtX2lzRGVyaXZlZENv
bnN0dWN0b3IpOworICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gcmV0dXJuVGhpcyA9IG5l
d0xhYmVsKCk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBJZkZhbHNlKG1faXNEZXJpdmVkQ29u
c3R1Y3RvciwgcmV0dXJuVGhpcy5nZXQoKSk7CisgICAgICAgICAgICAgICAgLy8gRWxzZSwgd2Un
cmUgYSBkZXJpdmVkIGNvbnN0cnVjdG9yIGhlcmUuCiAgICAgICAgICAgICAgICAgUmVmUHRyPExh
YmVsPiBpc1VuZGVmaW5lZExhYmVsID0gbmV3TGFiZWwoKTsKICAgICAgICAgICAgICAgICBlbWl0
SnVtcElmVHJ1ZShlbWl0SXNVbmRlZmluZWQobmV3VGVtcG9yYXJ5KCksIHNyYyksIGlzVW5kZWZp
bmVkTGFiZWwuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fu
bm90IHJldHVybiBhIG5vbi1vYmplY3QgdHlwZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJp
dmVkIGNsYXNzLiIpOwogICAgICAgICAgICAgICAgIGVtaXRMYWJlbChpc1VuZGVmaW5lZExhYmVs
LmdldCgpKTsKICAgICAgICAgICAgICAgICBlbWl0VERaQ2hlY2soJm1fdGhpc1JlZ2lzdGVyKTsK
KyAgICAgICAgICAgICAgICBlbWl0TGFiZWwocmV0dXJuVGhpcy5nZXQoKSk7CiAgICAgICAgICAg
ICB9Ci0KICAgICAgICAgICAgIGVtaXRVbmFyeU5vRHN0T3Aob3BfcmV0LCAmbV90aGlzUmVnaXN0
ZXIpOwogICAgICAgICAgICAgZW1pdExhYmVsKGlzT2JqZWN0TGFiZWwuZ2V0KCkpOwogICAgICAg
ICB9CkBAIC00Mjg1LDcgKzQyOTgsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BJbmRl
eGVkRm9ySW5TCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZEFycm93
RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikK
IHsKLSAgICBBU1NFUlQobV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpIHx8IG1fY29kZUJs
b2NrLT5pc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgfHwgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29u
c3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpOworICAgIEFT
U0VSVChtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkgfHwgbV9jb2RlQmxvY2stPmlzQXJy
b3dGdW5jdGlvbkNvbnRleHQoKSB8fCBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6OkV4dGVuZHMgfHwgbV9jb2RlVHlwZSA9PSBFdmFsQ29kZSk7CiAKICAgICByZXR1cm4gZW1p
dFJlc29sdmVTY29wZShudWxscHRyLCB2YXJpYWJsZShpZGVudGlmaWVyLCBUaGlzUmVzb2x1dGlv
blR5cGU6OlNjb3BlZCkpOwogfQpAQCAtNDMxMSwxMCArNDMyNCwxMCBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRECiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbnN1cmVUaGlzKCkKIHsKLSAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3Ry
dWN0b3JLaW5kOjpEZXJpdmVkICYmIG5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgp
ICYmIGlzU3VwZXJDYWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpCisgICAgaWYgKGNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyAmJiBuZWVkc1RvVXBkYXRl
QXJyb3dGdW5jdGlvbkNvbnRleHQoKSAmJiBpc1N1cGVyQ2FsbFVzZWRJbklubmVyQXJyb3dGdW5j
dGlvbigpKQogICAgICAgICBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZp
cm9ubWVudCgpOwogCi0gICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6RGVyaXZlZCB8fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKKyAgICBpZiAoY29u
c3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIHx8IGlzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCgpKQogICAgICAgICBlbWl0VERaQ2hlY2sodGhpc1JlZ2lzdGVyKCkp
OwogCiAgICAgcmV0dXJuIHRoaXNSZWdpc3RlcigpOwpAQCAtNDM1Nyw3ICs0MzcwLDcgQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dE5ld1RhcmdldAogICAgIAogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFB1dERlcml2ZWRDb25zdHJ1Y3RvclRvQXJyb3dGdW5jdGlvbkNvbnRl
eHRTY29wZSgpCiB7Ci0gICAgaWYgKChpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5k
KCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKSB8fCBtX2NvZGVCbG9jay0+aXNDbGFzc0Nv
bnRleHQoKSkgeworICAgIGlmICgoaXNDb25zdHJ1Y3RvcigpICYmIGNvbnN0cnVjdG9yS2luZCgp
ID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcykgfHwgbV9jb2RlQmxvY2stPmlzQ2xhc3NDb250
ZXh0KCkpIHsKICAgICAgICAgaWYgKGlzU3VwZXJVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkg
ewogICAgICAgICAgICAgQVNTRVJUKG1fYXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJv
bm1lbnRSZWdpc3Rlcik7CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9u
IDIwNDAzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODI5LDcgKzgyOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG5ld0Rlcml2ZWRDb250ZXh0VHlw
ZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZTsKIAogICAgICAgICAgICAgaWYgKG1ldGFkYXRh
LT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6
RGVyaXZlZCB8fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKKyAgICAgICAgICAgICAg
ICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIHx8IGlz
RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKQogICAgICAgICAgICAgICAgICAgICBuZXdEZXJp
dmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQ7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobV9jb2RlQmxvY2stPmlzQ2xhc3NDb250
ZXh0KCkgfHwgaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkpCiAgICAgICAgICAgICAgICAgICAgIG5l
d0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZE1ldGhvZENv
bnRleHQ7CkBAIC05MTAsNiArOTEwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lz
dGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3Rl
cklEKiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyIHsgbnVsbHB0ciB9OwogICAgICAgICBSZWdpc3Rl
cklEKiBtX25ld1RhcmdldFJlZ2lzdGVyIHsgbnVsbHB0ciB9OworICAgICAgICBSZWdpc3RlcklE
KiBtX2lzRGVyaXZlZENvbnN0dWN0b3IgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQq
IG1fbGlua1RpbWVDb25zdGFudFJlZ2lzdGVyc1tMaW5rVGltZUNvbnN0YW50Q291bnRdOwogICAg
ICAgICBSZWdpc3RlcklEKiBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50
UmVnaXN0ZXIgeyBudWxscHRyIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDIwNDAzOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzUxLDcgKzc1MSw3IEBAIFJlZ2lzdGVySUQqIEV2YWxGdW5jdGlvbkNh
bGxOb2RlOjplbWl0QnkKICAgICAvLyAgICAgICBldmFsKCJ0aGlzLmlkID0gJ0InIik7CiAgICAg
Ly8gICAgfQogICAgIC8vIH0KLSAgICBpZiAoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBnZW5lcmF0b3IubmVlZHNUb1VwZGF0ZUFycm93
RnVuY3Rpb25Db250ZXh0KCkgJiYgZ2VuZXJhdG9yLmlzVGhpc1VzZWRJbklubmVyQXJyb3dGdW5j
dGlvbigpKQorICAgIGlmIChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpFeHRlbmRzICYmIGdlbmVyYXRvci5uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNv
bnRleHQoKSAmJiBnZW5lcmF0b3IuaXNUaGlzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpCiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZp
cm9ubWVudCgpOwogCiAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkuZXZhbCk7CkBAIC03ODUsMTEgKzc4NSwxMSBAQCBSZWdpc3Rl
cklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCCiAgICAgICAgIENhbGxBcmd1bWVudHMg
Y2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAKICAgICAgICAgQVNTRVJUKGdlbmVy
YXRvci5pc0NvbnN0cnVjdG9yKCkgfHwgZ2VuZXJhdG9yLmRlcml2ZWRDb250ZXh0VHlwZSgpID09
IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7Ci0gICAgICAg
IEFTU0VSVChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpE
ZXJpdmVkIHx8IGdlbmVyYXRvci5kZXJpdmVkQ29udGV4dFR5cGUoKSA9PSBEZXJpdmVkQ29udGV4
dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpOworICAgICAgICBBU1NFUlQoZ2VuZXJh
dG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyB8fCBnZW5l
cmF0b3IuZGVyaXZlZENvbnRleHRUeXBlKCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVk
Q29uc3RydWN0b3JDb250ZXh0KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCksIGdlbmVyYXRvci5uZXdUYXJnZXQoKSk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q29uc3RydWN0KHJldHVyblZhbHVlLmdldCgp
LCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAKLSAgICAgICAgYm9vbCBpc0NvbnN0cnVjdG9y
S2luZERlcml2ZWQgPSBnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JL
aW5kOjpEZXJpdmVkOworICAgICAgICBib29sIGlzQ29uc3RydWN0b3JLaW5kRGVyaXZlZCA9IGdl
bmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHM7CiAg
ICAgICAgIGJvb2wgZG9XZVVzZUFycm93RnVuY3Rpb25JbkNvbnN0cnVjdG9yID0gaXNDb25zdHJ1
Y3RvcktpbmREZXJpdmVkICYmIGdlbmVyYXRvci5uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNv
bnRleHQoKTsKIAogICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29u
dGV4dCgpIHx8IChkb1dlVXNlQXJyb3dGdW5jdGlvbkluQ29uc3RydWN0b3IgJiYgZ2VuZXJhdG9y
LmlzU3VwZXJDYWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpKQpAQCAtMzM2NCw3ICszMzY0
LDcgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZQogCiAgICAgICAg
IC8vIElmIHRoZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9u
ZS4KICAgICAgICAgaWYgKCFyZXR1cm5Ob2RlKSB7Ci0gICAgICAgICAgICBpZiAoZ2VuZXJhdG9y
LmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBnZW5lcmF0
b3IubmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgJiYgZ2VuZXJhdG9yLmlzU3Vw
ZXJDYWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpCisgICAgICAgICAgICBpZiAoZ2VuZXJh
dG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RXh0ZW5kcyAmJiBnZW5l
cmF0b3IubmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgJiYgZ2VuZXJhdG9yLmlz
U3VwZXJDYWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpCiAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7
IC8vIEFycm93IGZ1bmN0aW9uIGNhbiBpbnZva2UgJ3N1cGVyJyBpbiBjb25zdHJ1Y3RvciBhbmQg
YmVmb3JlIGxlYXZlIGNvbnN0cnVjdG9yIHdlIG5lZWQgbG9hZCAndGhpcycgZnJvbSBsZXhpY2Fs
IGFycm93IGZ1bmN0aW9uIGVudmlyb25tZW50CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJl
Z2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlz
UmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKQEAgLTM0
NjAsMTAgKzM0NjAsMzIgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2Rl
KAogICAgICAgICBtZXRhZGF0YS0+c2V0RWNtYU5hbWUoZWNtYU5hbWUoKSk7CiAgICAgICAgIG1l
dGFkYXRhLT5zZXRDbGFzc1NvdXJjZShtX2NsYXNzU291cmNlKTsKICAgICAgICAgY29uc3RydWN0
b3IgPSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2NvbnN0cnVjdG9yRXhwcmVzc2lvbik7Cisg
ICAgICAgIGlmIChtX2NsYXNzSGVyaXRhZ2UpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBpc0Rlcml2ZWRDb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0VW5hcnlPcChvcF9ub3QsIGlzRGVyaXZlZENvbnN0cnVj
dG9yLmdldCgpLAorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VW5hcnlPcChvcF9lcV9u
dWxsLCBpc0Rlcml2ZWRDb25zdHJ1Y3Rvci5nZXQoKSwgc3VwZXJjbGFzcy5nZXQoKSkpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGNvbnN0cnVjdG9yLmdldCgpLCBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmlzRGVyaXZlZENvbnN0cnVj
dG9yUHJpdmF0ZU5hbWUoKSwgaXNEZXJpdmVkQ29uc3RydWN0b3IuZ2V0KCksIFByb3BlcnR5Tm9k
ZTo6VW5rbm93bik7CisgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBjb25zdHJ1Y3Rv
ciA9IGdlbmVyYXRvci5lbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCksCi0gICAgICAgICAgICBtX2NsYXNzSGVyaXRhZ2UgPyBDb25zdHJ1Y3Rv
cktpbmQ6OkRlcml2ZWQgOiBDb25zdHJ1Y3RvcktpbmQ6OkJhc2UsCi0gICAgICAgICAgICBtX25h
bWUsIGVjbWFOYW1lKCksIG1fY2xhc3NTb3VyY2UpOworICAgICAgICBpZiAobV9jbGFzc0hlcml0
YWdlKSB7CisgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKGRzdCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcFJlZ2lzdGVyID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgUmVmUHRyPExhYmVsPiBzdXBl
cmNsYXNzSXNOdWxsTGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKKyAgICAgICAgICAgIFJl
ZlB0cjxMYWJlbD4gZG9uZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworCisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZ2VuZXJhdG9yLmVtaXRVbmFyeU9wKG9wX2VxX251bGws
IHRlbXBSZWdpc3Rlci5nZXQoKSwgc3VwZXJjbGFzcy5nZXQoKSksIHN1cGVyY2xhc3NJc051bGxM
YWJlbC5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5ld0RlZmF1bHRDb25zdHJ1
Y3Rvcihjb25zdHJ1Y3Rvci5nZXQoKSwgQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzLCBtX25hbWUs
IGVjbWFOYW1lKCksIG1fY2xhc3NTb3VyY2UpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRM
b2FkKHRlbXBSZWdpc3Rlci5nZXQoKSwganNCb29sZWFuKHRydWUpKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0SnVtcChkb25lLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoc3VwZXJjbGFzc0lzTnVsbExhYmVsLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yLmdldCgpLCBDb25zdHJ1Y3Rv
cktpbmQ6OkJhc2UsIG1fbmFtZSwgZWNtYU5hbWUoKSwgbV9jbGFzc1NvdXJjZSk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdExvYWQodGVtcFJlZ2lzdGVyLmdldCgpLCBqc0Jvb2xlYW4oZmFs
c2UpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoY29uc3RydWN0b3IuZ2V0KCksIGdl
bmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuaXNEZXJpdmVkQ29uc3RydWN0
b3JQcml2YXRlTmFtZSgpLCB0ZW1wUmVnaXN0ZXIuZ2V0KCksIFByb3BlcnR5Tm9kZTo6VW5rbm93
bik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGdlbmVyYXRv
ci5lbWl0TmV3RGVmYXVsdENvbnN0cnVjdG9yKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCksCisgICAgICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kOjpCYXNlLCBtX25hbWUsIGVjbWFO
YW1lKCksIG1fY2xhc3NTb3VyY2UpOworICAgICAgICB9CiAgICAgfQogCiAgICAgY29uc3QgYXV0
byYgcHJvcGVydHlOYW1lcyA9IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCShyZXZpc2lvbiAyMDQwMzgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyNCw3ICsyMjQsNyBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3Qg
CiAgICAgICAgIHNjb3BlLT5zZXRFdmFsQ29udGV4dFR5cGUoZXZhbENvbnRleHRUeXBlKTsKICAg
ICAKICAgICBpZiAoZGVyaXZlZENvbnRleHRUeXBlID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dCkgewotICAgICAgICBzY29wZS0+c2V0Q29uc3RydWN0b3JL
aW5kKENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCk7CisgICAgICAgIHNjb3BlLT5zZXRDb25zdHJ1
Y3RvcktpbmQoQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzKTsKICAgICAgICAgc2NvcGUtPnNldEV4
cGVjdGVkU3VwZXJCaW5kaW5nKFN1cGVyQmluZGluZzo6TmVlZGVkKTsKICAgICB9CiAgICAgCkBA
IC0yMTAxLDcgKzIxMDEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFy
c2VyCiAgICAgCiAgICAgICAgIGlmIChtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQgIT0gQ29uc3Ry
dWN0b3JLaW5kOjpOb25lKSB7CiAgICAgICAgICAgICBjb25zdHJ1Y3RvcktpbmQgPSBtX2RlZmF1
bHRDb25zdHJ1Y3RvcktpbmQ7Ci0gICAgICAgICAgICBleHBlY3RlZFN1cGVyQmluZGluZyA9IG1f
ZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgPyBTdXBl
ckJpbmRpbmc6Ok5lZWRlZCA6IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkOworICAgICAgICAgICAg
ZXhwZWN0ZWRTdXBlckJpbmRpbmcgPSBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3Ry
dWN0b3JLaW5kOjpFeHRlbmRzID8gU3VwZXJCaW5kaW5nOjpOZWVkZWQgOiBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZDsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBTdGFu
ZGFyZEZ1bmN0aW9uQm9keUJsb2NrOwpAQCAtMjMwMyw3ICsyMzAzLDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeAogICAgICAgICBwYXJlbnRDbGFzcyA9IHBhcnNl
TWVtYmVyRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UocGFyZW50Q2xh
c3MsICJDYW5ub3QgcGFyc2UgdGhlIHBhcmVudCBjbGFzcyBuYW1lIik7CiAgICAgfQotICAgIGNv
bnN0IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQgPSBwYXJlbnRDbGFzcyA/IENvbnN0
cnVjdG9yS2luZDo6RGVyaXZlZCA6IENvbnN0cnVjdG9yS2luZDo6QmFzZTsKKyAgICBjb25zdCBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kID0gcGFyZW50Q2xhc3MgPyBDb25zdHJ1Y3Rv
cktpbmQ6OkV4dGVuZHMgOiBDb25zdHJ1Y3RvcktpbmQ6OkJhc2U7CiAKICAgICBjb25zdW1lT3JG
YWlsKE9QRU5CUkFDRSwgIkV4cGVjdGVkIG9wZW5pbmcgJ3snIGF0IHRoZSBzdGFydCBvZiBhIGNs
YXNzIGJvZHkiKTsKIApAQCAtNDAxNyw3ICs0MDE3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZ1
bmN0aW9uU2NvcGUtPmNvbnN0cnVjdG9yS2luZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogY2xvc2VzdE9yZGluYXJ5RnVuY3Rpb25TY29wZS0+Y29uc3RydWN0b3JLaW5kKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGZ1bmN0aW9u
Q29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgInN1cGVyIGlzIG5vdCB2
YWxpZCBpbiB0aGlzIGNvbnRleHQiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW1h
bnRpY0ZhaWxJZlRydWUoZnVuY3Rpb25Db25zdHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5k
OjpEZXJpdmVkLCAic3VwZXIgaXMgbm90IHZhbGlkIGluIHRoaXMgY29udGV4dCIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShmdW5jdGlvbkNvbnN0cnVj
dG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMsICJzdXBlciBpcyBub3QgdmFsaWQg
aW4gdGhpcyBjb250ZXh0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTY29wZSgpLT5pc0Fy
cm93RnVuY3Rpb24oKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
TW9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ck1vZGVzLmgJKHJldmlzaW9uIDIwNDAzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyTW9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBlbnVtIGNs
YXNzIEpTUGFyc2VyU3RyaWN0TW9kZSB7IE5vdFN0cmljCiBlbnVtIGNsYXNzIEpTUGFyc2VyQnVp
bHRpbk1vZGUgeyBOb3RCdWlsdGluLCBCdWlsdGluIH07CiBlbnVtIGNsYXNzIEpTUGFyc2VyQ29k
ZVR5cGUgeyBQcm9ncmFtLCBGdW5jdGlvbiwgTW9kdWxlIH07CiAKLWVudW0gY2xhc3MgQ29uc3Ry
dWN0b3JLaW5kIHsgTm9uZSwgQmFzZSwgRGVyaXZlZCB9OworZW51bSBjbGFzcyBDb25zdHJ1Y3Rv
cktpbmQgeyBOb25lLCBCYXNlLCBFeHRlbmRzIH07CiBlbnVtIGNsYXNzIFN1cGVyQmluZGluZyB7
IE5lZWRlZCwgTm90TmVlZGVkIH07CiAKIGVudW0gRGVidWdnZXJNb2RlIHsgRGVidWdnZXJPZmYs
IERlYnVnZ2VyT24gfTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDAzOCkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA4LTAyICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIHVwZGF0ZSBhIGNsYXNz
IGV4dGVuZGluZyBudWxsIHcuci50IHRoZSBFUzcgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
S2VpdGggTWlsbGVyLgorCisgICAgICAgICoganMvY2xhc3Mtc3ludGF4LWV4dGVuZHMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGpzL2NsYXNzLXN5bnRheC1zdXBlci1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICoganMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1leHRlbmRzLmpzOgorICAgICAg
ICAqIGpzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtc3VwZXIuanM6CisKIDIwMTYtMDgtMDIg
IEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1vdmUgcGFyc2lu
ZyBvZiBvcGVyYXRvciBsZW5ndGggYXR0cmlidXRlcyB0byBNYXRoTUxPcGVyYXRvckVsZW1lbnQK
SW5kZXg6IExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1leHRlbmRzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZXh0ZW5kcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDIwNDAzOCkKKysrIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1l
eHRlbmRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDEwIEBAIFBB
U1MgT2JqZWN0LmdldFByb3RvdHlwZU9mKChjbGFzcyBleHRlbmQKIFBBU1MgbmV3IChjbGFzcyBl
eHRlbmRzIHVuZGVmaW5lZCB7IGNvbnN0cnVjdG9yICgpIHsgdGhpcyB9IH0pOjo6VHlwZUVycm9y
OiBUaGUgc3VwZXJjbGFzcyBpcyBub3QgYW4gb2JqZWN0LgogUEFTUyB4ID0gdW5kZWZpbmVkOyBu
ZXcgKGNsYXNzIGV4dGVuZHMgeCB7IGNvbnN0cnVjdG9yICgpIHsgc3VwZXIoKTsgfSB9KTo6OlR5
cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MgaXMgbm90IGFuIG9iamVjdC4KIFBBU1MgY2xhc3MgeCB7
fTsgbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvciAoKSB7IHJldHVybiBuZXcg
eDsgfSB9KSBpbnN0YW5jZW9mIHgKLVBBU1MgbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25z
dHJ1Y3RvciAoKSB7IHRoaXM7IH0gfSk6OjpSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1
bmluaXRpYWxpemVkIHZhcmlhYmxlLgorUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNv
bnN0cnVjdG9yICgpIHsgdGhpczsgfSB9KQogUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7
IGNvbnN0cnVjdG9yICgpIHsgc3VwZXIoKTsgfSB9KTo6OlR5cGVFcnJvcjogZnVuY3Rpb24gaXMg
bm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ3N1cGVyKCknKQogUEFTUyB4ID0ge307IG5l
dyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyByZXR1cm4geCB9IH0pOjo6
eAotUEFTUyB5ID0gMTI7IG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkg
eyByZXR1cm4geTsgfSB9KTo6OlR5cGVFcnJvcjogQ2Fubm90IHJldHVybiBhIG5vbi1vYmplY3Qg
dHlwZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNzLgorUEFTUyB5ID0gMTI7
IGNsYXNzIEMgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyByZXR1cm4geTsgfSB9OyBu
ZXcgQyBpbnN0YW5jZW9mIEM7CiBQQVNTIGNsYXNzIHgge307IG5ldyAoY2xhc3MgZXh0ZW5kcyBu
dWxsIHsgY29uc3RydWN0b3IgKCkgeyByZXR1cm4gbmV3IHg7IH0gfSkgaW5zdGFuY2VvZiB4CiBQ
QVNTIHggPSBudWxsOyBPYmplY3QuZ2V0UHJvdG90eXBlT2YoKGNsYXNzIGV4dGVuZHMgeCB7IH0p
LnByb3RvdHlwZSk6OjpudWxsCiBQQVNTIE9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihj
bGFzcyB7IH0pCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtc3VwZXItZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1zdXBlci1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDIwNDAzOCkKKysrIExheW91dFRlc3RzL2pzL2NsYXNzLXN5
bnRheC1zdXBlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEyICszMCwxMiBA
QCBQQVNTIHggPSB7IH07IG5ldyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgCiBQQVNTIHggaW5zdGFu
Y2VvZiBCYXNlCiBQQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7
IH0gfSk6OjpSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlh
YmxlLgogUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgQmFzZSB7IGNvbnN0cnVjdG9yKCkgeyByZXR1
cm4gMTsgfSB9KTo6OlR5cGVFcnJvcjogQ2Fubm90IHJldHVybiBhIG5vbi1vYmplY3QgdHlwZSBp
biB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNzLgotUEFTUyBuZXcgKGNsYXNzIGV4
dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gdW5kZWZpbmVkIH0gfSk6OjpSZWZl
cmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLgorUEFTUyBu
ZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gdW5kZWZpbmVk
IH0gfSkKIFBBU1MgbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgc3Vw
ZXIoKTsgcmV0dXJuIHVuZGVmaW5lZCB9IH0pOjo6VHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3Qg
YSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnc3VwZXIoKScpCiBQQVNTIHggPSB7IH07IG5ldyAo
Y2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiB4IH0gfSk7Ojo6eAog
UEFTUyB4IGluc3RhbmNlb2YgT2JqZWN0Ci1QQVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsg
Y29uc3RydWN0b3IoKSB7IH0gfSk6OjpSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmlu
aXRpYWxpemVkIHZhcmlhYmxlLgotUEFTUyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0
cnVjdG9yKCkgeyByZXR1cm4gMTsgfSB9KTo6OlR5cGVFcnJvcjogQ2Fubm90IHJldHVybiBhIG5v
bi1vYmplY3QgdHlwZSBpbiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZXJpdmVkIGNsYXNzLgorUEFT
UyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyB9IH0pCitQQVNTIG5l
dyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiAxOyB9IH0pCiBQ
QVNTIG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCkgfSB9
KTo6OlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcg
J3N1cGVyKCknKQogUEFTUyBuZXcgKGNsYXNzIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCkgfSB9
KTo6OlN5bnRheEVycm9yOiBzdXBlciBpcyBub3QgdmFsaWQgaW4gdGhpcyBjb250ZXh0LgogUEFT
UyBmdW5jdGlvbiB4KCkgeyBzdXBlcigpOyB9Ojo6U3ludGF4RXJyb3I6IHN1cGVyIGlzIG5vdCB2
YWxpZCBpbiB0aGlzIGNvbnRleHQuCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
Y2xhc3Mtc3ludGF4LWV4dGVuZHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL2NsYXNzLXN5bnRheC1leHRlbmRzLmpzCShyZXZpc2lvbiAyMDQwMzgpCisrKyBM
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LWV4dGVuZHMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTExNSwxMCArMTE1LDEwIEBAIHNob3VsZEJlKCdPYmplY3QuZ2V0UHJvdG90
eXBlT2YoKGNsYXNzIGUKIHNob3VsZFRocm93KCduZXcgKGNsYXNzIGV4dGVuZHMgdW5kZWZpbmVk
IHsgY29uc3RydWN0b3IgKCkgeyB0aGlzIH0gfSknLCAnIlR5cGVFcnJvcjogVGhlIHN1cGVyY2xh
c3MgaXMgbm90IGFuIG9iamVjdC4iJyk7CiBzaG91bGRUaHJvdygneCA9IHVuZGVmaW5lZDsgbmV3
IChjbGFzcyBleHRlbmRzIHggeyBjb25zdHJ1Y3RvciAoKSB7IHN1cGVyKCk7IH0gfSknLCAnIlR5
cGVFcnJvcjogVGhlIHN1cGVyY2xhc3MgaXMgbm90IGFuIG9iamVjdC4iJyk7CiBzaG91bGRCZVRy
dWUgKCdjbGFzcyB4IHt9OyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yICgp
IHsgcmV0dXJuIG5ldyB4OyB9IH0pIGluc3RhbmNlb2YgeCcpOwotc2hvdWxkVGhyb3coJ25ldyAo
Y2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyB0aGlzOyB9IH0pJywgJyJSZWZl
cmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiInKTsKK3No
b3VsZE5vdFRocm93KCduZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yICgpIHsg
dGhpczsgfSB9KScpOwogc2hvdWxkVGhyb3coJ25ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29u
c3RydWN0b3IgKCkgeyBzdXBlcigpOyB9IH0pJywgJyJUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5v
dCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nIFwnc3VwZXIoKVwnKSInKTsKIHNob3VsZEJlKCd4
ID0ge307IG5ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IgKCkgeyByZXR1cm4g
eCB9IH0pJywgJ3gnKTsKLXNob3VsZFRocm93KCd5ID0gMTI7IG5ldyAoY2xhc3MgZXh0ZW5kcyBu
dWxsIHsgY29uc3RydWN0b3IgKCkgeyByZXR1cm4geTsgfSB9KScsICciVHlwZUVycm9yOiBDYW5u
b3QgcmV0dXJuIGEgbm9uLW9iamVjdCB0eXBlIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBhIGRlcml2
ZWQgY2xhc3MuIicpOworc2hvdWxkQmVUcnVlKCd5ID0gMTI7IGNsYXNzIEMgZXh0ZW5kcyBudWxs
IHsgY29uc3RydWN0b3IgKCkgeyByZXR1cm4geTsgfSB9OyBuZXcgQyBpbnN0YW5jZW9mIEM7Jywg
JyJUeXBlRXJyb3I6IENhbm5vdCByZXR1cm4gYSBub24tb2JqZWN0IHR5cGUgaW4gdGhlIGNvbnN0
cnVjdG9yIG9mIGEgZGVyaXZlZCBjbGFzcy4iJyk7CiBzaG91bGRCZVRydWUgKCdjbGFzcyB4IHt9
OyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yICgpIHsgcmV0dXJuIG5ldyB4
OyB9IH0pIGluc3RhbmNlb2YgeCcpOwogc2hvdWxkQmUoJ3ggPSBudWxsOyBPYmplY3QuZ2V0UHJv
dG90eXBlT2YoKGNsYXNzIGV4dGVuZHMgeCB7IH0pLnByb3RvdHlwZSknLCAnbnVsbCcpOwogc2hv
dWxkQmVUcnVlKCdPYmplY3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoY2xhc3MgeyB9KScpOwpJ
bmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1zdXBlci5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LXN1
cGVyLmpzCShyZXZpc2lvbiAyMDQwMzgpCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
Y2xhc3Mtc3ludGF4LXN1cGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTIgKzExMywxMiBA
QCBzaG91bGRCZSgneCA9IHsgfTsgbmV3IChjbGFzcyBleHRlbmRzIEJhCiBzaG91bGRCZUZhbHNl
KCd4IGluc3RhbmNlb2YgQmFzZScpOwogc2hvdWxkVGhyb3coJ25ldyAoY2xhc3MgZXh0ZW5kcyBC
YXNlIHsgY29uc3RydWN0b3IoKSB7IH0gfSknLCAnIlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNj
ZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIicpOwogc2hvdWxkVGhyb3coJ25ldyAoY2xhc3Mg
ZXh0ZW5kcyBCYXNlIHsgY29uc3RydWN0b3IoKSB7IHJldHVybiAxOyB9IH0pJywgJyJUeXBlRXJy
b3I6IENhbm5vdCByZXR1cm4gYSBub24tb2JqZWN0IHR5cGUgaW4gdGhlIGNvbnN0cnVjdG9yIG9m
IGEgZGVyaXZlZCBjbGFzcy4iJyk7Ci1zaG91bGRUaHJvdygnbmV3IChjbGFzcyBleHRlbmRzIG51
bGwgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHVuZGVmaW5lZCB9IH0pJyk7CitzaG91bGROb3RU
aHJvdygnbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHVu
ZGVmaW5lZCB9IH0pJyk7CiBzaG91bGRUaHJvdygnbmV3IChjbGFzcyBleHRlbmRzIG51bGwgeyBj
b25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgcmV0dXJuIHVuZGVmaW5lZCB9IH0pJywgJyJUeXBlRXJy
b3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nIFwnc3VwZXIoKVwn
KSInKTsKIHNob3VsZEJlKCd4ID0geyB9OyBuZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0
cnVjdG9yKCkgeyByZXR1cm4geCB9IH0pOycsICd4Jyk7CiBzaG91bGRCZVRydWUoJ3ggaW5zdGFu
Y2VvZiBPYmplY3QnKTsKLXNob3VsZFRocm93KCduZXcgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNv
bnN0cnVjdG9yKCkgeyB9IH0pJywgJyJSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmlu
aXRpYWxpemVkIHZhcmlhYmxlLiInKTsKLXNob3VsZFRocm93KCduZXcgKGNsYXNzIGV4dGVuZHMg
bnVsbCB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gMTsgfSB9KScsICciVHlwZUVycm9yOiBDYW5u
b3QgcmV0dXJuIGEgbm9uLW9iamVjdCB0eXBlIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBhIGRlcml2
ZWQgY2xhc3MuIicpOworc2hvdWxkTm90VGhyb3coJ25ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsg
Y29uc3RydWN0b3IoKSB7IH0gfSknKTsKK3Nob3VsZE5vdFRocm93KCduZXcgKGNsYXNzIGV4dGVu
ZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gMTsgfSB9KScpOwogc2hvdWxkVGhyb3co
J25ldyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCkgfSB9KScs
ICciVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyBc
J3N1cGVyKClcJykiJyk7CiBzaG91bGRUaHJvdygnbmV3IChjbGFzcyB7IGNvbnN0cnVjdG9yKCkg
eyBzdXBlcigpIH0gfSknLCAnIlN5bnRheEVycm9yOiBzdXBlciBpcyBub3QgdmFsaWQgaW4gdGhp
cyBjb250ZXh0LiInKTsKIHNob3VsZFRocm93KCdmdW5jdGlvbiB4KCkgeyBzdXBlcigpOyB9Jywg
JyJTeW50YXhFcnJvcjogc3VwZXIgaXMgbm90IHZhbGlkIGluIHRoaXMgY29udGV4dC4iJyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>