<?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>145637</bug_id>
          
          <creation_ts>2015-06-03 23:36:52 -0700</creation_ts>
          <short_desc>REGRESSION (r181879): Scrolling order on pages with focused iframe is broken.</short_desc>
          <delta_ts>2015-06-04 11:38:24 -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>Layout and Rendering</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=145574</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>145649</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1099429</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-06-03 23:36:52 -0700</bug_when>
    <thetext>Failure with certain types of nested iframe:

1. go to http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_iframe_scrolling
2. click into iframce
3. scroll down with gesture</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099430</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-06-03 23:37:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/20635581&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099431</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-06-03 23:38:17 -0700</bug_when>
    <thetext>This bug seemed to be introduced by my recent refactoring in Bug 142789.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099438</commentid>
    <comment_count>3</comment_count>
      <attachid>254254</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-06-03 23:46:45 -0700</bug_when>
    <thetext>Created attachment 254254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099486</commentid>
    <comment_count>4</comment_count>
      <attachid>254254</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-06-04 08:51:38 -0700</bug_when>
    <thetext>Comment on attachment 254254
Patch

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

&gt; Source/WebCore/rendering/RenderBox.h:481
&gt; +    bool hasScrollableOverflowX() const { return scrollsOverflowX() &amp;&amp; scrollWidth() != roundToInt(clientWidth()); }
&gt; +    bool hasScrollableOverflowY() const { return scrollsOverflowY() &amp;&amp; scrollHeight() != roundToInt(clientHeight()); }

Is rounding correct here? What does we do when the document has a sub pixel height?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099487</commentid>
    <comment_count>5</comment_count>
      <attachid>254254</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-06-04 09:04:48 -0700</bug_when>
    <thetext>Comment on attachment 254254
Patch

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        This page revealed a bug in our RenderBox code where the client height (and width),
&gt; +        which are LayoutUnits, were being compared with scrollHeight (and scrollWidth), which
&gt; +        are simple integer values.

The issue here is not the type difference (LayoutUnit vs integer) as LayoutUnit can also hold integrally snapped values, but the fact that scrolling is all integrally snapped while client height is not snapped at all. When comparing those values, they either need to be snapped the same way or not snapped at all.

&gt; Source/WebCore/ChangeLog:20
&gt; +        (WebCore::RenderBox::hasScrollableOverflowX): Need to properly round LayoutUnits to

Need to properly round LayoutUnits -&gt; Need to properly round clientWidth/clientHeight to

&gt;&gt; Source/WebCore/rendering/RenderBox.h:481
&gt;&gt; +    bool hasScrollableOverflowY() const { return scrollsOverflowY() &amp;&amp; scrollHeight() != roundToInt(clientHeight()); }
&gt; 
&gt; Is rounding correct here? What does we do when the document has a sub pixel height?

