<?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>141035</bug_id>
          
          <creation_ts>2015-01-29 08:50:47 -0800</creation_ts>
          <short_desc>ASSERTION FAILED: !m_adoptionIsRequired in WTF::RefCountedBase::ref</short_desc>
          <delta_ts>2015-02-06 06:46:30 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>116980</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Renata Hodovan">rhodovan.u-szeged</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>kling</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1065253</commentid>
    <comment_count>0</comment_count>
      <attachid>245625</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2015-01-29 08:50:47 -0800</bug_when>
    <thetext>Created attachment 245625
Test case

Load this with debug WK:

&lt;body onpageshow=&quot;window.print()&quot;&gt;
&lt;audio src=&quot;&quot;&gt;
&lt;script&gt;
    window.print();
&lt;/script&gt;

Note: according to the backtrace, this might be a GTK specific issue but I couldn&apos;t verify it on another port. It&apos;d be great if someone else could check it.


Backtrace:

ASSERTION FAILED: !m_adoptionIsRequired
../../Source/WTF/wtf/RefCounted.h(45) : void WTF::RefCountedBase::ref()

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff8affd700 (LWP 6793)]
0x00007fffed72443d in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:321
321	    *(int *)(uintptr_t)0xbbadbeef = 0;
#0  0x00007fffed72443d in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:321
#1  0x00007ffff252729e in WTF::RefCountedBase::ref (this=0x7fff9835f600) at ../../Source/WTF/wtf/RefCounted.h:45
#2  0x00007ffff2996a2f in WTF::refIfNotNull&lt;WebKit::PrinterListGtk&gt; (ptr=0x7fff9835f600) at ../../Source/WTF/wtf/PassRefPtr.h:36
#3  0x00007ffff29967b7 in WTF::RefPtr&lt;WebKit::PrinterListGtk&gt;::RefPtr (this=0x7fffffffc3c0, ptr=0x7fff9835f600) at ../../Source/WTF/wtf/RefPtr.h:43
#4  0x00007ffff299648f in WebKit::PrinterListGtk::shared () at ../../Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp:40
#5  0x00007ffff2838c1a in WebKit::WebChromeClient::print (this=0x6066c0, frame=0x7ffff7f39a00) at ../../Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp:664
#6  0x00007ffff34a5d20 in WebCore::Chrome::print (this=0x7ffff7f234b0, frame=0x7ffff7f39a00) at ../../Source/WebCore/page/Chrome.cpp:462
#7  0x00007ffff34cce8c in WebCore::DOMWindow::print (this=0x7ffff7f15a80) at ../../Source/WebCore/page/DOMWindow.cpp:1063
#8  0x00007ffff4138190 in WebCore::jsDOMWindowPrototypeFunctionPrint (exec=0x7fffffffc4b0) at DerivedSources/WebCore/JSDOMWindow.cpp:21367
#9  0x00007fff99d500a8 in ?? ()
#10 0x00007fffffffc500 in ?? ()
#11 0x00007fffed6d3ca8 in llint_entry () from /home/reni/data/REPOS/webkit/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065517</commentid>
    <comment_count>1</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-01-30 00:45:44 -0800</bug_when>
    <thetext>I&apos;m on it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065567</commentid>
    <comment_count>2</comment_count>
      <attachid>245720</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-01-30 07:35:01 -0800</bug_when>
    <thetext>Created attachment 245720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065569</commentid>
    <comment_count>3</comment_count>
      <attachid>245720</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-30 08:32:46 -0800</bug_when>
    <thetext>Comment on attachment 245720
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp:40
&gt; -RefPtr&lt;PrinterListGtk&gt; PrinterListGtk::shared()
&gt; +PassRefPtr&lt;PrinterListGtk&gt; PrinterListGtk::shared()
&gt;  {
&gt;      if (s_sharedPrinterList)
&gt; -        return s_sharedPrinterList;
&gt; +        return adoptRef(s_sharedPrinterList);

This is tricky (and probably buggy) but there was a reason to do it this way, see my comments in: https://bugs.webkit.org/show_bug.cgi?id=126979#c3 We should probably find a better way to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065601</commentid>
    <comment_count>4</comment_count>
      <attachid>245720</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-30 11:11:20 -0800</bug_when>
    <thetext>Comment on attachment 245720
Patch

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

&gt; Source/WebKit2/ChangeLog:9
&gt; +        PassRefPtr. Apart from that it was not adopting the reference of

We are moving away from PassRefPtr and using RefPtr as return value now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065602</commentid>
    <comment_count>5</comment_count>
      <attachid>245720</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-30 11:14:42 -0800</bug_when>
    <thetext>Comment on attachment 245720
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp:-37
&gt; -RefPtr&lt;PrinterListGtk&gt; PrinterListGtk::shared()

You can likely return a PrinterListGtk&amp; instead.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp:39
&gt;      if (s_sharedPrinterList)

You should probably use the same pattern for other singletons:
static NeverDestroyed&lt;PrinterListGtk&gt; sharedPrinterList;
return sharedPrinterList;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066051</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-02 01:21:31 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 245720 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=245720&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp:-37
&gt; &gt; -RefPtr&lt;PrinterListGtk&gt; PrinterListGtk::shared()
&gt; 
&gt; You can likely return a PrinterListGtk&amp; instead.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp:39
&gt; &gt;      if (s_sharedPrinterList)
&gt; 
&gt; You should probably use the same pattern for other singletons:
&gt; static NeverDestroyed&lt;PrinterListGtk&gt; sharedPrinterList;
&gt; return sharedPrinterList;

This is not exactly a singleton, and we do really want to destroy it on every print operation. The shared() method here is very confusing, I should have used getOrCreate instead. I think we can achieve the same using Ref&lt;&gt;, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066052</commentid>
    <comment_count>7</comment_count>
      <attachid>245861</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-02 01:26:28 -0800</bug_when>
    <thetext>Created attachment 245861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066053</commentid>
    <comment_count>8</comment_count>
      <attachid>245861</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-02 01:35:20 -0800</bug_when>
    <thetext>Comment on attachment 245861
Patch

Oops, I set the wrong flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066054</commentid>
    <comment_count>9</comment_count>
      <attachid>245862</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-02 01:41:52 -0800</bug_when>
    <thetext>Created attachment 245862
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066055</commentid>
    <comment_count>10</comment_count>
      <attachid>245862</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-02-02 02:00:22 -0800</bug_when>
    <thetext>Comment on attachment 245862
Rebased patch

The whole thing was indeed really confusing. The new name fits better indeed.

Have you checked that the ASSERT is not hit with your change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066057</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-02 02:36:07 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 245862 [details]
&gt; Rebased patch
&gt; 
&gt; The whole thing was indeed really confusing. The new name fits better indeed.

I agree

&gt; Have you checked that the ASSERT is not hit with your change?

No I haven&apos;t. The assert happens with you do RefPtr&lt;Foo&gt; f = adoptRef(new Foo); I think, which is no longer the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066061</commentid>
    <comment_count>12</comment_count>
      <attachid>245862</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-02-02 03:08:47 -0800</bug_when>
    <thetext>Comment on attachment 245862
Rebased patch

I told Carlos on IRC that the ASSERT was triggered by &quot;return s_sharedPrinterList;&quot; not on the adoptPtr. He confirmed that the ASSERT is hit even with his patch, so it deserves another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066124</commentid>
    <comment_count>13</comment_count>
      <attachid>245862</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-02 09:32:46 -0800</bug_when>
    <thetext>Comment on attachment 245862
Rebased patch

Clearing flags, since the patch is not exactly wrong but it doesn&apos;t fix the assert, because the issue is not the smart pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066126</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-02 09:49:17 -0800</bug_when>
    <thetext>So, the problem is not the smart pointer, but the nested main loop used by gtk_enumerate_printers again (see also bug #126979). We call PrinterListGtk::getOrCreate() in WebChromeClient::print() to ensure that for sync printing, the print operation doesn&apos;t run gtk_enumerate_printers(), because the nested main loop might process the GSource of the EndPrinting message, and finish the print operation unexpectedly causing a crash. The problem now is very similar. In this case there are two different calls to WebChromeClient::print(). The first one creates the PrinterListGtk(), but while gtk_enumerate_printers() is getting the printers, its nested main loop processes the GSource for the second print operation that ends up in WebChromeClient::print() again. So, PrinterListGtk::getOrCreate() is called again, but the previous one hasn&apos;t finished, the global pointer has been updated, but the constructor hasn&apos;t finished, so we try to get a reference of an object that is still being constructed. This is not easy to fix, in both cases WebChromeClient::print() is called from the same thread, so we can&apos;t use a mutex or we would end up blocking the main thread, and gtk_enumerate_printers would never finish. The only think I can think of is running gtk_enumerate_printers() in a helper thread, blocking the main thread until the helper finishes (joining the thread, since print() is sync, a second print() should never be processed until the previous one has finished). But the nested main loop of gtk_enumerate_printers uses the default main context unconditionally, so the following print operation would still be handled by the nested main loop, but now in the thread, causing the thread to never finish. We could pass wait=False to gtk_enumerate_printers() and use our own main loop and context. That way the following print would be sent to the default main context, but the main loop would be blocked waiting for the helper thread to finish. This approach would work if it wasn&apos;t because the cups printing backend of GTK+ uses custom GSources attached to the default main context instead of the default context of the current thread. I&apos;ve written a patch for GTK+, but we would still need to decide what to do when the GTK+ version is not recent enough (once we have a GTK+ version with the fix).
See https://bugzilla.gnome.org/show_bug.cgi?id=743857</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066787</commentid>
    <comment_count>15</comment_count>
      <attachid>246027</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-04 05:38:15 -0800</bug_when>
    <thetext>Created attachment 246027
New patch

This is a different approach, because using a secondary thread is too risky, it could be easy to make the web process hang forever waiting for the thread to finish if something changes in GTK+ or if a third-party GTK+ print backend is used. We also avoid having to depend on a specific GTK+ version for this fix. With the threads fix, we were showing the print dialog twice, once the first one is closed the second one shows up, which doesn&apos;t make much sense but it&apos;s what the test case does. However, I &apos;ve realized that both firefox and chromium show the print dialog only once for that test case. So, I think the best and easiest approach is to just ignore the second print if the first print is still enumerating the printers. I&apos;ve tried to write a unit tests for this, for I couldn&apos;t reproduce the issue in a test case, note that this depends on how fast things happen, and in unit tests things are usually faster. This is a very edge case in any case, so the important thing is to no assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067350</commentid>
    <comment_count>16</comment_count>
      <attachid>246027</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-02-06 06:14:38 -0800</bug_when>
    <thetext>Comment on attachment 246027
New patch

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

r=me with one nit.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp:37
&gt; +RefPtr&lt;PrinterListGtk&gt; PrinterListGtk::getOrCreate()

getOrCreate() generally means that we&apos;re always getting a valid pointer. That&apos;s why I think we should name it maybeGetOrCreate().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067351</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-06 06:18:12 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Comment on attachment 246027 [details]
&gt; New patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=246027&amp;action=review
&gt; 
&gt; r=me with one nit.

Thanks!

&gt; &gt; Source/WebKit2/WebProcess/WebPage/gtk/PrinterListGtk.cpp:37
&gt; &gt; +RefPtr&lt;PrinterListGtk&gt; PrinterListGtk::getOrCreate()
&gt; 
&gt; getOrCreate() generally means that we&apos;re always getting a valid pointer.
&gt; That&apos;s why I think we should name it maybeGetOrCreate().

Well, there are a lot of ::create() methods that can return nullptr and they are not maybeCreate() :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067352</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-06 06:46:30 -0800</bug_when>
    <thetext>Committed r179744: &lt;http://trac.webkit.org/changeset/179744&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>245625</attachid>
            <date>2015-01-29 08:50:47 -0800</date>
            <delta_ts>2015-01-29 08:50:47 -0800</delta_ts>
            <desc>Test case</desc>
            <filename>crash.html</filename>
            <type>text/html</type>
            <size>88</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64">PGJvZHkgb25wYWdlc2hvdz0id2luZG93LnByaW50KCkiPgo8YXVkaW8gc3JjPSIiPgo8c2NyaXB0
PgogICAgd2luZG93LnByaW50KCk7Cjwvc2NyaXB0Pg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245720</attachid>
            <date>2015-01-30 07:35:01 -0800</date>
            <delta_ts>2015-02-02 01:26:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141035-20150130163506.patch</filename>
            <type>text/plain</type>
            <size>2341</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjhiMmU4MmM0OTgxMDg2
ZDE2YTI0MTUxYjRjMzkyZmYwZGYzOTgxNy4uZDJmZTdjYzI1OTJlNDA5MjdjMDUwMDM2ZGJkYzBl
YTllNDY4YTQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTAxLTMwICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIEFTU0VSVElP
TiBGQUlMRUQ6ICFtX2Fkb3B0aW9uSXNSZXF1aXJlZCBpbiBXVEY6OlJlZkNvdW50ZWRCYXNlOjpy
ZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTAz
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBt
ZXRob2Qgd2FzIGluY29ycmVjdGx5IHJldHVybmluZyBhIFJlZlB0ciBpbnN0ZWFkIG9mIGEKKyAg
ICAgICAgUGFzc1JlZlB0ci4gQXBhcnQgZnJvbSB0aGF0IGl0IHdhcyBub3QgYWRvcHRpbmcgdGhl
IHJlZmVyZW5jZSBvZgorICAgICAgICB0aGUgcmF3IHBvaW50ZXIgaXQgd2FzIHJldHVybmluZy4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQcmludGVyTGlzdEd0azo6c2hhcmVkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmg6CisKIDIwMTUtMDEtMjUgIFRpbW90
aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmVzcG9u
c2l2ZSBXZWIgcHJvY2Vzc2VzIHNvbWV0aW1lcyB0aHJvdyBPYmpDIGV4Y2VwdGlvbnMgdW5kZXIg
ZGlkUGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9QcmludGVyTGlzdEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmNwcAppbmRleCBjM2UzNjRi
NjRlODJmMDJiNTQ5YTllZGUxOTM0OTg3YTIwNTAzOTVlLi4yZmFhY2Y4OGMyYzA5YmM4ZjMwODk0
NDNmODI2Y2RkNTljMTZlYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmNwcApAQCAtMzQsMTAgKzM0LDEwIEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBQcmludGVyTGlzdEd0ayogUHJpbnRlckxpc3RHdGs6OnNf
c2hhcmVkUHJpbnRlckxpc3QgPSBudWxscHRyOwogCi1SZWZQdHI8UHJpbnRlckxpc3RHdGs+IFBy
aW50ZXJMaXN0R3RrOjpzaGFyZWQoKQorUGFzc1JlZlB0cjxQcmludGVyTGlzdEd0az4gUHJpbnRl
ckxpc3RHdGs6OnNoYXJlZCgpCiB7CiAgICAgaWYgKHNfc2hhcmVkUHJpbnRlckxpc3QpCi0gICAg
ICAgIHJldHVybiBzX3NoYXJlZFByaW50ZXJMaXN0OworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
c19zaGFyZWRQcmludGVyTGlzdCk7CiAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByaW50ZXJM
aXN0R3RrKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvUHJpbnRlckxpc3RHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvUHJpbnRlckxpc3RHdGsuaAppbmRleCA1YTQ2NmY0N2QxMDBiNDljMGVlNWFhNTlkMjU4
ODg4ODVlOTFmZGExLi43NzM0ZGIzNmE5MmQzZGMyYjg4NjUxZjc1YTlkMTFmZTI3ZTFkZjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJM
aXN0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9Qcmlu
dGVyTGlzdEd0ay5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBQcmludGVyTGlzdEd0azogcHVibGljIFJlZkNvdW50ZWQ8UHJpbnRlckxpc3RHdGs+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFByaW50ZXJMaXN0R3RrPiBzaGFyZWQoKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxQcmludGVyTGlzdEd0az4gc2hhcmVkKCk7CiAgICAgflByaW50ZXJM
aXN0R3RrKCk7CiAKICAgICBHdGtQcmludGVyKiBmaW5kUHJpbnRlcihjb25zdCBjaGFyKikgY29u
c3Q7Cg==
</data>
<flag name="review"
          id="270652"
          type_id="1"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245861</attachid>
            <date>2015-02-02 01:26:28 -0800</date>
            <delta_ts>2015-02-02 01:41:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-printter-list.diff</filename>
            <type>text/plain</type>
            <size>4036</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4YmM4NGMyLi4wM2NkODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTUtMDItMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6ICFtX2Fkb3B0aW9uSXNSZXF1aXJlZCBpbiBX
VEY6OlJlZkNvdW50ZWRCYXNlOjpyZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MTAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBSZWYgaW5zdGVhZCBvZiBSZWZQdHIgaW4gUHJpbnRlckxpc3RH
dGssIGFuZCByZW5hbWUgc2hhcmVkKCkKKyAgICAgICAgYXMgZ2V0T3JDcmVhdGUoKS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpwcmludCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9QcmludGVyTGlzdEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBy
aW50ZXJMaXN0R3RrOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByaW50ZXJMaXN0
R3RrOjpzaGFyZWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
UHJpbnRlckxpc3RHdGsuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBy
aW50T3BlcmF0aW9uR3RrLmNwcDoKKwogMjAxNS0wMS0yOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVzaXplIHRoZSByZWRpcmVj
dGVkIFhDb21wb3NpdGUgYWdhaW4gYWZ0ZXIgbGVhdmluZyBhY2NlbGVyYXRlZCBjb21wb3NpdGlu
ZyBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggZWE1YTM5OC4uODAyYjk4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNjYxLDcgKzY2MSw3IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpwcmludChGcmFtZSogZnJhbWUpCiAgICAgLy8gdGhlIHByaW50IG9wZXJhdGlvbiBp
cyBmaW5pc2hlZCB1bmV4cGVjdGVseSBhbmQgdGhlIHdlYiBwcm9jZXNzIGNyYXNoZXMsIHNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2OTc5LgogICAgIC8vIFRo
ZSBQcmludGVyTGlzdEd0ayBjbGFzcyBnZXRzIHRoZSBsaXN0IG9mIHByaW50ZXJzIGluIHRoZSBj
b25zdHJ1Y3RvciBzbyB3ZSBqdXN0IG5lZWQgdG8gZW5zdXJlIHRoZXJlJ3MgYW4gaW5zdGFuY2Ug
YWxpdmUKICAgICAvLyBkdXJpbmcgdGhlIHN5bmNocm9ub3VzIHByaW50IG9wZXJhdGlvbi4KLSAg
ICBSZWZQdHI8UHJpbnRlckxpc3RHdGs+IHByaW50ZXJMaXN0ID0gUHJpbnRlckxpc3RHdGs6OnNo
YXJlZCgpOworICAgIFJlZlB0cjxQcmludGVyTGlzdEd0az4gcHJpbnRlckxpc3QgPSBQcmludGVy
TGlzdEd0azo6Z2V0T3JDcmVhdGUoKTsKICNlbmRpZgogCiAgICAgdW5zaWduZWQgc3luY1NlbmRG
bGFncyA9IElQQzo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsu
Y3BwCmluZGV4IGMzZTM2NGIuLmM1MmRmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsuY3BwCkBAIC0zNCwxMiAr
MzQsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFByaW50ZXJMaXN0R3RrKiBQcmludGVyTGlz
dEd0azo6c19zaGFyZWRQcmludGVyTGlzdCA9IG51bGxwdHI7CiAKLVJlZlB0cjxQcmludGVyTGlz
dEd0az4gUHJpbnRlckxpc3RHdGs6OnNoYXJlZCgpCitSZWY8UHJpbnRlckxpc3RHdGs+IFByaW50
ZXJMaXN0R3RrOjpnZXRPckNyZWF0ZSgpCiB7CiAgICAgaWYgKHNfc2hhcmVkUHJpbnRlckxpc3Qp
Ci0gICAgICAgIHJldHVybiBzX3NoYXJlZFByaW50ZXJMaXN0OworICAgICAgICByZXR1cm4gKnNf
c2hhcmVkUHJpbnRlckxpc3Q7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByaW50ZXJMaXN0
R3RrKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcmludGVyTGlzdEd0ayk7CiB9CiAKIGdi
b29sZWFuIFByaW50ZXJMaXN0R3RrOjplbnVtZXJhdGVQcmludGVyc0Z1bmN0aW9uKEd0a1ByaW50
ZXIqIHByaW50ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmgKaW5kZXggNWE0NjZmNC4uYjgwMmVjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9QcmludGVyTGlzdEd0ay5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRlckxpc3RH
dGsuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUHJpbnRl
ckxpc3RHdGs6IHB1YmxpYyBSZWZDb3VudGVkPFByaW50ZXJMaXN0R3RrPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxQcmludGVyTGlzdEd0az4gc2hhcmVkKCk7CisgICAgc3RhdGljIFJl
ZjxQcmludGVyTGlzdEd0az4gZ2V0T3JDcmVhdGUoKTsKICAgICB+UHJpbnRlckxpc3RHdGsoKTsK
IAogICAgIEd0a1ByaW50ZXIqIGZpbmRQcmludGVyKGNvbnN0IGNoYXIqKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVy
YXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
cmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggMjMzMjZiNC4uY2IzYWVhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmlu
dE9wZXJhdGlvbkd0ay5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgICAgICBtX3By
aW50Q29udGV4dCA9IHByaW50Q29udGV4dDsKICAgICAgICAgbV9jYWxsYmFja0lEID0gY2FsbGJh
Y2tJRDsKIAotICAgICAgICBSZWZQdHI8UHJpbnRlckxpc3RHdGs+IHByaW50ZXJMaXN0ID0gUHJp
bnRlckxpc3RHdGs6OnNoYXJlZCgpOworICAgICAgICBSZWZQdHI8UHJpbnRlckxpc3RHdGs+IHBy
aW50ZXJMaXN0ID0gUHJpbnRlckxpc3RHdGs6OmdldE9yQ3JlYXRlKCk7CiAgICAgICAgIGNvbnN0
IGNoYXIqIHByaW50ZXJOYW1lID0gZ3RrX3ByaW50X3NldHRpbmdzX2dldF9wcmludGVyKG1fcHJp
bnRTZXR0aW5ncy5nZXQoKSk7CiAgICAgICAgIEd0a1ByaW50ZXIqIHByaW50ZXIgPSBwcmludGVy
TmFtZSA/IHByaW50ZXJMaXN0LT5maW5kUHJpbnRlcihwcmludGVyTmFtZSkgOiBwcmludGVyTGlz
dC0+ZGVmYXVsdFByaW50ZXIoKTsKICAgICAgICAgaWYgKCFwcmludGVyKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245862</attachid>
            <date>2015-02-02 01:41:52 -0800</date>
            <delta_ts>2015-02-04 05:38:15 -0800</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wk2-printter-list.diff</filename>
            <type>text/plain</type>
            <size>3990</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwMjFlNzg4Li44OTA0OWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTUtMDItMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6ICFtX2Fkb3B0aW9uSXNSZXF1aXJlZCBpbiBX
VEY6OlJlZkNvdW50ZWRCYXNlOjpyZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MTAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBSZWYgaW5zdGVhZCBvZiBSZWZQdHIgaW4gUHJpbnRlckxpc3RH
dGssIGFuZCByZW5hbWUgc2luZ2xldG9uKCkKKyAgICAgICAgYXMgZ2V0T3JDcmVhdGUoKS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpwcmludCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9QcmludGVyTGlzdEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlByaW50ZXJMaXN0R3RrOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByaW50ZXJM
aXN0R3RrOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvUHJpbnRlckxpc3RHdGsuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcDoKKwogMjAxNS0wMi0wMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMgaW4gSGlzdG9y
eUl0ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBmMmEwMWJlLi5jZDQ2ZmRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC02NjIsNyArNjYyLDcgQEAgdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnByaW50KEZyYW1lKiBmcmFtZSkKICAgICAvLyB0aGUgcHJpbnQgb3BlcmF0aW9uIGlz
IGZpbmlzaGVkIHVuZXhwZWN0ZWx5IGFuZCB0aGUgd2ViIHByb2Nlc3MgY3Jhc2hlcywgc2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY5NzkuCiAgICAgLy8gVGhl
IFByaW50ZXJMaXN0R3RrIGNsYXNzIGdldHMgdGhlIGxpc3Qgb2YgcHJpbnRlcnMgaW4gdGhlIGNv
bnN0cnVjdG9yIHNvIHdlIGp1c3QgbmVlZCB0byBlbnN1cmUgdGhlcmUncyBhbiBpbnN0YW5jZSBh
bGl2ZQogICAgIC8vIGR1cmluZyB0aGUgc3luY2hyb25vdXMgcHJpbnQgb3BlcmF0aW9uLgotICAg
IFJlZlB0cjxQcmludGVyTGlzdEd0az4gcHJpbnRlckxpc3QgPSBQcmludGVyTGlzdEd0azo6c2lu
Z2xldG9uKCk7CisgICAgUmVmUHRyPFByaW50ZXJMaXN0R3RrPiBwcmludGVyTGlzdCA9IFByaW50
ZXJMaXN0R3RrOjpnZXRPckNyZWF0ZSgpOwogI2VuZGlmCiAKICAgICB1bnNpZ25lZCBzeW5jU2Vu
ZEZsYWdzID0gSVBDOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9QcmludGVyTGlzdEd0
ay5jcHAKaW5kZXggOWIzOWFmNy4uYzUyZGZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9QcmludGVyTGlzdEd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9QcmludGVyTGlzdEd0ay5jcHAKQEAgLTM0LDEy
ICszNCwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUHJpbnRlckxpc3RHdGsqIFByaW50ZXJM
aXN0R3RrOjpzX3NoYXJlZFByaW50ZXJMaXN0ID0gbnVsbHB0cjsKIAotUmVmUHRyPFByaW50ZXJM
aXN0R3RrPiBQcmludGVyTGlzdEd0azo6c2luZ2xldG9uKCkKK1JlZjxQcmludGVyTGlzdEd0az4g
UHJpbnRlckxpc3RHdGs6OmdldE9yQ3JlYXRlKCkKIHsKICAgICBpZiAoc19zaGFyZWRQcmludGVy
TGlzdCkKLSAgICAgICAgcmV0dXJuIHNfc2hhcmVkUHJpbnRlckxpc3Q7CisgICAgICAgIHJldHVy
biAqc19zaGFyZWRQcmludGVyTGlzdDsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHJpbnRl
ckxpc3RHdGspOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFByaW50ZXJMaXN0R3RrKTsKIH0K
IAogZ2Jvb2xlYW4gUHJpbnRlckxpc3RHdGs6OmVudW1lcmF0ZVByaW50ZXJzRnVuY3Rpb24oR3Rr
UHJpbnRlciogcHJpbnRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsuaAppbmRleCBmYWJhODJjLi5iODAyZWMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0
R3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9QcmludGVy
TGlzdEd0ay5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBQ
cmludGVyTGlzdEd0azogcHVibGljIFJlZkNvdW50ZWQ8UHJpbnRlckxpc3RHdGs+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPFByaW50ZXJMaXN0R3RrPiBzaW5nbGV0b24oKTsKKyAgICBz
dGF0aWMgUmVmPFByaW50ZXJMaXN0R3RrPiBnZXRPckNyZWF0ZSgpOwogICAgIH5QcmludGVyTGlz
dEd0aygpOwogCiAgICAgR3RrUHJpbnRlciogZmluZFByaW50ZXIoY29uc3QgY2hhciopIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
cmludE9wZXJhdGlvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCA5ODU5Mjk4Li41NmNkZDM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3Bl
cmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fcHJpbnRDb250ZXh0ID0gcHJpbnRDb250ZXh0OwogICAgICAgICBtX2NhbGxiYWNrSUQg
PSBjYWxsYmFja0lEOwogCi0gICAgICAgIFJlZlB0cjxQcmludGVyTGlzdEd0az4gcHJpbnRlckxp
c3QgPSBQcmludGVyTGlzdEd0azo6c2luZ2xldG9uKCk7CisgICAgICAgIFJlZlB0cjxQcmludGVy
TGlzdEd0az4gcHJpbnRlckxpc3QgPSBQcmludGVyTGlzdEd0azo6Z2V0T3JDcmVhdGUoKTsKICAg
ICAgICAgY29uc3QgY2hhciogcHJpbnRlck5hbWUgPSBndGtfcHJpbnRfc2V0dGluZ3NfZ2V0X3By
aW50ZXIobV9wcmludFNldHRpbmdzLmdldCgpKTsKICAgICAgICAgR3RrUHJpbnRlciogcHJpbnRl
ciA9IHByaW50ZXJOYW1lID8gcHJpbnRlckxpc3QtPmZpbmRQcmludGVyKHByaW50ZXJOYW1lKSA6
IHByaW50ZXJMaXN0LT5kZWZhdWx0UHJpbnRlcigpOwogICAgICAgICBpZiAoIXByaW50ZXIpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246027</attachid>
            <date>2015-02-04 05:38:15 -0800</date>
            <delta_ts>2015-02-06 06:14:38 -0800</delta_ts>
            <desc>New patch</desc>
            <filename>wk2-print-print.diff</filename>
            <type>text/plain</type>
            <size>6858</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1ODkwODYzLi43YTRkMjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTUtMDItMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6ICFtX2Fkb3B0aW9uSXNSZXF1aXJlZCBpbiBX
VEY6OlJlZkNvdW50ZWRCYXNlOjpyZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MTAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbmFtZSBQcmludGVyTGlzdEd0azo6c2luZ2xldG9uKCkgYXMgUHJp
bnRlckxpc3RHdGs6OmdldE9yQ3JlYXRlKCksIGFuZAorICAgICAgICBtYWtlIGl0IHJldHVybiBu
dWxscHRyIHdoZW4gdGhlIHNoYXJlZCBQcmludGVyTGlzdEd0ayBvYmplY3QgaXMKKyAgICAgICAg
c3RpbGwgYmVpbmcgY3JlYXRlZC4gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBuZXN0ZWQgbG9vcCB1
c2VkIGJ5CisgICAgICAgIGd0a19lbnVtZXJhdGVfcHJpbnRlcnMgZGlzcGF0Y2hlcyBhIEdTb3Vy
Y2UgdGhhdCBzdGFydHMgYSBuZXcKKyAgICAgICAgc3luY2hyb25vdXMgcHJpbnQgb3BlcmF0aW9u
LiBJbiB0aGF0IGNhc2Ugd2UganVzdCBpZ25vcmUgdGhlCisgICAgICAgIHNlY29uZCBwcmludCBv
cGVyYXRpb24sIHNpbmNlIHRoZXJlJ3MgYWxyZWFkeSBvbmUgb25nb2luZy4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpwcmludCk6IFJldHVybiBlYXJseSBpZgorICAgICAg
ICBQcmludGVyTGlzdEd0azo6Z2V0T3JDcmVhdGUoKSByZXR1cm4gbnVsbHB0ci4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UHJpbnRlckxpc3RHdGs6OmdldE9yQ3JlYXRlKTogUmV0dXJuIG51bGxwdHIgaWYgdGhl
CisgICAgICAgIFByaW50ZXJMaXN0R3RrIGlzIHN0aWxsIGVudW1lcmF0aW5nIHRoZSBwcmludGVy
cy4KKyAgICAgICAgKFdlYktpdDo6UHJpbnRlckxpc3RHdGs6OlByaW50ZXJMaXN0R3RrKTogSW5p
dGlhbGl6ZQorICAgICAgICBtX2VudW1lcmF0aW5nUHJpbnRlcnMgdG8gdHJ1ZSBiZWZvcmUgY2Fs
bGluZworICAgICAgICBndGtfZW51bWVyYXRlX3ByaW50ZXJzLCBhbmQgdG8gZmFsc2Ugb25jZSBp
dCBmaW5pc2hlcy4KKyAgICAgICAgKFdlYktpdDo6UHJpbnRlckxpc3RHdGs6OnNpbmdsZXRvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlByaW50ZXJMaXN0R3RrOjplbnVtZXJhdGVQcmlu
dGVyc0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1ByaW50ZXJMaXN0R3RrLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
cmludE9wZXJhdGlvbkd0ay5jcHA6IEFkZCBhbgorICAgICAgICBhc3NlcnRpb24gaGVyZSBzaW5j
ZSBQcmludGVyTGlzdEd0azo6Z2V0T3JDcmVhdGUoKSBzaG91bGQgbmV2ZXIKKyAgICAgICAgcmV0
dXJuIG51bGxwdHIgYXQgdGhpcyBwb2ludC4KKwogMjAxNS0wMi0wNCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCByZW1vdmVGaXJzdCh2YWx1ZSkgLyByZW1v
dmVBbGwodmFsdWUpIG1ldGhvZHMgdG8gV1RGOjpWZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAppbmRleCBmMmEwMWJlLi43ZTE5ZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC02
NjIsNyArNjYyLDE3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpwcmludChGcmFtZSogZnJhbWUp
CiAgICAgLy8gdGhlIHByaW50IG9wZXJhdGlvbiBpcyBmaW5pc2hlZCB1bmV4cGVjdGVseSBhbmQg
dGhlIHdlYiBwcm9jZXNzIGNyYXNoZXMsIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI2OTc5LgogICAgIC8vIFRoZSBQcmludGVyTGlzdEd0ayBjbGFzcyBnZXRz
IHRoZSBsaXN0IG9mIHByaW50ZXJzIGluIHRoZSBjb25zdHJ1Y3RvciBzbyB3ZSBqdXN0IG5lZWQg
dG8gZW5zdXJlIHRoZXJlJ3MgYW4gaW5zdGFuY2UgYWxpdmUKICAgICAvLyBkdXJpbmcgdGhlIHN5
bmNocm9ub3VzIHByaW50IG9wZXJhdGlvbi4KLSAgICBSZWZQdHI8UHJpbnRlckxpc3RHdGs+IHBy
aW50ZXJMaXN0ID0gUHJpbnRlckxpc3RHdGs6OnNpbmdsZXRvbigpOworICAgIFJlZlB0cjxQcmlu
dGVyTGlzdEd0az4gcHJpbnRlckxpc3QgPSBQcmludGVyTGlzdEd0azo6Z2V0T3JDcmVhdGUoKTsK
KyAgICBpZiAoIXByaW50ZXJMaXN0KSB7CisgICAgICAgIC8vIFByaW50ZXJMaXN0R3RrOjpnZXRP
ckNyZWF0ZSgpIHJldHVybnMgbnVsbHB0ciB3aGVuIGNhbGxlZCB3aGlsZSBhIHByaW50ZXJzIGVu
dW1lcmF0aW9uIGlzIG9uZ29pbmcuCisgICAgICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBpZiBhIHN5
bmNocm9ub3VzIHByaW50IGlzIHN0YXJ0ZWQgYnkgYSBKYXZhU2NyaXB0IGFuZCBhbm90aGVyIG9u
ZSBpcyBpbm1lZGl0YWxleSBzdGFydGVkCisgICAgICAgIC8vIGZyb20gYSBKYXZhU2NyaXB0IGV2
ZW50IGxpc3RlbmVyLiBUaGUgc2Vjb25kIHByaW50IG9wZXJhdGlvbiBpcyBoYW5kbGVkIGJ5IHRo
ZSBuZXN0ZWQgbWFpbiBsb29wIHVzZWQgYnkgR1RLKworICAgICAgICAvLyB0byBlbnVtZXJhdGUg
dGhlIHByaW50ZXJzLCBhbmQgd2UgZW5kIHVwIGhlcmUgdHJ5aW5nIHRvIGdldCBhIHJlZmVyZW5j
ZSBvZiBhbiBvYmplY3QgdGhhdCBpcyBiZWluZyBjb25zdHJ1Y3RlZC4KKyAgICAgICAgLy8gSXQn
cyB2ZXJ5IHVubGlrZWx5IHRoYXQgdGhlIHVzZXIgd2FudHMgdG8gcHJpbnQgdHdpY2UgaW4gYSBy
b3csIGFuZCBvdGhlciBicm93c2VycyBkb24ndCBkbyB0d28gcHJpbnQgb3BlcmF0aW9ucworICAg
ICAgICAvLyBpbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSBlaXRoZXIuIFNvLCB0aGUgc2FmZXN0IHNv
bHV0aW9uIGlzIHRvIHJldHVybiBlYXJseSBoZXJlIGFuZCBpZ25vcmUgdGhlIHNlY29uZCBwcmlu
dC4KKyAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDEwMzUKKyAgICAgICAgcmV0dXJuOworICAgIH0KICNlbmRpZgogCiAgICAgdW5zaWduZWQg
c3luY1NlbmRGbGFncyA9IElQQzo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJM
aXN0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRl
ckxpc3RHdGsuY3BwCmluZGV4IDliMzlhZjcuLjhkZGM5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsuY3BwCkBA
IC0zNCwyNyArMzQsMjYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFByaW50ZXJMaXN0R3RrKiBQ
cmludGVyTGlzdEd0azo6c19zaGFyZWRQcmludGVyTGlzdCA9IG51bGxwdHI7CiAKLVJlZlB0cjxQ
cmludGVyTGlzdEd0az4gUHJpbnRlckxpc3RHdGs6OnNpbmdsZXRvbigpCitSZWZQdHI8UHJpbnRl
ckxpc3RHdGs+IFByaW50ZXJMaXN0R3RrOjpnZXRPckNyZWF0ZSgpCiB7CiAgICAgaWYgKHNfc2hh
cmVkUHJpbnRlckxpc3QpCi0gICAgICAgIHJldHVybiBzX3NoYXJlZFByaW50ZXJMaXN0OworICAg
ICAgICByZXR1cm4gc19zaGFyZWRQcmludGVyTGlzdC0+aXNFbnVtZXJhdGluZ1ByaW50ZXJzKCkg
PyBudWxscHRyIDogc19zaGFyZWRQcmludGVyTGlzdDsKIAogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUHJpbnRlckxpc3RHdGspOwogfQogCi1nYm9vbGVhbiBQcmludGVyTGlzdEd0azo6ZW51bWVy
YXRlUHJpbnRlcnNGdW5jdGlvbihHdGtQcmludGVyKiBwcmludGVyKQotewotICAgIEFTU0VSVChz
X3NoYXJlZFByaW50ZXJMaXN0KTsKLSAgICBzX3NoYXJlZFByaW50ZXJMaXN0LT5hZGRQcmludGVy
KHByaW50ZXIpOwotICAgIHJldHVybiBGQUxTRTsKLX0KLQogUHJpbnRlckxpc3RHdGs6OlByaW50
ZXJMaXN0R3RrKCkKICAgICA6IG1fZGVmYXVsdFByaW50ZXIobnVsbHB0cikKKyAgICAsIG1fZW51
bWVyYXRpbmdQcmludGVycyh0cnVlKQogewogICAgIEFTU0VSVCghc19zaGFyZWRQcmludGVyTGlz
dCk7CiAgICAgc19zaGFyZWRQcmludGVyTGlzdCA9IHRoaXM7Ci0gICAgZ3RrX2VudW1lcmF0ZV9w
cmludGVycyhyZWludGVycHJldF9jYXN0PEd0a1ByaW50ZXJGdW5jPigmZW51bWVyYXRlUHJpbnRl
cnNGdW5jdGlvbiksIG51bGxwdHIsIG51bGxwdHIsIFRSVUUpOworICAgIGd0a19lbnVtZXJhdGVf
cHJpbnRlcnMoW10oR3RrUHJpbnRlciogcHJpbnRlciwgZ3BvaW50ZXIpIC0+IGdib29sZWFuIHsK
KyAgICAgICAgQVNTRVJUKHNfc2hhcmVkUHJpbnRlckxpc3QpOworICAgICAgICBzX3NoYXJlZFBy
aW50ZXJMaXN0LT5hZGRQcmludGVyKHByaW50ZXIpOworICAgICAgICByZXR1cm4gRkFMU0U7Cisg
ICAgfSwgbnVsbHB0ciwgbnVsbHB0ciwgVFJVRSk7CisgICAgbV9lbnVtZXJhdGluZ1ByaW50ZXJz
ID0gZmFsc2U7CiB9CiAKIFByaW50ZXJMaXN0R3RrOjp+UHJpbnRlckxpc3RHdGsoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9QcmludGVyTGlzdEd0
ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9QcmludGVyTGlzdEd0
ay5oCmluZGV4IGZhYmE4MmMuLmI5MThkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvUHJpbnRlckxpc3RHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1ByaW50ZXJMaXN0R3RrLmgKQEAgLTM4LDcgKzM4LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFByaW50ZXJMaXN0R3RrOiBwdWJsaWMgUmVm
Q291bnRlZDxQcmludGVyTGlzdEd0az4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8UHJp
bnRlckxpc3RHdGs+IHNpbmdsZXRvbigpOworICAgIHN0YXRpYyBSZWZQdHI8UHJpbnRlckxpc3RH
dGs+IGdldE9yQ3JlYXRlKCk7CiAgICAgflByaW50ZXJMaXN0R3RrKCk7CiAKICAgICBHdGtQcmlu
dGVyKiBmaW5kUHJpbnRlcihjb25zdCBjaGFyKikgY29uc3Q7CkBAIC00NywxMSArNDcsMTIgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBQcmludGVyTGlzdEd0aygpOwogCi0gICAgc3RhdGljIGdi
b29sZWFuIGVudW1lcmF0ZVByaW50ZXJzRnVuY3Rpb24oR3RrUHJpbnRlciopOwogICAgIHZvaWQg
YWRkUHJpbnRlcihHdGtQcmludGVyKik7CisgICAgYm9vbCBpc0VudW1lcmF0aW5nUHJpbnRlcnMo
KSBjb25zdCB7IHJldHVybiBtX2VudW1lcmF0aW5nUHJpbnRlcnM7IH0KIAogICAgIFZlY3RvcjxH
UmVmUHRyPEd0a1ByaW50ZXI+LCA0PiBtX3ByaW50ZXJMaXN0OwogICAgIEd0a1ByaW50ZXIqIG1f
ZGVmYXVsdFByaW50ZXI7CisgICAgYm9vbCBtX2VudW1lcmF0aW5nUHJpbnRlcnM7CiAgICAgc3Rh
dGljIFByaW50ZXJMaXN0R3RrKiBzX3NoYXJlZFByaW50ZXJMaXN0OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlv
bkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50
T3BlcmF0aW9uR3RrLmNwcAppbmRleCA5ODU5Mjk4Li42YzNjODJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3Bl
cmF0aW9uR3RrLmNwcApAQCAtNjcsNyArNjcsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fcHJpbnRD
b250ZXh0ID0gcHJpbnRDb250ZXh0OwogICAgICAgICBtX2NhbGxiYWNrSUQgPSBjYWxsYmFja0lE
OwogCi0gICAgICAgIFJlZlB0cjxQcmludGVyTGlzdEd0az4gcHJpbnRlckxpc3QgPSBQcmludGVy
TGlzdEd0azo6c2luZ2xldG9uKCk7CisgICAgICAgIFJlZlB0cjxQcmludGVyTGlzdEd0az4gcHJp
bnRlckxpc3QgPSBQcmludGVyTGlzdEd0azo6Z2V0T3JDcmVhdGUoKTsKKyAgICAgICAgQVNTRVJU
KHByaW50ZXJMaXN0KTsKICAgICAgICAgY29uc3QgY2hhciogcHJpbnRlck5hbWUgPSBndGtfcHJp
bnRfc2V0dGluZ3NfZ2V0X3ByaW50ZXIobV9wcmludFNldHRpbmdzLmdldCgpKTsKICAgICAgICAg
R3RrUHJpbnRlciogcHJpbnRlciA9IHByaW50ZXJOYW1lID8gcHJpbnRlckxpc3QtPmZpbmRQcmlu
dGVyKHByaW50ZXJOYW1lKSA6IHByaW50ZXJMaXN0LT5kZWZhdWx0UHJpbnRlcigpOwogICAgICAg
ICBpZiAoIXByaW50ZXIpIHsK
</data>
<flag name="review"
          id="270966"
          type_id="1"
          status="+"
          setter="svillar"
    />
          </attachment>
      

    </bug>

</bugzilla>