<?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>48886</bug_id>
          
          <creation_ts>2010-11-02 16:31:48 -0700</creation_ts>
          <short_desc>Avoid CFAttributedString creation in ComplexTextController</short_desc>
          <delta_ts>2010-11-08 20:55:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Text</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.6</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="Ned Holbrook">ned</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ned</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>303780</commentid>
    <comment_count>0</comment_count>
    <who name="Ned Holbrook">ned</who>
    <bug_when>2010-11-02 16:31:48 -0700</bug_when>
    <thetext>Adopt UniChar provider SPI for ~20% speedup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303840</commentid>
    <comment_count>1</comment_count>
      <attachid>72781</attachid>
    <who name="Ned Holbrook">ned</who>
    <bug_when>2010-11-02 18:25:55 -0700</bug_when>
    <thetext>Created attachment 72781
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303883</commentid>
    <comment_count>2</comment_count>
      <attachid>72781</attachid>
    <who name="">mitz</who>
    <bug_when>2010-11-02 21:15:24 -0700</bug_when>
    <thetext>Comment on attachment 72781
proposed patch

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

r- because this will break the Snow Leopard build. Also, a couple of minor comments.

&gt; WebCore/WebCore.exp.in:1161
&gt; +_wkCreateCTTypesetterWithUniCharProviderAndOptions

This will break the Leopard and Snow Leopard builds, because this symbols is not defined on those platforms. You should make a new #if !defined(BUILDING_ON_LEOPARD) &amp;&amp; !defined(BUILDING_ON_SNOW_LEOPARD) section further down and put this export in that section. Then the export file generator will omit it from the export list for those platforms.

&gt; WebCore/platform/graphics/mac/ComplexTextControllerCoreText.cpp:119
&gt; +    return &amp;info-&gt;cp[stringIndex];

I would write this as info-&gt;cp + stringIndex but either way is fine.

&gt; WebCore/platform/graphics/mac/ComplexTextControllerCoreText.cpp:145
&gt; +        ProviderInfo info = {cp, length, fontData-&gt;getCFStringAttributes(m_font.typesettingFeatures())};

WebKit style is to put spaces inside the braces (see the initialization of rtlOptionValues[] above). Another thing you could do is define a constructor for ProviderInfo.

&gt; WebCore/platform/graphics/mac/ComplexTextControllerCoreText.cpp:155
&gt; +        ProviderInfo info = {cp, length, fontData-&gt;getCFStringAttributes(m_font.typesettingFeatures())};

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303901</commentid>
    <comment_count>3</comment_count>
      <attachid>72790</attachid>
    <who name="Ned Holbrook">ned</who>
    <bug_when>2010-11-02 22:57:39 -0700</bug_when>
    <thetext>Created attachment 72790
changes per review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304943</commentid>
    <comment_count>4</comment_count>
      <attachid>72790</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-04 15:46:37 -0700</bug_when>
    <thetext>Comment on attachment 72790
changes per review.

I&apos;m not an expert here, but this looks reasonable to me and you seem to have addressed the earlier review comments.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306526</commentid>
    <comment_count>5</comment_count>
      <attachid>72790</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-08 17:54:13 -0800</bug_when>
    <thetext>Comment on attachment 72790
changes per review.

Clearing flags on attachment: 72790

Committed r71590: &lt;http://trac.webkit.org/changeset/71590&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306527</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-08 17:54:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306579</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-08 19:44:29 -0800</bug_when>
    <thetext>This broke Chromium Mac builds:
/b/build/slave/webkit-rel-mac-webkit-org/build/src/third_party/WebKit/WebCore/WebCore.gyp/../platform/graphics/mac/ComplexTextControllerCoreText.cpp: In function &apos;const UniChar* WebCore::provideStringAndAttributes(CFIndex, CFIndex*, const __CFDictionary**, void*)&apos;:
/b/build/slave/webkit-rel-mac-webkit-org/build/src/third_party/WebKit/WebCore/WebCore.gyp/../platform/graphics/mac/ComplexTextControllerCoreText.cpp:114: warning: comparison between signed and unsigned integer expressions

I fixed the warning in:
http://trac.webkit.org/changeset/71598

Please verify my fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306596</commentid>
    <comment_count>8</comment_count>
    <who name="Ned Holbrook">ned</who>
    <bug_when>2010-11-08 20:55:14 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Please verify my fix.

