<?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>47701</bug_id>
          
          <creation_ts>2010-10-14 16:51:07 -0700</creation_ts>
          <short_desc>Support appending an ArrayBuffer object in BlobBuilder</short_desc>
          <delta_ts>2010-10-25 13:46:49 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jian Li">jianli</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          <cc>dimich</cc>
    
    <cc>ericu</cc>
    
    <cc>kinuko</cc>
    
    <cc>levin</cc>
    
    <cc>loki</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>294467</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-10-14 16:51:07 -0700</bug_when>
    <thetext>We need to support appending an ArrayBuffer object in BlobBuilder per the latest File API: Writer spec:
  http://dev.w3.org/2009/dap/file-system/file-writer.html#idl-def-BlobBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294974</commentid>
    <comment_count>1</comment_count>
      <attachid>70908</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-10-15 15:52:03 -0700</bug_when>
    <thetext>Created attachment 70908
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294980</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-15 15:54:50 -0700</bug_when>
    <thetext>Attachment 70908 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/fileapi/BlobBuilder.cpp:44:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294988</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-15 16:08:59 -0700</bug_when>
    <thetext>Attachment 70908 did not build on qt:
Build output: http://queues.webkit.org/results/4388054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294994</commentid>
    <comment_count>4</comment_count>
      <attachid>70913</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-10-15 16:17:31 -0700</bug_when>
    <thetext>Created attachment 70913
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295845</commentid>
    <comment_count>5</comment_count>
      <attachid>70913</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-10-18 17:01:00 -0700</bug_when>
    <thetext>Comment on attachment 70913
Proposed Patch

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

This change looks good to me.

&gt; WebCore/fileapi/BlobBuilder.cpp:68
&gt; +        return false;

I&apos;ve lost the track of why we&apos;ve been returning bool from those append methods (I&apos;m afraid it&apos;s from my code).  If there&apos;re no other reasons maybe we can convert all the append to return void?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295854</commentid>
    <comment_count>6</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-10-18 17:19:57 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 70913 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70913&amp;action=review
&gt; 
&gt; This change looks good to me.
&gt; 
&gt; &gt; WebCore/fileapi/BlobBuilder.cpp:68
&gt; &gt; +        return false;
&gt; 
&gt; I&apos;ve lost the track of why we&apos;ve been returning bool from those append methods (I&apos;m afraid it&apos;s from my code).  If there&apos;re no other reasons maybe we can convert all the append to return void?

I think we can remove the return type because I am not seeing it is used from the append method in JS/V8BlobBuilder.cpp. I am going to submit a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295860</commentid>
    <comment_count>7</comment_count>
      <attachid>71106</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-10-18 17:36:43 -0700</bug_when>
    <thetext>Created attachment 71106
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296497</commentid>
    <comment_count>8</comment_count>
      <attachid>71106</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-10-19 16:09:20 -0700</bug_when>
    <thetext>Comment on attachment 71106
Proposed Patch

This looks good to me.  Thanks for fixing append&apos;s return types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297800</commentid>
    <comment_count>9</comment_count>
      <attachid>71106</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-10-21 19:54:40 -0700</bug_when>
    <thetext>Comment on attachment 71106
Proposed Patch

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

&gt; WebCore/ChangeLog:7
&gt; +

It looks like bool return values have been removed. I guess this is because all functions returned true and the return values weren&apos;t used.

It would be nice to have a small comment about this (since it really isn&apos;t covered by the title).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299090</commentid>
    <comment_count>10</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-10-25 13:46:49 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/70488.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70908</attachid>
            <date>2010-10-15 15:52:03 -0700</date>
            <delta_ts>2010-10-15 16:17:31 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>47701</filename>
            <type>text/plain</type>
            <size>12625</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmYmM4MDhkLi44YWY1YTk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMTAt
MTUgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgYXBwZW5kaW5nIGFuIEFycmF5QnVm
ZmVyIG9iamVjdCBpbiBCbG9iQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MDEKKworICAgICAgICAqIGZhc3QvZmlsZXMvcmVhZC1ibG9i
LWFzeW5jLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzL3Jlc291cmNlcy9yZWFk
LWJsb2ItdGVzdC1jYXNlcy5qczoKKyAgICAgICAgKHRlc3RSZWFkaW5nU2luZ2xlQXJyYXlCdWZm
ZXJCbG9iKToKKyAgICAgICAgKHRlc3RSZWFkaW5nU2xpY2VkQXJyYXlCdWZmZXJCbG9iKToKKyAg
ICAgICAgKHRlc3RSZWFkaW5nTXVsdGlwbGVBcnJheUJ1ZmZlckJsb2IpOgorICAgICAgICAodGVz
dFJlYWRpbmdIeWJyaWRCbG9iKToKKyAgICAgICAgKHRlc3RSZWFkaW5nU2xpY2VkSHlicmlkQmxv
Yik6CisgICAgICAgICh0ZXN0UmVhZGluZ1RyaXBsZVNsaWNlZEh5YnJpZEJsb2IpOgorCiAyMDEw
LTEwLTE1ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgQ2hyb21pdW0gZXhwZWN0YXRpb25zIHVwZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZmlsZXMvcmVhZC1ibG9iLWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXMvcmVhZC1ibG9iLWFzeW5jLWV4cGVjdGVkLnR4dAppbmRleCAyN2Q4YzBh
Li43MDA3MGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3JlYWQtYmxvYi1h
c3luYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZWFkLWJsb2It
YXN5bmMtZXhwZWN0ZWQudHh0CkBAIC03NCw2ICs3NCwxNSBAQCByZWFkeVN0YXRlOiAyCiByZXN1
bHQgc2l6ZTogMjkKIHJlc3VsdDogZGF0YTp0eXBlL2ZvbztiYXNlNjQsUm1seWMzUT0KIFJlY2Vp
dmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBzaW5nbGUg
QXJyYXlCdWZmZXIKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVh
ZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNp
emU6IDkKK3Jlc3VsdDogMHgwIDB4MSAweDIgMHg4MCAweDgxIDB4ODIgMHhmZCAweGZlIDB4ZmYK
K1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKIFRlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBz
bGljZWQgZmlsZQogcmVhZHlTdGF0ZTogMAogUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CkBAIC05
Miw2ICsxMDEsMTUgQEAgcmVhZHlTdGF0ZTogMgogcmVzdWx0IHNpemU6IDQKIHJlc3VsdDogaXJz
dAogUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5n
IHNsaWNlZCBBcnJheUJ1ZmZlcgorcmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2
ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCity
ZXN1bHQgc2l6ZTogOAorcmVzdWx0OiAweDEgMHgyIDB4ODAgMHg4MSAweDgyIDB4ZmQgMHhmZSAw
eGZmCitSZWNlaXZlZCBsb2FkZW5kIGV2ZW50CiBUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5p
bmcgbXVsdGlwbGUgZmlsZXMKIHJlYWR5U3RhdGU6IDAKIFJlY2VpdmVkIGxvYWRzdGFydCBldmVu
dApAQCAtMTEwLDE0ICsxMjgsMjMgQEAgcmVhZHlTdGF0ZTogMgogcmVzdWx0IHNpemU6IDE2CiBy
ZXN1bHQ6IEZpcnN0U2Vjb25kVGhpcmQKIFJlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVh
ZGluZyBhIGJsb2IgY29udGFpbmluZyBtdWx0aXBsZSBBcnJheUJ1ZmZlcgorcmVhZHlTdGF0ZTog
MAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2Fk
IGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogOQorcmVzdWx0OiAweDAgMHgxIDB4
MiAweDgwIDB4ODEgMHg4MiAweGZkIDB4ZmUgMHhmZgorUmVjZWl2ZWQgbG9hZGVuZCBldmVudAog
VGVzdCByZWFkaW5nIGEgaHlicmlkIGJsb2IKIHJlYWR5U3RhdGU6IDAKIFJlY2VpdmVkIGxvYWRz
dGFydCBldmVudAogcmVhZHlTdGF0ZTogMQogUmVjZWl2ZWQgbG9hZCBldmVudAogcmVhZHlTdGF0
ZTogMgotcmVzdWx0IHNpemU6IDM1Ci1yZXN1bHQ6IEZpcnN0SGVsbG9TZWNvbmRXb25kZXJmdWxX
b3JsZFRoaXJkCityZXN1bHQgc2l6ZTogMzgKK3Jlc3VsdDogRmlyc3RIZWxsb1NlY29uZFdvbmRl
cmZ1bFdvcmxkVGhpcmQwMTIKIFJlY2VpdmVkIGxvYWRlbmQgZXZlbnQKIFRlc3QgcmVhZGluZyBh
IHNsaWNlZCBoeWJyaWQgYmxvYgogcmVhZHlTdGF0ZTogMApAQCAtMTM1LDcgKzE2Miw3IEBAIHJl
YWR5U3RhdGU6IDEKIFJlY2VpdmVkIGxvYWQgZXZlbnQKIHJlYWR5U3RhdGU6IDIKIHJlc3VsdCBz
aXplOiAzMAotcmVzdWx0OiBvbmRXb25kZXJmdWxXb3JsZFRoaXJkRm9vbG9TZWMKK3Jlc3VsdDog
b25kV29uZGVyZnVsV29ybGRUaGlyZDAxMkZvb2xvCiBSZWNlaXZlZCBsb2FkZW5kIGV2ZW50CiBE
T05FCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVzb3VyY2VzL3JlYWQt
YmxvYi10ZXN0LWNhc2VzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvcmVh
ZC1ibG9iLXRlc3QtY2FzZXMuanMKaW5kZXggYTU3OWVhYS4uMjJiZjA0OCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvcmVhZC1ibG9iLXRlc3QtY2FzZXMuanMK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvcmVhZC1ibG9iLXRlc3QtY2Fz
ZXMuanMKQEAgLTgsMTAgKzgsMTMgQEAgdmFyIHRlc3RDYXNlcyA9IFsKICAgICAidGVzdFJlYWRp
bmdTaW5nbGVUZXh0QmxvYiIsCiAgICAgInRlc3RSZWFkaW5nU2luZ2xlVGV4dEJsb2JBc0RhdGFV
UkwiLAogICAgICJ0ZXN0UmVhZGluZ1NpbmdsZVRleHRCbG9iQXNEYXRhVVJMMiIsCisgICAgInRl
c3RSZWFkaW5nU2luZ2xlQXJyYXlCdWZmZXJCbG9iIiwKICAgICAidGVzdFJlYWRpbmdTbGljZWRG
aWxlQmxvYiIsCiAgICAgInRlc3RSZWFkaW5nU2xpY2VkVGV4dEJsb2IiLAorICAgICJ0ZXN0UmVh
ZGluZ1NsaWNlZEFycmF5QnVmZmVyQmxvYiIsCiAgICAgInRlc3RSZWFkaW5nTXVsdGlwbGVGaWxl
QmxvYiIsCiAgICAgInRlc3RSZWFkaW5nTXVsdGlwbGVUZXh0QmxvYiIsCisgICAgInRlc3RSZWFk
aW5nTXVsdGlwbGVBcnJheUJ1ZmZlckJsb2IiLAogICAgICJ0ZXN0UmVhZGluZ0h5YnJpZEJsb2Ii
LAogICAgICJ0ZXN0UmVhZGluZ1NsaWNlZEh5YnJpZEJsb2IiLAogICAgICJ0ZXN0UmVhZGluZ1Ry
aXBsZVNsaWNlZEh5YnJpZEJsb2IiLApAQCAtOTEsNiArOTQsMTQgQEAgZnVuY3Rpb24gdGVzdFJl
YWRpbmdTaW5nbGVUZXh0QmxvYkFzRGF0YVVSTDIodGVzdEZpbGVzKQogICAgIHJlYWRCbG9iQXNE
YXRhVVJMKHRlc3RGaWxlcywgYmxvYik7CiB9CiAKK2Z1bmN0aW9uIHRlc3RSZWFkaW5nU2luZ2xl
QXJyYXlCdWZmZXJCbG9iKHRlc3RGaWxlcykKK3sKKyAgICBsb2coIlRlc3QgcmVhZGluZyBhIGJs
b2IgY29udGFpbmluZyBzaW5nbGUgQXJyYXlCdWZmZXIiKTsKKyAgICB2YXIgYXJyYXkgPSBuZXcg
VWludDhBcnJheShbMCwgMSwgMiwgMTI4LCAxMjksIDEzMCwgMjUzLCAyNTQsIDI1NV0pOworICAg
IHZhciBibG9iID0gYnVpbGRCbG9iKFthcnJheS5idWZmZXJdKTsKKyAgICByZWFkQmxvYkFzQmlu
YXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxvYik7Cit9CisKIGZ1bmN0aW9uIHRlc3RSZWFkaW5nU2xp
Y2VkRmlsZUJsb2IodGVzdEZpbGVzKQogewogICAgIGxvZygiVGVzdCByZWFkaW5nIGEgYmxvYiBj
b250YWluaW5nIHNsaWNlZCBmaWxlIik7CkBAIC0xMDYsNiArMTE3LDE1IEBAIGZ1bmN0aW9uIHRl
c3RSZWFkaW5nU2xpY2VkVGV4dEJsb2IodGVzdEZpbGVzKQogICAgIHJlYWRCbG9iQXNCaW5hcnlT
dHJpbmcodGVzdEZpbGVzLCBibG9iKTsKIH0KIAorZnVuY3Rpb24gdGVzdFJlYWRpbmdTbGljZWRB
cnJheUJ1ZmZlckJsb2IodGVzdEZpbGVzKQoreworICAgIGxvZygiVGVzdCByZWFkaW5nIGEgYmxv
YiBjb250YWluaW5nIHNsaWNlZCBBcnJheUJ1ZmZlciIpOworICAgIHZhciBhcnJheSA9IG5ldyBV
aW50OEFycmF5KFswLCAxLCAyLCAxMjgsIDEyOSwgMTMwLCAyNTMsIDI1NCwgMjU1XSk7CisgICAg
dmFyIGJsb2IgPSBidWlsZEJsb2IoW2FycmF5LmJ1ZmZlcl0pCisgICAgYmxvYiA9IGJsb2Iuc2xp
Y2UoMSwgMTApOworICAgIHJlYWRCbG9iQXNCaW5hcnlTdHJpbmcodGVzdEZpbGVzLCBibG9iKTsK
K30KKwogZnVuY3Rpb24gdGVzdFJlYWRpbmdNdWx0aXBsZUZpbGVCbG9iKHRlc3RGaWxlcykKIHsK
ICAgICBsb2coIlRlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBtdWx0aXBsZSBmaWxlcyIp
OwpAQCAtMTIwLDE3ICsxNDAsMjkgQEAgZnVuY3Rpb24gdGVzdFJlYWRpbmdNdWx0aXBsZVRleHRC
bG9iKHRlc3RGaWxlcykKICAgICByZWFkQmxvYkFzQmluYXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxv
Yik7CiB9CiAKK2Z1bmN0aW9uIHRlc3RSZWFkaW5nTXVsdGlwbGVBcnJheUJ1ZmZlckJsb2IodGVz
dEZpbGVzKQoreworICAgIGxvZygiVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5nIG11bHRp
cGxlIEFycmF5QnVmZmVyIik7CisgICAgdmFyIGFycmF5MSA9IG5ldyBVaW50OEFycmF5KFswLCAx
LCAyXSk7CisgICAgdmFyIGFycmF5MiA9IG5ldyBVaW50OEFycmF5KFsxMjgsIDEyOSwgMTMwXSk7
CisgICAgdmFyIGFycmF5MyA9IG5ldyBVaW50OEFycmF5KFsyNTMsIDI1NCwgMjU1XSk7CisgICAg
dmFyIGJsb2IgPSBidWlsZEJsb2IoW2FycmF5MS5idWZmZXIsIGFycmF5Mi5idWZmZXIsIGFycmF5
My5idWZmZXJdKTsKKyAgICByZWFkQmxvYkFzQmluYXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxvYik7
Cit9CisKIGZ1bmN0aW9uIHRlc3RSZWFkaW5nSHlicmlkQmxvYih0ZXN0RmlsZXMpCiB7CiAgICAg
bG9nKCJUZXN0IHJlYWRpbmcgYSBoeWJyaWQgYmxvYiIpOwotICAgIHZhciBibG9iID0gYnVpbGRC
bG9iKFsnRmlyc3QnLCB0ZXN0RmlsZXNbJ2ZpbGUxJ10sICdTZWNvbmQnLCB0ZXN0RmlsZXNbJ2Zp
bGUyJ10sIHRlc3RGaWxlc1snZmlsZTMnXSwgJ1RoaXJkJ10pOworICAgIHZhciBhcnJheSA9IG5l
dyBVaW50OEFycmF5KFs0OCwgNDksIDUwXSk7CisgICAgdmFyIGJsb2IgPSBidWlsZEJsb2IoWydG
aXJzdCcsIHRlc3RGaWxlc1snZmlsZTEnXSwgJ1NlY29uZCcsIHRlc3RGaWxlc1snZmlsZTInXSwg
dGVzdEZpbGVzWydmaWxlMyddLCAnVGhpcmQnLCBhcnJheS5idWZmZXJdKTsKICAgICByZWFkQmxv
YkFzQmluYXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxvYik7CiB9CiAKIGZ1bmN0aW9uIHRlc3RSZWFk
aW5nU2xpY2VkSHlicmlkQmxvYih0ZXN0RmlsZXMpCiB7CiAgICAgbG9nKCJUZXN0IHJlYWRpbmcg
YSBzbGljZWQgaHlicmlkIGJsb2IiKTsKLSAgICB2YXIgYmxvYiA9IGJ1aWxkQmxvYihbJ0ZpcnN0
JywgdGVzdEZpbGVzWydmaWxlMSddLCAnU2Vjb25kJywgdGVzdEZpbGVzWydmaWxlMiddLCB0ZXN0
RmlsZXNbJ2ZpbGUzJ10sICdUaGlyZCddKTsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJh
eShbNDgsIDQ5LCA1MF0pOworICAgIHZhciBibG9iID0gYnVpbGRCbG9iKFsnRmlyc3QnLCB0ZXN0
RmlsZXNbJ2ZpbGUxJ10sICdTZWNvbmQnLCB0ZXN0RmlsZXNbJ2ZpbGUyJ10sIHRlc3RGaWxlc1sn
ZmlsZTMnXSwgJ1RoaXJkJywgYXJyYXkuYnVmZmVyXSk7CiAgICAgdmFyIGJsb2IgPSBibG9iLnNs
aWNlKDcsIDEyKTsKICAgICByZWFkQmxvYkFzQmluYXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxvYik7
CiB9CkBAIC0xMzksNyArMTcxLDggQEAgZnVuY3Rpb24gdGVzdFJlYWRpbmdUcmlwbGVTbGljZWRI
eWJyaWRCbG9iKHRlc3RGaWxlcykKIHsKICAgICBsb2coIlRlc3QgcmVhZGluZyBhIHRyaXBsZS1z
bGljZWQgaHlicmlkIGJsb2IiKTsKICAgICB2YXIgYnVpbGRlciA9IG5ldyBCbG9iQnVpbGRlcigp
OwotICAgIHZhciBibG9iID0gYnVpbGRCbG9iKFsnRmlyc3QnLCB0ZXN0RmlsZXNbJ2ZpbGUxJ10u
c2xpY2UoMSwgMTApLCB0ZXN0RmlsZXNbJ2VtcHR5LWZpbGUnXSwgJ1NlY29uZCcsIHRlc3RGaWxl
c1snZmlsZTInXSwgdGVzdEZpbGVzWydmaWxlMyddLCAnVGhpcmQnXSwgdW5kZWZpbmVkLCBidWls
ZGVyKTsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShbNDgsIDQ5LCA1MF0pOworICAg
IHZhciBibG9iID0gYnVpbGRCbG9iKFsnRmlyc3QnLCB0ZXN0RmlsZXNbJ2ZpbGUxJ10uc2xpY2Uo
MSwgMTApLCB0ZXN0RmlsZXNbJ2VtcHR5LWZpbGUnXSwgJ1NlY29uZCcsIHRlc3RGaWxlc1snZmls
ZTInXSwgdGVzdEZpbGVzWydmaWxlMyddLCAnVGhpcmQnLCBhcnJheS5idWZmZXJdLCB1bmRlZmlu
ZWQsIGJ1aWxkZXIpOwogICAgIHZhciBibG9iID0gYmxvYi5zbGljZSg3LCAxMik7CiAgICAgdmFy
IGJsb2IyID0gYnVpbGRCbG9iKFsnRm9vJywgYmxvYiwgJ0JhciddLCB1bmRlZmluZWQsIGJ1aWxk
ZXIpOwogICAgIHZhciBibG9iMiA9IGJsb2IyLnNsaWNlKDEyLCAzMCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY2OTgxMDQuLjdhNzA3
Y2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMTAtMTUgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1
cHBvcnQgYXBwZW5kaW5nIGFuIEFycmF5QnVmZmVyIG9iamVjdCBpbiBCbG9iQnVpbGRlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MDEKKworICAg
ICAgICBUZXN0IGNhc2VzIGhhdmUgYmVlbiBhZGRlZCB0byByZWFkLWJsb2ItdGVzdC1jYXNlcy5q
cy4KKworICAgICAgICAqIGZpbGVhcGkvQmxvYkJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYkJ1aWxkZXI6OmdldEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpCbG9iQnVpbGRl
cjo6YXBwZW5kKToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JCdWlsZGVyLmg6CisgICAgICAgICog
ZmlsZWFwaS9CbG9iQnVpbGRlci5pZGw6CisKIDIwMTAtMTAtMTUgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIgaW4g
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzczNj4uCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkJ1aWxkZXIuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0Js
b2JCdWlsZGVyLmNwcAppbmRleCA2OTQ0M2E1Li5lNjgwMTY5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYkJ1aWxkZXIuY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9CbG9iQnVpbGRl
ci5jcHAKQEAgLTMyLDEyICszMiwxNiBAQAogCiAjaW5jbHVkZSAiQmxvYkJ1aWxkZXIuaCIKIAor
I2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiTGluZUVuZGluZy5o
IgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00NiwzMiArNTAsMzQgQEAgQmxvYkJ1aWxkZXI6OkJsb2JCdWlsZGVyKCkKIHsKIH0K
IAorVmVjdG9yPGNoYXI+JiBCbG9iQnVpbGRlcjo6Z2V0QnVmZmVyKCkKK3sKKyAgICAvLyBJZiB0
aGUgbGFzdCBpdGVtIGlzIG5vdCBhIGRhdGEgaXRlbSwgY3JlYXRlIG9uZS4gT3RoZXJ3aXNlLCB3
ZSBzaW1wbHkgYXBwZW5kIHRoZSBuZXcgc3RyaW5nIHRvIHRoZSBsYXN0IGRhdGEgaXRlbS4KKyAg
ICBpZiAobV9pdGVtcy5pc0VtcHR5KCkgfHwgbV9pdGVtc1ttX2l0ZW1zLnNpemUoKSAtIDFdLnR5
cGUgIT0gQmxvYkRhdGFJdGVtOjpEYXRhKQorICAgICAgICBtX2l0ZW1zLmFwcGVuZChCbG9iRGF0
YUl0ZW0oUmF3RGF0YTo6Y3JlYXRlKCkpKTsKKworICAgIHJldHVybiAqbV9pdGVtc1ttX2l0ZW1z
LnNpemUoKSAtIDFdLmRhdGEtPm11dGFibGVEYXRhKCk7Cit9CisKIGJvb2wgQmxvYkJ1aWxkZXI6
OmFwcGVuZChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgZW5kaW5nVHlwZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgYm9vbCBpc0VuZGluZ1R5cGVUcmFuc3BhcmVudCA9IGVu
ZGluZ1R5cGUgPT0gInRyYW5zcGFyZW50IjsKICAgICBib29sIGlzRW5kaW5nVHlwZU5hdGl2ZSA9
IGVuZGluZ1R5cGUgPT0gIm5hdGl2ZSI7CiAgICAgaWYgKCFlbmRpbmdUeXBlLmlzRW1wdHkoKSAm
JiAhaXNFbmRpbmdUeXBlVHJhbnNwYXJlbnQgJiYgIWlzRW5kaW5nVHlwZU5hdGl2ZSkgewogICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgQ1N0cmluZyB1dGY4VGV4dCA9IFVURjhFbmNvZGluZygpLmVu
Y29kZSh0ZXh0LmNoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgRW50aXRpZXNGb3JVbmVuY29k
YWJsZXMpOwogCi0gICAgLy8gSWYgdGhlIGxhc3QgaXRlbSBpcyBub3QgYSBkYXRhIGl0ZW0sIGNy
ZWF0ZSBvbmUuIE90aGVyd2lzZSwgd2Ugc2ltcGx5IGFwcGVuZCB0aGUgbmV3IHN0cmluZyB0byB0
aGUgbGFzdCBkYXRhIGl0ZW0uCi0gICAgaWYgKG1faXRlbXMuaXNFbXB0eSgpIHx8IG1faXRlbXNb
bV9pdGVtcy5zaXplKCkgLSAxXS50eXBlICE9IEJsb2JEYXRhSXRlbTo6RGF0YSkKLSAgICAgICAg
bV9pdGVtcy5hcHBlbmQoQmxvYkRhdGFJdGVtKFJhd0RhdGE6OmNyZWF0ZSgpKSk7Ci0KLSAgICBp
ZiAoIXV0ZjhUZXh0LmlzTnVsbCgpKSB7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiYgYnVmZmVyID0g
Km1faXRlbXNbbV9pdGVtcy5zaXplKCkgLSAxXS5kYXRhLT5tdXRhYmxlRGF0YSgpOwotICAgICAg
ICBzaXplX3Qgb2xkU2l6ZSA9IGJ1ZmZlci5zaXplKCk7Ci0KLSAgICAgICAgaWYgKGlzRW5kaW5n
VHlwZU5hdGl2ZSkKLSAgICAgICAgICAgIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9OYXRpdmUodXRm
OFRleHQsIGJ1ZmZlcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQo
dXRmOFRleHQuZGF0YSgpLCB1dGY4VGV4dC5sZW5ndGgoKSk7Ci0gICAgICAgIG1fc2l6ZSArPSBi
dWZmZXIuc2l6ZSgpIC0gb2xkU2l6ZTsKLSAgICB9CisgICAgVmVjdG9yPGNoYXI+JiBidWZmZXIg
PSBnZXRCdWZmZXIoKTsKKyAgICBzaXplX3Qgb2xkU2l6ZSA9IGJ1ZmZlci5zaXplKCk7CiAKKyAg
ICBpZiAoaXNFbmRpbmdUeXBlTmF0aXZlKQorICAgICAgICBub3JtYWxpemVMaW5lRW5kaW5nc1Rv
TmF0aXZlKHV0ZjhUZXh0LCBidWZmZXIpOworICAgIGVsc2UKKyAgICAgICAgYnVmZmVyLmFwcGVu
ZCh1dGY4VGV4dC5kYXRhKCksIHV0ZjhUZXh0Lmxlbmd0aCgpKTsKKyAgICBtX3NpemUgKz0gYnVm
ZmVyLnNpemUoKSAtIG9sZFNpemU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTgwLDEyICs4
NiwyMSBAQCBib29sIEJsb2JCdWlsZGVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gYXBwZW5kKHRleHQsIFN0cmluZygpLCBlYyk7CiB9
CiAKLWJvb2wgQmxvYkJ1aWxkZXI6OmFwcGVuZChQYXNzUmVmUHRyPEJsb2I+IGJsb2IpCitib29s
IEJsb2JCdWlsZGVyOjphcHBlbmQoQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyKQoreworICAgIFZl
Y3RvcjxjaGFyPiYgYnVmZmVyID0gZ2V0QnVmZmVyKCk7CisgICAgc2l6ZV90IG9sZFNpemUgPSBi
dWZmZXIuc2l6ZSgpOworICAgIGJ1ZmZlci5hcHBlbmQoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBt
X3NpemUgKz0gYnVmZmVyLnNpemUoKSAtIG9sZFNpemU7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgQmxvYkJ1aWxkZXI6OmFwcGVuZChCbG9iKiBibG9iKQogewogICAgIGlmIChibG9iLT5p
c0ZpbGUoKSkgewogICAgICAgICAvLyBJZiB0aGUgYmxvYiBpcyBmaWxlIHRoYXQgaXMgbm90IHNu
YXBzaG90ZWQsIGNhcHR1cmUgdGhlIHNuYXBzaG90IG5vdy4KICAgICAgICAgLy8gRklYTUU6IFRo
aXMgaW52b2x2ZXMgc3luY2hyb25vdXMgZmlsZSBvcGVyYXRpb24uIFdlIG5lZWQgdG8gZmlndXJl
IG91dCBob3cgdG8gbWFrZSBpdCBhc3luY2hyb25vdXMuCi0gICAgICAgIEZpbGUqIGZpbGUgPSBz
dGF0aWNfY2FzdDxGaWxlKj4oYmxvYi5nZXQoKSk7CisgICAgICAgIEZpbGUqIGZpbGUgPSBzdGF0
aWNfY2FzdDxGaWxlKj4oYmxvYik7CiAgICAgICAgIGxvbmcgbG9uZyBzbmFwc2hvdFNpemU7CiAg
ICAgICAgIGRvdWJsZSBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWU7CiAgICAgICAgIGZpbGUtPmNh
cHR1cmVTbmFwc2hvdChzbmFwc2hvdFNpemUsIHNuYXBzaG90TW9kaWZpY2F0aW9uVGltZSk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkJ1aWxkZXIuaCBiL1dlYkNvcmUvZmlsZWFw
aS9CbG9iQnVpbGRlci5oCmluZGV4IGE5ODFlMzEuLmJkOTMxZjEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZmlsZWFwaS9CbG9iQnVpbGRlci5oCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9CbG9iQnVpbGRl
ci5oCkBAIC0zMiwxNCArMzIsMTIgQEAKICNkZWZpbmUgQmxvYkJ1aWxkZXJfaAogCiAjaW5jbHVk
ZSAiQmxvYkRhdGEuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXJyYXlCdWZmZXI7
CiBjbGFzcyBCbG9iOwogY2xhc3MgVGV4dEVuY29kaW5nOwogCkBAIC00OSwxNSArNDcsMTggQEAg
Y2xhc3MgQmxvYkJ1aWxkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxCbG9iQnVpbGRlcj4gewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsb2JCdWlsZGVyPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgQmxvYkJ1aWxkZXIoKSk7IH0KIAotICAgIGJvb2wgYXBwZW5kKFBhc3NS
ZWZQdHI8QmxvYj4pOworICAgIGJvb2wgYXBwZW5kKEJsb2IqKTsKICAgICBib29sIGFwcGVuZChj
b25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGFwcGVuZChjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgZW5kaW5nLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgYm9vbCBhcHBlbmQoQXJyYXlCdWZmZXIqKTsKIAogICAgIFBhc3NSZWZQdHI8QmxvYj4gZ2V0
QmxvYihjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0gU3RyaW5nKCkpOwogCiBwcml2YXRlOgog
ICAgIEJsb2JCdWlsZGVyKCk7CiAKKyAgICBWZWN0b3I8Y2hhcj4mIGdldEJ1ZmZlcigpOworCiAg
ICAgbG9uZyBsb25nIG1fc2l6ZTsKICAgICBCbG9iRGF0YUl0ZW1MaXN0IG1faXRlbXM7CiB9Owpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0Jsb2JCdWlsZGVyLmlkbCBiL1dlYkNvcmUvZmls
ZWFwaS9CbG9iQnVpbGRlci5pZGwKaW5kZXggMGRhOTMxNC4uOGY1MDQ5ZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9maWxlYXBpL0Jsb2JCdWlsZGVyLmlkbAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvQmxv
YkJ1aWxkZXIuaWRsCkBAIC0zOCw2ICszOCw5IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgQmxv
YiBnZXRCbG9iKGluIFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmlu
Z10gRE9NU3RyaW5nIGNvbnRlbnRUeXBlKTsKICNlbmRpZgogICAgICAgICB2b2lkIGFwcGVuZChp
biBCbG9iIGJsb2IpOworI2lmIGRlZmluZWQoRU5BQkxFX0JMT0IpICYmIEVOQUJMRV9CTE9CCisg
ICAgICAgIHZvaWQgYXBwZW5kKGluIEFycmF5QnVmZmVyIGFycmF5QnVmZmVyKTsKKyNlbmRpZgog
ICAgICAgICB2b2lkIGFwcGVuZChpbiBET01TdHJpbmcgdmFsdWUsIGluIFtPcHRpb25hbCwgQ29u
dmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIGVuZGluZ3MpIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogCg==
</data>
<flag name="commit-queue"
          id="60840"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70913</attachid>
            <date>2010-10-15 16:17:31 -0700</date>
            <delta_ts>2010-10-18 17:36:43 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>47701_2</filename>
            <type>text/plain</type>
            <size>12677</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmYmM4MDhkLi44YWY1YTk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMTAt
MTUgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgYXBwZW5kaW5nIGFuIEFycmF5QnVm
ZmVyIG9iamVjdCBpbiBCbG9iQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MDEKKworICAgICAgICAqIGZhc3QvZmlsZXMvcmVhZC1ibG9i
LWFzeW5jLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzL3Jlc291cmNlcy9yZWFk
LWJsb2ItdGVzdC1jYXNlcy5qczoKKyAgICAgICAgKHRlc3RSZWFkaW5nU2luZ2xlQXJyYXlCdWZm
ZXJCbG9iKToKKyAgICAgICAgKHRlc3RSZWFkaW5nU2xpY2VkQXJyYXlCdWZmZXJCbG9iKToKKyAg
ICAgICAgKHRlc3RSZWFkaW5nTXVsdGlwbGVBcnJheUJ1ZmZlckJsb2IpOgorICAgICAgICAodGVz
dFJlYWRpbmdIeWJyaWRCbG9iKToKKyAgICAgICAgKHRlc3RSZWFkaW5nU2xpY2VkSHlicmlkQmxv
Yik6CisgICAgICAgICh0ZXN0UmVhZGluZ1RyaXBsZVNsaWNlZEh5YnJpZEJsb2IpOgorCiAyMDEw
LTEwLTE1ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgQ2hyb21pdW0gZXhwZWN0YXRpb25zIHVwZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZmlsZXMvcmVhZC1ibG9iLWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXMvcmVhZC1ibG9iLWFzeW5jLWV4cGVjdGVkLnR4dAppbmRleCAyN2Q4YzBh
Li43MDA3MGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3JlYWQtYmxvYi1h
c3luYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZWFkLWJsb2It
YXN5bmMtZXhwZWN0ZWQudHh0CkBAIC03NCw2ICs3NCwxNSBAQCByZWFkeVN0YXRlOiAyCiByZXN1
bHQgc2l6ZTogMjkKIHJlc3VsdDogZGF0YTp0eXBlL2ZvbztiYXNlNjQsUm1seWMzUT0KIFJlY2Vp
dmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBzaW5nbGUg
QXJyYXlCdWZmZXIKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVh
ZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNp
emU6IDkKK3Jlc3VsdDogMHgwIDB4MSAweDIgMHg4MCAweDgxIDB4ODIgMHhmZCAweGZlIDB4ZmYK
K1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKIFRlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBz
bGljZWQgZmlsZQogcmVhZHlTdGF0ZTogMAogUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CkBAIC05
Miw2ICsxMDEsMTUgQEAgcmVhZHlTdGF0ZTogMgogcmVzdWx0IHNpemU6IDQKIHJlc3VsdDogaXJz
dAogUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5n
IHNsaWNlZCBBcnJheUJ1ZmZlcgorcmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2
ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCity
ZXN1bHQgc2l6ZTogOAorcmVzdWx0OiAweDEgMHgyIDB4ODAgMHg4MSAweDgyIDB4ZmQgMHhmZSAw
eGZmCitSZWNlaXZlZCBsb2FkZW5kIGV2ZW50CiBUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5p
bmcgbXVsdGlwbGUgZmlsZXMKIHJlYWR5U3RhdGU6IDAKIFJlY2VpdmVkIGxvYWRzdGFydCBldmVu
dApAQCAtMTEwLDE0ICsxMjgsMjMgQEAgcmVhZHlTdGF0ZTogMgogcmVzdWx0IHNpemU6IDE2CiBy
ZXN1bHQ6IEZpcnN0U2Vjb25kVGhpcmQKIFJlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVh
ZGluZyBhIGJsb2IgY29udGFpbmluZyBtdWx0aXBsZSBBcnJheUJ1ZmZlcgorcmVhZHlTdGF0ZTog
MAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2Fk
IGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogOQorcmVzdWx0OiAweDAgMHgxIDB4
MiAweDgwIDB4ODEgMHg4MiAweGZkIDB4ZmUgMHhmZgorUmVjZWl2ZWQgbG9hZGVuZCBldmVudAog
VGVzdCByZWFkaW5nIGEgaHlicmlkIGJsb2IKIHJlYWR5U3RhdGU6IDAKIFJlY2VpdmVkIGxvYWRz
dGFydCBldmVudAogcmVhZHlTdGF0ZTogMQogUmVjZWl2ZWQgbG9hZCBldmVudAogcmVhZHlTdGF0
ZTogMgotcmVzdWx0IHNpemU6IDM1Ci1yZXN1bHQ6IEZpcnN0SGVsbG9TZWNvbmRXb25kZXJmdWxX
b3JsZFRoaXJkCityZXN1bHQgc2l6ZTogMzgKK3Jlc3VsdDogRmlyc3RIZWxsb1NlY29uZFdvbmRl
cmZ1bFdvcmxkVGhpcmQwMTIKIFJlY2VpdmVkIGxvYWRlbmQgZXZlbnQKIFRlc3QgcmVhZGluZyBh
IHNsaWNlZCBoeWJyaWQgYmxvYgogcmVhZHlTdGF0ZTogMApAQCAtMTM1LDcgKzE2Miw3IEBAIHJl
YWR5U3RhdGU6IDEKIFJlY2VpdmVkIGxvYWQgZXZlbnQKIHJlYWR5U3RhdGU6IDIKIHJlc3VsdCBz
aXplOiAzMAotcmVzdWx0OiBvbmRXb25kZXJmdWxXb3JsZFRoaXJkRm9vbG9TZWMKK3Jlc3VsdDog
b25kV29uZGVyZnVsV29ybGRUaGlyZDAxMkZvb2xvCiBSZWNlaXZlZCBsb2FkZW5kIGV2ZW50CiBE
T05FCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVzb3VyY2VzL3JlYWQt
YmxvYi10ZXN0LWNhc2VzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvcmVh
ZC1ibG9iLXRlc3QtY2FzZXMuanMKaW5kZXggYTU3OWVhYS4uMjJiZjA0OCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvcmVhZC1ibG9iLXRlc3QtY2FzZXMuanMK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvcmVhZC1ibG9iLXRlc3QtY2Fz
ZXMuanMKQEAgLTgsMTAgKzgsMTMgQEAgdmFyIHRlc3RDYXNlcyA9IFsKICAgICAidGVzdFJlYWRp
bmdTaW5nbGVUZXh0QmxvYiIsCiAgICAgInRlc3RSZWFkaW5nU2luZ2xlVGV4dEJsb2JBc0RhdGFV
UkwiLAogICAgICJ0ZXN0UmVhZGluZ1NpbmdsZVRleHRCbG9iQXNEYXRhVVJMMiIsCisgICAgInRl
c3RSZWFkaW5nU2luZ2xlQXJyYXlCdWZmZXJCbG9iIiwKICAgICAidGVzdFJlYWRpbmdTbGljZWRG
aWxlQmxvYiIsCiAgICAgInRlc3RSZWFkaW5nU2xpY2VkVGV4dEJsb2IiLAorICAgICJ0ZXN0UmVh
ZGluZ1NsaWNlZEFycmF5QnVmZmVyQmxvYiIsCiAgICAgInRlc3RSZWFkaW5nTXVsdGlwbGVGaWxl
QmxvYiIsCiAgICAgInRlc3RSZWFkaW5nTXVsdGlwbGVUZXh0QmxvYiIsCisgICAgInRlc3RSZWFk
aW5nTXVsdGlwbGVBcnJheUJ1ZmZlckJsb2IiLAogICAgICJ0ZXN0UmVhZGluZ0h5YnJpZEJsb2Ii
LAogICAgICJ0ZXN0UmVhZGluZ1NsaWNlZEh5YnJpZEJsb2IiLAogICAgICJ0ZXN0UmVhZGluZ1Ry
aXBsZVNsaWNlZEh5YnJpZEJsb2IiLApAQCAtOTEsNiArOTQsMTQgQEAgZnVuY3Rpb24gdGVzdFJl
YWRpbmdTaW5nbGVUZXh0QmxvYkFzRGF0YVVSTDIodGVzdEZpbGVzKQogICAgIHJlYWRCbG9iQXNE
YXRhVVJMKHRlc3RGaWxlcywgYmxvYik7CiB9CiAKK2Z1bmN0aW9uIHRlc3RSZWFkaW5nU2luZ2xl
QXJyYXlCdWZmZXJCbG9iKHRlc3RGaWxlcykKK3sKKyAgICBsb2coIlRlc3QgcmVhZGluZyBhIGJs
b2IgY29udGFpbmluZyBzaW5nbGUgQXJyYXlCdWZmZXIiKTsKKyAgICB2YXIgYXJyYXkgPSBuZXcg
VWludDhBcnJheShbMCwgMSwgMiwgMTI4LCAxMjksIDEzMCwgMjUzLCAyNTQsIDI1NV0pOworICAg
IHZhciBibG9iID0gYnVpbGRCbG9iKFthcnJheS5idWZmZXJdKTsKKyAgICByZWFkQmxvYkFzQmlu
YXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxvYik7Cit9CisKIGZ1bmN0aW9uIHRlc3RSZWFkaW5nU2xp
Y2VkRmlsZUJsb2IodGVzdEZpbGVzKQogewogICAgIGxvZygiVGVzdCByZWFkaW5nIGEgYmxvYiBj
b250YWluaW5nIHNsaWNlZCBmaWxlIik7CkBAIC0xMDYsNiArMTE3LDE1IEBAIGZ1bmN0aW9uIHRl
c3RSZWFkaW5nU2xpY2VkVGV4dEJsb2IodGVzdEZpbGVzKQogICAgIHJlYWRCbG9iQXNCaW5hcnlT
dHJpbmcodGVzdEZpbGVzLCBibG9iKTsKIH0KIAorZnVuY3Rpb24gdGVzdFJlYWRpbmdTbGljZWRB
cnJheUJ1ZmZlckJsb2IodGVzdEZpbGVzKQoreworICAgIGxvZygiVGVzdCByZWFkaW5nIGEgYmxv
YiBjb250YWluaW5nIHNsaWNlZCBBcnJheUJ1ZmZlciIpOworICAgIHZhciBhcnJheSA9IG5ldyBV
aW50OEFycmF5KFswLCAxLCAyLCAxMjgsIDEyOSwgMTMwLCAyNTMsIDI1NCwgMjU1XSk7CisgICAg
dmFyIGJsb2IgPSBidWlsZEJsb2IoW2FycmF5LmJ1ZmZlcl0pCisgICAgYmxvYiA9IGJsb2Iuc2xp
Y2UoMSwgMTApOworICAgIHJlYWRCbG9iQXNCaW5hcnlTdHJpbmcodGVzdEZpbGVzLCBibG9iKTsK
K30KKwogZnVuY3Rpb24gdGVzdFJlYWRpbmdNdWx0aXBsZUZpbGVCbG9iKHRlc3RGaWxlcykKIHsK
ICAgICBsb2coIlRlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBtdWx0aXBsZSBmaWxlcyIp
OwpAQCAtMTIwLDE3ICsxNDAsMjkgQEAgZnVuY3Rpb24gdGVzdFJlYWRpbmdNdWx0aXBsZVRleHRC
bG9iKHRlc3RGaWxlcykKICAgICByZWFkQmxvYkFzQmluYXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxv
Yik7CiB9CiAKK2Z1bmN0aW9uIHRlc3RSZWFkaW5nTXVsdGlwbGVBcnJheUJ1ZmZlckJsb2IodGVz
dEZpbGVzKQoreworICAgIGxvZygiVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5nIG11bHRp
cGxlIEFycmF5QnVmZmVyIik7CisgICAgdmFyIGFycmF5MSA9IG5ldyBVaW50OEFycmF5KFswLCAx
LCAyXSk7CisgICAgdmFyIGFycmF5MiA9IG5ldyBVaW50OEFycmF5KFsxMjgsIDEyOSwgMTMwXSk7
CisgICAgdmFyIGFycmF5MyA9IG5ldyBVaW50OEFycmF5KFsyNTMsIDI1NCwgMjU1XSk7CisgICAg
dmFyIGJsb2IgPSBidWlsZEJsb2IoW2FycmF5MS5idWZmZXIsIGFycmF5Mi5idWZmZXIsIGFycmF5
My5idWZmZXJdKTsKKyAgICByZWFkQmxvYkFzQmluYXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxvYik7
Cit9CisKIGZ1bmN0aW9uIHRlc3RSZWFkaW5nSHlicmlkQmxvYih0ZXN0RmlsZXMpCiB7CiAgICAg
bG9nKCJUZXN0IHJlYWRpbmcgYSBoeWJyaWQgYmxvYiIpOwotICAgIHZhciBibG9iID0gYnVpbGRC
bG9iKFsnRmlyc3QnLCB0ZXN0RmlsZXNbJ2ZpbGUxJ10sICdTZWNvbmQnLCB0ZXN0RmlsZXNbJ2Zp
bGUyJ10sIHRlc3RGaWxlc1snZmlsZTMnXSwgJ1RoaXJkJ10pOworICAgIHZhciBhcnJheSA9IG5l
dyBVaW50OEFycmF5KFs0OCwgNDksIDUwXSk7CisgICAgdmFyIGJsb2IgPSBidWlsZEJsb2IoWydG
aXJzdCcsIHRlc3RGaWxlc1snZmlsZTEnXSwgJ1NlY29uZCcsIHRlc3RGaWxlc1snZmlsZTInXSwg
dGVzdEZpbGVzWydmaWxlMyddLCAnVGhpcmQnLCBhcnJheS5idWZmZXJdKTsKICAgICByZWFkQmxv
YkFzQmluYXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxvYik7CiB9CiAKIGZ1bmN0aW9uIHRlc3RSZWFk
aW5nU2xpY2VkSHlicmlkQmxvYih0ZXN0RmlsZXMpCiB7CiAgICAgbG9nKCJUZXN0IHJlYWRpbmcg
YSBzbGljZWQgaHlicmlkIGJsb2IiKTsKLSAgICB2YXIgYmxvYiA9IGJ1aWxkQmxvYihbJ0ZpcnN0
JywgdGVzdEZpbGVzWydmaWxlMSddLCAnU2Vjb25kJywgdGVzdEZpbGVzWydmaWxlMiddLCB0ZXN0
RmlsZXNbJ2ZpbGUzJ10sICdUaGlyZCddKTsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJh
eShbNDgsIDQ5LCA1MF0pOworICAgIHZhciBibG9iID0gYnVpbGRCbG9iKFsnRmlyc3QnLCB0ZXN0
RmlsZXNbJ2ZpbGUxJ10sICdTZWNvbmQnLCB0ZXN0RmlsZXNbJ2ZpbGUyJ10sIHRlc3RGaWxlc1sn
ZmlsZTMnXSwgJ1RoaXJkJywgYXJyYXkuYnVmZmVyXSk7CiAgICAgdmFyIGJsb2IgPSBibG9iLnNs
aWNlKDcsIDEyKTsKICAgICByZWFkQmxvYkFzQmluYXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxvYik7
CiB9CkBAIC0xMzksNyArMTcxLDggQEAgZnVuY3Rpb24gdGVzdFJlYWRpbmdUcmlwbGVTbGljZWRI
eWJyaWRCbG9iKHRlc3RGaWxlcykKIHsKICAgICBsb2coIlRlc3QgcmVhZGluZyBhIHRyaXBsZS1z
bGljZWQgaHlicmlkIGJsb2IiKTsKICAgICB2YXIgYnVpbGRlciA9IG5ldyBCbG9iQnVpbGRlcigp
OwotICAgIHZhciBibG9iID0gYnVpbGRCbG9iKFsnRmlyc3QnLCB0ZXN0RmlsZXNbJ2ZpbGUxJ10u
c2xpY2UoMSwgMTApLCB0ZXN0RmlsZXNbJ2VtcHR5LWZpbGUnXSwgJ1NlY29uZCcsIHRlc3RGaWxl
c1snZmlsZTInXSwgdGVzdEZpbGVzWydmaWxlMyddLCAnVGhpcmQnXSwgdW5kZWZpbmVkLCBidWls
ZGVyKTsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShbNDgsIDQ5LCA1MF0pOworICAg
IHZhciBibG9iID0gYnVpbGRCbG9iKFsnRmlyc3QnLCB0ZXN0RmlsZXNbJ2ZpbGUxJ10uc2xpY2Uo
MSwgMTApLCB0ZXN0RmlsZXNbJ2VtcHR5LWZpbGUnXSwgJ1NlY29uZCcsIHRlc3RGaWxlc1snZmls
ZTInXSwgdGVzdEZpbGVzWydmaWxlMyddLCAnVGhpcmQnLCBhcnJheS5idWZmZXJdLCB1bmRlZmlu
ZWQsIGJ1aWxkZXIpOwogICAgIHZhciBibG9iID0gYmxvYi5zbGljZSg3LCAxMik7CiAgICAgdmFy
IGJsb2IyID0gYnVpbGRCbG9iKFsnRm9vJywgYmxvYiwgJ0JhciddLCB1bmRlZmluZWQsIGJ1aWxk
ZXIpOwogICAgIHZhciBibG9iMiA9IGJsb2IyLnNsaWNlKDEyLCAzMCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY2OTgxMDQuLjdhNzA3
Y2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMTAtMTUgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1
cHBvcnQgYXBwZW5kaW5nIGFuIEFycmF5QnVmZmVyIG9iamVjdCBpbiBCbG9iQnVpbGRlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MDEKKworICAg
ICAgICBUZXN0IGNhc2VzIGhhdmUgYmVlbiBhZGRlZCB0byByZWFkLWJsb2ItdGVzdC1jYXNlcy5q
cy4KKworICAgICAgICAqIGZpbGVhcGkvQmxvYkJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYkJ1aWxkZXI6OmdldEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpCbG9iQnVpbGRl
cjo6YXBwZW5kKToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JCdWlsZGVyLmg6CisgICAgICAgICog
ZmlsZWFwaS9CbG9iQnVpbGRlci5pZGw6CisKIDIwMTAtMTAtMTUgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIgaW4g
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzczNj4uCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkJ1aWxkZXIuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0Js
b2JCdWlsZGVyLmNwcAppbmRleCA2OTQ0M2E1Li42ZmFiNTdiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYkJ1aWxkZXIuY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9CbG9iQnVpbGRl
ci5jcHAKQEAgLTMyLDEyICszMiwxNiBAQAogCiAjaW5jbHVkZSAiQmxvYkJ1aWxkZXIuaCIKIAor
I2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiTGluZUVuZGluZy5o
IgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00NiwzMiArNTAsMzQgQEAgQmxvYkJ1aWxkZXI6OkJsb2JCdWlsZGVyKCkKIHsKIH0K
IAorVmVjdG9yPGNoYXI+JiBCbG9iQnVpbGRlcjo6Z2V0QnVmZmVyKCkKK3sKKyAgICAvLyBJZiB0
aGUgbGFzdCBpdGVtIGlzIG5vdCBhIGRhdGEgaXRlbSwgY3JlYXRlIG9uZS4gT3RoZXJ3aXNlLCB3
ZSBzaW1wbHkgYXBwZW5kIHRoZSBuZXcgc3RyaW5nIHRvIHRoZSBsYXN0IGRhdGEgaXRlbS4KKyAg
ICBpZiAobV9pdGVtcy5pc0VtcHR5KCkgfHwgbV9pdGVtc1ttX2l0ZW1zLnNpemUoKSAtIDFdLnR5
cGUgIT0gQmxvYkRhdGFJdGVtOjpEYXRhKQorICAgICAgICBtX2l0ZW1zLmFwcGVuZChCbG9iRGF0
YUl0ZW0oUmF3RGF0YTo6Y3JlYXRlKCkpKTsKKworICAgIHJldHVybiAqbV9pdGVtc1ttX2l0ZW1z
LnNpemUoKSAtIDFdLmRhdGEtPm11dGFibGVEYXRhKCk7Cit9CisKIGJvb2wgQmxvYkJ1aWxkZXI6
OmFwcGVuZChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgZW5kaW5nVHlwZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgYm9vbCBpc0VuZGluZ1R5cGVUcmFuc3BhcmVudCA9IGVu
ZGluZ1R5cGUgPT0gInRyYW5zcGFyZW50IjsKICAgICBib29sIGlzRW5kaW5nVHlwZU5hdGl2ZSA9
IGVuZGluZ1R5cGUgPT0gIm5hdGl2ZSI7CiAgICAgaWYgKCFlbmRpbmdUeXBlLmlzRW1wdHkoKSAm
JiAhaXNFbmRpbmdUeXBlVHJhbnNwYXJlbnQgJiYgIWlzRW5kaW5nVHlwZU5hdGl2ZSkgewogICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgQ1N0cmluZyB1dGY4VGV4dCA9IFVURjhFbmNvZGluZygpLmVu
Y29kZSh0ZXh0LmNoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgRW50aXRpZXNGb3JVbmVuY29k
YWJsZXMpOwogCi0gICAgLy8gSWYgdGhlIGxhc3QgaXRlbSBpcyBub3QgYSBkYXRhIGl0ZW0sIGNy
ZWF0ZSBvbmUuIE90aGVyd2lzZSwgd2Ugc2ltcGx5IGFwcGVuZCB0aGUgbmV3IHN0cmluZyB0byB0
aGUgbGFzdCBkYXRhIGl0ZW0uCi0gICAgaWYgKG1faXRlbXMuaXNFbXB0eSgpIHx8IG1faXRlbXNb
bV9pdGVtcy5zaXplKCkgLSAxXS50eXBlICE9IEJsb2JEYXRhSXRlbTo6RGF0YSkKLSAgICAgICAg
bV9pdGVtcy5hcHBlbmQoQmxvYkRhdGFJdGVtKFJhd0RhdGE6OmNyZWF0ZSgpKSk7Ci0KLSAgICBp
ZiAoIXV0ZjhUZXh0LmlzTnVsbCgpKSB7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiYgYnVmZmVyID0g
Km1faXRlbXNbbV9pdGVtcy5zaXplKCkgLSAxXS5kYXRhLT5tdXRhYmxlRGF0YSgpOwotICAgICAg
ICBzaXplX3Qgb2xkU2l6ZSA9IGJ1ZmZlci5zaXplKCk7Ci0KLSAgICAgICAgaWYgKGlzRW5kaW5n
VHlwZU5hdGl2ZSkKLSAgICAgICAgICAgIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9OYXRpdmUodXRm
OFRleHQsIGJ1ZmZlcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQo
dXRmOFRleHQuZGF0YSgpLCB1dGY4VGV4dC5sZW5ndGgoKSk7Ci0gICAgICAgIG1fc2l6ZSArPSBi
dWZmZXIuc2l6ZSgpIC0gb2xkU2l6ZTsKLSAgICB9CisgICAgVmVjdG9yPGNoYXI+JiBidWZmZXIg
PSBnZXRCdWZmZXIoKTsKKyAgICBzaXplX3Qgb2xkU2l6ZSA9IGJ1ZmZlci5zaXplKCk7CiAKKyAg
ICBpZiAoaXNFbmRpbmdUeXBlTmF0aXZlKQorICAgICAgICBub3JtYWxpemVMaW5lRW5kaW5nc1Rv
TmF0aXZlKHV0ZjhUZXh0LCBidWZmZXIpOworICAgIGVsc2UKKyAgICAgICAgYnVmZmVyLmFwcGVu
ZCh1dGY4VGV4dC5kYXRhKCksIHV0ZjhUZXh0Lmxlbmd0aCgpKTsKKyAgICBtX3NpemUgKz0gYnVm
ZmVyLnNpemUoKSAtIG9sZFNpemU7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTgwLDEyICs4
NiwyMyBAQCBib29sIEJsb2JCdWlsZGVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gYXBwZW5kKHRleHQsIFN0cmluZygpLCBlYyk7CiB9
CiAKLWJvb2wgQmxvYkJ1aWxkZXI6OmFwcGVuZChQYXNzUmVmUHRyPEJsb2I+IGJsb2IpCisjaWYg
RU5BQkxFKEJMT0IpCitib29sIEJsb2JCdWlsZGVyOjphcHBlbmQoQXJyYXlCdWZmZXIqIGFycmF5
QnVmZmVyKQoreworICAgIFZlY3RvcjxjaGFyPiYgYnVmZmVyID0gZ2V0QnVmZmVyKCk7CisgICAg
c2l6ZV90IG9sZFNpemUgPSBidWZmZXIuc2l6ZSgpOworICAgIGJ1ZmZlci5hcHBlbmQoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKTsKKyAgICBtX3NpemUgKz0gYnVmZmVyLnNpemUoKSAtIG9sZFNpemU7CisgICAg
cmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworYm9vbCBCbG9iQnVpbGRlcjo6YXBwZW5kKEJsb2Iq
IGJsb2IpCiB7CiAgICAgaWYgKGJsb2ItPmlzRmlsZSgpKSB7CiAgICAgICAgIC8vIElmIHRoZSBi
bG9iIGlzIGZpbGUgdGhhdCBpcyBub3Qgc25hcHNob3RlZCwgY2FwdHVyZSB0aGUgc25hcHNob3Qg
bm93LgogICAgICAgICAvLyBGSVhNRTogVGhpcyBpbnZvbHZlcyBzeW5jaHJvbm91cyBmaWxlIG9w
ZXJhdGlvbi4gV2UgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBtYWtlIGl0IGFzeW5jaHJvbm91
cy4KLSAgICAgICAgRmlsZSogZmlsZSA9IHN0YXRpY19jYXN0PEZpbGUqPihibG9iLmdldCgpKTsK
KyAgICAgICAgRmlsZSogZmlsZSA9IHN0YXRpY19jYXN0PEZpbGUqPihibG9iKTsKICAgICAgICAg
bG9uZyBsb25nIHNuYXBzaG90U2l6ZTsKICAgICAgICAgZG91YmxlIHNuYXBzaG90TW9kaWZpY2F0
aW9uVGltZTsKICAgICAgICAgZmlsZS0+Y2FwdHVyZVNuYXBzaG90KHNuYXBzaG90U2l6ZSwgc25h
cHNob3RNb2RpZmljYXRpb25UaW1lKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9CbG9i
QnVpbGRlci5oIGIvV2ViQ29yZS9maWxlYXBpL0Jsb2JCdWlsZGVyLmgKaW5kZXggYTk4MWUzMS4u
MTQxZmRkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0Jsb2JCdWlsZGVyLmgKKysrIGIv
V2ViQ29yZS9maWxlYXBpL0Jsb2JCdWlsZGVyLmgKQEAgLTMyLDE0ICszMiwxMiBAQAogI2RlZmlu
ZSBCbG9iQnVpbGRlcl9oCiAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBBcnJheUJ1ZmZlcjsKIGNsYXNzIEJsb2I7CiBjbGFzcyBUZXh0RW5jb2Rp
bmc7CiAKQEAgLTQ5LDE1ICs0NywyMCBAQCBjbGFzcyBCbG9iQnVpbGRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPEJsb2JCdWlsZGVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Qmxv
YkJ1aWxkZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBCbG9iQnVpbGRlcigpKTsg
fQogCi0gICAgYm9vbCBhcHBlbmQoUGFzc1JlZlB0cjxCbG9iPik7CisgICAgYm9vbCBhcHBlbmQo
QmxvYiopOwogICAgIGJvb2wgYXBwZW5kKGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIGJvb2wgYXBwZW5kKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBl
bmRpbmcsIEV4Y2VwdGlvbkNvZGUmKTsKKyNpZiBFTkFCTEUoQkxPQikKKyAgICBib29sIGFwcGVu
ZChBcnJheUJ1ZmZlciopOworI2VuZGlmCiAKICAgICBQYXNzUmVmUHRyPEJsb2I+IGdldEJsb2Io
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IFN0cmluZygpKTsKIAogcHJpdmF0ZToKICAgICBC
bG9iQnVpbGRlcigpOwogCisgICAgVmVjdG9yPGNoYXI+JiBnZXRCdWZmZXIoKTsKKwogICAgIGxv
bmcgbG9uZyBtX3NpemU7CiAgICAgQmxvYkRhdGFJdGVtTGlzdCBtX2l0ZW1zOwogfTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9CbG9iQnVpbGRlci5pZGwgYi9XZWJDb3JlL2ZpbGVhcGkv
QmxvYkJ1aWxkZXIuaWRsCmluZGV4IDBkYTkzMTQuLjhmNTA0OWYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZmlsZWFwaS9CbG9iQnVpbGRlci5pZGwKKysrIGIvV2ViQ29yZS9maWxlYXBpL0Jsb2JCdWls
ZGVyLmlkbApAQCAtMzgsNiArMzgsOSBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIEJsb2IgZ2V0
QmxvYihpbiBbT3B0aW9uYWwsIENvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERP
TVN0cmluZyBjb250ZW50VHlwZSk7CiAjZW5kaWYKICAgICAgICAgdm9pZCBhcHBlbmQoaW4gQmxv
YiBibG9iKTsKKyNpZiBkZWZpbmVkKEVOQUJMRV9CTE9CKSAmJiBFTkFCTEVfQkxPQgorICAgICAg
ICB2b2lkIGFwcGVuZChpbiBBcnJheUJ1ZmZlciBhcnJheUJ1ZmZlcik7CisjZW5kaWYKICAgICAg
ICAgdm9pZCBhcHBlbmQoaW4gRE9NU3RyaW5nIHZhbHVlLCBpbiBbT3B0aW9uYWwsIENvbnZlcnRV
bmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBlbmRpbmdzKSByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CiAgICAgfTsKIAo=
</data>
<flag name="commit-queue"
          id="60848"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71106</attachid>
            <date>2010-10-18 17:36:43 -0700</date>
            <delta_ts>2010-10-21 19:54:39 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>47701_3</filename>
            <type>text/plain</type>
            <size>13211</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmYmM4MDhkLi44YWY1YTk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMTAt
MTUgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgYXBwZW5kaW5nIGFuIEFycmF5QnVm
ZmVyIG9iamVjdCBpbiBCbG9iQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MDEKKworICAgICAgICAqIGZhc3QvZmlsZXMvcmVhZC1ibG9i
LWFzeW5jLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzL3Jlc291cmNlcy9yZWFk
LWJsb2ItdGVzdC1jYXNlcy5qczoKKyAgICAgICAgKHRlc3RSZWFkaW5nU2luZ2xlQXJyYXlCdWZm
ZXJCbG9iKToKKyAgICAgICAgKHRlc3RSZWFkaW5nU2xpY2VkQXJyYXlCdWZmZXJCbG9iKToKKyAg
ICAgICAgKHRlc3RSZWFkaW5nTXVsdGlwbGVBcnJheUJ1ZmZlckJsb2IpOgorICAgICAgICAodGVz
dFJlYWRpbmdIeWJyaWRCbG9iKToKKyAgICAgICAgKHRlc3RSZWFkaW5nU2xpY2VkSHlicmlkQmxv
Yik6CisgICAgICAgICh0ZXN0UmVhZGluZ1RyaXBsZVNsaWNlZEh5YnJpZEJsb2IpOgorCiAyMDEw
LTEwLTE1ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgQ2hyb21pdW0gZXhwZWN0YXRpb25zIHVwZGF0ZS4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZmlsZXMvcmVhZC1ibG9iLWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXMvcmVhZC1ibG9iLWFzeW5jLWV4cGVjdGVkLnR4dAppbmRleCAyN2Q4YzBh
Li43MDA3MGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3JlYWQtYmxvYi1h
c3luYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZWFkLWJsb2It
YXN5bmMtZXhwZWN0ZWQudHh0CkBAIC03NCw2ICs3NCwxNSBAQCByZWFkeVN0YXRlOiAyCiByZXN1
bHQgc2l6ZTogMjkKIHJlc3VsdDogZGF0YTp0eXBlL2ZvbztiYXNlNjQsUm1seWMzUT0KIFJlY2Vp
dmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBzaW5nbGUg
QXJyYXlCdWZmZXIKK3JlYWR5U3RhdGU6IDAKK1JlY2VpdmVkIGxvYWRzdGFydCBldmVudAorcmVh
ZHlTdGF0ZTogMQorUmVjZWl2ZWQgbG9hZCBldmVudAorcmVhZHlTdGF0ZTogMgorcmVzdWx0IHNp
emU6IDkKK3Jlc3VsdDogMHgwIDB4MSAweDIgMHg4MCAweDgxIDB4ODIgMHhmZCAweGZlIDB4ZmYK
K1JlY2VpdmVkIGxvYWRlbmQgZXZlbnQKIFRlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBz
bGljZWQgZmlsZQogcmVhZHlTdGF0ZTogMAogUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CkBAIC05
Miw2ICsxMDEsMTUgQEAgcmVhZHlTdGF0ZTogMgogcmVzdWx0IHNpemU6IDQKIHJlc3VsdDogaXJz
dAogUmVjZWl2ZWQgbG9hZGVuZCBldmVudAorVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5n
IHNsaWNlZCBBcnJheUJ1ZmZlcgorcmVhZHlTdGF0ZTogMAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2
ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2FkIGV2ZW50CityZWFkeVN0YXRlOiAyCity
ZXN1bHQgc2l6ZTogOAorcmVzdWx0OiAweDEgMHgyIDB4ODAgMHg4MSAweDgyIDB4ZmQgMHhmZSAw
eGZmCitSZWNlaXZlZCBsb2FkZW5kIGV2ZW50CiBUZXN0IHJlYWRpbmcgYSBibG9iIGNvbnRhaW5p
bmcgbXVsdGlwbGUgZmlsZXMKIHJlYWR5U3RhdGU6IDAKIFJlY2VpdmVkIGxvYWRzdGFydCBldmVu
dApAQCAtMTEwLDE0ICsxMjgsMjMgQEAgcmVhZHlTdGF0ZTogMgogcmVzdWx0IHNpemU6IDE2CiBy
ZXN1bHQ6IEZpcnN0U2Vjb25kVGhpcmQKIFJlY2VpdmVkIGxvYWRlbmQgZXZlbnQKK1Rlc3QgcmVh
ZGluZyBhIGJsb2IgY29udGFpbmluZyBtdWx0aXBsZSBBcnJheUJ1ZmZlcgorcmVhZHlTdGF0ZTog
MAorUmVjZWl2ZWQgbG9hZHN0YXJ0IGV2ZW50CityZWFkeVN0YXRlOiAxCitSZWNlaXZlZCBsb2Fk
IGV2ZW50CityZWFkeVN0YXRlOiAyCityZXN1bHQgc2l6ZTogOQorcmVzdWx0OiAweDAgMHgxIDB4
MiAweDgwIDB4ODEgMHg4MiAweGZkIDB4ZmUgMHhmZgorUmVjZWl2ZWQgbG9hZGVuZCBldmVudAog
VGVzdCByZWFkaW5nIGEgaHlicmlkIGJsb2IKIHJlYWR5U3RhdGU6IDAKIFJlY2VpdmVkIGxvYWRz
dGFydCBldmVudAogcmVhZHlTdGF0ZTogMQogUmVjZWl2ZWQgbG9hZCBldmVudAogcmVhZHlTdGF0
ZTogMgotcmVzdWx0IHNpemU6IDM1Ci1yZXN1bHQ6IEZpcnN0SGVsbG9TZWNvbmRXb25kZXJmdWxX
b3JsZFRoaXJkCityZXN1bHQgc2l6ZTogMzgKK3Jlc3VsdDogRmlyc3RIZWxsb1NlY29uZFdvbmRl
cmZ1bFdvcmxkVGhpcmQwMTIKIFJlY2VpdmVkIGxvYWRlbmQgZXZlbnQKIFRlc3QgcmVhZGluZyBh
IHNsaWNlZCBoeWJyaWQgYmxvYgogcmVhZHlTdGF0ZTogMApAQCAtMTM1LDcgKzE2Miw3IEBAIHJl
YWR5U3RhdGU6IDEKIFJlY2VpdmVkIGxvYWQgZXZlbnQKIHJlYWR5U3RhdGU6IDIKIHJlc3VsdCBz
aXplOiAzMAotcmVzdWx0OiBvbmRXb25kZXJmdWxXb3JsZFRoaXJkRm9vbG9TZWMKK3Jlc3VsdDog
b25kV29uZGVyZnVsV29ybGRUaGlyZDAxMkZvb2xvCiBSZWNlaXZlZCBsb2FkZW5kIGV2ZW50CiBE
T05FCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvcmVzb3VyY2VzL3JlYWQt
YmxvYi10ZXN0LWNhc2VzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvcmVh
ZC1ibG9iLXRlc3QtY2FzZXMuanMKaW5kZXggYTU3OWVhYS4uMjJiZjA0OCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvcmVhZC1ibG9iLXRlc3QtY2FzZXMuanMK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9yZXNvdXJjZXMvcmVhZC1ibG9iLXRlc3QtY2Fz
ZXMuanMKQEAgLTgsMTAgKzgsMTMgQEAgdmFyIHRlc3RDYXNlcyA9IFsKICAgICAidGVzdFJlYWRp
bmdTaW5nbGVUZXh0QmxvYiIsCiAgICAgInRlc3RSZWFkaW5nU2luZ2xlVGV4dEJsb2JBc0RhdGFV
UkwiLAogICAgICJ0ZXN0UmVhZGluZ1NpbmdsZVRleHRCbG9iQXNEYXRhVVJMMiIsCisgICAgInRl
c3RSZWFkaW5nU2luZ2xlQXJyYXlCdWZmZXJCbG9iIiwKICAgICAidGVzdFJlYWRpbmdTbGljZWRG
aWxlQmxvYiIsCiAgICAgInRlc3RSZWFkaW5nU2xpY2VkVGV4dEJsb2IiLAorICAgICJ0ZXN0UmVh
ZGluZ1NsaWNlZEFycmF5QnVmZmVyQmxvYiIsCiAgICAgInRlc3RSZWFkaW5nTXVsdGlwbGVGaWxl
QmxvYiIsCiAgICAgInRlc3RSZWFkaW5nTXVsdGlwbGVUZXh0QmxvYiIsCisgICAgInRlc3RSZWFk
aW5nTXVsdGlwbGVBcnJheUJ1ZmZlckJsb2IiLAogICAgICJ0ZXN0UmVhZGluZ0h5YnJpZEJsb2Ii
LAogICAgICJ0ZXN0UmVhZGluZ1NsaWNlZEh5YnJpZEJsb2IiLAogICAgICJ0ZXN0UmVhZGluZ1Ry
aXBsZVNsaWNlZEh5YnJpZEJsb2IiLApAQCAtOTEsNiArOTQsMTQgQEAgZnVuY3Rpb24gdGVzdFJl
YWRpbmdTaW5nbGVUZXh0QmxvYkFzRGF0YVVSTDIodGVzdEZpbGVzKQogICAgIHJlYWRCbG9iQXNE
YXRhVVJMKHRlc3RGaWxlcywgYmxvYik7CiB9CiAKK2Z1bmN0aW9uIHRlc3RSZWFkaW5nU2luZ2xl
QXJyYXlCdWZmZXJCbG9iKHRlc3RGaWxlcykKK3sKKyAgICBsb2coIlRlc3QgcmVhZGluZyBhIGJs
b2IgY29udGFpbmluZyBzaW5nbGUgQXJyYXlCdWZmZXIiKTsKKyAgICB2YXIgYXJyYXkgPSBuZXcg
VWludDhBcnJheShbMCwgMSwgMiwgMTI4LCAxMjksIDEzMCwgMjUzLCAyNTQsIDI1NV0pOworICAg
IHZhciBibG9iID0gYnVpbGRCbG9iKFthcnJheS5idWZmZXJdKTsKKyAgICByZWFkQmxvYkFzQmlu
YXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxvYik7Cit9CisKIGZ1bmN0aW9uIHRlc3RSZWFkaW5nU2xp
Y2VkRmlsZUJsb2IodGVzdEZpbGVzKQogewogICAgIGxvZygiVGVzdCByZWFkaW5nIGEgYmxvYiBj
b250YWluaW5nIHNsaWNlZCBmaWxlIik7CkBAIC0xMDYsNiArMTE3LDE1IEBAIGZ1bmN0aW9uIHRl
c3RSZWFkaW5nU2xpY2VkVGV4dEJsb2IodGVzdEZpbGVzKQogICAgIHJlYWRCbG9iQXNCaW5hcnlT
dHJpbmcodGVzdEZpbGVzLCBibG9iKTsKIH0KIAorZnVuY3Rpb24gdGVzdFJlYWRpbmdTbGljZWRB
cnJheUJ1ZmZlckJsb2IodGVzdEZpbGVzKQoreworICAgIGxvZygiVGVzdCByZWFkaW5nIGEgYmxv
YiBjb250YWluaW5nIHNsaWNlZCBBcnJheUJ1ZmZlciIpOworICAgIHZhciBhcnJheSA9IG5ldyBV
aW50OEFycmF5KFswLCAxLCAyLCAxMjgsIDEyOSwgMTMwLCAyNTMsIDI1NCwgMjU1XSk7CisgICAg
dmFyIGJsb2IgPSBidWlsZEJsb2IoW2FycmF5LmJ1ZmZlcl0pCisgICAgYmxvYiA9IGJsb2Iuc2xp
Y2UoMSwgMTApOworICAgIHJlYWRCbG9iQXNCaW5hcnlTdHJpbmcodGVzdEZpbGVzLCBibG9iKTsK
K30KKwogZnVuY3Rpb24gdGVzdFJlYWRpbmdNdWx0aXBsZUZpbGVCbG9iKHRlc3RGaWxlcykKIHsK
ICAgICBsb2coIlRlc3QgcmVhZGluZyBhIGJsb2IgY29udGFpbmluZyBtdWx0aXBsZSBmaWxlcyIp
OwpAQCAtMTIwLDE3ICsxNDAsMjkgQEAgZnVuY3Rpb24gdGVzdFJlYWRpbmdNdWx0aXBsZVRleHRC
bG9iKHRlc3RGaWxlcykKICAgICByZWFkQmxvYkFzQmluYXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxv
Yik7CiB9CiAKK2Z1bmN0aW9uIHRlc3RSZWFkaW5nTXVsdGlwbGVBcnJheUJ1ZmZlckJsb2IodGVz
dEZpbGVzKQoreworICAgIGxvZygiVGVzdCByZWFkaW5nIGEgYmxvYiBjb250YWluaW5nIG11bHRp
cGxlIEFycmF5QnVmZmVyIik7CisgICAgdmFyIGFycmF5MSA9IG5ldyBVaW50OEFycmF5KFswLCAx
LCAyXSk7CisgICAgdmFyIGFycmF5MiA9IG5ldyBVaW50OEFycmF5KFsxMjgsIDEyOSwgMTMwXSk7
CisgICAgdmFyIGFycmF5MyA9IG5ldyBVaW50OEFycmF5KFsyNTMsIDI1NCwgMjU1XSk7CisgICAg
dmFyIGJsb2IgPSBidWlsZEJsb2IoW2FycmF5MS5idWZmZXIsIGFycmF5Mi5idWZmZXIsIGFycmF5
My5idWZmZXJdKTsKKyAgICByZWFkQmxvYkFzQmluYXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxvYik7
Cit9CisKIGZ1bmN0aW9uIHRlc3RSZWFkaW5nSHlicmlkQmxvYih0ZXN0RmlsZXMpCiB7CiAgICAg
bG9nKCJUZXN0IHJlYWRpbmcgYSBoeWJyaWQgYmxvYiIpOwotICAgIHZhciBibG9iID0gYnVpbGRC
bG9iKFsnRmlyc3QnLCB0ZXN0RmlsZXNbJ2ZpbGUxJ10sICdTZWNvbmQnLCB0ZXN0RmlsZXNbJ2Zp
bGUyJ10sIHRlc3RGaWxlc1snZmlsZTMnXSwgJ1RoaXJkJ10pOworICAgIHZhciBhcnJheSA9IG5l
dyBVaW50OEFycmF5KFs0OCwgNDksIDUwXSk7CisgICAgdmFyIGJsb2IgPSBidWlsZEJsb2IoWydG
aXJzdCcsIHRlc3RGaWxlc1snZmlsZTEnXSwgJ1NlY29uZCcsIHRlc3RGaWxlc1snZmlsZTInXSwg
dGVzdEZpbGVzWydmaWxlMyddLCAnVGhpcmQnLCBhcnJheS5idWZmZXJdKTsKICAgICByZWFkQmxv
YkFzQmluYXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxvYik7CiB9CiAKIGZ1bmN0aW9uIHRlc3RSZWFk
aW5nU2xpY2VkSHlicmlkQmxvYih0ZXN0RmlsZXMpCiB7CiAgICAgbG9nKCJUZXN0IHJlYWRpbmcg
YSBzbGljZWQgaHlicmlkIGJsb2IiKTsKLSAgICB2YXIgYmxvYiA9IGJ1aWxkQmxvYihbJ0ZpcnN0
JywgdGVzdEZpbGVzWydmaWxlMSddLCAnU2Vjb25kJywgdGVzdEZpbGVzWydmaWxlMiddLCB0ZXN0
RmlsZXNbJ2ZpbGUzJ10sICdUaGlyZCddKTsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJh
eShbNDgsIDQ5LCA1MF0pOworICAgIHZhciBibG9iID0gYnVpbGRCbG9iKFsnRmlyc3QnLCB0ZXN0
RmlsZXNbJ2ZpbGUxJ10sICdTZWNvbmQnLCB0ZXN0RmlsZXNbJ2ZpbGUyJ10sIHRlc3RGaWxlc1sn
ZmlsZTMnXSwgJ1RoaXJkJywgYXJyYXkuYnVmZmVyXSk7CiAgICAgdmFyIGJsb2IgPSBibG9iLnNs
aWNlKDcsIDEyKTsKICAgICByZWFkQmxvYkFzQmluYXJ5U3RyaW5nKHRlc3RGaWxlcywgYmxvYik7
CiB9CkBAIC0xMzksNyArMTcxLDggQEAgZnVuY3Rpb24gdGVzdFJlYWRpbmdUcmlwbGVTbGljZWRI
eWJyaWRCbG9iKHRlc3RGaWxlcykKIHsKICAgICBsb2coIlRlc3QgcmVhZGluZyBhIHRyaXBsZS1z
bGljZWQgaHlicmlkIGJsb2IiKTsKICAgICB2YXIgYnVpbGRlciA9IG5ldyBCbG9iQnVpbGRlcigp
OwotICAgIHZhciBibG9iID0gYnVpbGRCbG9iKFsnRmlyc3QnLCB0ZXN0RmlsZXNbJ2ZpbGUxJ10u
c2xpY2UoMSwgMTApLCB0ZXN0RmlsZXNbJ2VtcHR5LWZpbGUnXSwgJ1NlY29uZCcsIHRlc3RGaWxl
c1snZmlsZTInXSwgdGVzdEZpbGVzWydmaWxlMyddLCAnVGhpcmQnXSwgdW5kZWZpbmVkLCBidWls
ZGVyKTsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShbNDgsIDQ5LCA1MF0pOworICAg
IHZhciBibG9iID0gYnVpbGRCbG9iKFsnRmlyc3QnLCB0ZXN0RmlsZXNbJ2ZpbGUxJ10uc2xpY2Uo
MSwgMTApLCB0ZXN0RmlsZXNbJ2VtcHR5LWZpbGUnXSwgJ1NlY29uZCcsIHRlc3RGaWxlc1snZmls
ZTInXSwgdGVzdEZpbGVzWydmaWxlMyddLCAnVGhpcmQnLCBhcnJheS5idWZmZXJdLCB1bmRlZmlu
ZWQsIGJ1aWxkZXIpOwogICAgIHZhciBibG9iID0gYmxvYi5zbGljZSg3LCAxMik7CiAgICAgdmFy
IGJsb2IyID0gYnVpbGRCbG9iKFsnRm9vJywgYmxvYiwgJ0JhciddLCB1bmRlZmluZWQsIGJ1aWxk
ZXIpOwogICAgIHZhciBibG9iMiA9IGJsb2IyLnNsaWNlKDEyLCAzMCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY2OTgxMDQuLjdhNzA3
Y2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMTAtMTUgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1
cHBvcnQgYXBwZW5kaW5nIGFuIEFycmF5QnVmZmVyIG9iamVjdCBpbiBCbG9iQnVpbGRlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc3MDEKKworICAg
ICAgICBUZXN0IGNhc2VzIGhhdmUgYmVlbiBhZGRlZCB0byByZWFkLWJsb2ItdGVzdC1jYXNlcy5q
cy4KKworICAgICAgICAqIGZpbGVhcGkvQmxvYkJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYkJ1aWxkZXI6OmdldEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpCbG9iQnVpbGRl
cjo6YXBwZW5kKToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2JCdWlsZGVyLmg6CisgICAgICAgICog
ZmlsZWFwaS9CbG9iQnVpbGRlci5pZGw6CisKIDIwMTAtMTAtMTUgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIgaW4g
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzczNj4uCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkJ1aWxkZXIuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0Js
b2JCdWlsZGVyLmNwcAppbmRleCA2OTQ0M2E1Li45NDA2ODk5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYkJ1aWxkZXIuY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9CbG9iQnVpbGRl
ci5jcHAKQEAgLTMyLDEyICszMiwxNiBAQAogCiAjaW5jbHVkZSAiQmxvYkJ1aWxkZXIuaCIKIAor
I2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiTGluZUVuZGluZy5o
IgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00Niw0NiArNTAsNTcgQEAgQmxvYkJ1aWxkZXI6OkJsb2JCdWlsZGVyKCkKIHsKIH0K
IAotYm9vbCBCbG9iQnVpbGRlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3Ry
aW5nJiBlbmRpbmdUeXBlLCBFeGNlcHRpb25Db2RlJiBlYykKK1ZlY3RvcjxjaGFyPiYgQmxvYkJ1
aWxkZXI6OmdldEJ1ZmZlcigpCit7CisgICAgLy8gSWYgdGhlIGxhc3QgaXRlbSBpcyBub3QgYSBk
YXRhIGl0ZW0sIGNyZWF0ZSBvbmUuIE90aGVyd2lzZSwgd2Ugc2ltcGx5IGFwcGVuZCB0aGUgbmV3
IHN0cmluZyB0byB0aGUgbGFzdCBkYXRhIGl0ZW0uCisgICAgaWYgKG1faXRlbXMuaXNFbXB0eSgp
IHx8IG1faXRlbXNbbV9pdGVtcy5zaXplKCkgLSAxXS50eXBlICE9IEJsb2JEYXRhSXRlbTo6RGF0
YSkKKyAgICAgICAgbV9pdGVtcy5hcHBlbmQoQmxvYkRhdGFJdGVtKFJhd0RhdGE6OmNyZWF0ZSgp
KSk7CisKKyAgICByZXR1cm4gKm1faXRlbXNbbV9pdGVtcy5zaXplKCkgLSAxXS5kYXRhLT5tdXRh
YmxlRGF0YSgpOworfQorCit2b2lkIEJsb2JCdWlsZGVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBTdHJpbmcmIGVuZGluZ1R5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IGJvb2wgaXNFbmRpbmdUeXBlVHJhbnNwYXJlbnQgPSBlbmRpbmdUeXBlID09ICJ0cmFuc3BhcmVu
dCI7CiAgICAgYm9vbCBpc0VuZGluZ1R5cGVOYXRpdmUgPSBlbmRpbmdUeXBlID09ICJuYXRpdmUi
OwogICAgIGlmICghZW5kaW5nVHlwZS5pc0VtcHR5KCkgJiYgIWlzRW5kaW5nVHlwZVRyYW5zcGFy
ZW50ICYmICFpc0VuZGluZ1R5cGVOYXRpdmUpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIENTdHJpbmcg
dXRmOFRleHQgPSBVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dC5jaGFyYWN0ZXJzKCksIHRleHQu
bGVuZ3RoKCksIEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKIAotICAgIC8vIElmIHRoZSBsYXN0
IGl0ZW0gaXMgbm90IGEgZGF0YSBpdGVtLCBjcmVhdGUgb25lLiBPdGhlcndpc2UsIHdlIHNpbXBs
eSBhcHBlbmQgdGhlIG5ldyBzdHJpbmcgdG8gdGhlIGxhc3QgZGF0YSBpdGVtLgotICAgIGlmICht
X2l0ZW1zLmlzRW1wdHkoKSB8fCBtX2l0ZW1zW21faXRlbXMuc2l6ZSgpIC0gMV0udHlwZSAhPSBC
bG9iRGF0YUl0ZW06OkRhdGEpCi0gICAgICAgIG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRlbShS
YXdEYXRhOjpjcmVhdGUoKSkpOwotCi0gICAgaWYgKCF1dGY4VGV4dC5pc051bGwoKSkgewotICAg
ICAgICBWZWN0b3I8Y2hhcj4mIGJ1ZmZlciA9ICptX2l0ZW1zW21faXRlbXMuc2l6ZSgpIC0gMV0u
ZGF0YS0+bXV0YWJsZURhdGEoKTsKLSAgICAgICAgc2l6ZV90IG9sZFNpemUgPSBidWZmZXIuc2l6
ZSgpOworICAgIFZlY3RvcjxjaGFyPiYgYnVmZmVyID0gZ2V0QnVmZmVyKCk7CisgICAgc2l6ZV90
IG9sZFNpemUgPSBidWZmZXIuc2l6ZSgpOwogCi0gICAgICAgIGlmIChpc0VuZGluZ1R5cGVOYXRp
dmUpCi0gICAgICAgICAgICBub3JtYWxpemVMaW5lRW5kaW5nc1RvTmF0aXZlKHV0ZjhUZXh0LCBi
dWZmZXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKHV0ZjhUZXh0
LmRhdGEoKSwgdXRmOFRleHQubGVuZ3RoKCkpOwotICAgICAgICBtX3NpemUgKz0gYnVmZmVyLnNp
emUoKSAtIG9sZFNpemU7Ci0gICAgfQorICAgIGlmIChpc0VuZGluZ1R5cGVOYXRpdmUpCisgICAg
ICAgIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9OYXRpdmUodXRmOFRleHQsIGJ1ZmZlcik7CisgICAg
ZWxzZQorICAgICAgICBidWZmZXIuYXBwZW5kKHV0ZjhUZXh0LmRhdGEoKSwgdXRmOFRleHQubGVu
Z3RoKCkpOworICAgIG1fc2l6ZSArPSBidWZmZXIuc2l6ZSgpIC0gb2xkU2l6ZTsKK30KIAotICAg
IHJldHVybiB0cnVlOwordm9pZCBCbG9iQnVpbGRlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgdGV4
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgYXBwZW5kKHRleHQsIFN0cmluZygpLCBlYyk7
CiB9CiAKLWJvb2wgQmxvYkJ1aWxkZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorI2lmIEVOQUJMRShCTE9CKQordm9pZCBCbG9iQnVpbGRlcjo6YXBwZW5k
KEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYXBwZW5kKHRleHQsIFN0
cmluZygpLCBlYyk7CisgICAgVmVjdG9yPGNoYXI+JiBidWZmZXIgPSBnZXRCdWZmZXIoKTsKKyAg
ICBzaXplX3Qgb2xkU2l6ZSA9IGJ1ZmZlci5zaXplKCk7CisgICAgYnVmZmVyLmFwcGVuZChzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5i
eXRlTGVuZ3RoKCkpOworICAgIG1fc2l6ZSArPSBidWZmZXIuc2l6ZSgpIC0gb2xkU2l6ZTsKIH0K
KyNlbmRpZgogCi1ib29sIEJsb2JCdWlsZGVyOjphcHBlbmQoUGFzc1JlZlB0cjxCbG9iPiBibG9i
KQordm9pZCBCbG9iQnVpbGRlcjo6YXBwZW5kKEJsb2IqIGJsb2IpCiB7CiAgICAgaWYgKGJsb2It
PmlzRmlsZSgpKSB7CiAgICAgICAgIC8vIElmIHRoZSBibG9iIGlzIGZpbGUgdGhhdCBpcyBub3Qg
c25hcHNob3RlZCwgY2FwdHVyZSB0aGUgc25hcHNob3Qgbm93LgogICAgICAgICAvLyBGSVhNRTog
VGhpcyBpbnZvbHZlcyBzeW5jaHJvbm91cyBmaWxlIG9wZXJhdGlvbi4gV2UgbmVlZCB0byBmaWd1
cmUgb3V0IGhvdyB0byBtYWtlIGl0IGFzeW5jaHJvbm91cy4KLSAgICAgICAgRmlsZSogZmlsZSA9
IHN0YXRpY19jYXN0PEZpbGUqPihibG9iLmdldCgpKTsKKyAgICAgICAgRmlsZSogZmlsZSA9IHN0
YXRpY19jYXN0PEZpbGUqPihibG9iKTsKICAgICAgICAgbG9uZyBsb25nIHNuYXBzaG90U2l6ZTsK
ICAgICAgICAgZG91YmxlIHNuYXBzaG90TW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgZmlsZS0+
Y2FwdHVyZVNuYXBzaG90KHNuYXBzaG90U2l6ZSwgc25hcHNob3RNb2RpZmljYXRpb25UaW1lKTsK
QEAgLTk3LDcgKzExMiw2IEBAIGJvb2wgQmxvYkJ1aWxkZXI6OmFwcGVuZChQYXNzUmVmUHRyPEJs
b2I+IGJsb2IpCiAgICAgICAgIG1fc2l6ZSArPSBibG9iU2l6ZTsKICAgICAgICAgbV9pdGVtcy5h
cHBlbmQoQmxvYkRhdGFJdGVtKGJsb2ItPnVybCgpLCAwLCBibG9iU2l6ZSkpOwogICAgIH0KLSAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogUGFzc1JlZlB0cjxCbG9iPiBCbG9iQnVpbGRlcjo6Z2V0Qmxv
Yihjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBp
L0Jsb2JCdWlsZGVyLmggYi9XZWJDb3JlL2ZpbGVhcGkvQmxvYkJ1aWxkZXIuaAppbmRleCBhOTgx
ZTMxLi5kYjQ2NTkxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkJ1aWxkZXIuaAor
KysgYi9XZWJDb3JlL2ZpbGVhcGkvQmxvYkJ1aWxkZXIuaApAQCAtMzIsMTQgKzMyLDEyIEBACiAj
ZGVmaW5lIEJsb2JCdWlsZGVyX2gKIAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCi0jaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIEFycmF5QnVmZmVyOwogY2xhc3MgQmxvYjsKIGNsYXNzIFRleHRF
bmNvZGluZzsKIApAQCAtNDksMTUgKzQ3LDIwIEBAIGNsYXNzIEJsb2JCdWlsZGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8QmxvYkJ1aWxkZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxCbG9iQnVpbGRlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEJsb2JCdWlsZGVy
KCkpOyB9CiAKLSAgICBib29sIGFwcGVuZChQYXNzUmVmUHRyPEJsb2I+KTsKLSAgICBib29sIGFw
cGVuZChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBib29sIGFwcGVu
ZChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgZW5kaW5nLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdm9pZCBhcHBlbmQoQmxvYiopOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmlu
ZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgU3RyaW5nJiBlbmRpbmcsIEV4Y2VwdGlvbkNvZGUmKTsKKyNpZiBFTkFCTEUo
QkxPQikKKyAgICB2b2lkIGFwcGVuZChBcnJheUJ1ZmZlciopOworI2VuZGlmCiAKICAgICBQYXNz
UmVmUHRyPEJsb2I+IGdldEJsb2IoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IFN0cmluZygp
KTsKIAogcHJpdmF0ZToKICAgICBCbG9iQnVpbGRlcigpOwogCisgICAgVmVjdG9yPGNoYXI+JiBn
ZXRCdWZmZXIoKTsKKwogICAgIGxvbmcgbG9uZyBtX3NpemU7CiAgICAgQmxvYkRhdGFJdGVtTGlz
dCBtX2l0ZW1zOwogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9CbG9iQnVpbGRlci5p
ZGwgYi9XZWJDb3JlL2ZpbGVhcGkvQmxvYkJ1aWxkZXIuaWRsCmluZGV4IDBkYTkzMTQuLjhmNTA0
OWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9CbG9iQnVpbGRlci5pZGwKKysrIGIvV2Vi
Q29yZS9maWxlYXBpL0Jsb2JCdWlsZGVyLmlkbApAQCAtMzgsNiArMzgsOSBAQCBtb2R1bGUgaHRt
bCB7CiAgICAgICAgIEJsb2IgZ2V0QmxvYihpbiBbT3B0aW9uYWwsIENvbnZlcnRVbmRlZmluZWRP
ck51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBjb250ZW50VHlwZSk7CiAjZW5kaWYKICAgICAg
ICAgdm9pZCBhcHBlbmQoaW4gQmxvYiBibG9iKTsKKyNpZiBkZWZpbmVkKEVOQUJMRV9CTE9CKSAm
JiBFTkFCTEVfQkxPQgorICAgICAgICB2b2lkIGFwcGVuZChpbiBBcnJheUJ1ZmZlciBhcnJheUJ1
ZmZlcik7CisjZW5kaWYKICAgICAgICAgdm9pZCBhcHBlbmQoaW4gRE9NU3RyaW5nIHZhbHVlLCBp
biBbT3B0aW9uYWwsIENvbnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyBlbmRpbmdzKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKIAo=
</data>
<flag name="review"
          id="61070"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="61071"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>