<?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>37910</bug_id>
          
          <creation_ts>2010-04-20 23:15:47 -0700</creation_ts>
          <short_desc>[DRT/Chromium] Import MockSpellCheck from Chromium</short_desc>
          <delta_ts>2010-04-21 07:43:28 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>35902</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>hamaji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>215162</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-20 23:15:47 -0700</bug_when>
    <thetext>[DRT/Chromium] Import MockSpellCheck from Chromium

It will resolve about 90 unexpected failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215165</commentid>
    <comment_count>1</comment_count>
      <attachid>53920</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-20 23:22:22 -0700</bug_when>
    <thetext>Created attachment 53920
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215170</commentid>
    <comment_count>2</comment_count>
      <attachid>53920</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-20 23:36:30 -0700</bug_when>
    <thetext>Comment on attachment 53920
Proposed patch

&gt; +        Import webkit/tools/test_shell/mock_spell_check.{cc,h} rev.37241 of Chromium.

Thanks for this line. I found this was very helpful comment. With this, even I could review this patch :)

By the way, it seems we don&apos;t have underscores between &quot;spell&quot; and &quot;check&quot;. Could you fix this before you land?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215172</commentid>
    <comment_count>3</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-20 23:41:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; By the way, it seems we don&apos;t have underscores between &quot;spell&quot; and &quot;check&quot;.
&gt; Could you fix this before you land?

Oh, that&apos;s right.  I&apos;ll fix it before landing.
Thank you for reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215174</commentid>
    <comment_count>4</comment_count>
      <attachid>53920</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-20 23:44:07 -0700</bug_when>
    <thetext>Comment on attachment 53920
Proposed patch

Instead of using string16, can we WebString or WebCore::String?  Instead of using map, can we use WTF::HashMap?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215211</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-21 02:51:59 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 53920 [details])
&gt; Instead of using string16, can we WebString or WebCore::String? 
&gt; Instead of using map, can we use WTF::HashMap?

WebString has no find*() methods and I thought we should not use WebCore classes directly.
However String is moving to WTF.  Ok, I&apos;ll update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215212</commentid>
    <comment_count>6</comment_count>
      <attachid>53936</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-21 02:52:48 -0700</bug_when>
    <thetext>Created attachment 53936
