<?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>31040</bug_id>
          
          <creation_ts>2009-11-02 19:53:15 -0800</creation_ts>
          <short_desc>Use explicit parentheses to silence gcc 4.4 -Wparentheses warnings</short_desc>
          <delta_ts>2009-11-09 12:05:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</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="Laszlo Gombos">laszlo.gombos</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kenneth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>159973</commentid>
    <comment_count>0</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2009-11-02 19:53:15 -0800</bug_when>
    <thetext>GCC 4.4 -Wparentheses now warns about expressions such as (!x | y) and (!x &amp; y). Using explicit parentheses, such as in ((!x) | y), silences this warning -- see the release notes: http://gcc.gnu.org/gcc-4.4/changes.html

As an example QtWebKit buildbot is using GCC 4.4 here are some of the warnings:

JavaScriptCore/interpreter/Interpreter.cpp:1491: warning: suggest parentheses around arithmetic in operand of |
JavaScriptCore/interpreter/Interpreter.cpp:1578: warning: suggest parentheses around arithmetic in operand of |
WebCore/editing/TextIterator.cpp:221: warning: suggest parentheses around &amp;&amp; within ||
WebCore/editing/VisibleSelection.cpp:240: warning: suggest parentheses around &amp;&amp; within ||
WebCore/html/HTMLLinkElement.cpp:191: warning: suggest parentheses around &amp;&amp; within ||
WebCore/loader/RedirectScheduler.cpp:174: warning: suggest parentheses around &amp;&amp; within ||
WebCore/rendering/RenderBlock.cpp:956: warning: suggest parentheses around &amp;&amp; within ||
WebCore/rendering/RenderBox.cpp:1474: warning: suggest parentheses around &amp;&amp; within ||
WebCore/rendering/RenderTextControlMultiLine.cpp:68: warning: suggest parentheses around &amp;&amp; within ||
WebCore/rendering/style/RenderStyle.cpp:458: warning: suggest parentheses around &amp;&amp; within ||
WebCore/platform/graphics/qt/FontCacheQt.cpp:126: warning: suggest parentheses around + or - inside shift
WebCore/platform/graphics/qt/FontCacheQt.cpp:127: warning: suggest parentheses around + or - inside shift
WebCore/platform/graphics/qt/FontCacheQt.cpp:128: warning: suggest parentheses around + or - inside shift
WebKit/qt/Api/qwebpage.cpp:1213: warning: suggest parentheses around &amp;&amp; within ||
WebKit/qt/Api/qwebpage.cpp:1219: warning: suggest parentheses around &amp;&amp; within ||
WebKit/qt/Api/qwebpage.cpp:1223: warning: suggest parentheses around &amp;&amp; within ||
WebCore/svg/SVGAnimateElement.cpp:67: warning: suggest parentheses around &amp;&amp; within ||
WebCore/svg/SVGAnimationElement.cpp:492: warning: suggest parentheses around &amp;&amp; within ||
WebCore/svg/SVGPreserveAspectRatio.cpp:183: warning: suggest parentheses around &amp;&amp; within ||
WebCore/loader/appcache/ApplicationCacheGroup.cpp:625: warning: suggest parentheses around &amp;&amp; within ||
WebCore/dom/Document.cpp:2494: warning: suggest parentheses around &amp;&amp; within ||</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159975</commentid>
    <comment_count>1</comment_count>
      <attachid>42356</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2009-11-02 20:02:50 -0800</bug_when>
    <thetext>Created attachment 42356
1st try

Place the parentheses according to C++ precedence rules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160164</commentid>
    <comment_count>2</comment_count>
      <attachid>42356</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-03 12:18:27 -0800</bug_when>
    <thetext>Comment on attachment 42356
1st try

Some of these make sense.  And some of them don&apos;t:
 1578         if (src1.isInt32() &amp;&amp; src2.isInt32() &amp;&amp; !((src1.asInt32()) | (src2.asInt32() &amp; 0xc0000000))) // no overflow


Why are parens needed around (src1.asInt32()) ??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160232</commentid>
    <comment_count>3</comment_count>
      <attachid>42425</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2009-11-03 15:09:18 -0800</bug_when>
    <thetext>Created attachment 42425
2nd try

Remove the extra () from around (src1.asInt32()).

Eric, thanks for the review - I think you found one case where I put a meaningless extra () in. I hope the rest of the changes looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161573</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-11-09 07:55:56 -0800</bug_when>
    <thetext>LGTM. Does our style guide have a say about this? If not, maybe we should add a rule after discussion on the ML?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161681</commentid>
    <comment_count>5</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2009-11-09 11:45:17 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; LGTM. Does our style guide have a say about this? If not, maybe we should add a
&gt; rule after discussion on the ML?

Kenneth, thanks for the review.

I think that for warnings that compilers can catch the style guide might be redundant. However we should have a common agreement on the warnings we care about as a community.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161693</commentid>
    <comment_count>6</comment_count>
      <attachid>42425</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 12:04:57 -0800</bug_when>
    <thetext>Comment on attachment 42425
2nd try

Clearing flags on attachment: 42425

Committed r50675: &lt;http://trac.webkit.org/changeset/50675&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161694</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-09 12:05:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42356</attachid>
            <date>2009-11-02 20:02:50 -0800</date>
            <delta_ts>2009-11-03 15:09:18 -0800</delta_ts>
            <desc>1st try</desc>
            <filename>31040.patch</filename>
            <type>text/plain</type>
            <size>17926</size>
            <attacher name="Laszlo Gombos">laszlo.gombos</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUwNDM4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTEtMDIgIExhc3psbyBH
