<?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>103355</bug_id>
          
          <creation_ts>2012-11-26 21:00:45 -0800</creation_ts>
          <short_desc>Fix gesture scrolling when the target-element of scroll-begin is removed</short_desc>
          <delta_ts>2013-01-10 10:09:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sadrul Habib Chowdhury">sadrul</reporter>
          <assigned_to name="Sadrul Habib Chowdhury">sadrul</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>rjkroege</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>776278</commentid>
    <comment_count>0</comment_count>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-11-26 21:00:45 -0800</bug_when>
    <thetext>Fix gesture scrolling when the target-element of scroll-begin is removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776283</commentid>
    <comment_count>1</comment_count>
      <attachid>176161</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-11-26 21:07:38 -0800</bug_when>
    <thetext>Created attachment 176161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776293</commentid>
    <comment_count>2</comment_count>
      <attachid>176161</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-26 21:14:20 -0800</bug_when>
    <thetext>Comment on attachment 176161
Patch

Attachment 176161 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14991828</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776301</commentid>
    <comment_count>3</comment_count>
      <attachid>176161</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-26 21:21:15 -0800</bug_when>
    <thetext>Comment on attachment 176161
Patch

Attachment 176161 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14985971</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776309</commentid>
    <comment_count>4</comment_count>
      <attachid>176166</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-11-26 21:31:35 -0800</bug_when>
    <thetext>Created attachment 176166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776590</commentid>
    <comment_count>5</comment_count>
      <attachid>176166</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 03:55:48 -0800</bug_when>
    <thetext>Comment on attachment 176166
Patch

Attachment 176166 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15010123

New failing tests:
fast/events/touch/gesture/touch-gesture-scroll-iframe.html
platform/chromium/plugins/gesture-events.html
platform/chromium/plugins/gesture-events-scrolled.html
fast/events/touch/gesture/touch-gesture-scroll-page.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776737</commentid>
    <comment_count>6</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-11-27 07:37:12 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 176166 [details])
&gt; Attachment 176166 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/15010123
&gt; 
&gt; New failing tests:
&gt; fast/events/touch/gesture/touch-gesture-scroll-iframe.html
&gt; platform/chromium/plugins/gesture-events.html
&gt; platform/chromium/plugins/gesture-events-scrolled.html
&gt; fast/events/touch/gesture/touch-gesture-scroll-page.html

Look like real failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776825</commentid>
    <comment_count>7</comment_count>
      <attachid>176281</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-11-27 09:03:54 -0800</bug_when>
    <thetext>Created attachment 176281
Changed the logic a little bit to fix the failing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776828</commentid>
    <comment_count>8</comment_count>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-11-27 09:05:45 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 176166 [details] [details])
&gt; &gt; Attachment 176166 [details] [details] did not pass chromium-ews (chromium-xvfb):
&gt; &gt; Output: http://queues.webkit.org/results/15010123
&gt; &gt; 
&gt; &gt; New failing tests:
&gt; &gt; fast/events/touch/gesture/touch-gesture-scroll-iframe.html
&gt; &gt; platform/chromium/plugins/gesture-events.html
&gt; &gt; platform/chromium/plugins/gesture-events-scrolled.html
&gt; &gt; fast/events/touch/gesture/touch-gesture-scroll-page.html
&gt; 
&gt; Look like real failures.

