<?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>40932</bug_id>
          
          <creation_ts>2010-06-21 11:57:53 -0700</creation_ts>
          <short_desc>Separate line-ending conversion code from BlobItem for code cleanup</short_desc>
          <delta_ts>2010-07-14 12:26:43 -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 Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dimich</cc>
    
    <cc>fishd</cc>
    
    <cc>jianli</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>240798</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-06-21 11:57:53 -0700</bug_when>
    <thetext>StrongBlobItem has code for fixing line-endings (e.g. CRLF to native endings etc) but it&apos;d be better to have them separated from BlobItem.  (It&apos;d be also good if we&apos;re going to obsolete BlobItem later.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240808</commentid>
    <comment_count>1</comment_count>
      <attachid>59273</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-06-21 12:21:02 -0700</bug_when>
    <thetext>Created attachment 59273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243749</commentid>
    <comment_count>2</comment_count>
      <attachid>59273</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-06-28 10:17:16 -0700</bug_when>
    <thetext>Comment on attachment 59273
Patch

WebCore/platform/text/LineEnding.cpp:2
 +   * Copyright (C) 2010 Google Inc. All rights reserved.
Please check the author of the original function and give credit here too.

WebCore/platform/text/LineEnding.h:53
 +  // Convert WebCore::String to CString with given line-ending and encoding.
This comment is a little bit vague. It does not mention what is fixed regarding the line ending. Could you please add more detailed comment here?
Also mentioning &quot;Convert WebCore::String to CString&quot; seems to be unnecessary since the argument type and return type indicate that clearly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249436</commentid>
    <comment_count>3</comment_count>
      <attachid>61139</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-07-09 18:49:16 -0700</bug_when>
    <thetext>Created attachment 61139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249437</commentid>
    <comment_count>4</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-07-09 18:52:45 -0700</bug_when>
    <thetext>Thanks for reviewing, updated the code with recent fixes.

(In reply to comment #2)
&gt; (From update of attachment 59273 [details])
&gt; WebCore/platform/text/LineEnding.cpp:2
&gt;  +   * Copyright (C) 2010 Google Inc. All rights reserved.
&gt; Please check the author of the original function and give credit here too.

Fixed.

&gt; WebCore/platform/text/LineEnding.h:53
&gt;  +  // Convert WebCore::String to CString with given line-ending and encoding.
&gt; This comment is a little bit vague. It does not mention what is fixed regarding the line ending. Could you please add more detailed comment here?
&gt; Also mentioning &quot;Convert WebCore::String to CString&quot; seems to be unnecessary since the argument type and return type indicate that clearly.

Fixed - also splitted the function into simple ones (one for converting CRLF, one for CR, one for LF and etc).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250765</commentid>
    <comment_count>5</comment_count>
      <attachid>61139</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-07-13 14:59:15 -0700</bug_when>
    <thetext>Comment on attachment 61139
Patch

r=me

Looks good except the following minor comments. Please address these issue before you land the patch.

WebCore/platform/text/LineEnding.h:38
 +  using WTF::CString;
Please try to avoid using &quot;using&quot; directive in the header file if possible.

WebCore/platform/text/LineEnding.h:51
 +  // Normalize all line-endings in the given string to the native line-endings
Please end the comment with period.

WebCore/platform/text/LineEnding.h:52
 +  // (e.g. normalize to CRLF on Windows etc).
Better to also mention that we normalize to LF for all other platforms, including Linux and MacOSX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251355</commentid>
    <comment_count>6</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-07-14 12:26:43 -0700</bug_when>
    <thetext>Committed r63343: &lt;http://trac.webkit.org/changeset/63343&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59273</attachid>
            <date>2010-06-21 12:21:02 -0700</date>
            <delta_ts>2010-07-09 18:49:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40932-20100621122100.patch</filename>
            <type>text/plain</type>
            <size>20807</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGQzMTIzYjRiMmZiMGJkY2RlYjBlMmM5ZWZmZmZhZGE5MWRmYWM1YmYuLjYwOGVj
NmMyMzgzM2U3MGViMzk3ZjQzYTFhNDI1ODdlNzhlYjI5NDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTI0NCw2ICsx
MjQ0LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9CYXNlNjQu
Y3BwCiAgICAgcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAKKyAgICBwbGF0Zm9ybS90ZXh0
L0xpbmVFbmRpbmcuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAK
ICAgICBwbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAKICAgICBwbGF0Zm9ybS90ZXh0
L1N0cmluZy5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYzFlYjE3MmZkOGY1ZGE0NjU3MTEyYWY1Yjc1ZDAzMGU2NGNmMWYwYy4uNWM2
ZjFlNTczOGIzMGE4ZTgxZDVhZTMwYjM1Nzg3ZjE1NmM5Y2NiYiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAx
MC0wNi0yMSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VwYXJhdGUgbGluZS1lbmRp
bmcgY29udmVyc2lvbiBjb2RlIGZyb20gQmxvYkl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwOTMyCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFz
IGl0IGRvZXNuJ3QgY2hhbmdlIGFueSBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL0Jsb2JCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJs
b2JCdWlsZGVyOjphcHBlbmRTdHJpbmcpOgorICAgICAgICAqIGh0bWwvRm9ybURhdGFMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhTGlzdDo6YXBwZW5kU3RyaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9CbG9iSXRlbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vQmxvYkl0ZW0u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuaDogQWRkZWQuCisKIDIwMTAtMDYtMTggIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggZTc4NTc0OTZhZTg2ZTU2ZDc0YWI2MmFjNmEyYWY5MjM0
Mzk4NDhmMC4uZDA0YzRkMzEyZWZmYzcwOWU2MDc3NzIyN2MwMzdkNjNjNGMwOTg5OCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CkBAIC0xODA1LDYgKzE4MDUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxh
dGZvcm0vdGV4dC9CaWRpQ29udGV4dC5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJl
c29sdmVyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vdGV4dC9DaGFyYWN0ZXJOYW1lcy5oIFwKKwlX
ZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0v
dGV4dC9MaW5lRW5kaW5nLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vdGV4dC9QYXJzZXJVdGlsaXRp
ZXMuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtU3RyaW5nLmggXAogCVdlYkNv
cmUvcGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAgXApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmMmNkZDY3M2Yz
MDMzNzJmMTY3ZjgwYTg0NDMwYjViNmVhMzRmYTkwLi5iZDAzYTg1ZjVjNjVhNTI0YTZlYWI0YWVi
NDU2OTk1YTE5MGFlNWY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjc1OSw2ICsyNzU5LDggQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQv
QmlkaVJlc29sdmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvQ2hhcmFjdGVyTmFt
ZXMuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmNwcCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL3RleHQvUGFyc2VyVXRpbGl0aWVzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQv
UGxhdGZvcm1TdHJpbmcuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhw
cmVzc2lvbi5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggOTJhNzc1YzA4OTcyMmY2ZTQwNzI5YWZjYTg0YTNlMWU2OGM4NmM4
Ni4uZjRhY2E1Zjg1MWNjM2M0MDQ0MDA4OTk2YzFkMDg4MDczNTQwYzk3NiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC04NzQsNiAr
ODc0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vS2lsbFJpbmdOb25lLmNwcCBcCiAg
ICAgcGxhdGZvcm0vS1VSTC5jcHAgXAogICAgIHBsYXRmb3JtL0xlbmd0aC5jcHAgXAorICAgIHBs
YXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAgXAogICAgIHBsYXRmb3JtL0xpbmtIYXNoLmNwcCBc
CiAgICAgcGxhdGZvcm0vTG9nZ2luZy5jcHAgXAogICAgIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuY3BwIFwKQEAgLTE2MzQsNiArMTYzNSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3Jt
L0tpbGxSaW5nLmggXAogICAgIHBsYXRmb3JtL0tVUkwuaCBcCiAgICAgcGxhdGZvcm0vTGVuZ3Ro
LmggXAorICAgIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oIFwKICAgICBwbGF0Zm9ybS9MaW5r
SGFzaC5oIFwKICAgICBwbGF0Zm9ybS9Mb2dnaW5nLmggXAogICAgIHBsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA2MjRk
NDMzNjViOGZiNGRhYTNkZDFhMzU0NzU4ZTNhOGRjYjNlZWY5Li5mMjg3ZTU3MWRlYWMyYjRmMDFj
MTY0NDVjZmNhYjcyY2Q1OGYwY2E0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKQEAgLTI2MjMyLDYgKzI2MjMyLDE0IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8
RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XExpbmVFbmRpbmcuY3Bw
Ig0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsYXRmb3JtXHRleHRcTGluZUVuZGluZy5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQor
CQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRleHRcUGFyc2VyVXRp
bGl0aWVzLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDkxNTMzMmY5NjI1ZWI5NDFiY2U5Y2FiZjk2OTNmNWQ0
YjZhZGQ5MTQuLjEzMzQzMWQxMzhlMWY3ZjJhMGIyNzg4ZGU2Nzg5YzM3MjkxM2UxNTkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjYwLDYgKzIyNjAs
OCBAQAogCQk4NUZGMzE1QTBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVGRjMxNTgwQUFG
QkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQuaCAqLzsgfTsKIAkJODVGRjMxNUIwQUFG
QkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUZGMzE1OTBBQUZCRkNCMDAzNzRGMzggLyogRE9N
S2V5Ym9hcmRFdmVudC5tbSAqLzsgfTsKIAkJODYyNDNEMDExMUJDMzFGNzAwQ0MwMDZBIC8qIEpT
QXJyYXlCdWZmZXJWaWV3SGVscGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NjI0M0QwMDExQkMzMUY3MDBDQzAwNkEgLyogSlNBcnJheUJ1ZmZlclZp
ZXdIZWxwZXIuaCAqLzsgfTsKKwkJODkyMUI4QjIxMUNDQUJCRjAwNjY1QkE0IC8qIExpbmVFbmRp
bmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODky
MUI4QjAxMUNDQUJCRjAwNjY1QkE0IC8qIExpbmVFbmRpbmcuY3BwICovOyB9OworCQk4OTIxQjhC
MzExQ0NBQkJGMDA2NjVCQTQgLyogTGluZUVuZGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkyMUI4QjExMUNDQUJCRjAwNjY1QkE0IC8qIExpbmVF
bmRpbmcuaCAqLzsgfTsKIAkJODk1MjUzNTIxMTY0MUIzNDAwQ0FCRjAwIC8qIEZpbGVUaHJlYWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk1MjUz
NTAxMTY0MUIzNDAwQ0FCRjAwIC8qIEZpbGVUaHJlYWQuY3BwICovOyB9OwogCQk4OTUyNTM1MzEx
NjQxQjM0MDBDQUJGMDAgLyogRmlsZVRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODk1MjUzNTExMTY0MUIzNDAwQ0FCRjAwIC8qIEZpbGVUaHJl
YWQuaCAqLzsgfTsKIAkJODk1MjUzRDcxMTZDNEM2ODAwQ0FCRjAwIC8qIEZpbGVTdHJlYW0uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk1MjUzRDQx
MTZDNEM2ODAwQ0FCRjAwIC8qIEZpbGVTdHJlYW0uY3BwICovOyB9OwpAQCAtNzg2OCw2ICs3ODcw
LDggQEAKIAkJODVGRjMxNTgwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUtleWJvYXJkRXZlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODVGRjMxNTkwQUFGQkZDQjAwMzc0RjM4IC8qIERP
TUtleWJvYXJkRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRE9NS2V5Ym9hcmRFdmVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYy
NDNEMDAxMUJDMzFGNzAwQ0MwMDZBIC8qIEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5MjFCOEIwMTFDQ0FCQkYwMDY2NUJBNCAvKiBM
aW5lRW5kaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmVF
bmRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTIxQjhCMTExQ0NBQkJG
MDA2NjVCQTQgLyogTGluZUVuZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBMaW5lRW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5NTI1MzUwMTE2
NDFCMzQwMENBQkYwMCAvKiBGaWxlVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZpbGVUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4OTUyNTM1MTExNjQxQjM0MDBDQUJGMDAgLyogRmlsZVRocmVhZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg5NTI1M0Q0MTE2QzRDNjgwMENBQkYwMCAvKiBGaWxlU3RyZWFtLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTUyMjgsNiArMTUyMzIsOCBAQAogCQlCMkMzRDlFQzBEMDA2
QzFEMDBFRjZGMjYgLyogdGV4dCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJODkyMUI4QjAxMUNDQUJCRjAwNjY1QkE0IC8qIExpbmVFbmRpbmcuY3BwICov
LAorCQkJCTg5MjFCOEIxMTFDQ0FCQkYwMDY2NUJBNCAvKiBMaW5lRW5kaW5nLmggKi8sCiAJCQkJ
QjJCMjY0NTkwRDAwQTc3RTAwMEFDQzFEIC8qIGNmICovLAogCQkJCUIyQzNEOUY5MEQwMDZDMUQw
MEVGNkYyNiAvKiBtYWMgKi8sCiAJCQkJQjczNEIxN0YxMTlCOThEQjAwNjU4N0JEIC8qIHRyYW5z
Y29kZXIgKi8sCkBAIC0xOTQ1MCw2ICsxOTQ1Niw3IEBACiAJCQkJQ0UxNzJFMDExMTM2RThDRTAw
NjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQ4RjgxQjExQ0FCOUU5
MDBFOTNFNTQgLyogUGxhdGZvcm1TdHJhdGVnaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE4
Nzk5MDExQ0JFODQ2MDAzQzY2NEYgLyogUGx1Z2luU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovLAor
CQkJCTg5MjFCOEIzMTFDQ0FCQkYwMDY2NUJBNCAvKiBMaW5lRW5kaW5nLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTIxNzYwLDYgKzIxNzY3LDcgQEAKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQg
LyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyMDBCMTkwOTExQzI3N0Q5MDBE
Q0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUQ4Rjgx
QzExQ0FCOUU5MDBFOTNFNTQgLyogUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTg5MjFCOEIyMTFDQ0FCQkYwMDY2NUJBNCAvKiBMaW5lRW5kaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmNwcCBiL1dlYkNv
cmUvaHRtbC9CbG9iQnVpbGRlci5jcHAKaW5kZXggMDU5OWY0ODY5YzJmNmZhNDYwMjlkMjc5OGY5
Nzg2NWZjYzk2YTY2ZS4uOWRiNDBlNmJjZThhY2ViZWU1ZGZhMTMzNzRhYWVjOTkyYmFmM2JiMyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0Jsb2JCdWlsZGVyLmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvQmxvYkJ1aWxkZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQXRvbWljU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlICJMaW5lRW5kaW5nLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTY1LDcgKzY2LDcgQEAgYm9vbCBCbG9iQnVpbGRlcjo6YXBwZW5k
U3RyaW5nKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb24K
ICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQot
ICAgIG1faXRlbXMuYXBwZW5kKFN0cmluZ0Jsb2JJdGVtOjpjcmVhdGUodGV4dCwgZW5kaW5nVHlw
ZSwgVVRGOEVuY29kaW5nKCkpKTsKKyAgICBtX2l0ZW1zLmFwcGVuZChTdHJpbmdCbG9iSXRlbTo6
Y3JlYXRlKGZpeExpbmVFbmRpbmdzKHRleHQsIGVuZGluZ1R5cGUsIFVURjhFbmNvZGluZygpKSkp
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvRm9ybURh
dGFMaXN0LmNwcCBiL1dlYkNvcmUvaHRtbC9Gb3JtRGF0YUxpc3QuY3BwCmluZGV4IDBmNjI1OTVl
ZDQxYzIzMTliZGI3OWI1N2JiZDdjYTk0NjIyYjgyYWEuLjBhNjk0MDBiNDBhYTEzOTJmYzA1M2E1
ZDVkOWU0ZWQ2ODQ1ZjlkYmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9Gb3JtRGF0YUxpc3Qu
Y3BwCisrKyBiL1dlYkNvcmUvaHRtbC9Gb3JtRGF0YUxpc3QuY3BwCkBAIC0yMSw2ICsyMSw4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFMaXN0LmgiCiAKKyNpbmNs
dWRlICJMaW5lRW5kaW5nLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRm9ybURhdGFMaXN0
OjpGb3JtRGF0YUxpc3QoY29uc3QgVGV4dEVuY29kaW5nJiBjKQpAQCAtMzAsNyArMzIsNyBAQCBG
b3JtRGF0YUxpc3Q6OkZvcm1EYXRhTGlzdChjb25zdCBUZXh0RW5jb2RpbmcmIGMpCiAKIHZvaWQg
Rm9ybURhdGFMaXN0OjphcHBlbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzKQogewotICAgIG1faXRl
bXMuYXBwZW5kKFN0cmluZ0Jsb2JJdGVtOjpjcmVhdGUocywgRW5kaW5nQ1JMRiwgbV9lbmNvZGlu
ZykpOworICAgIG1faXRlbXMuYXBwZW5kKFN0cmluZ0Jsb2JJdGVtOjpjcmVhdGUoZml4TGluZUVu
ZGluZ3MocywgRW5kaW5nQ1JMRiwgbV9lbmNvZGluZykpKTsKIH0KIAogdm9pZCBGb3JtRGF0YUxp
c3Q6OmFwcGVuZFN0cmluZyhjb25zdCBDU3RyaW5nJiBzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9CbG9iSXRlbS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL0Jsb2JJdGVtLmNwcAppbmRl
eCBmOThlNDY2MDQ4MTU5YTc3Y2JjOWU0YTRlN2M1ODhhMDJlMjFkZjljLi45NDk2NzIxMjEwYzEx
ZDhlZWMwN2U4MWIyZDJjYzU5Zjk5OTFlNmU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L0Jsb2JJdGVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0Jsb2JJdGVtLmNwcApAQCAtMTA0
LDk1ICsxMDQsMTYgQEAgUGFzc1JlZlB0cjxCbG9iSXRlbT4gRmlsZUJsb2JJdGVtOjpzbGljZShs
b25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgpCiAKIC8vIFN0cmluZ0Jsb2JJdGVtIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLVBhc3NSZWZQdHI8QmxvYkl0ZW0+IFN0cmluZ0Jsb2JJdGVtOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBMaW5lRW5kaW5nIGVuZGluZywgVGV4dEVuY29kaW5nIGVuY29kaW5nKQot
ewotICAgIHJldHVybiBhZG9wdFJlZihzdGF0aWNfY2FzdDxCbG9iSXRlbSo+KG5ldyBTdHJpbmdC
bG9iSXRlbSh0ZXh0LCBlbmRpbmcsIGVuY29kaW5nKSkpOwotfQotCiBQYXNzUmVmUHRyPEJsb2JJ
dGVtPiBTdHJpbmdCbG9iSXRlbTo6Y3JlYXRlKGNvbnN0IENTdHJpbmcmIHRleHQpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKHN0YXRpY19jYXN0PEJsb2JJdGVtKj4obmV3IFN0cmluZ0Jsb2JJdGVt
KHRleHQpKSk7CiB9CiAKLVN0cmluZ0Jsb2JJdGVtOjpTdHJpbmdCbG9iSXRlbShjb25zdCBTdHJp
bmcmIHRleHQsIExpbmVFbmRpbmcgZW5kaW5nLCBUZXh0RW5jb2RpbmcgZW5jb2RpbmcpCi0gICAg
OiBtX2RhdGEoU3RyaW5nQmxvYkl0ZW06OmNvbnZlcnRUb0NTdHJpbmcodGV4dCwgZW5kaW5nLCBl
bmNvZGluZykpCi17Ci19Ci0KIFN0cmluZ0Jsb2JJdGVtOjpTdHJpbmdCbG9iSXRlbShjb25zdCBD
U3RyaW5nJiB0ZXh0KQogICAgIDogbV9kYXRhKHRleHQpCiB7CiB9CiAKLUNTdHJpbmcgU3RyaW5n
QmxvYkl0ZW06OmNvbnZlcnRUb0NTdHJpbmcoY29uc3QgU3RyaW5nJiB0ZXh0LCBMaW5lRW5kaW5n
IGVuZGluZywgVGV4dEVuY29kaW5nIGVuY29kaW5nKQotewotICAgIENTdHJpbmcgZnJvbSA9IGVu
Y29kaW5nLmVuY29kZSh0ZXh0LmNoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgRW50aXRpZXNG
b3JVbmVuY29kYWJsZXMpOwotICAgIENTdHJpbmcgcmVzdWx0ID0gZnJvbTsKLQotICAgIGlmIChl
bmRpbmcgPT0gRW5kaW5nVHJhbnNwYXJlbnQpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAg
ICBpZiAoZW5kaW5nID09IEVuZGluZ05hdGl2ZSkgewotI2lmIE9TKFdJTkRPV1MpCi0gICAgICAg
IGVuZGluZyA9IEVuZGluZ0NSTEY7Ci0jZWxzZQotICAgICAgICBlbmRpbmcgPSBFbmRpbmdMRjsK
LSNlbmRpZgotICAgIH0KLQotICAgIGNvbnN0IGNoYXIqIGVuZGluZ0NoYXJzID0gKGVuZGluZyA9
PSBFbmRpbmdDUkxGKSA/ICJcclxuIiA6ICgoZW5kaW5nID09IEVuZGluZ0NSKSA/ICJcciIgOiAi
XG4iKTsKLQotICAgIGludCBlbmRpbmdMZW5ndGggPSAoZW5kaW5nID09IEVuZGluZ0NSTEYpID8g
MiA6IDE7Ci0gICAgaW50IG5lZWRGaXggPSAwOwotCi0gICAgLy8gQ2FsY3VsYXRlIHRoZSBmaW5h
bCBsZW5ndGguCi0gICAgaW50IGNhbGN1bGF0ZWRMZW5ndGggPSBmcm9tLmxlbmd0aCgpOwotICAg
IGNvbnN0IGNoYXIqIHAgPSBmcm9tLmRhdGEoKTsKLSAgICB3aGlsZSAoY2hhciBjID0gKnArKykg
ewotICAgICAgICBpZiAoYyA9PSAnXHInKSB7Ci0gICAgICAgICAgICAvLyBTYWZlIHRvIGxvb2sg
YWhlYWQgYmVjYXVzZSBvZiB0cmFpbGluZyAnXDAnLgotICAgICAgICAgICAgaWYgKCpwID09ICdc
bicgJiYgZW5kaW5nICE9IEVuZGluZ0NSTEYpIHsKLSAgICAgICAgICAgICAgICBwKys7Ci0gICAg
ICAgICAgICAgICAgY2FsY3VsYXRlZExlbmd0aCArPSAoZW5kaW5nTGVuZ3RoIC0gMik7Ci0gICAg
ICAgICAgICAgICAgKytuZWVkRml4OwotICAgICAgICAgICAgfSBlbHNlIGlmIChlbmRpbmcgIT0g
RW5kaW5nQ1IpIHsKLSAgICAgICAgICAgICAgICBjYWxjdWxhdGVkTGVuZ3RoICs9IChlbmRpbmdM
ZW5ndGggLSAxKTsKLSAgICAgICAgICAgICAgICArK25lZWRGaXg7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXG4nICYmIGVuZGluZyAhPSBFbmRpbmdMRikgewotICAg
ICAgICAgICAgY2FsY3VsYXRlZExlbmd0aCArPSAoZW5kaW5nTGVuZ3RoIC0gMSk7Ci0gICAgICAg
ICAgICArK25lZWRGaXg7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIW5lZWRGaXgpCi0g
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAvLyBDb252ZXJ0IHRoZSBlbmRpbmdzIGFuZCBj
cmVhdGUgYSBkYXRhIGJ1ZmZlci4KLSAgICBwID0gZnJvbS5kYXRhKCk7Ci0gICAgY2hhciogcTsK
LSAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGNhbGN1bGF0ZWRMZW5ndGgs
IHEpOwotICAgIHdoaWxlIChjaGFyIGMgPSAqcCsrKSB7Ci0gICAgICAgIGlmIChjID09ICdccicp
IHsKLSAgICAgICAgICAgIGlmICgqcCA9PSAnXG4nICYmIGVuZGluZyAhPSBFbmRpbmdDUkxGKSB7
Ci0gICAgICAgICAgICAgICAgcCsrOwotICAgICAgICAgICAgICAgIG1lbWNweShxLCBlbmRpbmdD
aGFycywgZW5kaW5nTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBxICs9IGVuZGluZ0xlbmd0aDsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoKnAgIT0gJ1xuJyAmJiBlbmRpbmcgIT0gRW5kaW5nQ1Ip
IHsKLSAgICAgICAgICAgICAgICBtZW1jcHkocSwgZW5kaW5nQ2hhcnMsIGVuZGluZ0xlbmd0aCk7
Ci0gICAgICAgICAgICAgICAgcSArPSBlbmRpbmdMZW5ndGg7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSBpZiAoYyA9PSAnXG4nICYmIGVuZGluZyAhPSBFbmRpbmdMRikgewotICAgICAg
ICAgICAgbWVtY3B5KHEsIGVuZGluZ0NoYXJzLCBlbmRpbmdMZW5ndGgpOwotICAgICAgICAgICAg
cSArPSBlbmRpbmdMZW5ndGg7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBMZWF2
ZSBvdGhlciBjaGFyYWN0ZXJzIGFsb25lLgotICAgICAgICAgICAgKnErKyA9IGM7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogLy8gQnl0ZUFycmF5QmxvYkl0ZW0g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiBQYXNzUmVmUHRyPEJsb2JJdGVtPiBCeXRlQXJyYXlCbG9iSXRlbTo6Y3JlYXRlKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9C
bG9iSXRlbS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9CbG9iSXRlbS5oCmluZGV4IDFkMzRjNTk0ZjAz
NGYwM2Q1Mzc4MzFkNTFhM2FmODI4ZTQ0NjdlYTEuLmU2Y2MyZGNiN2RhMjM3NjFlMjdhYjMzZTFk
MGEzYzNkNGYyMzdlYTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL0Jsb2JJdGVtLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNkZWZp
bmUgQmxvYkl0ZW1faAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJU
ZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDEsMTUgKzQwLDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBTdHJpbmcgZW5kaW5nIHR5cGVzLgotZW51
bSBMaW5lRW5kaW5nIHsKLSAgICBFbmRpbmdUcmFuc3BhcmVudCA9IDAsCi0gICAgRW5kaW5nTmF0
aXZlLAotICAgIEVuZGluZ0xGLAotICAgIEVuZGluZ0NSLAotICAgIEVuZGluZ0NSTEYsCi19Owot
CiBjbGFzcyBCeXRlQXJyYXlCbG9iSXRlbTsKIGNsYXNzIERhdGFCbG9iSXRlbTsKIGNsYXNzIERh
dGFSYW5nZUJsb2JJdGVtOwpAQCAtMTI2LDcgKzExNiw2IEBAIHByb3RlY3RlZDoKIAogY2xhc3Mg
U3RyaW5nQmxvYkl0ZW0gOiBwdWJsaWMgRGF0YUJsb2JJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxCbG9iSXRlbT4gY3JlYXRlKGNvbnN0IFN0cmluZyYsIExpbmVFbmRpbmcs
IFRleHRFbmNvZGluZyk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QmxvYkl0ZW0+IGNyZWF0ZShj
b25zdCBDU3RyaW5nJik7CiAgICAgY29uc3QgQ1N0cmluZyYgY3N0cigpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQogCkBAIC0xMzgsOSArMTI3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29u
c3QgY2hhciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5kYXRhKCk7IH0KIAogcHJpdmF0
ZToKLSAgICBTdHJpbmdCbG9iSXRlbShjb25zdCBTdHJpbmcmLCBMaW5lRW5kaW5nLCBUZXh0RW5j
b2RpbmcpOwogICAgIFN0cmluZ0Jsb2JJdGVtKGNvbnN0IENTdHJpbmcmKTsKLSAgICBzdGF0aWMg
Q1N0cmluZyBjb252ZXJ0VG9DU3RyaW5nKGNvbnN0IFN0cmluZyYsIExpbmVFbmRpbmcsIFRleHRF
bmNvZGluZyk7CiAgICAgQ1N0cmluZyBtX2RhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGlu
ZUVuZGluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzVmMmM2ZjVjMWQxM2VjZDBlNjQyNWU2MWE3ZWQ4MDNj
NTI5NjNmZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lRW5k
aW5nLmNwcApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJM
aW5lRW5kaW5nLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRl
eHRFbmNvZGluZy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisjaWYgT1MoV0lORE9XUykKK0xpbmVFbmRpbmcgbmF0aXZlRW5kaW5nID0g
RW5kaW5nQ1JMRjsKKyNlbHNlCitMaW5lRW5kaW5nIG5hdGl2ZUVuZGluZyA9IEVuZGluZ0xGOwor
I2VuZGlmCisKK0NTdHJpbmcgZml4TGluZUVuZGluZ3MoY29uc3QgU3RyaW5nJiB0ZXh0LCBMaW5l
RW5kaW5nIGVuZGluZywgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykKK3sKKyAgICBDU3Ry
aW5nIGZyb20gPSBlbmNvZGluZy5lbmNvZGUodGV4dC5jaGFyYWN0ZXJzKCksIHRleHQubGVuZ3Ro
KCksIEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKKyAgICBDU3RyaW5nIHJlc3VsdCA9IGZyb207
CisKKyAgICBpZiAoZW5kaW5nID09IEVuZGluZ1RyYW5zcGFyZW50KQorICAgICAgICByZXR1cm4g
cmVzdWx0OworCisgICAgaWYgKGVuZGluZyA9PSBFbmRpbmdOYXRpdmUpCisgICAgICAgIGVuZGlu
ZyA9IG5hdGl2ZUVuZGluZzsKKworICAgIGNvbnN0IGNoYXIqIGVuZGluZ0NoYXJzID0gKGVuZGlu
ZyA9PSBFbmRpbmdDUkxGKSA/ICJcclxuIiA6ICgoZW5kaW5nID09IEVuZGluZ0NSKSA/ICJcciIg
OiAiXG4iKTsKKworICAgIGludCBlbmRpbmdMZW5ndGggPSAoZW5kaW5nID09IEVuZGluZ0NSTEYp
ID8gMiA6IDE7CisgICAgaW50IG5lZWRGaXggPSAwOworCisgICAgLy8gQ2FsY3VsYXRlIHRoZSBm
aW5hbCBsZW5ndGguCisgICAgaW50IGNhbGN1bGF0ZWRMZW5ndGggPSBmcm9tLmxlbmd0aCgpOwor
ICAgIGNvbnN0IGNoYXIqIHAgPSBmcm9tLmRhdGEoKTsKKyAgICB3aGlsZSAoY2hhciBjID0gKnAr
KykgeworICAgICAgICBpZiAoYyA9PSAnXHInKSB7CisgICAgICAgICAgICAvLyBTYWZlIHRvIGxv
b2sgYWhlYWQgYmVjYXVzZSBvZiB0cmFpbGluZyAnXDAnLgorICAgICAgICAgICAgaWYgKCpwID09
ICdcbicgJiYgZW5kaW5nICE9IEVuZGluZ0NSTEYpIHsKKyAgICAgICAgICAgICAgICBwKys7Cisg
ICAgICAgICAgICAgICAgY2FsY3VsYXRlZExlbmd0aCArPSAoZW5kaW5nTGVuZ3RoIC0gMik7Cisg
ICAgICAgICAgICAgICAgKytuZWVkRml4OworICAgICAgICAgICAgfSBlbHNlIGlmIChlbmRpbmcg
IT0gRW5kaW5nQ1IpIHsKKyAgICAgICAgICAgICAgICBjYWxjdWxhdGVkTGVuZ3RoICs9IChlbmRp
bmdMZW5ndGggLSAxKTsKKyAgICAgICAgICAgICAgICArK25lZWRGaXg7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXG4nICYmIGVuZGluZyAhPSBFbmRpbmdMRikgewor
ICAgICAgICAgICAgY2FsY3VsYXRlZExlbmd0aCArPSAoZW5kaW5nTGVuZ3RoIC0gMSk7CisgICAg
ICAgICAgICArK25lZWRGaXg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW5lZWRGaXgp
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAvLyBDb252ZXJ0IHRoZSBlbmRpbmdzIGFu
ZCBjcmVhdGUgYSBkYXRhIGJ1ZmZlci4KKyAgICBwID0gZnJvbS5kYXRhKCk7CisgICAgY2hhciog
cTsKKyAgICByZXN1bHQgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGNhbGN1bGF0ZWRMZW5n
dGgsIHEpOworICAgIHdoaWxlIChjaGFyIGMgPSAqcCsrKSB7CisgICAgICAgIGlmIChjID09ICdc
cicpIHsKKyAgICAgICAgICAgIGlmICgqcCA9PSAnXG4nICYmIGVuZGluZyAhPSBFbmRpbmdDUkxG
KSB7CisgICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgICAgIG1lbWNweShxLCBlbmRp
bmdDaGFycywgZW5kaW5nTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBxICs9IGVuZGluZ0xlbmd0
aDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKnAgIT0gJ1xuJyAmJiBlbmRpbmcgIT0gRW5kaW5n
Q1IpIHsKKyAgICAgICAgICAgICAgICBtZW1jcHkocSwgZW5kaW5nQ2hhcnMsIGVuZGluZ0xlbmd0
aCk7CisgICAgICAgICAgICAgICAgcSArPSBlbmRpbmdMZW5ndGg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXG4nICYmIGVuZGluZyAhPSBFbmRpbmdMRikgeworICAg
ICAgICAgICAgbWVtY3B5KHEsIGVuZGluZ0NoYXJzLCBlbmRpbmdMZW5ndGgpOworICAgICAgICAg
ICAgcSArPSBlbmRpbmdMZW5ndGg7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBM
ZWF2ZSBvdGhlciBjaGFyYWN0ZXJzIGFsb25lLgorICAgICAgICAgICAgKnErKyA9IGM7CisgICAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U1ZjBiOWEwMWYx
NDk3MTEyZmY0ZDgzZWY4MDVhMmU5NGMzNDIyNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTGluZUVu
ZGluZ19oCisjZGVmaW5lIExpbmVFbmRpbmdfaAorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIENT
dHJpbmc7Cit9Cit1c2luZyBXVEY6OkNTdHJpbmc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgU3RyaW5nOworY2xhc3MgVGV4dEVuY29kaW5nOworCisvLyBTdHJpbmcgZW5kaW5nIHR5
cGVzLgorZW51bSBMaW5lRW5kaW5nIHsKKyAgICBFbmRpbmdUcmFuc3BhcmVudCA9IDAsCisgICAg
RW5kaW5nTmF0aXZlLAorICAgIEVuZGluZ0xGLAorICAgIEVuZGluZ0NSLAorICAgIEVuZGluZ0NS
TEYsCit9OworCisvLyBDb252ZXJ0IFdlYkNvcmU6OlN0cmluZyB0byBDU3RyaW5nIHdpdGggZ2l2
ZW4gbGluZS1lbmRpbmcgYW5kIGVuY29kaW5nLgorV1RGOjpDU3RyaW5nIGZpeExpbmVFbmRpbmdz
KGNvbnN0IFN0cmluZyYgdGV4dCwgTGluZUVuZGluZywgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNv
ZGluZyk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIExpbmVFbmRpbmdf
aAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61139</attachid>
            <date>2010-07-09 18:49:16 -0700</date>
            <delta_ts>2010-07-13 14:59:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40932-20100709184915.patch</filename>
            <type>text/plain</type>
            <size>24338</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDRjMjNkNDBjYTkxYzk3YjE5ZmY2Y2JmODE2ZGRhMjRjY2IyMzUyZWIuLjdhNGFl
NDljZjUwOGYyNDMyYTAyMmQ1NDk1NDhmZmNiNzVkNjkxN2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTI2OSw2ICsx
MjY5LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9CYXNlNjQu
Y3BwCiAgICAgcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAKKyAgICBwbGF0Zm9ybS90ZXh0
L0xpbmVFbmRpbmcuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5jcHAKICAgICBw
bGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcAogICAgIHBsYXRmb3JtL3RleHQvU2Vn
bWVudGVkU3RyaW5nLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBhMjA4NDdmZDg2ZTFhMjc1OGU3ZDU1MTliYjcxNjA0OWVhN2EzMDUy
Li42NjkxN2Q0Yjc1ZGU5ODFmMDA5ZDdhNmUzYTViMjk5ZDBiOWIyNDE0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBA
CisyMDEwLTA3LTA5ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXBhcmF0ZSBsaW5l
LWVuZGluZyBjb252ZXJzaW9uIGNvZGUgZnJvbSBCbG9iSXRlbQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA5MzIKKworICAgICAgICBBZGQgY29tbW9u
IGxpbmUtZW5kaW5nIG5vcm1hbGl6YXRpb24gY29kZSB1bmRlciBwbGF0Zm9ybS90ZXh0LgorICAg
ICAgICBObyBuZXcgdGVzdHMgYXMgaXQgZG9lc24ndCBjaGFuZ2UgYW55IGZ1bmN0aW9uYWxpdHku
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvQmxvYkJ1aWxkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYkJ1aWxkZXI6OmFwcGVuZFN0cmluZyk6CisgICAgICAgICog
aHRtbC9Gb3JtRGF0YUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFMaXN0Ojph
cHBlbmRTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0Jsb2JJdGVtLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9CbG9iSXRlbS5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTGluZUVuZGlu
Zy5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oOiBBZGRl
ZC4KKwogMjAxMC0wNy0wOCAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNDJiMjU5OWRiMDQ1
MjZmOGE1OTg1ZWJlMTU5NDcyY2JkYWEwYmY2NS4uOTUzOTRjM2U1YjgxOGYxZTY2NDdhMmRkZWRm
ZWUxNjE4MmYxYzMwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xODY2LDYgKzE4NjYsOCBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vdGV4dC9DaGFyYWN0ZXJOYW1lcy5oIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvSHlwaGVuYXRpb24uaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuY3Bw
IFwKKwlXZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oIFwKIAlXZWJDb3JlL3BsYXRm
b3JtL3RleHQvUGFyc2VyVXRpbGl0aWVzLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0
Zm9ybVN0cmluZy5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24u
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggN2RhYjhkMmQwZmIyYmEwMWYzYjU1NTZiZjM1YmFiMjllY2M0NTVkNC4uZDY5
NmU5OWY5MjU2Y2ZhOGJkNTEzZmMwNDc4ZGExMmYwODExOWRhMSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI4MjIsNiArMjgy
Miw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9DaGFyYWN0ZXJOYW1lcy5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0
L0xpbmVFbmRpbmcuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9QYXJzZXJVdGlsaXRpZXMuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vdGV4dC9QbGF0Zm9ybVN0cmluZy5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBmOGRlYjhhYjZmNzJlMmIz
MTBiNGI1NGJiMzIyMDRhYzI3NjgxYjk3Li4yZDgwODVkMWE0NjIyM2JkMWMwMTcxMGIzOWE1MWVl
ZDgzNDcxN2VmIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS5wcm8KQEAgLTg5MSw2ICs4OTEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9y
bS9LaWxsUmluZ05vbmUuY3BwIFwKICAgICBwbGF0Zm9ybS9LVVJMLmNwcCBcCiAgICAgcGxhdGZv
cm0vTGVuZ3RoLmNwcCBcCisgICAgcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmNwcCBcCiAgICAg
cGxhdGZvcm0vTGlua0hhc2guY3BwIFwKICAgICBwbGF0Zm9ybS9Mb2dnaW5nLmNwcCBcCiAgICAg
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgXApAQCAtMTY2MCw2ICsxNjYxLDcgQEAgSEVB
REVSUyArPSBcCiAgICAgcGxhdGZvcm0vS2lsbFJpbmcuaCBcCiAgICAgcGxhdGZvcm0vS1VSTC5o
IFwKICAgICBwbGF0Zm9ybS9MZW5ndGguaCBcCisgICAgcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5n
LmggXAogICAgIHBsYXRmb3JtL0xpbmtIYXNoLmggXAogICAgIHBsYXRmb3JtL0xvZ2dpbmcuaCBc
CiAgICAgcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDBkYTc0NTNkM2Q3OTgwNDQ2ZDMwMGU4NDZmZGU4NzVmM2U1MTM3
MGMuLmExYTI1ZTc3MTExMjdmZDUyZTU5M2U0ZWNiNGMyMWUzNDk2MzU2MTMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjcxMDgsNiArMjcxMDgsMTQgQEAKIAkJCQkJ
Pg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXHRleHRcTGluZUVuZGluZy5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZp
bGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxMaW5lRW5kaW5nLmgiDQor
CQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cdGV4dFxQYXJzZXJVdGlsaXRpZXMuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDAzMmQwM2Fi
YjcxMTAxMTI2ZjkwMWE5N2I4N2I0ODI5MmRjNWI0YS4uYWExMWQyM2VhOGE4ZjNhNjdiMTU0ZDIw
ZWEyZTllYWYyN2E1NjBmYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTIzMDksNiArMjMwOSw4IEBACiAJCTg5NTI1M0RGMTE2QzRGMDYwMENBQkYwMCAv
KiBGaWxlVGhyZWFkVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODk1MjUzREUxMTZDNEYwNjAwQ0FCRjAwIC8qIEZpbGVUaHJlYWRUYXNrLmggKi87
IH07CiAJCTg5ODhFMTBFMTFBMzUwOEIwMERCNzMyRSAvKiBCbG9iSXRlbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTg4RTEwQzExQTM1MDhCMDBE
QjczMkUgLyogQmxvYkl0ZW0uY3BwICovOyB9OwogCQk4OTg4RTEwRjExQTM1MDhCMDBEQjczMkUg
LyogQmxvYkl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg5ODhFMTBEMTFBMzUwOEIwMERCNzMyRSAvKiBCbG9iSXRlbS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg5QjVFQUExMTFFODAwM0QwMEYy
MzY3RSAvKiBMaW5lRW5kaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg5QjVFQTlGMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmNwcCAq
LzsgfTsKKwkJODlCNUVBQTIxMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5QjVFQUEwMTFFODAwM0Qw
MEYyMzY3RSAvKiBMaW5lRW5kaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODlCRUQ1RUIxMUJFMTFDRTAwNDQ4NDkyIC8qIEJsb2JCdWlsZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5QkVE
NUU5MTFCRTExQ0UwMDQ0ODQ5MiAvKiBCbG9iQnVpbGRlci5jcHAgKi87IH07CiAJCTg5QkVENUVD
MTFCRTExQ0UwMDQ0ODQ5MiAvKiBCbG9iQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODlCRUQ1RUExMUJFMTFDRTAwNDQ4NDkyIC8qIEJsb2JC
dWlsZGVyLmggKi87IH07CiAJCTg5Q0QwMjkzMTFDODVCODcwMDcwQjc5MSAvKiBKU0Jsb2JCdWls
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5
Q0QwMjkxMTFDODVCODcwMDcwQjc5MSAvKiBKU0Jsb2JCdWlsZGVyLmNwcCAqLzsgfTsKQEAgLTc5
OTgsNiArODAwMCw4IEBACiAJCTg5NTI1M0RFMTE2QzRGMDYwMENBQkYwMCAvKiBGaWxlVGhyZWFk
VGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlVGhyZWFkVGFzay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTg4RTEwQzExQTM1MDhCMDBEQjczMkUg
LyogQmxvYkl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmxv
Ykl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTg4RTEwRDExQTM1MDhC
MDBEQjczMkUgLyogQmxvYkl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QmxvYkl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODlCNUVBOUYxMUU4MDAz
RDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTGluZUVuZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5
QjVFQUEwMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExpbmVFbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODlCRUQ1RTkxMUJFMTFDRTAwNDQ4NDkyIC8qIEJsb2JCdWlsZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJsb2JCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODlCRUQ1RUExMUJFMTFDRTAwNDQ4NDkyIC8qIEJsb2JCdWlsZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2JCdWlsZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5Q0QwMjc5MTFDODU5QTgwMDcwQjc5MSAvKiBCbG9i
QnVpbGRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQmxvYkJ1aWxkZXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU0NTIsNiArMTU0NTYsOCBAQAogCQkJCUIyQzNE
OUY0MEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpUmVzb2x2ZXIuaCAqLywKIAkJCQlCMkMzRDlGNTBE
MDA2QzFEMDBFRjZGMjYgLyogQ2hhcmFjdGVyTmFtZXMuaCAqLywKIAkJCQkzNzVDRDIzMTExOUQ0
M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCAqLywKKwkJCQk4OUI1RUE5RjExRTgwMDNEMDBG
MjM2N0UgLyogTGluZUVuZGluZy5jcHAgKi8sCisJCQkJODlCNUVBQTAxMUU4MDAzRDAwRjIzNjdF
IC8qIExpbmVFbmRpbmcuaCAqLywKIAkJCQlCQzc2QUMxMTBERDdBRDVDMDA0MTVGMzQgLyogUGFy
c2VyVXRpbGl0aWVzLmggKi8sCiAJCQkJQjJDM0Q5RkIwRDAwNkMxRDAwRUY2RjI2IC8qIFBsYXRm
b3JtU3RyaW5nLmggKi8sCiAJCQkJQjJDM0Q5RkMwRDAwNkMxRDAwRUY2RjI2IC8qIFJlZ3VsYXJF
eHByZXNzaW9uLmNwcCAqLywKQEAgLTE4ODg3LDYgKzE4ODkzLDcgQEAKIAkJCQlCQ0ZGNjQ5MjBF
QUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
NjUwRDAwQkYyMjAwNzFCNzgyIC8qIExpbmVhckdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQUIzMUM5MUUxMEFFMUI4RTAwMEM3QjkyIC8qIExpbmVDbGFtcFZhbHVlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4OUI1RUFBMjExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGlu
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBRDJGODgwRUM4OUQwNzAwOEFCMDAyIC8qIExpbmtI
YXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0IxNkMyRDA5NzlDM0JEMDA0Njc3NDEgLyogbG9h
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTZEMzczMjBBREJBNURFMDBBNDU1NEQgLyogTG9h
ZGVyTlNVUkxFeHRyYXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjEzNzcsNiArMjEzODQsNyBAQAog
CQkJCTUxQjI0MTdCMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNFNjVCRUEwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBN0FEMkY4NzBFQzg5RDA3MDA4QUIwMDIgLyogTGlua0hhc2gu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODlCNUVBQTExMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVF
bmRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCMTZDMkMwOTc5QzNCRDAwNDY3NzQxIC8q
IGxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTZEMzczMzBBREJBNURFMDBBNDU1NEQg
LyogTG9hZGVyTlNVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNkU4MUVFQzBBQjVE
QTk3MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQmxvYkJ1aWxkZXIuY3BwIGIvV2ViQ29yZS9o
dG1sL0Jsb2JCdWlsZGVyLmNwcAppbmRleCBjZGExNTY4N2JmZGI0ZDk0OTA2ZjFhMTljOTEyNzU3
Nzc2NjUxZWI4Li5lNDRjZmU4NDM4YjViYzkyM2IyMzdlNzc1MjJmMWQ1ODQwOGExMDg5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvQmxvYkJ1aWxkZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9C
bG9iQnVpbGRlci5jcHAKQEAgLTM1LDM1ICszNSwyOSBAQAogI2luY2x1ZGUgIkF0b21pY1N0cmlu
Zy5oIgogI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSAiTGluZUVuZGluZy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGdldExpbmVFbmRpbmdUeXBlRnJvbVN0cmluZyhj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGVTdHJpbmcsIExpbmVFbmRpbmcmIGVuZGluZ1R5cGUpCiti
b29sIEJsb2JCdWlsZGVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcm
IHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCB0cmFuc3BhcmVudCwgKCJ0cmFuc3BhcmVudCIpKTsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmF0aXZlLCAoIm5hdGl2ZSIpKTsKIAotICAgIGlmICh0
eXBlU3RyaW5nLmlzRW1wdHkoKSB8fCB0eXBlU3RyaW5nID09IHRyYW5zcGFyZW50KSB7Ci0gICAg
ICAgIGVuZGluZ1R5cGUgPSBFbmRpbmdUcmFuc3BhcmVudDsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotICAgIGlmICh0eXBlU3RyaW5nID09IG5hdGl2ZSkgewotICAgICAgICBlbmRpbmdU
eXBlID0gRW5kaW5nTmF0aXZlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1ib29sIEJsb2JCdWlsZGVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0g
MDsKLSAgICBMaW5lRW5kaW5nIGVuZGluZ1R5cGU7Ci0gICAgaWYgKCFnZXRMaW5lRW5kaW5nVHlw
ZUZyb21TdHJpbmcodHlwZSwgZW5kaW5nVHlwZSkpIHsKKyAgICBpZiAoIXR5cGUuaXNFbXB0eSgp
ICYmIHR5cGUgIT0gdHJhbnNwYXJlbnQgJiYgdHlwZSAhPSBuYXRpdmUpIHsKICAgICAgICAgZWMg
PSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIG1faXRlbXMu
YXBwZW5kKFN0cmluZ0Jsb2JJdGVtOjpjcmVhdGUodGV4dCwgZW5kaW5nVHlwZSwgVVRGOEVuY29k
aW5nKCkpKTsKKworICAgIGVjID0gMDsKKyAgICBDU3RyaW5nIGNzdHIgPSBVVEY4RW5jb2Rpbmco
KS5lbmNvZGUodGV4dC5jaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCksIEVudGl0aWVzRm9yVW5l
bmNvZGFibGVzKTsKKworICAgIGlmICh0eXBlID09IG5hdGl2ZSkKKyAgICAgICAgbV9pdGVtcy5h
cHBlbmQoU3RyaW5nQmxvYkl0ZW06OmNyZWF0ZShub3JtYWxpemVMaW5lRW5kaW5nc1RvTmF0aXZl
KGNzdHIpKSk7CisgICAgZWxzZQorICAgICAgICBtX2l0ZW1zLmFwcGVuZChTdHJpbmdCbG9iSXRl
bTo6Y3JlYXRlKGNzdHIpKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvRm9ybURhdGFMaXN0LmNwcCBiL1dlYkNvcmUvaHRtbC9Gb3JtRGF0YUxpc3Qu
Y3BwCmluZGV4IDBmNjI1OTVlZDQxYzIzMTliZGI3OWI1N2JiZDdjYTk0NjIyYjgyYWEuLjk0ZDAw
MzFmNzI3M2M1YjA1ZGNkYjA0ODc5OThiNDQwYTg5MjRlY2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9Gb3JtRGF0YUxpc3QuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9Gb3JtRGF0YUxpc3QuY3Bw
CkBAIC0yMSw2ICsyMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9ybURh
dGFMaXN0LmgiCiAKKyNpbmNsdWRlICJMaW5lRW5kaW5nLmgiCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogRm9ybURhdGFMaXN0OjpGb3JtRGF0YUxpc3QoY29uc3QgVGV4dEVuY29kaW5nJiBjKQpA
QCAtMzAsNyArMzIsOCBAQCBGb3JtRGF0YUxpc3Q6OkZvcm1EYXRhTGlzdChjb25zdCBUZXh0RW5j
b2RpbmcmIGMpCiAKIHZvaWQgRm9ybURhdGFMaXN0OjphcHBlbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiBzKQogewotICAgIG1faXRlbXMuYXBwZW5kKFN0cmluZ0Jsb2JJdGVtOjpjcmVhdGUocywgRW5k
aW5nQ1JMRiwgbV9lbmNvZGluZykpOworICAgIENTdHJpbmcgY3N0ciA9IG1fZW5jb2RpbmcuZW5j
b2RlKHMuY2hhcmFjdGVycygpLCBzLmxlbmd0aCgpLCBFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7
CisgICAgbV9pdGVtcy5hcHBlbmQoU3RyaW5nQmxvYkl0ZW06OmNyZWF0ZShub3JtYWxpemVMaW5l
RW5kaW5nc1RvQ1JMRihjc3RyKSkpOwogfQogCiB2b2lkIEZvcm1EYXRhTGlzdDo6YXBwZW5kU3Ry
aW5nKGNvbnN0IENTdHJpbmcmIHMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0Jsb2JJ
dGVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uY3BwCmluZGV4IGExMmRkMDhjYWY0
NmE4OGU1YThjYzE2NGExZTlkNzYxY2NmMTI5ZGEuLjllZWViY2QxNjkyYzllYWQ5ZTVlMDYwYWM2
ZjQxM2Y4YzcyOGUwODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uY3BwCkBAIC0xMDUsMTQ0ICsxMDUsMTYg
QEAgUGFzc1JlZlB0cjxCbG9iSXRlbT4gRmlsZUJsb2JJdGVtOjpzbGljZShsb25nIGxvbmcgc3Rh
cnQsIGxvbmcgbG9uZyBsZW5ndGgpCiAKIC8vIFN0cmluZ0Jsb2JJdGVtIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVBhc3NS
ZWZQdHI8QmxvYkl0ZW0+IFN0cmluZ0Jsb2JJdGVtOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0ZXh0
LCBMaW5lRW5kaW5nIGVuZGluZywgVGV4dEVuY29kaW5nIGVuY29kaW5nKQotewotICAgIHJldHVy
biBhZG9wdFJlZihzdGF0aWNfY2FzdDxCbG9iSXRlbSo+KG5ldyBTdHJpbmdCbG9iSXRlbSh0ZXh0
LCBlbmRpbmcsIGVuY29kaW5nKSkpOwotfQotCiBQYXNzUmVmUHRyPEJsb2JJdGVtPiBTdHJpbmdC
bG9iSXRlbTo6Y3JlYXRlKGNvbnN0IENTdHJpbmcmIHRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKHN0YXRpY19jYXN0PEJsb2JJdGVtKj4obmV3IFN0cmluZ0Jsb2JJdGVtKHRleHQpKSk7CiB9
CiAKLVN0cmluZ0Jsb2JJdGVtOjpTdHJpbmdCbG9iSXRlbShjb25zdCBTdHJpbmcmIHRleHQsIExp
bmVFbmRpbmcgZW5kaW5nLCBUZXh0RW5jb2RpbmcgZW5jb2RpbmcpCi0gICAgOiBtX2RhdGEoU3Ry
aW5nQmxvYkl0ZW06OmNvbnZlcnRUb0NTdHJpbmcodGV4dCwgZW5kaW5nLCBlbmNvZGluZykpCi17
Ci19Ci0KIFN0cmluZ0Jsb2JJdGVtOjpTdHJpbmdCbG9iSXRlbShjb25zdCBDU3RyaW5nJiB0ZXh0
KQogICAgIDogbV9kYXRhKHRleHQpCiB7CiB9CiAKLS8vIE5vcm1hbGl6ZSBhbGwgbGluZS1lbmRp
bmdzIHRvIENSTEYuCi1zdGF0aWMgQ1N0cmluZyBjb252ZXJ0VG9DUkxGKGNvbnN0IENTdHJpbmcm
IGZyb20pCi17Ci0gICAgdW5zaWduZWQgbmV3TGVuID0gMDsKLSAgICBjb25zdCBjaGFyKiBwID0g
ZnJvbS5kYXRhKCk7Ci0gICAgd2hpbGUgKGNoYXIgYyA9ICpwKyspIHsKLSAgICAgICAgaWYgKGMg
PT0gJ1xyJykgewotICAgICAgICAgICAgLy8gU2FmZSB0byBsb29rIGFoZWFkIGJlY2F1c2Ugb2Yg
dHJhaWxpbmcgJ1wwJy4KLSAgICAgICAgICAgIGlmICgqcCAhPSAnXG4nKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gVHVybiBDUiBpbnRvIENSTEYuCi0gICAgICAgICAgICAgICAgbmV3TGVuICs9IDI7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXG4nKSB7Ci0gICAgICAg
ICAgICAvLyBUdXJuIExGIGludG8gQ1JMRi4KLSAgICAgICAgICAgIG5ld0xlbiArPSAyOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTGVhdmUgb3RoZXIgY2hhcmFjdGVycyBhbG9u
ZS4KLSAgICAgICAgICAgIG5ld0xlbiArPSAxOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChu
ZXdMZW4gPT0gZnJvbS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGZyb207Ci0KLSAgICAvLyBN
YWtlIGEgY29weSBvZiB0aGUgc3RyaW5nLgotICAgIHAgPSBmcm9tLmRhdGEoKTsKLSAgICBjaGFy
KiBxOwotICAgIENTdHJpbmcgcmVzdWx0ID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChuZXdM
ZW4sIHEpOwotICAgIHdoaWxlIChjaGFyIGMgPSAqcCsrKSB7Ci0gICAgICAgIGlmIChjID09ICdc
cicpIHsKLSAgICAgICAgICAgIC8vIFNhZmUgdG8gbG9vayBhaGVhZCBiZWNhdXNlIG9mIHRyYWls
aW5nICdcMCcuCi0gICAgICAgICAgICBpZiAoKnAgIT0gJ1xuJykgewotICAgICAgICAgICAgICAg
IC8vIFR1cm4gQ1IgaW50byBDUkxGLgotICAgICAgICAgICAgICAgICpxKysgPSAnXHInOwotICAg
ICAgICAgICAgICAgICpxKysgPSAnXG4nOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ug
aWYgKGMgPT0gJ1xuJykgewotICAgICAgICAgICAgLy8gVHVybiBMRiBpbnRvIENSTEYuCi0gICAg
ICAgICAgICAqcSsrID0gJ1xyJzsKLSAgICAgICAgICAgICpxKysgPSAnXG4nOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgLy8gTGVhdmUgb3RoZXIgY2hhcmFjdGVycyBhbG9uZS4KLSAg
ICAgICAgICAgICpxKysgPSBjOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS8vIE5vcm1hbGl6ZSBhbGwgbGluZS1lbmRpbmdzIHRvIENSIG9yIExGLgotc3RhdGlj
IENTdHJpbmcgY29udmVydFRvQ1JPckxGKGNvbnN0IENTdHJpbmcmIGZyb20sIGJvb2wgdG9DUikK
LXsKLSAgICB1bnNpZ25lZCBuZXdMZW4gPSAwOwotICAgIGJvb2wgbmVlZEZpeCA9IGZhbHNlOwot
ICAgIGNvbnN0IGNoYXIqIHAgPSBmcm9tLmRhdGEoKTsKLSAgICBjaGFyIGZyb21FbmRpbmdDaGFy
ID0gdG9DUiA/ICdcbicgOiAnXHInOwotICAgIGNoYXIgdG9FbmRpbmdDaGFyID0gdG9DUiA/ICdc
cicgOiAnXG4nOwotICAgIHdoaWxlIChjaGFyIGMgPSAqcCsrKSB7Ci0gICAgICAgIGlmIChjID09
ICdccicgJiYgKnAgPT0gJ1xuJykgewotICAgICAgICAgICAgLy8gVHVybiBDUkxGIGludG8gQ1Ig
b3IgTEYuCi0gICAgICAgICAgICBwKys7Ci0gICAgICAgICAgICBuZWVkRml4ID0gdHJ1ZTsKLSAg
ICAgICAgfSBlbHNlIGlmIChjID09IGZyb21FbmRpbmdDaGFyKSB7Ci0gICAgICAgICAgICAvLyBU
dXJuIENSL0xGIGludG8gTEYvQ1IuCi0gICAgICAgICAgICBuZWVkRml4ID0gdHJ1ZTsKLSAgICAg
ICAgfQotICAgICAgICBuZXdMZW4gKz0gMTsKLSAgICB9Ci0gICAgaWYgKCFuZWVkRml4KQotICAg
ICAgICByZXR1cm4gZnJvbTsKLQotICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBzdHJpbmcuCi0g
ICAgcCA9IGZyb20uZGF0YSgpOwotICAgIGNoYXIqIHE7Ci0gICAgQ1N0cmluZyByZXN1bHQgPSBD
U3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKG5ld0xlbiwgcSk7Ci0gICAgd2hpbGUgKGNoYXIgYyA9
ICpwKyspIHsKLSAgICAgICAgaWYgKGMgPT0gJ1xyJyAmJiAqcCA9PSAnXG4nKSB7Ci0gICAgICAg
ICAgICAvLyBUdXJuIENSTEYgb3IgQ1IgaW50byBDUiBvciBMRi4KLSAgICAgICAgICAgIHArKzsK
LSAgICAgICAgICAgICpxKysgPSB0b0VuZGluZ0NoYXI7Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9
PSBmcm9tRW5kaW5nQ2hhcikgewotICAgICAgICAgICAgLy8gVHVybiBDUi9MRiBpbnRvIExGL0NS
LgotICAgICAgICAgICAgKnErKyA9IHRvRW5kaW5nQ2hhcjsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIC8vIExlYXZlIG90aGVyIGNoYXJhY3RlcnMgYWxvbmUuCi0gICAgICAgICAgICAq
cSsrID0gYzsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1DU3Ry
aW5nIFN0cmluZ0Jsb2JJdGVtOjpjb252ZXJ0VG9DU3RyaW5nKGNvbnN0IFN0cmluZyYgdGV4dCwg
TGluZUVuZGluZyBlbmRpbmcsIFRleHRFbmNvZGluZyBlbmNvZGluZykKLXsKLSAgICBDU3RyaW5n
IGZyb20gPSBlbmNvZGluZy5lbmNvZGUodGV4dC5jaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCks
IEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKLQotICAgIGlmIChlbmRpbmcgPT0gRW5kaW5nTmF0
aXZlKSB7Ci0jaWYgT1MoV0lORE9XUykKLSAgICAgICAgZW5kaW5nID0gRW5kaW5nQ1JMRjsKLSNl
bHNlCi0gICAgICAgIGVuZGluZyA9IEVuZGluZ0xGOwotI2VuZGlmCi0gICAgfQotCi0gICAgc3dp
dGNoIChlbmRpbmcpIHsKLSAgICBjYXNlIEVuZGluZ1RyYW5zcGFyZW50OgotICAgICAgICByZXR1
cm4gZnJvbTsKLSAgICBjYXNlIEVuZGluZ0NSTEY6Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VG9D
UkxGKGZyb20pOwotICAgIGNhc2UgRW5kaW5nQ1I6Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VG9D
Uk9yTEYoZnJvbSwgdHJ1ZSk7Ci0gICAgY2FzZSBFbmRpbmdMRjoKLSAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb0NST3JMRihmcm9tLCBmYWxzZSk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIGZyb207Ci19Ci0KIC8vIEJ5dGVBcnJheUJsb2JJdGVtIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUGFzc1JlZlB0cjxC
bG9iSXRlbT4gQnl0ZUFycmF5QmxvYkl0ZW06OmNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uaCBiL1dlYkNv
cmUvcGxhdGZvcm0vQmxvYkl0ZW0uaAppbmRleCAxZDM0YzU5NGYwMzRmMDNkNTM3ODMxZDUxYTNh
ZjgyOGU0NDY3ZWExLi5lNmNjMmRjYjdkYTIzNzYxZTI3YWIzM2UxZDBhM2MzZDRmMjM3ZWE1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0Jsb2JJdGVtLmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9CbG9iSXRlbS5oCkBAIC0zMiw3ICszMiw2IEBACiAjZGVmaW5lIEJsb2JJdGVtX2gKIAog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQxLDE1ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotLy8gU3RyaW5nIGVuZGluZyB0eXBlcy4KLWVudW0gTGluZUVuZGluZyB7Ci0g
ICAgRW5kaW5nVHJhbnNwYXJlbnQgPSAwLAotICAgIEVuZGluZ05hdGl2ZSwKLSAgICBFbmRpbmdM
RiwKLSAgICBFbmRpbmdDUiwKLSAgICBFbmRpbmdDUkxGLAotfTsKLQogY2xhc3MgQnl0ZUFycmF5
QmxvYkl0ZW07CiBjbGFzcyBEYXRhQmxvYkl0ZW07CiBjbGFzcyBEYXRhUmFuZ2VCbG9iSXRlbTsK
QEAgLTEyNiw3ICsxMTYsNiBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNzIFN0cmluZ0Jsb2JJdGVtIDog
cHVibGljIERhdGFCbG9iSXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Qmxv
Ykl0ZW0+IGNyZWF0ZShjb25zdCBTdHJpbmcmLCBMaW5lRW5kaW5nLCBUZXh0RW5jb2RpbmcpOwog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsb2JJdGVtPiBjcmVhdGUoY29uc3QgQ1N0cmluZyYpOwog
ICAgIGNvbnN0IENTdHJpbmcmIGNzdHIoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIApAQCAt
MTM4LDkgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEuZGF0YSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nQmxv
Ykl0ZW0oY29uc3QgU3RyaW5nJiwgTGluZUVuZGluZywgVGV4dEVuY29kaW5nKTsKICAgICBTdHJp
bmdCbG9iSXRlbShjb25zdCBDU3RyaW5nJik7Ci0gICAgc3RhdGljIENTdHJpbmcgY29udmVydFRv
Q1N0cmluZyhjb25zdCBTdHJpbmcmLCBMaW5lRW5kaW5nLCBUZXh0RW5jb2RpbmcpOwogICAgIENT
dHJpbmcgbV9kYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xp
bmVFbmRpbmcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU0NWYyMmIyMzU0Y2ZjNDE3NDdhNmE4OGEwNmY0MGE3OTk3NTYwNmYKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAKQEAgLTAsMCAr
MSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxpbmVFbmRp
bmcuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIE5vcm1hbGl6ZSBhbGwgbGlu
ZS1lbmRpbmdzIHRvIENSTEYuCitDU3RyaW5nIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9DUkxGKGNv
bnN0IENTdHJpbmcmIGZyb20pCit7CisgICAgdW5zaWduZWQgbmV3TGVuID0gMDsKKyAgICBjb25z
dCBjaGFyKiBwID0gZnJvbS5kYXRhKCk7CisgICAgd2hpbGUgKGNoYXIgYyA9ICpwKyspIHsKKyAg
ICAgICAgaWYgKGMgPT0gJ1xyJykgeworICAgICAgICAgICAgLy8gU2FmZSB0byBsb29rIGFoZWFk
IGJlY2F1c2Ugb2YgdHJhaWxpbmcgJ1wwJy4KKyAgICAgICAgICAgIGlmICgqcCAhPSAnXG4nKSB7
CisgICAgICAgICAgICAgICAgLy8gVHVybiBDUiBpbnRvIENSTEYuCisgICAgICAgICAgICAgICAg
bmV3TGVuICs9IDI7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXG4n
KSB7CisgICAgICAgICAgICAvLyBUdXJuIExGIGludG8gQ1JMRi4KKyAgICAgICAgICAgIG5ld0xl
biArPSAyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTGVhdmUgb3RoZXIgY2hh
cmFjdGVycyBhbG9uZS4KKyAgICAgICAgICAgIG5ld0xlbiArPSAxOworICAgICAgICB9CisgICAg
fQorICAgIGlmIChuZXdMZW4gPT0gZnJvbS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZyb207
CisKKyAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgc3RyaW5nLgorICAgIHAgPSBmcm9tLmRhdGEo
KTsKKyAgICBjaGFyKiBxOworICAgIENTdHJpbmcgcmVzdWx0ID0gQ1N0cmluZzo6bmV3VW5pbml0
aWFsaXplZChuZXdMZW4sIHEpOworICAgIHdoaWxlIChjaGFyIGMgPSAqcCsrKSB7CisgICAgICAg
IGlmIChjID09ICdccicpIHsKKyAgICAgICAgICAgIC8vIFNhZmUgdG8gbG9vayBhaGVhZCBiZWNh
dXNlIG9mIHRyYWlsaW5nICdcMCcuCisgICAgICAgICAgICBpZiAoKnAgIT0gJ1xuJykgeworICAg
ICAgICAgICAgICAgIC8vIFR1cm4gQ1IgaW50byBDUkxGLgorICAgICAgICAgICAgICAgICpxKysg
PSAnXHInOworICAgICAgICAgICAgICAgICpxKysgPSAnXG4nOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgaWYgKGMgPT0gJ1xuJykgeworICAgICAgICAgICAgLy8gVHVybiBMRiBpbnRv
IENSTEYuCisgICAgICAgICAgICAqcSsrID0gJ1xyJzsKKyAgICAgICAgICAgICpxKysgPSAnXG4n
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTGVhdmUgb3RoZXIgY2hhcmFjdGVy
cyBhbG9uZS4KKyAgICAgICAgICAgICpxKysgPSBjOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKKy8vIE5vcm1hbGl6ZSBhbGwgbGluZS1lbmRpbmdzIHRvIENSIG9y
IExGLgorc3RhdGljIENTdHJpbmcgbm9ybWFsaXplVG9DUk9yTEYoY29uc3QgQ1N0cmluZyYgZnJv
bSwgYm9vbCB0b0NSKQoreworICAgIHVuc2lnbmVkIG5ld0xlbiA9IDA7CisgICAgYm9vbCBuZWVk
Rml4ID0gZmFsc2U7CisgICAgY29uc3QgY2hhciogcCA9IGZyb20uZGF0YSgpOworICAgIGNoYXIg
ZnJvbUVuZGluZ0NoYXIgPSB0b0NSID8gJ1xuJyA6ICdccic7CisgICAgY2hhciB0b0VuZGluZ0No
YXIgPSB0b0NSID8gJ1xyJyA6ICdcbic7CisgICAgd2hpbGUgKGNoYXIgYyA9ICpwKyspIHsKKyAg
ICAgICAgaWYgKGMgPT0gJ1xyJyAmJiAqcCA9PSAnXG4nKSB7CisgICAgICAgICAgICAvLyBUdXJu
IENSTEYgaW50byBDUiBvciBMRi4KKyAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgIG5lZWRG
aXggPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKGMgPT0gZnJvbUVuZGluZ0NoYXIpIHsKKyAg
ICAgICAgICAgIC8vIFR1cm4gQ1IvTEYgaW50byBMRi9DUi4KKyAgICAgICAgICAgIG5lZWRGaXgg
PSB0cnVlOworICAgICAgICB9CisgICAgICAgIG5ld0xlbiArPSAxOworICAgIH0KKyAgICBpZiAo
IW5lZWRGaXgpCisgICAgICAgIHJldHVybiBmcm9tOworCisgICAgLy8gTWFrZSBhIGNvcHkgb2Yg
dGhlIHN0cmluZy4KKyAgICBwID0gZnJvbS5kYXRhKCk7CisgICAgY2hhciogcTsKKyAgICBDU3Ry
aW5nIHJlc3VsdCA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQobmV3TGVuLCBxKTsKKyAgICB3
aGlsZSAoY2hhciBjID0gKnArKykgeworICAgICAgICBpZiAoYyA9PSAnXHInICYmICpwID09ICdc
bicpIHsKKyAgICAgICAgICAgIC8vIFR1cm4gQ1JMRiBvciBDUiBpbnRvIENSIG9yIExGLgorICAg
ICAgICAgICAgcCsrOworICAgICAgICAgICAgKnErKyA9IHRvRW5kaW5nQ2hhcjsKKyAgICAgICAg
fSBlbHNlIGlmIChjID09IGZyb21FbmRpbmdDaGFyKSB7CisgICAgICAgICAgICAvLyBUdXJuIENS
L0xGIGludG8gTEYvQ1IuCisgICAgICAgICAgICAqcSsrID0gdG9FbmRpbmdDaGFyOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTGVhdmUgb3RoZXIgY2hhcmFjdGVycyBhbG9uZS4K
KyAgICAgICAgICAgICpxKysgPSBjOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKKy8vIE5vcm1hbGl6ZSBhbGwgbGluZS1lbmRpbmdzIHRvIENSLgorQ1N0cmluZyBu
b3JtYWxpemVMaW5lRW5kaW5nc1RvQ1IoY29uc3QgQ1N0cmluZyYgZnJvbSkKK3sKKyAgICByZXR1
cm4gbm9ybWFsaXplVG9DUk9yTEYoZnJvbSwgdHJ1ZSk7Cit9CisKKy8vIE5vcm1hbGl6ZSBhbGwg
bGluZS1lbmRpbmdzIHRvIExGLgorQ1N0cmluZyBub3JtYWxpemVMaW5lRW5kaW5nc1RvTEYoY29u
c3QgQ1N0cmluZyYgZnJvbSkKK3sKKyAgICByZXR1cm4gbm9ybWFsaXplVG9DUk9yTEYoZnJvbSwg
ZmFsc2UpOworfQorCitDU3RyaW5nIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9OYXRpdmUoY29uc3Qg
Q1N0cmluZyYgZnJvbSkKK3sKKyNpZiBPUyhXSU5ET1dTKQorICAgIHJldHVybiBub3JtYWxpemVM
aW5lRW5kaW5nc1RvQ1JMRihmcm9tKTsKKyNlbHNlCisgICAgcmV0dXJuIG5vcm1hbGl6ZUxpbmVF
bmRpbmdzVG9MRihmcm9tKTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2I5YjU2ZTAyNjViMDVlM2I1
NTMwYjZiNzI0ZGY2ZDkzOGU2ODYxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0xpbmVFbmRpbmcuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA1LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTGlu
ZUVuZGluZ19oCisjZGVmaW5lIExpbmVFbmRpbmdfaAorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNz
IENTdHJpbmc7Cit9Cit1c2luZyBXVEY6OkNTdHJpbmc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworLy8gTm9ybWFsaXplIGFsbCBsaW5lLWVuZGluZ3MgaW4gdGhlIGdpdmVuIHN0cmluZyB0byBD
UkxGLgorQ1N0cmluZyBub3JtYWxpemVMaW5lRW5kaW5nc1RvQ1JMRihjb25zdCBDU3RyaW5nJik7
CisKKy8vIE5vcm1hbGl6ZSBhbGwgbGluZS1lbmRpbmdzIGluIHRoZSBnaXZlbiBzdHJpbmcgdG8g
Q1IuCitDU3RyaW5nIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9DUihjb25zdCBDU3RyaW5nJik7CisK
Ky8vIE5vcm1hbGl6ZSBhbGwgbGluZS1lbmRpbmdzIGluIHRoZSBnaXZlbiBzdHJpbmcgdG8gTEYu
CitDU3RyaW5nIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9MRihjb25zdCBDU3RyaW5nJik7CisKKy8v
IE5vcm1hbGl6ZSBhbGwgbGluZS1lbmRpbmdzIGluIHRoZSBnaXZlbiBzdHJpbmcgdG8gdGhlIG5h
dGl2ZSBsaW5lLWVuZGluZ3MKKy8vIChlLmcuIG5vcm1hbGl6ZSB0byBDUkxGIG9uIFdpbmRvd3Mg
ZXRjKS4KK0NTdHJpbmcgbm9ybWFsaXplTGluZUVuZGluZ3NUb05hdGl2ZShjb25zdCBDU3RyaW5n
Jik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIExpbmVFbmRpbmdfaAo=
</data>
<flag name="review"
          id="49119"
          type_id="1"
          status="+"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>