b21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBleHBsaWNpdCBwYXJlbnRoZXNlcyB0byBz
aWxlbmNlIGdjYyA0LjQgLVdwYXJlbnRoZXNlcyB3YXJuaW5ncworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEwNDAKKworICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVF
eGVjdXRlKToKKwogMjAwOS0xMS0wMiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bu
b2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiA1MDQzNykK
KysrIEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ4OCw3ICsxNDg4LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4
ZWN1dGUoRXhlYwogICAgICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKICAgICAgICAg
SlNWYWx1ZSBzcmMxID0gY2FsbEZyYW1lLT5yKHZQQ1syXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsK
ICAgICAgICAgSlNWYWx1ZSBzcmMyID0gY2FsbEZyYW1lLT5yKHZQQ1szXS51Lm9wZXJhbmQpLmpz
VmFsdWUoKTsKLSAgICAgICAgaWYgKHNyYzEuaXNJbnQzMigpICYmIHNyYzIuaXNJbnQzMigpICYm
ICEoc3JjMS5hc0ludDMyKCkgfCBzcmMyLmFzSW50MzIoKSAmIDB4YzAwMDAwMDApKSAvLyBubyBv
dmVyZmxvdworICAgICAgICBpZiAoc3JjMS5pc0ludDMyKCkgJiYgc3JjMi5pc0ludDMyKCkgJiYg
IShzcmMxLmFzSW50MzIoKSB8IChzcmMyLmFzSW50MzIoKSAmIDB4YzAwMDAwMDApKSkgLy8gbm8g
b3ZlcmZsb3cKICAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0ganNOdW1iZXIoY2FsbEZy
YW1lLCBzcmMxLmFzSW50MzIoKSArIHNyYzIuYXNJbnQzMigpKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQWRkKGNhbGxGcmFtZSwgc3JjMSwgc3JjMik7
CkBAIC0xNTc1LDcgKzE1NzUsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0
ZShFeGVjCiAgICAgICAgIGludCBkc3QgPSB2UENbMV0udS5vcGVyYW5kOwogICAgICAgICBKU1Zh
bHVlIHNyYzEgPSBjYWxsRnJhbWUtPnIodlBDWzJdLnUub3BlcmFuZCkuanNWYWx1ZSgpOwogICAg
ICAgICBKU1ZhbHVlIHNyYzIgPSBjYWxsRnJhbWUtPnIodlBDWzNdLnUub3BlcmFuZCkuanNWYWx1
ZSgpOwotICAgICAgICBpZiAoc3JjMS5pc0ludDMyKCkgJiYgc3JjMi5pc0ludDMyKCkgJiYgIShz
cmMxLmFzSW50MzIoKSB8IHNyYzIuYXNJbnQzMigpICYgMHhjMDAwMDAwMCkpIC8vIG5vIG92ZXJm
bG93CisgICAgICAgIGlmIChzcmMxLmlzSW50MzIoKSAmJiBzcmMyLmlzSW50MzIoKSAmJiAhKChz
cmMxLmFzSW50MzIoKSkgfCAoc3JjMi5hc0ludDMyKCkgJiAweGMwMDAwMDAwKSkpIC8vIG5vIG92
ZXJmbG93CiAgICAgICAgICAgICBjYWxsRnJhbWUtPnIoZHN0KSA9IGpzTnVtYmVyKGNhbGxGcmFt
ZSwgc3JjMS5hc0ludDMyKCkgLSBzcmMyLmFzSW50MzIoKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihjYWxsRnJhbWUsIHNyYzEudG9OdW1i
ZXIoY2FsbEZyYW1lKSAtIHNyYzIudG9OdW1iZXIoY2FsbEZyYW1lKSk7CkluZGV4OiBXZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNTA0
MzgpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDA5LTExLTAyICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgZXhw
bGljaXQgcGFyZW50aGVzZXMgdG8gc2lsZW5jZSBnY2MgNC40IC1XcGFyZW50aGVzZXMgd2Fybmlu
Z3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMDQw
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRoZXJlIGlzIG5vIGZ1bmN0aW9uYWwgY2hhbmdl
LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpyZWNhbGNTdHlsZVNlbGVjdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwdXNoRnVsbHlDbGlwcGVkU3RhdGUpOgorICAgICAg
ICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNp
YmxlU2VsZWN0aW9uOjphcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UpOgorICAgICAgICAqIGh0bWwv
SFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6
cHJvY2Vzcyk6CisgICAgICAgICogbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjptdXN0TG9ja0JhY2tGb3J3YXJkTGlzdCk6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdN
YW5pZmVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5Ojpjb21wdXRlSGFz
aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpoYW5kbGVSdW5JbkNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FsY0hlaWdodCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpub2RlQXRQb2ludCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpkaWZmKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VOdW1iZXJWYWx1ZUFuZFVuaXQpOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGlvbkVsZW1lbnQ6OnN0YXJ0ZWRBY3RpdmVJbnRlcnZhbCk6CisgICAgICAgICogc3Zn
L1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbzo6Z2V0Q1RNKToKKwogMjAwOS0xMS0wMiAgTGFzemxvIEdvbWJvcyAgPGxh
c3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1MDQzNykKKysrIFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ4OSw3ICsyNDg5LDcgQEAgdm9pZCBEb2N1bWVu
dDo6cmVjYWxjU3R5bGVTZWxlY3RvcigpCiAgICAgICAgICAgICAgICAgICAgIHNoZWV0ID0gY3Nz
U2hlZXQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9
IGVsc2UgaWYgKG4tPmlzSFRNTEVsZW1lbnQoKSAmJiAobi0+aGFzVGFnTmFtZShsaW5rVGFnKSB8
fCBuLT5oYXNUYWdOYW1lKHN0eWxlVGFnKSkKKyAgICAgICAgfSBlbHNlIGlmICgobi0+aXNIVE1M
RWxlbWVudCgpICYmIChuLT5oYXNUYWdOYW1lKGxpbmtUYWcpIHx8IG4tPmhhc1RhZ05hbWUoc3R5
bGVUYWcpKSkKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICAgICAgfHwgIChuLT5pc1NWR0VsZW1l
bnQoKSAmJiBuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdHlsZVRhZykpCiAjZW5kaWYKSW5kZXg6
IFdlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiA1MDQzNykKKysrIFdlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsNyArMjE4LDcgQEAg
c3RhdGljIHZvaWQgcHVzaEZ1bGx5Q2xpcHBlZFN0YXRlKEJpdFN0YQogCiAgICAgLy8gUHVzaCB0
cnVlIGlmIHRoaXMgbm9kZSBmdWxsIGNsaXBzIGl0cyBjb250ZW50cywgb3IgaWYgYSBwYXJlbnQg
YWxyZWFkeSBoYXMgZnVsbHkKICAgICAvLyBjbGlwcGVkIGFuZCB0aGlzIGlzIG5vdCBhIG5vZGUg
dGhhdCBpZ25vcmVzIGl0cyBjb250YWluZXIncyBjbGlwLgotICAgIHN0YWNrLnB1c2goZnVsbHlD
bGlwc0NvbnRlbnRzKG5vZGUpIHx8IHN0YWNrLnRvcCgpICYmICFpZ25vcmVzQ29udGFpbmVyQ2xp
cChub2RlKSk7CisgICAgc3RhY2sucHVzaChmdWxseUNsaXBzQ29udGVudHMobm9kZSkgfHwgKHN0
YWNrLnRvcCgpICYmICFpZ25vcmVzQ29udGFpbmVyQ2xpcChub2RlKSkpOwogfQogCiBzdGF0aWMg
dm9pZCBzZXRVcEZ1bGx5Q2xpcHBlZFN0YWNrKEJpdFN0YWNrJiBzdGFjaywgTm9kZSogbm9kZSkK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDUwNDM3KQor
KysgV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzcsNyArMjM3LDcgQEAgdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjphcHBlbmRUcmFpbGluZ1do
aQogCiAgICAgZm9yICg7IGNoYXJJdC5sZW5ndGgoKTsgY2hhckl0LmFkdmFuY2UoMSkpIHsKICAg
ICAgICAgVUNoYXIgYyA9IGNoYXJJdC5jaGFyYWN0ZXJzKClbMF07Ci0gICAgICAgIGlmICghaXNT
cGFjZU9yTmV3bGluZShjKSAmJiBjICE9IG5vQnJlYWtTcGFjZSB8fCBjID09ICdcbicpCisgICAg
ICAgIGlmICgoIWlzU3BhY2VPck5ld2xpbmUoYykgJiYgYyAhPSBub0JyZWFrU3BhY2UpIHx8IGMg
PT0gJ1xuJykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBtX2VuZCA9IGNoYXJJdC5yYW5n
ZSgpLT5lbmRQb3NpdGlvbigpOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
CShyZXZpc2lvbiA1MDQzNykKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnBy
b2Nlc3MoKQogCiAgICAgLy8gU3R5bGVzaGVldAogICAgIC8vIFRoaXMgd2FzIGJ1Z2d5IGFuZCB3
b3VsZCBpbmNvcnJlY3RseSBtYXRjaCA8bGluayByZWw9ImFsdGVybmF0ZSI+LCB3aGljaCBoYXMg
YSBkaWZmZXJlbnQgc3BlY2lmaWVkIG1lYW5pbmcuIC1kd2gKLSAgICBpZiAobV9kaXNhYmxlZFN0
YXRlICE9IDIgJiYgKG1faXNTdHlsZVNoZWV0IHx8IGFjY2VwdElmVHlwZUNvbnRhaW5zVGV4dENT
UyAmJiB0eXBlLmNvbnRhaW5zKCJ0ZXh0L2NzcyIpKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpICYm
IG1fdXJsLmlzVmFsaWQoKSkgeworICAgIGlmIChtX2Rpc2FibGVkU3RhdGUgIT0gMiAmJiAobV9p
c1N0eWxlU2hlZXQgfHwgKGFjY2VwdElmVHlwZUNvbnRhaW5zVGV4dENTUyAmJiB0eXBlLmNvbnRh
aW5zKCJ0ZXh0L2NzcyIpKSkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBtX3VybC5pc1ZhbGlk
KCkpIHsKICAgICAgICAgLy8gYWxzbywgZG9uJ3QgbG9hZCBzdHlsZSBzaGVldHMgZm9yIHN0YW5k
YWxvbmUgZG9jdW1lbnRzCiAgICAgICAgIAogICAgICAgICBTdHJpbmcgY2hhcnNldCA9IGdldEF0
dHJpYnV0ZShjaGFyc2V0QXR0cik7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVk
dWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIu
Y3BwCShyZXZpc2lvbiA1MDQzNykKKysrIFdlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw3IEBAIGJvb2wgUmVkaXJlY3RTY2hl
ZHVsZXI6Om11c3RMb2NrQmFja0ZvcncKICAgICAKICAgICBmb3IgKEZyYW1lKiBhbmNlc3RvciA9
IHRhcmdldEZyYW1lLT50cmVlKCktPnBhcmVudCgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNl
c3Rvci0+dHJlZSgpLT5wYXJlbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBh
bmNlc3Rvci0+ZG9jdW1lbnQoKTsKLSAgICAgICAgaWYgKCFhbmNlc3Rvci0+bG9hZGVyKCktPmlz
Q29tcGxldGUoKSB8fCBkb2N1bWVudCAmJiBkb2N1bWVudC0+cHJvY2Vzc2luZ0xvYWRFdmVudCgp
KQorICAgICAgICBpZiAoIWFuY2VzdG9yLT5sb2FkZXIoKS0+aXNDb21wbGV0ZSgpIHx8IChkb2N1
bWVudCAmJiBkb2N1bWVudC0+cHJvY2Vzc2luZ0xvYWRFdmVudCgpKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHJldmlzaW9uIDUw
NDM3KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjIyLDcgKzYyMiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpkaWRGaW5pc2hMb2EKICAgICAgICAgQVNTRVJUKG5ld2VzdE1hbmlmZXN0KTsKICAg
ICAKICAgICAgICAgaWYgKCFtX21hbmlmZXN0UmVzb3VyY2UgfHwgLy8gVGhlIHJlc291cmNlIHdp
bGwgYmUgbnVsbCBpZiBIVFRQIHJlc3BvbnNlIHdhcyAzMDQgTm90IE1vZGlmaWVkLgotICAgICAg
ICAgICAgbmV3ZXN0TWFuaWZlc3QtPmRhdGEoKS0+c2l6ZSgpID09IG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLT5zaXplKCkgJiYgIW1lbWNtcChuZXdlc3RNYW5pZmVzdC0+ZGF0YSgpLT5kYXRh
KCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLT5kYXRhKCksIG5ld2VzdE1hbmlmZXN0LT5k
YXRhKCktPnNpemUoKSkpIHsKKyAgICAgICAgICAgIChuZXdlc3RNYW5pZmVzdC0+ZGF0YSgpLT5z
aXplKCkgPT0gbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCktPnNpemUoKSAmJiAhbWVtY21wKG5l
d2VzdE1hbmlmZXN0LT5kYXRhKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkt
PmRhdGEoKSwgbmV3ZXN0TWFuaWZlc3QtPmRhdGEoKS0+c2l6ZSgpKSkpIHsKIAogICAgICAgICAg
ICAgbV9jb21wbGV0aW9uVHlwZSA9IE5vVXBkYXRlOwogICAgICAgICAgICAgbV9tYW5pZmVzdFJl
c291cmNlID0gMDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hl
UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENh
Y2hlUXQuY3BwCShyZXZpc2lvbiA1MDQzNykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvRm9udENhY2hlUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsOSArMTIzLDkgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzW10gPSB7CiAgICAgICAgICAg
ICBDYXNlRm9sZGluZ0hhc2g6Omhhc2gobV9mYW1pbHlOYW1lKSwKLSAgICAgICAgICAgIG1fc2l6
ZSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2JvbGQgPDwgc2l6ZW9mKHVuc2lnbmVkKSAqIDgg
LSAxKQotICAgICAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1faXRhbGljKSA8
PCBzaXplb2YodW5zaWduZWQpICo4IC0gMgotICAgICAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fc21hbGxDYXBzKSA8PCBzaXplb2YodW5zaWduZWQpICogOCAtIDMKKyAgICAg
ICAgICAgIG1fc2l6ZSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2JvbGQgPDwgKHNpemVvZih1
bnNpZ25lZCkgKiA4IC0gMSkpCisgICAgICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9pdGFsaWMpIDw8IChzaXplb2YodW5zaWduZWQpICogOCAtIDIpCisgICAgICAgICAgICAg
ICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zbWFsbENhcHMpIDw8IChzaXplb2YodW5zaWdu
ZWQpICogOCAtIDMpCiAgICAgICAgIH07CiAgICAgICAgIG1faGFzaCA9IFN0cmluZ0ltcGw6OmNv
bXB1dGVIYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihoYXNoQ29kZXMpLCBzaXplb2YoaGFz
aENvZGVzKSAvIHNpemVvZihVQ2hhcikpOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAJKHJldmlzaW9uIDUwNDM3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTMsNyArOTUzLDcgQEAgYm9vbCBSZW5kZXJCbG9j
azo6aGFuZGxlUnVuSW5DaGlsZChSZW5kZQogICAgIC8vIE1vdmUgdGhlIG5vZGVzIGZyb20gdGhl
IG9sZCBjaGlsZCB0byB0aGUgbmV3IGNoaWxkLCBidXQgc2tpcCBhbnkgOmJlZm9yZS86YWZ0ZXIg
Y29udGVudC4gIEl0IGhhcyBhbHJlYWR5CiAgICAgLy8gYmVlbiByZWdlbmVyYXRlZCBieSB0aGUg
bmV3IGlubGluZS4KICAgICBmb3IgKFJlbmRlck9iamVjdCogcnVuSW5DaGlsZCA9IGJsb2NrUnVu
SW4tPmZpcnN0Q2hpbGQoKTsgcnVuSW5DaGlsZDsgcnVuSW5DaGlsZCA9IHJ1bkluQ2hpbGQtPm5l
eHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKHJ1bkluSXNHZW5lcmF0ZWQgfHwgcnVuSW5DaGls
ZC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgIT0gQkVGT1JFICYmIHJ1bkluQ2hpbGQtPnN0eWxlKCkt
PnN0eWxlVHlwZSgpICE9IEFGVEVSKSB7CisgICAgICAgIGlmIChydW5JbklzR2VuZXJhdGVkIHx8
IChydW5JbkNoaWxkLT5zdHlsZSgpLT5zdHlsZVR5cGUoKSAhPSBCRUZPUkUgJiYgcnVuSW5DaGls
ZC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgIT0gQUZURVIpKSB7CiAgICAgICAgICAgICBibG9ja1J1
bkluLT5jaGlsZHJlbigpLT5yZW1vdmVDaGlsZE5vZGUoYmxvY2tSdW5JbiwgcnVuSW5DaGlsZCwg
ZmFsc2UpOwogICAgICAgICAgICAgaW5saW5lUnVuSW4tPmFkZENoaWxkKHJ1bkluQ2hpbGQpOyAv
LyBVc2UgYWRkQ2hpbGQgaW5zdGVhZCBvZiBhcHBlbmRDaGlsZE5vZGUgc2luY2UgaXQgaGFuZGxl
cyBjb3JyZWN0IHBsYWNlbWVudCBvZiB0aGUgY2hpbGRyZW4gcmVsYXRpdmUgdG8gOmFmdGVyLWdl
bmVyYXRlZCBjb250ZW50LgogICAgICAgICB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJ
KHJldmlzaW9uIDUwNDM3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ3MSw3ICsxNDcxLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNhbGNIZWln
aHQoKQogICAgIC8vIGhlaWdodCBzaW5jZSB3ZSBkb24ndCBzZXQgYSBoZWlnaHQgaW4gUmVuZGVy
VmlldyB3aGVuIHdlJ3JlIHByaW50aW5nLiBTbyB3aXRob3V0IHRoaXMgcXVpcmssIHRoZSAKICAg
ICAvLyBoZWlnaHQgaGFzIG5vdGhpbmcgdG8gYmUgYSBwZXJjZW50YWdlIG9mLCBhbmQgaXQgZW5k
cyB1cCBiZWluZyAwLiBUaGF0IGlzIGJhZC4KICAgICBib29sIHByaW50aW5nTmVlZHNCYXNlSGVp
Z2h0ID0gZG9jdW1lbnQoKS0+cHJpbnRpbmcoKSAmJiBoLmlzUGVyY2VudCgpCi0gICAgICAgICYm
IChpc1Jvb3QoKSB8fCBpc0JvZHkoKSAmJiBkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKS0+
cmVuZGVyZXIoKS0+c3R5bGUoKS0+aGVpZ2h0KCkuaXNQZXJjZW50KCkpOworICAgICAgICAmJiAo
aXNSb290KCkgfHwgKGlzQm9keSgpICYmIGRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpLT5y
ZW5kZXJlcigpLT5zdHlsZSgpLT5oZWlnaHQoKS5pc1BlcmNlbnQoKSkpOwogICAgIGlmIChzdHJl
dGNoZXNUb1ZpZXdIZWlnaHQoKSB8fCBwcmludGluZ05lZWRzQmFzZUhlaWdodCkgewogICAgICAg
ICBpbnQgbWFyZ2lucyA9IGNvbGxhcHNlZE1hcmdpblRvcCgpICsgY29sbGFwc2VkTWFyZ2luQm90
dG9tKCk7CiAgICAgICAgIGludCB2aXNIZWlnaHQgPSBkb2N1bWVudCgpLT5wcmludGluZygpID8g
dmlldygpLT5mcmFtZVZpZXcoKS0+dmlzaWJsZUhlaWdodCgpIDogdmlldygpLT52aWV3SGVpZ2h0
KCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUuY3BwCShyZXZpc2lvbiA1MDQzNykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsOCArNjQsOCBAQCBi
b29sIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpub2RlQXRQCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGJvb2wgcmVzdWx0SXNUZXh0VmFsdWVPclBsYWNlaG9sZGVyCi0gICAgICAg
ID0gIW1fcGxhY2Vob2xkZXJWaXNpYmxlICYmIHJlc3VsdC5pbm5lck5vZGUoKSA9PSBpbm5lclRl
eHRFbGVtZW50KCkKLSAgICAgICAgfHwgbV9wbGFjZWhvbGRlclZpc2libGUgJiYgcmVzdWx0Lmlu
bmVyTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihpbm5lclRleHRFbGVtZW50KCkpOworICAgICAgICA9
ICghbV9wbGFjZWhvbGRlclZpc2libGUgJiYgcmVzdWx0LmlubmVyTm9kZSgpID09IGlubmVyVGV4
dEVsZW1lbnQoKSkKKyAgICAgICAgfHwgKG1fcGxhY2Vob2xkZXJWaXNpYmxlICYmIHJlc3VsdC5p
bm5lck5vZGUoKS0+aXNEZXNjZW5kYW50T2YoaW5uZXJUZXh0RWxlbWVudCgpKSk7CiAgICAgaWYg
KHJlc3VsdC5pbm5lck5vZGUoKSA9PSBub2RlKCkgfHwgcmVzdWx0SXNUZXh0VmFsdWVPclBsYWNl
aG9sZGVyKQogICAgICAgICBoaXRJbm5lclRleHRFbGVtZW50KHJlc3VsdCwgeCwgeSwgdHgsIHR5
KTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2aXNp
b24gNTA0MzcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1NCw4ICs0NTQsOCBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyU3R5
bGU6OmRpZmYoY29uc3QgCiAgICAgaWYgKGluaGVyaXRlZC0+bV9lZmZlY3RpdmVab29tICE9IG90
aGVyLT5pbmhlcml0ZWQtPm1fZWZmZWN0aXZlWm9vbSkKICAgICAgICAgcmV0dXJuIFN0eWxlRGlm
ZmVyZW5jZUxheW91dDsKIAotICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eSA9
PSAxICYmIG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eSA8IDEgfHwKLSAgICAg
ICAgcmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHkgPCAxICYmIG90aGVyLT5yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+b3BhY2l0eSA9PSAxKSB7CisgICAgaWYgKChyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+b3BhY2l0eSA9PSAxICYmIG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eSA8
IDEpIHx8CisgICAgICAgIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eSA8IDEgJiYgb3Ro
ZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5ID09IDEpKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgYWRkIGFuIG9wdGltaXplZCBmb3JtIG9mIGxheW91dCB0aGF0IGp1c3Qg
cmVjb21wdXRlcyB2aXN1YWwgb3ZlcmZsb3cuCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVu
Y2VMYXlvdXQ7CiAgICAgfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkocmV2aXNp
b24gNTA0MzcpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VOdW1iZXJWYWx1ZUFuZFVu
aXQoY29ucwogICAgICAgICB1bml0TGVuZ3RoID0gNDsKICAgICBTdHJpbmcgbmV3VW5pdCA9IHBh
cnNlLnJpZ2h0KHVuaXRMZW5ndGgpOwogICAgIFN0cmluZyBudW1iZXIgPSBwYXJzZS5sZWZ0KHBh
cnNlLmxlbmd0aCgpIC0gdW5pdExlbmd0aCk7Ci0gICAgaWYgKCF1bml0LmlzRW1wdHkoKSAmJiBu
ZXdVbml0ICE9IHVuaXQgfHwgbnVtYmVyLmlzRW1wdHkoKSkKKyAgICBpZiAoKCF1bml0LmlzRW1w
dHkoKSAmJiBuZXdVbml0ICE9IHVuaXQpIHx8IG51bWJlci5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBVQ2hhciBsYXN0ID0gbnVtYmVyW251bWJlci5sZW5ndGgoKSAtIDFd
OwogICAgIGlmIChsYXN0IDwgJzAnIHx8IGxhc3QgPiAnOScpCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdBbmltYXRpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmlt
YXRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gNTA0MzcpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmlt
YXRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg5LDcgKzQ4OSw3IEBAIHZvaWQg
U1ZHQW5pbWF0aW9uRWxlbWVudDo6c3RhcnRlZEFjdGl2ZUkKICAgICAgICAgbV9hbmltYXRpb25W
YWxpZCA9IG1fdmFsdWVzLnNpemUoKSA+IDEKICAgICAgICAgICAgICYmIChjYWxjTW9kZSA9PSBD
YWxjTW9kZVBhY2VkIHx8ICFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmtleVRpbWVzQXR0cikgfHwg
aGFzQXR0cmlidXRlKFNWR05hbWVzOjprZXlQb2ludHNBdHRyKSB8fCAobV92YWx1ZXMuc2l6ZSgp
ID09IG1fa2V5VGltZXMuc2l6ZSgpKSkKICAgICAgICAgICAgICYmIChjYWxjTW9kZSA9PSBDYWxj
TW9kZURpc2NyZXRlIHx8ICFtX2tleVRpbWVzLnNpemUoKSB8fCBtX2tleVRpbWVzLmxhc3QoKSA9
PSAxLjApCi0gICAgICAgICAgICAmJiAoY2FsY01vZGUgIT0gQ2FsY01vZGVTcGxpbmUgfHwgKG1f
a2V5U3BsaW5lcy5zaXplKCkgJiYgKG1fa2V5U3BsaW5lcy5zaXplKCkgPT0gbV92YWx1ZXMuc2l6
ZSgpIC0gMSkgfHwgbV9rZXlTcGxpbmVzLnNpemUoKSA9PSBtX2tleVBvaW50cy5zaXplKCkgLSAx
KSkKKyAgICAgICAgICAgICYmIChjYWxjTW9kZSAhPSBDYWxjTW9kZVNwbGluZSB8fCAoKG1fa2V5
U3BsaW5lcy5zaXplKCkgJiYgKG1fa2V5U3BsaW5lcy5zaXplKCkgPT0gbV92YWx1ZXMuc2l6ZSgp
IC0gMSkpIHx8IG1fa2V5U3BsaW5lcy5zaXplKCkgPT0gbV9rZXlQb2ludHMuc2l6ZSgpIC0gMSkp
CiAgICAgICAgICAgICAmJiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6a2V5UG9pbnRzQXR0cikg
fHwgKG1fa2V5VGltZXMuc2l6ZSgpID4gMSAmJiBtX2tleVRpbWVzLnNpemUoKSA9PSBtX2tleVBv
aW50cy5zaXplKCkpKTsKICAgICAgICAgaWYgKGNhbGNNb2RlID09IENhbGNNb2RlUGFjZWQgJiYg
bV9hbmltYXRpb25WYWxpZCkKICAgICAgICAgICAgIGNhbGN1bGF0ZUtleVRpbWVzRm9yQ2FsY01v
ZGVQYWNlZCgpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAJKHJl
dmlzaW9uIDUwNDM3KQorKysgV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4MCw3ICsxODAsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBT
VkdQcmVzZXJ2ZUFzcGVjdFJhCiAgICAgaWYgKGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZFQVNQRUNU
UkFUSU9fTk9ORSkgewogICAgICAgICB0ZW1wLnNjYWxlTm9uVW5pZm9ybShwaHlzV2lkdGggLyBs
b2dpY1dpZHRoLCBwaHlzSGVpZ2h0IC8gbG9naWNIZWlnaHQpOwogICAgICAgICB0ZW1wLnRyYW5z
bGF0ZSgtbG9naWNYLCAtbG9naWNZKTsKLSAgICB9IGVsc2UgaWYgKHZwYXIgPCBzdmdhciAmJiAo
bWVldE9yU2xpY2UoKSA9PSBTVkdfTUVFVE9SU0xJQ0VfTUVFVCkgfHwgdnBhciA+PSBzdmdhciAm
JiAobWVldE9yU2xpY2UoKSA9PSBTVkdfTUVFVE9SU0xJQ0VfU0xJQ0UpKSB7CisgICAgfSBlbHNl
IGlmICgodnBhciA8IHN2Z2FyICYmIChtZWV0T3JTbGljZSgpID09IFNWR19NRUVUT1JTTElDRV9N
RUVUKSkgfHwgKHZwYXIgPj0gc3ZnYXIgJiYgKG1lZXRPclNsaWNlKCkgPT0gU1ZHX01FRVRPUlNM
SUNFX1NMSUNFKSkpIHsKICAgICAgICAgdGVtcC5zY2FsZU5vblVuaWZvcm0ocGh5c0hlaWdodCAv
IGxvZ2ljSGVpZ2h0LCBwaHlzSGVpZ2h0IC8gbG9naWNIZWlnaHQpOwogCiAgICAgICAgIGlmIChh
bGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlOIHx8IGFsaWduKCkgPT0g
U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSUQgfHwgYWxpZ24oKSA9PSBTVkdfUFJFU0VS
VkVBU1BFQ1RSQVRJT19YTUlOWU1BWCkKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNTA0MzgpCisrKyBXZWJLaXQv
cXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTEtMDIg
IExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBleHBsaWNpdCBwYXJlbnRo
ZXNlcyB0byBzaWxlbmNlIGdjYyA0LjQgLVdwYXJlbnRoZXNlcyB3YXJuaW5ncworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEwNDAKKworICAgICAgICAq
IEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNjcm9s
bGluZyk6CisKIDIwMDktMTEtMDIgIEplZHJ6ZWogTm93YWNraSAgPGplZHJ6ZWoubm93YWNraUBu
b2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYktp
dC9xdC9BcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCShyZXZpc2lvbiA1MDQzNykKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjEwLDE2ICsxMjEwLDE2IEBAIGJvb2wgUVdlYlBhZ2VQcml2YXRl
OjpoYW5kbGVTY3JvbGxpbmcoUUsKICAgICAgICAgZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeVBhZ2U7
CiAgICAgICAgIGRpcmVjdGlvbiA9IFNjcm9sbERvd247CiAgICAgfSBlbHNlIGlmIChldiA9PSBR
S2V5U2VxdWVuY2U6Ok1vdmVUb1ByZXZpb3VzUGFnZQotICAgICAgICAgICAgICAgfHwgKGV2LT5r
ZXkoKSA9PSBRdDo6S2V5X1NwYWNlKSAmJiAoZXYtPm1vZGlmaWVycygpICYgUXQ6OlNoaWZ0TW9k
aWZpZXIpKSB7CisgICAgICAgICAgICAgICB8fCAoKGV2LT5rZXkoKSA9PSBRdDo6S2V5X1NwYWNl
KSAmJiAoZXYtPm1vZGlmaWVycygpICYgUXQ6OlNoaWZ0TW9kaWZpZXIpKSkgewogICAgICAgICBn
cmFudWxhcml0eSA9IFNjcm9sbEJ5UGFnZTsKICAgICAgICAgZGlyZWN0aW9uID0gU2Nyb2xsVXA7
CiAgICAgfSBlbHNlCiAjZW5kaWYgLy8gUVRfTk9fU0hPUlRDVVQKLSAgICBpZiAoZXYtPmtleSgp
ID09IFF0OjpLZXlfVXAgJiYgZXYtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllcgor
ICAgIGlmICgoZXYtPmtleSgpID09IFF0OjpLZXlfVXAgJiYgZXYtPm1vZGlmaWVycygpICYgUXQ6
OkNvbnRyb2xNb2RpZmllcikKICAgICAgICAgICAgICAgIHx8IGV2LT5rZXkoKSA9PSBRdDo6S2V5
X0hvbWUpIHsKICAgICAgICAgZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeURvY3VtZW50OwogICAgICAg
ICBkaXJlY3Rpb24gPSBTY3JvbGxVcDsKLSAgICB9IGVsc2UgaWYgKGV2LT5rZXkoKSA9PSBRdDo6
S2V5X0Rvd24gJiYgZXYtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllcgorICAgIH0g
ZWxzZSBpZiAoKGV2LT5rZXkoKSA9PSBRdDo6S2V5X0Rvd24gJiYgZXYtPm1vZGlmaWVycygpICYg
UXQ6OkNvbnRyb2xNb2RpZmllcikKICAgICAgICAgICAgICAgIHx8IGV2LT5rZXkoKSA9PSBRdDo6
S2V5X0VuZCkgewogICAgICAgICBncmFudWxhcml0eSA9IFNjcm9sbEJ5RG9jdW1lbnQ7CiAgICAg
ICAgIGRpcmVjdGlvbiA9IFNjcm9sbERvd247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42425</attachid>
            <date>2009-11-03 15:09:18 -0800</date>
            <delta_ts>2009-11-09 12:04:56 -0800</delta_ts>
            <desc>2nd try</desc>
            <filename>31040_2.patch</filename>
            <type>text/plain</type>
            <size>17924</size>
            <attacher name="Laszlo Gombos">laszlo.gombos</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUwNDM4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTEtMDIgIExhc3psbyBH