Looks fine to me, thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72781</attachid>
            <date>2010-11-02 18:25:55 -0700</date>
            <delta_ts>2010-11-02 22:57:39 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>provider-patch.txt</filename>
            <type>text/plain</type>
            <size>8536</size>
            <attacher name="Ned Holbrook">ned</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTE4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMTEtMDIgIE5lZCBIb2xicm9vayAgPG5ob2xicm9va0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QXZvaWQgQ0ZBdHRyaWJ1dGVkU3RyaW5nIGNyZWF0aW9uIGluIENvbXBsZXhUZXh0Q29udHJvbGxl
ciBieSBhZG9wdGluZyBVbmlDaGFyIHByb3ZpZGVyIFNQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODg2CisKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvdmlkZVN0cmluZ0FuZEF0dHJp
YnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0
Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVyc0NvcmVUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9X
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tOgorCiAyMDEwLTExLTAxICBaaGVueWFvIE1vICA8em1v
QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCShyZXZpc2lvbiA3MTAwOCkKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTExNTcsNiArMTE1Nyw4IEBAIF93a0NHQ29udGV4dEdldFNob3VsZFNtb290
aEZvbnRzCiBfd2tDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lCiBfd2tDb3B5Q09OTkVD
VFByb3h5UmVzcG9uc2UKIF93a0NvcHlOU1VSTFJlc3BvbnNlU3RhdHVzTGluZQorX3drQ3JlYXRl
Q1RMaW5lV2l0aFVuaUNoYXJQcm92aWRlcgorX3drQ3JlYXRlQ1RUeXBlc2V0dGVyV2l0aFVuaUNo
YXJQcm92aWRlckFuZE9wdGlvbnMKIF93a0NyZWF0ZUN1c3RvbUNGUmVhZFN0cmVhbQogX3drQ3Jl
YXRlTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eQogX3drQ3JlYXRlVVJMTlBhc3RlYm9hcmRG
bGF2b3JUeXBlTmFtZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxl
eFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcAkocmV2aXNp
b24gNzEwMDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXJDb3JlVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbXBsZXhUZXh0Q29udHJvbGxlci5oIgor
I2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAogI2lmIFVTRShDT1JFX1RFWFQp
CiAKQEAgLTEwMSw2ICsxMDIsMjMgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBs
ZXhUZXh0UgogICAgIG1fYWR2YW5jZXMgPSBtX2FkdmFuY2VzVmVjdG9yLmRhdGEoKTsKIH0KIAor
c3RydWN0IFByb3ZpZGVySW5mbyB7CisgICAgY29uc3QgVUNoYXIqIGNwOworICAgIHVuc2lnbmVk
IGxlbmd0aDsKKyAgICBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlczsKK307CisKK3N0YXRpYyBj
b25zdCBVbmlDaGFyKiBwcm92aWRlU3RyaW5nQW5kQXR0cmlidXRlcyhDRkluZGV4IHN0cmluZ0lu
ZGV4LCBDRkluZGV4KiBjaGFyQ291bnQsIENGRGljdGlvbmFyeVJlZiogYXR0cmlidXRlcywgdm9p
ZCogcmVmQ29uKQoreworICAgIFByb3ZpZGVySW5mbyogaW5mbyA9IHN0YXRpY19jYXN0PHN0cnVj
dCBQcm92aWRlckluZm8qPihyZWZDb24pOworICAgIGlmIChzdHJpbmdJbmRleCA+PSBpbmZvLT5s
ZW5ndGgpCisgICAgICAgIHJldHVybiAwOworCisgICAgKmNoYXJDb3VudCA9IGluZm8tPmxlbmd0
aCAtIHN0cmluZ0luZGV4OworICAgICphdHRyaWJ1dGVzID0gaW5mby0+YXR0cmlidXRlczsKKyAg
ICByZXR1cm4gJmluZm8tPmNwW3N0cmluZ0luZGV4XTsKK30KKwogdm9pZCBDb21wbGV4VGV4dENv
bnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzQ29yZVRleHQoY29u
c3QgVUNoYXIqIGNwLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBj
b25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGEpCiB7CiAgICAgaWYgKCFmb250RGF0YSkgewpA
QCAtMTEyLDEwICsxMzAsNiBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENv
bXBsCiAgICAgaWYgKG1fZmFsbGJhY2tGb250cyAmJiBmb250RGF0YSAhPSBtX2ZvbnQucHJpbWFy
eUZvbnQoKSkKICAgICAgICAgbV9mYWxsYmFja0ZvbnRzLT5hZGQoZm9udERhdGEpOwogCi0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRo
Q2hhcmFjdGVyc05vQ29weShOVUxMLCBjcCwgbGVuZ3RoLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0K
LSAgICBSZXRhaW5QdHI8Q0ZBdHRyaWJ1dGVkU3RyaW5nUmVmPiBhdHRyaWJ1dGVkU3RyaW5nKEFk
b3B0Q0YsIENGQXR0cmlidXRlZFN0cmluZ0NyZWF0ZShOVUxMLCBzdHJpbmcuZ2V0KCksIGZvbnRE
YXRhLT5nZXRDRlN0cmluZ0F0dHJpYnV0ZXMobV9mb250LnR5cGVzZXR0aW5nRmVhdHVyZXMoKSkp
KTsKLQogICAgIFJldGFpblB0cjxDVExpbmVSZWY+IGxpbmU7CiAKICAgICBpZiAoIW1fbWF5VXNl
TmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24gfHwgbV9ydW4uZGlyZWN0aW9uYWxPdmVycmlkZSgpKSB7
CkBAIC0xMjYsMTEgKzE0MCwyMiBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVj
dENvbXBsCiAgICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBydGxPcHRpb25WYWx1ZXNbXSA9IHsg
Q0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU2hvcnRUeXBlLCAm
cnRsRm9yY2VkRW1iZWRkaW5nTGV2ZWxWYWx1ZSkgfTsKICAgICAgICAgc3RhdGljIENGRGljdGlv
bmFyeVJlZiBsdHJUeXBlc2V0dGVyT3B0aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBsdHJPcHRpb25WYWx1ZXMsIHNpemVvZihvcHRpb25L
ZXlzKSAvIHNpemVvZigqb3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtleUNh
bGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwogICAgICAgICBzdGF0
aWMgQ0ZEaWN0aW9uYXJ5UmVmIHJ0bFR5cGVzZXR0ZXJPcHRpb25zID0gQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9wdGlvbktleXMsIHJ0bE9wdGlvblZhbHVlcywgc2l6
ZW9mKG9wdGlvbktleXMpIC8gc2l6ZW9mKCpvcHRpb25LZXlzKSwgJmtDRkNvcHlTdHJpbmdEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisK
KyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQorICAgICAgICBQ
cm92aWRlckluZm8gaW5mbyA9IHtjcCwgbGVuZ3RoLCBmb250RGF0YS0+Z2V0Q0ZTdHJpbmdBdHRy
aWJ1dGVzKG1fZm9udC50eXBlc2V0dGluZ0ZlYXR1cmVzKCkpfTsKKyAgICAgICAgUmV0YWluUHRy
PENUVHlwZXNldHRlclJlZj4gdHlwZXNldHRlcihBZG9wdENGLCB3a0NyZWF0ZUNUVHlwZXNldHRl
cldpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zKCZwcm92aWRlU3RyaW5nQW5kQXR0cmlidXRl
cywgMCwgJmluZm8sIG1fcnVuLmx0cigpID8gbHRyVHlwZXNldHRlck9wdGlvbnMgOiBydGxUeXBl
c2V0dGVyT3B0aW9ucykpOworI2Vsc2UKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBz
dHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVyc05vQ29weShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBjcCwgbGVuZ3RoLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgICAgIFJl
dGFpblB0cjxDRkF0dHJpYnV0ZWRTdHJpbmdSZWY+IGF0dHJpYnV0ZWRTdHJpbmcoQWRvcHRDRiwg
Q0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZy5nZXQo
KSwgZm9udERhdGEtPmdldENGU3RyaW5nQXR0cmlidXRlcyhtX2ZvbnQudHlwZXNldHRpbmdGZWF0
dXJlcygpKSkpOwogICAgICAgICBSZXRhaW5QdHI8Q1RUeXBlc2V0dGVyUmVmPiB0eXBlc2V0dGVy
KEFkb3B0Q0YsIENUVHlwZXNldHRlckNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nQW5kT3B0aW9u
cyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgpLCBtX3J1bi5sdHIoKSA/IGx0clR5cGVzZXR0ZXJPcHRp
b25zIDogcnRsVHlwZXNldHRlck9wdGlvbnMpKTsKKyNlbmRpZgogCiAgICAgICAgIGxpbmUuYWRv
cHRDRihDVFR5cGVzZXR0ZXJDcmVhdGVMaW5lKHR5cGVzZXR0ZXIuZ2V0KCksIENGUmFuZ2VNYWtl
KDAsIDApKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGxpbmUuYWRvcHRDRihDVExpbmVDcmVhdGVX
aXRoQXR0cmlidXRlZFN0cmluZyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgpKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgUHJvdmlkZXJJbmZvIGluZm8gPSB7Y3AsIGxlbmd0aCwgZm9udERhdGEtPmdl
dENGU3RyaW5nQXR0cmlidXRlcyhtX2ZvbnQudHlwZXNldHRpbmdGZWF0dXJlcygpKX07CisKKyAg
ICAgICAgbGluZS5hZG9wdENGKHdrQ3JlYXRlQ1RMaW5lV2l0aFVuaUNoYXJQcm92aWRlcigmcHJv
dmlkZVN0cmluZ0FuZEF0dHJpYnV0ZXMsIDAsICZpbmZvKSk7CisgICAgfQogCiAgICAgQ0ZBcnJh
eVJlZiBydW5BcnJheSA9IENUTGluZUdldEdseXBoUnVucyhsaW5lLmdldCgpKTsKIApJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAkocmV2aXNp
b24gNzEwMDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw2ICsxNzYsMTEgQEAgZXh0ZXJuIHZvaWQqIHdrR2V0
SHlwaGVuYXRpb25Mb2NhdGlvbkJlZgogZXh0ZXJuIENGSW5kZXggKCp3a0dldEh5cGhlbmF0aW9u
TG9jYXRpb25CZWZvcmVJbmRleCkoQ0ZTdHJpbmdSZWYgc3RyaW5nLCBDRkluZGV4IGluZGV4KTsK
ICNlbmRpZgogCitleHRlcm4gQ1RMaW5lUmVmICgqd2tDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclBy
b3ZpZGVyKShjb25zdCBVbmlDaGFyKiAoKnByb3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENG
SW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZv
aWQgKCpkaXNwb3NlKShjb25zdCBVbmlDaGFyKiBjaGFycywgdm9pZCopLCB2b2lkKik7CisjaWYg
IWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BB
UkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKK2V4dGVybiBDVFR5cGVz
ZXR0ZXJSZWYgKCp3a0NyZWF0ZUNUVHlwZXNldHRlcldpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRp
b25zKShjb25zdCBVbmlDaGFyKiAoKnByb3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENGSW5k
ZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZvaWQg
KCpkaXNwb3NlKShjb25zdCBVbmlDaGFyKiBjaGFycywgdm9pZCopLCB2b2lkKiwgQ0ZEaWN0aW9u
YXJ5UmVmIG9wdGlvbnMpOworI2VuZGlmCisKIH0KIAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDcxMDA4
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTE4LDMgKzExOCw4IEBAIHZvaWQqIHdrR2V0SHlwaGVuYXRpb25Mb2Nh
dGlvbkJlZm9yZUluZGUKICNlbHNlCiBDRkluZGV4ICgqd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9u
QmVmb3JlSW5kZXgpKENGU3RyaW5nUmVmIHN0cmluZywgQ0ZJbmRleCBpbmRleCk7CiAjZW5kaWYK
KworQ1RMaW5lUmVmICgqd2tDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclByb3ZpZGVyKShjb25zdCBV
bmlDaGFyKiAoKnByb3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENGSW5kZXgqIGNoYXJDb3Vu
dCwgQ0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZvaWQgKCpkaXNwb3NlKShj
b25zdCBVbmlDaGFyKiBjaGFycywgdm9pZCopLCB2b2lkKik7CisjaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKK0NUVHlwZXNldHRlclJlZiAoKndrQ3JlYXRlQ1RU
eXBlc2V0dGVyV2l0aFVuaUNoYXJQcm92aWRlckFuZE9wdGlvbnMpKGNvbnN0IFVuaUNoYXIqICgq
cHJvdmlkZSkoQ0ZJbmRleCBzdHJpbmdJbmRleCwgQ0ZJbmRleCogY2hhckNvdW50LCBDRkRpY3Rp
b25hcnlSZWYqIGF0dHJpYnV0ZXMsIHZvaWQqKSwgdm9pZCAoKmRpc3Bvc2UpKGNvbnN0IFVuaUNo
YXIqIGNoYXJzLCB2b2lkKiksIHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyk7CisjZW5k
aWYKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3MTE4NSkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEtMDIgIE5lZCBIb2xicm9vayAgPG5o
b2xicm9va0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXZvaWQgQ0ZBdHRyaWJ1dGVkU3RyaW5nIGNyZWF0aW9uIGluIENvbXBsZXhU
ZXh0Q29udHJvbGxlciBieSBhZG9wdGluZyBVbmlDaGFyIHByb3ZpZGVyIFNQSS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODg2CisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2Vi
Q29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTAtMTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5k
ZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1t
CShyZXZpc2lvbiA3MTAwOCkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVt
SW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNSArMTE4LDEwIEBAIHZvaWQgSW5p
dFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKEdldEh5cGhlbmF0aW9uTG9j
YXRpb25CZWZvcmVJbmRleCk7CiAjZW5kaWYKIAorICAgIElOSVQoQ3JlYXRlQ1RMaW5lV2l0aFVu
aUNoYXJQcm92aWRlcik7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKKyAgICBJTklUKENyZWF0ZUNUVHlwZXNldHRlcldpdGhVbmlDaGFyUHJvdmlkZXJBbmRP
cHRpb25zKTsKKyNlbmRpZgorCiAgICAgZGlkSW5pdCA9IHRydWU7CiB9Cg==
</data>
<flag name="review"
          id="63097"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72790</attachid>
            <date>2010-11-02 22:57:39 -0700</date>
            <delta_ts>2010-11-08 17:54:13 -0800</delta_ts>
            <desc>changes per review.</desc>
            <filename>provider-patch.txt</filename>
            <type>text/plain</type>
            <size>8821</size>
            <attacher name="Ned Holbrook">ned</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTE4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMTEtMDIgIE5lZCBIb2xicm9vayAgPG5ob2xicm9va0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QXZvaWQgQ0ZBdHRyaWJ1dGVkU3RyaW5nIGNyZWF0aW9uIGluIENvbXBsZXhUZXh0Q29udHJvbGxl
