<?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>47896</bug_id>
          
          <creation_ts>2010-10-19 03:44:57 -0700</creation_ts>
          <short_desc>[GTK] Use GCharsetConverter instead of g_iconv in TextCodecGtk</short_desc>
          <delta_ts>2010-10-21 12:33: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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>296100</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-10-19 03:44:57 -0700</bug_when>
    <thetext>It makes error handling easier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296101</commentid>
    <comment_count>1</comment_count>
      <attachid>71150</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-10-19 03:54:06 -0700</bug_when>
    <thetext>Created attachment 71150
Patch to use GCharsetConverter

It fixes these tests when building with glib unicode:

fast/encoding/invalid-multi-byte-over-consumption.html
fast/encoding/invalid-xml.html
fast/encoding/japanese-encoding-mix.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296842</commentid>
    <comment_count>2</comment_count>
      <attachid>71150</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-20 09:39:04 -0700</bug_when>
    <thetext>Comment on attachment 71150
Patch to use GCharsetConverter

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

Great patch! Needs a few fixes, but I like where this is headed.

&gt; WebCore/platform/text/gtk/TextCodecGtk.cpp:322
&gt; +    , m_iconvDecoder(0)
&gt; +    , m_iconvEncoder(0)

No need to initialize these. The default constructor sets the RefPtr to 0.

&gt; WebCore/platform/text/gtk/TextCodecGtk.cpp:359
&gt; +    gsize bytesRead, bytesWritten;
&gt; +    const gchar *input = bytes;

bytesRead and bytesWritten should be initialized and on separate lines. Should be const gchar* input = bytes.

&gt; WebCore/platform/text/gtk/TextCodecGtk.cpp:362
&gt; +    int flags = !length ?  G_CONVERTER_INPUT_AT_END : G_CONVERTER_NO_FLAGS;

There&apos;s an extra space after ?

&gt; WebCore/platform/text/gtk/TextCodecGtk.cpp:392
&gt; +        GOwnPtr&lt;GError&gt; err;
&gt; +        GConverterResult res;
&gt; +
&gt; +        res = g_converter_convert(G_CONVERTER(m_iconvDecoder.get()),
&gt; +                                  input,
&gt; +                                  inputLength,
&gt; +                                  buffer,
&gt; +                                  sizeof(buffer),
&gt; +                                  (GConverterFlags)flags,
&gt; +                                  &amp;bytesRead,
&gt; +                                  &amp;bytesWritten,
&gt; +                                  &amp;err.outPtr());

Please change &quot;err&quot; to &quot;error&quot;.

No need to define and declare res separately. In general, I like this style of indenting, but in this case I think that it makes the method harder to read, because it is so long. Perhaps it could be like this?