b21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBleHBsaWNpdCBwYXJlbnRoZXNlcyB0byBz
aWxlbmNlIGdjYyA0LjQgLVdwYXJlbnRoZXNlcyB3YXJuaW5ncworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEwNDAKKworICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVF
eGVjdXRlKToKKwogMjAwOS0xMS0wMiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bu
b2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiA1MDQzNykK
KysrIEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ4OCw3ICsxNDg4LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4
ZWN1dGUoRXhlYwogICAgICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKICAgICAgICAg
SlNWYWx1ZSBzcmMxID0gY2FsbEZyYW1lLT5yKHZQQ1syXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsK
ICAgICAgICAgSlNWYWx1ZSBzcmMyID0gY2FsbEZyYW1lLT5yKHZQQ1szXS51Lm9wZXJhbmQpLmpz
VmFsdWUoKTsKLSAgICAgICAgaWYgKHNyYzEuaXNJbnQzMigpICYmIHNyYzIuaXNJbnQzMigpICYm
ICEoc3JjMS5hc0ludDMyKCkgfCBzcmMyLmFzSW50MzIoKSAmIDB4YzAwMDAwMDApKSAvLyBubyBv
dmVyZmxvdworICAgICAgICBpZiAoc3JjMS5pc0ludDMyKCkgJiYgc3JjMi5pc0ludDMyKCkgJiYg
IShzcmMxLmFzSW50MzIoKSB8IChzcmMyLmFzSW50MzIoKSAmIDB4YzAwMDAwMDApKSkgLy8gbm8g
b3ZlcmZsb3cKICAgICAgICAgICAgIGNhbGxGcmFtZS0+cihkc3QpID0ganNOdW1iZXIoY2FsbEZy
YW1lLCBzcmMxLmFzSW50MzIoKSArIHNyYzIuYXNJbnQzMigpKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQWRkKGNhbGxGcmFtZSwgc3JjMSwgc3JjMik7
CkBAIC0xNTc1LDcgKzE1NzUsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0
ZShFeGVjCiAgICAgICAgIGludCBkc3QgPSB2UENbMV0udS5vcGVyYW5kOwogICAgICAgICBKU1Zh
bHVlIHNyYzEgPSBjYWxsRnJhbWUtPnIodlBDWzJdLnUub3BlcmFuZCkuanNWYWx1ZSgpOwogICAg
ICAgICBKU1ZhbHVlIHNyYzIgPSBjYWxsRnJhbWUtPnIodlBDWzNdLnUub3BlcmFuZCkuanNWYWx1
ZSgpOwotICAgICAgICBpZiAoc3JjMS5pc0ludDMyKCkgJiYgc3JjMi5pc0ludDMyKCkgJiYgIShz
cmMxLmFzSW50MzIoKSB8IHNyYzIuYXNJbnQzMigpICYgMHhjMDAwMDAwMCkpIC8vIG5vIG92ZXJm
bG93CisgICAgICAgIGlmIChzcmMxLmlzSW50MzIoKSAmJiBzcmMyLmlzSW50MzIoKSAmJiAhKHNy
YzEuYXNJbnQzMigpIHwgKHNyYzIuYXNJbnQzMigpICYgMHhjMDAwMDAwMCkpKSAvLyBubyBvdmVy
ZmxvdwogICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGRzdCkgPSBqc051bWJlcihjYWxsRnJhbWUs
IHNyYzEuYXNJbnQzMigpIC0gc3JjMi5hc0ludDMyKCkpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoY2FsbEZyYW1lLCBzcmMxLnRvTnVtYmVy
KGNhbGxGcmFtZSkgLSBzcmMyLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwpJbmRleDogV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUwNDM4
KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MSBAQAor
MjAwOS0xMS0wMiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGV4cGxp
Y2l0IHBhcmVudGhlc2VzIHRvIHNpbGVuY2UgZ2NjIDQuNCAtV3BhcmVudGhlc2VzIHdhcm5pbmdz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTA0MAor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcyB0aGVyZSBpcyBubyBmdW5jdGlvbmFsIGNoYW5nZS4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6cmVjYWxjU3R5bGVTZWxlY3Rvcik6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cHVzaEZ1bGx5Q2xpcHBlZFN0YXRlKToKKyAgICAgICAg
KiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJs
ZVNlbGVjdGlvbjo6YXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlKToKKyAgICAgICAgKiBodG1sL0hU
TUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnBy
b2Nlc3MpOgorICAgICAgICAqIGxvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFu
aWZlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleTo6Y29tcHV0ZUhhc2gp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6aGFuZGxlUnVuSW5DaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNIZWlnaHQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6bm9kZUF0UG9pbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6ZGlmZik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTnVtYmVyVmFsdWVBbmRVbml0KToKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRpb25FbGVtZW50OjpzdGFydGVkQWN0aXZlSW50ZXJ2YWwpOgorICAgICAgICAqIHN2Zy9T
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ByZXNlcnZl
QXNwZWN0UmF0aW86OmdldENUTSk6CisKIDIwMDktMTEtMDIgIExhc3psbyBHb21ib3MgIDxsYXN6
bG8uMS5nb21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNTA0MzcpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0ODksNyArMjQ4OSw3IEBAIHZvaWQgRG9jdW1lbnQ6
OnJlY2FsY1N0eWxlU2VsZWN0b3IoKQogICAgICAgICAgICAgICAgICAgICBzaGVldCA9IGNzc1No
ZWV0LmdldCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIGlmIChuLT5pc0hUTUxFbGVtZW50KCkgJiYgKG4tPmhhc1RhZ05hbWUobGlua1RhZykgfHwg
bi0+aGFzVGFnTmFtZShzdHlsZVRhZykpCisgICAgICAgIH0gZWxzZSBpZiAoKG4tPmlzSFRNTEVs
ZW1lbnQoKSAmJiAobi0+aGFzVGFnTmFtZShsaW5rVGFnKSB8fCBuLT5oYXNUYWdOYW1lKHN0eWxl
VGFnKSkpCiAjaWYgRU5BQkxFKFNWRykKICAgICAgICAgICAgIHx8ICAobi0+aXNTVkdFbGVtZW50
KCkgJiYgbi0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3R5bGVUYWcpKQogI2VuZGlmCkluZGV4OiBX
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gNTA0MzcpCisrKyBXZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE4LDcgKzIxOCw3IEBAIHN0
YXRpYyB2b2lkIHB1c2hGdWxseUNsaXBwZWRTdGF0ZShCaXRTdGEKIAogICAgIC8vIFB1c2ggdHJ1
ZSBpZiB0aGlzIG5vZGUgZnVsbCBjbGlwcyBpdHMgY29udGVudHMsIG9yIGlmIGEgcGFyZW50IGFs
cmVhZHkgaGFzIGZ1bGx5CiAgICAgLy8gY2xpcHBlZCBhbmQgdGhpcyBpcyBub3QgYSBub2RlIHRo
YXQgaWdub3JlcyBpdHMgY29udGFpbmVyJ3MgY2xpcC4KLSAgICBzdGFjay5wdXNoKGZ1bGx5Q2xp
cHNDb250ZW50cyhub2RlKSB8fCBzdGFjay50b3AoKSAmJiAhaWdub3Jlc0NvbnRhaW5lckNsaXAo
bm9kZSkpOworICAgIHN0YWNrLnB1c2goZnVsbHlDbGlwc0NvbnRlbnRzKG5vZGUpIHx8IChzdGFj
ay50b3AoKSAmJiAhaWdub3Jlc0NvbnRhaW5lckNsaXAobm9kZSkpKTsKIH0KIAogc3RhdGljIHZv
aWQgc2V0VXBGdWxseUNsaXBwZWRTdGFjayhCaXRTdGFjayYgc3RhY2ssIE5vZGUqIG5vZGUpCklu
ZGV4OiBXZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiA1MDQzNykKKysr
IFdlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjM3LDcgKzIzNyw3IEBAIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6YXBwZW5kVHJhaWxpbmdXaGkK
IAogICAgIGZvciAoOyBjaGFySXQubGVuZ3RoKCk7IGNoYXJJdC5hZHZhbmNlKDEpKSB7CiAgICAg
ICAgIFVDaGFyIGMgPSBjaGFySXQuY2hhcmFjdGVycygpWzBdOwotICAgICAgICBpZiAoIWlzU3Bh
Y2VPck5ld2xpbmUoYykgJiYgYyAhPSBub0JyZWFrU3BhY2UgfHwgYyA9PSAnXG4nKQorICAgICAg
ICBpZiAoKCFpc1NwYWNlT3JOZXdsaW5lKGMpICYmIGMgIT0gbm9CcmVha1NwYWNlKSB8fCBjID09
ICdcbicpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgbV9lbmQgPSBjaGFySXQucmFuZ2Uo
KS0+ZW5kUG9zaXRpb24oKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAko
cmV2aXNpb24gNTA0MzcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9j
ZXNzKCkKIAogICAgIC8vIFN0eWxlc2hlZXQKICAgICAvLyBUaGlzIHdhcyBidWdneSBhbmQgd291
bGQgaW5jb3JyZWN0bHkgbWF0Y2ggPGxpbmsgcmVsPSJhbHRlcm5hdGUiPiwgd2hpY2ggaGFzIGEg
ZGlmZmVyZW50IHNwZWNpZmllZCBtZWFuaW5nLiAtZHdoCi0gICAgaWYgKG1fZGlzYWJsZWRTdGF0
ZSAhPSAyICYmIChtX2lzU3R5bGVTaGVldCB8fCBhY2NlcHRJZlR5cGVDb250YWluc1RleHRDU1Mg
JiYgdHlwZS5jb250YWlucygidGV4dC9jc3MiKSkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBt
X3VybC5pc1ZhbGlkKCkpIHsKKyAgICBpZiAobV9kaXNhYmxlZFN0YXRlICE9IDIgJiYgKG1faXNT
dHlsZVNoZWV0IHx8IChhY2NlcHRJZlR5cGVDb250YWluc1RleHRDU1MgJiYgdHlwZS5jb250YWlu
cygidGV4dC9jc3MiKSkpICYmIGRvY3VtZW50KCktPmZyYW1lKCkgJiYgbV91cmwuaXNWYWxpZCgp
KSB7CiAgICAgICAgIC8vIGFsc28sIGRvbid0IGxvYWQgc3R5bGUgc2hlZXRzIGZvciBzdGFuZGFs
b25lIGRvY3VtZW50cwogICAgICAgICAKICAgICAgICAgU3RyaW5nIGNoYXJzZXQgPSBnZXRBdHRy
aWJ1dGUoY2hhcnNldEF0dHIpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNw
cAkocmV2aXNpb24gNTA0MzcpCisrKyBXZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBib29sIFJlZGlyZWN0U2NoZWR1
bGVyOjptdXN0TG9ja0JhY2tGb3J3CiAgICAgCiAgICAgZm9yIChGcmFtZSogYW5jZXN0b3IgPSB0
YXJnZXRGcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0
b3ItPnRyZWUoKS0+cGFyZW50KCkpIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gYW5j
ZXN0b3ItPmRvY3VtZW50KCk7Ci0gICAgICAgIGlmICghYW5jZXN0b3ItPmxvYWRlcigpLT5pc0Nv
bXBsZXRlKCkgfHwgZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnByb2Nlc3NpbmdMb2FkRXZlbnQoKSkK
KyAgICAgICAgaWYgKCFhbmNlc3Rvci0+bG9hZGVyKCktPmlzQ29tcGxldGUoKSB8fCAoZG9jdW1l
bnQgJiYgZG9jdW1lbnQtPnByb2Nlc3NpbmdMb2FkRXZlbnQoKSkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiA1MDQz
NykKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYyMiw3ICs2MjIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6ZGlkRmluaXNoTG9hCiAgICAgICAgIEFTU0VSVChuZXdlc3RNYW5pZmVzdCk7CiAgICAg
CiAgICAgICAgIGlmICghbV9tYW5pZmVzdFJlc291cmNlIHx8IC8vIFRoZSByZXNvdXJjZSB3aWxs
IGJlIG51bGwgaWYgSFRUUCByZXNwb25zZSB3YXMgMzA0IE5vdCBNb2RpZmllZC4KLSAgICAgICAg
ICAgIG5ld2VzdE1hbmlmZXN0LT5kYXRhKCktPnNpemUoKSA9PSBtX21hbmlmZXN0UmVzb3VyY2Ut
PmRhdGEoKS0+c2l6ZSgpICYmICFtZW1jbXAobmV3ZXN0TWFuaWZlc3QtPmRhdGEoKS0+ZGF0YSgp
LCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS0+ZGF0YSgpLCBuZXdlc3RNYW5pZmVzdC0+ZGF0
YSgpLT5zaXplKCkpKSB7CisgICAgICAgICAgICAobmV3ZXN0TWFuaWZlc3QtPmRhdGEoKS0+c2l6
ZSgpID09IG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLT5zaXplKCkgJiYgIW1lbWNtcChuZXdl
c3RNYW5pZmVzdC0+ZGF0YSgpLT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLT5k
YXRhKCksIG5ld2VzdE1hbmlmZXN0LT5kYXRhKCktPnNpemUoKSkpKSB7CiAKICAgICAgICAgICAg
IG1fY29tcGxldGlvblR5cGUgPSBOb1VwZGF0ZTsKICAgICAgICAgICAgIG1fbWFuaWZlc3RSZXNv
dXJjZSA9IDA7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNo
ZVF0LmNwcAkocmV2aXNpb24gNTA0MzcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0ZvbnRDYWNoZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDkgKzEyMyw5IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1tdID0gewogICAgICAgICAgICAg
Q2FzZUZvbGRpbmdIYXNoOjpoYXNoKG1fZmFtaWx5TmFtZSksCi0gICAgICAgICAgICBtX3NpemUg
fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9ib2xkIDw8IHNpemVvZih1bnNpZ25lZCkgKiA4IC0g
MSkKLSAgICAgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2l0YWxpYykgPDwg
c2l6ZW9mKHVuc2lnbmVkKSAqOCAtIDIKLSAgICAgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3NtYWxsQ2FwcykgPDwgc2l6ZW9mKHVuc2lnbmVkKSAqIDggLSAzCisgICAgICAg
ICAgICBtX3NpemUgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9ib2xkIDw8IChzaXplb2YodW5z
aWduZWQpICogOCAtIDEpKQorICAgICAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1faXRhbGljKSA8PCAoc2l6ZW9mKHVuc2lnbmVkKSAqIDggLSAyKQorICAgICAgICAgICAgICAg
IHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc21hbGxDYXBzKSA8PCAoc2l6ZW9mKHVuc2lnbmVk
KSAqIDggLSAzKQogICAgICAgICB9OwogICAgICAgICBtX2hhc2ggPSBTdHJpbmdJbXBsOjpjb21w
dXRlSGFzaChyZWludGVycHJldF9jYXN0PFVDaGFyKj4oaGFzaENvZGVzKSwgc2l6ZW9mKGhhc2hD
b2RlcykgLyBzaXplb2YoVUNoYXIpKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCShyZXZpc2lvbiA1MDQzNykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUzLDcgKzk1Myw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6
OmhhbmRsZVJ1bkluQ2hpbGQoUmVuZGUKICAgICAvLyBNb3ZlIHRoZSBub2RlcyBmcm9tIHRoZSBv
bGQgY2hpbGQgdG8gdGhlIG5ldyBjaGlsZCwgYnV0IHNraXAgYW55IDpiZWZvcmUvOmFmdGVyIGNv
bnRlbnQuICBJdCBoYXMgYWxyZWFkeQogICAgIC8vIGJlZW4gcmVnZW5lcmF0ZWQgYnkgdGhlIG5l
dyBpbmxpbmUuCiAgICAgZm9yIChSZW5kZXJPYmplY3QqIHJ1bkluQ2hpbGQgPSBibG9ja1J1bklu
LT5maXJzdENoaWxkKCk7IHJ1bkluQ2hpbGQ7IHJ1bkluQ2hpbGQgPSBydW5JbkNoaWxkLT5uZXh0
U2libGluZygpKSB7Ci0gICAgICAgIGlmIChydW5JbklzR2VuZXJhdGVkIHx8IHJ1bkluQ2hpbGQt
PnN0eWxlKCktPnN0eWxlVHlwZSgpICE9IEJFRk9SRSAmJiBydW5JbkNoaWxkLT5zdHlsZSgpLT5z
dHlsZVR5cGUoKSAhPSBBRlRFUikgeworICAgICAgICBpZiAocnVuSW5Jc0dlbmVyYXRlZCB8fCAo
cnVuSW5DaGlsZC0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgIT0gQkVGT1JFICYmIHJ1bkluQ2hpbGQt
PnN0eWxlKCktPnN0eWxlVHlwZSgpICE9IEFGVEVSKSkgewogICAgICAgICAgICAgYmxvY2tSdW5J
bi0+Y2hpbGRyZW4oKS0+cmVtb3ZlQ2hpbGROb2RlKGJsb2NrUnVuSW4sIHJ1bkluQ2hpbGQsIGZh
bHNlKTsKICAgICAgICAgICAgIGlubGluZVJ1bkluLT5hZGRDaGlsZChydW5JbkNoaWxkKTsgLy8g
VXNlIGFkZENoaWxkIGluc3RlYWQgb2YgYXBwZW5kQ2hpbGROb2RlIHNpbmNlIGl0IGhhbmRsZXMg
Y29ycmVjdCBwbGFjZW1lbnQgb2YgdGhlIGNoaWxkcmVuIHJlbGF0aXZlIHRvIDphZnRlci1nZW5l
cmF0ZWQgY29udGVudC4KICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShy
ZXZpc2lvbiA1MDQzNykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0NzEsNyArMTQ3MSw3IEBAIHZvaWQgUmVuZGVyQm94OjpjYWxjSGVpZ2h0
KCkKICAgICAvLyBoZWlnaHQgc2luY2Ugd2UgZG9uJ3Qgc2V0IGEgaGVpZ2h0IGluIFJlbmRlclZp
ZXcgd2hlbiB3ZSdyZSBwcmludGluZy4gU28gd2l0aG91dCB0aGlzIHF1aXJrLCB0aGUgCiAgICAg
Ly8gaGVpZ2h0IGhhcyBub3RoaW5nIHRvIGJlIGEgcGVyY2VudGFnZSBvZiwgYW5kIGl0IGVuZHMg
dXAgYmVpbmcgMC4gVGhhdCBpcyBiYWQuCiAgICAgYm9vbCBwcmludGluZ05lZWRzQmFzZUhlaWdo
dCA9IGRvY3VtZW50KCktPnByaW50aW5nKCkgJiYgaC5pc1BlcmNlbnQoKQotICAgICAgICAmJiAo
aXNSb290KCkgfHwgaXNCb2R5KCkgJiYgZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCktPnJl
bmRlcmVyKCktPnN0eWxlKCktPmhlaWdodCgpLmlzUGVyY2VudCgpKTsKKyAgICAgICAgJiYgKGlz
Um9vdCgpIHx8IChpc0JvZHkoKSAmJiBkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKS0+cmVu
ZGVyZXIoKS0+c3R5bGUoKS0+aGVpZ2h0KCkuaXNQZXJjZW50KCkpKTsKICAgICBpZiAoc3RyZXRj
aGVzVG9WaWV3SGVpZ2h0KCkgfHwgcHJpbnRpbmdOZWVkc0Jhc2VIZWlnaHQpIHsKICAgICAgICAg
aW50IG1hcmdpbnMgPSBjb2xsYXBzZWRNYXJnaW5Ub3AoKSArIGNvbGxhcHNlZE1hcmdpbkJvdHRv
bSgpOwogICAgICAgICBpbnQgdmlzSGVpZ2h0ID0gZG9jdW1lbnQoKS0+cHJpbnRpbmcoKSA/IHZp
ZXcoKS0+ZnJhbWVWaWV3KCktPnZpc2libGVIZWlnaHQoKSA6IHZpZXcoKS0+dmlld0hlaWdodCgp
OwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmNwcAkocmV2aXNpb24gNTA0MzcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDggKzY0LDggQEAgYm9v
bCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6bm9kZUF0UAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBib29sIHJlc3VsdElzVGV4dFZhbHVlT3JQbGFjZWhvbGRlcgotICAgICAgICA9
ICFtX3BsYWNlaG9sZGVyVmlzaWJsZSAmJiByZXN1bHQuaW5uZXJOb2RlKCkgPT0gaW5uZXJUZXh0
RWxlbWVudCgpCi0gICAgICAgIHx8IG1fcGxhY2Vob2xkZXJWaXNpYmxlICYmIHJlc3VsdC5pbm5l
ck5vZGUoKS0+aXNEZXNjZW5kYW50T2YoaW5uZXJUZXh0RWxlbWVudCgpKTsKKyAgICAgICAgPSAo
IW1fcGxhY2Vob2xkZXJWaXNpYmxlICYmIHJlc3VsdC5pbm5lck5vZGUoKSA9PSBpbm5lclRleHRF
bGVtZW50KCkpCisgICAgICAgIHx8IChtX3BsYWNlaG9sZGVyVmlzaWJsZSAmJiByZXN1bHQuaW5u
ZXJOb2RlKCktPmlzRGVzY2VuZGFudE9mKGlubmVyVGV4dEVsZW1lbnQoKSkpOwogICAgIGlmIChy
ZXN1bHQuaW5uZXJOb2RlKCkgPT0gbm9kZSgpIHx8IHJlc3VsdElzVGV4dFZhbHVlT3JQbGFjZWhv
bGRlcikKICAgICAgICAgaGl0SW5uZXJUZXh0RWxlbWVudChyZXN1bHQsIHgsIHksIHR4LCB0eSk7
CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9u
IDUwNDM3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NTQsOCArNDU0LDggQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlclN0eWxl
OjpkaWZmKGNvbnN0IAogICAgIGlmIChpbmhlcml0ZWQtPm1fZWZmZWN0aXZlWm9vbSAhPSBvdGhl
ci0+aW5oZXJpdGVkLT5tX2VmZmVjdGl2ZVpvb20pCiAgICAgICAgIHJldHVybiBTdHlsZURpZmZl
cmVuY2VMYXlvdXQ7CiAKLSAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHkgPT0g
MSAmJiBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHkgPCAxIHx8Ci0gICAgICAg
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5IDwgMSAmJiBvdGhlci0+cmFyZU5vbkluaGVy
aXRlZERhdGEtPm9wYWNpdHkgPT0gMSkgeworICAgIGlmICgocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm9wYWNpdHkgPT0gMSAmJiBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHkgPCAx
KSB8fAorICAgICAgICAocmFyZU5vbkluaGVyaXRlZERhdGEtPm9wYWNpdHkgPCAxICYmIG90aGVy
LT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eSA9PSAxKSkgewogICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIGFkZCBhbiBvcHRpbWl6ZWQgZm9ybSBvZiBsYXlvdXQgdGhhdCBqdXN0IHJl
Y29tcHV0ZXMgdmlzdWFsIG92ZXJmbG93LgogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNl
TGF5b3V0OwogICAgIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDUwNDM3KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBib29sIHBhcnNlTnVtYmVyVmFsdWVBbmRVbml0
KGNvbnMKICAgICAgICAgdW5pdExlbmd0aCA9IDQ7CiAgICAgU3RyaW5nIG5ld1VuaXQgPSBwYXJz
ZS5yaWdodCh1bml0TGVuZ3RoKTsKICAgICBTdHJpbmcgbnVtYmVyID0gcGFyc2UubGVmdChwYXJz
ZS5sZW5ndGgoKSAtIHVuaXRMZW5ndGgpOwotICAgIGlmICghdW5pdC5pc0VtcHR5KCkgJiYgbmV3
VW5pdCAhPSB1bml0IHx8IG51bWJlci5pc0VtcHR5KCkpCisgICAgaWYgKCghdW5pdC5pc0VtcHR5
KCkgJiYgbmV3VW5pdCAhPSB1bml0KSB8fCBudW1iZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgVUNoYXIgbGFzdCA9IG51bWJlcltudW1iZXIubGVuZ3RoKCkgLSAxXTsK
ICAgICBpZiAobGFzdCA8ICcwJyB8fCBsYXN0ID4gJzknKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDUwNDM3KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIFNW
R0FuaW1hdGlvbkVsZW1lbnQ6OnN0YXJ0ZWRBY3RpdmVJCiAgICAgICAgIG1fYW5pbWF0aW9uVmFs
aWQgPSBtX3ZhbHVlcy5zaXplKCkgPiAxCiAgICAgICAgICAgICAmJiAoY2FsY01vZGUgPT0gQ2Fs
Y01vZGVQYWNlZCB8fCAhaGFzQXR0cmlidXRlKFNWR05hbWVzOjprZXlUaW1lc0F0dHIpIHx8IGhh
c0F0dHJpYnV0ZShTVkdOYW1lczo6a2V5UG9pbnRzQXR0cikgfHwgKG1fdmFsdWVzLnNpemUoKSA9
PSBtX2tleVRpbWVzLnNpemUoKSkpCiAgICAgICAgICAgICAmJiAoY2FsY01vZGUgPT0gQ2FsY01v
ZGVEaXNjcmV0ZSB8fCAhbV9rZXlUaW1lcy5zaXplKCkgfHwgbV9rZXlUaW1lcy5sYXN0KCkgPT0g
MS4wKQotICAgICAgICAgICAgJiYgKGNhbGNNb2RlICE9IENhbGNNb2RlU3BsaW5lIHx8IChtX2tl
eVNwbGluZXMuc2l6ZSgpICYmIChtX2tleVNwbGluZXMuc2l6ZSgpID09IG1fdmFsdWVzLnNpemUo
KSAtIDEpIHx8IG1fa2V5U3BsaW5lcy5zaXplKCkgPT0gbV9rZXlQb2ludHMuc2l6ZSgpIC0gMSkp
CisgICAgICAgICAgICAmJiAoY2FsY01vZGUgIT0gQ2FsY01vZGVTcGxpbmUgfHwgKChtX2tleVNw
bGluZXMuc2l6ZSgpICYmIChtX2tleVNwbGluZXMuc2l6ZSgpID09IG1fdmFsdWVzLnNpemUoKSAt
IDEpKSB8fCBtX2tleVNwbGluZXMuc2l6ZSgpID09IG1fa2V5UG9pbnRzLnNpemUoKSAtIDEpKQog
ICAgICAgICAgICAgJiYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmtleVBvaW50c0F0dHIpIHx8
IChtX2tleVRpbWVzLnNpemUoKSA+IDEgJiYgbV9rZXlUaW1lcy5zaXplKCkgPT0gbV9rZXlQb2lu
dHMuc2l6ZSgpKSk7CiAgICAgICAgIGlmIChjYWxjTW9kZSA9PSBDYWxjTW9kZVBhY2VkICYmIG1f
YW5pbWF0aW9uVmFsaWQpCiAgICAgICAgICAgICBjYWxjdWxhdGVLZXlUaW1lc0ZvckNhbGNNb2Rl
UGFjZWQoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCShyZXZp
c2lvbiA1MDQzNykKKysrIFdlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODAsNyArMTgwLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggU1ZH
UHJlc2VydmVBc3BlY3RSYQogICAgIGlmIChhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJB
VElPX05PTkUpIHsKICAgICAgICAgdGVtcC5zY2FsZU5vblVuaWZvcm0ocGh5c1dpZHRoIC8gbG9n
aWNXaWR0aCwgcGh5c0hlaWdodCAvIGxvZ2ljSGVpZ2h0KTsKICAgICAgICAgdGVtcC50cmFuc2xh
dGUoLWxvZ2ljWCwgLWxvZ2ljWSk7Ci0gICAgfSBlbHNlIGlmICh2cGFyIDwgc3ZnYXIgJiYgKG1l
ZXRPclNsaWNlKCkgPT0gU1ZHX01FRVRPUlNMSUNFX01FRVQpIHx8IHZwYXIgPj0gc3ZnYXIgJiYg
KG1lZXRPclNsaWNlKCkgPT0gU1ZHX01FRVRPUlNMSUNFX1NMSUNFKSkgeworICAgIH0gZWxzZSBp
ZiAoKHZwYXIgPCBzdmdhciAmJiAobWVldE9yU2xpY2UoKSA9PSBTVkdfTUVFVE9SU0xJQ0VfTUVF
VCkpIHx8ICh2cGFyID49IHN2Z2FyICYmIChtZWV0T3JTbGljZSgpID09IFNWR19NRUVUT1JTTElD
RV9TTElDRSkpKSB7CiAgICAgICAgIHRlbXAuc2NhbGVOb25Vbmlmb3JtKHBoeXNIZWlnaHQgLyBs
b2dpY0hlaWdodCwgcGh5c0hlaWdodCAvIGxvZ2ljSGVpZ2h0KTsKIAogICAgICAgICBpZiAoYWxp
Z24oKSA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JTiB8fCBhbGlnbigpID09IFNW
R19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEIHx8IGFsaWduKCkgPT0gU1ZHX1BSRVNFUlZF
QVNQRUNUUkFUSU9fWE1JTllNQVgpCkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDUwNDM4KQorKysgV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDA5LTExLTAyICBM
YXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgZXhwbGljaXQgcGFyZW50aGVz
ZXMgdG8gc2lsZW5jZSBnY2MgNC40IC1XcGFyZW50aGVzZXMgd2FybmluZ3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMDQwCisKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTY3JvbGxp
bmcpOgorCiAyMDA5LTExLTAyICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9r
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcAkocmV2aXNpb24gNTA0MzcpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIxMCwxNiArMTIxMCwxNiBAQCBib29sIFFXZWJQYWdlUHJpdmF0ZTo6
aGFuZGxlU2Nyb2xsaW5nKFFLCiAgICAgICAgIGdyYW51bGFyaXR5ID0gU2Nyb2xsQnlQYWdlOwog
ICAgICAgICBkaXJlY3Rpb24gPSBTY3JvbGxEb3duOwogICAgIH0gZWxzZSBpZiAoZXYgPT0gUUtl
eVNlcXVlbmNlOjpNb3ZlVG9QcmV2aW91c1BhZ2UKLSAgICAgICAgICAgICAgIHx8IChldi0+a2V5
KCkgPT0gUXQ6OktleV9TcGFjZSkgJiYgKGV2LT5tb2RpZmllcnMoKSAmIFF0OjpTaGlmdE1vZGlm
aWVyKSkgeworICAgICAgICAgICAgICAgfHwgKChldi0+a2V5KCkgPT0gUXQ6OktleV9TcGFjZSkg
JiYgKGV2LT5tb2RpZmllcnMoKSAmIFF0OjpTaGlmdE1vZGlmaWVyKSkpIHsKICAgICAgICAgZ3Jh
bnVsYXJpdHkgPSBTY3JvbGxCeVBhZ2U7CiAgICAgICAgIGRpcmVjdGlvbiA9IFNjcm9sbFVwOwog
ICAgIH0gZWxzZQogI2VuZGlmIC8vIFFUX05PX1NIT1JUQ1VUCi0gICAgaWYgKGV2LT5rZXkoKSA9
PSBRdDo6S2V5X1VwICYmIGV2LT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIKKyAg
ICBpZiAoKGV2LT5rZXkoKSA9PSBRdDo6S2V5X1VwICYmIGV2LT5tb2RpZmllcnMoKSAmIFF0OjpD
b250cm9sTW9kaWZpZXIpCiAgICAgICAgICAgICAgICB8fCBldi0+a2V5KCkgPT0gUXQ6OktleV9I
b21lKSB7CiAgICAgICAgIGdyYW51bGFyaXR5ID0gU2Nyb2xsQnlEb2N1bWVudDsKICAgICAgICAg
ZGlyZWN0aW9uID0gU2Nyb2xsVXA7Ci0gICAgfSBlbHNlIGlmIChldi0+a2V5KCkgPT0gUXQ6Oktl
eV9Eb3duICYmIGV2LT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIKKyAgICB9IGVs
c2UgaWYgKChldi0+a2V5KCkgPT0gUXQ6OktleV9Eb3duICYmIGV2LT5tb2RpZmllcnMoKSAmIFF0
OjpDb250cm9sTW9kaWZpZXIpCiAgICAgICAgICAgICAgICB8fCBldi0+a2V5KCkgPT0gUXQ6Oktl
eV9FbmQpIHsKICAgICAgICAgZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeURvY3VtZW50OwogICAgICAg
ICBkaXJlY3Rpb24gPSBTY3JvbGxEb3duOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>