Since scrollWidth/Height and all other scrolling related arithmetics are still integral based we don&apos;t really have any other option. I guess we&apos;d lose the subpixel part of the document through integer truncation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099489</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-06-04 09:14:30 -0700</bug_when>
    <thetext>(In reply to comment #5)

&gt; &gt; Is rounding correct here? What does we do when the document has a sub pixel height?
&gt; 
&gt; Since scrollWidth/Height and all other scrolling related arithmetics are
&gt; still integral based we don&apos;t really have any other option. I guess we&apos;d
&gt; lose the subpixel part of the document through integer truncation.

Right, but does this rounding match rounding we do in adjustViewSize() or whatever?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099490</commentid>
    <comment_count>7</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-06-04 09:19:16 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; 
&gt; &gt; &gt; Is rounding correct here? What does we do when the document has a sub pixel height?
&gt; &gt; 
&gt; &gt; Since scrollWidth/Height and all other scrolling related arithmetics are
&gt; &gt; still integral based we don&apos;t really have any other option. I guess we&apos;d
&gt; &gt; lose the subpixel part of the document through integer truncation.
&gt; 
&gt; Right, but does this rounding match rounding we do in adjustViewSize() or
&gt; whatever?

This rounding matches RenderBox::scrollWidth()/scrollHeight(). Whether that matches adjustViewSize() etc I guess that&apos;s something Brent needs to figure out. -I hope it does otherwise we need to adjust all integral roundings for scrolling accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099495</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-06-04 09:48:11 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Right, but does this rounding match rounding we do in adjustViewSize() or
&gt; &gt; whatever?
&gt; 
&gt; This rounding matches RenderBox::scrollWidth()/scrollHeight(). Whether that
&gt; matches adjustViewSize() etc I guess that&apos;s something Brent needs to figure
&gt; out. -I hope it does otherwise we need to adjust all integral roundings for
&gt; scrolling accordingly.

It does look like RenderBox::canBeScrolledAndHasScrollableArea() has the same comparison issue (scrollHeight versus clientHeight), and should probably get the same rounding correction.

Now that I know what I&apos;m looking for, I see that other code that deals with scrollHeight/scrollWidth seem to use &quot;pixelSnappedClientWidth&quot; and &quot;pixelSnappedClientHeight&quot;, so I&apos;ll switch to that instead (they are 100% identical, but probably gives clearer meaning).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099498</commentid>
    <comment_count>9</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-06-04 09:55:18 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; &gt; Right, but does this rounding match rounding we do in adjustViewSize() or
&gt; &gt; &gt; whatever?
&gt; &gt; 
&gt; &gt; This rounding matches RenderBox::scrollWidth()/scrollHeight(). Whether that
&gt; &gt; matches adjustViewSize() etc I guess that&apos;s something Brent needs to figure
&gt; &gt; out. -I hope it does otherwise we need to adjust all integral roundings for
&gt; &gt; scrolling accordingly.
&gt; 
&gt; It does look like RenderBox::canBeScrolledAndHasScrollableArea() has the
&gt; same comparison issue (scrollHeight versus clientHeight), and should
&gt; probably get the same rounding correction.
&gt; 
&gt; Now that I know what I&apos;m looking for, I see that other code that deals with
&gt; scrollHeight/scrollWidth seem to use &quot;pixelSnappedClientWidth&quot; and
&gt; &quot;pixelSnappedClientHeight&quot;, so I&apos;ll switch to that instead (they are 100%
&gt; identical, but probably gives clearer meaning).
Please don&apos;t switch to them. Their names are highly misleading (pixelsnapping is so overloaded at this point) and I am going to remove them at some point.
Using roundToInt is more explicit and it clearly matches RenderBox::scrollWidth()/scrollHeight snapping behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099500</commentid>
    <comment_count>10</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-06-04 10:09:16 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; 
&gt; &gt; &gt; Is rounding correct here? What does we do when the document has a sub pixel height?
&gt; &gt; 
&gt; &gt; Since scrollWidth/Height and all other scrolling related arithmetics are
&gt; &gt; still integral based we don&apos;t really have any other option. I guess we&apos;d
&gt; &gt; lose the subpixel part of the document through integer truncation.
&gt; 
&gt; Right, but does this rounding match rounding we do in adjustViewSize() or
&gt; whatever?

Yes, I think we are now matching what other code was already doing.

For example, hasHorizontalOverflow/hasVerticalOverflow was using pixel-snapped units while these other tests were not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099505</commentid>
    <comment_count>11</comment_count>
      <attachid>254269</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-06-04 10:25:55 -0700</bug_when>
    <thetext>Created attachment 254269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099511</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-06-04 10:33:02 -0700</bug_when>
    <thetext>Can we have a test that dumps clientWidth/clientHeight for various subpixel document sizes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099524</commentid>
    <comment_count>13</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-06-04 10:53:48 -0700</bug_when>
    <thetext>Committed r185201: &lt;http://trac.webkit.org/changeset/185201&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254254</attachid>
            <date>2015-06-03 23:46:45 -0700</date>
            <delta_ts>2015-06-04 10:25:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145637-20150603234625.patch</filename>
            <type>text/plain</type>
            <size>16828</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTE5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA2LTAzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIxODE4
NzkpOiBTY3JvbGxpbmcgb3JkZXIgb24gcGFnZXMgd2l0aCBmb2N1c2VkIGlmcmFtZSBpcyBicm9r
ZW4uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU2
MzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwNjM1NTgxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHBsYXRmb3JtL21hYy13azIvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvaWZyYW1lX2luX2lmcmFtZS5odG1sCisKKyAgICAgICAgVGhp
cyBwYWdlIHJldmVhbGVkIGEgYnVnIGluIG91ciBSZW5kZXJCb3ggY29kZSB3aGVyZSB0aGUgY2xp
ZW50IGhlaWdodCAoYW5kIHdpZHRoKSwKKyAgICAgICAgd2hpY2ggYXJlIExheW91dFVuaXRzLCB3
ZXJlIGJlaW5nIGNvbXBhcmVkIHdpdGggc2Nyb2xsSGVpZ2h0IChhbmQgc2Nyb2xsV2lkdGgpLCB3
aGljaAorICAgICAgICBhcmUgc2ltcGxlIGludGVnZXIgdmFsdWVzLgorICAgICAgICAKKyAgICAg
ICAgSW4gY2VydGFpbiBjYXNlcywgdGhlIGNsaWVudCBoZWlnaHQgd291bGQgaGF2ZSBhIHNtYWxs
IHN1YnBpeGVsIGRpZmZlcmVuY2UgY29tcGFyZWQKKyAgICAgICAgdG8gdGhlIHNjcm9sbCBoZWln
aHQsIHdoaWNoIHdvdWxkIGNhdXNlIFdlYktpdCB0byBiZWxpZXZlIGl0IHdhcyBzY3JvbGxhYmxl
LiBXaGVuCisgICAgICAgIHRoaXMgaGFwcGVuZWQsIGl0IHdvdWxkIGdldCBzdHVjayBsYXRjaGVk
IHRvIHRoaXMgZWxlbWVudCBhbmQgYmxvY2sgc2Nyb2xsaW5nIGV2ZW50cy4gCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Omhh
c1Njcm9sbGFibGVPdmVyZmxvd1gpOiBOZWVkIHRvIHByb3Blcmx5IHJvdW5kIExheW91dFVuaXRz
IHRvCisgICAgICAgIGNvbXBhcmUgd2l0aCBzY3JvbGwgd2lkdGguCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6Omhhc1Njcm9sbGFibGVPdmVyZmxvd1kpOiBEaXR0byAoYnV0IGZvciBoZWln
aHQpLgorCiAyMDE1LTA2LTAzICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNlIGJvcmRlckJveFJlY3QgaW5zdGVhZCBvZiBjb250ZW50Qm94UmVjdCBmb3IgYmFj
a2Ryb3AgZmlsdGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkocmV2
aXNpb24gMTg1MTU1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NzcsOCArNDc3LDggQEAgcHVibGljOgogICAgIGJvb2wgc2Nyb2xs
c092ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gc2Nyb2xsc092ZXJmbG93WCgpIHx8IHNjcm9sbHNP
dmVyZmxvd1koKTsgfQogICAgIGJvb2wgc2Nyb2xsc092ZXJmbG93WCgpIGNvbnN0IHsgcmV0dXJu
IGhhc092ZXJmbG93Q2xpcCgpICYmIChzdHlsZSgpLm92ZXJmbG93WCgpID09IE9TQ1JPTEwgfHwg
aGFzSG9yaXpvbnRhbFNjcm9sbGJhcldpdGhBdXRvQmVoYXZpb3IoKSk7IH0KICAgICBib29sIHNj
cm9sbHNPdmVyZmxvd1koKSBjb25zdCB7IHJldHVybiBoYXNPdmVyZmxvd0NsaXAoKSAmJiAoc3R5
bGUoKS5vdmVyZmxvd1koKSA9PSBPU0NST0xMIHx8IGhhc1ZlcnRpY2FsU2Nyb2xsYmFyV2l0aEF1
dG9CZWhhdmlvcigpKTsgfQotICAgIGJvb2wgaGFzU2Nyb2xsYWJsZU92ZXJmbG93WCgpIGNvbnN0
IHsgcmV0dXJuIHNjcm9sbHNPdmVyZmxvd1goKSAmJiBzY3JvbGxXaWR0aCgpICE9IGNsaWVudFdp
ZHRoKCk7IH0KLSAgICBib29sIGhhc1Njcm9sbGFibGVPdmVyZmxvd1koKSBjb25zdCB7IHJldHVy
biBzY3JvbGxzT3ZlcmZsb3dZKCkgJiYgc2Nyb2xsSGVpZ2h0KCkgIT0gY2xpZW50SGVpZ2h0KCk7
IH0KKyAgICBib29sIGhhc1Njcm9sbGFibGVPdmVyZmxvd1goKSBjb25zdCB7IHJldHVybiBzY3Jv
bGxzT3ZlcmZsb3dYKCkgJiYgc2Nyb2xsV2lkdGgoKSAhPSByb3VuZFRvSW50KGNsaWVudFdpZHRo
KCkpOyB9CisgICAgYm9vbCBoYXNTY3JvbGxhYmxlT3ZlcmZsb3dZKCkgY29uc3QgeyByZXR1cm4g
c2Nyb2xsc092ZXJmbG93WSgpICYmIHNjcm9sbEhlaWdodCgpICE9IHJvdW5kVG9JbnQoY2xpZW50
SGVpZ2h0KCkpOyB9CiAKICAgICBib29sIHVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3Q7
CiAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODUxOTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wNi0wMyAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMTgxODc5
KTogU2Nyb2xsaW5nIG9yZGVyIG9uIHBhZ2VzIHdpdGggZm9jdXNlZCBpZnJhbWUgaXMgYnJva2Vu
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NjM3
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDYzNTU4MT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvaWZyYW1lX2luX2lmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvaWZyYW1lX2lu
X2lmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Jlc291cmNlcy9pbm5lcl9jb250ZW50Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvcmVzb3VyY2Vz
L3Rlc3RDb250ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvcmVzb3VyY2VzL3Rlc3RJbWFnZS5wbmc6IEFkZGVkLgorCiAy
MDE1LTA2LTAzICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNl
IGJvcmRlckJveFJlY3QgaW5zdGVhZCBvZiBjb250ZW50Qm94UmVjdCBmb3IgYmFja2Ryb3AgZmls
dGVyLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9pZnJhbWVfaW5faWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2lmcmFtZV9p
bl9pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9pZnJhbWVfaW5faWZyYW1lLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACitJbm5lciBGcmFtZToKKwor
VGVzdHMgdGhhdCBpZnJhbWUgZG9lc24ndCBwYXNzIHdoZWVsIGV2ZW50cyB0byBtYWluIGZyYW1l
IHdoZW4gc2Nyb2xsaW5nIGluc2lkZSBpZnJhbWUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
UEFTUyBQYWdlIGRpZCBub3QgcmVjZWl2ZSB3aGVlbCBldmVudHMuCitQQVNTIGlmcmFtZSBkaWQg
bm90IHJlY2VpdmUgd2hlZWwgZXZlbnRzLgorUEFTUyBpZnJhbWUgcmVjZWl2ZWQgd2hlZWwgZXZl
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvaWZyYW1lX2luX2lmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvaWZyYW1lX2luX2lmcmFtZS5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9pZnJhbWVfaW5faWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDx0aXRsZT5pRnJhbWUgaW4gaUZyYW1lIFRlc3Q8L3RpdGxlPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICogeworICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgICAg
fQorCisgICAgICAgIC5jb250YWluZXIgeworICAgICAgICAgICAgd2lkdGg6MTAwJTsKKyAgICAg
ICAgICAgIG92ZXJmbG93OmF1dG87CisgICAgICAgICAgICBoZWlnaHQ6YXV0bzsKKyAgICAgICAg
fQorCisgICAgICAgIC5pbm5lcmNvbnRhaW5lciB7CisgICAgICAgICAgICBoZWlnaHQ6MTAwJTsK
KyAgICAgICAgICAgIHdpZHRoOjUwJTsKKyAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+Cis8c2NyaXB0PgorCit2YXIgaWZyYW1l
VGFyZ2V0OwordmFyIGlubmVySUZyYW1lVGFyZ2V0OwordmFyIHBhZ2VTY3JvbGxQb3NpdGlvbkJl
Zm9yZTsKK3ZhciBpRnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZTsKK3ZhciBjb250aW51ZUNvdW50
ID0gNTsKKworZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGwoKQoreworICAgIC8vIFRoZSBJRnJhbWUg
c2hvdWxkIG5vdCBoYXZlIHNjcm9sbGVkIGF0IGFsbC4KKyAgICB2YXIgcGFnZVNjcm9sbFBvc2l0
aW9uQWZ0ZXIgPSBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDsKKyAgICB2YXIgaUZyYW1lU2Nyb2xs
UG9zaXRpb25BZnRlciA9IHdpbmRvdy5mcmFtZXNbJ3RhcmdldCddLmRvY3VtZW50LmJvZHkuc2Ny
b2xsVG9wOworICAgIHZhciBpbm5lcklGcmFtZVNjcm9sbFBvc2l0aW9uQWZ0ZXIgPSBpZnJhbWVU
YXJnZXQuY29udGVudFdpbmRvdy5mcmFtZXNbJ3RhcmdldCddLmRvY3VtZW50LmJvZHkuc2Nyb2xs
VG9wOworCisgICAgaWYgKHBhZ2VTY3JvbGxQb3NpdGlvbkJlZm9yZSAhPSBwYWdlU2Nyb2xsUG9z
aXRpb25BZnRlcikKKyAgICAgICAgdGVzdEZhaWxlZCgiUGFnZSByZWNlaXZlZCB3aGVlbCBldmVu
dHMuIik7CisgICAgZWxzZQorICAgICAgICB0ZXN0UGFzc2VkKCJQYWdlIGRpZCBub3QgcmVjZWl2
ZSB3aGVlbCBldmVudHMuIik7CisKKyAgICBpZiAoaUZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmUg
IT0gaUZyYW1lU2Nyb2xsUG9zaXRpb25BZnRlcikKKyAgICAgICAgdGVzdEZhaWxlZCgiaWZyYW1l
IHJlY2VpdmVkIHdoZWVsIGV2ZW50cy4iKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RQYXNzZWQo
ImlmcmFtZSBkaWQgbm90IHJlY2VpdmUgd2hlZWwgZXZlbnRzLiIpOworCisgICAgaWYgKGlubmVy
SUZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmUgIT0gaW5uZXJJRnJhbWVTY3JvbGxQb3NpdGlvbkFm
dGVyKQorICAgICAgICB0ZXN0UGFzc2VkKCJpZnJhbWUgcmVjZWl2ZWQgd2hlZWwgZXZlbnRzLiIp
OworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgiaWZyYW1lIGRpZCBub3QgcmVjZWl2ZSB3
aGVlbCBldmVudHMuIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gc2Nyb2xsVGVzdCgpCit7CisgICAgcGFnZVNjcm9s
bFBvc2l0aW9uQmVmb3JlID0gZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7CisKKyAgICBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0Jyk7CisKKyAgICB2YXIgaUZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbJ3RhcmdldCddLmRvY3VtZW50LmJvZHk7CisgICAgaUZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmUgPSBpRnJhbWVCb2R5LnNjcm9sbFRvcDsKKworICAgIGlu
bmVySUZyYW1lVGFyZ2V0ID0gaWZyYW1lVGFyZ2V0LmNvbnRlbnRXaW5kb3cuZnJhbWVzWyd0YXJn
ZXQnXS5kb2N1bWVudC5ib2R5OworICAgIGlubmVySUZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmUg
PSBpbm5lcklGcmFtZVRhcmdldC5zY3JvbGxUb3A7CisKKyAgICAvLyBTY3JvbGwgdGhlICNzb3Vy
Y2UgdW50aWwgd2UgcmVhY2ggdGhlICN0YXJnZXQuCisgICAgdmFyIHN0YXJ0UG9zWCA9IE1hdGgu
cm91bmQoaWZyYW1lVGFyZ2V0Lm9mZnNldExlZnQpICsgMjA7CisgICAgdmFyIHN0YXJ0UG9zWSA9
IE1hdGgucm91bmQoaWZyYW1lVGFyZ2V0Lm9mZnNldFRvcCkgKyA4MDsKKyAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnYmVnYW4nLCAnbm9u
ZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEs
ICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnbm9uZScsICdjb250aW51ZScpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhjaGVja0ZvclNjcm9sbCk7Cit9CisKK2Z1bmN0aW9uIHNldHVwVG9wTGV2ZWwoKQoreworICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICBzZXRUaW1lb3V0KHNjcm9sbFRl
c3QsIDApOworICAgIH0KK30KKzwvc2NyaXB0PgorICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWlu
ZXIiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5uZXJjb250YWluZXIiPgorICAgICAgICAg
ICAgICAgIDxkaXYgc3R5bGU9IndpZHRoOjEwMCU7Ij4KKyAgICAgICAgICAgICAgICAgICAgPGRp
dj5Jbm5lciBGcmFtZTo8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iaGVp
Z2h0OjkyJTsiPgorICAgICAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBpZD0idGFyZ2V0IiBu
YW1lPSJ0YXJnZXQiIHNyYz0icmVzb3VyY2VzL3Rlc3RDb250ZW50Lmh0bWwiIG9ubG9hZD0ic2V0
dXBUb3BMZXZlbCgpOyI+PC9pZnJhbWU+CisgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAg
ICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgaWZyYW1lIGRvZXNuJ3QgcGFzcyB3aGVlbCBldmVu
dHMgdG8gbWFpbiBmcmFtZSB3aGVuIHNjcm9sbGluZyBpbnNpZGUgaWZyYW1lIik7CisgICAgICAg
IDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvcmVzb3VyY2VzL2lubmVyX2NvbnRlbnQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Jlc291cmNlcy9pbm5lcl9jb250ZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Jlc291cmNlcy9p
bm5lcl9jb250ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbi1VUyI+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRs
ZT5Jbm5lciBpRnJhbWUgRXhhbXBsZTwvdGl0bGU+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICBpbWcgeworICAgICAgICAgICAgZGlzcGxh
eTpibG9jazsKKyAgICAgICAgICAgIG1heC13aWR0aDoxMDAlOworICAgICAgICB9CisgICAgICAg
IDwvc3R5bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IG1pbi1oZWlnaHQ6IDEwMCU7IHRvcDogMHB4OyI+CisgICAgICAgIDxkaXYgc3R5bGU9Im92
ZXJmbG93OmF1dG87Ij4KKyAgICAgICAgICAgIDxpbWcgc3JjPSJ0ZXN0SW1hZ2UucG5nIj4KKyAg
ICAgICAgICAgIDxkaXY+VEVTVCBDQVNFIFRFU1QgQ0FTRSBURVNUIENBU0UgVEVTVCBDQVNFPC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IHN0eWxlPSJvdmVyZmxvdzphdXRvOyI+
CisgICAgICAgICAgICA8aDE+VEVTVCBIRUFESU5HPC9oMT4KKyAgICAgICAgICAgIDxwPlRlc3Qg
cGFyYWdyYXBoLjwvcD4KKyAgICAgICAgICAgIDxkaXY+VEVTVCBCVVRUT04gMTwvZGl2PgorICAg
ICAgICAgICAgPGRpdj5URVNUIEJVVFRPTiAyPC9kaXY+ICAgICAgCisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Jlc291
cmNlcy90ZXN0Q29udGVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvcmVzb3VyY2VzL3Rlc3RDb250ZW50Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Jlc291cmNlcy90ZXN0Q29udGVudC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKworPHA+
QW4gaWZyYW1lIHdoZXJlIHNjcm9sbGJhcnMgYXJlIGFsd2F5cyBzaG93bjo8L3A+Cis8aWZyYW1l
IGlkPSJ0YXJnZXQiIG5hbWU9InRhcmdldCIgc3JjPSIuL2lubmVyX2NvbnRlbnQuaHRtbCIgd2lk
dGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHNjcm9sbGluZz0ieWVzIj4KKyAgPHA+WW91ciBicm93c2Vy
IGRvZXMgbm90IHN1cHBvcnQgaWZyYW1lcy48L3A+Cis8L2lmcmFtZT4KKworPHA+QW4gaWZyYW1l
IHdoZXJlIHNjcm9sbGJhcnMgYXJlIG5ldmVyIHNob3duOjwvcD4KKzxpZnJhbWUgc3JjPSIuL2lu
bmVyX2NvbnRlbnQuaHRtbCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHNjcm9sbGluZz0ibm8i
PgorICA8cD5Zb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBpZnJhbWVzLjwvcD4KKzwvaWZy
YW1lPgorCis8cD5UaGUgc2Nyb2xsaW5nIGF0dHJpYnV0ZSBpcyBub3Qgc3VwcG9ydGVkIGluIEhU
TUw1LiBVc2UgQ1NTIGluc3RlYWQuPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9yZXNvdXJjZXMvdGVzdEltYWdlLnBuZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNh
bm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBl
ID0gaW1hZ2UvcG5nCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Jlc291cmNlcy90ZXN0SW1hZ2UucG5nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvcmVzb3Vy
Y2VzL3Rlc3RJbWFnZS5wbmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Jlc291cmNlcy90ZXN0SW1hZ2UucG5nCSh3
b3JraW5nIGNvcHkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Jlc291cmNlcy90ZXN0SW1hZ2UucG5nCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIworaW1hZ2UvcG5nClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFS
Z0FBQUFnQ0FZQUFBREowR2Y0QUFBQUFYTlNSMElBcnM0YzZRQUFBQWx3U0ZsekFBQUwKRXdBQUN4
TUJBSnFjR0FBQUE2bHBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEeDRPbmh0Y0cx
bGRHRWdlRzFzYm5NNgplRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJbGhOVUNC
RGIzSmxJRFV1TkM0d0lqNEtJQ0FnUEhKa1pqcFNSRVlnCmVHMXNibk02Y21SbVBTSm9kSFJ3T2k4
dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNEsKSUNB
Z0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlLSUNBZ0lDQWdJQ0Fn
SUNBZ2VHMXNibk02ZUcxdwpQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2
SWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwMGFXWm1QU0pvCmRIUndPaTh2Ym5NdVlXUnZZbVV1
WTI5dEwzUnBabVl2TVM0d0x5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZaWGhwWmowaWFIUjAK
Y0RvdkwyNXpMbUZrYjJKbExtTnZiUzlsZUdsbUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOGVHMXdP
azF2WkdsbWVVUmhkR1UrTWpBeApOUzB3Tmkwd00xUXlNVG93TmpvMU5Ed3ZlRzF3T2sxdlpHbG1l
VVJoZEdVK0NpQWdJQ0FnSUNBZ0lEeDRiWEE2UTNKbFlYUnZjbFJ2CmIydytVR2w0Wld4dFlYUnZj
aUF6TGpNdU1qd3ZlRzF3T2tOeVpXRjBiM0pVYjI5c1Bnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwUGNt
bGwKYm5SaGRHbHZiajR4UEM5MGFXWm1Pazl5YVdWdWRHRjBhVzl1UGdvZ0lDQWdJQ0FnSUNBOGRH
bG1aanBEYjIxd2NtVnpjMmx2Ymo0MQpQQzkwYVdabU9rTnZiWEJ5WlhOemFXOXVQZ29nSUNBZ0lD
QWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptCk9sSmxjMjlzZFhScGIy
NVZibWwwUGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBaVW1WemIyeDFkR2x2Ymo0M01qd3ZkR2xtWmpw
WlVtVnoKYjJ4MWRHbHZiajRLSUNBZ0lDQWdJQ0FnUEhScFptWTZXRkpsYzI5c2RYUnBiMjQrTnpJ
OEwzUnBabVk2V0ZKbGMyOXNkWFJwYjI0KwpDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV0VS
cGJXVnVjMmx2Ymo0eU9EQThMMlY0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1ClBnb2dJQ0FnSUNB
Z0lDQThaWGhwWmpwRGIyeHZjbE53WVdObFBqRThMMlY0YVdZNlEyOXNiM0pUY0dGalpUNEtJQ0Fn
SUNBZ0lDQWcKUEdWNGFXWTZVR2w0Wld4WlJHbHRaVzV6YVc5dVBqTXlQQzlsZUdsbU9sQnBlR1Zz
V1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnUEM5eQpaR1k2UkdWelkzSnBjSFJwYjI0K0NpQWdJRHd2
Y21SbU9sSkVSajRLUEM5NE9uaHRjRzFsZEdFK0NnWXB0VFFBQUFxMlNVUkJWSGdCCjdacDd0S1pU
R2NBeHd3eUZpUm1NTVNpNVIxTVdGVFBXVkVaeVdTWDMzQVpsUmxPTGxUK0VpbG9xb3NaYWxkdXNH
YmtzUmtrVElaZkoKVkF3cGx3cURaVVRra3R4am1ESHE5enYyWnMvdWZiL3pmZWQ4am0vTzJjOWF2
N1AzZnA1OWZkNjluM2QvNzh3eXl4UXBIaWdlS0I0bwpIaWdlS0I0b0hpZ2VLQjRvSGlnZUtCNG9I
aWdlS0I0b0hpZ2VLQjRvSGlnZVdHbzlNR2lwblhtWitFRHd3SDRzY2k5WUZlNGJDQXZ1CmIyc2Mz
TjhXTk1EV001YjE3ZzZid0VLNEYrYUY5SGJTMXlES01ESTdoY0xscEM5SFF3ZW4rekMzejhBTStG
VUh6N05NclhpZ1gzbkEKbStkNThOOEdiSnl0ZUV4U2QzUm02OVRpckREbjZaMDZ3VEt2eGg0b041
akcvdWxVNndsTTdDRHdGaklOTG9OSFlWUFlHZmFBWEF4RwpDNExTZkpILzk4Q0txRWFCNThMYjRE
c3Bhekw0U0pnUEw3NlRFeWxqRHl3UGVIdDVDUXdTazJ1V2JwMys4UExvNnh2TVdjR3ZWOWI0CnRh
L1VhNFY1K0l5MzdxdEIzNDV4K3NNbWZEdjgwc2w5K3RObnBUREJQOVZNZEhHTnZxaUxCL3JVQTh2
MTZXajFnL2xONEVpNEZoNkMKVitFeHVBYTJoVmJrV0NyYnozRU5HZzNGNWx2Sy9rZG05ZGFuZkM3
Y0EvNEV1UlcrRGxXKzJnQzlZOGtJV0E5T2hidmhyNkVjN2R0UgpyaE0vWkZydnRMb0tpZjZsSkw5
M2t1OHVtODgxclovYkRHREh3Ry9oR2ZBbjJLNFF4WFYrSDF5ajg3a0Z0b2NxT1JHbGEvdHFNTHJX
CkMrQnhlQmd1aFE5QVQyVVNEYStEWjhHZmlkNTZ0b1JXSks1L2w5Qm9HOUw0M0V5SFZIVFc2cmpE
Nk9NN0VQZVZmdFYvTXlHVkV5bWsKdWg5UmpuUDVRbHF4NUp2M1FMd0t2MG9USDRDTzkzb29pNkNW
RGJObmFQYzhxYitwcTJSL2xQYWQzd0Ftb0hzNjJPNG5uUXNlSU90ZQpEWU1nbFRFVTRqeWQ0N3lr
YkY1eFBkYTV5RUtOM0l6ZU9wTnI3S2w2V1FwM2dmVmZnWW5RaktSek5hQ25rdG8yeE9DQnRYOTli
eW9MCndUV3VEUStDT3YrVkt0cDlkcmJOSlQ3YjZSajArK3NRMjhUVWJ3dzdRUzVwMjl6bXM3MEU3
T01GdUFubWgvSi9TSGVFWmlWZGY1eFQKbXFiN3FDZmpEbVVpZDRCOUxvYS9nTjk0ekJzWVU0bHJU
c2VQK1ZQU2lpWGZ2QWUrUWRVRElIMVR2SSt5enRlNTUwS3pZaCsrSFd6MworWnBHYzRMOThNUytH
dms0bmdjaHltZ3lEMEJWZituR3ZKTTY4K0hMc0E2TUF1Vm9zTzBDR0FhNWZCQ0ZkZy9GeXJteHBq
d08vY3RnCk8vazErQlp1Sk9sY1hWTXFxZTJQR0o0QzM1YnZBWU5LWFA4ZDVMMmRHVFQzaG5mQko4
RkE1engrQUxuTVFxSE5vR2dRT2hQR2czMGIKVkI0RDdRL0I4cEJLYkRzOVZZYjh0MGh0TnhlR0I1
M0pjYURlQTF4MTYwUmRLUWJ1czhHMlY0SGxDTmszcFNmalRxUzEvZnFNUjBJVQpiNHBieFVKSUhk
TWdibjM1Q01SNW1CWnBvd2RtMEpkT2RoTzFJbWRRMlhiWFZEVGFLTmg4Mk9tQm5ocjBidXBjRGtk
aGY3ZGxodlJnCmVpaXJEdmthNkJlQzdZK0FYRHh3MnFibGhtN0tZN0UvQnJZVkQrOUprQVpwaW05
S090ZEdBZVpmdE5qaXpWWnZaRTRqaWVQOGpmeUkKekQ0NzJDL1A5Qlpqa0RBSUhWQmhINDh1OWow
eHM4ZTJlWUR4QU1hYnBldEtaUkNGZjRCOTdwWWFtc2lmRmRwZFdWTzNwK04rTi9UNworNXArYy9W
YW9iNXIyRG8zTGszbFZpTDhPN0d1KzhLZ3cxb2MvTHhRZndkU2J4T3B4Tit4TTFGNk5ZK3lWOGo4
SmlxUzlQYVE5K0RWCitjeGJ6L3lrVGN4NllLOEloVU9pTXFUdkpvMjNwYk16VzNmRkc2bXdHY1Fn
dkFMNTQrRk82TTAzamMvUzNpQ1N5cnhRV0VENmNUQ1kKcG5KdktQaEdycE9MTVZ4WVlaeUR6b0Nn
Tkh1WWRxYXVZejBKcmplVnhSVDhpYTE0TzJ5bjlIVGNhOE1rZkNsTWdibzkxTTY1ZGtSZgpnenRp
Rm05TlloV3kyOExJd0lTM1RDM2x2T2E3NlRlQkErRjdvSGdGUDdncnQrU053YXYrcUtDZlJMcG55
TWRreFpDeHZXOFhidzY1CnhFT1k2eTM3QnY0Y2VJQTJoN3RCTWJpc0RQNzArRE8wS3MvUjREQ1lC
dDdhUGdTdStYZGdJSWdIald6VDhraEZUZCtreWl2dzc2N2MKa24raWZVbnRraVcvdmRUSmd4aldo
ZlhyS21UNmpVTFo1M0o5WnJPb2p4WDdiS2YwZEZ5Zmh5K3BEOE9QWVRLY0R1ZkRJaWp5Tm52QQpR
enNEL05uaVpwV0g0WW1RYjNSNHFWSXB4NksxSHdOTkZBT0h1dnpnZVNqanVOMmw2VnR4VE5KdU5Q
azY4ZHIrS05qM2FVa2xONTA2CmcxcHZ4WmVGZ1RUTy84YXN3MFp6YldTem0wTkR2ODlrZmNhaWg4
Wnhxdzc3ckdBenlOYkpaUmhzLzRlc1FsM2JtYUYrWEd0ZCtzdXMKdis2S1o0VityNnlwMkp0eGg5
RG55ZkJhR01NNUcxZy9BYmw0SHVLYW1yM1Y1WDEwUkxrVHJtckQ4Y1JzT0FUbXdyNndEcXdIVTBI
UgoyYTNLQlRSNEhUYUdqNGJHWHd5cGIveFUvcGtVUGtWKzJRYjRMd0N0eW1JYS9EUTBPcERVWUxB
TmVPTXdxRjRFdlJVM3JrRlZYeXJiCndacGR1YzcvczFxWW9pK1Zac1JncmR3TWpaN1Y3bDIxMnZl
bk4rTyt5alMrQmo1elg2YnVpZmZDTlpDK3RDajJIK21FQURNSmQyNEcKZDRDL2NTK0I5TUJUN0pH
NEdlSmhtMGgrZmRnQlhvRUxJUlcveGNTZkJtTlRReHZ6YmlvRHBSOTlkNEhKb0Z3TTZiZWdMbVV2
L2x5YQp0RjFhQXN5b01HZmY2TTNJUGFIU1ZxUkRtMm5RcGpydEdOZnZXNGVCTDcwbllUQWNCUDFT
T2lIQStLWlZiZ1Bmd2xVeXFFclpoTzY4ClVHY2YwaW5nZW44T3owSXVWd2ZGb2FTcjVNWTJsRDA4
YzBJL1I1SHVHL0xuaExSZGlSdFdXUVQzZCtVNjQ0ODNqU3J4dy9uN2c4RzMKZVROeUE1VzhFYXdB
WDJxbVFaTjE5Sm5pemFKSzJqbXUzOXppL3R3eEd5ek9RM1hkWExJbXBWam5BVzhzdnRtZmhtRkpK
UVBQUE5BVwpOMU5pYmlxN0VyVmVBUHN3ZUptT2d5cFpIZVZUWUIyL0NhUnpvZGdsSS9rN0pPUk54
b0QxWlRSMEovdFRJZFkzTmFpMkt2cmxhUEFtCmxJczNsdmxnMy9saGJUVFhSamJITU9qYVoyKyt3
YnhNKzY5QUdtaThmUmpZN2Z0NnlHVVdDbTNUY3dQbEU0TE5uNWplZkhOWkhzV28KVExrQlpXL0g0
cjdMNVNnVWppZDFCN3NuNDM2YS9xcjJ4NTFoTEY5NnVUeUh3bm5FSUpUYlM3bEpEK3hHdmZoUTNT
eGU4VDE0cjhQUApZQUZvUHgrMmdGYkZ6Um43djdlYnhydGlmejdVZjRMVW4xTGZCamZqdzJBL2J0
SW9ZOGpFdnFzMlVLd1hVdytVdDZmWXhwK0hyY29lCk5MRDlRcmdPcHNJeDRBRmRCTm9lQjROaEtv
M20yc2htSCswSU1JL1FqMEgrTGpnZFRnMTU1L3NrYkFtNXpFS2h2U3JBR09qOUdLdGQKNW9DKytD
SGNCTzZiQ3lDVmpTbkUrbFVCemFCaUlMU096K2tNT0FsUzZjbTRNK25BdGM4RzUzZ3l6QVBIZVFu
MGZ5NW5vb2h6blV2KwptekFocjFUS3pYbmdTS3JwNk9oUU4rTitvYWtQT09yUERycFdrbkZKZTkv
ODNjbTZWTGdLL0ZZVHh6VTF3RndCSXlCS2R3Y3oxa3ZUCm4xQ3d2eGRoNWRUUVpONGJ6QU9Remkz
bTNjVG5nbXZJcGRGY0c5bnNweDBCeGlBeEh2NE9jYjZMeVJzTTFvTXFtWVhTdXJhdGswa1kKSG9Y
WXA2bDc2Vlk0QWxMcExzQlkxdy9EOFNaclh3YnRLbWxsM01sMFlKQkk5N2g5M3dMK3Q0d3FXUlhs
THlCZDEvRlZGWXV1T1ErcwpRcldQUVhwRGlDM1ZiUTdMUlVVZnBJUERtRzRBSDNhN3hNUGlwam1u
bHgydVJYdC91eDhNaDhEMnNDWjBtbFFGaVZGTWNpejR6TnNsCncrbElIMndJdmQwblErbkRvR3N3
WHgwYVNTdmpPcTlOWVJ5czNhalR4TFlPK2ZGZ2NIUlBGaWtlcVBYQUdsaml6V2lyMmxyOXkxQVYK
WVByWENzdHFhajNRMjBoZjIzRXhWSHBnQ3RvaGNEdjRuYWxJOFVDLzlrQUpNSDMzZUwxMngyOENQ
Zm1XMUhjekxTTVZEN1RKQStVMwpYWnNjMlVRM20xSEhqOGZLUlc4a0ErTHZEYXp5T2ZBalo1SGln
ZUtCNG9IaWdlS0I0b0hpZ2VLQjRvSGlnZUtCNG9IaWdZSHFnZjhCCkxTRCs2RUJmSGdVQUFBQUFT
VVZPUks1Q1lJST0KCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254269</attachid>
            <date>2015-06-04 10:25:55 -0700</date>
            <delta_ts>2015-06-04 10:30:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145637-20150604102534.patch</filename>
            <type>text/plain</type>
            <size>20780</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA2LTAzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIxODE4
NzkpOiBTY3JvbGxpbmcgb3JkZXIgb24gcGFnZXMgd2l0aCBmb2N1c2VkIGlmcmFtZSBpcyBicm9r
ZW4uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU2
MzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwNjM1NTgxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHBsYXRmb3JtL21hYy13azIvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvaWZyYW1lX2luX2lmcmFtZS5odG1sCisKKyAgICAgICAgVGhp
cyBwYWdlIHJldmVhbGVkIGEgYnVnIGluIG91ciBSZW5kZXJCb3ggY29kZSBjYXVzZWQgYnkgdGhl
IG1pc21hdGNoIGJldHdlZW4KKyAgICAgICAgb3VyIHNjcm9sbGluZyB1bml0cywgd2hpY2ggYXJl
IGFsbCBpbnRlZ3JhbGx5IHNuYXBwZWQsIHdpdGggb3VyIGNsaWVudCBoZWlnaHQKKyAgICAgICAg
YW5kIHdpZHRocywgd2hpY2ggYXJlIG5vdCBzbmFwcGVkIGF0IGFsbC4gCisgICAgICAgIAorICAg
ICAgICBJbiBjZXJ0YWluIGNhc2VzLCB0aGUgY2xpZW50IGhlaWdodCB3b3VsZCBoYXZlIGEgc21h
bGwgc3VicGl4ZWwgZGlmZmVyZW5jZSBjb21wYXJlZAorICAgICAgICB0byB0aGUgc2Nyb2xsIGhl
aWdodCwgd2hpY2ggd291bGQgY2F1c2UgV2ViS2l0IHRvIGJlbGlldmUgaXQgd2FzIHNjcm9sbGFi
bGUuIFdoZW4KKyAgICAgICAgdGhpcyBoYXBwZW5lZCwgaXQgd291bGQgZ2V0IHN0dWNrIGxhdGNo
ZWQgdG8gdGhpcyBlbGVtZW50IGFuZCBibG9jayBzY3JvbGxpbmcgZXZlbnRzLiAKKworICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNjcm9sbE92ZXJm
bG93TGF5ZXIpOiBVc2Ugcm91bmRUb0ludCBmb3IgY2xpZW50V2lkdGggYW5kIGNsaWVudEhlaWdo
dCwKKyAgICAgICAgcmF0aGVyIHRoYW4gaW50ZWdlciB0cnVuY2F0aW9uLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYW5C
ZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEpOiBOZWVkIHRvIHJvdW5kIGNsaWVudFdpZHRo
CisgICAgICAgIGFuZCBjbGllbnRIZWlnaHQgdG8gY29tcGFyZSB3aXRoIHNjcm9sbFdpZHRoL3Nj
cm9sbEhlaWdodC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6Omhhc1Njcm9sbGFibGVPdmVyZmxvd1gpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aGFzU2Nyb2xsYWJsZU92ZXJmbG93WSk6IERpdHRvLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hcnF1ZWU6OmNvbXB1dGVQb3NpdGlvbik6IFVzZSByb3VuZFRvSW50IGZvciBjbGll
bnRXaWR0aCBhbmQKKyAgICAgICAgY2xpZW50SGVpZ2h0LCByYXRoZXIgdGhhbiBpbnRlZ2VyIHRy
dW5jYXRpb24uCisKIDIwMTUtMDYtMDQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIENsZWFuIHVwIG1fZm9udCBpbnNpZGUgRm9udFBs
YXRmb3JtRGF0YQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDE4NTIwMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDEsNyAr
NTAxLDcgQEAgdm9pZCBGcmFtZTo6c2Nyb2xsT3ZlcmZsb3dMYXllcihSZW5kZXJMYQogICAgIGlu
dCB4ID0gbGF5ZXItPnNjcm9sbFhPZmZzZXQoKTsKICAgICBpbnQgZXhwb3NlTGVmdCA9IGV4cG9z
ZVJlY3QueCgpOwogICAgIGludCBleHBvc2VSaWdodCA9IGV4cG9zZUxlZnQgKyBleHBvc2VSZWN0
LndpZHRoKCk7Ci0gICAgaW50IGNsaWVudFdpZHRoID0gYm94LT5jbGllbnRXaWR0aCgpOworICAg
IGludCBjbGllbnRXaWR0aCA9IHJvdW5kVG9JbnQoYm94LT5jbGllbnRXaWR0aCgpKTsKICAgICBp
ZiAoZXhwb3NlTGVmdCA8PSAwKQogICAgICAgICB4ID0gc3RkOjptYXgoMCwgeCArIGV4cG9zZUxl
ZnQgLSBjbGllbnRXaWR0aCAvIDIpOwogICAgIGVsc2UgaWYgKGV4cG9zZVJpZ2h0ID49IGNsaWVu
dFdpZHRoKQpAQCAtNTEwLDcgKzUxMCw3IEBAIHZvaWQgRnJhbWU6OnNjcm9sbE92ZXJmbG93TGF5
ZXIoUmVuZGVyTGEKICAgICBpbnQgeSA9IGxheWVyLT5zY3JvbGxZT2Zmc2V0KCk7CiAgICAgaW50
IGV4cG9zZVRvcCA9IGV4cG9zZVJlY3QueSgpOwogICAgIGludCBleHBvc2VCb3R0b20gPSBleHBv
c2VUb3AgKyBleHBvc2VSZWN0LmhlaWdodCgpOwotICAgIGludCBjbGllbnRIZWlnaHQgPSBib3gt
PmNsaWVudEhlaWdodCgpOworICAgIGludCBjbGllbnRIZWlnaHQgPSByb3VuZFRvSW50KGJveC0+
Y2xpZW50SGVpZ2h0KCkpOwogICAgIGlmIChleHBvc2VUb3AgPD0gMCkKICAgICAgICAgeSA9IHN0
ZDo6bWF4KDAsIHkgKyBleHBvc2VUb3AgLSBjbGllbnRIZWlnaHQgLyAyKTsKICAgICBlbHNlIGlm
IChleHBvc2VCb3R0b20gPj0gY2xpZW50SGVpZ2h0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDE4NTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzYsNyArODc2LDcgQEAg
Ym9vbCBSZW5kZXJCb3g6OmxvZ2ljYWxTY3JvbGwoU2Nyb2xsTG9naQogCiBib29sIFJlbmRlckJv
eDo6Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gY2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxlZCgpICYmIChzY3JvbGxIZWlnaHQoKSAhPSBj
bGllbnRIZWlnaHQoKSB8fCBzY3JvbGxXaWR0aCgpICE9IGNsaWVudFdpZHRoKCkpOworICAgIHJl
dHVybiBjYW5CZVByb2dyYW1hdGljYWxseVNjcm9sbGVkKCkgJiYgKHNjcm9sbEhlaWdodCgpICE9
IHJvdW5kVG9JbnQoY2xpZW50SGVpZ2h0KCkpIHx8IHNjcm9sbFdpZHRoKCkgIT0gcm91bmRUb0lu
dChjbGllbnRXaWR0aCgpKSk7CiB9CiAKIGJvb2wgUmVuZGVyQm94Ojppc1Njcm9sbGFibGVPclJ1
YmJlcmJhbmRhYmxlQm94KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmgJKHJldmlzaW9uIDE4NTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDYsIDIwMDcsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00NzcsOCArNDc3LDggQEAgcHVibGljOgogICAg
IGJvb2wgc2Nyb2xsc092ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gc2Nyb2xsc092ZXJmbG93WCgp
IHx8IHNjcm9sbHNPdmVyZmxvd1koKTsgfQogICAgIGJvb2wgc2Nyb2xsc092ZXJmbG93WCgpIGNv
bnN0IHsgcmV0dXJuIGhhc092ZXJmbG93Q2xpcCgpICYmIChzdHlsZSgpLm92ZXJmbG93WCgpID09
IE9TQ1JPTEwgfHwgaGFzSG9yaXpvbnRhbFNjcm9sbGJhcldpdGhBdXRvQmVoYXZpb3IoKSk7IH0K
ICAgICBib29sIHNjcm9sbHNPdmVyZmxvd1koKSBjb25zdCB7IHJldHVybiBoYXNPdmVyZmxvd0Ns
aXAoKSAmJiAoc3R5bGUoKS5vdmVyZmxvd1koKSA9PSBPU0NST0xMIHx8IGhhc1ZlcnRpY2FsU2Ny
b2xsYmFyV2l0aEF1dG9CZWhhdmlvcigpKTsgfQotICAgIGJvb2wgaGFzU2Nyb2xsYWJsZU92ZXJm
bG93WCgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbHNPdmVyZmxvd1goKSAmJiBzY3JvbGxXaWR0aCgp
ICE9IGNsaWVudFdpZHRoKCk7IH0KLSAgICBib29sIGhhc1Njcm9sbGFibGVPdmVyZmxvd1koKSBj
b25zdCB7IHJldHVybiBzY3JvbGxzT3ZlcmZsb3dZKCkgJiYgc2Nyb2xsSGVpZ2h0KCkgIT0gY2xp
ZW50SGVpZ2h0KCk7IH0KKyAgICBib29sIGhhc1Njcm9sbGFibGVPdmVyZmxvd1goKSBjb25zdCB7
IHJldHVybiBzY3JvbGxzT3ZlcmZsb3dYKCkgJiYgc2Nyb2xsV2lkdGgoKSAhPSByb3VuZFRvSW50
KGNsaWVudFdpZHRoKCkpOyB9CisgICAgYm9vbCBoYXNTY3JvbGxhYmxlT3ZlcmZsb3dZKCkgY29u
c3QgeyByZXR1cm4gc2Nyb2xsc092ZXJmbG93WSgpICYmIHNjcm9sbEhlaWdodCgpICE9IHJvdW5k
VG9JbnQoY2xpZW50SGVpZ2h0KCkpOyB9CiAKICAgICBib29sIHVzZXNDb21wb3NpdGVkU2Nyb2xs
aW5nKCkgY29uc3Q7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWFycXVlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1hcnF1ZWUuY3BwCShyZXZpc2lvbiAxODUyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWFycXVlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBp
bnQgUmVuZGVyTWFycXVlZTo6Y29tcHV0ZVBvc2l0aW9uKEVNYXJxCiAgICAgfQogICAgIGVsc2Ug
ewogICAgICAgICBpbnQgY29udGVudEhlaWdodCA9IGJveC0+bGF5b3V0T3ZlcmZsb3dSZWN0KCku
bWF4WSgpIC0gYm94LT5ib3JkZXJUb3AoKSArIGJveC0+cGFkZGluZ0JvdHRvbSgpOwotICAgICAg
ICBpbnQgY2xpZW50SGVpZ2h0ID0gYm94LT5jbGllbnRIZWlnaHQoKTsKKyAgICAgICAgaW50IGNs
aWVudEhlaWdodCA9IHJvdW5kVG9JbnQoYm94LT5jbGllbnRIZWlnaHQoKSk7CiAgICAgICAgIGlm
IChkaXIgPT0gTVVQKSB7CiAgICAgICAgICAgICBpZiAoc3RvcEF0Q29udGVudEVkZ2UpCiAgICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1pbihjb250ZW50SGVpZ2h0IC0gY2xpZW50SGVpZ2h0
LCAwKTsKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIFJlbmRlck1hcnF1ZWU6OnRpbWVyRmlyZWQo
KQogICAgICAgICAgICAgYWRkSW5jcmVtZW50ID0gIWFkZEluY3JlbWVudDsKICAgICAgICAgfQog
ICAgICAgICBib29sIHBvc2l0aXZlID0gcmFuZ2UgPiAwOwotICAgICAgICBpbnQgY2xpZW50U2l6
ZSA9IChpc0hvcml6b250YWwoKSA/IG1fbGF5ZXItPnJlbmRlckJveCgpLT5jbGllbnRXaWR0aCgp
IDogbV9sYXllci0+cmVuZGVyQm94KCktPmNsaWVudEhlaWdodCgpKTsKKyAgICAgICAgaW50IGNs
aWVudFNpemUgPSAoaXNIb3Jpem9udGFsKCkgPyByb3VuZFRvSW50KG1fbGF5ZXItPnJlbmRlckJv
eCgpLT5jbGllbnRXaWR0aCgpKSA6IHJvdW5kVG9JbnQobV9sYXllci0+cmVuZGVyQm94KCktPmNs
aWVudEhlaWdodCgpKSk7CiAgICAgICAgIGludCBpbmNyZW1lbnQgPSBhYnMoaW50VmFsdWVGb3JM
ZW5ndGgobV9sYXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLm1hcnF1ZWVJbmNyZW1lbnQoKSwgY2xp
ZW50U2l6ZSkpOwogICAgICAgICBpbnQgY3VycmVudFBvcyA9IChpc0hvcml6b250YWwoKSA/IG1f
bGF5ZXItPnNjcm9sbFhPZmZzZXQoKSA6IG1fbGF5ZXItPnNjcm9sbFlPZmZzZXQoKSk7CiAgICAg
ICAgIG5ld1BvcyA9ICBjdXJyZW50UG9zICsgKGFkZEluY3JlbWVudCA/IGluY3JlbWVudCA6IC1p
bmNyZW1lbnQpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1MjAwKQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDYtMDMgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjE4
MTg3OSk6IFNjcm9sbGluZyBvcmRlciBvbiBwYWdlcyB3aXRoIGZvY3VzZWQgaWZyYW1lIGlzIGJy
b2tlbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NTYzNworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjA2MzU1ODE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL2lmcmFtZV9pbl9pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2lmcmFt
ZV9pbl9pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9yZXNvdXJjZXMvaW5uZXJfY29udGVudC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Jlc291
cmNlcy90ZXN0Q29udGVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sy
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Jlc291cmNlcy90ZXN0SW1hZ2UucG5nOiBBZGRlZC4K
KwogMjAxNS0wNi0wNCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IGNzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItd2l0aC1tYXNrLmh0bWwgaXMg
bWlzc2luZyB0aGUgbWFzayBsYXllci4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvaWZyYW1lX2luX2lmcmFtZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9pZnJhbWVfaW5faWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvaWZy
YW1lX2luX2lmcmFtZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNyBA
QAorSW5uZXIgRnJhbWU6CisKK1Rlc3RzIHRoYXQgaWZyYW1lIGRvZXNuJ3QgcGFzcyB3aGVlbCBl
dmVudHMgdG8gbWFpbiBmcmFtZSB3aGVuIHNjcm9sbGluZyBpbnNpZGUgaWZyYW1lCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKK1BBU1MgUGFnZSBkaWQgbm90IHJlY2VpdmUgd2hlZWwgZXZlbnRz
LgorUEFTUyBpZnJhbWUgZGlkIG5vdCByZWNlaXZlIHdoZWVsIGV2ZW50cy4KK1BBU1MgaWZyYW1l
IHJlY2VpdmVkIHdoZWVsIGV2ZW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2lmcmFtZV9pbl9pZnJhbWUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2lm
cmFtZV9pbl9pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvaWZyYW1lX2luX2lmcmFtZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+aUZyYW1lIGluIGlGcmFtZSBUZXN0PC90aXRsZT4K
KyAgICAgICAgPHN0eWxlPgorICAgICAgICAqIHsKKyAgICAgICAgICAgIGJveC1zaXppbmc6IGJv
cmRlci1ib3g7CisgICAgICAgIH0KKworICAgICAgICAuY29udGFpbmVyIHsKKyAgICAgICAgICAg
IHdpZHRoOjEwMCU7CisgICAgICAgICAgICBvdmVyZmxvdzphdXRvOworICAgICAgICAgICAgaGVp
Z2h0OmF1dG87CisgICAgICAgIH0KKworICAgICAgICAuaW5uZXJjb250YWluZXIgeworICAgICAg
ICAgICAgaGVpZ2h0OjEwMCU7CisgICAgICAgICAgICB3aWR0aDo1MCU7CisgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorPHNj
cmlwdD4KKwordmFyIGlmcmFtZVRhcmdldDsKK3ZhciBpbm5lcklGcmFtZVRhcmdldDsKK3ZhciBw
YWdlU2Nyb2xsUG9zaXRpb25CZWZvcmU7Cit2YXIgaUZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmU7
Cit2YXIgY29udGludWVDb3VudCA9IDU7CisKK2Z1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsKCkKK3sK
KyAgICAvLyBUaGUgSUZyYW1lIHNob3VsZCBub3QgaGF2ZSBzY3JvbGxlZCBhdCBhbGwuCisgICAg
dmFyIHBhZ2VTY3JvbGxQb3NpdGlvbkFmdGVyID0gZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7Cisg
ICAgdmFyIGlGcmFtZVNjcm9sbFBvc2l0aW9uQWZ0ZXIgPSB3aW5kb3cuZnJhbWVzWyd0YXJnZXQn
XS5kb2N1bWVudC5ib2R5LnNjcm9sbFRvcDsKKyAgICB2YXIgaW5uZXJJRnJhbWVTY3JvbGxQb3Np
dGlvbkFmdGVyID0gaWZyYW1lVGFyZ2V0LmNvbnRlbnRXaW5kb3cuZnJhbWVzWyd0YXJnZXQnXS5k
b2N1bWVudC5ib2R5LnNjcm9sbFRvcDsKKworICAgIGlmIChwYWdlU2Nyb2xsUG9zaXRpb25CZWZv
cmUgIT0gcGFnZVNjcm9sbFBvc2l0aW9uQWZ0ZXIpCisgICAgICAgIHRlc3RGYWlsZWQoIlBhZ2Ug
cmVjZWl2ZWQgd2hlZWwgZXZlbnRzLiIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdFBhc3NlZCgi
UGFnZSBkaWQgbm90IHJlY2VpdmUgd2hlZWwgZXZlbnRzLiIpOworCisgICAgaWYgKGlGcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlICE9IGlGcmFtZVNjcm9sbFBvc2l0aW9uQWZ0ZXIpCisgICAgICAg
IHRlc3RGYWlsZWQoImlmcmFtZSByZWNlaXZlZCB3aGVlbCBldmVudHMuIik7CisgICAgZWxzZQor
ICAgICAgICB0ZXN0UGFzc2VkKCJpZnJhbWUgZGlkIG5vdCByZWNlaXZlIHdoZWVsIGV2ZW50cy4i
KTsKKworICAgIGlmIChpbm5lcklGcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlICE9IGlubmVySUZy
YW1lU2Nyb2xsUG9zaXRpb25BZnRlcikKKyAgICAgICAgdGVzdFBhc3NlZCgiaWZyYW1lIHJlY2Vp
dmVkIHdoZWVsIGV2ZW50cy4iKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoImlmcmFt
ZSBkaWQgbm90IHJlY2VpdmUgd2hlZWwgZXZlbnRzLiIpOworCisgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHNjcm9sbFRlc3Qo
KQoreworICAgIHBhZ2VTY3JvbGxQb3NpdGlvbkJlZm9yZSA9IGRvY3VtZW50LmJvZHkuc2Nyb2xs
VG9wOworCisgICAgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rhcmdl
dCcpOworCisgICAgdmFyIGlGcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzWyd0YXJnZXQnXS5kb2N1
bWVudC5ib2R5OworICAgIGlGcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlID0gaUZyYW1lQm9keS5z
Y3JvbGxUb3A7CisKKyAgICBpbm5lcklGcmFtZVRhcmdldCA9IGlmcmFtZVRhcmdldC5jb250ZW50
V2luZG93LmZyYW1lc1sndGFyZ2V0J10uZG9jdW1lbnQuYm9keTsKKyAgICBpbm5lcklGcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlID0gaW5uZXJJRnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworCisgICAg
Ly8gU2Nyb2xsIHRoZSAjc291cmNlIHVudGlsIHdlIHJlYWNoIHRoZSAjdGFyZ2V0LgorICAgIHZh
ciBzdGFydFBvc1ggPSBNYXRoLnJvdW5kKGlmcmFtZVRhcmdldC5vZmZzZXRMZWZ0KSArIDIwOwor
ICAgIHZhciBzdGFydFBvc1kgPSBNYXRoLnJvdW5kKGlmcmFtZVRhcmdldC5vZmZzZXRUb3ApICsg
ODA7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAtMSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEs
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgLTEsICdub25l
JywgJ2JlZ2luJyk7CisgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIC0xLCAnbm9uZScsICdjb250aW51ZScpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAtMSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgLTEsICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIC0xLCAnbm9uZScsICdj
b250aW51ZScpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoY2hlY2tGb3JTY3JvbGwpOworfQorCitmdW5jdGlvbiBzZXR1
cFRvcExldmVsKCkKK3sKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKworICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
c2V0VGltZW91dChzY3JvbGxUZXN0LCAwKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKyAgICAgICAg
PGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlubmVyY29u
dGFpbmVyIj4KKyAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDoxMDAlOyI+CisgICAg
ICAgICAgICAgICAgICAgIDxkaXY+SW5uZXIgRnJhbWU6PC9kaXY+CisgICAgICAgICAgICAgICAg
ICAgIDxkaXYgc3R5bGU9ImhlaWdodDo5MiU7Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InRhcmdldCIgbmFtZT0idGFyZ2V0IiBzcmM9InJlc291cmNlcy90ZXN0Q29udGVu
dC5odG1sIiBvbmxvYWQ9InNldHVwVG9wTGV2ZWwoKTsiPjwvaWZyYW1lPgorICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGlmcmFtZSBkb2Vz
bid0IHBhc3Mgd2hlZWwgZXZlbnRzIHRvIG1haW4gZnJhbWUgd2hlbiBzY3JvbGxpbmcgaW5zaWRl
IGlmcmFtZSIpOworICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Jlc291cmNlcy9pbm5lcl9j
b250ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9yZXNvdXJjZXMvaW5uZXJfY29udGVudC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9yZXNvdXJjZXMvaW5uZXJfY29udGVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4tVVMiPgorICAgIDxo
ZWFkPgorICAgICAgICA8dGl0bGU+SW5uZXIgaUZyYW1lIEV4YW1wbGU8L3RpdGxlPgorICAgICAg
ICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgaW1nIHsK
KyAgICAgICAgICAgIGRpc3BsYXk6YmxvY2s7CisgICAgICAgICAgICBtYXgtd2lkdGg6MTAwJTsK
KyAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyBtaW4taGVpZ2h0OiAxMDAlOyB0b3A6IDBweDsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJvdmVyZmxvdzphdXRvOyI+CisgICAgICAgICAgICA8aW1nIHNyYz0i
dGVzdEltYWdlLnBuZyI+CisgICAgICAgICAgICA8ZGl2PlRFU1QgQ0FTRSBURVNUIENBU0UgVEVT
VCBDQVNFIFRFU1QgQ0FTRTwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBzdHls
ZT0ib3ZlcmZsb3c6YXV0bzsiPgorICAgICAgICAgICAgPGgxPlRFU1QgSEVBRElORzwvaDE+Cisg
ICAgICAgICAgICA8cD5UZXN0IHBhcmFncmFwaC48L3A+CisgICAgICAgICAgICA8ZGl2PlRFU1Qg
QlVUVE9OIDE8L2Rpdj4KKyAgICAgICAgICAgIDxkaXY+VEVTVCBCVVRUT04gMjwvZGl2PiAgICAg
IAorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9yZXNvdXJjZXMvdGVzdENvbnRlbnQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Jlc291
cmNlcy90ZXN0Q29udGVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9yZXNvdXJjZXMvdGVzdENvbnRlbnQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+CisKKzxwPkFuIGlmcmFtZSB3aGVyZSBzY3JvbGxiYXJzIGFyZSBhbHdheXMg
c2hvd246PC9wPgorPGlmcmFtZSBpZD0idGFyZ2V0IiBuYW1lPSJ0YXJnZXQiIHNyYz0iLi9pbm5l
cl9jb250ZW50Lmh0bWwiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiBzY3JvbGxpbmc9InllcyI+
CisgIDxwPllvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGlmcmFtZXMuPC9wPgorPC9pZnJh
bWU+CisKKzxwPkFuIGlmcmFtZSB3aGVyZSBzY3JvbGxiYXJzIGFyZSBuZXZlciBzaG93bjo8L3A+
Cis8aWZyYW1lIHNyYz0iLi9pbm5lcl9jb250ZW50Lmh0bWwiIHdpZHRoPSIyMDAiIGhlaWdodD0i
MjAwIiBzY3JvbGxpbmc9Im5vIj4KKyAgPHA+WW91ciBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQg
aWZyYW1lcy48L3A+Cis8L2lmcmFtZT4KKworPHA+VGhlIHNjcm9sbGluZyBhdHRyaWJ1dGUgaXMg
bm90IHN1cHBvcnRlZCBpbiBIVE1MNS4gVXNlIENTUyBpbnN0ZWFkLjwvcD4KKworPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvcmVzb3VyY2VzL3Rlc3RJbWFn
ZS5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkg
dHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9yZXNvdXJjZXMvdGVzdEltYWdlLnBu
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Jlc291cmNlcy90ZXN0SW1hZ2UucG5nCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9yZXNvdXJj
ZXMvdGVzdEltYWdlLnBuZwkod29ya2luZyBjb3B5KQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9yZXNvdXJj
ZXMvdGVzdEltYWdlLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAg
KzEgIyMKK2ltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CgppVkJPUncw
S0dnb0FBQUFOU1VoRVVnQUFBUmdBQUFBZ0NBWUFBQURKMEdmNEFBQUFBWE5TUjBJQXJzNGM2UUFB
QUFsd1NGbHpBQUFMCkV3QUFDeE1CQUpxY0dBQUFBNmxwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0
YlhBQUFBQUFBRHg0T25odGNHMWxkR0VnZUcxc2JuTTYKZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhp
SUhnNmVHMXdkR3M5SWxoTlVDQkRiM0psSURVdU5DNHdJajRLSUNBZ1BISmtaanBTUkVZZwplRzFz
Ym5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXpl
VzUwWVhndGJuTWpJajRLCklDQWdJQ0FnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZk
WFE5SWlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmVHMXcKUFNKb2RIUndPaTh2Ym5NdVlXUnZZ
bVV1WTI5dEwzaGhjQzh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cDBhV1ptUFNKbwpk
SFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM1JwWm1Zdk1TNHdMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VH
MXNibk02WlhocFpqMGlhSFIwCmNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5bGVHbG1MekV1TUM4aVBn
b2dJQ0FnSUNBZ0lDQThlRzF3T2sxdlpHbG1lVVJoZEdVK01qQXgKTlMwd05pMHdNMVF5TVRvd05q
bzFORHd2ZUcxd09rMXZaR2xtZVVSaGRHVStDaUFnSUNBZ0lDQWdJRHg0YlhBNlEzSmxZWFJ2Y2xS
dgpiMncrVUdsNFpXeHRZWFJ2Y2lBekxqTXVNand2ZUcxd09rTnlaV0YwYjNKVWIyOXNQZ29nSUNB
Z0lDQWdJQ0E4ZEdsbVpqcFBjbWxsCmJuUmhkR2x2Ymo0eFBDOTBhV1ptT2s5eWFXVnVkR0YwYVc5
dVBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwRGIyMXdjbVZ6YzJsdmJqNDEKUEM5MGFXWm1Pa052YlhC
eVpYTnphVzl1UGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBTWlhOdmJIVjBhVzl1Vlc1cGRENHlQQzkw
YVdabQpPbEpsYzI5c2RYUnBiMjVWYm1sMFBnb2dJQ0FnSUNBZ0lDQThkR2xtWmpwWlVtVnpiMngx
ZEdsdmJqNDNNand2ZEdsbVpqcFpVbVZ6CmIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2
V0ZKbGMyOXNkWFJwYjI0K056SThMM1JwWm1ZNldGSmxjMjlzZFhScGIyNCsKQ2lBZ0lDQWdJQ0Fn
SUR4bGVHbG1PbEJwZUdWc1dFUnBiV1Z1YzJsdmJqNHlPREE4TDJWNGFXWTZVR2w0Wld4WVJHbHRa
VzV6YVc5dQpQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcERiMnh2Y2xOd1lXTmxQakU4TDJWNGFXWTZR
MjlzYjNKVGNHRmpaVDRLSUNBZ0lDQWdJQ0FnClBHVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQ
ak15UEM5bGVHbG1PbEJwZUdWc1dVUnBiV1Z1YzJsdmJqNEtJQ0FnSUNBZ1BDOXkKWkdZNlJHVnpZ
M0pwY0hScGIyNCtDaUFnSUR3dmNtUm1PbEpFUmo0S1BDOTRPbmh0Y0cxbGRHRStDZ1lwdFRRQUFB
cTJTVVJCVkhnQgo3WnA3dEtaVEdjQXh3d3lGaVJtTU1TaTVSMU1XRlRQV1ZFWnlXU1gzM0FabFJs
T0xsVCtFaWxvcW9zWmFsZHVzR2Jrc1Jra1RJWmZKClZBd3Bsd3FEWlVUa2t0eGptREhxOXp2Mlpz
L3VmYi96ZmVkOGptL08yYzlhdjdQM2ZwNTlmZDY5bjNkLzc4d3l5eFFwSGlnZUtCNG8KSGlnZUtC
NG9IaWdlS0I0b0hpZ2VLQjRvSGlnZUtCNG9IaWdlS0I0b0hpZ2VXR285TUdpcG5YbVorRUR3d0g0
c2NpOVlGZTRiQ0F2dQpiMnNjM044V05NRFdNNWIxN2c2YndFSzRGK2FGOUhiUzF5REtNREk3aGNM
bHBDOUhRd2VuK3pDM3o4QU0rRlVIejdOTXJYaWdYM25BCm0rZDU4TjhHYkp5dGVFeFNkM1JtNjlU
aXJERG42WjA2d1RLdnhoNG9ONWpHL3VsVTZ3bE03Q0R3RmpJTkxvTkhZVlBZR2ZhQVhBeEcKQzRM
U2ZKSC85OENLcUVhQjU4TGI0RHNwYXpMNFNKZ1BMNzZURXlsakR5d1BlSHQ1Q1F3U2sydVdicDMr
OFBMbzZ4dk1XY0d2VjliNAp0YS9VYTRWNStJeTM3cXRCMzQ1eCtzTW1mRHY4MHNsOSt0Tm5wVERC
UDlWTWRIR052cWlMQi9yVUE4djE2V2oxZy9sTjRFaTRGaDZDClYrRXh1QWEyaFZia1dDcmJ6M0VO
R2czRjVsdksva2RtOWRhbmZDN2NBLzRFdVJXK0RsVysyZ0M5WThrSVdBOU9oYnZocjZFYzdkdFIK
cmhNL1pGcnZ0TG9LaWY2bEpMOTNrdTh1bTg4MXJaL2JER0RId0cvaEdmQW4ySzRReFhWK0gxeWo4
N2tGdG9jcU9SR2xhL3RxTUxyVwpDK0J4ZUJndWhROUFUMlVTRGErRFo4R2ZpZDU2dG9SV0pLNS9s
OUJvRzlMNDNFeUhWSFRXNnJqRDZPTTdFUGVWZnRWL015R1ZFeW1rCnVoOVJqblA1UWxxeDVKdjNR
THdLdjBvVEg0Q085M29vaTZDVkRiTm5hUGM4cWIrcHEyUi9sUGFkM3dBbW9IczYyTzRublFzZUlP
dGUKRFlNZ2xURVU0anlkNDd5a2JGNXhQZGE1eUVLTjNJemVPcE5yN0tsNldRcDNnZlZmZ1luUWpL
UnpOYUNua3RvMnhPQ0J0WDk5YnlvTAp3VFd1RFErQ092K1ZLdHA5ZHJiTkpUN2I2UmowKytzUTI4
VFVid3c3UVM1cDI5em1zNzBFN09NRnVBbm1oL0ovU0hlRVppVmRmNXhUCm1xYjdxQ2ZqRG1VaWQ0
QjlMb2EvZ045NHpCc1lVNGxyVHNlUCtWUFNpaVhmdkFlK1FkVURJSDFUdkkreXp0ZTU1MEt6WWgr
K0hXejMKK1pwR2M0TDk4TVMrR3ZrNG5nY2h5bWd5RDBCVmYrbkd2Sk02OCtITHNBNk1BdVZvc08w
Q0dBYTVmQkNGZGcvRnlybXhwandPL2N0ZwpPL2sxK0JadUpPbGNYVk1xcWUyUEdKNEMzNWJ2QVlO
S1hQOGQ1TDJkR1RUM2huZkJKOEZBNXp4K0FMbk1RcUhOb0dnUU9oUEdnMzBiClZCNEQ3US9COHBC
S2JEczlWWWI4dDBodE54ZUdCNTNKY2FEZUExeDE2MFJkS1FidXM4RzJWNEhsQ05rM3BTZmpUcVMx
L2ZxTVIwSVUKYjRwYnhVSklIZE1nYm4zNUNNUjVtQlpwb3dkbTBKZE9kaE8xSW1kUTJYYlhWRFRh
S05oODJPbUJuaHIwYnVwY0RrZGhmN2RsaHZSZwplaWlyRHZrYTZCZUM3WStBWER4dzJxYmxobTdL
WTdFL0JyWVZEKzlKa0FacGltOUtPdGRHQWVaZnROaml6Vlp2WkU0amllUDhqZnlJCnpENDcyQy9Q
OUJaamtEQUlIVkJoSDQ4dTlqMHhzOGUyZVlEeEFNYWJwZXRLWlJDRmY0Qjk3cFlhbXNpZkZkcGRX
Vk8zcCtOK04vVDcKKzVwK2MvVmFvYjVyMkRvM0xrM2xWaUw4TzdHdSs4S2d3MW9jL0x4UWZ3ZFNi
eE9weE4reE0xRjZOWSt5VjhqOEppcVM5UGFROStEVgorY3hiei95a1RjeDZZSzhJaFVPaU1xVHZK
bzIzcGJNelczZkZHNm13R2NRZ3ZBTDU0K0ZPNk0wM2pjL1MzaUNTeXJ4UVdFRDZjVENZCnBuSnZL
UGhHcnBPTE1WeFlZWnlEem9DZ05IdVlkcWF1WXowSnJqZVZ4UlQ4aWExNE8yeW45SFRjYThNa2ZD
bE1nYm85MU02NWRrUmYKZ3p0aUZtOU5ZaFd5MjhMSXdJUzNUQzNsdk9hNzZUZUJBK0Y3b0hnRlA3
Z3J0K1NOd2F2K3FLQ2ZSTHBueU1ka3haQ3h2VzhYYnc2NQp4RU9ZNnkzN0J2NGNlSUEyaDd0Qk1i
aXNEUDcwK0RPMEtzL1I0RENZQnQ3YVBnU3UrWGRnSUlnSGpXelQ4a2hGVGQra3lpdnc3NjdjCmtu
K2lmVW50a2lXL3ZkVEpneGpXaGZYckttVDZqVUxaNTNKOVpyT29qeFg3YktmMGRGeWZoeStwRDhP
UFlUS2NEdWZESWlqeU5udkEKUXpzRC9ObmlacFdINFltUWIzUjRxVklweDZLMUh3Tk5GQU9IdXZ6
Z2VTamp1TjJsNlZ0eFROSnVOUGs2OGRyK0tOajNhVWtsTjUwNgpnMXB2eFplRmdUVE8vOGFzdzBa
emJXU3ptME5Edjg5a2ZjYWloOFp4cXc3N3JHQXp5TmJKWlJocy80ZXNRbDNibWFGK1hHdGQrc3Vz
CnYrNktaNFYrcjZ5cDJKdHhoOURueWZCYUdNTTVHMWcvQWJsNEh1S2FtcjNWNVgxMFJMa1RybXJE
OGNSc09BVG13cjZ3RHF3SFUwSFIKMmEzS0JUUjRIVGFHajRiR1h3eXBiL3hVL3BrVVBrVisyUWI0
THdDdHltSWEvRFEwT3BEVVlMQU5lT013cUY0RXZSVTNya0ZWWHlyYgp3WnBkdWM3L3MxcVlvaStW
WnNSZ3Jkd01qWjdWN2wyMTJ2ZW5OK08reWpTK0JqNXpYNmJ1aWZmQ05aQyt0Q2oySCttRUFETUpk
MjRHCmQ0Qy9jUytCOU1CVDdKRzRHZUpobTBoK2ZkZ0JYb0VMSVJXL3hjU2ZCbU5UUXh2emJpb0Rw
Ujk5ZDRISm9Gd002YmVnTG1Vdi9seWEKdEYxYUFzeW9NR2ZmNk0zSVBhSFNWcVJEbTJuUXBqcnRH
TmZ2VzRlQkw3MG5ZVEFjQlAxU09pSEErS1pWYmdQZndsVXlxRXJaaE82OApVR2NmMGluZ2VuOE96
MEl1VndmRm9hU3I1TVkybEQwOGMwSS9SNUh1Ry9MbmhMUmRpUnRXV1FUM2QrVTY0NDgzalNyeHcv
bjdnOEczCmVUTnlBNVc4RWF3QVgycW1RWk4xOUpuaXphSksyam11Mzl6aS90d3hHeXpPUTNYZFhM
SW1wVmpuQVc4c3Z0bWZobUZKSlFQUFBOQVcKTjFOaWJpcTdFclZlQVBzd2VKbU9neXBaSGVWVFlC
Mi9DYVJ6b2RnbEkvazdKT1JOeG9EMVpUUjBKL3RUSWRZM05haTJLdnJsYVBBbQpsSXMzbHZsZzMv
bGhiVFRYUmpiSE1PamFaMisrd2J4TSs2OUFHbWk4ZlJqWTdmdDZ5R1VXQ20zVGN3UGxFNExObjVq
ZWZITlpIc1dvClRMa0JaVy9INHI3TDVTZ1VqaWQxQjdzbjQzNmEvcXIyeDUxaExGOTZ1VHlId25u
RUlKVGJTN2xKRCt4R3ZmaFEzU3hlOFQxNHI4UFAKWUFGb1B4KzJnRmJGelJuN3Y3ZWJ4cnRpZno3
VWY0TFVuMUxmQmpmancyQS9idElvWThqRXZxczJVS3dYVXcrVXQ2Zll4cCtIcmNvZQpOTEQ5UXJn
T3BzSXg0QUZkQk5vZUI0TmhLbzNtMnNobUgrMElNSS9RajBIK0xqZ2RUZzE1NS9za2JBbTV6RUto
dlNyQUdPajlHS3RkCjVvQysrQ0hjQk82YkN5Q1ZqU25FK2xVQnphQmlJTFNPeitrTU9BbFM2Y200
TStuQXRjOEc1M2d5ekFQSGVRbjBmeTVub29oem5VdisKbXpBaHIxVEt6WG5nU0tycDZPaFFOK04r
b2FrUE9PclBEcnBXa25GSmU5LzgzY202VkxnSy9GWVR4elUxd0Z3Qkl5Qktkd2N6MWt2VApuMUN3
dnhkaDVkVFFaTjRiekFPUXppM20zY1RuZ212SXBkRmNHOW5zcHgwQnhpQXhIdjRPY2I2THlSc00x
b01xbVlYU3VyYXRrMGtZCkhvWFlwNmw3NlZZNEFsTHBMc0JZMXcvRDhTWnJYd2J0S21sbDNNbDBZ
SkJJOTdoOTN3TCt0NHdxV1JYbEx5QmQxL0ZWRll1dU9RK3MKUXJXUFFYcERpQzNWYlE3TFJVVWZw
SVBEbUc0QUgzYTd4TVBpcGptbmx4MnVSWHQvdXg4TWg4RDJzQ1owbWxRRmlWRk1jaXo0ek5zbAp3
K2xJSDJ3SXZkMG5RK25Eb0dzd1h4MGFTU3ZqT3E5TllSeXMzYWpUeExZTytmRmdjSFJQRmlrZXFQ
WEFHbGppeldpcjJscjl5MUFWCllQclhDc3RxYWozUTIwaGYyM0V4VkhwZ0N0b2hjRHY0bmFsSThV
Qy85a0FKTUgzM2VMMTJ4MjhDUGZtVzFIY3pMU01WRDdUSkErVTMKWFpzYzJVUTNtMUhIajhmS1JX
OGtBK0x2RGF6eU9mQWpaNUhpZ2VLQjRvSGlnZUtCNG9IaWdlS0I0b0hpZ2VLQjRvSGlnWUhxZ2Y4
QgpMU0QrNkVCZkhnVUFBQUFBU1VWT1JLNUNZSUk9Cgo=
</data>
<flag name="review"
          id="279249"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>