<?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>69812</bug_id>
          
          <creation_ts>2011-10-10 19:29:16 -0700</creation_ts>
          <short_desc>Move m_listItems and m_recalcListItems from SelectElementData to HTMLSelectElement</short_desc>
          <delta_ts>2011-10-11 16:57:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>69755</dependson>
    
    <dependson>69815</dependson>
          <blocked>69828</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>481395</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-10 19:29:16 -0700</bug_when>
    <thetext>Move m_listItems and m_recalcListItems from SelectElementData to HTMLSelectElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481396</commentid>
    <comment_count>1</comment_count>
      <attachid>110459</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-10 19:30:38 -0700</bug_when>
    <thetext>Created attachment 110459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481399</commentid>
    <comment_count>2</comment_count>
      <attachid>110459</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-10 19:36:46 -0700</bug_when>
    <thetext>Comment on attachment 110459
Patch

Attachment 110459 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10030195</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481400</commentid>
    <comment_count>3</comment_count>
      <attachid>110459</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-10-10 19:37:56 -0700</bug_when>
    <thetext>Comment on attachment 110459
Patch

Attachment 110459 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10028167</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481401</commentid>
    <comment_count>4</comment_count>
      <attachid>110459</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-10 19:38:14 -0700</bug_when>
    <thetext>Comment on attachment 110459
Patch

Attachment 110459 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10028169</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481404</commentid>
    <comment_count>5</comment_count>
      <attachid>110462</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-10 19:47:49 -0700</bug_when>
    <thetext>Created attachment 110462
Patch 2

Fix Release build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481409</commentid>
    <comment_count>6</comment_count>
      <attachid>110462</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-10 20:07:47 -0700</bug_when>
    <thetext>Comment on attachment 110462
Patch 2

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

