<?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>61958</bug_id>
          
          <creation_ts>2011-06-02 13:33:21 -0700</creation_ts>
          <short_desc>[EFL] DumpRenderTree: Add GCController, PixelDumpsupport and WorkQueueItem</short_desc>
          <delta_ts>2011-06-16 11:41:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>62642</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Leandro Pereira">leandro</reporter>
          <assigned_to name="Leandro Pereira">leandro</assigned_to>
          <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>414397</commentid>
    <comment_count>0</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-02 13:33:21 -0700</bug_when>
    <thetext>[EFL] DRT: Add WorkQueueItemEfl.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414415</commentid>
    <comment_count>1</comment_count>
      <attachid>95803</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-02 14:03:32 -0700</bug_when>
    <thetext>Created attachment 95803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414416</commentid>
    <comment_count>2</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-02 14:05:24 -0700</bug_when>
    <thetext>This bug was previously created to upstream WorkQueueItem only, but since it is pretty small, I&apos;m using it to upstream other smaller DRT bits (PixelDumpSupport, GCController and WorkQueueItem).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414417</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-02 14:05:39 -0700</bug_when>
    <thetext>Attachment 95803 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/e...&quot; exit_code: 1

Tools/DumpRenderTree/efl/PixelDumpSupportEfl.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418842</commentid>
    <comment_count>4</comment_count>
      <attachid>95803</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-10 12:39:19 -0700</bug_when>
    <thetext>Comment on attachment 95803
Patch

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

Same comments, basically.  This is old c code, in a c++ file.  Unless EFL style strictly requires old-looking c code, with bad memory managmeent, we should move thsi all to smart pointers and modern C++ styling.

&gt; Tools/DumpRenderTree/efl/GCControllerEfl.cpp:5
&gt; + * Copyright (C) 2007 Eric Seidel &lt;eric@webkit.org&gt;
&gt; + * Copyright (C) 2011 ProFUSION Embedded Systems
&gt; + * Copyright (C) 2011 Samsung Electronics
&gt; + *

I doubt you need all these copyrights.

&gt; Tools/DumpRenderTree/efl/PixelDumpSupportEfl.cpp:45
&gt; +    cairo_surface_t* surface;
&gt; +    cairo_t* context;
&gt; +    int width, height;
&gt; +    Ewk_View_Smart_Data* smartData;
&gt; +    Ewk_View_Private_Data* privateData;
&gt; +

Do we really need to follow this old-C limitiation for c++ files?  I doubt you can even find a C compiler which can&apos;t handle inline declarations these days. :)

&gt; Tools/DumpRenderTree/efl/PixelDumpSupportEfl.cpp:50
&gt; +    context = cairo_create(surface);

No Cairo smart pointers?  The Gtk Folks might know if we have one.

&gt; Tools/DumpRenderTree/efl/WorkQueueItemEfl.cpp:36
&gt; +char* JSStringCopyUTF8CString(JSStringRef jsString)
&gt; +{
&gt; +    size_t dataSize = JSStringGetMaximumUTF8CStringSize(jsString);
&gt; +    char* utf8 = static_cast&lt;char*&gt;(malloc(dataSize));
&gt; +    JSStringGetUTF8CString(jsString, utf8, dataSize);
&gt; +
&gt; +    return utf8;
&gt; +}

Woh.  so this is what youv&apos;e been using everywhere. I thoguth it was actually part of the JS API.  We could easily use WTF::String here.  Since other ports do.  Not a requirement, but there are definitely smarter string classes to use besides char* :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420377</commentid>
    <comment_count>5</comment_count>
      <attachid>97111</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-14 06:50:31 -0700</bug_when>
    <thetext>Created attachment 97111
Fixed patch with suggested changes.

Thanks for the review. The attached patch should solve most of the issues you&apos;ve brought up. The only downside is that we&apos;ve had to create our own WorkQueueItemEfl.h (just like the Qt port does).

This patch should obsolete the previous one, I just don&apos;t have permissions to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420379</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-14 06:53:40 -0700</bug_when>
    <thetext>Attachment 97111 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;]&quot; exit_code: 1

Total errors found: 0 in 0 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420475</commentid>
    <comment_count>7</comment_count>
      <attachid>97111</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-06-14 09:18:48 -0700</bug_when>
    <thetext>Comment on attachment 97111
Fixed patch with suggested changes.

Attachment 97111 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/8837601</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420487</commentid>
    <comment_count>8</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-14 09:26:00 -0700</bug_when>
    <thetext>Looking at the error log, it does not seem to be related to this patch -- try removing WebKit/libewebkit.so.0.1.0 manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420546</commentid>
    <comment_count>9</comment_count>
      <attachid>97111</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-14 10:38:13 -0700</bug_when>
    <thetext>Comment on attachment 97111
Fixed patch with suggested changes.

I&apos;ve restarted and cleaned up the EWS; cq? again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422058</commentid>
    <comment_count>10</comment_count>
      <attachid>97463</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-16 10:49:08 -0700</bug_when>
    <thetext>Created attachment 97463
Try to please the EWS bots.

This is essentially the same patch, but will hopefully make the EWS bots happier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422059</commentid>
    <comment_count>11</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-16 10:49:28 -0700</bug_when>
    <thetext>CC&apos;ing eseidel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422062</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-16 10:50:49 -0700</bug_when>
    <thetext>Attachment 97463 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/e...&quot; exit_code: 1

Tools/DumpRenderTree/efl/WorkQueueItemEfl.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Tools/DumpRenderTree/efl/WorkQueueItemEfl.h:39:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422065</commentid>
    <comment_count>13</comment_count>
      <attachid>97465</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-06-16 10:55:31 -0700</bug_when>
    <thetext>Created attachment 97465
Yet another attempt at pleasing the bots.

Oops, I thought I had run check-webkit-style before sending. *sigh*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422069</commentid>
    <comment_count>14</comment_count>
      <attachid>97465</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-16 10:59:14 -0700</bug_when>
    <thetext>Comment on attachment 97465
Yet another attempt at pleasing the bots.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422112</commentid>
    <comment_count>15</comment_count>
      <attachid>97465</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-16 11:41:22 -0700</bug_when>
    <thetext>Comment on attachment 97465
Yet another attempt at pleasing the bots.

Clearing flags on attachment: 97465

Committed r89053: &lt;http://trac.webkit.org/changeset/89053&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422114</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-16 11:41:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95803</attachid>
            <date>2011-06-02 14:03:32 -0700</date>
            <delta_ts>2011-06-14 08:45:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61958-20110602180330.patch</filename>
            <type>text/plain</type>
            <size>10347</size>
            <attacher name="Leandro Pereira">leandro</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg3OTUwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMTEtMDYtMDIgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9u