GConverterResult res = g_converter_convert(G_CONVERTER(m_iconvDecoder.get()), input, inputLength
                                           buffer, sizeof(buffer), ...

I think you should also use a static_cast for flags.

&gt; WebCore/platform/text/gtk/TextCodecGtk.cpp:399
&gt; +            if (g_error_matches(err.get(), G_IO_ERROR, G_IO_ERROR_PARTIAL_INPUT)) {
&gt; +                memcpy(m_bufferedBytes, input, inputLength);
&gt; +                m_numBufferedBytes = inputLength;

You might want to also leave a comment here about why this might happen and what the strategy is for dealing with it, since it&apos;s not obvious from an initial inspection.

&gt; WebCore/platform/text/gtk/TextCodecGtk.cpp:440
&gt; +    gsize bytesRead, bytesWritten;
&gt; +    const gchar *input = reinterpret_cast&lt;const char*&gt;(characters);

bytesRead and bytesWritten should be initialized and on separate lines. Careful with the * again.

&gt; WebCore/platform/text/gtk/TextCodecGtk.cpp:444
&gt;      GOwnPtr&lt;GError&gt; err;

Probably a good idea to get rid of this abbreviation now.

&gt; WebCore/platform/text/gtk/TextCodecGtk.cpp:458
&gt; +        res = g_converter_convert(G_CONVERTER(m_iconvEncoder.get()),
&gt; +                                  input,
&gt; +                                  inputLength,
&gt; +                                  buffer,
&gt; +                                  sizeof(buffer),
&gt; +                                  G_CONVERTER_INPUT_AT_END,
&gt; +                                  &amp;bytesRead,
&gt; +                                  &amp;bytesWritten,
&gt; +                                  &amp;err.outPtr());

Same comment here as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296871</commentid>
    <comment_count>3</comment_count>
      <attachid>71308</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-10-20 10:51:42 -0700</bug_when>
    <thetext>Created attachment 71308
Updated patch according to review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297216</commentid>
    <comment_count>4</comment_count>
      <attachid>71308</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-20 20:50:06 -0700</bug_when>
    <thetext>Comment on attachment 71308
Updated patch according to review

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

I have a couple more nits, but it&apos;s very close.

&gt; WebCore/platform/text/gtk/TextCodecGtk.cpp:348
&gt; +        ASSERT(m_iconvDecoder);
&gt; +        if (!m_iconvDecoder) {

Sorry, I missed this before. Either we should remove the ASSERT here or not handle the failure case.

&gt; WebCore/platform/text/gtk/TextCodecGtk.cpp:393
&gt; +                // there is not enough input to fully determine what the conversion should produce
&gt; +                // save it to a buffer to prepend it to the next input

Nice comment, but it should be a full sentence with punctuation, etc.

&gt; WebCore/platform/text/gtk/TextCodecGtk.cpp:399
&gt; +            } else if (g_error_matches(error.get(), G_IO_ERROR, G_IO_ERROR_NO_SPACE)) {
&gt; +                bufferWasFull = true;
&gt; +            } else if (g_error_matches(error.get(), G_IO_ERROR, G_IO_ERROR_INVALID_DATA)) {

WebKit style dictates that one-line blocks omit their surrounding curly braces (as much as I dislike it).

&gt; WebCore/platform/text/gtk/TextCodecGtk.cpp:410
&gt; +                m_numBufferedBytes = 0; // reset state for subsequent calls to decode

This comment should also be in sentence form.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297247</commentid>
    <comment_count>5</comment_count>
      <attachid>71394</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-10-20 23:50:39 -0700</bug_when>
    <thetext>Created attachment 71394
Another update according to review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297254</commentid>
    <comment_count>6</comment_count>
      <attachid>71394</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-21 00:22:44 -0700</bug_when>
    <thetext>Comment on attachment 71394
Another update according to review

Great. Thanks for the fixes. Hopefully we can continue to improve this code as we go along.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297355</commentid>
    <comment_count>7</comment_count>
      <attachid>71394</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-21 04:04:48 -0700</bug_when>
    <thetext>Comment on attachment 71394
Another update according to review

Rejecting patch 71394 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;apply-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--quiet&apos;, 71394]&quot; exit_code: 2
Cleaning working directory
Updating working directory
Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=71394&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=47896&amp;ctype=xml
Processing 1 patch from 1 bug.
Processing patch 71394 from bug 47896.
Failed to run &quot;[u&apos;/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Martin Robinson&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/4705008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297494</commentid>
    <comment_count>8</comment_count>
      <attachid>71454</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-10-21 10:18:41 -0700</bug_when>
    <thetext>Created attachment 71454
Update patch for current git master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297567</commentid>
    <comment_count>9</comment_count>
      <attachid>71454</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-21 12:33:21 -0700</bug_when>
    <thetext>Comment on attachment 71454
Update patch for current git master

Clearing flags on attachment: 71454

Committed r70257: &lt;http://trac.webkit.org/changeset/70257&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297568</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-21 12:33:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71150</attachid>
            <date>2010-10-19 03:54:06 -0700</date>
            <delta_ts>2010-10-20 10:51:42 -0700</delta_ts>
            <desc>Patch to use GCharsetConverter</desc>
            <filename>gcharset-converter.diff</filename>
            <type>text/plain</type>
            <size>11929</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlNTk5MTUxLi45ZTlkOGY2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTAtMTAtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IFVzZSBHQ2hhcnNldENvbnZlcnRlciBpbnN0ZWFkIG9mIGdfaWNvbnYgaW4gVGV4dENvZGVjR3Rr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Nzg5Ngor
CisgICAgICAgICogd3RmL2dvYmplY3QvR1R5cGVkZWZzLmg6CisKIDIwMTAtMTAtMTUgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
YnVpbGQgZml4IGZvciBEZWJ1ZyBMZW9wYXJkIHdoaWNoIGlzIGZhaWxuZyB0byBjb21waWxlIGFm
dGVyIHI2OTg0Mi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNGZkOTUzMi4uNTNiY2UwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0xMC0xOSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gVXNlIEdDaGFyc2V0Q29u
dmVydGVyIGluc3RlYWQgb2YgZ19pY29udiBpbiBUZXh0Q29kZWNHdGsKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODk2CisKKyAgICAgICAgSXQgbWFr
ZXMgZXJyb3IgaGFuZGxpbmcgZWFzaWVyLiBGaXhlcyB0ZXN0czoKKyAgICAgICAgIGZhc3QvZW5j
b2RpbmcvaW52YWxpZC1tdWx0aS1ieXRlLW92ZXItY29uc3VtcHRpb24uaHRtbAorICAgICAgICAg
ZmFzdC9lbmNvZGluZy9pbnZhbGlkLXhtbC5odG1sCisgICAgICAgICBmYXN0L2VuY29kaW5nL2ph
cGFuZXNlLWVuY29kaW5nLW1peC5odG1sCisgICAgICAgIHdoZW4gYnVpbGRpbmcgd2l0aCBnbGli
IHVuaWNvZGUKKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvZ3RrL1RleHRDb2RlY0d0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNHdGs6OlRleHRDb2RlY0d0ayk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q29kZWNHdGs6On5UZXh0Q29kZWNHdGspOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENvZGVjR3RrOjpjcmVhdGVJQ29udkRlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dENvZGVjR3RrOjpjcmVhdGVJQ29udkVuY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENvZGVjR3RrOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjR3RrOjplbmNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvZ3RrL1RleHRDb2RlY0d0ay5oOgorCiAyMDEw
LTEwLTE1ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0
Zi9nb2JqZWN0L0dUeXBlZGVmcy5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR1R5cGVk
ZWZzLmgKaW5kZXggYjE2MDBjMi4uNzZkMWIxYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
d3RmL2dvYmplY3QvR1R5cGVkZWZzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3Qv
R1R5cGVkZWZzLmgKQEAgLTM4LDYgKzM4LDcgQEAgdHlwZWRlZiB2b2lkKiBncG9pbnRlcjsKIAog
dHlwZWRlZiBzdHJ1Y3QgX0dBc3luY1Jlc3VsdCBHQXN5bmNSZXN1bHQ7CiB0eXBlZGVmIHN0cnVj
dCBfR0NhbmNlbGxhYmxlIEdDYW5jZWxsYWJsZTsKK3R5cGVkZWYgc3RydWN0IF9HQ2hhcnNldENv
bnZlcnRlciBHQ2hhcnNldENvbnZlcnRlcjsKIHR5cGVkZWYgc3RydWN0IF9HQ29uZCBHQ29uZDsK
IHR5cGVkZWYgc3RydWN0IF9HRGlyIEdEaXI7CiB0eXBlZGVmIHN0cnVjdCBfR2RrQXRvbSogR2Rr
QXRvbTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dENvZGVjR3Rr
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dENvZGVjR3RrLmNwcAppbmRleCBh
MTU0MGJlLi5iNWViZjEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1Rl
eHRDb2RlY0d0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0Q29kZWNH
dGsuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
VGV4dENvZGVjR3RrLmgiCiAKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSAiR093blB0
ci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpA
QCAtMzE3LDEwNiArMzE4LDExMCBAQCB2b2lkIFRleHRDb2RlY0d0azo6cmVnaXN0ZXJFeHRlbmRl
ZENvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogVGV4dENvZGVjR3RrOjpUZXh0
Q29kZWNHdGsoY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykKICAgICA6IG1fZW5jb2Rpbmco
ZW5jb2RpbmcpCiAgICAgLCBtX251bUJ1ZmZlcmVkQnl0ZXMoMCkKLSAgICAsIG1faWNvbnZEZWNv
ZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSkpCi0gICAgLCBtX2ljb252RW5jb2Rlcihy
ZWludGVycHJldF9jYXN0PEdJQ29udj4oLTEpKQorICAgICwgbV9pY29udkRlY29kZXIoMCkKKyAg
ICAsIG1faWNvbnZFbmNvZGVyKDApCiB7CiB9CiAKIFRleHRDb2RlY0d0azo6flRleHRDb2RlY0d0
aygpCiB7Ci0gICAgaWYgKG1faWNvbnZEZWNvZGVyICE9IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252
PigtMSkpIHsKLSAgICAgICAgZ19pY29udl9jbG9zZShtX2ljb252RGVjb2Rlcik7Ci0gICAgICAg
IG1faWNvbnZEZWNvZGVyID0gcmVpbnRlcnByZXRfY2FzdDxHSUNvbnY+KC0xKTsKLSAgICB9Ci0g
ICAgaWYgKG1faWNvbnZFbmNvZGVyICE9IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSkpIHsK
LSAgICAgICAgZ19pY29udl9jbG9zZShtX2ljb252RW5jb2Rlcik7Ci0gICAgICAgIG1faWNvbnZF
bmNvZGVyID0gcmVpbnRlcnByZXRfY2FzdDxHSUNvbnY+KC0xKTsKLSAgICB9CiB9CiAKIHZvaWQg
VGV4dENvZGVjR3RrOjpjcmVhdGVJQ29udkRlY29kZXIoKSBjb25zdAogewotICAgIEFTU0VSVCht
X2ljb252RGVjb2RlciA9PSByZWludGVycHJldF9jYXN0PEdJQ29udj4oLTEpKTsKKyAgICBBU1NF
UlQoIW1faWNvbnZEZWNvZGVyKTsKIAotICAgIG1faWNvbnZEZWNvZGVyID0gZ19pY29udl9vcGVu
KG1faW50ZXJuYWxFbmNvZGluZ05hbWUsIG1fZW5jb2RpbmcubmFtZSgpKTsKKyAgICBtX2ljb252
RGVjb2RlciA9IGFkb3B0UGxhdGZvcm1SZWYoZ19jaGFyc2V0X2NvbnZlcnRlcl9uZXcobV9pbnRl
cm5hbEVuY29kaW5nTmFtZSwgbV9lbmNvZGluZy5uYW1lKCksIDApKTsKIH0KIAogdm9pZCBUZXh0
Q29kZWNHdGs6OmNyZWF0ZUlDb252RW5jb2RlcigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1faWNv
bnZEZWNvZGVyID09IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSkpOworICAgIEFTU0VSVCgh
bV9pY29udkRlY29kZXIpOwogCi0gICAgbV9pY29udkVuY29kZXIgPSBnX2ljb252X29wZW4obV9l
bmNvZGluZy5uYW1lKCksIG1faW50ZXJuYWxFbmNvZGluZ05hbWUpOworICAgIG1faWNvbnZFbmNv
ZGVyID0gYWRvcHRQbGF0Zm9ybVJlZihnX2NoYXJzZXRfY29udmVydGVyX25ldyhtX2VuY29kaW5n
Lm5hbWUoKSwgbV9pbnRlcm5hbEVuY29kaW5nTmFtZSwgMCkpOwogfQogCiBTdHJpbmcgVGV4dENv
ZGVjR3RrOjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1
c2gsIGJvb2wgc3RvcE9uRXJyb3IsIGJvb2wmIHNhd0Vycm9yKQogewogICAgIC8vIEdldCBhIGNv
bnZlcnRlciBmb3IgdGhlIHBhc3NlZC1pbiBlbmNvZGluZy4KLSAgICBpZiAobV9pY29udkRlY29k
ZXIgPT0gcmVpbnRlcnByZXRfY2FzdDxHSUNvbnY+KC0xKSkgeworICAgIGlmICghbV9pY29udkRl
Y29kZXIpIHsKICAgICAgICAgY3JlYXRlSUNvbnZEZWNvZGVyKCk7Ci0gICAgICAgIEFTU0VSVCht
X2ljb252RGVjb2RlciAhPSByZWludGVycHJldF9jYXN0PEdJQ29udj4oLTEpKTsKLSAgICAgICAg
aWYgKG1faWNvbnZEZWNvZGVyID09IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSkpIHsKKyAg
ICAgICAgQVNTRVJUKG1faWNvbnZEZWNvZGVyKTsKKyAgICAgICAgaWYgKCFtX2ljb252RGVjb2Rl
cikgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciBjcmVhdGluZyBJQ29udiBlbmNvZGVy
IGV2ZW4gdGhvdWdoIGVuY29kaW5nIHdhcyBpbiB0YWJsZS4iKTsKICAgICAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHNpemVfdCBjb3VudFdyaXR0ZW4s
IGNvdW50UmVhZCwgY29udmVyc2lvbkxlbmd0aDsKLSAgICBjb25zdCBjaGFyKiBjb252ZXJzaW9u
Qnl0ZXM7Ci0gICAgY2hhciogcHJlZml4ZWRCeXRlcyA9IDA7CisgICAgVmVjdG9yPFVDaGFyPiBy
ZXN1bHQ7CiAKKyAgICBnc2l6ZSBieXRlc1JlYWQsIGJ5dGVzV3JpdHRlbjsKKyAgICBjb25zdCBn
Y2hhciAqaW5wdXQgPSBieXRlczsKKyAgICBnc2l6ZSBpbnB1dExlbmd0aCA9IGxlbmd0aDsKKyAg
ICBnY2hhciBidWZmZXJbQ29udmVyc2lvbkJ1ZmZlclNpemVdOworICAgIGludCBmbGFncyA9ICFs
ZW5ndGggPyAgR19DT05WRVJURVJfSU5QVVRfQVRfRU5EIDogR19DT05WRVJURVJfTk9fRkxBR1M7
CisgICAgaWYgKGZsdXNoKQorICAgICAgICBmbGFncyB8PSBHX0NPTlZFUlRFUl9GTFVTSDsKKwor
ICAgIGJvb2wgYnVmZmVyV2FzRnVsbCA9IGZhbHNlOworICAgIGNoYXIqIHByZWZpeGVkQnl0ZXMg
PSAwOwogICAgIGlmIChtX251bUJ1ZmZlcmVkQnl0ZXMpIHsKLSAgICAgICAgY29udmVyc2lvbkxl
bmd0aCA9IGxlbmd0aCArIG1fbnVtQnVmZmVyZWRCeXRlczsKLSAgICAgICAgcHJlZml4ZWRCeXRl
cyA9IHN0YXRpY19jYXN0PGNoYXIqPihmYXN0TWFsbG9jKGNvbnZlcnNpb25MZW5ndGgpKTsKKyAg
ICAgICAgaW5wdXRMZW5ndGggPSBsZW5ndGggKyBtX251bUJ1ZmZlcmVkQnl0ZXM7CisgICAgICAg
IHByZWZpeGVkQnl0ZXMgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZmFzdE1hbGxvYyhpbnB1dExlbmd0
aCkpOwogICAgICAgICBtZW1jcHkocHJlZml4ZWRCeXRlcywgbV9idWZmZXJlZEJ5dGVzLCBtX251
bUJ1ZmZlcmVkQnl0ZXMpOwogICAgICAgICBtZW1jcHkocHJlZml4ZWRCeXRlcyArIG1fbnVtQnVm
ZmVyZWRCeXRlcywgYnl0ZXMsIGxlbmd0aCk7Ci0gICAgICAgIAotICAgICAgICBjb252ZXJzaW9u
Qnl0ZXMgPSBwcmVmaXhlZEJ5dGVzOwotICAgICAgICAKKworICAgICAgICBpbnB1dCA9IHByZWZp
eGVkQnl0ZXM7CisKICAgICAgICAgLy8gYWxsIGJ1ZmZlcmVkIGJ5dGVzIGFyZSBjb25zdW1lZCBu
b3cKICAgICAgICAgbV9udW1CdWZmZXJlZEJ5dGVzID0gMDsKLSAgICB9IGVsc2UgewotICAgICAg
ICAvLyBubyBwcmV2aW91c2x5IGJ1ZmZlcmVkIHBhcnRpYWwgZGF0YSwgCi0gICAgICAgIC8vIGp1
c3QgY29udmVydCB0aGUgZGF0YSB0aGF0IHdhcyBwYXNzZWQgaW4KLSAgICAgICAgY29udmVyc2lv
bkJ5dGVzID0gYnl0ZXM7Ci0gICAgICAgIGNvbnZlcnNpb25MZW5ndGggPSBsZW5ndGg7CiAgICAg
fQogCi0gICAgR093blB0cjxHRXJyb3I+IGVycjsKLSAgICBHT3duUHRyPFVDaGFyPiBidWZmZXI7
Ci0KLSAgICBidWZmZXIub3V0UHRyKCkgPSByZWludGVycHJldF9jYXN0PFVDaGFyKj4oZ19jb252
ZXJ0X3dpdGhfaWNvbnYoY29udmVyc2lvbkJ5dGVzLCBjb252ZXJzaW9uTGVuZ3RoLCBtX2ljb252
RGVjb2RlciwgJmNvdW50UmVhZCwgJmNvdW50V3JpdHRlbiwgJmVyci5vdXRQdHIoKSkpOyAKKyAg
ICBkbyB7CisgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnI7CisgICAgICAgIEdDb252ZXJ0ZXJS
ZXN1bHQgcmVzOworCisgICAgICAgIHJlcyA9IGdfY29udmVydGVyX2NvbnZlcnQoR19DT05WRVJU
RVIobV9pY29udkRlY29kZXIuZ2V0KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0TGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoR0NvbnZlcnRlckZsYWdzKWZsYWdzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZieXRlc1JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJmJ5dGVzV3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmZXJyLm91dFB0cigpKTsKKyAgICAgICAgaW5wdXQgKz0gYnl0ZXNSZWFkOworICAgICAgICBp
bnB1dExlbmd0aCAtPSBieXRlc1JlYWQ7CisKKyAgICAgICAgaWYgKHJlcyA9PSBHX0NPTlZFUlRF
Ul9FUlJPUikgeworICAgICAgICAgICAgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnIuZ2V0KCksIEdf
SU9fRVJST1IsIEdfSU9fRVJST1JfUEFSVElBTF9JTlBVVCkpIHsKKyAgICAgICAgICAgICAgICBt
ZW1jcHkobV9idWZmZXJlZEJ5dGVzLCBpbnB1dCwgaW5wdXRMZW5ndGgpOworICAgICAgICAgICAg
ICAgIG1fbnVtQnVmZmVyZWRCeXRlcyA9IGlucHV0TGVuZ3RoOworICAgICAgICAgICAgICAgIGlu
cHV0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZ19lcnJvcl9tYXRjaGVzKGVy
ci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9OT19TUEFDRSkpIHsKKyAgICAgICAgICAg
ICAgICBidWZmZXJXYXNGdWxsID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZ19lcnJv
cl9tYXRjaGVzKGVyci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9JTlZBTElEX0RBVEEp
KSB7CisgICAgICAgICAgICAgICAgaWYgKHN0b3BPbkVycm9yKQorICAgICAgICAgICAgICAgICAg
ICBzYXdFcnJvciA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKGlucHV0TGVuZ3RoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBpbnZhbGlkIGNoYXJhY3RlcgorICAgICAgICAg
ICAgICAgICAgICBpbnB1dCArPSAxOworICAgICAgICAgICAgICAgICAgICBpbnB1dExlbmd0aCAt
PSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgc2F3RXJyb3IgPSB0cnVlOworICAgICAgICAgICAgICAgIExPR19FUlJPUigiR0lDb252
IGNvbnZlcnNpb24gZXJyb3IsIENvZGUgJWQ6IFwiJXNcIiIsIGVyci0+Y29kZSwgZXJyLT5tZXNz
YWdlKTsKKyAgICAgICAgICAgICAgICBtX251bUJ1ZmZlcmVkQnl0ZXMgPSAwOyAvLyByZXNldCBz
dGF0ZSBmb3Igc3Vic2VxdWVudCBjYWxscyB0byBkZWNvZGUKKyAgICAgICAgICAgICAgICBmYXN0
RnJlZShwcmVmaXhlZEJ5dGVzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KIAorICAgICAgICByZXN1bHQuYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIpLCBieXRlc1dyaXR0ZW4gLyBzaXplb2YoVUNoYXIpKTsK
IAotICAgIGlmIChlcnIpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJHSUNvbnYgY29udmVyc2lvbiBl
cnJvciwgQ29kZSAlZDogXCIlc1wiIiwgZXJyLT5jb2RlLCBlcnItPm1lc3NhZ2UpOwotICAgICAg
ICBtX251bUJ1ZmZlcmVkQnl0ZXMgPSAwOyAvLyByZXNldCBzdGF0ZSBmb3Igc3Vic2VxdWVudCBj
YWxscyB0byBkZWNvZGUKLSAgICAgICAgZmFzdEZyZWUocHJlZml4ZWRCeXRlcyk7Ci0gICAgICAg
IHNhd0Vycm9yID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIH0KLSAgICAK
LSAgICAvLyBQYXJ0aWFsIGlucHV0IGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBtYXkgbm90IHJl
c3VsdCBpbiBhbiBlcnJvciBiZWluZyByYWlzZWQuIAotICAgIC8vIEZyb20gdGhlIGdub21lIGxp
YnJhcnkgZG9jdW1lbnRhdGlvbiBvbiBnX2NvbnZlcnRfd2l0aF9pY29udjoKLSAgICAvLyAiRXZl
biBpZiB0aGUgY29udmVyc2lvbiB3YXMgc3VjY2Vzc2Z1bCwgdGhpcyBtYXkgYmUgbGVzcyB0aGFu
IGxlbiBpZiB0aGVyZSB3ZXJlIHBhcnRpYWwgY2hhcmFjdGVycyBhdCB0aGUgZW5kIG9mIHRoZSBp
bnB1dC4iCi0gICAgLy8gVGhhdCdzIHdoeSB3ZSBuZWVkIHRvIGNvbXBhcmUgY29udmVyc2lvbkxl
bmd0aCBhZ2FpbnN0IGNvdW50UmVhZCAKLQotICAgIG1fbnVtQnVmZmVyZWRCeXRlcyA9IGNvbnZl
cnNpb25MZW5ndGggLSBjb3VudFJlYWQ7Ci0gICAgaWYgKG1fbnVtQnVmZmVyZWRCeXRlcyA+IDAp
IHsKLSAgICAgICAgaWYgKGZsdXNoKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIlBhcnRpYWwg
Ynl0ZXMgYXQgZW5kIG9mIGlucHV0IHdoaWxlIGZsdXNoIHJlcXVlc3RlZC4iKTsKLSAgICAgICAg
ICAgIG1fbnVtQnVmZmVyZWRCeXRlcyA9IDA7IC8vIHJlc2V0IHN0YXRlIGZvciBzdWJzZXF1ZW50
IGNhbGxzIHRvIGRlY29kZQotICAgICAgICAgICAgZmFzdEZyZWUocHJlZml4ZWRCeXRlcyk7Ci0g
ICAgICAgICAgICBzYXdFcnJvciA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0gICAgICAgIH0KLSAgICAgICAgbWVtY3B5KG1fYnVmZmVyZWRCeXRlcywgY29udmVyc2lvbkJ5
dGVzICsgY291bnRSZWFkLCBtX251bUJ1ZmZlcmVkQnl0ZXMpOwotICAgIH0KKyAgICB9IHdoaWxl
ICgoaW5wdXRMZW5ndGggfHwgYnVmZmVyV2FzRnVsbCkgJiYgIXNhd0Vycm9yKTsKIAogICAgIGZh
c3RGcmVlKHByZWZpeGVkQnl0ZXMpOwotICAgIAotICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0Owot
Ci0gICAgcmVzdWx0LmFwcGVuZChidWZmZXIuZ2V0KCksIGNvdW50V3JpdHRlbiAvIHNpemVvZihV
Q2hhcikpOwogCiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKIH0KQEAgLTQyNiwy
MyArNDMxLDQ0IEBAIENTdHJpbmcgVGV4dENvZGVjR3RrOjplbmNvZGUoY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnMsIHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmxlCiAgICAgaWYgKCFsZW5ndGgpCiAg
ICAgICAgIHJldHVybiAiIjsKIAotICAgIGlmIChtX2ljb252RW5jb2RlciA9PSByZWludGVycHJl
dF9jYXN0PEdJQ29udj4oLTEpKQorICAgIGlmICghbV9pY29udkVuY29kZXIpCiAgICAgICAgIGNy
ZWF0ZUlDb252RW5jb2RlcigpOwotICAgIGlmIChtX2ljb252RW5jb2RlciA9PSByZWludGVycHJl
dF9jYXN0PEdJQ29udj4oLTEpKQorICAgIGlmICghbV9pY29udkVuY29kZXIpCiAgICAgICAgIHJl
dHVybiBDU3RyaW5nKCk7CiAKLSAgICBzaXplX3QgY291bnQ7Ci0KKyAgICBnc2l6ZSBieXRlc1Jl
YWQsIGJ5dGVzV3JpdHRlbjsKKyAgICBjb25zdCBnY2hhciAqaW5wdXQgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihjaGFyYWN0ZXJzKTsKKyAgICBnc2l6ZSBpbnB1dExlbmd0aCA9IGxl
bmd0aCAqIHNpemVvZihVQ2hhcik7CisgICAgZ2NoYXIgYnVmZmVyW0NvbnZlcnNpb25CdWZmZXJT
aXplXTsKKyAgICBWZWN0b3I8Y2hhcj4gcmVzdWx0OwogICAgIEdPd25QdHI8R0Vycm9yPiBlcnI7
Ci0gICAgR093blB0cjxjaGFyPiBidWZmZXI7CiAKLSAgICBidWZmZXIub3V0UHRyKCkgPSBnX2Nv
bnZlcnRfd2l0aF9pY29udihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaGFyYWN0ZXJz
KSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgbV9pY29udkVuY29kZXIsIDAsICZjb3VudCwgJmVy
ci5vdXRQdHIoKSk7CisgICAgc2l6ZV90IHNpemUgPSAwOworICAgIGRvIHsKKyAgICAgICAgR0Nv
bnZlcnRlclJlc3VsdCByZXM7CisKKyAgICAgICAgcmVzID0gZ19jb252ZXJ0ZXJfY29udmVydChH
X0NPTlZFUlRFUihtX2ljb252RW5jb2Rlci5nZXQoKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5w
dXRMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihidWZmZXIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ09OVkVSVEVSX0lOUFVUX0FUX0VORCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZXNSZWFkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZieXRlc1dyaXR0ZW4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmVyci5vdXRQdHIoKSk7CisgICAgICAgIGlucHV0ICs9IGJ5dGVzUmVhZDsK
KyAgICAgICAgaW5wdXRMZW5ndGggLT0gYnl0ZXNSZWFkOworICAgICAgICByZXN1bHQuZ3Jvdyhz
aXplICsgYnl0ZXNXcml0dGVuKTsKKyAgICAgICAgbWVtY3B5KHJlc3VsdC5kYXRhKCkgKyBzaXpl
LCBidWZmZXIsIGJ5dGVzV3JpdHRlbik7CisgICAgICAgIHNpemUgKz0gYnl0ZXNXcml0dGVuOwor
ICAgIH0gd2hpbGUgKGlucHV0TGVuZ3RoICYmICFlcnIuZ2V0KCkpOworCiAgICAgaWYgKGVycikg
ewogICAgICAgICBMT0dfRVJST1IoIkdJQ29udiBjb252ZXJzaW9uIGVycm9yLCBDb2RlICVkOiBc
IiVzXCIiLCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBDU3RyaW5n
KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyLmdldCgpLCBjb3VudCk7Cisg
ICAgcmV0dXJuIENTdHJpbmcocmVzdWx0LmRhdGEoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dENv
ZGVjR3RrLmggYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRDb2RlY0d0ay5oCmluZGV4
IDQ2MmJkY2UuLjcwNzYyN2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsv
VGV4dENvZGVjR3RrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0Q29kZWNH
dGsuaApAQCAtMjksNiArMjksNyBAQAogI2lmbmRlZiBUZXh0Q29kZWNHVEtfaAogI2RlZmluZSBU
ZXh0Q29kZWNHVEtfaAogCisjaW5jbHVkZSAiR1JlZlB0ci5oIgogI2luY2x1ZGUgPGdsaWIuaD4K
ICNpbmNsdWRlICJUZXh0Q29kZWMuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKQEAgLTYw
LDggKzYxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBUZXh0RW5jb2RpbmcgbV9l
bmNvZGluZzsKICAgICAgICAgc2l6ZV90IG1fbnVtQnVmZmVyZWRCeXRlczsKICAgICAgICAgdW5z
aWduZWQgY2hhciBtX2J1ZmZlcmVkQnl0ZXNbMTZdOyAvLyBiaWdnZXIgdGhhbiBhbnkgc2luZ2xl
IG11bHRpLWJ5dGUgY2hhcmFjdGVyICAgICAgICAKLSAgICAgICAgbXV0YWJsZSBHSUNvbnYgbV9p
Y29udkRlY29kZXI7Ci0gICAgICAgIG11dGFibGUgR0lDb252IG1faWNvbnZFbmNvZGVyOworICAg
ICAgICBtdXRhYmxlIFBsYXRmb3JtUmVmUHRyPEdDaGFyc2V0Q29udmVydGVyPiBtX2ljb252RGVj
b2RlcjsKKyAgICAgICAgbXV0YWJsZSBQbGF0Zm9ybVJlZlB0cjxHQ2hhcnNldENvbnZlcnRlcj4g
bV9pY29udkVuY29kZXI7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGdjaGFyKiBtX2ludGVybmFs
RW5jb2RpbmdOYW1lOwogCg==
</data>
<flag name="review"
          id="61134"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71308</attachid>
            <date>2010-10-20 10:51:42 -0700</date>
            <delta_ts>2010-10-20 23:50:39 -0700</delta_ts>
            <desc>Updated patch according to review</desc>
            <filename>gconverter.diff</filename>
            <type>text/plain</type>
            <size>12053</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlNTk5MTUxLi5jMWQ2MTczIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTAtMTAtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IFVzZSBHQ2hhcnNldENvbnZlcnRlciBpbnN0ZWFkIG9mIGdfaWNvbnYgaW4gVGV4dENvZGVjR3Rr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Nzg5Ngor
CisgICAgICAgICogd3RmL2dvYmplY3QvR1R5cGVkZWZzLmg6CisKIDIwMTAtMTAtMTUgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
YnVpbGQgZml4IGZvciBEZWJ1ZyBMZW9wYXJkIHdoaWNoIGlzIGZhaWxuZyB0byBjb21waWxlIGFm
dGVyIHI2OTg0Mi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNGZkOTUzMi4uNjQ5YjRlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0xMC0yMCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gVXNlIEdDaGFyc2V0Q29u
dmVydGVyIGluc3RlYWQgb2YgZ19pY29udiBpbiBUZXh0Q29kZWNHdGsKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODk2CisKKyAgICAgICAgSXQgbWFr
ZXMgZXJyb3IgaGFuZGxpbmcgZWFzaWVyLiBGaXhlcyB0ZXN0czoKKyAgICAgICAgICBmYXN0L2Vu
Y29kaW5nL2ludmFsaWQtbXVsdGktYnl0ZS1vdmVyLWNvbnN1bXB0aW9uLmh0bWwKKyAgICAgICAg
ICBmYXN0L2VuY29kaW5nL2ludmFsaWQteG1sLmh0bWwKKyAgICAgICAgICBmYXN0L2VuY29kaW5n
L2phcGFuZXNlLWVuY29kaW5nLW1peC5odG1sCisgICAgICAgIHdoZW4gYnVpbGRpbmcgd2l0aCBn
bGliIHVuaWNvZGUKKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvZ3RrL1RleHRDb2RlY0d0ay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNHdGs6OlRleHRDb2RlY0d0ayk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0Q29kZWNHdGs6On5UZXh0Q29kZWNHdGspOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjR3RrOjpjcmVhdGVJQ29udkRlY29kZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENvZGVjR3RrOjpjcmVhdGVJQ29udkVuY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dENvZGVjR3RrOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjR3RrOjpl
bmNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvZ3RrL1RleHRDb2RlY0d0ay5oOgorCiAy
MDEwLTEwLTE1ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR1R5
cGVkZWZzLmgKaW5kZXggYjE2MDBjMi4uNzZkMWIxYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL2dvYmpl
Y3QvR1R5cGVkZWZzLmgKQEAgLTM4LDYgKzM4LDcgQEAgdHlwZWRlZiB2b2lkKiBncG9pbnRlcjsK
IAogdHlwZWRlZiBzdHJ1Y3QgX0dBc3luY1Jlc3VsdCBHQXN5bmNSZXN1bHQ7CiB0eXBlZGVmIHN0
cnVjdCBfR0NhbmNlbGxhYmxlIEdDYW5jZWxsYWJsZTsKK3R5cGVkZWYgc3RydWN0IF9HQ2hhcnNl
dENvbnZlcnRlciBHQ2hhcnNldENvbnZlcnRlcjsKIHR5cGVkZWYgc3RydWN0IF9HQ29uZCBHQ29u
ZDsKIHR5cGVkZWYgc3RydWN0IF9HRGlyIEdEaXI7CiB0eXBlZGVmIHN0cnVjdCBfR2RrQXRvbSog
R2RrQXRvbTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dENvZGVj
R3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dENvZGVjR3RrLmNwcAppbmRl
eCBhMTU0MGJlLi42ZjJiZWVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3Rr
L1RleHRDb2RlY0d0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0Q29k
ZWNHdGsuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiVGV4dENvZGVjR3RrLmgiCiAKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSAiR093
blB0ci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgpAQCAtMzE3LDEwNiArMzE4LDEwNiBAQCB2b2lkIFRleHRDb2RlY0d0azo6cmVnaXN0ZXJFeHRl
bmRlZENvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogVGV4dENvZGVjR3RrOjpU
ZXh0Q29kZWNHdGsoY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykKICAgICA6IG1fZW5jb2Rp
bmcoZW5jb2RpbmcpCiAgICAgLCBtX251bUJ1ZmZlcmVkQnl0ZXMoMCkKLSAgICAsIG1faWNvbnZE
ZWNvZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSkpCi0gICAgLCBtX2ljb252RW5jb2Rl
cihyZWludGVycHJldF9jYXN0PEdJQ29udj4oLTEpKQogewogfQogCiBUZXh0Q29kZWNHdGs6On5U
ZXh0Q29kZWNHdGsoKQogewotICAgIGlmIChtX2ljb252RGVjb2RlciAhPSByZWludGVycHJldF9j
YXN0PEdJQ29udj4oLTEpKSB7Ci0gICAgICAgIGdfaWNvbnZfY2xvc2UobV9pY29udkRlY29kZXIp
OwotICAgICAgICBtX2ljb252RGVjb2RlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSk7
Ci0gICAgfQotICAgIGlmIChtX2ljb252RW5jb2RlciAhPSByZWludGVycHJldF9jYXN0PEdJQ29u
dj4oLTEpKSB7Ci0gICAgICAgIGdfaWNvbnZfY2xvc2UobV9pY29udkVuY29kZXIpOwotICAgICAg
ICBtX2ljb252RW5jb2RlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSk7Ci0gICAgfQog
fQogCiB2b2lkIFRleHRDb2RlY0d0azo6Y3JlYXRlSUNvbnZEZWNvZGVyKCkgY29uc3QKIHsKLSAg
ICBBU1NFUlQobV9pY29udkRlY29kZXIgPT0gcmVpbnRlcnByZXRfY2FzdDxHSUNvbnY+KC0xKSk7
CisgICAgQVNTRVJUKCFtX2ljb252RGVjb2Rlcik7CiAKLSAgICBtX2ljb252RGVjb2RlciA9IGdf
aWNvbnZfb3BlbihtX2ludGVybmFsRW5jb2RpbmdOYW1lLCBtX2VuY29kaW5nLm5hbWUoKSk7Cisg
ICAgbV9pY29udkRlY29kZXIgPSBhZG9wdFBsYXRmb3JtUmVmKGdfY2hhcnNldF9jb252ZXJ0ZXJf
bmV3KG1faW50ZXJuYWxFbmNvZGluZ05hbWUsIG1fZW5jb2RpbmcubmFtZSgpLCAwKSk7CiB9CiAK
IHZvaWQgVGV4dENvZGVjR3RrOjpjcmVhdGVJQ29udkVuY29kZXIoKSBjb25zdAogewotICAgIEFT
U0VSVChtX2ljb252RGVjb2RlciA9PSByZWludGVycHJldF9jYXN0PEdJQ29udj4oLTEpKTsKKyAg
ICBBU1NFUlQoIW1faWNvbnZEZWNvZGVyKTsKIAotICAgIG1faWNvbnZFbmNvZGVyID0gZ19pY29u
dl9vcGVuKG1fZW5jb2RpbmcubmFtZSgpLCBtX2ludGVybmFsRW5jb2RpbmdOYW1lKTsKKyAgICBt
X2ljb252RW5jb2RlciA9IGFkb3B0UGxhdGZvcm1SZWYoZ19jaGFyc2V0X2NvbnZlcnRlcl9uZXco
bV9lbmNvZGluZy5uYW1lKCksIG1faW50ZXJuYWxFbmNvZGluZ05hbWUsIDApKTsKIH0KIAogU3Ry
aW5nIFRleHRDb2RlY0d0azo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3Ro
LCBib29sIGZsdXNoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikKIHsKICAgICAv
LyBHZXQgYSBjb252ZXJ0ZXIgZm9yIHRoZSBwYXNzZWQtaW4gZW5jb2RpbmcuCi0gICAgaWYgKG1f
aWNvbnZEZWNvZGVyID09IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSkpIHsKKyAgICBpZiAo
IW1faWNvbnZEZWNvZGVyKSB7CiAgICAgICAgIGNyZWF0ZUlDb252RGVjb2RlcigpOwotICAgICAg
ICBBU1NFUlQobV9pY29udkRlY29kZXIgIT0gcmVpbnRlcnByZXRfY2FzdDxHSUNvbnY+KC0xKSk7
Ci0gICAgICAgIGlmIChtX2ljb252RGVjb2RlciA9PSByZWludGVycHJldF9jYXN0PEdJQ29udj4o
LTEpKSB7CisgICAgICAgIEFTU0VSVChtX2ljb252RGVjb2Rlcik7CisgICAgICAgIGlmICghbV9p
Y29udkRlY29kZXIpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiRXJyb3IgY3JlYXRpbmcgSUNv
bnYgZW5jb2RlciBldmVuIHRob3VnaCBlbmNvZGluZyB3YXMgaW4gdGFibGUuIik7CiAgICAgICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzaXplX3QgY291
bnRXcml0dGVuLCBjb3VudFJlYWQsIGNvbnZlcnNpb25MZW5ndGg7Ci0gICAgY29uc3QgY2hhciog
Y29udmVyc2lvbkJ5dGVzOwotICAgIGNoYXIqIHByZWZpeGVkQnl0ZXMgPSAwOworICAgIFZlY3Rv
cjxVQ2hhcj4gcmVzdWx0OworCisgICAgZ3NpemUgYnl0ZXNSZWFkID0gMDsKKyAgICBnc2l6ZSBi
eXRlc1dyaXR0ZW4gPSAwOworICAgIGNvbnN0IGdjaGFyKiBpbnB1dCA9IGJ5dGVzOworICAgIGdz
aXplIGlucHV0TGVuZ3RoID0gbGVuZ3RoOworICAgIGdjaGFyIGJ1ZmZlcltDb252ZXJzaW9uQnVm
ZmVyU2l6ZV07CisgICAgaW50IGZsYWdzID0gIWxlbmd0aCA/IEdfQ09OVkVSVEVSX0lOUFVUX0FU
X0VORCA6IEdfQ09OVkVSVEVSX05PX0ZMQUdTOworICAgIGlmIChmbHVzaCkKKyAgICAgICAgZmxh
Z3MgfD0gR19DT05WRVJURVJfRkxVU0g7CiAKKyAgICBib29sIGJ1ZmZlcldhc0Z1bGwgPSBmYWxz
ZTsKKyAgICBjaGFyKiBwcmVmaXhlZEJ5dGVzID0gMDsKICAgICBpZiAobV9udW1CdWZmZXJlZEJ5
dGVzKSB7Ci0gICAgICAgIGNvbnZlcnNpb25MZW5ndGggPSBsZW5ndGggKyBtX251bUJ1ZmZlcmVk
Qnl0ZXM7Ci0gICAgICAgIHByZWZpeGVkQnl0ZXMgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZmFzdE1h
bGxvYyhjb252ZXJzaW9uTGVuZ3RoKSk7CisgICAgICAgIGlucHV0TGVuZ3RoID0gbGVuZ3RoICsg
bV9udW1CdWZmZXJlZEJ5dGVzOworICAgICAgICBwcmVmaXhlZEJ5dGVzID0gc3RhdGljX2Nhc3Q8
Y2hhcio+KGZhc3RNYWxsb2MoaW5wdXRMZW5ndGgpKTsKICAgICAgICAgbWVtY3B5KHByZWZpeGVk
Qnl0ZXMsIG1fYnVmZmVyZWRCeXRlcywgbV9udW1CdWZmZXJlZEJ5dGVzKTsKICAgICAgICAgbWVt
Y3B5KHByZWZpeGVkQnl0ZXMgKyBtX251bUJ1ZmZlcmVkQnl0ZXMsIGJ5dGVzLCBsZW5ndGgpOwot
ICAgICAgICAKLSAgICAgICAgY29udmVyc2lvbkJ5dGVzID0gcHJlZml4ZWRCeXRlczsKLSAgICAg
ICAgCisKKyAgICAgICAgaW5wdXQgPSBwcmVmaXhlZEJ5dGVzOworCiAgICAgICAgIC8vIGFsbCBi
dWZmZXJlZCBieXRlcyBhcmUgY29uc3VtZWQgbm93CiAgICAgICAgIG1fbnVtQnVmZmVyZWRCeXRl
cyA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gbm8gcHJldmlvdXNseSBidWZmZXJlZCBw
YXJ0aWFsIGRhdGEsIAotICAgICAgICAvLyBqdXN0IGNvbnZlcnQgdGhlIGRhdGEgdGhhdCB3YXMg
cGFzc2VkIGluCi0gICAgICAgIGNvbnZlcnNpb25CeXRlcyA9IGJ5dGVzOwotICAgICAgICBjb252
ZXJzaW9uTGVuZ3RoID0gbGVuZ3RoOwogICAgIH0KIAotICAgIEdPd25QdHI8R0Vycm9yPiBlcnI7
Ci0gICAgR093blB0cjxVQ2hhcj4gYnVmZmVyOwotCi0gICAgYnVmZmVyLm91dFB0cigpID0gcmVp
bnRlcnByZXRfY2FzdDxVQ2hhcio+KGdfY29udmVydF93aXRoX2ljb252KGNvbnZlcnNpb25CeXRl
cywgY29udmVyc2lvbkxlbmd0aCwgbV9pY29udkRlY29kZXIsICZjb3VudFJlYWQsICZjb3VudFdy
aXR0ZW4sICZlcnIub3V0UHRyKCkpKTsgCisgICAgZG8geworICAgICAgICBHT3duUHRyPEdFcnJv
cj4gZXJyb3I7CisgICAgICAgIEdDb252ZXJ0ZXJSZXN1bHQgcmVzID0gZ19jb252ZXJ0ZXJfY29u
dmVydChHX0NPTlZFUlRFUihtX2ljb252RGVjb2Rlci5nZXQoKSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCwgaW5wdXRMZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIs
IHNpemVvZihidWZmZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0NvbnZlcnRlckZsYWdzPihmbGFncyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZXNSZWFkLCAm
Ynl0ZXNXcml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgaW5wdXQgKz0gYnl0ZXNSZWFkOwor
ICAgICAgICBpbnB1dExlbmd0aCAtPSBieXRlc1JlYWQ7CisKKyAgICAgICAgaWYgKHJlcyA9PSBH
X0NPTlZFUlRFUl9FUlJPUikgeworICAgICAgICAgICAgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnJv
ci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9QQVJUSUFMX0lOUFVUKSkgeworICAgICAg
ICAgICAgICAgIC8vIHRoZXJlIGlzIG5vdCBlbm91Z2ggaW5wdXQgdG8gZnVsbHkgZGV0ZXJtaW5l
IHdoYXQgdGhlIGNvbnZlcnNpb24gc2hvdWxkIHByb2R1Y2UKKyAgICAgICAgICAgICAgICAvLyBz
YXZlIGl0IHRvIGEgYnVmZmVyIHRvIHByZXBlbmQgaXQgdG8gdGhlIG5leHQgaW5wdXQKKyAgICAg
ICAgICAgICAgICBtZW1jcHkobV9idWZmZXJlZEJ5dGVzLCBpbnB1dCwgaW5wdXRMZW5ndGgpOwor
ICAgICAgICAgICAgICAgIG1fbnVtQnVmZmVyZWRCeXRlcyA9IGlucHV0TGVuZ3RoOworICAgICAg
ICAgICAgICAgIGlucHV0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZ19lcnJv
cl9tYXRjaGVzKGVycm9yLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX05PX1NQQUNFKSkg
eworICAgICAgICAgICAgICAgIGJ1ZmZlcldhc0Z1bGwgPSB0cnVlOworICAgICAgICAgICAgfSBl
bHNlIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJS
T1JfSU5WQUxJRF9EQVRBKSkgeworICAgICAgICAgICAgICAgIGlmIChzdG9wT25FcnJvcikKKyAg
ICAgICAgICAgICAgICAgICAgc2F3RXJyb3IgPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChp
bnB1dExlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgaW52YWxpZCBjaGFy
YWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgaW5wdXQgKz0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgaW5wdXRMZW5ndGggLT0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHNhd0Vycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBM
T0dfRVJST1IoIkdJQ29udiBjb252ZXJzaW9uIGVycm9yLCBDb2RlICVkOiBcIiVzXCIiLCBlcnJv
ci0+Y29kZSwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICAgICAgICAgIG1fbnVtQnVmZmVyZWRC
eXRlcyA9IDA7IC8vIHJlc2V0IHN0YXRlIGZvciBzdWJzZXF1ZW50IGNhbGxzIHRvIGRlY29kZQor
ICAgICAgICAgICAgICAgIGZhc3RGcmVlKHByZWZpeGVkQnl0ZXMpOworICAgICAgICAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCisgICAgICAgIHJl
c3VsdC5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGJ1ZmZlciksIGJ5dGVzV3JpdHRl
biAvIHNpemVvZihVQ2hhcikpOwogCi0gICAgaWYgKGVycikgewotICAgICAgICBMT0dfRVJST1Io
IkdJQ29udiBjb252ZXJzaW9uIGVycm9yLCBDb2RlICVkOiBcIiVzXCIiLCBlcnItPmNvZGUsIGVy
ci0+bWVzc2FnZSk7Ci0gICAgICAgIG1fbnVtQnVmZmVyZWRCeXRlcyA9IDA7IC8vIHJlc2V0IHN0
YXRlIGZvciBzdWJzZXF1ZW50IGNhbGxzIHRvIGRlY29kZQotICAgICAgICBmYXN0RnJlZShwcmVm
aXhlZEJ5dGVzKTsKLSAgICAgICAgc2F3RXJyb3IgPSB0cnVlOwotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgfQotICAgIAotICAgIC8vIFBhcnRpYWwgaW5wdXQgYXQgdGhlIGVuZCBvZiB0
aGUgc3RyaW5nIG1heSBub3QgcmVzdWx0IGluIGFuIGVycm9yIGJlaW5nIHJhaXNlZC4gCi0gICAg
Ly8gRnJvbSB0aGUgZ25vbWUgbGlicmFyeSBkb2N1bWVudGF0aW9uIG9uIGdfY29udmVydF93aXRo
X2ljb252OgotICAgIC8vICJFdmVuIGlmIHRoZSBjb252ZXJzaW9uIHdhcyBzdWNjZXNzZnVsLCB0
aGlzIG1heSBiZSBsZXNzIHRoYW4gbGVuIGlmIHRoZXJlIHdlcmUgcGFydGlhbCBjaGFyYWN0ZXJz
IGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0LiIKLSAgICAvLyBUaGF0J3Mgd2h5IHdlIG5lZWQgdG8g
Y29tcGFyZSBjb252ZXJzaW9uTGVuZ3RoIGFnYWluc3QgY291bnRSZWFkIAotCi0gICAgbV9udW1C
dWZmZXJlZEJ5dGVzID0gY29udmVyc2lvbkxlbmd0aCAtIGNvdW50UmVhZDsKLSAgICBpZiAobV9u
dW1CdWZmZXJlZEJ5dGVzID4gMCkgewotICAgICAgICBpZiAoZmx1c2gpIHsKLSAgICAgICAgICAg
IExPR19FUlJPUigiUGFydGlhbCBieXRlcyBhdCBlbmQgb2YgaW5wdXQgd2hpbGUgZmx1c2ggcmVx
dWVzdGVkLiIpOwotICAgICAgICAgICAgbV9udW1CdWZmZXJlZEJ5dGVzID0gMDsgLy8gcmVzZXQg
c3RhdGUgZm9yIHN1YnNlcXVlbnQgY2FsbHMgdG8gZGVjb2RlCi0gICAgICAgICAgICBmYXN0RnJl
ZShwcmVmaXhlZEJ5dGVzKTsKLSAgICAgICAgICAgIHNhd0Vycm9yID0gdHJ1ZTsKLSAgICAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICBtZW1jcHkobV9idWZmZXJl
ZEJ5dGVzLCBjb252ZXJzaW9uQnl0ZXMgKyBjb3VudFJlYWQsIG1fbnVtQnVmZmVyZWRCeXRlcyk7
Ci0gICAgfQorICAgIH0gd2hpbGUgKChpbnB1dExlbmd0aCB8fCBidWZmZXJXYXNGdWxsKSAmJiAh
c2F3RXJyb3IpOwogCiAgICAgZmFzdEZyZWUocHJlZml4ZWRCeXRlcyk7Ci0gICAgCi0gICAgVmVj
dG9yPFVDaGFyPiByZXN1bHQ7Ci0KLSAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlci5nZXQoKSwgY291
bnRXcml0dGVuIC8gc2l6ZW9mKFVDaGFyKSk7CiAKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChy
ZXN1bHQpOwogfQpAQCAtNDI2LDIzICs0MjcsNDAgQEAgQ1N0cmluZyBUZXh0Q29kZWNHdGs6OmVu
Y29kZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCwgVW5lbmNvZGFibGUK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuICIiOwogCi0gICAgaWYgKG1faWNvbnZF
bmNvZGVyID09IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSkpCisgICAgaWYgKCFtX2ljb252
RW5jb2RlcikKICAgICAgICAgY3JlYXRlSUNvbnZFbmNvZGVyKCk7Ci0gICAgaWYgKG1faWNvbnZF
bmNvZGVyID09IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSkpCisgICAgaWYgKCFtX2ljb252
RW5jb2RlcikKICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKIAotICAgIHNpemVfdCBjb3VudDsK
LQotICAgIEdPd25QdHI8R0Vycm9yPiBlcnI7Ci0gICAgR093blB0cjxjaGFyPiBidWZmZXI7Ci0K
LSAgICBidWZmZXIub3V0UHRyKCkgPSBnX2NvbnZlcnRfd2l0aF9pY29udihyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgbV9p
Y29udkVuY29kZXIsIDAsICZjb3VudCwgJmVyci5vdXRQdHIoKSk7Ci0gICAgaWYgKGVycikgewot
ICAgICAgICBMT0dfRVJST1IoIkdJQ29udiBjb252ZXJzaW9uIGVycm9yLCBDb2RlICVkOiBcIiVz
XCIiLCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSk7CisgICAgZ3NpemUgYnl0ZXNSZWFkID0gMDsK
KyAgICBnc2l6ZSBieXRlc1dyaXR0ZW4gPSAwOworICAgIGNvbnN0IGdjaGFyKiBpbnB1dCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNoYXJhY3RlcnMpOworICAgIGdzaXplIGlucHV0
TGVuZ3RoID0gbGVuZ3RoICogc2l6ZW9mKFVDaGFyKTsKKyAgICBnY2hhciBidWZmZXJbQ29udmVy
c2lvbkJ1ZmZlclNpemVdOworICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7CisgICAgR093blB0cjxH
RXJyb3I+IGVycm9yOworCisgICAgc2l6ZV90IHNpemUgPSAwOworICAgIGRvIHsKKyAgICAgICAg
Z19jb252ZXJ0ZXJfY29udmVydChHX0NPTlZFUlRFUihtX2ljb252RW5jb2Rlci5nZXQoKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQsIGlucHV0TGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR19DT05WRVJURVJfSU5QVVRfQVRfRU5ELAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZieXRlc1JlYWQsICZieXRlc1dyaXR0ZW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgaW5wdXQgKz0gYnl0ZXNSZWFk
OworICAgICAgICBpbnB1dExlbmd0aCAtPSBieXRlc1JlYWQ7CisgICAgICAgIHJlc3VsdC5ncm93
KHNpemUgKyBieXRlc1dyaXR0ZW4pOworICAgICAgICBtZW1jcHkocmVzdWx0LmRhdGEoKSArIHNp
emUsIGJ1ZmZlciwgYnl0ZXNXcml0dGVuKTsKKyAgICAgICAgc2l6ZSArPSBieXRlc1dyaXR0ZW47
CisgICAgfSB3aGlsZSAoaW5wdXRMZW5ndGggJiYgIWVycm9yLmdldCgpKTsKKworICAgIGlmIChl
cnJvcikgeworICAgICAgICBMT0dfRVJST1IoIkdJQ29udiBjb252ZXJzaW9uIGVycm9yLCBDb2Rl
ICVkOiBcIiVzXCIiLCBlcnJvci0+Y29kZSwgZXJyb3ItPm1lc3NhZ2UpOwogICAgICAgICByZXR1
cm4gQ1N0cmluZygpOwogICAgIH0KIAotICAgIHJldHVybiBDU3RyaW5nKGJ1ZmZlci5nZXQoKSwg
Y291bnQpOworICAgIHJldHVybiBDU3RyaW5nKHJlc3VsdC5kYXRhKCksIHNpemUpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
Z3RrL1RleHRDb2RlY0d0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0Q29kZWNH
dGsuaAppbmRleCA0NjJiZGNlLi43MDc2MjdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvZ3RrL1RleHRDb2RlY0d0ay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsv
VGV4dENvZGVjR3RrLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZm5kZWYgVGV4dENvZGVjR1RLX2gK
ICNkZWZpbmUgVGV4dENvZGVjR1RLX2gKIAorI2luY2x1ZGUgIkdSZWZQdHIuaCIKICNpbmNsdWRl
IDxnbGliLmg+CiAjaW5jbHVkZSAiVGV4dENvZGVjLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5n
LmgiCkBAIC02MCw4ICs2MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVGV4dEVu
Y29kaW5nIG1fZW5jb2Rpbmc7CiAgICAgICAgIHNpemVfdCBtX251bUJ1ZmZlcmVkQnl0ZXM7CiAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgbV9idWZmZXJlZEJ5dGVzWzE2XTsgLy8gYmlnZ2VyIHRoYW4g
YW55IHNpbmdsZSBtdWx0aS1ieXRlIGNoYXJhY3RlciAgICAgICAgCi0gICAgICAgIG11dGFibGUg
R0lDb252IG1faWNvbnZEZWNvZGVyOwotICAgICAgICBtdXRhYmxlIEdJQ29udiBtX2ljb252RW5j
b2RlcjsKKyAgICAgICAgbXV0YWJsZSBQbGF0Zm9ybVJlZlB0cjxHQ2hhcnNldENvbnZlcnRlcj4g
bV9pY29udkRlY29kZXI7CisgICAgICAgIG11dGFibGUgUGxhdGZvcm1SZWZQdHI8R0NoYXJzZXRD
b252ZXJ0ZXI+IG1faWNvbnZFbmNvZGVyOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBnY2hhciog
bV9pbnRlcm5hbEVuY29kaW5nTmFtZTsKIAo=
</data>
<flag name="review"
          id="61338"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71394</attachid>
            <date>2010-10-20 23:50:39 -0700</date>
            <delta_ts>2010-10-21 10:18:41 -0700</delta_ts>
            <desc>Another update according to review</desc>
            <filename>gconverter.diff</filename>
            <type>text/plain</type>
            <size>12269</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlNTk5MTUxLi5jMWQ2MTczIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTAtMTAtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IFVzZSBHQ2hhcnNldENvbnZlcnRlciBpbnN0ZWFkIG9mIGdfaWNvbnYgaW4gVGV4dENvZGVjR3Rr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Nzg5Ngor
CisgICAgICAgICogd3RmL2dvYmplY3QvR1R5cGVkZWZzLmg6CisKIDIwMTAtMTAtMTUgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
YnVpbGQgZml4IGZvciBEZWJ1ZyBMZW9wYXJkIHdoaWNoIGlzIGZhaWxuZyB0byBjb21waWxlIGFm
dGVyIHI2OTg0Mi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNGZkOTUzMi4uZGJiZWNmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0xMC0yMCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gVXNlIEdDaGFyc2V0Q29u
dmVydGVyIGluc3RlYWQgb2YgZ19pY29udiBpbiBUZXh0Q29kZWNHdGsKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODk2CisKKyAgICAgICAgSXQgbWFr
ZXMgZXJyb3IgaGFuZGxpbmcgZWFzaWVyLiBGaXhlcyB0ZXN0czoKKyAgICAgICAgIGZhc3QvZW5j
b2RpbmcvaW52YWxpZC1tdWx0aS1ieXRlLW92ZXItY29uc3VtcHRpb24uaHRtbAorICAgICAgICAg
ZmFzdC9lbmNvZGluZy9pbnZhbGlkLXhtbC5odG1sCisgICAgICAgICBmYXN0L2VuY29kaW5nL2ph
cGFuZXNlLWVuY29kaW5nLW1peC5odG1sCisgICAgICAgIHdoZW4gYnVpbGRpbmcgd2l0aCBnbGli
IHVuaWNvZGUKKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvZ3RrL1RleHRDb2RlY0d0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNHdGs6OlRleHRDb2RlY0d0ayk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q29kZWNHdGs6On5UZXh0Q29kZWNHdGspOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENvZGVjR3RrOjpjcmVhdGVJQ29udkRlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dENvZGVjR3RrOjpjcmVhdGVJQ29udkVuY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENvZGVjR3RrOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjR3RrOjplbmNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvZ3RrL1RleHRDb2RlY0d0ay5oOgorCiAyMDEw
LTEwLTE1ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0
Zi9nb2JqZWN0L0dUeXBlZGVmcy5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR1R5cGVk
ZWZzLmgKaW5kZXggYjE2MDBjMi4uNzZkMWIxYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
d3RmL2dvYmplY3QvR1R5cGVkZWZzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3Qv
R1R5cGVkZWZzLmgKQEAgLTM4LDYgKzM4LDcgQEAgdHlwZWRlZiB2b2lkKiBncG9pbnRlcjsKIAog
dHlwZWRlZiBzdHJ1Y3QgX0dBc3luY1Jlc3VsdCBHQXN5bmNSZXN1bHQ7CiB0eXBlZGVmIHN0cnVj
dCBfR0NhbmNlbGxhYmxlIEdDYW5jZWxsYWJsZTsKK3R5cGVkZWYgc3RydWN0IF9HQ2hhcnNldENv
bnZlcnRlciBHQ2hhcnNldENvbnZlcnRlcjsKIHR5cGVkZWYgc3RydWN0IF9HQ29uZCBHQ29uZDsK
IHR5cGVkZWYgc3RydWN0IF9HRGlyIEdEaXI7CiB0eXBlZGVmIHN0cnVjdCBfR2RrQXRvbSogR2Rr
QXRvbTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dENvZGVjR3Rr
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dENvZGVjR3RrLmNwcAppbmRleCBh
MTU0MGJlLi43YzMzYmZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1Rl
eHRDb2RlY0d0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0Q29kZWNH
dGsuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
VGV4dENvZGVjR3RrLmgiCiAKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSAiR093blB0
ci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpA
QCAtMzE3LDEwNiArMzE4LDEwNCBAQCB2b2lkIFRleHRDb2RlY0d0azo6cmVnaXN0ZXJFeHRlbmRl
ZENvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogVGV4dENvZGVjR3RrOjpUZXh0
Q29kZWNHdGsoY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykKICAgICA6IG1fZW5jb2Rpbmco
ZW5jb2RpbmcpCiAgICAgLCBtX251bUJ1ZmZlcmVkQnl0ZXMoMCkKLSAgICAsIG1faWNvbnZEZWNv
ZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSkpCi0gICAgLCBtX2ljb252RW5jb2Rlcihy
ZWludGVycHJldF9jYXN0PEdJQ29udj4oLTEpKQogewogfQogCiBUZXh0Q29kZWNHdGs6On5UZXh0
Q29kZWNHdGsoKQogewotICAgIGlmIChtX2ljb252RGVjb2RlciAhPSByZWludGVycHJldF9jYXN0
PEdJQ29udj4oLTEpKSB7Ci0gICAgICAgIGdfaWNvbnZfY2xvc2UobV9pY29udkRlY29kZXIpOwot
ICAgICAgICBtX2ljb252RGVjb2RlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSk7Ci0g
ICAgfQotICAgIGlmIChtX2ljb252RW5jb2RlciAhPSByZWludGVycHJldF9jYXN0PEdJQ29udj4o
LTEpKSB7Ci0gICAgICAgIGdfaWNvbnZfY2xvc2UobV9pY29udkVuY29kZXIpOwotICAgICAgICBt
X2ljb252RW5jb2RlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSk7Ci0gICAgfQogfQog
CiB2b2lkIFRleHRDb2RlY0d0azo6Y3JlYXRlSUNvbnZEZWNvZGVyKCkgY29uc3QKIHsKLSAgICBB
U1NFUlQobV9pY29udkRlY29kZXIgPT0gcmVpbnRlcnByZXRfY2FzdDxHSUNvbnY+KC0xKSk7Cisg
ICAgQVNTRVJUKCFtX2ljb252RGVjb2Rlcik7CiAKLSAgICBtX2ljb252RGVjb2RlciA9IGdfaWNv
bnZfb3BlbihtX2ludGVybmFsRW5jb2RpbmdOYW1lLCBtX2VuY29kaW5nLm5hbWUoKSk7CisgICAg
bV9pY29udkRlY29kZXIgPSBhZG9wdFBsYXRmb3JtUmVmKGdfY2hhcnNldF9jb252ZXJ0ZXJfbmV3
KG1faW50ZXJuYWxFbmNvZGluZ05hbWUsIG1fZW5jb2RpbmcubmFtZSgpLCAwKSk7CiB9CiAKIHZv
aWQgVGV4dENvZGVjR3RrOjpjcmVhdGVJQ29udkVuY29kZXIoKSBjb25zdAogewotICAgIEFTU0VS
VChtX2ljb252RGVjb2RlciA9PSByZWludGVycHJldF9jYXN0PEdJQ29udj4oLTEpKTsKKyAgICBB
U1NFUlQoIW1faWNvbnZEZWNvZGVyKTsKIAotICAgIG1faWNvbnZFbmNvZGVyID0gZ19pY29udl9v
cGVuKG1fZW5jb2RpbmcubmFtZSgpLCBtX2ludGVybmFsRW5jb2RpbmdOYW1lKTsKKyAgICBtX2lj
b252RW5jb2RlciA9IGFkb3B0UGxhdGZvcm1SZWYoZ19jaGFyc2V0X2NvbnZlcnRlcl9uZXcobV9l
bmNvZGluZy5uYW1lKCksIG1faW50ZXJuYWxFbmNvZGluZ05hbWUsIDApKTsKIH0KIAogU3RyaW5n
IFRleHRDb2RlY0d0azo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBi
b29sIGZsdXNoLCBib29sIHN0b3BPbkVycm9yLCBib29sJiBzYXdFcnJvcikKIHsKICAgICAvLyBH
ZXQgYSBjb252ZXJ0ZXIgZm9yIHRoZSBwYXNzZWQtaW4gZW5jb2RpbmcuCi0gICAgaWYgKG1faWNv
bnZEZWNvZGVyID09IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSkpIHsKKyAgICBpZiAoIW1f
aWNvbnZEZWNvZGVyKQogICAgICAgICBjcmVhdGVJQ29udkRlY29kZXIoKTsKLSAgICAgICAgQVNT
RVJUKG1faWNvbnZEZWNvZGVyICE9IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSkpOwotICAg
ICAgICBpZiAobV9pY29udkRlY29kZXIgPT0gcmVpbnRlcnByZXRfY2FzdDxHSUNvbnY+KC0xKSkg
ewotICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciBjcmVhdGluZyBJQ29udiBlbmNvZGVyIGV2
ZW4gdGhvdWdoIGVuY29kaW5nIHdhcyBpbiB0YWJsZS4iKTsKLSAgICAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLSAgICAgICAgfQorICAgIGlmICghbV9pY29udkRlY29kZXIpIHsKKyAgICAgICAg
TE9HX0VSUk9SKCJFcnJvciBjcmVhdGluZyBJQ29udiBkZWNvZGVyIGV2ZW4gdGhvdWdoIGVuY29k
aW5nIHdhcyBpbiB0YWJsZS4iKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAot
ICAgIHNpemVfdCBjb3VudFdyaXR0ZW4sIGNvdW50UmVhZCwgY29udmVyc2lvbkxlbmd0aDsKLSAg
ICBjb25zdCBjaGFyKiBjb252ZXJzaW9uQnl0ZXM7Ci0gICAgY2hhciogcHJlZml4ZWRCeXRlcyA9
IDA7CisgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7CisKKyAgICBnc2l6ZSBieXRlc1JlYWQgPSAw
OworICAgIGdzaXplIGJ5dGVzV3JpdHRlbiA9IDA7CisgICAgY29uc3QgZ2NoYXIqIGlucHV0ID0g
Ynl0ZXM7CisgICAgZ3NpemUgaW5wdXRMZW5ndGggPSBsZW5ndGg7CisgICAgZ2NoYXIgYnVmZmVy
W0NvbnZlcnNpb25CdWZmZXJTaXplXTsKKyAgICBpbnQgZmxhZ3MgPSAhbGVuZ3RoID8gR19DT05W
RVJURVJfSU5QVVRfQVRfRU5EIDogR19DT05WRVJURVJfTk9fRkxBR1M7CisgICAgaWYgKGZsdXNo
KQorICAgICAgICBmbGFncyB8PSBHX0NPTlZFUlRFUl9GTFVTSDsKIAorICAgIGJvb2wgYnVmZmVy
V2FzRnVsbCA9IGZhbHNlOworICAgIGNoYXIqIHByZWZpeGVkQnl0ZXMgPSAwOwogICAgIGlmICht
X251bUJ1ZmZlcmVkQnl0ZXMpIHsKLSAgICAgICAgY29udmVyc2lvbkxlbmd0aCA9IGxlbmd0aCAr
IG1fbnVtQnVmZmVyZWRCeXRlczsKLSAgICAgICAgcHJlZml4ZWRCeXRlcyA9IHN0YXRpY19jYXN0
PGNoYXIqPihmYXN0TWFsbG9jKGNvbnZlcnNpb25MZW5ndGgpKTsKKyAgICAgICAgaW5wdXRMZW5n
dGggPSBsZW5ndGggKyBtX251bUJ1ZmZlcmVkQnl0ZXM7CisgICAgICAgIHByZWZpeGVkQnl0ZXMg
PSBzdGF0aWNfY2FzdDxjaGFyKj4oZmFzdE1hbGxvYyhpbnB1dExlbmd0aCkpOwogICAgICAgICBt
ZW1jcHkocHJlZml4ZWRCeXRlcywgbV9idWZmZXJlZEJ5dGVzLCBtX251bUJ1ZmZlcmVkQnl0ZXMp
OwogICAgICAgICBtZW1jcHkocHJlZml4ZWRCeXRlcyArIG1fbnVtQnVmZmVyZWRCeXRlcywgYnl0
ZXMsIGxlbmd0aCk7Ci0gICAgICAgIAotICAgICAgICBjb252ZXJzaW9uQnl0ZXMgPSBwcmVmaXhl
ZEJ5dGVzOwotICAgICAgICAKLSAgICAgICAgLy8gYWxsIGJ1ZmZlcmVkIGJ5dGVzIGFyZSBjb25z
dW1lZCBub3cKKworICAgICAgICBpbnB1dCA9IHByZWZpeGVkQnl0ZXM7CisKKyAgICAgICAgLy8g
QWxsIGJ1ZmZlcmVkIGJ5dGVzIGFyZSBjb25zdW1lZCBub3cuCiAgICAgICAgIG1fbnVtQnVmZmVy
ZWRCeXRlcyA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gbm8gcHJldmlvdXNseSBidWZm
ZXJlZCBwYXJ0aWFsIGRhdGEsIAotICAgICAgICAvLyBqdXN0IGNvbnZlcnQgdGhlIGRhdGEgdGhh
dCB3YXMgcGFzc2VkIGluCi0gICAgICAgIGNvbnZlcnNpb25CeXRlcyA9IGJ5dGVzOwotICAgICAg
ICBjb252ZXJzaW9uTGVuZ3RoID0gbGVuZ3RoOwogICAgIH0KIAotICAgIEdPd25QdHI8R0Vycm9y
PiBlcnI7Ci0gICAgR093blB0cjxVQ2hhcj4gYnVmZmVyOwotCi0gICAgYnVmZmVyLm91dFB0cigp
ID0gcmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGdfY29udmVydF93aXRoX2ljb252KGNvbnZlcnNp
b25CeXRlcywgY29udmVyc2lvbkxlbmd0aCwgbV9pY29udkRlY29kZXIsICZjb3VudFJlYWQsICZj
b3VudFdyaXR0ZW4sICZlcnIub3V0UHRyKCkpKTsgCisgICAgZG8geworICAgICAgICBHT3duUHRy
PEdFcnJvcj4gZXJyb3I7CisgICAgICAgIEdDb252ZXJ0ZXJSZXN1bHQgcmVzID0gZ19jb252ZXJ0
ZXJfY29udmVydChHX0NPTlZFUlRFUihtX2ljb252RGVjb2Rlci5nZXQoKSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCwgaW5wdXRMZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
dWZmZXIsIHNpemVvZihidWZmZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0NvbnZlcnRlckZsYWdzPihmbGFncyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZXNS
ZWFkLCAmYnl0ZXNXcml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgaW5wdXQgKz0gYnl0ZXNS
ZWFkOworICAgICAgICBpbnB1dExlbmd0aCAtPSBieXRlc1JlYWQ7CisKKyAgICAgICAgaWYgKHJl
cyA9PSBHX0NPTlZFUlRFUl9FUlJPUikgeworICAgICAgICAgICAgaWYgKGdfZXJyb3JfbWF0Y2hl
cyhlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9QQVJUSUFMX0lOUFVUKSkgewor
ICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vdCBlbm91Z2ggaW5wdXQgdG8gZnVsbHkgZGV0
ZXJtaW5lIHdoYXQgdGhlIGNvbnZlcnNpb24gc2hvdWxkIHByb2R1Y2UsCisgICAgICAgICAgICAg
ICAgLy8gc2F2ZSBpdCB0byBhIGJ1ZmZlciB0byBwcmVwZW5kIGl0IHRvIHRoZSBuZXh0IGlucHV0
LgorICAgICAgICAgICAgICAgIG1lbWNweShtX2J1ZmZlcmVkQnl0ZXMsIGlucHV0LCBpbnB1dExl
bmd0aCk7CisgICAgICAgICAgICAgICAgbV9udW1CdWZmZXJlZEJ5dGVzID0gaW5wdXRMZW5ndGg7
CisgICAgICAgICAgICAgICAgaW5wdXRMZW5ndGggPSAwOworICAgICAgICAgICAgfSBlbHNlIGlm
IChnX2Vycm9yX21hdGNoZXMoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfTk9f
U1BBQ0UpKQorICAgICAgICAgICAgICAgIGJ1ZmZlcldhc0Z1bGwgPSB0cnVlOworICAgICAgICAg
ICAgZWxzZSBpZiAoZ19lcnJvcl9tYXRjaGVzKGVycm9yLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lP
X0VSUk9SX0lOVkFMSURfREFUQSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RvcE9uRXJyb3Ip
CisgICAgICAgICAgICAgICAgICAgIHNhd0Vycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBp
ZiAoaW5wdXRMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIGludmFsaWQg
Y2hhcmFjdGVyLgorICAgICAgICAgICAgICAgICAgICBpbnB1dCArPSAxOworICAgICAgICAgICAg
ICAgICAgICBpbnB1dExlbmd0aCAtPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2F3RXJyb3IgPSB0cnVlOworICAgICAgICAgICAg
ICAgIExPR19FUlJPUigiR0lDb252IGNvbnZlcnNpb24gZXJyb3IsIENvZGUgJWQ6IFwiJXNcIiIs
IGVycm9yLT5jb2RlLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgICAgICAgICAgbV9udW1CdWZm
ZXJlZEJ5dGVzID0gMDsgLy8gUmVzZXQgc3RhdGUgZm9yIHN1YnNlcXVlbnQgY2FsbHMgdG8gZGVj
b2RlLgorICAgICAgICAgICAgICAgIGZhc3RGcmVlKHByZWZpeGVkQnl0ZXMpOworICAgICAgICAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCisgICAg
ICAgIHJlc3VsdC5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGJ1ZmZlciksIGJ5dGVz
V3JpdHRlbiAvIHNpemVvZihVQ2hhcikpOwogCi0gICAgaWYgKGVycikgewotICAgICAgICBMT0df
RVJST1IoIkdJQ29udiBjb252ZXJzaW9uIGVycm9yLCBDb2RlICVkOiBcIiVzXCIiLCBlcnItPmNv
ZGUsIGVyci0+bWVzc2FnZSk7Ci0gICAgICAgIG1fbnVtQnVmZmVyZWRCeXRlcyA9IDA7IC8vIHJl
c2V0IHN0YXRlIGZvciBzdWJzZXF1ZW50IGNhbGxzIHRvIGRlY29kZQotICAgICAgICBmYXN0RnJl
ZShwcmVmaXhlZEJ5dGVzKTsKLSAgICAgICAgc2F3RXJyb3IgPSB0cnVlOwotICAgICAgICByZXR1
cm4gU3RyaW5nKCk7Ci0gICAgfQotICAgIAotICAgIC8vIFBhcnRpYWwgaW5wdXQgYXQgdGhlIGVu
ZCBvZiB0aGUgc3RyaW5nIG1heSBub3QgcmVzdWx0IGluIGFuIGVycm9yIGJlaW5nIHJhaXNlZC4g
Ci0gICAgLy8gRnJvbSB0aGUgZ25vbWUgbGlicmFyeSBkb2N1bWVudGF0aW9uIG9uIGdfY29udmVy
dF93aXRoX2ljb252OgotICAgIC8vICJFdmVuIGlmIHRoZSBjb252ZXJzaW9uIHdhcyBzdWNjZXNz
ZnVsLCB0aGlzIG1heSBiZSBsZXNzIHRoYW4gbGVuIGlmIHRoZXJlIHdlcmUgcGFydGlhbCBjaGFy
YWN0ZXJzIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0LiIKLSAgICAvLyBUaGF0J3Mgd2h5IHdlIG5l
ZWQgdG8gY29tcGFyZSBjb252ZXJzaW9uTGVuZ3RoIGFnYWluc3QgY291bnRSZWFkIAotCi0gICAg
bV9udW1CdWZmZXJlZEJ5dGVzID0gY29udmVyc2lvbkxlbmd0aCAtIGNvdW50UmVhZDsKLSAgICBp
ZiAobV9udW1CdWZmZXJlZEJ5dGVzID4gMCkgewotICAgICAgICBpZiAoZmx1c2gpIHsKLSAgICAg
ICAgICAgIExPR19FUlJPUigiUGFydGlhbCBieXRlcyBhdCBlbmQgb2YgaW5wdXQgd2hpbGUgZmx1
c2ggcmVxdWVzdGVkLiIpOwotICAgICAgICAgICAgbV9udW1CdWZmZXJlZEJ5dGVzID0gMDsgLy8g
cmVzZXQgc3RhdGUgZm9yIHN1YnNlcXVlbnQgY2FsbHMgdG8gZGVjb2RlCi0gICAgICAgICAgICBm
YXN0RnJlZShwcmVmaXhlZEJ5dGVzKTsKLSAgICAgICAgICAgIHNhd0Vycm9yID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICBtZW1jcHkobV9i
dWZmZXJlZEJ5dGVzLCBjb252ZXJzaW9uQnl0ZXMgKyBjb3VudFJlYWQsIG1fbnVtQnVmZmVyZWRC
eXRlcyk7Ci0gICAgfQorICAgIH0gd2hpbGUgKChpbnB1dExlbmd0aCB8fCBidWZmZXJXYXNGdWxs
KSAmJiAhc2F3RXJyb3IpOwogCiAgICAgZmFzdEZyZWUocHJlZml4ZWRCeXRlcyk7Ci0gICAgCi0g
ICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0KLSAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlci5nZXQo
KSwgY291bnRXcml0dGVuIC8gc2l6ZW9mKFVDaGFyKSk7CiAKICAgICByZXR1cm4gU3RyaW5nOjph
ZG9wdChyZXN1bHQpOwogfQpAQCAtNDI2LDIzICs0MjUsNDIgQEAgQ1N0cmluZyBUZXh0Q29kZWNH
dGs6OmVuY29kZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCwgVW5lbmNv
ZGFibGUKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuICIiOwogCi0gICAgaWYgKG1f
aWNvbnZFbmNvZGVyID09IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSkpCisgICAgaWYgKCFt
X2ljb252RW5jb2RlcikKICAgICAgICAgY3JlYXRlSUNvbnZFbmNvZGVyKCk7Ci0gICAgaWYgKG1f
aWNvbnZFbmNvZGVyID09IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSkpCisgICAgaWYgKCFt
X2ljb252RW5jb2RlcikgeworICAgICAgICBMT0dfRVJST1IoIkVycm9yIGNyZWF0aW5nIElDb252
IGVuY29kZXIgZXZlbiB0aG91Z2ggZW5jb2Rpbmcgd2FzIGluIHRhYmxlLiIpOwogICAgICAgICBy
ZXR1cm4gQ1N0cmluZygpOworICAgIH0KIAotICAgIHNpemVfdCBjb3VudDsKLQotICAgIEdPd25Q
dHI8R0Vycm9yPiBlcnI7Ci0gICAgR093blB0cjxjaGFyPiBidWZmZXI7Ci0KLSAgICBidWZmZXIu
b3V0UHRyKCkgPSBnX2NvbnZlcnRfd2l0aF9pY29udihyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgbV9pY29udkVuY29kZXIs
IDAsICZjb3VudCwgJmVyci5vdXRQdHIoKSk7Ci0gICAgaWYgKGVycikgewotICAgICAgICBMT0df
RVJST1IoIkdJQ29udiBjb252ZXJzaW9uIGVycm9yLCBDb2RlICVkOiBcIiVzXCIiLCBlcnItPmNv
ZGUsIGVyci0+bWVzc2FnZSk7CisgICAgZ3NpemUgYnl0ZXNSZWFkID0gMDsKKyAgICBnc2l6ZSBi
eXRlc1dyaXR0ZW4gPSAwOworICAgIGNvbnN0IGdjaGFyKiBpbnB1dCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGNoYXJhY3RlcnMpOworICAgIGdzaXplIGlucHV0TGVuZ3RoID0gbGVu
Z3RoICogc2l6ZW9mKFVDaGFyKTsKKyAgICBnY2hhciBidWZmZXJbQ29udmVyc2lvbkJ1ZmZlclNp
emVdOworICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7CisgICAgR093blB0cjxHRXJyb3I+IGVycm9y
OworCisgICAgc2l6ZV90IHNpemUgPSAwOworICAgIGRvIHsKKyAgICAgICAgZ19jb252ZXJ0ZXJf
Y29udmVydChHX0NPTlZFUlRFUihtX2ljb252RW5jb2Rlci5nZXQoKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5wdXQsIGlucHV0TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR19DT05WRVJURVJfSU5QVVRfQVRfRU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZieXRlc1JlYWQsICZieXRlc1dyaXR0ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgaW5wdXQgKz0gYnl0ZXNSZWFkOworICAgICAgICBp
bnB1dExlbmd0aCAtPSBieXRlc1JlYWQ7CisgICAgICAgIHJlc3VsdC5ncm93KHNpemUgKyBieXRl
c1dyaXR0ZW4pOworICAgICAgICBtZW1jcHkocmVzdWx0LmRhdGEoKSArIHNpemUsIGJ1ZmZlciwg
Ynl0ZXNXcml0dGVuKTsKKyAgICAgICAgc2l6ZSArPSBieXRlc1dyaXR0ZW47CisgICAgfSB3aGls
ZSAoaW5wdXRMZW5ndGggJiYgIWVycm9yLmdldCgpKTsKKworICAgIGlmIChlcnJvcikgeworICAg
ICAgICBMT0dfRVJST1IoIkdJQ29udiBjb252ZXJzaW9uIGVycm9yLCBDb2RlICVkOiBcIiVzXCIi
LCBlcnJvci0+Y29kZSwgZXJyb3ItPm1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gQ1N0cmluZygp
OwogICAgIH0KIAotICAgIHJldHVybiBDU3RyaW5nKGJ1ZmZlci5nZXQoKSwgY291bnQpOworICAg
IHJldHVybiBDU3RyaW5nKHJlc3VsdC5kYXRhKCksIHNpemUpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRDb2Rl
Y0d0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0Q29kZWNHdGsuaAppbmRleCA0
NjJiZGNlLi43MDc2MjdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1Rl
eHRDb2RlY0d0ay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dENvZGVjR3Rr
LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZm5kZWYgVGV4dENvZGVjR1RLX2gKICNkZWZpbmUgVGV4
dENvZGVjR1RLX2gKIAorI2luY2x1ZGUgIkdSZWZQdHIuaCIKICNpbmNsdWRlIDxnbGliLmg+CiAj
aW5jbHVkZSAiVGV4dENvZGVjLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCkBAIC02MCw4
ICs2MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVGV4dEVuY29kaW5nIG1fZW5j
b2Rpbmc7CiAgICAgICAgIHNpemVfdCBtX251bUJ1ZmZlcmVkQnl0ZXM7CiAgICAgICAgIHVuc2ln
bmVkIGNoYXIgbV9idWZmZXJlZEJ5dGVzWzE2XTsgLy8gYmlnZ2VyIHRoYW4gYW55IHNpbmdsZSBt
dWx0aS1ieXRlIGNoYXJhY3RlciAgICAgICAgCi0gICAgICAgIG11dGFibGUgR0lDb252IG1faWNv
bnZEZWNvZGVyOwotICAgICAgICBtdXRhYmxlIEdJQ29udiBtX2ljb252RW5jb2RlcjsKKyAgICAg
ICAgbXV0YWJsZSBQbGF0Zm9ybVJlZlB0cjxHQ2hhcnNldENvbnZlcnRlcj4gbV9pY29udkRlY29k
ZXI7CisgICAgICAgIG11dGFibGUgUGxhdGZvcm1SZWZQdHI8R0NoYXJzZXRDb252ZXJ0ZXI+IG1f
aWNvbnZFbmNvZGVyOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBnY2hhciogbV9pbnRlcm5hbEVu
Y29kaW5nTmFtZTsKIAo=
</data>
<flag name="review"
          id="61433"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
    <flag name="commit-queue"
          id="61437"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71454</attachid>
            <date>2010-10-21 10:18:41 -0700</date>
            <delta_ts>2010-10-21 12:33:21 -0700</delta_ts>
            <desc>Update patch for current git master</desc>
            <filename>gconverter.diff</filename>
            <type>text/plain</type>
            <size>12155</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAzMzI3NjFkLi5mZDBhZmRmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTAtMTAtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IFVzZSBHQ2hhcnNldENvbnZlcnRlciBpbnN0ZWFkIG9mIGdfaWNvbnYgaW4gVGV4dENvZGVjR3Rr
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Nzg5Ngor
CisgICAgICAgICogd3RmL2dvYmplY3QvR1R5cGVkZWZzLmg6CisKIDIwMTAtMTAtMjEgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByNzAxNzQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDZjZjgyMTAuLjYyNjA2NmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMTAtMjEg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFVzZSBHQ2hhcnNldENv
bnZlcnRlciBpbnN0ZWFkIG9mIGdfaWNvbnYgaW4gVGV4dENvZGVjR3RrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Nzg5NgorCisgICAgICAgIEl0IG1h
a2VzIGVycm9yIGhhbmRsaW5nIGVhc2llci4gRml4ZXMgdGVzdHM6CisgICAgICAgICBmYXN0L2Vu
Y29kaW5nL2ludmFsaWQtbXVsdGktYnl0ZS1vdmVyLWNvbnN1bXB0aW9uLmh0bWwKKyAgICAgICAg
IGZhc3QvZW5jb2RpbmcvaW52YWxpZC14bWwuaHRtbAorICAgICAgICAgZmFzdC9lbmNvZGluZy9q
YXBhbmVzZS1lbmNvZGluZy1taXguaHRtbAorICAgICAgICB3aGVuIGJ1aWxkaW5nIHdpdGggZ2xp
YiB1bmljb2RlCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2d0ay9UZXh0Q29kZWNHdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjR3RrOjpUZXh0Q29kZWNHdGspOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENvZGVjR3RrOjp+VGV4dENvZGVjR3RrKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDb2RlY0d0azo6Y3JlYXRlSUNvbnZEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDb2RlY0d0azo6Y3JlYXRlSUNvbnZFbmNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRDb2RlY0d0azo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0d0azo6ZW5j
b2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2d0ay9UZXh0Q29kZWNHdGsuaDoKKwogMjAx
MC0xMC0yMSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLiBSZXZlcnQgcjcwMjMyLiBDaHJvbWl1bSBjb21waWxhdGlvbiBmYWlsdXJl
LgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmggYi9K
YXZhU2NyaXB0Q29yZS93dGYvZ29iamVjdC9HVHlwZWRlZnMuaAppbmRleCBiMTYwMGMyLi43NmQx
YjFhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvZ29iamVjdC9HVHlwZWRlZnMuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS93dGYvZ29iamVjdC9HVHlwZWRlZnMuaApAQCAtMzgsNiArMzgs
NyBAQCB0eXBlZGVmIHZvaWQqIGdwb2ludGVyOwogCiB0eXBlZGVmIHN0cnVjdCBfR0FzeW5jUmVz
dWx0IEdBc3luY1Jlc3VsdDsKIHR5cGVkZWYgc3RydWN0IF9HQ2FuY2VsbGFibGUgR0NhbmNlbGxh
YmxlOwordHlwZWRlZiBzdHJ1Y3QgX0dDaGFyc2V0Q29udmVydGVyIEdDaGFyc2V0Q29udmVydGVy
OwogdHlwZWRlZiBzdHJ1Y3QgX0dDb25kIEdDb25kOwogdHlwZWRlZiBzdHJ1Y3QgX0dEaXIgR0Rp
cjsKIHR5cGVkZWYgc3RydWN0IF9HZGtBdG9tKiBHZGtBdG9tOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0Q29kZWNHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2d0ay9UZXh0Q29kZWNHdGsuY3BwCmluZGV4IDVmYTM4ZTIuLmJmNmFmY2QgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dENvZGVjR3RrLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRDb2RlY0d0ay5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0Q29kZWNHdGsuaCIKIAorI2luY2x1
ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlICJHT3duUHRyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBAIC00MTAsMTA2ICs0MTEsMTA0IEBAIHZv
aWQgVGV4dENvZGVjR3RrOjpyZWdpc3RlckV4dGVuZGVkQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJh
ciByZWdpc3RyYXIpCiBUZXh0Q29kZWNHdGs6OlRleHRDb2RlY0d0ayhjb25zdCBUZXh0RW5jb2Rp
bmcmIGVuY29kaW5nKQogICAgIDogbV9lbmNvZGluZyhlbmNvZGluZykKICAgICAsIG1fbnVtQnVm
ZmVyZWRCeXRlcygwKQotICAgICwgbV9pY29udkRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxHSUNv
bnY+KC0xKSkKLSAgICAsIG1faWNvbnZFbmNvZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252Pigt
MSkpCiB7CiB9CiAKIFRleHRDb2RlY0d0azo6flRleHRDb2RlY0d0aygpCiB7Ci0gICAgaWYgKG1f
aWNvbnZEZWNvZGVyICE9IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSkpIHsKLSAgICAgICAg
Z19pY29udl9jbG9zZShtX2ljb252RGVjb2Rlcik7Ci0gICAgICAgIG1faWNvbnZEZWNvZGVyID0g
cmVpbnRlcnByZXRfY2FzdDxHSUNvbnY+KC0xKTsKLSAgICB9Ci0gICAgaWYgKG1faWNvbnZFbmNv
ZGVyICE9IHJlaW50ZXJwcmV0X2Nhc3Q8R0lDb252PigtMSkpIHsKLSAgICAgICAgZ19pY29udl9j
bG9zZShtX2ljb252RW5jb2Rlcik7Ci0gICAgICAgIG1faWNvbnZFbmNvZGVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxHSUNvbnY+KC0xKTsKLSAgICB9CiB9CiAKIHZvaWQgVGV4dENvZGVjR3RrOjpjcmVh
dGVJQ29udkRlY29kZXIoKSBjb25zdAogewotICAgIEFTU0VSVChtX2ljb252RGVjb2RlciA9PSBy
ZWludGVycHJldF9jYXN0PEdJQ29udj4oLTEpKTsKKyAgICBBU1NFUlQoIW1faWNvbnZEZWNvZGVy
KTsKIAotICAgIG1faWNvbnZEZWNvZGVyID0gZ19pY29udl9vcGVuKGludGVybmFsRW5jb2RpbmdO
YW1lLCBtX2VuY29kaW5nLm5hbWUoKSk7CisgICAgbV9pY29udkRlY29kZXIgPSBhZG9wdFBsYXRm
b3JtUmVmKGdfY2hhcnNldF9jb252ZXJ0ZXJfbmV3KGludGVybmFsRW5jb2RpbmdOYW1lLCBtX2Vu
Y29kaW5nLm5hbWUoKSwgMCkpOwogfQogCiB2b2lkIFRleHRDb2RlY0d0azo6Y3JlYXRlSUNvbnZF
bmNvZGVyKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9pY29udkRlY29kZXIgPT0gcmVpbnRlcnBy
ZXRfY2FzdDxHSUNvbnY+KC0xKSk7CisgICAgQVNTRVJUKCFtX2ljb252RW5jb2Rlcik7CiAKLSAg
ICBtX2ljb252RW5jb2RlciA9IGdfaWNvbnZfb3BlbihtX2VuY29kaW5nLm5hbWUoKSwgaW50ZXJu
YWxFbmNvZGluZ05hbWUpOworICAgIG1faWNvbnZFbmNvZGVyID0gYWRvcHRQbGF0Zm9ybVJlZihn
X2NoYXJzZXRfY29udmVydGVyX25ldyhtX2VuY29kaW5nLm5hbWUoKSwgaW50ZXJuYWxFbmNvZGlu
Z05hbWUsIDApKTsKIH0KIAogU3RyaW5nIFRleHRDb2RlY0d0azo6ZGVjb2RlKGNvbnN0IGNoYXIq
IGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoLCBib29sIHN0b3BPbkVycm9yLCBib29s
JiBzYXdFcnJvcikKIHsKICAgICAvLyBHZXQgYSBjb252ZXJ0ZXIgZm9yIHRoZSBwYXNzZWQtaW4g
ZW5jb2RpbmcuCi0gICAgaWYgKG1faWNvbnZEZWNvZGVyID09IHJlaW50ZXJwcmV0X2Nhc3Q8R0lD
b252PigtMSkpIHsKKyAgICBpZiAoIW1faWNvbnZEZWNvZGVyKQogICAgICAgICBjcmVhdGVJQ29u
dkRlY29kZXIoKTsKLSAgICAgICAgQVNTRVJUKG1faWNvbnZEZWNvZGVyICE9IHJlaW50ZXJwcmV0
X2Nhc3Q8R0lDb252PigtMSkpOwotICAgICAgICBpZiAobV9pY29udkRlY29kZXIgPT0gcmVpbnRl
cnByZXRfY2FzdDxHSUNvbnY+KC0xKSkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciBj
cmVhdGluZyBJQ29udiBlbmNvZGVyIGV2ZW4gdGhvdWdoIGVuY29kaW5nIHdhcyBpbiB0YWJsZS4i
KTsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgfQorICAgIGlmICghbV9p
Y29udkRlY29kZXIpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJFcnJvciBjcmVhdGluZyBJQ29udiBl
bmNvZGVyIGV2ZW4gdGhvdWdoIGVuY29kaW5nIHdhcyBpbiB0YWJsZS4iKTsKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIHNpemVfdCBjb3VudFdyaXR0ZW4sIGNvdW50UmVh
ZCwgY29udmVyc2lvbkxlbmd0aDsKLSAgICBjb25zdCBjaGFyKiBjb252ZXJzaW9uQnl0ZXM7Cisg
ICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7CisKKyAgICBnc2l6ZSBieXRlc1JlYWQgPSAwOworICAg
IGdzaXplIGJ5dGVzV3JpdHRlbiA9IDA7CisgICAgY29uc3QgZ2NoYXIqIGlucHV0ID0gYnl0ZXM7
CisgICAgZ3NpemUgaW5wdXRMZW5ndGggPSBsZW5ndGg7CisgICAgZ2NoYXIgYnVmZmVyW0NvbnZl
cnNpb25CdWZmZXJTaXplXTsKKyAgICBpbnQgZmxhZ3MgPSAhbGVuZ3RoID8gR19DT05WRVJURVJf
SU5QVVRfQVRfRU5EIDogR19DT05WRVJURVJfTk9fRkxBR1M7CisgICAgaWYgKGZsdXNoKQorICAg
ICAgICBmbGFncyB8PSBHX0NPTlZFUlRFUl9GTFVTSDsKKworICAgIGJvb2wgYnVmZmVyV2FzRnVs
bCA9IGZhbHNlOwogICAgIGNoYXIqIHByZWZpeGVkQnl0ZXMgPSAwOwogCiAgICAgaWYgKG1fbnVt
QnVmZmVyZWRCeXRlcykgewotICAgICAgICBjb252ZXJzaW9uTGVuZ3RoID0gbGVuZ3RoICsgbV9u
dW1CdWZmZXJlZEJ5dGVzOwotICAgICAgICBwcmVmaXhlZEJ5dGVzID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KGZhc3RNYWxsb2MoY29udmVyc2lvbkxlbmd0aCkpOworICAgICAgICBpbnB1dExlbmd0aCA9
IGxlbmd0aCArIG1fbnVtQnVmZmVyZWRCeXRlczsKKyAgICAgICAgcHJlZml4ZWRCeXRlcyA9IHN0
YXRpY19jYXN0PGNoYXIqPihmYXN0TWFsbG9jKGlucHV0TGVuZ3RoKSk7CiAgICAgICAgIG1lbWNw
eShwcmVmaXhlZEJ5dGVzLCBtX2J1ZmZlcmVkQnl0ZXMsIG1fbnVtQnVmZmVyZWRCeXRlcyk7CiAg
ICAgICAgIG1lbWNweShwcmVmaXhlZEJ5dGVzICsgbV9udW1CdWZmZXJlZEJ5dGVzLCBieXRlcywg
bGVuZ3RoKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnZlcnNpb25CeXRlcyA9IHByZWZpeGVkQnl0
ZXM7Ci0gICAgICAgIAorCisgICAgICAgIGlucHV0ID0gcHJlZml4ZWRCeXRlczsKKwogICAgICAg
ICAvLyBhbGwgYnVmZmVyZWQgYnl0ZXMgYXJlIGNvbnN1bWVkIG5vdwogICAgICAgICBtX251bUJ1
ZmZlcmVkQnl0ZXMgPSAwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIG5vIHByZXZpb3VzbHkg
YnVmZmVyZWQgcGFydGlhbCBkYXRhLCAKLSAgICAgICAgLy8ganVzdCBjb252ZXJ0IHRoZSBkYXRh
IHRoYXQgd2FzIHBhc3NlZCBpbgotICAgICAgICBjb252ZXJzaW9uQnl0ZXMgPSBieXRlczsKLSAg
ICAgICAgY29udmVyc2lvbkxlbmd0aCA9IGxlbmd0aDsKICAgICB9CiAKLSAgICBHT3duUHRyPEdF
cnJvcj4gZXJyOwotICAgIEdPd25QdHI8VUNoYXI+IGJ1ZmZlcjsKLQotICAgIGJ1ZmZlci5vdXRQ
dHIoKSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihnX2NvbnZlcnRfd2l0aF9pY29udihjb252
ZXJzaW9uQnl0ZXMsIGNvbnZlcnNpb25MZW5ndGgsIG1faWNvbnZEZWNvZGVyLCAmY291bnRSZWFk
LCAmY291bnRXcml0dGVuLCAmZXJyLm91dFB0cigpKSk7IAotCi0KLSAgICBpZiAoZXJyKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiR0lDb252IGNvbnZlcnNpb24gZXJyb3IsIENvZGUgJWQ6IFwiJXNc
IiIsIGVyci0+Y29kZSwgZXJyLT5tZXNzYWdlKTsKLSAgICAgICAgbV9udW1CdWZmZXJlZEJ5dGVz
ID0gMDsgLy8gcmVzZXQgc3RhdGUgZm9yIHN1YnNlcXVlbnQgY2FsbHMgdG8gZGVjb2RlCi0gICAg
ICAgIGZhc3RGcmVlKHByZWZpeGVkQnl0ZXMpOwotICAgICAgICBzYXdFcnJvciA9IHRydWU7Ci0g
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gUGFydGlhbCBpbnB1
dCBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgbWF5IG5vdCByZXN1bHQgaW4gYW4gZXJyb3IgYmVp
bmcgcmFpc2VkLiAKLSAgICAvLyBGcm9tIHRoZSBnbm9tZSBsaWJyYXJ5IGRvY3VtZW50YXRpb24g
b24gZ19jb252ZXJ0X3dpdGhfaWNvbnY6Ci0gICAgLy8gIkV2ZW4gaWYgdGhlIGNvbnZlcnNpb24g
d2FzIHN1Y2Nlc3NmdWwsIHRoaXMgbWF5IGJlIGxlc3MgdGhhbiBsZW4gaWYgdGhlcmUgd2VyZSBw
YXJ0aWFsIGNoYXJhY3RlcnMgYXQgdGhlIGVuZCBvZiB0aGUgaW5wdXQuIgotICAgIC8vIFRoYXQn
cyB3aHkgd2UgbmVlZCB0byBjb21wYXJlIGNvbnZlcnNpb25MZW5ndGggYWdhaW5zdCBjb3VudFJl
YWQgCi0KLSAgICBtX251bUJ1ZmZlcmVkQnl0ZXMgPSBjb252ZXJzaW9uTGVuZ3RoIC0gY291bnRS
ZWFkOwotICAgIGlmIChtX251bUJ1ZmZlcmVkQnl0ZXMgPiAwKSB7Ci0gICAgICAgIGlmIChmbHVz
aCkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJQYXJ0aWFsIGJ5dGVzIGF0IGVuZCBvZiBpbnB1
dCB3aGlsZSBmbHVzaCByZXF1ZXN0ZWQuIik7Ci0gICAgICAgICAgICBtX251bUJ1ZmZlcmVkQnl0
ZXMgPSAwOyAvLyByZXNldCBzdGF0ZSBmb3Igc3Vic2VxdWVudCBjYWxscyB0byBkZWNvZGUKLSAg
ICAgICAgICAgIGZhc3RGcmVlKHByZWZpeGVkQnl0ZXMpOwotICAgICAgICAgICAgc2F3RXJyb3Ig
PSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIGRvIHsKKyAgICAgICAg
R093blB0cjxHRXJyb3I+IGVycm9yOworICAgICAgICBHQ29udmVydGVyUmVzdWx0IHJlcyA9IGdf
Y29udmVydGVyX2NvbnZlcnQoR19DT05WRVJURVIobV9pY29udkRlY29kZXIuZ2V0KCkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQsIGlu
cHV0TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdDb252ZXJ0ZXJGbGFncz4oZmxh
Z3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmJ5dGVzUmVhZCwgJmJ5dGVzV3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIGlucHV0ICs9
IGJ5dGVzUmVhZDsKKyAgICAgICAgaW5wdXRMZW5ndGggLT0gYnl0ZXNSZWFkOworCisgICAgICAg
IGlmIChyZXMgPT0gR19DT05WRVJURVJfRVJST1IpIHsKKyAgICAgICAgICAgIGlmIChnX2Vycm9y
X21hdGNoZXMoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfUEFSVElBTF9JTlBV
VCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBub3QgZW5vdWdoIGlucHV0IHRvIGZ1
bGx5IGRldGVybWluZSB3aGF0IHRoZSBjb252ZXJzaW9uIHNob3VsZCBwcm9kdWNlLAorICAgICAg
ICAgICAgICAgIC8vIHNhdmUgaXQgdG8gYSBidWZmZXIgdG8gcHJlcGVuZCBpdCB0byB0aGUgbmV4
dCBpbnB1dC4KKyAgICAgICAgICAgICAgICBtZW1jcHkobV9idWZmZXJlZEJ5dGVzLCBpbnB1dCwg
aW5wdXRMZW5ndGgpOworICAgICAgICAgICAgICAgIG1fbnVtQnVmZmVyZWRCeXRlcyA9IGlucHV0
TGVuZ3RoOworICAgICAgICAgICAgICAgIGlucHV0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoZ19lcnJvcl9tYXRjaGVzKGVycm9yLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VS
Uk9SX05PX1NQQUNFKSkKKyAgICAgICAgICAgICAgICBidWZmZXJXYXNGdWxsID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnJvci5nZXQoKSwgR19JT19FUlJP
UiwgR19JT19FUlJPUl9JTlZBTElEX0RBVEEpKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0b3BP
bkVycm9yKQorICAgICAgICAgICAgICAgICAgICBzYXdFcnJvciA9IHRydWU7CisgICAgICAgICAg
ICAgICAgaWYgKGlucHV0TGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBp
bnZhbGlkIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICAgICAgICAgaW5wdXQgKz0gMTsKKyAgICAg
ICAgICAgICAgICAgICAgaW5wdXRMZW5ndGggLT0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNhd0Vycm9yID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBMT0dfRVJST1IoIkdJQ29udiBjb252ZXJzaW9uIGVycm9yLCBDb2RlICVkOiBc
IiVzXCIiLCBlcnJvci0+Y29kZSwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICAgICAgICAgIG1f
bnVtQnVmZmVyZWRCeXRlcyA9IDA7IC8vIFJlc2V0IHN0YXRlIGZvciBzdWJzZXF1ZW50IGNhbGxz
IHRvIGRlY29kZS4KKyAgICAgICAgICAgICAgICBmYXN0RnJlZShwcmVmaXhlZEJ5dGVzKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgbWVtY3B5KG1fYnVmZmVyZWRCeXRlcywgY29udmVyc2lvbkJ5dGVzICsgY291bnRS
ZWFkLCBtX251bUJ1ZmZlcmVkQnl0ZXMpOwotICAgIH0KIAotICAgIGZhc3RGcmVlKHByZWZpeGVk
Qnl0ZXMpOwotICAgIAotICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OworICAgICAgICByZXN1bHQu
YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIpLCBieXRlc1dyaXR0ZW4gLyBz
aXplb2YoVUNoYXIpKTsKKyAgICB9IHdoaWxlICgoaW5wdXRMZW5ndGggfHwgYnVmZmVyV2FzRnVs
bCkgJiYgIXNhd0Vycm9yKTsKIAotICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyLmdldCgpLCBjb3Vu
dFdyaXR0ZW4gLyBzaXplb2YoVUNoYXIpKTsKKyAgICBmYXN0RnJlZShwcmVmaXhlZEJ5dGVzKTsK
IAogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CiB9CkBAIC01MTksMjMgKzUxOCw0
MiBAQCBDU3RyaW5nIFRleHRDb2RlY0d0azo6ZW5jb2RlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
LCBzaXplX3QgbGVuZ3RoLCBVbmVuY29kYWJsZQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gIiI7CiAKLSAgICBpZiAobV9pY29udkVuY29kZXIgPT0gcmVpbnRlcnByZXRfY2FzdDxH
SUNvbnY+KC0xKSkKKyAgICBpZiAoIW1faWNvbnZFbmNvZGVyKQogICAgICAgICBjcmVhdGVJQ29u
dkVuY29kZXIoKTsKLSAgICBpZiAobV9pY29udkVuY29kZXIgPT0gcmVpbnRlcnByZXRfY2FzdDxH
SUNvbnY+KC0xKSkKKyAgICBpZiAoIW1faWNvbnZFbmNvZGVyKSB7CisgICAgICAgIExPR19FUlJP
UigiRXJyb3IgY3JlYXRpbmcgSUNvbnYgZW5jb2RlciBldmVuIHRob3VnaCBlbmNvZGluZyB3YXMg
aW4gdGFibGUuIik7CiAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisgICAgfQogCi0gICAgc2l6
ZV90IGNvdW50OwotCi0gICAgR093blB0cjxHRXJyb3I+IGVycjsKLSAgICBHT3duUHRyPGNoYXI+
IGJ1ZmZlcjsKLQotICAgIGJ1ZmZlci5vdXRQdHIoKSA9IGdfY29udmVydF93aXRoX2ljb252KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNoYXJhY3RlcnMpLCBsZW5ndGggKiBzaXplb2Yo
VUNoYXIpLCBtX2ljb252RW5jb2RlciwgMCwgJmNvdW50LCAmZXJyLm91dFB0cigpKTsKLSAgICBp
ZiAoZXJyKSB7Ci0gICAgICAgIExPR19FUlJPUigiR0lDb252IGNvbnZlcnNpb24gZXJyb3IsIENv
ZGUgJWQ6IFwiJXNcIiIsIGVyci0+Y29kZSwgZXJyLT5tZXNzYWdlKTsKKyAgICBnc2l6ZSBieXRl
c1JlYWQgPSAwOworICAgIGdzaXplIGJ5dGVzV3JpdHRlbiA9IDA7CisgICAgY29uc3QgZ2NoYXIq
IGlucHV0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2hhcmFjdGVycyk7CisgICAg
Z3NpemUgaW5wdXRMZW5ndGggPSBsZW5ndGggKiBzaXplb2YoVUNoYXIpOworICAgIGdjaGFyIGJ1
ZmZlcltDb252ZXJzaW9uQnVmZmVyU2l6ZV07CisgICAgVmVjdG9yPGNoYXI+IHJlc3VsdDsKKyAg
ICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgZG8g
eworICAgICAgICBnX2NvbnZlcnRlcl9jb252ZXJ0KEdfQ09OVkVSVEVSKG1faWNvbnZFbmNvZGVy
LmdldCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCwgaW5wdXRMZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NPTlZFUlRFUl9JTlBVVF9BVF9FTkQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVzUmVhZCwgJmJ5dGVzV3JpdHRlbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3Iub3V0UHRyKCkpOworICAgICAgICBpbnB1dCAr
PSBieXRlc1JlYWQ7CisgICAgICAgIGlucHV0TGVuZ3RoIC09IGJ5dGVzUmVhZDsKKyAgICAgICAg
cmVzdWx0Lmdyb3coc2l6ZSArIGJ5dGVzV3JpdHRlbik7CisgICAgICAgIG1lbWNweShyZXN1bHQu
ZGF0YSgpICsgc2l6ZSwgYnVmZmVyLCBieXRlc1dyaXR0ZW4pOworICAgICAgICBzaXplICs9IGJ5
dGVzV3JpdHRlbjsKKyAgICB9IHdoaWxlIChpbnB1dExlbmd0aCAmJiAhZXJyb3IuZ2V0KCkpOwor
CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIExPR19FUlJPUigiR0lDb252IGNvbnZlcnNpb24g
ZXJyb3IsIENvZGUgJWQ6IFwiJXNcIiIsIGVycm9yLT5jb2RlLCBlcnJvci0+bWVzc2FnZSk7CiAg
ICAgICAgIHJldHVybiBDU3RyaW5nKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIENTdHJpbmcoYnVm
ZmVyLmdldCgpLCBjb3VudCk7CisgICAgcmV0dXJuIENTdHJpbmcocmVzdWx0LmRhdGEoKSwgc2l6
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9ndGsvVGV4dENvZGVjR3RrLmggYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3Rr
L1RleHRDb2RlY0d0ay5oCmluZGV4IDY1ZGRmYjguLjFmYjhkZjkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dENvZGVjR3RrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2d0ay9UZXh0Q29kZWNHdGsuaApAQCAtMjksNiArMjksNyBAQAogI2lmbmRlZiBUZXh0
Q29kZWNHVEtfaAogI2RlZmluZSBUZXh0Q29kZWNHVEtfaAogCisjaW5jbHVkZSAiR1JlZlB0ci5o
IgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlICJUZXh0Q29kZWMuaCIKICNpbmNsdWRlICJU
ZXh0RW5jb2RpbmcuaCIKQEAgLTU2LDggKzU3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBUZXh0RW5jb2RpbmcgbV9lbmNvZGluZzsKICAgICAgICAgc2l6ZV90IG1fbnVtQnVmZmVy
ZWRCeXRlczsKICAgICAgICAgdW5zaWduZWQgY2hhciBtX2J1ZmZlcmVkQnl0ZXNbMTZdOyAvLyBi
aWdnZXIgdGhhbiBhbnkgc2luZ2xlIG11bHRpLWJ5dGUgY2hhcmFjdGVyICAgICAgICAKLSAgICAg
ICAgbXV0YWJsZSBHSUNvbnYgbV9pY29udkRlY29kZXI7Ci0gICAgICAgIG11dGFibGUgR0lDb252
IG1faWNvbnZFbmNvZGVyOworICAgICAgICBtdXRhYmxlIFBsYXRmb3JtUmVmUHRyPEdDaGFyc2V0
Q29udmVydGVyPiBtX2ljb252RGVjb2RlcjsKKyAgICAgICAgbXV0YWJsZSBQbGF0Zm9ybVJlZlB0
cjxHQ2hhcnNldENvbnZlcnRlcj4gbV9pY29udkVuY29kZXI7CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>