<?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>128764</bug_id>
          
          <creation_ts>2014-02-13 14:03:33 -0800</creation_ts>
          <short_desc>The JSContainerConvertor and ObjcContainerConvertor need to protect JSValueRefs</short_desc>
          <delta_ts>2016-04-25 04:33:22 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=156966</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>980438</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-13 14:03:33 -0800</bug_when>
    <thetext>The JSContainerConvertor and ObjcContainerConvertor were holding on to JSValueRefs in a HashMap and Vector, and these are not scanned by the GC. Hence, objects were getting collected when we&apos;re not expecting it.

The fix is to introduce a ProtectedRef class that takes care of managing the stored JSValueRefs, and calling JSValueProtect() and JSValueUnprotect() on them as needed.

ref: &lt;rdar://problem/16029133&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980469</commentid>
    <comment_count>1</comment_count>
      <attachid>224114</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-13 14:45:16 -0800</bug_when>
    <thetext>Created attachment 224114
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980475</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-13 14:59:34 -0800</bug_when>
    <thetext>Mark H suggested using Strong&lt;Unknown&gt; instead of my ProtectedRef.  Will give that a try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980476</commentid>
    <comment_count>3</comment_count>
      <attachid>224114</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-13 14:59:42 -0800</bug_when>
    <thetext>Comment on attachment 224114
the patch.

Let&apos;s use Strong or ProtectedPtr instead of introducing a new type here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980533</commentid>
    <comment_count>4</comment_count>
      <attachid>224131</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-13 16:56:18 -0800</bug_when>
    <thetext>Created attachment 224131
simpler patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980534</commentid>
    <comment_count>5</comment_count>
      <attachid>224131</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-13 16:57:18 -0800</bug_when>
    <thetext>Comment on attachment 224131
simpler patch.

Much improved! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980536</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-13 17:02:42 -0800</bug_when>
    <thetext>Thanks.  Landed in r164077: &lt;http://trac.webkit.org/r164077&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980584</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-13 18:23:55 -0800</bug_when>
    <thetext>Found some bugs.  Fix coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980585</commentid>
    <comment_count>8</comment_count>
      <attachid>224143</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-13 18:28:41 -0800</bug_when>
    <thetext>Created attachment 224143
Part 2 of fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980587</commentid>
    <comment_count>9</comment_count>
      <attachid>224143</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-13 18:31:30 -0800</bug_when>
    <thetext>Comment on attachment 224143
Part 2 of fix.

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        toJS() is the wrong cast function to used. We need to use toJSForGC() instead.

to use.

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        Also we need to acquire the JSLock because to protect accessed to the Strong

...JSLock to prevent concurrent accesses to the Strong handle list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980590</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-13 18:37:57 -0800</bug_when>
    <thetext>Thanks.  Part 2 landed in r164089: &lt;http://trac.webkit.org/r164089&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982575</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-19 15:19:24 -0800</bug_when>
    <thetext>The regression test for this fix is at &lt;https://webkit.org/b/129067&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224114</attachid>
            <date>2014-02-13 14:45:16 -0800</date>
            <delta_ts>2014-02-13 16:56:18 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-128764.patch</filename>
            <type>text/plain</type>
            <size>20376</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MDUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDE0LTAyLTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGUgSlNDb250YWluZXJDb252ZXJ0b3IgYW5kIE9iamNDb250YWluZXJDb252ZXJ0b3IgbmVlZCB0