&gt; Source/WebCore/html/HTMLSelectElement.cpp:645
&gt; +void HTMLSelectElement::checkListItems() const
&gt; +{

It&apos;s unfortunate that we&apos;ll end up calling this function even in release builds :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481426</commentid>
    <comment_count>7</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-10 21:16:05 -0700</bug_when>
    <thetext>Committed r97121: &lt;http://trac.webkit.org/changeset/97121&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481427</commentid>
    <comment_count>8</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-10 21:17:14 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Committed r97121: &lt;http://trac.webkit.org/changeset/97121&gt;

Landed with an HTMLSelectElementWin.cpp build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481440</commentid>
    <comment_count>9</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-10 21:58:53 -0700</bug_when>
    <thetext>http://build.webkit.org/results/Chromium%20Linux%20Release%20(Tests)/r97121%20(24480)/results.html

I rolled r97121 out because of regressions.  I should have waited until cr-linux EWS...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481459</commentid>
    <comment_count>10</comment_count>
      <attachid>110462</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-10 22:57:58 -0700</bug_when>
    <thetext>Comment on attachment 110462
Patch 2

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

&gt; Source/WebCore/html/HTMLSelectElement.cpp:656
&gt; +        const_cast&lt;HTMLSelectElement*&gt;(this)-&gt;recalcListItemsInternal(false);

The function argument should not be &apos;false.&apos;
The original code didn&apos;t have the bool argument, and the default value is &apos;true.&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481460</commentid>
    <comment_count>11</comment_count>
      <attachid>110478</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-10 22:58:26 -0700</bug_when>
    <thetext>Created attachment 110478
Patch for landing

Fix listItems() error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481511</commentid>
    <comment_count>12</comment_count>
      <attachid>110478</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-11 01:44:49 -0700</bug_when>
    <thetext>Comment on attachment 110478
Patch for landing

Clearing flags on attachment: 110478

Committed r97135: &lt;http://trac.webkit.org/changeset/97135&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481512</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-11 01:44:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482047</commentid>
    <comment_count>14</comment_count>
      <attachid>110462</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-11 16:57:37 -0700</bug_when>
    <thetext>Comment on attachment 110462
Patch 2

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

&gt;&gt; Source/WebCore/html/HTMLSelectElement.cpp:645
&gt;&gt; +{
&gt; 
&gt; It&apos;s unfortunate that we&apos;ll end up calling this function even in release builds :(

The simple way to avoid that is to put an empty inline version of this in the header. Or to make sure this is called only in this file and mark it inline in here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110459</attachid>
            <date>2011-10-10 19:30:38 -0700</date>
            <delta_ts>2011-10-10 19:44:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69812-20111011113037.patch</filename>
            <type>text/plain</type>
            <size>25112</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcxMTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZmFiYWU5MmI5NjI3NDkx
YWYzNDY1MjYyZjc5ZjhkMWMyNThiMDIzLi45YzczOTYzY2Q4ZjYwN2YwZGQyNjVjYjY0ZTU0NDE3
MWE4ZWNmNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTEtMTAtMTAgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgbV9saXN0SXRlbXMg
YW5kIG1fcmVjYWxjTGlzdEl0ZW1zIGZyb20gU2VsZWN0RWxlbWVudERhdGEgdG8gSFRNTFNlbGVj
dEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY5ODEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZSBTZWxlY3RFbGVtZW50RGF0YTo6bV9yZWNhbGNMaXN0SXRlbXMsCisgICAgICAgIFNlbGVj
dEVsZW1lbnREYXRhOjptX2xpc3RJdGVtcywgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIG9mCisgICAg
ICAgIFNlbGVjdEVsZW1lbnREYXRhIGNsYXNzIHRvIEhUTUxTZWxlY3RFbGVtZW50LgorCisgICAg
ICAgIE5vbi1jb25zdCBsaXN0SXRlbXMoKSB3YXMgcmVtb3ZlZCBiZWNhdXNlIGl0IGlzIHVzZWQg
b25seSBpbgorICAgICAgICByZWNhbGNMaXN0SXRlbXNJbnRlcm5hbCgpIGFuZCBpdCBjYW4gYWNj
ZXNzIG1fbGlzdEl0ZW1zIGRpcmV0bHkuCisKKyAgICAgICAgU3RhdGljIHJlY2FsY0xpc3RJdGVt
cygpIGlzIGNoYW5nZWQgdG8gbm9uLXN0YXRpYywgYW5kIHJlbmFtZWQgdG8KKyAgICAgICAgcmVj
YWxjTGlzdEl0ZW1zSW50ZXJuYWwoKSBpbiBvcmRlciB0byBhdm9pZCBjb25mdXNpb24gd2l0aCB0
aGUKKyAgICAgICAgZXhpc3RpbmcgcmVjYWxjTGlzdEl0ZW1zKCkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBqdXN0IGEgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBkb20vU2VsZWN0RWxlbWVu
dC5jcHA6CisgICAgICAgIE1vdmUgY2hlY2tMaXN0SXRlbXMoKSBhbmQgbGlzdEl0ZW1zKCkgdG8g
SFRNTFNlbGVjdEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RFbGVtZW50RGF0YTo6
U2VsZWN0RWxlbWVudERhdGEpOgorICAgICAgICBSZW1vdmUgSW5pdGlhbGl6YXRpb24gb2YgbV9y
ZWNhbGNMaXN0SXRlbXMuCisgICAgICAgICogZG9tL1NlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAg
TW92ZSBtX3JlY2FsY0xpc3RJdGVtcywgbV9saXN0SXRlbXMsIGFuZCByZWxhdGVkIGZ1bmN0aW9u
cyB0byBIVE1MU2VsZWN0RWxlbWVudC4KKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpIVE1MU2VsZWN0RWxl
bWVudCk6CisgICAgICAgIEluaXRpYWxpemVzIG1fcmVjYWxjTGlzdEl0ZW1zLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyk6CisgICAgICAgIFJl
bmFtZSB0aGUgc3RhdGljIHJlY2FsY0xpc3RJdGVtcygpIHRvIHJlY2FsY0xpc3RJdGVtc0ludGVy
bmFsKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0
ZW1zSWZOZWVkZWQpOgorICAgICAgICBVc2UgbV9yZWNhbGNMaXN0SXRlbXMgZGlyZWN0bHkuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bmV4dFNlbGVjdGFibGVMaXN0SW5k
ZXgpOgorICAgICAgICBVcGRhdGUgYSBsaXN0SXRlbXMoKSBjYWxsc2l0ZS4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgpOiBk
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpmaXJzdFNlbGVjdGFi
bGVMaXN0SW5kZXgpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
OjpsYXN0U2VsZWN0YWJsZUxpc3RJbmRleCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFNlbGVjdEVsZW1lbnQ6Om5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkpOiBkaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzYXZlTGFzdFNlbGVjdGlvbik6
IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldEFjdGl2ZVNl
bGVjdGlvbkFuY2hvckluZGV4KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6dXBkYXRlTGlzdEJveFNlbGVjdGlvbik6IGRpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hPbkNoYW5nZSk6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmNoZWNrTGlzdEl0ZW1zKToKKyAgICAgICAgTW92
ZWQgZnJvbSBTZWxlY3RFbGVtZW50RGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RF
bGVtZW50OjpsaXN0SXRlbXMpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RF
bGVtZW50OjpzZXRSZWNhbGNMaXN0SXRlbXMpOgorICAgICAgICBVc2UgbV9yZWNhbGNMaXN0SXRl
bXMgZGlyZWN0bHkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxj
TGlzdEl0ZW1zSW50ZXJuYWwpOgorICAgICAgICAtIE1ha2UgdGhpcyBub24tc3RhdGljLgorICAg
ICAgICAtIFJlbmFtZWQgZnJvbSByZWNhbGNMaXN0SXRlbXMoKSB0byBhdm9pZCBjb25maWxjdCB3
aXRoIGFub3RoZXIgcmVjYWxjTGlzdEl0ZW1zKCkuCisgICAgICAgIC0gVXNlIG1fcmVjYWxjTGlz
dEl0ZW1zIGFuZCBtX2xpc3RJdGVtcyBkaXJlY3RseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
ZWxlY3RFbGVtZW50OjpzZWxlY3RlZEluZGV4KToKKyAgICAgICAgVXBkYXRlIGEgbGlzdEl0ZW1z
KCkgY2FsbHNpdGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0U2Vs
ZWN0ZWRJbmRleEludGVybmFsKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6b3B0aW9uVG9MaXN0SW5kZXgpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTZWxlY3RFbGVtZW50OjpsaXN0VG9PcHRpb25JbmRleCk6IGRpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmRlc2VsZWN0SXRlbXNXaXRob3V0VmFsaWRhdGlvbik6
IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNhdmVGb3JtQ29u
dHJvbFN0YXRlKToKKyAgICAgICAgVXBkYXRlIGNhbGxzaXRlcyBvZiBsaXN0SXRlbXMoKSBhbmQg
cmVjYWxjTGlzdEl0ZW1zKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
cmVzdG9yZUZvcm1Db250cm9sU3RhdGUpOgorICAgICAgICBVcGRhdGUgYSBsaXN0SXRlbXMoKSBj
YWxsc2l0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjphcHBlbmRGb3Jt
RGF0YSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlc2V0
KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3RE
ZWZhdWx0RXZlbnRIYW5kbGVyKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6dXBkYXRlU2VsZWN0ZWRTdGF0ZSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKTogZGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bGFzdFNlbGVjdGVkTGlzdEluZGV4
KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dHlwZUFoZWFk
RmluZCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omluc2Vy
dGVkSW50b1RyZWUpOgorICAgICAgICBVcGRhdGUgYSByZWNhbGNMaXN0SXRlbXMoKSBjYWxsc2l0
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjphY2Nlc3NLZXlTZXRTZWxl
Y3RlZEluZGV4KToKKyAgICAgICAgVXBkYXRlIGEgbGlzdEl0ZW1zKCkgY2FsbHNpdGUuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bGVuZ3RoKTogZGl0dG8uCisgICAgICAg
ICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICBNb3ZlIG1fcmVjYWxjTGlzdEl0
ZW1zLCBtX2xpc3RJdGVtcywgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gU2VsZWN0RWxlbWVu
dERhdGEuCisKIDIwMTEtMTAtMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBNb3N0IG9mIHRoZSBmdW5jdGlvbnMgaW4gQ2FjaGVkUmVzb3VyY2VDbGllbnQg
YXJlIHNwZWNpZmljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggMzRhMzNh
MDhiZDZjMzViMWNjMTI5ZTkzMGM5MWQyZjhiMWY2Y2Q5Yy4uZGVkMzgzMTRhYzZmZWY3ZDJlMDFm
YjFjOGMwYzczNzFmYTEyMTQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVj
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcApA
QCAtNjMsNyArNjMsNiBAQCBTZWxlY3RFbGVtZW50RGF0YTo6U2VsZWN0RWxlbWVudERhdGEoKQog
ICAgICwgbV91c2VyRHJpdmVuQ2hhbmdlKGZhbHNlKQogICAgICwgbV9tdWx0aXBsZShmYWxzZSkK
ICAgICAsIG1fYWN0aXZlU2VsZWN0aW9uU3RhdGUoZmFsc2UpCi0gICAgLCBtX3JlY2FsY0xpc3RJ
dGVtcyhmYWxzZSkKIHsKIH0KIApAQCAtNzEsMzUgKzcwLDQgQEAgU2VsZWN0RWxlbWVudERhdGE6
On5TZWxlY3RFbGVtZW50RGF0YSgpCiB7CiB9CiAKLXZvaWQgU2VsZWN0RWxlbWVudERhdGE6OmNo
ZWNrTGlzdEl0ZW1zKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Ci17Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAotICAgIFZlY3RvcjxFbGVtZW50Kj4gaXRlbXMgPSBtX2xpc3RJdGVtczsKLSAg
ICBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zKCpjb25zdF9jYXN0PFNlbGVjdEVs
ZW1lbnREYXRhKj4odGhpcyksIGVsZW1lbnQsIGZhbHNlKTsKLSAgICBBU1NFUlQoaXRlbXMgPT0g
bV9saXN0SXRlbXMpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7Ci0jZW5kaWYK
LX0KLQotVmVjdG9yPEVsZW1lbnQqPiYgU2VsZWN0RWxlbWVudERhdGE6Omxpc3RJdGVtcyhjb25z
dCBFbGVtZW50KiBlbGVtZW50KQotewotICAgIGlmIChtX3JlY2FsY0xpc3RJdGVtcykKLSAgICAg
ICAgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcygqdGhpcywgZWxlbWVudCk7Ci0g
ICAgZWxzZQotICAgICAgICBjaGVja0xpc3RJdGVtcyhlbGVtZW50KTsKLQotICAgIHJldHVybiBt
X2xpc3RJdGVtczsKLX0KLQotY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgU2VsZWN0RWxlbWVudERh
dGE6Omxpc3RJdGVtcyhjb25zdCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIGlmICht
X3JlY2FsY0xpc3RJdGVtcykKLSAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJ
dGVtcygqY29uc3RfY2FzdDxTZWxlY3RFbGVtZW50RGF0YSo+KHRoaXMpLCBlbGVtZW50KTsKLSAg
ICBlbHNlCi0gICAgICAgIGNoZWNrTGlzdEl0ZW1zKGVsZW1lbnQpOwotCi0gICAgcmV0dXJuIG1f
bGlzdEl0ZW1zOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaAppbmRleCAzZmU1
NmE2ZDRmZTgwNWQzNmJmMGE4NDQwYjgzZTdmYjI4ZWY1ZDQ4Li5hNzIyMGU1NjYyMDY0MjBhYTU2
ZTcxMThlMDJhNGI0YzM2ZTQ5ODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Vs
ZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmgKQEAg
LTczLDEzICs3Myw2IEBAIHB1YmxpYzoKIAogICAgIFZlY3Rvcjxib29sPiYgY2FjaGVkU3RhdGVG
b3JBY3RpdmVTZWxlY3Rpb24oKSB7IHJldHVybiBtX2NhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0
aW9uOyB9CiAKLSAgICBib29sIHNob3VsZFJlY2FsY0xpc3RJdGVtcygpIGNvbnN0IHsgcmV0dXJu
IG1fcmVjYWxjTGlzdEl0ZW1zOyB9Ci0gICAgdm9pZCBzZXRTaG91bGRSZWNhbGNMaXN0SXRlbXMo
Ym9vbCB2YWx1ZSkgeyBtX3JlY2FsY0xpc3RJdGVtcyA9IHZhbHVlOyB9Ci0KLSAgICBWZWN0b3I8
RWxlbWVudCo+JiByYXdMaXN0SXRlbXMoKSB7IHJldHVybiBtX2xpc3RJdGVtczsgfQotICAgIFZl
Y3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyhjb25zdCBFbGVtZW50Kik7Ci0gICAgY29uc3QgVmVj
dG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zKGNvbnN0IEVsZW1lbnQqKSBjb25zdDsKLQogICAgIFVD
aGFyIHJlcGVhdGluZ0NoYXIoKSBjb25zdCB7IHJldHVybiBtX3JlcGVhdGluZ0NoYXI7IH0KICAg
ICB2b2lkIHNldFJlcGVhdGluZ0NoYXIoY29uc3QgVUNoYXImIHZhbHVlKSB7IG1fcmVwZWF0aW5n
Q2hhciA9IHZhbHVlOyB9CiAKQEAgLTkyLDcgKzg1LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB2b2lkIGNoZWNrTGlzdEl0ZW1zKGNvbnN0IEVsZW1lbnQqKSBjb25zdDsKIAotICAgIFZlY3Rv
cjxFbGVtZW50Kj4gbV9saXN0SXRlbXM7CiAgICAgVmVjdG9yPGJvb2w+IG1fbGFzdE9uQ2hhbmdl
U2VsZWN0aW9uOwogICAgIFZlY3Rvcjxib29sPiBtX2NhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0
aW9uOwogCkBAIC0xMDksNyArMTAxLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdXNlckRyaXZl
bkNoYW5nZTsKICAgICBib29sIG1fbXVsdGlwbGU7CiAgICAgYm9vbCBtX2FjdGl2ZVNlbGVjdGlv
blN0YXRlOwotICAgIGJvb2wgbV9yZWNhbGNMaXN0SXRlbXM7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDk5Yzg0MmI2NTM5ZjhkZmZmNzkx
OWIyYzA2NzM5NDYxNTNhYmFkMDUuLjJlNzY2MDA4ZWU0MjBiYWRkM2E3ZTNhNDJkZGZiYjdhMjFk
YjA0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC03
Niw2ICs3Niw3IEBAIHN0YXRpYyBjb25zdCBET01UaW1lU3RhbXAgdHlwZUFoZWFkVGltZW91dCA9
IDEwMDA7CiAKIEhUTUxTZWxlY3RFbGVtZW50OjpIVE1MU2VsZWN0RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCog
Zm9ybSkKICAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUodGFnTmFtZSwgZG9j
dW1lbnQsIGZvcm0pCisgICAgLCBtX3JlY2FsY0xpc3RJdGVtcyhmYWxzZSkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShzZWxlY3RUYWcpKTsKIH0KQEAgLTMxNCwxMiArMzE1LDEyIEBAIFBhc3NS
ZWZQdHI8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPiBIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9ucygp
CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyhib29sIHVwZGF0ZVNl
bGVjdGVkU3RhdGVzKSBjb25zdAogewotICAgIHJlY2FsY0xpc3RJdGVtcyhjb25zdF9jYXN0PFNl
bGVjdEVsZW1lbnREYXRhJj4obV9kYXRhKSwgdGhpcywgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMpOwor
ICAgIGNvbnN0X2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPih0aGlzKS0+cmVjYWxjTGlzdEl0ZW1z
SW50ZXJuYWwodXBkYXRlU2VsZWN0ZWRTdGF0ZXMpOwogfQogCiB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpyZWNhbGNMaXN0SXRlbXNJZk5lZWRlZCgpCiB7Ci0gICAgaWYgKG1fZGF0YS5zaG91bGRS
ZWNhbGNMaXN0SXRlbXMoKSkKKyAgICBpZiAobV9yZWNhbGNMaXN0SXRlbXMpCiAgICAgICAgIHJl
Y2FsY0xpc3RJdGVtcygpOwogfQogCkBAIC00NTYsMTkgKzQ1NywxOSBAQCBpbnQgSFRNTFNlbGVj
dEVsZW1lbnQ6Om5leHRWYWxpZEluZGV4KGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVt
cywgaW50IGxpcwogCiBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6Om5leHRTZWxlY3RhYmxlTGlzdElu
ZGV4KGludCBzdGFydEluZGV4KSBjb25zdAogewotICAgIHJldHVybiBuZXh0VmFsaWRJbmRleCht
X2RhdGEubGlzdEl0ZW1zKHRoaXMpLCBzdGFydEluZGV4LCBTa2lwRm9yd2FyZHMsIDEpOworICAg
IHJldHVybiBuZXh0VmFsaWRJbmRleChsaXN0SXRlbXMoKSwgc3RhcnRJbmRleCwgU2tpcEZvcndh
cmRzLCAxKTsKIH0KIAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpwcmV2aW91c1NlbGVjdGFibGVM
aXN0SW5kZXgoaW50IHN0YXJ0SW5kZXgpIGNvbnN0CiB7CiAgICAgaWYgKHN0YXJ0SW5kZXggPT0g
LTEpCi0gICAgICAgIHN0YXJ0SW5kZXggPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpLnNpemUoKTsK
LSAgICByZXR1cm4gbmV4dFZhbGlkSW5kZXgobV9kYXRhLmxpc3RJdGVtcyh0aGlzKSwgc3RhcnRJ
bmRleCwgU2tpcEJhY2t3YXJkcywgMSk7CisgICAgICAgIHN0YXJ0SW5kZXggPSBsaXN0SXRlbXMo
KS5zaXplKCk7CisgICAgcmV0dXJuIG5leHRWYWxpZEluZGV4KGxpc3RJdGVtcygpLCBzdGFydElu
ZGV4LCBTa2lwQmFja3dhcmRzLCAxKTsKIH0KIAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpmaXJz
dFNlbGVjdGFibGVMaXN0SW5kZXgoKSBjb25zdAogewotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50
Kj4mIGl0ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8RWxl
bWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGludCBpbmRleCA9IG5leHRWYWxpZElu
ZGV4KGl0ZW1zLCBpdGVtcy5zaXplKCksIFNraXBCYWNrd2FyZHMsIElOVF9NQVgpOwogICAgIGlm
IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpID09IGl0ZW1zLnNpemUoKSkKICAgICAgICAg
cmV0dXJuIC0xOwpAQCAtNDc3LDEzICs0NzgsMTMgQEAgaW50IEhUTUxTZWxlY3RFbGVtZW50Ojpm
aXJzdFNlbGVjdGFibGVMaXN0SW5kZXgoKSBjb25zdAogCiBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6
Omxhc3RTZWxlY3RhYmxlTGlzdEluZGV4KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbmV4dFZhbGlk
SW5kZXgobV9kYXRhLmxpc3RJdGVtcyh0aGlzKSwgLTEsIFNraXBGb3J3YXJkcywgSU5UX01BWCk7
CisgICAgcmV0dXJuIG5leHRWYWxpZEluZGV4KGxpc3RJdGVtcygpLCAtMSwgU2tpcEZvcndhcmRz
LCBJTlRfTUFYKTsKIH0KIAogLy8gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG5leHQgdmFsaWQg
aXRlbSBvbmUgcGFnZSBhd2F5IGZyb20gfHN0YXJ0SW5kZXh8IGluIGRpcmVjdGlvbiB8ZGlyZWN0
aW9ufC4KIGludCBIVE1MU2VsZWN0RWxlbWVudDo6bmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdl
QXdheShpbnQgc3RhcnRJbmRleCwgU2tpcERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7Ci0g
ICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMp
OworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAg
Ly8gQ2FuJ3QgdXNlIGRhdGEtPnNpemUoKSBiZWNhdXNlIHJlbmRlcmVyIGZvcmNlcyBhIG1pbmlt
dW0gc2l6ZS4KICAgICBpbnQgcGFnZVNpemUgPSAwOwogICAgIGlmIChyZW5kZXJlcigpLT5pc0xp
c3RCb3goKSkKQEAgLTUyNiw3ICs1MjcsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzYXZl
TGFzdFNlbGVjdGlvbigpCiAgICAgVmVjdG9yPGJvb2w+JiBsYXN0T25DaGFuZ2VTZWxlY3Rpb24g
PSBtX2RhdGEubGFzdE9uQ2hhbmdlU2VsZWN0aW9uKCk7IAogICAgIGxhc3RPbkNoYW5nZVNlbGVj
dGlvbi5jbGVhcigpOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBtX2Rh
dGEubGlzdEl0ZW1zKHRoaXMpOworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0g
bGlzdEl0ZW1zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0b09wdGlvbkVs
ZW1lbnQoaXRlbXNbaV0pOwogICAgICAgICBsYXN0T25DaGFuZ2VTZWxlY3Rpb24uYXBwZW5kKG9w
dGlvbkVsZW1lbnQgJiYgb3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKSk7CkBAIC01NDIsNyArNTQz
LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0QWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5k
ZXgoaW50IGluZGV4KQogICAgIFZlY3Rvcjxib29sPiYgY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxl
Y3Rpb24gPSBtX2RhdGEuY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxlY3Rpb24oKTsgCiAgICAgY2Fj
aGVkU3RhdGVGb3JBY3RpdmVTZWxlY3Rpb24uY2xlYXIoKTsKIAotICAgIGNvbnN0IFZlY3RvcjxF
bGVtZW50Kj4mIGl0ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0
b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBPcHRpb25FbGVtZW50KiBvcHRp
b25FbGVtZW50ID0gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2ldKTsKICAgICAgICAgY2FjaGVkU3Rh
dGVGb3JBY3RpdmVTZWxlY3Rpb24uYXBwZW5kKG9wdGlvbkVsZW1lbnQgJiYgb3B0aW9uRWxlbWVu
dC0+c2VsZWN0ZWQoKSk7CkBAIC01NTcsMTMgKzU1OCwxMyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpzZXRBY3RpdmVTZWxlY3Rpb25FbmRJbmRleChpbnQgaW5kZXgpCiB2b2lkIEhUTUxTZWxl
Y3RFbGVtZW50Ojp1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKGJvb2wgZGVzZWxlY3RPdGhlck9wdGlv
bnMpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmVyKCkgJiYgKHJlbmRlcmVyKCktPmlzTGlzdEJveCgp
IHx8IG1fZGF0YS5tdWx0aXBsZSgpKSk7Ci0gICAgQVNTRVJUKCFtX2RhdGEubGlzdEl0ZW1zKHRo
aXMpLnNpemUoKSB8fCBtX2RhdGEuYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoKSA+PSAwKTsK
KyAgICBBU1NFUlQoIWxpc3RJdGVtcygpLnNpemUoKSB8fCBtX2RhdGEuYWN0aXZlU2VsZWN0aW9u
QW5jaG9ySW5kZXgoKSA+PSAwKTsKIAogICAgIHVuc2lnbmVkIHN0YXJ0ID0gbWluKG1fZGF0YS5h
Y3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCgpLCBtX2RhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5k
ZXgoKSk7CiAgICAgdW5zaWduZWQgZW5kID0gbWF4KG1fZGF0YS5hY3RpdmVTZWxlY3Rpb25BbmNo
b3JJbmRleCgpLCBtX2RhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSk7CiAgICAgVmVjdG9y
PGJvb2w+JiBjYWNoZWRTdGF0ZUZvckFjdGl2ZVNlbGVjdGlvbiA9IG1fZGF0YS5jYWNoZWRTdGF0
ZUZvckFjdGl2ZVNlbGVjdGlvbigpOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRl
bXMgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpOworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4m
IGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1z
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0
b09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pOwogICAgICAgICBpZiAoIW9wdGlvbkVsZW1lbnQgfHwg
aXRlbXNbaV0tPmRpc2FibGVkKCkpCkBAIC01ODYsNyArNTg3LDcgQEAgdm9pZCBIVE1MU2VsZWN0
RWxlbWVudDo6bGlzdEJveE9uQ2hhbmdlKCkKICAgICBBU1NFUlQoIW1fZGF0YS51c2VzTWVudUxp
c3QoKSB8fCBtX2RhdGEubXVsdGlwbGUoKSk7CiAKICAgICBWZWN0b3I8Ym9vbD4mIGxhc3RPbkNo
YW5nZVNlbGVjdGlvbiA9IG1fZGF0YS5sYXN0T25DaGFuZ2VTZWxlY3Rpb24oKTsgCi0gICAgY29u
c3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpOworICAg
IGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAKICAgICAvLyBJ
ZiB0aGUgY2FjaGVkIHNlbGVjdGlvbiBsaXN0IGlzIGVtcHR5LCBvciB0aGUgc2l6ZSBoYXMgY2hh
bmdlZCwgdGhlbiBmaXJlCiAgICAgLy8gZGlzcGF0Y2hGb3JtQ29udHJvbENoYW5nZUV2ZW50LCBh
bmQgcmV0dXJuIGVhcmx5LgpAQCAtNjQwLDkgKzY0MSwzMCBAQCB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoKQogICAgIH0KIH0KIAordm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6Y2hlY2tMaXN0SXRlbXMoKSBjb25zdAoreworI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICBWZWN0b3I8RWxlbWVudCo+IGl0ZW1zID0gbV9saXN0SXRlbXM7CisgICAgY29u
c3RfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KHRoaXMpLT5yZWNhbGNMaXN0SXRlbXNJbnRlcm5h
bChmYWxzZSk7CisgICAgQVNTRVJUKGl0ZW1zID09IG1fbGlzdEl0ZW1zKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGVsZW1lbnQpOworI2VuZGlmCit9CisKK2NvbnN0IFZlY3RvcjxFbGVtZW50
Kj4mIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0SXRlbXMoKSBjb25zdAoreworICAgIGlmIChtX3Jl
Y2FsY0xpc3RJdGVtcykKKyAgICAgICAgY29uc3RfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KHRo
aXMpLT5yZWNhbGNMaXN0SXRlbXNJbnRlcm5hbChmYWxzZSk7CisgICAgZWxzZQorICAgICAgICBj
aGVja0xpc3RJdGVtcygpOworCisgICAgcmV0dXJuIG1fbGlzdEl0ZW1zOworfQorCiB2b2lkIEhU
TUxTZWxlY3RFbGVtZW50OjpzZXRSZWNhbGNMaXN0SXRlbXMoKQogewotICAgIG1fZGF0YS5zZXRT
aG91bGRSZWNhbGNMaXN0SXRlbXModHJ1ZSk7CisgICAgbV9yZWNhbGNMaXN0SXRlbXMgPSB0cnVl
OwogICAgIC8vIE1hbnVhbCBzZWxlY3Rpb24gYW5jaG9yIGlzIHJlc2V0IHdoZW4gbWFuaXB1bGF0
aW5nIHRoZSBzZWxlY3QgcHJvZ3JhbW1hdGljYWxseS4KICAgICBtX2RhdGEuc2V0QWN0aXZlU2Vs
ZWN0aW9uQW5jaG9ySW5kZXgoLTEpOwogICAgIHNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcigp
OwpAQCAtNjUxLDE3ICs2NzMsMTYgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0UmVjYWxj
TGlzdEl0ZW1zKCkKICAgICAgICAgbV9jb2xsZWN0aW9uSW5mby5yZXNldCgpOwogfQogCi12b2lk
IEhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXMoU2VsZWN0RWxlbWVudERhdGEmIGRh
dGEsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMpCit2
b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXNJbnRlcm5hbChib29sIHVwZGF0
ZVNlbGVjdGVkU3RhdGVzKQogewotICAgIFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IGRh
dGEucmF3TGlzdEl0ZW1zKCk7Ci0gICAgbGlzdEl0ZW1zLmNsZWFyKCk7CisgICAgbV9saXN0SXRl
bXMuY2xlYXIoKTsKIAotICAgIGRhdGEuc2V0U2hvdWxkUmVjYWxjTGlzdEl0ZW1zKGZhbHNlKTsK
KyAgICBtX3JlY2FsY0xpc3RJdGVtcyA9IGZhbHNlOwogCiAgICAgT3B0aW9uRWxlbWVudCogZm91
bmRTZWxlY3RlZCA9IDA7Ci0gICAgZm9yIChOb2RlKiBjdXJyZW50Tm9kZSA9IGVsZW1lbnQtPmZp
cnN0Q2hpbGQoKTsgY3VycmVudE5vZGU7KSB7CisgICAgZm9yIChOb2RlKiBjdXJyZW50Tm9kZSA9
IHRoaXMtPmZpcnN0Q2hpbGQoKTsgY3VycmVudE5vZGU7KSB7CiAgICAgICAgIGlmICghY3VycmVu
dE5vZGUtPmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICAgICAgY3VycmVudE5vZGUgPSBjdXJy
ZW50Tm9kZS0+dHJhdmVyc2VOZXh0U2libGluZyhlbGVtZW50KTsKKyAgICAgICAgICAgIGN1cnJl
bnROb2RlID0gY3VycmVudE5vZGUtPnRyYXZlcnNlTmV4dFNpYmxpbmcodGhpcyk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC02NzEsNyArNjkyLDcgQEAgdm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zKFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBj
b25zdCBFbGVtZW50KgogICAgICAgICAvLyBmbGF0dGVuIHRoZSB0cmVlIGF1dG9tYXRpY2FsbHks
IHNvIHdlIGZvbGxvdyBzdWl0LgogICAgICAgICAvLyAoaHR0cDovL3d3dy53My5vcmcvVFIvaHRt
bDQwMS9pbnRlcmFjdC9mb3Jtcy5odG1sI2gtMTcuNikKICAgICAgICAgaWYgKGlzT3B0aW9uR3Jv
dXBFbGVtZW50KGN1cnJlbnQpKSB7Ci0gICAgICAgICAgICBsaXN0SXRlbXMuYXBwZW5kKGN1cnJl
bnQpOworICAgICAgICAgICAgbV9saXN0SXRlbXMuYXBwZW5kKGN1cnJlbnQpOwogICAgICAgICAg
ICAgaWYgKGN1cnJlbnQtPmZpcnN0Q2hpbGQoKSkgewogICAgICAgICAgICAgICAgIGN1cnJlbnRO
b2RlID0gY3VycmVudC0+Zmlyc3RDaGlsZCgpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtNjc5LDEwICs3MDAsMTAgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0
ZW1zKFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBjb25zdCBFbGVtZW50KgogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0b09wdGlvbkVsZW1l
bnQoY3VycmVudCkpIHsKLSAgICAgICAgICAgIGxpc3RJdGVtcy5hcHBlbmQoY3VycmVudCk7Cisg
ICAgICAgICAgICBtX2xpc3RJdGVtcy5hcHBlbmQoY3VycmVudCk7CiAKLSAgICAgICAgICAgIGlm
ICh1cGRhdGVTZWxlY3RlZFN0YXRlcyAmJiAhZGF0YS5tdWx0aXBsZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFmb3VuZFNlbGVjdGVkICYmIChkYXRhLnNpemUoKSA8PSAxIHx8IG9wdGlvbkVs
ZW1lbnQtPnNlbGVjdGVkKCkpKSB7CisgICAgICAgICAgICBpZiAodXBkYXRlU2VsZWN0ZWRTdGF0
ZXMgJiYgIW1fZGF0YS5tdWx0aXBsZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFmb3VuZFNl
bGVjdGVkICYmIChtX2RhdGEuc2l6ZSgpIDw9IDEgfHwgb3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQo
KSkpIHsKICAgICAgICAgICAgICAgICAgICAgZm91bmRTZWxlY3RlZCA9IG9wdGlvbkVsZW1lbnQ7
CiAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2VsZWN0ZWQtPnNldFNlbGVjdGVkU3RhdGUodHJ1
ZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmb3VuZFNlbGVjdGVkICYmIG9wdGlvbkVs
ZW1lbnQtPnNlbGVjdGVkKCkpIHsKQEAgLTY5Myw3ICs3MTQsNyBAQCB2b2lkIEhUTUxTZWxlY3RF
bGVtZW50OjpyZWNhbGNMaXN0SXRlbXMoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIGNvbnN0IEVs
ZW1lbnQqCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY3VycmVudC0+aGFzVGFnTmFtZShIVE1M
TmFtZXM6OmhyVGFnKSkKLSAgICAgICAgICAgIGxpc3RJdGVtcy5hcHBlbmQoY3VycmVudCk7Cisg
ICAgICAgICAgICBtX2xpc3RJdGVtcy5hcHBlbmQoY3VycmVudCk7CiAKICAgICAgICAgLy8gSW4g
Y29uZm9ybWluZyBIVE1MIGNvZGUsIG9ubHkgPG9wdGdyb3VwPiBhbmQgPG9wdGlvbj4gd2lsbCBi
ZSBmb3VuZAogICAgICAgICAvLyB3aXRoaW4gYSA8c2VsZWN0Pi4gV2UgY2FsbCB0cmF2ZXJzZU5l
eHRTaWJsaW5nIHNvIHRoYXQgd2Ugb25seSBzdGVwCkBAIC03MDEsNyArNzIyLDcgQEAgdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zKFNlbGVjdEVsZW1lbnREYXRhJiBkYXRh
LCBjb25zdCBFbGVtZW50KgogICAgICAgICAvLyB3aXRoIHRoZSBjYXNlIHdoZXJlIG9kZCB0YWdz
IGxpa2UgYSA8ZGl2PiBoYXZlIGJlZW4gYWRkZWQgYnV0IHdlCiAgICAgICAgIC8vIGhhbmRsZSB0
aGlzIGJlY2F1c2Ugc3VjaCB0YWdzIGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUK
ICAgICAgICAgLy8gPHNlbGVjdD4ncyBzdWJ0cmVlIGF0IHRoaXMgcG9pbnQuCi0gICAgICAgIGN1
cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnRyYXZlcnNlTmV4dFNpYmxpbmcoZWxlbWVudCk7Cisg
ICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnRyYXZlcnNlTmV4dFNpYmxpbmcodGhp
cyk7CiAgICAgfQogfQogCkBAIC03MTAsNyArNzMxLDcgQEAgaW50IEhUTUxTZWxlY3RFbGVtZW50
OjpzZWxlY3RlZEluZGV4KCkgY29uc3QKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAKICAgICAv
LyByZXR1cm4gdGhlIG51bWJlciBvZiB0aGUgZmlyc3Qgb3B0aW9uIHNlbGVjdGVkCi0gICAgY29u
c3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpOworICAg
IGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoT3B0aW9u
RWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSkpIHsKICAg
ICAgICAgICAgIGlmIChvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgpKQpAQCAtNzI5LDcgKzc1MCw3
IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNlbGVjdGVkSW5kZXhJbnRlcm5hbChpbnQg
b3B0aW9uSW5kZXgsIGJvb2wgZGVzZWxlY3QsCiAgICAgaWYgKCFtX2RhdGEubXVsdGlwbGUoKSkK
ICAgICAgICAgZGVzZWxlY3QgPSB0cnVlOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYg
aXRlbXMgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpOworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50
Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgaW50IGxpc3RJbmRleCA9IG9wdGlvblRvTGlz
dEluZGV4KG9wdGlvbkluZGV4KTsKIAogICAgIEVsZW1lbnQqIGV4Y2x1ZGVFbGVtZW50ID0gMDsK
QEAgLTc3Miw3ICs3OTMsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRTZWxlY3RlZElu
ZGV4SW50ZXJuYWwoaW50IG9wdGlvbkluZGV4LCBib29sIGRlc2VsZWN0LAogCiBpbnQgSFRNTFNl
bGVjdEVsZW1lbnQ6Om9wdGlvblRvTGlzdEluZGV4KGludCBvcHRpb25JbmRleCkgY29uc3QKIHsK
LSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IG1fZGF0YS5saXN0SXRlbXModGhp
cyk7CisgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAg
ICBpbnQgbGlzdFNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KGl0ZW1zLnNpemUoKSk7CiAgICAgaWYg
KG9wdGlvbkluZGV4IDwgMCB8fCBvcHRpb25JbmRleCA+PSBsaXN0U2l6ZSkKICAgICAgICAgcmV0
dXJuIC0xOwpAQCAtNzkxLDcgKzgxMiw3IEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9u
VG9MaXN0SW5kZXgoaW50IG9wdGlvbkluZGV4KSBjb25zdAogCiBpbnQgSFRNTFNlbGVjdEVsZW1l
bnQ6Omxpc3RUb09wdGlvbkluZGV4KGludCBsaXN0SW5kZXgpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
VmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpOworICAgIGNv
bnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgaWYgKGxpc3RJ
bmRleCA8IDAgfHwgbGlzdEluZGV4ID49IHN0YXRpY19jYXN0PGludD4oaXRlbXMuc2l6ZSgpKSB8
fCAhaXNPcHRpb25FbGVtZW50KGl0ZW1zW2xpc3RJbmRleF0pKQogICAgICAgICByZXR1cm4gLTE7
CiAKQEAgLTgyNiw3ICs4NDcsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkaXNwYXRjaEJs
dXJFdmVudChQYXNzUmVmUHRyPE5vZGU+IG5ld0ZvY3VzZWROb2RlKQogCiB2b2lkIEhUTUxTZWxl
Y3RFbGVtZW50OjpkZXNlbGVjdEl0ZW1zV2l0aG91dFZhbGlkYXRpb24oRWxlbWVudCogZXhjbHVk
ZUVsZW1lbnQpCiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBtX2RhdGEu
bGlzdEl0ZW1zKHRoaXMpOworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlz
dEl0ZW1zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIGlmIChpdGVtc1tpXSA9PSBleGNsdWRlRWxlbWVudCkKICAgICAgICAgICAg
IGNvbnRpbnVlOwpAQCAtODM4LDcgKzg1OSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRl
c2VsZWN0SXRlbXNXaXRob3V0VmFsaWRhdGlvbihFbGVtZW50KiBleGNsdWRlRWxlbWVudCkKIAog
Ym9vbCBIVE1MU2VsZWN0RWxlbWVudDo6c2F2ZUZvcm1Db250cm9sU3RhdGUoU3RyaW5nJiB2YWx1
ZSkgY29uc3QKIHsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IG1fZGF0YS5s
aXN0SXRlbXModGhpcyk7CisgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0
SXRlbXMoKTsKICAgICBpbnQgbGVuZ3RoID0gaXRlbXMuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6
IENoYW5nZSB0aGlzIGNvZGUgdG8gdXNlIHRoZSBuZXcgU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0
aWFsaXplZCBjb2RlIHBhdGguCkBAIC04NTUsOSArODc2LDkgQEAgYm9vbCBIVE1MU2VsZWN0RWxl
bWVudDo6c2F2ZUZvcm1Db250cm9sU3RhdGUoU3RyaW5nJiB2YWx1ZSkgY29uc3QKIAogdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgU3RyaW5nJiBz
dGF0ZSkKIHsKLSAgICByZWNhbGNMaXN0SXRlbXMobV9kYXRhLCB0aGlzKTsKKyAgICByZWNhbGNM
aXN0SXRlbXMoKTsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbV9kYXRh
Lmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxp
c3RJdGVtcygpOwogICAgIGludCBsZW5ndGggPSBpdGVtcy5zaXplKCk7CiAKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CkBAIC04ODUsNyArOTA2LDcgQEAgYm9vbCBIVE1M
U2VsZWN0RWxlbWVudDo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBsaXN0LCBib29sKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIHN1Y2Nlc3NmdWwgPSBmYWxzZTsKLSAg
ICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IG1fZGF0YS5saXN0SXRlbXModGhpcyk7
CisgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKIAogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBP
cHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2ldKTsK
QEAgLTkwNiw3ICs5MjcsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZXNldCgpCiAgICAg
T3B0aW9uRWxlbWVudCogZmlyc3RPcHRpb24gPSAwOwogICAgIE9wdGlvbkVsZW1lbnQqIHNlbGVj
dGVkT3B0aW9uID0gMDsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbV9k
YXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9
IGxpc3RJdGVtcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7
ICsraSkgewogICAgICAgICBPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25F
bGVtZW50KGl0ZW1zW2ldKTsKICAgICAgICAgaWYgKCFvcHRpb25FbGVtZW50KQpAQCAtOTgwLDcg
KzEwMDEsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqIGV2ZW50KQogCiAgICAgICAgIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmll
ciA9IHN0YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihldmVudCktPmtleUlkZW50aWZpZXIoKTsK
ICAgICAgICAgYm9vbCBoYW5kbGVkID0gdHJ1ZTsKLSAgICAgICAgY29uc3QgVmVjdG9yPEVsZW1l
bnQqPiYgbGlzdEl0ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICAgICAgY29uc3Qg
VmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gdGhpcy0+bGlzdEl0ZW1zKCk7CiAgICAgICAg
IGludCBsaXN0SW5kZXggPSBvcHRpb25Ub0xpc3RJbmRleChzZWxlY3RlZEluZGV4KCkpOwogCiAg
ICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIiB8fCBrZXlJZGVudGlmaWVyID09ICJS
aWdodCIpCkBAIC0xMTA4LDcgKzExMjksNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRh
dGVTZWxlY3RlZFN0YXRlKGludCBsaXN0SW5kZXgsIGJvb2wgbXVsdGksIGJvb2wgc2hpZgogICAg
IGJvb2wgc2hpZnRTZWxlY3QgPSBtX2RhdGEubXVsdGlwbGUoKSAmJiBzaGlmdDsKICAgICBib29s
IG11bHRpU2VsZWN0ID0gbV9kYXRhLm11bHRpcGxlKCkgJiYgbXVsdGkgJiYgIXNoaWZ0OwogCi0g
ICAgRWxlbWVudCogY2xpY2tlZEVsZW1lbnQgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpW2xpc3RJ
bmRleF07CisgICAgRWxlbWVudCogY2xpY2tlZEVsZW1lbnQgPSBsaXN0SXRlbXMoKVtsaXN0SW5k
ZXhdOwogICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbiA9IHRvT3B0aW9uRWxlbWVudChjbGlja2Vk
RWxlbWVudCk7CiAgICAgaWYgKG9wdGlvbikgewogICAgICAgICAvLyBLZWVwIHRyYWNrIG9mIHdo
ZXRoZXIgYW4gYWN0aXZlIHNlbGVjdGlvbiAobGlrZSBkdXJpbmcgZHJhZwpAQCAtMTE0OCw3ICsx
MTY5LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlU2VsZWN0ZWRTdGF0ZShpbnQg
bGlzdEluZGV4LCBib29sIG11bHRpLCBib29sIHNoaWYKIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVu
dDo6bGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewotICAgIGNvbnN0
IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IG1fZGF0YS5saXN0SXRlbXModGhpcyk7Cisg
ICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gdGhpcy0+bGlzdEl0ZW1zKCk7
CiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQg
JiYgZXZlbnQtPmlzTW91c2VFdmVudCgpICYmIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVu
dCktPmJ1dHRvbigpID09IExlZnRCdXR0b24pIHsKICAgICAgICAgZm9jdXMoKTsKQEAgLTEzMDYs
NyArMTMyNyw3IEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6bGFzdFNlbGVjdGVkTGlzdEluZGV4
KCkgY29uc3QKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGl0ZXJhdGUgdGhlIGxpc3RJdGVtcyBp
biB0aGUgcmV2ZXJzZSBvcmRlci4KICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgYm9vbCBm
b3VuZCA9IGZhbHNlOwotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbV9kYXRh
Lmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxp
c3RJdGVtcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgaWYgKE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0b09wdGlvbkVs
ZW1lbnQoaXRlbXNbaV0pKSB7CiAgICAgICAgICAgICBpZiAob3B0aW9uRWxlbWVudC0+c2VsZWN0
ZWQoKSkgewpAQCAtMTM2Miw3ICsxMzgzLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dHlw
ZUFoZWFkRmluZChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgfQogICAgIH0KIAotICAg
IGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsK
KyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGlu
dCBpdGVtQ291bnQgPSBpdGVtcy5zaXplKCk7CiAgICAgaWYgKGl0ZW1Db3VudCA8IDEpCiAgICAg
ICAgIHJldHVybjsKQEAgLTE0MDAsNyArMTQyMSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
Omluc2VydGVkSW50b1RyZWUoYm9vbCBkZWVwKQogICAgIC8vIFdoZW4gdGhlIGVsZW1lbnQgaXMg
Y3JlYXRlZCBkdXJpbmcgZG9jdW1lbnQgcGFyc2luZywgaXQgd29uJ3QgaGF2ZSBhbnkKICAgICAv
LyBpdGVtcyB5ZXQgLSBidXQgZm9yIGlubmVySFRNTCBhbmQgcmVsYXRlZCBtZXRob2RzLCB0aGlz
IG1ldGhvZCBpcyBjYWxsZWQKICAgICAvLyBhZnRlciB0aGUgd2hvbGUgc3VidHJlZSBpcyBjb25z
dHJ1Y3RlZC4KLSAgICByZWNhbGNMaXN0SXRlbXMobV9kYXRhLCB0aGlzLCB0cnVlKTsKKyAgICBy
ZWNhbGNMaXN0SXRlbXModHJ1ZSk7CiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZTo6aW5zZXJ0ZWRJbnRvVHJlZShkZWVwKTsKIH0KIApAQCAtMTQxMSw3ICsxNDMyLDcgQEAgdm9p
ZCBIVE1MU2VsZWN0RWxlbWVudDo6YWNjZXNzS2V5U2V0U2VsZWN0ZWRJbmRleChpbnQgaW5kZXgp
CiAgICAgICAgIGFjY2Vzc0tleUFjdGlvbihmYWxzZSk7CiAgICAgCiAgICAgLy8gaWYgdGhpcyBp
bmRleCBpcyBhbHJlYWR5IHNlbGVjdGVkLCB1bnNlbGVjdC4gb3RoZXJ3aXNlIHVwZGF0ZSB0aGUg
c2VsZWN0ZWQgaW5kZXgKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IG1fZGF0
YS5saXN0SXRlbXModGhpcyk7CisgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBs
aXN0SXRlbXMoKTsKICAgICBpbnQgbGlzdEluZGV4ID0gb3B0aW9uVG9MaXN0SW5kZXgoaW5kZXgp
OwogICAgIGlmIChPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gKGxpc3RJbmRleCA+PSAw
ID8gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2xpc3RJbmRleF0pIDogMCkpIHsKICAgICAgICAgaWYg
KG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkpCkBAIC0xNDMyLDcgKzE0NTMsNyBAQCB1bnNpZ25l
ZCBIVE1MU2VsZWN0RWxlbWVudDo6bGVuZ3RoKCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBvcHRp
b25zID0gMDsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbV9kYXRhLmxp
c3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJ
dGVtcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkg
ewogICAgICAgICBpZiAoaXNPcHRpb25FbGVtZW50KGl0ZW1zW2ldKSkKICAgICAgICAgICAgICsr
b3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAppbmRleCA1MjJj
MzUxYWU5NmM2NDc4MTE3M2NmZjVjYjY0YmEzZWRlYTk1M2IxLi4zOGQwMzJjODliZGFkMDUwNTNj
Y2JkYTI5ZjNiNGFhNjBjNWExZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJI
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2VsZWN0RWxlbWVudC5oIgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Niw3ICs2
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlY2FsY0xpc3RJdGVtcygpOwogICAgIHZvaWQg
cmVjYWxjTGlzdEl0ZW1zSWZOZWVkZWQoKTsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4m
IGxpc3RJdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5saXN0SXRlbXModGhpcyk7IH0KKyAg
ICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMoKSBjb25zdDsKIAogICAgIHZpcnR1
YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kVG9BbnlFbGVtZW50KTsKICAgICB2b2lk
IGFjY2Vzc0tleVNldFNlbGVjdGVkSW5kZXgoaW50KTsKQEAgLTE0Myw3ICsxNDQsOCBAQCBwcml2
YXRlOgogCiAgICAgYm9vbCBoYXNQbGFjZWhvbGRlckxhYmVsT3B0aW9uKCkgY29uc3Q7CiAKLSAg
ICBzdGF0aWMgdm9pZCByZWNhbGNMaXN0SXRlbXMoU2VsZWN0RWxlbWVudERhdGEmLCBjb25zdCBF
bGVtZW50KiwgYm9vbCB1cGRhdGVTZWxlY3RlZFN0YXRlcyA9IHRydWUpOworICAgIHZvaWQgY2hl
Y2tMaXN0SXRlbXMoKSBjb25zdDsKKyAgICB2b2lkIHJlY2FsY0xpc3RJdGVtc0ludGVybmFsKGJv
b2wgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMgPSB0cnVlKTsKICAgICB2b2lkIHNldFNlbGVjdGVkSW5k
ZXhJbnRlcm5hbChpbnQgb3B0aW9uSW5kZXgsIGJvb2wgZGVzZWxlY3QgPSB0cnVlLCBib29sIGZp
cmVPbkNoYW5nZU5vdyA9IGZhbHNlLCBib29sIHVzZXJEcml2ZW5DaGFuZ2UgPSB0cnVlKTsKICAg
ICB2b2lkIGRlc2VsZWN0SXRlbXNXaXRob3V0VmFsaWRhdGlvbihFbGVtZW50KiBleGNsdWRlRWxl
bWVudCA9IDApOwogICAgIHZvaWQgcGFyc2VNdWx0aXBsZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUqKTsKQEAgLTE1Myw3ICsxNTUsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgcGxhdGZvcm1IYW5k
bGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCopOwogICAgIHZvaWQgbGlzdEJveERlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2b2lkIHNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJl
cigpOwotICAgIGZyaWVuZCBjbGFzcyBTZWxlY3RFbGVtZW50RGF0YTsKIAogICAgIGVudW0gU2tp
cERpcmVjdGlvbiB7CiAgICAgICAgIFNraXBCYWNrd2FyZHMgPSAtMSwKQEAgLTE2OCw2ICsxNjks
OCBAQCBwcml2YXRlOgogCiAgICAgU2VsZWN0RWxlbWVudERhdGEgbV9kYXRhOwogICAgIENvbGxl
Y3Rpb25DYWNoZSBtX2NvbGxlY3Rpb25JbmZvOworICAgIFZlY3RvcjxFbGVtZW50Kj4gbV9saXN0
SXRlbXM7CisgICAgYm9vbCBtX3JlY2FsY0xpc3RJdGVtczsKIH07CiAKIEhUTUxTZWxlY3RFbGVt
ZW50KiB0b1NlbGVjdEVsZW1lbnQoRWxlbWVudCopOwo=
</data>
<flag name="commit-queue"
          id="107977"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110462</attachid>
            <date>2011-10-10 19:47:49 -0700</date>
            <delta_ts>2011-10-11 16:57:37 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-69812-20111011114747.patch</filename>
            <type>text/plain</type>
            <size>25076</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcxMTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZmFiYWU5MmI5NjI3NDkx
YWYzNDY1MjYyZjc5ZjhkMWMyNThiMDIzLi45YzczOTYzY2Q4ZjYwN2YwZGQyNjVjYjY0ZTU0NDE3
MWE4ZWNmNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTEtMTAtMTAgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgbV9saXN0SXRlbXMg
YW5kIG1fcmVjYWxjTGlzdEl0ZW1zIGZyb20gU2VsZWN0RWxlbWVudERhdGEgdG8gSFRNTFNlbGVj
dEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY5ODEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZSBTZWxlY3RFbGVtZW50RGF0YTo6bV9yZWNhbGNMaXN0SXRlbXMsCisgICAgICAgIFNlbGVj
dEVsZW1lbnREYXRhOjptX2xpc3RJdGVtcywgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIG9mCisgICAg
ICAgIFNlbGVjdEVsZW1lbnREYXRhIGNsYXNzIHRvIEhUTUxTZWxlY3RFbGVtZW50LgorCisgICAg
ICAgIE5vbi1jb25zdCBsaXN0SXRlbXMoKSB3YXMgcmVtb3ZlZCBiZWNhdXNlIGl0IGlzIHVzZWQg
b25seSBpbgorICAgICAgICByZWNhbGNMaXN0SXRlbXNJbnRlcm5hbCgpIGFuZCBpdCBjYW4gYWNj
ZXNzIG1fbGlzdEl0ZW1zIGRpcmV0bHkuCisKKyAgICAgICAgU3RhdGljIHJlY2FsY0xpc3RJdGVt
cygpIGlzIGNoYW5nZWQgdG8gbm9uLXN0YXRpYywgYW5kIHJlbmFtZWQgdG8KKyAgICAgICAgcmVj
YWxjTGlzdEl0ZW1zSW50ZXJuYWwoKSBpbiBvcmRlciB0byBhdm9pZCBjb25mdXNpb24gd2l0aCB0
aGUKKyAgICAgICAgZXhpc3RpbmcgcmVjYWxjTGlzdEl0ZW1zKCkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBqdXN0IGEgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBkb20vU2VsZWN0RWxlbWVu
dC5jcHA6CisgICAgICAgIE1vdmUgY2hlY2tMaXN0SXRlbXMoKSBhbmQgbGlzdEl0ZW1zKCkgdG8g
SFRNTFNlbGVjdEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RFbGVtZW50RGF0YTo6
U2VsZWN0RWxlbWVudERhdGEpOgorICAgICAgICBSZW1vdmUgSW5pdGlhbGl6YXRpb24gb2YgbV9y
ZWNhbGNMaXN0SXRlbXMuCisgICAgICAgICogZG9tL1NlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAg
TW92ZSBtX3JlY2FsY0xpc3RJdGVtcywgbV9saXN0SXRlbXMsIGFuZCByZWxhdGVkIGZ1bmN0aW9u
cyB0byBIVE1MU2VsZWN0RWxlbWVudC4KKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpIVE1MU2VsZWN0RWxl
bWVudCk6CisgICAgICAgIEluaXRpYWxpemVzIG1fcmVjYWxjTGlzdEl0ZW1zLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyk6CisgICAgICAgIFJl
bmFtZSB0aGUgc3RhdGljIHJlY2FsY0xpc3RJdGVtcygpIHRvIHJlY2FsY0xpc3RJdGVtc0ludGVy
bmFsKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0
ZW1zSWZOZWVkZWQpOgorICAgICAgICBVc2UgbV9yZWNhbGNMaXN0SXRlbXMgZGlyZWN0bHkuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bmV4dFNlbGVjdGFibGVMaXN0SW5k
ZXgpOgorICAgICAgICBVcGRhdGUgYSBsaXN0SXRlbXMoKSBjYWxsc2l0ZS4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpwcmV2aW91c1NlbGVjdGFibGVMaXN0SW5kZXgpOiBk
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpmaXJzdFNlbGVjdGFi
bGVMaXN0SW5kZXgpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
OjpsYXN0U2VsZWN0YWJsZUxpc3RJbmRleCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFNlbGVjdEVsZW1lbnQ6Om5leHRTZWxlY3RhYmxlTGlzdEluZGV4UGFnZUF3YXkpOiBkaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzYXZlTGFzdFNlbGVjdGlvbik6
IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldEFjdGl2ZVNl
bGVjdGlvbkFuY2hvckluZGV4KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6dXBkYXRlTGlzdEJveFNlbGVjdGlvbik6IGRpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hPbkNoYW5nZSk6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmNoZWNrTGlzdEl0ZW1zKToKKyAgICAgICAgTW92
ZWQgZnJvbSBTZWxlY3RFbGVtZW50RGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RF
bGVtZW50OjpsaXN0SXRlbXMpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RF
bGVtZW50OjpzZXRSZWNhbGNMaXN0SXRlbXMpOgorICAgICAgICBVc2UgbV9yZWNhbGNMaXN0SXRl
bXMgZGlyZWN0bHkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxj
TGlzdEl0ZW1zSW50ZXJuYWwpOgorICAgICAgICAtIE1ha2UgdGhpcyBub24tc3RhdGljLgorICAg
ICAgICAtIFJlbmFtZWQgZnJvbSByZWNhbGNMaXN0SXRlbXMoKSB0byBhdm9pZCBjb25maWxjdCB3
aXRoIGFub3RoZXIgcmVjYWxjTGlzdEl0ZW1zKCkuCisgICAgICAgIC0gVXNlIG1fcmVjYWxjTGlz
dEl0ZW1zIGFuZCBtX2xpc3RJdGVtcyBkaXJlY3RseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
ZWxlY3RFbGVtZW50OjpzZWxlY3RlZEluZGV4KToKKyAgICAgICAgVXBkYXRlIGEgbGlzdEl0ZW1z
KCkgY2FsbHNpdGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0U2Vs
ZWN0ZWRJbmRleEludGVybmFsKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6b3B0aW9uVG9MaXN0SW5kZXgpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTZWxlY3RFbGVtZW50OjpsaXN0VG9PcHRpb25JbmRleCk6IGRpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmRlc2VsZWN0SXRlbXNXaXRob3V0VmFsaWRhdGlvbik6
IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNhdmVGb3JtQ29u
dHJvbFN0YXRlKToKKyAgICAgICAgVXBkYXRlIGNhbGxzaXRlcyBvZiBsaXN0SXRlbXMoKSBhbmQg
cmVjYWxjTGlzdEl0ZW1zKCkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
cmVzdG9yZUZvcm1Db250cm9sU3RhdGUpOgorICAgICAgICBVcGRhdGUgYSBsaXN0SXRlbXMoKSBj
YWxsc2l0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjphcHBlbmRGb3Jt
RGF0YSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlc2V0
KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3RE
ZWZhdWx0RXZlbnRIYW5kbGVyKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0
RWxlbWVudDo6dXBkYXRlU2VsZWN0ZWRTdGF0ZSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKTogZGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bGFzdFNlbGVjdGVkTGlzdEluZGV4
KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dHlwZUFoZWFk
RmluZCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omluc2Vy
dGVkSW50b1RyZWUpOgorICAgICAgICBVcGRhdGUgYSByZWNhbGNMaXN0SXRlbXMoKSBjYWxsc2l0
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjphY2Nlc3NLZXlTZXRTZWxl
Y3RlZEluZGV4KToKKyAgICAgICAgVXBkYXRlIGEgbGlzdEl0ZW1zKCkgY2FsbHNpdGUuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6bGVuZ3RoKTogZGl0dG8uCisgICAgICAg
ICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICBNb3ZlIG1fcmVjYWxjTGlzdEl0
ZW1zLCBtX2xpc3RJdGVtcywgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gU2VsZWN0RWxlbWVu
dERhdGEuCisKIDIwMTEtMTAtMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBNb3N0IG9mIHRoZSBmdW5jdGlvbnMgaW4gQ2FjaGVkUmVzb3VyY2VDbGllbnQg
YXJlIHNwZWNpZmljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggMzRhMzNh
MDhiZDZjMzViMWNjMTI5ZTkzMGM5MWQyZjhiMWY2Y2Q5Yy4uZGVkMzgzMTRhYzZmZWY3ZDJlMDFm
YjFjOGMwYzczNzFmYTEyMTQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVj
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcApA
QCAtNjMsNyArNjMsNiBAQCBTZWxlY3RFbGVtZW50RGF0YTo6U2VsZWN0RWxlbWVudERhdGEoKQog
ICAgICwgbV91c2VyRHJpdmVuQ2hhbmdlKGZhbHNlKQogICAgICwgbV9tdWx0aXBsZShmYWxzZSkK
ICAgICAsIG1fYWN0aXZlU2VsZWN0aW9uU3RhdGUoZmFsc2UpCi0gICAgLCBtX3JlY2FsY0xpc3RJ
dGVtcyhmYWxzZSkKIHsKIH0KIApAQCAtNzEsMzUgKzcwLDQgQEAgU2VsZWN0RWxlbWVudERhdGE6
On5TZWxlY3RFbGVtZW50RGF0YSgpCiB7CiB9CiAKLXZvaWQgU2VsZWN0RWxlbWVudERhdGE6OmNo
ZWNrTGlzdEl0ZW1zKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Ci17Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAotICAgIFZlY3RvcjxFbGVtZW50Kj4gaXRlbXMgPSBtX2xpc3RJdGVtczsKLSAg
ICBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zKCpjb25zdF9jYXN0PFNlbGVjdEVs
ZW1lbnREYXRhKj4odGhpcyksIGVsZW1lbnQsIGZhbHNlKTsKLSAgICBBU1NFUlQoaXRlbXMgPT0g
bV9saXN0SXRlbXMpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7Ci0jZW5kaWYK
LX0KLQotVmVjdG9yPEVsZW1lbnQqPiYgU2VsZWN0RWxlbWVudERhdGE6Omxpc3RJdGVtcyhjb25z
dCBFbGVtZW50KiBlbGVtZW50KQotewotICAgIGlmIChtX3JlY2FsY0xpc3RJdGVtcykKLSAgICAg
ICAgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcygqdGhpcywgZWxlbWVudCk7Ci0g
ICAgZWxzZQotICAgICAgICBjaGVja0xpc3RJdGVtcyhlbGVtZW50KTsKLQotICAgIHJldHVybiBt
X2xpc3RJdGVtczsKLX0KLQotY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgU2VsZWN0RWxlbWVudERh
dGE6Omxpc3RJdGVtcyhjb25zdCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIGlmICht
X3JlY2FsY0xpc3RJdGVtcykKLSAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJ
dGVtcygqY29uc3RfY2FzdDxTZWxlY3RFbGVtZW50RGF0YSo+KHRoaXMpLCBlbGVtZW50KTsKLSAg
ICBlbHNlCi0gICAgICAgIGNoZWNrTGlzdEl0ZW1zKGVsZW1lbnQpOwotCi0gICAgcmV0dXJuIG1f
bGlzdEl0ZW1zOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaAppbmRleCAzZmU1
NmE2ZDRmZTgwNWQzNmJmMGE4NDQwYjgzZTdmYjI4ZWY1ZDQ4Li5hNzIyMGU1NjYyMDY0MjBhYTU2
ZTcxMThlMDJhNGI0YzM2ZTQ5ODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Vs
ZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmgKQEAg
LTczLDEzICs3Myw2IEBAIHB1YmxpYzoKIAogICAgIFZlY3Rvcjxib29sPiYgY2FjaGVkU3RhdGVG
b3JBY3RpdmVTZWxlY3Rpb24oKSB7IHJldHVybiBtX2NhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0
aW9uOyB9CiAKLSAgICBib29sIHNob3VsZFJlY2FsY0xpc3RJdGVtcygpIGNvbnN0IHsgcmV0dXJu
IG1fcmVjYWxjTGlzdEl0ZW1zOyB9Ci0gICAgdm9pZCBzZXRTaG91bGRSZWNhbGNMaXN0SXRlbXMo
Ym9vbCB2YWx1ZSkgeyBtX3JlY2FsY0xpc3RJdGVtcyA9IHZhbHVlOyB9Ci0KLSAgICBWZWN0b3I8
RWxlbWVudCo+JiByYXdMaXN0SXRlbXMoKSB7IHJldHVybiBtX2xpc3RJdGVtczsgfQotICAgIFZl
Y3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyhjb25zdCBFbGVtZW50Kik7Ci0gICAgY29uc3QgVmVj
dG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zKGNvbnN0IEVsZW1lbnQqKSBjb25zdDsKLQogICAgIFVD
aGFyIHJlcGVhdGluZ0NoYXIoKSBjb25zdCB7IHJldHVybiBtX3JlcGVhdGluZ0NoYXI7IH0KICAg
ICB2b2lkIHNldFJlcGVhdGluZ0NoYXIoY29uc3QgVUNoYXImIHZhbHVlKSB7IG1fcmVwZWF0aW5n
Q2hhciA9IHZhbHVlOyB9CiAKQEAgLTkyLDcgKzg1LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB2b2lkIGNoZWNrTGlzdEl0ZW1zKGNvbnN0IEVsZW1lbnQqKSBjb25zdDsKIAotICAgIFZlY3Rv
cjxFbGVtZW50Kj4gbV9saXN0SXRlbXM7CiAgICAgVmVjdG9yPGJvb2w+IG1fbGFzdE9uQ2hhbmdl
U2VsZWN0aW9uOwogICAgIFZlY3Rvcjxib29sPiBtX2NhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0
aW9uOwogCkBAIC0xMDksNyArMTAxLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdXNlckRyaXZl
bkNoYW5nZTsKICAgICBib29sIG1fbXVsdGlwbGU7CiAgICAgYm9vbCBtX2FjdGl2ZVNlbGVjdGlv
blN0YXRlOwotICAgIGJvb2wgbV9yZWNhbGNMaXN0SXRlbXM7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDk5Yzg0MmI2NTM5ZjhkZmZmNzkx
OWIyYzA2NzM5NDYxNTNhYmFkMDUuLjliYTExY2Q3MGJmNTE0M2NhMzIwZDU1N2Y1MjM3MTk5Y2Uw
NDc2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC03
Niw2ICs3Niw3IEBAIHN0YXRpYyBjb25zdCBET01UaW1lU3RhbXAgdHlwZUFoZWFkVGltZW91dCA9
IDEwMDA7CiAKIEhUTUxTZWxlY3RFbGVtZW50OjpIVE1MU2VsZWN0RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCog
Zm9ybSkKICAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUodGFnTmFtZSwgZG9j
dW1lbnQsIGZvcm0pCisgICAgLCBtX3JlY2FsY0xpc3RJdGVtcyhmYWxzZSkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShzZWxlY3RUYWcpKTsKIH0KQEAgLTMxNCwxMiArMzE1LDEyIEBAIFBhc3NS
ZWZQdHI8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPiBIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9ucygp
CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyhib29sIHVwZGF0ZVNl
bGVjdGVkU3RhdGVzKSBjb25zdAogewotICAgIHJlY2FsY0xpc3RJdGVtcyhjb25zdF9jYXN0PFNl
bGVjdEVsZW1lbnREYXRhJj4obV9kYXRhKSwgdGhpcywgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMpOwor
ICAgIGNvbnN0X2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPih0aGlzKS0+cmVjYWxjTGlzdEl0ZW1z
SW50ZXJuYWwodXBkYXRlU2VsZWN0ZWRTdGF0ZXMpOwogfQogCiB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpyZWNhbGNMaXN0SXRlbXNJZk5lZWRlZCgpCiB7Ci0gICAgaWYgKG1fZGF0YS5zaG91bGRS
ZWNhbGNMaXN0SXRlbXMoKSkKKyAgICBpZiAobV9yZWNhbGNMaXN0SXRlbXMpCiAgICAgICAgIHJl
Y2FsY0xpc3RJdGVtcygpOwogfQogCkBAIC00NTYsMTkgKzQ1NywxOSBAQCBpbnQgSFRNTFNlbGVj
dEVsZW1lbnQ6Om5leHRWYWxpZEluZGV4KGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVt
cywgaW50IGxpcwogCiBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6Om5leHRTZWxlY3RhYmxlTGlzdElu
ZGV4KGludCBzdGFydEluZGV4KSBjb25zdAogewotICAgIHJldHVybiBuZXh0VmFsaWRJbmRleCht
X2RhdGEubGlzdEl0ZW1zKHRoaXMpLCBzdGFydEluZGV4LCBTa2lwRm9yd2FyZHMsIDEpOworICAg
IHJldHVybiBuZXh0VmFsaWRJbmRleChsaXN0SXRlbXMoKSwgc3RhcnRJbmRleCwgU2tpcEZvcndh
cmRzLCAxKTsKIH0KIAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpwcmV2aW91c1NlbGVjdGFibGVM
aXN0SW5kZXgoaW50IHN0YXJ0SW5kZXgpIGNvbnN0CiB7CiAgICAgaWYgKHN0YXJ0SW5kZXggPT0g
LTEpCi0gICAgICAgIHN0YXJ0SW5kZXggPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpLnNpemUoKTsK
LSAgICByZXR1cm4gbmV4dFZhbGlkSW5kZXgobV9kYXRhLmxpc3RJdGVtcyh0aGlzKSwgc3RhcnRJ
bmRleCwgU2tpcEJhY2t3YXJkcywgMSk7CisgICAgICAgIHN0YXJ0SW5kZXggPSBsaXN0SXRlbXMo
KS5zaXplKCk7CisgICAgcmV0dXJuIG5leHRWYWxpZEluZGV4KGxpc3RJdGVtcygpLCBzdGFydElu
ZGV4LCBTa2lwQmFja3dhcmRzLCAxKTsKIH0KIAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpmaXJz
dFNlbGVjdGFibGVMaXN0SW5kZXgoKSBjb25zdAogewotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50
Kj4mIGl0ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8RWxl
bWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGludCBpbmRleCA9IG5leHRWYWxpZElu
ZGV4KGl0ZW1zLCBpdGVtcy5zaXplKCksIFNraXBCYWNrd2FyZHMsIElOVF9NQVgpOwogICAgIGlm
IChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpID09IGl0ZW1zLnNpemUoKSkKICAgICAgICAg
cmV0dXJuIC0xOwpAQCAtNDc3LDEzICs0NzgsMTMgQEAgaW50IEhUTUxTZWxlY3RFbGVtZW50Ojpm
aXJzdFNlbGVjdGFibGVMaXN0SW5kZXgoKSBjb25zdAogCiBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6
Omxhc3RTZWxlY3RhYmxlTGlzdEluZGV4KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbmV4dFZhbGlk
SW5kZXgobV9kYXRhLmxpc3RJdGVtcyh0aGlzKSwgLTEsIFNraXBGb3J3YXJkcywgSU5UX01BWCk7
CisgICAgcmV0dXJuIG5leHRWYWxpZEluZGV4KGxpc3RJdGVtcygpLCAtMSwgU2tpcEZvcndhcmRz
LCBJTlRfTUFYKTsKIH0KIAogLy8gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG5leHQgdmFsaWQg
aXRlbSBvbmUgcGFnZSBhd2F5IGZyb20gfHN0YXJ0SW5kZXh8IGluIGRpcmVjdGlvbiB8ZGlyZWN0
aW9ufC4KIGludCBIVE1MU2VsZWN0RWxlbWVudDo6bmV4dFNlbGVjdGFibGVMaXN0SW5kZXhQYWdl
QXdheShpbnQgc3RhcnRJbmRleCwgU2tpcERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7Ci0g
ICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMp
OworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAg
Ly8gQ2FuJ3QgdXNlIGRhdGEtPnNpemUoKSBiZWNhdXNlIHJlbmRlcmVyIGZvcmNlcyBhIG1pbmlt
dW0gc2l6ZS4KICAgICBpbnQgcGFnZVNpemUgPSAwOwogICAgIGlmIChyZW5kZXJlcigpLT5pc0xp
c3RCb3goKSkKQEAgLTUyNiw3ICs1MjcsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzYXZl
TGFzdFNlbGVjdGlvbigpCiAgICAgVmVjdG9yPGJvb2w+JiBsYXN0T25DaGFuZ2VTZWxlY3Rpb24g
PSBtX2RhdGEubGFzdE9uQ2hhbmdlU2VsZWN0aW9uKCk7IAogICAgIGxhc3RPbkNoYW5nZVNlbGVj
dGlvbi5jbGVhcigpOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBtX2Rh
dGEubGlzdEl0ZW1zKHRoaXMpOworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0g
bGlzdEl0ZW1zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0b09wdGlvbkVs
ZW1lbnQoaXRlbXNbaV0pOwogICAgICAgICBsYXN0T25DaGFuZ2VTZWxlY3Rpb24uYXBwZW5kKG9w
dGlvbkVsZW1lbnQgJiYgb3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKSk7CkBAIC01NDIsNyArNTQz
LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0QWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5k
ZXgoaW50IGluZGV4KQogICAgIFZlY3Rvcjxib29sPiYgY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxl
Y3Rpb24gPSBtX2RhdGEuY2FjaGVkU3RhdGVGb3JBY3RpdmVTZWxlY3Rpb24oKTsgCiAgICAgY2Fj
aGVkU3RhdGVGb3JBY3RpdmVTZWxlY3Rpb24uY2xlYXIoKTsKIAotICAgIGNvbnN0IFZlY3RvcjxF
bGVtZW50Kj4mIGl0ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0
b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBPcHRpb25FbGVtZW50KiBvcHRp
b25FbGVtZW50ID0gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2ldKTsKICAgICAgICAgY2FjaGVkU3Rh
dGVGb3JBY3RpdmVTZWxlY3Rpb24uYXBwZW5kKG9wdGlvbkVsZW1lbnQgJiYgb3B0aW9uRWxlbWVu
dC0+c2VsZWN0ZWQoKSk7CkBAIC01NTcsMTMgKzU1OCwxMyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpzZXRBY3RpdmVTZWxlY3Rpb25FbmRJbmRleChpbnQgaW5kZXgpCiB2b2lkIEhUTUxTZWxl
Y3RFbGVtZW50Ojp1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKGJvb2wgZGVzZWxlY3RPdGhlck9wdGlv
bnMpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmVyKCkgJiYgKHJlbmRlcmVyKCktPmlzTGlzdEJveCgp
IHx8IG1fZGF0YS5tdWx0aXBsZSgpKSk7Ci0gICAgQVNTRVJUKCFtX2RhdGEubGlzdEl0ZW1zKHRo
aXMpLnNpemUoKSB8fCBtX2RhdGEuYWN0aXZlU2VsZWN0aW9uQW5jaG9ySW5kZXgoKSA+PSAwKTsK
KyAgICBBU1NFUlQoIWxpc3RJdGVtcygpLnNpemUoKSB8fCBtX2RhdGEuYWN0aXZlU2VsZWN0aW9u
QW5jaG9ySW5kZXgoKSA+PSAwKTsKIAogICAgIHVuc2lnbmVkIHN0YXJ0ID0gbWluKG1fZGF0YS5h
Y3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCgpLCBtX2RhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5k
ZXgoKSk7CiAgICAgdW5zaWduZWQgZW5kID0gbWF4KG1fZGF0YS5hY3RpdmVTZWxlY3Rpb25BbmNo
b3JJbmRleCgpLCBtX2RhdGEuYWN0aXZlU2VsZWN0aW9uRW5kSW5kZXgoKSk7CiAgICAgVmVjdG9y
PGJvb2w+JiBjYWNoZWRTdGF0ZUZvckFjdGl2ZVNlbGVjdGlvbiA9IG1fZGF0YS5jYWNoZWRTdGF0
ZUZvckFjdGl2ZVNlbGVjdGlvbigpOwogCi0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRl
bXMgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpOworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4m
IGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1z
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0
b09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pOwogICAgICAgICBpZiAoIW9wdGlvbkVsZW1lbnQgfHwg
aXRlbXNbaV0tPmRpc2FibGVkKCkpCkBAIC01ODYsNyArNTg3LDcgQEAgdm9pZCBIVE1MU2VsZWN0
RWxlbWVudDo6bGlzdEJveE9uQ2hhbmdlKCkKICAgICBBU1NFUlQoIW1fZGF0YS51c2VzTWVudUxp
c3QoKSB8fCBtX2RhdGEubXVsdGlwbGUoKSk7CiAKICAgICBWZWN0b3I8Ym9vbD4mIGxhc3RPbkNo
YW5nZVNlbGVjdGlvbiA9IG1fZGF0YS5sYXN0T25DaGFuZ2VTZWxlY3Rpb24oKTsgCi0gICAgY29u
c3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpOworICAg
IGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAKICAgICAvLyBJ
ZiB0aGUgY2FjaGVkIHNlbGVjdGlvbiBsaXN0IGlzIGVtcHR5LCBvciB0aGUgc2l6ZSBoYXMgY2hh
bmdlZCwgdGhlbiBmaXJlCiAgICAgLy8gZGlzcGF0Y2hGb3JtQ29udHJvbENoYW5nZUV2ZW50LCBh
bmQgcmV0dXJuIGVhcmx5LgpAQCAtNjQwLDkgKzY0MSwyOCBAQCB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoKQogICAgIH0KIH0KIAordm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6Y2hlY2tMaXN0SXRlbXMoKSBjb25zdAoreworI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICBWZWN0b3I8RWxlbWVudCo+IGl0ZW1zID0gbV9saXN0SXRlbXM7CisgICAgY29u
c3RfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KHRoaXMpLT5yZWNhbGNMaXN0SXRlbXNJbnRlcm5h
bChmYWxzZSk7CisgICAgQVNTRVJUKGl0ZW1zID09IG1fbGlzdEl0ZW1zKTsKKyNlbmRpZgorfQor
Citjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEl0ZW1zKCkg
Y29uc3QKK3sKKyAgICBpZiAobV9yZWNhbGNMaXN0SXRlbXMpCisgICAgICAgIGNvbnN0X2Nhc3Q8
SFRNTFNlbGVjdEVsZW1lbnQqPih0aGlzKS0+cmVjYWxjTGlzdEl0ZW1zSW50ZXJuYWwoZmFsc2Up
OworICAgIGVsc2UKKyAgICAgICAgY2hlY2tMaXN0SXRlbXMoKTsKKworICAgIHJldHVybiBtX2xp
c3RJdGVtczsKK30KKwogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0UmVjYWxjTGlzdEl0ZW1z
KCkKIHsKLSAgICBtX2RhdGEuc2V0U2hvdWxkUmVjYWxjTGlzdEl0ZW1zKHRydWUpOworICAgIG1f
cmVjYWxjTGlzdEl0ZW1zID0gdHJ1ZTsKICAgICAvLyBNYW51YWwgc2VsZWN0aW9uIGFuY2hvciBp
cyByZXNldCB3aGVuIG1hbmlwdWxhdGluZyB0aGUgc2VsZWN0IHByb2dyYW1tYXRpY2FsbHkuCiAg
ICAgbV9kYXRhLnNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KC0xKTsKICAgICBzZXRPcHRp
b25zQ2hhbmdlZE9uUmVuZGVyZXIoKTsKQEAgLTY1MSwxNyArNjcxLDE2IEBAIHZvaWQgSFRNTFNl
bGVjdEVsZW1lbnQ6OnNldFJlY2FsY0xpc3RJdGVtcygpCiAgICAgICAgIG1fY29sbGVjdGlvbklu
Zm8ucmVzZXQoKTsKIH0KIAotdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1z
KFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBjb25zdCBFbGVtZW50KiBlbGVtZW50LCBib29sIHVw
ZGF0ZVNlbGVjdGVkU3RhdGVzKQordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0
ZW1zSW50ZXJuYWwoYm9vbCB1cGRhdGVTZWxlY3RlZFN0YXRlcykKIHsKLSAgICBWZWN0b3I8RWxl
bWVudCo+JiBsaXN0SXRlbXMgPSBkYXRhLnJhd0xpc3RJdGVtcygpOwotICAgIGxpc3RJdGVtcy5j
bGVhcigpOworICAgIG1fbGlzdEl0ZW1zLmNsZWFyKCk7CiAKLSAgICBkYXRhLnNldFNob3VsZFJl
Y2FsY0xpc3RJdGVtcyhmYWxzZSk7CisgICAgbV9yZWNhbGNMaXN0SXRlbXMgPSBmYWxzZTsKIAog
ICAgIE9wdGlvbkVsZW1lbnQqIGZvdW5kU2VsZWN0ZWQgPSAwOwotICAgIGZvciAoTm9kZSogY3Vy
cmVudE5vZGUgPSBlbGVtZW50LT5maXJzdENoaWxkKCk7IGN1cnJlbnROb2RlOykgeworICAgIGZv
ciAoTm9kZSogY3VycmVudE5vZGUgPSB0aGlzLT5maXJzdENoaWxkKCk7IGN1cnJlbnROb2RlOykg
ewogICAgICAgICBpZiAoIWN1cnJlbnROb2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAg
ICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnRyYXZlcnNlTmV4dFNpYmxpbmcoZWxlbWVu
dCk7CisgICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLT50cmF2ZXJzZU5leHRT
aWJsaW5nKHRoaXMpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtNjcx
LDcgKzY5MCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyhTZWxl
Y3RFbGVtZW50RGF0YSYgZGF0YSwgY29uc3QgRWxlbWVudCoKICAgICAgICAgLy8gZmxhdHRlbiB0
aGUgdHJlZSBhdXRvbWF0aWNhbGx5LCBzbyB3ZSBmb2xsb3cgc3VpdC4KICAgICAgICAgLy8gKGh0
dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0MDEvaW50ZXJhY3QvZm9ybXMuaHRtbCNoLTE3LjYpCiAg
ICAgICAgIGlmIChpc09wdGlvbkdyb3VwRWxlbWVudChjdXJyZW50KSkgewotICAgICAgICAgICAg
bGlzdEl0ZW1zLmFwcGVuZChjdXJyZW50KTsKKyAgICAgICAgICAgIG1fbGlzdEl0ZW1zLmFwcGVu
ZChjdXJyZW50KTsKICAgICAgICAgICAgIGlmIChjdXJyZW50LT5maXJzdENoaWxkKCkpIHsKICAg
ICAgICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnQtPmZpcnN0Q2hpbGQoKTsKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTY3OSwxMCArNjk4LDEwIEBAIHZvaWQgSFRNTFNlbGVj
dEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyhTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgY29uc3Qg
RWxlbWVudCoKICAgICAgICAgfQogCiAgICAgICAgIGlmIChPcHRpb25FbGVtZW50KiBvcHRpb25F
bGVtZW50ID0gdG9PcHRpb25FbGVtZW50KGN1cnJlbnQpKSB7Ci0gICAgICAgICAgICBsaXN0SXRl
bXMuYXBwZW5kKGN1cnJlbnQpOworICAgICAgICAgICAgbV9saXN0SXRlbXMuYXBwZW5kKGN1cnJl
bnQpOwogCi0gICAgICAgICAgICBpZiAodXBkYXRlU2VsZWN0ZWRTdGF0ZXMgJiYgIWRhdGEubXVs
dGlwbGUoKSkgewotICAgICAgICAgICAgICAgIGlmICghZm91bmRTZWxlY3RlZCAmJiAoZGF0YS5z
aXplKCkgPD0gMSB8fCBvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgpKSkgeworICAgICAgICAgICAg
aWYgKHVwZGF0ZVNlbGVjdGVkU3RhdGVzICYmICFtX2RhdGEubXVsdGlwbGUoKSkgeworICAgICAg
ICAgICAgICAgIGlmICghZm91bmRTZWxlY3RlZCAmJiAobV9kYXRhLnNpemUoKSA8PSAxIHx8IG9w
dGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2Vs
ZWN0ZWQgPSBvcHRpb25FbGVtZW50OwogICAgICAgICAgICAgICAgICAgICBmb3VuZFNlbGVjdGVk
LT5zZXRTZWxlY3RlZFN0YXRlKHRydWUpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm91
bmRTZWxlY3RlZCAmJiBvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgpKSB7CkBAIC02OTMsNyArNzEy
LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zKFNlbGVjdEVsZW1l
bnREYXRhJiBkYXRhLCBjb25zdCBFbGVtZW50KgogICAgICAgICB9CiAKICAgICAgICAgaWYgKGN1
cnJlbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpoclRhZykpCi0gICAgICAgICAgICBsaXN0SXRl
bXMuYXBwZW5kKGN1cnJlbnQpOworICAgICAgICAgICAgbV9saXN0SXRlbXMuYXBwZW5kKGN1cnJl
bnQpOwogCiAgICAgICAgIC8vIEluIGNvbmZvcm1pbmcgSFRNTCBjb2RlLCBvbmx5IDxvcHRncm91
cD4gYW5kIDxvcHRpb24+IHdpbGwgYmUgZm91bmQKICAgICAgICAgLy8gd2l0aGluIGEgPHNlbGVj
dD4uIFdlIGNhbGwgdHJhdmVyc2VOZXh0U2libGluZyBzbyB0aGF0IHdlIG9ubHkgc3RlcApAQCAt
NzAxLDcgKzcyMCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyhT
ZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgY29uc3QgRWxlbWVudCoKICAgICAgICAgLy8gd2l0aCB0
aGUgY2FzZSB3aGVyZSBvZGQgdGFncyBsaWtlIGEgPGRpdj4gaGF2ZSBiZWVuIGFkZGVkIGJ1dCB3
ZQogICAgICAgICAvLyBoYW5kbGUgdGhpcyBiZWNhdXNlIHN1Y2ggdGFncyBoYXZlIGFscmVhZHkg
YmVlbiByZW1vdmVkIGZyb20gdGhlCiAgICAgICAgIC8vIDxzZWxlY3Q+J3Mgc3VidHJlZSBhdCB0
aGlzIHBvaW50LgotICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLT50cmF2ZXJzZU5l
eHRTaWJsaW5nKGVsZW1lbnQpOworICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLT50
cmF2ZXJzZU5leHRTaWJsaW5nKHRoaXMpOwogICAgIH0KIH0KIApAQCAtNzEwLDcgKzcyOSw3IEBA
IGludCBIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0ZWRJbmRleCgpIGNvbnN0CiAgICAgdW5zaWdu
ZWQgaW5kZXggPSAwOwogCiAgICAgLy8gcmV0dXJuIHRoZSBudW1iZXIgb2YgdGhlIGZpcnN0IG9w
dGlvbiBzZWxlY3RlZAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbV9kYXRh
Lmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxp
c3RJdGVtcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgaWYgKE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0b09wdGlvbkVs
ZW1lbnQoaXRlbXNbaV0pKSB7CiAgICAgICAgICAgICBpZiAob3B0aW9uRWxlbWVudC0+c2VsZWN0
ZWQoKSkKQEAgLTcyOSw3ICs3NDgsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRTZWxl
Y3RlZEluZGV4SW50ZXJuYWwoaW50IG9wdGlvbkluZGV4LCBib29sIGRlc2VsZWN0LAogICAgIGlm
ICghbV9kYXRhLm11bHRpcGxlKCkpCiAgICAgICAgIGRlc2VsZWN0ID0gdHJ1ZTsKIAotICAgIGNv
bnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAg
ICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGludCBs
aXN0SW5kZXggPSBvcHRpb25Ub0xpc3RJbmRleChvcHRpb25JbmRleCk7CiAKICAgICBFbGVtZW50
KiBleGNsdWRlRWxlbWVudCA9IDA7CkBAIC03NzIsNyArNzkxLDcgQEAgdm9pZCBIVE1MU2VsZWN0
RWxlbWVudDo6c2V0U2VsZWN0ZWRJbmRleEludGVybmFsKGludCBvcHRpb25JbmRleCwgYm9vbCBk
ZXNlbGVjdCwKIAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25Ub0xpc3RJbmRleChpbnQg
b3B0aW9uSW5kZXgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMg
PSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpOworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0
ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgaW50IGxpc3RTaXplID0gc3RhdGljX2Nhc3Q8aW50Pihp
dGVtcy5zaXplKCkpOwogICAgIGlmIChvcHRpb25JbmRleCA8IDAgfHwgb3B0aW9uSW5kZXggPj0g
bGlzdFNpemUpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTc5MSw3ICs4MTAsNyBAQCBpbnQgSFRN
TFNlbGVjdEVsZW1lbnQ6Om9wdGlvblRvTGlzdEluZGV4KGludCBvcHRpb25JbmRleCkgY29uc3QK
IAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0VG9PcHRpb25JbmRleChpbnQgbGlzdEluZGV4
KSBjb25zdAogewotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbV9kYXRhLmxp
c3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJ
dGVtcygpOwogICAgIGlmIChsaXN0SW5kZXggPCAwIHx8IGxpc3RJbmRleCA+PSBzdGF0aWNfY2Fz
dDxpbnQ+KGl0ZW1zLnNpemUoKSkgfHwgIWlzT3B0aW9uRWxlbWVudChpdGVtc1tsaXN0SW5kZXhd
KSkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC04MjYsNyArODQ1LDcgQEAgdm9pZCBIVE1MU2Vs
ZWN0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiBuZXdGb2N1c2Vk
Tm9kZSkKIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6ZGVzZWxlY3RJdGVtc1dpdGhvdXRWYWxp
ZGF0aW9uKEVsZW1lbnQqIGV4Y2x1ZGVFbGVtZW50KQogewotICAgIGNvbnN0IFZlY3RvcjxFbGVt
ZW50Kj4mIGl0ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8
RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoaXRlbXNbaV0gPT0gZXhjbHVk
ZUVsZW1lbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTgzOCw3ICs4NTcsNyBAQCB2b2lk
IEhUTUxTZWxlY3RFbGVtZW50OjpkZXNlbGVjdEl0ZW1zV2l0aG91dFZhbGlkYXRpb24oRWxlbWVu
dCogZXhjbHVkZUVsZW1lbnQpCiAKIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OnNhdmVGb3JtQ29u
dHJvbFN0YXRlKFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1l
bnQqPiYgaXRlbXMgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpOworICAgIGNvbnN0IFZlY3RvcjxF
bGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgaW50IGxlbmd0aCA9IGl0ZW1zLnNp
emUoKTsKIAogICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhpcyBjb2RlIHRvIHVzZSB0aGUgbmV3IFN0
cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQgY29kZSBwYXRoLgpAQCAtODU1LDkgKzg3NCw5
IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OnNhdmVGb3JtQ29udHJvbFN0YXRlKFN0cmluZyYg
dmFsdWUpIGNvbnN0CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlc3RvcmVGb3JtQ29udHJv
bFN0YXRlKGNvbnN0IFN0cmluZyYgc3RhdGUpCiB7Ci0gICAgcmVjYWxjTGlzdEl0ZW1zKG1fZGF0
YSwgdGhpcyk7CisgICAgcmVjYWxjTGlzdEl0ZW1zKCk7CiAKLSAgICBjb25zdCBWZWN0b3I8RWxl
bWVudCo+JiBpdGVtcyA9IG1fZGF0YS5saXN0SXRlbXModGhpcyk7CisgICAgY29uc3QgVmVjdG9y
PEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBpbnQgbGVuZ3RoID0gaXRlbXMu
c2l6ZSgpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewpAQCAtODg1
LDcgKzkwNCw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKEZvcm1E
YXRhTGlzdCYgbGlzdCwgYm9vbCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBz
dWNjZXNzZnVsID0gZmFsc2U7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBt
X2RhdGEubGlzdEl0ZW1zKHRoaXMpOworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1z
ID0gbGlzdEl0ZW1zKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0
aW9uRWxlbWVudChpdGVtc1tpXSk7CkBAIC05MDYsNyArOTI1LDcgQEAgdm9pZCBIVE1MU2VsZWN0
RWxlbWVudDo6cmVzZXQoKQogICAgIE9wdGlvbkVsZW1lbnQqIGZpcnN0T3B0aW9uID0gMDsKICAg
ICBPcHRpb25FbGVtZW50KiBzZWxlY3RlZE9wdGlvbiA9IDA7CiAKLSAgICBjb25zdCBWZWN0b3I8
RWxlbWVudCo+JiBpdGVtcyA9IG1fZGF0YS5saXN0SXRlbXModGhpcyk7CisgICAgY29uc3QgVmVj
dG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxlbWVudCogb3B0
aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSk7CiAgICAgICAgIGlmICghb3B0
aW9uRWxlbWVudCkKQEAgLTk4MCw3ICs5OTksNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojpt
ZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogCiAgICAgICAgIGNvbnN0
IFN0cmluZyYga2V5SWRlbnRpZmllciA9IHN0YXRpY19jYXN0PEtleWJvYXJkRXZlbnQqPihldmVu
dCktPmtleUlkZW50aWZpZXIoKTsKICAgICAgICAgYm9vbCBoYW5kbGVkID0gdHJ1ZTsKLSAgICAg
ICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0
aGlzKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gdGhpcy0+
bGlzdEl0ZW1zKCk7CiAgICAgICAgIGludCBsaXN0SW5kZXggPSBvcHRpb25Ub0xpc3RJbmRleChz
ZWxlY3RlZEluZGV4KCkpOwogCiAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09ICJEb3duIiB8
fCBrZXlJZGVudGlmaWVyID09ICJSaWdodCIpCkBAIC0xMTA4LDcgKzExMjcsNyBAQCB2b2lkIEhU
TUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVTZWxlY3RlZFN0YXRlKGludCBsaXN0SW5kZXgsIGJvb2wg
bXVsdGksIGJvb2wgc2hpZgogICAgIGJvb2wgc2hpZnRTZWxlY3QgPSBtX2RhdGEubXVsdGlwbGUo
KSAmJiBzaGlmdDsKICAgICBib29sIG11bHRpU2VsZWN0ID0gbV9kYXRhLm11bHRpcGxlKCkgJiYg
bXVsdGkgJiYgIXNoaWZ0OwogCi0gICAgRWxlbWVudCogY2xpY2tlZEVsZW1lbnQgPSBtX2RhdGEu
bGlzdEl0ZW1zKHRoaXMpW2xpc3RJbmRleF07CisgICAgRWxlbWVudCogY2xpY2tlZEVsZW1lbnQg
PSBsaXN0SXRlbXMoKVtsaXN0SW5kZXhdOwogICAgIE9wdGlvbkVsZW1lbnQqIG9wdGlvbiA9IHRv
T3B0aW9uRWxlbWVudChjbGlja2VkRWxlbWVudCk7CiAgICAgaWYgKG9wdGlvbikgewogICAgICAg
ICAvLyBLZWVwIHRyYWNrIG9mIHdoZXRoZXIgYW4gYWN0aXZlIHNlbGVjdGlvbiAobGlrZSBkdXJp
bmcgZHJhZwpAQCAtMTE0OCw3ICsxMTY3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBk
YXRlU2VsZWN0ZWRTdGF0ZShpbnQgbGlzdEluZGV4LCBib29sIG11bHRpLCBib29sIHNoaWYKIAog
dm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
IGV2ZW50KQogewotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IG1fZGF0
YS5saXN0SXRlbXModGhpcyk7CisgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1z
ID0gdGhpcy0+bGlzdEl0ZW1zKCk7CiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2Vkb3duRXZlbnQgJiYgZXZlbnQtPmlzTW91c2VFdmVudCgpICYmIHN0YXRpY19j
YXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpID09IExlZnRCdXR0b24pIHsKICAgICAg
ICAgZm9jdXMoKTsKQEAgLTEzMDYsNyArMTMyNSw3IEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6
bGFzdFNlbGVjdGVkTGlzdEluZGV4KCkgY29uc3QKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGl0
ZXJhdGUgdGhlIGxpc3RJdGVtcyBpbiB0aGUgcmV2ZXJzZSBvcmRlci4KICAgICB1bnNpZ25lZCBp
bmRleCA9IDA7CiAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAgIGNvbnN0IFZlY3RvcjxFbGVt
ZW50Kj4mIGl0ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8
RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKE9wdGlvbkVsZW1lbnQqIG9wdGlv
bkVsZW1lbnQgPSB0b09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pKSB7CiAgICAgICAgICAgICBpZiAo
b3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKSkgewpAQCAtMTM2Miw3ICsxMzgxLDcgQEAgdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6dHlwZUFoZWFkRmluZChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbV9k
YXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9
IGxpc3RJdGVtcygpOwogICAgIGludCBpdGVtQ291bnQgPSBpdGVtcy5zaXplKCk7CiAgICAgaWYg
KGl0ZW1Db3VudCA8IDEpCiAgICAgICAgIHJldHVybjsKQEAgLTE0MDAsNyArMTQxOSw3IEBAIHZv
aWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoYm9vbCBkZWVwKQogICAgIC8v
IFdoZW4gdGhlIGVsZW1lbnQgaXMgY3JlYXRlZCBkdXJpbmcgZG9jdW1lbnQgcGFyc2luZywgaXQg
d29uJ3QgaGF2ZSBhbnkKICAgICAvLyBpdGVtcyB5ZXQgLSBidXQgZm9yIGlubmVySFRNTCBhbmQg
cmVsYXRlZCBtZXRob2RzLCB0aGlzIG1ldGhvZCBpcyBjYWxsZWQKICAgICAvLyBhZnRlciB0aGUg
d2hvbGUgc3VidHJlZSBpcyBjb25zdHJ1Y3RlZC4KLSAgICByZWNhbGNMaXN0SXRlbXMobV9kYXRh
LCB0aGlzLCB0cnVlKTsKKyAgICByZWNhbGNMaXN0SXRlbXModHJ1ZSk7CiAgICAgSFRNTEZvcm1D
b250cm9sRWxlbWVudFdpdGhTdGF0ZTo6aW5zZXJ0ZWRJbnRvVHJlZShkZWVwKTsKIH0KIApAQCAt
MTQxMSw3ICsxNDMwLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6YWNjZXNzS2V5U2V0U2Vs
ZWN0ZWRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgIGFjY2Vzc0tleUFjdGlvbihmYWxzZSk7CiAg
ICAgCiAgICAgLy8gaWYgdGhpcyBpbmRleCBpcyBhbHJlYWR5IHNlbGVjdGVkLCB1bnNlbGVjdC4g
b3RoZXJ3aXNlIHVwZGF0ZSB0aGUgc2VsZWN0ZWQgaW5kZXgKLSAgICBjb25zdCBWZWN0b3I8RWxl
bWVudCo+JiBpdGVtcyA9IG1fZGF0YS5saXN0SXRlbXModGhpcyk7CisgICAgY29uc3QgVmVjdG9y
PEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBpbnQgbGlzdEluZGV4ID0gb3B0
aW9uVG9MaXN0SW5kZXgoaW5kZXgpOwogICAgIGlmIChPcHRpb25FbGVtZW50KiBvcHRpb25FbGVt
ZW50ID0gKGxpc3RJbmRleCA+PSAwID8gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2xpc3RJbmRleF0p
IDogMCkpIHsKICAgICAgICAgaWYgKG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkpCkBAIC0xNDMy
LDcgKzE0NTEsNyBAQCB1bnNpZ25lZCBIVE1MU2VsZWN0RWxlbWVudDo6bGVuZ3RoKCkgY29uc3QK
IHsKICAgICB1bnNpZ25lZCBvcHRpb25zID0gMDsKIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50
Kj4mIGl0ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8RWxl
bWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoaXNPcHRpb25FbGVtZW50KGl0ZW1z
W2ldKSkKICAgICAgICAgICAgICsrb3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuaAppbmRleCA1MjJjMzUxYWU5NmM2NDc4MTE3M2NmZjVjYjY0YmEzZWRlYTk1M2Ix
Li4zOGQwMzJjODliZGFkMDUwNTNjY2JkYTI5ZjNiNGFhNjBjNWExZTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
RXZlbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAi
U2VsZWN0RWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC02Niw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlY2FsY0xp
c3RJdGVtcygpOwogICAgIHZvaWQgcmVjYWxjTGlzdEl0ZW1zSWZOZWVkZWQoKTsKIAotICAgIGNv
bnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5s
aXN0SXRlbXModGhpcyk7IH0KKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMo
KSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kVG9B
bnlFbGVtZW50KTsKICAgICB2b2lkIGFjY2Vzc0tleVNldFNlbGVjdGVkSW5kZXgoaW50KTsKQEAg
LTE0Myw3ICsxNDQsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBoYXNQbGFjZWhvbGRlckxhYmVs
T3B0aW9uKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgdm9pZCByZWNhbGNMaXN0SXRlbXMoU2VsZWN0
RWxlbWVudERhdGEmLCBjb25zdCBFbGVtZW50KiwgYm9vbCB1cGRhdGVTZWxlY3RlZFN0YXRlcyA9
IHRydWUpOworICAgIHZvaWQgY2hlY2tMaXN0SXRlbXMoKSBjb25zdDsKKyAgICB2b2lkIHJlY2Fs
Y0xpc3RJdGVtc0ludGVybmFsKGJvb2wgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMgPSB0cnVlKTsKICAg
ICB2b2lkIHNldFNlbGVjdGVkSW5kZXhJbnRlcm5hbChpbnQgb3B0aW9uSW5kZXgsIGJvb2wgZGVz
ZWxlY3QgPSB0cnVlLCBib29sIGZpcmVPbkNoYW5nZU5vdyA9IGZhbHNlLCBib29sIHVzZXJEcml2
ZW5DaGFuZ2UgPSB0cnVlKTsKICAgICB2b2lkIGRlc2VsZWN0SXRlbXNXaXRob3V0VmFsaWRhdGlv
bihFbGVtZW50KiBleGNsdWRlRWxlbWVudCA9IDApOwogICAgIHZvaWQgcGFyc2VNdWx0aXBsZUF0
dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUqKTsKQEAgLTE1Myw3ICsxNTUsNiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgcGxhdGZvcm1IYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCopOwogICAg
IHZvaWQgbGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2b2lkIHNldE9w
dGlvbnNDaGFuZ2VkT25SZW5kZXJlcigpOwotICAgIGZyaWVuZCBjbGFzcyBTZWxlY3RFbGVtZW50
RGF0YTsKIAogICAgIGVudW0gU2tpcERpcmVjdGlvbiB7CiAgICAgICAgIFNraXBCYWNrd2FyZHMg
PSAtMSwKQEAgLTE2OCw2ICsxNjksOCBAQCBwcml2YXRlOgogCiAgICAgU2VsZWN0RWxlbWVudERh
dGEgbV9kYXRhOwogICAgIENvbGxlY3Rpb25DYWNoZSBtX2NvbGxlY3Rpb25JbmZvOworICAgIFZl
Y3RvcjxFbGVtZW50Kj4gbV9saXN0SXRlbXM7CisgICAgYm9vbCBtX3JlY2FsY0xpc3RJdGVtczsK
IH07CiAKIEhUTUxTZWxlY3RFbGVtZW50KiB0b1NlbGVjdEVsZW1lbnQoRWxlbWVudCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110478</attachid>
            <date>2011-10-10 22:58:26 -0700</date>
            <delta_ts>2011-10-11 01:44:49 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-69812-20111011145824.patch</filename>
            <type>text/plain</type>
            <size>25836</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcxMjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4YTIwMGI4M2NkMDQ0ZDg0
MmNlMTQ1MWFlNWJiNDFmZGQ2OTg2YmNmLi44NTE0NDExZTE2NzRjNmM1YjBmNjhkZWQyMTVlNTI1
ZjlmMDcxY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTEtMTAtMTAgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1vdmUgbV9saXN0SXRlbXMg
YW5kIG1fcmVjYWxjTGlzdEl0ZW1zIGZyb20gU2VsZWN0RWxlbWVudERhdGEgdG8gSFRNTFNlbGVj
dEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY5ODEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIE1v
dmUgU2VsZWN0RWxlbWVudERhdGE6Om1fcmVjYWxjTGlzdEl0ZW1zLAorICAgICAgICBTZWxlY3RF
bGVtZW50RGF0YTo6bV9saXN0SXRlbXMsIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBvZgorICAgICAg
ICBTZWxlY3RFbGVtZW50RGF0YSBjbGFzcyB0byBIVE1MU2VsZWN0RWxlbWVudC4KKworICAgICAg
ICBOb24tY29uc3QgbGlzdEl0ZW1zKCkgd2FzIHJlbW92ZWQgYmVjYXVzZSBpdCBpcyB1c2VkIG9u
bHkgaW4KKyAgICAgICAgcmVjYWxjTGlzdEl0ZW1zSW50ZXJuYWwoKSBhbmQgaXQgY2FuIGFjY2Vz
cyBtX2xpc3RJdGVtcyBkaXJldGx5LgorCisgICAgICAgIFN0YXRpYyByZWNhbGNMaXN0SXRlbXMo
KSBpcyBjaGFuZ2VkIHRvIG5vbi1zdGF0aWMsIGFuZCByZW5hbWVkIHRvCisgICAgICAgIHJlY2Fs
Y0xpc3RJdGVtc0ludGVybmFsKCkgaW4gb3JkZXIgdG8gYXZvaWQgY29uZnVzaW9uIHdpdGggdGhl
CisgICAgICAgIGV4aXN0aW5nIHJlY2FsY0xpc3RJdGVtcygpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cywganVzdCBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogZG9tL1NlbGVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICBNb3ZlIGNoZWNrTGlzdEl0ZW1zKCkgYW5kIGxpc3RJdGVtcygpIHRvIEhU
TUxTZWxlY3RFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RWxlbWVudERhdGE6OlNl
bGVjdEVsZW1lbnREYXRhKToKKyAgICAgICAgUmVtb3ZlIEluaXRpYWxpemF0aW9uIG9mIG1fcmVj
YWxjTGlzdEl0ZW1zLgorICAgICAgICAqIGRvbS9TZWxlY3RFbGVtZW50Lmg6CisgICAgICAgIE1v
dmUgbV9yZWNhbGNMaXN0SXRlbXMsIG1fbGlzdEl0ZW1zLCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMg
dG8gSFRNTFNlbGVjdEVsZW1lbnQuCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6SFRNTFNlbGVjdEVsZW1l
bnQpOgorICAgICAgICBJbml0aWFsaXplcyBtX3JlY2FsY0xpc3RJdGVtcy4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXMpOgorICAgICAgICBSZW5h
bWUgdGhlIHN0YXRpYyByZWNhbGNMaXN0SXRlbXMoKSB0byByZWNhbGNMaXN0SXRlbXNJbnRlcm5h
bCgpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVt
c0lmTmVlZGVkKToKKyAgICAgICAgVXNlIG1fcmVjYWxjTGlzdEl0ZW1zIGRpcmVjdGx5LgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Om5leHRTZWxlY3RhYmxlTGlzdEluZGV4
KToKKyAgICAgICAgVXBkYXRlIGEgbGlzdEl0ZW1zKCkgY2FsbHNpdGUuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cHJldmlvdXNTZWxlY3RhYmxlTGlzdEluZGV4KTogZGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6Zmlyc3RTZWxlY3RhYmxl
TGlzdEluZGV4KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
bGFzdFNlbGVjdGFibGVMaXN0SW5kZXgpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
ZWxlY3RFbGVtZW50OjpuZXh0U2VsZWN0YWJsZUxpc3RJbmRleFBhZ2VBd2F5KTogZGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2F2ZUxhc3RTZWxlY3Rpb24pOiBk
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZXRBY3RpdmVTZWxl
Y3Rpb25BbmNob3JJbmRleCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVs
ZW1lbnQ6OnVwZGF0ZUxpc3RCb3hTZWxlY3Rpb24pOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94T25DaGFuZ2UpOiBkaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpjaGVja0xpc3RJdGVtcyk6CisgICAgICAgIE1vdmVk
IGZyb20gU2VsZWN0RWxlbWVudERhdGEuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxl
bWVudDo6bGlzdEl0ZW1zKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxl
bWVudDo6c2V0UmVjYWxjTGlzdEl0ZW1zKToKKyAgICAgICAgVXNlIG1fcmVjYWxjTGlzdEl0ZW1z
IGRpcmVjdGx5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xp
c3RJdGVtc0ludGVybmFsKToKKyAgICAgICAgLSBNYWtlIHRoaXMgbm9uLXN0YXRpYy4KKyAgICAg
ICAgLSBSZW5hbWVkIGZyb20gcmVjYWxjTGlzdEl0ZW1zKCkgdG8gYXZvaWQgY29uZmlsY3Qgd2l0
aCBhbm90aGVyIHJlY2FsY0xpc3RJdGVtcygpLgorICAgICAgICAtIFVzZSBtX3JlY2FsY0xpc3RJ
dGVtcyBhbmQgbV9saXN0SXRlbXMgZGlyZWN0bHkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Vs
ZWN0RWxlbWVudDo6c2VsZWN0ZWRJbmRleCk6CisgICAgICAgIFVwZGF0ZSBhIGxpc3RJdGVtcygp
IGNhbGxzaXRlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNlbGVj
dGVkSW5kZXhJbnRlcm5hbCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVs
ZW1lbnQ6Om9wdGlvblRvTGlzdEluZGV4KTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2VsZWN0RWxlbWVudDo6bGlzdFRvT3B0aW9uSW5kZXgpOiBkaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTZWxlY3RFbGVtZW50OjpkZXNlbGVjdEl0ZW1zV2l0aG91dFZhbGlkYXRpb24pOiBk
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzYXZlRm9ybUNvbnRy
b2xTdGF0ZSk6CisgICAgICAgIFVwZGF0ZSBjYWxsc2l0ZXMgb2YgbGlzdEl0ZW1zKCkgYW5kIHJl
Y2FsY0xpc3RJdGVtcygpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJl
c3RvcmVGb3JtQ29udHJvbFN0YXRlKToKKyAgICAgICAgVXBkYXRlIGEgbGlzdEl0ZW1zKCkgY2Fs
bHNpdGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6YXBwZW5kRm9ybURh
dGEpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpyZXNldCk6
IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVm
YXVsdEV2ZW50SGFuZGxlcik6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVs
ZW1lbnQ6OnVwZGF0ZVNlbGVjdGVkU3RhdGUpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcik6IGRpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxhc3RTZWxlY3RlZExpc3RJbmRleCk6
IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnR5cGVBaGVhZEZp
bmQpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjppbnNlcnRl
ZEludG9UcmVlKToKKyAgICAgICAgVXBkYXRlIGEgcmVjYWxjTGlzdEl0ZW1zKCkgY2FsbHNpdGUu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6YWNjZXNzS2V5U2V0U2VsZWN0
ZWRJbmRleCk6CisgICAgICAgIFVwZGF0ZSBhIGxpc3RJdGVtcygpIGNhbGxzaXRlLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Omxlbmd0aCk6IGRpdHRvLgorICAgICAgICAq
IGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgTW92ZSBtX3JlY2FsY0xpc3RJdGVt
cywgbV9saXN0SXRlbXMsIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIFNlbGVjdEVsZW1lbnRE
YXRhLgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnRXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnBsYXRmb3JtSGFuZGxlS2V5ZG93bkV2ZW50KToK
KyAgICAgICAgVXBkYXRlIGEgbGlzdEl0ZW1zKCkgY2FsbHNpdGUuCisKIDIwMTEtMTAtMTAgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHI5NzEyMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNw
cAppbmRleCAzNGEzM2EwOGJkNmMzNWIxY2MxMjllOTMwYzkxZDJmOGIxZjZjZDljLi5kZWQzODMx
NGFjNmZlZjdkMmUwMWZiMWM4YzBjNzM3MWZhMTIxNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVj
dEVsZW1lbnQuY3BwCkBAIC02Myw3ICs2Myw2IEBAIFNlbGVjdEVsZW1lbnREYXRhOjpTZWxlY3RF
bGVtZW50RGF0YSgpCiAgICAgLCBtX3VzZXJEcml2ZW5DaGFuZ2UoZmFsc2UpCiAgICAgLCBtX211
bHRpcGxlKGZhbHNlKQogICAgICwgbV9hY3RpdmVTZWxlY3Rpb25TdGF0ZShmYWxzZSkKLSAgICAs
IG1fcmVjYWxjTGlzdEl0ZW1zKGZhbHNlKQogewogfQogCkBAIC03MSwzNSArNzAsNCBAQCBTZWxl
Y3RFbGVtZW50RGF0YTo6flNlbGVjdEVsZW1lbnREYXRhKCkKIHsKIH0KIAotdm9pZCBTZWxlY3RF
bGVtZW50RGF0YTo6Y2hlY2tMaXN0SXRlbXMoY29uc3QgRWxlbWVudCogZWxlbWVudCkgY29uc3QK
LXsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgVmVjdG9yPEVsZW1lbnQqPiBpdGVtcyA9IG1f
bGlzdEl0ZW1zOwotICAgIEhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXMoKmNvbnN0
X2Nhc3Q8U2VsZWN0RWxlbWVudERhdGEqPih0aGlzKSwgZWxlbWVudCwgZmFsc2UpOwotICAgIEFT
U0VSVChpdGVtcyA9PSBtX2xpc3RJdGVtcyk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShlbGVt
ZW50KTsKLSNlbmRpZgotfQotCi1WZWN0b3I8RWxlbWVudCo+JiBTZWxlY3RFbGVtZW50RGF0YTo6
bGlzdEl0ZW1zKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgaWYgKG1fcmVjYWxjTGlz
dEl0ZW1zKQotICAgICAgICBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zKCp0aGlz
LCBlbGVtZW50KTsKLSAgICBlbHNlCi0gICAgICAgIGNoZWNrTGlzdEl0ZW1zKGVsZW1lbnQpOwot
Ci0gICAgcmV0dXJuIG1fbGlzdEl0ZW1zOwotfQotCi1jb25zdCBWZWN0b3I8RWxlbWVudCo+JiBT
ZWxlY3RFbGVtZW50RGF0YTo6bGlzdEl0ZW1zKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
Ci17Ci0gICAgaWYgKG1fcmVjYWxjTGlzdEl0ZW1zKQotICAgICAgICBIVE1MU2VsZWN0RWxlbWVu
dDo6cmVjYWxjTGlzdEl0ZW1zKCpjb25zdF9jYXN0PFNlbGVjdEVsZW1lbnREYXRhKj4odGhpcyks
IGVsZW1lbnQpOwotICAgIGVsc2UKLSAgICAgICAgY2hlY2tMaXN0SXRlbXMoZWxlbWVudCk7Ci0K
LSAgICByZXR1cm4gbV9saXN0SXRlbXM7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TZWxlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVu
dC5oCmluZGV4IDNmZTU2YTZkNGZlODA1ZDM2YmYwYTg0NDBiODNlN2ZiMjhlZjVkNDguLmE3MjIw
ZTU2NjIwNjQyMGFhNTZlNzExOGUwMmE0YjRjMzZlNDk4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVj
dEVsZW1lbnQuaApAQCAtNzMsMTMgKzczLDYgQEAgcHVibGljOgogCiAgICAgVmVjdG9yPGJvb2w+
JiBjYWNoZWRTdGF0ZUZvckFjdGl2ZVNlbGVjdGlvbigpIHsgcmV0dXJuIG1fY2FjaGVkU3RhdGVG
b3JBY3RpdmVTZWxlY3Rpb247IH0KIAotICAgIGJvb2wgc2hvdWxkUmVjYWxjTGlzdEl0ZW1zKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWNhbGNMaXN0SXRlbXM7IH0KLSAgICB2b2lkIHNldFNob3VsZFJl
Y2FsY0xpc3RJdGVtcyhib29sIHZhbHVlKSB7IG1fcmVjYWxjTGlzdEl0ZW1zID0gdmFsdWU7IH0K
LQotICAgIFZlY3RvcjxFbGVtZW50Kj4mIHJhd0xpc3RJdGVtcygpIHsgcmV0dXJuIG1fbGlzdEl0
ZW1zOyB9Ci0gICAgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zKGNvbnN0IEVsZW1lbnQqKTsK
LSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMoY29uc3QgRWxlbWVudCopIGNv
bnN0OwotCiAgICAgVUNoYXIgcmVwZWF0aW5nQ2hhcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVwZWF0
aW5nQ2hhcjsgfQogICAgIHZvaWQgc2V0UmVwZWF0aW5nQ2hhcihjb25zdCBVQ2hhciYgdmFsdWUp
IHsgbV9yZXBlYXRpbmdDaGFyID0gdmFsdWU7IH0KIApAQCAtOTIsNyArODUsNiBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIHZvaWQgY2hlY2tMaXN0SXRlbXMoY29uc3QgRWxlbWVudCopIGNvbnN0
OwogCi0gICAgVmVjdG9yPEVsZW1lbnQqPiBtX2xpc3RJdGVtczsKICAgICBWZWN0b3I8Ym9vbD4g
bV9sYXN0T25DaGFuZ2VTZWxlY3Rpb247CiAgICAgVmVjdG9yPGJvb2w+IG1fY2FjaGVkU3RhdGVG
b3JBY3RpdmVTZWxlY3Rpb247CiAKQEAgLTEwOSw3ICsxMDEsNiBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV91c2VyRHJpdmVuQ2hhbmdlOwogICAgIGJvb2wgbV9tdWx0aXBsZTsKICAgICBib29sIG1f
YWN0aXZlU2VsZWN0aW9uU3RhdGU7Ci0gICAgYm9vbCBtX3JlY2FsY0xpc3RJdGVtczsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggOTljODQy
YjY1MzlmOGRmZmY3OTE5YjJjMDY3Mzk0NjE1M2FiYWQwNS4uNjE5YjM1ZGU0YjIyOTNlMDE1NTRi
ZTY3MjJlZWZhNTk5YmUwYjJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgc3RhdGljIGNvbnN0IERPTVRpbWVTdGFtcCB0eXBl
QWhlYWRUaW1lb3V0ID0gMTAwMDsKIAogSFRNTFNlbGVjdEVsZW1lbnQ6OkhUTUxTZWxlY3RFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRN
TEZvcm1FbGVtZW50KiBmb3JtKQogICAgIDogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZSh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkKKyAgICAsIG1fcmVjYWxjTGlzdEl0ZW1zKGZhbHNl
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHNlbGVjdFRhZykpOwogfQpAQCAtMzE0LDEyICsz
MTUsMTIgQEAgUGFzc1JlZlB0cjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IEhUTUxTZWxlY3RFbGVt
ZW50OjpvcHRpb25zKCkKIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1z
KGJvb2wgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMpIGNvbnN0CiB7Ci0gICAgcmVjYWxjTGlzdEl0ZW1z
KGNvbnN0X2Nhc3Q8U2VsZWN0RWxlbWVudERhdGEmPihtX2RhdGEpLCB0aGlzLCB1cGRhdGVTZWxl
Y3RlZFN0YXRlcyk7CisgICAgY29uc3RfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KHRoaXMpLT5y
ZWNhbGNMaXN0SXRlbXNJbnRlcm5hbCh1cGRhdGVTZWxlY3RlZFN0YXRlcyk7CiB9CiAKIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtc0lmTmVlZGVkKCkKIHsKLSAgICBpZiAo
bV9kYXRhLnNob3VsZFJlY2FsY0xpc3RJdGVtcygpKQorICAgIGlmIChtX3JlY2FsY0xpc3RJdGVt
cykKICAgICAgICAgcmVjYWxjTGlzdEl0ZW1zKCk7CiB9CiAKQEAgLTQ1NiwxOSArNDU3LDE5IEBA
IGludCBIVE1MU2VsZWN0RWxlbWVudDo6bmV4dFZhbGlkSW5kZXgoY29uc3QgVmVjdG9yPEVsZW1l
bnQqPiYgbGlzdEl0ZW1zLCBpbnQgbGlzCiAKIGludCBIVE1MU2VsZWN0RWxlbWVudDo6bmV4dFNl
bGVjdGFibGVMaXN0SW5kZXgoaW50IHN0YXJ0SW5kZXgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG5l
eHRWYWxpZEluZGV4KG1fZGF0YS5saXN0SXRlbXModGhpcyksIHN0YXJ0SW5kZXgsIFNraXBGb3J3
YXJkcywgMSk7CisgICAgcmV0dXJuIG5leHRWYWxpZEluZGV4KGxpc3RJdGVtcygpLCBzdGFydElu
ZGV4LCBTa2lwRm9yd2FyZHMsIDEpOwogfQogCiBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6OnByZXZp
b3VzU2VsZWN0YWJsZUxpc3RJbmRleChpbnQgc3RhcnRJbmRleCkgY29uc3QKIHsKICAgICBpZiAo
c3RhcnRJbmRleCA9PSAtMSkKLSAgICAgICAgc3RhcnRJbmRleCA9IG1fZGF0YS5saXN0SXRlbXMo
dGhpcykuc2l6ZSgpOwotICAgIHJldHVybiBuZXh0VmFsaWRJbmRleChtX2RhdGEubGlzdEl0ZW1z
KHRoaXMpLCBzdGFydEluZGV4LCBTa2lwQmFja3dhcmRzLCAxKTsKKyAgICAgICAgc3RhcnRJbmRl
eCA9IGxpc3RJdGVtcygpLnNpemUoKTsKKyAgICByZXR1cm4gbmV4dFZhbGlkSW5kZXgobGlzdEl0
ZW1zKCksIHN0YXJ0SW5kZXgsIFNraXBCYWNrd2FyZHMsIDEpOwogfQogCiBpbnQgSFRNTFNlbGVj
dEVsZW1lbnQ6OmZpcnN0U2VsZWN0YWJsZUxpc3RJbmRleCgpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
VmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpOworICAgIGNv
bnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgaW50IGluZGV4
ID0gbmV4dFZhbGlkSW5kZXgoaXRlbXMsIGl0ZW1zLnNpemUoKSwgU2tpcEJhY2t3YXJkcywgSU5U
X01BWCk7CiAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkgPT0gaXRlbXMuc2l6
ZSgpKQogICAgICAgICByZXR1cm4gLTE7CkBAIC00NzcsMTMgKzQ3OCwxMyBAQCBpbnQgSFRNTFNl
bGVjdEVsZW1lbnQ6OmZpcnN0U2VsZWN0YWJsZUxpc3RJbmRleCgpIGNvbnN0CiAKIGludCBIVE1M
U2VsZWN0RWxlbWVudDo6bGFzdFNlbGVjdGFibGVMaXN0SW5kZXgoKSBjb25zdAogewotICAgIHJl
dHVybiBuZXh0VmFsaWRJbmRleChtX2RhdGEubGlzdEl0ZW1zKHRoaXMpLCAtMSwgU2tpcEZvcndh
cmRzLCBJTlRfTUFYKTsKKyAgICByZXR1cm4gbmV4dFZhbGlkSW5kZXgobGlzdEl0ZW1zKCksIC0x
LCBTa2lwRm9yd2FyZHMsIElOVF9NQVgpOwogfQogCiAvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0
aGUgbmV4dCB2YWxpZCBpdGVtIG9uZSBwYWdlIGF3YXkgZnJvbSB8c3RhcnRJbmRleHwgaW4gZGly
ZWN0aW9uIHxkaXJlY3Rpb258LgogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpuZXh0U2VsZWN0YWJs
ZUxpc3RJbmRleFBhZ2VBd2F5KGludCBzdGFydEluZGV4LCBTa2lwRGlyZWN0aW9uIGRpcmVjdGlv
bikgY29uc3QKIHsKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IG1fZGF0YS5s
aXN0SXRlbXModGhpcyk7CisgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0
SXRlbXMoKTsKICAgICAvLyBDYW4ndCB1c2UgZGF0YS0+c2l6ZSgpIGJlY2F1c2UgcmVuZGVyZXIg
Zm9yY2VzIGEgbWluaW11bSBzaXplLgogICAgIGludCBwYWdlU2l6ZSA9IDA7CiAgICAgaWYgKHJl
bmRlcmVyKCktPmlzTGlzdEJveCgpKQpAQCAtNTI2LDcgKzUyNyw3IEBAIHZvaWQgSFRNTFNlbGVj
dEVsZW1lbnQ6OnNhdmVMYXN0U2VsZWN0aW9uKCkKICAgICBWZWN0b3I8Ym9vbD4mIGxhc3RPbkNo
YW5nZVNlbGVjdGlvbiA9IG1fZGF0YS5sYXN0T25DaGFuZ2VTZWxlY3Rpb24oKTsgCiAgICAgbGFz
dE9uQ2hhbmdlU2VsZWN0aW9uLmNsZWFyKCk7CiAKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+
JiBpdGVtcyA9IG1fZGF0YS5saXN0SXRlbXModGhpcyk7CisgICAgY29uc3QgVmVjdG9yPEVsZW1l
bnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
aXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVu
dCA9IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSk7CiAgICAgICAgIGxhc3RPbkNoYW5nZVNlbGVj
dGlvbi5hcHBlbmQob3B0aW9uRWxlbWVudCAmJiBvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgpKTsK
QEAgLTU0Miw3ICs1NDMsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRBY3RpdmVTZWxl
Y3Rpb25BbmNob3JJbmRleChpbnQgaW5kZXgpCiAgICAgVmVjdG9yPGJvb2w+JiBjYWNoZWRTdGF0
ZUZvckFjdGl2ZVNlbGVjdGlvbiA9IG1fZGF0YS5jYWNoZWRTdGF0ZUZvckFjdGl2ZVNlbGVjdGlv
bigpOyAKICAgICBjYWNoZWRTdGF0ZUZvckFjdGl2ZVNlbGVjdGlvbi5jbGVhcigpOwogCi0gICAg
Y29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpOwor
ICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIE9wdGlv
bkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0b09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pOwogICAg
ICAgICBjYWNoZWRTdGF0ZUZvckFjdGl2ZVNlbGVjdGlvbi5hcHBlbmQob3B0aW9uRWxlbWVudCAm
JiBvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgpKTsKQEAgLTU1NywxMyArNTU4LDEzIEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OnNldEFjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KGludCBpbmRleCkK
IHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZUxpc3RCb3hTZWxlY3Rpb24oYm9vbCBkZXNl
bGVjdE90aGVyT3B0aW9ucykKIHsKICAgICBBU1NFUlQocmVuZGVyZXIoKSAmJiAocmVuZGVyZXIo
KS0+aXNMaXN0Qm94KCkgfHwgbV9kYXRhLm11bHRpcGxlKCkpKTsKLSAgICBBU1NFUlQoIW1fZGF0
YS5saXN0SXRlbXModGhpcykuc2l6ZSgpIHx8IG1fZGF0YS5hY3RpdmVTZWxlY3Rpb25BbmNob3JJ
bmRleCgpID49IDApOworICAgIEFTU0VSVCghbGlzdEl0ZW1zKCkuc2l6ZSgpIHx8IG1fZGF0YS5h
Y3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCgpID49IDApOwogCiAgICAgdW5zaWduZWQgc3RhcnQg
PSBtaW4obV9kYXRhLmFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KCksIG1fZGF0YS5hY3RpdmVT
ZWxlY3Rpb25FbmRJbmRleCgpKTsKICAgICB1bnNpZ25lZCBlbmQgPSBtYXgobV9kYXRhLmFjdGl2
ZVNlbGVjdGlvbkFuY2hvckluZGV4KCksIG1fZGF0YS5hY3RpdmVTZWxlY3Rpb25FbmRJbmRleCgp
KTsKICAgICBWZWN0b3I8Ym9vbD4mIGNhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0aW9uID0gbV9k
YXRhLmNhY2hlZFN0YXRlRm9yQWN0aXZlU2VsZWN0aW9uKCk7CiAKLSAgICBjb25zdCBWZWN0b3I8
RWxlbWVudCo+JiBpdGVtcyA9IG1fZGF0YS5saXN0SXRlbXModGhpcyk7CisgICAgY29uc3QgVmVj
dG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxlbWVudCogb3B0
aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSk7CiAgICAgICAgIGlmICghb3B0
aW9uRWxlbWVudCB8fCBpdGVtc1tpXS0+ZGlzYWJsZWQoKSkKQEAgLTU4Niw3ICs1ODcsNyBAQCB2
b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94T25DaGFuZ2UoKQogICAgIEFTU0VSVCghbV9k
YXRhLnVzZXNNZW51TGlzdCgpIHx8IG1fZGF0YS5tdWx0aXBsZSgpKTsKIAogICAgIFZlY3Rvcjxi
b29sPiYgbGFzdE9uQ2hhbmdlU2VsZWN0aW9uID0gbV9kYXRhLmxhc3RPbkNoYW5nZVNlbGVjdGlv
bigpOyAKLSAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IG1fZGF0YS5saXN0SXRl
bXModGhpcyk7CisgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMo
KTsKIAogICAgIC8vIElmIHRoZSBjYWNoZWQgc2VsZWN0aW9uIGxpc3QgaXMgZW1wdHksIG9yIHRo
ZSBzaXplIGhhcyBjaGFuZ2VkLCB0aGVuIGZpcmUKICAgICAvLyBkaXNwYXRjaEZvcm1Db250cm9s
Q2hhbmdlRXZlbnQsIGFuZCByZXR1cm4gZWFybHkuCkBAIC02NDAsOSArNjQxLDI4IEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcigpCiAgICAgfQog
fQogCit2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpjaGVja0xpc3RJdGVtcygpIGNvbnN0Cit7Cisj
aWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIFZlY3RvcjxFbGVtZW50Kj4gaXRlbXMgPSBtX2xpc3RJ
dGVtczsKKyAgICBjb25zdF9jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4odGhpcyktPnJlY2FsY0xp
c3RJdGVtc0ludGVybmFsKGZhbHNlKTsKKyAgICBBU1NFUlQoaXRlbXMgPT0gbV9saXN0SXRlbXMp
OworI2VuZGlmCit9CisKK2NvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIEhUTUxTZWxlY3RFbGVtZW50
OjpsaXN0SXRlbXMoKSBjb25zdAoreworICAgIGlmIChtX3JlY2FsY0xpc3RJdGVtcykKKyAgICAg
ICAgY29uc3RfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KHRoaXMpLT5yZWNhbGNMaXN0SXRlbXNJ
bnRlcm5hbCgpOworICAgIGVsc2UKKyAgICAgICAgY2hlY2tMaXN0SXRlbXMoKTsKKworICAgIHJl
dHVybiBtX2xpc3RJdGVtczsKK30KKwogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0UmVjYWxj
TGlzdEl0ZW1zKCkKIHsKLSAgICBtX2RhdGEuc2V0U2hvdWxkUmVjYWxjTGlzdEl0ZW1zKHRydWUp
OworICAgIG1fcmVjYWxjTGlzdEl0ZW1zID0gdHJ1ZTsKICAgICAvLyBNYW51YWwgc2VsZWN0aW9u
IGFuY2hvciBpcyByZXNldCB3aGVuIG1hbmlwdWxhdGluZyB0aGUgc2VsZWN0IHByb2dyYW1tYXRp
Y2FsbHkuCiAgICAgbV9kYXRhLnNldEFjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KC0xKTsKICAg
ICBzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoKTsKQEAgLTY1MSwxNyArNjcxLDE2IEBAIHZv
aWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFJlY2FsY0xpc3RJdGVtcygpCiAgICAgICAgIG1fY29s
bGVjdGlvbkluZm8ucmVzZXQoKTsKIH0KIAotdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxj
TGlzdEl0ZW1zKFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBjb25zdCBFbGVtZW50KiBlbGVtZW50
LCBib29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVzKQordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVj
YWxjTGlzdEl0ZW1zSW50ZXJuYWwoYm9vbCB1cGRhdGVTZWxlY3RlZFN0YXRlcykKIHsKLSAgICBW
ZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMgPSBkYXRhLnJhd0xpc3RJdGVtcygpOwotICAgIGxp
c3RJdGVtcy5jbGVhcigpOworICAgIG1fbGlzdEl0ZW1zLmNsZWFyKCk7CiAKLSAgICBkYXRhLnNl
dFNob3VsZFJlY2FsY0xpc3RJdGVtcyhmYWxzZSk7CisgICAgbV9yZWNhbGNMaXN0SXRlbXMgPSBm
YWxzZTsKIAogICAgIE9wdGlvbkVsZW1lbnQqIGZvdW5kU2VsZWN0ZWQgPSAwOwotICAgIGZvciAo
Tm9kZSogY3VycmVudE5vZGUgPSBlbGVtZW50LT5maXJzdENoaWxkKCk7IGN1cnJlbnROb2RlOykg
eworICAgIGZvciAoTm9kZSogY3VycmVudE5vZGUgPSB0aGlzLT5maXJzdENoaWxkKCk7IGN1cnJl
bnROb2RlOykgewogICAgICAgICBpZiAoIWN1cnJlbnROb2RlLT5pc0VsZW1lbnROb2RlKCkpIHsK
LSAgICAgICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnRyYXZlcnNlTmV4dFNpYmxp
bmcoZWxlbWVudCk7CisgICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLT50cmF2
ZXJzZU5leHRTaWJsaW5nKHRoaXMpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IApAQCAtNjcxLDcgKzY5MCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJ
dGVtcyhTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgY29uc3QgRWxlbWVudCoKICAgICAgICAgLy8g
ZmxhdHRlbiB0aGUgdHJlZSBhdXRvbWF0aWNhbGx5LCBzbyB3ZSBmb2xsb3cgc3VpdC4KICAgICAg
ICAgLy8gKGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0MDEvaW50ZXJhY3QvZm9ybXMuaHRtbCNo
LTE3LjYpCiAgICAgICAgIGlmIChpc09wdGlvbkdyb3VwRWxlbWVudChjdXJyZW50KSkgewotICAg
ICAgICAgICAgbGlzdEl0ZW1zLmFwcGVuZChjdXJyZW50KTsKKyAgICAgICAgICAgIG1fbGlzdEl0
ZW1zLmFwcGVuZChjdXJyZW50KTsKICAgICAgICAgICAgIGlmIChjdXJyZW50LT5maXJzdENoaWxk
KCkpIHsKICAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnQtPmZpcnN0Q2hpbGQo
KTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTY3OSwxMCArNjk4LDEwIEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyhTZWxlY3RFbGVtZW50RGF0YSYgZGF0
YSwgY29uc3QgRWxlbWVudCoKICAgICAgICAgfQogCiAgICAgICAgIGlmIChPcHRpb25FbGVtZW50
KiBvcHRpb25FbGVtZW50ID0gdG9PcHRpb25FbGVtZW50KGN1cnJlbnQpKSB7Ci0gICAgICAgICAg
ICBsaXN0SXRlbXMuYXBwZW5kKGN1cnJlbnQpOworICAgICAgICAgICAgbV9saXN0SXRlbXMuYXBw
ZW5kKGN1cnJlbnQpOwogCi0gICAgICAgICAgICBpZiAodXBkYXRlU2VsZWN0ZWRTdGF0ZXMgJiYg
IWRhdGEubXVsdGlwbGUoKSkgewotICAgICAgICAgICAgICAgIGlmICghZm91bmRTZWxlY3RlZCAm
JiAoZGF0YS5zaXplKCkgPD0gMSB8fCBvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgpKSkgeworICAg
ICAgICAgICAgaWYgKHVwZGF0ZVNlbGVjdGVkU3RhdGVzICYmICFtX2RhdGEubXVsdGlwbGUoKSkg
eworICAgICAgICAgICAgICAgIGlmICghZm91bmRTZWxlY3RlZCAmJiAobV9kYXRhLnNpemUoKSA8
PSAxIHx8IG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGZvdW5kU2VsZWN0ZWQgPSBvcHRpb25FbGVtZW50OwogICAgICAgICAgICAgICAgICAgICBmb3Vu
ZFNlbGVjdGVkLT5zZXRTZWxlY3RlZFN0YXRlKHRydWUpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoZm91bmRTZWxlY3RlZCAmJiBvcHRpb25FbGVtZW50LT5zZWxlY3RlZCgpKSB7CkBAIC02
OTMsNyArNzEyLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zKFNl
bGVjdEVsZW1lbnREYXRhJiBkYXRhLCBjb25zdCBFbGVtZW50KgogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKGN1cnJlbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpoclRhZykpCi0gICAgICAgICAg
ICBsaXN0SXRlbXMuYXBwZW5kKGN1cnJlbnQpOworICAgICAgICAgICAgbV9saXN0SXRlbXMuYXBw
ZW5kKGN1cnJlbnQpOwogCiAgICAgICAgIC8vIEluIGNvbmZvcm1pbmcgSFRNTCBjb2RlLCBvbmx5
IDxvcHRncm91cD4gYW5kIDxvcHRpb24+IHdpbGwgYmUgZm91bmQKICAgICAgICAgLy8gd2l0aGlu
IGEgPHNlbGVjdD4uIFdlIGNhbGwgdHJhdmVyc2VOZXh0U2libGluZyBzbyB0aGF0IHdlIG9ubHkg
c3RlcApAQCAtNzAxLDcgKzcyMCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xp
c3RJdGVtcyhTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgY29uc3QgRWxlbWVudCoKICAgICAgICAg
Ly8gd2l0aCB0aGUgY2FzZSB3aGVyZSBvZGQgdGFncyBsaWtlIGEgPGRpdj4gaGF2ZSBiZWVuIGFk
ZGVkIGJ1dCB3ZQogICAgICAgICAvLyBoYW5kbGUgdGhpcyBiZWNhdXNlIHN1Y2ggdGFncyBoYXZl
IGFscmVhZHkgYmVlbiByZW1vdmVkIGZyb20gdGhlCiAgICAgICAgIC8vIDxzZWxlY3Q+J3Mgc3Vi
dHJlZSBhdCB0aGlzIHBvaW50LgotICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLT50
cmF2ZXJzZU5leHRTaWJsaW5nKGVsZW1lbnQpOworICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJl
bnROb2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKHRoaXMpOwogICAgIH0KIH0KIApAQCAtNzEwLDcg
KzcyOSw3IEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0ZWRJbmRleCgpIGNvbnN0CiAg
ICAgdW5zaWduZWQgaW5kZXggPSAwOwogCiAgICAgLy8gcmV0dXJuIHRoZSBudW1iZXIgb2YgdGhl
IGZpcnN0IG9wdGlvbiBzZWxlY3RlZAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1z
ID0gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBp
dGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKE9wdGlvbkVsZW1lbnQqIG9wdGlvbkVsZW1lbnQgPSB0
b09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pKSB7CiAgICAgICAgICAgICBpZiAob3B0aW9uRWxlbWVu
dC0+c2VsZWN0ZWQoKSkKQEAgLTcyOSw3ICs3NDgsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50
OjpzZXRTZWxlY3RlZEluZGV4SW50ZXJuYWwoaW50IG9wdGlvbkluZGV4LCBib29sIGRlc2VsZWN0
LAogICAgIGlmICghbV9kYXRhLm11bHRpcGxlKCkpCiAgICAgICAgIGRlc2VsZWN0ID0gdHJ1ZTsK
IAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0
aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwog
ICAgIGludCBsaXN0SW5kZXggPSBvcHRpb25Ub0xpc3RJbmRleChvcHRpb25JbmRleCk7CiAKICAg
ICBFbGVtZW50KiBleGNsdWRlRWxlbWVudCA9IDA7CkBAIC03NzIsNyArNzkxLDcgQEAgdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6c2V0U2VsZWN0ZWRJbmRleEludGVybmFsKGludCBvcHRpb25JbmRl
eCwgYm9vbCBkZXNlbGVjdCwKIAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25Ub0xpc3RJ
bmRleChpbnQgb3B0aW9uSW5kZXgpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQq
PiYgaXRlbXMgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpOworICAgIGNvbnN0IFZlY3RvcjxFbGVt
ZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgaW50IGxpc3RTaXplID0gc3RhdGljX2Nh
c3Q8aW50PihpdGVtcy5zaXplKCkpOwogICAgIGlmIChvcHRpb25JbmRleCA8IDAgfHwgb3B0aW9u
SW5kZXggPj0gbGlzdFNpemUpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTc5MSw3ICs4MTAsNyBA
QCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6Om9wdGlvblRvTGlzdEluZGV4KGludCBvcHRpb25JbmRl
eCkgY29uc3QKIAogaW50IEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0VG9PcHRpb25JbmRleChpbnQg
bGlzdEluZGV4KSBjb25zdAogewotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0g
bV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBpdGVt
cyA9IGxpc3RJdGVtcygpOwogICAgIGlmIChsaXN0SW5kZXggPCAwIHx8IGxpc3RJbmRleCA+PSBz
dGF0aWNfY2FzdDxpbnQ+KGl0ZW1zLnNpemUoKSkgfHwgIWlzT3B0aW9uRWxlbWVudChpdGVtc1ts
aXN0SW5kZXhdKSkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC04MjYsNyArODQ1LDcgQEAgdm9p
ZCBIVE1MU2VsZWN0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiBu
ZXdGb2N1c2VkTm9kZSkKIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6ZGVzZWxlY3RJdGVtc1dp
dGhvdXRWYWxpZGF0aW9uKEVsZW1lbnQqIGV4Y2x1ZGVFbGVtZW50KQogewotICAgIGNvbnN0IFZl
Y3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25z
dCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoaXRlbXNbaV0g
PT0gZXhjbHVkZUVsZW1lbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTgzOCw3ICs4NTcs
NyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkZXNlbGVjdEl0ZW1zV2l0aG91dFZhbGlkYXRp
b24oRWxlbWVudCogZXhjbHVkZUVsZW1lbnQpCiAKIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OnNh
dmVGb3JtQ29udHJvbFN0YXRlKFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVj
dG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpOworICAgIGNvbnN0
IFZlY3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAgICAgaW50IGxlbmd0aCA9
IGl0ZW1zLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhpcyBjb2RlIHRvIHVzZSB0
aGUgbmV3IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQgY29kZSBwYXRoLgpAQCAtODU1
LDkgKzg3NCw5IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OnNhdmVGb3JtQ29udHJvbFN0YXRl
KFN0cmluZyYgdmFsdWUpIGNvbnN0CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlc3RvcmVG
b3JtQ29udHJvbFN0YXRlKGNvbnN0IFN0cmluZyYgc3RhdGUpCiB7Ci0gICAgcmVjYWxjTGlzdEl0
ZW1zKG1fZGF0YSwgdGhpcyk7CisgICAgcmVjYWxjTGlzdEl0ZW1zKCk7CiAKLSAgICBjb25zdCBW
ZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IG1fZGF0YS5saXN0SXRlbXModGhpcyk7CisgICAgY29u
c3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBpbnQgbGVuZ3Ro
ID0gaXRlbXMuc2l6ZSgpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
ewpAQCAtODg1LDcgKzkwNCw3IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmFwcGVuZEZvcm1E
YXRhKEZvcm1EYXRhTGlzdCYgbGlzdCwgYm9vbCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgYm9vbCBzdWNjZXNzZnVsID0gZmFsc2U7Ci0gICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYg
aXRlbXMgPSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpOworICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50
Kj4mIGl0ZW1zID0gbGlzdEl0ZW1zKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
aXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxlbWVudCogb3B0aW9uRWxlbWVu
dCA9IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSk7CkBAIC05MDYsNyArOTI1LDcgQEAgdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6cmVzZXQoKQogICAgIE9wdGlvbkVsZW1lbnQqIGZpcnN0T3B0aW9u
ID0gMDsKICAgICBPcHRpb25FbGVtZW50KiBzZWxlY3RlZE9wdGlvbiA9IDA7CiAKLSAgICBjb25z
dCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IG1fZGF0YS5saXN0SXRlbXModGhpcyk7CisgICAg
Y29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgT3B0aW9uRWxl
bWVudCogb3B0aW9uRWxlbWVudCA9IHRvT3B0aW9uRWxlbWVudChpdGVtc1tpXSk7CiAgICAgICAg
IGlmICghb3B0aW9uRWxlbWVudCkKQEAgLTk4MCw3ICs5OTksNyBAQCB2b2lkIEhUTUxTZWxlY3RF
bGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogCiAgICAg
ICAgIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciA9IHN0YXRpY19jYXN0PEtleWJvYXJkRXZl
bnQqPihldmVudCktPmtleUlkZW50aWZpZXIoKTsKICAgICAgICAgYm9vbCBoYW5kbGVkID0gdHJ1
ZTsKLSAgICAgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gbV9kYXRhLmxp
c3RJdGVtcyh0aGlzKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1z
ID0gdGhpcy0+bGlzdEl0ZW1zKCk7CiAgICAgICAgIGludCBsaXN0SW5kZXggPSBvcHRpb25Ub0xp
c3RJbmRleChzZWxlY3RlZEluZGV4KCkpOwogCiAgICAgICAgIGlmIChrZXlJZGVudGlmaWVyID09
ICJEb3duIiB8fCBrZXlJZGVudGlmaWVyID09ICJSaWdodCIpCkBAIC0xMTA4LDcgKzExMjcsNyBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVTZWxlY3RlZFN0YXRlKGludCBsaXN0SW5k
ZXgsIGJvb2wgbXVsdGksIGJvb2wgc2hpZgogICAgIGJvb2wgc2hpZnRTZWxlY3QgPSBtX2RhdGEu
bXVsdGlwbGUoKSAmJiBzaGlmdDsKICAgICBib29sIG11bHRpU2VsZWN0ID0gbV9kYXRhLm11bHRp
cGxlKCkgJiYgbXVsdGkgJiYgIXNoaWZ0OwogCi0gICAgRWxlbWVudCogY2xpY2tlZEVsZW1lbnQg
PSBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpW2xpc3RJbmRleF07CisgICAgRWxlbWVudCogY2xpY2tl
ZEVsZW1lbnQgPSBsaXN0SXRlbXMoKVtsaXN0SW5kZXhdOwogICAgIE9wdGlvbkVsZW1lbnQqIG9w
dGlvbiA9IHRvT3B0aW9uRWxlbWVudChjbGlja2VkRWxlbWVudCk7CiAgICAgaWYgKG9wdGlvbikg
ewogICAgICAgICAvLyBLZWVwIHRyYWNrIG9mIHdoZXRoZXIgYW4gYWN0aXZlIHNlbGVjdGlvbiAo
bGlrZSBkdXJpbmcgZHJhZwpAQCAtMTE0OCw3ICsxMTY3LDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxl
bWVudDo6dXBkYXRlU2VsZWN0ZWRTdGF0ZShpbnQgbGlzdEluZGV4LCBib29sIG11bHRpLCBib29s
IHNoaWYKIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveERlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqIGV2ZW50KQogewotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVt
cyA9IG1fZGF0YS5saXN0SXRlbXModGhpcyk7CisgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYg
bGlzdEl0ZW1zID0gdGhpcy0+bGlzdEl0ZW1zKCk7CiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgZXZlbnQtPmlzTW91c2VFdmVudCgpICYm
IHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpID09IExlZnRCdXR0b24p
IHsKICAgICAgICAgZm9jdXMoKTsKQEAgLTEzMDYsNyArMTMyNSw3IEBAIGludCBIVE1MU2VsZWN0
RWxlbWVudDo6bGFzdFNlbGVjdGVkTGlzdEluZGV4KCkgY29uc3QKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGl0ZXJhdGUgdGhlIGxpc3RJdGVtcyBpbiB0aGUgcmV2ZXJzZSBvcmRlci4KICAgICB1
bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAgIGNvbnN0IFZl
Y3RvcjxFbGVtZW50Kj4mIGl0ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25z
dCBWZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKE9wdGlvbkVsZW1l
bnQqIG9wdGlvbkVsZW1lbnQgPSB0b09wdGlvbkVsZW1lbnQoaXRlbXNbaV0pKSB7CiAgICAgICAg
ICAgICBpZiAob3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKSkgewpAQCAtMTM2Miw3ICsxMzgxLDcg
QEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dHlwZUFoZWFkRmluZChLZXlib2FyZEV2ZW50KiBl
dmVudCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGl0
ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+
JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGludCBpdGVtQ291bnQgPSBpdGVtcy5zaXplKCk7
CiAgICAgaWYgKGl0ZW1Db3VudCA8IDEpCiAgICAgICAgIHJldHVybjsKQEAgLTE0MDAsNyArMTQx
OSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoYm9vbCBkZWVw
KQogICAgIC8vIFdoZW4gdGhlIGVsZW1lbnQgaXMgY3JlYXRlZCBkdXJpbmcgZG9jdW1lbnQgcGFy
c2luZywgaXQgd29uJ3QgaGF2ZSBhbnkKICAgICAvLyBpdGVtcyB5ZXQgLSBidXQgZm9yIGlubmVy
SFRNTCBhbmQgcmVsYXRlZCBtZXRob2RzLCB0aGlzIG1ldGhvZCBpcyBjYWxsZWQKICAgICAvLyBh
ZnRlciB0aGUgd2hvbGUgc3VidHJlZSBpcyBjb25zdHJ1Y3RlZC4KLSAgICByZWNhbGNMaXN0SXRl
bXMobV9kYXRhLCB0aGlzLCB0cnVlKTsKKyAgICByZWNhbGNMaXN0SXRlbXModHJ1ZSk7CiAgICAg
SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6aW5zZXJ0ZWRJbnRvVHJlZShkZWVwKTsK
IH0KIApAQCAtMTQxMSw3ICsxNDMwLDcgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6YWNjZXNz
S2V5U2V0U2VsZWN0ZWRJbmRleChpbnQgaW5kZXgpCiAgICAgICAgIGFjY2Vzc0tleUFjdGlvbihm
YWxzZSk7CiAgICAgCiAgICAgLy8gaWYgdGhpcyBpbmRleCBpcyBhbHJlYWR5IHNlbGVjdGVkLCB1
bnNlbGVjdC4gb3RoZXJ3aXNlIHVwZGF0ZSB0aGUgc2VsZWN0ZWQgaW5kZXgKLSAgICBjb25zdCBW
ZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IG1fZGF0YS5saXN0SXRlbXModGhpcyk7CisgICAgY29u
c3QgVmVjdG9yPEVsZW1lbnQqPiYgaXRlbXMgPSBsaXN0SXRlbXMoKTsKICAgICBpbnQgbGlzdElu
ZGV4ID0gb3B0aW9uVG9MaXN0SW5kZXgoaW5kZXgpOwogICAgIGlmIChPcHRpb25FbGVtZW50KiBv
cHRpb25FbGVtZW50ID0gKGxpc3RJbmRleCA+PSAwID8gdG9PcHRpb25FbGVtZW50KGl0ZW1zW2xp
c3RJbmRleF0pIDogMCkpIHsKICAgICAgICAgaWYgKG9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkp
CkBAIC0xNDMyLDcgKzE0NTEsNyBAQCB1bnNpZ25lZCBIVE1MU2VsZWN0RWxlbWVudDo6bGVuZ3Ro
KCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBvcHRpb25zID0gMDsKIAotICAgIGNvbnN0IFZlY3Rv
cjxFbGVtZW50Kj4mIGl0ZW1zID0gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsKKyAgICBjb25zdCBW
ZWN0b3I8RWxlbWVudCo+JiBpdGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoaXNPcHRpb25FbGVt
ZW50KGl0ZW1zW2ldKSkKICAgICAgICAgICAgICsrb3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNlbGVjdEVsZW1lbnQuaAppbmRleCA1MjJjMzUxYWU5NmM2NDc4MTE3M2NmZjVjYjY0YmEz
ZWRlYTk1M2IxLi4zOGQwMzJjODliZGFkMDUwNTNjY2JkYTI5ZjNiNGFhNjBjNWExZTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU2VsZWN0RWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Niw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFJlY2FsY0xpc3RJdGVtcygpOwogICAgIHZvaWQgcmVjYWxjTGlzdEl0ZW1zSWZOZWVkZWQoKTsK
IAotICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcygpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5saXN0SXRlbXModGhpcyk7IH0KKyAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBs
aXN0SXRlbXMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9v
bCBzZW5kVG9BbnlFbGVtZW50KTsKICAgICB2b2lkIGFjY2Vzc0tleVNldFNlbGVjdGVkSW5kZXgo
aW50KTsKQEAgLTE0Myw3ICsxNDQsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBoYXNQbGFjZWhv
bGRlckxhYmVsT3B0aW9uKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgdm9pZCByZWNhbGNMaXN0SXRl
bXMoU2VsZWN0RWxlbWVudERhdGEmLCBjb25zdCBFbGVtZW50KiwgYm9vbCB1cGRhdGVTZWxlY3Rl
ZFN0YXRlcyA9IHRydWUpOworICAgIHZvaWQgY2hlY2tMaXN0SXRlbXMoKSBjb25zdDsKKyAgICB2
b2lkIHJlY2FsY0xpc3RJdGVtc0ludGVybmFsKGJvb2wgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMgPSB0
cnVlKTsKICAgICB2b2lkIHNldFNlbGVjdGVkSW5kZXhJbnRlcm5hbChpbnQgb3B0aW9uSW5kZXgs
IGJvb2wgZGVzZWxlY3QgPSB0cnVlLCBib29sIGZpcmVPbkNoYW5nZU5vdyA9IGZhbHNlLCBib29s
IHVzZXJEcml2ZW5DaGFuZ2UgPSB0cnVlKTsKICAgICB2b2lkIGRlc2VsZWN0SXRlbXNXaXRob3V0
VmFsaWRhdGlvbihFbGVtZW50KiBleGNsdWRlRWxlbWVudCA9IDApOwogICAgIHZvaWQgcGFyc2VN
dWx0aXBsZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUqKTsKQEAgLTE1Myw3ICsxNTUsNiBAQCBw
cml2YXRlOgogICAgIGJvb2wgcGxhdGZvcm1IYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVu
dCopOwogICAgIHZvaWQgbGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2
b2lkIHNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcigpOwotICAgIGZyaWVuZCBjbGFzcyBTZWxl
Y3RFbGVtZW50RGF0YTsKIAogICAgIGVudW0gU2tpcERpcmVjdGlvbiB7CiAgICAgICAgIFNraXBC
YWNrd2FyZHMgPSAtMSwKQEAgLTE2OCw2ICsxNjksOCBAQCBwcml2YXRlOgogCiAgICAgU2VsZWN0
RWxlbWVudERhdGEgbV9kYXRhOwogICAgIENvbGxlY3Rpb25DYWNoZSBtX2NvbGxlY3Rpb25JbmZv
OworICAgIFZlY3RvcjxFbGVtZW50Kj4gbV9saXN0SXRlbXM7CisgICAgYm9vbCBtX3JlY2FsY0xp
c3RJdGVtczsKIH07CiAKIEhUTUxTZWxlY3RFbGVtZW50KiB0b1NlbGVjdEVsZW1lbnQoRWxlbWVu
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudFdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50V2luLmNwcAppbmRl
eCA0OTkxZDJhN2ZlOWNkZjliMmNmMzc0MGVlMjY1MjhmODUzZThhODE4Li40NDVkZDRhM2Q2NTg3
YzRkNTY5ZDI1ZWY5MGM5MDBlNDZiNTNiNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50V2luLmNwcApAQCAtNDgsNyArNDgsNyBAQCBib29sIEhUTUxTZWxlY3RF
bGVtZW50OjpwbGF0Zm9ybUhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkK
IAogICAgIGludCBpbmRleCA9IHNlbGVjdGVkSW5kZXgoKTsKICAgICBBU1NFUlQoaW5kZXggPj0g
MCk7Ci0gICAgQVNTRVJUKGluZGV4IDwgbV9kYXRhLmxpc3RJdGVtcyh0aGlzKS5zaXplKCkpOwor
ICAgIEFTU0VSVChpbmRleCA8IGxpc3RJdGVtcygpLnNpemUoKSk7CiAgICAgc2V0U2VsZWN0ZWRJ
bmRleEludGVybmFsKGluZGV4KTsKICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAg
ICByZXR1cm4gdHJ1ZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>