Proposed patch (rev.2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215215</commentid>
    <comment_count>7</comment_count>
      <attachid>53936</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-21 03:13:57 -0700</bug_when>
    <thetext>Comment on attachment 53936
Proposed patch (rev.2)

&gt; +using namespace std;

Do we still need this?

&gt; +    // Convert to String because WebString doesn&apos;t have find*() functions.
&gt; +    const String text16(text.data(), text.length());

Is text16 good naming? Also, the comment seems to be stale.

&gt; +    const char wordCharacters[] = &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&quot;;

static const would be better. Also, I think we can use isalpha or something instead of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215220</commentid>
    <comment_count>8</comment_count>
      <attachid>53938</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-21 03:35:01 -0700</bug_when>
    <thetext>Created attachment 53938
Proposed patch (rev.3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215222</commentid>
    <comment_count>9</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-21 03:36:46 -0700</bug_when>
    <thetext>&gt; &gt; +using namespace std;
&gt; 
&gt; Do we still need this?

No.  Removed.

&gt; &gt; +    // Convert to String because WebString doesn&apos;t have find*() functions.
&gt; &gt; +    const String text16(text.data(), text.length());
&gt; 
&gt; Is text16 good naming? Also, the comment seems to be stale.

Renamed it to stringText, and updated the comment.

&gt; &gt; +    const char wordCharacters[] = &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&quot;;
&gt; 
&gt; static const would be better. Also, I think we can use isalpha or something
&gt; instead of this.

Right!  I have changed it to WTF::isASCIIAlpha().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215223</commentid>
    <comment_count>10</comment_count>
      <attachid>53938</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-21 03:43:46 -0700</bug_when>
    <thetext>Comment on attachment 53938
Proposed patch (rev.3)

Looks good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215313</commentid>
    <comment_count>11</comment_count>
      <attachid>53938</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-21 07:43:20 -0700</bug_when>
    <thetext>Comment on attachment 53938
Proposed patch (rev.3)

Clearing flags on attachment: 53938

Committed r57981: &lt;http://trac.webkit.org/changeset/57981&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215314</commentid>
    <comment_count>12</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-21 07:43:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53920</attachid>
            <date>2010-04-20 23:22:22 -0700</date>
            <delta_ts>2010-04-21 02:52:41 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-37910-20100421152220.patch</filename>
            <type>text/plain</type>
            <size>13116</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwMmZhZDI5Li4xNzYyNWIxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDQt
MjEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtEUlQvQ2hyb21pdW1dIEltcG9ydCBNb2Nr
U3BlbGxDaGVjayBmcm9tIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNzkxMAorCisgICAgICAgIEltcG9ydCB3ZWJraXQvdG9vbHMvdGVz
dF9zaGVsbC9tb2NrX3NwZWxsX2NoZWNrLntjYyxofSByZXYuMzcyNDEgb2YgQ2hyb21pdW0uCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRy
ZWUuZ3lwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNr
LmNwcDogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1NwZWxs
Q2hlY2suaDogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnNwZWxsQ2hlY2spOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisKIDIwMTAtMDQtMjAgIEtl
bnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERp
bWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1
bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCmluZGV4IDdkYTA3
NzQuLjgzM2U2NmYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cApAQCAtMTA2LDYg
KzEwNiw4IEBACiAgICAgICAgICAgICAgICAgJy4uL2Nocm9taXVtL0V2ZW50U2VuZGVyLmgnLAog
ICAgICAgICAgICAgICAgICcuLi9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAnLAog
ICAgICAgICAgICAgICAgICcuLi9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oJywKKyAg
ICAgICAgICAgICAgICAnLi4vY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suY3BwJywKKyAgICAgICAg
ICAgICAgICAnLi4vY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suaCcsCiAgICAgICAgICAgICAgICAg
Jy4uL2Nocm9taXVtL1BsYWluVGV4dENvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICAgICAn
Li4vY2hyb21pdW0vUGxhaW5UZXh0Q29udHJvbGxlci5oJywKICAgICAgICAgICAgICAgICAnLi4v
Y2hyb21pdW0vVGVzdE5hdmlnYXRpb25Db250cm9sbGVyLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZhYzhjOAotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmNwcApA
QCAtMCwwICsxLDE1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2NrU3BlbGxD
aGVjay5oIgorCisjaW5jbHVkZSAicHVibGljL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgPG1hcD4K
KyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworTW9ja1NwZWxsQ2hlY2s6Ok1vY2tTcGVsbENoZWNrKCkK
KyAgICA6IG1faW5pdGlhbGl6ZWQoZmFsc2UpIHt9CisKK01vY2tTcGVsbENoZWNrOjp+TW9ja1Nw
ZWxsQ2hlY2soKSB7fQorCitib29sIE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZChjb25z
dCBXZWJTdHJpbmcmIHRleHQsIGludCogbWlzc3BlbGxlZE9mZnNldCwgaW50KiBtaXNzcGVsbGVk
TGVuZ3RoKQoreworICAgIEFTU0VSVChtaXNzcGVsbGVkT2Zmc2V0KTsKKyAgICBBU1NFUlQobWlz
c3BlbGxlZExlbmd0aCk7CisKKyAgICAvLyBJbml0aWFsaXplIHRoaXMgc3BlbGxjaGVja2VyLgor
ICAgIGluaXRpYWxpemVJZk5lZWRlZCgpOworCisgICAgLy8gUmVzZXQgdGhlIHJlc3VsdCB2YWx1
ZXMgYXMgb3VyIHNwZWxsY2hlY2tlciBkb2VzLgorICAgICptaXNzcGVsbGVkT2Zmc2V0ID0gMDsK
KyAgICAqbWlzc3BlbGxlZExlbmd0aCA9IDA7CisKKyAgICAvLyBDb252ZXJ0IHRvIHN0cmluZzE2
IGJlY2F1c2UgV2ViU3RyaW5nIGRvZXNuJ3QgaGF2ZSBmaW5kKigpIGZ1bmN0aW9ucy4KKyAgICBj
b25zdCBzdHJpbmcxNiB0ZXh0MTYgPSB0ZXh0OworCisgICAgLy8gRXh0cmFjdCB0aGUgZmlyc3Qg
cG9zc2libGUgRW5nbGlzaCB3b3JkIGZyb20gdGhlIGdpdmVuIHN0cmluZy4KKyAgICAvLyBUaGUg
Z2l2ZW4gc3RyaW5nIG1heSBpbmNsdWRlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIG9yIG51bWJlcnMu
IFNvLCB3ZQorICAgIC8vIHNob3VsZCBmaWx0ZXIgb3V0IHN1Y2ggY2hhcmFjdGVycyBiZWZvcmUg
c3RhcnQgbG9va2luZyB1cCBvdXIKKyAgICAvLyBtaXNzcGVsbGVkLXdvcmQgdGFibGUuCisgICAg
Ly8gKFRoaXMgaXMgYSBzaW1wbGUgdmVyc2lvbiBvZiBvdXIgU3BlbGxDaGVja1dvcmRJdGVyYXRv
ciBjbGFzcy4pCisgICAgLy8gSWYgdGhlIGdpdmVuIHN0cmluZyBkb2Vzbid0IGluY2x1ZGUgYW55
IEFTQ0lJIGNoYXJhY3RlcnMsIHdlIGNhbiB0cmVhdCB0aGUKKyAgICAvLyBzdHJpbmcgYXMgdmFs
aWQgb25lLgorICAgIC8vIFVuZm9ydHVuYXRlbHksIFRoaXMgaW1wbGVtZW50YXRpb24gc3BsaXRz
IGEgY29udHJhY3Rpb24sIGkuZS4gImlzbid0IiBpcworICAgIC8vIHNwbGl0IGludG8gdHdvIHBp
ZWNlcyAiaXNuIiBhbmQgInQiLiBUaGlzIGlzIE9LIGJlY2F1c2Ugd2Via2l0IHRlc3RzCisgICAg
Ly8gZG9uJ3QgaGF2ZSBtaXNzcGVsbGVkIGNvbnRyYWN0aW9ucy4KKyAgICBjb25zdCBzdHJpbmcx
NiB3b3JkQ2hhcmFjdGVycyA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIkFCQ0RFRkdISUpLTE1OT1BR
UlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiKTsKKworICAgIHNpemVfdCB3b3Jk
T2Zmc2V0ID0gdGV4dDE2LmZpbmRfZmlyc3Rfb2Yod29yZENoYXJhY3RlcnMpOworICAgIGlmICh3
b3JkT2Zmc2V0ID09IHN0cmluZzo6bnBvcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBz
aXplX3Qgd29yZEVuZCA9IHRleHQxNi5maW5kX2ZpcnN0X25vdF9vZih3b3JkQ2hhcmFjdGVycywg
d29yZE9mZnNldCk7CisgICAgc2l6ZV90IHdvcmRMZW5ndGggPSB3b3JkRW5kID09IHN0cmluZzo6
bnBvcyA/IHRleHQxNi5sZW5ndGgoKSAtIHdvcmRPZmZzZXQgOiB3b3JkRW5kIC0gd29yZE9mZnNl
dDsKKworICAgIC8vIExvb2sgdXAgb3VyIG1pc3NwZWxsZWQtd29yZCB0YWJsZSB0byBjaGVjayBp
ZiB0aGUgZXh0cmFjdGVkIHdvcmQgaXMgYQorICAgIC8vIGtub3duIG1pc3NwZWxsZWQgd29yZCwg
YW5kIHJldHVybiB0aGUgb2Zmc2V0IGFuZCB0aGUgbGVuZ3RoIG9mIHRoZQorICAgIC8vIGV4dHJh
Y3RlZCB3b3JkIGlmIHRoaXMgd29yZCBpcyBhIGtub3duIG1pc3NwZWxsZWQgd29yZC4KKyAgICAv
LyAoU2VlIHRoZSBjb21tZW50IGluIE1vY2tTcGVsbENoZWNrOjppbml0aWFsaXplSWZOZWVkZWQo
KSB3aHkgd2UgdXNlIGEKKyAgICAvLyBtaXNzcGVsbGVkLXdvcmQgdGFibGUuKQorICAgIHN0cmlu
ZzE2IHdvcmQodGV4dDE2LCB3b3JkT2Zmc2V0LCB3b3JkTGVuZ3RoKTsKKyAgICBzdGQ6Om1hcDxz
dHJpbmcxNiwgYm9vbD46Oml0ZXJhdG9yIGl0ID0gbV9taXNzcGVsbGVkV29yZHMuZmluZCh3b3Jk
KTsKKyAgICBpZiAoaXQgPT0gbV9taXNzcGVsbGVkV29yZHMuZW5kKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgKm1pc3NwZWxsZWRPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQ+KHdvcmRP
ZmZzZXQpOworICAgICptaXNzcGVsbGVkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50Pih3b3JkTGVu
Z3RoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTW9ja1NwZWxsQ2hlY2s6OmluaXRp
YWxpemVJZk5lZWRlZCgpCit7CisgICAgLy8gRXhpdCBpZiB3ZSBoYXZlIGFscmVhZHkgaW5pdGlh
bGl6ZWQgdGhpcyBvYmplY3QuCisgICAgaWYgKG1faW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIENyZWF0ZSBhIHRhYmxlIHRoYXQgY29uc2lzdHMgb2YgbWlzc3Bl
bGxlZCB3b3JkcyB1c2VkIGluIFdlYktpdCBsYXlvdXQKKyAgICAvLyB0ZXN0cy4KKyAgICAvLyBT
aW5jZSBXZWJLaXQgbGF5b3V0IHRlc3RzIGRvbid0IGhhdmUgc28gbWFueSBtaXNzcGVsbGVkIHdv
cmRzIGFzCisgICAgLy8gd2VsbC1zcGVsbGVkIHdvcmRzLCBpdCBpcyBlYXNpZXIgdG8gY29tcGFy
ZSB0aGUgZ2l2ZW4gd29yZCB3aXRoIG1pc3NwZWxsZWQKKyAgICAvLyBvbmVzIHRoYW4gdG8gY29t
cGFyZSB3aXRoIHdlbGwtc3BlbGxlZCBvbmVzLgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBtaXNz
cGVsbGVkV29yZHNbXSA9IHsKKyAgICAgICAgLy8gVGhlc2Ugd29yZHMgYXJlIGtub3duIG1pc3Nw
ZWxsZWQgd29yZHMgaW4gd2Via2l0IHRlc3RzLgorICAgICAgICAvLyBJZiB0aGVyZSBhcmUgb3Ro
ZXIgbWlzc3BlbGxlZCB3b3JkcyBpbiB3ZWJraXQgdGVzdHMsIHBsZWFzZSBhZGQgdGhlbSBpbgor
ICAgICAgICAvLyB0aGlzIGFycmF5LgorICAgICAgICAiZm9vIiwKKyAgICAgICAgIkZvbyIsCisg
ICAgICAgICJiYXoiLAorICAgICAgICAiZm8iLAorICAgICAgICAiTGliZXJ0eUYiLAorICAgICAg
ICAiY2hlbGxvIiwKKyAgICAgICAgInh4eHRlc3R4eHgiLAorICAgICAgICAiWFh4eHgiLAorICAg
ICAgICAiVGV4dHgiLAorICAgICAgICAiYmxvY2txdW90ZWQiLAorICAgICAgICAiYXNkIiwKKyAg
ICAgICAgIkxvcmVtIiwKKyAgICAgICAgIk51bmMiLAorICAgICAgICAiQ3VyYWJpdHVyIiwKKyAg
ICAgICAgImV1IiwKKyAgICAgICAgImFkbGoiLAorICAgICAgICAiYWRhYXNqIiwKKyAgICAgICAg
InNka2xqIiwKKyAgICAgICAgImpsa2RzIiwKKyAgICAgICAgImpzYWFkYSIsCisgICAgICAgICJq
bGRhIiwKKyAgICAgICAgInp6IiwKKyAgICAgICAgImNvbnRlbnRFZGl0YWJsZSIsCisgICAgICAg
IC8vIFRoZSBmb2xsb3dpbmcgd29yZHMgYXJlIHVzZWQgYnkgdW5pdCB0ZXN0cy4KKyAgICAgICAg
ImlmbW1wIiwKKyAgICAgICAgInF3ZXJ0eXVpb3Bhc2QiLAorICAgICAgICAicXdlcnR5dWlvcGFz
ZGYiLAorICAgIH07CisKKyAgICBtX21pc3NwZWxsZWRXb3Jkcy5jbGVhcigpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKG1pc3NwZWxsZWRXb3Jkcyk7ICsraSkgeworICAg
ICAgICBXZWJTdHJpbmcgc3RyID0gV2ViU3RyaW5nOjpmcm9tVVRGOChtaXNzcGVsbGVkV29yZHNb
aV0pOworICAgICAgICBtX21pc3NwZWxsZWRXb3Jkcy5pbnNlcnQoc3RkOjptYWtlX3BhaXI8c3Ry
aW5nMTYsIGJvb2w+KHN0cmluZzE2KHN0ciksIGZhbHNlKSk7CisgICAgfQorCisgICAgLy8gTWFy
ayBhcyBpbml0aWFsaXplZCB0byBwcmV2ZW50IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcgaW5pdGlh
bGl6ZWQgdHdpY2UKKyAgICAvLyBvciBtb3JlLgorICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwor
CisgICAgLy8gU2luY2UgdGhpcyBNb2NrU3BlbGxDaGVjayBjbGFzcyBkb2Vzbid0IGRvd25sb2Fk
IGRpY3Rpb25hcmllcywgdGhpcworICAgIC8vIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGZhbHNl
LgorICAgIHJldHVybiBmYWxzZTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjMyZTI1ODkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IE1vY2tTcGVsbENoZWNrX2gKKyNkZWZpbmUgTW9ja1NwZWxsQ2hlY2tfaAorCisjaW5jbHVkZSA8
YmFzZS9zdHJpbmcxNi5oPgorI2luY2x1ZGUgPG1hcD4KKworbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBXZWJTdHJpbmc7Cit9CisKKy8vIEEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBhIHNwZWxs
LWNoZWNrZXIgdXNlZCBmb3IgV2ViS2l0IHRlc3RzLgorLy8gVGhpcyBjbGFzcyBvbmx5IGltcGxl
bWVudHMgdGhlIG1pbmltYWwgZnVuY3Rpb25hcml0aWVzIHJlcXVpcmVkIGJ5IFdlYktpdAorLy8g
dGVzdHMsIGkuZS4gdGhpcyBjbGFzcyBqdXN0IGNvbXBhcmVzIHRoZSBnaXZlbiBzdHJpbmcgd2l0
aCBrbm93biBtaXNzcGVsbGVkCisvLyB3b3JkcyBpbiB3ZWJraXQgdGVzdHMgYW5kIG1hcmsgdGhl
bSBhcyBtaXNzc3BlbGxlZC4KKy8vIEV2ZW4gdGhvdWdoIHRoaXMgaXMgc3VmZmljZW50IGZvciB3
ZWJraXQgdGVzdHMsIHRoaXMgY2xhc3MgaXMgbm90IHN1aXRhYmxlCisvLyBmb3IgYW55IG90aGVy
IHVzYWdlcy4KK2NsYXNzIE1vY2tTcGVsbENoZWNrIHsKK3B1YmxpYzoKKyAgICBNb2NrU3BlbGxD
aGVjaygpOworICAgIH5Nb2NrU3BlbGxDaGVjaygpOworCisgICAgLy8gQ2hlY2tzIHRoZSBzcGVs
bGluZ3Mgb2YgdGhlIHNwZWNpZmllZCB0ZXh0LgorICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJu
cyB0cnVlIGlmIHRoZSB0ZXh0IGNvbnNpc3RzIG9mIHZhbGlkIHdvcmRzLCBhbmQKKyAgICAvLyBy
ZXR1cm5zIGZhbHNlIGlmIGl0IGluY2x1ZGVzIGludmFsaWQgd29yZHMuCisgICAgLy8gV2hlbiB0
aGUgZ2l2ZW4gdGV4dCBpbmNsdWRlcyBpbnZhbGlkIHdvcmRzLCB0aGlzIGZ1bmN0aW9uIHNldHMg
dGhlCisgICAgLy8gcG9zaXRpb24gb2YgdGhlIGZpcnN0IGludmFsaWQgd29yZCB0byBtaXNzcGVs
bGVkT2Zmc2V0LCBhbmQgdGhlIGxlbmd0aCBvZgorICAgIC8vIHRoZSBmaXJzdCBpbnZhbGlkIHdv
cmQgdG8gbWlzc3BlbGxlZExlbmd0aCwgcmVzcGVjdGl2ZWx5LgorICAgIC8vIEZvciBleGFtcGxl
LCB3aGVuIHRoZSBnaXZlbiB0ZXh0IGlzICIgICB6eiB6eiIsIHRoaXMgZnVuY3Rpb24gc2V0cyAz
IHRvCisgICAgLy8gbWlzc3BlbGxlZE9mZnNldCBhbmQgMiB0byBtaXNzcGVsbGVkTGVuZ3RoLCBy
ZXNwZWN0aXZlbHkuCisgICAgYm9vbCBzcGVsbENoZWNrV29yZChjb25zdCBXZWJLaXQ6OldlYlN0
cmluZyYgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCogbWlzc3BlbGxlZE9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCogbWlzc3BlbGxlZExlbmd0aCk7CisKK3By
aXZhdGU6CisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgaW50ZXJuYWwgcmVzb3VyY2VzIGlmIHdlIG5l
ZWQgdG8gaW5pdGlhbGl6ZSBpdC4KKyAgICAvLyBJbml0aWFsaXppbmcgdGhpcyBvYmplY3QgbWF5
IHRha2UgbG9uZyB0aW1lLiBUbyBwcmV2ZW50IGZyb20gaHVydGluZworICAgIC8vIHRoZSBwZXJm
b3JtYW5jZSBvZiB0ZXN0X3NoZWxsLCB3ZSBpbml0aWFsaXplIHRoaXMgb2JqZWN0IHdoZW4KKyAg
ICAvLyBTcGVsbENoZWNrV29yZCgpIGlzIGNhbGxlZCBmb3IgdGhlIGZpcnN0IHRpbWUuCisgICAg
Ly8gVG8gYmUgY29tcGxpYW50IHdpdGggU3BlbGxDaGVjazpJbml0aWFsaXplSWZOZWVkZWQoKSwg
dGhpcyBmdW5jdGlvbgorICAgIC8vIHJldHVybnMgdHJ1ZSBpZiB0aGlzIG9iamVjdCBpcyBkb3du
bG9hZGluZyBhIGRpY3Rpb25hcnksIG90aGVyd2lzZQorICAgIC8vIGl0IHJldHVybnMgZmFsc2Uu
CisgICAgYm9vbCBpbml0aWFsaXplSWZOZWVkZWQoKTsKKworICAgIC8vIEEgdGFibGUgdGhhdCBj
b25zaXN0cyBvZiBtaXNzcGVsbGVkIHdvcmRzLgorICAgIHN0ZDo6bWFwPHN0cmluZzE2LCBib29s
PiBtX21pc3NwZWxsZWRXb3JkczsKKworICAgIC8vIEEgZmxhZyByZXByZXNlbnRpbmcgd2hldGhl
ciBvciBub3QgdGhpcyBvYmplY3QgaXMgaW5pdGlhbGl6ZWQuCisgICAgYm9vbCBtX2luaXRpYWxp
emVkOworfTsKKworI2VuZGlmIC8vIE1vY2tTcGVsbENoZWNrX2gKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCAzMTdkYTFl
Li45NWIxYzdlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwCkBAIC00MjgsOCArNDI4LDExIEBAIGJvb2wgV2ViVmlld0hvc3Q6
OmhhbmRsZUN1cnJlbnRLZXlib2FyZEV2ZW50KCkKIAogdm9pZCBXZWJWaWV3SG9zdDo6c3BlbGxD
aGVjayhjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCYgbWlzc3BlbGxlZE9mZnNldCwgaW50JiBt
aXNzcGVsbGVkTGVuZ3RoKQogeworICAgIC8vIENoZWNrIHRoZSBzcGVsbGluZyBvZiB0aGUgZ2l2
ZW4gdGV4dC4KICNpZiBPUyhNQUNfT1NfWCkKLSAgICAvLyBGSVhNRTogUG9ydCBtb2NrX3NwZWxs
Y2sue2NjLGh9CisgICAgLy8gRklYTUU6IHJlYmFzZWxpbmUgbGF5b3V0LXRlc3QgcmVzdWx0cyBv
ZiBXaW5kb3dzIGFuZCBMaW51eCBzbyB3ZQorICAgIC8vIGNhbiBlbmFibGUgdGhpcyBtb2NrIHNw
ZWxsY2hlY2tlciBvbiB0aGVtLgorICAgIG1fc3BlbGxjaGVjay5zcGVsbENoZWNrV29yZCh0ZXh0
LCAmbWlzc3BlbGxlZE9mZnNldCwgJm1pc3NwZWxsZWRMZW5ndGgpOwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmlu
ZGV4IDM2ODBmNGYuLmZkMWUwZjUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMzEsNiArMzEsNyBAQAogI2lmbmRlZiBXZWJW
aWV3SG9zdF9oCiAjZGVmaW5lIFdlYlZpZXdIb3N0X2gKIAorI2luY2x1ZGUgIk1vY2tTcGVsbENo
ZWNrLmgiCiAjaW5jbHVkZSAiVGVzdE5hdmlnYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
cHVibGljL1dlYkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJwdWJsaWMvV2ViRnJhbWVDbGllbnQu
aCIKQEAgLTI1Niw2ICsyNTcsOSBAQCBwcml2YXRlOgogICAgIHN0ZDo6c3RyaW5nIG1fZWRpdENv
bW1hbmROYW1lOwogICAgIHN0ZDo6c3RyaW5nIG1fZWRpdENvbW1hbmRWYWx1ZTsKIAorICAgIC8v
IFRoZSBtb2NrIHNwZWxsY2hlY2tlciB1c2VkIGluIHNwZWxsQ2hlY2soKS4KKyAgICBNb2NrU3Bl
bGxDaGVjayBtX3NwZWxsY2hlY2s7CisKICAgICAvLyBQYWludGluZy4KICAgICBPd25QdHI8c2tp
YTo6UGxhdGZvcm1DYW52YXM+IG1fY2FudmFzOwogICAgIFdlYktpdDo6V2ViUmVjdCBtX3BhaW50
UmVjdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53936</attachid>
            <date>2010-04-21 02:52:48 -0700</date>
            <delta_ts>2010-04-21 03:34:54 -0700</delta_ts>
            <desc>Proposed patch (rev.2)</desc>
            <filename>bug-37910-20100421185245.patch</filename>
            <type>text/plain</type>
            <size>14708</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwMmZhZDI5Li5hMWVhOGQ3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQt
MjEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtEUlQvQ2hyb21pdW1dIEltcG9ydCBNb2Nr
U3BlbGxDaGVjayBmcm9tIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNzkxMAorCisgICAgICAgIEltcG9ydCB3ZWJraXQvdG9vbHMvdGVz
dF9zaGVsbC9tb2NrX3NwZWxsY2hlY2sue2NjLGh9IHJldi4zNzI0MSBvZiBDaHJvbWl1bS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJl
ZS5neXA6CisgICAgICAgICAgQWRkIElDVSBleHBsaWNpdGx5IGJlY2F1c2UgV1RGU3RyaW5nLmgg
aW5jbHVkZXMgSUNVIGhlYWRlcnMuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TW9ja1NwZWxsQ2hlY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Nb2NrU3BlbGxDaGVjay5oOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6c3BlbGxDaGVj
ayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9jb25maWcuaDogRGVmaW5lIEpTX0VYUE9S
VERBVEEsIHdoaWNoIGlzIHVzZWQKKyAgICAgICAgICBieSB3dGYvdGV4dC9BdG9taWNTdHJpbmcu
aCBpbmNsdWRlZCBieSB3dGYvdGV4dC9XVEZTdHJpbmcuaC4KKwogMjAxMC0wNC0yMCAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRy
aSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKaW5kZXggN2RhMDc3NC4u
MzgzNGQ5OCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCkBAIC03Niw2ICs3Niw3
IEBACiAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWwogICAgICAgICAgICAgICAgICc8KHdl
YmtpdF9hcGlfZGlyKS9XZWJLaXQuZ3lwOndlYmtpdCcsCiAgICAgICAgICAgICAgICAgJzwod2Vi
a2l0X3RvcCkvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwL0phdmFTY3JpcHRDb3Jl
Lmd5cDp3dGZfY29uZmlnJywKKyAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90
aGlyZF9wYXJ0eS9pY3UvaWN1Lmd5cDppY3V1YycsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21p
dW1fc3JjX2RpcikvdGhpcmRfcGFydHkvbnBhcGkvbnBhcGkuZ3lwOm5wYXBpJywKICAgICAgICAg
ICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9za2lhL3NraWEuZ3lwOnNraWEnLAogICAgICAg
ICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBw
b3J0Lmd5cDp3ZWJraXRfc3VwcG9ydCcsCkBAIC0xMDYsNiArMTA3LDggQEAKICAgICAgICAgICAg
ICAgICAnLi4vY2hyb21pdW0vRXZlbnRTZW5kZXIuaCcsCiAgICAgICAgICAgICAgICAgJy4uL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJy4uL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgnLAorICAgICAgICAgICAgICAgICcuLi9jaHJv
bWl1bS9Nb2NrU3BlbGxDaGVjay5jcHAnLAorICAgICAgICAgICAgICAgICcuLi9jaHJvbWl1bS9N
b2NrU3BlbGxDaGVjay5oJywKICAgICAgICAgICAgICAgICAnLi4vY2hyb21pdW0vUGxhaW5UZXh0
Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgICAgICcuLi9jaHJvbWl1bS9QbGFpblRleHRD
b250cm9sbGVyLmgnLAogICAgICAgICAgICAgICAgICcuLi9jaHJvbWl1bS9UZXN0TmF2aWdhdGlv
bkNvbnRyb2xsZXIuY3BwJywKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5kYzcwNDA1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suY3BwCkBAIC0wLDAgKzEsMTY5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tTcGVsbENoZWNrLmgiCisKKyNpbmNsdWRlICJw
dWJsaWMvV2ViU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNw
YWNlIHN0ZDsKKworTW9ja1NwZWxsQ2hlY2s6Ok1vY2tTcGVsbENoZWNrKCkKKyAgICA6IG1faW5p
dGlhbGl6ZWQoZmFsc2UpIHt9CisKK01vY2tTcGVsbENoZWNrOjp+TW9ja1NwZWxsQ2hlY2soKSB7
fQorCitib29sIE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZChjb25zdCBXZWJTdHJpbmcm
IHRleHQsIGludCogbWlzc3BlbGxlZE9mZnNldCwgaW50KiBtaXNzcGVsbGVkTGVuZ3RoKQorewor
ICAgIEFTU0VSVChtaXNzcGVsbGVkT2Zmc2V0KTsKKyAgICBBU1NFUlQobWlzc3BlbGxlZExlbmd0
aCk7CisKKyAgICAvLyBJbml0aWFsaXplIHRoaXMgc3BlbGxjaGVja2VyLgorICAgIGluaXRpYWxp
emVJZk5lZWRlZCgpOworCisgICAgLy8gUmVzZXQgdGhlIHJlc3VsdCB2YWx1ZXMgYXMgb3VyIHNw
ZWxsY2hlY2tlciBkb2VzLgorICAgICptaXNzcGVsbGVkT2Zmc2V0ID0gMDsKKyAgICAqbWlzc3Bl
bGxlZExlbmd0aCA9IDA7CisKKyAgICAvLyBDb252ZXJ0IHRvIFN0cmluZyBiZWNhdXNlIFdlYlN0
cmluZyBkb2Vzbid0IGhhdmUgZmluZCooKSBmdW5jdGlvbnMuCisgICAgY29uc3QgU3RyaW5nIHRl
eHQxNih0ZXh0LmRhdGEoKSwgdGV4dC5sZW5ndGgoKSk7CisKKyAgICAvLyBFeHRyYWN0IHRoZSBm
aXJzdCBwb3NzaWJsZSBFbmdsaXNoIHdvcmQgZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nLgorICAgIC8v
IFRoZSBnaXZlbiBzdHJpbmcgbWF5IGluY2x1ZGUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgb3IgbnVt
YmVycy4gU28sIHdlCisgICAgLy8gc2hvdWxkIGZpbHRlciBvdXQgc3VjaCBjaGFyYWN0ZXJzIGJl
Zm9yZSBzdGFydCBsb29raW5nIHVwIG91cgorICAgIC8vIG1pc3NwZWxsZWQtd29yZCB0YWJsZS4K
KyAgICAvLyAoVGhpcyBpcyBhIHNpbXBsZSB2ZXJzaW9uIG9mIG91ciBTcGVsbENoZWNrV29yZEl0
ZXJhdG9yIGNsYXNzLikKKyAgICAvLyBJZiB0aGUgZ2l2ZW4gc3RyaW5nIGRvZXNuJ3QgaW5jbHVk
ZSBhbnkgQVNDSUkgY2hhcmFjdGVycywgd2UgY2FuIHRyZWF0IHRoZQorICAgIC8vIHN0cmluZyBh
cyB2YWxpZCBvbmUuCisgICAgLy8gVW5mb3J0dW5hdGVseSwgVGhpcyBpbXBsZW1lbnRhdGlvbiBz
cGxpdHMgYSBjb250cmFjdGlvbiwgaS5lLiAiaXNuJ3QiIGlzCisgICAgLy8gc3BsaXQgaW50byB0
d28gcGllY2VzICJpc24iIGFuZCAidCIuIFRoaXMgaXMgT0sgYmVjYXVzZSB3ZWJraXQgdGVzdHMK
KyAgICAvLyBkb24ndCBoYXZlIG1pc3NwZWxsZWQgY29udHJhY3Rpb25zLgorICAgIGNvbnN0IGNo
YXIgd29yZENoYXJhY3RlcnNbXSA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdo
aWprbG1ub3BxcnN0dXZ3eHl6IjsKKworICAgIGludCB3b3JkT2Zmc2V0ID0gLTE7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBzaXplb2Yod29yZENoYXJhY3RlcnMpIC0gMTsgKytpKSB7CisgICAg
ICAgIGludCBvZmZzZXQgPSB0ZXh0MTYuZmluZCh3b3JkQ2hhcmFjdGVyc1tpXSk7CisgICAgICAg
IGlmIChvZmZzZXQgPT0gLTEpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHdv
cmRPZmZzZXQgPT0gLTEgfHwgb2Zmc2V0IDwgd29yZE9mZnNldCkKKyAgICAgICAgICAgIHdvcmRP
ZmZzZXQgPSBvZmZzZXQ7CisgICAgfQorICAgIGlmICh3b3JkT2Zmc2V0ID09IC0xKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIGludCB3b3JkRW5kID0gLTE7CisgICAgZm9yIChpbnQgaSA9
IHdvcmRPZmZzZXQ7IGkgPCB0ZXh0MTYubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBib29sIGZv
dW5kID0gZmFsc2U7CisgICAgICAgIGZvciAoaW50IGMgPSAwOyBjIDwgc2l6ZW9mKHdvcmRDaGFy
YWN0ZXJzKSAtIDE7ICsrYykgeworICAgICAgICAgICAgaWYgKHRleHQxNltpXSA9PSB3b3JkQ2hh
cmFjdGVyc1tjXSkgeworICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIWZvdW5k
KSB7CisgICAgICAgICAgICB3b3JkRW5kID0gaTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorICAgIGludCB3b3JkTGVuZ3RoID0gd29yZEVuZCA9PSAtMSA/IHRleHQxNi5s
ZW5ndGgoKSAtIHdvcmRPZmZzZXQgOiB3b3JkRW5kIC0gd29yZE9mZnNldDsKKworICAgIC8vIExv
b2sgdXAgb3VyIG1pc3NwZWxsZWQtd29yZCB0YWJsZSB0byBjaGVjayBpZiB0aGUgZXh0cmFjdGVk
IHdvcmQgaXMgYQorICAgIC8vIGtub3duIG1pc3NwZWxsZWQgd29yZCwgYW5kIHJldHVybiB0aGUg
b2Zmc2V0IGFuZCB0aGUgbGVuZ3RoIG9mIHRoZQorICAgIC8vIGV4dHJhY3RlZCB3b3JkIGlmIHRo
aXMgd29yZCBpcyBhIGtub3duIG1pc3NwZWxsZWQgd29yZC4KKyAgICAvLyAoU2VlIHRoZSBjb21t
ZW50IGluIE1vY2tTcGVsbENoZWNrOjppbml0aWFsaXplSWZOZWVkZWQoKSB3aHkgd2UgdXNlIGEK
KyAgICAvLyBtaXNzcGVsbGVkLXdvcmQgdGFibGUuKQorICAgIFN0cmluZyB3b3JkID0gdGV4dDE2
LnN1YnN0cmluZyh3b3JkT2Zmc2V0LCB3b3JkTGVuZ3RoKTsKKyAgICBpZiAoIW1fbWlzc3BlbGxl
ZFdvcmRzLmNvbnRhaW5zKHdvcmQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICptaXNz
cGVsbGVkT2Zmc2V0ID0gd29yZE9mZnNldDsKKyAgICAqbWlzc3BlbGxlZExlbmd0aCA9IHdvcmRM
ZW5ndGg7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1vY2tTcGVsbENoZWNrOjppbml0
aWFsaXplSWZOZWVkZWQoKQoreworICAgIC8vIEV4aXQgaWYgd2UgaGF2ZSBhbHJlYWR5IGluaXRp
YWxpemVkIHRoaXMgb2JqZWN0LgorICAgIGlmIChtX2luaXRpYWxpemVkKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyBDcmVhdGUgYSB0YWJsZSB0aGF0IGNvbnNpc3RzIG9mIG1pc3Nw
ZWxsZWQgd29yZHMgdXNlZCBpbiBXZWJLaXQgbGF5b3V0CisgICAgLy8gdGVzdHMuCisgICAgLy8g
U2luY2UgV2ViS2l0IGxheW91dCB0ZXN0cyBkb24ndCBoYXZlIHNvIG1hbnkgbWlzc3BlbGxlZCB3
b3JkcyBhcworICAgIC8vIHdlbGwtc3BlbGxlZCB3b3JkcywgaXQgaXMgZWFzaWVyIHRvIGNvbXBh
cmUgdGhlIGdpdmVuIHdvcmQgd2l0aCBtaXNzcGVsbGVkCisgICAgLy8gb25lcyB0aGFuIHRvIGNv
bXBhcmUgd2l0aCB3ZWxsLXNwZWxsZWQgb25lcy4KKyAgICBzdGF0aWMgY29uc3QgY2hhciogbWlz
c3BlbGxlZFdvcmRzW10gPSB7CisgICAgICAgIC8vIFRoZXNlIHdvcmRzIGFyZSBrbm93biBtaXNz
cGVsbGVkIHdvcmRzIGluIHdlYmtpdCB0ZXN0cy4KKyAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG90
aGVyIG1pc3NwZWxsZWQgd29yZHMgaW4gd2Via2l0IHRlc3RzLCBwbGVhc2UgYWRkIHRoZW0gaW4K
KyAgICAgICAgLy8gdGhpcyBhcnJheS4KKyAgICAgICAgImZvbyIsCisgICAgICAgICJGb28iLAor
ICAgICAgICAiYmF6IiwKKyAgICAgICAgImZvIiwKKyAgICAgICAgIkxpYmVydHlGIiwKKyAgICAg
ICAgImNoZWxsbyIsCisgICAgICAgICJ4eHh0ZXN0eHh4IiwKKyAgICAgICAgIlhYeHh4IiwKKyAg
ICAgICAgIlRleHR4IiwKKyAgICAgICAgImJsb2NrcXVvdGVkIiwKKyAgICAgICAgImFzZCIsCisg
ICAgICAgICJMb3JlbSIsCisgICAgICAgICJOdW5jIiwKKyAgICAgICAgIkN1cmFiaXR1ciIsCisg
ICAgICAgICJldSIsCisgICAgICAgICJhZGxqIiwKKyAgICAgICAgImFkYWFzaiIsCisgICAgICAg
ICJzZGtsaiIsCisgICAgICAgICJqbGtkcyIsCisgICAgICAgICJqc2FhZGEiLAorICAgICAgICAi
amxkYSIsCisgICAgICAgICJ6eiIsCisgICAgICAgICJjb250ZW50RWRpdGFibGUiLAorICAgICAg
ICAvLyBUaGUgZm9sbG93aW5nIHdvcmRzIGFyZSB1c2VkIGJ5IHVuaXQgdGVzdHMuCisgICAgICAg
ICJpZm1tcCIsCisgICAgICAgICJxd2VydHl1aW9wYXNkIiwKKyAgICAgICAgInF3ZXJ0eXVpb3Bh
c2RmIiwKKyAgICB9OworCisgICAgbV9taXNzcGVsbGVkV29yZHMuY2xlYXIoKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGFycmF5c2l6ZShtaXNzcGVsbGVkV29yZHMpOyArK2kpCisgICAg
ICAgIG1fbWlzc3BlbGxlZFdvcmRzLmFkZChTdHJpbmc6OmZyb21VVEY4KG1pc3NwZWxsZWRXb3Jk
c1tpXSksIGZhbHNlKTsKKworICAgIC8vIE1hcmsgYXMgaW5pdGlhbGl6ZWQgdG8gcHJldmVudCB0
aGlzIG9iamVjdCBmcm9tIGJlaW5nIGluaXRpYWxpemVkIHR3aWNlCisgICAgLy8gb3IgbW9yZS4K
KyAgICBtX2luaXRpYWxpemVkID0gdHJ1ZTsKKworICAgIC8vIFNpbmNlIHRoaXMgTW9ja1NwZWxs
Q2hlY2sgY2xhc3MgZG9lc24ndCBkb3dubG9hZCBkaWN0aW9uYXJpZXMsIHRoaXMKKyAgICAvLyBm
dW5jdGlvbiBhbHdheXMgcmV0dXJucyBmYWxzZS4KKyAgICByZXR1cm4gZmFsc2U7Cit9CmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVj
ay5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2su
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzJiYTkyCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hl
Y2suaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNb2NrU3BlbGxDaGVja19oCisjZGVmaW5lIE1v
Y2tTcGVsbENoZWNrX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlN0cmluZzsKK30KKworLy8gQSBtb2NrIGltcGxl
bWVudGF0aW9uIG9mIGEgc3BlbGwtY2hlY2tlciB1c2VkIGZvciBXZWJLaXQgdGVzdHMuCisvLyBU
aGlzIGNsYXNzIG9ubHkgaW1wbGVtZW50cyB0aGUgbWluaW1hbCBmdW5jdGlvbmFyaXRpZXMgcmVx
dWlyZWQgYnkgV2ViS2l0CisvLyB0ZXN0cywgaS5lLiB0aGlzIGNsYXNzIGp1c3QgY29tcGFyZXMg
dGhlIGdpdmVuIHN0cmluZyB3aXRoIGtub3duIG1pc3NwZWxsZWQKKy8vIHdvcmRzIGluIHdlYmtp
dCB0ZXN0cyBhbmQgbWFyayB0aGVtIGFzIG1pc3NzcGVsbGVkLgorLy8gRXZlbiB0aG91Z2ggdGhp
cyBpcyBzdWZmaWNlbnQgZm9yIHdlYmtpdCB0ZXN0cywgdGhpcyBjbGFzcyBpcyBub3Qgc3VpdGFi
bGUKKy8vIGZvciBhbnkgb3RoZXIgdXNhZ2VzLgorY2xhc3MgTW9ja1NwZWxsQ2hlY2sgeworcHVi
bGljOgorICAgIE1vY2tTcGVsbENoZWNrKCk7CisgICAgfk1vY2tTcGVsbENoZWNrKCk7CisKKyAg
ICAvLyBDaGVja3MgdGhlIHNwZWxsaW5ncyBvZiB0aGUgc3BlY2lmaWVkIHRleHQuCisgICAgLy8g
VGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdGhlIHRleHQgY29uc2lzdHMgb2YgdmFsaWQg
d29yZHMsIGFuZAorICAgIC8vIHJldHVybnMgZmFsc2UgaWYgaXQgaW5jbHVkZXMgaW52YWxpZCB3
b3Jkcy4KKyAgICAvLyBXaGVuIHRoZSBnaXZlbiB0ZXh0IGluY2x1ZGVzIGludmFsaWQgd29yZHMs
IHRoaXMgZnVuY3Rpb24gc2V0cyB0aGUKKyAgICAvLyBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgaW52
YWxpZCB3b3JkIHRvIG1pc3NwZWxsZWRPZmZzZXQsIGFuZCB0aGUgbGVuZ3RoIG9mCisgICAgLy8g
dGhlIGZpcnN0IGludmFsaWQgd29yZCB0byBtaXNzcGVsbGVkTGVuZ3RoLCByZXNwZWN0aXZlbHku
CisgICAgLy8gRm9yIGV4YW1wbGUsIHdoZW4gdGhlIGdpdmVuIHRleHQgaXMgIiAgIHp6IHp6Iiwg
dGhpcyBmdW5jdGlvbiBzZXRzIDMgdG8KKyAgICAvLyBtaXNzcGVsbGVkT2Zmc2V0IGFuZCAyIHRv
IG1pc3NwZWxsZWRMZW5ndGgsIHJlc3BlY3RpdmVseS4KKyAgICBib29sIHNwZWxsQ2hlY2tXb3Jk
KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
aW50KiBtaXNzcGVsbGVkT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBtaXNz
cGVsbGVkTGVuZ3RoKTsKKworcHJpdmF0ZToKKyAgICAvLyBJbml0aWFsaXplIHRoZSBpbnRlcm5h
bCByZXNvdXJjZXMgaWYgd2UgbmVlZCB0byBpbml0aWFsaXplIGl0LgorICAgIC8vIEluaXRpYWxp
emluZyB0aGlzIG9iamVjdCBtYXkgdGFrZSBsb25nIHRpbWUuIFRvIHByZXZlbnQgZnJvbSBodXJ0
aW5nCisgICAgLy8gdGhlIHBlcmZvcm1hbmNlIG9mIHRlc3Rfc2hlbGwsIHdlIGluaXRpYWxpemUg
dGhpcyBvYmplY3Qgd2hlbgorICAgIC8vIFNwZWxsQ2hlY2tXb3JkKCkgaXMgY2FsbGVkIGZvciB0
aGUgZmlyc3QgdGltZS4KKyAgICAvLyBUbyBiZSBjb21wbGlhbnQgd2l0aCBTcGVsbENoZWNrOklu
aXRpYWxpemVJZk5lZWRlZCgpLCB0aGlzIGZ1bmN0aW9uCisgICAgLy8gcmV0dXJucyB0cnVlIGlm
IHRoaXMgb2JqZWN0IGlzIGRvd25sb2FkaW5nIGEgZGljdGlvbmFyeSwgb3RoZXJ3aXNlCisgICAg
Ly8gaXQgcmV0dXJucyBmYWxzZS4KKyAgICBib29sIGluaXRpYWxpemVJZk5lZWRlZCgpOworCisg
ICAgLy8gQSB0YWJsZSB0aGF0IGNvbnNpc3RzIG9mIG1pc3NwZWxsZWQgd29yZHMuCisgICAgSGFz
aE1hcDxXZWJDb3JlOjpTdHJpbmcsIGJvb2w+IG1fbWlzc3BlbGxlZFdvcmRzOworCisgICAgLy8g
QSBmbGFnIHJlcHJlc2VudGluZyB3aGV0aGVyIG9yIG5vdCB0aGlzIG9iamVjdCBpcyBpbml0aWFs
aXplZC4KKyAgICBib29sIG1faW5pdGlhbGl6ZWQ7Cit9OworCisjZW5kaWYgLy8gTW9ja1NwZWxs
Q2hlY2tfaApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwCmluZGV4IDMxN2RhMWUuLjk1YjFjN2UgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTQyOCw4ICs0
MjgsMTEgQEAgYm9vbCBXZWJWaWV3SG9zdDo6aGFuZGxlQ3VycmVudEtleWJvYXJkRXZlbnQoKQog
CiB2b2lkIFdlYlZpZXdIb3N0OjpzcGVsbENoZWNrKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50
JiBtaXNzcGVsbGVkT2Zmc2V0LCBpbnQmIG1pc3NwZWxsZWRMZW5ndGgpCiB7CisgICAgLy8gQ2hl
Y2sgdGhlIHNwZWxsaW5nIG9mIHRoZSBnaXZlbiB0ZXh0LgogI2lmIE9TKE1BQ19PU19YKQotICAg
IC8vIEZJWE1FOiBQb3J0IG1vY2tfc3BlbGxjay57Y2MsaH0KKyAgICAvLyBGSVhNRTogcmViYXNl
bGluZSBsYXlvdXQtdGVzdCByZXN1bHRzIG9mIFdpbmRvd3MgYW5kIExpbnV4IHNvIHdlCisgICAg
Ly8gY2FuIGVuYWJsZSB0aGlzIG1vY2sgc3BlbGxjaGVja2VyIG9uIHRoZW0uCisgICAgbV9zcGVs
bGNoZWNrLnNwZWxsQ2hlY2tXb3JkKHRleHQsICZtaXNzcGVsbGVkT2Zmc2V0LCAmbWlzc3BlbGxl
ZExlbmd0aCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggMzY4MGY0Zi4uZmQxZTBmNSAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBAIC0z
MSw2ICszMSw3IEBACiAjaWZuZGVmIFdlYlZpZXdIb3N0X2gKICNkZWZpbmUgV2ViVmlld0hvc3Rf
aAogCisjaW5jbHVkZSAiTW9ja1NwZWxsQ2hlY2suaCIKICNpbmNsdWRlICJUZXN0TmF2aWdhdGlv
bkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJwdWJsaWMvV2ViQ3Vyc29ySW5mby5oIgogI2luY2x1
ZGUgInB1YmxpYy9XZWJGcmFtZUNsaWVudC5oIgpAQCAtMjU2LDYgKzI1Nyw5IEBAIHByaXZhdGU6
CiAgICAgc3RkOjpzdHJpbmcgbV9lZGl0Q29tbWFuZE5hbWU7CiAgICAgc3RkOjpzdHJpbmcgbV9l
ZGl0Q29tbWFuZFZhbHVlOwogCisgICAgLy8gVGhlIG1vY2sgc3BlbGxjaGVja2VyIHVzZWQgaW4g
c3BlbGxDaGVjaygpLgorICAgIE1vY2tTcGVsbENoZWNrIG1fc3BlbGxjaGVjazsKKwogICAgIC8v
IFBhaW50aW5nLgogICAgIE93blB0cjxza2lhOjpQbGF0Zm9ybUNhbnZhcz4gbV9jYW52YXM7CiAg
ICAgV2ViS2l0OjpXZWJSZWN0IG1fcGFpbnRSZWN0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmlnLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9jb25maWcuaAppbmRleCAzYjhlZjU1Li42MDI5NTMyIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9jb25maWcuaAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9jb25maWcuaApAQCAtNDQsNCArNDQsMTEg
QEAKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCisvLyBKU19FWFBPUlREQVRBIGlzIG5l
ZWRlZCB0byBpbmx1Y2RlIHd0Zi9XVEZTdHJpbmcuaC4KKyNpZiBPUyhXSU5ET1dTKSAmJiAhQ09N
UElMRVIoR0NDKQorI2RlZmluZSBKU19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQor
I2Vsc2UKKyNkZWZpbmUgSlNfRVhQT1JUREFUQQorI2VuZGlmCisKICNlbmRpZiAvLyBjb25maWdf
aAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53938</attachid>
            <date>2010-04-21 03:35:01 -0700</date>
            <delta_ts>2010-04-21 07:43:19 -0700</delta_ts>
            <desc>Proposed patch (rev.3)</desc>
            <filename>bug-37910-20100421193459.patch</filename>
            <type>text/plain</type>
            <size>14226</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwMmZhZDI5Li4zMjExYTc4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDQt
MjEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtEUlQvQ2hyb21pdW1dIEltcG9ydCBNb2Nr
U3BlbGxDaGVjayBmcm9tIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNzkxMAorCisgICAgICAgIEltcG9ydCB3ZWJraXQvdG9vbHMvdGVz
dF9zaGVsbC9tb2NrX3NwZWxsY2hlY2sue2NjLGh9IHJldi4zNzI0MSBvZiBDaHJvbWl1bS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJl
ZS5neXA6CisgICAgICAgICAgQWRkIElDVSBleHBsaWNpdGx5IGJlY2F1c2UgV1RGU3RyaW5nLmgg
aW5jbHVkZXMgSUNVIGhlYWRlcnMuCisgICAgICAgICAgQWRkIE1vY2tTcGVsbENoZWNrLntjcHAs
aH0uCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suY3Bw
OiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVj
ay5oOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6c3BlbGxDaGVjayk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9jb25maWcuaDogRGVmaW5lIEpTX0VYUE9SVERBVEEsIHdoaWNoIGlzIHVz
ZWQKKyAgICAgICAgICBieSB3dGYvdGV4dC9BdG9taWNTdHJpbmcuaCBpbmNsdWRlZCBieSB3dGYv
dGV4dC9XVEZTdHJpbmcuaC4KKwogMjAxMC0wNC0yMCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBS
ZW5kZXJUcmVlLmd5cCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKaW5kZXggN2RhMDc3NC4uMzgzNGQ5OCAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5k
ZXJUcmVlLmd5cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCkBAIC03Niw2ICs3Niw3IEBACiAgICAgICAgICAgICAn
ZGVwZW5kZW5jaWVzJzogWwogICAgICAgICAgICAgICAgICc8KHdlYmtpdF9hcGlfZGlyKS9XZWJL
aXQuZ3lwOndlYmtpdCcsCiAgICAgICAgICAgICAgICAgJzwod2Via2l0X3RvcCkvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwL0phdmFTY3JpcHRDb3JlLmd5cDp3dGZfY29uZmlnJywK
KyAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9pY3UvaWN1
Lmd5cDppY3V1YycsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRf
cGFydHkvbnBhcGkvbnBhcGkuZ3lwOm5wYXBpJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1
bV9zcmNfZGlyKS9za2lhL3NraWEuZ3lwOnNraWEnLAogICAgICAgICAgICAgICAgICc8KGNocm9t
aXVtX3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRfc3Vw
cG9ydCcsCkBAIC0xMDYsNiArMTA3LDggQEAKICAgICAgICAgICAgICAgICAnLi4vY2hyb21pdW0v
RXZlbnRTZW5kZXIuaCcsCiAgICAgICAgICAgICAgICAgJy4uL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJy4uL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmgnLAorICAgICAgICAgICAgICAgICcuLi9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVj
ay5jcHAnLAorICAgICAgICAgICAgICAgICcuLi9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oJywK
ICAgICAgICAgICAgICAgICAnLi4vY2hyb21pdW0vUGxhaW5UZXh0Q29udHJvbGxlci5jcHAnLAog
ICAgICAgICAgICAgICAgICcuLi9jaHJvbWl1bS9QbGFpblRleHRDb250cm9sbGVyLmgnLAogICAg
ICAgICAgICAgICAgICcuLi9jaHJvbWl1bS9UZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXIuY3BwJywK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVs
bENoZWNrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVs
bENoZWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTcwY2FiCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9j
a1NwZWxsQ2hlY2suY3BwCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1vY2tTcGVsbENoZWNrLmgiCisKKyNpbmNsdWRlICJwdWJsaWMvV2ViU3RyaW5nLmgi
CisjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K01vY2tTcGVsbENoZWNrOjpNb2NrU3BlbGxDaGVjaygpCisgICAgOiBtX2luaXRpYWxpemVkKGZh
bHNlKSB7fQorCitNb2NrU3BlbGxDaGVjazo6fk1vY2tTcGVsbENoZWNrKCkge30KKworc3RhdGlj
IGJvb2wgaXNOb3RBU0NJSUFscGhhKFVDaGFyIGNoKSB7IHJldHVybiAhaXNBU0NJSUFscGhhKGNo
KTsgfQorCitib29sIE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZChjb25zdCBXZWJTdHJp
bmcmIHRleHQsIGludCogbWlzc3BlbGxlZE9mZnNldCwgaW50KiBtaXNzcGVsbGVkTGVuZ3RoKQor
eworICAgIEFTU0VSVChtaXNzcGVsbGVkT2Zmc2V0KTsKKyAgICBBU1NFUlQobWlzc3BlbGxlZExl
bmd0aCk7CisKKyAgICAvLyBJbml0aWFsaXplIHRoaXMgc3BlbGxjaGVja2VyLgorICAgIGluaXRp
YWxpemVJZk5lZWRlZCgpOworCisgICAgLy8gUmVzZXQgdGhlIHJlc3VsdCB2YWx1ZXMgYXMgb3Vy
IHNwZWxsY2hlY2tlciBkb2VzLgorICAgICptaXNzcGVsbGVkT2Zmc2V0ID0gMDsKKyAgICAqbWlz
c3BlbGxlZExlbmd0aCA9IDA7CisKKyAgICAvLyBDb252ZXJ0IHRvIGEgU3RyaW5nIGJlY2F1c2Ug
d2Ugc3RvcmUgU3RyaW5nIGluc3RhbmNlcyBpbgorICAgIC8vIG1fbWlzc3BlbGxlZFdvcmRzIGFu
ZCBXZWJTdHJpbmcgaGFzIG5vIGZpbmQoKS4KKyAgICBjb25zdCBTdHJpbmcgc3RyaW5nVGV4dCh0
ZXh0LmRhdGEoKSwgdGV4dC5sZW5ndGgoKSk7CisKKyAgICAvLyBFeHRyYWN0IHRoZSBmaXJzdCBw
b3NzaWJsZSBFbmdsaXNoIHdvcmQgZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nLgorICAgIC8vIFRoZSBn
aXZlbiBzdHJpbmcgbWF5IGluY2x1ZGUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgb3IgbnVtYmVycy4g
U28sIHdlCisgICAgLy8gc2hvdWxkIGZpbHRlciBvdXQgc3VjaCBjaGFyYWN0ZXJzIGJlZm9yZSBz
dGFydCBsb29raW5nIHVwIG91cgorICAgIC8vIG1pc3NwZWxsZWQtd29yZCB0YWJsZS4KKyAgICAv
LyAoVGhpcyBpcyBhIHNpbXBsZSB2ZXJzaW9uIG9mIG91ciBTcGVsbENoZWNrV29yZEl0ZXJhdG9y
IGNsYXNzLikKKyAgICAvLyBJZiB0aGUgZ2l2ZW4gc3RyaW5nIGRvZXNuJ3QgaW5jbHVkZSBhbnkg
QVNDSUkgY2hhcmFjdGVycywgd2UgY2FuIHRyZWF0IHRoZQorICAgIC8vIHN0cmluZyBhcyB2YWxp
ZCBvbmUuCisgICAgLy8gVW5mb3J0dW5hdGVseSwgVGhpcyBpbXBsZW1lbnRhdGlvbiBzcGxpdHMg
YSBjb250cmFjdGlvbiwgaS5lLiAiaXNuJ3QiIGlzCisgICAgLy8gc3BsaXQgaW50byB0d28gcGll
Y2VzICJpc24iIGFuZCAidCIuIFRoaXMgaXMgT0sgYmVjYXVzZSB3ZWJraXQgdGVzdHMKKyAgICAv
LyBkb24ndCBoYXZlIG1pc3NwZWxsZWQgY29udHJhY3Rpb25zLgorICAgIGludCB3b3JkT2Zmc2V0
ID0gc3RyaW5nVGV4dC5maW5kKGlzQVNDSUlBbHBoYSk7CisgICAgaWYgKHdvcmRPZmZzZXQgPT0g
LTEpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGludCB3b3JkRW5kID0gc3RyaW5nVGV4dC5m
aW5kKGlzTm90QVNDSUlBbHBoYSwgd29yZE9mZnNldCk7CisgICAgaW50IHdvcmRMZW5ndGggPSB3
b3JkRW5kID09IC0xID8gc3RyaW5nVGV4dC5sZW5ndGgoKSAtIHdvcmRPZmZzZXQgOiB3b3JkRW5k
IC0gd29yZE9mZnNldDsKKworICAgIC8vIExvb2sgdXAgb3VyIG1pc3NwZWxsZWQtd29yZCB0YWJs
ZSB0byBjaGVjayBpZiB0aGUgZXh0cmFjdGVkIHdvcmQgaXMgYQorICAgIC8vIGtub3duIG1pc3Nw
ZWxsZWQgd29yZCwgYW5kIHJldHVybiB0aGUgb2Zmc2V0IGFuZCB0aGUgbGVuZ3RoIG9mIHRoZQor
ICAgIC8vIGV4dHJhY3RlZCB3b3JkIGlmIHRoaXMgd29yZCBpcyBhIGtub3duIG1pc3NwZWxsZWQg
d29yZC4KKyAgICAvLyAoU2VlIHRoZSBjb21tZW50IGluIE1vY2tTcGVsbENoZWNrOjppbml0aWFs
aXplSWZOZWVkZWQoKSB3aHkgd2UgdXNlIGEKKyAgICAvLyBtaXNzcGVsbGVkLXdvcmQgdGFibGUu
KQorICAgIFN0cmluZyB3b3JkID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcod29yZE9mZnNldCwgd29y
ZExlbmd0aCk7CisgICAgaWYgKCFtX21pc3NwZWxsZWRXb3Jkcy5jb250YWlucyh3b3JkKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAqbWlzc3BlbGxlZE9mZnNldCA9IHdvcmRPZmZzZXQ7
CisgICAgKm1pc3NwZWxsZWRMZW5ndGggPSB3b3JkTGVuZ3RoOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBNb2NrU3BlbGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKCkKK3sKKyAgICAv
LyBFeGl0IGlmIHdlIGhhdmUgYWxyZWFkeSBpbml0aWFsaXplZCB0aGlzIG9iamVjdC4KKyAgICBp
ZiAobV9pbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQ3JlYXRl
IGEgdGFibGUgdGhhdCBjb25zaXN0cyBvZiBtaXNzcGVsbGVkIHdvcmRzIHVzZWQgaW4gV2ViS2l0
IGxheW91dAorICAgIC8vIHRlc3RzLgorICAgIC8vIFNpbmNlIFdlYktpdCBsYXlvdXQgdGVzdHMg
ZG9uJ3QgaGF2ZSBzbyBtYW55IG1pc3NwZWxsZWQgd29yZHMgYXMKKyAgICAvLyB3ZWxsLXNwZWxs
ZWQgd29yZHMsIGl0IGlzIGVhc2llciB0byBjb21wYXJlIHRoZSBnaXZlbiB3b3JkIHdpdGggbWlz
c3BlbGxlZAorICAgIC8vIG9uZXMgdGhhbiB0byBjb21wYXJlIHdpdGggd2VsbC1zcGVsbGVkIG9u
ZXMuCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIG1pc3NwZWxsZWRXb3Jkc1tdID0geworICAgICAg
ICAvLyBUaGVzZSB3b3JkcyBhcmUga25vd24gbWlzc3BlbGxlZCB3b3JkcyBpbiB3ZWJraXQgdGVz
dHMuCisgICAgICAgIC8vIElmIHRoZXJlIGFyZSBvdGhlciBtaXNzcGVsbGVkIHdvcmRzIGluIHdl
YmtpdCB0ZXN0cywgcGxlYXNlIGFkZCB0aGVtIGluCisgICAgICAgIC8vIHRoaXMgYXJyYXkuCisg
ICAgICAgICJmb28iLAorICAgICAgICAiRm9vIiwKKyAgICAgICAgImJheiIsCisgICAgICAgICJm
byIsCisgICAgICAgICJMaWJlcnR5RiIsCisgICAgICAgICJjaGVsbG8iLAorICAgICAgICAieHh4
dGVzdHh4eCIsCisgICAgICAgICJYWHh4eCIsCisgICAgICAgICJUZXh0eCIsCisgICAgICAgICJi
bG9ja3F1b3RlZCIsCisgICAgICAgICJhc2QiLAorICAgICAgICAiTG9yZW0iLAorICAgICAgICAi
TnVuYyIsCisgICAgICAgICJDdXJhYml0dXIiLAorICAgICAgICAiZXUiLAorICAgICAgICAiYWRs
aiIsCisgICAgICAgICJhZGFhc2oiLAorICAgICAgICAic2RrbGoiLAorICAgICAgICAiamxrZHMi
LAorICAgICAgICAianNhYWRhIiwKKyAgICAgICAgImpsZGEiLAorICAgICAgICAienoiLAorICAg
ICAgICAiY29udGVudEVkaXRhYmxlIiwKKyAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB3b3JkcyBh
cmUgdXNlZCBieSB1bml0IHRlc3RzLgorICAgICAgICAiaWZtbXAiLAorICAgICAgICAicXdlcnR5
dWlvcGFzZCIsCisgICAgICAgICJxd2VydHl1aW9wYXNkZiIsCisgICAgfTsKKworICAgIG1fbWlz
c3BlbGxlZFdvcmRzLmNsZWFyKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNp
emUobWlzc3BlbGxlZFdvcmRzKTsgKytpKQorICAgICAgICBtX21pc3NwZWxsZWRXb3Jkcy5hZGQo
U3RyaW5nOjpmcm9tVVRGOChtaXNzcGVsbGVkV29yZHNbaV0pLCBmYWxzZSk7CisKKyAgICAvLyBN
YXJrIGFzIGluaXRpYWxpemVkIHRvIHByZXZlbnQgdGhpcyBvYmplY3QgZnJvbSBiZWluZyBpbml0
aWFsaXplZCB0d2ljZQorICAgIC8vIG9yIG1vcmUuCisgICAgbV9pbml0aWFsaXplZCA9IHRydWU7
CisKKyAgICAvLyBTaW5jZSB0aGlzIE1vY2tTcGVsbENoZWNrIGNsYXNzIGRvZXNuJ3QgZG93bmxv
YWQgZGljdGlvbmFyaWVzLCB0aGlzCisgICAgLy8gZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgZmFs
c2UuCisgICAgcmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOGMyYmE5MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmgKQEAgLTAsMCArMSw4MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTW9ja1NwZWxsQ2hlY2tfaAorI2RlZmluZSBNb2NrU3BlbGxDaGVja19oCisKKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBX
ZWJTdHJpbmc7Cit9CisKKy8vIEEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBhIHNwZWxsLWNoZWNr
ZXIgdXNlZCBmb3IgV2ViS2l0IHRlc3RzLgorLy8gVGhpcyBjbGFzcyBvbmx5IGltcGxlbWVudHMg
dGhlIG1pbmltYWwgZnVuY3Rpb25hcml0aWVzIHJlcXVpcmVkIGJ5IFdlYktpdAorLy8gdGVzdHMs
IGkuZS4gdGhpcyBjbGFzcyBqdXN0IGNvbXBhcmVzIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBrbm93
biBtaXNzcGVsbGVkCisvLyB3b3JkcyBpbiB3ZWJraXQgdGVzdHMgYW5kIG1hcmsgdGhlbSBhcyBt
aXNzc3BlbGxlZC4KKy8vIEV2ZW4gdGhvdWdoIHRoaXMgaXMgc3VmZmljZW50IGZvciB3ZWJraXQg
dGVzdHMsIHRoaXMgY2xhc3MgaXMgbm90IHN1aXRhYmxlCisvLyBmb3IgYW55IG90aGVyIHVzYWdl
cy4KK2NsYXNzIE1vY2tTcGVsbENoZWNrIHsKK3B1YmxpYzoKKyAgICBNb2NrU3BlbGxDaGVjaygp
OworICAgIH5Nb2NrU3BlbGxDaGVjaygpOworCisgICAgLy8gQ2hlY2tzIHRoZSBzcGVsbGluZ3Mg
b2YgdGhlIHNwZWNpZmllZCB0ZXh0LgorICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVl
IGlmIHRoZSB0ZXh0IGNvbnNpc3RzIG9mIHZhbGlkIHdvcmRzLCBhbmQKKyAgICAvLyByZXR1cm5z
IGZhbHNlIGlmIGl0IGluY2x1ZGVzIGludmFsaWQgd29yZHMuCisgICAgLy8gV2hlbiB0aGUgZ2l2
ZW4gdGV4dCBpbmNsdWRlcyBpbnZhbGlkIHdvcmRzLCB0aGlzIGZ1bmN0aW9uIHNldHMgdGhlCisg
ICAgLy8gcG9zaXRpb24gb2YgdGhlIGZpcnN0IGludmFsaWQgd29yZCB0byBtaXNzcGVsbGVkT2Zm
c2V0LCBhbmQgdGhlIGxlbmd0aCBvZgorICAgIC8vIHRoZSBmaXJzdCBpbnZhbGlkIHdvcmQgdG8g
bWlzc3BlbGxlZExlbmd0aCwgcmVzcGVjdGl2ZWx5LgorICAgIC8vIEZvciBleGFtcGxlLCB3aGVu
IHRoZSBnaXZlbiB0ZXh0IGlzICIgICB6eiB6eiIsIHRoaXMgZnVuY3Rpb24gc2V0cyAzIHRvCisg
ICAgLy8gbWlzc3BlbGxlZE9mZnNldCBhbmQgMiB0byBtaXNzcGVsbGVkTGVuZ3RoLCByZXNwZWN0
aXZlbHkuCisgICAgYm9vbCBzcGVsbENoZWNrV29yZChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYg
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCogbWlzc3BlbGxlZE9mZnNldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGludCogbWlzc3BlbGxlZExlbmd0aCk7CisKK3ByaXZhdGU6
CisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgaW50ZXJuYWwgcmVzb3VyY2VzIGlmIHdlIG5lZWQgdG8g
aW5pdGlhbGl6ZSBpdC4KKyAgICAvLyBJbml0aWFsaXppbmcgdGhpcyBvYmplY3QgbWF5IHRha2Ug
bG9uZyB0aW1lLiBUbyBwcmV2ZW50IGZyb20gaHVydGluZworICAgIC8vIHRoZSBwZXJmb3JtYW5j
ZSBvZiB0ZXN0X3NoZWxsLCB3ZSBpbml0aWFsaXplIHRoaXMgb2JqZWN0IHdoZW4KKyAgICAvLyBT
cGVsbENoZWNrV29yZCgpIGlzIGNhbGxlZCBmb3IgdGhlIGZpcnN0IHRpbWUuCisgICAgLy8gVG8g
YmUgY29tcGxpYW50IHdpdGggU3BlbGxDaGVjazpJbml0aWFsaXplSWZOZWVkZWQoKSwgdGhpcyBm
dW5jdGlvbgorICAgIC8vIHJldHVybnMgdHJ1ZSBpZiB0aGlzIG9iamVjdCBpcyBkb3dubG9hZGlu
ZyBhIGRpY3Rpb25hcnksIG90aGVyd2lzZQorICAgIC8vIGl0IHJldHVybnMgZmFsc2UuCisgICAg
Ym9vbCBpbml0aWFsaXplSWZOZWVkZWQoKTsKKworICAgIC8vIEEgdGFibGUgdGhhdCBjb25zaXN0
cyBvZiBtaXNzcGVsbGVkIHdvcmRzLgorICAgIEhhc2hNYXA8V2ViQ29yZTo6U3RyaW5nLCBib29s
PiBtX21pc3NwZWxsZWRXb3JkczsKKworICAgIC8vIEEgZmxhZyByZXByZXNlbnRpbmcgd2hldGhl
ciBvciBub3QgdGhpcyBvYmplY3QgaXMgaW5pdGlhbGl6ZWQuCisgICAgYm9vbCBtX2luaXRpYWxp
emVkOworfTsKKworI2VuZGlmIC8vIE1vY2tTcGVsbENoZWNrX2gKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCAzMTdkYTFl
Li45NWIxYzdlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwCkBAIC00MjgsOCArNDI4LDExIEBAIGJvb2wgV2ViVmlld0hvc3Q6
OmhhbmRsZUN1cnJlbnRLZXlib2FyZEV2ZW50KCkKIAogdm9pZCBXZWJWaWV3SG9zdDo6c3BlbGxD
aGVjayhjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCYgbWlzc3BlbGxlZE9mZnNldCwgaW50JiBt
aXNzcGVsbGVkTGVuZ3RoKQogeworICAgIC8vIENoZWNrIHRoZSBzcGVsbGluZyBvZiB0aGUgZ2l2
ZW4gdGV4dC4KICNpZiBPUyhNQUNfT1NfWCkKLSAgICAvLyBGSVhNRTogUG9ydCBtb2NrX3NwZWxs
Y2sue2NjLGh9CisgICAgLy8gRklYTUU6IHJlYmFzZWxpbmUgbGF5b3V0LXRlc3QgcmVzdWx0cyBv
ZiBXaW5kb3dzIGFuZCBMaW51eCBzbyB3ZQorICAgIC8vIGNhbiBlbmFibGUgdGhpcyBtb2NrIHNw
ZWxsY2hlY2tlciBvbiB0aGVtLgorICAgIG1fc3BlbGxjaGVjay5zcGVsbENoZWNrV29yZCh0ZXh0
LCAmbWlzc3BlbGxlZE9mZnNldCwgJm1pc3NwZWxsZWRMZW5ndGgpOwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmlu
ZGV4IDM2ODBmNGYuLmZkMWUwZjUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMzEsNiArMzEsNyBAQAogI2lmbmRlZiBXZWJW
aWV3SG9zdF9oCiAjZGVmaW5lIFdlYlZpZXdIb3N0X2gKIAorI2luY2x1ZGUgIk1vY2tTcGVsbENo
ZWNrLmgiCiAjaW5jbHVkZSAiVGVzdE5hdmlnYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
cHVibGljL1dlYkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJwdWJsaWMvV2ViRnJhbWVDbGllbnQu
aCIKQEAgLTI1Niw2ICsyNTcsOSBAQCBwcml2YXRlOgogICAgIHN0ZDo6c3RyaW5nIG1fZWRpdENv
bW1hbmROYW1lOwogICAgIHN0ZDo6c3RyaW5nIG1fZWRpdENvbW1hbmRWYWx1ZTsKIAorICAgIC8v
IFRoZSBtb2NrIHNwZWxsY2hlY2tlciB1c2VkIGluIHNwZWxsQ2hlY2soKS4KKyAgICBNb2NrU3Bl
bGxDaGVjayBtX3NwZWxsY2hlY2s7CisKICAgICAvLyBQYWludGluZy4KICAgICBPd25QdHI8c2tp
YTo6UGxhdGZvcm1DYW52YXM+IG1fY2FudmFzOwogICAgIFdlYktpdDo6V2ViUmVjdCBtX3BhaW50
UmVjdDsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2Nv
bmZpZy5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vY29uZmlnLmgKaW5k
ZXggM2I4ZWY1NS4uNjAyOTUzMiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vY29uZmlnLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vY29uZmlnLmgKQEAgLTQ0LDQgKzQ0LDExIEBACiAKICNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KIAorLy8gSlNfRVhQT1JUREFUQSBpcyBuZWVkZWQgdG8gaW5sdWNkZSB3dGYvV1RGU3Ry
aW5nLmguCisjaWYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdDQykKKyNkZWZpbmUgSlNfRVhQ
T1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyNlbHNlCisjZGVmaW5lIEpTX0VYUE9SVERB
VEEKKyNlbmRpZgorCiAjZW5kaWYgLy8gY29uZmlnX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>