ciBieSBhZG9wdGluZyBVbmlDaGFyIHByb3ZpZGVyIFNQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODg2CisKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvdmlkZVN0cmluZ0FuZEF0dHJp
YnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0
Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVyc0NvcmVUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9X
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tOgorCiAyMDEwLTExLTAxICBaaGVueWFvIE1vICA8em1v
QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCShyZXZpc2lvbiA3MTAwOCkKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTExNTcsNiArMTE1Nyw3IEBAIF93a0NHQ29udGV4dEdldFNob3VsZFNtb290
aEZvbnRzCiBfd2tDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lCiBfd2tDb3B5Q09OTkVD
VFByb3h5UmVzcG9uc2UKIF93a0NvcHlOU1VSTFJlc3BvbnNlU3RhdHVzTGluZQorX3drQ3JlYXRl
Q1RMaW5lV2l0aFVuaUNoYXJQcm92aWRlcgogX3drQ3JlYXRlQ3VzdG9tQ0ZSZWFkU3RyZWFtCiBf
d2tDcmVhdGVOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVByb3h5CiBfd2tDcmVhdGVVUkxOUGFzdGVi
b2FyZEZsYXZvclR5cGVOYW1lCkBAIC0xMjEyLDYgKzEyMTMsMTAgQEAgX3drU2lnbmFsQ0ZSZWFk
U3RyZWFtRW5kCiBfd2tTaWduYWxDRlJlYWRTdHJlYW1FcnJvcgogX3drU2lnbmFsQ0ZSZWFkU3Ry
ZWFtSGFzQnl0ZXMKIAorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BB
UkQpCitfd2tDcmVhdGVDVFR5cGVzZXR0ZXJXaXRoVW5pQ2hhclByb3ZpZGVyQW5kT3B0aW9ucwor
I2VuZGlmCisKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5HKQogX1dlYkNvcmVIYXMzRFJlbmRlcmlu
ZwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwCShyZXZpc2lvbiA3
MTAwOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJv
bGxlckNvcmVUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29tcGxleFRleHRDb250cm9sbGVyLmgiCisjaW5j
bHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCiAjaWYgVVNFKENPUkVfVEVYVCkKIApA
QCAtMTAxLDYgKzEwMiwyMyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRl
eHRSCiAgICAgbV9hZHZhbmNlcyA9IG1fYWR2YW5jZXNWZWN0b3IuZGF0YSgpOwogfQogCitzdHJ1
Y3QgUHJvdmlkZXJJbmZvIHsKKyAgICBjb25zdCBVQ2hhciogY3A7CisgICAgdW5zaWduZWQgbGVu
Z3RoOworICAgIENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzOworfTsKKworc3RhdGljIGNvbnN0
IFVuaUNoYXIqIHByb3ZpZGVTdHJpbmdBbmRBdHRyaWJ1dGVzKENGSW5kZXggc3RyaW5nSW5kZXgs
IENGSW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiBy
ZWZDb24pCit7CisgICAgUHJvdmlkZXJJbmZvKiBpbmZvID0gc3RhdGljX2Nhc3Q8c3RydWN0IFBy
b3ZpZGVySW5mbyo+KHJlZkNvbik7CisgICAgaWYgKHN0cmluZ0luZGV4ID49IGluZm8tPmxlbmd0
aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAqY2hhckNvdW50ID0gaW5mby0+bGVuZ3RoIC0g
c3RyaW5nSW5kZXg7CisgICAgKmF0dHJpYnV0ZXMgPSBpbmZvLT5hdHRyaWJ1dGVzOworICAgIHJl
dHVybiBpbmZvLT5jcCArIHN0cmluZ0luZGV4OworfQorCiB2b2lkIENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnNDb3JlVGV4dChjb25zdCBV
Q2hhciogY3AsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RyaW5nTG9jYXRpb24sIGNvbnN0
IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSkKIHsKICAgICBpZiAoIWZvbnREYXRhKSB7CkBAIC0x
MTIsMTAgKzEzMCw2IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGwK
ICAgICBpZiAobV9mYWxsYmFja0ZvbnRzICYmIGZvbnREYXRhICE9IG1fZm9udC5wcmltYXJ5Rm9u
dCgpKQogICAgICAgICBtX2ZhbGxiYWNrRm9udHMtPmFkZChmb250RGF0YSk7CiAKLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzTm9Db3B5KE5VTEwsIGNwLCBsZW5ndGgsIGtDRkFsbG9jYXRvck51bGwpKTsKLQotICAg
IFJldGFpblB0cjxDRkF0dHJpYnV0ZWRTdHJpbmdSZWY+IGF0dHJpYnV0ZWRTdHJpbmcoQWRvcHRD
RiwgQ0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKE5VTEwsIHN0cmluZy5nZXQoKSwgZm9udERhdGEt
PmdldENGU3RyaW5nQXR0cmlidXRlcyhtX2ZvbnQudHlwZXNldHRpbmdGZWF0dXJlcygpKSkpOwot
CiAgICAgUmV0YWluUHRyPENUTGluZVJlZj4gbGluZTsKIAogICAgIGlmICghbV9tYXlVc2VOYXR1
cmFsV3JpdGluZ0RpcmVjdGlvbiB8fCBtX3J1bi5kaXJlY3Rpb25hbE92ZXJyaWRlKCkpIHsKQEAg
LTEyNiwxMSArMTQwLDIyIEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29t
cGwKICAgICAgICAgc3RhdGljIGNvbnN0IHZvaWQqIHJ0bE9wdGlvblZhbHVlc1tdID0geyBDRk51
bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTaG9ydFR5cGUsICZydGxG
b3JjZWRFbWJlZGRpbmdMZXZlbFZhbHVlKSB9OwogICAgICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5
UmVmIGx0clR5cGVzZXR0ZXJPcHRpb25zID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG9wdGlvbktleXMsIGx0ck9wdGlvblZhbHVlcywgc2l6ZW9mKG9wdGlvbktleXMp
IC8gc2l6ZW9mKCpvcHRpb25LZXlzKSwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CiAgICAgICAgIHN0YXRpYyBD
RkRpY3Rpb25hcnlSZWYgcnRsVHlwZXNldHRlck9wdGlvbnMgPSBDRkRpY3Rpb25hcnlDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5cywgcnRsT3B0aW9uVmFsdWVzLCBzaXplb2Yo
b3B0aW9uS2V5cykgLyBzaXplb2YoKm9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKworI2lm
ICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCisgICAgICAgIFByb3Zp
ZGVySW5mbyBpbmZvID0geyBjcCwgbGVuZ3RoLCBmb250RGF0YS0+Z2V0Q0ZTdHJpbmdBdHRyaWJ1
dGVzKG1fZm9udC50eXBlc2V0dGluZ0ZlYXR1cmVzKCkpIH07CisgICAgICAgIFJldGFpblB0cjxD
VFR5cGVzZXR0ZXJSZWY+IHR5cGVzZXR0ZXIoQWRvcHRDRiwgd2tDcmVhdGVDVFR5cGVzZXR0ZXJX
aXRoVW5pQ2hhclByb3ZpZGVyQW5kT3B0aW9ucygmcHJvdmlkZVN0cmluZ0FuZEF0dHJpYnV0ZXMs
IDAsICZpbmZvLCBtX3J1bi5sdHIoKSA/IGx0clR5cGVzZXR0ZXJPcHRpb25zIDogcnRsVHlwZXNl
dHRlck9wdGlvbnMpKTsKKyNlbHNlCisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3Ry
aW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgY3AsIGxlbmd0aCwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgICAgICBSZXRh
aW5QdHI8Q0ZBdHRyaWJ1dGVkU3RyaW5nUmVmPiBhdHRyaWJ1dGVkU3RyaW5nKEFkb3B0Q0YsIENG
QXR0cmlidXRlZFN0cmluZ0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcuZ2V0KCks
IGZvbnREYXRhLT5nZXRDRlN0cmluZ0F0dHJpYnV0ZXMobV9mb250LnR5cGVzZXR0aW5nRmVhdHVy
ZXMoKSkpKTsKICAgICAgICAgUmV0YWluUHRyPENUVHlwZXNldHRlclJlZj4gdHlwZXNldHRlcihB
ZG9wdENGLCBDVFR5cGVzZXR0ZXJDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZ0FuZE9wdGlvbnMo
YXR0cmlidXRlZFN0cmluZy5nZXQoKSwgbV9ydW4ubHRyKCkgPyBsdHJUeXBlc2V0dGVyT3B0aW9u
cyA6IHJ0bFR5cGVzZXR0ZXJPcHRpb25zKSk7CisjZW5kaWYKIAogICAgICAgICBsaW5lLmFkb3B0
Q0YoQ1RUeXBlc2V0dGVyQ3JlYXRlTGluZSh0eXBlc2V0dGVyLmdldCgpLCBDRlJhbmdlTWFrZSgw
LCAwKSkpOwotICAgIH0gZWxzZQotICAgICAgICBsaW5lLmFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0
aEF0dHJpYnV0ZWRTdHJpbmcoYXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIFByb3ZpZGVySW5mbyBpbmZvID0geyBjcCwgbGVuZ3RoLCBmb250RGF0YS0+Z2V0
Q0ZTdHJpbmdBdHRyaWJ1dGVzKG1fZm9udC50eXBlc2V0dGluZ0ZlYXR1cmVzKCkpIH07CisKKyAg
ICAgICAgbGluZS5hZG9wdENGKHdrQ3JlYXRlQ1RMaW5lV2l0aFVuaUNoYXJQcm92aWRlcigmcHJv
dmlkZVN0cmluZ0FuZEF0dHJpYnV0ZXMsIDAsICZpbmZvKSk7CisgICAgfQogCiAgICAgQ0ZBcnJh
eVJlZiBydW5BcnJheSA9IENUTGluZUdldEdseXBoUnVucyhsaW5lLmdldCgpKTsKIApJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAkocmV2aXNp
b24gNzEwMDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw2ICsxNzYsMTEgQEAgZXh0ZXJuIHZvaWQqIHdrR2V0
SHlwaGVuYXRpb25Mb2NhdGlvbkJlZgogZXh0ZXJuIENGSW5kZXggKCp3a0dldEh5cGhlbmF0aW9u
TG9jYXRpb25CZWZvcmVJbmRleCkoQ0ZTdHJpbmdSZWYgc3RyaW5nLCBDRkluZGV4IGluZGV4KTsK
ICNlbmRpZgogCitleHRlcm4gQ1RMaW5lUmVmICgqd2tDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclBy
b3ZpZGVyKShjb25zdCBVbmlDaGFyKiAoKnByb3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENG
SW5kZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZv
aWQgKCpkaXNwb3NlKShjb25zdCBVbmlDaGFyKiBjaGFycywgdm9pZCopLCB2b2lkKik7CisjaWYg
IWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BB
UkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKK2V4dGVybiBDVFR5cGVz
ZXR0ZXJSZWYgKCp3a0NyZWF0ZUNUVHlwZXNldHRlcldpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRp
b25zKShjb25zdCBVbmlDaGFyKiAoKnByb3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENGSW5k
ZXgqIGNoYXJDb3VudCwgQ0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZvaWQg
KCpkaXNwb3NlKShjb25zdCBVbmlDaGFyKiBjaGFycywgdm9pZCopLCB2b2lkKiwgQ0ZEaWN0aW9u
YXJ5UmVmIG9wdGlvbnMpOworI2VuZGlmCisKIH0KIAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDcxMDA4
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTE4LDMgKzExOCw4IEBAIHZvaWQqIHdrR2V0SHlwaGVuYXRpb25Mb2Nh
dGlvbkJlZm9yZUluZGUKICNlbHNlCiBDRkluZGV4ICgqd2tHZXRIeXBoZW5hdGlvbkxvY2F0aW9u
QmVmb3JlSW5kZXgpKENGU3RyaW5nUmVmIHN0cmluZywgQ0ZJbmRleCBpbmRleCk7CiAjZW5kaWYK
KworQ1RMaW5lUmVmICgqd2tDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclByb3ZpZGVyKShjb25zdCBV
bmlDaGFyKiAoKnByb3ZpZGUpKENGSW5kZXggc3RyaW5nSW5kZXgsIENGSW5kZXgqIGNoYXJDb3Vu
dCwgQ0ZEaWN0aW9uYXJ5UmVmKiBhdHRyaWJ1dGVzLCB2b2lkKiksIHZvaWQgKCpkaXNwb3NlKShj
b25zdCBVbmlDaGFyKiBjaGFycywgdm9pZCopLCB2b2lkKik7CisjaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKK0NUVHlwZXNldHRlclJlZiAoKndrQ3JlYXRlQ1RU
eXBlc2V0dGVyV2l0aFVuaUNoYXJQcm92aWRlckFuZE9wdGlvbnMpKGNvbnN0IFVuaUNoYXIqICgq
cHJvdmlkZSkoQ0ZJbmRleCBzdHJpbmdJbmRleCwgQ0ZJbmRleCogY2hhckNvdW50LCBDRkRpY3Rp
b25hcnlSZWYqIGF0dHJpYnV0ZXMsIHZvaWQqKSwgdm9pZCAoKmRpc3Bvc2UpKGNvbnN0IFVuaUNo
YXIqIGNoYXJzLCB2b2lkKiksIHZvaWQqLCBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyk7CisjZW5k
aWYKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3MTE4NSkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTEtMDIgIE5lZCBIb2xicm9vayAgPG5o
b2xicm9va0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXZvaWQgQ0ZBdHRyaWJ1dGVkU3RyaW5nIGNyZWF0aW9uIGluIENvbXBsZXhU
ZXh0Q29udHJvbGxlciBieSBhZG9wdGluZyBVbmlDaGFyIHByb3ZpZGVyIFNQSS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODg2CisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJbml0V2Vi
Q29yZVN5c3RlbUludGVyZmFjZSk6CisKIDIwMTAtMTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5k
ZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1t
CShyZXZpc2lvbiA3MTAwOCkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVt
SW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNSArMTE4LDEwIEBAIHZvaWQgSW5p
dFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uodm9pZCkKICAgICBJTklUKEdldEh5cGhlbmF0aW9uTG9j
YXRpb25CZWZvcmVJbmRleCk7CiAjZW5kaWYKIAorICAgIElOSVQoQ3JlYXRlQ1RMaW5lV2l0aFVu
aUNoYXJQcm92aWRlcik7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKKyAgICBJTklUKENyZWF0ZUNUVHlwZXNldHRlcldpdGhVbmlDaGFyUHJvdmlkZXJBbmRP
cHRpb25zKTsKKyNlbmRpZgorCiAgICAgZGlkSW5pdCA9IHRydWU7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>