<?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>51784</bug_id>
          
          <creation_ts>2010-12-31 12:18:20 -0800</creation_ts>
          <short_desc>Some renaming and refactoring of form element code</short_desc>
          <delta_ts>2010-12-31 16:58:45 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>328210</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-31 12:18:20 -0800</bug_when>
    <thetext>Some renaming and refactoring of form element code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328220</commentid>
    <comment_count>1</comment_count>
      <attachid>77733</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-31 14:12:20 -0800</bug_when>
    <thetext>Created attachment 77733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328222</commentid>
    <comment_count>2</comment_count>
      <attachid>77733</attachid>
    <who name="">mitz</who>
    <bug_when>2010-12-31 14:26:10 -0800</bug_when>
    <thetext>Comment on attachment 77733
Patch

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

&gt; WebCore/html/HTMLFormElement.cpp:629
&gt; +    HTMLFormControlElement* aliasElement = elementForAlias(name);
&gt; +    if (aliasElement) {

I’d move the definition of aliasElement into the if statement, since it doesn’t seem to be used outside of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328223</commentid>
    <comment_count>3</comment_count>
      <attachid>77733</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-31 14:30:25 -0800</bug_when>
    <thetext>Comment on attachment 77733
Patch

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

A nice improvement.  Thanks.

&gt; WebCore/html/HTMLFormElement.cpp:667
&gt; +bool HTMLFormElement::autoComplete() const
&gt; +{
&gt; +    return !equalIgnoringCase(fastGetAttribute(autocompleteAttr), &quot;off&quot;);
&gt; +}

I take you don&apos;t think the caching is worthwhile.  Probably true.

&gt; WebCore/html/HTMLSelectElement.cpp:197
&gt; +    listItems()[listIndex]-&gt;remove(ec);

Woah, that works?  Cool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328229</commentid>
    <comment_count>4</comment_count>
      <attachid>77733</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-31 16:03:57 -0800</bug_when>
    <thetext>Comment on attachment 77733
Patch

Actually, that variable is used outside the if.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328232</commentid>
    <comment_count>5</comment_count>
      <attachid>77733</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-31 16:58:38 -0800</bug_when>
    <thetext>Comment on attachment 77733
Patch

Clearing flags on attachment: 77733

Committed r74841: &lt;http://trac.webkit.org/changeset/74841&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328233</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-31 16:58:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77733</attachid>
            <date>2010-12-31 14:12:20 -0800</date>
            <delta_ts>2010-12-31 16:58:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51784-20101231141219.patch</filename>
            <type>text/plain</type>
            <size>28172</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDgzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODAgQEAKKzIwMTAtMTItMzEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUg
cmVuYW1pbmcgYW5kIHJlZmFjdG9yaW5nIG9mIGZvcm0gZWxlbWVudCBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTc4NAorCisgICAgICAgICog
YmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmUpOiBDYWxsIG5ldyBvdmVybG9hZCBvZiBy
ZW1vdmUKKyAgICAgICAgZm9yIG9wdGlvbiBlbGVtZW50cyBpbnN0ZWFkIG9mIHB1dHRpbmcgdGhl
IGxvZ2ljIGluIHRoZSBiaW5kaW5nLgorCisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudDo6SFRNTEJ1dHRvbkVs
ZW1lbnQpOiBVcGRhdGVkIGZvciBuYW1lIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFJlbmFtZWQgYXJndW1lbnQgdG8K
KyAgICAgICAgImV2ZW50IiBpbnN0ZWFkIG9mICJldnQiLiBBbHNvIHVwZGF0ZWQgZm9yIG5hbWUg
Y2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Ojppc0FjdGl2YXRl
ZFN1Ym1pdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQ6OnNl
dEFjdGl2YXRlZFN1Ym1pdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJ1dHRvbkVs
ZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MQnV0dG9u
RWxlbWVudC5oOiBSZW5hbWVkIG1fYWN0aXZlU3VibWl0IHRvIG1faXNBY3RpdmF0ZWRTdWJtaXQK
KyAgICAgICAgdG8gbWF0Y2ggdGhlIGdldHRlciBmdW5jdGlvbiBuYW1lLiBUaGUgbmFtZSBzdGls
bCBkb2Vzbid0IHNlZW0gZ3JlYXQuCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OkhUTUxGb3JtRWxlbWVudCk6
IFVwZGF0ZWQgZm9yIG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxl
bWVudDo6fkhUTUxGb3JtRWxlbWVudCk6IFVzZSBhdXRvQ29tcGxldGUgZnVuY3Rpb24KKyAgICAg
ICAgaW5zdGVhZCBvZiBtX2F1dG9jb21wbGV0ZSBkYXRhIG1lbWJlci4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxGb3JtRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCk6IFVzZSBtX3dhc0RlbW90ZWQg
ZGF0YSBtZW1iZXIKKyAgICAgICAgaW5zdGVhZCBvZiBvdGhlcndpc2UtdW51c2VkIGlzRGVtb3Rl
ZCBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6c3VibWl0SW1w
bGljaXRseSk6IFVwZGF0ZWQgZm9yIG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtRWxlbWVudDo6dmFsaWRhdGVJbnRlcmFjdGl2ZWx5KTogUmVtb3ZlZCBjb2RlIHRvIGNs
ZWFyCisgICAgICAgIG1faW5zdWJtaXQuIFRoaXMgaXMgbm93IGhhbmRsZWQgYnkgdGhlIGNhbGxl
ciwgcHJlcGFyZUZvclN1Ym1pc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1l
bnQ6OnByZXBhcmVGb3JTdWJtaXNzaW9uKTogUmVuYW1lZC4gVXBkYXRlZCBmb3IKKyAgICAgICAg
bmFtZSBjaGFuZ2VzLiBNb3ZlZCBjb2RlIHRvIGNsZWFyIG1faXNTdWJtaXR0aW5nT3JQcmVwYXJp
bmdGb3JTdWJtaXNzaW9uCisgICAgICAgIGhlcmUgZnJvbSB2YWxpZGF0ZUludGVyYWN0aXZlbHku
IFJlbW92ZWQgdW5uZWVkZWQgY2hlY2sgb2YgbV9kb2luZ3N1Ym1pdAorICAgICAgICBib29sZWFu
IGJlZm9yZSBzZXR0aW5nIGl0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpz
dWJtaXQpOiBGYWN0b3JlZCB0aGlzIGZ1bmN0aW9uIGludG8gdHdvLgorICAgICAgICBPbmUgZm9y
IEphdmFTY3JpcHQgYW5kIG9uZSBmb3Igbm9uLUphdmFTY3JpcHQuIE5laXRoZXIgZnVuY3Rpb24g
bmVlZHMgYSBmcmFtZQorICAgICAgICBhcmd1bWVudCwgYmVjYXVzZSB0aGUgcXVlc3Rpb24gYmVp
bmcgYXNrZWQsIGFueVBhZ2VJc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSwKKyAgICAgICAgaXMgYSBx
dWVzdGlvbiBhc2tlZCBvZiBhbiBlbnRpcmUgcGFnZSBncm91cCwgbm90IGEgc3BlY2lmaWMgZnJh
bWUgb3IgcGFnZSwKKyAgICAgICAgc28gaXQncyBub3QgaW1wb3J0YW50IHdoaWNoIGlzIHRoZSBh
Y3RpdmUgZnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdEZy
b21KYXZhU2NyaXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6
OnJlc2V0KTogVXBkYXRlZCBmb3IgbmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IFJlbW92ZWQgY29kZSB0byBwYXJz
ZQorICAgICAgICBhY2NlcHRBdHRyIGFuZCBnb3QgcmlkIG9mIGNvZGUgdG8gc2V0IG1fYXV0b2Nv
bXBsZXRlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjplbGVtZW50Rm9yQWxp
YXMpOiBDaGFuZ2VkIHJldHVybiB0eXBlIHRvIGEgcmF3CisgICAgICAgIHBvaW50ZXIuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmdldE5hbWVkRWxlbWVudHMpOiBVcGRhdGVk
IHRvIHVzZSByYXcgcG9pbnRlcgorICAgICAgICBhbmQgdGhlIHZlY3RvciBmaW5kIGZ1bmN0aW9u
LiBBZGRlZCBhIEZJWE1FIGFib3V0IHRoZSBjb21tZW50LgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1FbGVtZW50Ojpkb2N1bWVudERpZEJlY29tZUFjdGl2ZSk6IFVzZSBhdXRvQ29tcGxldGUK
KyAgICAgICAgZnVuY3Rpb24gaW5zdGVhZCBvZiBtX2F1dG9jb21wbGV0ZSBkYXRhIG1lbWJlci4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9j
dW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6ZGlkTW92
ZVRvTmV3T3duZXJEb2N1bWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1F
bGVtZW50OjphdXRvQ29tcGxldGUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxl
bWVudC5oOiBBZGRlZCBhIEZJWE1FIGFib3V0IHJlbmFtaW5nIHRoZSBhdXRvQ29tcGxldGUKKyAg
ICAgICAgZnVuY3Rpb24uIFJlbmFtZWQgcHJlcGFyZVN1Ym1pdCB0byBwcmVwYXJlRm9yU3VibWlz
c2lvbi4gR290IHJpZCBvZiB0aGUKKyAgICAgICAgZnJhbWUgYXJndW1lbnQgZnJvbSB0aGUgc3Vi
bWl0IGZ1bmN0aW9uIGFuZCBhZGRlZCBhIG5ldyBzdWJtaXRGcm9tSmF2YVNjcmlwdAorICAgICAg
ICB2YXJpYW50LiBSZW1vdmVkIHRoZSB1bm5lZWRlZCBpc0RlbW90ZWQgZnVuY3Rpb24uIENoYW5n
ZWQgdGhlIHJldHVybiB0eXBlCisgICAgICAgIG9mIGVsZW1lbnRGb3JBbGlhcyB0byBhIHJhdyBw
b2ludGVyLiBSZW1vdmVkIG1fYXV0b2NvbXBsZXRlLiBSZW5hbWVkCisgICAgICAgIG1faW5zdWJt
aXQgdG8gbV9pc1N1Ym1pdHRpbmdPclByZXBhcmluZ0ZvclN1Ym1pc3Npb24sIG1fZG9pbmdzdWJt
aXQgdG8KKyAgICAgICAgbV9zaG91bGRTdWJtaXQsIG1faW5yZXNldCB0byBtX2luUmVzZXRGdW5j
dGlvbiwgbV9tYWxmb3JtZWQgdG8gbV93YXNNYWxmb3JtZWQsCisgICAgICAgIG1fZGVtb3RlZCB0
byBtX3dhc0RlbW90ZWQuIFVzZSBwbGFpbiBib29sIGluc3RlYWQgb2YgYml0ZmllbGRzLgorCisg
ICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsOiBVc2UgdGhlIGZ1bmN0aW9uIG5hbWVk
IHN1Ym1pdEZyb21KYXZhU2NyaXB0CisgICAgICAgIGluc3RlYWQgb2YgdXNpbmcgQ2FsbFdpdGg9
RHluYW1pY0ZyYW1lIGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCB0byBrbm93CisgICAgICAgIHdoYXQg
ZnJhbWUgaXMgY2FsbGluZy4gSWYgd2UgZGlkLCBpdCdzIG5vdCBjbGVhciB0aGF0IHRoZSAiZHlu
YW1pYyIKKyAgICAgICAgZnJhbWUgd291bGQgYmUgdGhlIHJpZ2h0IG9uZSBhbnl3YXkuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTZWxlY3RFbGVtZW50OjpyZW1vdmUpOiBBZGRlZCBhbiBvdmVybG9hZCB0aGF0IHRha2VzIGFu
IG9wdGlvbgorICAgICAgICBlbGVtZW50LCBzaW5jZSB0aGUgSmF2YVNjcmlwdCBiaW5kaW5nIHN1
cHBvcnRzIHRoaXMuCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOiBEaXR0by4K
KworICAgICAgICAqIGh0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQpOiBVcGRhdGVkIGZvciBuYW1l
IGNoYW5nZXMuCisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5oOiBEaXR0by4KKyAgICAg
ICAgKiBodG1sL1N1Ym1pdElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJtaXRJ
bnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQpOiBEaXR0by4KKwogMjAxMC0xMi0zMSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIGJhY2sgdGhlIGxhbmd1YWdlLgpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCShy
ZXZpc2lvbiA3NDgzNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVu
dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhl
eSBQcm9za3VyeWFrb3YgKGFwQHdlYmtpdC5vcmcpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMzYsMTAgKzM2
LDkgQEAgSlNWYWx1ZSBKU0hUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmUoRXhlYwogewogICAgIEhU
TUxTZWxlY3RFbGVtZW50JiBzZWxlY3QgPSAqc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQq
PihpbXBsKCkpOwogCi0gICAgLy8gd2Ugc3VwcG9ydCBib3RoIG9wdGlvbnMgaW5kZXggYW5kIG9w
dGlvbnMgb2JqZWN0cwotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChl
eGVjLT5hcmd1bWVudCgwKSk7Ci0gICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFt
ZShvcHRpb25UYWcpKQotICAgICAgICBzZWxlY3QucmVtb3ZlKHN0YXRpY19jYXN0PEhUTUxPcHRp
b25FbGVtZW50Kj4oZWxlbWVudCktPmluZGV4KCkpOworICAgIC8vIFRoZSByZW1vdmUgZnVuY3Rp
b24gY2FuIHRha2UgZWl0aGVyIGFuIG9wdGlvbiBvYmplY3Qgb3IgdGhlIGluZGV4IG9mIGFuIG9w
dGlvbi4KKyAgICBpZiAoSFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbiA9IHRvSFRNTE9wdGlvbkVs
ZW1lbnQoZXhlYy0+YXJndW1lbnQoMCkpKQorICAgICAgICBzZWxlY3QucmVtb3ZlKG9wdGlvbik7
CiAgICAgZWxzZQogICAgICAgICBzZWxlY3QucmVtb3ZlKGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50
MzIoZXhlYykpOwogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAJKHJldmlzaW9u
IDc0ODM1KQorKysgV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2
aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxl
ckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAg
ICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICogQ29w
eXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgKHNhbUB3ZWJraXQub3JnKQogICoKQEAgLTQz
LDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIGlubGluZSBIVE1MQnV0dG9u
RWxlbWVudDo6SFRNTEJ1dHRvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCiAgICAgOiBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKQogICAgICwgbV90eXBlKFNV
Qk1JVCkKLSAgICAsIG1fYWN0aXZlU3VibWl0KGZhbHNlKQorICAgICwgbV9pc0FjdGl2YXRlZFN1
Ym1pdChmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShidXR0b25UYWcpKTsKIH0KQEAg
LTk2LDQ3ICs5Niw0NSBAQCB2b2lkIEhUTUxCdXR0b25FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
CiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0
dHIpOwogfQogCi12b2lkIEhUTUxCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldnQpCit2b2lkIEhUTUxCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVudCkKIHsKLSAgICBpZiAoZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLkRPTUFj
dGl2YXRlRXZlbnQgJiYgIWRpc2FibGVkKCkpIHsKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkuRE9NQWN0aXZhdGVFdmVudCAmJiAhZGlzYWJsZWQoKSkgewogICAgICAgICBp
ZiAoZm9ybSgpICYmIG1fdHlwZSA9PSBTVUJNSVQpIHsKLSAgICAgICAgICAgIG1fYWN0aXZlU3Vi
bWl0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGZvcm0oKS0+cHJlcGFyZVN1Ym1pdChldnQpOwotICAg
ICAgICAgICAgbV9hY3RpdmVTdWJtaXQgPSBmYWxzZTsgLy8gaW4gY2FzZSB3ZSB3ZXJlIGNhbmNl
bGVkCisgICAgICAgICAgICBtX2lzQWN0aXZhdGVkU3VibWl0ID0gdHJ1ZTsKKyAgICAgICAgICAg
IGZvcm0oKS0+cHJlcGFyZUZvclN1Ym1pc3Npb24oZXZlbnQpOworICAgICAgICAgICAgbV9pc0Fj
dGl2YXRlZFN1Ym1pdCA9IGZhbHNlOyAvLyBEbyB0aGlzIGluIGNhc2Ugc3VibWlzc2lvbiB3YXMg
Y2FuY2VsZWQuCiAgICAgICAgIH0KICAgICAgICAgaWYgKGZvcm0oKSAmJiBtX3R5cGUgPT0gUkVT
RVQpCiAgICAgICAgICAgICBmb3JtKCktPnJlc2V0KCk7CiAgICAgfQogCi0gICAgaWYgKGV2dC0+
aXNLZXlib2FyZEV2ZW50KCkpIHsKLSAgICAgICAgaWYgKGV2dC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5rZXlkb3duRXZlbnQgJiYgc3RhdGljX2Nhc3Q8S2V5Ym9hcmRFdmVudCo+KGV2dCktPmtl
eUlkZW50aWZpZXIoKSA9PSAiVSswMDIwIikgeworICAgIGlmIChldmVudC0+aXNLZXlib2FyZEV2
ZW50KCkpIHsKKyAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRv
d25FdmVudCAmJiBzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50Kj4oZXZlbnQpLT5rZXlJZGVudGlm
aWVyKCkgPT0gIlUrMDAyMCIpIHsKICAgICAgICAgICAgIHNldEFjdGl2ZSh0cnVlLCB0cnVlKTsK
ICAgICAgICAgICAgIC8vIE5vIHNldERlZmF1bHRIYW5kbGVkKCkgLSBJRSBkaXNwYXRjaGVzIGEg
a2V5cHJlc3MgaW4gdGhpcyBjYXNlLgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgICAgIGlmIChldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkgewot
ICAgICAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50Kj4oZXZ0KS0+Y2hh
ckNvZGUoKSkgeworICAgICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5
cHJlc3NFdmVudCkgeworICAgICAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxLZXlib2FyZEV2
ZW50Kj4oZXZlbnQpLT5jaGFyQ29kZSgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSAnXHInOgot
ICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaFNpbXVsYXRlZENsaWNrKGV2dCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGV2dC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhldmVudCk7CisgICAgICAgICAgICAgICAgICAgIGV2
ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAgICAgY2FzZSAnICc6CiAgICAgICAgICAgICAgICAgICAgIC8vIFByZXZlbnQg
c2Nyb2xsaW5nIGRvd24gdGhlIHBhZ2UuCi0gICAgICAgICAgICAgICAgICAgIGV2dC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICBpZiAoZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXVwRXZlbnQgJiYg
c3RhdGljX2Nhc3Q8S2V5Ym9hcmRFdmVudCo+KGV2dCktPmtleUlkZW50aWZpZXIoKSA9PSAiVSsw
MDIwIikgeworICAgICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5dXBF
dmVudCAmJiBzdGF0aWNfY2FzdDxLZXlib2FyZEV2ZW50Kj4oZXZlbnQpLT5rZXlJZGVudGlmaWVy
KCkgPT0gIlUrMDAyMCIpIHsKICAgICAgICAgICAgIGlmIChhY3RpdmUoKSkKLSAgICAgICAgICAg
ICAgICBkaXNwYXRjaFNpbXVsYXRlZENsaWNrKGV2dCk7Ci0gICAgICAgICAgICBldnQtPnNldERl
ZmF1bHRIYW5kbGVkKCk7CisgICAgICAgICAgICAgICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhl
dmVudCk7CisgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZ0KTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAogYm9vbCBIVE1MQnV0dG9uRWxlbWVu
dDo6aXNTdWNjZXNzZnVsU3VibWl0QnV0dG9uKCkgY29uc3QKQEAgLTE0OCwxNyArMTQ2LDE3IEBA
IGJvb2wgSFRNTEJ1dHRvbkVsZW1lbnQ6OmlzU3VjY2Vzc2Z1bFN1Ym0KIAogYm9vbCBIVE1MQnV0
dG9uRWxlbWVudDo6aXNBY3RpdmF0ZWRTdWJtaXQoKSBjb25zdAogewotICAgIHJldHVybiBtX2Fj
dGl2ZVN1Ym1pdDsKKyAgICByZXR1cm4gbV9pc0FjdGl2YXRlZFN1Ym1pdDsKIH0KIAogdm9pZCBI
VE1MQnV0dG9uRWxlbWVudDo6c2V0QWN0aXZhdGVkU3VibWl0KGJvb2wgZmxhZykKIHsKLSAgICBt
X2FjdGl2ZVN1Ym1pdCA9IGZsYWc7CisgICAgbV9pc0FjdGl2YXRlZFN1Ym1pdCA9IGZsYWc7CiB9
CiAKIGJvb2wgSFRNTEJ1dHRvbkVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYg
Zm9ybURhdGEsIGJvb2wpCiB7Ci0gICAgaWYgKG1fdHlwZSAhPSBTVUJNSVQgfHwgbmFtZSgpLmlz
RW1wdHkoKSB8fCAhbV9hY3RpdmVTdWJtaXQpCisgICAgaWYgKG1fdHlwZSAhPSBTVUJNSVQgfHwg
bmFtZSgpLmlzRW1wdHkoKSB8fCAhbV9pc0FjdGl2YXRlZFN1Ym1pdCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGZvcm1EYXRhLmFwcGVuZERhdGEobmFtZSgpLCB2YWx1ZSgpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCShyZXZpc2lvbiA3NDgz
NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlY2FsY1dpbGxWYWxp
ZGF0ZSgpIGNvbnN0OwogCiAgICAgVHlwZSBtX3R5cGU7Ci0gICAgYm9vbCBtX2FjdGl2ZVN1Ym1p
dDsKKyAgICBib29sIG1faXNBY3RpdmF0ZWRTdWJtaXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHJldmlzaW9uIDc0ODM1KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDEyICs2OCwx
MSBAQCBIVE1MRm9ybUVsZW1lbnQ6OkhUTUxGb3JtRWxlbWVudChjb25zdCBRCiAgICAgLCBtX2Fz
c29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4KDApCiAgICAgLCBtX2Fzc29jaWF0ZWRFbGVtZW50
c0FmdGVySW5kZXgoMCkKICAgICAsIG1fd2FzVXNlclN1Ym1pdHRlZChmYWxzZSkKLSAgICAsIG1f
YXV0b2NvbXBsZXRlKHRydWUpCi0gICAgLCBtX2luc3VibWl0KGZhbHNlKQotICAgICwgbV9kb2lu
Z3N1Ym1pdChmYWxzZSkKLSAgICAsIG1faW5yZXNldChmYWxzZSkKLSAgICAsIG1fbWFsZm9ybWVk
KGZhbHNlKQotICAgICwgbV9kZW1vdGVkKGZhbHNlKQorICAgICwgbV9pc1N1Ym1pdHRpbmdPclBy
ZXBhcmluZ0ZvclN1Ym1pc3Npb24oZmFsc2UpCisgICAgLCBtX3Nob3VsZFN1Ym1pdChmYWxzZSkK
KyAgICAsIG1faXNJblJlc2V0RnVuY3Rpb24oZmFsc2UpCisgICAgLCBtX3dhc01hbGZvcm1lZChm
YWxzZSkKKyAgICAsIG1fd2FzRGVtb3RlZChmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShmb3JtVGFnKSk7CiB9CkBAIC05MCw3ICs4OSw3IEBAIFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVt
ZW50PiBIVE1MRm9ybUVsZW0KIAogSFRNTEZvcm1FbGVtZW50Ojp+SFRNTEZvcm1FbGVtZW50KCkK
IHsKLSAgICBpZiAoIW1fYXV0b2NvbXBsZXRlKQorICAgIGlmICghYXV0b0NvbXBsZXRlKCkpCiAg
ICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFj
a3ModGhpcyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hc3NvY2lhdGVkRWxl
bWVudHMuc2l6ZSgpOyArK2kpCkBAIC0xMDYsNyArMTA1LDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1l
bnQ6OmZvcm1Xb3VsZEhhdmVTZWN1cgogCiBib29sIEhUTUxGb3JtRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgaWYgKCFpc0RlbW90ZWQoKSkKKyAg
ICBpZiAoIW1fd2FzRGVtb3RlZCkKICAgICAgICAgcmV0dXJuIEhUTUxFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKHN0eWxlKTsKIAogICAgIENvbnRhaW5lck5vZGUqIG5vZGUgPSBwYXJlbnROb2Rl
KCk7CkBAIC0xOTIsNyArMTkxLDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdEltcGxp
Y2l0bHkoRQogICAgICAgICAgICAgKytzdWJtaXNzaW9uVHJpZ2dlckNvdW50OwogICAgIH0KICAg
ICBpZiAoZnJvbUltcGxpY2l0U3VibWlzc2lvblRyaWdnZXIgJiYgc3VibWlzc2lvblRyaWdnZXJD
b3VudCA9PSAxKQotICAgICAgICBwcmVwYXJlU3VibWl0KGV2ZW50KTsKKyAgICAgICAgcHJlcGFy
ZUZvclN1Ym1pc3Npb24oZXZlbnQpOwogfQogCiBzdGF0aWMgaW5saW5lIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQqIHN1Ym1pdEVsZW1lbnRGcm9tRXZlbnQoY29uc3QgRXZlbnQqIGV2ZW50KQpAQCAt
MjU4LDQyICsyNTcsNDggQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnZhbGlkYXRlSW50ZXJhY3Rp
dgogICAgICAgICAgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2Uo
SFRNTE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVz
c2FnZSwgMCwgZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgfQot
ICAgIG1faW5zdWJtaXQgPSBmYWxzZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSFRN
TEZvcm1FbGVtZW50OjpwcmVwYXJlU3VibWl0KEV2ZW50KiBldmVudCkKK2Jvb2wgSFRNTEZvcm1F
bGVtZW50OjpwcmVwYXJlRm9yU3VibWlzc2lvbihFdmVudCogZXZlbnQpCiB7CiAgICAgRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKLSAgICBpZiAobV9pbnN1Ym1pdCB8fCAhZnJh
bWUpCi0gICAgICAgIHJldHVybiBtX2luc3VibWl0OworICAgIGlmIChtX2lzU3VibWl0dGluZ09y
UHJlcGFyaW5nRm9yU3VibWlzc2lvbiB8fCAhZnJhbWUpCisgICAgICAgIHJldHVybiBtX2lzU3Vi
bWl0dGluZ09yUHJlcGFyaW5nRm9yU3VibWlzc2lvbjsKIAotICAgIG1faW5zdWJtaXQgPSB0cnVl
OwotICAgIG1fZG9pbmdzdWJtaXQgPSBmYWxzZTsKKyAgICBtX2lzU3VibWl0dGluZ09yUHJlcGFy
aW5nRm9yU3VibWlzc2lvbiA9IHRydWU7CisgICAgbV9zaG91bGRTdWJtaXQgPSBmYWxzZTsKIAog
ICAgIC8vIEludGVyYWN0aXZlIHZhbGlkYXRpb24gbXVzdCBiZSBkb25lIGJlZm9yZSBkaXNwYXRj
aGluZyB0aGUgc3VibWl0IGV2ZW50LgotICAgIGlmICghdmFsaWRhdGVJbnRlcmFjdGl2ZWx5KGV2
ZW50KSkKKyAgICBpZiAoIXZhbGlkYXRlSW50ZXJhY3RpdmVseShldmVudCkpIHsKKyAgICAgICAg
bV9pc1N1Ym1pdHRpbmdPclByZXBhcmluZ0ZvclN1Ym1pc3Npb24gPSBmYWxzZTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRp
c3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudCh0aGlzKTsKIAotICAgIGlmIChkaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN1Ym1pdEV2ZW50LCB0cnVlLCB0cnVlKSkgJiYg
IW1fZG9pbmdzdWJtaXQpCi0gICAgICAgIG1fZG9pbmdzdWJtaXQgPSB0cnVlOworICAgIGlmIChk
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN1Ym1pdEV2ZW50LCB0cnVl
LCB0cnVlKSkpCisgICAgICAgIG1fc2hvdWxkU3VibWl0ID0gdHJ1ZTsKIAotICAgIG1faW5zdWJt
aXQgPSBmYWxzZTsKKyAgICBtX2lzU3VibWl0dGluZ09yUHJlcGFyaW5nRm9yU3VibWlzc2lvbiA9
IGZhbHNlOwogCi0gICAgaWYgKG1fZG9pbmdzdWJtaXQpCisgICAgaWYgKG1fc2hvdWxkU3VibWl0
KQogICAgICAgICBzdWJtaXQoZXZlbnQsIHRydWUsIHRydWUsIE5vdFN1Ym1pdHRlZEJ5SmF2YVNj
cmlwdCk7CiAKLSAgICByZXR1cm4gbV9kb2luZ3N1Ym1pdDsKKyAgICByZXR1cm4gbV9zaG91bGRT
dWJtaXQ7Cit9CisKK3ZvaWQgSFRNTEZvcm1FbGVtZW50OjpzdWJtaXQoKQoreworICAgIHN1Ym1p
dCgwLCBmYWxzZSwgdHJ1ZSwgTm90U3VibWl0dGVkQnlKYXZhU2NyaXB0KTsKIH0KIAotdm9pZCBI
VE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdChGcmFtZSogamF2YVNjcmlwdEFjdGl2ZUZyYW1lKQordm9p
ZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdEZyb21KYXZhU2NyaXB0KCkKIHsKLSAgICBpZiAoamF2
YVNjcmlwdEFjdGl2ZUZyYW1lKQotICAgICAgICBzdWJtaXQoMCwgZmFsc2UsIGphdmFTY3JpcHRB
Y3RpdmVGcmFtZS0+c2NyaXB0KCktPmFueVBhZ2VJc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpLCBT
dWJtaXR0ZWRCeUphdmFTY3JpcHQpOwotICAgIGVsc2UKLSAgICAgICAgc3VibWl0KDAsIGZhbHNl
LCB0cnVlLCBOb3RTdWJtaXR0ZWRCeUphdmFTY3JpcHQpOworICAgIEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAg
IHN1Ym1pdCgwLCBmYWxzZSwgZnJhbWUtPnNjcmlwdCgpLT5hbnlQYWdlSXNQcm9jZXNzaW5nVXNl
ckdlc3R1cmUoKSwgU3VibWl0dGVkQnlKYXZhU2NyaXB0KTsKIH0KIAogdm9pZCBIVE1MRm9ybUVs
ZW1lbnQ6OnN1Ym1pdChFdmVudCogZXZlbnQsIGJvb2wgYWN0aXZhdGVTdWJtaXRCdXR0b24sIGJv
b2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBGb3JtU3VibWlzc2lvblRyaWdnZXIgZm9ybVN1Ym1p
c3Npb25UcmlnZ2VyKQpAQCAtMzAzLDEyICszMDgsMTIgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6
OnN1Ym1pdChFdmVudCogZXZlbgogICAgIGlmICghdmlldyB8fCAhZnJhbWUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChtX2luc3VibWl0KSB7Ci0gICAgICAgIG1fZG9pbmdzdWJtaXQgPSB0
cnVlOworICAgIGlmIChtX2lzU3VibWl0dGluZ09yUHJlcGFyaW5nRm9yU3VibWlzc2lvbikgewor
ICAgICAgICBtX3Nob3VsZFN1Ym1pdCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX2luc3VibWl0ID0gdHJ1ZTsKKyAgICBtX2lzU3VibWl0dGluZ09yUHJlcGFyaW5nRm9y
U3VibWlzc2lvbiA9IHRydWU7CiAgICAgbV93YXNVc2VyU3VibWl0dGVkID0gcHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlOwogCiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZmlyc3RTdWNjZXNzZnVs
U3VibWl0QnV0dG9uID0gMDsKQEAgLTMzNSwyMSArMzQwLDIwIEBAIHZvaWQgSFRNTEZvcm1FbGVt
ZW50OjpzdWJtaXQoRXZlbnQqIGV2ZW4KICAgICBpZiAobmVlZEJ1dHRvbkFjdGl2YXRpb24gJiYg
Zmlyc3RTdWNjZXNzZnVsU3VibWl0QnV0dG9uKQogICAgICAgICBmaXJzdFN1Y2Nlc3NmdWxTdWJt
aXRCdXR0b24tPnNldEFjdGl2YXRlZFN1Ym1pdChmYWxzZSk7CiAKLSAgICBtX2RvaW5nc3VibWl0
ID0gbV9pbnN1Ym1pdCA9IGZhbHNlOworICAgIG1fc2hvdWxkU3VibWl0ID0gZmFsc2U7CisgICAg
bV9pc1N1Ym1pdHRpbmdPclByZXBhcmluZ0ZvclN1Ym1pc3Npb24gPSBmYWxzZTsKIH0KIAogdm9p
ZCBIVE1MRm9ybUVsZW1lbnQ6OnJlc2V0KCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVu
dCgpLT5mcmFtZSgpOwotICAgIGlmIChtX2lucmVzZXQgfHwgIWZyYW1lKQorICAgIGlmIChtX2lz
SW5SZXNldEZ1bmN0aW9uIHx8ICFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnJl
c2V0ID0gdHJ1ZTsKKyAgICBtX2lzSW5SZXNldEZ1bmN0aW9uID0gdHJ1ZTsKIAotICAgIC8vICMj
IyBET00yIGxhYmVscyB0aGlzIGV2ZW50IGFzIG5vdCBjYW5jZWxhYmxlLCBob3dldmVyCi0gICAg
Ly8gY29tbW9uIGJyb3dzZXJzKCBzaWNrISApIGFsbG93IGl0IGJlIGNhbmNlbGxlZC4KICAgICBp
ZiAoIWRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVzZXRFdmVudCwg
dHJ1ZSwgdHJ1ZSkpKSB7Ci0gICAgICAgIG1faW5yZXNldCA9IGZhbHNlOworICAgICAgICBtX2lz
SW5SZXNldEZ1bmN0aW9uID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM1
OCw3ICszNjIsNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVzZXQoKQogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KG1fYXNzb2NpYXRlZEVsZW1lbnRz
W2ldKS0+cmVzZXQoKTsKICAgICB9CiAKLSAgICBtX2lucmVzZXQgPSBmYWxzZTsKKyAgICBtX2lz
SW5SZXNldEZ1bmN0aW9uID0gZmFsc2U7CiB9CiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCkBAIC0zNzIsMTQgKzM3Niw5IEBAIHZv
aWQgSFRNTEZvcm1FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnUKICAgICBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gZW5jdHlwZUF0dHIpCiAgICAgICAgIG1fYXR0cmlidXRlcy5wYXJzZUVuY29k
aW5nVHlwZShhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYWNj
ZXB0X2NoYXJzZXRBdHRyKQotICAgICAgICAvLyBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBjaGFy
c2V0cyB0aGUgc2VydmVyCi0gICAgICAgIC8vIGFjY2VwdHMgLSBzZWUgcmZjMjA0NQogICAgICAg
ICBtX2F0dHJpYnV0ZXMuc2V0QWNjZXB0Q2hhcnNldChhdHRyLT52YWx1ZSgpKTsKLSAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gYWNjZXB0QXR0cikgewotICAgICAgICAvLyBpZ25vcmUgdGhp
cyBvbmUgZm9yIHRoZSBtb21lbnQuLi4KLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBh
dXRvY29tcGxldGVBdHRyKSB7Ci0gICAgICAgIG1fYXV0b2NvbXBsZXRlID0gIWVxdWFsSWdub3Jp
bmdDYXNlKGF0dHItPnZhbHVlKCksICJvZmYiKTsKLSAgICAgICAgaWYgKCFtX2F1dG9jb21wbGV0
ZSkKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYXV0b2NvbXBsZXRlQXR0cikgeworICAg
ICAgICBpZiAoIWF1dG9Db21wbGV0ZSgpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVnaXN0
ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxs
YmFja3ModGhpcyk7CkBAIC02MDYsMTEgKzYwNSwxMSBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6
Y29sbGVjdFVuaGFuZGxlZEluCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ+IEhUTUxGb3JtRWxlbWVudDo6ZWxlbWVudEZvckFsaWFzKGNvbnN0IEF0b21pY1N0
cmluZyYgYWxpYXMpCitIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBIVE1MRm9ybUVsZW1lbnQ6OmVs
ZW1lbnRGb3JBbGlhcyhjb25zdCBBdG9taWNTdHJpbmcmIGFsaWFzKQogewogICAgIGlmIChhbGlh
cy5pc0VtcHR5KCkgfHwgIW1fZWxlbWVudEFsaWFzZXMpCiAgICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiBtX2VsZW1lbnRBbGlhc2VzLT5nZXQoYWxpYXMuaW1wbCgpKTsKKyAgICByZXR1cm4g
bV9lbGVtZW50QWxpYXNlcy0+Z2V0KGFsaWFzLmltcGwoKSkuZ2V0KCk7CiB9CiAKIHZvaWQgSFRN
TEZvcm1FbGVtZW50OjphZGRFbGVtZW50QWxpYXMoSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxl
bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBhbGlhcykKQEAgLTYyNiwyOCArNjI1LDIxIEBAIHZv
aWQgSFRNTEZvcm1FbGVtZW50OjpnZXROYW1lZEVsZW1lbnRzKGMKIHsKICAgICBlbGVtZW50cygp
LT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOwogCi0gICAgLy8gc2VlIGlmIHdlIGhhdmUg
c2VlbiBzb21ldGhpbmcgd2l0aCB0aGlzIG5hbWUgYmVmb3JlCi0gICAgUmVmUHRyPEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ+IGFsaWFzRWxlbTsKLSAgICBpZiAoKGFsaWFzRWxlbSA9IGVsZW1lbnRG
b3JBbGlhcyhuYW1lKSkpIHsKLSAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgbmFtZWRJdGVtcy5zaXplKCk7IG4rKykgewotICAgICAg
ICAgICAgaWYgKG5hbWVkSXRlbXNbbl0gPT0gYWxpYXNFbGVtLmdldCgpKSB7Ci0gICAgICAgICAg
ICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQorICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGFsaWFzRWxlbWVudCA9IGVsZW1lbnRGb3JB
bGlhcyhuYW1lKTsKKyAgICBpZiAoYWxpYXNFbGVtZW50KSB7CisgICAgICAgIGlmIChuYW1lZEl0
ZW1zLmZpbmQoYWxpYXNFbGVtZW50KSA9PSBub3RGb3VuZCkgeworICAgICAgICAgICAgLy8gV2Ug
aGF2ZSBzZWVuIGl0IGJlZm9yZSBidXQgaXQgaXMgZ29uZSBub3cuIFN0aWxsLCB3ZSBuZWVkIHRv
IHJldHVybiBpdC4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgY29tbWVudCBpcyBu
b3QgY2xlYXIgZW5vdWdoOyBpdCBkb2VzIG5vdCBzYXkgd2h5IHdlIG5lZWQgdG8gZG8gdGhpcy4K
KyAgICAgICAgICAgIG5hbWVkSXRlbXMuYXBwZW5kKGFsaWFzRWxlbWVudCk7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAgICAgIC8vIHdlIGhhdmUgc2VlbiBpdCBiZWZv
cmUgYnV0IGl0IGlzIGdvbmUgbm93LiBzdGlsbCwgd2UgbmVlZCB0byByZXR1cm4gaXQuCi0gICAg
ICAgICAgICBuYW1lZEl0ZW1zLmFwcGVuZChhbGlhc0VsZW0uZ2V0KCkpOwogICAgIH0KLSAgICAv
LyBuYW1lIGhhcyBiZWVuIGFjY2Vzc2VkLCByZW1lbWJlciBpdAotICAgIGlmIChuYW1lZEl0ZW1z
LnNpemUoKSAmJiBhbGlhc0VsZW0gIT0gbmFtZWRJdGVtcy5maXJzdCgpKQorICAgIGlmIChuYW1l
ZEl0ZW1zLnNpemUoKSAmJiBuYW1lZEl0ZW1zLmZpcnN0KCkgIT0gYWxpYXNFbGVtZW50KQogICAg
ICAgICBhZGRFbGVtZW50QWxpYXMoc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+
KG5hbWVkSXRlbXMuZmlyc3QoKS5nZXQoKSksIG5hbWUpOwogfQogCiB2b2lkIEhUTUxGb3JtRWxl
bWVudDo6ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKQogewotICAgIEFTU0VSVCghbV9hdXRvY29t
cGxldGUpOworICAgIEFTU0VSVCghYXV0b0NvbXBsZXRlKCkpOwogCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGlmIChtX2Fzc29jaWF0ZWRFbGVtZW50c1tpXS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKQEAg
LTY1NywxNiArNjQ5LDIxIEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50Ojpkb2N1bWVudERpZEJlY29t
ZUEKIAogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkK
IHsKLSAgICBpZiAoIW1fYXV0b2NvbXBsZXRlKQorICAgIGlmICghYXV0b0NvbXBsZXRlKCkpCiAg
ICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFj
a3ModGhpcyk7CiAgICAgSFRNTEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7
CiB9CiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkK
IHsKLSAgICBpZiAoIW1fYXV0b2NvbXBsZXRlKQorICAgIGlmICghYXV0b0NvbXBsZXRlKCkpCiAg
ICAgICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tz
KHRoaXMpOwogICAgIEhUTUxFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiB9
CiAKK2Jvb2wgSFRNTEZvcm1FbGVtZW50OjphdXRvQ29tcGxldGUoKSBjb25zdAoreworICAgIHJl
dHVybiAhZXF1YWxJZ25vcmluZ0Nhc2UoZmFzdEdldEF0dHJpYnV0ZShhdXRvY29tcGxldGVBdHRy
KSwgIm9mZiIpOworfQorCiB9IC8vIG5hbWVzcGFjZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
aAkocmV2aXNpb24gNzQ4MzUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTYxLDI1ICs2MSwyNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGVuY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmVuY29kaW5nVHlwZSgpOyB9CiAgICAg
dm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIHZhbHVlKSB7IHNldEVuY3R5cGUodmFsdWUp
OyB9CiAKLSAgICBib29sIGF1dG9Db21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b2NvbXBs
ZXRlOyB9CisgICAgLy8gRklYTUU6IFJlbmFtZSB0aGlzIGZ1bmN0aW9uIHRvIHNob3VsZEF1dG9j
b21wbGV0ZS4KKyAgICBib29sIGF1dG9Db21wbGV0ZSgpIGNvbnN0OwogCi0gICAgLy8gRklYTUU6
IFNob3VsZCByZW5hbWUgdGhlc2UgdHdvIGZ1bmN0aW9ucyB0byBzYXkgImZvcm0gY29udHJvbCIK
LSAgICAvLyBvciAiZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQiIGluc3RlYWQgb2YgImZvcm0gZWxl
bWVudCIuCisgICAgLy8gRklYTUU6IFNob3VsZCByZW5hbWUgdGhlc2UgdHdvIGZ1bmN0aW9ucyB0
byBzYXkgImZvcm0gY29udHJvbCIgb3IgImZvcm0tYXNzb2NpYXRlZCBlbGVtZW50IiBpbnN0ZWFk
IG9mICJmb3JtIGVsZW1lbnQiLgogICAgIHZvaWQgcmVnaXN0ZXJGb3JtRWxlbWVudChGb3JtQXNz
b2NpYXRlZEVsZW1lbnQqKTsKICAgICB2b2lkIHJlbW92ZUZvcm1FbGVtZW50KEZvcm1Bc3NvY2lh
dGVkRWxlbWVudCopOworCiAgICAgdm9pZCByZWdpc3RlckltZ0VsZW1lbnQoSFRNTEltYWdlRWxl
bWVudCopOwogICAgIHZvaWQgcmVtb3ZlSW1nRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50Kik7CiAK
LSAgICBib29sIHByZXBhcmVTdWJtaXQoRXZlbnQqKTsKLSAgICB2b2lkIHN1Ym1pdChGcmFtZSog
amF2YVNjcmlwdEFjdGl2ZUZyYW1lID0gMCk7CisgICAgYm9vbCBwcmVwYXJlRm9yU3VibWlzc2lv
bihFdmVudCopOworICAgIHZvaWQgc3VibWl0KCk7CisgICAgdm9pZCBzdWJtaXRGcm9tSmF2YVNj
cmlwdCgpOwogICAgIHZvaWQgcmVzZXQoKTsKIAogICAgIC8vIFVzZWQgdG8gaW5kaWNhdGUgYSBt
YWxmb3JtZWQgc3RhdGUgdG8ga2VlcCBmcm9tIGFwcGx5aW5nIHRoZSBib3R0b20gbWFyZ2luIG9m
IHRoZSBmb3JtLgotICAgIHZvaWQgc2V0TWFsZm9ybWVkKGJvb2wgbWFsZm9ybWVkKSB7IG1fbWFs
Zm9ybWVkID0gbWFsZm9ybWVkOyB9Ci0gICAgYm9vbCBpc01hbGZvcm1lZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFsZm9ybWVkOyB9CisgICAgLy8gRklYTUU6IFdvdWxkIHByb2JhYmx5IGJlIGJldHRl
ciB0byBjYWxsIHRoaXMgd2FzVW5jbG9zZWQ7IHRoYXQncyBtb3JlIHNwZWNpZmljLgorICAgIHZv
aWQgc2V0TWFsZm9ybWVkKGJvb2wgbWFsZm9ybWVkKSB7IG1fd2FzTWFsZm9ybWVkID0gbWFsZm9y
bWVkOyB9CisgICAgYm9vbCBpc01hbGZvcm1lZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzTWFsZm9y
bWVkOyB9CiAKLSAgICB2b2lkIHNldERlbW90ZWQoYm9vbCBkZW1vdGVkKSB7IG1fZGVtb3RlZCA9
IGRlbW90ZWQ7IH0KLSAgICBib29sIGlzRGVtb3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVtb3Rl
ZDsgfQorICAgIHZvaWQgc2V0RGVtb3RlZChib29sIGRlbW90ZWQpIHsgbV93YXNEZW1vdGVkID0g
ZGVtb3RlZDsgfQogCiAgICAgdm9pZCBzdWJtaXRJbXBsaWNpdGx5KEV2ZW50KiwgYm9vbCBmcm9t
SW1wbGljaXRTdWJtaXNzaW9uVHJpZ2dlcik7CiAgICAgYm9vbCBmb3JtV291bGRIYXZlU2VjdXJl
U3VibWlzc2lvbihjb25zdCBTdHJpbmcmIHVybCk7CkBAIC0xMDUsNyArMTA3LDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBjaGVja1ZhbGlkaXR5KCk7CiAKLSAgICBQYXNzUmVmUHRyPEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ+IGVsZW1lbnRGb3JBbGlhcyhjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAg
ICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlbGVtZW50Rm9yQWxpYXMoY29uc3QgQXRvbWljU3Ry
aW5nJik7CiAgICAgdm9pZCBhZGRFbGVtZW50QWxpYXMoSFRNTEZvcm1Db250cm9sRWxlbWVudCos
IGNvbnN0IEF0b21pY1N0cmluZyYgYWxpYXMpOwogCiAgICAgQ2hlY2tlZFJhZGlvQnV0dG9ucyYg
Y2hlY2tlZFJhZGlvQnV0dG9ucygpIHsgcmV0dXJuIG1fY2hlY2tlZFJhZGlvQnV0dG9uczsgfQpA
QCAtMTM0LDggKzEzNiwxMCBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgZm9ybUVsZW1lbnRJ
bmRleFdpdGhGb3JtQXR0cmlidXRlKEVsZW1lbnQqKTsKICAgICB1bnNpZ25lZCBmb3JtRWxlbWVu
dEluZGV4KEZvcm1Bc3NvY2lhdGVkRWxlbWVudCopOwotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGUgc3VibWlzc2lvbiBzaG91bGQgYmUgcHJvY2VlZGVkLgorCisgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoZSBzdWJtaXNzaW9uIHNob3VsZCBwcm9jZWVkLgogICAgIGJvb2wgdmFsaWRhdGVJbnRl
cmFjdGl2ZWx5KEV2ZW50Kik7CisKICAgICAvLyBWYWxpZGF0ZXMgZWFjaCBvZiB0aGUgY29udHJv
bHMsIGFuZCBzdG9yZXMgY29udHJvbHMgb2Ygd2hpY2ggJ2ludmFsaWQnCiAgICAgLy8gZXZlbnQg
d2FzIG5vdCBjYW5jZWxlZCB0byB0aGUgc3BlY2lmaWVkIHZlY3Rvci4KICAgICB2b2lkIGNvbGxl
Y3RVbmhhbmRsZWRJbnZhbGlkQ29udHJvbHMoVmVjdG9yPFJlZlB0cjxGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQ+ID4mKTsKQEAgLTE1NiwxMyArMTYwLDE0IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPEhU
TUxJbWFnZUVsZW1lbnQqPiBtX2ltYWdlRWxlbWVudHM7CiAKICAgICBib29sIG1fd2FzVXNlclN1
Ym1pdHRlZDsKKyAgICBib29sIG1faXNTdWJtaXR0aW5nT3JQcmVwYXJpbmdGb3JTdWJtaXNzaW9u
OworICAgIGJvb2wgbV9zaG91bGRTdWJtaXQ7CisKKyAgICBib29sIG1faXNJblJlc2V0RnVuY3Rp
b247CisKKyAgICBib29sIG1fd2FzTWFsZm9ybWVkOworICAgIGJvb2wgbV93YXNEZW1vdGVkOwog
Ci0gICAgYm9vbCBtX2F1dG9jb21wbGV0ZSA6IDE7Ci0gICAgYm9vbCBtX2luc3VibWl0IDogMTsK
LSAgICBib29sIG1fZG9pbmdzdWJtaXQgOiAxOwotICAgIGJvb2wgbV9pbnJlc2V0IDogMTsKLSAg
ICBib29sIG1fbWFsZm9ybWVkIDogMTsKLSAgICBib29sIG1fZGVtb3RlZCA6IDE7CiAgICAgQXRv
bWljU3RyaW5nIG1fbmFtZTsKIH07CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCShy
ZXZpc2lvbiA3NDgzNSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwxMyArMzEsMTggQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRy
aWJ1dGUgW1JlZmxlY3RdIGJvb2xlYW4gbm9WYWxpZGF0ZTsKICAgICAgICAgYXR0cmlidXRlIFtS
ZWZsZWN0PWFjY2VwdF9jaGFyc2V0XSBET01TdHJpbmcgYWNjZXB0Q2hhcnNldDsKICAgICAgICAg
YXR0cmlidXRlIFtSZWZsZWN0LCBVUkxdIERPTVN0cmluZyBhY3Rpb247Ci0gICAgICAgIGF0dHJp
YnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBlbmNvZGluZzsgIC8qIE5l
dHNjYXBlL0ZpcmVmb3ggbGVnYWN5IGF0dHJpYnV0ZS4gU2FtZSBhcyBlbmN0eXBlLiAqLworICAg
ICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgZW5jb2Rp
bmc7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyBlbmN0eXBlOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBtZXRob2Q7
CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHRhcmdldDsKICAgICAgICAg
Ci0gICAgICAgIFtDYWxsV2l0aD1EeW5hbWljRnJhbWVdIHZvaWQgc3VibWl0KCk7CisjaWYgZGVm
aW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCisgICAgICAg
IFtJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uPXN1Ym1pdEZyb21KYXZhU2NyaXB0XSB2b2lkIHN1Ym1p
dCgpOworI2Vsc2UKKyAgICAgICAgdm9pZCBzdWJtaXQoKTsKKyNlbmRpZgogICAgICAgICB2b2lk
IHJlc2V0KCk7CiAgICAgICAgIGJvb2xlYW4gY2hlY2tWYWxpZGl0eSgpOwogICAgIH07CisKIH0K
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gNzQ4MzUpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYs
NyArMTc2LDcgQEAgdW5zaWduZWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omxlbmd0aCgpIGNvbgogICAg
IHJldHVybiBTZWxlY3RFbGVtZW50OjpvcHRpb25Db3VudChtX2RhdGEsIHRoaXMpOwogfQogCi12
b2lkIEhUTUxTZWxlY3RFbGVtZW50OjphZGQoSFRNTEVsZW1lbnQgKmVsZW1lbnQsIEhUTUxFbGVt
ZW50ICpiZWZvcmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6
YWRkKEhUTUxFbGVtZW50KiBlbGVtZW50LCBIVE1MRWxlbWVudCogYmVmb3JlLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHByb3RlY3ROZXdDaGlsZChlbGVt
ZW50KTsgLy8gbWFrZSBzdXJlIHRoZSBlbGVtZW50IGlzIHJlZidkIGFuZCBkZXJlZidkIHNvIHdl
IGRvbid0IGxlYWsgaXQKIApAQCAtMTg3LDE3ICsxODcsMjMgQEAgdm9pZCBIVE1MU2VsZWN0RWxl
bWVudDo6YWRkKEhUTUxFbGVtZW50IAogICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwogfQog
Ci12b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmUoaW50IGluZGV4KQordm9pZCBIVE1MU2Vs
ZWN0RWxlbWVudDo6cmVtb3ZlKGludCBvcHRpb25JbmRleCkKIHsKLSAgICBpbnQgbGlzdEluZGV4
ID0gb3B0aW9uVG9MaXN0SW5kZXgoaW5kZXgpOworICAgIGludCBsaXN0SW5kZXggPSBvcHRpb25U
b0xpc3RJbmRleChvcHRpb25JbmRleCk7CiAgICAgaWYgKGxpc3RJbmRleCA8IDApCiAgICAgICAg
IHJldHVybjsKIAotICAgIEVsZW1lbnQqIGl0ZW0gPSBsaXN0SXRlbXMoKVtsaXN0SW5kZXhdOwot
ICAgIEFTU0VSVChpdGVtLT5wYXJlbnROb2RlKCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0g
ICAgaXRlbS0+cGFyZW50Tm9kZSgpLT5yZW1vdmVDaGlsZChpdGVtLCBlYyk7Ci0gICAgc2V0TmVl
ZHNWYWxpZGl0eUNoZWNrKCk7CisgICAgbGlzdEl0ZW1zKClbbGlzdEluZGV4XS0+cmVtb3ZlKGVj
KTsKK30KKwordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlKEhUTUxPcHRpb25FbGVtZW50
KiBvcHRpb24pCit7CisgICAgaWYgKG9wdGlvbi0+b3duZXJTZWxlY3RFbGVtZW50KCkgIT0gdGhp
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBvcHRpb24t
PnJlbW92ZShlYyk7CiB9CiAKIFN0cmluZyBIVE1MU2VsZWN0RWxlbWVudDo6dmFsdWUoKQpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgJKHJldmlzaW9uIDc0ODM1KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgaW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc2l6
ZSgpOyB9CiAgICAgdmlydHVhbCBib29sIG11bHRpcGxlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
Lm11bHRpcGxlKCk7IH0KIAotICAgIHZvaWQgYWRkKEhUTUxFbGVtZW50KiBlbGVtZW50LCBIVE1M
RWxlbWVudCogYmVmb3JlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhZGQoSFRNTEVsZW1l
bnQqLCBIVE1MRWxlbWVudCogYmVmb3JlRWxlbWVudCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZv
aWQgcmVtb3ZlKGludCBpbmRleCk7CisgICAgdm9pZCByZW1vdmUoSFRNTE9wdGlvbkVsZW1lbnQq
KTsKIAogICAgIFN0cmluZyB2YWx1ZSgpOwogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5n
Jik7CkluZGV4OiBXZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAJKHJldmlzaW9uIDc0ODM1KQorKysgV2Vi
Q29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMs
NyBAQCB2b2lkIEltYWdlSW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2CiAgICAgICAgIG1f
Y2xpY2tMb2NhdGlvbiA9IEludFBvaW50KG1vdXNlRXZlbnQtPm9mZnNldFgoKSwgbW91c2VFdmVu
dC0+b2Zmc2V0WSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9jbGlja0xvY2F0aW9uID0gSW50
UG9pbnQoKTsKLSAgICBlbGVtZW50LT5mb3JtKCktPnByZXBhcmVTdWJtaXQoZXZlbnQpOyAvLyBF
dmVudCBoYW5kbGVycyBjYW4gcnVuLgorICAgIGVsZW1lbnQtPmZvcm0oKS0+cHJlcGFyZUZvclN1
Ym1pc3Npb24oZXZlbnQpOyAvLyBFdmVudCBoYW5kbGVycyBjYW4gcnVuLgogICAgIGVsZW1lbnQt
PnNldEFjdGl2YXRlZFN1Ym1pdChmYWxzZSk7CiAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVk
KCk7CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaAkocmV2aXNpb24gNzQ4MzUpCisrKyBXZWJD
b3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZURP
TUFjdGl2YXRlRXZlbnQoRXZlbnQqKTsKIAotICAgIC8vIFRoaXMgaXMgdmFsaWQgb25seSBkdXJp
bmcgSFRNTEZvcm1FbGVtZW50OjpwcmVwYXJlU3VibWl0KCkuCisgICAgLy8gVGhpcyBpcyB2YWxp
ZCBvbmx5IGR1cmluZyBIVE1MRm9ybUVsZW1lbnQ6OnByZXBhcmVGb3JTdWJtaXNzaW9uKCkuCiAg
ICAgSW50UG9pbnQgbV9jbGlja0xvY2F0aW9uOwogfTsKIApJbmRleDogV2ViQ29yZS9odG1sL1N1
Ym1pdElucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL1N1Ym1pdElucHV0
VHlwZS5jcHAJKHJldmlzaW9uIDc0ODM1KQorKysgV2ViQ29yZS9odG1sL1N1Ym1pdElucHV0VHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBTdWJtaXRJbnB1dFR5
cGU6OmhhbmRsZURPTUFjdGl2YXRlRQogICAgIGlmIChlbGVtZW50LT5kaXNhYmxlZCgpIHx8ICFl
bGVtZW50LT5mb3JtKCkpCiAgICAgICAgIHJldHVybjsKICAgICBlbGVtZW50LT5zZXRBY3RpdmF0
ZWRTdWJtaXQodHJ1ZSk7Ci0gICAgZWxlbWVudC0+Zm9ybSgpLT5wcmVwYXJlU3VibWl0KGV2ZW50
KTsgLy8gRXZlbnQgaGFuZGxlcnMgY2FuIHJ1bi4KKyAgICBlbGVtZW50LT5mb3JtKCktPnByZXBh
cmVGb3JTdWJtaXNzaW9uKGV2ZW50KTsgLy8gRXZlbnQgaGFuZGxlcnMgY2FuIHJ1bi4KICAgICBl
bGVtZW50LT5zZXRBY3RpdmF0ZWRTdWJtaXQoZmFsc2UpOwogICAgIGV2ZW50LT5zZXREZWZhdWx0
SGFuZGxlZCgpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>