Indeed :(

I changed the logic to do essentially the same thing, but a bit differently, and the new function will now return the same node if there is no such scrollable node in the document. This fixes the tests. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777422</commentid>
    <comment_count>9</comment_count>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-11-27 17:51:00 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; (From update of attachment 176166 [details] [details] [details])
&gt; &gt; &gt; Attachment 176166 [details] [details] [details] did not pass chromium-ews (chromium-xvfb):
&gt; &gt; &gt; Output: http://queues.webkit.org/results/15010123
&gt; &gt; &gt; 
&gt; &gt; &gt; New failing tests:
&gt; &gt; &gt; fast/events/touch/gesture/touch-gesture-scroll-iframe.html
&gt; &gt; &gt; platform/chromium/plugins/gesture-events.html
&gt; &gt; &gt; platform/chromium/plugins/gesture-events-scrolled.html
&gt; &gt; &gt; fast/events/touch/gesture/touch-gesture-scroll-page.html
&gt; &gt; 
&gt; &gt; Look like real failures.
&gt; 
&gt; Indeed :(
&gt; 
&gt; I changed the logic to do essentially the same thing, but a bit differently, and the new function will now return the same node if there is no such scrollable node in the document. This fixes the tests. :)

Yay! The EWS runs are all green!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777795</commentid>
    <comment_count>10</comment_count>
      <attachid>176281</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-11-28 05:33:24 -0800</bug_when>
    <thetext>Comment on attachment 176281
Changed the logic a little bit to fix the failing tests.

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

&gt; Source/WebCore/page/EventHandler.cpp:287
&gt; +static Node* getClosestScrollableNodeInDocumentIfPossible(Node* node)
&gt; +{
&gt; +    Node* firstNode = node;
&gt; +    while (node) {
&gt; +        if (node-&gt;isDocumentNode())
&gt; +            return firstNode;

could you explain this part? is firstNode ensured to be scrollable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777840</commentid>
    <comment_count>11</comment_count>
      <attachid>176281</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-11-28 06:10:08 -0800</bug_when>
    <thetext>Comment on attachment 176281
Changed the logic a little bit to fix the failing tests.

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

&gt;&gt; Source/WebCore/page/EventHandler.cpp:287
&gt;&gt; +            return firstNode;
&gt; 
&gt; could you explain this part? is firstNode ensured to be scrollable?

It&apos;s not. If there is no scrollable node in the document that contains |node|, then this function returns the original node that was sent to the function (which is why the &apos;IfPossible&apos; suffix), i.e. the node from the hit-test result.

The current behaviour is that it always uses the node from the hit test result. The change in this patch tries to use a scrollable node that contains the hit node. But if there is no such scrollable node, then it falls back to the current behaviour.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777849</commentid>
    <comment_count>12</comment_count>
      <attachid>176281</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-11-28 06:19:31 -0800</bug_when>
    <thetext>Comment on attachment 176281
Changed the logic a little bit to fix the failing tests.

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

&gt;&gt;&gt; Source/WebCore/page/EventHandler.cpp:287
&gt;&gt;&gt; +            return firstNode;
&gt;&gt; 
&gt;&gt; could you explain this part? is firstNode ensured to be scrollable?
&gt; 
&gt; It&apos;s not. If there is no scrollable node in the document that contains |node|, then this function returns the original node that was sent to the function (which is why the &apos;IfPossible&apos; suffix), i.e. the node from the hit-test result.
&gt; 
&gt; The current behaviour is that it always uses the node from the hit test result. The change in this patch tries to use a scrollable node that contains the hit node. But if there is no such scrollable node, then it falls back to the current behaviour.

Ah I was confusing ISdocumentNode with InDocument method. It makes sense, sure. r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777891</commentid>
    <comment_count>13</comment_count>
      <attachid>176281</attachid>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-11-28 07:19:25 -0800</bug_when>
    <thetext>Comment on attachment 176281
Changed the logic a little bit to fix the failing tests.

Thanks! Requesting cq</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777915</commentid>
    <comment_count>14</comment_count>
      <attachid>176281</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 08:07:02 -0800</bug_when>
    <thetext>Comment on attachment 176281
Changed the logic a little bit to fix the failing tests.

Clearing flags on attachment: 176281

Committed r136012: &lt;http://trac.webkit.org/changeset/136012&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777916</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 08:07:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778073</commentid>
    <comment_count>16</comment_count>
      <attachid>176281</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-11-28 10:57:25 -0800</bug_when>
    <thetext>Comment on attachment 176281
Changed the logic a little bit to fix the failing tests.

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

&gt; Source/WebCore/page/EventHandler.cpp:282
&gt; +static Node* getClosestScrollableNodeInDocumentIfPossible(Node* node)

WebKit coding style does not use the word “get” in these function names.

&gt; Source/WebCore/page/EventHandler.cpp:284
&gt; +    Node* firstNode = node;

The word “first” in this variable name does not make all that much sense. In what sequence is this node “first”?

&gt; Source/WebCore/page/EventHandler.cpp:285
&gt; +    while (node) {

Normally we’d use a for loop here rather than using a while loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778079</commentid>
    <comment_count>17</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-11-28 11:01:01 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 176281 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176281&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:282
&gt; &gt; +static Node* getClosestScrollableNodeInDocumentIfPossible(Node* node)
&gt; 
&gt; WebKit coding style does not use the word “get” in these function names.
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:284
&gt; &gt; +    Node* firstNode = node;
&gt; 
&gt; The word “first” in this variable name does not make all that much sense. In what sequence is this node “first”?
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:285
&gt; &gt; +    while (node) {
&gt; 
&gt; Normally we’d use a for loop here rather than using a while loop.

Agreed. My bad and thanks Darin for catching these.

Sadrul, please address as a follow up, once it has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778135</commentid>
    <comment_count>18</comment_count>
    <who name="Sadrul Habib Chowdhury">sadrul</who>
    <bug_when>2012-11-28 11:49:14 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 176281 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176281&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/EventHandler.cpp:282
&gt; &gt; &gt; +static Node* getClosestScrollableNodeInDocumentIfPossible(Node* node)
&gt; &gt; 
&gt; &gt; WebKit coding style does not use the word “get” in these function names.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/EventHandler.cpp:284
&gt; &gt; &gt; +    Node* firstNode = node;
&gt; &gt; 
&gt; &gt; The word “first” in this variable name does not make all that much sense. In what sequence is this node “first”?
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/EventHandler.cpp:285
&gt; &gt; &gt; +    while (node) {
&gt; &gt; 
&gt; &gt; Normally we’d use a for loop here rather than using a while loop.
&gt; 
&gt; Agreed. My bad and thanks Darin for catching these.
&gt; 
&gt; Sadrul, please address as a follow up, once it has landed.

Submitted a cleanup patch in: https://bugs.webkit.org/show_bug.cgi?id=103543</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804492</commentid>
    <comment_count>19</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2013-01-10 10:09:31 -0800</bug_when>
    <thetext>This patch breaks scrolling of overflow-scrollable divs contained in iframes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176161</attachid>
            <date>2012-11-26 21:07:38 -0800</date>
            <delta_ts>2012-11-26 21:31:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103355-20121127000515.patch</filename>
            <type>text/plain</type>
            <size>10205</size>
            <attacher name="Sadrul Habib Chowdhury">sadrul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZjZDNkNWFkNGI5YWEy
ZWMxNzY4OTU5MWQ3ZjJlYzJiMTkzNTBhZC4uOTlkMzE5OWE5ZmU2YjkxZWE1NTNhOGFiYTIxOTQ0
ODUxYzVjYjUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTExLTI2ICBTYWRy
dWwgSGFiaWIgQ2hvd2RodXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXgg
Z2VzdHVyZSBzY3JvbGxpbmcgd2hlbiB0aGUgdGFyZ2V0LWVsZW1lbnQgb2Ygc2Nyb2xsLWJlZ2lu
IGlzIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMzM1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdoZW4gYSB0b3VjaC1zY3JvbGwgc3RhcnRzLCB0aGUgbm9kZSB1bmRlciB0aGUgdG91Y2gt
cG9pbnQgZ2V0cyBsYXRjaGVkLCBhbmQKKyAgICAgICAgc3Vic2VxdWVudCBzY3JvbGwtdXBkYXRl
IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCB0byB0aGF0IG5vZGUuIEJ1dCBpZiB0aGUgbm9kZSBpcwor
ICAgICAgICByZW1vdmVkIHdoaWxlIHRoZSBnZXN0dXJlIGV2ZW50IGlzIGluIHByb2dyZXNzIChl
LmcuIGluIGEgZHluYW1pY2FsbHkgdXBkYXRlZAorICAgICAgICBsaXN0KSwgdGhlbiB0aGUgc2Ny
b2xsaW5nIHN0b3BzLCBhbHRob3VnaCB0aGVyZSBhcmUgZW5vdWdoIGVsZW1lbnRzIHRvIHN0aWxs
CisgICAgICAgIGVuYWJsZSBzY3JvbGxpbmcuIFNvIGluc3RlYWQgb2YgbGF0Y2hpbmcgb24gdG8g
dGhlIG5vZGUgaW1tZWRpYXRlbHkgdW5kZXIgdGhlCisgICAgICAgIHRvdWNoIHBvaW50LCBsYXRj
aCBvbiB0byB0aGUgc2Nyb2xsYWJsZSBub2RlIHVuZGVyIHRoZSB0b3VjaCBwb2ludC4KKworICAg
ICAgICBUZXN0OiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xs
LXJlbW92ZS1ub2RlLmh0bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdldENsb3Nlc3RTY3JvbGxhYmxlTm9kZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6
CisKIDIwMTItMTEtMjMgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+
CiAKICAgICAgICAgW1RleE1hcF0gUmVtb3ZlIGRlcGVuZGVuY3kgb2YgVGV4dHVyZU1hcHBlckxh
eWVyIG9uIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IGFjNTBkZTVjNjVjMmU3NTMzY2ZiN2IyODAyYmQ2ZjRhMWFmMWQ1MjYu
Ljk0M2FkMjFhNmM5NDVmMWIzMGRmYjk4NTk3MTU5NjllMjM2NWE1NjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI4MCw2ICsyODAsMTQgQEAgc3RhdGljIGlubGluZSBi
b29sIHNjcm9sbE5vZGUoZmxvYXQgZGVsdGEsIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBTY3JvbGwKIH0KIAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKK3N0YXRpYyBOb2RlKiBn
ZXRDbG9zZXN0U2Nyb2xsYWJsZU5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICB3aGlsZSAocmVuZGVyZXIgJiYgKCFy
ZW5kZXJlci0+aXNCb3goKSB8fCAhdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jYW5CZVNjcm9sbGVk
QW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkpCisgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBh
cmVudCgpOworICAgIHJldHVybiByZW5kZXJlciA/IHJlbmRlcmVyLT5ub2RlKCkgOiAwOworfQor
CiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkR2VzdHVyZXNUcmlnZ2VyQWN0aXZlKCkKIHsKICAg
ICAvLyBJZiB0aGUgcGxhdGZvcm0gd2UncmUgb24gc3VwcG9ydHMgR2VzdHVyZVRhcERvd24gYW5k
IEdlc3R1cmVUYXBDYW5jZWwgdGhlbiB3ZSdsbApAQCAtMjQyOSw3ICsyNDM3LDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBl
KQogCiAgICAgaWYgKHVzZUxhdGNoZWRXaGVlbEV2ZW50Tm9kZSkgewogICAgICAgICBpZiAoIW1f
bGF0Y2hlZFdoZWVsRXZlbnROb2RlKSB7Ci0gICAgICAgICAgICBtX2xhdGNoZWRXaGVlbEV2ZW50
Tm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKKyAgICAgICAgICAgIG1fbGF0Y2hlZFdoZWVsRXZl
bnROb2RlID0gZ2V0Q2xvc2VzdFNjcm9sbGFibGVOb2RlKHJlc3VsdC5pbm5lck5vZGUoKSk7CiAg
ICAgICAgICAgICBtX3dpZGdldElzTGF0Y2hlZCA9IHJlc3VsdC5pc092ZXJXaWRnZXQoKTsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNmY0YTIwMWZjYWI5NDE2MmMzMDhiOTU1MWUwYjUxYjBkYmVmNzZm
Yi4uODAwZjcxYjYxZmFhZmU3MmMwNzFmMDdmZjRiOTJkNzE4NWNmY2FhNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDEyLTExLTI2ICBTYWRydWwgSGFiaWIgQ2hvd2RodXJ5ICA8c2FkcnVsQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBGaXggZ2VzdHVyZSBzY3JvbGxpbmcgd2hlbiB0aGUgdGFy
Z2V0LWVsZW1lbnQgb2Ygc2Nyb2xsLWJlZ2luIGlzIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzM1NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgdGVzdCB0aGF0IHN0YXJ0cyBh
IHRvdWNoLXNjcm9sbCwgcmVtb3ZlcyB0aGUgaW5pdGlhbCBlbGVtZW50IHVuZGVyIHRoZQorICAg
ICAgICB0b3VjaC1wb2ludCwgYW5kIHNjcm9sbHMgc29tZSBtb3JlLCB0byB0ZXN0IHRoYXQgdGhl
IHNjcm9sbGluZyBoYXBwZW5zIGNvcnJlY3RseQorICAgICAgICBhZnRlciB0aGUgZWxlbWVudCBp
cyByZW1vdmVkLgorCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1n
ZXN0dXJlLXNjcm9sbC1yZW1vdmUtbm9kZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcmVtb3ZlLW5v
ZGUuaHRtbDogQWRkZWQuCisKIDIwMTItMTEtMjMgIE1hdGV1c3ogTGVzemtvICA8bS5sZXN6a29A
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bR1RLXSBBZGFwdCBhY2Nlc3NpYmlsaXR5IGZl
YXR1cmUgdG8gV2ViS2l0VGVzdFJ1bm5lci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcmVtb3ZlLW5vZGUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1n
ZXN0dXJlLXNjcm9sbC1yZW1vdmUtbm9kZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRkNTE0
OTBhNDE4MTAzYTkwYThiYTAyYzA5YzkzNGE1NDVmYzFjYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwt
cmVtb3ZlLW5vZGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjkgQEAKK1RoaXMgdGVzdHMgZ2Vz
dHVyZSBldmVudCBzY3JvbGxpbmcgb2YgYSBkaXYgd2hlcmUgdGhlIGVsZW1lbnQgdGhlIHNjcm9s
bGluZyBzdGFydHMgb24gaXMgcmVtb3ZlZCBmcm9tIGFuIG9uc2Nyb2xsIGV2ZW50IGhhbmRsZXIu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitiZWdpbiBzY3JvbGwKK3Njcm9sbCB1
cAorUEFTUyBzY3JvbGxlci5zY3JvbGxUb3AgaXMgOTYKK1BBU1Mgc2Nyb2xsZXIuc2Nyb2xsTGVm
dCBpcyAwCitQQVNTIHdoZWVsQ291bnQgaXMgMQorUEFTUyBzY3JvbGxDb3VudCBpcyAxCitQQVNT
IHR5cGVvZiBjYWNoZVsyXSBpcyB0eXBlb2YgdW5kZWZpbmVkCitzY3JvbGwgZG93bgorUEFTUyBz
Y3JvbGxlci5zY3JvbGxUb3AgaXMgMAorUEFTUyBzY3JvbGxlci5zY3JvbGxMZWZ0IGlzIDAKK1BB
U1Mgd2hlZWxDb3VudCBpcyAyCitQQVNTIHNjcm9sbENvdW50IGlzIDIKKzEKKzIKKzMKKzQKKzUK
KzYKKzcKKzgKKzkKKzEwCisxMQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXJlbW92ZS1ub2RlLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xs
LXJlbW92ZS1ub2RlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUyOTQ5M2RjYmU4MmUwNzA3OWE1ZTZhYzYx
NzlkMjUzODBkZjFkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcmVtb3ZlLW5vZGUuaHRtbApAQCAt
MCwwICsxLDE5NyBAQAorPCFET0NUWVBFPWh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2dlc3R1cmUtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+
CisgICNzcGFjaW5nIHsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0OiAxMjBweDsKKyAg
fQorICAjc2Nyb2xsZXIgeworICAgIGJvcmRlcjogMXB4IHNvbGlkICM3Nzc7CisgICAgYm94LXNp
emluZzogY29udGVudC1ib3g7CisgICAgaGVpZ2h0OiAzMDBweDsKKyAgICBtYXJnaW46IDIwcHg7
CisgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgd2lk
dGg6IDEwMHB4CisgIH0KKyAgLnNwYWNlciB7CisgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsK
KyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIHZpc2liaWxp
dHk6IGhpZGRlbjsKKyAgfQorICAubGlzdC1pdGVtIHsKKyAgICBsaW5lLWhlaWdodDogMzBweDsK
KyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKTsiPgorICA8ZGl2IGlkPSJzcGFjaW5nIj48L2Rpdj4KKyAgPGRpdiBp
ZD0ic2Nyb2xsZXIiPgorICAgIDxkaXYgaWQgPSAidG9wLXNwYWNlciIgY2xhc3M9InNwYWNlciI+
PC9kaXY+CisKKyAgICA8ZGl2IGlkID0gImJvdHRvbS1zcGFjZXIiIGNsYXNzPSJzcGFjZXIiPjwv
ZGl2PgorICA8L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgY2FjaGUgPSB7fTsKKworLyogT25lIG1vcmUg
dGhhdCB0aGUgbWF4aW11bSB0aGF0IGNhbiBiZSBmdWxseSBmaXQgb24gc2NyZWVuLiAqLwordmFy
IG1heFZpc2libGVJdGVtcyA9IDExOworCit2YXIgbGlzdFNpemUgPSAzMDA7CisKK3ZhciBpdGVt
SGVpZ2h0ID0gMzA7CisKK2Z1bmN0aW9uICQobmFtZSkgeworICByZXR1cm4gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQobmFtZSk7Cit9CisKK2Z1bmN0aW9uIG9uU2Nyb2xsKGUpIHsKKyAgcmVkcmF3
KCk7Cit9CisKK2Z1bmN0aW9uIHJlZHJhdygpIHsKKyAgLy8gQ3JlYXRlIG5ldyBpdGVtcyBhbmQg
YWRkIHRvIGNhY2hlLgorICB2YXIgdG9wID0gJCgnc2Nyb2xsZXInKS5zY3JvbGxUb3A7CisgIHZh
ciBmaXJzdCA9IE1hdGguZmxvb3IodG9wIC8gMzApOworICBpZiAoZmlyc3QgPiBsaXN0U2l6ZSAt
IG1heFZpc2libGVJdGVtcykKKyAgICBmaXJzdCA9IGxpc3RTaXplIC0gbWF4VmlzaWJsZUl0ZW1z
OworICB2YXIgbmV3SXRlbXMgPSBbXTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXhWaXNpYmxl
SXRlbXM7IGkrKykgeworICAgIHZhciBpbmRleCA9IGZpcnN0ICsgaTsKKyAgICBpZiAoY2FjaGVb
aW5kZXhdID09IHVuZGVmaW5lZCkgeworICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2xpc3QtaXRlbSc7
CisgICAgICBlbGVtZW50LnRleHRDb250ZW50ID0gU3RyaW5nKGluZGV4KzEpOworICAgICAgZWxl
bWVudC5kYXRhID0ge307CisgICAgICBlbGVtZW50LmRhdGEuaW5kZXggPSBpbmRleDsKKyAgICAg
IGNhY2hlW2luZGV4XSA9IGVsZW1lbnQ7CisgICAgICBuZXdJdGVtcy5wdXNoKGVsZW1lbnQpOwor
ICAgIH0KKyAgfQorICAvLyBSZW1vdmUgaXRlbXMgdGhhdCBhcmUgbm90IHZpc2libGUuCisgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZmlyc3Q7IGkrKykgeworICAgIGlmIChjYWNoZVtpXSkKKyAgICAg
IGRlbGV0ZSBjYWNoZVtpXTsKKyAgfQorICBmb3IgKHZhciBpID0gZmlyc3QgKyBtYXhWaXNpYmxl
SXRlbXM7IGkgPCBsaXN0U2l6ZTsgaSsrKSB7CisgICAgaWYgKGNhY2hlW2ldKQorICAgICAgZGVs
ZXRlIGNhY2hlW2ldOworICB9CisgIC8vIFBhZCBzcGFjZXIgZWxlbWVudHMgdG8gcHJlc2VydmUg
aGVpZ2h0IG9mIHNjcm9sbGFibGUgbGlzdC4KKyAgJCgndG9wLXNwYWNlcicpLnN0eWxlLmhlaWdo
dCA9IChmaXJzdCAqIGl0ZW1IZWlnaHQpICsgJ3B4JzsKKyAgJCgnYm90dG9tLXNwYWNlcicpLnN0
eWxlLmhlaWdodCA9CisgICAgICAoKGxpc3RTaXplIC0gbWF4VmlzaWJsZUl0ZW1zIC0gZmlyc3Qp
ICogMzApICsgJ3B4JzsKKworICAvLyBSZW1vdmUgb2ZmLXNjcmVlbiBlbGVtZW50cy4KKyAgdmFy
IGFuY2hvciA9ICQoJ2JvdHRvbS1zcGFjZXInKTsKKyAgdmFyIHBhcmVudCA9ICQoJ3Njcm9sbGVy
Jyk7CisgIGZvciAodmFyIGl0ZW0gPSAkKCd0b3Atc3BhY2VyJykubmV4dFNpYmxpbmc7IGl0ZW0g
IT0gYW5jaG9yOyApIHsKKyAgICBpZiAoIWl0ZW0uY2xhc3NMaXN0IHx8ICFpdGVtLmNsYXNzTGlz
dC5jb250YWlucygnbGlzdC1pdGVtJykpIHsKKyAgICAgIGl0ZW0gPSBpdGVtLm5leHRTaWJsaW5n
OworICAgICAgY29udGludWU7CisgICAgfSAgIAorICAgIGlmICghY2FjaGVbaXRlbS5kYXRhLmlu
ZGV4XSkgeworICAgICAgdmFyIG5leHQgPSBpdGVtLm5leHRTaWJsaW5nOworICAgICAgc2Nyb2xs
ZXIucmVtb3ZlQ2hpbGQoaXRlbSk7CisgICAgICBpdGVtID0gbmV4dDsKKyAgICB9IGVsc2Ugewor
ICAgICAgaXRlbSA9IGl0ZW0ubmV4dFNpYmxpbmc7CisgICAgfQorICB9CisKKyAgLy8gSW5zZXJ0
IG5ldyBvbi1zY3JlZW4gZWxlbWVudHMuCisgIHZhciByZWZlcmVuY2VFbGVtZW50ID0gJCgndG9w
LXNwYWNlcicpLm5leHRTaWJsaW5nOworICBmb3IgKHZhciBpID0gMDsgaSA8IG5ld0l0ZW1zLmxl
bmd0aDsgaSsrKSB7CisgICAgdmFyIGluZGV4ID0gbmV3SXRlbXNbaV0uZGF0YS5pbmRleDsKKyAg
ICB3aGlsZSAocmVmZXJlbmNlRWxlbWVudCAhPSBhbmNob3IgJiYgKCFyZWZlcmVuY2VFbGVtZW50
LmNsYXNzTGlzdCB8fAorICAgICAgICAgICAhcmVmZXJlbmNlRWxlbWVudC5jbGFzc0xpc3QuY29u
dGFpbnMoJ2xpc3QtaXRlbScpIHx8IAorICAgICAgICAgICByZWZlcmVuY2VFbGVtZW50LmRhdGEu
aW5kZXggPCBpbmRleCkpIHsKKyAgICAgIHJlZmVyZW5jZUVsZW1lbnQgPSByZWZlcmVuY2VFbGVt
ZW50Lm5leHRTaWJsaW5nOworICAgIH0KKyAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKG5ld0l0ZW1z
W2ldLCByZWZlcmVuY2VFbGVtZW50KTsKKyAgfQorfQorCiskKCdzY3JvbGxlcicpLmFkZEV2ZW50
TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKTsKK3JlZHJhdygpOworCitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK3ZhciBzY3JvbGxD
b3VudCA9IDA7Cit2YXIgd2hlZWxDb3VudCA9IDA7Cit2YXIgbmV4dFN0ZXA7Cit2YXIgc2Nyb2xs
SW5kZXggPSAyOwordmFyIHN0YXJ0UG9zaXRpb25YOwordmFyIHN0YXJ0UG9zaXRpb25ZOwordmFy
IHNjcm9sbEFtb3VudDsKKworZnVuY3Rpb24gZmlyc3RTdGVwKCkgeworICAgIGRlYnVnKCJiZWdp
biBzY3JvbGwiKTsKKyAgICB2YXIgaXRlbSA9IGNhY2hlW3Njcm9sbEluZGV4XTsKKyAgICBzdGFy
dFBvc2l0aW9uWCA9IGl0ZW0ub2Zmc2V0TGVmdCArIDU7CisgICAgc3RhcnRQb3NpdGlvblkgPSBp
dGVtLm9mZnNldFRvcCArIDU7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKHN0
YXJ0UG9zaXRpb25YLCBzdGFydFBvc2l0aW9uWSk7CisKKyAgICB2YXIgYWJvdmVTY3JvbGxlciA9
IHNjcm9sbGVyLm9mZnNldFRvcCAtIDMwOworICAgIHNjcm9sbEFtb3VudCA9IHN0YXJ0UG9zaXRp
b25ZIC0gYWJvdmVTY3JvbGxlcjsKKyAgICBkZWJ1Zygic2Nyb2xsIHVwIik7CisKKyAgICBuZXh0
U3RlcCA9IHNlY29uZFN0ZXA7CisKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRl
KDAsIC1zY3JvbGxBbW91bnQpOworICAgIHNob3VsZEJlKCdzY3JvbGxlci5zY3JvbGxUb3AnLCAn
JyArIHNjcm9sbEFtb3VudCk7CisgICAgc2hvdWxkQmUoJ3Njcm9sbGVyLnNjcm9sbExlZnQnLCAn
MCcpOworICAgIHNob3VsZEJlKCd3aGVlbENvdW50JywgJzEnKTsKK30KKworZnVuY3Rpb24gc2Vj
b25kU3RlcCgpIHsKKyAgICBzaG91bGRCZSgnc2Nyb2xsQ291bnQnLCAnMScpOworICAgIHNob3Vs
ZEJlKCd0eXBlb2YgY2FjaGVbJyArIHNjcm9sbEluZGV4ICsgJ10nLCAndHlwZW9mIHVuZGVmaW5l
ZCcpOworICAgIGRlYnVnKCJzY3JvbGwgZG93biIpOworCisgICAgbmV4dFN0ZXAgPSB0aGlyZFN0
ZXA7CisKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIHNjcm9sbEFtb3Vu
dCk7CisgICAgc2hvdWxkQmUoJ3Njcm9sbGVyLnNjcm9sbFRvcCcsICcwJyk7CisgICAgc2hvdWxk
QmUoJ3Njcm9sbGVyLnNjcm9sbExlZnQnLCAnMCcpOworICAgIHNob3VsZEJlKCd3aGVlbENvdW50
JywgJzInKTsKK30KKworZnVuY3Rpb24gdGhpcmRTdGVwKCkgeworICAgIHNob3VsZEJlKCdzY3Jv
bGxDb3VudCcsICcyJyk7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0
aW9uIHJ1blRlc3QoKQoreworICAgIHZhciBzY3JvbGxlciA9ICQoJ3Njcm9sbGVyJyk7CisgICAg
c2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICsrc2Nyb2xsQ291bnQ7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBuZXh0U3RlcCgpOworICAgICAgICB9LCAwKTsKKyAgICB9KTsKKyAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2V3aGVlbCIsIGZ1bmN0aW9uKCkgeworICAgICAgICArK3doZWVs
Q291bnQ7CisgICAgfSk7CisKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyICYmIHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIGdlc3R1cmUgZXZl
bnQgc2Nyb2xsaW5nIG9mIGEgZGl2IHdoZXJlIHRoZSBlbGVtZW50IHRoZSBzY3JvbGxpbmcgc3Rh
cnRzIG9uIGlzIHJlbW92ZWQgZnJvbSBhbiBvbnNjcm9sbCBldmVudCBoYW5kbGVyLicpOworICAg
ICAgICBpZiAoY2hlY2tUZXN0RGVwZW5kZW5jaWVzKCkpIHsKKyAgICAgICAgICAgIGZpcnN0U3Rl
cCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXhpdElmTmVjZXNzYXJ5KCk7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVz
IER1bXBSZW5kZXJUcmVlLiIpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176166</attachid>
            <date>2012-11-26 21:31:35 -0800</date>
            <delta_ts>2012-11-27 09:03:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103355-20121127002912.patch</filename>
            <type>text/plain</type>
            <size>10230</size>
            <attacher name="Sadrul Habib Chowdhury">sadrul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZjZDNkNWFkNGI5YWEy
ZWMxNzY4OTU5MWQ3ZjJlYzJiMTkzNTBhZC4uOTlkMzE5OWE5ZmU2YjkxZWE1NTNhOGFiYTIxOTQ0
ODUxYzVjYjUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTExLTI2ICBTYWRy
dWwgSGFiaWIgQ2hvd2RodXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXgg
Z2VzdHVyZSBzY3JvbGxpbmcgd2hlbiB0aGUgdGFyZ2V0LWVsZW1lbnQgb2Ygc2Nyb2xsLWJlZ2lu
IGlzIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMzM1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdoZW4gYSB0b3VjaC1zY3JvbGwgc3RhcnRzLCB0aGUgbm9kZSB1bmRlciB0aGUgdG91Y2gt
cG9pbnQgZ2V0cyBsYXRjaGVkLCBhbmQKKyAgICAgICAgc3Vic2VxdWVudCBzY3JvbGwtdXBkYXRl
IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCB0byB0aGF0IG5vZGUuIEJ1dCBpZiB0aGUgbm9kZSBpcwor
ICAgICAgICByZW1vdmVkIHdoaWxlIHRoZSBnZXN0dXJlIGV2ZW50IGlzIGluIHByb2dyZXNzIChl
LmcuIGluIGEgZHluYW1pY2FsbHkgdXBkYXRlZAorICAgICAgICBsaXN0KSwgdGhlbiB0aGUgc2Ny
b2xsaW5nIHN0b3BzLCBhbHRob3VnaCB0aGVyZSBhcmUgZW5vdWdoIGVsZW1lbnRzIHRvIHN0aWxs
CisgICAgICAgIGVuYWJsZSBzY3JvbGxpbmcuIFNvIGluc3RlYWQgb2YgbGF0Y2hpbmcgb24gdG8g
dGhlIG5vZGUgaW1tZWRpYXRlbHkgdW5kZXIgdGhlCisgICAgICAgIHRvdWNoIHBvaW50LCBsYXRj
aCBvbiB0byB0aGUgc2Nyb2xsYWJsZSBub2RlIHVuZGVyIHRoZSB0b3VjaCBwb2ludC4KKworICAg
ICAgICBUZXN0OiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xs
LXJlbW92ZS1ub2RlLmh0bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdldENsb3Nlc3RTY3JvbGxhYmxlTm9kZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6
CisKIDIwMTItMTEtMjMgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+
CiAKICAgICAgICAgW1RleE1hcF0gUmVtb3ZlIGRlcGVuZGVuY3kgb2YgVGV4dHVyZU1hcHBlckxh
eWVyIG9uIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IGFjNTBkZTVjNjVjMmU3NTMzY2ZiN2IyODAyYmQ2ZjRhMWFmMWQ1MjYu
LjNhN2QxYmExZTY4MTdmMWMzNmYxYzUyMTMwMTFkYmFiZWJlMDc3ODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI3OSw2ICsyNzksMTQgQEAgc3RhdGljIGlubGluZSBi
b29sIHNjcm9sbE5vZGUoZmxvYXQgZGVsdGEsIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBTY3JvbGwKICAgICByZXR1cm4gZW5jbG9zaW5nQm94LT5zY3JvbGwoZGVsdGEgPCAwID8gbmVn
YXRpdmVEaXJlY3Rpb24gOiBwb3NpdGl2ZURpcmVjdGlvbiwgZ3JhbnVsYXJpdHksIGFic0RlbHRh
LCBzdG9wTm9kZSk7CiB9CiAKK3N0YXRpYyBOb2RlKiBnZXRDbG9zZXN0U2Nyb2xsYWJsZU5vZGUo
Tm9kZSogbm9kZSkKK3sKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVy
ZXIoKTsKKyAgICB3aGlsZSAocmVuZGVyZXIgJiYgKCFyZW5kZXJlci0+aXNCb3goKSB8fCAhdG9S
ZW5kZXJCb3gocmVuZGVyZXIpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkp
CisgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOworICAgIHJldHVybiByZW5k
ZXJlciA/IHJlbmRlcmVyLT5ub2RlKCkgOiAwOworfQorCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZF
TlRTKQogc3RhdGljIGlubGluZSBib29sIHNob3VsZEdlc3R1cmVzVHJpZ2dlckFjdGl2ZSgpCiB7
CkBAIC0yNDI5LDcgKzI0MzcsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVu
dChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAKICAgICBpZiAodXNlTGF0Y2hlZFdoZWVs
RXZlbnROb2RlKSB7CiAgICAgICAgIGlmICghbV9sYXRjaGVkV2hlZWxFdmVudE5vZGUpIHsKLSAg
ICAgICAgICAgIG1fbGF0Y2hlZFdoZWVsRXZlbnROb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwor
ICAgICAgICAgICAgbV9sYXRjaGVkV2hlZWxFdmVudE5vZGUgPSBnZXRDbG9zZXN0U2Nyb2xsYWJs
ZU5vZGUocmVzdWx0LmlubmVyTm9kZSgpKTsKICAgICAgICAgICAgIG1fd2lkZ2V0SXNMYXRjaGVk
ID0gcmVzdWx0LmlzT3ZlcldpZGdldCgpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZjRhMjAxZmNh
Yjk0MTYyYzMwOGI5NTUxZTBiNTFiMGRiZWY3NmZiLi44MDBmNzFiNjFmYWFmZTcyYzA3MWYwN2Zm
NGI5MmQ3MTg1Y2ZjYWE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTEtMjYgIFNhZHJ1
bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRydWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZpeCBn
ZXN0dXJlIHNjcm9sbGluZyB3aGVuIHRoZSB0YXJnZXQtZWxlbWVudCBvZiBzY3JvbGwtYmVnaW4g
aXMgcmVtb3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAzMzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgYSB0ZXN0IHRoYXQgc3RhcnRzIGEgdG91Y2gtc2Nyb2xsLCByZW1vdmVzIHRoZSBp
bml0aWFsIGVsZW1lbnQgdW5kZXIgdGhlCisgICAgICAgIHRvdWNoLXBvaW50LCBhbmQgc2Nyb2xs
cyBzb21lIG1vcmUsIHRvIHRlc3QgdGhhdCB0aGUgc2Nyb2xsaW5nIGhhcHBlbnMgY29ycmVjdGx5
CisgICAgICAgIGFmdGVyIHRoZSBlbGVtZW50IGlzIHJlbW92ZWQuCisKKyAgICAgICAgKiBmYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXJlbW92ZS1ub2RlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90
b3VjaC1nZXN0dXJlLXNjcm9sbC1yZW1vdmUtbm9kZS5odG1sOiBBZGRlZC4KKwogMjAxMi0xMS0y
MyAgTWF0ZXVzeiBMZXN6a28gIDxtLmxlc3prb0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZM
XVtHVEtdIEFkYXB0IGFjY2Vzc2liaWxpdHkgZmVhdHVyZSB0byBXZWJLaXRUZXN0UnVubmVyLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1n
ZXN0dXJlLXNjcm9sbC1yZW1vdmUtbm9kZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXJlbW92ZS1ub2RlLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGQ1MTQ5MGE0MTgxMDNhOTBhOGJhMDJjMDljOTM0YTU0
NWZjMWNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gv
Z2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1yZW1vdmUtbm9kZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyOSBAQAorVGhpcyB0ZXN0cyBnZXN0dXJlIGV2ZW50IHNjcm9sbGluZyBvZiBhIGRp
diB3aGVyZSB0aGUgZWxlbWVudCB0aGUgc2Nyb2xsaW5nIHN0YXJ0cyBvbiBpcyByZW1vdmVkIGZy
b20gYW4gb25zY3JvbGwgZXZlbnQgaGFuZGxlci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK2JlZ2luIHNjcm9sbAorc2Nyb2xsIHVwCitQQVNTIHNjcm9sbGVyLnNjcm9sbFRvcCBp
cyA5NgorUEFTUyBzY3JvbGxlci5zY3JvbGxMZWZ0IGlzIDAKK1BBU1Mgd2hlZWxDb3VudCBpcyAx
CitQQVNTIHNjcm9sbENvdW50IGlzIDEKK1BBU1MgdHlwZW9mIGNhY2hlWzJdIGlzIHR5cGVvZiB1
bmRlZmluZWQKK3Njcm9sbCBkb3duCitQQVNTIHNjcm9sbGVyLnNjcm9sbFRvcCBpcyAwCitQQVNT
IHNjcm9sbGVyLnNjcm9sbExlZnQgaXMgMAorUEFTUyB3aGVlbENvdW50IGlzIDIKK1BBU1Mgc2Ny
b2xsQ291bnQgaXMgMgorMQorMgorMworNAorNQorNgorNworOAorOQorMTAKKzExCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVy
ZS1zY3JvbGwtcmVtb3ZlLW5vZGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwtcmVtb3ZlLW5vZGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYzYzM2I1NzU4YWU1Y2E2NTMyMTk4ZGQ0NjgzNzMwNDNkNTJmNTA4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJl
LXNjcm9sbC1yZW1vdmUtbm9kZS5odG1sCkBAIC0wLDAgKzEsMTk3IEBACis8IURPQ1RZUEU9aHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ2VzdHVyZS1o
ZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgI3NwYWNpbmcgeworICAgIHdpZHRoOiAy
MDBweDsKKyAgICBoZWlnaHQ6IDEyMHB4OworICB9CisgICNzY3JvbGxlciB7CisgICAgYm9yZGVy
OiAxcHggc29saWQgIzc3NzsKKyAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKKyAgICBoZWln
aHQ6IDMwMHB4OworICAgIG1hcmdpbjogMjBweDsKKyAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICB3aWR0aDogMTAwcHgKKyAgfQorICAuc3BhY2VyIHsK
KyAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIG92
ZXJmbG93OiBoaWRkZW47CisgICAgdmlzaWJpbGl0eTogaGlkZGVuOworICB9CisgIC5saXN0LWl0
ZW0geworICAgIGxpbmUtaGVpZ2h0OiAzMHB4OworICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAg
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+CisgIDxkaXYg
aWQ9InNwYWNpbmciPjwvZGl2PgorICA8ZGl2IGlkPSJzY3JvbGxlciI+CisgICAgPGRpdiBpZCA9
ICJ0b3Atc3BhY2VyIiBjbGFzcz0ic3BhY2VyIj48L2Rpdj4KKworICAgIDxkaXYgaWQgPSAiYm90
dG9tLXNwYWNlciIgY2xhc3M9InNwYWNlciI+PC9kaXY+CisgIDwvZGl2PgorPHNjcmlwdD4KK3Zh
ciBjYWNoZSA9IHt9OworCisvKiBPbmUgbW9yZSB0aGF0IHRoZSBtYXhpbXVtIHRoYXQgY2FuIGJl
IGZ1bGx5IGZpdCBvbiBzY3JlZW4uICovCit2YXIgbWF4VmlzaWJsZUl0ZW1zID0gMTE7CisKK3Zh
ciBsaXN0U2l6ZSA9IDMwMDsKKwordmFyIGl0ZW1IZWlnaHQgPSAzMDsKKworZnVuY3Rpb24gJChu
YW1lKSB7CisgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuYW1lKTsKK30KKworZnVu
Y3Rpb24gb25TY3JvbGwoZSkgeworICByZWRyYXcoKTsKK30KKworZnVuY3Rpb24gcmVkcmF3KCkg
eworICAvLyBDcmVhdGUgbmV3IGl0ZW1zIGFuZCBhZGQgdG8gY2FjaGUuCisgIHZhciB0b3AgPSAk
KCdzY3JvbGxlcicpLnNjcm9sbFRvcDsKKyAgdmFyIGZpcnN0ID0gTWF0aC5mbG9vcih0b3AgLyAz
MCk7CisgIGlmIChmaXJzdCA+IGxpc3RTaXplIC0gbWF4VmlzaWJsZUl0ZW1zKQorICAgIGZpcnN0
ID0gbGlzdFNpemUgLSBtYXhWaXNpYmxlSXRlbXM7CisgIHZhciBuZXdJdGVtcyA9IFtdOworICBm
b3IgKHZhciBpID0gMDsgaSA8IG1heFZpc2libGVJdGVtczsgaSsrKSB7CisgICAgdmFyIGluZGV4
ID0gZmlyc3QgKyBpOworICAgIGlmIChjYWNoZVtpbmRleF0gPT0gdW5kZWZpbmVkKSB7CisgICAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgZWxl
bWVudC5jbGFzc05hbWUgPSAnbGlzdC1pdGVtJzsKKyAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQg
PSBTdHJpbmcoaW5kZXgrMSk7CisgICAgICBlbGVtZW50LmRhdGEgPSB7fTsKKyAgICAgIGVsZW1l
bnQuZGF0YS5pbmRleCA9IGluZGV4OworICAgICAgY2FjaGVbaW5kZXhdID0gZWxlbWVudDsKKyAg
ICAgIG5ld0l0ZW1zLnB1c2goZWxlbWVudCk7CisgICAgfQorICB9CisgIC8vIFJlbW92ZSBpdGVt
cyB0aGF0IGFyZSBub3QgdmlzaWJsZS4KKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaXJzdDsgaSsr
KSB7CisgICAgaWYgKGNhY2hlW2ldKQorICAgICAgZGVsZXRlIGNhY2hlW2ldOworICB9CisgIGZv
ciAodmFyIGkgPSBmaXJzdCArIG1heFZpc2libGVJdGVtczsgaSA8IGxpc3RTaXplOyBpKyspIHsK
KyAgICBpZiAoY2FjaGVbaV0pCisgICAgICBkZWxldGUgY2FjaGVbaV07CisgIH0KKyAgLy8gUGFk
IHNwYWNlciBlbGVtZW50cyB0byBwcmVzZXJ2ZSBoZWlnaHQgb2Ygc2Nyb2xsYWJsZSBsaXN0Lgor
ICAkKCd0b3Atc3BhY2VyJykuc3R5bGUuaGVpZ2h0ID0gKGZpcnN0ICogaXRlbUhlaWdodCkgKyAn
cHgnOworICAkKCdib3R0b20tc3BhY2VyJykuc3R5bGUuaGVpZ2h0ID0KKyAgICAgICgobGlzdFNp
emUgLSBtYXhWaXNpYmxlSXRlbXMgLSBmaXJzdCkgKiAzMCkgKyAncHgnOworCisgIC8vIFJlbW92
ZSBvZmYtc2NyZWVuIGVsZW1lbnRzLgorICB2YXIgYW5jaG9yID0gJCgnYm90dG9tLXNwYWNlcicp
OworICB2YXIgcGFyZW50ID0gJCgnc2Nyb2xsZXInKTsKKyAgZm9yICh2YXIgaXRlbSA9ICQoJ3Rv
cC1zcGFjZXInKS5uZXh0U2libGluZzsgaXRlbSAhPSBhbmNob3I7ICkgeworICAgIGlmICghaXRl
bS5jbGFzc0xpc3QgfHwgIWl0ZW0uY2xhc3NMaXN0LmNvbnRhaW5zKCdsaXN0LWl0ZW0nKSkgewor
ICAgICAgaXRlbSA9IGl0ZW0ubmV4dFNpYmxpbmc7CisgICAgICBjb250aW51ZTsKKyAgICB9Cisg
ICAgaWYgKCFjYWNoZVtpdGVtLmRhdGEuaW5kZXhdKSB7CisgICAgICB2YXIgbmV4dCA9IGl0ZW0u
bmV4dFNpYmxpbmc7CisgICAgICBzY3JvbGxlci5yZW1vdmVDaGlsZChpdGVtKTsKKyAgICAgIGl0
ZW0gPSBuZXh0OworICAgIH0gZWxzZSB7CisgICAgICBpdGVtID0gaXRlbS5uZXh0U2libGluZzsK
KyAgICB9CisgIH0KKworICAvLyBJbnNlcnQgbmV3IG9uLXNjcmVlbiBlbGVtZW50cy4KKyAgdmFy
IHJlZmVyZW5jZUVsZW1lbnQgPSAkKCd0b3Atc3BhY2VyJykubmV4dFNpYmxpbmc7CisgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbmV3SXRlbXMubGVuZ3RoOyBpKyspIHsKKyAgICB2YXIgaW5kZXggPSBu
ZXdJdGVtc1tpXS5kYXRhLmluZGV4OworICAgIHdoaWxlIChyZWZlcmVuY2VFbGVtZW50ICE9IGFu
Y2hvciAmJiAoIXJlZmVyZW5jZUVsZW1lbnQuY2xhc3NMaXN0IHx8CisgICAgICAgICAgICFyZWZl
cmVuY2VFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbGlzdC1pdGVtJykgfHwKKyAgICAgICAg
ICAgcmVmZXJlbmNlRWxlbWVudC5kYXRhLmluZGV4IDwgaW5kZXgpKSB7CisgICAgICByZWZlcmVu
Y2VFbGVtZW50ID0gcmVmZXJlbmNlRWxlbWVudC5uZXh0U2libGluZzsKKyAgICB9CisgICAgcGFy
ZW50Lmluc2VydEJlZm9yZShuZXdJdGVtc1tpXSwgcmVmZXJlbmNlRWxlbWVudCk7CisgIH0KK30K
KworJCgnc2Nyb2xsZXInKS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCk7City
ZWRyYXcoKTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworCit2YXIgc2Nyb2xsQ291bnQgPSAwOwordmFyIHdoZWVsQ291bnQgPSAwOwor
dmFyIG5leHRTdGVwOwordmFyIHNjcm9sbEluZGV4ID0gMjsKK3ZhciBzdGFydFBvc2l0aW9uWDsK
K3ZhciBzdGFydFBvc2l0aW9uWTsKK3ZhciBzY3JvbGxBbW91bnQ7CisKK2Z1bmN0aW9uIGZpcnN0
U3RlcCgpIHsKKyAgICBkZWJ1ZygiYmVnaW4gc2Nyb2xsIik7CisgICAgdmFyIGl0ZW0gPSBjYWNo
ZVtzY3JvbGxJbmRleF07CisgICAgc3RhcnRQb3NpdGlvblggPSBpdGVtLm9mZnNldExlZnQgKyA1
OworICAgIHN0YXJ0UG9zaXRpb25ZID0gaXRlbS5vZmZzZXRUb3AgKyA1OworICAgIGV2ZW50U2Vu
ZGVyLmdlc3R1cmVTY3JvbGxCZWdpbihzdGFydFBvc2l0aW9uWCwgc3RhcnRQb3NpdGlvblkpOwor
CisgICAgdmFyIGFib3ZlU2Nyb2xsZXIgPSBzY3JvbGxlci5vZmZzZXRUb3AgLSAzMDsKKyAgICBz
Y3JvbGxBbW91bnQgPSBzdGFydFBvc2l0aW9uWSAtIGFib3ZlU2Nyb2xsZXI7CisgICAgZGVidWco
InNjcm9sbCB1cCIpOworCisgICAgbmV4dFN0ZXAgPSBzZWNvbmRTdGVwOworCisgICAgZXZlbnRT
ZW5kZXIuZ2VzdHVyZVNjcm9sbFVwZGF0ZSgwLCAtc2Nyb2xsQW1vdW50KTsKKyAgICBzaG91bGRC
ZSgnc2Nyb2xsZXIuc2Nyb2xsVG9wJywgJycgKyBzY3JvbGxBbW91bnQpOworICAgIHNob3VsZEJl
KCdzY3JvbGxlci5zY3JvbGxMZWZ0JywgJzAnKTsKKyAgICBzaG91bGRCZSgnd2hlZWxDb3VudCcs
ICcxJyk7Cit9CisKK2Z1bmN0aW9uIHNlY29uZFN0ZXAoKSB7CisgICAgc2hvdWxkQmUoJ3Njcm9s
bENvdW50JywgJzEnKTsKKyAgICBzaG91bGRCZSgndHlwZW9mIGNhY2hlWycgKyBzY3JvbGxJbmRl
eCArICddJywgJ3R5cGVvZiB1bmRlZmluZWQnKTsKKyAgICBkZWJ1Zygic2Nyb2xsIGRvd24iKTsK
KworICAgIG5leHRTdGVwID0gdGhpcmRTdGVwOworCisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNj
cm9sbFVwZGF0ZSgwLCBzY3JvbGxBbW91bnQpOworICAgIHNob3VsZEJlKCdzY3JvbGxlci5zY3Jv
bGxUb3AnLCAnMCcpOworICAgIHNob3VsZEJlKCdzY3JvbGxlci5zY3JvbGxMZWZ0JywgJzAnKTsK
KyAgICBzaG91bGRCZSgnd2hlZWxDb3VudCcsICcyJyk7Cit9CisKK2Z1bmN0aW9uIHRoaXJkU3Rl
cCgpIHsKKyAgICBzaG91bGRCZSgnc2Nyb2xsQ291bnQnLCAnMicpOworICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgc2Nyb2xs
ZXIgPSAkKCdzY3JvbGxlcicpOworICAgIHNjcm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9s
bCIsIGZ1bmN0aW9uKCkgeworICAgICAgICArK3Njcm9sbENvdW50OworICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgbmV4dFN0ZXAoKTsKKyAgICAgICAgfSwgMCk7
CisgICAgfSk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgKyt3aGVlbENvdW50OworICAgIH0pOworCisgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlciAmJiB3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICBkZXNjcmlwdGlv
bignVGhpcyB0ZXN0cyBnZXN0dXJlIGV2ZW50IHNjcm9sbGluZyBvZiBhIGRpdiB3aGVyZSB0aGUg
ZWxlbWVudCB0aGUgc2Nyb2xsaW5nIHN0YXJ0cyBvbiBpcyByZW1vdmVkIGZyb20gYW4gb25zY3Jv
bGwgZXZlbnQgaGFuZGxlci4nKTsKKyAgICAgICAgaWYgKGNoZWNrVGVzdERlcGVuZGVuY2llcygp
KSB7CisgICAgICAgICAgICBmaXJzdFN0ZXAoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGV4aXRJZk5lY2Vzc2FyeSgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAg
ZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4iKTsKKyAgICB9Cit9Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176281</attachid>
            <date>2012-11-27 09:03:54 -0800</date>
            <delta_ts>2012-11-28 10:57:25 -0800</delta_ts>
            <desc>Changed the logic a little bit to fix the failing tests.</desc>
            <filename>bug-103355-20121127120131.patch</filename>
            <type>text/plain</type>
            <size>10415</size>
            <attacher name="Sadrul Habib Chowdhury">sadrul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZjZDNkNWFkNGI5YWEy
ZWMxNzY4OTU5MWQ3ZjJlYzJiMTkzNTBhZC4uMDY3ZGQ1M2U4YzBjM2VhZWMyZjkwYTUzNTA5MWE2
MTRlZTViNjc1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTExLTI3ICBTYWRy
dWwgSGFiaWIgQ2hvd2RodXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXgg
Z2VzdHVyZSBzY3JvbGxpbmcgd2hlbiB0aGUgdGFyZ2V0LWVsZW1lbnQgb2Ygc2Nyb2xsLWJlZ2lu
IGlzIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMzM1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdoZW4gYSB0b3VjaC1zY3JvbGwgc3RhcnRzLCB0aGUgbm9kZSB1bmRlciB0aGUgdG91Y2gt
cG9pbnQgZ2V0cyBsYXRjaGVkLCBhbmQKKyAgICAgICAgc3Vic2VxdWVudCBzY3JvbGwtdXBkYXRl
IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCB0byB0aGF0IG5vZGUuIEJ1dCBpZiB0aGUgbm9kZSBpcwor
ICAgICAgICByZW1vdmVkIHdoaWxlIHRoZSBnZXN0dXJlIGV2ZW50IGlzIGluIHByb2dyZXNzIChl
LmcuIGluIGEgZHluYW1pY2FsbHkgdXBkYXRlZAorICAgICAgICBsaXN0KSwgdGhlbiB0aGUgc2Ny
b2xsaW5nIHN0b3BzLCBhbHRob3VnaCB0aGVyZSBhcmUgZW5vdWdoIGVsZW1lbnRzIHRvIHN0aWxs
CisgICAgICAgIGVuYWJsZSBzY3JvbGxpbmcuIFNvIGluc3RlYWQgb2YgbGF0Y2hpbmcgb24gdG8g
dGhlIG5vZGUgaW1tZWRpYXRlbHkgdW5kZXIgdGhlCisgICAgICAgIHRvdWNoIHBvaW50LCBsYXRj
aCBvbiB0byB0aGUgc2Nyb2xsYWJsZSBub2RlIHVuZGVyIHRoZSB0b3VjaCBwb2ludC4KKworICAg
ICAgICBUZXN0OiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xs
LXJlbW92ZS1ub2RlLmh0bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdldENsb3Nlc3RTY3JvbGxhYmxlTm9kZUluRG9jdW1lbnRJZlBvc3Np
YmxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVXaGVlbEV2ZW50KToKKwogMjAxMi0xMS0yMyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0
ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbVGV4TWFwXSBSZW1vdmUgZGVwZW5kZW5j
eSBvZiBUZXh0dXJlTWFwcGVyTGF5ZXIgb24gR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYWM1MGRlNWM2NWMyZTc1MzNjZmI3
YjI4MDJiZDZmNGExYWYxZDUyNi4uMjcwOTI1NjI3MTYxMzg4ZTNlYjM3ZGY5ZDFhNDgyODc4MzM0
MDEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjc5LDYgKzI3OSwy
MCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2Nyb2xsTm9kZShmbG9hdCBkZWx0YSwgU2Nyb2xsR3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHksIFNjcm9sbAogICAgIHJldHVybiBlbmNsb3NpbmdCb3gtPnNj
cm9sbChkZWx0YSA8IDAgPyBuZWdhdGl2ZURpcmVjdGlvbiA6IHBvc2l0aXZlRGlyZWN0aW9uLCBn
cmFudWxhcml0eSwgYWJzRGVsdGEsIHN0b3BOb2RlKTsKIH0KIAorc3RhdGljIE5vZGUqIGdldENs
b3Nlc3RTY3JvbGxhYmxlTm9kZUluRG9jdW1lbnRJZlBvc3NpYmxlKE5vZGUqIG5vZGUpCit7Cisg
ICAgTm9kZSogZmlyc3ROb2RlID0gbm9kZTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBp
ZiAobm9kZS0+aXNEb2N1bWVudE5vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmaXJzdE5vZGU7
CisgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAg
ICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94KCkgJiYgdG9SZW5kZXJCb3gocmVu
ZGVyZXIpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgICAg
IHJldHVybiBub2RlOworICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgIH0K
KyAgICByZXR1cm4gZmlyc3ROb2RlOworfQorCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQog
c3RhdGljIGlubGluZSBib29sIHNob3VsZEdlc3R1cmVzVHJpZ2dlckFjdGl2ZSgpCiB7CkBAIC0y
NDI5LDcgKzI0NDMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAKICAgICBpZiAodXNlTGF0Y2hlZFdoZWVsRXZlbnRO
b2RlKSB7CiAgICAgICAgIGlmICghbV9sYXRjaGVkV2hlZWxFdmVudE5vZGUpIHsKLSAgICAgICAg
ICAgIG1fbGF0Y2hlZFdoZWVsRXZlbnROb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOworICAgICAg
ICAgICAgbV9sYXRjaGVkV2hlZWxFdmVudE5vZGUgPSBnZXRDbG9zZXN0U2Nyb2xsYWJsZU5vZGVJ
bkRvY3VtZW50SWZQb3NzaWJsZShyZXN1bHQuaW5uZXJOb2RlKCkpOwogICAgICAgICAgICAgbV93
aWRnZXRJc0xhdGNoZWQgPSByZXN1bHQuaXNPdmVyV2lkZ2V0KCk7CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDZmNGEyMDFmY2FiOTQxNjJjMzA4Yjk1NTFlMGI1MWIwZGJlZjc2ZmIuLjgwMGY3MWI2MWZh
YWZlNzJjMDcxZjA3ZmY0YjkyZDcxODVjZmNhYTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
Mi0xMS0yNiAgU2FkcnVsIEhhYmliIENob3dkaHVyeSAgPHNhZHJ1bEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgRml4IGdlc3R1cmUgc2Nyb2xsaW5nIHdoZW4gdGhlIHRhcmdldC1lbGVtZW50IG9m
IHNjcm9sbC1iZWdpbiBpcyByZW1vdmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDMzNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdGhhdCBzdGFydHMgYSB0b3VjaC1zY3JvbGws
IHJlbW92ZXMgdGhlIGluaXRpYWwgZWxlbWVudCB1bmRlciB0aGUKKyAgICAgICAgdG91Y2gtcG9p
bnQsIGFuZCBzY3JvbGxzIHNvbWUgbW9yZSwgdG8gdGVzdCB0aGF0IHRoZSBzY3JvbGxpbmcgaGFw
cGVucyBjb3JyZWN0bHkKKyAgICAgICAgYWZ0ZXIgdGhlIGVsZW1lbnQgaXMgcmVtb3ZlZC4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwt
cmVtb3ZlLW5vZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90
b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXJlbW92ZS1ub2RlLmh0bWw6IEFkZGVk
LgorCiAyMDEyLTExLTIzICBNYXRldXN6IExlc3prbyAgPG0ubGVzemtvQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIFtFRkxdW0dUS10gQWRhcHQgYWNjZXNzaWJpbGl0eSBmZWF0dXJlIHRvIFdlYktp
dFRlc3RSdW5uZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXJlbW92ZS1ub2RlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvdG91Y2gtZ2VzdHVyZS1zY3JvbGwt
cmVtb3ZlLW5vZGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZDUxNDkwYTQxODEwM2E5MGE4
YmEwMmMwOWM5MzRhNTQ1ZmMxY2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXJlbW92ZS1ub2RlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDI5IEBACitUaGlzIHRlc3RzIGdlc3R1cmUgZXZlbnQgc2Ny
b2xsaW5nIG9mIGEgZGl2IHdoZXJlIHRoZSBlbGVtZW50IHRoZSBzY3JvbGxpbmcgc3RhcnRzIG9u
IGlzIHJlbW92ZWQgZnJvbSBhbiBvbnNjcm9sbCBldmVudCBoYW5kbGVyLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworYmVnaW4gc2Nyb2xsCitzY3JvbGwgdXAKK1BBU1Mgc2Nyb2xs
ZXIuc2Nyb2xsVG9wIGlzIDk2CitQQVNTIHNjcm9sbGVyLnNjcm9sbExlZnQgaXMgMAorUEFTUyB3
aGVlbENvdW50IGlzIDEKK1BBU1Mgc2Nyb2xsQ291bnQgaXMgMQorUEFTUyB0eXBlb2YgY2FjaGVb
Ml0gaXMgdHlwZW9mIHVuZGVmaW5lZAorc2Nyb2xsIGRvd24KK1BBU1Mgc2Nyb2xsZXIuc2Nyb2xs
VG9wIGlzIDAKK1BBU1Mgc2Nyb2xsZXIuc2Nyb2xsTGVmdCBpcyAwCitQQVNTIHdoZWVsQ291bnQg
aXMgMgorUEFTUyBzY3JvbGxDb3VudCBpcyAyCisxCisyCiszCis0Cis1Cis2Cis3Cis4Cis5Cisx
MAorMTEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1yZW1vdmUtbm9kZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS90b3VjaC1nZXN0dXJlLXNjcm9sbC1yZW1vdmUtbm9kZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBjNjMzYjU3NThhZTVjYTY1MzIxOThkZDQ2ODM3MzA0M2Q1MmY1MDgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJl
L3RvdWNoLWdlc3R1cmUtc2Nyb2xsLXJlbW92ZS1ub2RlLmh0bWwKQEAgLTAsMCArMSwxOTcgQEAK
KzwhRE9DVFlQRT1odG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9nZXN0dXJlLWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAjc3BhY2luZyB7
CisgICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogMTIwcHg7CisgIH0KKyAgI3Njcm9sbGVy
IHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCAjNzc3OworICAgIGJveC1zaXppbmc6IGNvbnRlbnQt
Ym94OworICAgIGhlaWdodDogMzAwcHg7CisgICAgbWFyZ2luOiAyMHB4OworICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICBvdmVyZmxvdy15OiBhdXRvOworICAgIHdpZHRoOiAxMDBweAorICB9
CisgIC5zcGFjZXIgeworICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgZGlzcGxheTog
YmxvY2s7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB2aXNpYmlsaXR5OiBoaWRkZW47Cisg
IH0KKyAgLmxpc3QtaXRlbSB7CisgICAgbGluZS1oZWlnaHQ6IDMwcHg7CisgICAgdGV4dC1hbGln
bjogY2VudGVyOworICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCk7Ij4KKyAgPGRpdiBpZD0ic3BhY2luZyI+PC9kaXY+CisgIDxkaXYgaWQ9InNjcm9sbGVyIj4K
KyAgICA8ZGl2IGlkID0gInRvcC1zcGFjZXIiIGNsYXNzPSJzcGFjZXIiPjwvZGl2PgorCisgICAg
PGRpdiBpZCA9ICJib3R0b20tc3BhY2VyIiBjbGFzcz0ic3BhY2VyIj48L2Rpdj4KKyAgPC9kaXY+
Cis8c2NyaXB0PgordmFyIGNhY2hlID0ge307CisKKy8qIE9uZSBtb3JlIHRoYXQgdGhlIG1heGlt
dW0gdGhhdCBjYW4gYmUgZnVsbHkgZml0IG9uIHNjcmVlbi4gKi8KK3ZhciBtYXhWaXNpYmxlSXRl
bXMgPSAxMTsKKwordmFyIGxpc3RTaXplID0gMzAwOworCit2YXIgaXRlbUhlaWdodCA9IDMwOwor
CitmdW5jdGlvbiAkKG5hbWUpIHsKKyAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5h
bWUpOworfQorCitmdW5jdGlvbiBvblNjcm9sbChlKSB7CisgIHJlZHJhdygpOworfQorCitmdW5j
dGlvbiByZWRyYXcoKSB7CisgIC8vIENyZWF0ZSBuZXcgaXRlbXMgYW5kIGFkZCB0byBjYWNoZS4K
KyAgdmFyIHRvcCA9ICQoJ3Njcm9sbGVyJykuc2Nyb2xsVG9wOworICB2YXIgZmlyc3QgPSBNYXRo
LmZsb29yKHRvcCAvIDMwKTsKKyAgaWYgKGZpcnN0ID4gbGlzdFNpemUgLSBtYXhWaXNpYmxlSXRl
bXMpCisgICAgZmlyc3QgPSBsaXN0U2l6ZSAtIG1heFZpc2libGVJdGVtczsKKyAgdmFyIG5ld0l0
ZW1zID0gW107CisgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF4VmlzaWJsZUl0ZW1zOyBpKyspIHsK
KyAgICB2YXIgaW5kZXggPSBmaXJzdCArIGk7CisgICAgaWYgKGNhY2hlW2luZGV4XSA9PSB1bmRl
ZmluZWQpIHsKKyAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdsaXN0LWl0ZW0nOworICAgICAgZWxlbWVu
dC50ZXh0Q29udGVudCA9IFN0cmluZyhpbmRleCsxKTsKKyAgICAgIGVsZW1lbnQuZGF0YSA9IHt9
OworICAgICAgZWxlbWVudC5kYXRhLmluZGV4ID0gaW5kZXg7CisgICAgICBjYWNoZVtpbmRleF0g
PSBlbGVtZW50OworICAgICAgbmV3SXRlbXMucHVzaChlbGVtZW50KTsKKyAgICB9CisgIH0KKyAg
Ly8gUmVtb3ZlIGl0ZW1zIHRoYXQgYXJlIG5vdCB2aXNpYmxlLgorICBmb3IgKHZhciBpID0gMDsg
aSA8IGZpcnN0OyBpKyspIHsKKyAgICBpZiAoY2FjaGVbaV0pCisgICAgICBkZWxldGUgY2FjaGVb
aV07CisgIH0KKyAgZm9yICh2YXIgaSA9IGZpcnN0ICsgbWF4VmlzaWJsZUl0ZW1zOyBpIDwgbGlz
dFNpemU7IGkrKykgeworICAgIGlmIChjYWNoZVtpXSkKKyAgICAgIGRlbGV0ZSBjYWNoZVtpXTsK
KyAgfQorICAvLyBQYWQgc3BhY2VyIGVsZW1lbnRzIHRvIHByZXNlcnZlIGhlaWdodCBvZiBzY3Jv
bGxhYmxlIGxpc3QuCisgICQoJ3RvcC1zcGFjZXInKS5zdHlsZS5oZWlnaHQgPSAoZmlyc3QgKiBp
dGVtSGVpZ2h0KSArICdweCc7CisgICQoJ2JvdHRvbS1zcGFjZXInKS5zdHlsZS5oZWlnaHQgPQor
ICAgICAgKChsaXN0U2l6ZSAtIG1heFZpc2libGVJdGVtcyAtIGZpcnN0KSAqIDMwKSArICdweCc7
CisKKyAgLy8gUmVtb3ZlIG9mZi1zY3JlZW4gZWxlbWVudHMuCisgIHZhciBhbmNob3IgPSAkKCdi
b3R0b20tc3BhY2VyJyk7CisgIHZhciBwYXJlbnQgPSAkKCdzY3JvbGxlcicpOworICBmb3IgKHZh
ciBpdGVtID0gJCgndG9wLXNwYWNlcicpLm5leHRTaWJsaW5nOyBpdGVtICE9IGFuY2hvcjsgKSB7
CisgICAgaWYgKCFpdGVtLmNsYXNzTGlzdCB8fCAhaXRlbS5jbGFzc0xpc3QuY29udGFpbnMoJ2xp
c3QtaXRlbScpKSB7CisgICAgICBpdGVtID0gaXRlbS5uZXh0U2libGluZzsKKyAgICAgIGNvbnRp
bnVlOworICAgIH0KKyAgICBpZiAoIWNhY2hlW2l0ZW0uZGF0YS5pbmRleF0pIHsKKyAgICAgIHZh
ciBuZXh0ID0gaXRlbS5uZXh0U2libGluZzsKKyAgICAgIHNjcm9sbGVyLnJlbW92ZUNoaWxkKGl0
ZW0pOworICAgICAgaXRlbSA9IG5leHQ7CisgICAgfSBlbHNlIHsKKyAgICAgIGl0ZW0gPSBpdGVt
Lm5leHRTaWJsaW5nOworICAgIH0KKyAgfQorCisgIC8vIEluc2VydCBuZXcgb24tc2NyZWVuIGVs
ZW1lbnRzLgorICB2YXIgcmVmZXJlbmNlRWxlbWVudCA9ICQoJ3RvcC1zcGFjZXInKS5uZXh0U2li
bGluZzsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXdJdGVtcy5sZW5ndGg7IGkrKykgeworICAg
IHZhciBpbmRleCA9IG5ld0l0ZW1zW2ldLmRhdGEuaW5kZXg7CisgICAgd2hpbGUgKHJlZmVyZW5j
ZUVsZW1lbnQgIT0gYW5jaG9yICYmICghcmVmZXJlbmNlRWxlbWVudC5jbGFzc0xpc3QgfHwKKyAg
ICAgICAgICAgIXJlZmVyZW5jZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdsaXN0LWl0ZW0n
KSB8fAorICAgICAgICAgICByZWZlcmVuY2VFbGVtZW50LmRhdGEuaW5kZXggPCBpbmRleCkpIHsK
KyAgICAgIHJlZmVyZW5jZUVsZW1lbnQgPSByZWZlcmVuY2VFbGVtZW50Lm5leHRTaWJsaW5nOwor
ICAgIH0KKyAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKG5ld0l0ZW1zW2ldLCByZWZlcmVuY2VFbGVt
ZW50KTsKKyAgfQorfQorCiskKCdzY3JvbGxlcicpLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcs
IG9uU2Nyb2xsKTsKK3JlZHJhdygpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK3ZhciBzY3JvbGxDb3VudCA9IDA7Cit2YXIgd2hl
ZWxDb3VudCA9IDA7Cit2YXIgbmV4dFN0ZXA7Cit2YXIgc2Nyb2xsSW5kZXggPSAyOwordmFyIHN0
YXJ0UG9zaXRpb25YOwordmFyIHN0YXJ0UG9zaXRpb25ZOwordmFyIHNjcm9sbEFtb3VudDsKKwor
ZnVuY3Rpb24gZmlyc3RTdGVwKCkgeworICAgIGRlYnVnKCJiZWdpbiBzY3JvbGwiKTsKKyAgICB2
YXIgaXRlbSA9IGNhY2hlW3Njcm9sbEluZGV4XTsKKyAgICBzdGFydFBvc2l0aW9uWCA9IGl0ZW0u
b2Zmc2V0TGVmdCArIDU7CisgICAgc3RhcnRQb3NpdGlvblkgPSBpdGVtLm9mZnNldFRvcCArIDU7
CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZVNjcm9sbEJlZ2luKHN0YXJ0UG9zaXRpb25YLCBzdGFy
dFBvc2l0aW9uWSk7CisKKyAgICB2YXIgYWJvdmVTY3JvbGxlciA9IHNjcm9sbGVyLm9mZnNldFRv
cCAtIDMwOworICAgIHNjcm9sbEFtb3VudCA9IHN0YXJ0UG9zaXRpb25ZIC0gYWJvdmVTY3JvbGxl
cjsKKyAgICBkZWJ1Zygic2Nyb2xsIHVwIik7CisKKyAgICBuZXh0U3RlcCA9IHNlY29uZFN0ZXA7
CisKKyAgICBldmVudFNlbmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIC1zY3JvbGxBbW91bnQp
OworICAgIHNob3VsZEJlKCdzY3JvbGxlci5zY3JvbGxUb3AnLCAnJyArIHNjcm9sbEFtb3VudCk7
CisgICAgc2hvdWxkQmUoJ3Njcm9sbGVyLnNjcm9sbExlZnQnLCAnMCcpOworICAgIHNob3VsZEJl
KCd3aGVlbENvdW50JywgJzEnKTsKK30KKworZnVuY3Rpb24gc2Vjb25kU3RlcCgpIHsKKyAgICBz
aG91bGRCZSgnc2Nyb2xsQ291bnQnLCAnMScpOworICAgIHNob3VsZEJlKCd0eXBlb2YgY2FjaGVb
JyArIHNjcm9sbEluZGV4ICsgJ10nLCAndHlwZW9mIHVuZGVmaW5lZCcpOworICAgIGRlYnVnKCJz
Y3JvbGwgZG93biIpOworCisgICAgbmV4dFN0ZXAgPSB0aGlyZFN0ZXA7CisKKyAgICBldmVudFNl
bmRlci5nZXN0dXJlU2Nyb2xsVXBkYXRlKDAsIHNjcm9sbEFtb3VudCk7CisgICAgc2hvdWxkQmUo
J3Njcm9sbGVyLnNjcm9sbFRvcCcsICcwJyk7CisgICAgc2hvdWxkQmUoJ3Njcm9sbGVyLnNjcm9s
bExlZnQnLCAnMCcpOworICAgIHNob3VsZEJlKCd3aGVlbENvdW50JywgJzInKTsKK30KKworZnVu
Y3Rpb24gdGhpcmRTdGVwKCkgeworICAgIHNob3VsZEJlKCdzY3JvbGxDb3VudCcsICcyJyk7Cisg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQorewor
ICAgIHZhciBzY3JvbGxlciA9ICQoJ3Njcm9sbGVyJyk7CisgICAgc2Nyb2xsZXIuYWRkRXZlbnRM
aXN0ZW5lcigic2Nyb2xsIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICsrc2Nyb2xsQ291bnQ7Cisg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBuZXh0U3RlcCgpOwor
ICAgICAgICB9LCAwKTsKKyAgICB9KTsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2V3aGVlbCIsIGZ1bmN0aW9uKCkgeworICAgICAgICArK3doZWVsQ291bnQ7CisgICAgfSk7CisK
KyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgIGRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIGdlc3R1cmUgZXZlbnQgc2Nyb2xsaW5nIG9mIGEg
ZGl2IHdoZXJlIHRoZSBlbGVtZW50IHRoZSBzY3JvbGxpbmcgc3RhcnRzIG9uIGlzIHJlbW92ZWQg
ZnJvbSBhbiBvbnNjcm9sbCBldmVudCBoYW5kbGVyLicpOworICAgICAgICBpZiAoY2hlY2tUZXN0
RGVwZW5kZW5jaWVzKCkpIHsKKyAgICAgICAgICAgIGZpcnN0U3RlcCgpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgZXhpdElmTmVjZXNzYXJ5KCk7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiIp
OworICAgIH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>