Lm1vYmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0VGTF0gRHVtcFJlbmRlclRyZWU6IEFkZCBHQ0NvbnRyb2xsZXIsIFBpeGVsRHVtcHN1cHBvcnQg
YW5kIFdvcmtRdWV1ZUl0ZW0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTk1OAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsOiBBZGRlZC4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvR0NDb250cm9sbGVyRWZsLmNwcDogQWRkZWQu
CisgICAgICAgIChHQ0NvbnRyb2xsZXI6OmNvbGxlY3QpOgorICAgICAgICAoR0NDb250cm9sbGVy
Ojpjb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQpOgorICAgICAgICAoR0NDb250cm9sbGVyOjpnZXRK
U09iamVjdENvdW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvUGl4ZWxEdW1wU3Vw
cG9ydEVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJW
aWV3KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvV29ya1F1ZXVlSXRlbUVmbC5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcpOiBDb3BpZWQgZnJvbSB0
aGUgR1RLKyBEUlQuCisgICAgICAgIChMb2FkSXRlbTo6aW52b2tlKToKKyAgICAgICAgKExvYWRI
VE1MU3RyaW5nSXRlbTo6aW52b2tlKToKKyAgICAgICAgKFJlbG9hZEl0ZW06Omludm9rZSk6Cisg
ICAgICAgIChTY3JpcHRJdGVtOjppbnZva2UpOgorICAgICAgICAoQmFja0ZvcndhcmRJdGVtOjpp
bnZva2UpOgorCiAyMDExLTA2LTAyICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9lZmwvR0NDb250cm9sbGVyRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9lZmwvR0NDb250cm9sbGVyRWZsLmNwcAkocmV2aXNpb24gMCkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9HQ0NvbnRyb2xsZXJFZmwuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVs
IDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgUHJvRlVTSU9OIEVtYmVk
ZGVkIFN5c3RlbXMKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgorCisjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKKwordm9pZCBHQ0NvbnRyb2xsZXI6OmNvbGxlY3QoKSBjb25zdAorewor
ICAgIGV3a191dGlsX2phdmFzY3JpcHRfZ2NfY29sbGVjdCgpOworfQorCit2b2lkIEdDQ29udHJv
bGxlcjo6Y29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSkgY29uc3QK
K3sKKyAgICBld2tfdXRpbF9qYXZhc2NyaXB0X2djX2FsdGVybmF0ZV90aHJlYWRfY29sbGVjdCh3
YWl0VW50aWxEb25lKTsKK30KKworc2l6ZV90IEdDQ29udHJvbGxlcjo6Z2V0SlNPYmplY3RDb3Vu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV3a191dGlsX2phdmFzY3JpcHRfZ2Nfb2JqZWN0X2Nv
dW50X2dldCgpOworfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1BpeGVsRHVtcFN1
cHBvcnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9QaXhl
bER1bXBTdXBwb3J0RWZsLmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2VmbC9QaXhlbER1bXBTdXBwb3J0RWZsLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBaYW4gRG9iZXJzZWsgPHphbmRvYmVyc2VrQGdt
YWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0
IChDKSAyMDExIFByb0ZVU0lPTiBFbWJlZGRlZCBTeXN0ZW1zCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQaXhl
bER1bXBTdXBwb3J0Q2Fpcm8uaCIKKworI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgiCisjaW5j
bHVkZSAiZXdrX3ByaXZhdGUuaCIKKworUGFzc1JlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVC
aXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCBkcmF3U2VsZWN0
aW9uUmVjdCkKK3sKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2U7CisgICAgY2Fpcm9fdCog
Y29udGV4dDsKKyAgICBpbnQgd2lkdGgsIGhlaWdodDsKKyAgICBFd2tfVmlld19TbWFydF9EYXRh
KiBzbWFydERhdGE7CisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2YXRlRGF0YTsKKwor
ICAgIGlmICghZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KG1haW5GcmFtZSwgJndpZHRoLCAm
aGVpZ2h0KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBzdXJmYWNlID0gY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgd2lkdGgsIGhlaWdodCk7CisgICAg
Y29udGV4dCA9IGNhaXJvX2NyZWF0ZShzdXJmYWNlKTsKKworICAgIEVpbmFfUmVjdGFuZ2xlIHJl
Y3QgPSB7IDAsIDAsIHdpZHRoLCBoZWlnaHQgfTsKKyAgICBzbWFydERhdGEgPSBzdGF0aWNfY2Fz
dDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQoYnJvd3Nl
cikpOworICAgIHByaXZhdGVEYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
Kj4oc21hcnREYXRhLT5fcHJpdik7CisKKyAgICBpZiAoIWV3a192aWV3X3BhaW50X2NvbnRlbnRz
KHByaXZhdGVEYXRhLCBjb250ZXh0LCAmcmVjdCkpIHsKKyAgICAgICAgY2Fpcm9fZGVzdHJveShj
b250ZXh0KTsKKyAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoZHJhd1NlbGVjdGlvblJlY3QpIHsKKyAgICAg
ICAgaW50IHgsIHksIHJlY3RXaWR0aCwgcmVjdEhlaWdodDsKKworICAgICAgICBpZiAoZXdrX2Zy
YW1lX3NlbGVjdGlvbl9yZWN0YW5nbGVfZ2V0KG1haW5GcmFtZSwgJngsICZ5LCAmcmVjdFdpZHRo
LCAmcmVjdEhlaWdodCkpIHsKKyAgICAgICAgICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNvbnRl
eHQsIDEuMCk7CisgICAgICAgICAgICBjYWlyb19yZWN0YW5nbGUoY29udGV4dCwgeCwgeSwgcmVj
dFdpZHRoLCByZWN0SGVpZ2h0KTsKKyAgICAgICAgICAgIGNhaXJvX3NldF9zb3VyY2VfcmdiYShj
b250ZXh0LCAxLjAsIDAuMCwgMC4wLCAxLjApOworICAgICAgICAgICAgY2Fpcm9fc3Ryb2tlKGNv
bnRleHQpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEJpdG1hcENvbnRleHQ6OmNy
ZWF0ZUJ5QWRvcHRpbmdCaXRtYXBBbmRDb250ZXh0KDAsIGNvbnRleHQpOworfQpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmNwcAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxw
IFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04g
RW1iZWRkZWQgU3lzdGVtcworICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25p
Y3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtRdWV1ZUl0ZW0uaCIKKworI2lu
Y2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgiCisjaW5jbHVkZSA8RVdlYktpdC5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisKK2NoYXIqIEpTU3RyaW5nQ29weVVURjhD
U3RyaW5nKEpTU3RyaW5nUmVmIGpzU3RyaW5nKQoreworICAgIHNpemVfdCBkYXRhU2l6ZSA9IEpT
U3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShqc1N0cmluZyk7CisgICAgY2hhciogdXRm
OCA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxsb2MoZGF0YVNpemUpKTsKKyAgICBKU1N0cmluZ0dl
dFVURjhDU3RyaW5nKGpzU3RyaW5nLCB1dGY4LCBkYXRhU2l6ZSk7CisKKyAgICByZXR1cm4gdXRm
ODsKK30KKworYm9vbCBMb2FkSXRlbTo6aW52b2tlKCkgY29uc3QKK3sKKyAgICBjaGFyKiB0YXJn
ZXRTdHJpbmcgPSBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhtX3RhcmdldC5nZXQoKSk7CisgICAg
RXZhc19PYmplY3QqIHRhcmdldEZyYW1lOworCisgICAgaWYgKCFzdHJsZW4odGFyZ2V0U3RyaW5n
KSkKKyAgICAgICAgdGFyZ2V0RnJhbWUgPSBtYWluRnJhbWU7CisgICAgZWxzZQorICAgICAgICB0
YXJnZXRGcmFtZSA9IGV3a19mcmFtZV9jaGlsZF9maW5kKG1haW5GcmFtZSwgdGFyZ2V0U3RyaW5n
KTsKKyAgICBmcmVlKHRhcmdldFN0cmluZyk7CisKKyAgICBjaGFyKiB1cmxTdHJpbmcgPSBKU1N0
cmluZ0NvcHlVVEY4Q1N0cmluZyhtX3VybC5nZXQoKSk7CisgICAgZXdrX2ZyYW1lX3VyaV9zZXQo
dGFyZ2V0RnJhbWUsIHVybFN0cmluZyk7CisgICAgZnJlZSh1cmxTdHJpbmcpOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2UoKSBjb25zdAor
eworICAgIGNoYXIqIGNvbnRlbnQgPSBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhtX2NvbnRlbnQu
Z2V0KCkpOworICAgIGNoYXIqIGJhc2VVUkwgPSBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhtX2Jh
c2VVUkwuZ2V0KCkpOworCisgICAgaWYgKG1fdW5yZWFjaGFibGVVUkwpIHsKKyAgICAgICAgY2hh
ciogdW5yZWFjaGFibGVVUkwgPSBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhtX3VucmVhY2hhYmxl
VVJMLmdldCgpKTsKKyAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX2FsdGVybmF0ZV9zZXQobWFp
bkZyYW1lLCBjb250ZW50LCAwLCAwLCAwLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCk7CisgICAg
ICAgIGZyZWUodW5yZWFjaGFibGVVUkwpOworICAgIH0gZWxzZQorICAgICAgICBld2tfZnJhbWVf
Y29udGVudHNfc2V0KG1haW5GcmFtZSwgY29udGVudCwgMCwgMCwgMCwgYmFzZVVSTCk7CisKKyAg
ICBmcmVlKGNvbnRlbnQpOworICAgIGZyZWUoYmFzZVVSTCk7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBSZWxvYWRJdGVtOjppbnZva2UoKSBjb25zdAoreworICAgIGV3a192aWV3X3Jl
bG9hZChicm93c2VyKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTY3JpcHRJdGVtOjpp
bnZva2UoKSBjb25zdAoreworICAgIGNoYXIqIHNjcmlwdFN0cmluZyA9IEpTU3RyaW5nQ29weVVU
RjhDU3RyaW5nKG1fc2NyaXB0LmdldCgpKTsKKyAgICBib29sIHJldHVyblZhbHVlID0gZXdrX2Zy
YW1lX3NjcmlwdF9leGVjdXRlKG1haW5GcmFtZSwgc2NyaXB0U3RyaW5nKTsKKyAgICBmcmVlKHNj
cmlwdFN0cmluZyk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCitib29sIEJhY2tGb3J3
YXJkSXRlbTo6aW52b2tlKCkgY29uc3QKK3sKKyAgICBFd2tfSGlzdG9yeSogaGlzdG9yeTsKKwor
ICAgIGhpc3RvcnkgPSBld2tfdmlld19oaXN0b3J5X2dldChicm93c2VyKTsKKyAgICBpZiAobV9o
b3dGYXIgPT0gMSkKKyAgICAgICAgZXdrX2hpc3RvcnlfZm9yd2FyZChoaXN0b3J5KTsKKyAgICBl
bHNlIGlmIChtX2hvd0ZhciA9PSAtMSkKKyAgICAgICAgZXdrX2hpc3RvcnlfYmFjayhoaXN0b3J5
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgRXdrX0hpc3RvcnlfSXRlbSogaXRlbTsKKworICAgICAg
ICBpdGVtID0gZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVtX250aF9nZXQoaGlzdG9yeSwgbV9ob3dG
YXIpOworICAgICAgICBld2tfaGlzdG9yeV9oaXN0b3J5X2l0ZW1fc2V0KGhpc3RvcnksIGl0ZW0p
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
</data>
<flag name="review"
          id="89369"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97111</attachid>
            <date>2011-06-14 06:50:31 -0700</date>
            <delta_ts>2011-06-16 10:49:08 -0700</delta_ts>
            <desc>Fixed patch with suggested changes.</desc>
            <filename>bug61958-take2.diff</filename>
            <type>text/plain</type>
            <size>13334</size>
            <attacher name="Raphael Kubo da Costa (:rakuco)">rakuco</attacher>
            
              <data encoding="base64">LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gODg3OTEpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAxMS0wNi0xNCAgTGVhbmRybyBQZXJl
