<?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>143391</bug_id>
          
          <creation_ts>2015-04-03 16:19:28 -0700</creation_ts>
          <short_desc>Reduce the dependency on Flash in regression tests</short_desc>
          <delta_ts>2015-04-06 09:32:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=133227</see_also>
          <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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>andersca</cc>
    
    <cc>dino</cc>
    
    <cc>ggaren</cc>
    
    <cc>roger_fong</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1082710</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-03 16:19:28 -0700</bug_when>
    <thetext>Flash is not necessarily installed on all machines, and when it is, it can be an old version that is blocked. All these differences can cause unexpected failures, depending on what you have installed.

We have a number of tests that use Flash, but somehow pass even when it is not installed. They must be not very good tests, given that they don&apos;t detect this fatal condition!

I&apos;m going to clean up as much as I can, and to make WebKitTestRunner prevent attempts at using Flash in new tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082713</commentid>
    <comment_count>1</comment_count>
      <attachid>250104</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-03 16:31:56 -0700</bug_when>
    <thetext>Created attachment 250104
patch for EWS

Chances are that I got at least a few cases wrong...

This also marks all remaining plugins/snapshotting tests as flaky, because they don&apos;t really test snapshotting at all, and just cause trouble. We would only be interested in crashes on these tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082725</commentid>
    <comment_count>2</comment_count>
      <attachid>250108</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-03 16:56:23 -0700</bug_when>
    <thetext>Created attachment 250108
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082737</commentid>
    <comment_count>3</comment_count>
      <attachid>250108</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-03 18:10:15 -0700</bug_when>
    <thetext>Comment on attachment 250108
patch

The patch fails to be applied (line endings?) 

But tests passed locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083090</commentid>
    <comment_count>4</comment_count>
      <attachid>250108</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-04-06 08:21:20 -0700</bug_when>
    <thetext>Comment on attachment 250108
patch

Can you remove the .swf files?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083098</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-06 09:32:30 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r182428&gt;.

&gt; Can you remove the .swf files?

Not yet - they are still used in the 8 remaining tests that are skipped on WK2, but still run on WK1. We need to associate TestNetscapePlugin with an extension, and to make it load a resource to convert these.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250104</attachid>
            <date>2015-04-03 16:31:56 -0700</date>
            <delta_ts>2015-04-03 16:56:23 -0700</delta_ts>
            <desc>patch for EWS</desc>
            <filename>FlashTests.txt</filename>
            <type>text/plain</type>
            <size>25910</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE4MjMzNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDE1LTA0LTAzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIFJlZHVjZSB0aGUgZGVwZW5kZW5jeSBvbiBGbGFzaCBpbiByZWdyZXNzaW9u
IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDMzOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOiAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6ZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZCk6CisgICAgICAgIE9ubHkgYWxsb3cgUXVpY2tU
aW1lIGFuZCB0aGUgdGVzdCBwbHVnLWluLgorCiAyMDE1LTA0LTAzICBDc2FiYSBPc3p0cm9nb27D
oWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgLS1y
ZW1vdGUgc2hvdWxkIGFkZCBsaWJsbHZtRm9ySlNDLnNvIHRvIHRoZSBidW5kbGUgb24gTGludXgK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biAxODIyNzMpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VH
cm91cC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUGx1
Z2luSW5mb3JtYXRpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlByaXZh
dGUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQcm90ZWN0aW9uU3BhY2UuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tSZXRhaW5QdHIuaD4KQEAgLTEzMTQsNyArMTMxNSwyMiBAQCBXS1BsdWdpbkxvYWRQ
b2xpY3kgVGVzdENvbnRyb2xsZXI6OmRlY2lkCiB7CiAgICAgaWYgKG1fc2hvdWxkQmxvY2tBbGxQ
bHVnaW5zKQogICAgICAgICByZXR1cm4ga1dLUGx1Z2luTG9hZFBvbGljeUJsb2NrZWQ7CisKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgV0tTdHJpbmdSZWYgYnVuZGxlSWRlbnRpZmllciA9IChXS1N0
cmluZ1JlZilXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KHBsdWdpbkluZm9ybWF0aW9uLCBXS1Bs
dWdpbkluZm9ybWF0aW9uQnVuZGxlSWRlbnRpZmllcktleSgpKTsKKyAgICBpZiAoIWJ1bmRsZUlk
ZW50aWZpZXIpCisgICAgICAgIHJldHVybiBjdXJyZW50UGx1Z2luTG9hZFBvbGljeTsKKworICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGJ1bmRsZUlkZW50aWZpZXIsICJjb20u
YXBwbGUuUXVpY2tUaW1lIFBsdWdpbi5wbHVnaW4iKSkKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRQ
bHVnaW5Mb2FkUG9saWN5OworCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
YnVuZGxlSWRlbnRpZmllciwgImNvbS5hcHBsZS50ZXN0bmV0c2NhcGVwbHVnaW4iKSkKKyAgICAg
ICAgcmV0dXJuIGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5OworCisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgLy8gUGxlYXNlIGRvbid0IHVzZSBhbnkgb3RoZXIgcGx1Zy1pbnMgaW4g
dGVzdHMsIGFzIHRoZXkgd2lsbCBub3QgYmUgaW5zdGFsbGVkIG9uIGFsbCBtYWNoaW5lcy4KKyNl
bHNlCiAgICAgcmV0dXJuIGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5OworI2VuZGlmCiB9CiAKIHZv
aWQgVGVzdENvbnRyb2xsZXI6OmRpZENvbW1pdE5hdmlnYXRpb24oV0tQYWdlUmVmIHBhZ2UsIFdL
TmF2aWdhdGlvblJlZiBuYXZpZ2F0aW9uKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyMzM3KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIw
MTUtMDQtMDMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdWNlIHRoZSBkZXBlbmRlbmN5IG9uIEZsYXNoIGluIHJlZ3Jlc3Npb24gdGVzdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzM5MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9pbmxpbmUtYmxvY2stYXNzZXJ0aW9uLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9w
bHVnaW4uaHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS9lbXB0eS1lbWJlZC1y
ZWN0cy5odG1sOgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9yZXNvdXJjZXMvc3ViZnJhbWUtd2l0
aC1wbHVnaW4uaHRtbDoKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9lbWJlZC1kb2VzLW5vdC1wcm9w
YWdhdGUtZGltZW5zaW9ucy10by1vYmplY3QtYW5jZXN0b3IuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2xvYWRlci9sb2FkSW5Qcm9ncmVzcy5odG1sOgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvYm9y
ZGVyLXJhZGl1cy1jbGlwLmh0bWw6CisgICAgICAgICogZmFzdC9yZXBsYWNlZC9lbWJlZC1kaXNw
bGF5LW5vbmUuaHRtbDoKKyAgICAgICAgKiBwbHVnaW5zL2NyYXNoLXJlc3RvcmluZy1wbHVnaW4t
cGFnZS1mcm9tLXBhZ2UtY2FjaGUuaHRtbDoKKyAgICAgICAgKiBwbHVnaW5zL29iamVjdC1lbWJl
ZC1wbHVnaW4tc2NyaXB0aW5nLmh0bWw6CisgICAgICAgICogcGx1Z2lucy9yZXNvdXJjZXMvcGx1
Z2luLWZyYW1lLmh0bWw6CisgICAgICAgIFVzZSBUZXN0TmV0c2NhcGVQbHVnaW4sIGFzIHRoZSB0
ZXN0cyBkb24ndCBhcHBlYXIgdG8gaGF2ZSBhbnkgcmVhbCBuZWVkIGZvciBGbGFzaC4KKworICAg
ICAgICAqIHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWw6IFJlbW92ZWQuIFRoaXMgd2FzIGEgdGVz
dCBmb3IgYSBjaHJvbWl1bSBvbmx5IGZlYXR1cmUKKyAgICAgICAgdGhhdCBuZXZlciBleGlzdGVk
IGluIFdlYktpdC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIFJl
bW92ZWQgdGhlIGRlbGV0ZWQgcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbC4KKworICAgICAgICAq
IHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczogU2tpcCBzbmFwc2hvdHRpbmcgdGVz
dHMgdGhhdCB1c2UgRmxhc2gsCisgICAgICAgIGJlY2F1c2UgdGhleSBtYWtlIFdlYktpdFRlc3RS
dW5uZXIgY3Jhc2ggbm93LiBNYXJrZWQgYWxsIG90aGVyIHNuYXBzaG90dGluZyB0ZXN0cworICAg
ICAgICBhcyBQYXNzL0ZhaWx1cmUsIGJlY2F1c2UgdGhleSBkb24ndCByZWFsbHkgbWFrZSBhbnkg
c2Vuc2UsIGFuZCBhcmUgb25seSB1c2VmdWwgZm9yCisgICAgICAgIGZpbnNpbmcgY3Jhc2hlcy4K
KworICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOiBTa2lwcGVkIGEgZmV3
IHJlbWFpbmluZyB0ZXN0cyB0aGF0IHVzZSBGbGFzaC4KKyAgICAgICAgVGhlc2UgdGVzdHMgc3Rp
bGwgcnVuIChhbmQgcGFzcykgdW5kZXIgV2ViS2l0MSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIEZs
YXNoIGlzCisgICAgICAgIGluc3RhbGxlZCwgc28gdGhleSBkb24ndCBzZWVtIGxpa2UgdmVyeSBh
Y2N1cmF0ZSB0ZXN0cy4KKwogMjAxNS0wNC0wMyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hA
YXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBUb2dnbGluZyBjaGVjayBib3ggc3RhdGUgbm90IHNw
ZWFraW5nIHVzaW5nIHBsYWluIHNwYWNlLCBub3QgVk8gc3BhY2UuCkluZGV4OiBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2lubGluZS1ibG9jay1hc3NlcnRpb24uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lubGluZS1ibG9jay1hc3NlcnRpb24uaHRtbAko
cmV2aXNpb24gMTgyMjczKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pbmxpbmUtYmxv
Y2stYXNzZXJ0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBACiA8L2hlYWQ+
CiA8Ym9keSBpZD0iYm9keSI+CiAKLTxlbWJlZCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LnN3ZiIg
dHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIGFsbG93ZnVsbHNjcmVlbj0idHJ1
ZSIgd2lkdGg9IjM2MiIgaGVpZ2h0PSIyOTgiIGRhdGEtb3JpZ2luYWwtd2lkdGg9IjQyNSIgZGF0
YS1vcmlnaW5hbC1oZWlnaHQ9IjM1MCI+Cis8ZW1iZWQ+CiA8ZGl2IHBzZXVkbz0iLXdlYmtpdC1w
bHVnaW4tcmVwbGFjZW1lbnQiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDEwMDsgaGVpZ2h0OiAxMDA7IiBpZD0iZ3JvdXAiPgogPGlmcmFt
ZSB3aWR0aD0iMTAwJSIgaWQ9ImlmcmFtZSIgc3R5bGU9Im1heC1oZWlnaHQ6IDEwMCUiIGhlaWdo
dD0iMzUwIiBzcmM9InJlc291cmNlcy9jYWtlLnBuZyIgZnJhbWVib3JkZXI9IjAiIHNjcm9sbGlu
Zz0ibm8iPjwvaWZyYW1lPgogPC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L3BsdWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGx1
Z2luLmh0bWwJKHJldmlzaW9uIDE4MjI3MykKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
cGx1Z2luLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw3IEBACiAgICAgPCEtLSBUaGlz
IHRlc3QgZW5zdXJlcyB0aGF0IGEgcGx1Z2luIHRoYXQgaXMgbm90IGFjY2Vzc2libGUsIHdpbGwg
bm90IGFwcGVhciBpbiB0aGUgQVggaGllcmFjaHktLT4KICAgICA8b2JqZWN0IHdpZHRoPTEwMCBo
ZWlnaHQ9MTAwPgogICAgICAgIDxwYXJhbSBuYW1lPSJtb3ZpZSI+Ci0gICAgICAgPGVtYmVkIHNy
Yz0iLi4vcmVzb3VyY2VzL3Rlc3Quc3dmIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1m
bGFzaCI+CisgICAgICAgPGVtYmVkIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0
c2NhcGUiPgogICAgIDwvb2JqZWN0PiAgICAKICAgICAKICAgICA8ZGl2IGlkPSJyZXN1bHQiPjwv
ZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZW1wdHktZW1iZWQt
cmVjdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRy
eS9lbXB0eS1lbWJlZC1yZWN0cy5odG1sCShyZXZpc2lvbiAxODIyNzMpCisrKyBMYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9nZW9tZXRyeS9lbXB0eS1lbWJlZC1yZWN0cy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xMCwxMSArMTAsMTEgQEAKIDxib2R5PgogICAgIDxwPlRoaXMgdGVzdGNhc2Ugc2hv
dWxkIG5vdCBmaXJlIGFuIGFzc2VydGlvbiByZWxhdGVkIHRvIHRoZSBjbGlwIHJlY3RzIHJvb3Qu
PC9wPgogICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsiPgotICAgICAgICA8ZW1i
ZWQgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giPgorICAgICAgICA8ZW1iZWQg
dHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSI+CiAgICAgPC9kaXY+ICAg
ICAgCiAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyI+CiAgICAgICAgIDxkaXYg
c3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsiPjwvZGl2PgotICAgICAgICA8ZW1iZWQgdHlwZT0i
YXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giPgorICAgICAgICA8ZW1iZWQgdHlwZT0iYXBw
bGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSI+CiAgICAgPC9kaXY+CiA8L2JvZHk+CiA8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL3N1YmZyYW1l
LXdpdGgtcGx1Z2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5
L3Jlc291cmNlcy9zdWJmcmFtZS13aXRoLXBsdWdpbi5odG1sCShyZXZpc2lvbiAxODIyNzMpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL3N1YmZyYW1lLXdpdGgtcGx1Z2lu
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8aHRtbD4KICAgPGhlYWQ+PC9o
ZWFkPgogICA8Ym9keT4KLSAgICA8ZW1iZWQgc3JjPSIuLi8uLi8uLi9wbHVnaW5zL3Jlc291cmNl
cy9saW5lcy5zd2YiPjwvZW1iZWQ+CisgICAgPGVtYmVkIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Vi
a2l0LXRlc3QtbmV0c2NhcGUiPjwvZW1iZWQ+CiAgIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2VtYmVkLWRvZXMtbm90LXByb3BhZ2F0ZS1kaW1lbnNpb25z
LXRvLW9iamVjdC1hbmNlc3Rvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2VtYmVkLWRvZXMtbm90LXByb3BhZ2F0ZS1kaW1lbnNpb25zLXRvLW9iamVjdC1hbmNl
c3Rvci5odG1sCShyZXZpc2lvbiAxODIyNzMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9l
bWJlZC1kb2VzLW5vdC1wcm9wYWdhdGUtZGltZW5zaW9ucy10by1vYmplY3QtYW5jZXN0b3IuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMjQsOSArMjQsOSBAQAogPGJvZHkgb25sb2FkPSJ0ZXN0KCk7
Ij4KICAgICA8b2JqZWN0IGlkPSJmaXJzdCIgZGF0YT0icmVzb3VyY2VzL211LnBuZyIgc3R5bGU9
ImhlaWdodDogMTAwcHg7IHdpZHRoOjEwMHB4OyI+PGVtYmVkIGhlaWdodD0iMzAwIiB3aWR0aD0i
MzAwIj48L29iamVjdD4KICAgICA8YnI+Ci0gICAgPG9iamVjdCBpZD0ic2Vjb25kIiBkYXRhPSJy
ZXNvdXJjZXMvbXUucG5nIiBzdHlsZT0iIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+PGVtYmVk
IGhlaWdodD0iMzAwIiB3aWR0aD0iMzAwIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1m
bGFzaCIgc3JjPSIuLi8uLi9wbHVnaW5zL3Jlc291cmNlcy9zaW1wbGVfYmxhbmsuc3dmIj48L29i
amVjdD4KKyAgICA8b2JqZWN0IGlkPSJzZWNvbmQiIGRhdGE9InJlc291cmNlcy9tdS5wbmciIHN0
eWxlPSIiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48ZW1iZWQgaGVpZ2h0PSIzMDAiIHdpZHRo
PSIzMDAiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPjwvb2JqZWN0
PgogICAgIDxicj4KLSAgICA8b2JqZWN0IGlkPSJ0aGlyZCIgc3R5bGU9IiIgd2lkdGg9IjEwMCIg
aGVpZ2h0PSIxMDAiPjxlbWJlZCBoZWlnaHQ9IjMwMCIgd2lkdGg9IjMwMCIgdHlwZT0iYXBwbGlj
YXRpb24veC1zaG9ja3dhdmUtZmxhc2giIHNyYz0iLi4vLi4vcGx1Z2lucy9yZXNvdXJjZXMvc2lt
cGxlX2JsYW5rLnN3ZiI+PC9vYmplY3Q+CisgICAgPG9iamVjdCBpZD0idGhpcmQiIHN0eWxlPSIi
IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48ZW1iZWQgaGVpZ2h0PSIzMDAiIHdpZHRoPSIzMDAi
IHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPjwvb2JqZWN0PgogICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPkZBSUxVUkU8L2Rpdj4KIDwvYm9keT48L2h0bWw+CiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2xvYWRJblByb2dyZXNzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbG9hZEluUHJvZ3Jlc3MuaHRtbAkocmV2aXNpb24g
MTgyMjczKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbG9hZEluUHJvZ3Jlc3MuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogCiA8Ym9keSBvbkxvYWQ9InRlc3RGb3Jt
KCk7Ij4KIDxmb3JtIG5hbWU9IkxvZ2luRm9ybSI+IAotPGVtYmVkIHNyYz0iIiB0eXBlPSJhcHBs
aWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCI+PC9lbWJlZD4KKzxlbWJlZCB0eXBlPSJhcHBsaWNh
dGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIj48L2VtYmVkPgogPC9mb3JtPgkJCQogPC9ib2R5
PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9ib3JkZXItcmFkaXVz
LWNsaXAuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL2JvcmRl
ci1yYWRpdXMtY2xpcC5odG1sCShyZXZpc2lvbiAxODIyNzMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3JlcGxhY2VkL2JvcmRlci1yYWRpdXMtY2xpcC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw4
ICsxOCw3IEBAIEFsbCBvZiB0aGUgcmVwbGFjZWQgZWxlbWVudHMgYmVsb3cgc2hvdWwKIAogPGJy
PgogCi08ZW1iZWQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdC5zd2YiIHN0eWxlPSJib3JkZXI6
M3B4IHNvbGlkIGJsYWNrOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaW1lOyAtd2Via2l0LWJvcmRlci1y
YWRpdXM6IDMycHg7IG1hcmdpbi1ib3R0b206LTMycHgiCis8ZW1iZWQgc3R5bGU9ImJvcmRlcjoz
cHggc29saWQgYmxhY2s7IGJhY2tncm91bmQtY29sb3I6IGxpbWU7IC13ZWJraXQtYm9yZGVyLXJh
ZGl1czogMzJweDsgbWFyZ2luLWJvdHRvbTotMzJweCIKICAgICBxdWFsaXR5PSJoaWdoIiB3aWR0
aD0iNTUwIiBoZWlnaHQ9IjQwMCIgd21vZGU9InRyYW5zcGFyZW50IgotICAgIHR5cGU9ImFwcGxp
Y2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIgotICAgIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1h
Y3JvbWVkaWEuY29tL3Nob2Nrd2F2ZS9kb3dubG9hZC9pbmRleC5jZ2k/UDFfUHJvZF9WZXJzaW9u
PVNob2Nrd2F2ZUZsYXNoIj4KKyAgICB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5l
dHNjYXBlIj4KIDwvZW1iZWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL2VtYmVk
LWRpc3BsYXktbm9uZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVwbGFj
ZWQvZW1iZWQtZGlzcGxheS1ub25lLmh0bWwJKHJldmlzaW9uIDE4MjI3MykKKysrIExheW91dFRl
c3RzL2Zhc3QvcmVwbGFjZWQvZW1iZWQtZGlzcGxheS1ub25lLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMsMTAgKzMsOSBAQAogPGJvZHk+CiAKICAgPHA+U2hvdWxkIG5vdCBzZWUgdGhlIGVtYmVk
IGJlbG93IChpdCBoYXMgZGlzcGxheTpub25lKS48L3A+Ci0gIDxlbWJlZCBzdHlsZT0iZGlzcGxh
eTpub25lIiBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0LnN3ZiIKKyAgPGVtYmVkIHN0eWxlPSJk
aXNwbGF5Om5vbmUiCiAgICAgcXVhbGl0eT0iaGlnaCIgd2lkdGg9IjU1MCIgaGVpZ2h0PSI0MDAi
Ci0gICAgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giCi0gICAgcGx1Z2luc3Bh
Z2U9Imh0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vc2hvY2t3YXZlL2Rvd25sb2FkL2luZGV4LmNn
aT9QMV9Qcm9kX1ZlcnNpb249U2hvY2t3YXZlRmxhc2giPgorICAgIHR5cGU9ImFwcGxpY2F0aW9u
L3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPgogICA8L2VtYmVkPgogCiA8L2JvZHk+CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lv
biAxODIyNzMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnMJKHdvcmtpbmcgY29weSkKQEAgLTI5NCw2ICsyOTQsMTQgQEAgd2Via2l0Lm9yZy9iLzEzMjc2
NiBmYXN0L2hpZHBpL2ZpbHRlcnMtaQogd2Via2l0Lm9yZy9iLzEzMjc2NiBmYXN0L2hpZHBpL2Zp
bHRlcnMtbXVsdGlwbGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEz
Mjc2NiBmYXN0L2hpZHBpL2ZpbHRlcnMtcmVmZXJlbmNlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIAorIyBQbHVnLWluIHNuYXBzaG90dGluZyB0ZXN0cyBkbyBub3QgbWFrZSBtdWNoIHNlbnNl
OgorIyAtIHNuYXBzaG90dGluZyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgRmxhc2gsIGJ1dCB3ZSBj
YW4ndCB1c2UgRmxhc2ggYmVjYXVzZSBpdCBpc24ndCBpbnN0YWxsZWQgZXZlcnl3aGVyZTsKKyMg
LSBzbyBtb3N0IG9mIHRoZSB0ZXN0cyB1c2UgUXVpY2tUaW1lLCB3aGljaCBkb2Vzbid0IHN1cHBv
cnQgc25hcHNob3R0aW5nLCBhbmQgaXMgMzItYml0IG9ubHksIHRodXMgZmFpbGluZyB0byBsb2Fk
IGluIGVuZ2luZWVyaW5nIGJ1aWxkcy4KK3BsdWdpbnMvc25hcHNob3R0aW5nIFsgUGFzcyBGYWls
dXJlIF0KKyMgVGhlc2UgdHdvIHRlc3RzIHVzZSBGbGFzaCwgc28gdGhleSB0cmlnZ2VyIGEgcmVs
ZWFzZSBhc3NlcnRpb24uCitwbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1zaW1pbGFyLXRv
LWRvbWluYW50LWFmdGVyLWRlbGF5Lmh0bWwgWyBTa2lwIF0KK3BsdWdpbnMvc25hcHNob3R0aW5n
L3ByaW50LXNuYXBzaG90dGVkLXBsdWdpbi5odG1sIFsgU2tpcCBdCisKIHdlYmtpdC5vcmcvYi8x
MzMyMjcgcGx1Z2lucy9zbmFwc2hvdHRpbmcvc2V0LXBsdWdpbi1zaXplLXRvLXRpbnkuaHRtbCBb
IEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEzMzIyNyBwbHVnaW5zL3NuYXBzaG90dGluZy9xdWlj
a3RpbWUtcGx1Z2luLXNuYXBzaG90dGVkLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTgyMjgx
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcg
Y29weSkKQEAgLTE4MCw5ICsxODAsNiBAQCB3ZWJraXQub3JnL2IvNDM5NjAgc2Nyb2xsYmFycy9j
dXN0b20tc2NyCiAjIHZpZXdwb3J0IG1ldGEgdGFnIHN1cHBvcnQKIGZhc3Qvdmlld3BvcnQKIAot
IyBUaGUgV2ViS2l0IHBsdWdpbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGlmcmFt
ZSBzaGltcy4KLXdlYmtpdC5vcmcvYi80NjIyMyBwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCi0K
IHdlYmtpdC5vcmcvYi8xMTY2NDAgcGx1Z2lucy9wbHVnaW4taW5pdGlhdGUtcG9wdXAtd2luZG93
Lmh0bWwKIAogIyBSZXF1aXJlcyBXZWJQIHN1cHBvcnQuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE4MjI3MykKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcg
Y29weSkKQEAgLTE3NzQsMTAgKzE3NzQsNiBAQCBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXNlcnZl
ZC1hcy10ZXh0Lmh0CiAjIFByZS1ITVRMNSBwYXJzZXIgcXVpcmtzIG9ubHkgYXBwbHkgdG8gdGhl
IG1hYyBwb3J0IGZvciBub3cuCiBmYXN0L3BhcnNlci9wcmUtaHRtbDUtcGFyc2VyLXF1aXJrcy5o
dG1sCiAKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MjIzCi0j
IFRoZSBXZWJLaXQgcGx1Z2luIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgaWZyYW1l
IHNoaW1zLgotcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbAotCiAjIFJlcXVpcmVzIFdlYlAgc3Vw
cG9ydC4KIGZhc3QvY2FudmFzL2NhbnZhcy10b0RhdGFVUkwtd2VicC5odG1sCiBmYXN0L2ltYWdl
cy93ZWJwLWltYWdlLWRlY29kaW5nLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxODIyNzMpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjgwLDkgKzI4MCwx
NiBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1oCiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1sb2NhdGlvbi1nZXQtb3ZlcnJpZGUuaHRtbAog
aHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML3hzcy1BTExPV0VELXRvLWphdmFzY3Jp
cHQtdXJsLXN1Yi1mcmFtZS0yLWxldmVsLmh0bWwKIAotIyBUaGVzZSBhcmUgcGx1Zy1pbiB0ZXN0
cyB0aGF0IHVzZSBGbGFzaCBvciBRdWlja1RpbWUuIFdlIHNob3VsZCBjb252ZXJ0IHRoZXNlIHRv
IHVzZSB0aGUgdGVzdCBwbHVnLWluLgotcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbAotcGx1Z2lu
cy9lbWJlZC1hdHRyaWJ1dGVzLXNldHRpbmcuaHRtbAorIyBUaGVzZSB0ZXN0cyB1c2UgRmxhc2gs
IHdoaWNoIGlzIG5vdCBhIGdvb2QgaWRlYSwgYmVjYXVzZSBpdCBpcyBub3QgaW5zdGFsbGVkIG9u
IGFsbCBtYWNoaW5lcyB0aGF0IHJ1biB0ZXN0cy4KKyMgV2ViS2l0VGVzdFJ1bm5lciBkZXRlY3Rz
IGF0dGVtcHRzIHRvIHVzZSBGbGFzaCwgYW5kIHJhaXNlcyBhbiBhc3NlcnRpb24uCitlZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtbm9wbHVnaW4uaHRtbCBbIFNraXAgXQorZmFzdC9kb20vYmVmb3Jl
bG9hZC9mbGFzaC1iZWZvcmUtbG9hZC5odG1sIFsgU2tpcCBdCitmYXN0L2RvbS9iZWZvcmVsb2Fk
L3JlbW92ZS1mbGFzaC1pbi1iZWZvcmVsb2FkLWxpc3RlbmVyLmh0bWwgWyBTa2lwIF0KK2Zhc3Qv
bG9hZGVyL3NhbmRib3hlZC1wbHVnaW4tY3Jhc2guaHRtbCBbIFNraXAgXQorcGx1Z2lucy9oaWRk
ZW4taWZyYW1lLXdpdGgtc3dmLXBsdWdpbi5odG1sIFsgU2tpcCBdCitwbHVnaW5zL3BsdWdpbi1k
b2N1bWVudC1sb2FkLXByZXZlbnRlZC11c2Vyc2NyaXB0Lmh0bWwgWyBTa2lwIF0KK3BsdWdpbnMv
cGx1Z2luLWRvY3VtZW50LXdpbGxTZW5kUmVxdWVzdC1udWxsLmh0bWwgWyBTa2lwIF0KK3BsdWdp
bnMvcGx1Z2luLXJlbW92ZS1yZWFkeXN0YXRlY2hhbmdlLmh0bWwgWyBTa2lwIF0KIAogIyBUaGlz
IHRlc3QgY2hlY2tzIHRoYXQgTlBOX0dldFVSTCB3aXRoIGEgYmxhbmsgdGFyZ2V0IHdpbGwgcmV0
dXJuIGFuIGVycm9yIGlmIHRoZSB3aW5kb3cgaXNuJ3Qgb3BlbmVkLiBUaGlzIGJlaGF2aW9yIGRv
ZXNuJ3QKICMgbWF0Y2ggRmlyZWZveCBvciBDaHJvbWUuIFdlIHNob3VsZCBlaXRoZXIgZml4IHRo
ZSB0ZXN0LCBvciBnZXQgcmlkIG9mIGl0LgpJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9jcmFz
aC1yZXN0b3JpbmctcGx1Z2luLXBhZ2UtZnJvbS1wYWdlLWNhY2hlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9jcmFzaC1yZXN0b3JpbmctcGx1Z2luLXBhZ2UtZnJvbS1w
YWdlLWNhY2hlLmh0bWwJKHJldmlzaW9uIDE4MjI3MykKKysrIExheW91dFRlc3RzL3BsdWdpbnMv
Y3Jhc2gtcmVzdG9yaW5nLXBsdWdpbi1wYWdlLWZyb20tcGFnZS1jYWNoZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIElmIHlvdSdyZSBub3QgcnVubmluZyB1bmRlciBEUlQs
IHlvdSdsbCAKIDxvYmplY3Q+CiA8b2JqZWN0PgogCi08b2JqZWN0IHR5cGU9ImFwcGxpY2F0aW9u
L3gtc2hvY2t3YXZlLWZsYXNoIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjM3NSIgaWQ9IkV4YW1wbGVQ
bHVnaW4iPgorPG9iamVjdCB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBl
IiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjM3NSIgaWQ9IkV4YW1wbGVQbHVnaW4iPgogICAgIDxpbWcg
c3JjPSJyZXNvdXJjZXMvYXBwbGUuZ2lmIj4KIDwvb2JqZWN0PgogCkluZGV4OiBMYXlvdXRUZXN0
cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
dWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwJKHJldmlzaW9uIDE4MjI3MykKKysrIExheW91dFRlc3Rz
L3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMjYzICswLDAg
QEAKLTxodG1sPjxoZWFkPgotPHNjcmlwdD4KLSAgICB2YXIgZXhwZWN0ZWRDbGlja3MgPSBbXTsK
LSAgICB2YXIgY2xpY2tzID0gW107Ci0KLSAgICB2YXIgaGVpZ2h0ID0gMTAwOwotICAgIHZhciB3
aWR0aCA9IDEwMDsKLSAgICB2YXIgaXRlbXMgPSAwOwotCi0gICAgZnVuY3Rpb24gbWFrZVBsdWdp
bkVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgdmFyIGYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdlbWJlZCcpOwotICAgICAgICBmLnNldEF0dHJpYnV0ZSgnaWQnLCAnc3dmX2VtYmVkXycgKyBp
dGVtcyk7Ci0gICAgICAgIGYuc2V0QXR0cmlidXRlKCd3aWR0aCcsIHdpZHRoICsgJycpOwotICAg
ICAgICBmLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgaGVpZ2h0ICsgJycpOwotICAgICAgICBmLnNl
dEF0dHJpYnV0ZSgnd21vZGUnLCAnd2luZG93Jyk7Ci0gICAgICAgIGYuc2V0QXR0cmlidXRlKCds
b29wJywgJ2ZhbHNlJyk7Ci0gICAgICAgIGYuc2V0QXR0cmlidXRlKCdzcmMnLCAncmVzb3VyY2Vz
L3NpbXBsZV9ibGFuay5zd2YnKTsKLSAgICAgICAgZi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnYXBw
bGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gnKTsKLSAgICAgICAgcmV0dXJuIGY7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gbWFrZVBsdWdpbkVsZW1lbnRXaXRoSGlnaGVyWkluZGV4KCkKLSAgICB7
Ci0gICAgICAgIHZhciBmID0gbWFrZVBsdWdpbkVsZW1lbnQoKTsKLSAgICAgICAgZi5zdHlsZS56
SW5kZXggPSAxMDAwOwotICAgICAgICBmLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJzsKLSAg
ICAgICAgcmV0dXJuIGY7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbWFrZUlmcmFtZURpdigpCi0g
ICAgewotICAgICAgICB2YXIgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwot
ICAgICAgICBpLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKLSAgICAgICAgaS5zdHlsZS50
b3AgPSAnMTBweCc7Ci0gICAgICAgIGkuc3R5bGUubGVmdCA9ICczMHB4JzsKLSAgICAgICAgaS5z
dHlsZS53aWR0aCA9ICc4MHB4JzsKLSAgICAgICAgaS5zdHlsZS5oZWlnaHQgPSAnODBweCc7Ci0g
ICAgICAgIGkuc2V0QXR0cmlidXRlKCdmcmFtZWJvcmRlcicsICcwJyk7Ci0gICAgICAgIGkuc2V0
QXR0cmlidXRlKCdzcmMnLCAnamF2YXNjcmlwdDp2b2lkKDApOycpOwotICAgICAgICByZXR1cm4g
aTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBtYWtlT3ZlcmxheURpdihjb2xvciwgY2FzZUlkKQot
ICAgIHsNCi0gICAgICAgIHZhciBvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0g
ICAgICAgIG8uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOwotICAgICAgICBvLnN0eWxlLnRv
cCA9ICcxMHB4JzsKLSAgICAgICAgby5zdHlsZS5sZWZ0ID0gJzMwcHgnOwotICAgICAgICBvLnN0
eWxlLndpZHRoID0gJzgwcHgnOwotICAgICAgICBvLnN0eWxlLmhlaWdodCA9ICc4MHB4JzsKLSAg
ICAgICAgby5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKLSAgICAgICAgby5zdHlsZS5v
dmVyZmxvdyA9ICdoaWRkZW4nOwotICAgICAgICBvLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT0i
YnV0dG9uIiBpZD0iYnV0dG9uJyArIGNhc2VJZCArICciICcgKwotICAgICAgICAgICAgJ29uY2xp
Y2s9ImRvQ2xpY2soJyArIGNhc2VJZCArCi0gICAgICAgICAgICAnKTsiIHZhbHVlPSJjbGlja21l
IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwOyBsZWZ0OiAxMDsgd2lkdGg6IDYw
cHg7IGhlaWdodDogNjBweDsiLz4nOwotICAgICAgICByZXR1cm4gbzsKLSAgICB9Ci0gICAgCi0g
ICAgZnVuY3Rpb24gYXBwZW5kT3ZlcmxheShvdmVybGF5RGl2WklmcmFtZSwgb3ZlcmxheURpdlpP
dmVybGF5LCBvdmVybGF5SW5zaWRlRGl2LCBleHBlY3RDbGlja2FibGUsIGNhc2VJZCkKLSAgICB7
Ci0gICAgICAgIHZhciBpZCA9IG1ha2VJZnJhbWVEaXYoKTsKLSAgICAgICAgdmFyIHJvb3QgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChjYXNlSWQpOwotICAgICAgICBpZiAob3ZlcmxheURpdlpJ
ZnJhbWUpCi0gICAgICAgICAgICBpZC5zdHlsZS56SW5kZXggPSBvdmVybGF5RGl2WklmcmFtZTsK
LQotICAgICAgICB2YXIgb2QgPSBtYWtlT3ZlcmxheURpdihleHBlY3RDbGlja2FibGUgPyAnZ3Jl
ZW4nIDogJ3JlZCcsIGNhc2VJZCk7Ci0gICAgICAgIG9kLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29s
dXRlJzsKLSAgICAgICAgaWYgKG92ZXJsYXlEaXZaT3ZlcmxheSkKLSAgICAgICAgICAgIG9kLnN0
eWxlLnpJbmRleCA9IG92ZXJsYXlEaXZaT3ZlcmxheTsKLQotICAgICAgICBpZiAob3ZlcmxheUlu
c2lkZURpdikgewotICAgICAgICAgICAgdmFyIHBhcmVudGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOwotICAgICAgICAgICAgaWYgKG92ZXJsYXlEaXZaT3ZlcmxheSkKLSAgICAg
ICAgICAgICAgICBwYXJlbnRkaXYuc3R5bGUuekluZGV4ID0gb3ZlcmxheURpdlpPdmVybGF5Owot
Ci0gICAgICAgICAgICBwYXJlbnRkaXYuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOwotICAg
ICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnRvcCA9ICcwcHgnOwotICAgICAgICAgICAgcGFyZW50
ZGl2LnN0eWxlLmxlZnQgPSAnMHB4JzsKLSAgICAgICAgICAgIHBhcmVudGRpdi5hcHBlbmRDaGls
ZChpZCk7Ci0gICAgICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hpbGQob2QpOwotICAgICAgICAg
ICAgcm9vdC5hcHBlbmRDaGlsZChwYXJlbnRkaXYpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgcm9vdC5hcHBlbmRDaGlsZChpZCk7Ci0gICAgICAgICAgICByb290LmFwcGVuZENoaWxk
KG9kKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBmdW5jdGlvbiBhZGRDYXNlKHgsIHksIHRh
Z3MpCi0gICAgewotICAgICAgICB2YXIgY2FzZUlkID0gaXRlbXM7Ci0gICAgICAgIGl0ZW1zKys7
Ci0KLSAgICAgICAgdmFyIGV4cGVjdENsaWNrYWJsZSA9IHRhZ3MuZXhwZWN0ICYmIHRhZ3MuZXhw
ZWN0LmluZGV4T2YoJ1VOREVSJykgPT0gLTE7Ci0gICAgICAgIGV4cGVjdGVkQ2xpY2tzW2Nhc2VJ
ZF0gPSBleHBlY3RDbGlja2FibGU7DQotDQotICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOwotICAgICAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICByb290LnN0eWxlLnBvc2l0aW9uID0g
J2Fic29sdXRlJzsKLSAgICAgICAgcm9vdC5zdHlsZS5sZWZ0ID0geCAqICh3aWR0aCArIDQwKSAr
ICdweCc7Ci0gICAgICAgIHJvb3Quc3R5bGUudG9wID0geSAqIChoZWlnaHQgKyAyMCkgKyAncHgn
OwotICAgICAgICByb290LmlkID0gY2FzZUlkOwotICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hp
bGQocm9vdCk7Ci0KLSAgICAgICAgdmFyIHBsdWdpbkRpdlo7Ci0gICAgICAgIHZhciBvdmVybGF5
RGl2WklmcmFtZTsKLSAgICAgICAgdmFyIG92ZXJsYXlEaXZaT3ZlcmxheTsKLSAgICAgICAgaWYg
KHRhZ3MucGx1Z2luTG93ZXJ6KSB7Ci0gICAgICAgICAgICBwbHVnaW5EaXZaID0gMTAwOwotICAg
ICAgICAgICAgb3ZlcmxheURpdlpJZnJhbWUgPSAyMDA7Ci0gICAgICAgICAgICBvdmVybGF5RGl2
Wk92ZXJsYXkgPSAyMDE7Ci0gICAgICAgIH0gZWxzZSBpZiAodGFncy5wbHVnaW5IaWdoZXJ6KSB7
Ci0gICAgICAgICAgICBwbHVnaW5EaXZaID0gMjAwOwotICAgICAgICAgICAgb3ZlcmxheURpdlpJ
ZnJhbWUgPSAxMDA7Ci0gICAgICAgICAgICBvdmVybGF5RGl2Wk92ZXJsYXkgPSAxMDE7Ci0gICAg
ICAgIH0gZWxzZSBpZiAodGFncy5wbHVnaW5FcXVhbHopIHsKLSAgICAgICAgICAgIHBsdWdpbkRp
dlogPSAxMDA7Ci0gICAgICAgICAgICBvdmVybGF5RGl2WklmcmFtZSA9IDEwMDsKLSAgICAgICAg
ICAgIG92ZXJsYXlEaXZaT3ZlcmxheSA9IDEwMDsKLSAgICAgICAgfSBlbHNlIGlmICh0YWdzLnBs
dWdpbkV4cGxpY2l0SGlnaGVyWkluZGV4KSB7DQotICAgICAgICAgICAgLy8gRm9yIHRoaXMgdGVz
dCBjYXNlIHdlIHNldCB0aGUgei1pbmRleCBmb3IgdGhlIGlmcmFtZSBhbmQgdGhlIG92ZXJsYXkK
LSAgICAgICAgICAgIC8vIHRvIGJlIGxvd2VyIHRoYW4gdGhlIHBsdWdpbi4KLSAgICAgICAgICAg
IG92ZXJsYXlEaXZaSWZyYW1lID0gMTAwOwotICAgICAgICAgICAgb3ZlcmxheURpdlpPdmVybGF5
ID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBhcHBlbmRQbHVnaW4gPSBmdW5jdGlvbigp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBwZDsKLSAgICAgICAgICAgIGlmICh0YWdzLnBs
dWdpbkV4cGxpY2l0SGlnaGVyWkluZGV4KSB7Ci0gICAgICAgICAgICAgICAgcGQgPSBtYWtlUGx1
Z2luRWxlbWVudFdpdGhIaWdoZXJaSW5kZXgoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgcGQgPSBtYWtlUGx1Z2luRWxlbWVudCgpOwotICAgICAgICAgICAgfQ0KLQ0K
LSAgICAgICAgICAgIGlmICh0YWdzLnBsdWdpbkluc2lkZURpdiB8fCBwbHVnaW5EaXZaKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIHBhcmVudGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOwotICAgICAgICAgICAgICAgIHBhcmVudGRpdi5hcHBlbmRDaGlsZChwZCkKLSAgICAgICAg
ICAgICAgICBpZiAoIXRhZ3MucGx1Z2luTm9yZWxhdGl2ZSkKLSAgICAgICAgICAgICAgICAgICAg
cGFyZW50ZGl2LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJzsKLQotICAgICAgICAgICAgICAg
IGlmIChwbHVnaW5EaXZaKQotICAgICAgICAgICAgICAgICAgICBwYXJlbnRkaXYuc3R5bGUueklu
ZGV4ID0gcGx1Z2luRGl2WjsKLQotICAgICAgICAgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFy
ZW50ZGl2KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF0YWdz
LnBsdWdpbk5vcmVsYXRpdmUpCi0gICAgICAgICAgICAgICAgICAgIHBkLnN0eWxlLnBvc2l0aW9u
ID0gJ3JlbGF0aXZlJzsKLSAgICAgICAgICAgICAgICByb290LmFwcGVuZENoaWxkKHBkKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICBpZiAodGFncy5vdmVybGF5RWFybGll
cikgewotICAgICAgICAgICAgYXBwZW5kT3ZlcmxheShvdmVybGF5RGl2WklmcmFtZSwgb3Zlcmxh
eURpdlpPdmVybGF5LCB0YWdzLm92ZXJsYXlJbnNpZGVEaXYsIGV4cGVjdENsaWNrYWJsZSwgY2Fz
ZUlkKTsKLSAgICAgICAgICAgIGFwcGVuZFBsdWdpbigpOwotICAgICAgICB9IGVsc2Ugew0KLSAg
ICAgICAgICAgIGFwcGVuZFBsdWdpbigpOwotICAgICAgICAgICAgaWYgKHRhZ3Mub3ZlcmxheU9u
VGltZW91dCkgewotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoJ2FwcGVuZE92ZXJsYXkoJytv
dmVybGF5RGl2WklmcmFtZSsnLCAnK292ZXJsYXlEaXZaT3ZlcmxheSArJywgJyArIHRhZ3Mub3Zl
cmxheUluc2lkZURpdiArICcsICcgKyBleHBlY3RDbGlja2FibGUgKyAnLCAnICsgY2FzZUlkICsg
JyknLCAwKTsKLSAgICAgICAgICAgIH0gZWxzZSB7DQotICAgICAgICAgICAgICAgIGFwcGVuZE92
ZXJsYXkob3ZlcmxheURpdlpJZnJhbWUsIG92ZXJsYXlEaXZaT3ZlcmxheSwgdGFncy5vdmVybGF5
SW5zaWRlRGl2LCBleHBlY3RDbGlja2FibGUsIGNhc2VJZCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgfQotCi0gICAgZnVuY3Rpb24gZG9DbGljayhpZCkKLSAgICB7DQotICAgICAg
ICBjbGlja3NbaWRdID0gdHJ1ZTsKLQotICAgICAgICAvLyBDaGVjayBzdWNjZXNzL2ZhaWx1cmUu
Ci0gICAgICAgIHZhciBvdXRwdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0Iik7
Ci0gICAgICAgIHZhciB3YWl0aW5nRm9yTW9yZUNsaWNrcyA9IGZhbHNlOwotICAgICAgICB2YXIg
azsKLSAgICAgICAgZm9yIChrIGluIGV4cGVjdGVkQ2xpY2tzKSB7Ci0gICAgICAgICAgICBpZiAo
ZXhwZWN0ZWRDbGlja3Nba10gJiYgIWNsaWNrc1trXSkKLSAgICAgICAgICAgICAgICB3YWl0aW5n
Rm9yTW9yZUNsaWNrcyA9IHRydWU7Ci0gICAgICAgICAgICBlbHNlIGlmICghZXhwZWN0ZWRDbGlj
a3Nba10gJiYgY2xpY2tzW2tdKSB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0LmlubmVySFRNTCA9
ICdGQUlMVVJFJzsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0NCi0NCi0gICAgICAgIGlmICghd2FpdGluZ0Zvck1vcmVDbGlja3MpIHsKLSAgICAgICAg
ICAgIG91dHB1dC5pbm5lckhUTUwgPSAnU1VDQ0VTUyc7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBpbml0KCkgewotICAgICAgICBhZGRDYXNl
KDAsIDAsIHtleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKLSAgICAgICAgYWRkQ2FzZSgxLCAwLCB7
J292ZXJsYXlFYXJsaWVyJzoxLCAnb3ZlcmxheUluc2lkZURpdic6IDEsICdwbHVnaW5JbnNpZGVE
aXYnOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRFUid9KTsKLSAgICAgICAgYWRkQ2FzZSgyLCAwLCB7
J3BsdWdpbkxvd2Vyeic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7Ci0gICAgICAgIGFkZENh
c2UoMywgMCwgeydwbHVnaW5IaWdoZXJ6JzoxLCBleHBlY3Q6J292ZXJsYXkgVU5ERVInfSk7Ci0g
ICAgICAgIGFkZENhc2UoMCwgMSwgeydvdmVybGF5SW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJs
YXkgT1ZFUid9KTsKLSAgICAgICAgYWRkQ2FzZSgxLCAxLCB7J3BsdWdpbkxvd2Vyeic6MSwgJ292
ZXJsYXlJbnNpZGVEaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOwotICAgICAgICBhZGRD
YXNlKDIsIDEsIHsncGx1Z2luSGlnaGVyeic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOjEsIGV4cGVj
dDonb3ZlcmxheSBVTkRFUid9KTsKLSAgICAgICAgYWRkQ2FzZSgwLCAyLCB7J3BsdWdpbkVxdWFs
eic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOwotICAg
ICAgICBhZGRDYXNlKDEsIDIsIHsncGx1Z2luRXF1YWx6JzoxLCAnb3ZlcmxheUluc2lkZURpdic6
MSwgJ292ZXJsYXlFYXJsaWVyJzoxLCBleHBlY3Q6J292ZXJsYXkgVU5ERVInfSk7Ci0gICAgICAg
IGFkZENhc2UoMiwgMiwgeydvdmVybGF5RWFybGllcic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVS
J30pOwotICAgICAgICBhZGRDYXNlKDMsIDIsIHsnb3ZlcmxheUVhcmxpZXInOjEsICdwbHVnaW5O
b3JlbGF0aXZlJzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKLSAgICAgICAgYWRkQ2FzZSgw
LCAzLCB7J3BsdWdpbk5vcmVsYXRpdmUnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOwotICAg
ICAgICBhZGRDYXNlKDEsIDMsIHsnb3ZlcmxheUVhcmxpZXInOjEsICdwbHVnaW5Ob3JlbGF0aXZl
JzoxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKLSAgICAg
ICAgYWRkQ2FzZSgyLCAzLCB7J3BsdWdpbk5vcmVsYXRpdmUnOjEsICdwbHVnaW5JbnNpZGVEaXYn
OjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOwotICAgICAgICBhZGRDYXNlKDMsIDMsIHsncGx1
Z2luTG93ZXJ6JzoxLCAnb3ZlcmxheU9uVGltZW91dCc6MSwgZXhwZWN0OidvdmVybGF5IE9WRVIn
fSk7Ci0gICAgICAgIGFkZENhc2UoNCwgMCwgeydwbHVnaW5FeHBsaWNpdEhpZ2hlclpJbmRleCc6
IDEsICdwbHVnaW5Ob3JlbGF0aXZlJzogMSwgJ3BsdWdpbkluc2lkZURpdic6IDEsICdvdmVybGF5
SW5zaWRlRGl2JzogMSwgZXhwZWN0OiAnb3ZlcmxheSBVTkRFUicgfSk7Ci0gICAgICAgIHJ1blRl
c3QoKTsKLSAgICB9Ci0KLSAgICAvLyBBdXRvbWF0aW9uOiB0cnkgdG8gY2xpY2sgb24gZWFjaCBi
dXR0b24uCi0gICAgdmFyIG5leHRJZFRvQ2xpY2sgPSAwOwotCi0gICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5ldmVudFNlbmRl
cikgewotICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoZG9OZXh0
Q2xpY2ssIDApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbW92ZU1vdXNlT3Zl
cihlbGVtTmFtZSkgewotICAgICAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGVsZW1OYW1lKTsKLSAgICAgICAgdmFyIHggPSBlbGVtLm9mZnNldExlZnQgKyBlbGVtLnNjcm9s
bFdpZHRoIC8gMjsKLSAgICAgICAgdmFyIHkgPSBlbGVtLm9mZnNldFRvcCArIGVsZW0uc2Nyb2xs
SGVpZ2h0IC8gMjsKLSAgICAgICAgdmFyIG9mZnNldFBhcmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50
OwotICAgICAgICB3aGlsZSAob2Zmc2V0UGFyZW50KSB7Ci0gICAgICAgICAgICB4ICs9IG9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OwotICAgICAgICAgICAgeSArPSBvZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOwotICAgICAgICAgICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVu
dDsKLSAgICAgICAgfQotICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBkb05leHRDbGljaygpIHsKLSAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOwotICAgICAgICBpZiAobmV4dElkVG9DbGljayA8IGV4cGVjdGVkQ2xpY2tzLmxl
bmd0aCkgewotICAgICAgICAgICAgbW92ZU1vdXNlT3ZlcignYnV0dG9uJyArIG5leHRJZFRvQ2xp
Y2spOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Ci0gICAgICAgICAgICBu
ZXh0SWRUb0NsaWNrKys7Ci0gICAgICAgICAgICBzZXRUaW1lb3V0KGRvTmV4dENsaWNrLCAwKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICB9LCAw
KTsKLSAgICAgICAgfQotICAgIH0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9
ImluaXQoKSI+Ci0KLSAgICA8cD5UZXN0IHRoYXQgaWZyYW1lIHNoaW1zIGNhbiBiZSB1c2VkIHRv
IG92ZXJsYXkgSFRNTCBhYm92ZSBhCi0gICAgd2luZG93ZWQgcGx1Z2luLiBUaGUgcmVkIHNxdWFy
ZXMgc2hvdWxkIGJlIGhpZGRlbiBieSB0aGUgYmx1ZQotICAgIGZsYXNoIHBsdWdpbnMsIGFuZCB0
aGUgZ3JlZW4gc3F1YXJlcyBzaG91bGQgYXBwZWFyIG92ZXIgdGhlCi0gICAgcGx1Z2lucy4gVG8g
dGVzdCBpbnRlcmFjdGl2ZWx5LCBjbGljayBvdmVyIHRoZSBidXR0b25zIG9uIHRoZQotICAgIHNx
dWFyZXMuIFlvdSBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVhY2ggdGhlIHJlZCBzcXVhcmVzJwot
ICAgIGJ1dHRvbnMuPC9wPgotCi0gICAgPHA+UHJpbnRzICJTVUNDRVNTIiBvbiBzdWNjZXNzLCAi
RkFJTFVSRSIgb24gZmFpbHVyZS48L3A+Ci0gICAgPGRpdiBpZD1vdXRwdXQ+Tk9ORTwvZGl2Pgot
ICAgIDxkaXYgaWQ9ImNvbnRhaW5lciIgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsiPjwvZGl2
PgotCi08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL29iamVjdC1l
bWJlZC1wbHVnaW4tc2NyaXB0aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGx1
Z2lucy9vYmplY3QtZW1iZWQtcGx1Z2luLXNjcmlwdGluZy5odG1sCShyZXZpc2lvbiAxODIyNzMp
CisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL29iamVjdC1lbWJlZC1wbHVnaW4tc2NyaXB0aW5nLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDYgQEAgZnVuY3Rpb24gdGVzdCgpIAogICAg
IHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiCiAgICAgd2lkdGggPSAw
IGhlaWdodCA9IDAKICAgICA+Ci0gICAgPFBBUkFNIG5hbWU9InNyYyIgdmFsdWU9InJlc291cmNl
cy9zaW1wbGVfYmxhbmsuc3dmIj4KICAgICA8UEFSQU0gbmFtZT0iYXV0b3N0YXJ0IiB2YWx1ZT0i
ZmFsc2UiPgogICAgIAogICAgIDxFTUJFRCAKQEAgLTEwMyw3ICsxMDIsNiBAQCBmdW5jdGlvbiB0
ZXN0KCkgCiAgICAgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIKICAg
ICB3aWR0aCA9IDAgaGVpZ2h0ID0gMAogICAgID4KLSAgICA8cGFyYW0gbmFtZT0ic3JjIiB2YWx1
ZT0icmVzb3VyY2VzL3NpbXBsZV9ibGFuay5zd2YiPgogICAgIDxwYXJhbSBuYW1lPSJhdXRvc3Rh
cnQiIHZhbHVlPSJmYWxzZSI+CiAgICAgPHBhcmFtIG5hbWU9ImVuYWJsZWphdmFzY3JpcHQiIHZh
bHVlPSJ0cnVlIj4KICAgICAKSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvcmVzb3VyY2VzL3Bs
dWdpbi1mcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvcmVzb3Vy
Y2VzL3BsdWdpbi1mcmFtZS5odG1sCShyZXZpc2lvbiAxODIyNzMpCisrKyBMYXlvdXRUZXN0cy9w
bHVnaW5zL3Jlc291cmNlcy9wbHVnaW4tZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjIs
NyArMjIsNyBAQAogCiA8dGFibGU+CiAgICAgPHRyPgotICAgICAgICA8dGQ+PGVtYmVkIHNyYz0i
Zm9vLnN3ZiIgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giPjwvdGQ+CisgICAg
ICAgIDx0ZD48ZW1iZWQgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSI+
PC90ZD4KICAgICA8L3RyPgogPC90YWJsZT4KIDxwPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250108</attachid>
            <date>2015-04-03 16:56:23 -0700</date>
            <delta_ts>2015-04-06 08:21:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>FlashTests.txt</filename>
            <type>text/plain</type>
            <size>25910</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE4MjMzOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDE1LTA0LTAzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIFJlZHVjZSB0aGUgZGVwZW5kZW5jeSBvbiBGbGFzaCBpbiByZWdyZXNzaW9u
IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDMzOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOiAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6ZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZCk6CisgICAgICAgIE9ubHkgYWxsb3cgUXVpY2tU
aW1lIGFuZCB0aGUgdGVzdCBwbHVnLWluLgorCiAyMDE1LTA0LTAzICBDc2FiYSBPc3p0cm9nb27D
oWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgLS1y
ZW1vdGUgc2hvdWxkIGFkZCBsaWJsbHZtRm9ySlNDLnNvIHRvIHRoZSBidW5kbGUgb24gTGludXgK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biAxODIzMzgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VH
cm91cC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUGx1
Z2luSW5mb3JtYXRpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlByaXZh
dGUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQcm90ZWN0aW9uU3BhY2UuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tSZXRhaW5QdHIuaD4KQEAgLTEzMTQsNyArMTMxNSwyMiBAQCBXS1BsdWdpbkxvYWRQ
b2xpY3kgVGVzdENvbnRyb2xsZXI6OmRlY2lkCiB7CiAgICAgaWYgKG1fc2hvdWxkQmxvY2tBbGxQ
bHVnaW5zKQogICAgICAgICByZXR1cm4ga1dLUGx1Z2luTG9hZFBvbGljeUJsb2NrZWQ7CisKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgV0tTdHJpbmdSZWYgYnVuZGxlSWRlbnRpZmllciA9IChXS1N0
cmluZ1JlZilXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KHBsdWdpbkluZm9ybWF0aW9uLCBXS1Bs
dWdpbkluZm9ybWF0aW9uQnVuZGxlSWRlbnRpZmllcktleSgpKTsKKyAgICBpZiAoIWJ1bmRsZUlk
ZW50aWZpZXIpCisgICAgICAgIHJldHVybiBjdXJyZW50UGx1Z2luTG9hZFBvbGljeTsKKworICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGJ1bmRsZUlkZW50aWZpZXIsICJjb20u
YXBwbGUuUXVpY2tUaW1lIFBsdWdpbi5wbHVnaW4iKSkKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRQ
bHVnaW5Mb2FkUG9saWN5OworCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
YnVuZGxlSWRlbnRpZmllciwgImNvbS5hcHBsZS50ZXN0bmV0c2NhcGVwbHVnaW4iKSkKKyAgICAg
ICAgcmV0dXJuIGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5OworCisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgLy8gUGxlYXNlIGRvbid0IHVzZSBhbnkgb3RoZXIgcGx1Zy1pbnMgaW4g
dGVzdHMsIGFzIHRoZXkgd2lsbCBub3QgYmUgaW5zdGFsbGVkIG9uIGFsbCBtYWNoaW5lcy4KKyNl
bHNlCiAgICAgcmV0dXJuIGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5OworI2VuZGlmCiB9CiAKIHZv
aWQgVGVzdENvbnRyb2xsZXI6OmRpZENvbW1pdE5hdmlnYXRpb24oV0tQYWdlUmVmIHBhZ2UsIFdL
TmF2aWdhdGlvblJlZiBuYXZpZ2F0aW9uKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyMzM4KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIw
MTUtMDQtMDMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdWNlIHRoZSBkZXBlbmRlbmN5IG9uIEZsYXNoIGluIHJlZ3Jlc3Npb24gdGVzdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzM5MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9pbmxpbmUtYmxvY2stYXNzZXJ0aW9uLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9w
bHVnaW4uaHRtbDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9nZW9tZXRyeS9lbXB0eS1lbWJlZC1y
ZWN0cy5odG1sOgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9yZXNvdXJjZXMvc3ViZnJhbWUtd2l0
aC1wbHVnaW4uaHRtbDoKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9lbWJlZC1kb2VzLW5vdC1wcm9w
YWdhdGUtZGltZW5zaW9ucy10by1vYmplY3QtYW5jZXN0b3IuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2xvYWRlci9sb2FkSW5Qcm9ncmVzcy5odG1sOgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvYm9y
ZGVyLXJhZGl1cy1jbGlwLmh0bWw6CisgICAgICAgICogZmFzdC9yZXBsYWNlZC9lbWJlZC1kaXNw
bGF5LW5vbmUuaHRtbDoKKyAgICAgICAgKiBwbHVnaW5zL2NyYXNoLXJlc3RvcmluZy1wbHVnaW4t
cGFnZS1mcm9tLXBhZ2UtY2FjaGUuaHRtbDoKKyAgICAgICAgKiBwbHVnaW5zL29iamVjdC1lbWJl
ZC1wbHVnaW4tc2NyaXB0aW5nLmh0bWw6CisgICAgICAgICogcGx1Z2lucy9yZXNvdXJjZXMvcGx1
Z2luLWZyYW1lLmh0bWw6CisgICAgICAgIFVzZSBUZXN0TmV0c2NhcGVQbHVnaW4sIGFzIHRoZSB0
ZXN0cyBkb24ndCBhcHBlYXIgdG8gaGF2ZSBhbnkgcmVhbCBuZWVkIGZvciBGbGFzaC4KKworICAg
ICAgICAqIHBsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWw6IFJlbW92ZWQuIFRoaXMgd2FzIGEgdGVz
dCBmb3IgYSBjaHJvbWl1bSBvbmx5IGZlYXR1cmUKKyAgICAgICAgdGhhdCBuZXZlciBleGlzdGVk
IGluIFdlYktpdC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIFJl
bW92ZWQgdGhlIGRlbGV0ZWQgcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbC4KKworICAgICAgICAq
IHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczogU2tpcCBzbmFwc2hvdHRpbmcgdGVz
dHMgdGhhdCB1c2UgRmxhc2gsCisgICAgICAgIGJlY2F1c2UgdGhleSBtYWtlIFdlYktpdFRlc3RS
dW5uZXIgY3Jhc2ggbm93LiBNYXJrZWQgYWxsIG90aGVyIHNuYXBzaG90dGluZyB0ZXN0cworICAg
ICAgICBhcyBQYXNzL0ZhaWx1cmUsIGJlY2F1c2UgdGhleSBkb24ndCByZWFsbHkgbWFrZSBhbnkg
c2Vuc2UsIGFuZCBhcmUgb25seSB1c2VmdWwgZm9yCisgICAgICAgIGZpbnNpbmcgY3Jhc2hlcy4K
KworICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOiBTa2lwcGVkIGEgZmV3
IHJlbWFpbmluZyB0ZXN0cyB0aGF0IHVzZSBGbGFzaC4KKyAgICAgICAgVGhlc2UgdGVzdHMgc3Rp
bGwgcnVuIChhbmQgcGFzcykgdW5kZXIgV2ViS2l0MSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIEZs
YXNoIGlzCisgICAgICAgIGluc3RhbGxlZCwgc28gdGhleSBkb24ndCBzZWVtIGxpa2UgdmVyeSBh
Y2N1cmF0ZSB0ZXN0cy4KKwogMjAxNS0wNC0wMyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hA
YXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBUb2dnbGluZyBjaGVjayBib3ggc3RhdGUgbm90IHNw
ZWFraW5nIHVzaW5nIHBsYWluIHNwYWNlLCBub3QgVk8gc3BhY2UuCkluZGV4OiBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2lubGluZS1ibG9jay1hc3NlcnRpb24uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lubGluZS1ibG9jay1hc3NlcnRpb24uaHRtbAko
cmV2aXNpb24gMTgyMzM4KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pbmxpbmUtYmxv
Y2stYXNzZXJ0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBACiA8L2hlYWQ+
CiA8Ym9keSBpZD0iYm9keSI+CiAKLTxlbWJlZCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0LnN3ZiIg
dHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIGFsbG93ZnVsbHNjcmVlbj0idHJ1
ZSIgd2lkdGg9IjM2MiIgaGVpZ2h0PSIyOTgiIGRhdGEtb3JpZ2luYWwtd2lkdGg9IjQyNSIgZGF0
YS1vcmlnaW5hbC1oZWlnaHQ9IjM1MCI+Cis8ZW1iZWQ+CiA8ZGl2IHBzZXVkbz0iLXdlYmtpdC1w
bHVnaW4tcmVwbGFjZW1lbnQiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDEwMDsgaGVpZ2h0OiAxMDA7IiBpZD0iZ3JvdXAiPgogPGlmcmFt
ZSB3aWR0aD0iMTAwJSIgaWQ9ImlmcmFtZSIgc3R5bGU9Im1heC1oZWlnaHQ6IDEwMCUiIGhlaWdo
dD0iMzUwIiBzcmM9InJlc291cmNlcy9jYWtlLnBuZyIgZnJhbWVib3JkZXI9IjAiIHNjcm9sbGlu
Zz0ibm8iPjwvaWZyYW1lPgogPC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L3BsdWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGx1
Z2luLmh0bWwJKHJldmlzaW9uIDE4MjMzOCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
cGx1Z2luLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw3IEBACiAgICAgPCEtLSBUaGlz
IHRlc3QgZW5zdXJlcyB0aGF0IGEgcGx1Z2luIHRoYXQgaXMgbm90IGFjY2Vzc2libGUsIHdpbGwg
bm90IGFwcGVhciBpbiB0aGUgQVggaGllcmFjaHktLT4KICAgICA8b2JqZWN0IHdpZHRoPTEwMCBo
ZWlnaHQ9MTAwPgogICAgICAgIDxwYXJhbSBuYW1lPSJtb3ZpZSI+Ci0gICAgICAgPGVtYmVkIHNy
Yz0iLi4vcmVzb3VyY2VzL3Rlc3Quc3dmIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1m
bGFzaCI+CisgICAgICAgPGVtYmVkIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0
c2NhcGUiPgogICAgIDwvb2JqZWN0PiAgICAKICAgICAKICAgICA8ZGl2IGlkPSJyZXN1bHQiPjwv
ZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZ2VvbWV0cnkvZW1wdHktZW1iZWQt
cmVjdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jb21wb3NpdGluZy9nZW9tZXRy
eS9lbXB0eS1lbWJlZC1yZWN0cy5odG1sCShyZXZpc2lvbiAxODIzMzgpCisrKyBMYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9nZW9tZXRyeS9lbXB0eS1lbWJlZC1yZWN0cy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xMCwxMSArMTAsMTEgQEAKIDxib2R5PgogICAgIDxwPlRoaXMgdGVzdGNhc2Ugc2hv
dWxkIG5vdCBmaXJlIGFuIGFzc2VydGlvbiByZWxhdGVkIHRvIHRoZSBjbGlwIHJlY3RzIHJvb3Qu
PC9wPgogICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsiPgotICAgICAgICA8ZW1i
ZWQgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giPgorICAgICAgICA8ZW1iZWQg
dHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSI+CiAgICAgPC9kaXY+ICAg
ICAgCiAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyI+CiAgICAgICAgIDxkaXYg
c3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsiPjwvZGl2PgotICAgICAgICA8ZW1iZWQgdHlwZT0i
YXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giPgorICAgICAgICA8ZW1iZWQgdHlwZT0iYXBw
bGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSI+CiAgICAgPC9kaXY+CiA8L2JvZHk+CiA8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL3N1YmZyYW1l
LXdpdGgtcGx1Z2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5
L3Jlc291cmNlcy9zdWJmcmFtZS13aXRoLXBsdWdpbi5odG1sCShyZXZpc2lvbiAxODIzMzgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL3N1YmZyYW1lLXdpdGgtcGx1Z2lu
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8aHRtbD4KICAgPGhlYWQ+PC9o
ZWFkPgogICA8Ym9keT4KLSAgICA8ZW1iZWQgc3JjPSIuLi8uLi8uLi9wbHVnaW5zL3Jlc291cmNl
cy9saW5lcy5zd2YiPjwvZW1iZWQ+CisgICAgPGVtYmVkIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Vi
a2l0LXRlc3QtbmV0c2NhcGUiPjwvZW1iZWQ+CiAgIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2VtYmVkLWRvZXMtbm90LXByb3BhZ2F0ZS1kaW1lbnNpb25z
LXRvLW9iamVjdC1hbmNlc3Rvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2VtYmVkLWRvZXMtbm90LXByb3BhZ2F0ZS1kaW1lbnNpb25zLXRvLW9iamVjdC1hbmNl
c3Rvci5odG1sCShyZXZpc2lvbiAxODIzMzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9l
bWJlZC1kb2VzLW5vdC1wcm9wYWdhdGUtZGltZW5zaW9ucy10by1vYmplY3QtYW5jZXN0b3IuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMjQsOSArMjQsOSBAQAogPGJvZHkgb25sb2FkPSJ0ZXN0KCk7
Ij4KICAgICA8b2JqZWN0IGlkPSJmaXJzdCIgZGF0YT0icmVzb3VyY2VzL211LnBuZyIgc3R5bGU9
ImhlaWdodDogMTAwcHg7IHdpZHRoOjEwMHB4OyI+PGVtYmVkIGhlaWdodD0iMzAwIiB3aWR0aD0i
MzAwIj48L29iamVjdD4KICAgICA8YnI+Ci0gICAgPG9iamVjdCBpZD0ic2Vjb25kIiBkYXRhPSJy
ZXNvdXJjZXMvbXUucG5nIiBzdHlsZT0iIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+PGVtYmVk
IGhlaWdodD0iMzAwIiB3aWR0aD0iMzAwIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1m
bGFzaCIgc3JjPSIuLi8uLi9wbHVnaW5zL3Jlc291cmNlcy9zaW1wbGVfYmxhbmsuc3dmIj48L29i
amVjdD4KKyAgICA8b2JqZWN0IGlkPSJzZWNvbmQiIGRhdGE9InJlc291cmNlcy9tdS5wbmciIHN0
eWxlPSIiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48ZW1iZWQgaGVpZ2h0PSIzMDAiIHdpZHRo
PSIzMDAiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPjwvb2JqZWN0
PgogICAgIDxicj4KLSAgICA8b2JqZWN0IGlkPSJ0aGlyZCIgc3R5bGU9IiIgd2lkdGg9IjEwMCIg
aGVpZ2h0PSIxMDAiPjxlbWJlZCBoZWlnaHQ9IjMwMCIgd2lkdGg9IjMwMCIgdHlwZT0iYXBwbGlj
YXRpb24veC1zaG9ja3dhdmUtZmxhc2giIHNyYz0iLi4vLi4vcGx1Z2lucy9yZXNvdXJjZXMvc2lt
cGxlX2JsYW5rLnN3ZiI+PC9vYmplY3Q+CisgICAgPG9iamVjdCBpZD0idGhpcmQiIHN0eWxlPSIi
IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48ZW1iZWQgaGVpZ2h0PSIzMDAiIHdpZHRoPSIzMDAi
IHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPjwvb2JqZWN0PgogICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPkZBSUxVUkU8L2Rpdj4KIDwvYm9keT48L2h0bWw+CiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2xvYWRJblByb2dyZXNzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbG9hZEluUHJvZ3Jlc3MuaHRtbAkocmV2aXNpb24g
MTgyMzM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvbG9hZEluUHJvZ3Jlc3MuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogCiA8Ym9keSBvbkxvYWQ9InRlc3RGb3Jt
KCk7Ij4KIDxmb3JtIG5hbWU9IkxvZ2luRm9ybSI+IAotPGVtYmVkIHNyYz0iIiB0eXBlPSJhcHBs
aWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCI+PC9lbWJlZD4KKzxlbWJlZCB0eXBlPSJhcHBsaWNh
dGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIj48L2VtYmVkPgogPC9mb3JtPgkJCQogPC9ib2R5
PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9ib3JkZXItcmFkaXVz
LWNsaXAuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL2JvcmRl
ci1yYWRpdXMtY2xpcC5odG1sCShyZXZpc2lvbiAxODIzMzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3JlcGxhY2VkL2JvcmRlci1yYWRpdXMtY2xpcC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw4
ICsxOCw3IEBAIEFsbCBvZiB0aGUgcmVwbGFjZWQgZWxlbWVudHMgYmVsb3cgc2hvdWwKIAogPGJy
PgogCi08ZW1iZWQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdC5zd2YiIHN0eWxlPSJib3JkZXI6
M3B4IHNvbGlkIGJsYWNrOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaW1lOyAtd2Via2l0LWJvcmRlci1y
YWRpdXM6IDMycHg7IG1hcmdpbi1ib3R0b206LTMycHgiCis8ZW1iZWQgc3R5bGU9ImJvcmRlcjoz
cHggc29saWQgYmxhY2s7IGJhY2tncm91bmQtY29sb3I6IGxpbWU7IC13ZWJraXQtYm9yZGVyLXJh
ZGl1czogMzJweDsgbWFyZ2luLWJvdHRvbTotMzJweCIKICAgICBxdWFsaXR5PSJoaWdoIiB3aWR0
aD0iNTUwIiBoZWlnaHQ9IjQwMCIgd21vZGU9InRyYW5zcGFyZW50IgotICAgIHR5cGU9ImFwcGxp
Y2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIgotICAgIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1h
Y3JvbWVkaWEuY29tL3Nob2Nrd2F2ZS9kb3dubG9hZC9pbmRleC5jZ2k/UDFfUHJvZF9WZXJzaW9u
PVNob2Nrd2F2ZUZsYXNoIj4KKyAgICB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5l
dHNjYXBlIj4KIDwvZW1iZWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL2VtYmVk
LWRpc3BsYXktbm9uZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVwbGFj
ZWQvZW1iZWQtZGlzcGxheS1ub25lLmh0bWwJKHJldmlzaW9uIDE4MjMzOCkKKysrIExheW91dFRl
c3RzL2Zhc3QvcmVwbGFjZWQvZW1iZWQtZGlzcGxheS1ub25lLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMsMTAgKzMsOSBAQAogPGJvZHk+CiAKICAgPHA+U2hvdWxkIG5vdCBzZWUgdGhlIGVtYmVk
IGJlbG93IChpdCBoYXMgZGlzcGxheTpub25lKS48L3A+Ci0gIDxlbWJlZCBzdHlsZT0iZGlzcGxh
eTpub25lIiBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0LnN3ZiIKKyAgPGVtYmVkIHN0eWxlPSJk
aXNwbGF5Om5vbmUiCiAgICAgcXVhbGl0eT0iaGlnaCIgd2lkdGg9IjU1MCIgaGVpZ2h0PSI0MDAi
Ci0gICAgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giCi0gICAgcGx1Z2luc3Bh
Z2U9Imh0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vc2hvY2t3YXZlL2Rvd25sb2FkL2luZGV4LmNn
aT9QMV9Qcm9kX1ZlcnNpb249U2hvY2t3YXZlRmxhc2giPgorICAgIHR5cGU9ImFwcGxpY2F0aW9u
L3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPgogICA8L2VtYmVkPgogCiA8L2JvZHk+CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lv
biAxODIzMzgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnMJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw2ICsyOTgsMTQgQEAgd2Via2l0Lm9yZy9iLzEzMjc2
NiBmYXN0L2hpZHBpL2ZpbHRlcnMtaQogd2Via2l0Lm9yZy9iLzEzMjc2NiBmYXN0L2hpZHBpL2Zp
bHRlcnMtbXVsdGlwbGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEz
Mjc2NiBmYXN0L2hpZHBpL2ZpbHRlcnMtcmVmZXJlbmNlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIAorIyBQbHVnLWluIHNuYXBzaG90dGluZyB0ZXN0cyBkbyBub3QgbWFrZSBtdWNoIHNlbnNl
OgorIyAtIHNuYXBzaG90dGluZyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgRmxhc2gsIGJ1dCB3ZSBj
YW4ndCB1c2UgRmxhc2ggYmVjYXVzZSBpdCBpc24ndCBpbnN0YWxsZWQgZXZlcnl3aGVyZTsKKyMg
LSBzbyBtb3N0IG9mIHRoZSB0ZXN0cyB1c2UgUXVpY2tUaW1lLCB3aGljaCBkb2Vzbid0IHN1cHBv
cnQgc25hcHNob3R0aW5nLCBhbmQgaXMgMzItYml0IG9ubHksIHRodXMgZmFpbGluZyB0byBsb2Fk
IGluIGVuZ2luZWVyaW5nIGJ1aWxkcy4KK3BsdWdpbnMvc25hcHNob3R0aW5nIFsgUGFzcyBGYWls
dXJlIF0KKyMgVGhlc2UgdHdvIHRlc3RzIHVzZSBGbGFzaCwgc28gdGhleSB0cmlnZ2VyIGEgcmVs
ZWFzZSBhc3NlcnRpb24uCitwbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1zaW1pbGFyLXRv
LWRvbWluYW50LWFmdGVyLWRlbGF5Lmh0bWwgWyBTa2lwIF0KK3BsdWdpbnMvc25hcHNob3R0aW5n
L3ByaW50LXNuYXBzaG90dGVkLXBsdWdpbi5odG1sIFsgU2tpcCBdCisKIHdlYmtpdC5vcmcvYi8x
MzMyMjcgcGx1Z2lucy9zbmFwc2hvdHRpbmcvc2V0LXBsdWdpbi1zaXplLXRvLXRpbnkuaHRtbCBb
IEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEzMzIyNyBwbHVnaW5zL3NuYXBzaG90dGluZy9xdWlj
a3RpbWUtcGx1Z2luLXNuYXBzaG90dGVkLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTgyMzM4
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcg
Y29weSkKQEAgLTE4MCw5ICsxODAsNiBAQCB3ZWJraXQub3JnL2IvNDM5NjAgc2Nyb2xsYmFycy9j
dXN0b20tc2NyCiAjIHZpZXdwb3J0IG1ldGEgdGFnIHN1cHBvcnQKIGZhc3Qvdmlld3BvcnQKIAot
IyBUaGUgV2ViS2l0IHBsdWdpbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGlmcmFt
ZSBzaGltcy4KLXdlYmtpdC5vcmcvYi80NjIyMyBwbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCi0K
IHdlYmtpdC5vcmcvYi8xMTY2NDAgcGx1Z2lucy9wbHVnaW4taW5pdGlhdGUtcG9wdXAtd2luZG93
Lmh0bWwKIAogIyBSZXF1aXJlcyBXZWJQIHN1cHBvcnQuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE4MjMzOCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcg
Y29weSkKQEAgLTE3NzQsMTAgKzE3NzQsNiBAQCBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXNlcnZl
ZC1hcy10ZXh0Lmh0CiAjIFByZS1ITVRMNSBwYXJzZXIgcXVpcmtzIG9ubHkgYXBwbHkgdG8gdGhl
IG1hYyBwb3J0IGZvciBub3cuCiBmYXN0L3BhcnNlci9wcmUtaHRtbDUtcGFyc2VyLXF1aXJrcy5o
dG1sCiAKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MjIzCi0j
IFRoZSBXZWJLaXQgcGx1Z2luIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgaWZyYW1l
IHNoaW1zLgotcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbAotCiAjIFJlcXVpcmVzIFdlYlAgc3Vw
cG9ydC4KIGZhc3QvY2FudmFzL2NhbnZhcy10b0RhdGFVUkwtd2VicC5odG1sCiBmYXN0L2ltYWdl
cy93ZWJwLWltYWdlLWRlY29kaW5nLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxODIzMzgpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjgwLDkgKzI4MCwx
NiBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1oCiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1sb2NhdGlvbi1nZXQtb3ZlcnJpZGUuaHRtbAog
aHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML3hzcy1BTExPV0VELXRvLWphdmFzY3Jp
cHQtdXJsLXN1Yi1mcmFtZS0yLWxldmVsLmh0bWwKIAotIyBUaGVzZSBhcmUgcGx1Zy1pbiB0ZXN0
cyB0aGF0IHVzZSBGbGFzaCBvciBRdWlja1RpbWUuIFdlIHNob3VsZCBjb252ZXJ0IHRoZXNlIHRv
IHVzZSB0aGUgdGVzdCBwbHVnLWluLgotcGx1Z2lucy9pZnJhbWUtc2hpbXMuaHRtbAotcGx1Z2lu
cy9lbWJlZC1hdHRyaWJ1dGVzLXNldHRpbmcuaHRtbAorIyBUaGVzZSB0ZXN0cyB1c2UgRmxhc2gs
IHdoaWNoIGlzIG5vdCBhIGdvb2QgaWRlYSwgYmVjYXVzZSBpdCBpcyBub3QgaW5zdGFsbGVkIG9u
IGFsbCBtYWNoaW5lcyB0aGF0IHJ1biB0ZXN0cy4KKyMgV2ViS2l0VGVzdFJ1bm5lciBkZXRlY3Rz
IGF0dGVtcHRzIHRvIHVzZSBGbGFzaCwgYW5kIHJhaXNlcyBhbiBhc3NlcnRpb24uCitlZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtbm9wbHVnaW4uaHRtbCBbIFNraXAgXQorZmFzdC9kb20vYmVmb3Jl
bG9hZC9mbGFzaC1iZWZvcmUtbG9hZC5odG1sIFsgU2tpcCBdCitmYXN0L2RvbS9iZWZvcmVsb2Fk
L3JlbW92ZS1mbGFzaC1pbi1iZWZvcmVsb2FkLWxpc3RlbmVyLmh0bWwgWyBTa2lwIF0KK2Zhc3Qv
bG9hZGVyL3NhbmRib3hlZC1wbHVnaW4tY3Jhc2guaHRtbCBbIFNraXAgXQorcGx1Z2lucy9oaWRk
ZW4taWZyYW1lLXdpdGgtc3dmLXBsdWdpbi5odG1sIFsgU2tpcCBdCitwbHVnaW5zL3BsdWdpbi1k
b2N1bWVudC1sb2FkLXByZXZlbnRlZC11c2Vyc2NyaXB0Lmh0bWwgWyBTa2lwIF0KK3BsdWdpbnMv
cGx1Z2luLWRvY3VtZW50LXdpbGxTZW5kUmVxdWVzdC1udWxsLmh0bWwgWyBTa2lwIF0KK3BsdWdp
bnMvcGx1Z2luLXJlbW92ZS1yZWFkeXN0YXRlY2hhbmdlLmh0bWwgWyBTa2lwIF0KIAogIyBUaGlz
IHRlc3QgY2hlY2tzIHRoYXQgTlBOX0dldFVSTCB3aXRoIGEgYmxhbmsgdGFyZ2V0IHdpbGwgcmV0
dXJuIGFuIGVycm9yIGlmIHRoZSB3aW5kb3cgaXNuJ3Qgb3BlbmVkLiBUaGlzIGJlaGF2aW9yIGRv
ZXNuJ3QKICMgbWF0Y2ggRmlyZWZveCBvciBDaHJvbWUuIFdlIHNob3VsZCBlaXRoZXIgZml4IHRo
ZSB0ZXN0LCBvciBnZXQgcmlkIG9mIGl0LgpJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9jcmFz
aC1yZXN0b3JpbmctcGx1Z2luLXBhZ2UtZnJvbS1wYWdlLWNhY2hlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9jcmFzaC1yZXN0b3JpbmctcGx1Z2luLXBhZ2UtZnJvbS1w
YWdlLWNhY2hlLmh0bWwJKHJldmlzaW9uIDE4MjMzOCkKKysrIExheW91dFRlc3RzL3BsdWdpbnMv
Y3Jhc2gtcmVzdG9yaW5nLXBsdWdpbi1wYWdlLWZyb20tcGFnZS1jYWNoZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIElmIHlvdSdyZSBub3QgcnVubmluZyB1bmRlciBEUlQs
IHlvdSdsbCAKIDxvYmplY3Q+CiA8b2JqZWN0PgogCi08b2JqZWN0IHR5cGU9ImFwcGxpY2F0aW9u
L3gtc2hvY2t3YXZlLWZsYXNoIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjM3NSIgaWQ9IkV4YW1wbGVQ
bHVnaW4iPgorPG9iamVjdCB0eXBlPSJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBl
IiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjM3NSIgaWQ9IkV4YW1wbGVQbHVnaW4iPgogICAgIDxpbWcg
c3JjPSJyZXNvdXJjZXMvYXBwbGUuZ2lmIj4KIDwvb2JqZWN0PgogCkluZGV4OiBMYXlvdXRUZXN0
cy9wbHVnaW5zL2lmcmFtZS1zaGltcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
dWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwJKHJldmlzaW9uIDE4MjMzOCkKKysrIExheW91dFRlc3Rz
L3BsdWdpbnMvaWZyYW1lLXNoaW1zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMjYzICswLDAg
QEAKLTxodG1sPjxoZWFkPgotPHNjcmlwdD4KLSAgICB2YXIgZXhwZWN0ZWRDbGlja3MgPSBbXTsK
LSAgICB2YXIgY2xpY2tzID0gW107Ci0KLSAgICB2YXIgaGVpZ2h0ID0gMTAwOwotICAgIHZhciB3
aWR0aCA9IDEwMDsKLSAgICB2YXIgaXRlbXMgPSAwOwotCi0gICAgZnVuY3Rpb24gbWFrZVBsdWdp
bkVsZW1lbnQoKQotICAgIHsKLSAgICAgICAgdmFyIGYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdlbWJlZCcpOwotICAgICAgICBmLnNldEF0dHJpYnV0ZSgnaWQnLCAnc3dmX2VtYmVkXycgKyBp
dGVtcyk7Ci0gICAgICAgIGYuc2V0QXR0cmlidXRlKCd3aWR0aCcsIHdpZHRoICsgJycpOwotICAg
ICAgICBmLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgaGVpZ2h0ICsgJycpOwotICAgICAgICBmLnNl
dEF0dHJpYnV0ZSgnd21vZGUnLCAnd2luZG93Jyk7Ci0gICAgICAgIGYuc2V0QXR0cmlidXRlKCds
b29wJywgJ2ZhbHNlJyk7Ci0gICAgICAgIGYuc2V0QXR0cmlidXRlKCdzcmMnLCAncmVzb3VyY2Vz
L3NpbXBsZV9ibGFuay5zd2YnKTsKLSAgICAgICAgZi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnYXBw
bGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gnKTsKLSAgICAgICAgcmV0dXJuIGY7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gbWFrZVBsdWdpbkVsZW1lbnRXaXRoSGlnaGVyWkluZGV4KCkKLSAgICB7
Ci0gICAgICAgIHZhciBmID0gbWFrZVBsdWdpbkVsZW1lbnQoKTsKLSAgICAgICAgZi5zdHlsZS56
SW5kZXggPSAxMDAwOwotICAgICAgICBmLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJzsKLSAg
ICAgICAgcmV0dXJuIGY7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbWFrZUlmcmFtZURpdigpCi0g
ICAgewotICAgICAgICB2YXIgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwot
ICAgICAgICBpLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsKLSAgICAgICAgaS5zdHlsZS50
b3AgPSAnMTBweCc7Ci0gICAgICAgIGkuc3R5bGUubGVmdCA9ICczMHB4JzsKLSAgICAgICAgaS5z
dHlsZS53aWR0aCA9ICc4MHB4JzsKLSAgICAgICAgaS5zdHlsZS5oZWlnaHQgPSAnODBweCc7Ci0g
ICAgICAgIGkuc2V0QXR0cmlidXRlKCdmcmFtZWJvcmRlcicsICcwJyk7Ci0gICAgICAgIGkuc2V0
QXR0cmlidXRlKCdzcmMnLCAnamF2YXNjcmlwdDp2b2lkKDApOycpOwotICAgICAgICByZXR1cm4g
aTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBtYWtlT3ZlcmxheURpdihjb2xvciwgY2FzZUlkKQot
ICAgIHsNCi0gICAgICAgIHZhciBvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0g
ICAgICAgIG8uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOwotICAgICAgICBvLnN0eWxlLnRv
cCA9ICcxMHB4JzsKLSAgICAgICAgby5zdHlsZS5sZWZ0ID0gJzMwcHgnOwotICAgICAgICBvLnN0
eWxlLndpZHRoID0gJzgwcHgnOwotICAgICAgICBvLnN0eWxlLmhlaWdodCA9ICc4MHB4JzsKLSAg
ICAgICAgby5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKLSAgICAgICAgby5zdHlsZS5v
dmVyZmxvdyA9ICdoaWRkZW4nOwotICAgICAgICBvLmlubmVySFRNTCA9ICc8aW5wdXQgdHlwZT0i
YnV0dG9uIiBpZD0iYnV0dG9uJyArIGNhc2VJZCArICciICcgKwotICAgICAgICAgICAgJ29uY2xp
Y2s9ImRvQ2xpY2soJyArIGNhc2VJZCArCi0gICAgICAgICAgICAnKTsiIHZhbHVlPSJjbGlja21l
IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwOyBsZWZ0OiAxMDsgd2lkdGg6IDYw
cHg7IGhlaWdodDogNjBweDsiLz4nOwotICAgICAgICByZXR1cm4gbzsKLSAgICB9Ci0gICAgCi0g
ICAgZnVuY3Rpb24gYXBwZW5kT3ZlcmxheShvdmVybGF5RGl2WklmcmFtZSwgb3ZlcmxheURpdlpP
dmVybGF5LCBvdmVybGF5SW5zaWRlRGl2LCBleHBlY3RDbGlja2FibGUsIGNhc2VJZCkKLSAgICB7
Ci0gICAgICAgIHZhciBpZCA9IG1ha2VJZnJhbWVEaXYoKTsKLSAgICAgICAgdmFyIHJvb3QgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChjYXNlSWQpOwotICAgICAgICBpZiAob3ZlcmxheURpdlpJ
ZnJhbWUpCi0gICAgICAgICAgICBpZC5zdHlsZS56SW5kZXggPSBvdmVybGF5RGl2WklmcmFtZTsK
LQotICAgICAgICB2YXIgb2QgPSBtYWtlT3ZlcmxheURpdihleHBlY3RDbGlja2FibGUgPyAnZ3Jl
ZW4nIDogJ3JlZCcsIGNhc2VJZCk7Ci0gICAgICAgIG9kLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29s
dXRlJzsKLSAgICAgICAgaWYgKG92ZXJsYXlEaXZaT3ZlcmxheSkKLSAgICAgICAgICAgIG9kLnN0
eWxlLnpJbmRleCA9IG92ZXJsYXlEaXZaT3ZlcmxheTsKLQotICAgICAgICBpZiAob3ZlcmxheUlu
c2lkZURpdikgewotICAgICAgICAgICAgdmFyIHBhcmVudGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOwotICAgICAgICAgICAgaWYgKG92ZXJsYXlEaXZaT3ZlcmxheSkKLSAgICAg
ICAgICAgICAgICBwYXJlbnRkaXYuc3R5bGUuekluZGV4ID0gb3ZlcmxheURpdlpPdmVybGF5Owot
Ci0gICAgICAgICAgICBwYXJlbnRkaXYuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOwotICAg
ICAgICAgICAgcGFyZW50ZGl2LnN0eWxlLnRvcCA9ICcwcHgnOwotICAgICAgICAgICAgcGFyZW50
ZGl2LnN0eWxlLmxlZnQgPSAnMHB4JzsKLSAgICAgICAgICAgIHBhcmVudGRpdi5hcHBlbmRDaGls
ZChpZCk7Ci0gICAgICAgICAgICBwYXJlbnRkaXYuYXBwZW5kQ2hpbGQob2QpOwotICAgICAgICAg
ICAgcm9vdC5hcHBlbmRDaGlsZChwYXJlbnRkaXYpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgcm9vdC5hcHBlbmRDaGlsZChpZCk7Ci0gICAgICAgICAgICByb290LmFwcGVuZENoaWxk
KG9kKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBmdW5jdGlvbiBhZGRDYXNlKHgsIHksIHRh
Z3MpCi0gICAgewotICAgICAgICB2YXIgY2FzZUlkID0gaXRlbXM7Ci0gICAgICAgIGl0ZW1zKys7
Ci0KLSAgICAgICAgdmFyIGV4cGVjdENsaWNrYWJsZSA9IHRhZ3MuZXhwZWN0ICYmIHRhZ3MuZXhw
ZWN0LmluZGV4T2YoJ1VOREVSJykgPT0gLTE7Ci0gICAgICAgIGV4cGVjdGVkQ2xpY2tzW2Nhc2VJ
ZF0gPSBleHBlY3RDbGlja2FibGU7DQotDQotICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOwotICAgICAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICByb290LnN0eWxlLnBvc2l0aW9uID0g
J2Fic29sdXRlJzsKLSAgICAgICAgcm9vdC5zdHlsZS5sZWZ0ID0geCAqICh3aWR0aCArIDQwKSAr
ICdweCc7Ci0gICAgICAgIHJvb3Quc3R5bGUudG9wID0geSAqIChoZWlnaHQgKyAyMCkgKyAncHgn
OwotICAgICAgICByb290LmlkID0gY2FzZUlkOwotICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hp
bGQocm9vdCk7Ci0KLSAgICAgICAgdmFyIHBsdWdpbkRpdlo7Ci0gICAgICAgIHZhciBvdmVybGF5
RGl2WklmcmFtZTsKLSAgICAgICAgdmFyIG92ZXJsYXlEaXZaT3ZlcmxheTsKLSAgICAgICAgaWYg
KHRhZ3MucGx1Z2luTG93ZXJ6KSB7Ci0gICAgICAgICAgICBwbHVnaW5EaXZaID0gMTAwOwotICAg
ICAgICAgICAgb3ZlcmxheURpdlpJZnJhbWUgPSAyMDA7Ci0gICAgICAgICAgICBvdmVybGF5RGl2
Wk92ZXJsYXkgPSAyMDE7Ci0gICAgICAgIH0gZWxzZSBpZiAodGFncy5wbHVnaW5IaWdoZXJ6KSB7
Ci0gICAgICAgICAgICBwbHVnaW5EaXZaID0gMjAwOwotICAgICAgICAgICAgb3ZlcmxheURpdlpJ
ZnJhbWUgPSAxMDA7Ci0gICAgICAgICAgICBvdmVybGF5RGl2Wk92ZXJsYXkgPSAxMDE7Ci0gICAg
ICAgIH0gZWxzZSBpZiAodGFncy5wbHVnaW5FcXVhbHopIHsKLSAgICAgICAgICAgIHBsdWdpbkRp
dlogPSAxMDA7Ci0gICAgICAgICAgICBvdmVybGF5RGl2WklmcmFtZSA9IDEwMDsKLSAgICAgICAg
ICAgIG92ZXJsYXlEaXZaT3ZlcmxheSA9IDEwMDsKLSAgICAgICAgfSBlbHNlIGlmICh0YWdzLnBs
dWdpbkV4cGxpY2l0SGlnaGVyWkluZGV4KSB7DQotICAgICAgICAgICAgLy8gRm9yIHRoaXMgdGVz
dCBjYXNlIHdlIHNldCB0aGUgei1pbmRleCBmb3IgdGhlIGlmcmFtZSBhbmQgdGhlIG92ZXJsYXkK
LSAgICAgICAgICAgIC8vIHRvIGJlIGxvd2VyIHRoYW4gdGhlIHBsdWdpbi4KLSAgICAgICAgICAg
IG92ZXJsYXlEaXZaSWZyYW1lID0gMTAwOwotICAgICAgICAgICAgb3ZlcmxheURpdlpPdmVybGF5
ID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBhcHBlbmRQbHVnaW4gPSBmdW5jdGlvbigp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBwZDsKLSAgICAgICAgICAgIGlmICh0YWdzLnBs
dWdpbkV4cGxpY2l0SGlnaGVyWkluZGV4KSB7Ci0gICAgICAgICAgICAgICAgcGQgPSBtYWtlUGx1
Z2luRWxlbWVudFdpdGhIaWdoZXJaSW5kZXgoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgcGQgPSBtYWtlUGx1Z2luRWxlbWVudCgpOwotICAgICAgICAgICAgfQ0KLQ0K
LSAgICAgICAgICAgIGlmICh0YWdzLnBsdWdpbkluc2lkZURpdiB8fCBwbHVnaW5EaXZaKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIHBhcmVudGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOwotICAgICAgICAgICAgICAgIHBhcmVudGRpdi5hcHBlbmRDaGlsZChwZCkKLSAgICAgICAg
ICAgICAgICBpZiAoIXRhZ3MucGx1Z2luTm9yZWxhdGl2ZSkKLSAgICAgICAgICAgICAgICAgICAg
cGFyZW50ZGl2LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJzsKLQotICAgICAgICAgICAgICAg
IGlmIChwbHVnaW5EaXZaKQotICAgICAgICAgICAgICAgICAgICBwYXJlbnRkaXYuc3R5bGUueklu
ZGV4ID0gcGx1Z2luRGl2WjsKLQotICAgICAgICAgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFy
ZW50ZGl2KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF0YWdz
LnBsdWdpbk5vcmVsYXRpdmUpCi0gICAgICAgICAgICAgICAgICAgIHBkLnN0eWxlLnBvc2l0aW9u
ID0gJ3JlbGF0aXZlJzsKLSAgICAgICAgICAgICAgICByb290LmFwcGVuZENoaWxkKHBkKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICBpZiAodGFncy5vdmVybGF5RWFybGll
cikgewotICAgICAgICAgICAgYXBwZW5kT3ZlcmxheShvdmVybGF5RGl2WklmcmFtZSwgb3Zlcmxh
eURpdlpPdmVybGF5LCB0YWdzLm92ZXJsYXlJbnNpZGVEaXYsIGV4cGVjdENsaWNrYWJsZSwgY2Fz
ZUlkKTsKLSAgICAgICAgICAgIGFwcGVuZFBsdWdpbigpOwotICAgICAgICB9IGVsc2Ugew0KLSAg
ICAgICAgICAgIGFwcGVuZFBsdWdpbigpOwotICAgICAgICAgICAgaWYgKHRhZ3Mub3ZlcmxheU9u
VGltZW91dCkgewotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoJ2FwcGVuZE92ZXJsYXkoJytv
dmVybGF5RGl2WklmcmFtZSsnLCAnK292ZXJsYXlEaXZaT3ZlcmxheSArJywgJyArIHRhZ3Mub3Zl
cmxheUluc2lkZURpdiArICcsICcgKyBleHBlY3RDbGlja2FibGUgKyAnLCAnICsgY2FzZUlkICsg
JyknLCAwKTsKLSAgICAgICAgICAgIH0gZWxzZSB7DQotICAgICAgICAgICAgICAgIGFwcGVuZE92
ZXJsYXkob3ZlcmxheURpdlpJZnJhbWUsIG92ZXJsYXlEaXZaT3ZlcmxheSwgdGFncy5vdmVybGF5
SW5zaWRlRGl2LCBleHBlY3RDbGlja2FibGUsIGNhc2VJZCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgfQotCi0gICAgZnVuY3Rpb24gZG9DbGljayhpZCkKLSAgICB7DQotICAgICAg
ICBjbGlja3NbaWRdID0gdHJ1ZTsKLQotICAgICAgICAvLyBDaGVjayBzdWNjZXNzL2ZhaWx1cmUu
Ci0gICAgICAgIHZhciBvdXRwdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0Iik7
Ci0gICAgICAgIHZhciB3YWl0aW5nRm9yTW9yZUNsaWNrcyA9IGZhbHNlOwotICAgICAgICB2YXIg
azsKLSAgICAgICAgZm9yIChrIGluIGV4cGVjdGVkQ2xpY2tzKSB7Ci0gICAgICAgICAgICBpZiAo
ZXhwZWN0ZWRDbGlja3Nba10gJiYgIWNsaWNrc1trXSkKLSAgICAgICAgICAgICAgICB3YWl0aW5n
Rm9yTW9yZUNsaWNrcyA9IHRydWU7Ci0gICAgICAgICAgICBlbHNlIGlmICghZXhwZWN0ZWRDbGlj
a3Nba10gJiYgY2xpY2tzW2tdKSB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0LmlubmVySFRNTCA9
ICdGQUlMVVJFJzsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0NCi0NCi0gICAgICAgIGlmICghd2FpdGluZ0Zvck1vcmVDbGlja3MpIHsKLSAgICAgICAg
ICAgIG91dHB1dC5pbm5lckhUTUwgPSAnU1VDQ0VTUyc7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBpbml0KCkgewotICAgICAgICBhZGRDYXNl
KDAsIDAsIHtleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKLSAgICAgICAgYWRkQ2FzZSgxLCAwLCB7
J292ZXJsYXlFYXJsaWVyJzoxLCAnb3ZlcmxheUluc2lkZURpdic6IDEsICdwbHVnaW5JbnNpZGVE
aXYnOjEsIGV4cGVjdDonb3ZlcmxheSBVTkRFUid9KTsKLSAgICAgICAgYWRkQ2FzZSgyLCAwLCB7
J3BsdWdpbkxvd2Vyeic6MSwgZXhwZWN0OidvdmVybGF5IE9WRVInfSk7Ci0gICAgICAgIGFkZENh
c2UoMywgMCwgeydwbHVnaW5IaWdoZXJ6JzoxLCBleHBlY3Q6J292ZXJsYXkgVU5ERVInfSk7Ci0g
ICAgICAgIGFkZENhc2UoMCwgMSwgeydvdmVybGF5SW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJs
YXkgT1ZFUid9KTsKLSAgICAgICAgYWRkQ2FzZSgxLCAxLCB7J3BsdWdpbkxvd2Vyeic6MSwgJ292
ZXJsYXlJbnNpZGVEaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOwotICAgICAgICBhZGRD
YXNlKDIsIDEsIHsncGx1Z2luSGlnaGVyeic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOjEsIGV4cGVj
dDonb3ZlcmxheSBVTkRFUid9KTsKLSAgICAgICAgYWRkQ2FzZSgwLCAyLCB7J3BsdWdpbkVxdWFs
eic6MSwgJ292ZXJsYXlJbnNpZGVEaXYnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOwotICAg
ICAgICBhZGRDYXNlKDEsIDIsIHsncGx1Z2luRXF1YWx6JzoxLCAnb3ZlcmxheUluc2lkZURpdic6
MSwgJ292ZXJsYXlFYXJsaWVyJzoxLCBleHBlY3Q6J292ZXJsYXkgVU5ERVInfSk7Ci0gICAgICAg
IGFkZENhc2UoMiwgMiwgeydvdmVybGF5RWFybGllcic6MSwgZXhwZWN0OidvdmVybGF5IFVOREVS
J30pOwotICAgICAgICBhZGRDYXNlKDMsIDIsIHsnb3ZlcmxheUVhcmxpZXInOjEsICdwbHVnaW5O
b3JlbGF0aXZlJzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKLSAgICAgICAgYWRkQ2FzZSgw
LCAzLCB7J3BsdWdpbk5vcmVsYXRpdmUnOjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOwotICAg
ICAgICBhZGRDYXNlKDEsIDMsIHsnb3ZlcmxheUVhcmxpZXInOjEsICdwbHVnaW5Ob3JlbGF0aXZl
JzoxLCAncGx1Z2luSW5zaWRlRGl2JzoxLCBleHBlY3Q6J292ZXJsYXkgT1ZFUid9KTsKLSAgICAg
ICAgYWRkQ2FzZSgyLCAzLCB7J3BsdWdpbk5vcmVsYXRpdmUnOjEsICdwbHVnaW5JbnNpZGVEaXYn
OjEsIGV4cGVjdDonb3ZlcmxheSBPVkVSJ30pOwotICAgICAgICBhZGRDYXNlKDMsIDMsIHsncGx1
Z2luTG93ZXJ6JzoxLCAnb3ZlcmxheU9uVGltZW91dCc6MSwgZXhwZWN0OidvdmVybGF5IE9WRVIn
fSk7Ci0gICAgICAgIGFkZENhc2UoNCwgMCwgeydwbHVnaW5FeHBsaWNpdEhpZ2hlclpJbmRleCc6
IDEsICdwbHVnaW5Ob3JlbGF0aXZlJzogMSwgJ3BsdWdpbkluc2lkZURpdic6IDEsICdvdmVybGF5
SW5zaWRlRGl2JzogMSwgZXhwZWN0OiAnb3ZlcmxheSBVTkRFUicgfSk7Ci0gICAgICAgIHJ1blRl
c3QoKTsKLSAgICB9Ci0KLSAgICAvLyBBdXRvbWF0aW9uOiB0cnkgdG8gY2xpY2sgb24gZWFjaCBi
dXR0b24uCi0gICAgdmFyIG5leHRJZFRvQ2xpY2sgPSAwOwotCi0gICAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5ldmVudFNlbmRl
cikgewotICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoZG9OZXh0
Q2xpY2ssIDApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbW92ZU1vdXNlT3Zl
cihlbGVtTmFtZSkgewotICAgICAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGVsZW1OYW1lKTsKLSAgICAgICAgdmFyIHggPSBlbGVtLm9mZnNldExlZnQgKyBlbGVtLnNjcm9s
bFdpZHRoIC8gMjsKLSAgICAgICAgdmFyIHkgPSBlbGVtLm9mZnNldFRvcCArIGVsZW0uc2Nyb2xs
SGVpZ2h0IC8gMjsKLSAgICAgICAgdmFyIG9mZnNldFBhcmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50
OwotICAgICAgICB3aGlsZSAob2Zmc2V0UGFyZW50KSB7Ci0gICAgICAgICAgICB4ICs9IG9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OwotICAgICAgICAgICAgeSArPSBvZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOwotICAgICAgICAgICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVu
dDsKLSAgICAgICAgfQotICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBkb05leHRDbGljaygpIHsKLSAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOwotICAgICAgICBpZiAobmV4dElkVG9DbGljayA8IGV4cGVjdGVkQ2xpY2tzLmxl
bmd0aCkgewotICAgICAgICAgICAgbW92ZU1vdXNlT3ZlcignYnV0dG9uJyArIG5leHRJZFRvQ2xp
Y2spOwotICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Ci0gICAgICAgICAgICBu
ZXh0SWRUb0NsaWNrKys7Ci0gICAgICAgICAgICBzZXRUaW1lb3V0KGRvTmV4dENsaWNrLCAwKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICB9LCAw
KTsKLSAgICAgICAgfQotICAgIH0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9
ImluaXQoKSI+Ci0KLSAgICA8cD5UZXN0IHRoYXQgaWZyYW1lIHNoaW1zIGNhbiBiZSB1c2VkIHRv
IG92ZXJsYXkgSFRNTCBhYm92ZSBhCi0gICAgd2luZG93ZWQgcGx1Z2luLiBUaGUgcmVkIHNxdWFy
ZXMgc2hvdWxkIGJlIGhpZGRlbiBieSB0aGUgYmx1ZQotICAgIGZsYXNoIHBsdWdpbnMsIGFuZCB0
aGUgZ3JlZW4gc3F1YXJlcyBzaG91bGQgYXBwZWFyIG92ZXIgdGhlCi0gICAgcGx1Z2lucy4gVG8g
dGVzdCBpbnRlcmFjdGl2ZWx5LCBjbGljayBvdmVyIHRoZSBidXR0b25zIG9uIHRoZQotICAgIHNx
dWFyZXMuIFlvdSBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVhY2ggdGhlIHJlZCBzcXVhcmVzJwot
ICAgIGJ1dHRvbnMuPC9wPgotCi0gICAgPHA+UHJpbnRzICJTVUNDRVNTIiBvbiBzdWNjZXNzLCAi
RkFJTFVSRSIgb24gZmFpbHVyZS48L3A+Ci0gICAgPGRpdiBpZD1vdXRwdXQ+Tk9ORTwvZGl2Pgot
ICAgIDxkaXYgaWQ9ImNvbnRhaW5lciIgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsiPjwvZGl2
PgotCi08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL29iamVjdC1l
bWJlZC1wbHVnaW4tc2NyaXB0aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGx1
Z2lucy9vYmplY3QtZW1iZWQtcGx1Z2luLXNjcmlwdGluZy5odG1sCShyZXZpc2lvbiAxODIzMzgp
CisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL29iamVjdC1lbWJlZC1wbHVnaW4tc2NyaXB0aW5nLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDYgQEAgZnVuY3Rpb24gdGVzdCgpIAogICAg
IHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiCiAgICAgd2lkdGggPSAw
IGhlaWdodCA9IDAKICAgICA+Ci0gICAgPFBBUkFNIG5hbWU9InNyYyIgdmFsdWU9InJlc291cmNl
cy9zaW1wbGVfYmxhbmsuc3dmIj4KICAgICA8UEFSQU0gbmFtZT0iYXV0b3N0YXJ0IiB2YWx1ZT0i
ZmFsc2UiPgogICAgIAogICAgIDxFTUJFRCAKQEAgLTEwMyw3ICsxMDIsNiBAQCBmdW5jdGlvbiB0
ZXN0KCkgCiAgICAgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIKICAg
ICB3aWR0aCA9IDAgaGVpZ2h0ID0gMAogICAgID4KLSAgICA8cGFyYW0gbmFtZT0ic3JjIiB2YWx1
ZT0icmVzb3VyY2VzL3NpbXBsZV9ibGFuay5zd2YiPgogICAgIDxwYXJhbSBuYW1lPSJhdXRvc3Rh
cnQiIHZhbHVlPSJmYWxzZSI+CiAgICAgPHBhcmFtIG5hbWU9ImVuYWJsZWphdmFzY3JpcHQiIHZh
bHVlPSJ0cnVlIj4KICAgICAKSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvcmVzb3VyY2VzL3Bs
dWdpbi1mcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvcmVzb3Vy
Y2VzL3BsdWdpbi1mcmFtZS5odG1sCShyZXZpc2lvbiAxODIzMzgpCisrKyBMYXlvdXRUZXN0cy9w
bHVnaW5zL3Jlc291cmNlcy9wbHVnaW4tZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjIs
NyArMjIsNyBAQAogCiA8dGFibGU+CiAgICAgPHRyPgotICAgICAgICA8dGQ+PGVtYmVkIHNyYz0i
Zm9vLnN3ZiIgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giPjwvdGQ+CisgICAg
ICAgIDx0ZD48ZW1iZWQgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSI+
PC90ZD4KICAgICA8L3RyPgogPC90YWJsZT4KIDxwPgo=
</data>
<flag name="review"
          id="274938"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>