<?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>131871</bug_id>
          
          <creation_ts>2014-04-18 18:07:48 -0700</creation_ts>
          <short_desc>Enable snapshot tests on mac wk2</short_desc>
          <delta_ts>2014-07-17 14:58:59 -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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>132294</dependson>
    
    <dependson>133227</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Roger Fong">roger_fong</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>roger_fong</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1002105</commentid>
    <comment_count>0</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-18 18:07:48 -0700</bug_when>
    <thetext>I&apos;m currently working on enabling these tests, modifying each test to use the new API and adjusting the expected results.
I&apos;ve run into an issue with the autoplay tests however.

When I run the test via layout-tests the primary plugin is not found.
However, when I just load the test in the browser, the primary plugin is found as expected...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002106</commentid>
    <comment_count>1</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-18 18:16:18 -0700</bug_when>
    <thetext>If i set the maximum number of snapshot attempts to 1 the test passes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002805</commentid>
    <comment_count>2</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-21 21:18:24 -0700</bug_when>
    <thetext>After some extensive logging I believe that the following is happening:

The plugin is initialized before the primary plugin has been determined.
If the maximum number of snapshot retries is 0 then we immediately set display state to DisplayingSnapshot.

Now we hit HTMLPlugInImageElement::createElementRenderer
and hit
    if (displayState() == DisplayingSnapshot) {
        auto renderSnapshottedPlugIn = createRenderer&lt;RenderSnapshottedPlugIn&gt;(*this, std::move(style));
        renderSnapshottedPlugIn-&gt;updateSnapshot(m_snapshotImage);
        return std::move(renderSnapshottedPlugIn);
    }

We then get into determining the primary plugin, which is where (if a candidate plugin is found) we will restart the plugin appropriately.

However, the hit test fails, presumably due to the code that we hit earlier.
Commenting out the code block above causes us to fallback to creating a RenderImage renderer, which seems to fair better with hit testing for some reason.

Perhaps we should not create the element renderer until the plugin has been initialized, since we should know the initial state of the plugin anyways before deciding what type of renderer to create.

Or we shouldn&apos;t set the display state to DisplayingSnapshot at all until we know for sure the plugin is meant to be snapshotted (defer the setting of the display state until the plugin has been initialized)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003141</commentid>
    <comment_count>3</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-22 18:20:10 -0700</bug_when>
    <thetext>The dimension of the plugin element in question comes out to 139 by 18, the testing spot is 300, 300.

The actual width and height is 600 by 600.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004230</commentid>
    <comment_count>4</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-25 14:52:17 -0700</bug_when>
    <thetext>After diving down into the rabbit hole that is layout code, I&apos;ve become thoroughly convinced that we should never be snapshotting a plugin before we determine whether or not it is the primary one.

Snapshotting a plugin causes all sorts of problems to arise. In this particular case it seems like we run into RenderFlexibleBox layout code which sets the logical override dimensions of the pluginImageElement.
However, these dimensions are not the dimensions of the original plugin element. 

I am not savvy enough with layout code to know what&apos;s going on here but it seems fundamentally wrong to try to hittest with something that isn&apos;t what we originally intended to hit test against in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005315</commentid>
    <comment_count>5</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-30 00:28:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/14395065&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005318</commentid>
    <comment_count>6</comment_count>
      <attachid>230467</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-30 00:39:45 -0700</bug_when>
    <thetext>Created attachment 230467
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005319</commentid>
    <comment_count>7</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-30 00:40:29 -0700</bug_when>
    <thetext>500 ms didn&apos;t seem to be enough for the layout tests to reliably go thru the hit testing and snapshotting process, I gave each a full second to do so and haven&apos;t managed to get any failing results yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005379</commentid>
    <comment_count>8</comment_count>
      <attachid>230467</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-04-30 09:03:18 -0700</bug_when>
    <thetext>Comment on attachment 230467
patch

one second per test seems way too long.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005386</commentid>
    <comment_count>9</comment_count>
      <attachid>230467</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-30 09:18:30 -0700</bug_when>
    <thetext>Comment on attachment 230467
patch

All these tests say window.internals, but they could just say internals.

It’s really bad that these tests run so slowly and that they are inherently subject to race conditions. It’s not good to have multiple tests that require waiting 1 second no matter how fast the computer is or how heavily loaded it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005469</commentid>
    <comment_count>10</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-30 12:24:43 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 230467 [details])
&gt; one second per test seems way too long.

I at first thought this was because of the timer delays, but looking at them now the delay for primary snapshot detection is a not so whopping 3ms.

I also noticed that quicktime only takes 500 ms. The quicktime plugin is also quite simple, just an orange background.

the lines.swf test file we use is a bit more complicated, so maybe it&apos;ll be better if we use a simpler plugin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005533</commentid>
    <comment_count>11</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-30 14:55:48 -0700</bug_when>
    <thetext>time1: 340397
time2: 341137

clock() call between subframeLoaderWillInitializePlugin and subframeLoaderDidInitializePlugin.

Looks like I could get away with a little less than 1000 ms, but that doesn&apos;t really solve the issue does it.

So basically it seems like the plugin takes a while to load fully.
Dean says there&apos;s not much that we can do about that.

I&apos;m going to enable these tests to see how they fare on the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005537</commentid>
    <comment_count>12</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-30 14:59:46 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; time1: 340397
&gt; time2: 341137

guess those are ticks huh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005545</commentid>
    <comment_count>13</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-30 15:13:16 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/168048

Keeping this bug open to observe how the bots do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010814</commentid>
    <comment_count>14</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-05-21 12:47:01 -0700</bug_when>
    <thetext>Didn&apos;t notice some earlier mistakes I made.
Fixes are here:

http://trac.webkit.org/changeset/169173