aXJhICA8bGVhbmRyb0Bwcm9mdXNpb24ubW9iaT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBEdW1wUmVuZGVyVHJlZTogQWRkIEdDQ29udHJv
bGxlciwgUGl4ZWxEdW1wU3VwcG9ydCBhbmQKKyAgICAgICAgV29ya1F1ZXVlSXRlbS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxOTU4CisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9lZmw6IEFkZGVkCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
ZWZsL0dDQ29udHJvbGxlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoR0NDb250cm9sbGVyOjpj
b2xsZWN0KToKKyAgICAgICAgKEdDQ29udHJvbGxlcjo6Y29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFk
KToKKyAgICAgICAgKEdDQ29udHJvbGxlcjo6Z2V0SlNPYmplY3RDb3VudCk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvZWZsL1BpeGVsRHVtcFN1cHBvcnRFZmwuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKExvYWRJdGVt
OjppbnZva2UpOgorICAgICAgICAoTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2UpOgorICAgICAg
ICAoUmVsb2FkSXRlbTo6aW52b2tlKToKKyAgICAgICAgKFNjcmlwdEl0ZW06Omludm9rZSk6Cisg
ICAgICAgIChCYWNrRm9yd2FyZEl0ZW06Omludm9rZSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuaDogQWRkZWQuCisgICAgICAgIChXb3JrUXVldWVJdGVt
Ojp+V29ya1F1ZXVlSXRlbSk6CisgICAgICAgIChMb2FkSXRlbTo6TG9hZEl0ZW0pOgorICAgICAg
ICAoTG9hZEhUTUxTdHJpbmdJdGVtOjpMb2FkSFRNTFN0cmluZ0l0ZW0pOgorICAgICAgICAoU2Ny
aXB0SXRlbTo6U2NyaXB0SXRlbSk6CisgICAgICAgIChMb2FkaW5nU2NyaXB0SXRlbTo6TG9hZGlu
Z1NjcmlwdEl0ZW0pOgorICAgICAgICAoTG9hZGluZ1NjcmlwdEl0ZW06Omludm9rZSk6CisgICAg
ICAgIChOb25Mb2FkaW5nU2NyaXB0SXRlbTo6Tm9uTG9hZGluZ1NjcmlwdEl0ZW0pOgorICAgICAg
ICAoTm9uTG9hZGluZ1NjcmlwdEl0ZW06Omludm9rZSk6CisgICAgICAgIChCYWNrRm9yd2FyZEl0
ZW06OkJhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChCYWNrSXRlbTo6QmFja0l0ZW0pOgorICAg
ICAgICAoRm9yd2FyZEl0ZW06OkZvcndhcmRJdGVtKToKKwotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZWZsL0dDQ29udHJvbGxlckVmbC5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvR0NDb250cm9sbGVyRWZsLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gRW1iZWRkZWQgU3lzdGVt
cworICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJld2tfcHJpdmF0
ZS5oIgorCit2b2lkIEdDQ29udHJvbGxlcjo6Y29sbGVjdCgpIGNvbnN0Cit7CisgICAgZXdrX3V0
aWxfamF2YXNjcmlwdF9nY19jb2xsZWN0KCk7Cit9CisKK3ZvaWQgR0NDb250cm9sbGVyOjpjb2xs
ZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKSBjb25zdAoreworICAgIGV3
a191dGlsX2phdmFzY3JpcHRfZ2NfYWx0ZXJuYXRlX3RocmVhZF9jb2xsZWN0KHdhaXRVbnRpbERv
bmUpOworfQorCitzaXplX3QgR0NDb250cm9sbGVyOjpnZXRKU09iamVjdENvdW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZXdrX3V0aWxfamF2YXNjcmlwdF9nY19vYmplY3RfY291bnRfZ2V0KCk7
Cit9Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvUGl4ZWxEdW1wU3VwcG9ydEVmbC5jcHAJ
KHJldmlzaW9uIDApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvUGl4ZWxEdW1wU3VwcG9y
dEVmbC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04g
RW1iZWRkZWQgU3lzdGVtcworICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25p
Y3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgorI2lu
Y2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnRDYWlyby5oIgorI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgi
CisjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKworUGFzc1JlZlB0cjxCaXRtYXBDb250ZXh0PiBj
cmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCBkcmF3
U2VsZWN0aW9uUmVjdCkKK3sKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBz
dGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rfc21hcnRfZGF0YV9n
ZXQoYnJvd3NlcikpOworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdmF0ZURhdGEgPSBz
dGF0aWNfY2FzdDxFd2tfVmlld19Qcml2YXRlX0RhdGEqPihzbWFydERhdGEtPl9wcml2KTsKKwor
ICAgIGludCB3aWR0aCwgaGVpZ2h0OworICAgIGlmICghZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVf
Z2V0KG1haW5GcmFtZSwgJndpZHRoLCAmaGVpZ2h0KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9jcmVhdGUoQ0FJUk9fRk9STUFUX0FSR0IzMiwgd2lkdGgsIGhlaWdodCkpOworICAg
IFJlZlB0cjxjYWlyb190PiBjb250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKHN1cmZhY2Uu
Z2V0KCkpKTsKKworICAgIGNvbnN0IEVpbmFfUmVjdGFuZ2xlIHJlY3QgPSB7IDAsIDAsIHdpZHRo
LCBoZWlnaHQgfTsKKyAgICBpZiAoIWV3a192aWV3X3BhaW50X2NvbnRlbnRzKHByaXZhdGVEYXRh
LCBjb250ZXh0LmdldCgpLCAmcmVjdCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGRy
YXdTZWxlY3Rpb25SZWN0KSB7CisgICAgICAgIGludCB4LCB5LCByZWN0V2lkdGgsIHJlY3RIZWln
aHQ7CisKKyAgICAgICAgaWYgKGV3a19mcmFtZV9zZWxlY3Rpb25fcmVjdGFuZ2xlX2dldChtYWlu
RnJhbWUsICZ4LCAmeSwgJnJlY3RXaWR0aCwgJnJlY3RIZWlnaHQpKSB7CisgICAgICAgICAgICBj
YWlyb19zZXRfbGluZV93aWR0aChjb250ZXh0LmdldCgpLCAxLjApOworICAgICAgICAgICAgY2Fp
cm9fcmVjdGFuZ2xlKGNvbnRleHQuZ2V0KCksIHgsIHksIHJlY3RXaWR0aCwgcmVjdEhlaWdodCk7
CisgICAgICAgICAgICBjYWlyb19zZXRfc291cmNlX3JnYmEoY29udGV4dC5nZXQoKSwgMS4wLCAw
LjAsIDAuMCwgMS4wKTsKKyAgICAgICAgICAgIGNhaXJvX3N0cm9rZShjb250ZXh0LmdldCgpKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBCaXRtYXBDb250ZXh0OjpjcmVhdGVCeUFk
b3B0aW5nQml0bWFwQW5kQ29udGV4dCgwLCBjb250ZXh0LmdldCgpKTsKK30KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmNwcAkocmV2aXNpb24gMCkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFs
cEBhdG9rZXIuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDExIFByb0ZVU0lPTiBFbWJlZGRlZCBT
eXN0ZW1zCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlSXRlbUVmbC5oIgorCisjaW5jbHVkZSAi
RHVtcFJlbmRlclRyZWUuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVm
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1
ZGUgPEVXZWJLaXQuaD4KKworYm9vbCBMb2FkSXRlbTo6aW52b2tlKCkgY29uc3QKK3sKKyAgICBF
dmFzX09iamVjdCogdGFyZ2V0RnJhbWU7CisKKyAgICBpZiAobV90YXJnZXQuaXNFbXB0eSgpKQor
ICAgICAgICB0YXJnZXRGcmFtZSA9IG1haW5GcmFtZTsKKyAgICBlbHNlCisgICAgICAgIHRhcmdl
dEZyYW1lID0gZXdrX2ZyYW1lX2NoaWxkX2ZpbmQobWFpbkZyYW1lLCBtX3RhcmdldC51dGY4KCku
ZGF0YSgpKTsKKworICAgIGV3a19mcmFtZV91cmlfc2V0KHRhcmdldEZyYW1lLCBtX3VybC51dGY4
KCkuZGF0YSgpKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIExvYWRIVE1MU3RyaW5n
SXRlbTo6aW52b2tlKCkgY29uc3QKK3sKKyAgICBpZiAobV91bnJlYWNoYWJsZVVSTC5pc0VtcHR5
KCkpCisgICAgICAgIGV3a19mcmFtZV9jb250ZW50c19zZXQobWFpbkZyYW1lLCBtX2NvbnRlbnQu
dXRmOCgpLmRhdGEoKSwgMCwgMCwgMCwgbV9iYXNlVVJMLnV0ZjgoKS5kYXRhKCkpOworICAgIGVs
c2UKKyAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX2FsdGVybmF0ZV9zZXQobWFpbkZyYW1lLCBt
X2NvbnRlbnQudXRmOCgpLmRhdGEoKSwgMCwgMCwgMCwgbV9iYXNlVVJMLnV0ZjgoKS5kYXRhKCks
IG1fdW5yZWFjaGFibGVVUkwudXRmOCgpLmRhdGEoKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBSZWxvYWRJdGVtOjppbnZva2UoKSBjb25zdAoreworICAgIGV3a192aWV3X3JlbG9h
ZChicm93c2VyKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTY3JpcHRJdGVtOjppbnZv
a2UoKSBjb25zdAoreworICAgIHJldHVybiBld2tfZnJhbWVfc2NyaXB0X2V4ZWN1dGUobWFpbkZy
YW1lLCBtX3NjcmlwdC51dGY4KCkuZGF0YSgpKTsKK30KKworYm9vbCBCYWNrRm9yd2FyZEl0ZW06
Omludm9rZSgpIGNvbnN0Cit7CisgICAgRXdrX0hpc3RvcnkqIGhpc3RvcnkgPSBld2tfdmlld19o
aXN0b3J5X2dldChicm93c2VyKTsKKworICAgIGlmIChtX2hvd0ZhciA9PSAxKQorICAgICAgICBl
d2tfaGlzdG9yeV9mb3J3YXJkKGhpc3RvcnkpOworICAgIGVsc2UgaWYgKG1faG93RmFyID09IC0x
KQorICAgICAgICBld2tfaGlzdG9yeV9iYWNrKGhpc3RvcnkpOworICAgIGVsc2UgeworICAgICAg
ICBjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtID0gZXdrX2hpc3RvcnlfaGlzdG9yeV9pdGVt
X250aF9nZXQoaGlzdG9yeSwgbV9ob3dGYXIpOworICAgICAgICBld2tfaGlzdG9yeV9oaXN0b3J5
X2l0ZW1fc2V0KGhpc3RvcnksIGl0ZW0pOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuaAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFByb0ZV
U0lPTiBFbWJlZGRlZCBTeXN0ZW1zCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVj
dHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV29ya1F1ZXVlSXRlbUVmbF9oCisjZGVmaW5lIFdvcmtRdWV1
ZUl0ZW1FZmxfaAorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK2NsYXNzIFdvcmtRdWV1ZUl0ZW0geworcHVibGljOgorICAgIHZpcnR1YWwgfldvcmtR
dWV1ZUl0ZW0oKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaW52b2tlKCkgY29uc3QgPSAwOyAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhpcyBzdGFydGVkIGEgbG9hZC4KK307CisKK2NsYXNzIExvYWRJdGVt
IDogcHVibGljIFdvcmtRdWV1ZUl0ZW0KK3sKK3B1YmxpYzoKKyAgICBMb2FkSXRlbShjb25zdCBX
VEY6OlN0cmluZyYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgdGFyZ2V0KQorICAgICAgICA6IG1f
dGFyZ2V0KHRhcmdldCkKKyAgICAgICAgLCBtX3VybCh1cmwpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgYm9vbCBpbnZva2UoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBXVEY6OlN0cmlu
ZyBtX3RhcmdldDsKKyAgICBXVEY6OlN0cmluZyBtX3VybDsKK307CisKK2NsYXNzIExvYWRIVE1M
U3RyaW5nSXRlbSA6IHB1YmxpYyBXb3JrUXVldWVJdGVtIHsKK3B1YmxpYzoKKyAgICBMb2FkSFRN
TFN0cmluZ0l0ZW0oY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFdURjo6U3RyaW5n
JiBiYXNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgdW5yZWFjaGFibGVVUkwgPSBXVEY6OlN0cmlu
ZygpKQorICAgICAgICA6IG1fY29udGVudChjb250ZW50KQorICAgICAgICAsIG1fYmFzZVVSTChi
YXNlVVJMKQorICAgICAgICAsIG1fdW5yZWFjaGFibGVVUkwodW5yZWFjaGFibGVVUkwpCisgICAg
eworICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaW52b2tlKCkgY29uc3Q7CisK
KyAgICBXVEY6OlN0cmluZyBtX2NvbnRlbnQ7CisgICAgV1RGOjpTdHJpbmcgbV9iYXNlVVJMOwor
ICAgIFdURjo6U3RyaW5nIG1fdW5yZWFjaGFibGVVUkw7Cit9OworCitjbGFzcyBSZWxvYWRJdGVt
IDogcHVibGljIFdvcmtRdWV1ZUl0ZW0geworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaW52
b2tlKCkgY29uc3Q7Cit9OworCitjbGFzcyBTY3JpcHRJdGVtIDogcHVibGljIFdvcmtRdWV1ZUl0
ZW0geworcHJvdGVjdGVkOgorICAgIFNjcmlwdEl0ZW0oY29uc3QgV1RGOjpTdHJpbmcmIHNjcmlw
dCkKKyAgICAgICAgOiBtX3NjcmlwdChzY3JpcHQpCisgICAgeworICAgIH0KKworcHJvdGVjdGVk
OgorICAgIHZpcnR1YWwgYm9vbCBpbnZva2UoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBXVEY6
OlN0cmluZyBtX3NjcmlwdDsKK307CisKK2NsYXNzIExvYWRpbmdTY3JpcHRJdGVtIDogcHVibGlj
IFNjcmlwdEl0ZW0geworcHVibGljOgorICAgIExvYWRpbmdTY3JpcHRJdGVtKGNvbnN0IFdURjo6
U3RyaW5nJiBzY3JpcHQpCisgICAgICAgIDogU2NyaXB0SXRlbShzY3JpcHQpCisgICAgeworICAg
IH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaW52b2tlKCkgY29uc3QgeyByZXR1cm4g
U2NyaXB0SXRlbTo6aW52b2tlKCk7IH0KK307CisKK2NsYXNzIE5vbkxvYWRpbmdTY3JpcHRJdGVt
IDogcHVibGljIFNjcmlwdEl0ZW0geworcHVibGljOgorICAgIE5vbkxvYWRpbmdTY3JpcHRJdGVt
KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHQpCisgICAgICAgIDogU2NyaXB0SXRlbShzY3JpcHQp
CisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaW52b2tlKCkgY29u
c3QgeyBTY3JpcHRJdGVtOjppbnZva2UoKTsgcmV0dXJuIGZhbHNlOyB9Cit9OworCitjbGFzcyBC
YWNrRm9yd2FyZEl0ZW0gOiBwdWJsaWMgV29ya1F1ZXVlSXRlbSB7Citwcm90ZWN0ZWQ6CisgICAg
QmFja0ZvcndhcmRJdGVtKGludCBob3dGYXIpCisgICAgICAgIDogbV9ob3dGYXIoaG93RmFyKQor
ICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGludm9rZSgpIGNvbnN0
OworCisgICAgaW50IG1faG93RmFyOworfTsKKworY2xhc3MgQmFja0l0ZW0gOiBwdWJsaWMgQmFj
a0ZvcndhcmRJdGVtIHsKK3B1YmxpYzoKKyAgICBCYWNrSXRlbSh1bnNpZ25lZCBob3dGYXIpCisg
ICAgICAgIDogQmFja0ZvcndhcmRJdGVtKC1ob3dGYXIpCisgICAgeworICAgIH0KK307CisKK2Ns
YXNzIEZvcndhcmRJdGVtIDogcHVibGljIEJhY2tGb3J3YXJkSXRlbSB7CitwdWJsaWM6CisgICAg
Rm9yd2FyZEl0ZW0odW5zaWduZWQgaG93RmFyKQorICAgICAgICA6IEJhY2tGb3J3YXJkSXRlbSho
b3dGYXIpCisgICAgeworICAgIH0KK307CisKKyNlbmRpZiAvLyBXb3JrUXVldWVFZmxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97463</attachid>
            <date>2011-06-16 10:49:08 -0700</date>
            <delta_ts>2011-06-16 10:55:31 -0700</delta_ts>
            <desc>Try to please the EWS bots.</desc>
            <filename>gccontroller-etc-take2.diff</filename>
            <type>text/plain</type>
            <size>14157</size>
            <attacher name="Raphael Kubo da Costa (:rakuco)">rakuco</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg5MDQxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzkgQEAKKzIwMTEtMDYtMTYgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9u
