<?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>32212</bug_id>
          
          <creation_ts>2009-12-07 00:30:07 -0800</creation_ts>
          <short_desc>[bzt] Implement abstract Steps</short_desc>
          <delta_ts>2009-12-09 00:21:28 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>169214</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-07 00:30:07 -0800</bug_when>
    <thetext>We need to abstract our steps so we can sequence them more easily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169215</commentid>
    <comment_count>1</comment_count>
      <attachid>44391</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-07 00:31:02 -0800</bug_when>
    <thetext>Created attachment 44391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169915</commentid>
    <comment_count>2</comment_count>
      <attachid>44514</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-09 00:04:34 -0800</bug_when>
    <thetext>Created attachment 44514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169916</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-09 00:09:04 -0800</bug_when>
    <thetext>Attachment 44514 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Traceback (most recent call last):
  File &quot;WebKitTools/Scripts/check-webkit-style&quot;, line 40, in &lt;module&gt;
    from modules.scm import detect_scm_system
  File &quot;/home/abarth/git/webkit-style/WebKitTools/Scripts/modules/scm.py&quot;, line 38, in &lt;module&gt;
    from modules.executive import run_command, ScriptError, default_error_handler, ignore_error
ImportError: No module named executive</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169917</commentid>
    <comment_count>4</comment_count>
      <attachid>44514</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-09 00:16:42 -0800</bug_when>
    <thetext>Comment on attachment 44514
Patch

Sigh.  I guess I&apos;ll trust you on this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169918</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-09 00:21:06 -0800</bug_when>
    <thetext>Committed r51889: &lt;http://trac.webkit.org/changeset/51889&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169919</commentid>
    <comment_count>6</comment_count>
      <attachid>44514</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-09 00:21:28 -0800</bug_when>
    <thetext>Comment on attachment 44514
Patch

Rejecting patch 44514 from commit-queue.

Failed to run &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, &apos;--reviewer&apos;, &apos;Eric Seidel&apos;, &apos;--force&apos;]&quot; exit_code: 2
Last 500 characters of output:
s/processutils.py
|deleted file mode 100644
|index 7a681bf..0000000
|--- WebKitTools/Scripts/modules/processutils.py
|+++ WebKitTools/Scripts/modules/processutils.py
--------------------------
No file to patch.  Skipping patch.
1 out of 1 hunk ignored
fatal: pathspec &apos;WebKitTools/Scripts/modules/processutils.py&apos; did not match any files
Failed to git rm --force WebKitTools/Scripts/modules/processutils.py. at /Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply line 487, &lt;&gt; line 806.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44391</attachid>
            <date>2009-12-07 00:31:02 -0800</date>
            <delta_ts>2009-12-09 00:04:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32212-20091207003100.patch</filename>
            <type>text/plain</type>
            <size>23633</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWlsZHN0ZXBzLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkc3RlcHMucHkKaW5kZXggYzU2NjQwMS4u
ZjJkMmIyMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkc3Rl
cHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkc3RlcHMucHkKQEAg
LTM0LDcxICszNCwyMjMgQEAgZnJvbSBtb2R1bGVzLmxvZ2dpbmcgaW1wb3J0IGxvZywgZXJyb3IK
IGZyb20gbW9kdWxlcy5wcm9jZXNzdXRpbHMgaW1wb3J0IHJ1bl9hbmRfdGhyb3dfaWZfZmFpbAog
ZnJvbSBtb2R1bGVzLndlYmtpdHBvcnQgaW1wb3J0IFdlYktpdFBvcnQKIAotY2xhc3MgQnVpbGRT
dGVwczoKLSAgICAjIEZJWE1FOiBUaGUgb3B0aW9ucyBzaG91bGQgcmVhbGx5IGxpdmUgb24gZWFj
aCAiU3RlcCIgb2JqZWN0LgotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgY2xlYW5pbmdfb3B0
aW9ucygpOgorCitjbGFzcyBDb21tYW5kT3B0aW9ucyhvYmplY3QpOgorICAgIGZvcmNlX2NsZWFu
ID0gbWFrZV9vcHRpb24oIi0tZm9yY2UtY2xlYW4iLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0
PSJmb3JjZV9jbGVhbiIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IkNsZWFuIHdvcmtpbmcgZGlyZWN0
b3J5IGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIChyZW1vdmVzIGxvY2FsIGNoYW5nZXMgYW5kIGNv
bW1pdHMpIikKKyAgICBjbGVhbiA9IG1ha2Vfb3B0aW9uKCItLW5vLWNsZWFuIiwgYWN0aW9uPSJz
dG9yZV9mYWxzZSIsIGRlc3Q9ImNsZWFuIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEb24ndCBjaGVj
ayBpZiB0aGUgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4gYmVmb3JlIGFwcGx5aW5nIHBhdGNo
ZXMiKQorICAgIGNoZWNrX2J1aWxkZXJzID0gbWFrZV9vcHRpb24oIi0taWdub3JlLWJ1aWxkZXJz
IiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNoZWNrX2J1aWxkZXJzIiwgZGVmYXVsdD1U
cnVlLCBoZWxwPSJEb24ndCBjaGVjayB0byBzZWUgaWYgdGhlIGJ1aWxkLndlYmtpdC5vcmcgYnVp
bGRlcnMgYXJlIGdyZWVuIGJlZm9yZSBsYW5kaW5nLiIpCisgICAgcXVpZXQgPSBtYWtlX29wdGlv
bigiLS1xdWlldCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InF1aWV0IiwgZGVmYXVsdD1G
YWxzZSwgaGVscD0iUHJvZHVjZSBsZXNzIGNvbnNvbGUgb3V0cHV0LiIpCisgICAgbm9uX2ludGVy
YWN0aXZlID0gbWFrZV9vcHRpb24oIi0tbm9uLWludGVyYWN0aXZlIiwgYWN0aW9uPSJzdG9yZV90
cnVlIiwgZGVzdD0ibm9uX2ludGVyYWN0aXZlIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iTmV2ZXIg
cHJvbXB0IHRoZSB1c2VyLCBmYWlsIGFzIGZhc3QgYXMgcG9zc2libGUuIikKKyAgICBwYXJlbnRf
Y29tbWFuZCA9IG1ha2Vfb3B0aW9uKCItLXBhcmVudC1jb21tYW5kIiwgYWN0aW9uPSJzdG9yZSIs
IGRlc3Q9InBhcmVudF9jb21tYW5kIiwgZGVmYXVsdD1Ob25lLCBoZWxwPSIoSW50ZXJuYWwpIFRo
ZSBjb21tYW5kIHRoYXQgc3Bhd25lZCB0aGlzIGluc3RhbmNlLiIpCisgICAgdXBkYXRlID0gbWFr
ZV9vcHRpb24oIi0tbm8tdXBkYXRlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9InVwZGF0
ZSIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9uJ3QgdXBkYXRlIHRoZSB3b3JraW5nIGRpcmVjdG9y
eS4iKQorICAgIGJ1aWxkID0gbWFrZV9vcHRpb24oIi0tbm8tYnVpbGQiLCBhY3Rpb249InN0b3Jl
X2ZhbHNlIiwgZGVzdD0iYnVpbGQiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkNvbW1pdCB3aXRob3V0
IGJ1aWxkaW5nIGZpcnN0LCBpbXBsaWVzIC0tbm8tdGVzdC4iKQorICAgIHRlc3QgPSBtYWtlX29w
dGlvbigiLS1uby10ZXN0IiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9InRlc3QiLCBkZWZh
dWx0PVRydWUsIGhlbHA9IkNvbW1pdCB3aXRob3V0IHJ1bm5pbmcgcnVuLXdlYmtpdC10ZXN0cy4i
KQorICAgIGNsb3NlX2J1ZyA9IG1ha2Vfb3B0aW9uKCItLW5vLWNsb3NlIiwgYWN0aW9uPSJzdG9y
ZV9mYWxzZSIsIGRlc3Q9ImNsb3NlX2J1ZyIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iTGVhdmUgYnVn
IG9wZW4gYWZ0ZXIgbGFuZGluZy4iKQorICAgIHBvcnQgPSBtYWtlX29wdGlvbigiLS1wb3J0Iiwg
YWN0aW9uPSJzdG9yZSIsIGRlc3Q9InBvcnQiLCBkZWZhdWx0PU5vbmUsIGhlbHA9IlNwZWNpZnkg
YSBwb3J0IChlLmcuLCBtYWMsIHF0LCBndGssIC4uLikuIikKKworCitjbGFzcyBBYnN0cmFjdFN0
ZXAob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdG9vbCwgb3B0aW9ucyk6CisgICAg
ICAgIHNlbGYuX3Rvb2wgPSB0b29sCisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisg
ICAgICAgIHNlbGYuX3BvcnQgPSBOb25lCisKKyAgICBkZWYgX3J1bl9zY3JpcHQoY2xzLCBzY3Jp
cHRfbmFtZSwgcXVpZXQ9RmFsc2UsIHBvcnQ9V2ViS2l0UG9ydCk6CisgICAgICAgIGxvZygiUnVu
bmluZyAlcyIgJSBzY3JpcHRfbmFtZSkKKyAgICAgICAgcnVuX2FuZF90aHJvd19pZl9mYWlsKHBv
cnQuc2NyaXB0X3BhdGgoc2NyaXB0X25hbWUpLCBxdWlldCkKKworICAgICMgRklYTUU6IFRoZSBw
b3J0IHNob3VsZCBsaXZlIG9uIHRoZSB0b29sLgorICAgIGRlZiBwb3J0KHNlbGYpOgorICAgICAg
ICBpZiBzZWxmLl9wb3J0OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQKKyAgICAgICAg
c2VsZi5fcG9ydCA9IFdlYktpdFBvcnQucG9ydChzZWxmLl9vcHRpb25zLnBvcnQpCisgICAgICAg
IHJldHVybiBzZWxmLl9wb3J0CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9ucyhj
bHMpOgorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBydW4oc2VsZiwgdG9vbCk6CisgICAg
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50
IgorCisKK2NsYXNzIEFic3RyYWN0UGF0Y2hTdGVwKEFic3RyYWN0U3RlcCk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHRvb2wsIG9wdGlvbnMsIHBhdGNoKToKKyAgICAgICAgQWJzdHJhY3RTdGVw
Ll9faW5pdF9fKHNlbGYsIHRvb2wsIG9wdGlvbnMpCisgICAgICAgIHNlbGYuX3BhdGNoID0gcGF0
Y2gKKworCitjbGFzcyBQcmVwYXJlQ2hhbmdlbG9nU3RlcChBYnN0cmFjdFN0ZXApOgorICAgIGRl
ZiBydW4oc2VsZik6CisgICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoInByZXBhcmUtQ2hhbmdlTG9n
IikKKworCitjbGFzcyBDbGVhbldvcmtpbmdEaXJlY3RvcnlTdGVwKEFic3RyYWN0U3RlcCk6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvb2wsIG9wdGlvbnMsIGFsbG93X2xvY2FsX2NvbW1pdHM9
RmFsc2UpOgorICAgICAgICBBYnN0cmFjdFN0ZXAuX19pbml0X18oc2VsZiwgdG9vbCwgb3B0aW9u
cykKKyAgICAgICAgc2VsZi5fYWxsb3dfbG9jYWxfY29tbWl0cyA9IGFsbG93X2xvY2FsX2NvbW1p
dHMKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvcHRpb25zKGNscyk6CiAgICAgICAgIHJl
dHVybiBbCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1mb3JjZS1jbGVhbiIsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsIGRlc3Q9ImZvcmNlX2NsZWFuIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iQ2xl
YW4gd29ya2luZyBkaXJlY3RvcnkgYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMgKHJlbW92ZXMgbG9j
YWwgY2hhbmdlcyBhbmQgY29tbWl0cykiKSwKLSAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW5v
LWNsZWFuIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNsZWFuIiwgZGVmYXVsdD1UcnVl
LCBoZWxwPSJEb24ndCBjaGVjayBpZiB0aGUgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4gYmVm
b3JlIGFwcGx5aW5nIHBhdGNoZXMiKSwKKyAgICAgICAgICAgIENvbW1hbmRPcHRpb25zLmZvcmNl
X2NsZWFuLAorICAgICAgICAgICAgQ29tbWFuZE9wdGlvbnMuY2xlYW4sCiAgICAgICAgIF0KIAot
ICAgICMgRklYTUU6IFRoZXNlIGRpc3RpbmN0aW9ucyBhcmUgYm9ndXMuICBXZSBuZWVkIGEgYmV0
dGVyIG1vZGVsIGZvciBoYW5kbGluZyBvcHRpb25zLgotICAgIEBzdGF0aWNtZXRob2QKLSAgICBk
ZWYgYnVpbGRfb3B0aW9ucygpOgorICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgIG9zLmNoZGly
KHNlbGYuX3Rvb2wuX3NjbS5jaGVja291dF9yb290KQorICAgICAgICBpZiBub3Qgc2VsZi5fYWxs
b3dfbG9jYWxfY29tbWl0czoKKyAgICAgICAgICAgIHNlbGYuX3Rvb2wuc2NtKCkuZW5zdXJlX25v
X2xvY2FsX2NvbW1pdHMoc2VsZi5fb3B0aW9ucy5mb3JjZV9jbGVhbikKKyAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy5jbGVhbjoKKyAgICAgICAgICAgIHNlbGYuX3Rvb2wuc2NtKCkuZW5zdXJlX2Ns
ZWFuX3dvcmtpbmdfZGlyZWN0b3J5KGZvcmNlX2NsZWFuPXNlbGYuX29wdGlvbnMuZm9yY2VfY2xl
YW4pCisKKworY2xhc3MgVXBkYXRlU3RlcChBYnN0cmFjdFN0ZXApOgorICAgIEBjbGFzc21ldGhv
ZAorICAgIGRlZiBvcHRpb25zKGNscyk6CiAgICAgICAgIHJldHVybiBbCi0gICAgICAgICAgICBt
YWtlX29wdGlvbigiLS1pZ25vcmUtYnVpbGRlcnMiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVz
dD0iY2hlY2tfYnVpbGRlcnMiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvbid0IGNoZWNrIHRvIHNl
ZSBpZiB0aGUgYnVpbGQud2Via2l0Lm9yZyBidWlsZGVycyBhcmUgZ3JlZW4gYmVmb3JlIGxhbmRp
bmcuIiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1xdWlldCIsIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIsIGRlc3Q9InF1aWV0IiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iUHJvZHVjZSBsZXNzIGNv
bnNvbGUgb3V0cHV0LiIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm9uLWludGVyYWN0
aXZlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ibm9uX2ludGVyYWN0aXZlIiwgZGVmYXVs
dD1GYWxzZSwgaGVscD0iTmV2ZXIgcHJvbXB0IHRoZSB1c2VyLCBmYWlsIGFzIGZhc3QgYXMgcG9z
c2libGUuIiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1wYXJlbnQtY29tbWFuZCIsIGFj
dGlvbj0ic3RvcmUiLCBkZXN0PSJwYXJlbnRfY29tbWFuZCIsIGRlZmF1bHQ9Tm9uZSwgaGVscD0i
KEludGVybmFsKSBUaGUgY29tbWFuZCB0aGF0IHNwYXduZWQgdGhpcyBpbnN0YW5jZS4iKSwKLSAg
ICAgICAgXSArIFdlYktpdFBvcnQucG9ydF9vcHRpb25zKCkKKyAgICAgICAgICAgIENvbW1hbmRP
cHRpb25zLnVwZGF0ZSwKKyAgICAgICAgICAgIENvbW1hbmRPcHRpb25zLnBvcnQsCisgICAgICAg
IF0KIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgbGFuZF9vcHRpb25zKCk6CisgICAgZGVm
IHJ1bihzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMudXBkYXRlOgorICAgICAg
ICAgICAgcmV0dXJuCisgICAgICAgIGxvZygiVXBkYXRpbmcgd29ya2luZyBkaXJlY3RvcnkiKQor
ICAgICAgICBydW5fYW5kX3Rocm93X2lmX2ZhaWwoc2VsZi5wb3J0KCkudXBkYXRlX3dlYmtpdF9j
b21tYW5kKCkpCisKKworY2xhc3MgQXBwbHlQYXRjaFN0ZXAoQWJzdHJhY3RQYXRjaFN0ZXApOgor
ICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvcHRpb25zKGNscyk6CiAgICAgICAgIHJldHVybiBb
Ci0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby11cGRhdGUiLCBhY3Rpb249InN0b3JlX2Zh
bHNlIiwgZGVzdD0idXBkYXRlIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEb24ndCB1cGRhdGUgdGhl
IHdvcmtpbmcgZGlyZWN0b3J5LiIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tYnVp
bGQiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0iYnVpbGQiLCBkZWZhdWx0PVRydWUsIGhl
bHA9IkNvbW1pdCB3aXRob3V0IGJ1aWxkaW5nIGZpcnN0LCBpbXBsaWVzIC0tbm8tdGVzdC4iKSwK
LSAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW5vLXRlc3QiLCBhY3Rpb249InN0b3JlX2ZhbHNl
IiwgZGVzdD0idGVzdCIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iQ29tbWl0IHdpdGhvdXQgcnVubmlu
ZyBydW4td2Via2l0LXRlc3RzLiIpLAotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tY2xv
c2UiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0iY2xvc2VfYnVnIiwgZGVmYXVsdD1UcnVl
LCBoZWxwPSJMZWF2ZSBidWcgb3BlbiBhZnRlciBsYW5kaW5nLiIpLAorICAgICAgICAgICAgQ29t
bWFuZE9wdGlvbnMubm9uX2ludGVyYWN0aXZlLAogICAgICAgICBdCiAKLSAgICBkZWYgX3J1bl9z
Y3JpcHQoY2xzLCBzY3JpcHRfbmFtZSwgcXVpZXQ9RmFsc2UsIHBvcnQ9V2ViS2l0UG9ydCk6Ci0g
ICAgICAgIGxvZygiUnVubmluZyAlcyIgJSBzY3JpcHRfbmFtZSkKLSAgICAgICAgcnVuX2FuZF90
aHJvd19pZl9mYWlsKHBvcnQuc2NyaXB0X3BhdGgoc2NyaXB0X25hbWUpLCBxdWlldCkKKyAgICBk
ZWYgcnVuKHNlbGYpOgorICAgICAgICBsb2coIlByb2Nlc3NpbmcgcGF0Y2ggJXMgZnJvbSBidWcg
JXMuIiAlIChzZWxmLl9wYXRjaFsiaWQiXSwgc2VsZi5fcGF0Y2hbImJ1Z19pZCJdKSkKKyAgICAg
ICAgc2VsZi5fdG9vbC5zY20oKS5hcHBseV9wYXRjaChzZWxmLl9wYXRjaCwgZm9yY2U9c2VsZi5f
b3B0aW9ucy5ub25faW50ZXJhY3RpdmUpCiAKLSAgICBkZWYgcHJlcGFyZV9jaGFuZ2Vsb2coc2Vs
Zik6Ci0gICAgICAgIHNlbGYucnVuX3NjcmlwdCgicHJlcGFyZS1DaGFuZ2VMb2ciKQogCi0gICAg
ZGVmIGNsZWFuX3dvcmtpbmdfZGlyZWN0b3J5KHNlbGYsIHNjbSwgb3B0aW9ucywgYWxsb3dfbG9j
YWxfY29tbWl0cz1GYWxzZSk6Ci0gICAgICAgIG9zLmNoZGlyKHNjbS5jaGVja291dF9yb290KQot
ICAgICAgICBpZiBub3QgYWxsb3dfbG9jYWxfY29tbWl0czoKLSAgICAgICAgICAgIHNjbS5lbnN1
cmVfbm9fbG9jYWxfY29tbWl0cyhvcHRpb25zLmZvcmNlX2NsZWFuKQotICAgICAgICBpZiBvcHRp
b25zLmNsZWFuOgotICAgICAgICAgICAgc2NtLmVuc3VyZV9jbGVhbl93b3JraW5nX2RpcmVjdG9y
eShmb3JjZV9jbGVhbj1vcHRpb25zLmZvcmNlX2NsZWFuKQorY2xhc3MgRW5zdXJlQnVpbGRlcnNB
cmVHcmVlblN0ZXAoQWJzdHJhY3RTdGVwKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb3B0
aW9ucyhjbHMpOgorICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgQ29tbWFuZE9wdGlvbnMu
Y2hlY2tfYnVpbGRlcnMsCisgICAgICAgIF0KKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAg
IGlmIG5vdCBzZWxmLl9vcHRpb25zLmNoZWNrX2J1aWxkZXJzOgorICAgICAgICAgICAgcmV0dXJu
CisgICAgICAgIGlmIG5vdCBzZWxmLl90b29sLmJ1aWxkYm90LmNvcmVfYnVpbGRlcnNfYXJlX2dy
ZWVuKCk6CisgICAgICAgICAgICBlcnJvcigiQnVpbGRlcnMgYXQgJXMgYXJlIHJlZCwgcGxlYXNl
IGRvIG5vdCBjb21taXQuICBQYXNzIC0taWdub3JlLWJ1aWxkZXJzIHRvIGJ5cGFzcyB0aGlzIGNo
ZWNrLiIgJSAoc2VsZi5fdG9vbC5idWlsZGJvdC5idWlsZGJvdF9ob3N0KSkKIAotICAgIGRlZiB1
cGRhdGUoc2VsZiwgcG9ydD1XZWJLaXRQb3J0KToKLSAgICAgICAgbG9nKCJVcGRhdGluZyB3b3Jr
aW5nIGRpcmVjdG9yeSIpCi0gICAgICAgIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbChwb3J0LnVwZGF0
ZV93ZWJraXRfY29tbWFuZCgpKQogCi0gICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCBsYXVuY2hfc2Fm
YXJpLCBmYWlsX2Zhc3Q9RmFsc2UsIHF1aWV0PUZhbHNlLCBwb3J0PVdlYktpdFBvcnQpOgotICAg
ICAgICBhcmdzID0gcG9ydC5ydW5fd2Via2l0X3Rlc3RzX2NvbW1hbmQoKQotICAgICAgICBpZiBu
b3QgbGF1bmNoX3NhZmFyaToKK2NsYXNzIEJ1aWxkU3RlcChBYnN0cmFjdFN0ZXApOgorICAgIEBj
bGFzc21ldGhvZAorICAgIGRlZiBvcHRpb25zKGNscyk6CisgICAgICAgIHJldHVybiBbCisgICAg
ICAgICAgICBDb21tYW5kT3B0aW9ucy5idWlsZCwKKyAgICAgICAgICAgIENvbW1hbmRPcHRpb25z
LnF1aWV0LAorICAgICAgICBdCisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBpZiBub3Qg
c2VsZi5fb3B0aW9ucy5idWlsZDoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBsb2coIkJ1
aWxkaW5nIFdlYktpdCIpCisgICAgICAgIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbChzZWxmLnBvcnQo
KS5idWlsZF93ZWJraXRfY29tbWFuZCgpLCBzZWxmLl9vcHRpb25zLnF1aWV0KQorCisKK2NsYXNz
IENoZWNrU3R5bGVTdGVwKEFic3RyYWN0U3RlcCk6CisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAg
ICAgc2VsZi5fcnVuX3NjcmlwdCgiY2hlY2std2Via2l0LXN0eWxlIikKKworCitjbGFzcyBSdW5U
ZXN0c1N0ZXAoQWJzdHJhY3RTdGVwKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9u
cyhjbHMpOgorICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgQ29tbWFuZE9wdGlvbnMuYnVp
bGQsCisgICAgICAgICAgICBDb21tYW5kT3B0aW9ucy50ZXN0LAorICAgICAgICAgICAgQ29tbWFu
ZE9wdGlvbnMubm9uX2ludGVyYWN0aXZlLAorICAgICAgICAgICAgQ29tbWFuZE9wdGlvbnMucXVp
ZXQsCisgICAgICAgICAgICBDb21tYW5kT3B0aW9ucy5wb3J0LAorICAgICAgICBdCisKKyAgICBk
ZWYgcnVuKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5idWlsZDoKKyAgICAg
ICAgICAgIHJldHVybgorICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy50ZXN0OgorICAgICAg
ICAgICAgcmV0dXJuCisgICAgICAgIGFyZ3MgPSBzZWxmLnBvcnQoKS5ydW5fd2Via2l0X3Rlc3Rz
X2NvbW1hbmQoKQorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm5vbl9pbnRlcmFjdGl2ZToKICAg
ICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLW5vLWxhdW5jaC1zYWZhcmkiKQotICAgICAgICBpZiBx
dWlldDoKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLXF1aWV0IikKLSAgICAgICAgaWYgZmFp
bF9mYXN0OgogICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tZXhpdC1hZnRlci1uLWZhaWx1cmVz
PTEiKQorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnF1aWV0OgorICAgICAgICAgICAgYXJncy5h
cHBlbmQoIi0tcXVpZXQiKQogICAgICAgICBydW5fYW5kX3Rocm93X2lmX2ZhaWwoYXJncykKIAot
ICAgIGRlZiBlbnN1cmVfYnVpbGRlcnNfYXJlX2dyZWVuKHNlbGYsIGJ1aWxkYm90LCBvcHRpb25z
KToKLSAgICAgICAgaWYgbm90IG9wdGlvbnMuY2hlY2tfYnVpbGRlcnMgb3IgYnVpbGRib3QuY29y
ZV9idWlsZGVyc19hcmVfZ3JlZW4oKToKKworY2xhc3MgQ29tbWl0U3RlcChBYnN0cmFjdFN0ZXAp
OgorICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgIGNvbW1pdF9tZXNzYWdlID0gc2VsZi5fdG9v
bC5zY20oKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoKQorICAgICAgICByZXR1cm4g
c2VsZi5fdG9vbC5zY20oKS5jb21taXRfd2l0aF9tZXNzYWdlKGNvbW1pdF9tZXNzYWdlLm1lc3Nh
Z2UoKSkKKworCitjbGFzcyBDbG9zZVBhdGNoU3RlcChBYnN0cmFjdFBhdGNoU3RlcCk6CisgICAg
ZGVmIHJ1bihzZWxmLCBjb21taXRfbG9nKToKKyAgICAgICAgY29tbWVudF90ZXh0ID0gYnVnX2Nv
bW1lbnRfZnJvbV9jb21taXRfdGV4dChzZWxmLl90b29sLnNjbSgpLCBjb21taXRfbG9nKQorICAg
ICAgICBzZWxmLl90b29sLmJ1Z3MuY2xlYXJfYXR0YWNobWVudF9mbGFncyhzZWxmLl9wYXRjaFsi
aWQiXSwgY29tbWVudF90ZXh0KQorCisKK2NsYXNzIENsb3NlQnVnU3RlcChBYnN0cmFjdFBhdGNo
U3RlcCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9wdGlvbnMoY2xzKToKKyAgICAgICAg
cmV0dXJuIFsKKyAgICAgICAgICAgIENvbW1hbmRPcHRpb25zLmNsb3NlX2J1ZywKKyAgICAgICAg
XQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuY2xv
c2VfYnVnOgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGVycm9yKCJCdWlsZGVycyBhdCAl
cyBhcmUgcmVkLCBwbGVhc2UgZG8gbm90IGNvbW1pdC4gIFBhc3MgLS1pZ25vcmUtYnVpbGRlcnMg
dG8gYnlwYXNzIHRoaXMgY2hlY2suIiAlIChidWlsZGJvdC5idWlsZGJvdF9ob3N0KSkKKyAgICAg
ICAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHI/IG9yIHIrIHBhdGNoZXMgb24g
dGhlIGJ1ZyBiZWZvcmUgY2xvc2luZy4KKyAgICAgICAgIyBBc3N1bWUgdGhhdCByLSBwYXRjaGVz
IGFyZSBqdXN0IHByZXZpb3VzIHBhdGNoZXMgc29tZW9uZSBmb3Jnb3QgdG8gb2Jzb2xldGUuCisg
ICAgICAgIHBhdGNoZXMgPSBzZWxmLl90b29sLmJ1Z3MuZmV0Y2hfcGF0Y2hlc19mcm9tX2J1Zyhz
ZWxmLl9wYXRjaFsiYnVnX2lkIl0pCisgICAgICAgIGZvciBwYXRjaCBpbiBwYXRjaGVzOgorICAg
ICAgICAgICAgcmV2aWV3X2ZsYWcgPSBwYXRjaC5nZXQoInJldmlldyIpCisgICAgICAgICAgICBp
ZiByZXZpZXdfZmxhZyA9PSAiPyIgb3IgcmV2aWV3X2ZsYWcgPT0gIisiOgorICAgICAgICAgICAg
ICAgIGxvZygiTm90IGNsb3NpbmcgYnVnICVzIGFzIGF0dGFjaG1lbnQgJXMgaGFzIHJldmlldz0l
cy4gIEFzc3VtaW5nIHRoZXJlIGFyZSBtb3JlIHBhdGNoZXMgdG8gbGFuZCBmcm9tIHRoaXMgYnVn
LiIgJSAocGF0Y2hbImJ1Z19pZCJdLCBwYXRjaFsiaWQiXSwgcmV2aWV3X2ZsYWcpKQorICAgICAg
ICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLl90b29sLmJ1Z3MuY2xvc2VfYnVnX2FzX2Zp
eGVkKHNlbGYuX3BhdGNoWyJidWdfaWQiXSwgIkFsbCByZXZpZXdlZCBwYXRjaGVzIGhhdmUgYmVl
biBsYW5kZWQuICBDbG9zaW5nIGJ1Zy4iKQogCi0gICAgZGVmIGJ1aWxkX3dlYmtpdChzZWxmLCBx
dWlldD1GYWxzZSwgcG9ydD1XZWJLaXRQb3J0KToKLSAgICAgICAgbG9nKCJCdWlsZGluZyBXZWJL
aXQiKQotICAgICAgICBydW5fYW5kX3Rocm93X2lmX2ZhaWwocG9ydC5idWlsZF93ZWJraXRfY29t
bWFuZCgpLCBxdWlldCkKIAotICAgIGRlZiBjaGVja19zdHlsZShzZWxmKToKLSAgICAgICAgc2Vs
Zi5fcnVuX3NjcmlwdCgiY2hlY2std2Via2l0LXN0eWxlIikKKyMgRklYTUU6IFRoaXMgY2xhc3Mg
aXMgYSBkaW5vc2F1ciBhbmQgc2hvdWxkIGJlIGV4dGluY3Qgc29vbi4KK2NsYXNzIEJ1aWxkU3Rl
cHM6CisgICAgIyBGSVhNRTogVGhlIG9wdGlvbnMgc2hvdWxkIHJlYWxseSBsaXZlIG9uIGVhY2gg
IlN0ZXAiIG9iamVjdC4KKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGNsZWFuaW5nX29wdGlv
bnMoKToKKyAgICAgICAgcmV0dXJuIFsKKyAgICAgICAgICAgIENvbW1hbmRPcHRpb25zLmZvcmNl
X2NsZWFuLAorICAgICAgICAgICAgQ29tbWFuZE9wdGlvbnMuY2xlYW4sCisgICAgICAgIF0KKwor
ICAgICMgRklYTUU6IFRoZXNlIGRpc3RpbmN0aW9ucyBhcmUgYm9ndXMuICBXZSBuZWVkIGEgYmV0
dGVyIG1vZGVsIGZvciBoYW5kbGluZyBvcHRpb25zLgorICAgIEBzdGF0aWNtZXRob2QKKyAgICBk
ZWYgYnVpbGRfb3B0aW9ucygpOgorICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgQ29tbWFu
ZE9wdGlvbnMuY2hlY2tfYnVpbGRlcnMsCisgICAgICAgICAgICBDb21tYW5kT3B0aW9ucy5xdWll
dCwKKyAgICAgICAgICAgIENvbW1hbmRPcHRpb25zLm5vbl9pbnRlcmFjdGl2ZSwKKyAgICAgICAg
ICAgIENvbW1hbmRPcHRpb25zLnBhcmVudF9jb21tYW5kLAorICAgICAgICAgICAgQ29tbWFuZE9w
dGlvbnMucG9ydCwKKyAgICAgICAgXQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBsYW5k
X29wdGlvbnMoKToKKyAgICAgICAgcmV0dXJuIFsKKyAgICAgICAgICAgIENvbW1hbmRPcHRpb25z
LnVwZGF0ZSwKKyAgICAgICAgICAgIENvbW1hbmRPcHRpb25zLmJ1aWxkLAorICAgICAgICAgICAg
Q29tbWFuZE9wdGlvbnMudGVzdCwKKyAgICAgICAgICAgIENvbW1hbmRPcHRpb25zLmNsb3NlX2J1
ZywKKyAgICAgICAgXQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
Y29tbWFuZHMvZG93bmxvYWQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFu
ZHMvZG93bmxvYWQucHkKaW5kZXggMmQ1ZTMwMS4uYTI1NDZjMSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25sb2FkLnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9kb3dubG9hZC5weQpAQCAtMzMsMjAgKzMzLDE3
IEBAIGltcG9ydCBvcwogZnJvbSBvcHRwYXJzZSBpbXBvcnQgbWFrZV9vcHRpb24KIAogZnJvbSBt
b2R1bGVzLmJ1Z3ppbGxhIGltcG9ydCBwYXJzZV9idWdfaWQKLWZyb20gbW9kdWxlcy5idWlsZHN0
ZXBzIGltcG9ydCBCdWlsZFN0ZXBzCitmcm9tIG1vZHVsZXMuYnVpbGRzdGVwcyBpbXBvcnQgQnVp
bGRTdGVwcywgRW5zdXJlQnVpbGRlcnNBcmVHcmVlblN0ZXAsIENsZWFuV29ya2luZ0RpcmVjdG9y
eVN0ZXAsIFVwZGF0ZVN0ZXAsIENoZWNrU3R5bGVTdGVwLCBQcmVwYXJlQ2hhbmdlbG9nU3RlcCwg
Q2xlYW5Xb3JraW5nRGlyZWN0b3J5U3RlcAogZnJvbSBtb2R1bGVzLmNoYW5nZWxvZ3MgaW1wb3J0
IENoYW5nZUxvZwogZnJvbSBtb2R1bGVzLmNvbW1lbnRzIGltcG9ydCBidWdfY29tbWVudF9mcm9t
X2NvbW1pdF90ZXh0CiBmcm9tIG1vZHVsZXMuZ3JhbW1hciBpbXBvcnQgcGx1cmFsaXplCi1mcm9t
IG1vZHVsZXMubGFuZGluZ3NlcXVlbmNlIGltcG9ydCBMYW5kaW5nU2VxdWVuY2UsIENvbmRpdGlv
bmFsTGFuZGluZ1NlcXVlbmNlCitmcm9tIG1vZHVsZXMubGFuZGluZ3NlcXVlbmNlIGltcG9ydCBM
YW5kaW5nU2VxdWVuY2UKIGZyb20gbW9kdWxlcy5sb2dnaW5nIGltcG9ydCBlcnJvciwgbG9nCiBm
cm9tIG1vZHVsZXMubXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQ29tbWFuZAogZnJvbSBtb2R1bGVz
LnNjbSBpbXBvcnQgU2NyaXB0RXJyb3IKIAogCi1jbGFzcyBCdWlsZFNlcXVlbmNlKENvbmRpdGlv
bmFsTGFuZGluZ1NlcXVlbmNlKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgdG9v
bCk6Ci0gICAgICAgIENvbmRpdGlvbmFsTGFuZGluZ1NlcXVlbmNlLl9faW5pdF9fKHNlbGYsIE5v
bmUsIG9wdGlvbnMsIHRvb2wpCi0KK2NsYXNzIEJ1aWxkU2VxdWVuY2UoTGFuZGluZ1NlcXVlbmNl
KToKICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICBzZWxmLmNsZWFuKCkKICAgICAgICAgc2Vs
Zi51cGRhdGUoKQpAQCAtNjMsNyArNjAsNyBAQCBjbGFzcyBCdWlsZChDb21tYW5kKToKICAgICAg
ICAgQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAiVXBkYXRlIHdvcmtpbmcgY29weSBhbmQgYnVpbGQi
LCAiIiwgb3B0aW9ucykKIAogICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRv
b2wpOgotICAgICAgICBzZXF1ZW5jZSA9IEJ1aWxkU2VxdWVuY2Uob3B0aW9ucywgdG9vbCkKKyAg
ICAgICAgc2VxdWVuY2UgPSBCdWlsZFNlcXVlbmNlKE5vbmUsIG9wdGlvbnMsIHRvb2wpCiAgICAg
ICAgIHNlcXVlbmNlLnJ1bl9hbmRfaGFuZGxlX2Vycm9ycygpCiAKIApAQCAtMTA3LDkgKzEwNCwx
MCBAQCBjbGFzcyBXZWJLaXRBcHBseWluZ1NjcmlwdHM6CiAKICAgICBAc3RhdGljbWV0aG9kCiAg
ICAgZGVmIHNldHVwX2Zvcl9wYXRjaF9hcHBseSh0b29sLCBvcHRpb25zKToKLSAgICAgICAgdG9v
bC5zdGVwcy5jbGVhbl93b3JraW5nX2RpcmVjdG9yeSh0b29sLnNjbSgpLCBvcHRpb25zLCBhbGxv
d19sb2NhbF9jb21taXRzPVRydWUpCi0gICAgICAgIGlmIG9wdGlvbnMudXBkYXRlOgotICAgICAg
ICAgICAgdG9vbC5zdGVwcy51cGRhdGUoKQorICAgICAgICBjbGVhbl9zdGVwID0gQ2xlYW5Xb3Jr
aW5nRGlyZWN0b3J5U3RlcCh0b29sLCBvcHRpb25zLCBhbGxvd19sb2NhbF9jb21taXRzPVRydWUp
CisgICAgICAgIGNsZWFuX3N0ZXAucnVuKCkKKyAgICAgICAgdXBkYXRlX3N0ZXAgPSBVcGRhdGVT
dGVwKHRvb2wsIG9wdGlvbnMpCisgICAgICAgIHVwZGF0ZV9zdGVwLnJ1bigpCiAKICAgICBAc3Rh
dGljbWV0aG9kCiAgICAgZGVmIGFwcGx5X3BhdGNoZXNfd2l0aF9vcHRpb25zKHNjbSwgcGF0Y2hl
cywgb3B0aW9ucyk6CkBAIC0xMjQsMTAgKzEyMiw3IEBAIGNsYXNzIFdlYktpdEFwcGx5aW5nU2Ny
aXB0czoKICAgICAgICAgICAgICAgICBzY20uY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKGNv
bW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSBvciBwYXRjaFsibmFtZSJdKQogCiAKLWNsYXNzIExhbmRE
aWZmU2VxdWVuY2UoQ29uZGl0aW9uYWxMYW5kaW5nU2VxdWVuY2UpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwYXRjaCwgb3B0aW9ucywgdG9vbCk6Ci0gICAgICAgIENvbmRpdGlvbmFsTGFuZGlu
Z1NlcXVlbmNlLl9faW5pdF9fKHNlbGYsIHBhdGNoLCBvcHRpb25zLCB0b29sKQotCitjbGFzcyBM
YW5kRGlmZlNlcXVlbmNlKExhbmRpbmdTZXF1ZW5jZSk6CiAgICAgZGVmIHJ1bihzZWxmKToKICAg
ICAgICAgc2VsZi5jaGVja19idWlsZGVycygpCiAgICAgICAgIHNlbGYuYnVpbGQoKQpAQCAtMTg5
LDcgKzE4NCw3IEBAIGNsYXNzIExhbmREaWZmKENvbW1hbmQpOgogICAgIGRlZiBleGVjdXRlKHNl
bGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAgICBidWdfaWQgPSAoYXJncyBhbmQgYXJn
c1swXSkgb3IgcGFyc2VfYnVnX2lkKHRvb2wuc2NtKCkuY3JlYXRlX3BhdGNoKCkpCiAKLSAgICAg
ICAgdG9vbC5zdGVwcy5lbnN1cmVfYnVpbGRlcnNfYXJlX2dyZWVuKHRvb2wuYnVpbGRib3QsIG9w
dGlvbnMpCisgICAgICAgIEVuc3VyZUJ1aWxkZXJzQXJlR3JlZW5TdGVwKHRvb2wsIG9wdGlvbnMp
LnJ1bigpCiAKICAgICAgICAgb3MuY2hkaXIodG9vbC5zY20oKS5jaGVja291dF9yb290KQogICAg
ICAgICBzZWxmLnVwZGF0ZV9jaGFuZ2Vsb2dzX3dpdGhfcmV2aWV3ZXIob3B0aW9ucy5yZXZpZXdl
ciwgYnVnX2lkLCB0b29sKQpAQCAtMjM0LDkgKzIyOSw2IEBAIGNsYXNzIEFic3RyYWN0UGF0Y2hQ
cm9jZXNzaW5nQ29tbWFuZChDb21tYW5kKToKIAogCiBjbGFzcyBDaGVja1N0eWxlU2VxdWVuY2Uo
TGFuZGluZ1NlcXVlbmNlKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0Y2gsIG9wdGlvbnMs
IHRvb2wpOgotICAgICAgICBMYW5kaW5nU2VxdWVuY2UuX19pbml0X18oc2VsZiwgcGF0Y2gsIG9w
dGlvbnMsIHRvb2wpCi0KICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICBzZWxmLmNsZWFuKCkK
ICAgICAgICAgc2VsZi51cGRhdGUoKQpAQCAtMjQ1LDcgKzIzNyw4IEBAIGNsYXNzIENoZWNrU3R5
bGVTZXF1ZW5jZShMYW5kaW5nU2VxdWVuY2UpOgogCiAgICAgZGVmIGJ1aWxkKHNlbGYpOgogICAg
ICAgICAjIEluc3RlYWQgb2YgYnVpbGRpbmcsIHdlIGNoZWNrIHN0eWxlLgotICAgICAgICBzZWxm
Ll90b29sLnN0ZXBzLmNoZWNrX3N0eWxlKCkKKyAgICAgICAgc3RlcCA9IENoZWNrU3R5bGVTdGVw
KHNlbGYuX3Rvb2wsIHNlbGYuX29wdGlvbnMpCisgICAgICAgIHN0ZXAucnVuKCkKIAogCiBjbGFz
cyBDaGVja1N0eWxlKEFic3RyYWN0UGF0Y2hQcm9jZXNzaW5nQ29tbWFuZCk6CkBAIC0yNjcsMTAg
KzI2MCw3IEBAIGNsYXNzIENoZWNrU3R5bGUoQWJzdHJhY3RQYXRjaFByb2Nlc3NpbmdDb21tYW5k
KToKICAgICAgICAgc2VxdWVuY2UucnVuX2FuZF9oYW5kbGVfZXJyb3JzKCkKIAogCi1jbGFzcyBC
dWlsZEF0dGFjaG1lbnRTZXF1ZW5jZShDb25kaXRpb25hbExhbmRpbmdTZXF1ZW5jZSk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBhdGNoLCBvcHRpb25zLCB0b29sKToKLSAgICAgICAgTGFuZGlu
Z1NlcXVlbmNlLl9faW5pdF9fKHNlbGYsIHBhdGNoLCBvcHRpb25zLCB0b29sKQotCitjbGFzcyBC
dWlsZEF0dGFjaG1lbnRTZXF1ZW5jZShMYW5kaW5nU2VxdWVuY2UpOgogICAgIGRlZiBydW4oc2Vs
Zik6CiAgICAgICAgIHNlbGYuY2xlYW4oKQogICAgICAgICBzZWxmLnVwZGF0ZSgpCkBAIC0zMDcs
MTAgKzI5NywxMCBAQCBjbGFzcyBBYnN0cmFjdFBhdGNoTGFuZGluZ0NvbW1hbmQoQWJzdHJhY3RQ
YXRjaFByb2Nlc3NpbmdDb21tYW5kKToKIAogICAgIGRlZiBfcHJlcGFyZV90b19wcm9jZXNzKHNl
bGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAgICAjIENoZWNrIHRoZSB0cmVlIHN0YXR1
cyBmaXJzdCBzbyB3ZSBjYW4gZmFpbCBlYXJseS4KLSAgICAgICAgdG9vbC5zdGVwcy5lbnN1cmVf
YnVpbGRlcnNfYXJlX2dyZWVuKHRvb2wuYnVpbGRib3QsIG9wdGlvbnMpCisgICAgICAgIEVuc3Vy
ZUJ1aWxkZXJzQXJlR3JlZW5TdGVwKHRvb2wsIG9wdGlvbnMpLnJ1bigpCiAKICAgICBkZWYgX3By
b2Nlc3NfcGF0Y2goc2VsZiwgcGF0Y2gsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgotICAgICAgICBz
ZXF1ZW5jZSA9IENvbmRpdGlvbmFsTGFuZGluZ1NlcXVlbmNlKHBhdGNoLCBvcHRpb25zLCB0b29s
KQorICAgICAgICBzZXF1ZW5jZSA9IExhbmRpbmdTZXF1ZW5jZShwYXRjaCwgb3B0aW9ucywgdG9v
bCkKICAgICAgICAgc2VxdWVuY2UucnVuX2FuZF9oYW5kbGVfZXJyb3JzKCkKIAogCkBAIC0zNTgs
NyArMzQ4LDcgQEAgY2xhc3MgUm9sbG91dChDb21tYW5kKToKIAogICAgICAgICAjIFNlY29uZCwg
bWFrZSBuZXcgQ2hhbmdlTG9nIGVudHJpZXMgZm9yIHRoaXMgcm9sbG91dC4KICAgICAgICAgIyBU
aGlzIGNvdWxkIG1vdmUgdG8gcHJlcGFyZS1DaGFuZ2VMb2cgYnkgYWRkaW5nIGEgLS1yZXZlcnQ9
IG9wdGlvbi4KLSAgICAgICAgdG9vbC5zdGVwcy5wcmVwYXJlX2NoYW5nZWxvZygpCisgICAgICAg
IFByZXBhcmVDaGFuZ2Vsb2dTdGVwKHRvb2wsIE5vbmUpLnJ1bigpCiAgICAgICAgIGZvciBjaGFu
Z2Vsb2dfcGF0aCBpbiBjaGFuZ2Vsb2dfcGF0aHM6CiAgICAgICAgICAgICBDaGFuZ2VMb2coY2hh
bmdlbG9nX3BhdGgpLnVwZGF0ZV9mb3JfcmV2ZXJ0KHJldmlzaW9uKQogCkBAIC0zODQsOCArMzc0
LDggQEAgY2xhc3MgUm9sbG91dChDb21tYW5kKToKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICAgICAgbG9nKCJGYWlsZWQgdG8gcGFyc2UgYnVnIG51bWJlciBmcm9tIGRpZmYuICBObyBi
dWdzIHdpbGwgYmUgdXBkYXRlZC9yZW9wZW5lZCBhZnRlciB0aGUgcm9sbG91dC4iKQogCi0gICAg
ICAgIHRvb2wuc3RlcHMuY2xlYW5fd29ya2luZ19kaXJlY3RvcnkodG9vbC5zY20oKSwgb3B0aW9u
cykKLSAgICAgICAgdG9vbC5zdGVwcy51cGRhdGUoKQorICAgICAgICBDbGVhbldvcmtpbmdEaXJl
Y3RvcnlTdGVwKHRvb2wsIG9wdGlvbnMpLnJ1bigpCisgICAgICAgIFVwZGF0ZVN0ZXAodG9vbCwg
b3B0aW9ucykucnVuKCkKICAgICAgICAgdG9vbC5zY20oKS5hcHBseV9yZXZlcnNlX2RpZmYocmV2
aXNpb24pCiAgICAgICAgIHNlbGYuX2NyZWF0ZV9jaGFuZ2Vsb2dzX2Zvcl9yZXZlcnQodG9vbCwg
cmV2aXNpb24pCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21t
YW5kcy9xdWV1ZXMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvcXVl
dWVzLnB5CmluZGV4IDZhZWZkMGYuLjFkYjEwMTIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvbW9kdWxlcy9jb21tYW5kcy9xdWV1ZXMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy9tb2R1bGVzL2NvbW1hbmRzL3F1ZXVlcy5weQpAQCAtMzQsNyArMzQsNyBAQCBmcm9tIGRhdGV0
aW1lIGltcG9ydCBkYXRldGltZQogZnJvbSBvcHRwYXJzZSBpbXBvcnQgbWFrZV9vcHRpb24KIAog
ZnJvbSBtb2R1bGVzLmdyYW1tYXIgaW1wb3J0IHBsdXJhbGl6ZQotZnJvbSBtb2R1bGVzLmxhbmRp
bmdzZXF1ZW5jZSBpbXBvcnQgTGFuZGluZ1NlcXVlbmNlLCBDb25kaXRpb25hbExhbmRpbmdTZXF1
ZW5jZSwgTGFuZGluZ1NlcXVlbmNlRXJyb3JIYW5kbGVyCitmcm9tIG1vZHVsZXMubGFuZGluZ3Nl
cXVlbmNlIGltcG9ydCBMYW5kaW5nU2VxdWVuY2UsIExhbmRpbmdTZXF1ZW5jZUVycm9ySGFuZGxl
cgogZnJvbSBtb2R1bGVzLmxvZ2dpbmcgaW1wb3J0IGVycm9yLCBsb2cKIGZyb20gbW9kdWxlcy5t
dWx0aWNvbW1hbmR0b29sIGltcG9ydCBDb21tYW5kCiBmcm9tIG1vZHVsZXMucGF0Y2hjb2xsZWN0
aW9uIGltcG9ydCBQYXRjaENvbGxlY3Rpb24sIFBlcnNpc3RlbnRQYXRjaENvbGxlY3Rpb24sIFBl
cnNpc3RlbnRQYXRjaENvbGxlY3Rpb25EZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL2xhbmRpbmdzZXF1ZW5jZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
bW9kdWxlcy9sYW5kaW5nc2VxdWVuY2UucHkKaW5kZXggZWRkYjUzOS4uNTBhM2M3NSAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2xhbmRpbmdzZXF1ZW5jZS5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvbGFuZGluZ3NlcXVlbmNlLnB5CkBAIC0zMyw2
ICszMyw4IEBAIGZyb20gbW9kdWxlcy5sb2dnaW5nIGltcG9ydCBsb2cKIGZyb20gbW9kdWxlcy5z
Y20gaW1wb3J0IFNjcmlwdEVycm9yLCBDaGVja291dE5lZWRzVXBkYXRlCiBmcm9tIG1vZHVsZXMu
d2Via2l0cG9ydCBpbXBvcnQgV2ViS2l0UG9ydAogZnJvbSBtb2R1bGVzLndvcmtxdWV1ZSBpbXBv
cnQgV29ya1F1ZXVlCitmcm9tIG1vZHVsZXMuYnVpbGRzdGVwcyBpbXBvcnQgQ2xlYW5Xb3JraW5n
RGlyZWN0b3J5U3RlcCwgVXBkYXRlU3RlcCwgQXBwbHlQYXRjaFN0ZXAsIEVuc3VyZUJ1aWxkZXJz
QXJlR3JlZW5TdGVwLCBCdWlsZFN0ZXAsIFJ1blRlc3RzU3RlcCwgQ29tbWl0U3RlcCwgQ2xvc2VQ
YXRjaFN0ZXAsIENsb3NlQnVnU3RlcAorCiAKIGNsYXNzIExhbmRpbmdTZXF1ZW5jZUVycm9ySGFu
ZGxlcigpOgogICAgIEBjbGFzc21ldGhvZApAQCAtNzQsNjYgKzc2LDM3IEBAIGNsYXNzIExhbmRp
bmdTZXF1ZW5jZToKICAgICAgICAgICAgIFdvcmtRdWV1ZS5leGl0X2FmdGVyX2hhbmRsZWRfZXJy
b3IoZSkKIAogICAgIGRlZiBjbGVhbihzZWxmKToKLSAgICAgICAgc2VsZi5fdG9vbC5zdGVwcy5j
bGVhbl93b3JraW5nX2RpcmVjdG9yeShzZWxmLl90b29sLnNjbSgpLCBzZWxmLl9vcHRpb25zKQor
ICAgICAgICBzdGVwID0gQ2xlYW5Xb3JraW5nRGlyZWN0b3J5U3RlcChzZWxmLl90b29sLCBzZWxm
Ll9vcHRpb25zKQorICAgICAgICBzdGVwLnJ1bigpCiAKICAgICBkZWYgdXBkYXRlKHNlbGYpOgot
ICAgICAgICBzZWxmLl90b29sLnN0ZXBzLnVwZGF0ZShwb3J0PXNlbGYuX3BvcnQpCisgICAgICAg
IHN0ZXAgPSBVcGRhdGVTdGVwKHNlbGYuX3Rvb2wsIHNlbGYuX29wdGlvbnMpCisgICAgICAgIHN0
ZXAucnVuKCkKIAogICAgIGRlZiBhcHBseV9wYXRjaChzZWxmKToKLSAgICAgICAgbG9nKCJQcm9j
ZXNzaW5nIHBhdGNoICVzIGZyb20gYnVnICVzLiIgJSAoc2VsZi5fcGF0Y2hbImlkIl0sIHNlbGYu
X3BhdGNoWyJidWdfaWQiXSkpCi0gICAgICAgIHNlbGYuX3Rvb2wuc2NtKCkuYXBwbHlfcGF0Y2go
c2VsZi5fcGF0Y2gsIGZvcmNlPXNlbGYuX29wdGlvbnMubm9uX2ludGVyYWN0aXZlKQorICAgICAg
ICBzdGVwID0gQXBwbHlQYXRjaFN0ZXAoc2VsZi5fdG9vbCwgc2VsZi5fb3B0aW9ucywgc2VsZi5f
cGF0Y2gpCisgICAgICAgIHN0ZXAucnVuKCkKIAogICAgIGRlZiBjaGVja19idWlsZGVycyhzZWxm
KToKLSAgICAgICAgc2VsZi5fdG9vbC5zdGVwcy5lbnN1cmVfYnVpbGRlcnNfYXJlX2dyZWVuKHNl
bGYuX3Rvb2wuYnVpbGRib3QsIHNlbGYuX29wdGlvbnMpCisgICAgICAgIHN0ZXAgPSBFbnN1cmVC
dWlsZGVyc0FyZUdyZWVuU3RlcChzZWxmLl90b29sLCBzZWxmLl9vcHRpb25zKQorICAgICAgICBz
dGVwLnJ1bigpCiAKICAgICBkZWYgYnVpbGQoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Rvb2wuc3Rl
cHMuYnVpbGRfd2Via2l0KHF1aWV0PXNlbGYuX29wdGlvbnMucXVpZXQsIHBvcnQ9c2VsZi5fcG9y
dCkKKyAgICAgICAgc3RlcCA9IEJ1aWxkU3RlcChzZWxmLl90b29sLCBzZWxmLl9vcHRpb25zKQor
ICAgICAgICBzdGVwLnJ1bigpCiAKICAgICBkZWYgdGVzdChzZWxmKToKLSAgICAgICAgIyBXaGVu
IHJ1bm5pbmcgbm9uLWludGVyYWN0aXZlbHkgd2UgZG9uJ3Qgd2FudCB0byBsYXVuY2ggU2FmYXJp
IGFuZCB3ZSB3YW50IHRvIGV4aXQgYWZ0ZXIgdGhlIGZpcnN0IGZhaWx1cmUuCi0gICAgICAgIHNl
bGYuX3Rvb2wuc3RlcHMucnVuX3Rlc3RzKGxhdW5jaF9zYWZhcmk9bm90IHNlbGYuX29wdGlvbnMu
bm9uX2ludGVyYWN0aXZlLCBmYWlsX2Zhc3Q9c2VsZi5fb3B0aW9ucy5ub25faW50ZXJhY3RpdmUs
IHF1aWV0PXNlbGYuX29wdGlvbnMucXVpZXQsIHBvcnQ9c2VsZi5fcG9ydCkKKyAgICAgICAgc3Rl
cCA9IFJ1blRlc3RzU3RlcChzZWxmLl90b29sLCBzZWxmLl9vcHRpb25zKQorICAgICAgICBzdGVw
LnJ1bigpCiAKICAgICBkZWYgY29tbWl0KHNlbGYpOgotICAgICAgICBjb21taXRfbWVzc2FnZSA9
IHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KCkKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X3dpdGhfbWVzc2FnZShjb21taXRfbWVz
c2FnZS5tZXNzYWdlKCkpCisgICAgICAgIHN0ZXAgPSBDb21taXRTdGVwKHNlbGYuX3Rvb2wsIHNl
bGYuX29wdGlvbnMpCisgICAgICAgIHJldHVybiBzdGVwLnJ1bigpCiAKICAgICBkZWYgY2xvc2Vf
cGF0Y2goc2VsZiwgY29tbWl0X2xvZyk6Ci0gICAgICAgIGNvbW1lbnRfdGV4dCA9IGJ1Z19jb21t
ZW50X2Zyb21fY29tbWl0X3RleHQoc2VsZi5fdG9vbC5zY20oKSwgY29tbWl0X2xvZykKLSAgICAg
ICAgc2VsZi5fdG9vbC5idWdzLmNsZWFyX2F0dGFjaG1lbnRfZmxhZ3Moc2VsZi5fcGF0Y2hbImlk
Il0sIGNvbW1lbnRfdGV4dCkKKyAgICAgICAgc3RlcCA9IENsb3NlUGF0Y2hTdGVwKHNlbGYuX3Rv
b2wsIHNlbGYuX29wdGlvbnMsIHNlbGYuX3BhdGNoKQorICAgICAgICBzdGVwLnJ1bihjb21taXRf
bG9nKQogCiAgICAgZGVmIGNsb3NlX2J1ZyhzZWxmKToKLSAgICAgICAgIyBDaGVjayB0byBtYWtl
IHN1cmUgdGhlcmUgYXJlIG5vIHI/IG9yIHIrIHBhdGNoZXMgb24gdGhlIGJ1ZyBiZWZvcmUgY2xv
c2luZy4KLSAgICAgICAgIyBBc3N1bWUgdGhhdCByLSBwYXRjaGVzIGFyZSBqdXN0IHByZXZpb3Vz
IHBhdGNoZXMgc29tZW9uZSBmb3Jnb3QgdG8gb2Jzb2xldGUuCi0gICAgICAgIHBhdGNoZXMgPSBz
ZWxmLl90b29sLmJ1Z3MuZmV0Y2hfcGF0Y2hlc19mcm9tX2J1ZyhzZWxmLl9wYXRjaFsiYnVnX2lk
Il0pCi0gICAgICAgIGZvciBwYXRjaCBpbiBwYXRjaGVzOgotICAgICAgICAgICAgcmV2aWV3X2Zs
YWcgPSBwYXRjaC5nZXQoInJldmlldyIpCi0gICAgICAgICAgICBpZiByZXZpZXdfZmxhZyA9PSAi
PyIgb3IgcmV2aWV3X2ZsYWcgPT0gIisiOgotICAgICAgICAgICAgICAgIGxvZygiTm90IGNsb3Np
bmcgYnVnICVzIGFzIGF0dGFjaG1lbnQgJXMgaGFzIHJldmlldz0lcy4gIEFzc3VtaW5nIHRoZXJl
IGFyZSBtb3JlIHBhdGNoZXMgdG8gbGFuZCBmcm9tIHRoaXMgYnVnLiIgJSAocGF0Y2hbImJ1Z19p
ZCJdLCBwYXRjaFsiaWQiXSwgcmV2aWV3X2ZsYWcpKQotICAgICAgICAgICAgICAgIHJldHVybgot
ICAgICAgICBzZWxmLl90b29sLmJ1Z3MuY2xvc2VfYnVnX2FzX2ZpeGVkKHNlbGYuX3BhdGNoWyJi
dWdfaWQiXSwgIkFsbCByZXZpZXdlZCBwYXRjaGVzIGhhdmUgYmVlbiBsYW5kZWQuICBDbG9zaW5n
IGJ1Zy4iKQotCi0KLWNsYXNzIENvbmRpdGlvbmFsTGFuZGluZ1NlcXVlbmNlKExhbmRpbmdTZXF1
ZW5jZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGNoLCBvcHRpb25zLCB0b29sKToKLSAg
ICAgICAgTGFuZGluZ1NlcXVlbmNlLl9faW5pdF9fKHNlbGYsIHBhdGNoLCBvcHRpb25zLCB0b29s
KQotCi0gICAgZGVmIHVwZGF0ZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51cGRh
dGU6Ci0gICAgICAgICAgICBMYW5kaW5nU2VxdWVuY2UudXBkYXRlKHNlbGYpCi0KLSAgICBkZWYg
Y2hlY2tfYnVpbGRlcnMoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuYnVpbGQ6Ci0g
ICAgICAgICAgICBMYW5kaW5nU2VxdWVuY2UuY2hlY2tfYnVpbGRlcnMoc2VsZikKLQotICAgIGRl
ZiBidWlsZChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5idWlsZDoKLSAgICAgICAg
ICAgIExhbmRpbmdTZXF1ZW5jZS5idWlsZChzZWxmKQotCi0gICAgZGVmIHRlc3Qoc2VsZik6Ci0g
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMuYnVpbGQgYW5kIHNlbGYuX29wdGlvbnMudGVzdDoKLSAg
ICAgICAgICAgIExhbmRpbmdTZXF1ZW5jZS50ZXN0KHNlbGYpCi0KLSAgICBkZWYgY2xvc2VfYnVn
KHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmNsb3NlX2J1ZzoKLSAgICAgICAgICAg
IExhbmRpbmdTZXF1ZW5jZS5jbG9zZV9idWcoc2VsZikKLQorICAgICAgICBzdGVwID0gQ2xvc2VC
dWdTdGVwKHNlbGYuX3Rvb2wsIHNlbGYuX29wdGlvbnMsIHNlbGYuX3BhdGNoKQorICAgICAgICBz
dGVwLnJ1bigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvd2Via2l0
cG9ydC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy93ZWJraXRwb3J0LnB5CmluZGV4
IDM3ZGQ0MWQuLjg0OWFjNGIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy93ZWJraXRwb3J0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy93ZWJraXRw
b3J0LnB5CkBAIC0zOSwxMiArMzksNiBAQCBjbGFzcyBXZWJLaXRQb3J0KCk6CiAgICAgICAgIHJl
dHVybiBvcy5wYXRoLmpvaW4oIldlYktpdFRvb2xzIiwgIlNjcmlwdHMiLCBzY3JpcHRfbmFtZSkK
IAogICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgcG9ydF9vcHRpb25zKCk6Ci0gICAgICAgIHJl
dHVybiBbCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1wb3J0IiwgYWN0aW9uPSJzdG9yZSIs
IGRlc3Q9InBvcnQiLCBkZWZhdWx0PU5vbmUsIGhlbHA9IlNwZWNpZnkgYSBwb3J0IChlLmcuLCBt
YWMsIHF0LCBndGssIC4uLikuIiksCi0gICAgICAgIF0KLQotICAgIEBzdGF0aWNtZXRob2QKICAg
ICBkZWYgcG9ydChwb3J0X25hbWUpOgogICAgICAgICBpZiBwb3J0X25hbWUgPT0gIm1hYyI6CiAg
ICAgICAgICAgICByZXR1cm4gTWFjUG9ydApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy9ydW4td2Via2l0LXVuaXR0ZXN0cyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC11
bml0dGVzdHMKaW5kZXggOTYwYzkxYy4uYmMyZThlMSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy9ydW4td2Via2l0LXVuaXR0ZXN0cworKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3J1
bi13ZWJraXQtdW5pdHRlc3RzCkBAIC00Miw3ICs0Miw3IEBAIGZyb20gbW9kdWxlcy5kaWZmX3Bh
cnNlcl91bml0dGVzdCBpbXBvcnQgKgogZnJvbSBtb2R1bGVzLmxvZ2dpbmdfdW5pdHRlc3QgaW1w
b3J0ICoKIGZyb20gbW9kdWxlcy5tdWx0aWNvbW1hbmR0b29sX3VuaXR0ZXN0IGltcG9ydCAqCiBm
cm9tIG1vZHVsZXMucGF0Y2hjb2xsZWN0aW9uX3VuaXR0ZXN0IGltcG9ydCAqCi1mcm9tIG1vZHVs
ZXMuc2NtX3VuaXR0ZXN0IGltcG9ydCAqCisjZnJvbSBtb2R1bGVzLnNjbV91bml0dGVzdCBpbXBv
cnQgKgogZnJvbSBtb2R1bGVzLndlYmtpdHBvcnRfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gbW9k
dWxlcy53b3JrcXVldWVfdW5pdHRlc3QgaW1wb3J0ICoKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44514</attachid>
            <date>2009-12-09 00:04:34 -0800</date>
            <delta_ts>2009-12-09 00:21:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32212-20091209000432.patch</filename>
            <type>text/plain</type>
            <size>34586</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBiNjkzMWRmLi4zZDNmMDdjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMDktMTIt
MDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbYnp0XSBJbXBsZW1lbnQgYWJzdHJhY3QgU3Rl
cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMjEy
CisKKyAgICAgICAgVGhpcyBpcyBhIGZhaXJseSBkaXNydXB0aXZlIGNoYW5nZSB0aGF0IHJlZmFj
dG9ycyBob3cgd2UgYnVpbGQKKyAgICAgICAgY29tbWFuZHMuICBJbnN0ZWFkIG9mIHVzaW5nIGEg
bGFuZGluZyBzZXF1ZW5jZSwgd2UgY2FuIG5vdyBhc3NlbWJsZSBhCisgICAgICAgIHNlcXVlbmNl
IG9mIHN0ZXBzIGRpcmVjdGx5LiAgV2Ugc3RpbGwgdXNlIHRoZSBsYW5kaW5nIHNlcXVlbmNlIGlu
IHRoZQorICAgICAgICBpbnRlcmltLCBidXQgdGhpcyB3aWxsIGJlIHJlbW92ZWQgc29vbi4KKwor
ICAgICAgICAqIFNjcmlwdHMvYnVnemlsbGEtdG9vbDoKKyAgICAgICAgKiBTY3JpcHRzL21vZHVs
ZXMvYnVpbGRzdGVwcy5weToKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZG93
bmxvYWQucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Vhcmx5X3dhcm5p
bmdfc3lzdGVtLnB5OgorICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9xdWV1ZXMu
cHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvbGFuZGluZ3NlcXVlbmNlLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvbW9kdWxlcy9tb2NrX2J1Z3ppbGxhdG9vbC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL21vZHVsZXMvcHJvY2Vzc3V0aWxzLnB5OiBSZW1vdmVkLgorICAgICAgICAqIFNjcmlwdHMv
bW9kdWxlcy9zY20ucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL3NjbV91bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvd2Via2l0cG9ydC5weToKKwogMjAwOS0xMi0w
OCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9v
bCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVnemlsbGEtdG9vbAppbmRleCBlMGY1NmNiLi5mZGJi
NzQwIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1Z3ppbGxhLXRvb2wKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy9idWd6aWxsYS10b29sCkBAIC00MCw2ICs0MCw3IEBAIGZyb20g
bW9kdWxlcy5jb21tYW5kcy5lYXJseV93YXJuaW5nX3N5c3RlbSBpbXBvcnQgKgogZnJvbSBtb2R1
bGVzLmNvbW1hbmRzLnF1ZXJpZXMgaW1wb3J0ICoKIGZyb20gbW9kdWxlcy5jb21tYW5kcy5xdWV1
ZXMgaW1wb3J0ICoKIGZyb20gbW9kdWxlcy5jb21tYW5kcy51cGxvYWQgaW1wb3J0ICoKK2Zyb20g
bW9kdWxlcy5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQogZnJvbSBtb2R1bGVzLmxvZ2dpbmcg
aW1wb3J0IGxvZwogZnJvbSBtb2R1bGVzLm11bHRpY29tbWFuZHRvb2wgaW1wb3J0IE11bHRpQ29t
bWFuZFRvb2wKIGZyb20gbW9kdWxlcy5zY20gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtCkBAIC01
MSw2ICs1Miw3IEBAIGNsYXNzIEJ1Z3ppbGxhVG9vbChNdWx0aUNvbW1hbmRUb29sKToKIAogICAg
ICAgICBzZWxmLmJ1Z3MgPSBCdWd6aWxsYSgpCiAgICAgICAgIHNlbGYuYnVpbGRib3QgPSBCdWls
ZEJvdCgpCisgICAgICAgIHNlbGYuZXhlY3V0aXZlID0gRXhlY3V0aXZlKCkKICAgICAgICAgc2Vs
Zi5fc2NtID0gTm9uZQogICAgICAgICBzZWxmLl9zdGF0dXMgPSBOb25lCiAgICAgICAgIHNlbGYu
c3RlcHMgPSBCdWlsZFN0ZXBzKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9k
dWxlcy9idWlsZHN0ZXBzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1aWxkc3Rl
cHMucHkKaW5kZXggYzU2NjQwMS4uOTU2ZjJlYSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9tb2R1bGVzL2J1aWxkc3RlcHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1
bGVzL2J1aWxkc3RlcHMucHkKQEAgLTMwLDc1ICszMCwyMjcgQEAgaW1wb3J0IG9zCiAKIGZyb20g
b3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCiAKK2Zyb20gbW9kdWxlcy5jb21tZW50cyBpbXBv
cnQgYnVnX2NvbW1lbnRfZnJvbV9jb21taXRfdGV4dAogZnJvbSBtb2R1bGVzLmxvZ2dpbmcgaW1w
b3J0IGxvZywgZXJyb3IKLWZyb20gbW9kdWxlcy5wcm9jZXNzdXRpbHMgaW1wb3J0IHJ1bl9hbmRf
dGhyb3dfaWZfZmFpbAogZnJvbSBtb2R1bGVzLndlYmtpdHBvcnQgaW1wb3J0IFdlYktpdFBvcnQK
IAotY2xhc3MgQnVpbGRTdGVwczoKLSAgICAjIEZJWE1FOiBUaGUgb3B0aW9ucyBzaG91bGQgcmVh
bGx5IGxpdmUgb24gZWFjaCAiU3RlcCIgb2JqZWN0LgotICAgIEBzdGF0aWNtZXRob2QKLSAgICBk
ZWYgY2xlYW5pbmdfb3B0aW9ucygpOgorCitjbGFzcyBDb21tYW5kT3B0aW9ucyhvYmplY3QpOgor
ICAgIGZvcmNlX2NsZWFuID0gbWFrZV9vcHRpb24oIi0tZm9yY2UtY2xlYW4iLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJmb3JjZV9jbGVhbiIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IkNsZWFu
IHdvcmtpbmcgZGlyZWN0b3J5IGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIChyZW1vdmVzIGxvY2Fs
IGNoYW5nZXMgYW5kIGNvbW1pdHMpIikKKyAgICBjbGVhbiA9IG1ha2Vfb3B0aW9uKCItLW5vLWNs
ZWFuIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNsZWFuIiwgZGVmYXVsdD1UcnVlLCBo
ZWxwPSJEb24ndCBjaGVjayBpZiB0aGUgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4gYmVmb3Jl
IGFwcGx5aW5nIHBhdGNoZXMiKQorICAgIGNoZWNrX2J1aWxkZXJzID0gbWFrZV9vcHRpb24oIi0t
aWdub3JlLWJ1aWxkZXJzIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNoZWNrX2J1aWxk
ZXJzIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEb24ndCBjaGVjayB0byBzZWUgaWYgdGhlIGJ1aWxk
LndlYmtpdC5vcmcgYnVpbGRlcnMgYXJlIGdyZWVuIGJlZm9yZSBsYW5kaW5nLiIpCisgICAgcXVp
ZXQgPSBtYWtlX29wdGlvbigiLS1xdWlldCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InF1
aWV0IiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iUHJvZHVjZSBsZXNzIGNvbnNvbGUgb3V0cHV0LiIp
CisgICAgbm9uX2ludGVyYWN0aXZlID0gbWFrZV9vcHRpb24oIi0tbm9uLWludGVyYWN0aXZlIiwg
YWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ibm9uX2ludGVyYWN0aXZlIiwgZGVmYXVsdD1GYWxz
ZSwgaGVscD0iTmV2ZXIgcHJvbXB0IHRoZSB1c2VyLCBmYWlsIGFzIGZhc3QgYXMgcG9zc2libGUu
IikKKyAgICBwYXJlbnRfY29tbWFuZCA9IG1ha2Vfb3B0aW9uKCItLXBhcmVudC1jb21tYW5kIiwg
YWN0aW9uPSJzdG9yZSIsIGRlc3Q9InBhcmVudF9jb21tYW5kIiwgZGVmYXVsdD1Ob25lLCBoZWxw
PSIoSW50ZXJuYWwpIFRoZSBjb21tYW5kIHRoYXQgc3Bhd25lZCB0aGlzIGluc3RhbmNlLiIpCisg
ICAgdXBkYXRlID0gbWFrZV9vcHRpb24oIi0tbm8tdXBkYXRlIiwgYWN0aW9uPSJzdG9yZV9mYWxz
ZSIsIGRlc3Q9InVwZGF0ZSIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9uJ3QgdXBkYXRlIHRoZSB3
b3JraW5nIGRpcmVjdG9yeS4iKQorICAgIGJ1aWxkID0gbWFrZV9vcHRpb24oIi0tbm8tYnVpbGQi
LCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0iYnVpbGQiLCBkZWZhdWx0PVRydWUsIGhlbHA9
IkNvbW1pdCB3aXRob3V0IGJ1aWxkaW5nIGZpcnN0LCBpbXBsaWVzIC0tbm8tdGVzdC4iKQorICAg
IHRlc3QgPSBtYWtlX29wdGlvbigiLS1uby10ZXN0IiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRl
c3Q9InRlc3QiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkNvbW1pdCB3aXRob3V0IHJ1bm5pbmcgcnVu
LXdlYmtpdC10ZXN0cy4iKQorICAgIGNsb3NlX2J1ZyA9IG1ha2Vfb3B0aW9uKCItLW5vLWNsb3Nl
IiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNsb3NlX2J1ZyIsIGRlZmF1bHQ9VHJ1ZSwg
aGVscD0iTGVhdmUgYnVnIG9wZW4gYWZ0ZXIgbGFuZGluZy4iKQorICAgIHBvcnQgPSBtYWtlX29w
dGlvbigiLS1wb3J0IiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InBvcnQiLCBkZWZhdWx0PU5vbmUs
IGhlbHA9IlNwZWNpZnkgYSBwb3J0IChlLmcuLCBtYWMsIHF0LCBndGssIC4uLikuIikKKworCitj
bGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdG9vbCwg
b3B0aW9ucyk6CisgICAgICAgIHNlbGYuX3Rvb2wgPSB0b29sCisgICAgICAgIHNlbGYuX29wdGlv
bnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYuX3BvcnQgPSBOb25lCisKKyAgICBkZWYgX3J1bl9z
Y3JpcHQoc2VsZiwgc2NyaXB0X25hbWUsIHF1aWV0PUZhbHNlLCBwb3J0PVdlYktpdFBvcnQpOgor
ICAgICAgICBsb2coIlJ1bm5pbmcgJXMiICUgc2NyaXB0X25hbWUpCisgICAgICAgIHNlbGYuX3Rv
b2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbChwb3J0LnNjcmlwdF9wYXRoKHNjcmlw
dF9uYW1lKSwgcXVpZXQpCisKKyAgICAjIEZJWE1FOiBUaGUgcG9ydCBzaG91bGQgbGl2ZSBvbiB0
aGUgdG9vbC4KKyAgICBkZWYgcG9ydChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fcG9ydDoKKyAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9wb3J0CisgICAgICAgIHNlbGYuX3BvcnQgPSBXZWJLaXRQ
b3J0LnBvcnQoc2VsZi5fb3B0aW9ucy5wb3J0KQorICAgICAgICByZXR1cm4gc2VsZi5fcG9ydAor
CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9wdGlvbnMoY2xzKToKKyAgICAgICAgcmV0dXJu
IFtdCisKKyAgICBkZWYgcnVuKHNlbGYsIHRvb2wpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1l
bnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKKworCitjbGFzcyBBYnN0cmFj
dFBhdGNoU3RlcChBYnN0cmFjdFN0ZXApOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b29sLCBv
cHRpb25zLCBwYXRjaCk6CisgICAgICAgIEFic3RyYWN0U3RlcC5fX2luaXRfXyhzZWxmLCB0b29s
LCBvcHRpb25zKQorICAgICAgICBzZWxmLl9wYXRjaCA9IHBhdGNoCisKKworY2xhc3MgUHJlcGFy
ZUNoYW5nZWxvZ1N0ZXAoQWJzdHJhY3RTdGVwKToKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAg
ICBzZWxmLl9ydW5fc2NyaXB0KCJwcmVwYXJlLUNoYW5nZUxvZyIpCisKKworY2xhc3MgQ2xlYW5X
b3JraW5nRGlyZWN0b3J5U3RlcChBYnN0cmFjdFN0ZXApOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCB0b29sLCBvcHRpb25zLCBhbGxvd19sb2NhbF9jb21taXRzPUZhbHNlKToKKyAgICAgICAgQWJz
dHJhY3RTdGVwLl9faW5pdF9fKHNlbGYsIHRvb2wsIG9wdGlvbnMpCisgICAgICAgIHNlbGYuX2Fs
bG93X2xvY2FsX2NvbW1pdHMgPSBhbGxvd19sb2NhbF9jb21taXRzCisKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgb3B0aW9ucyhjbHMpOgogICAgICAgICByZXR1cm4gWwotICAgICAgICAgICAg
bWFrZV9vcHRpb24oIi0tZm9yY2UtY2xlYW4iLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJm
b3JjZV9jbGVhbiIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IkNsZWFuIHdvcmtpbmcgZGlyZWN0b3J5
IGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIChyZW1vdmVzIGxvY2FsIGNoYW5nZXMgYW5kIGNvbW1p
dHMpIiksCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby1jbGVhbiIsIGFjdGlvbj0ic3Rv
cmVfZmFsc2UiLCBkZXN0PSJjbGVhbiIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9uJ3QgY2hlY2sg
aWYgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IGlzIGNsZWFuIGJlZm9yZSBhcHBseWluZyBwYXRjaGVz
IiksCisgICAgICAgICAgICBDb21tYW5kT3B0aW9ucy5mb3JjZV9jbGVhbiwKKyAgICAgICAgICAg
IENvbW1hbmRPcHRpb25zLmNsZWFuLAogICAgICAgICBdCiAKLSAgICAjIEZJWE1FOiBUaGVzZSBk
aXN0aW5jdGlvbnMgYXJlIGJvZ3VzLiAgV2UgbmVlZCBhIGJldHRlciBtb2RlbCBmb3IgaGFuZGxp
bmcgb3B0aW9ucy4KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGJ1aWxkX29wdGlvbnMoKToK
KyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBvcy5jaGRpcihzZWxmLl90b29sLl9zY20uY2hl
Y2tvdXRfcm9vdCkKKyAgICAgICAgaWYgbm90IHNlbGYuX2FsbG93X2xvY2FsX2NvbW1pdHM6Cisg
ICAgICAgICAgICBzZWxmLl90b29sLnNjbSgpLmVuc3VyZV9ub19sb2NhbF9jb21taXRzKHNlbGYu
X29wdGlvbnMuZm9yY2VfY2xlYW4pCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuY2xlYW46Cisg
ICAgICAgICAgICBzZWxmLl90b29sLnNjbSgpLmVuc3VyZV9jbGVhbl93b3JraW5nX2RpcmVjdG9y
eShmb3JjZV9jbGVhbj1zZWxmLl9vcHRpb25zLmZvcmNlX2NsZWFuKQorCisKK2NsYXNzIFVwZGF0
ZVN0ZXAoQWJzdHJhY3RTdGVwKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9ucyhj
bHMpOgogICAgICAgICByZXR1cm4gWwotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0taWdub3Jl
LWJ1aWxkZXJzIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNoZWNrX2J1aWxkZXJzIiwg
ZGVmYXVsdD1UcnVlLCBoZWxwPSJEb24ndCBjaGVjayB0byBzZWUgaWYgdGhlIGJ1aWxkLndlYmtp
dC5vcmcgYnVpbGRlcnMgYXJlIGdyZWVuIGJlZm9yZSBsYW5kaW5nLiIpLAotICAgICAgICAgICAg
bWFrZV9vcHRpb24oIi0tcXVpZXQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJxdWlldCIs
IGRlZmF1bHQ9RmFsc2UsIGhlbHA9IlByb2R1Y2UgbGVzcyBjb25zb2xlIG91dHB1dC4iKSwKLSAg
ICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW5vbi1pbnRlcmFjdGl2ZSIsIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIsIGRlc3Q9Im5vbl9pbnRlcmFjdGl2ZSIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik5ldmVy
IHByb21wdCB0aGUgdXNlciwgZmFpbCBhcyBmYXN0IGFzIHBvc3NpYmxlLiIpLAotICAgICAgICAg
ICAgbWFrZV9vcHRpb24oIi0tcGFyZW50LWNvbW1hbmQiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0i
cGFyZW50X2NvbW1hbmQiLCBkZWZhdWx0PU5vbmUsIGhlbHA9IihJbnRlcm5hbCkgVGhlIGNvbW1h
bmQgdGhhdCBzcGF3bmVkIHRoaXMgaW5zdGFuY2UuIiksCi0gICAgICAgIF0gKyBXZWJLaXRQb3J0
LnBvcnRfb3B0aW9ucygpCisgICAgICAgICAgICBDb21tYW5kT3B0aW9ucy51cGRhdGUsCisgICAg
ICAgICAgICBDb21tYW5kT3B0aW9ucy5wb3J0LAorICAgICAgICBdCiAKLSAgICBAc3RhdGljbWV0
aG9kCi0gICAgZGVmIGxhbmRfb3B0aW9ucygpOgorICAgIGRlZiBydW4oc2VsZik6CisgICAgICAg
IGlmIG5vdCBzZWxmLl9vcHRpb25zLnVwZGF0ZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAg
ICBsb2coIlVwZGF0aW5nIHdvcmtpbmcgZGlyZWN0b3J5IikKKyAgICAgICAgc2VsZi5fdG9vbC5l
eGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKHNlbGYucG9ydCgpLnVwZGF0ZV93ZWJraXRf
Y29tbWFuZCgpKQorCisKK2NsYXNzIEFwcGx5UGF0Y2hTdGVwKEFic3RyYWN0UGF0Y2hTdGVwKToK
KyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9ucyhjbHMpOgogICAgICAgICByZXR1cm4g
WwotICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tdXBkYXRlIiwgYWN0aW9uPSJzdG9yZV9m
YWxzZSIsIGRlc3Q9InVwZGF0ZSIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9uJ3QgdXBkYXRlIHRo
ZSB3b3JraW5nIGRpcmVjdG9yeS4iKSwKLSAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW5vLWJ1
aWxkIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImJ1aWxkIiwgZGVmYXVsdD1UcnVlLCBo
ZWxwPSJDb21taXQgd2l0aG91dCBidWlsZGluZyBmaXJzdCwgaW1wbGllcyAtLW5vLXRlc3QuIiks
Ci0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1uby10ZXN0IiwgYWN0aW9uPSJzdG9yZV9mYWxz
ZSIsIGRlc3Q9InRlc3QiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkNvbW1pdCB3aXRob3V0IHJ1bm5p
bmcgcnVuLXdlYmtpdC10ZXN0cy4iKSwKLSAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW5vLWNs
b3NlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNsb3NlX2J1ZyIsIGRlZmF1bHQ9VHJ1
ZSwgaGVscD0iTGVhdmUgYnVnIG9wZW4gYWZ0ZXIgbGFuZGluZy4iKSwKKyAgICAgICAgICAgIENv
bW1hbmRPcHRpb25zLm5vbl9pbnRlcmFjdGl2ZSwKICAgICAgICAgXQogCi0gICAgZGVmIF9ydW5f
c2NyaXB0KGNscywgc2NyaXB0X25hbWUsIHF1aWV0PUZhbHNlLCBwb3J0PVdlYktpdFBvcnQpOgot
ICAgICAgICBsb2coIlJ1bm5pbmcgJXMiICUgc2NyaXB0X25hbWUpCi0gICAgICAgIHJ1bl9hbmRf
dGhyb3dfaWZfZmFpbChwb3J0LnNjcmlwdF9wYXRoKHNjcmlwdF9uYW1lKSwgcXVpZXQpCisgICAg
ZGVmIHJ1bihzZWxmKToKKyAgICAgICAgbG9nKCJQcm9jZXNzaW5nIHBhdGNoICVzIGZyb20gYnVn
ICVzLiIgJSAoc2VsZi5fcGF0Y2hbImlkIl0sIHNlbGYuX3BhdGNoWyJidWdfaWQiXSkpCisgICAg
ICAgIHNlbGYuX3Rvb2wuc2NtKCkuYXBwbHlfcGF0Y2goc2VsZi5fcGF0Y2gsIGZvcmNlPXNlbGYu
X29wdGlvbnMubm9uX2ludGVyYWN0aXZlKQogCi0gICAgZGVmIHByZXBhcmVfY2hhbmdlbG9nKHNl
bGYpOgotICAgICAgICBzZWxmLnJ1bl9zY3JpcHQoInByZXBhcmUtQ2hhbmdlTG9nIikKIAotICAg
IGRlZiBjbGVhbl93b3JraW5nX2RpcmVjdG9yeShzZWxmLCBzY20sIG9wdGlvbnMsIGFsbG93X2xv
Y2FsX2NvbW1pdHM9RmFsc2UpOgotICAgICAgICBvcy5jaGRpcihzY20uY2hlY2tvdXRfcm9vdCkK
LSAgICAgICAgaWYgbm90IGFsbG93X2xvY2FsX2NvbW1pdHM6Ci0gICAgICAgICAgICBzY20uZW5z
dXJlX25vX2xvY2FsX2NvbW1pdHMob3B0aW9ucy5mb3JjZV9jbGVhbikKLSAgICAgICAgaWYgb3B0
aW9ucy5jbGVhbjoKLSAgICAgICAgICAgIHNjbS5lbnN1cmVfY2xlYW5fd29ya2luZ19kaXJlY3Rv
cnkoZm9yY2VfY2xlYW49b3B0aW9ucy5mb3JjZV9jbGVhbikKK2NsYXNzIEVuc3VyZUJ1aWxkZXJz
QXJlR3JlZW5TdGVwKEFic3RyYWN0U3RlcCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG9w
dGlvbnMoY2xzKToKKyAgICAgICAgcmV0dXJuIFsKKyAgICAgICAgICAgIENvbW1hbmRPcHRpb25z
LmNoZWNrX2J1aWxkZXJzLAorICAgICAgICBdCiAKLSAgICBkZWYgdXBkYXRlKHNlbGYsIHBvcnQ9
V2ViS2l0UG9ydCk6Ci0gICAgICAgIGxvZygiVXBkYXRpbmcgd29ya2luZyBkaXJlY3RvcnkiKQot
ICAgICAgICBydW5fYW5kX3Rocm93X2lmX2ZhaWwocG9ydC51cGRhdGVfd2Via2l0X2NvbW1hbmQo
KSkKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5jaGVj
a19idWlsZGVyczoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBub3Qgc2VsZi5fdG9v
bC5idWlsZGJvdC5jb3JlX2J1aWxkZXJzX2FyZV9ncmVlbigpOgorICAgICAgICAgICAgZXJyb3Io
IkJ1aWxkZXJzIGF0ICVzIGFyZSByZWQsIHBsZWFzZSBkbyBub3QgY29tbWl0LiAgUGFzcyAtLWln
bm9yZS1idWlsZGVycyB0byBieXBhc3MgdGhpcyBjaGVjay4iICUgKHNlbGYuX3Rvb2wuYnVpbGRi
b3QuYnVpbGRib3RfaG9zdCkpCiAKLSAgICBkZWYgcnVuX3Rlc3RzKHNlbGYsIGxhdW5jaF9zYWZh
cmksIGZhaWxfZmFzdD1GYWxzZSwgcXVpZXQ9RmFsc2UsIHBvcnQ9V2ViS2l0UG9ydCk6Ci0gICAg
ICAgIGFyZ3MgPSBwb3J0LnJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZCgpCi0gICAgICAgIGlmIG5v
dCBsYXVuY2hfc2FmYXJpOgorCitjbGFzcyBCdWlsZFN0ZXAoQWJzdHJhY3RTdGVwKToKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgb3B0aW9ucyhjbHMpOgorICAgICAgICByZXR1cm4gWworICAg
ICAgICAgICAgQ29tbWFuZE9wdGlvbnMuYnVpbGQsCisgICAgICAgICAgICBDb21tYW5kT3B0aW9u
cy5xdWlldCwKKyAgICAgICAgXQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgaWYgbm90
IHNlbGYuX29wdGlvbnMuYnVpbGQ6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgbG9nKCJC
dWlsZGluZyBXZWJLaXQiKQorICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Ro
cm93X2lmX2ZhaWwoc2VsZi5wb3J0KCkuYnVpbGRfd2Via2l0X2NvbW1hbmQoKSwgc2VsZi5fb3B0
aW9ucy5xdWlldCkKKworCitjbGFzcyBDaGVja1N0eWxlU3RlcChBYnN0cmFjdFN0ZXApOgorICAg
IGRlZiBydW4oc2VsZik6CisgICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoImNoZWNrLXdlYmtpdC1z
dHlsZSIpCisKKworY2xhc3MgUnVuVGVzdHNTdGVwKEFic3RyYWN0U3RlcCk6CisgICAgQGNsYXNz
bWV0aG9kCisgICAgZGVmIG9wdGlvbnMoY2xzKToKKyAgICAgICAgcmV0dXJuIFsKKyAgICAgICAg
ICAgIENvbW1hbmRPcHRpb25zLmJ1aWxkLAorICAgICAgICAgICAgQ29tbWFuZE9wdGlvbnMudGVz
dCwKKyAgICAgICAgICAgIENvbW1hbmRPcHRpb25zLm5vbl9pbnRlcmFjdGl2ZSwKKyAgICAgICAg
ICAgIENvbW1hbmRPcHRpb25zLnF1aWV0LAorICAgICAgICAgICAgQ29tbWFuZE9wdGlvbnMucG9y
dCwKKyAgICAgICAgXQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYu
X29wdGlvbnMuYnVpbGQ6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbm90IHNlbGYu
X29wdGlvbnMudGVzdDoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBhcmdzID0gc2VsZi5w
b3J0KCkucnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKCkKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy5ub25faW50ZXJhY3RpdmU6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1uby1sYXVuY2gt
c2FmYXJpIikKLSAgICAgICAgaWYgcXVpZXQ6Ci0gICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1x
dWlldCIpCi0gICAgICAgIGlmIGZhaWxfZmFzdDoKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCIt
LWV4aXQtYWZ0ZXItbi1mYWlsdXJlcz0xIikKLSAgICAgICAgcnVuX2FuZF90aHJvd19pZl9mYWls
KGFyZ3MpCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucXVpZXQ6CisgICAgICAgICAgICBhcmdz
LmFwcGVuZCgiLS1xdWlldCIpCisgICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRf
dGhyb3dfaWZfZmFpbChhcmdzKQorCisKK2NsYXNzIENvbW1pdFN0ZXAoQWJzdHJhY3RTdGVwKToK
KyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBjb21taXRfbWVzc2FnZSA9IHNlbGYuX3Rvb2wu
c2NtKCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KCkKKyAgICAgICAgcmV0dXJuIHNl
bGYuX3Rvb2wuc2NtKCkuY29tbWl0X3dpdGhfbWVzc2FnZShjb21taXRfbWVzc2FnZS5tZXNzYWdl
KCkpCisKKworY2xhc3MgQ2xvc2VQYXRjaFN0ZXAoQWJzdHJhY3RQYXRjaFN0ZXApOgorICAgIGRl
ZiBydW4oc2VsZiwgY29tbWl0X2xvZyk6CisgICAgICAgIGNvbW1lbnRfdGV4dCA9IGJ1Z19jb21t
ZW50X2Zyb21fY29tbWl0X3RleHQoc2VsZi5fdG9vbC5zY20oKSwgY29tbWl0X2xvZykKKyAgICAg
ICAgc2VsZi5fdG9vbC5idWdzLmNsZWFyX2F0dGFjaG1lbnRfZmxhZ3Moc2VsZi5fcGF0Y2hbImlk
Il0sIGNvbW1lbnRfdGV4dCkKKworCitjbGFzcyBDbG9zZUJ1Z1N0ZXAoQWJzdHJhY3RQYXRjaFN0
ZXApOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBvcHRpb25zKGNscyk6CisgICAgICAgIHJl
dHVybiBbCisgICAgICAgICAgICBDb21tYW5kT3B0aW9ucy5jbG9zZV9idWcsCisgICAgICAgIF0K
IAotICAgIGRlZiBlbnN1cmVfYnVpbGRlcnNfYXJlX2dyZWVuKHNlbGYsIGJ1aWxkYm90LCBvcHRp
b25zKToKLSAgICAgICAgaWYgbm90IG9wdGlvbnMuY2hlY2tfYnVpbGRlcnMgb3IgYnVpbGRib3Qu
Y29yZV9idWlsZGVyc19hcmVfZ3JlZW4oKToKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBp
ZiBub3Qgc2VsZi5fb3B0aW9ucy5jbG9zZV9idWc6CiAgICAgICAgICAgICByZXR1cm4KLSAgICAg
ICAgZXJyb3IoIkJ1aWxkZXJzIGF0ICVzIGFyZSByZWQsIHBsZWFzZSBkbyBub3QgY29tbWl0LiAg
UGFzcyAtLWlnbm9yZS1idWlsZGVycyB0byBieXBhc3MgdGhpcyBjaGVjay4iICUgKGJ1aWxkYm90
LmJ1aWxkYm90X2hvc3QpKQorICAgICAgICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUg
bm8gcj8gb3IgcisgcGF0Y2hlcyBvbiB0aGUgYnVnIGJlZm9yZSBjbG9zaW5nLgorICAgICAgICAj
IEFzc3VtZSB0aGF0IHItIHBhdGNoZXMgYXJlIGp1c3QgcHJldmlvdXMgcGF0Y2hlcyBzb21lb25l
IGZvcmdvdCB0byBvYnNvbGV0ZS4KKyAgICAgICAgcGF0Y2hlcyA9IHNlbGYuX3Rvb2wuYnVncy5m
ZXRjaF9wYXRjaGVzX2Zyb21fYnVnKHNlbGYuX3BhdGNoWyJidWdfaWQiXSkKKyAgICAgICAgZm9y
IHBhdGNoIGluIHBhdGNoZXM6CisgICAgICAgICAgICByZXZpZXdfZmxhZyA9IHBhdGNoLmdldCgi
cmV2aWV3IikKKyAgICAgICAgICAgIGlmIHJldmlld19mbGFnID09ICI/IiBvciByZXZpZXdfZmxh
ZyA9PSAiKyI6CisgICAgICAgICAgICAgICAgbG9nKCJOb3QgY2xvc2luZyBidWcgJXMgYXMgYXR0
YWNobWVudCAlcyBoYXMgcmV2aWV3PSVzLiAgQXNzdW1pbmcgdGhlcmUgYXJlIG1vcmUgcGF0Y2hl
cyB0byBsYW5kIGZyb20gdGhpcyBidWcuIiAlIChwYXRjaFsiYnVnX2lkIl0sIHBhdGNoWyJpZCJd
LCByZXZpZXdfZmxhZykpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuX3Rv
b2wuYnVncy5jbG9zZV9idWdfYXNfZml4ZWQoc2VsZi5fcGF0Y2hbImJ1Z19pZCJdLCAiQWxsIHJl
dmlld2VkIHBhdGNoZXMgaGF2ZSBiZWVuIGxhbmRlZC4gIENsb3NpbmcgYnVnLiIpCiAKLSAgICBk
ZWYgYnVpbGRfd2Via2l0KHNlbGYsIHF1aWV0PUZhbHNlLCBwb3J0PVdlYktpdFBvcnQpOgotICAg
ICAgICBsb2coIkJ1aWxkaW5nIFdlYktpdCIpCi0gICAgICAgIHJ1bl9hbmRfdGhyb3dfaWZfZmFp
bChwb3J0LmJ1aWxkX3dlYmtpdF9jb21tYW5kKCksIHF1aWV0KQogCi0gICAgZGVmIGNoZWNrX3N0
eWxlKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5fc2NyaXB0KCJjaGVjay13ZWJraXQtc3R5bGUi
KQorIyBGSVhNRTogVGhpcyBjbGFzcyBpcyBhIGRpbm9zYXVyIGFuZCBzaG91bGQgYmUgZXh0aW5j
dCBzb29uLgorY2xhc3MgQnVpbGRTdGVwczoKKyAgICAjIEZJWE1FOiBUaGUgb3B0aW9ucyBzaG91
bGQgcmVhbGx5IGxpdmUgb24gZWFjaCAiU3RlcCIgb2JqZWN0LgorICAgIEBzdGF0aWNtZXRob2QK
KyAgICBkZWYgY2xlYW5pbmdfb3B0aW9ucygpOgorICAgICAgICByZXR1cm4gWworICAgICAgICAg
ICAgQ29tbWFuZE9wdGlvbnMuZm9yY2VfY2xlYW4sCisgICAgICAgICAgICBDb21tYW5kT3B0aW9u
cy5jbGVhbiwKKyAgICAgICAgXQorCisgICAgIyBGSVhNRTogVGhlc2UgZGlzdGluY3Rpb25zIGFy
ZSBib2d1cy4gIFdlIG5lZWQgYSBiZXR0ZXIgbW9kZWwgZm9yIGhhbmRsaW5nIG9wdGlvbnMuCisg
ICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBidWlsZF9vcHRpb25zKCk6CisgICAgICAgIHJldHVy
biBbCisgICAgICAgICAgICBDb21tYW5kT3B0aW9ucy5jaGVja19idWlsZGVycywKKyAgICAgICAg
ICAgIENvbW1hbmRPcHRpb25zLnF1aWV0LAorICAgICAgICAgICAgQ29tbWFuZE9wdGlvbnMubm9u
X2ludGVyYWN0aXZlLAorICAgICAgICAgICAgQ29tbWFuZE9wdGlvbnMucGFyZW50X2NvbW1hbmQs
CisgICAgICAgICAgICBDb21tYW5kT3B0aW9ucy5wb3J0LAorICAgICAgICBdCisKKyAgICBAc3Rh
dGljbWV0aG9kCisgICAgZGVmIGxhbmRfb3B0aW9ucygpOgorICAgICAgICByZXR1cm4gWworICAg
ICAgICAgICAgQ29tbWFuZE9wdGlvbnMudXBkYXRlLAorICAgICAgICAgICAgQ29tbWFuZE9wdGlv
bnMuYnVpbGQsCisgICAgICAgICAgICBDb21tYW5kT3B0aW9ucy50ZXN0LAorICAgICAgICAgICAg
Q29tbWFuZE9wdGlvbnMuY2xvc2VfYnVnLAorICAgICAgICBdCiAKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9kb3dubG9hZC5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9kb3dubG9hZC5weQppbmRleCAzYmZhNTVmLi4yZTM5
ODk5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZG93
bmxvYWQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Rvd25s
b2FkLnB5CkBAIC0zMywyMCArMzMsMTcgQEAgaW1wb3J0IG9zCiBmcm9tIG9wdHBhcnNlIGltcG9y
dCBtYWtlX29wdGlvbgogCiBmcm9tIG1vZHVsZXMuYnVnemlsbGEgaW1wb3J0IHBhcnNlX2J1Z19p
ZAotZnJvbSBtb2R1bGVzLmJ1aWxkc3RlcHMgaW1wb3J0IEJ1aWxkU3RlcHMKK2Zyb20gbW9kdWxl
cy5idWlsZHN0ZXBzIGltcG9ydCBCdWlsZFN0ZXBzLCBFbnN1cmVCdWlsZGVyc0FyZUdyZWVuU3Rl
cCwgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5U3RlcCwgVXBkYXRlU3RlcCwgQ2hlY2tTdHlsZVN0ZXAs
IFByZXBhcmVDaGFuZ2Vsb2dTdGVwLCBDbGVhbldvcmtpbmdEaXJlY3RvcnlTdGVwCiBmcm9tIG1v
ZHVsZXMuY2hhbmdlbG9ncyBpbXBvcnQgQ2hhbmdlTG9nCiBmcm9tIG1vZHVsZXMuY29tbWVudHMg
aW1wb3J0IGJ1Z19jb21tZW50X2Zyb21fY29tbWl0X3RleHQKIGZyb20gbW9kdWxlcy5ncmFtbWFy
IGltcG9ydCBwbHVyYWxpemUKLWZyb20gbW9kdWxlcy5sYW5kaW5nc2VxdWVuY2UgaW1wb3J0IExh
bmRpbmdTZXF1ZW5jZSwgQ29uZGl0aW9uYWxMYW5kaW5nU2VxdWVuY2UKK2Zyb20gbW9kdWxlcy5s
YW5kaW5nc2VxdWVuY2UgaW1wb3J0IExhbmRpbmdTZXF1ZW5jZQogZnJvbSBtb2R1bGVzLmxvZ2dp
bmcgaW1wb3J0IGVycm9yLCBsb2cKIGZyb20gbW9kdWxlcy5tdWx0aWNvbW1hbmR0b29sIGltcG9y
dCBDb21tYW5kCiBmcm9tIG1vZHVsZXMucHJvY2Vzc3V0aWxzIGltcG9ydCBTY3JpcHRFcnJvcgog
CiAKLWNsYXNzIEJ1aWxkU2VxdWVuY2UoQ29uZGl0aW9uYWxMYW5kaW5nU2VxdWVuY2UpOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCB0b29sKToKLSAgICAgICAgQ29uZGl0aW9uYWxM
YW5kaW5nU2VxdWVuY2UuX19pbml0X18oc2VsZiwgTm9uZSwgb3B0aW9ucywgdG9vbCkKLQorY2xh
c3MgQnVpbGRTZXF1ZW5jZShMYW5kaW5nU2VxdWVuY2UpOgogICAgIGRlZiBydW4oc2VsZik6CiAg
ICAgICAgIHNlbGYuY2xlYW4oKQogICAgICAgICBzZWxmLnVwZGF0ZSgpCkBAIC02Myw3ICs2MCw3
IEBAIGNsYXNzIEJ1aWxkKENvbW1hbmQpOgogICAgICAgICBDb21tYW5kLl9faW5pdF9fKHNlbGYs
ICJVcGRhdGUgd29ya2luZyBjb3B5IGFuZCBidWlsZCIsICIiLCBvcHRpb25zKQogCiAgICAgZGVm
IGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIHNlcXVlbmNlID0g
QnVpbGRTZXF1ZW5jZShvcHRpb25zLCB0b29sKQorICAgICAgICBzZXF1ZW5jZSA9IEJ1aWxkU2Vx
dWVuY2UoTm9uZSwgb3B0aW9ucywgdG9vbCkKICAgICAgICAgc2VxdWVuY2UucnVuX2FuZF9oYW5k
bGVfZXJyb3JzKCkKIAogCkBAIC0xMDcsOSArMTA0LDEwIEBAIGNsYXNzIFdlYktpdEFwcGx5aW5n
U2NyaXB0czoKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgc2V0dXBfZm9yX3BhdGNoX2Fw
cGx5KHRvb2wsIG9wdGlvbnMpOgotICAgICAgICB0b29sLnN0ZXBzLmNsZWFuX3dvcmtpbmdfZGly
ZWN0b3J5KHRvb2wuc2NtKCksIG9wdGlvbnMsIGFsbG93X2xvY2FsX2NvbW1pdHM9VHJ1ZSkKLSAg
ICAgICAgaWYgb3B0aW9ucy51cGRhdGU6Ci0gICAgICAgICAgICB0b29sLnN0ZXBzLnVwZGF0ZSgp
CisgICAgICAgIGNsZWFuX3N0ZXAgPSBDbGVhbldvcmtpbmdEaXJlY3RvcnlTdGVwKHRvb2wsIG9w
dGlvbnMsIGFsbG93X2xvY2FsX2NvbW1pdHM9VHJ1ZSkKKyAgICAgICAgY2xlYW5fc3RlcC5ydW4o
KQorICAgICAgICB1cGRhdGVfc3RlcCA9IFVwZGF0ZVN0ZXAodG9vbCwgb3B0aW9ucykKKyAgICAg
ICAgdXBkYXRlX3N0ZXAucnVuKCkKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgYXBwbHlf
cGF0Y2hlc193aXRoX29wdGlvbnMoc2NtLCBwYXRjaGVzLCBvcHRpb25zKToKQEAgLTEyNCwxMCAr
MTIyLDcgQEAgY2xhc3MgV2ViS2l0QXBwbHlpbmdTY3JpcHRzOgogICAgICAgICAgICAgICAgIHNj
bS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoY29tbWl0X21lc3NhZ2UubWVzc2FnZSgpIG9y
IHBhdGNoWyJuYW1lIl0pCiAKIAotY2xhc3MgTGFuZERpZmZTZXF1ZW5jZShDb25kaXRpb25hbExh
bmRpbmdTZXF1ZW5jZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGNoLCBvcHRpb25zLCB0
b29sKToKLSAgICAgICAgQ29uZGl0aW9uYWxMYW5kaW5nU2VxdWVuY2UuX19pbml0X18oc2VsZiwg
cGF0Y2gsIG9wdGlvbnMsIHRvb2wpCi0KK2NsYXNzIExhbmREaWZmU2VxdWVuY2UoTGFuZGluZ1Nl
cXVlbmNlKToKICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2J1aWxkZXJz
KCkKICAgICAgICAgc2VsZi5idWlsZCgpCkBAIC0xODksNyArMTg0LDcgQEAgY2xhc3MgTGFuZERp
ZmYoQ29tbWFuZCk6CiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6
CiAgICAgICAgIGJ1Z19pZCA9IChhcmdzIGFuZCBhcmdzWzBdKSBvciBwYXJzZV9idWdfaWQodG9v
bC5zY20oKS5jcmVhdGVfcGF0Y2goKSkKIAotICAgICAgICB0b29sLnN0ZXBzLmVuc3VyZV9idWls
ZGVyc19hcmVfZ3JlZW4odG9vbC5idWlsZGJvdCwgb3B0aW9ucykKKyAgICAgICAgRW5zdXJlQnVp
bGRlcnNBcmVHcmVlblN0ZXAodG9vbCwgb3B0aW9ucykucnVuKCkKIAogICAgICAgICBvcy5jaGRp
cih0b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCiAgICAgICAgIHNlbGYudXBkYXRlX2NoYW5nZWxv
Z3Nfd2l0aF9yZXZpZXdlcihvcHRpb25zLnJldmlld2VyLCBidWdfaWQsIHRvb2wpCkBAIC0yMzQs
OSArMjI5LDYgQEAgY2xhc3MgQWJzdHJhY3RQYXRjaFByb2Nlc3NpbmdDb21tYW5kKENvbW1hbmQp
OgogCiAKIGNsYXNzIENoZWNrU3R5bGVTZXF1ZW5jZShMYW5kaW5nU2VxdWVuY2UpOgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwYXRjaCwgb3B0aW9ucywgdG9vbCk6Ci0gICAgICAgIExhbmRpbmdT
ZXF1ZW5jZS5fX2luaXRfXyhzZWxmLCBwYXRjaCwgb3B0aW9ucywgdG9vbCkKLQogICAgIGRlZiBy
dW4oc2VsZik6CiAgICAgICAgIHNlbGYuY2xlYW4oKQogICAgICAgICBzZWxmLnVwZGF0ZSgpCkBA
IC0yNDUsNyArMjM3LDggQEAgY2xhc3MgQ2hlY2tTdHlsZVNlcXVlbmNlKExhbmRpbmdTZXF1ZW5j
ZSk6CiAKICAgICBkZWYgYnVpbGQoc2VsZik6CiAgICAgICAgICMgSW5zdGVhZCBvZiBidWlsZGlu
Zywgd2UgY2hlY2sgc3R5bGUuCi0gICAgICAgIHNlbGYuX3Rvb2wuc3RlcHMuY2hlY2tfc3R5bGUo
KQorICAgICAgICBzdGVwID0gQ2hlY2tTdHlsZVN0ZXAoc2VsZi5fdG9vbCwgc2VsZi5fb3B0aW9u
cykKKyAgICAgICAgc3RlcC5ydW4oKQogCiAKIGNsYXNzIENoZWNrU3R5bGUoQWJzdHJhY3RQYXRj
aFByb2Nlc3NpbmdDb21tYW5kKToKQEAgLTI2NywxMCArMjYwLDcgQEAgY2xhc3MgQ2hlY2tTdHls
ZShBYnN0cmFjdFBhdGNoUHJvY2Vzc2luZ0NvbW1hbmQpOgogICAgICAgICBzZXF1ZW5jZS5ydW5f
YW5kX2hhbmRsZV9lcnJvcnMoKQogCiAKLWNsYXNzIEJ1aWxkQXR0YWNobWVudFNlcXVlbmNlKENv
bmRpdGlvbmFsTGFuZGluZ1NlcXVlbmNlKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0Y2gs
IG9wdGlvbnMsIHRvb2wpOgotICAgICAgICBMYW5kaW5nU2VxdWVuY2UuX19pbml0X18oc2VsZiwg
cGF0Y2gsIG9wdGlvbnMsIHRvb2wpCi0KK2NsYXNzIEJ1aWxkQXR0YWNobWVudFNlcXVlbmNlKExh
bmRpbmdTZXF1ZW5jZSk6CiAgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgc2VsZi5jbGVhbigp
CiAgICAgICAgIHNlbGYudXBkYXRlKCkKQEAgLTMwNywxMCArMjk3LDEwIEBAIGNsYXNzIEFic3Ry
YWN0UGF0Y2hMYW5kaW5nQ29tbWFuZChBYnN0cmFjdFBhdGNoUHJvY2Vzc2luZ0NvbW1hbmQpOgog
CiAgICAgZGVmIF9wcmVwYXJlX3RvX3Byb2Nlc3Moc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6
CiAgICAgICAgICMgQ2hlY2sgdGhlIHRyZWUgc3RhdHVzIGZpcnN0IHNvIHdlIGNhbiBmYWlsIGVh
cmx5LgotICAgICAgICB0b29sLnN0ZXBzLmVuc3VyZV9idWlsZGVyc19hcmVfZ3JlZW4odG9vbC5i
dWlsZGJvdCwgb3B0aW9ucykKKyAgICAgICAgRW5zdXJlQnVpbGRlcnNBcmVHcmVlblN0ZXAodG9v
bCwgb3B0aW9ucykucnVuKCkKIAogICAgIGRlZiBfcHJvY2Vzc19wYXRjaChzZWxmLCBwYXRjaCwg
b3B0aW9ucywgYXJncywgdG9vbCk6Ci0gICAgICAgIHNlcXVlbmNlID0gQ29uZGl0aW9uYWxMYW5k
aW5nU2VxdWVuY2UocGF0Y2gsIG9wdGlvbnMsIHRvb2wpCisgICAgICAgIHNlcXVlbmNlID0gTGFu
ZGluZ1NlcXVlbmNlKHBhdGNoLCBvcHRpb25zLCB0b29sKQogICAgICAgICBzZXF1ZW5jZS5ydW5f
YW5kX2hhbmRsZV9lcnJvcnMoKQogCiAKQEAgLTM1OCw3ICszNDgsNyBAQCBjbGFzcyBSb2xsb3V0
KENvbW1hbmQpOgogCiAgICAgICAgICMgU2Vjb25kLCBtYWtlIG5ldyBDaGFuZ2VMb2cgZW50cmll
cyBmb3IgdGhpcyByb2xsb3V0LgogICAgICAgICAjIFRoaXMgY291bGQgbW92ZSB0byBwcmVwYXJl
LUNoYW5nZUxvZyBieSBhZGRpbmcgYSAtLXJldmVydD0gb3B0aW9uLgotICAgICAgICB0b29sLnN0
ZXBzLnByZXBhcmVfY2hhbmdlbG9nKCkKKyAgICAgICAgUHJlcGFyZUNoYW5nZWxvZ1N0ZXAodG9v
bCwgTm9uZSkucnVuKCkKICAgICAgICAgZm9yIGNoYW5nZWxvZ19wYXRoIGluIGNoYW5nZWxvZ19w
YXRoczoKICAgICAgICAgICAgIENoYW5nZUxvZyhjaGFuZ2Vsb2dfcGF0aCkudXBkYXRlX2Zvcl9y
ZXZlcnQocmV2aXNpb24pCiAKQEAgLTM4NCw4ICszNzQsOCBAQCBjbGFzcyBSb2xsb3V0KENvbW1h
bmQpOgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBsb2coIkZhaWxlZCB0byBw
YXJzZSBidWcgbnVtYmVyIGZyb20gZGlmZi4gIE5vIGJ1Z3Mgd2lsbCBiZSB1cGRhdGVkL3Jlb3Bl
bmVkIGFmdGVyIHRoZSByb2xsb3V0LiIpCiAKLSAgICAgICAgdG9vbC5zdGVwcy5jbGVhbl93b3Jr
aW5nX2RpcmVjdG9yeSh0b29sLnNjbSgpLCBvcHRpb25zKQotICAgICAgICB0b29sLnN0ZXBzLnVw
ZGF0ZSgpCisgICAgICAgIENsZWFuV29ya2luZ0RpcmVjdG9yeVN0ZXAodG9vbCwgb3B0aW9ucyku
cnVuKCkKKyAgICAgICAgVXBkYXRlU3RlcCh0b29sLCBvcHRpb25zKS5ydW4oKQogICAgICAgICB0
b29sLnNjbSgpLmFwcGx5X3JldmVyc2VfZGlmZihyZXZpc2lvbikKICAgICAgICAgc2VsZi5fY3Jl
YXRlX2NoYW5nZWxvZ3NfZm9yX3JldmVydCh0b29sLCByZXZpc2lvbikKIApkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Vhcmx5X3dhcm5pbmdfc3lzdGVt
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Vhcmx5X3dhcm5pbmdf
c3lzdGVtLnB5CmluZGV4IDc1ZDczNzguLmU4ZWY0MDggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9lYXJseV93YXJuaW5nX3N5c3RlbS5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZWFybHlfd2FybmluZ19zeXN0ZW0u
cHkKQEAgLTI4LDcgKzI4LDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogZnJvbSBtb2R1bGVzLmNvbW1h
bmRzLnF1ZXVlcyBpbXBvcnQgQWJzdHJhY3RSZXZpZXdRdWV1ZQotZnJvbSBtb2R1bGVzLnByb2Nl
c3N1dGlscyBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20gbW9kdWxlcy5leGVjdXRpdmUgaW1wb3J0
IFNjcmlwdEVycm9yCiBmcm9tIG1vZHVsZXMud2Via2l0cG9ydCBpbXBvcnQgV2ViS2l0UG9ydAog
CiBjbGFzcyBBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbShBYnN0cmFjdFJldmlld1F1ZXVlKToK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9xdWV1ZXMu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvcXVldWVzLnB5CmluZGV4
IDVmNzBjZTEuLmI5MDdmMDMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9jb21tYW5kcy9xdWV1ZXMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2Nv
bW1hbmRzL3F1ZXVlcy5weQpAQCAtMzMsMTIgKzMzLDEyIEBAIGltcG9ydCByZQogZnJvbSBkYXRl
dGltZSBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCiAK
K2Zyb20gbW9kdWxlcy5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIG1vZHVsZXMu
Z3JhbW1hciBpbXBvcnQgcGx1cmFsaXplCi1mcm9tIG1vZHVsZXMubGFuZGluZ3NlcXVlbmNlIGlt
cG9ydCBMYW5kaW5nU2VxdWVuY2UsIENvbmRpdGlvbmFsTGFuZGluZ1NlcXVlbmNlLCBMYW5kaW5n
U2VxdWVuY2VFcnJvckhhbmRsZXIKK2Zyb20gbW9kdWxlcy5sYW5kaW5nc2VxdWVuY2UgaW1wb3J0
IExhbmRpbmdTZXF1ZW5jZSwgTGFuZGluZ1NlcXVlbmNlRXJyb3JIYW5kbGVyCiBmcm9tIG1vZHVs
ZXMubG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxvZwogZnJvbSBtb2R1bGVzLm11bHRpY29tbWFuZHRv
b2wgaW1wb3J0IENvbW1hbmQKIGZyb20gbW9kdWxlcy5wYXRjaGNvbGxlY3Rpb24gaW1wb3J0IFBh
dGNoQ29sbGVjdGlvbiwgUGVyc2lzdGVudFBhdGNoQ29sbGVjdGlvbiwgUGVyc2lzdGVudFBhdGNo
Q29sbGVjdGlvbkRlbGVnYXRlCi1mcm9tIG1vZHVsZXMucHJvY2Vzc3V0aWxzIGltcG9ydCBydW5f
YW5kX3Rocm93X2lmX2ZhaWwsIFNjcmlwdEVycm9yCiBmcm9tIG1vZHVsZXMuc3RhdHVzYm90IGlt
cG9ydCBTdGF0dXNCb3QKIGZyb20gbW9kdWxlcy53b3JrcXVldWUgaW1wb3J0IFdvcmtRdWV1ZSwg
V29ya1F1ZXVlRGVsZWdhdGUKIApAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBBYnN0cmFjdFF1ZXVl
KENvbW1hbmQsIFdvcmtRdWV1ZURlbGVnYXRlKToKIAogICAgIGRlZiBydW5fYnVnemlsbGFfdG9v
bChzZWxmLCBhcmdzKToKICAgICAgICAgYnVnemlsbGFfdG9vbF9hcmdzID0gW3NlbGYudG9vbC5w
YXRoKCldICsgbWFwKHN0ciwgYXJncykKLSAgICAgICAgcnVuX2FuZF90aHJvd19pZl9mYWlsKGJ1
Z3ppbGxhX3Rvb2xfYXJncykKKyAgICAgICAgc2VsZi50b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Ro
cm93X2lmX2ZhaWwoYnVnemlsbGFfdG9vbF9hcmdzKQogCiAgICAgZGVmIGxvZ19wcm9ncmVzcyhz
ZWxmLCBwYXRjaF9pZHMpOgogICAgICAgICBsb2coIiVzIGluICVzIFslc10iICUgKHBsdXJhbGl6
ZSgicGF0Y2giLCBsZW4ocGF0Y2hfaWRzKSksIHNlbGYubmFtZSwgIiwgIi5qb2luKG1hcChzdHIs
IHBhdGNoX2lkcykpKSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9j
b21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
Y29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CmluZGV4IGM4Njk5ZTkuLjc1YWJiZTUgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9xdWV1ZXNfdW5pdHRl
c3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL3F1ZXVlc191
bml0dGVzdC5weQpAQCAtNjIsNSArNjIsNSBAQCBjbGFzcyBBYnN0cmFjdFF1ZXVlVGVzdChDb21t
YW5kc1Rlc3QpOgogICAgICAgICBzZWxmLl9hc3NlcnRfb3V0cHV0KHF1ZXVlLnJ1bl9idWd6aWxs
YV90b29sLCBbcnVuX2FyZ3NdLCBleHBlY3RlZF9zdGRvdXQ9dG9vbF9vdXRwdXQpCiAKICAgICBk
ZWYgdGVzdF9ydW5fYnVnemlsbGFfdG9vbChzZWxmKToKLSAgICAgICAgc2VsZi5fYXNzZXJ0X3J1
bl9idWd6aWxsYV90b29sX291dHB1dChbMV0sICIxXG4iKQotICAgICAgICBzZWxmLl9hc3NlcnRf
cnVuX2J1Z3ppbGxhX3Rvb2xfb3V0cHV0KFsib25lIiwgMl0sICJvbmUgMlxuIikKKyAgICAgICAg
c2VsZi5fYXNzZXJ0X3J1bl9idWd6aWxsYV90b29sX291dHB1dChbMV0sICIiKQorICAgICAgICBz
ZWxmLl9hc3NlcnRfcnVuX2J1Z3ppbGxhX3Rvb2xfb3V0cHV0KFsib25lIiwgMl0sICIiKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2xhbmRpbmdzZXF1ZW5jZS5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9sYW5kaW5nc2VxdWVuY2UucHkKaW5kZXggNzJj
Mjk1OS4uZmMyMGJhYSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2xh
bmRpbmdzZXF1ZW5jZS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvbGFuZGlu
Z3NlcXVlbmNlLnB5CkBAIC0zNCw2ICszNCw4IEBAIGZyb20gbW9kdWxlcy5wcm9jZXNzdXRpbHMg
aW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIG1vZHVsZXMuc2NtIGltcG9ydCBDaGVja291dE5lZWRz
VXBkYXRlCiBmcm9tIG1vZHVsZXMud2Via2l0cG9ydCBpbXBvcnQgV2ViS2l0UG9ydAogZnJvbSBt
b2R1bGVzLndvcmtxdWV1ZSBpbXBvcnQgV29ya1F1ZXVlCitmcm9tIG1vZHVsZXMuYnVpbGRzdGVw
cyBpbXBvcnQgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5U3RlcCwgVXBkYXRlU3RlcCwgQXBwbHlQYXRj
aFN0ZXAsIEVuc3VyZUJ1aWxkZXJzQXJlR3JlZW5TdGVwLCBCdWlsZFN0ZXAsIFJ1blRlc3RzU3Rl
cCwgQ29tbWl0U3RlcCwgQ2xvc2VQYXRjaFN0ZXAsIENsb3NlQnVnU3RlcAorCiAKIGNsYXNzIExh
bmRpbmdTZXF1ZW5jZUVycm9ySGFuZGxlcigpOgogICAgIEBjbGFzc21ldGhvZApAQCAtNzUsNjYg
Kzc3LDM3IEBAIGNsYXNzIExhbmRpbmdTZXF1ZW5jZToKICAgICAgICAgICAgIFdvcmtRdWV1ZS5l
eGl0X2FmdGVyX2hhbmRsZWRfZXJyb3IoZSkKIAogICAgIGRlZiBjbGVhbihzZWxmKToKLSAgICAg
ICAgc2VsZi5fdG9vbC5zdGVwcy5jbGVhbl93b3JraW5nX2RpcmVjdG9yeShzZWxmLl90b29sLnNj
bSgpLCBzZWxmLl9vcHRpb25zKQorICAgICAgICBzdGVwID0gQ2xlYW5Xb3JraW5nRGlyZWN0b3J5
U3RlcChzZWxmLl90b29sLCBzZWxmLl9vcHRpb25zKQorICAgICAgICBzdGVwLnJ1bigpCiAKICAg
ICBkZWYgdXBkYXRlKHNlbGYpOgotICAgICAgICBzZWxmLl90b29sLnN0ZXBzLnVwZGF0ZShwb3J0
PXNlbGYuX3BvcnQpCisgICAgICAgIHN0ZXAgPSBVcGRhdGVTdGVwKHNlbGYuX3Rvb2wsIHNlbGYu
X29wdGlvbnMpCisgICAgICAgIHN0ZXAucnVuKCkKIAogICAgIGRlZiBhcHBseV9wYXRjaChzZWxm
KToKLSAgICAgICAgbG9nKCJQcm9jZXNzaW5nIHBhdGNoICVzIGZyb20gYnVnICVzLiIgJSAoc2Vs
Zi5fcGF0Y2hbImlkIl0sIHNlbGYuX3BhdGNoWyJidWdfaWQiXSkpCi0gICAgICAgIHNlbGYuX3Rv
b2wuc2NtKCkuYXBwbHlfcGF0Y2goc2VsZi5fcGF0Y2gsIGZvcmNlPXNlbGYuX29wdGlvbnMubm9u
X2ludGVyYWN0aXZlKQorICAgICAgICBzdGVwID0gQXBwbHlQYXRjaFN0ZXAoc2VsZi5fdG9vbCwg
c2VsZi5fb3B0aW9ucywgc2VsZi5fcGF0Y2gpCisgICAgICAgIHN0ZXAucnVuKCkKIAogICAgIGRl
ZiBjaGVja19idWlsZGVycyhzZWxmKToKLSAgICAgICAgc2VsZi5fdG9vbC5zdGVwcy5lbnN1cmVf
YnVpbGRlcnNfYXJlX2dyZWVuKHNlbGYuX3Rvb2wuYnVpbGRib3QsIHNlbGYuX29wdGlvbnMpCisg
ICAgICAgIHN0ZXAgPSBFbnN1cmVCdWlsZGVyc0FyZUdyZWVuU3RlcChzZWxmLl90b29sLCBzZWxm
Ll9vcHRpb25zKQorICAgICAgICBzdGVwLnJ1bigpCiAKICAgICBkZWYgYnVpbGQoc2VsZik6Ci0g
ICAgICAgIHNlbGYuX3Rvb2wuc3RlcHMuYnVpbGRfd2Via2l0KHF1aWV0PXNlbGYuX29wdGlvbnMu
cXVpZXQsIHBvcnQ9c2VsZi5fcG9ydCkKKyAgICAgICAgc3RlcCA9IEJ1aWxkU3RlcChzZWxmLl90
b29sLCBzZWxmLl9vcHRpb25zKQorICAgICAgICBzdGVwLnJ1bigpCiAKICAgICBkZWYgdGVzdChz
ZWxmKToKLSAgICAgICAgIyBXaGVuIHJ1bm5pbmcgbm9uLWludGVyYWN0aXZlbHkgd2UgZG9uJ3Qg
d2FudCB0byBsYXVuY2ggU2FmYXJpIGFuZCB3ZSB3YW50IHRvIGV4aXQgYWZ0ZXIgdGhlIGZpcnN0
IGZhaWx1cmUuCi0gICAgICAgIHNlbGYuX3Rvb2wuc3RlcHMucnVuX3Rlc3RzKGxhdW5jaF9zYWZh
cmk9bm90IHNlbGYuX29wdGlvbnMubm9uX2ludGVyYWN0aXZlLCBmYWlsX2Zhc3Q9c2VsZi5fb3B0
aW9ucy5ub25faW50ZXJhY3RpdmUsIHF1aWV0PXNlbGYuX29wdGlvbnMucXVpZXQsIHBvcnQ9c2Vs
Zi5fcG9ydCkKKyAgICAgICAgc3RlcCA9IFJ1blRlc3RzU3RlcChzZWxmLl90b29sLCBzZWxmLl9v
cHRpb25zKQorICAgICAgICBzdGVwLnJ1bigpCiAKICAgICBkZWYgY29tbWl0KHNlbGYpOgotICAg
ICAgICBjb21taXRfbWVzc2FnZSA9IHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X21lc3NhZ2VfZm9y
X3RoaXNfY29tbWl0KCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X3dp
dGhfbWVzc2FnZShjb21taXRfbWVzc2FnZS5tZXNzYWdlKCkpCisgICAgICAgIHN0ZXAgPSBDb21t
aXRTdGVwKHNlbGYuX3Rvb2wsIHNlbGYuX29wdGlvbnMpCisgICAgICAgIHJldHVybiBzdGVwLnJ1
bigpCiAKICAgICBkZWYgY2xvc2VfcGF0Y2goc2VsZiwgY29tbWl0X2xvZyk6Ci0gICAgICAgIGNv
bW1lbnRfdGV4dCA9IGJ1Z19jb21tZW50X2Zyb21fY29tbWl0X3RleHQoc2VsZi5fdG9vbC5zY20o
KSwgY29tbWl0X2xvZykKLSAgICAgICAgc2VsZi5fdG9vbC5idWdzLmNsZWFyX2F0dGFjaG1lbnRf
ZmxhZ3Moc2VsZi5fcGF0Y2hbImlkIl0sIGNvbW1lbnRfdGV4dCkKKyAgICAgICAgc3RlcCA9IENs
b3NlUGF0Y2hTdGVwKHNlbGYuX3Rvb2wsIHNlbGYuX29wdGlvbnMsIHNlbGYuX3BhdGNoKQorICAg
ICAgICBzdGVwLnJ1bihjb21taXRfbG9nKQogCiAgICAgZGVmIGNsb3NlX2J1ZyhzZWxmKToKLSAg
ICAgICAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHI/IG9yIHIrIHBhdGNoZXMg
b24gdGhlIGJ1ZyBiZWZvcmUgY2xvc2luZy4KLSAgICAgICAgIyBBc3N1bWUgdGhhdCByLSBwYXRj
aGVzIGFyZSBqdXN0IHByZXZpb3VzIHBhdGNoZXMgc29tZW9uZSBmb3Jnb3QgdG8gb2Jzb2xldGUu
Ci0gICAgICAgIHBhdGNoZXMgPSBzZWxmLl90b29sLmJ1Z3MuZmV0Y2hfcGF0Y2hlc19mcm9tX2J1
ZyhzZWxmLl9wYXRjaFsiYnVnX2lkIl0pCi0gICAgICAgIGZvciBwYXRjaCBpbiBwYXRjaGVzOgot
ICAgICAgICAgICAgcmV2aWV3X2ZsYWcgPSBwYXRjaC5nZXQoInJldmlldyIpCi0gICAgICAgICAg
ICBpZiByZXZpZXdfZmxhZyA9PSAiPyIgb3IgcmV2aWV3X2ZsYWcgPT0gIisiOgotICAgICAgICAg
ICAgICAgIGxvZygiTm90IGNsb3NpbmcgYnVnICVzIGFzIGF0dGFjaG1lbnQgJXMgaGFzIHJldmll
dz0lcy4gIEFzc3VtaW5nIHRoZXJlIGFyZSBtb3JlIHBhdGNoZXMgdG8gbGFuZCBmcm9tIHRoaXMg
YnVnLiIgJSAocGF0Y2hbImJ1Z19pZCJdLCBwYXRjaFsiaWQiXSwgcmV2aWV3X2ZsYWcpKQotICAg
ICAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLl90b29sLmJ1Z3MuY2xvc2VfYnVnX2Fz
X2ZpeGVkKHNlbGYuX3BhdGNoWyJidWdfaWQiXSwgIkFsbCByZXZpZXdlZCBwYXRjaGVzIGhhdmUg
YmVlbiBsYW5kZWQuICBDbG9zaW5nIGJ1Zy4iKQotCi0KLWNsYXNzIENvbmRpdGlvbmFsTGFuZGlu
Z1NlcXVlbmNlKExhbmRpbmdTZXF1ZW5jZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGNo
LCBvcHRpb25zLCB0b29sKToKLSAgICAgICAgTGFuZGluZ1NlcXVlbmNlLl9faW5pdF9fKHNlbGYs
IHBhdGNoLCBvcHRpb25zLCB0b29sKQotCi0gICAgZGVmIHVwZGF0ZShzZWxmKToKLSAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy51cGRhdGU6Ci0gICAgICAgICAgICBMYW5kaW5nU2VxdWVuY2UudXBk
YXRlKHNlbGYpCi0KLSAgICBkZWYgY2hlY2tfYnVpbGRlcnMoc2VsZik6Ci0gICAgICAgIGlmIHNl
bGYuX29wdGlvbnMuYnVpbGQ6Ci0gICAgICAgICAgICBMYW5kaW5nU2VxdWVuY2UuY2hlY2tfYnVp
bGRlcnMoc2VsZikKLQotICAgIGRlZiBidWlsZChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5idWlsZDoKLSAgICAgICAgICAgIExhbmRpbmdTZXF1ZW5jZS5idWlsZChzZWxmKQotCi0g
ICAgZGVmIHRlc3Qoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuYnVpbGQgYW5kIHNl
bGYuX29wdGlvbnMudGVzdDoKLSAgICAgICAgICAgIExhbmRpbmdTZXF1ZW5jZS50ZXN0KHNlbGYp
Ci0KLSAgICBkZWYgY2xvc2VfYnVnKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmNs
b3NlX2J1ZzoKLSAgICAgICAgICAgIExhbmRpbmdTZXF1ZW5jZS5jbG9zZV9idWcoc2VsZikKLQor
ICAgICAgICBzdGVwID0gQ2xvc2VCdWdTdGVwKHNlbGYuX3Rvb2wsIHNlbGYuX29wdGlvbnMsIHNl
bGYuX3BhdGNoKQorICAgICAgICBzdGVwLnJ1bigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvbW9ja19idWd6aWxsYXRvb2wucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L21vZHVsZXMvbW9ja19idWd6aWxsYXRvb2wucHkKaW5kZXggOTYzYTdkNy4uNDdmMzg4MCAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL21vY2tfYnVnemlsbGF0b29sLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9tb2NrX2J1Z3ppbGxhdG9vbC5weQpA
QCAtMTI1LDcgKzEyNSw3IEBAIGNsYXNzIE1vY2tCdWd6aWxsYVRvb2woKToKICAgICBkZWYgX19p
bml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuYnVncyA9IE1vY2tCdWd6aWxsYSgpCiAgICAgICAg
IHNlbGYuYnVpbGRib3QgPSBNb2NrQnVpbGRCb3QoKQotICAgICAgICBzZWxmLnN0ZXBzID0gTW9j
aygpCisgICAgICAgIHNlbGYuZXhlY3V0aXZlID0gTW9jaygpCiAgICAgICAgIHNlbGYuX3NjbSA9
IE1vY2tTQ00oKQogCiAgICAgZGVmIHNjbShzZWxmKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9wcm9jZXNzdXRpbHMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21v
ZHVsZXMvcHJvY2Vzc3V0aWxzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTY4
MWJmLi4wMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9wcm9jZXNzdXRp
bHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotIyBDb3B5cmlnaHQgKGMpIDIw
MDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoYykgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0jIG1ldDoKLSMgCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0jIAotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LWltcG9ydCBvcwotaW1wb3J0IFN0cmluZ0lPCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5
cwotCi1mcm9tIG1vZHVsZXMubG9nZ2luZyBpbXBvcnQgdGVlCi0KLSMgRklYTUU6IFRoZXNlIG1l
dGhvZHMgY291bGQgYWxsIGJlIHVuaWZpZWQgaW50byBvbmUhCi0KLWNsYXNzIFNjcmlwdEVycm9y
KEV4Y2VwdGlvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2U9Tm9uZSwgc2NyaXB0
X2FyZ3M9Tm9uZSwgZXhpdF9jb2RlPU5vbmUsIG91dHB1dD1Ob25lLCBjd2Q9Tm9uZSk6Ci0gICAg
ICAgIGlmIG5vdCBtZXNzYWdlOgotICAgICAgICAgICAgbWVzc2FnZSA9ICdGYWlsZWQgdG8gcnVu
ICIlcyInICUgc2NyaXB0X2FyZ3MKLSAgICAgICAgICAgIGlmIGV4aXRfY29kZToKLSAgICAgICAg
ICAgICAgICBtZXNzYWdlICs9ICIgZXhpdF9jb2RlOiAlZCIgJSBleGl0X2NvZGUKLSAgICAgICAg
ICAgIGlmIGN3ZDoKLSAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICIgY3dkOiAlcyIgJSBjd2QK
LQotICAgICAgICBFeGNlcHRpb24uX19pbml0X18oc2VsZiwgbWVzc2FnZSkKLSAgICAgICAgc2Vs
Zi5zY3JpcHRfYXJncyA9IHNjcmlwdF9hcmdzICMgJ2FyZ3MnIGlzIGFscmVhZHkgdXNlZCBieSBF
eGNlcHRpb24KLSAgICAgICAgc2VsZi5leGl0X2NvZGUgPSBleGl0X2NvZGUKLSAgICAgICAgc2Vs
Zi5vdXRwdXQgPSBvdXRwdXQKLSAgICAgICAgc2VsZi5jd2QgPSBjd2QKLQotICAgIGRlZiBtZXNz
YWdlX3dpdGhfb3V0cHV0KHNlbGYsIG91dHB1dF9saW1pdD01MDApOgotICAgICAgICBpZiBzZWxm
Lm91dHB1dDoKLSAgICAgICAgICAgIGlmIG91dHB1dF9saW1pdCBhbmQgbGVuKHNlbGYub3V0cHV0
KSA+IG91dHB1dF9saW1pdDoKLSAgICAgICAgICAgICAgICAgcmV0dXJuICIlc1xuTGFzdCAlcyBj
aGFyYWN0ZXJzIG9mIG91dHB1dDpcbiVzIiAlIChzZWxmLCBvdXRwdXRfbGltaXQsIHNlbGYub3V0
cHV0Wy1vdXRwdXRfbGltaXQ6XSkKLSAgICAgICAgICAgIHJldHVybiAiJXNcbiVzIiAlIChzZWxm
LCBzZWxmLm91dHB1dCkKLSAgICAgICAgcmV0dXJuIHN0cihzZWxmKQotCi1kZWYgZGVmYXVsdF9l
cnJvcl9oYW5kbGVyKGVycm9yKToKLSAgICByYWlzZSBlcnJvcgotCi1kZWYgaWdub3JlX2Vycm9y
KGVycm9yKToKLSAgICBwYXNzCi0KLWRlZiBydW5fY29tbWFuZF93aXRoX3RlZWRfb3V0cHV0KGFy
Z3MsIHRlZWRfb3V0cHV0KToKLSAgICBjaGlsZF9wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihh
cmdzLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCi0K
LSAgICAjIFVzZSBvdXIgb3duIGN1c3RvbSB3YWl0IGxvb3AgYmVjYXVzZSBQb3BlbiBpZ25vcmVz
IGEgdGVlJ2Qgc3RkZXJyL3N0ZG91dC4KLSAgICAjIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGltcHJv
dmVkIG5vdCB0byBmbGF0dGVuIG91dHB1dCB0byBzdGRvdXQuCi0gICAgd2hpbGUgVHJ1ZToKLSAg
ICAgICAgb3V0cHV0X2xpbmUgPSBjaGlsZF9wcm9jZXNzLnN0ZG91dC5yZWFkbGluZSgpCi0gICAg
ICAgIGlmIG91dHB1dF9saW5lID09ICIiIGFuZCBjaGlsZF9wcm9jZXNzLnBvbGwoKSAhPSBOb25l
OgotICAgICAgICAgICAgcmV0dXJuIGNoaWxkX3Byb2Nlc3MucG9sbCgpCi0gICAgICAgIHRlZWRf
b3V0cHV0LndyaXRlKG91dHB1dF9saW5lKQotCi1kZWYgcnVuX2NvbW1hbmQoYXJncywgY3dkPU5v
bmUsIGlucHV0PU5vbmUsIGVycm9yX2hhbmRsZXI9ZGVmYXVsdF9lcnJvcl9oYW5kbGVyLCByZXR1
cm5fZXhpdF9jb2RlPUZhbHNlLCByZXR1cm5fc3RkZXJyPVRydWUpOgotICAgIGlmIGhhc2F0dHIo
aW5wdXQsICdyZWFkJyk6ICMgQ2hlY2sgaWYgdGhlIGlucHV0IGlzIGEgZmlsZS4KLSAgICAgICAg
c3RkaW4gPSBpbnB1dAotICAgICAgICBzdHJpbmdfdG9fY29tbXVuaWNhdGUgPSBOb25lCi0gICAg
ZWxzZToKLSAgICAgICAgc3RkaW4gPSBzdWJwcm9jZXNzLlBJUEUgaWYgaW5wdXQgZWxzZSBOb25l
Ci0gICAgICAgIHN0cmluZ190b19jb21tdW5pY2F0ZSA9IGlucHV0Ci0gICAgaWYgcmV0dXJuX3N0
ZGVycjoKLSAgICAgICAgc3RkZXJyID0gc3VicHJvY2Vzcy5TVERPVVQKLSAgICBlbHNlOgotICAg
ICAgICBzdGRlcnIgPSBOb25lCi0gICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywg
c3RkaW49c3RkaW4sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdGRlcnIsIGN3ZD1j
d2QpCi0gICAgb3V0cHV0ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZShzdHJpbmdfdG9fY29tbXVuaWNh
dGUpWzBdCi0gICAgZXhpdF9jb2RlID0gcHJvY2Vzcy53YWl0KCkKLSAgICBpZiBleGl0X2NvZGU6
Ci0gICAgICAgIHNjcmlwdF9lcnJvciA9IFNjcmlwdEVycm9yKHNjcmlwdF9hcmdzPWFyZ3MsIGV4
aXRfY29kZT1leGl0X2NvZGUsIG91dHB1dD1vdXRwdXQsIGN3ZD1jd2QpCi0gICAgICAgIGVycm9y
X2hhbmRsZXIoc2NyaXB0X2Vycm9yKQotICAgIGlmIHJldHVybl9leGl0X2NvZGU6Ci0gICAgICAg
IHJldHVybiBleGl0X2NvZGUKLSAgICByZXR1cm4gb3V0cHV0Ci0KLWRlZiBydW5fYW5kX3Rocm93
X2lmX2ZhaWwoYXJncywgcXVpZXQ9RmFsc2UpOgotICAgICMgQ2FjaGUgdGhlIGNoaWxkJ3Mgb3V0
cHV0IGxvY2FsbHkgc28gaXQgY2FuIGJlIHVzZWQgZm9yIGVycm9yIHJlcG9ydHMuCi0gICAgY2hp
bGRfb3V0X2ZpbGUgPSBTdHJpbmdJTy5TdHJpbmdJTygpCi0gICAgaWYgcXVpZXQ6Ci0gICAgICAg
IGRldl9udWxsID0gb3Blbihvcy5kZXZudWxsLCAidyIpCi0gICAgY2hpbGRfc3Rkb3V0ID0gdGVl
KGNoaWxkX291dF9maWxlLCBkZXZfbnVsbCBpZiBxdWlldCBlbHNlIHN5cy5zdGRvdXQpCi0gICAg
ZXhpdF9jb2RlID0gcnVuX2NvbW1hbmRfd2l0aF90ZWVkX291dHB1dChhcmdzLCBjaGlsZF9zdGRv
dXQpCi0gICAgaWYgcXVpZXQ6Ci0gICAgICAgIGRldl9udWxsLmNsb3NlKCkKLQotICAgIGNoaWxk
X291dHB1dCA9IGNoaWxkX291dF9maWxlLmdldHZhbHVlKCkKLSAgICBjaGlsZF9vdXRfZmlsZS5j
bG9zZSgpCi0KLSAgICBpZiBleGl0X2NvZGU6Ci0gICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKHNj
cmlwdF9hcmdzPWFyZ3MsIGV4aXRfY29kZT1leGl0X2NvZGUsIG91dHB1dD1jaGlsZF9vdXRwdXQp
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbS5weQppbmRleCBhMDkyMzZjLi42MTNmODc4IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtLnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvbW9kdWxlcy9zY20ucHkKQEAgLTM1LDggKzM1LDggQEAgaW1wb3J0IHN1YnBy
b2Nlc3MKIAogIyBJbXBvcnQgV2ViS2l0LXNwZWNpZmljIG1vZHVsZXMuCiBmcm9tIG1vZHVsZXMu
Y2hhbmdlbG9ncyBpbXBvcnQgQ2hhbmdlTG9nCitmcm9tIG1vZHVsZXMuZXhlY3V0aXZlIGltcG9y
dCBydW5fY29tbWFuZCwgU2NyaXB0RXJyb3IsIGRlZmF1bHRfZXJyb3JfaGFuZGxlciwgaWdub3Jl
X2Vycm9yCiBmcm9tIG1vZHVsZXMubG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxvZwotZnJvbSBtb2R1
bGVzLnByb2Nlc3N1dGlscyBpbXBvcnQgcnVuX2NvbW1hbmQsIFNjcmlwdEVycm9yLCBkZWZhdWx0
X2Vycm9yX2hhbmRsZXIsIGlnbm9yZV9lcnJvcgogCiBkZWYgZGV0ZWN0X3NjbV9zeXN0ZW0ocGF0
aCk6CiAgICAgaWYgU1ZOLmluX3dvcmtpbmdfZGlyZWN0b3J5KHBhdGgpOgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9zY21fdW5pdHRlc3QucHkKaW5kZXggZjNmNjk2MC4uZTg5ZTI3NiAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbV91bml0dGVzdC5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtX3VuaXR0ZXN0LnB5CkBAIC0zOCwx
MyArMzgsMTMgQEAgaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdXJsbGliCiAKIGZyb20gZGF0ZXRp
bWUgaW1wb3J0IGRhdGUKK2Zyb20gbW9kdWxlcy5leGVjdXRpdmUgaW1wb3J0IHJ1bl9jb21tYW5k
LCBpZ25vcmVfZXJyb3IsIFNjcmlwdEVycm9yCiBmcm9tIG1vZHVsZXMuc2NtIGltcG9ydCBkZXRl
Y3Rfc2NtX3N5c3RlbSwgU0NNLCBDaGVja291dE5lZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFu
ZGxlcgotZnJvbSBtb2R1bGVzLnByb2Nlc3N1dGlscyBpbXBvcnQgcnVuX2NvbW1hbmQsIGlnbm9y
ZV9lcnJvciwgU2NyaXB0RXJyb3IKIAogIyBFdmVudHVhbGx5IHdlIHdpbGwgd2FudCB0byB3cml0
ZSB0ZXN0cyB3aGljaCB3b3JrIGZvciBib3RoIHNjbXMuIChsaWtlIHVwZGF0ZV93ZWJraXQsIGNo
YW5nZWRfZmlsZXMsIGV0Yy4pCiAjIFBlcmhhcHMgdGhyb3VnaCBzb21lIFNDTVRlc3QgYmFzZS1j
bGFzcyB3aGljaCBib3RoIFNWTlRlc3QgYW5kIEdpdFRlc3QgaW5oZXJpdCBmcm9tLgogCi0jIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSB1bmlmaWVkIGludG8gb25lIG9mIHRoZSBwcm9jZXNzdXRpbHMu
cHkgY29tbWFuZHMhCisjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB1bmlmaWVkIGludG8gb25lIG9m
IHRoZSBleGVjdXRpdmUucHkgY29tbWFuZHMhCiBkZWYgcnVuX3NpbGVudChhcmdzLCBjd2Q9Tm9u
ZSk6CiAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywgc3Rkb3V0PXN1YnByb2Nl
c3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwgY3dkPWN3ZCkKICAgICBwcm9jZXNzLmNv
bW11bmljYXRlKCkgIyBpZ25vcmUgb3V0cHV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL21vZHVsZXMvd2Via2l0cG9ydC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy93
ZWJraXRwb3J0LnB5CmluZGV4IDM3ZGQ0MWQuLjg0OWFjNGIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvbW9kdWxlcy93ZWJraXRwb3J0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvbW9kdWxlcy93ZWJraXRwb3J0LnB5CkBAIC0zOSwxMiArMzksNiBAQCBjbGFzcyBXZWJLaXRQ
b3J0KCk6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oIldlYktpdFRvb2xzIiwgIlNjcmlw
dHMiLCBzY3JpcHRfbmFtZSkKIAogICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgcG9ydF9vcHRp
b25zKCk6Ci0gICAgICAgIHJldHVybiBbCi0gICAgICAgICAgICBtYWtlX29wdGlvbigiLS1wb3J0
IiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InBvcnQiLCBkZWZhdWx0PU5vbmUsIGhlbHA9IlNwZWNp
ZnkgYSBwb3J0IChlLmcuLCBtYWMsIHF0LCBndGssIC4uLikuIiksCi0gICAgICAgIF0KLQotICAg
IEBzdGF0aWNtZXRob2QKICAgICBkZWYgcG9ydChwb3J0X25hbWUpOgogICAgICAgICBpZiBwb3J0
X25hbWUgPT0gIm1hYyI6CiAgICAgICAgICAgICByZXR1cm4gTWFjUG9ydAo=
</data>
<flag name="review"
          id="26393"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="26394"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>