byBwcm90ZWN0IEpTVmFsdWVSZWZzLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTI4
NzY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBKU0NvbnRhaW5lckNvbnZlcnRvciBhbmQgT2JqY0NvbnRhaW5lckNvbnZlcnRvciB3ZXJlIGhv
bGRpbmcgb24gdG8KKyAgICAgICAgSlNWYWx1ZVJlZnMgaW4gYSBIYXNoTWFwIGFuZCBWZWN0b3Is
IGFuZCB0aGVzZSBhcmUgbm90IHNjYW5uZWQgYnkgdGhlCisgICAgICAgIEdDLiBIZW5jZSwgb2Jq
ZWN0cyB3ZXJlIGdldHRpbmcgY29sbGVjdGVkIHdoZW4gd2UncmUgbm90IGV4cGVjdGluZyBpdC4K
KworICAgICAgICBUaGUgZml4IGlzIHRvIGludHJvZHVjZSBhIFByb3RlY3RlZFJlZiBjbGFzcyB0
aGF0IHRha2VzIGNhcmUgb2YgbWFuYWdpbmcKKyAgICAgICAgdGhlIHN0b3JlZCBKU1ZhbHVlUmVm
cywgYW5kIGNhbGxpbmcgSlNWYWx1ZVByb3RlY3QoKSBhbmQgSlNWYWx1ZVVucHJvdGVjdCgpCisg
ICAgICAgIG9uIHRoZW0gYXMgbmVlZGVkLgorCisgICAgICAgICogQVBJL0FQSUNhc3QuaDoKKyAg
ICAgICAgKGVtcHR5UmVmKToKKyAgICAgICAgKiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKFBy
b3RlY3RlZFJlZjo6UHJvdGVjdGVkUmVmKToKKyAgICAgICAgKFByb3RlY3RlZFJlZjo6flByb3Rl
Y3RlZFJlZik6CisgICAgICAgIChQcm90ZWN0ZWRSZWY6Om9wZXJhdG9yPSk6CisgICAgICAgIChQ
cm90ZWN0ZWRSZWY6Om9wZXJhdG9yPT0pOgorICAgICAgICAoUHJvdGVjdGVkUmVmOjpvcGVyYXRv
ciBib29sKToKKyAgICAgICAgKFByb3RlY3RlZFJlZjo6c2V0RGVsZXRlZCk6CisgICAgICAgIChQ
cm90ZWN0ZWRSZWY6OmlzRGVsZXRlZCk6CisgICAgICAgIChQcm90ZWN0ZWRSZWY6OmVtcHR5KToK
KyAgICAgICAgKFByb3RlY3RlZFJlZjo6dG9VbnByb3RlY3RlZCk6CisgICAgICAgIChQcm90ZWN0
ZWRSZWZIYXNoOjpoYXNoKToKKyAgICAgICAgKFByb3RlY3RlZFJlZkhhc2hUcmFpdHM6OmNvbnN0
cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChQcm90ZWN0ZWRSZWZIYXNoVHJhaXRzOjppc0Rl
bGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzazo6VGFzayk6
CisgICAgICAgIChKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzazo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKEpTQ29udGFpbmVyQ29udmVydG9yOjpUYXNrOjpwcm90ZWN0ZWRKcyk6CisgICAgICAgIChK
U0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzazo6anMpOgorICAgICAgICAoSlNDb250YWluZXJDb252
ZXJ0b3I6OlRhc2s6Om9iamMpOgorICAgICAgICAoSlNDb250YWluZXJDb252ZXJ0b3I6OlRhc2s6
OnR5cGUpOgorICAgICAgICAoSlNDb250YWluZXJDb252ZXJ0b3I6OmNvbnZlcnQpOgorICAgICAg
ICAoSlNDb250YWluZXJDb252ZXJ0b3I6OmFkZCk6CisgICAgICAgICh2YWx1ZVRvT2JqZWN0V2l0
aG91dENvcHkpOgorICAgICAgICAoY29udGFpbmVyVmFsdWVUb09iamVjdCk6CisgICAgICAgICh2
YWx1ZVRvT2JqZWN0KToKKyAgICAgICAgKHZhbHVlVG9BcnJheSk6CisgICAgICAgICh2YWx1ZVRv
RGljdGlvbmFyeSk6CisgICAgICAgIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrOjpUYXNr
KToKKyAgICAgICAgKE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2s6Om9wZXJhdG9yPSk6Cisg
ICAgICAgIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrOjpwcm90ZWN0ZWRKcyk6CisgICAg
ICAgIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrOjpqcyk6CisgICAgICAgIChPYmpjQ29u
dGFpbmVyQ29udmVydG9yOjpUYXNrOjpvYmpjKToKKyAgICAgICAgKE9iamNDb250YWluZXJDb252
ZXJ0b3I6OlRhc2s6OnR5cGUpOgorICAgICAgICAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6Y29u
dmVydCk6CisgICAgICAgIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjphZGQpOgorICAgICAgICAo
b2JqZWN0VG9WYWx1ZVdpdGhvdXRDb3B5KToKKyAgICAgICAgKG9iamVjdFRvVmFsdWUpOgorCiAy
MDE0LTAyLTEzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAg
IENTdGFjayBCcmFuY2g6IFZNOjpjdXJyZW50UmV0dXJuVGh1bmtQQyBhcHBlYXJzIHRvIGJlIHVu
dXNlZCBhbmQgc2hvdWxkIGJlIHJlbW92ZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0JKHJldmlzaW9uIDE2NDA1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiT2Jq
Y1J1bnRpbWVFeHRyYXMuaCIKICNpbXBvcnQgIkpTQ0lubGluZXMuaCIKICNpbXBvcnQgIkpTQ0pT
VmFsdWUuaCIKKyNpbXBvcnQgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW1wb3J0IDx3dGYvSGFz
aE1hcC5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9PYmpjUnVudGlt
ZUV4dHJhcy5oPgpAQCAtNTY3LDYgKzU2OCw3NSBAQCBpbmxpbmUgYm9vbCBpc0FycmF5KEpTT2Jq
ZWN0UmVmIG9iamVjdCwgCiAKIEBpbXBsZW1lbnRhdGlvbiBKU1ZhbHVlKEludGVybmFsKQogCitj
bGFzcyBQcm90ZWN0ZWRSZWYgeworcHVibGljOgorICAgIFByb3RlY3RlZFJlZigpIDogbV9jb250
ZXh0KDApLCBtX2pzKDApIHsgfQorICAgIFByb3RlY3RlZFJlZihjb25zdCBQcm90ZWN0ZWRSZWYm
IG90aGVyKQorICAgICAgICA6IG1fY29udGV4dChvdGhlci5tX2NvbnRleHQpCisgICAgICAgICwg
bV9qcyhvdGhlci5tX2pzKQorICAgIHsKKyAgICAgICAgaWYgKG1fanMgJiYgbV9jb250ZXh0KQor
ICAgICAgICAgICAgSlNWYWx1ZVByb3RlY3QobV9jb250ZXh0LCBtX2pzKTsKKyAgICB9CisKKyAg
ICBQcm90ZWN0ZWRSZWYoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYganMp
CisgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpLCBtX2pzKGpzKQorICAgIHsKKyAgICAgICAg
aWYgKG1fanMgJiYgbV9jb250ZXh0KQorICAgICAgICAgICAgSlNWYWx1ZVByb3RlY3QobV9jb250
ZXh0LCBtX2pzKTsKKyAgICB9CisgICAgflByb3RlY3RlZFJlZigpCisgICAgeworICAgICAgICBp
ZiAobV9qcyAmJiBtX2NvbnRleHQpCisgICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KG1fY29u
dGV4dCwgbV9qcyk7OworICAgIH0KKworICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFByb3RlY3Rl
ZFJlZiYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAobV9qcyAmJiBtX2NvbnRleHQpCisgICAg
ICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KG1fY29udGV4dCwgbV9qcyk7CisgICAgICAgIG1fY29u
dGV4dCA9IG90aGVyLm1fY29udGV4dDsKKyAgICAgICAgbV9qcyA9IG90aGVyLm1fanM7CisgICAg
ICAgIGlmIChtX2pzICYmIG1fY29udGV4dCkKKyAgICAgICAgICAgIEpTVmFsdWVQcm90ZWN0KG1f
Y29udGV4dCwgbV9qcyk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3Rl
Y3RlZFJlZiYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jb250ZXh0ID09
IG90aGVyLm1fY29udGV4dCAmJiBtX2pzID09IG90aGVyLm1fanM7CisgICAgfQorCisgICAgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9qczsgfQorCisgICAgdm9pZCBzZXREZWxl
dGVkKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dCA9IDA7CisgICAgICAgIG1fanMgPSByZWlu
dGVycHJldF9jYXN0PEpTVmFsdWVSZWY+KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7CisgICAgfQor
ICAgIGJvb2wgaXNEZWxldGVkKCkgY29uc3QgeyByZXR1cm4gIW1fY29udGV4dCAmJiBtX2pzID09
IHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZVJlZj4oSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQor
CisgICAgSlNWYWx1ZVJlZiB0b1VucHJvdGVjdGVkKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVCghaXNEZWxldGVkKCkpOworICAgICAgICByZXR1cm4gbV9qczsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgZW51bSB7IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSA9IC0xIH07CisKKyAgICBKU0ds
b2JhbENvbnRleHRSZWYgbV9jb250ZXh0OworICAgIEpTVmFsdWVSZWYgbV9qczsKK307CisKK3N0
cnVjdCBQcm90ZWN0ZWRSZWZIYXNoIDogUHRySGFzaDxQcm90ZWN0ZWRSZWY+IHsKKyAgICBzdGF0
aWMgdW5zaWduZWQgaGFzaChjb25zdCBQcm90ZWN0ZWRSZWYmIGtleSkgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KGtleS50b1VucHJvdGVjdGVkKCkpOyB9Cit9OworCitzdHJ1
Y3QgUHJvdGVjdGVkUmVmSGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8UHJvdGVjdGVkUmVmPiB7Cisg
ICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFByb3RlY3RlZFJlZiYgc2xvdCkg
eyBzbG90LnNldERlbGV0ZWQoKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNv
bnN0IFByb3RlY3RlZFJlZiYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmlzRGVsZXRlZCgpOyB9Cit9
OworCiBlbnVtIENvbnZlcnNpb25UeXBlIHsKICAgICBDb250YWluZXJOb25lLAogICAgIENvbnRh
aW5lckFycmF5LApAQCAtNTc1LDEwICs2NDUsMzEgQEAgZW51bSBDb252ZXJzaW9uVHlwZSB7CiAK
IGNsYXNzIEpTQ29udGFpbmVyQ29udmVydG9yIHsKIHB1YmxpYzoKLSAgICBzdHJ1Y3QgVGFzayB7
Ci0gICAgICAgIEpTVmFsdWVSZWYganM7Ci0gICAgICAgIGlkIG9iamM7Ci0gICAgICAgIENvbnZl
cnNpb25UeXBlIHR5cGU7CisgICAgY2xhc3MgVGFzayB7CisgICAgcHVibGljOgorICAgICAgICBU
YXNrKEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGpzLCBpZCBvYmpjLCBD
b252ZXJzaW9uVHlwZSB0eXBlKQorICAgICAgICAgICAgOiBtX2pzKGNvbnRleHQsIGpzKQorICAg
ICAgICAgICAgLCBtX29iamMob2JqYykKKyAgICAgICAgICAgICwgbV90eXBlKHR5cGUpCisgICAg
ICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFRhc2smIG90
aGVyKQorICAgICAgICB7CisgICAgICAgICAgICBtX2pzID0gb3RoZXIubV9qczsKKyAgICAgICAg
ICAgIG1fb2JqYyA9IG90aGVyLm1fb2JqYzsKKyAgICAgICAgICAgIG1fdHlwZSA9IG90aGVyLm1f
dHlwZTsKKyAgICAgICAgfQorCisgICAgICAgIFByb3RlY3RlZFJlZiBwcm90ZWN0ZWRKcygpIGNv
bnN0IHsgcmV0dXJuIG1fanM7IH0KKyAgICAgICAgSlNWYWx1ZVJlZiBqcygpIGNvbnN0IHsgcmV0
dXJuIG1fanMudG9VbnByb3RlY3RlZCgpOyB9CisgICAgICAgIGlkIG9iamMoKSBjb25zdCB7IHJl
dHVybiBtX29iamM7IH0KKyAgICAgICAgQ29udmVyc2lvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgUHJvdGVjdGVkUmVmIG1fanM7
CisgICAgICAgIGlkIG1fb2JqYzsKKyAgICAgICAgQ29udmVyc2lvblR5cGUgbV90eXBlOwogICAg
IH07CiAKICAgICBKU0NvbnRhaW5lckNvbnZlcnRvcihKU0dsb2JhbENvbnRleHRSZWYgY29udGV4
dCkKQEAgLTU5MiwyNyArNjgzLDI5IEBAIHB1YmxpYzoKICAgICBib29sIGlzV29ya0xpc3RFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuICFtX3dvcmtsaXN0LnNpemUoKTsgfQogCiBwcml2YXRlOgorICAg
IHR5cGVkZWYgSGFzaE1hcDxQcm90ZWN0ZWRSZWYsIGlkLCBQcm90ZWN0ZWRSZWZIYXNoLCBQcm90
ZWN0ZWRSZWZIYXNoVHJhaXRzPiBPYmplY3RNYXA7CisKICAgICBKU0dsb2JhbENvbnRleHRSZWYg
bV9jb250ZXh0OwotICAgIEhhc2hNYXA8SlNWYWx1ZVJlZiwgaWQ+IG1fb2JqZWN0TWFwOworICAg
IE9iamVjdE1hcCBtX29iamVjdE1hcDsKICAgICBWZWN0b3I8VGFzaz4gbV93b3JrbGlzdDsKIH07
CiAKIGlubGluZSBpZCBKU0NvbnRhaW5lckNvbnZlcnRvcjo6Y29udmVydChKU1ZhbHVlUmVmIHZh
bHVlKQogewotICAgIEhhc2hNYXA8SlNWYWx1ZVJlZiwgaWQ+OjppdGVyYXRvciBpdGVyID0gbV9v
YmplY3RNYXAuZmluZCh2YWx1ZSk7CisgICAgT2JqZWN0TWFwOjppdGVyYXRvciBpdGVyID0gbV9v
YmplY3RNYXAuZmluZChQcm90ZWN0ZWRSZWYobV9jb250ZXh0LCB2YWx1ZSkpOwogICAgIGlmIChp
dGVyICE9IG1fb2JqZWN0TWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7CiAK
ICAgICBUYXNrIHJlc3VsdCA9IHZhbHVlVG9PYmplY3RXaXRob3V0Q29weShtX2NvbnRleHQsIHZh
bHVlKTsKLSAgICBpZiAocmVzdWx0LmpzKQorICAgIGlmIChyZXN1bHQuanMoKSkKICAgICAgICAg
YWRkKHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdC5vYmpjOworICAgIHJldHVybiByZXN1bHQu
b2JqYygpOwogfQogCiB2b2lkIEpTQ29udGFpbmVyQ29udmVydG9yOjphZGQoVGFzayB0YXNrKQog
ewotICAgIG1fb2JqZWN0TWFwLmFkZCh0YXNrLmpzLCB0YXNrLm9iamMpOwotICAgIGlmICh0YXNr
LnR5cGUgIT0gQ29udGFpbmVyTm9uZSkKKyAgICBtX29iamVjdE1hcC5hZGQodGFzay5wcm90ZWN0
ZWRKcygpLCB0YXNrLm9iamMoKSk7CisgICAgaWYgKHRhc2sudHlwZSgpICE9IENvbnRhaW5lck5v
bmUpCiAgICAgICAgIG1fd29ya2xpc3QuYXBwZW5kKHRhc2spOwogfQogCkBAIC02NDcsMzggKzc0
MCwzOCBAQCBzdGF0aWMgSlNDb250YWluZXJDb252ZXJ0b3I6OlRhc2sgdmFsdWVUCiAgICAgICAg
ICAgICBBU1NFUlQoSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHZhbHVlKSk7CiAgICAgICAg
ICAgICBwcmltaXRpdmUgPSBuaWw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIChKU0NvbnRh
aW5lckNvbnZlcnRvcjo6VGFzayl7IHZhbHVlLCBwcmltaXRpdmUsIENvbnRhaW5lck5vbmUgfTsK
KyAgICAgICAgcmV0dXJuIEpTQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKGNvbnRleHQsIHZhbHVl
LCBwcmltaXRpdmUsIENvbnRhaW5lck5vbmUpOwogICAgIH0KIAogICAgIEpTT2JqZWN0UmVmIG9i
amVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCB2YWx1ZSwgMCk7CiAKICAgICBpZiAoaWQg
d3JhcHBlZCA9IHRyeVVud3JhcE9iamNPYmplY3QoY29udGV4dCwgb2JqZWN0KSkKLSAgICAgICAg
cmV0dXJuIChKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwgd3JhcHBlZCwgQ29u
dGFpbmVyTm9uZSB9OworICAgICAgICByZXR1cm4gSlNDb250YWluZXJDb252ZXJ0b3I6OlRhc2so
Y29udGV4dCwgb2JqZWN0LCB3cmFwcGVkLCBDb250YWluZXJOb25lKTsKIAogICAgIGlmIChpc0Rh
dGUob2JqZWN0LCBjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIChKU0NvbnRhaW5lckNvbnZlcnRv
cjo6VGFzayl7IG9iamVjdCwgW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpK
U1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgb2JqZWN0LCAwKSAvIDEwMDAuMF0sIENvbnRhaW5lck5v
bmUgfTsKKyAgICAgICAgcmV0dXJuIEpTQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKGNvbnRleHQs
IG9iamVjdCwgW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpKU1ZhbHVlVG9O
dW1iZXIoY29udGV4dCwgb2JqZWN0LCAwKSAvIDEwMDAuMF0sIENvbnRhaW5lck5vbmUpOwogCiAg
ICAgaWYgKGlzQXJyYXkob2JqZWN0LCBjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIChKU0NvbnRh
aW5lckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwgW05TTXV0YWJsZUFycmF5IGFycmF5XSwgQ29u
dGFpbmVyQXJyYXkgfTsKKyAgICAgICAgcmV0dXJuIEpTQ29udGFpbmVyQ29udmVydG9yOjpUYXNr
KGNvbnRleHQsIG9iamVjdCwgW05TTXV0YWJsZUFycmF5IGFycmF5XSwgQ29udGFpbmVyQXJyYXkp
OwogCi0gICAgcmV0dXJuIChKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwgW05T
TXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV0sIENvbnRhaW5lckRpY3Rpb25hcnkgfTsKKyAg
ICByZXR1cm4gSlNDb250YWluZXJDb252ZXJ0b3I6OlRhc2soY29udGV4dCwgb2JqZWN0LCBbTlNN
dXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XSwgQ29udGFpbmVyRGljdGlvbmFyeSk7CiB9CiAK
IHN0YXRpYyBpZCBjb250YWluZXJWYWx1ZVRvT2JqZWN0KEpTR2xvYmFsQ29udGV4dFJlZiBjb250
ZXh0LCBKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayB0YXNrKQogewotICAgIEFTU0VSVCh0YXNr
LnR5cGUgIT0gQ29udGFpbmVyTm9uZSk7CisgICAgQVNTRVJUKHRhc2sudHlwZSgpICE9IENvbnRh
aW5lck5vbmUpOwogICAgIEpTQ29udGFpbmVyQ29udmVydG9yIGNvbnZlcnRvcihjb250ZXh0KTsK
ICAgICBjb252ZXJ0b3IuYWRkKHRhc2spOwogICAgIEFTU0VSVCghY29udmVydG9yLmlzV29ya0xp
c3RFbXB0eSgpKTsKICAgICAKICAgICBkbyB7CiAgICAgICAgIEpTQ29udGFpbmVyQ29udmVydG9y
OjpUYXNrIGN1cnJlbnQgPSBjb252ZXJ0b3IudGFrZSgpOwotICAgICAgICBBU1NFUlQoSlNWYWx1
ZUlzT2JqZWN0KGNvbnRleHQsIGN1cnJlbnQuanMpKTsKLSAgICAgICAgSlNPYmplY3RSZWYganMg
PSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgY3VycmVudC5qcywgMCk7CisgICAgICAgIEFTU0VS
VChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgY3VycmVudC5qcygpKSk7CisgICAgICAgIEpTT2Jq
ZWN0UmVmIGpzID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGN1cnJlbnQuanMoKSwgMCk7CiAK
LSAgICAgICAgaWYgKGN1cnJlbnQudHlwZSA9PSBDb250YWluZXJBcnJheSkgewotICAgICAgICAg
ICAgQVNTRVJUKFtjdXJyZW50Lm9iamMgaXNLaW5kT2ZDbGFzczpbTlNNdXRhYmxlQXJyYXkgY2xh
c3NdXSk7Ci0gICAgICAgICAgICBOU011dGFibGVBcnJheSAqYXJyYXkgPSAoTlNNdXRhYmxlQXJy
YXkgKiljdXJyZW50Lm9iamM7CisgICAgICAgIGlmIChjdXJyZW50LnR5cGUoKSA9PSBDb250YWlu
ZXJBcnJheSkgeworICAgICAgICAgICAgQVNTRVJUKFtjdXJyZW50Lm9iamMoKSBpc0tpbmRPZkNs
YXNzOltOU011dGFibGVBcnJheSBjbGFzc11dKTsKKyAgICAgICAgICAgIE5TTXV0YWJsZUFycmF5
ICphcnJheSA9IChOU011dGFibGVBcnJheSAqKWN1cnJlbnQub2JqYygpOwogICAgICAgICAKICAg
ICAgICAgICAgIEpTU3RyaW5nUmVmIGxlbmd0aFN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJsZW5ndGgiKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTQzo6
dG9VSW50MzIoSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29u
dGV4dCwganMsIGxlbmd0aFN0cmluZywgMCksIDApKTsKQEAgLTY4OSw4ICs3ODIsOCBAQCBzdGF0
aWMgaWQgY29udGFpbmVyVmFsdWVUb09iamVjdChKU0dsb2JhCiAgICAgICAgICAgICAgICAgW2Fy
cmF5IGFkZE9iamVjdDpvYmpjID8gb2JqYyA6IFtOU051bGwgbnVsbF1dOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKFtjdXJyZW50Lm9iamMgaXNL
aW5kT2ZDbGFzczpbTlNNdXRhYmxlRGljdGlvbmFyeSBjbGFzc11dKTsKLSAgICAgICAgICAgIE5T
TXV0YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKWN1
cnJlbnQub2JqYzsKKyAgICAgICAgICAgIEFTU0VSVChbY3VycmVudC5vYmpjKCkgaXNLaW5kT2ZD
bGFzczpbTlNNdXRhYmxlRGljdGlvbmFyeSBjbGFzc11dKTsKKyAgICAgICAgICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKWN1cnJlbnQu
b2JqYygpOwogCiAgICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIHByb3BlcnR5TmFt
ZUFycmF5ID0gSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyhjb250ZXh0LCBqcyk7CiAgICAgICAg
ICAgICBzaXplX3QgbGVuZ3RoID0gSlNQcm9wZXJ0eU5hbWVBcnJheUdldENvdW50KHByb3BlcnR5
TmFtZUFycmF5KTsKQEAgLTcwNiwxNCArNzk5LDE0IEBAIHN0YXRpYyBpZCBjb250YWluZXJWYWx1
ZVRvT2JqZWN0KEpTR2xvYmEKIAogICAgIH0gd2hpbGUgKCFjb252ZXJ0b3IuaXNXb3JrTGlzdEVt
cHR5KCkpOwogCi0gICAgcmV0dXJuIHRhc2sub2JqYzsKKyAgICByZXR1cm4gdGFzay5vYmpjKCk7
CiB9CiAKIGlkIHZhbHVlVG9PYmplY3QoSlNDb250ZXh0ICpjb250ZXh0LCBKU1ZhbHVlUmVmIHZh
bHVlKQogewogICAgIEpTQ29udGFpbmVyQ29udmVydG9yOjpUYXNrIHJlc3VsdCA9IHZhbHVlVG9P
YmplY3RXaXRob3V0Q29weShbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCB2YWx1ZSk7Ci0g
ICAgaWYgKHJlc3VsdC50eXBlID09IENvbnRhaW5lck5vbmUpCi0gICAgICAgIHJldHVybiByZXN1
bHQub2JqYzsKKyAgICBpZiAocmVzdWx0LnR5cGUoKSA9PSBDb250YWluZXJOb25lKQorICAgICAg
ICByZXR1cm4gcmVzdWx0Lm9iamMoKTsKICAgICByZXR1cm4gY29udGFpbmVyVmFsdWVUb09iamVj
dChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCByZXN1bHQpOwogfQogCkBAIC03NzIsNyAr
ODY1LDcgQEAgaWQgdmFsdWVUb0FycmF5KEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZQogICAgIH0K
IAogICAgIGlmIChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgdmFsdWUpKQotICAgICAgICByZXR1
cm4gY29udGFpbmVyVmFsdWVUb09iamVjdChjb250ZXh0LCAoSlNDb250YWluZXJDb252ZXJ0b3I6
OlRhc2speyB2YWx1ZSwgW05TTXV0YWJsZUFycmF5IGFycmF5XSwgQ29udGFpbmVyQXJyYXl9KTsK
KyAgICAgICAgcmV0dXJuIGNvbnRhaW5lclZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNDb250YWlu
ZXJDb252ZXJ0b3I6OlRhc2soY29udGV4dCwgdmFsdWUsIFtOU011dGFibGVBcnJheSBhcnJheV0s
IENvbnRhaW5lckFycmF5KSk7CiAKICAgICBpZiAoIShKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHZh
bHVlKSB8fCBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpKSkKICAgICAgICAgKmV4
Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoY29udGV4dCksICJDYW5u
b3QgY29udmVydCBwcmltaXRpdmUgdG8gTlNBcnJheSIpKTsKQEAgLTc4OCw3ICs4ODEsNyBAQCBp
ZCB2YWx1ZVRvRGljdGlvbmFyeShKU0dsb2JhbENvbnRleHRSZWYgCiAgICAgfQogCiAgICAgaWYg
KEpTVmFsdWVJc09iamVjdChjb250ZXh0LCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBjb250YWlu
ZXJWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIChKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IHZh
bHVlLCBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XSwgQ29udGFpbmVyRGljdGlvbmFy
eX0pOworICAgICAgICByZXR1cm4gY29udGFpbmVyVmFsdWVUb09iamVjdChjb250ZXh0LCBKU0Nv
bnRhaW5lckNvbnZlcnRvcjo6VGFzayhjb250ZXh0LCB2YWx1ZSwgW05TTXV0YWJsZURpY3Rpb25h
cnkgZGljdGlvbmFyeV0sIENvbnRhaW5lckRpY3Rpb25hcnkpKTsKIAogICAgIGlmICghKEpTVmFs
dWVJc051bGwoY29udGV4dCwgdmFsdWUpIHx8IEpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCB2
YWx1ZSkpKQogICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3Io
dG9KUyhjb250ZXh0KSwgIkNhbm5vdCBjb252ZXJ0IHByaW1pdGl2ZSB0byBOU0RpY3Rpb25hcnki
KSk7CkBAIC03OTcsMTAgKzg5MCwzMSBAQCBpZCB2YWx1ZVRvRGljdGlvbmFyeShKU0dsb2JhbENv
bnRleHRSZWYgCiAKIGNsYXNzIE9iamNDb250YWluZXJDb252ZXJ0b3IgewogcHVibGljOgotICAg
IHN0cnVjdCBUYXNrIHsKLSAgICAgICAgaWQgb2JqYzsKLSAgICAgICAgSlNWYWx1ZVJlZiBqczsK
LSAgICAgICAgQ29udmVyc2lvblR5cGUgdHlwZTsKKyAgICBjbGFzcyBUYXNrIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIFRhc2soSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIGlkIG9iamMsIEpT
VmFsdWVSZWYganMsIENvbnZlcnNpb25UeXBlIHR5cGUpCisgICAgICAgICAgICA6IG1fb2JqYyhv
YmpjKQorICAgICAgICAgICAgLCBtX2pzKGNvbnRleHQsIGpzKQorICAgICAgICAgICAgLCBtX3R5
cGUodHlwZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBvcGVyYXRvcj0o
Y29uc3QgVGFzayYgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fb2JqYyA9IG90aGVy
Lm1fb2JqYzsKKyAgICAgICAgICAgIG1fanMgPSBvdGhlci5tX2pzOworICAgICAgICAgICAgbV90
eXBlID0gb3RoZXIubV90eXBlOworICAgICAgICB9CisKKyAgICAgICAgUHJvdGVjdGVkUmVmIHBy
b3RlY3RlZEpzKCkgY29uc3QgeyByZXR1cm4gbV9qczsgfQorICAgICAgICBKU1ZhbHVlUmVmIGpz
KCkgY29uc3QgeyByZXR1cm4gbV9qcy50b1VucHJvdGVjdGVkKCk7IH0KKyAgICAgICAgaWQgb2Jq
YygpIGNvbnN0IHsgcmV0dXJuIG1fb2JqYzsgfQorICAgICAgICBDb252ZXJzaW9uVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBpZCBt
X29iamM7CisgICAgICAgIFByb3RlY3RlZFJlZiBtX2pzOworICAgICAgICBDb252ZXJzaW9uVHlw
ZSBtX3R5cGU7CiAgICAgfTsKIAogICAgIE9iamNDb250YWluZXJDb252ZXJ0b3IoSlNDb250ZXh0
ICpjb250ZXh0KQpAQCAtODE0LDggKzkyOCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1dvcmtM
aXN0RW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV93b3JrbGlzdC5zaXplKCk7IH0KIAogcHJpdmF0
ZToKKyAgICB0eXBlZGVmIEhhc2hNYXA8aWQsIFByb3RlY3RlZFJlZj4gT2JqZWN0TWFwOworCiAg
ICAgSlNDb250ZXh0ICptX2NvbnRleHQ7Ci0gICAgSGFzaE1hcDxpZCwgSlNWYWx1ZVJlZj4gbV9v
YmplY3RNYXA7CisgICAgT2JqZWN0TWFwIG1fb2JqZWN0TWFwOwogICAgIFZlY3RvcjxUYXNrPiBt
X3dvcmtsaXN0OwogfTsKIApAQCAtODI1LDE3ICs5NDEsMTcgQEAgSlNWYWx1ZVJlZiBPYmpjQ29u
dGFpbmVyQ29udmVydG9yOjpjb252ZQogCiAgICAgYXV0byBpdCA9IG1fb2JqZWN0TWFwLmZpbmQo
b2JqZWN0KTsKICAgICBpZiAoaXQgIT0gbV9vYmplY3RNYXAuZW5kKCkpCi0gICAgICAgIHJldHVy
biBpdC0+dmFsdWU7CisgICAgICAgIHJldHVybiBpdC0+dmFsdWUudG9VbnByb3RlY3RlZCgpOwog
CiAgICAgT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayB0YXNrID0gb2JqZWN0VG9WYWx1ZVdp
dGhvdXRDb3B5KG1fY29udGV4dCwgb2JqZWN0KTsKICAgICBhZGQodGFzayk7Ci0gICAgcmV0dXJu
IHRhc2suanM7CisgICAgcmV0dXJuIHRhc2suanMoKTsKIH0KIAogdm9pZCBPYmpjQ29udGFpbmVy
Q29udmVydG9yOjphZGQoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayB0YXNrKQogewotICAg
IG1fb2JqZWN0TWFwLmFkZCh0YXNrLm9iamMsIHRhc2suanMpOwotICAgIGlmICh0YXNrLnR5cGUg
IT0gQ29udGFpbmVyTm9uZSkKKyAgICBtX29iamVjdE1hcC5hZGQodGFzay5vYmpjKCksIHRhc2su
cHJvdGVjdGVkSnMoKSk7CisgICAgaWYgKHRhc2sudHlwZSgpICE9IENvbnRhaW5lck5vbmUpCiAg
ICAgICAgIG1fd29ya2xpc3QuYXBwZW5kKHRhc2spOwogfQogCkBAIC04NjAsNDkgKzk3Niw0OSBA
QCBzdGF0aWMgT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayBvYmplCiAgICAgSlNHbG9iYWxD
b250ZXh0UmVmIGNvbnRleHRSZWYgPSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdOwogCiAg
ICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6
VGFzayl7IG9iamVjdCwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dFJlZiksIENvbnRhaW5l
ck5vbmUgfTsKKyAgICAgICAgcmV0dXJuIE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2soY29u
dGV4dFJlZiwgb2JqZWN0LCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0UmVmKSwgQ29udGFp
bmVyTm9uZSk7CiAKICAgICBpZiAoIWNsYXNzX2NvbmZvcm1zVG9Qcm90b2NvbChvYmplY3RfZ2V0
Q2xhc3Mob2JqZWN0KSwgZ2V0SlNFeHBvcnRQcm90b2NvbCgpKSkgewogICAgICAgICBpZiAoW29i
amVjdCBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgICAgICByZXR1cm4g
KE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3QsIEpTT2JqZWN0TWFrZUFycmF5
KGNvbnRleHRSZWYsIDAsIE5VTEwsIDApLCBDb250YWluZXJBcnJheSB9OworICAgICAgICAgICAg
cmV0dXJuIE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2soY29udGV4dFJlZiwgb2JqZWN0LCBK
U09iamVjdE1ha2VBcnJheShjb250ZXh0UmVmLCAwLCBOVUxMLCAwKSwgQ29udGFpbmVyQXJyYXkp
OwogCiAgICAgICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFz
c11dKQotICAgICAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKXsg
b2JqZWN0LCBKU09iamVjdE1ha2UoY29udGV4dFJlZiwgMCwgMCksIENvbnRhaW5lckRpY3Rpb25h
cnkgfTsKKyAgICAgICAgICAgIHJldHVybiBPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKGNv
bnRleHRSZWYsIG9iamVjdCwgSlNPYmplY3RNYWtlKGNvbnRleHRSZWYsIDAsIDApLCBDb250YWlu
ZXJEaWN0aW9uYXJ5KTsKIAogICAgICAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU051
bGwgY2xhc3NdXSkKLSAgICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6
VGFzayl7IG9iamVjdCwgSlNWYWx1ZU1ha2VOdWxsKGNvbnRleHRSZWYpLCBDb250YWluZXJOb25l
IH07CisgICAgICAgICAgICByZXR1cm4gT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayhjb250
ZXh0UmVmLCBvYmplY3QsIEpTVmFsdWVNYWtlTnVsbChjb250ZXh0UmVmKSwgQ29udGFpbmVyTm9u
ZSk7CiAKICAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbSlNWYWx1ZSBjbGFzc11d
KQotICAgICAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKXsgb2Jq
ZWN0LCAoKEpTVmFsdWUgKilvYmplY3QpLT5tX3ZhbHVlLCBDb250YWluZXJOb25lIH07CisgICAg
ICAgICAgICByZXR1cm4gT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayhjb250ZXh0UmVmLCBv
YmplY3QsICgoSlNWYWx1ZSAqKW9iamVjdCktPm1fdmFsdWUsIENvbnRhaW5lck5vbmUpOwogCiAg
ICAgICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKICAg
ICAgICAgICAgIEpTU3RyaW5nUmVmIHN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5n
KChDRlN0cmluZ1JlZilvYmplY3QpOwogICAgICAgICAgICAgSlNWYWx1ZVJlZiBqcyA9IEpTVmFs
dWVNYWtlU3RyaW5nKGNvbnRleHRSZWYsIHN0cmluZyk7CiAgICAgICAgICAgICBKU1N0cmluZ1Jl
bGVhc2Uoc3RyaW5nKTsKLSAgICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRv
cjo6VGFzayl7IG9iamVjdCwganMsIENvbnRhaW5lck5vbmUgfTsKKyAgICAgICAgICAgIHJldHVy
biBPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKGNvbnRleHRSZWYsIG9iamVjdCwganMsIENv
bnRhaW5lck5vbmUpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZD
bGFzczpbTlNOdW1iZXIgY2xhc3NdXSkgewogICAgICAgICAgICAgaWYgKGlzTlNCb29sZWFuKG9i
amVjdCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpU
YXNrKXsgb2JqZWN0LCBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dFJlZiwgW29iamVjdCBib29s
VmFsdWVdKSwgQ29udGFpbmVyTm9uZSB9OwotICAgICAgICAgICAgcmV0dXJuIChPYmpjQ29udGFp
bmVyQ29udmVydG9yOjpUYXNrKXsgb2JqZWN0LCBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0UmVm
LCBbb2JqZWN0IGRvdWJsZVZhbHVlXSksIENvbnRhaW5lck5vbmUgfTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayhjb250ZXh0UmVmLCBvYmplY3Qs
IEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0UmVmLCBbb2JqZWN0IGJvb2xWYWx1ZV0pLCBDb250
YWluZXJOb25lKTsKKyAgICAgICAgICAgIHJldHVybiBPYmpjQ29udGFpbmVyQ29udmVydG9yOjpU
YXNrKGNvbnRleHRSZWYsIG9iamVjdCwgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dFJlZiwgW29i
amVjdCBkb3VibGVWYWx1ZV0pLCBDb250YWluZXJOb25lKTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TRGF0ZSBjbGFzc11dKSB7CiAgICAgICAgICAg
ICBKU1ZhbHVlUmVmIGFyZ3VtZW50ID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dFJlZiwgW29i
amVjdCB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBdICogMTAwMC4wKTsKICAgICAgICAgICAgIEpTT2Jq
ZWN0UmVmIHJlc3VsdCA9IEpTT2JqZWN0TWFrZURhdGUoY29udGV4dFJlZiwgMSwgJmFyZ3VtZW50
LCAwKTsKLSAgICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7
IG9iamVjdCwgcmVzdWx0LCBDb250YWluZXJOb25lIH07CisgICAgICAgICAgICByZXR1cm4gT2Jq
Y0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayhjb250ZXh0UmVmLCBvYmplY3QsIHJlc3VsdCwgQ29u
dGFpbmVyTm9uZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNs
YXNzOltKU01hbmFnZWRWYWx1ZSBjbGFzc11dKSB7CiAgICAgICAgICAgICBKU1ZhbHVlICp2YWx1
ZSA9IFtzdGF0aWNfY2FzdDxKU01hbmFnZWRWYWx1ZSAqPihvYmplY3QpIHZhbHVlXTsKICAgICAg
ICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVy
Q29udmVydG9yOjpUYXNrKSB7IG9iamVjdCwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dFJl
ZiksIENvbnRhaW5lck5vbmUgfTsKLSAgICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNv
bnZlcnRvcjo6VGFzayl7IG9iamVjdCwgdmFsdWUtPm1fdmFsdWUsIENvbnRhaW5lck5vbmUgfTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayhjb250
ZXh0UmVmLCBvYmplY3QsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHRSZWYpLCBDb250YWlu
ZXJOb25lKTsKKyAgICAgICAgICAgIHJldHVybiBPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNr
KGNvbnRleHRSZWYsIG9iamVjdCwgdmFsdWUtPm1fdmFsdWUsIENvbnRhaW5lck5vbmUpOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNr
KXsgb2JqZWN0LCB2YWx1ZUludGVybmFsVmFsdWUoW2NvbnRleHQgd3JhcHBlckZvck9iakNPYmpl
Y3Q6b2JqZWN0XSksIENvbnRhaW5lck5vbmUgfTsKKyAgICByZXR1cm4gT2JqY0NvbnRhaW5lckNv
bnZlcnRvcjo6VGFzayhjb250ZXh0UmVmLCBvYmplY3QsIHZhbHVlSW50ZXJuYWxWYWx1ZShbY29u
dGV4dCB3cmFwcGVyRm9yT2JqQ09iamVjdDpvYmplY3RdKSwgQ29udGFpbmVyTm9uZSk7CiB9CiAK
IEpTVmFsdWVSZWYgb2JqZWN0VG9WYWx1ZShKU0NvbnRleHQgKmNvbnRleHQsIGlkIG9iamVjdCkK
QEAgLTkxMCw4ICsxMDI2LDggQEAgSlNWYWx1ZVJlZiBvYmplY3RUb1ZhbHVlKEpTQ29udGV4dCAq
Y29udAogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0UmVmID0gW2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXTsKIAogICAgIE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2sgdGFzayA9
IG9iamVjdFRvVmFsdWVXaXRob3V0Q29weShjb250ZXh0LCBvYmplY3QpOwotICAgIGlmICh0YXNr
LnR5cGUgPT0gQ29udGFpbmVyTm9uZSkKLSAgICAgICAgcmV0dXJuIHRhc2suanM7CisgICAgaWYg
KHRhc2sudHlwZSgpID09IENvbnRhaW5lck5vbmUpCisgICAgICAgIHJldHVybiB0YXNrLmpzKCk7
CiAKICAgICBPYmpjQ29udGFpbmVyQ29udmVydG9yIGNvbnZlcnRvcihjb250ZXh0KTsKICAgICBj
b252ZXJ0b3IuYWRkKHRhc2spOwpAQCAtOTE5LDE5ICsxMDM1LDE5IEBAIEpTVmFsdWVSZWYgb2Jq
ZWN0VG9WYWx1ZShKU0NvbnRleHQgKmNvbnQKIAogICAgIGRvIHsKICAgICAgICAgT2JqY0NvbnRh
aW5lckNvbnZlcnRvcjo6VGFzayBjdXJyZW50ID0gY29udmVydG9yLnRha2UoKTsKLSAgICAgICAg
QVNTRVJUKEpTVmFsdWVJc09iamVjdChjb250ZXh0UmVmLCBjdXJyZW50LmpzKSk7Ci0gICAgICAg
IEpTT2JqZWN0UmVmIGpzID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHRSZWYsIGN1cnJlbnQuanMs
IDApOworICAgICAgICBBU1NFUlQoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHRSZWYsIGN1cnJlbnQu
anMoKSkpOworICAgICAgICBKU09iamVjdFJlZiBqcyA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0
UmVmLCBjdXJyZW50LmpzKCksIDApOwogCi0gICAgICAgIGlmIChjdXJyZW50LnR5cGUgPT0gQ29u
dGFpbmVyQXJyYXkpIHsKLSAgICAgICAgICAgIEFTU0VSVChbY3VycmVudC5vYmpjIGlzS2luZE9m
Q2xhc3M6W05TQXJyYXkgY2xhc3NdXSk7Ci0gICAgICAgICAgICBOU0FycmF5ICphcnJheSA9IChO
U0FycmF5ICopY3VycmVudC5vYmpjOworICAgICAgICBpZiAoY3VycmVudC50eXBlKCkgPT0gQ29u
dGFpbmVyQXJyYXkpIHsKKyAgICAgICAgICAgIEFTU0VSVChbY3VycmVudC5vYmpjKCkgaXNLaW5k
T2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKTsKKyAgICAgICAgICAgIE5TQXJyYXkgKmFycmF5ID0g
KE5TQXJyYXkgKiljdXJyZW50Lm9iamMoKTsKICAgICAgICAgICAgIE5TVUludGVnZXIgY291bnQg
PSBbYXJyYXkgY291bnRdOwogICAgICAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGluZGV4ID0gMDsg
aW5kZXggPCBjb3VudDsgKytpbmRleCkKICAgICAgICAgICAgICAgICBKU09iamVjdFNldFByb3Bl
cnR5QXRJbmRleChjb250ZXh0UmVmLCBqcywgaW5kZXgsIGNvbnZlcnRvci5jb252ZXJ0KFthcnJh
eSBvYmplY3RBdEluZGV4OmluZGV4XSksIDApOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgQVNTRVJUKGN1cnJlbnQudHlwZSA9PSBDb250YWluZXJEaWN0aW9uYXJ5KTsKLSAgICAgICAg
ICAgIEFTU0VSVChbY3VycmVudC5vYmpjIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFz
c11dKTsKLSAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IChOU0RpY3Rpb25h
cnkgKiljdXJyZW50Lm9iamM7CisgICAgICAgICAgICBBU1NFUlQoY3VycmVudC50eXBlKCkgPT0g
Q29udGFpbmVyRGljdGlvbmFyeSk7CisgICAgICAgICAgICBBU1NFUlQoW2N1cnJlbnQub2JqYygp
IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKTsKKyAgICAgICAgICAgIE5TRGlj
dGlvbmFyeSAqZGljdGlvbmFyeSA9IChOU0RpY3Rpb25hcnkgKiljdXJyZW50Lm9iamMoKTsKICAg
ICAgICAgICAgIGZvciAoaWQga2V5IGluIFtkaWN0aW9uYXJ5IGtleUVudW1lcmF0b3JdKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKFtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkg
ewogICAgICAgICAgICAgICAgICAgICBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUgPSBKU1N0cmlu
Z0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpa2V5KTsKQEAgLTk0Myw3ICsxMDU5LDcg
QEAgSlNWYWx1ZVJlZiBvYmplY3RUb1ZhbHVlKEpTQ29udGV4dCAqY29udAogICAgICAgICAKICAg
ICB9IHdoaWxlICghY29udmVydG9yLmlzV29ya0xpc3RFbXB0eSgpKTsKIAotICAgIHJldHVybiB0
YXNrLmpzOworICAgIHJldHVybiB0YXNrLmpzKCk7CiB9CiAKIEpTVmFsdWVSZWYgdmFsdWVJbnRl
cm5hbFZhbHVlKEpTVmFsdWUgKiB2YWx1ZSkK
</data>
<flag name="review"
          id="248204"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224131</attachid>
            <date>2014-02-13 16:56:18 -0800</date>
            <delta_ts>2014-02-13 16:57:18 -0800</delta_ts>
            <desc>simpler patch.</desc>
            <filename>bug-128764.patch</filename>
            <type>text/plain</type>
            <size>2543</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MDc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDE0LTAyLTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGUgSlNDb250YWluZXJDb252ZXJ0b3IgYW5kIE9iamNDb250YWluZXJDb252ZXJ0b3IgbmVlZCB0