Lm1vYmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0VGTF0gRHVtcFJlbmRlclRyZWU6IEFkZCBHQ0NvbnRyb2xsZXIsIFBpeGVsRHVtcFN1cHBvcnQg
YW5kCisgICAgICAgIFdvcmtRdWV1ZUl0ZW0uCisgICAgICAgIFRoZXkgd2lsbCBiZSBwbHVnZ2Vk
IGludG8gdGhlIGJ1aWxkIHN5c3RlbSBvbmNlIHRoZSBFRkwncyBEUlQgaXMKKyAgICAgICAgZnVs
bHkgdXBzdHJlYW1lZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYxOTU4CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmw6IEFkZGVkLgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9HQ0NvbnRyb2xsZXJFZmwuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEdDQ29udHJvbGxlcjo6Y29sbGVjdCk6CisgICAgICAgIChHQ0NvbnRyb2xsZXI6OmNv
bGxlY3RPbkFsdGVybmF0ZVRocmVhZCk6CisgICAgICAgIChHQ0NvbnRyb2xsZXI6OmdldEpTT2Jq
ZWN0Q291bnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9QaXhlbER1bXBTdXBwb3J0
RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmNwcDogQWRk
ZWQuCisgICAgICAgIChMb2FkSXRlbTo6aW52b2tlKToKKyAgICAgICAgKExvYWRIVE1MU3RyaW5n
SXRlbTo6aW52b2tlKToKKyAgICAgICAgKFJlbG9hZEl0ZW06Omludm9rZSk6CisgICAgICAgIChT
Y3JpcHRJdGVtOjppbnZva2UpOgorICAgICAgICAoQmFja0ZvcndhcmRJdGVtOjppbnZva2UpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmg6IEFkZGVkLgor
ICAgICAgICAoV29ya1F1ZXVlSXRlbTo6fldvcmtRdWV1ZUl0ZW0pOgorICAgICAgICAoTG9hZEl0
ZW06OkxvYWRJdGVtKToKKyAgICAgICAgKExvYWRIVE1MU3RyaW5nSXRlbTo6TG9hZEhUTUxTdHJp
bmdJdGVtKToKKyAgICAgICAgKFNjcmlwdEl0ZW06OlNjcmlwdEl0ZW0pOgorICAgICAgICAoTG9h
ZGluZ1NjcmlwdEl0ZW06OkxvYWRpbmdTY3JpcHRJdGVtKToKKyAgICAgICAgKExvYWRpbmdTY3Jp
cHRJdGVtOjppbnZva2UpOgorICAgICAgICAoTm9uTG9hZGluZ1NjcmlwdEl0ZW06Ok5vbkxvYWRp
bmdTY3JpcHRJdGVtKToKKyAgICAgICAgKE5vbkxvYWRpbmdTY3JpcHRJdGVtOjppbnZva2UpOgor
ICAgICAgICAoQmFja0ZvcndhcmRJdGVtOjpCYWNrRm9yd2FyZEl0ZW0pOgorICAgICAgICAoQmFj
a0l0ZW06OkJhY2tJdGVtKToKKyAgICAgICAgKEZvcndhcmRJdGVtOjpGb3J3YXJkSXRlbSk6CisK
IDIwMTEtMDYtMTYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAK
ICAgICAgICAgW3d4XSBVbnJldmlld2VkIGJ1aWxkIGZpeCwgbWFrZSBzdXJlIHRoZSB3YWYgYnVp
bGQgY2hlY2tzIHRoZSB3ZWJLaXRCcmFuY2hCdWlsZApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZWZsL0dDQ29udHJvbGxlckVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL0dDQ29udHJvbGxlckVmbC5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvR0NDb250cm9sbGVyRWZsLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gRW1iZWRkZWQgU3lz
dGVtcworICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJld2tfcHJp
dmF0ZS5oIgorCit2b2lkIEdDQ29udHJvbGxlcjo6Y29sbGVjdCgpIGNvbnN0Cit7CisgICAgZXdr
X3V0aWxfamF2YXNjcmlwdF9nY19jb2xsZWN0KCk7Cit9CisKK3ZvaWQgR0NDb250cm9sbGVyOjpj
b2xsZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKSBjb25zdAoreworICAg
IGV3a191dGlsX2phdmFzY3JpcHRfZ2NfYWx0ZXJuYXRlX3RocmVhZF9jb2xsZWN0KHdhaXRVbnRp
bERvbmUpOworfQorCitzaXplX3QgR0NDb250cm9sbGVyOjpnZXRKU09iamVjdENvdW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXdrX3V0aWxfamF2YXNjcmlwdF9nY19vYmplY3RfY291bnRfZ2V0
KCk7Cit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvUGl4ZWxEdW1wU3VwcG9ydEVm
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1BpeGVsRHVtcFN1
cHBvcnRFZmwuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Bp
eGVsRHVtcFN1cHBvcnRFZmwuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IFphbiBEb2JlcnNlayA8emFuZG9iZXJzZWtAZ21haWwuY29t
PgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgUHJvRlVTSU9OIEVtYmVkZGVkIFN5c3RlbXMKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1z
dW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiRHVtcFJlbmRl
clRyZWUuaCIKKyNpbmNsdWRlICJQaXhlbER1bXBTdXBwb3J0Q2Fpcm8uaCIKKyNpbmNsdWRlICJS
ZWZQdHJDYWlyby5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisKK1Bhc3NSZWZQdHI8Qml0
bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wsIGJvb2wsIGJv
b2wsIGJvb2wgZHJhd1NlbGVjdGlvblJlY3QpCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0
X3NtYXJ0X2RhdGFfZ2V0KGJyb3dzZXIpKTsKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHBy
aXZhdGVEYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKj4oc21hcnREYXRh
LT5fcHJpdik7CisKKyAgICBpbnQgd2lkdGgsIGhlaWdodDsKKyAgICBpZiAoIWV3a19mcmFtZV9j
b250ZW50c19zaXplX2dldChtYWluRnJhbWUsICZ3aWR0aCwgJmhlaWdodCkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVm
KGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdpZHRoLCBo
ZWlnaHQpKTsKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gY29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2Ny
ZWF0ZShzdXJmYWNlLmdldCgpKSk7CisKKyAgICBjb25zdCBFaW5hX1JlY3RhbmdsZSByZWN0ID0g
eyAwLCAwLCB3aWR0aCwgaGVpZ2h0IH07CisgICAgaWYgKCFld2tfdmlld19wYWludF9jb250ZW50
cyhwcml2YXRlRGF0YSwgY29udGV4dC5nZXQoKSwgJnJlY3QpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIGlmIChkcmF3U2VsZWN0aW9uUmVjdCkgeworICAgICAgICBpbnQgeCwgeSwgcmVjdFdp
ZHRoLCByZWN0SGVpZ2h0OworCisgICAgICAgIGlmIChld2tfZnJhbWVfc2VsZWN0aW9uX3JlY3Rh
bmdsZV9nZXQobWFpbkZyYW1lLCAmeCwgJnksICZyZWN0V2lkdGgsICZyZWN0SGVpZ2h0KSkgewor
ICAgICAgICAgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgoY29udGV4dC5nZXQoKSwgMS4wKTsKKyAg
ICAgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjb250ZXh0LmdldCgpLCB4LCB5LCByZWN0V2lkdGgs
IHJlY3RIZWlnaHQpOworICAgICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhKGNvbnRleHQu
Z2V0KCksIDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAgICAgICBjYWlyb19zdHJva2UoY29u
dGV4dC5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gQml0bWFwQ29udGV4
dDo6Y3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENvbnRleHQoMCwgY29udGV4dC5nZXQoKSk7Cit9
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvV29ya1F1ZXVlSXRlbUVmbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuY3Bw
CShyZXZpc2lvbiAwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1F
ZmwuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
UHJvRlVTSU9OIEVtYmVkZGVkIFN5c3RlbXMKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrUXVldWVJdGVt
RWZsLmgiCisKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgorCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS93dGYvdGV4
dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8RVdlYktpdC5oPgorCitib29sIExvYWRJdGVtOjppbnZv
a2UoKSBjb25zdAoreworICAgIEV2YXNfT2JqZWN0KiB0YXJnZXRGcmFtZTsKKworICAgIGlmICht
X3RhcmdldC5pc0VtcHR5KCkpCisgICAgICAgIHRhcmdldEZyYW1lID0gbWFpbkZyYW1lOworICAg
IGVsc2UKKyAgICAgICAgdGFyZ2V0RnJhbWUgPSBld2tfZnJhbWVfY2hpbGRfZmluZChtYWluRnJh
bWUsIG1fdGFyZ2V0LnV0ZjgoKS5kYXRhKCkpOworCisgICAgZXdrX2ZyYW1lX3VyaV9zZXQodGFy
Z2V0RnJhbWUsIG1fdXJsLnV0ZjgoKS5kYXRhKCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2UoKSBjb25zdAoreworICAgIGlmIChtX3Vu
cmVhY2hhYmxlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3NldCht
YWluRnJhbWUsIG1fY29udGVudC51dGY4KCkuZGF0YSgpLCAwLCAwLCAwLCBtX2Jhc2VVUkwudXRm
OCgpLmRhdGEoKSk7CisgICAgZWxzZQorICAgICAgICBld2tfZnJhbWVfY29udGVudHNfYWx0ZXJu
YXRlX3NldChtYWluRnJhbWUsIG1fY29udGVudC51dGY4KCkuZGF0YSgpLCAwLCAwLCAwLCBtX2Jh
c2VVUkwudXRmOCgpLmRhdGEoKSwgbV91bnJlYWNoYWJsZVVSTC51dGY4KCkuZGF0YSgpKTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlbG9hZEl0ZW06Omludm9rZSgpIGNvbnN0Cit7
CisgICAgZXdrX3ZpZXdfcmVsb2FkKGJyb3dzZXIpOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFNjcmlwdEl0ZW06Omludm9rZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV3a19mcmFtZV9z
Y3JpcHRfZXhlY3V0ZShtYWluRnJhbWUsIG1fc2NyaXB0LnV0ZjgoKS5kYXRhKCkpOworfQorCiti
b29sIEJhY2tGb3J3YXJkSXRlbTo6aW52b2tlKCkgY29uc3QKK3sKKyAgICBFd2tfSGlzdG9yeSog
aGlzdG9yeSA9IGV3a192aWV3X2hpc3RvcnlfZ2V0KGJyb3dzZXIpOworCisgICAgaWYgKG1faG93
RmFyID09IDEpCisgICAgICAgIGV3a19oaXN0b3J5X2ZvcndhcmQoaGlzdG9yeSk7CisgICAgZWxz
ZSBpZiAobV9ob3dGYXIgPT0gLTEpCisgICAgICAgIGV3a19oaXN0b3J5X2JhY2soaGlzdG9yeSk7
CisgICAgZWxzZSB7CisgICAgICAgIGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0gPSBld2tf
aGlzdG9yeV9oaXN0b3J5X2l0ZW1fbnRoX2dldChoaXN0b3J5LCBtX2hvd0Zhcik7CisgICAgICAg
IGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9zZXQoaGlzdG9yeSwgaXRlbSk7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvV29ya1F1
ZXVlSXRlbUVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9Xb3Jr
UXVldWVJdGVtRWZsLmgJKHJldmlzaW9uIDApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwv
V29ya1F1ZXVlSXRlbUVmbC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gRW1iZWRkZWQgU3lzdGVtcworICogQ29weXJp
Z2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdvcmtRdWV1ZUl0
ZW1FZmxfaAorI2RlZmluZSBXb3JrUXVldWVJdGVtRWZsX2gKKworI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oPgorCitjbGFzcyBXb3JrUXVldWVJdGVtIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5Xb3JrUXVldWVJdGVtKCkgeyB9CisgICAgdmlydHVhbCBib29s
IGludm9rZSgpIGNvbnN0ID0gMDsgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgc3RhcnRlZCBhIGxv
YWQuCit9OworCitjbGFzcyBMb2FkSXRlbSA6IHB1YmxpYyBXb3JrUXVldWVJdGVtCit7CitwdWJs
aWM6CisgICAgTG9hZEl0ZW0oY29uc3QgV1RGOjpTdHJpbmcmIHVybCwgY29uc3QgV1RGOjpTdHJp
bmcmIHRhcmdldCkKKyAgICAgICAgOiBtX3RhcmdldCh0YXJnZXQpCisgICAgICAgICwgbV91cmwo
dXJsKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaW52b2tlKCkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgV1RGOjpTdHJpbmcgbV90YXJnZXQ7CisgICAgV1RGOjpTdHJpbmcgbV91
cmw7Cit9OworCitjbGFzcyBMb2FkSFRNTFN0cmluZ0l0ZW0gOiBwdWJsaWMgV29ya1F1ZXVlSXRl
bSB7CitwdWJsaWM6CisgICAgTG9hZEhUTUxTdHJpbmdJdGVtKGNvbnN0IFdURjo6U3RyaW5nJiBj
b250ZW50LCBjb25zdCBXVEY6OlN0cmluZyYgYmFzZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIHVu
cmVhY2hhYmxlVVJMID0gV1RGOjpTdHJpbmcoKSkKKyAgICAgICAgOiBtX2NvbnRlbnQoY29udGVu
dCkKKyAgICAgICAgLCBtX2Jhc2VVUkwoYmFzZVVSTCkKKyAgICAgICAgLCBtX3VucmVhY2hhYmxl
VVJMKHVucmVhY2hhYmxlVVJMKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdmlydHVh
bCBib29sIGludm9rZSgpIGNvbnN0OworCisgICAgV1RGOjpTdHJpbmcgbV9jb250ZW50OworICAg
IFdURjo6U3RyaW5nIG1fYmFzZVVSTDsKKyAgICBXVEY6OlN0cmluZyBtX3VucmVhY2hhYmxlVVJM
OworfTsKKworY2xhc3MgUmVsb2FkSXRlbSA6IHB1YmxpYyBXb3JrUXVldWVJdGVtIHsKK3ByaXZh
dGU6CisgICAgdmlydHVhbCBib29sIGludm9rZSgpIGNvbnN0OworfTsKKworY2xhc3MgU2NyaXB0
SXRlbSA6IHB1YmxpYyBXb3JrUXVldWVJdGVtIHsKK3Byb3RlY3RlZDoKKyAgICBTY3JpcHRJdGVt
KGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHQpCisgICAgICAgIDogbV9zY3JpcHQoc2NyaXB0KQor
ICAgIHsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIGJvb2wgaW52b2tlKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgV1RGOjpTdHJpbmcgbV9zY3JpcHQ7Cit9OworCitjbGFzcyBM
b2FkaW5nU2NyaXB0SXRlbSA6IHB1YmxpYyBTY3JpcHRJdGVtIHsKK3B1YmxpYzoKKyAgICBMb2Fk
aW5nU2NyaXB0SXRlbShjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0KQorICAgICAgICA6IFNjcmlw
dEl0ZW0oc2NyaXB0KQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29s
IGludm9rZSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEl0ZW06Omludm9rZSgpOyB9Cit9OworCitj
bGFzcyBOb25Mb2FkaW5nU2NyaXB0SXRlbSA6IHB1YmxpYyBTY3JpcHRJdGVtIHsKK3B1YmxpYzoK
KyAgICBOb25Mb2FkaW5nU2NyaXB0SXRlbShjb25zdCBXVEY6OlN0cmluZyYgc2NyaXB0KQorICAg
ICAgICA6IFNjcmlwdEl0ZW0oc2NyaXB0KQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
dmlydHVhbCBib29sIGludm9rZSgpIGNvbnN0IHsgU2NyaXB0SXRlbTo6aW52b2tlKCk7IHJldHVy
biBmYWxzZTsgfQorfTsKKworY2xhc3MgQmFja0ZvcndhcmRJdGVtIDogcHVibGljIFdvcmtRdWV1
ZUl0ZW0geworcHJvdGVjdGVkOgorICAgIEJhY2tGb3J3YXJkSXRlbShpbnQgaG93RmFyKQorICAg
ICAgICA6IG1faG93RmFyKGhvd0ZhcikKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHZp
cnR1YWwgYm9vbCBpbnZva2UoKSBjb25zdDsKKworICAgIGludCBtX2hvd0ZhcjsKK307CisKK2Ns
YXNzIEJhY2tJdGVtIDogcHVibGljIEJhY2tGb3J3YXJkSXRlbSB7CitwdWJsaWM6CisgICAgQmFj
a0l0ZW0odW5zaWduZWQgaG93RmFyKQorICAgICAgICA6IEJhY2tGb3J3YXJkSXRlbSgtaG93RmFy
KQorICAgIHsKKyAgICB9Cit9OworCitjbGFzcyBGb3J3YXJkSXRlbSA6IHB1YmxpYyBCYWNrRm9y
d2FyZEl0ZW0geworcHVibGljOgorICAgIEZvcndhcmRJdGVtKHVuc2lnbmVkIGhvd0ZhcikKKyAg
ICAgICAgOiBCYWNrRm9yd2FyZEl0ZW0oaG93RmFyKQorICAgIHsKKyAgICB9Cit9OworCisjZW5k
aWYgLy8gV29ya1F1ZXVlRWZsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97465</attachid>
            <date>2011-06-16 10:55:31 -0700</date>
            <delta_ts>2011-06-16 11:41:21 -0700</delta_ts>
            <desc>Yet another attempt at pleasing the bots.</desc>
            <filename>gccontroller-etc-take3.diff</filename>
            <type>text/plain</type>
            <size>14156</size>
            <attacher name="Raphael Kubo da Costa (:rakuco)">rakuco</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg5MDQxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzkgQEAKKzIwMTEtMDYtMTYgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9u