Now the tests should actually run and we can see how flakey they are.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010996</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-22 09:17:20 -0700</bug_when>
    <thetext>These tests are failing every time on WebKit2.

  plugins/snapshotting/set-plugin-size-to-tiny.html [ Failure ]
  plugins/snapshotting/simple.html [ Failure ]
  plugins/snapshotting/snapshot-plugin-not-quite-blocked-by-image.html [ Failure ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011137</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-22 20:27:08 -0700</bug_when>
    <thetext>These tests are still broken. Is there any reason why it is ok to make everyone&apos;s work harder for so long?

EWS takes a really long time to finish, and even lies sometimes because of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011299</commentid>
    <comment_count>17</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-05-23 11:00:53 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; These tests are still broken. Is there any reason why it is ok to make everyone&apos;s work harder for so long?
&gt; 
&gt; EWS takes a really long time to finish, and even lies sometimes because of this.

Skipped https://bugs.webkit.org/show_bug.cgi?id=133227 for now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230467</attachid>
            <date>2014-04-30 00:39:45 -0700</date>
            <delta_ts>2014-04-30 09:18:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>31495</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE2Nzk4NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE0LTA0LTMwICBSb2dlciBGb25nICA8cm9n
ZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIHNuYXBzaG90IHRlc3RzIG9uIG1h
YyB3azIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzE4NzEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0v
bWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1kb21pbmFudC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRv
cGxheS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1zaW1pbGFyLXRvLWRv
bWluYW50LWFmdGVyLWRlbGF5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMt
d2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXNpbWlsYXItdG8tZG9taW5hbnQtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRp
bmcvcXVpY2t0aW1lLXBsdWdpbi1zbmFwc2hvdHRlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
cGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9yZXN0YXJ0LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL3NldC1w
bHVnaW4tc2l6ZS10by10aW55LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMt
d2syL3BsdWdpbnMvc25hcHNob3R0aW5nL3NpbXBsZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
cGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9zbmFwc2hvdC1wbHVnaW4tbm90
LXF1aXRlLWJsb2NrZWQtYnktaW1hZ2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsdWdpbnMv
c25hcHNob3R0aW5nL2F1dG9wbGF5LWRvbWluYW50Lmh0bWw6CisgICAgICAgICogcGx1Z2lucy9z
bmFwc2hvdHRpbmcvYXV0b3BsYXktcGx1Z2luLWJsb2NrZWQtYnktaW1hZ2UuaHRtbDoKKyAgICAg
ICAgKiBwbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tbW9zdGx5LWJsb2NrZWQt
YnktaW1hZ2UuaHRtbDoKKyAgICAgICAgKiBwbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1z
aW1pbGFyLXRvLWRvbWluYW50LWFmdGVyLWRlbGF5Lmh0bWw6CisgICAgICAgICogcGx1Z2lucy9z
bmFwc2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1kb21pbmFudC5odG1sOgorICAgICAgICAq
IHBsdWdpbnMvc25hcHNob3R0aW5nL3F1aWNrdGltZS1wbHVnaW4tc25hcHNob3R0ZWQuaHRtbDoK
KyAgICAgICAgKiBwbHVnaW5zL3NuYXBzaG90dGluZy9yZXN0YXJ0Lmh0bWw6CisgICAgICAgICog
cGx1Z2lucy9zbmFwc2hvdHRpbmcvc2V0LXBsdWdpbi1zaXplLXRvLXRpbnkuaHRtbDoKKyAgICAg
ICAgKiBwbHVnaW5zL3NuYXBzaG90dGluZy9zaW1wbGUuaHRtbDoKKyAgICAgICAgKiBwbHVnaW5z
L3NuYXBzaG90dGluZy9zbmFwc2hvdC1wbHVnaW4tbm90LXF1aXRlLWJsb2NrZWQtYnktaW1hZ2Uu
aHRtbDoKKwogMjAxNC0wNC0yOSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAg
ICAgICAgRml4IHRlc3QgdXAgc28gdGhhdCBpdCBsb29rcyB0aGUgc2FtZSBhcyBpdCBkaWQgYmVm
b3JlIG15IGxhbmRpbmcgaW4gcjE2Nzk2NS4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE2Nzk3NSkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAt
NDE4LDkgKzQxOCw2IEBAIHdlYmtpdC5vcmcvYi8xMjgyNTUgY29tcG9zaXRpbmcvY29sdW1ucy8K
IAogd2Via2l0Lm9yZy9iLzEyODMxNSBlZGl0aW5nL2NhcmV0L2NhcmV0LWNvbG9yLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQogCi0jIFRlbXBvcmFyaWx5IGRpc2FibGVkIHdoaWxlIHdvcmtpbmcgb3V0
IGNvbXBvc2l0aW5nIGZhaWx1cmVzCi1wbHVnaW5zL3NuYXBzaG90dGluZyBbIFNraXAgXQotCiB3
ZWJraXQub3JnL2IvMTI5NDY4IFsgTW91bnRhaW5MaW9uIERlYnVnIF0gY3NzMy9jb21wb3NpdGlu
Zy9pc29sYXRpb24taXNvbGF0ZS1ibGVuZGVkLWNoaWxkLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIAogIyMjIEVORCBPRiAoMykgVW5jbGFzc2lmaWVkIGZhaWx1cmVzCkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LWRvbWlu
YW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LWRvbWluYW50LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMTY3OTc1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5z
L3NuYXBzaG90dGluZy9hdXRvcGxheS1kb21pbmFudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTIgKzEsNCBAQAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4NjUwCi0gIFJlbmRl
clZpZXcgYXQgKDAsMCkgc2l6ZSA3ODV4NjAwCi1sYXllciBhdCAoMCwwKSBzaXplIDc4NXg2NTAK
LSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgNzg1eDY1MAotICAgIFJlbmRlckJv
ZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzY5eDYzNAotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0
ICgwLDApIHNpemUgNzY5eDE4Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDMzNHgxOAotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMzNDogIlRoaXMg
dGVzdCdzIGRvbWluYW50IHBsdWdpbiBzaG91bGQgcGxheSBhdXRvbWF0aWNhbGx5IgotICAgICAg
UmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMzQpIHNpemUgNzY5eDYwMAotICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKLWxheWVyIGF0ICg4LDQyKSBzaXpl
IDYwMHg2MDAKLSAgUmVuZGVyRW1iZWRkZWRPYmplY3Qge0VNQkVEfSBhdCAoMCwwKSBzaXplIDYw
MHg2MDAKK1RoaXMgdGVzdCdzIGRvbWluYW50IHBsdWdpbiBzaG91bGQgcGxheSBhdXRvbWF0aWNh
bGx5CisKK1BBU1MKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5z
L3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nu
YXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE2Nzk3NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lu
cy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktcGx1Z2luLWJsb2NrZWQtYnktaW1hZ2UtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2ICsxLDQgQEAKLWxheWVyIGF0ICgwLDApIHNpemUg
Nzg1eDEyNTQKLSAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDc4NXg2MDAKLWxheWVyIGF0ICgw
LDApIHNpemUgNzg1eDEyNTQKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgNzg1
eDEyNTQKLSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXgxMjM4Ci0gICAg
ICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3Njl4MTgKLSAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNjIzeDE4Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggNjIzOiAiVGhpcyB0ZXN0cyB0aGF0IGEgZG9taW5hbnQgcGx1Z2luIHNob3VsZCBw
bGF5IGF1dG9tYXRpY2FsbHkgZXZlbiBpZiBhbiBpbWFnZSBpcyBvbiB0b3Agb2YgdGhlIHBsdWdp
bi4iCi0gICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwzNCkgc2l6ZSA3Njl4MTIw
NAotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDYwMCw1ODYpIHNpemUgNHgxOAotICAg
ICAgICAgIHRleHQgcnVuIGF0ICg2MDAsNTg2KSB3aWR0aCA0OiAiICIKLSAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCi1sYXllciBhdCAoOCw0Mikgc2l6ZSA2MDB4
NjAwCi0gIFJlbmRlckVtYmVkZGVkT2JqZWN0IHtFTUJFRH0gYXQgKDAsMCkgc2l6ZSA2MDB4NjAw
Ci1sYXllciBhdCAoOCw0Nikgc2l6ZSA2MDB4NjAwCi0gIFJlbmRlckltYWdlIHtJTUd9IGF0ICgw
LDYwNCkgc2l6ZSA2MDB4NjAwCitUaGlzIHRlc3RzIHRoYXQgYSBkb21pbmFudCBwbHVnaW4gc2hv
dWxkIHBsYXkgYXV0b21hdGljYWxseSBldmVuIGlmIGFuIGltYWdlIGlzIG9uIHRvcCBvZiB0aGUg
cGx1Z2luLgorCitQQVNTCisgCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXNpbWlsYXItdG8tZG9taW5hbnQtYWZ0ZXItZGVs
YXktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1kb21pbmFudC1hZnRl
ci1kZWxheS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE2Nzk3NSkKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1k
b21pbmFudC1hZnRlci1kZWxheS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUg
KzEsNSBAQAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4ODUwCi0gIFJlbmRlclZpZXcgYXQgKDAs
MCkgc2l6ZSA3ODV4NjAwCi1sYXllciBhdCAoMCwwKSBzaXplIDc4NXg4NTAKLSAgUmVuZGVyQmxv
Y2sge0hUTUx9IGF0ICgwLDApIHNpemUgNzg1eDg1MAotICAgIFJlbmRlckJvZHkge0JPRFl9IGF0
ICg4LDgpIHNpemUgNzY5eDgzNAotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUg
NzY5eDE4Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDY5NngxOAot
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDY5NjogIlRoZSBkb21pbmFudCBwbHVn
aW4gc2hvdWxkIHBsYXkgYXV0b21hdGljYWxseSwgYW5kIHRoZW4gc28gc2hvdWxkIHRoZSBpZGVu
dGljYWwgcGx1Z2luIHRoYXQgaXMgYWRkZWQgYSBiaXQgbGF0ZXIuIgotICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMzQpIHNpemUgNzY5eDYwMAotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDYzNCkg
c2l6ZSA3Njl4MjAwCi1sYXllciBhdCAoOCw0Mikgc2l6ZSA2MDB4NjAwCi0gIFJlbmRlckVtYmVk
ZGVkT2JqZWN0IHtFTUJFRH0gYXQgKDAsMCkgc2l6ZSA2MDB4NjAwCi1sYXllciBhdCAoOCw2NDIp
IHNpemUgMjAweDIwMAotICBSZW5kZXJFbWJlZGRlZE9iamVjdCB7RU1CRUR9IGF0ICgwLDApIHNp
emUgMjAweDIwMAorVGhlIGRvbWluYW50IHBsdWdpbiBzaG91bGQgcGxheSBhdXRvbWF0aWNhbGx5
LCBhbmQgdGhlbiBzbyBzaG91bGQgdGhlIGlkZW50aWNhbCBwbHVnaW4gdGhhdCBpcyBhZGRlZCBh
IGJpdCBsYXRlci4KKworUEFTUworCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10by1kb21pbmFudC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1zaW1pbGFyLXRvLWRvbWluYW50LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTY3OTc1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1zaW1pbGFyLXRvLWRvbWluYW50LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSwyNCArMSwxMCBAQAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3
ODV4MTA1NgotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgNzg1eDYwMAotbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA3ODV4MTA1NgotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA3ODV4
MTA1NgotICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzY5eDEwMzIKLSAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc2OXgxOAotICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NTB4MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA3NTA6ICJUaGUgZG9taW5hbnQgcGx1Z2luIHNob3VsZCBwbGF5IGF1dG9tYXRpY2Fs
bHksIGFuZCB0cmlnZ2VyIGFsbCB0aGUgb3RoZXJzIHRvIHBsYXkgYXMgd2VsbCwgc2luY2UgdGhl
eSBhcmUgdGhlIHNhbWUgb3JpZ2luLiIKLSAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzNCkg
c2l6ZSA3Njl4NjAwCi0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4
MAotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDY1MCkgc2l6ZSA3Njl4MjAwCi0gICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgUmVuZGVyQmxvY2sg
e1B9IGF0ICgwLDg2Nikgc2l6ZSA3Njl4MTAwCi0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDk4Mikgc2l6ZSA3
Njl4NTAKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCi1sYXll
ciBhdCAoOCw0Mikgc2l6ZSA2MDB4NjAwCi0gIFJlbmRlckVtYmVkZGVkT2JqZWN0IHtFTUJFRH0g
YXQgKDAsMCkgc2l6ZSA2MDB4NjAwCi1sYXllciBhdCAoOCw2NTgpIHNpemUgMjAweDIwMAotICBS
ZW5kZXJFbWJlZGRlZE9iamVjdCB7RU1CRUR9IGF0ICgwLDApIHNpemUgMjAweDIwMAotbGF5ZXIg
YXQgKDgsODc0KSBzaXplIDEwMHgxMDAKLSAgUmVuZGVyRW1iZWRkZWRPYmplY3Qge0VNQkVEfSBh
dCAoMCwwKSBzaXplIDEwMHgxMDAKLWxheWVyIGF0ICg4LDk5MCkgc2l6ZSA1MHg1MAotICBSZW5k
ZXJFbWJlZGRlZE9iamVjdCB7RU1CRUR9IGF0ICgwLDApIHNpemUgNTB4NTAKK1RoZSBkb21pbmFu
dCBwbHVnaW4gc2hvdWxkIHBsYXkgYXV0b21hdGljYWxseSwgYW5kIHRyaWdnZXIgYWxsIHRoZSBv
dGhlcnMgdG8gcGxheSBhcyB3ZWxsLCBzaW5jZSB0aGV5IGFyZSB0aGUgc2FtZSBvcmlnaW4uCisK
K1BBU1MKKworCisKKworCisKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9w
bHVnaW5zL3NuYXBzaG90dGluZy9xdWlja3RpbWUtcGx1Z2luLXNuYXBzaG90dGVkLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMv
c25hcHNob3R0aW5nL3F1aWNrdGltZS1wbHVnaW4tc25hcHNob3R0ZWQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxNjc5NzUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMv
c25hcHNob3R0aW5nL3F1aWNrdGltZS1wbHVnaW4tc25hcHNob3R0ZWQtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDE0ICsxLDQgQEAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAotbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCi0gIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAg
ICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKLSAgICAgIFJlbmRlckJs
b2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgzNgotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSA3ODR4MzYKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0
MDc6ICJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHF1aWNrdGltZSBwbHVnaW5zIGNhbiBhbHNvIGJl
IHNuYXBzaG90dGVkLiAiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDQwNywwKSB3aWR0aCAzNzc6
ICJXZSBtYWtlIHRoZSBwbHVnaW4gaGVyZSB0byBzbWFsbCB0byBiZSBwcmltYXJ5IHBsdWdpbiwg
dGh1cyIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMTU5OiAiaXQgc2hvdWxk
IGdldCBzbmFwc2hvdHRlZC4iCi0gICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw1
Mikgc2l6ZSA3ODR4MzAwCi0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDB4MAotbGF5ZXIgYXQgKDgsNjApIHNpemUgMzAweDMwMAotICBSZW5kZXJFbWJlZGRlZE9iamVj
dCB7RU1CRUR9IGF0ICgwLDApIHNpemUgMzAweDMwMAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBx
dWlja3RpbWUgcGx1Z2lucyBjYW4gYWxzbyBiZSBzbmFwc2hvdHRlZC4gV2UgbWFrZSB0aGUgcGx1
Z2luIGhlcmUgdG9vIHNtYWxsIHRvIGJlIHRoZSBwcmltYXJ5IHBsdWdpbiwgdGh1cyBpdCBzaG91
bGQgZ2V0IHNuYXBzaG90dGVkLgorCitQQVNTCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcmVzdGFydC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGlu
Zy9yZXN0YXJ0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTY3OTc1KQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9yZXN0YXJ0LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMSw0IEBACi1sYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKLSAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLWxheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
Ci0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0Ci0gICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKLSAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgNDQ1eDE4Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggNDQ1OiAiVGhpcyB0ZXN0IGZvcmNlcyBhIHBsdWdpbiB0byBzbmFwc2hvdCBpbW1lZGlhdGVs
eSwgdGhlbiB0cmllcyB0byByZXN0YXJ0IGl0LiIKLSAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1v
dXMpIGF0ICgwLDM0KSBzaXplIDc4NHgxNTAKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMHgwCi1sYXllciBhdCAoOCw0Mikgc2l6ZSAzMDB4MTUwCi0gIFJlbmRlckVt
YmVkZGVkT2JqZWN0IHtFTUJFRH0gYXQgKDAsMCkgc2l6ZSAzMDB4MTUwCitUaGlzIHRlc3QgZm9y
Y2VzIGEgcGx1Z2luIHRvIHNuYXBzaG90IGltbWVkaWF0ZWx5LCB0aGVuIHRyaWVzIHRvIHJlc3Rh
cnQgaXQuCisKK1BBU1MKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL3NuYXBzaG90dGluZy9zZXQtcGx1Z2luLXNpemUtdG8tdGlueS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90
dGluZy9zZXQtcGx1Z2luLXNpemUtdG8tdGlueS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE2Nzk3
NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcv
c2V0LXBsdWdpbi1zaXplLXRvLXRpbnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMxICsxLDYgQEAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJWaWV3IGF0
ICgwLDApIHNpemUgODAweDYwMAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRl
ckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgICBSZW5kZXJCb2R5IHtCT0RZ
fSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKLSAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBz
aXplIDc4NHgxOAotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA2NDJ4
MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA2NDI6ICJUaGlzIHRlc3QgZW5z
dXJlcyB0aGF0IGlmIHdlIGhhdmUgc2V0IGEgcGx1Z2luIHRvIGJlIHRvbyBzbWFsbCBhZnRlciB0
aGUgaW5pdGlhbCBsb2FkIHRoYXQgaXQgc3RpbGwgZ2V0cyBwbGF5ZWQuIgotICAgICAgUmVuZGVy
QmxvY2sge1B9IGF0ICgwLDM0KSBzaXplIDc4NHgxOAotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSA3MDF4MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCA3MDE6ICJBbHNvIGVuc3VyZSB0aGF0IHRoZSBwbHVnaW4gcmVtYWlucyBzbmFwc2hvdHRlZCBp
ZiB0aGUgc2l6ZSB3YXMgaW5pdGlhbGx5IHNwZWNpZmllZCBidXQgbWFkZSB0b28gc21hbGwgYWZ0
ZXJ3YXJkcy4iCi0gICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw2OCkgc2l6ZSA3
ODR4NDQKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg0MCwyNikgc2l6ZSA0eDE4Ci0g
ICAgICAgICAgdGV4dCBydW4gYXQgKDQwLDI2KSB3aWR0aCA0OiAiICIKLSAgICAgICAgUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4ge0VNQkVEfSBhdCAoNDQsMCkgc2l6ZSA0MHg0MAotICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKLWxheWVyIGF0ICg4LDc2KSBzaXpl
IDQweDQwCi0gIFJlbmRlckVtYmVkZGVkT2JqZWN0IHtFTUJFRH0gYXQgKDAsMCkgc2l6ZSA0MHg0
MAotbGF5ZXIgYXQgKDUyLDc2KSBzaXplIDQweDQwCi0gIFJlbmRlckJsb2NrIChyZWxhdGl2ZSBw
b3NpdGlvbmVkKSB7RElWfSBhdCAoMCwwKSBzaXplIDQweDQwCi1sYXllciBhdCAoNTcsODEpIHNp
emUgMzB4MzAKLSAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDUsNSkgc2l6ZSAzMHgzMCBb
Ymdjb2xvcj0jRkZGRkZGQkZdCi0gICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsLTMpIHNpemUg
MzB4MzYKLWxheWVyIGF0ICg1Nyw3OCkgc2l6ZSAzMHgxOCBzY3JvbGxXaWR0aCAxMzkKLSAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAzMHgxOAotICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDEzOXgxOAotICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTM5
OiAiU25hcHNob3R0ZWQgUGx1Zy1JbiIKLWxheWVyIGF0ICg1Nyw5Nikgc2l6ZSAzMHgxOCBzY3Jv
bGxXaWR0aCA5NAotICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxOCkgc2l6ZSAzMHgxOCBbY29s
b3I9IzQ0NDQ0NF0KLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5NHgxOAot
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTQ6ICJDbGljayB0byByZXN0YXJ0IgorVGhp
cyB0ZXN0IGVuc3VyZXMgdGhhdCBpZiB3ZSBoYXZlIHNldCBhIHBsdWdpbiB0byBiZSB0b28gc21h
bGwgYWZ0ZXIgdGhlIGluaXRpYWwgbG9hZCB0aGF0IGl0IHN0aWxsIGdldHMgcGxheWVkLgorCitB
bHNvIGVuc3VyZSB0aGF0IHRoZSBwbHVnaW4gcmVtYWlucyBzbmFwc2hvdHRlZCBpZiB0aGUgc2l6
ZSB3YXMgaW5pdGlhbGx5IHNwZWNpZmllZCBidXQgbWFkZSB0b28gc21hbGwgYWZ0ZXJ3YXJkcy4K
KworUEFTUworIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nu
YXBzaG90dGluZy9zaW1wbGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc2ltcGxlLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTY3OTc1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL3NuYXBzaG90dGluZy9zaW1wbGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNCBAQAogVGhpcyB0ZXN0IGZvcmNlcyBhIHBsdWdpbiB0byBzbmFwc2hvdCBpbW1lZGlh
dGVseQogCi1GQUlMCi0KK1BBU1MKIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9wbHVnaW5zL3NuYXBzaG90dGluZy9zbmFwc2hvdC1wbHVnaW4tbm90LXF1aXRlLWJsb2NrZWQt
YnktaW1hZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc25hcHNob3QtcGx1Z2luLW5vdC1xdWl0ZS1i
bG9ja2VkLWJ5LWltYWdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTY3OTc1KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9zbmFwc2hvdC1wbHVn
aW4tbm90LXF1aXRlLWJsb2NrZWQtYnktaW1hZ2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUyICsxLDYgQEAKLWxheWVyIGF0ICgwLDApIHNpemUgNzg1eDIyMTQKLSAgUmVuZGVy
VmlldyBhdCAoMCwwKSBzaXplIDc4NXg2MDAKLWxheWVyIGF0ICgwLDApIHNpemUgNzg1eDIyMTQK
LSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgNzg1eDIyMTQKLSAgICBSZW5kZXJC
b2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXgyMTk4Ci0gICAgICBSZW5kZXJCbG9jayB7UH0g
YXQgKDAsMCkgc2l6ZSA3Njl4MzYKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgNzE5eDM2Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzE5OiAiVGhp
cyB0ZXN0cyB0aGF0IGEgcGx1Z2luIHNob3VsZCBiZSBzbmFwc2hvdHRlZCBpZiBpdCBpcyBwYXJ0
aWFsbHkgY292ZXJlZCBieSBhbiBpbWFnZSBidXQgbm90IGVub3VnaCB0byBiZSBjb25zaWRlcmVk
IgotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA1OTogImJsb2NraW5nLiIKLSAg
ICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw1Mikgc2l6ZSA3Njl4MTgKLSAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzUzeDE4Ci0gICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggMzUzOiAiSXQgYWRkaXRpb25hbGx5IHRlc3RzIHRoYXQgd2UgdGFrZSB0cmFu
c2Zvcm1zIGludG8gYWNjb3VudC4iCi0gICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAo
MCw4Nikgc2l6ZSA3Njl4MjExMgotICAgICAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiB7RU1C
RUR9IGF0ICgwLDApIHNpemUgNjAweDYwMAotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDYwMCw1ODYpIHNpemUgNHgxOAotICAgICAgICAgIHRleHQgcnVuIGF0ICg2MDAsNTg2KSB3aWR0
aCA0OiAiICIKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg2MDAsMTE5MCkgc2l6ZSA0
eDE4Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDYwMCwxMTkwKSB3aWR0aCA0OiAiICIKLSAgICAg
ICAgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4ge0VNQkVEfSBhdCAoMCwxMjA4KSBzaXplIDYwMHg2
MDAKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg2MDAsMTc5NCkgc2l6ZSA0eDE4Ci0g
ICAgICAgICAgdGV4dCBydW4gYXQgKDYwMCwxNzk0KSB3aWR0aCA0OiAiICIKLSAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCi1sYXllciBhdCAoOCw5NCkgc2l6ZSA2
MDB4NjAwCi0gIFJlbmRlckJsb2NrIChyZWxhdGl2ZSBwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCww
KSBzaXplIDYwMHg2MDAKLWxheWVyIGF0ICgxMyw5OSkgc2l6ZSA1OTB4NTkwCi0gIFJlbmRlckZs
ZXhpYmxlQm94IHtESVZ9IGF0ICg1LDUpIHNpemUgNTkweDU5MCBbYmdjb2xvcj0jRkZGRkZGQkZd
Ci0gICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIyNSwyNzcpIHNpemUgMTQweDM2Ci1sYXllciBh
dCAoMjM5LDM3Nikgc2l6ZSAxMzl4MTgKLSAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6
ZSAxMzl4MTgKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMzl4MTgKLSAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEzOTogIlNuYXBzaG90dGVkIFBsdWctSW4iCi1s
YXllciBhdCAoMjM5LDM5NCkgc2l6ZSAxMzl4MTgKLSAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MTgpIHNpemUgMTM5eDE4IFtjb2xvcj0jNDQ0NDQ0XQotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDk0eDE4Ci0gICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5NDogIkNs
aWNrIHRvIHJlc3RhcnQiCi1sYXllciBhdCAoOCwxNzMpIHNpemUgNjAweDYwMAotICBSZW5kZXJJ
bWFnZSB7SU1HfSBhdCAoMCw2MDQpIHNpemUgNjAweDYwMAotbGF5ZXIgYXQgKDgsMTMwMikgc2l6
ZSA2MDB4NjAwCi0gIFJlbmRlckJsb2NrIChyZWxhdGl2ZSBwb3NpdGlvbmVkKSB7RElWfSBhdCAo
MCwwKSBzaXplIDYwMHg2MDAKLWxheWVyIGF0ICgxMywxMzA3KSBzaXplIDU5MHg1OTAKLSAgUmVu
ZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDUsNSkgc2l6ZSA1OTB4NTkwIFtiZ2NvbG9yPSNGRkZG
RkZCRl0KLSAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMjI1LDI3Nykgc2l6ZSAxNDB4MzYKLWxh
eWVyIGF0ICgyMzksMTU4NCkgc2l6ZSAxMzl4MTgKLSAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MCkgc2l6ZSAxMzl4MTgKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMzl4
MTgKLSAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEzOTogIlNuYXBzaG90dGVkIFBsdWct
SW4iCi1sYXllciBhdCAoMjM5LDE2MDIpIHNpemUgMTM5eDE4Ci0gIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDE4KSBzaXplIDEzOXgxOCBbY29sb3I9IzQ0NDQ0NF0KLSAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSA5NHgxOAotICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
OTQ6ICJDbGljayB0byByZXN0YXJ0IgotbGF5ZXIgYXQgKDgsMTkwNikgc2l6ZSAzMDB4MzAwCi0g
IFJlbmRlckltYWdlIHtJTUd9IGF0ICgwLDE4MTIpIHNpemUgMzAweDMwMAorVGhpcyB0ZXN0cyB0
aGF0IGEgcGx1Z2luIHNob3VsZCBiZSBzbmFwc2hvdHRlZCBpZiBpdCBpcyBwYXJ0aWFsbHkgY292
ZXJlZCBieSBhbiBpbWFnZSBidXQgbm90IGVub3VnaCB0byBiZSBjb25zaWRlcmVkIGJsb2NraW5n
LgorCitJdCBhZGRpdGlvbmFsbHkgdGVzdHMgdGhhdCB3ZSB0YWtlIHRyYW5zZm9ybXMgaW50byBh
Y2NvdW50LgorCitQQVNTCisgICAKSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0
aW5nL2F1dG9wbGF5LWRvbWluYW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGx1
Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktZG9taW5hbnQuaHRtbAkocmV2aXNpb24gMTY3OTc1
KQorKysgTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktZG9taW5hbnQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMSwxOCBAQAogPHA+VGhpcyB0ZXN0J3MgZG9t
aW5hbnQgcGx1Z2luIHNob3VsZCBwbGF5IGF1dG9tYXRpY2FsbHk8L3A+Cis8ZGl2IGlkPSJyZXN1
bHQiPkZBSUw8L2Rpdj4KIDxzY3JpcHQ+CiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB3
aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQodHJ1
ZSk7CiAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRNYXhpbXVtUGx1Z0luU25hcHNo
b3RBdHRlbXB0cygwKTsKICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICAg
ICAgdmFyIGVtYmVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbiIpOworICAgICAg
ICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZCkpCisgICAg
ICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOwogICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKLSAgICB9LCA1MDApOworICAgIH0sIDEwMDApOwogfQogPC9zY3JpcHQ+Ci08
ZW1iZWQgc3JjPSIuLi9yZXNvdXJjZXMvbGluZXMuc3dmIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjYw
MCI+PC9lbWJlZD4KKzxlbWJlZCBpZD0icGx1Z2luIiBzcmM9Ii4uL3Jlc291cmNlcy9saW5lcy5z
d2YiIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIj48L2VtYmVkPgpJbmRleDogTGF5b3V0VGVzdHMv
cGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktcGx1Z2luLWJsb2NrZWQtYnktaW1hZ2UuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxh
eS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS5odG1sCShyZXZpc2lvbiAxNjc5NzUpCisrKyBMYXlv
dXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1ieS1p
bWFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICsxLDE5IEBACiA8cD5UaGlzIHRlc3Rz
IHRoYXQgYSBkb21pbmFudCBwbHVnaW4gc2hvdWxkIHBsYXkgYXV0b21hdGljYWxseSBldmVuIGlm
IGFuIGltYWdlIGlzIG9uIHRvcCBvZiB0aGUgcGx1Z2luLjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+
RkFJTDwvZGl2PgogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHdpbmRv
dy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCh0cnVlKTsK
ICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldE1heGltdW1QbHVnSW5TbmFwc2hvdEF0
dGVtcHRzKDApOwogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICB2
YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAgICAgICB2
YXIgZW1iZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luIik7CisgICAgICAgIGlm
ICghd2luZG93LmludGVybmFscy5pc1BsdWdpblNuYXBzaG90dGVkKGVtYmVkKSkKKyAgICAgICAg
ICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiUEFTUyI7CiAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogICAgIH0sIDEwMDApOwogfQogPC9zY3JpcHQ+Ci08ZW1iZWQgc3JjPSIuLi9yZXNv
dXJjZXMvbGluZXMuc3dmIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjYwMCI+PC9lbWJlZD4KKzxlbWJl
ZCBpZD0icGx1Z2luIiBzcmM9Ii4uL3Jlc291cmNlcy9saW5lcy5zd2YiIHdpZHRoPSI2MDAiIGhl
aWdodD0iNjAwIj48L2VtYmVkPgogPGltZyBzcmM9Ii4uL3Jlc291cmNlcy9hcHBsZS5naWYiIHdp
ZHRoPSI2MDAiIGhlaWdodD0iNjAwIiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7IHRvcDotNjAw
cHg7Ij4KSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBs
dWdpbi1tb3N0bHktYmxvY2tlZC1ieS1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1tb3N0bHktYmxvY2tlZC1i
eS1pbWFnZS5odG1sCShyZXZpc2lvbiAxNjc5NzUpCisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL3Nu
YXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tbW9zdGx5LWJsb2NrZWQtYnktaW1hZ2UuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMyArMSwxOSBAQAogPHA+VGhpcyB0ZXN0cyB0aGF0IGEgZG9t
aW5hbnQgcGx1Z2luIHNob3VsZCBwbGF5IGF1dG9tYXRpY2FsbHkgaWYgYW4gaW1hZ2UgaXMgbW9z
dGx5IG9uIHRvcCBvZiB0aGUgcGx1Z2luLjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2
PgogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0dGluZ3Muc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCh0cnVlKTsKICAgICB3aW5k
b3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldE1heGltdW1QbHVnSW5TbmFwc2hvdEF0dGVtcHRzKDAp
OwogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgcmVzdWx0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAgICAgICB2YXIgZW1iZWQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luIik7CisgICAgICAgIGlmICghd2luZG93
LmludGVybmFscy5pc1BsdWdpblNuYXBzaG90dGVkKGVtYmVkKSkKKyAgICAgICAgICAgIHJlc3Vs
dC5pbm5lckhUTUwgPSAiUEFTUyI7CiAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
ICAgIH0sIDEwMDApOwogfQogPC9zY3JpcHQ+Ci08ZW1iZWQgc3JjPSIuLi9yZXNvdXJjZXMvbGlu
ZXMuc3dmIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjYwMCI+PC9lbWJlZD4KLTxpbWcgc3JjPSIuLi9y
ZXNvdXJjZXMvYXBwbGUuZ2lmIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjYwMCIgc3R5bGU9InBvc2l0
aW9uOmFic29sdXRlOyB0b3A6MjBweDsgbGVmdDowcHgiPgorPGVtYmVkIGlkPSJwbHVnaW4iIHNy
Yz0iLi4vcmVzb3VyY2VzL2xpbmVzLnN3ZiIgd2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDAiPjwvZW1i
ZWQ+Cis8aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2FwcGxlLmdpZiIgd2lkdGg9IjYwMCIgaGVpZ2h0
PSI2MDAiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjQ1cHg7IGxlZnQ6MHB4Ij4KSW5k
ZXg6IExheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXNpbWlsYXItdG8t
ZG9taW5hbnQtYWZ0ZXItZGVsYXkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbHVn
aW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1zaW1pbGFyLXRvLWRvbWluYW50LWFmdGVyLWRlbGF5
Lmh0bWwJKHJldmlzaW9uIDE2Nzk3NSkKKysrIExheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0
aW5nL2F1dG9wbGF5LXNpbWlsYXItdG8tZG9taW5hbnQtYWZ0ZXItZGVsYXkuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxOSArMSwyNyBAQAogPHA+VGhlIGRvbWluYW50IHBsdWdpbiBzaG91bGQg
cGxheSBhdXRvbWF0aWNhbGx5LCBhbmQgdGhlbiBzbyBzaG91bGQgdGhlIGlkZW50aWNhbCBwbHVn
aW4gdGhhdCBpcyBhZGRlZCBhIGJpdCBsYXRlci48L3A+Cis8ZGl2IGlkPSJyZXN1bHQiPkZBSUw8
L2Rpdj4KIDxzY3JpcHQ+CiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAg
d2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRNYXhpbXVtUGx1Z0luU25hcHNob3RBdHRlbXB0
cygwKTsKICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgdmFyIGRp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBkaXYuaW5uZXJIVE1M
ID0gJzxlbWJlZCBzcmM9Ii4uL3Jlc291cmNlcy9saW5lcy5zd2YiIHdpZHRoPSIyMDAiIGhlaWdo
dD0iMjAwIj48L2VtYmVkPic7CisgICAgICAgIGRpdi5pbm5lckhUTUwgPSAnPGVtYmVkIGlkPSJw
bHVnaW4yIiBzcmM9Ii4uL3Jlc291cmNlcy9saW5lcy5zd2YiIHdpZHRoPSIyMDAiIGhlaWdodD0i
MjAwIj48L2VtYmVkPic7CiAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsK
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgcmVzdWx0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAgICAgICAgICAgdmFyIGVt
YmVkMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4xIik7CisJCQl2YXIgZW1iZWQy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbjIiKTsKKyAgICAgICAgICAgIGlmICgh
KHdpbmRvdy5pbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZDEpCisgICAgICAgICAg
ICAgICAgfHwgd2luZG93LmludGVybmFscy5pc1BsdWdpblNuYXBzaG90dGVkKGVtYmVkMikpKQor
ICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiUEFTUyI7CiAgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfSwgNTAwKTsKKyAgICAgICAgfSwgMTAw
MCk7CiAgICAgfSwgNTAwKTsKIH0KIDwvc2NyaXB0PgogPGRpdj4KLTxlbWJlZCBzcmM9Ii4uL3Jl
c291cmNlcy9saW5lcy5zd2YiIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIj48L2VtYmVkPgorPGVt
YmVkIGlkPSJwbHVnaW4xIiBzcmM9Ii4uL3Jlc291cmNlcy9saW5lcy5zd2YiIHdpZHRoPSI2MDAi
IGhlaWdodD0iNjAwIj48L2VtYmVkPgogPC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5z
L3NuYXBzaG90dGluZy9hdXRvcGxheS1zaW1pbGFyLXRvLWRvbWluYW50Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktc2ltaWxhci10
by1kb21pbmFudC5odG1sCShyZXZpc2lvbiAxNjc5NzUpCisrKyBMYXlvdXRUZXN0cy9wbHVnaW5z
L3NuYXBzaG90dGluZy9hdXRvcGxheS1zaW1pbGFyLXRvLWRvbWluYW50Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMjMgKzEsMzUgQEAKIDxwPlRoZSBkb21pbmFudCBwbHVnaW4gc2hvdWxkIHBs
YXkgYXV0b21hdGljYWxseSwgYW5kIHRyaWdnZXIgYWxsIHRoZSBvdGhlcnMgdG8gcGxheSBhcyB3
ZWxsLCBzaW5jZSB0aGV5IGFyZSB0aGUgc2FtZSBvcmlnaW4uPC9wPgorPGRpdiBpZD0icmVzdWx0
Ij5GQUlMPC9kaXY+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgd2lu
ZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKHRydWUp
OwogICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0TWF4aW11bVBsdWdJblNuYXBzaG90
QXR0ZW1wdHMoMCk7CiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAg
IHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgICAg
IHZhciBlbWJlZDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luMSIpOworICAgICAg
ICB2YXIgZW1iZWQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbjIiKTsKKyAgICAg
ICAgdmFyIGVtYmVkMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4zIik7CisgICAg
ICAgIHZhciBlbWJlZDQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luNCIpOworICAg
ICAgICBpZiAoISh3aW5kb3cuaW50ZXJuYWxzLmlzUGx1Z2luU25hcHNob3R0ZWQoZW1iZWQxKQor
ICAgICAgICAgICAgfHwgd2luZG93LmludGVybmFscy5pc1BsdWdpblNuYXBzaG90dGVkKGVtYmVk
MikKKyAgICAgICAgICAgIHx8IHdpbmRvdy5pbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChl
bWJlZDMpCisgICAgICAgICAgICB8fCB3aW5kb3cuaW50ZXJuYWxzLmlzUGx1Z2luU25hcHNob3R0
ZWQoZW1iZWQ0KSkpCisgICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOwogICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCA1MDApOworICAgIH0sIDIwMDAp
OwogfQogPC9zY3JpcHQ+CiA8cD4KLTxlbWJlZCBzcmM9Ii4uL3Jlc291cmNlcy9saW5lcy5zd2Yi
IHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIj48L2VtYmVkPgorPGVtYmVkIGlkPSJwbHVnaW4xIiBz
cmM9Ii4uL3Jlc291cmNlcy9saW5lcy5zd2YiIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIj48L2Vt
YmVkPgogPC9wPgogPHA+Ci08ZW1iZWQgc3JjPSIuLi9yZXNvdXJjZXMvbGluZXMuc3dmIiB3aWR0
aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PC9lbWJlZD4KKzxlbWJlZCBpZD0icGx1Z2luMiIgc3JjPSIu
Li9yZXNvdXJjZXMvbGluZXMuc3dmIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PC9lbWJlZD4K
IDwvcD4KIDxwPgotPGVtYmVkIHNyYz0iLi4vcmVzb3VyY2VzL2xpbmVzLnN3ZiIgd2lkdGg9IjEw
MCIgaGVpZ2h0PSIxMDAiPjwvZW1iZWQ+Cis8ZW1iZWQgaWQ9InBsdWdpbjMiIHNyYz0iLi4vcmVz
b3VyY2VzL2xpbmVzLnN3ZiIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPjwvZW1iZWQ+CiA8L3A+
CiA8cD4KLTxlbWJlZCBzcmM9Ii4uL3Jlc291cmNlcy9saW5lcy5zd2YiIHdpZHRoPSI1MCIgaGVp
Z2h0PSI1MCI+PC9lbWJlZD4KKzxlbWJlZCBpZD0icGx1Z2luNCIgc3JjPSIuLi9yZXNvdXJjZXMv
bGluZXMuc3dmIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiPjwvZW1iZWQ+CiA8L3A+CkluZGV4OiBM
YXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9xdWlja3RpbWUtcGx1Z2luLXNuYXBzaG90
dGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcv
cXVpY2t0aW1lLXBsdWdpbi1zbmFwc2hvdHRlZC5odG1sCShyZXZpc2lvbiAxNjc5NzUpCisrKyBM
YXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9xdWlja3RpbWUtcGx1Z2luLXNuYXBzaG90
dGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMgKzEsMTkgQEAKIDxwPlRoaXMgdGVzdCBl
bnN1cmVzIHRoYXQgcXVpY2t0aW1lIHBsdWdpbnMgY2FuIGFsc28gYmUgc25hcHNob3R0ZWQuIAog
V2UgbWFrZSB0aGUgcGx1Z2luIGhlcmUgdG9vIHNtYWxsIHRvIGJlIHRoZSBwcmltYXJ5IHBsdWdp
biwgdGh1cyBpdCBzaG91bGQgZ2V0IHNuYXBzaG90dGVkLjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+
RkFJTDwvZGl2PgogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHdpbmRv
dy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCh0cnVlKTsK
ICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldE1heGltdW1QbHVnSW5TbmFwc2hvdEF0
dGVtcHRzKDApOwogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICB2
YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAgICAgICB2
YXIgZW1iZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luIik7CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzLmlzUGx1Z2luU25hcHNob3R0ZWQoZW1iZWQpKQorICAgICAgICAg
ICAgcmVzdWx0LmlubmVySFRNTCA9ICJQQVNTIjsKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci0gICAgfSwgNTAwKTsKKyAgICB9LCAxMDAwKTsKIH0KIDwvc2NyaXB0PgotPGVtYmVk
IHNyYz0iLi4vcmVzb3VyY2VzL29yYW5nZS5tb3YiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj48
L2VtYmVkPgorPGVtYmVkIGlkPSJwbHVnaW4iIHNyYz0iLi4vcmVzb3VyY2VzL29yYW5nZS5tb3Yi
IHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj48L2VtYmVkPgpJbmRleDogTGF5b3V0VGVzdHMvcGx1
Z2lucy9zbmFwc2hvdHRpbmcvcmVzdGFydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsdWdpbnMvc25hcHNob3R0aW5nL3Jlc3RhcnQuaHRtbAkocmV2aXNpb24gMTY3OTc1KQorKysg
TGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvcmVzdGFydC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDE5ICsxLDI1IEBACiA8cD5UaGlzIHRlc3QgZm9yY2VzIGEgcGx1Z2luIHRvIHNu
YXBzaG90IGltbWVkaWF0ZWx5LCB0aGVuIHRyaWVzIHRvIHJlc3RhcnQgaXQuPC9wPgorPGRpdiBp
ZD0icmVzdWx0Ij5GQUlMPC9kaXY+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CiAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFi
bGVkKHRydWUpOwogICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0TWF4aW11bVBsdWdJ
blNuYXBzaG90QXR0ZW1wdHMoMCk7CiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7
Ci0gICAgICAgIHZhciBlbWJlZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImVtYmVkIik7Cisg
ICAgICAgIHZhciBlbWJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4iKTsKICAg
ICAgICAgdmFyIHJlY3QgPSBlbWJlZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ocmVjdC5sZWZ0ICsgMTAsIHJlY3QudG9wICsgMTApOwog
ICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOwogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZh
ciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgICAgICAg
ICB2YXIgZW1iZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luIik7CisgICAgICAg
ICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJlZCkpCisg
ICAgICAgICAgICAgICAgcmVzdWx0LmlubmVySFRNTCA9ICJQQVNTIjsKICAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9LCA1MDApOwotICAgIH0sIDUwMCk7Cisg
ICAgICAgIH0sIDEwMDApOworICAgIH0sIDEwMDApOwogfQogPC9zY3JpcHQ+Ci08ZW1iZWQgc3Jj
PSIuLi9yZXNvdXJjZXMvbGluZXMuc3dmIj48L2VtYmVkPgorPGVtYmVkIGlkPSJwbHVnaW4iIHNy
Yz0iLi4vcmVzb3VyY2VzL2xpbmVzLnN3ZiI+PC9lbWJlZD4KSW5kZXg6IExheW91dFRlc3RzL3Bs
dWdpbnMvc25hcHNob3R0aW5nL3NldC1wbHVnaW4tc2l6ZS10by10aW55Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc2V0LXBsdWdpbi1zaXplLXRv
LXRpbnkuaHRtbAkocmV2aXNpb24gMTY3OTc1KQorKysgTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFw
c2hvdHRpbmcvc2V0LXBsdWdpbi1zaXplLXRvLXRpbnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSwyMCArMSwyNSBAQAogPHA+VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBpZiB3ZSBoYXZlIHNldCBh
IHBsdWdpbiB0byBiZSB0b28gc21hbGwgYWZ0ZXIgdGhlIGluaXRpYWwgbG9hZCB0aGF0IGl0IHN0
aWxsIGdldHMgcGxheWVkLjwvcD4KIDxwPkFsc28gZW5zdXJlIHRoYXQgdGhlIHBsdWdpbiByZW1h
aW5zIHNuYXBzaG90dGVkIGlmIHRoZSBzaXplIHdhcyBpbml0aWFsbHkgc3BlY2lmaWVkIGJ1dCBt
YWRlIHRvbyBzbWFsbCBhZnRlcndhcmRzLjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2
PgogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0dGluZ3Muc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCh0cnVlKTsKICAgICB3aW5k
b3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldE1heGltdW1QbHVnSW5TbmFwc2hvdEF0dGVtcHRzKDAp
OwogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOwogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgZW1iZWRF
bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVtYmVkIik7Ci0gICAgICAgIGVtYmVk
RWxlbWVudC5zdHlsZS53aWR0aCA9IDQwOwotICAgICAgICBlbWJlZEVsZW1lbnQuc3R5bGUuaGVp
Z2h0ID0gNDA7Ci0gICAgICAgIHZhciBlbWJlZEVsZW1lbnQyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImVtYmVkMiIpOwotICAgICAgICBlbWJlZEVsZW1lbnQyLnN0eWxlLndpZHRoID0gNDA7
Ci0gICAgICAgIGVtYmVkRWxlbWVudDIuc3R5bGUuaGVpZ2h0ID0gNDA7CisgICAgICAgIHZhciBy
ZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgICAgIHZhciBl
bWJlZDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGx1Z2luMSIpOworICAgICAgICBlbWJl
ZDEuc3R5bGUud2lkdGggPSA0MDsKKyAgICAgICAgZW1iZWQxLnN0eWxlLmhlaWdodCA9IDQwOwor
ICAgICAgICB2YXIgZW1iZWQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbjIiKTsK
KyAgICAgICAgZW1iZWQyLnN0eWxlLndpZHRoID0gNDA7CisgICAgICAgIGVtYmVkMi5zdHlsZS5o
ZWlnaHQgPSA0MDsKKyAgICAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzLmlzUGx1Z2luU25hcHNo
b3R0ZWQoZW1iZWQxKSAmJiB3aW5kb3cuaW50ZXJuYWxzLmlzUGx1Z2luU25hcHNob3R0ZWQoZW1i
ZWQyKSkKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiUEFTUyI7CiAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0sIDIwMDApOwogfQogPC9zY3JpcHQ+Ci08ZW1i
ZWQgaWQ9ImVtYmVkIiBzcmM9Ii4uL3Jlc291cmNlcy9saW5lcy5zd2YiPjwvZW1iZWQ+Ci08ZW1i
ZWQgaWQ9ImVtYmVkMiIgc3JjPSIuLi9yZXNvdXJjZXMvbGluZXMuc3dmIiBzdHlsZT0id2lkdGg6
MzAwcHg7IGhlaWdodDozMDBweCI+PC9lbWJlZD4KKzxlbWJlZCBpZD0icGx1Z2luMSIgc3JjPSIu
Li9yZXNvdXJjZXMvbGluZXMuc3dmIj48L2VtYmVkPgorPGVtYmVkIGlkPSJwbHVnaW4yIiBzcmM9
Ii4uL3Jlc291cmNlcy9saW5lcy5zd2YiIHN0eWxlPSJ3aWR0aDozMDBweDsgaGVpZ2h0OjMwMHB4
Ij48L2VtYmVkPgpJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc2ltcGxl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc2lt
cGxlLmh0bWwJKHJldmlzaW9uIDE2Nzk3NSkKKysrIExheW91dFRlc3RzL3BsdWdpbnMvc25hcHNo
b3R0aW5nL3NpbXBsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogPHA+VGhp
cyB0ZXN0IGZvcmNlcyBhIHBsdWdpbiB0byBzbmFwc2hvdCBpbW1lZGlhdGVseTwvcD4KLTxwIGlk
PSJwYXNzU3RhdHVzIj5QQVNTPC9wPgorPGRpdiBpZD0icmVzdWx0Ij5GQUlMPC9kaXY+CiA8c2Ny
aXB0PgogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgd2luZG93LmludGVybmFscy5zZXR0
aW5ncy5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKHRydWUpOwpAQCAtNywxMiArNywxMiBA
QCBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgdmFyIHBsdWdpbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbHVn
aW4iKTsKLSAgICAgICAgdmFyIHBhc3NTdGF0dXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cGFzc1N0YXR1cyIpOwotICAgICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMuaXNQbHVnaW5TbmFw
c2hvdHRlZChwbHVnaW4pKQotICAgICAgICAgICAgcGFzc1N0YXR1cy5pbm5lckhUTUwgPSAiRkFJ
TCI7CisgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
Iik7CisgICAgICAgIHZhciBlbWJlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4i
KTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMuaXNQbHVnaW5TbmFwc2hvdHRlZChlbWJl
ZCkpCisgICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBBU1MiOwogICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCA1MDApOworICAgIH0sIDEwMDApOwogfQogPC9z
Y3JpcHQ+CiA8ZW1iZWQgaWQ9InBsdWdpbiIgc3JjPSIuLi9yZXNvdXJjZXMvbGluZXMuc3dmIj48
L2VtYmVkPgpJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc25hcHNob3Qt
cGx1Z2luLW5vdC1xdWl0ZS1ibG9ja2VkLWJ5LWltYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc25hcHNob3QtcGx1Z2luLW5vdC1xdWl0ZS1i
bG9ja2VkLWJ5LWltYWdlLmh0bWwJKHJldmlzaW9uIDE2Nzk3NSkKKysrIExheW91dFRlc3RzL3Bs
dWdpbnMvc25hcHNob3R0aW5nL3NuYXBzaG90LXBsdWdpbi1ub3QtcXVpdGUtYmxvY2tlZC1ieS1p
bWFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2ICsxLDIzIEBACiA8cD5UaGlzIHRlc3Rz
IHRoYXQgYSBwbHVnaW4gc2hvdWxkIGJlIHNuYXBzaG90dGVkIGlmIGl0IGlzIHBhcnRpYWxseSBj
b3ZlcmVkIGJ5IGFuIGltYWdlIGJ1dCBub3QgZW5vdWdoIHRvIGJlIGNvbnNpZGVyZWQgYmxvY2tp
bmcuPC9wPgogPHA+IEl0IGFkZGl0aW9uYWxseSB0ZXN0cyB0aGF0IHdlIHRha2UgdHJhbnNmb3Jt
cyBpbnRvIGFjY291bnQuIDwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+RkFJTDwvZGl2PgogPHNjcmlw
dD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCh0cnVlKTsKICAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldE1heGltdW1QbHVnSW5TbmFwc2hvdEF0dGVtcHRzKDApOwogICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAgICAgICB2YXIgZW1iZWQxID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpbjEiKTsKKyAgICAgICAgdmFyIGVtYmVkMiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJwbHVnaW4yIik7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzLmlzUGx1Z2luU25hcHNob3R0ZWQoZW1iZWQxKSAmJiB3aW5kb3cuaW50ZXJuYWxzLmlzUGx1
Z2luU25hcHNob3R0ZWQoZW1iZWQyKSkKKyAgICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAi
UEFTUyI7CiAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0sIDEwMDApOwog
fQogPC9zY3JpcHQ+Ci08ZW1iZWQgc3JjPSIuLi9yZXNvdXJjZXMvbGluZXMuc3dmIiB3aWR0aD0i
NjAwIiBoZWlnaHQ9IjYwMCI+PC9lbWJlZD4KKzxlbWJlZCBpZD0icGx1Z2luMSIgc3JjPSIuLi9y
ZXNvdXJjZXMvbGluZXMuc3dmIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjYwMCI+PC9lbWJlZD4KIDxp
bWcgc3JjPSIuLi9yZXNvdXJjZXMvYXBwbGUuZ2lmIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjYwMCIg
c3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6LTUyNXB4OyBsZWZ0OjBweCI+Ci08ZW1iZWQg
c3JjPSIuLi9yZXNvdXJjZXMvbGluZXMuc3dmIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjYwMCI+PC9l
bWJlZD4KKzxlbWJlZCBpZD0icGx1Z2luMiIgc3JjPSIuLi9yZXNvdXJjZXMvbGluZXMuc3dmIiB3
aWR0aD0iNjAwIiBoZWlnaHQ9IjYwMCI+PC9lbWJlZD4KIDxpbWcgc3JjPSIuLi9yZXNvdXJjZXMv
YXBwbGUuZ2lmIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9Ii13ZWJraXQtdHJhbnNm
b3JtOnRyYW5zbGF0ZSgtNTAwcHgsLTIwMHB4KSI+Cg==
</data>
<flag name="review"
          id="254851"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>