byBwcm90ZWN0IEpTVmFsdWVSZWZzLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTI4
NzY0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIGEgdmVjdG9yIG9mIFN0cm9uZzxVbmtub3duPiByZWZlcmVuY2VzIGluIHRoZSAyIGNvbnRh
aW5lcnMsIGFuZCBhcHBlbmQKKyAgICAgICAgdGhlIG5ld2x5IGNyZWF0ZWQgSlNWYWx1ZXMgdG8g
dGhvc2UgdmVjdG9ycy4gVGhpcyB3aWxsIGtlZXAgYWxsIHRob3NlIEpTIG9iamVjdHMKKyAgICAg
ICAgYWxpdmUgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgY29udmVyc2lvbi4KKworICAgICAgICAq
IEFQSS9KU1ZhbHVlLm1tOgorICAgICAgICAoSlNDb250YWluZXJDb252ZXJ0b3I6OmFkZCk6Cisg
ICAgICAgIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjphZGQpOgorCiAyMDE0LTAyLTEzICBNYXR0
aGV3IE1pcm1hbiAgPG1taXJtYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZGVkIEdldE15QXJn
dW1lbnRzTGVuZ3RoIHRvIEZUTApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zh
bHVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5t
bQkocmV2aXNpb24gMTY0MDUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJPYmpjUnVudGlt
ZUV4dHJhcy5oIgogI2ltcG9ydCAiSlNDSW5saW5lcy5oIgogI2ltcG9ydCAiSlNDSlNWYWx1ZS5o
IgorI2ltcG9ydCAiU3Ryb25nLmgiCiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8
d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgpAQCAtNTk1
LDYgKzU5Niw3IEBAIHByaXZhdGU6CiAgICAgSlNHbG9iYWxDb250ZXh0UmVmIG1fY29udGV4dDsK
ICAgICBIYXNoTWFwPEpTVmFsdWVSZWYsIGlkPiBtX29iamVjdE1hcDsKICAgICBWZWN0b3I8VGFz
az4gbV93b3JrbGlzdDsKKyAgICBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4gbV9q
c1ZhbHVlczsKIH07CiAKIGlubGluZSBpZCBKU0NvbnRhaW5lckNvbnZlcnRvcjo6Y29udmVydChK
U1ZhbHVlUmVmIHZhbHVlKQpAQCAtNjExLDYgKzYxMyw4IEBAIGlubGluZSBpZCBKU0NvbnRhaW5l
ckNvbnZlcnRvcjo6Y29udmVydCgKIAogdm9pZCBKU0NvbnRhaW5lckNvbnZlcnRvcjo6YWRkKFRh
c2sgdGFzaykKIHsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMobV9jb250ZXh0KTsK
KyAgICBtX2pzVmFsdWVzLmFwcGVuZChKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+KGV4ZWMtPnZt
KCksIHRvSlMoZXhlYywgdGFzay5qcykpKTsKICAgICBtX29iamVjdE1hcC5hZGQodGFzay5qcywg
dGFzay5vYmpjKTsKICAgICBpZiAodGFzay50eXBlICE9IENvbnRhaW5lck5vbmUpCiAgICAgICAg
IG1fd29ya2xpc3QuYXBwZW5kKHRhc2spOwpAQCAtODE3LDYgKzgyMSw3IEBAIHByaXZhdGU6CiAg
ICAgSlNDb250ZXh0ICptX2NvbnRleHQ7CiAgICAgSGFzaE1hcDxpZCwgSlNWYWx1ZVJlZj4gbV9v
YmplY3RNYXA7CiAgICAgVmVjdG9yPFRhc2s+IG1fd29ya2xpc3Q7CisgICAgVmVjdG9yPEpTQzo6
U3Ryb25nPEpTQzo6VW5rbm93bj4+IG1fanNWYWx1ZXM7CiB9OwogCiBKU1ZhbHVlUmVmIE9iamND
b250YWluZXJDb252ZXJ0b3I6OmNvbnZlcnQoaWQgb2JqZWN0KQpAQCAtODM0LDYgKzgzOSw4IEBA
IEpTVmFsdWVSZWYgT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6Y29udmUKIAogdm9pZCBPYmpjQ29u
dGFpbmVyQ29udmVydG9yOjphZGQoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayB0YXNrKQog
eworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhtX2NvbnRleHQuSlNHbG9iYWxDb250
ZXh0UmVmKTsKKyAgICBtX2pzVmFsdWVzLmFwcGVuZChKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+
KGV4ZWMtPnZtKCksIHRvSlMoZXhlYywgdGFzay5qcykpKTsKICAgICBtX29iamVjdE1hcC5hZGQo
dGFzay5vYmpjLCB0YXNrLmpzKTsKICAgICBpZiAodGFzay50eXBlICE9IENvbnRhaW5lck5vbmUp
CiAgICAgICAgIG1fd29ya2xpc3QuYXBwZW5kKHRhc2spOwo=
</data>
<flag name="review"
          id="248223"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224143</attachid>
            <date>2014-02-13 18:28:41 -0800</date>
            <delta_ts>2014-02-13 18:31:30 -0800</delta_ts>
            <desc>Part 2 of fix.</desc>
            <filename>bug-128764b.patch</filename>
            <type>text/plain</type>
            <size>2726</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MDg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE0LTAyLTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBU
aGUgSlNDb250YWluZXJDb252ZXJ0b3IgYW5kIE9iamNDb250YWluZXJDb252ZXJ0b3IgbmVlZCB0
byBwcm90ZWN0IEpTVmFsdWVSZWZzLiBQYXJ0IDIuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8xMjg3NjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgdG9KUygpIGlzIHRoZSB3cm9uZyBjYXN0IGZ1bmN0aW9uIHRvIHVzZWQuIFdlIG5lZWQg
dG8gdXNlIHRvSlNGb3JHQygpIGluc3RlYWQuCisgICAgICAgIEFsc28gd2UgbmVlZCB0byBhY3F1
aXJlIHRoZSBKU0xvY2sgYmVjYXVzZSB0byBwcm90ZWN0IGFjY2Vzc2VkIHRvIHRoZSBTdHJvbmcK
KyAgICAgICAgaGFuZGxlIHNldC4KKworICAgICAgICAqIEFQSS9KU1ZhbHVlLm1tOgorICAgICAg
ICAoSlNDb250YWluZXJDb252ZXJ0b3I6OmFkZCk6CisgICAgICAgIChjb250YWluZXJWYWx1ZVRv
T2JqZWN0KToKKyAgICAgICAgKE9iamNDb250YWluZXJDb252ZXJ0b3I6OmFkZCk6CisgICAgICAg
IChvYmplY3RUb1ZhbHVlKToKKwogMjAxNC0wMi0xMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBTcGVjdWxhdGl2ZSBSZWxlYXNlIGJ1aWxkIGZpeCBhZnRlciBy
MTY0MDc3LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQkocmV2aXNpb24g
MTY0MDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC02MTQsNyArNjE0LDcgQEAgaW5saW5lIGlkIEpTQ29udGFpbmVyQ29udmVydG9y
Ojpjb252ZXJ0KAogdm9pZCBKU0NvbnRhaW5lckNvbnZlcnRvcjo6YWRkKFRhc2sgdGFzaykKIHsK
ICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMobV9jb250ZXh0KTsKLSAgICBtX2pzVmFs
dWVzLmFwcGVuZChKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+KGV4ZWMtPnZtKCksIHRvSlMoZXhl
YywgdGFzay5qcykpKTsKKyAgICBtX2pzVmFsdWVzLmFwcGVuZChKU0M6OlN0cm9uZzxKU0M6OlVu
a25vd24+KGV4ZWMtPnZtKCksIHRvSlNGb3JHQyhleGVjLCB0YXNrLmpzKSkpOwogICAgIG1fb2Jq
ZWN0TWFwLmFkZCh0YXNrLmpzLCB0YXNrLm9iamMpOwogICAgIGlmICh0YXNrLnR5cGUgIT0gQ29u
dGFpbmVyTm9uZSkKICAgICAgICAgbV93b3JrbGlzdC5hcHBlbmQodGFzayk7CkBAIC02NzEsNiAr
NjcxLDcgQEAgc3RhdGljIEpTQ29udGFpbmVyQ29udmVydG9yOjpUYXNrIHZhbHVlVAogc3RhdGlj
IGlkIGNvbnRhaW5lclZhbHVlVG9PYmplY3QoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpT
Q29udGFpbmVyQ29udmVydG9yOjpUYXNrIHRhc2spCiB7CiAgICAgQVNTRVJUKHRhc2sudHlwZSAh
PSBDb250YWluZXJOb25lKTsKKyAgICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9KUyhj
b250ZXh0KSk7CiAgICAgSlNDb250YWluZXJDb252ZXJ0b3IgY29udmVydG9yKGNvbnRleHQpOwog
ICAgIGNvbnZlcnRvci5hZGQodGFzayk7CiAgICAgQVNTRVJUKCFjb252ZXJ0b3IuaXNXb3JrTGlz
dEVtcHR5KCkpOwpAQCAtODQwLDcgKzg0MSw3IEBAIEpTVmFsdWVSZWYgT2JqY0NvbnRhaW5lckNv
bnZlcnRvcjo6Y29udmUKIHZvaWQgT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6YWRkKE9iamNDb250
YWluZXJDb252ZXJ0b3I6OlRhc2sgdGFzaykKIHsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9
IHRvSlMobV9jb250ZXh0LkpTR2xvYmFsQ29udGV4dFJlZik7Ci0gICAgbV9qc1ZhbHVlcy5hcHBl
bmQoSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPihleGVjLT52bSgpLCB0b0pTKGV4ZWMsIHRhc2su
anMpKSk7CisgICAgbV9qc1ZhbHVlcy5hcHBlbmQoSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPihl
eGVjLT52bSgpLCB0b0pTRm9yR0MoZXhlYywgdGFzay5qcykpKTsKICAgICBtX29iamVjdE1hcC5h
ZGQodGFzay5vYmpjLCB0YXNrLmpzKTsKICAgICBpZiAodGFzay50eXBlICE9IENvbnRhaW5lck5v
bmUpCiAgICAgICAgIG1fd29ya2xpc3QuYXBwZW5kKHRhc2spOwpAQCAtOTIwLDYgKzkyMSw3IEBA
IEpTVmFsdWVSZWYgb2JqZWN0VG9WYWx1ZShKU0NvbnRleHQgKmNvbnQKICAgICBpZiAodGFzay50
eXBlID09IENvbnRhaW5lck5vbmUpCiAgICAgICAgIHJldHVybiB0YXNrLmpzOwogCisgICAgSlND
OjpBUElFbnRyeVNoaW0gZW50cnlTaGltKHRvSlMoY29udGV4dFJlZikpOwogICAgIE9iamNDb250
YWluZXJDb252ZXJ0b3IgY29udmVydG9yKGNvbnRleHQpOwogICAgIGNvbnZlcnRvci5hZGQodGFz
ayk7CiAgICAgQVNTRVJUKCFjb252ZXJ0b3IuaXNXb3JrTGlzdEVtcHR5KCkpOwo=
</data>
<flag name="review"
          id="248236"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>