Lm1vYmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0VGTF0gRHVtcFJlbmRlclRyZWU6IEFkZCBHQ0NvbnRyb2xsZXIsIFBpeGVsRHVtcFN1cHBvcnQg
YW5kCisgICAgICAgIFdvcmtRdWV1ZUl0ZW0uCisgICAgICAgIFRoZXkgd2lsbCBiZSBwbHVnZ2Vk
IGludG8gdGhlIGJ1aWxkIHN5c3RlbSBvbmNlIHRoZSBFRkwncyBEUlQgaXMKKyAgICAgICAgZnVs
bHkgdXBzdHJlYW1lZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYxOTU4CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmw6IEFkZGVkLgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9HQ0NvbnRyb2xsZXJFZmwuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEdDQ29udHJvbGxlcjo6Y29sbGVjdCk6CisgICAgICAgIChHQ0NvbnRyb2xsZXI6OmNv
bGxlY3RPbkFsdGVybmF0ZVRocmVhZCk6CisgICAgICAgIChHQ0NvbnRyb2xsZXI6OmdldEpTT2Jq
ZWN0Q291bnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9QaXhlbER1bXBTdXBwb3J0
RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmNwcDogQWRk
ZWQuCisgICAgICAgIChMb2FkSXRlbTo6aW52b2tlKToKKyAgICAgICAgKExvYWRIVE1MU3RyaW5n
SXRlbTo6aW52b2tlKToKKyAgICAgICAgKFJlbG9hZEl0ZW06Omludm9rZSk6CisgICAgICAgIChT
Y3JpcHRJdGVtOjppbnZva2UpOgorICAgICAgICAoQmFja0ZvcndhcmRJdGVtOjppbnZva2UpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9Xb3JrUXVldWVJdGVtRWZsLmg6IEFkZGVkLgor
ICAgICAgICAoV29ya1F1ZXVlSXRlbTo6fldvcmtRdWV1ZUl0ZW0pOgorICAgICAgICAoTG9hZEl0
ZW06OkxvYWRJdGVtKToKKyAgICAgICAgKExvYWRIVE1MU3RyaW5nSXRlbTo6TG9hZEhUTUxTdHJp
bmdJdGVtKToKKyAgICAgICAgKFNjcmlwdEl0ZW06OlNjcmlwdEl0ZW0pOgorICAgICAgICAoTG9h
ZGluZ1NjcmlwdEl0ZW06OkxvYWRpbmdTY3JpcHRJdGVtKToKKyAgICAgICAgKExvYWRpbmdTY3Jp
cHRJdGVtOjppbnZva2UpOgorICAgICAgICAoTm9uTG9hZGluZ1NjcmlwdEl0ZW06Ok5vbkxvYWRp
bmdTY3JpcHRJdGVtKToKKyAgICAgICAgKE5vbkxvYWRpbmdTY3JpcHRJdGVtOjppbnZva2UpOgor
ICAgICAgICAoQmFja0ZvcndhcmRJdGVtOjpCYWNrRm9yd2FyZEl0ZW0pOgorICAgICAgICAoQmFj
a0l0ZW06OkJhY2tJdGVtKToKKyAgICAgICAgKEZvcndhcmRJdGVtOjpGb3J3YXJkSXRlbSk6CisK
IDIwMTEtMDYtMTYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAK
ICAgICAgICAgW3d4XSBVbnJldmlld2VkIGJ1aWxkIGZpeCwgbWFrZSBzdXJlIHRoZSB3YWYgYnVp
bGQgY2hlY2tzIHRoZSB3ZWJLaXRCcmFuY2hCdWlsZApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZWZsL0dDQ29udHJvbGxlckVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL0dDQ29udHJvbGxlckVmbC5jcHAJKHJldmlzaW9uIDApCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvR0NDb250cm9sbGVyRWZsLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gRW1iZWRkZWQgU3lz
dGVtcworICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJld2tfcHJp
dmF0ZS5oIgorCit2b2lkIEdDQ29udHJvbGxlcjo6Y29sbGVjdCgpIGNvbnN0Cit7CisgICAgZXdr
X3V0aWxfamF2YXNjcmlwdF9nY19jb2xsZWN0KCk7Cit9CisKK3ZvaWQgR0NDb250cm9sbGVyOjpj
b2xsZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKSBjb25zdAoreworICAg
IGV3a191dGlsX2phdmFzY3JpcHRfZ2NfYWx0ZXJuYXRlX3RocmVhZF9jb2xsZWN0KHdhaXRVbnRp
bERvbmUpOworfQorCitzaXplX3QgR0NDb250cm9sbGVyOjpnZXRKU09iamVjdENvdW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXdrX3V0aWxfamF2YXNjcmlwdF9nY19vYmplY3RfY291bnRfZ2V0
KCk7Cit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvUGl4ZWxEdW1wU3VwcG9ydEVm
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1BpeGVsRHVtcFN1
cHBvcnRFZmwuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Bp
eGVsRHVtcFN1cHBvcnRFZmwuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IFphbiBEb2JlcnNlayA8emFuZG9iZXJzZWtAZ21haWwuY29t
PgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgUHJvRlVTSU9OIEVtYmVkZGVkIFN5c3RlbXMKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1z
dW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiRHVtcFJlbmRl
clRyZWUuaCIKKyNpbmNsdWRlICJQaXhlbER1bXBTdXBwb3J0Q2Fpcm8uaCIKKyNpbmNsdWRlICJS
ZWZQdHJDYWlyby5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisKK1Bhc3NSZWZQdHI8Qml0
bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wsIGJvb2wsIGJv
b2wsIGJvb2wgZHJhd1NlbGVjdGlvblJlY3QpCit7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0
X3NtYXJ0X2RhdGFfZ2V0KGJyb3dzZXIpKTsKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHBy
aXZhdGVEYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKj4oc21hcnREYXRh
LT5fcHJpdik7CisKKyAgICBpbnQgd2lkdGgsIGhlaWdodDsKKyAgICBpZiAoIWV3a19mcmFtZV9j
b250ZW50c19zaXplX2dldChtYWluRnJhbWUsICZ3aWR0aCwgJmhlaWdodCkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVm
KGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsIHdpZHRoLCBo
ZWlnaHQpKTsKKyAgICBSZWZQdHI8Y2Fpcm9fdD4gY29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2Ny
ZWF0ZShzdXJmYWNlLmdldCgpKSk7CisKKyAgICBjb25zdCBFaW5hX1JlY3RhbmdsZSByZWN0ID0g
eyAwLCAwLCB3aWR0aCwgaGVpZ2h0IH07CisgICAgaWYgKCFld2tfdmlld19wYWludF9jb250ZW50
cyhwcml2YXRlRGF0YSwgY29udGV4dC5nZXQoKSwgJnJlY3QpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIGlmIChkcmF3U2VsZWN0aW9uUmVjdCkgeworICAgICAgICBpbnQgeCwgeSwgcmVjdFdp
ZHRoLCByZWN0SGVpZ2h0OworCisgICAgICAgIGlmIChld2tfZnJhbWVfc2VsZWN0aW9uX3JlY3Rh
bmdsZV9nZXQobWFpbkZyYW1lLCAmeCwgJnksICZyZWN0V2lkdGgsICZyZWN0SGVpZ2h0KSkgewor
ICAgICAgICAgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgoY29udGV4dC5nZXQoKSwgMS4wKTsKKyAg
ICAgICAgICAgIGNhaXJvX3JlY3RhbmdsZShjb250ZXh0LmdldCgpLCB4LCB5LCByZWN0V2lkdGgs
IHJlY3RIZWlnaHQpOworICAgICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhKGNvbnRleHQu
Z2V0KCksIDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgICAgICAgICBjYWlyb19zdHJva2UoY29u
dGV4dC5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gQml0bWFwQ29udGV4
dDo6Y3JlYXRlQnlBZG9wdGluZ0JpdG1hcEFuZENvbnRleHQoMCwgY29udGV4dC5nZXQoKSk7Cit9
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvV29ya1F1ZXVlSXRlbUVmbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1FZmwuY3Bw
CShyZXZpc2lvbiAwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1dvcmtRdWV1ZUl0ZW1F
ZmwuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
UHJvRlVTSU9OIEVtYmVkZGVkIFN5c3RlbXMKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrUXVldWVJdGVt
RWZsLmgiCisKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgorCisjaW5jbHVkZSA8RVdlYktp
dC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQ1N0cmluZy5oPgorCitib29sIExvYWRJdGVtOjppbnZv
a2UoKSBjb25zdAoreworICAgIEV2YXNfT2JqZWN0KiB0YXJnZXRGcmFtZTsKKworICAgIGlmICht
X3RhcmdldC5pc0VtcHR5KCkpCisgICAgICAgIHRhcmdldEZyYW1lID0gbWFpbkZyYW1lOworICAg
IGVsc2UKKyAgICAgICAgdGFyZ2V0RnJhbWUgPSBld2tfZnJhbWVfY2hpbGRfZmluZChtYWluRnJh
bWUsIG1fdGFyZ2V0LnV0ZjgoKS5kYXRhKCkpOworCisgICAgZXdrX2ZyYW1lX3VyaV9zZXQodGFy
Z2V0RnJhbWUsIG1fdXJsLnV0ZjgoKS5kYXRhKCkpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2UoKSBjb25zdAoreworICAgIGlmIChtX3Vu
cmVhY2hhYmxlVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3NldCht
YWluRnJhbWUsIG1fY29udGVudC51dGY4KCkuZGF0YSgpLCAwLCAwLCAwLCBtX2Jhc2VVUkwudXRm
OCgpLmRhdGEoKSk7CisgICAgZWxzZQorICAgICAgICBld2tfZnJhbWVfY29udGVudHNfYWx0ZXJu
YXRlX3NldChtYWluRnJhbWUsIG1fY29udGVudC51dGY4KCkuZGF0YSgpLCAwLCAwLCAwLCBtX2Jh
c2VVUkwudXRmOCgpLmRhdGEoKSwgbV91bnJlYWNoYWJsZVVSTC51dGY4KCkuZGF0YSgpKTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlbG9hZEl0ZW06Omludm9rZSgpIGNvbnN0Cit7
CisgICAgZXdrX3ZpZXdfcmVsb2FkKGJyb3dzZXIpOworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFNjcmlwdEl0ZW06Omludm9rZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV3a19mcmFtZV9z
Y3JpcHRfZXhlY3V0ZShtYWluRnJhbWUsIG1fc2NyaXB0LnV0ZjgoKS5kYXRhKCkpOworfQorCiti
b29sIEJhY2tGb3J3YXJkSXRlbTo6aW52b2tlKCkgY29uc3QKK3sKKyAgICBFd2tfSGlzdG9yeSog
aGlzdG9yeSA9IGV3a192aWV3X2hpc3RvcnlfZ2V0KGJyb3dzZXIpOworCisgICAgaWYgKG1faG93
RmFyID09IDEpCisgICAgICAgIGV3a19oaXN0b3J5X2ZvcndhcmQoaGlzdG9yeSk7CisgICAgZWxz
ZSBpZiAobV9ob3dGYXIgPT0gLTEpCisgICAgICAgIGV3a19oaXN0b3J5X2JhY2soaGlzdG9yeSk7
CisgICAgZWxzZSB7CisgICAgICAgIGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0gPSBld2tf
aGlzdG9yeV9oaXN0b3J5X2l0ZW1fbnRoX2dldChoaXN0b3J5LCBtX2hvd0Zhcik7CisgICAgICAg
IGV3a19oaXN0b3J5X2hpc3RvcnlfaXRlbV9zZXQoaGlzdG9yeSwgaXRlbSk7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvV29ya1F1
ZXVlSXRlbUVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9Xb3Jr
UXVldWVJdGVtRWZsLmgJKHJldmlzaW9uIDApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwv
V29ya1F1ZXVlSXRlbUVmbC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gRW1iZWRkZWQgU3lzdGVtcworICogQ29weXJp
Z2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdvcmtRdWV1ZUl0
ZW1FZmxfaAorI2RlZmluZSBXb3JrUXVldWVJdGVtRWZsX2gKKworI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oPgorCitjbGFzcyBXb3JrUXVldWVJdGVtIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5Xb3JrUXVldWVJdGVtKCkgeyB9CisgICAgdmlydHVhbCBib29s
IGludm9rZSgpIGNvbnN0ID0gMDsgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgc3RhcnRlZCBhIGxv
YWQuCit9OworCitjbGFzcyBMb2FkSXRlbSA6IHB1YmxpYyBXb3JrUXVldWVJdGVtIHsKK3B1Ymxp
YzoKKyAgICBMb2FkSXRlbShjb25zdCBXVEY6OlN0cmluZyYgdXJsLCBjb25zdCBXVEY6OlN0cmlu
ZyYgdGFyZ2V0KQorICAgICAgICA6IG1fdGFyZ2V0KHRhcmdldCkKKyAgICAgICAgLCBtX3VybCh1
cmwpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBpbnZva2UoKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBXVEY6OlN0cmluZyBtX3RhcmdldDsKKyAgICBXVEY6OlN0cmluZyBtX3Vy
bDsKK307CisKK2NsYXNzIExvYWRIVE1MU3RyaW5nSXRlbSA6IHB1YmxpYyBXb3JrUXVldWVJdGVt
IHsKK3B1YmxpYzoKKyAgICBMb2FkSFRNTFN0cmluZ0l0ZW0oY29uc3QgV1RGOjpTdHJpbmcmIGNv
bnRlbnQsIGNvbnN0IFdURjo6U3RyaW5nJiBiYXNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgdW5y
ZWFjaGFibGVVUkwgPSBXVEY6OlN0cmluZygpKQorICAgICAgICA6IG1fY29udGVudChjb250ZW50
KQorICAgICAgICAsIG1fYmFzZVVSTChiYXNlVVJMKQorICAgICAgICAsIG1fdW5yZWFjaGFibGVV
UkwodW5yZWFjaGFibGVVUkwpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFs
IGJvb2wgaW52b2tlKCkgY29uc3Q7CisKKyAgICBXVEY6OlN0cmluZyBtX2NvbnRlbnQ7CisgICAg
V1RGOjpTdHJpbmcgbV9iYXNlVVJMOworICAgIFdURjo6U3RyaW5nIG1fdW5yZWFjaGFibGVVUkw7
Cit9OworCitjbGFzcyBSZWxvYWRJdGVtIDogcHVibGljIFdvcmtRdWV1ZUl0ZW0geworcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIGJvb2wgaW52b2tlKCkgY29uc3Q7Cit9OworCitjbGFzcyBTY3JpcHRJ
dGVtIDogcHVibGljIFdvcmtRdWV1ZUl0ZW0geworcHJvdGVjdGVkOgorICAgIFNjcmlwdEl0ZW0o
Y29uc3QgV1RGOjpTdHJpbmcmIHNjcmlwdCkKKyAgICAgICAgOiBtX3NjcmlwdChzY3JpcHQpCisg
ICAgeworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgYm9vbCBpbnZva2UoKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBXVEY6OlN0cmluZyBtX3NjcmlwdDsKK307CisKK2NsYXNzIExv
YWRpbmdTY3JpcHRJdGVtIDogcHVibGljIFNjcmlwdEl0ZW0geworcHVibGljOgorICAgIExvYWRp
bmdTY3JpcHRJdGVtKGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHQpCisgICAgICAgIDogU2NyaXB0
SXRlbShzY3JpcHQpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wg
aW52b2tlKCkgY29uc3QgeyByZXR1cm4gU2NyaXB0SXRlbTo6aW52b2tlKCk7IH0KK307CisKK2Ns
YXNzIE5vbkxvYWRpbmdTY3JpcHRJdGVtIDogcHVibGljIFNjcmlwdEl0ZW0geworcHVibGljOgor
ICAgIE5vbkxvYWRpbmdTY3JpcHRJdGVtKGNvbnN0IFdURjo6U3RyaW5nJiBzY3JpcHQpCisgICAg
ICAgIDogU2NyaXB0SXRlbShzY3JpcHQpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIGJvb2wgaW52b2tlKCkgY29uc3QgeyBTY3JpcHRJdGVtOjppbnZva2UoKTsgcmV0dXJu
IGZhbHNlOyB9Cit9OworCitjbGFzcyBCYWNrRm9yd2FyZEl0ZW0gOiBwdWJsaWMgV29ya1F1ZXVl
SXRlbSB7Citwcm90ZWN0ZWQ6CisgICAgQmFja0ZvcndhcmRJdGVtKGludCBob3dGYXIpCisgICAg
ICAgIDogbV9ob3dGYXIoaG93RmFyKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdmly
dHVhbCBib29sIGludm9rZSgpIGNvbnN0OworCisgICAgaW50IG1faG93RmFyOworfTsKKworY2xh
c3MgQmFja0l0ZW0gOiBwdWJsaWMgQmFja0ZvcndhcmRJdGVtIHsKK3B1YmxpYzoKKyAgICBCYWNr
SXRlbSh1bnNpZ25lZCBob3dGYXIpCisgICAgICAgIDogQmFja0ZvcndhcmRJdGVtKC1ob3dGYXIp
CisgICAgeworICAgIH0KK307CisKK2NsYXNzIEZvcndhcmRJdGVtIDogcHVibGljIEJhY2tGb3J3
YXJkSXRlbSB7CitwdWJsaWM6CisgICAgRm9yd2FyZEl0ZW0odW5zaWduZWQgaG93RmFyKQorICAg
ICAgICA6IEJhY2tGb3J3YXJkSXRlbShob3dGYXIpCisgICAgeworICAgIH0KK307CisKKyNlbmRp
ZiAvLyBXb3JrUXVldWVFZmxfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>