<?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>98829</bug_id>
          
          <creation_ts>2012-10-09 15:45:30 -0700</creation_ts>
          <short_desc>Minimize the recent template explosion in SelectorChecker.</short_desc>
          <delta_ts>2012-10-10 20:07:33 -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>New Bugs</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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>shinyak</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>738272</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-09 15:45:30 -0700</bug_when>
    <thetext>Minimize the recent template explosion in SelectorChecker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738277</commentid>
    <comment_count>1</comment_count>
      <attachid>167867</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-09 15:49:49 -0700</bug_when>
    <thetext>Created attachment 167867
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739175</commentid>
    <comment_count>2</comment_count>
      <attachid>168048</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-10 11:38:09 -0700</bug_when>
    <thetext>Created attachment 168048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739205</commentid>
    <comment_count>3</comment_count>
      <attachid>168048</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-10 12:15:57 -0700</bug_when>
    <thetext>Comment on attachment 168048
Patch

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

&gt; Source/WebCore/css/SelectorChecker.h:100
&gt; -    template&lt;typename CheckingContext&gt;
&gt; -    SelectorMatch checkSelector(const CheckingContext&amp;, PseudoId&amp;, bool&amp; hasUnknownPseudoElements) const;
&gt; -    template&lt;typename CheckingContext&gt;
&gt; -    bool checkOneSelector(const CheckingContext&amp;) const;
&gt; +    SelectorMatch checkSelector(const SelectorCheckingContext&amp;, PseudoId&amp;, bool&amp; hasUnknownPseudoElements) const;
&gt; +    template&lt;typename SiblingTraversalStrategy&gt;
&gt; +    bool checkOneSelector(const SelectorCheckingContext&amp;, const SiblingTraversalStrategy&amp;) const;

Since only checkOneSelector is now templated I suppose you expect to be calling it directly with a different strategy?

You are now calling SiblingTraversalStrategy with object that contains no data. Why? Do you expect that some other strategy will need data?  Are you sure the object and this pointer gets optimized away?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739362</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-10 16:00:23 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 168048 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=168048&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/SelectorChecker.h:100
&gt; &gt; -    template&lt;typename CheckingContext&gt;
&gt; &gt; -    SelectorMatch checkSelector(const CheckingContext&amp;, PseudoId&amp;, bool&amp; hasUnknownPseudoElements) const;
&gt; &gt; -    template&lt;typename CheckingContext&gt;
&gt; &gt; -    bool checkOneSelector(const CheckingContext&amp;) const;
&gt; &gt; +    SelectorMatch checkSelector(const SelectorCheckingContext&amp;, PseudoId&amp;, bool&amp; hasUnknownPseudoElements) const;
&gt; &gt; +    template&lt;typename SiblingTraversalStrategy&gt;
&gt; &gt; +    bool checkOneSelector(const SelectorCheckingContext&amp;, const SiblingTraversalStrategy&amp;) const;
&gt; 
&gt; Since only checkOneSelector is now templated I suppose you expect to be calling it directly with a different strategy?

Right. Here&apos;s a larger context of this patch: https://bugs.webkit.org/attachment.cgi?id=167976&amp;action=review

&gt; 
&gt; You are now calling SiblingTraversalStrategy with object that contains no data. Why? Do you expect that some other strategy will need data?

Yes, the ShadowDOMSiblingTraversalStrategy will contain a list of nodes that are considered siblings in that context.

&gt;  Are you sure the object and this pointer gets optimized away?

I spent a bit of time trying to discern this in assembly, but my disas-foo is weak :-\ I couldn&apos;t see much difference between the callsites. The PerformanceTests/CSS/PseudoClassSelectors.html shows no difference in performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739369</commentid>
    <comment_count>5</comment_count>
      <attachid>168048</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-10 16:11:00 -0700</bug_when>
    <thetext>Comment on attachment 168048
Patch

Ok, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739470</commentid>
    <comment_count>6</comment_count>
      <attachid>168048</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 18:26:50 -0700</bug_when>
    <thetext>Comment on attachment 168048
Patch

Rejecting attachment 168048 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/14248724</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739517</commentid>
    <comment_count>7</comment_count>
      <attachid>168127</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-10 19:21:02 -0700</bug_when>
    <thetext>Created attachment 168127
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739541</commentid>
    <comment_count>8</comment_count>
      <attachid>168127</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 20:07:29 -0700</bug_when>
    <thetext>Comment on attachment 168127
Patch for landing

Clearing flags on attachment: 168127

Committed r131002: &lt;http://trac.webkit.org/changeset/131002&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739542</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 20:07:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167867</attachid>
            <date>2012-10-09 15:49:49 -0700</date>
            <delta_ts>2012-10-10 11:38:06 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-98829-20121009154850.patch</filename>
            <type>text/plain</type>
            <size>19005</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2UwYzQzOGRlZjFiZWQx
MWUwZTRhMWNhMzBlNmU2ZjJhYzZiY2IwNC4uMTZlNzdmMmM1NTFjMDk4MWVjZTZkYjhkZmNkNmVk
YTFkZGMyZGNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEwLTA5ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWluaW1pemUg
dGhlIHJlY2VudCB0ZW1wbGF0ZSBleHBsb3Npb24gaW4gU2VsZWN0b3JDaGVja2VyLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg4MjkKKworICAgICAg
ICBXZSd2ZSByZWNlbnRseSBhZGRlZCB0aGUgY2FwYWJpbGl0eSB0byBzd2l0Y2ggc2libGluZyB0
cmF2ZXJzYWwgc3RyYXRlZ3kgdG8gU2VsZWN0b3JDaGVja2VyLCBhdCBzb21lIHJlYWRhYmlsaXR5
L2NsYXJpdHkgZXhwZW5zZS4KKyAgICAgICAgVGhpcyBwYXRjaCB0cmllcyB0byBtaW5pbWl6ZSB0
aGUgc3VyZmFjZSBvZiB0aGlzIGV4cGVuc2UgdG8gU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNl
bGVjdG9yLiAKKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4K
KworICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKTogVHVybmVkIGJhY2sgaW50byBhIGZ1bmN0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KTogQ2hhbmdlZCB0byBzcGVjaWFsaXplIG9uIHRyYXZlcnNhbCBzdHJhdGVneSwgcmF0aGVyIHRo
YW4gdGhlIGNvbnRleHQsIHdoaWNoIHdhcyBsZXNzIGNsZWFyLgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdENoaWxkKTogVHVy
bmVkIGludG8gYSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6
RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmlzTGFzdENoaWxkKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojppc0ZpcnN0T2ZUeXBl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNh
bFN0cmF0ZWd5Ojppc0xhc3RPZlR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNCZWZvcmUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3Ry
YXRlZ3k6OmNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNB
ZnRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2
ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c09mVHlwZUFmdGVyKTogRGl0dG8uCisgICAgICAg
ICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAgICAgICAoRE9NVHJhdmVyc2FsU3RyYXRlZ3kp
OiBDaGFuZ2VkIGludG8gYSBzdHJ1Y3QsIHJhdGhlciB0aGFuIGEgdGVtcGxhdGUuCisgICAgICAg
IChTZWxlY3RvckNoZWNrZXIpOiBUdXJuZWQgYmFjayBpbnRvIGEgZnVuY3Rpb24uCisKIDIwMTIt
MTAtMDkgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBbY2hy
b21pdW1dIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RleHQtc3BsaWNlZC1mb250Lmh0bWwgYW5k
IGZhc3Qvd3JpdGluZy1tb2RlL0t1c2EtTWFrdXJhLWJhY2tncm91bmQtY2FudmFzLmh0bWwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggYmY1ODAzZDIwNzhlZjcxOTc0
MDZhZWUwNmVjODM3ODBiMjIwNmU4NS4uNmQ5YjEyYWU5MDE4OTYyMjRkNzk2M2JlNzQ1ZDcyNmY3
ZWZlNmMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTQzOSwx
MSArNDM5LDEwIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3Rv
cihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCiAvLyAqIFNlbGVjdG9yRmFpbHNMb2NhbGx5
ICAgICAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3IgdGhlIGVsZW1lbnQgZQogLy8gKiBTZWxlY3Rv
ckZhaWxzQWxsU2libGluZ3MgLSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIGUgYW5kIGFueSBzaWJs
aW5nIG9mIGUKIC8vICogU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgIC0gdGhlIHNlbGVjdG9yIGZh
aWxzIGZvciBlIGFuZCBhbnkgc2libGluZyBvciBhbmNlc3RvciBvZiBlCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGVja2luZ0NvbnRleHQ+Ci1TZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2Vs
ZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYgY29udGV4
dCwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50
cykgY29uc3QKK1NlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBz
ZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNv
bnN0CiB7CiAgICAgLy8gZmlyc3Qgc2VsZWN0b3IgaGFzIHRvIG1hdGNoCi0gICAgaWYgKCFjaGVj
a09uZVNlbGVjdG9yKGNvbnRleHQpKQorICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcjxET01UcmF2
ZXJzYWxTdHJhdGVneT4oY29udGV4dCkpCiAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzTG9j
YWxseTsKIAogICAgIGlmIChjb250ZXh0LnNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9FbGVtZW50KSB7CkBAIC00NzMsNyArNDcyLDcgQEAgU2VsZWN0b3JDaGVja2VyOjpT
ZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBDaGVja2lu
Z0NvbnQKICAgICBpZiAoIWhpc3RvcnlTZWxlY3RvcikKICAgICAgICAgcmV0dXJuIFNlbGVjdG9y
TWF0Y2hlczsKIAotICAgIENoZWNraW5nQ29udGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKKyAg
ICBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBuZXh0Q29udGV4dChjb250ZXh0KTsKICAgICBuZXh0
Q29udGV4dC5zZWxlY3RvciA9IGhpc3RvcnlTZWxlY3RvcjsKIAogICAgIFBzZXVkb0lkIGlnbm9y
ZUR5bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKQEAgLTcyNyw4ICs3MjYsOCBAQCBzdGF0aWMgYm9v
bCBhbnlBdHRyaWJ1dGVNYXRjaGVzKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpNYXRj
aCBtYXRjaCwgY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
Q2hlY2tpbmdDb250ZXh0PgotYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3Io
Y29uc3QgQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUg
U3RyYXRlZ3k+Citib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBT
ZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBFbGVtZW50KiBj
b25zdCAmIGVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQ7CiAgICAgQ1NTU2VsZWN0b3IqIGNvbnN0
ICYgc2VsZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yOwpAQCAtNzY1LDcgKzc2NCw3IEBAIGJvb2wg
U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYg
Y29udGV4dCkgY29uc3QKICAgICAgICAgICAgIGlmICghc2VsZWN0b3JMaXN0KQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgQ2hlY2tpbmdDb250ZXh0IHN1YkNv
bnRleHQoY29udGV4dCk7CisgICAgICAgICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBzdWJD
b250ZXh0KGNvbnRleHQpOwogICAgICAgICAgICAgc3ViQ29udGV4dC5pc1N1YlNlbGVjdG9yID0g
dHJ1ZTsKICAgICAgICAgICAgIGZvciAoc3ViQ29udGV4dC5zZWxlY3RvciA9IHNlbGVjdG9yTGlz
dC0+Zmlyc3QoKTsgc3ViQ29udGV4dC5zZWxlY3Rvcjsgc3ViQ29udGV4dC5zZWxlY3RvciA9IHN1
YkNvbnRleHQuc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkgewogICAgICAgICAgICAgICAgIC8vIDpu
b3QgY2Fubm90IG5lc3QuIEkgZG9uJ3QgcmVhbGx5IGtub3cgd2h5IHRoaXMgaXMgYQpAQCAtNzc1
LDcgKzc3NCw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0
IENoZWNraW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICAgICAgICAgICAgICAvLyBXZSBz
ZWxlY3QgYmV0d2VlbiA6dmlzaXRlZCBhbmQgOmxpbmsgd2hlbiBhcHBseWluZy4gV2UgZG9uJ3Qg
a25vdyB3aGljaCBvbmUgYXBwbGllZCAob3Igbm90KSB5ZXQuCiAgICAgICAgICAgICAgICAgaWYg
KHN1YkNvbnRleHQuc2VsZWN0b3ItPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRv
VmlzaXRlZCB8fCAoc3ViQ29udGV4dC5zZWxlY3Rvci0+cHNldWRvVHlwZSgpID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9MaW5rICYmIHN1YkNvbnRleHQudmlzaXRlZE1hdGNoVHlwZSA9PSBWaXNpdGVk
TWF0Y2hFbmFibGVkKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHN1YkNvbnRleHQpKQorICAgICAgICAgICAg
ICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcjxET01UcmF2ZXJzYWxTdHJhdGVneT4oc3ViQ29udGV4
dCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UgaWYgKGNvbnRleHQuaGFzU2Nyb2xsYmFyUHNldWRvKSB7CkBAIC04MTksNyAr
ODE4LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgQ2hl
Y2tpbmdDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9GaXJzdENoaWxkOgogICAgICAgICAgICAgLy8gZmlyc3QtY2hpbGQgbWF0Y2hlcyB0aGUg
Zmlyc3QgY2hpbGQgdGhhdCBpcyBhbiBlbGVtZW50CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+
cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2
ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0ZpcnN0Q2hpbGQoY29udGV4dCwgZWxl
bWVudCk7CisgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBTdHJhdGVneTo6aXNGaXJzdENo
aWxkKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5
bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250
ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVy
U3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0g
Y29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGVsZW1l
bnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKQEAgLTgzNCw3ICs4MzMsNyBAQCBib29s
IFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQm
IGNvbnRleHQpIGNvbnN0CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0T2ZU
eXBlOgogICAgICAgICAgICAgLy8gZmlyc3Qtb2YtdHlwZSBtYXRjaGVzIHRoZSBmaXJzdCBlbGVt
ZW50IG9mIGl0cyB0eXBlCiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+cGFyZW50RWxlbWVudCgp
KSB7Ci0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2ZXJzYWxTdHJhdGVneTxD
aGVja2luZ0NvbnRleHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQt
PnRhZ1FOYW1lKCkpOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gU3RyYXRlZ3k6Omlz
Rmlyc3RPZlR5cGUoZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQu
ZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJTdHlsZSgp
OwogICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCkBAIC04NDYsNyArODQ1LDcg
QEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdD
b250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9M
YXN0Q2hpbGQ6CiAgICAgICAgICAgICAvLyBsYXN0LWNoaWxkIG1hdGNoZXMgdGhlIGxhc3QgY2hp
bGQgdGhhdCBpcyBhbiBlbGVtZW50CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxl
bWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGJvb2wg
cmVzdWx0ID0gcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmIERP
TVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmlzTGFzdENoaWxkKGNvbnRleHQs
IGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGFyZW50RWxlbWVudC0+
aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmIFN0cmF0ZWd5Ojppc0xhc3RDaGlsZChlbGVt
ZW50KTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY29udGV4dC5lbGVt
ZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxlKCk7
CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQu
ZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50
LT5yZW5kZXJTdHlsZSgpOwpAQCAtODY4LDEzICs4NjcsMTMgQEAgYm9vbCBTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjb25z
dAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQt
PmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgICAgIHJldHVybiBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVj
a2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5cGUoY29udGV4dCwgZWxlbWVudCwgZWxlbWVudC0+dGFn
UU5hbWUoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmF0ZWd5Ojppc0xhc3RPZlR5cGUo
ZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvT25seUNoaWxkOgogICAg
ICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVt
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIGZpcnN0Q2hpbGQgPSBET01UcmF2ZXJzYWxT
dHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0ZpcnN0Q2hpbGQoY29udGV4dCwgZWxlbWVudCk7
Ci0gICAgICAgICAgICAgICAgYm9vbCBvbmx5Q2hpbGQgPSBmaXJzdENoaWxkICYmIHBhcmVudEVs
ZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiBET01UcmF2ZXJzYWxTdHJhdGVn
eTxDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RDaGlsZChjb250ZXh0LCBlbGVtZW50KTsKKyAgICAg
ICAgICAgICAgICBib29sIGZpcnN0Q2hpbGQgPSBTdHJhdGVneTo6aXNGaXJzdENoaWxkKGVsZW1l
bnQpOworICAgICAgICAgICAgICAgIGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBwYXJl
bnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgU3RyYXRlZ3k6OmlzTGFz
dENoaWxkKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5n
U3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBj
b250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVu
ZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxl
ID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBh
cmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBAIC05MDIsMTQgKzkwMSwxNCBAQCBib29sIFNl
bGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghcGFy
ZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIERPTVRyYXZlcnNhbFN0
cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmlzRmlyc3RPZlR5cGUoY29udGV4dCwgZWxlbWVudCwg
ZWxlbWVudC0+dGFnUU5hbWUoKSkgJiYgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250
ZXh0Pjo6aXNMYXN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkp
OworICAgICAgICAgICAgICAgIHJldHVybiBTdHJhdGVneTo6aXNGaXJzdE9mVHlwZShlbGVtZW50
LCBlbGVtZW50LT50YWdRTmFtZSgpKSAmJiBTdHJhdGVneTo6aXNMYXN0T2ZUeXBlKGVsZW1lbnQs
IGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb050aENoaWxkOgogICAgICAgICAgICAg
aWYgKCFzZWxlY3Rvci0+cGFyc2VOdGgoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVu
dCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMSArIERPTVRyYXZlcnNhbFN0cmF0
ZWd5PENoZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNCZWZvcmUoY29udGV4dCwgZWxlbWVu
dCk7CisgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMSArIFN0cmF0ZWd5Ojpjb3VudEVsZW1l
bnRzQmVmb3JlKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2
aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUg
PSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+
cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6
IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBAIC05MjcsNyArOTI2LDcgQEAgYm9vbCBT
ZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiBj
b250ZXh0KSBjb25zdAogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyc2VOdGgoKSkKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVt
ZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IGNv
dW50ID0gMSArIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmNvdW50RWxl
bWVudHNPZlR5cGVCZWZvcmUoY29udGV4dCwgZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7
CisgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMSArIFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRz
T2ZUeXBlQmVmb3JlKGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAg
ICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0
LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKQEAgLTk0OSw3ICs5NDgsNyBAQCBib29s
IFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQm
IGNvbnRleHQpIGNvbnN0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICgh
cGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMSArIERP
TVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNBZnRlcihj
b250ZXh0LCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgU3RyYXRl
Z3k6OmNvdW50RWxlbWVudHNBZnRlcihlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAoc2Vs
ZWN0b3ItPm1hdGNoTnRoKGNvdW50KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICB9CkBAIC05NjYsNyArOTY1LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjb25zdAog
ICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGls
ZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAg
ICAgICBpbnQgY291bnQgPSAxICsgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0
Pjo6Y291bnRFbGVtZW50c09mVHlwZUFmdGVyKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRh
Z1FOYW1lKCkpOworICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBTdHJhdGVneTo6Y291
bnRFbGVtZW50c09mVHlwZUFmdGVyKGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAg
ICAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2hOdGgoY291bnQpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTk3Nyw3ICs5NzYsNyBAQCBi
b29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQW55OgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIENoZWNr
aW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRleHQpOworICAgICAgICAgICAgICAgIFNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgc3Vi
Q29udGV4dC5pc1N1YlNlbGVjdG9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBib29sIGhhc1Vu
a25vd25Qc2V1ZG9FbGVtZW50cyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIFBzZXVkb0lkIGln
bm9yZUR5bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKQEAgLTEzNTksMjAgKzEzNTgsMTcgQEAgYm9v
bCBTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZVNlbGVjdG9yU2NvcGVzKGNvbnN0IENTU1NlbGVj
dG9yTGlzdCYgc2VsZWN0b3JMaXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8Pgot
aW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxlY3Rv
ckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdENoaWxkKGNvbnN0IFNl
bGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50
KQoraW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNG
aXJzdENoaWxkKEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuICFlbGVtZW50LT5wcmV2
aW91c0VsZW1lbnRTaWJsaW5nKCk7CiB9CiAKLXRlbXBsYXRlPD4KLWlubGluZSBib29sIFNlbGVj
dG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dD46OmlzTGFzdENoaWxkKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50KQoraW5saW5lIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0Q2hpbGQoRWxlbWVudCog
ZWxlbWVudCkKIHsKICAgICByZXR1cm4gIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOwog
fQogCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNh
bFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojppc0Zp
cnN0T2ZUeXBlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQm
LCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKQoraW5saW5lIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdE9mVHlwZShF
bGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKQogewogICAgIGZvciAo
Y29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmco
KTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkg
ewogICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKQEAgLTEzODEsOCArMTM3
Nyw3IEBAIGlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8
U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNrCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRl
bXBsYXRlPD4KLWlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRl
Z3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD46OmlzTGFzdE9mVHlw
ZShjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkKK2lubGluZSBib29sIFNlbGVj
dG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmlzTGFzdE9mVHlwZShFbGVtZW50KiBl
bGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKQogewogICAgIGZvciAoY29uc3QgRWxl
bWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBz
aWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKHNp
YmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCkBAIC0xMzkxLDggKzEzODYsNyBAQCBpbmxpbmUgYm9v
bCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6
U2VsZWN0b3JDaGVjawogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTw+Ci1pbmxpbmUg
aW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNCZWZvcmUoY29uc3QgU2Vs
ZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQp
CitpbmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50
RWxlbWVudHNCZWZvcmUoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpbnQgY291bnQgPSAwOwog
ICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVu
dFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNp
YmxpbmcoKSkgewpAQCAtMTQwOCw4ICsxNDAyLDcgQEAgaW5saW5lIGludCBTZWxlY3RvckNoZWNr
ZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2kK
ICAgICByZXR1cm4gY291bnQ7CiB9CiAKLXRlbXBsYXRlPD4KLWlubGluZSBpbnQgU2VsZWN0b3JD
aGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50c09mVHlwZUJlZm9yZShjb25zdCBTZWxlY3RvckNo
ZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdHlwZSkKK2lubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2
ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c09mVHlwZUJlZm9yZShFbGVtZW50KiBlbGVtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKQogewogICAgIGludCBjb3VudCA9IDA7CiAgICAg
Zm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2li
bGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGlu
ZygpKSB7CkBAIC0xNDIwLDggKzE0MTMsNyBAQCBpbmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6
RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraQogICAg
IHJldHVybiBjb3VudDsKIH0KIAotdGVtcGxhdGU8PgotaW5saW5lIGludCBTZWxlY3RvckNoZWNr
ZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQWZ0ZXIoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxl
Y3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQpCitpbmxpbmUgaW50IFNlbGVj
dG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNBZnRlcihFbGVt
ZW50KiBlbGVtZW50KQogewogICAgIGludCBjb3VudCA9IDA7CiAgICAgZm9yIChjb25zdCBFbGVt
ZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNp
YmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKQEAgLTE0MzAsOCArMTQyMiw3
IEBAIGlubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxl
Y3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpCiAgICAgcmV0dXJuIGNvdW50OwogfQogCi10ZW1w
bGF0ZTw+Ci1pbmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8
U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNP
ZlR5cGVBZnRlcihjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
JiwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkKK2lubGluZSBp
bnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c09m
VHlwZUFmdGVyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCiB7
CiAgICAgaW50IGNvdW50ID0gMDsKICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBl
bGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmct
Pm5leHRFbGVtZW50U2libGluZygpKSB7CkBAIC0xNDQyLDcgKzE0MzMsNCBAQCBpbmxpbmUgaW50
IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpT
ZWxlY3RvckNoZWNraQogICAgIHJldHVybiBjb3VudDsKIH0KIAotdGVtcGxhdGUKLVNlbGVjdG9y
Q2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3I8U2Vs
ZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD4oY29uc3QgU2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQmLCBQc2V1ZG9JZCYsIGJvb2wmKSBjb25zdDsKLQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDFmMzQ5MGM2NDc2NGIwZDIwMjFjNzNkZWM4ZjE5MWZi
YjE2MjNhMWIuLmYyMjBjZTg4Yzc3MGE0MDUzMzk0ZWYyMWM3Nzk4MjRiZWI0NDhiY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTgxLDI0ICs4MSwyMiBAQCBwdWJsaWM6
CiAgICAgICAgIGJvb2wgaGFzU2VsZWN0aW9uUHNldWRvOwogICAgIH07CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb250ZXh0PgogICAgIHN0cnVjdCBET01UcmF2ZXJzYWxTdHJhdGVneSB7Ci0g
ICAgICAgIHN0YXRpYyBib29sIGlzRmlyc3RDaGlsZChjb25zdCBDb250ZXh0JiwgRWxlbWVudCop
OwotICAgICAgICBzdGF0aWMgYm9vbCBpc0xhc3RDaGlsZChjb25zdCBDb250ZXh0JiwgRWxlbWVu
dCopOwotICAgICAgICBzdGF0aWMgYm9vbCBpc0ZpcnN0T2ZUeXBlKGNvbnN0IENvbnRleHQmLCBF
bGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgICAgICBzdGF0aWMgYm9vbCBpc0xh
c3RPZlR5cGUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0KLSAgICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzQmVmb3JlKGNvbnN0IENvbnRleHQm
LCBFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBpbnQgY291bnRFbGVtZW50c0FmdGVyKGNvbnN0
IENvbnRleHQmLCBFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBpbnQgY291bnRFbGVtZW50c09m
VHlwZUJlZm9yZShjb25zdCBDb250ZXh0JiwgRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0ZXIoY29uc3QgQ29u
dGV4dCYsIEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgICAgIHN0YXRpYyBi
b29sIGlzRmlyc3RDaGlsZChFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBib29sIGlzTGFzdENo
aWxkKEVsZW1lbnQqKTsKKyAgICAgICAgc3RhdGljIGJvb2wgaXNGaXJzdE9mVHlwZShFbGVtZW50
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICBzdGF0aWMgYm9vbCBpc0xhc3RPZlR5
cGUoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKworICAgICAgICBzdGF0aWMgaW50
IGNvdW50RWxlbWVudHNCZWZvcmUoRWxlbWVudCopOworICAgICAgICBzdGF0aWMgaW50IGNvdW50
RWxlbWVudHNBZnRlcihFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBpbnQgY291bnRFbGVtZW50
c09mVHlwZUJlZm9yZShFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICBz
dGF0aWMgaW50IGNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihFbGVtZW50KiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIH07CiAKICAgICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3Iq
LCBFbGVtZW50KiwgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3RvciA9IGZhbHNlKSBjb25zdDsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+Ci0gICAgU2VsZWN0b3JNYXRj
aCBjaGVja1NlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYsIFBzZXVkb0lkJiwgYm9vbCYg
aGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGVja2luZ0NvbnRleHQ+Ci0gICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKGNvbnN0IENoZWNraW5n
Q29udGV4dCYpIGNvbnN0OworICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3Rvcihjb25zdCBT
ZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIFBzZXVkb0lkJiwgYm9vbCYgaGFzVW5rbm93blBzZXVk
b0VsZW1lbnRzKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJhdGVneT4KKyAgICBi
b29sIGNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmKSBjb25z
dDsKIAogICAgIHN0YXRpYyBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGNvbnN0IENTU1Nl
bGVjdG9yKik7CiAgICAgYm9vbCBmYXN0Q2hlY2tTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvcios
IGNvbnN0IEVsZW1lbnQqKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168048</attachid>
            <date>2012-10-10 11:38:09 -0700</date>
            <delta_ts>2012-10-10 19:20:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98829-20121010113708.patch</filename>
            <type>text/plain</type>
            <size>19451</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwOTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgyZDhjMDIxZWZkMGYy
NWIxYWEyYzkxMjRkYzRjOGVhMDVkZWI1NC4uOTIyNWI3YjljOTQ1ZGEzN2Q4NWZkODI4N2UyNzkw
NTMzNTRhYzM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEwLTA5ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWluaW1pemUg
dGhlIHJlY2VudCB0ZW1wbGF0ZSBleHBsb3Npb24gaW4gU2VsZWN0b3JDaGVja2VyLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg4MjkKKworICAgICAg
ICBXZSd2ZSByZWNlbnRseSBhZGRlZCB0aGUgY2FwYWJpbGl0eSB0byBzd2l0Y2ggc2libGluZyB0
cmF2ZXJzYWwgc3RyYXRlZ3kgdG8gU2VsZWN0b3JDaGVja2VyLCBhdCBzb21lIHJlYWRhYmlsaXR5
L2NsYXJpdHkgZXhwZW5zZS4KKyAgICAgICAgVGhpcyBwYXRjaCB0cmllcyB0byBtaW5pbWl6ZSB0
aGUgc3VyZmFjZSBvZiB0aGlzIGV4cGVuc2UgdG8gU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNl
bGVjdG9yLiAKKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4K
KworICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKTogVHVybmVkIGJhY2sgaW50byBhIGZ1bmN0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KTogQ2hhbmdlZCB0byBzcGVjaWFsaXplIG9uIHRyYXZlcnNhbCBzdHJhdGVneSwgcmF0aGVyIHRo
YW4gdGhlIGNvbnRleHQsIHdoaWNoIHdhcyBsZXNzIGNsZWFyLgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdENoaWxkKTogVHVy
bmVkIGludG8gYSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6
RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmlzTGFzdENoaWxkKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojppc0ZpcnN0T2ZUeXBl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNh
bFN0cmF0ZWd5Ojppc0xhc3RPZlR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNCZWZvcmUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3Ry
YXRlZ3k6OmNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNB
ZnRlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2
ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c09mVHlwZUFmdGVyKTogRGl0dG8uCisgICAgICAg
ICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAgICAgICAoRE9NVHJhdmVyc2FsU3RyYXRlZ3kp
OiBDaGFuZ2VkIGludG8gYSBjbGFzcywgcmF0aGVyIHRoYW4gYSB0ZW1wbGF0ZS4KKyAgICAgICAg
KFNlbGVjdG9yQ2hlY2tlcik6IFR1cm5lZCBiYWNrIGludG8gYSBmdW5jdGlvbi4KKwogMjAxMi0x
MC0xMCAgTHVjaWFubyBXb2xmICA8bHVjaWFuby53b2xmQG9wZW5ib3NzYS5vcmc+CiAKICAgICAg
ICAgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlTG9uZ1ByZXNzIGJyZWFrcyBjb21waWxhdGlv
biBpZiBDT05URVhUX01FTlVTIGlzbid0IHNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmNwcAppbmRleCBiZjU4MDNkMjA3OGVmNzE5NzQwNmFlZTA2ZWM4Mzc4MGIyMjA2ZTg1Li5h
Y2Q0YjBhMzExNTdkNGQ1N2QzMzU3ZmUzOTRiYjczZWYwMjE2NWE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDM5LDExICs0MzksMTAgQEAgYm9vbCBTZWxlY3Rv
ckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxl
Y3RvcikKIC8vICogU2VsZWN0b3JGYWlsc0xvY2FsbHkgICAgIC0gdGhlIHNlbGVjdG9yIGZhaWxz
IGZvciB0aGUgZWxlbWVudCBlCiAvLyAqIFNlbGVjdG9yRmFpbHNBbGxTaWJsaW5ncyAtIHRoZSBz
ZWxlY3RvciBmYWlscyBmb3IgZSBhbmQgYW55IHNpYmxpbmcgb2YgZQogLy8gKiBTZWxlY3RvckZh
aWxzQ29tcGxldGVseSAgLSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIGUgYW5kIGFueSBzaWJsaW5n
IG9yIGFuY2VzdG9yIG9mIGUKLXRlbXBsYXRlPHR5cGVuYW1lIENoZWNraW5nQ29udGV4dD4KLVNl
bGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0
b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVk
bywgYm9vbCYgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdAorU2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxl
Y3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJv
b2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykgY29uc3QKIHsKICAgICAvLyBmaXJzdCBzZWxl
Y3RvciBoYXMgdG8gbWF0Y2gKLSAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3IoY29udGV4dCkpCisg
ICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKGNvbnRleHQsIERPTVNpYmxpbmdUcmF2ZXJzYWxTdHJh
dGVneSgpKSkKICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5OwogCiAgICAgaWYg
KGNvbnRleHQuc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQp
IHsKQEAgLTQ3Myw3ICs0NzIsNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2Vs
ZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udAogICAgIGlmICgh
aGlzdG9yeVNlbGVjdG9yKQogICAgICAgICByZXR1cm4gU2VsZWN0b3JNYXRjaGVzOwogCi0gICAg
Q2hlY2tpbmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRleHQpOworICAgIFNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0IG5leHRDb250ZXh0KGNvbnRleHQpOwogICAgIG5leHRDb250ZXh0LnNlbGVjdG9y
ID0gaGlzdG9yeVNlbGVjdG9yOwogCiAgICAgUHNldWRvSWQgaWdub3JlRHluYW1pY1BzZXVkbyA9
IE5PUFNFVURPOwpAQCAtNzI3LDggKzcyNiw4IEBAIHN0YXRpYyBib29sIGFueUF0dHJpYnV0ZU1h
dGNoZXMoRWxlbWVudCogZWxlbWVudCwgQ1NTU2VsZWN0b3I6Ok1hdGNoIG1hdGNoLCBjb25zCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+
Ci1ib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0Nv
bnRleHQmIGNvbnRleHQpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTaWJsaW5nVHJhdmVyc2Fs
U3RyYXRlZ3k+Citib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBT
ZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgY29uc3QgU2libGluZ1RyYXZlcnNhbFN0
cmF0ZWd5JiBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kpIGNvbnN0CiB7CiAgICAgRWxlbWVudCog
Y29uc3QgJiBlbGVtZW50ID0gY29udGV4dC5lbGVtZW50OwogICAgIENTU1NlbGVjdG9yKiBjb25z
dCAmIHNlbGVjdG9yID0gY29udGV4dC5zZWxlY3RvcjsKQEAgLTc2NSw3ICs3NjQsNyBAQCBib29s
IFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQm
IGNvbnRleHQpIGNvbnN0CiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yTGlzdCkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIENoZWNraW5nQ29udGV4dCBzdWJD
b250ZXh0KGNvbnRleHQpOworICAgICAgICAgICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgc3Vi
Q29udGV4dChjb250ZXh0KTsKICAgICAgICAgICAgIHN1YkNvbnRleHQuaXNTdWJTZWxlY3RvciA9
IHRydWU7CiAgICAgICAgICAgICBmb3IgKHN1YkNvbnRleHQuc2VsZWN0b3IgPSBzZWxlY3Rvckxp
c3QtPmZpcnN0KCk7IHN1YkNvbnRleHQuc2VsZWN0b3I7IHN1YkNvbnRleHQuc2VsZWN0b3IgPSBz
dWJDb250ZXh0LnNlbGVjdG9yLT50YWdIaXN0b3J5KCkpIHsKICAgICAgICAgICAgICAgICAvLyA6
bm90IGNhbm5vdCBuZXN0LiBJIGRvbid0IHJlYWxseSBrbm93IHdoeSB0aGlzIGlzIGEKQEAgLTc3
NSw3ICs3NzQsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25z
dCBDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgICAgICAgICAgICAgLy8gV2Ug
c2VsZWN0IGJldHdlZW4gOnZpc2l0ZWQgYW5kIDpsaW5rIHdoZW4gYXBwbHlpbmcuIFdlIGRvbid0
IGtub3cgd2hpY2ggb25lIGFwcGxpZWQgKG9yIG5vdCkgeWV0LgogICAgICAgICAgICAgICAgIGlm
IChzdWJDb250ZXh0LnNlbGVjdG9yLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b1Zpc2l0ZWQgfHwgKHN1YkNvbnRleHQuc2VsZWN0b3ItPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxl
Y3Rvcjo6UHNldWRvTGluayAmJiBzdWJDb250ZXh0LnZpc2l0ZWRNYXRjaFR5cGUgPT0gVmlzaXRl
ZE1hdGNoRW5hYmxlZCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICAgICAgICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzdWJDb250ZXh0KSkKKyAgICAgICAgICAg
ICAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc3ViQ29udGV4dCwgRE9NU2libGluZ1RyYXZlcnNh
bFN0cmF0ZWd5KCkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lmhhc1Njcm9sbGJhclBzZXVkbykgewpA
QCAtODE5LDcgKzgxOCw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KGNvbnN0IENoZWNraW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvRmlyc3RDaGlsZDoKICAgICAgICAgICAgIC8vIGZpcnN0LWNoaWxkIG1h
dGNoZXMgdGhlIGZpcnN0IGNoaWxkIHRoYXQgaXMgYW4gZWxlbWVudAogICAgICAgICAgICAgaWYg
KGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0
ID0gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdENoaWxkKGNv
bnRleHQsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gc2libGluZ1Ry
YXZlcnNhbFN0cmF0ZWd5LmlzRmlyc3RDaGlsZChlbGVtZW50KTsKICAgICAgICAgICAgICAgICBp
ZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRl
clN0eWxlKiBjaGlsZFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1l
bnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIFJl
bmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5l
bGVtZW50UGFyZW50U3R5bGUgOiBlbGVtZW50LT5wYXJlbnROb2RlKCktPnJlbmRlclN0eWxlKCk7
CkBAIC04MzQsNyArODMzLDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0
b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9GaXJzdE9mVHlwZToKICAgICAgICAgICAgIC8vIGZpcnN0LW9mLXR5
cGUgbWF0Y2hlcyB0aGUgZmlyc3QgZWxlbWVudCBvZiBpdHMgdHlwZQogICAgICAgICAgICAgaWYg
KGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0
ID0gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdE9mVHlwZShj
b250ZXh0LCBlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKKyAgICAgICAgICAgICAgICBi
b29sIHJlc3VsdCA9IHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5pc0ZpcnN0T2ZUeXBlKGVsZW1l
bnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0g
UmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVu
dFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHls
ZSA6IGVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHBhcmVudFN0eWxlKQpAQCAtODQ2LDcgKzg0NSw3IEBAIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGFzdENoaWxkOgogICAgICAg
ICAgICAgLy8gbGFzdC1jaGlsZCBtYXRjaGVzIHRoZSBsYXN0IGNoaWxkIHRoYXQgaXMgYW4gZWxl
bWVudAogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LT5w
YXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHBhcmVudEVs
ZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiBET01UcmF2ZXJzYWxTdHJhdGVn
eTxDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RDaGlsZChjb250ZXh0LCBlbGVtZW50KTsKKyAgICAg
ICAgICAgICAgICBib29sIHJlc3VsdCA9IHBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5n
Q2hpbGRyZW4oKSAmJiBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuaXNMYXN0Q2hpbGQoZWxlbWVu
dCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGNvbnRleHQuZWxlbWVu
dFN0eWxlID8gY29udGV4dC5lbGVtZW50U3R5bGUgOiBlbGVtZW50LT5yZW5kZXJTdHlsZSgpOwog
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVs
ZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlIDogcGFyZW50RWxlbWVudC0+
cmVuZGVyU3R5bGUoKTsKQEAgLTg2OCwxMyArODY3LDEzIEBAIGJvb2wgU2VsZWN0b3JDaGVja2Vy
OjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5p
c0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tp
bmdDb250ZXh0Pjo6aXNMYXN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FO
YW1lKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3ku
aXNMYXN0T2ZUeXBlKGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb09u
bHlDaGlsZDoKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBmaXJzdENoaWxkID0g
RE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdENoaWxkKGNvbnRl
eHQsIGVsZW1lbnQpOwotICAgICAgICAgICAgICAgIGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGls
ZCAmJiBwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgRE9NVHJh
dmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNMYXN0Q2hpbGQoY29udGV4dCwgZWxl
bWVudCk7CisgICAgICAgICAgICAgICAgYm9vbCBmaXJzdENoaWxkID0gc2libGluZ1RyYXZlcnNh
bFN0cmF0ZWd5LmlzRmlyc3RDaGlsZChlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBib29sIG9u
bHlDaGlsZCA9IGZpcnN0Q2hpbGQgJiYgcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdD
aGlsZHJlbigpICYmIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5pc0xhc3RDaGlsZChlbGVtZW50
KTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CiAgICAg
ICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY29udGV4dC5lbGVtZW50
U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAg
ICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxl
bWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5y
ZW5kZXJTdHlsZSgpOwpAQCAtOTAyLDE0ICs5MDEsMTQgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjb25zdAog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlz
RmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgICAgIHJldHVybiBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2lu
Z0NvbnRleHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FO
YW1lKCkpICYmIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmlzTGFzdE9m
VHlwZShjb250ZXh0LCBlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5LmlzRmlyc3RPZlR5cGUoZWxlbWVu
dCwgZWxlbWVudC0+dGFnUU5hbWUoKSkgJiYgc2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5LmlzTGFz
dE9mVHlwZShlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhDaGls
ZDoKICAgICAgICAgICAgIGlmICghc2VsZWN0b3ItPnBhcnNlTnRoKCkpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1l
bnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBE
T01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQmVmb3Jl
KGNvbnRleHQsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBzaWJs
aW5nVHJhdmVyc2FsU3RyYXRlZ3kuY291bnRFbGVtZW50c0JlZm9yZShlbGVtZW50KTsKICAgICAg
ICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAg
ICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBj
b250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAg
ICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxl
ID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHls
ZSgpOwpAQCAtOTI3LDcgKzkyNiw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNl
bGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICAgICAgICAg
IGlmICghc2VsZWN0b3ItPnBhcnNlTnRoKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1l
bnQoKSkgewotICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBET01UcmF2ZXJzYWxTdHJh
dGVneTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnRleHQs
IGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOworICAgICAgICAgICAgICAgIGludCBjb3Vu
dCA9IDEgKyBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuY291bnRFbGVtZW50c09mVHlwZUJlZm9y
ZShlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKICAgICAgICAgICAgICAgICBpZiAobV9t
b2RlID09IFJlc29sdmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxl
KiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFy
ZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAocGFyZW50U3R5bGUpCkBAIC05NDksNyArOTQ4LDcgQEAgYm9vbCBTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBj
b25zdAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1l
bnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDEgKyBET01UcmF2ZXJzYWxT
dHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQWZ0ZXIoY29udGV4dCwgZWxl
bWVudCk7CisgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMSArIHNpYmxpbmdUcmF2ZXJzYWxT
dHJhdGVneS5jb3VudEVsZW1lbnRzQWZ0ZXIoZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYg
KHNlbGVjdG9yLT5tYXRjaE50aChjb3VudCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgfQpAQCAtOTY2LDcgKzk2NSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVj
a2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYgY29udGV4dCkgY29u
c3QKICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5n
Q2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
ICAgICAgICAgaW50IGNvdW50ID0gMSArIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29u
dGV4dD46OmNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihjb250ZXh0LCBlbGVtZW50LCBlbGVtZW50
LT50YWdRTmFtZSgpKTsKKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgc2libGluZ1Ry
YXZlcnNhbFN0cmF0ZWd5LmNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihlbGVtZW50LCBlbGVtZW50
LT50YWdRTmFtZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoTnRoKGNv
dW50KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBA
IC05NzcsNyArOTc2LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3Io
Y29uc3QgQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0FueToKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBDaGVja2luZ0NvbnRleHQgc3ViQ29udGV4dChjb250ZXh0KTsKKyAgICAg
ICAgICAgICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRleHQpOwog
ICAgICAgICAgICAgICAgIHN1YkNvbnRleHQuaXNTdWJTZWxlY3RvciA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgYm9vbCBoYXNVbmtub3duUHNldWRvRWxlbWVudHMgPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICBQc2V1ZG9JZCBpZ25vcmVEeW5hbWljUHNldWRvID0gTk9QU0VVRE87CkBAIC0xMzU5
LDIwICsxMzU4LDE3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVTZWxlY3RvclNj
b3Blcyhjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXRlbXBsYXRlPD4KLWlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVy
c2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD46Omlz
Rmlyc3RDaGlsZChjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
JiwgRWxlbWVudCogZWxlbWVudCkKK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9NU2li
bGluZ1RyYXZlcnNhbFN0cmF0ZWd5Ojppc0ZpcnN0Q2hpbGQoRWxlbWVudCogZWxlbWVudCkgY29u
c3QKIHsKICAgICByZXR1cm4gIWVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsKIH0K
IAotdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxT
dHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6aXNMYXN0
Q2hpbGQoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVs
ZW1lbnQqIGVsZW1lbnQpCitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVNpYmxpbmdU
cmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0Q2hpbGQoRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsK
ICAgICByZXR1cm4gIWVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOwogfQogCi10ZW1wbGF0
ZTw+Ci1pbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNl
bGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojppc0ZpcnN0T2ZUeXBlKGNv
bnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBl
bGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKQoraW5saW5lIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpET01TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3k6OmlzRmlyc3RPZlR5cGUoRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkgY29uc3QKIHsKICAgICBmb3Ig
KGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5n
KCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkp
IHsKICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCkBAIC0xMzgxLDggKzEz
NzcsNyBAQCBpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5
PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVjawogICAgIHJldHVybiB0cnVlOwogfQogCi10
ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0
ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5
cGUoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCitpbmxpbmUgYm9vbCBTZWxl
Y3RvckNoZWNrZXI6OkRPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneTo6aXNMYXN0T2ZUeXBlKEVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpIGNvbnN0CiB7CiAgICAg
Zm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5n
KCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkgewog
ICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKQEAgLTEzOTEsOCArMTM4Niw3
IEBAIGlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2Vs
ZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNrCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBs
YXRlPD4KLWlubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxT
ZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50c0Jl
Zm9yZShjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxl
bWVudCogZWxlbWVudCkKK2lubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01TaWJsaW5nVHJh
dmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNCZWZvcmUoRWxlbWVudCogZWxlbWVudCkgY29u
c3QKIHsKICAgICBpbnQgY291bnQgPSAwOwogICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGlu
ZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9
IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewpAQCAtMTQwOCw4ICsxNDAyLDcg
QEAgaW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVj
dG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2kKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLXRlbXBs
YXRlPD4KLWlubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxT
ZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50c09m
VHlwZUJlZm9yZShjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
JiwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkKK2lubGluZSBp
bnQgU2VsZWN0b3JDaGVja2VyOjpET01TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxl
bWVudHNPZlR5cGVCZWZvcmUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
dHlwZSkgY29uc3QKIHsKICAgICBpbnQgY291bnQgPSAwOwogICAgIGZvciAoY29uc3QgRWxlbWVu
dCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsg
c2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewpAQCAtMTQyMCw4
ICsxNDEzLDcgQEAgaW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0
ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2kKICAgICByZXR1cm4gY291bnQ7CiB9
CiAKLXRlbXBsYXRlPD4KLWlubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxT
dHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6Y291bnRF
bGVtZW50c0FmdGVyKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRl
eHQmLCBFbGVtZW50KiBlbGVtZW50KQoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVNp
YmxpbmdUcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0FmdGVyKEVsZW1lbnQqIGVsZW1l
bnQpIGNvbnN0CiB7CiAgICAgaW50IGNvdW50ID0gMDsKICAgICBmb3IgKGNvbnN0IEVsZW1lbnQq
IHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGlu
ZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKQpAQCAtMTQzMCw4ICsxNDIyLDcgQEAg
aW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9y
Q2hlY2tlcjo6U2VsZWN0b3JDaGVja2kKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLXRlbXBsYXRl
PD4KLWlubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxl
Y3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50c09mVHlw
ZUFmdGVyKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBF
bGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKQoraW5saW5lIGludCBT
ZWxlY3RvckNoZWNrZXI6OkRPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50
c09mVHlwZUFmdGVyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUp
IGNvbnN0CiB7CiAgICAgaW50IGNvdW50ID0gMDsKICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNp
YmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9
IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKSB7CkBAIC0xNDQyLDcgKzE0MzMsNCBAQCBp
bmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JD
aGVja2VyOjpTZWxlY3RvckNoZWNraQogICAgIHJldHVybiBjb3VudDsKIH0KIAotdGVtcGxhdGUK
LVNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2Vs
ZWN0b3I8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD4oY29uc3QgU2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQmLCBQc2V1ZG9JZCYsIGJvb2wmKSBjb25zdDsKLQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDFmMzQ5MGM2NDc2NGIwZDIwMjFjNzNk
ZWM4ZjE5MWZiYjE2MjNhMWIuLmNkMmNiNGMzNmIxNmY5NDRlN2UyYjg4MzQxN2JmZjFiYTgyMTUx
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTgxLDI0ICs4MSwyMyBA
QCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaGFzU2VsZWN0aW9uUHNldWRvOwogICAgIH07CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgotICAgIHN0cnVjdCBET01UcmF2ZXJzYWxTdHJh
dGVneSB7Ci0gICAgICAgIHN0YXRpYyBib29sIGlzRmlyc3RDaGlsZChjb25zdCBDb250ZXh0Jiwg
RWxlbWVudCopOwotICAgICAgICBzdGF0aWMgYm9vbCBpc0xhc3RDaGlsZChjb25zdCBDb250ZXh0
JiwgRWxlbWVudCopOwotICAgICAgICBzdGF0aWMgYm9vbCBpc0ZpcnN0T2ZUeXBlKGNvbnN0IENv
bnRleHQmLCBFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgICAgICBzdGF0aWMg
Ym9vbCBpc0xhc3RPZlR5cGUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJik7Ci0KLSAgICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzQmVmb3JlKGNvbnN0
IENvbnRleHQmLCBFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBpbnQgY291bnRFbGVtZW50c0Fm
dGVyKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBpbnQgY291bnRF
bGVtZW50c09mVHlwZUJlZm9yZShjb25zdCBDb250ZXh0JiwgRWxlbWVudCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICAgICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0ZXIo
Y29uc3QgQ29udGV4dCYsIEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgY2xh
c3MgRE9NU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGJv
b2wgaXNGaXJzdENoaWxkKEVsZW1lbnQqKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0xhc3RDaGls
ZChFbGVtZW50KikgY29uc3Q7CisgICAgICAgIGJvb2wgaXNGaXJzdE9mVHlwZShFbGVtZW50Kiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgICAgICBib29sIGlzTGFzdE9mVHlwZShF
bGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworCisgICAgICAgIGludCBjb3Vu
dEVsZW1lbnRzQmVmb3JlKEVsZW1lbnQqKSBjb25zdDsKKyAgICAgICAgaW50IGNvdW50RWxlbWVu
dHNBZnRlcihFbGVtZW50KikgY29uc3Q7CisgICAgICAgIGludCBjb3VudEVsZW1lbnRzT2ZUeXBl
QmVmb3JlKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAgICAgIGlu
dCBjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0ZXIoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdDsKICAgICB9OwogCiAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwg
RWxlbWVudCosIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IgPSBmYWxzZSkgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tpbmdDb250ZXh0PgotICAgIFNlbGVjdG9yTWF0Y2gg
Y2hlY2tTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmLCBQc2V1ZG9JZCYsIGJvb2wmIGhh
c1Vua25vd25Qc2V1ZG9FbGVtZW50cykgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hl
Y2tpbmdDb250ZXh0PgotICAgIGJvb2wgY2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0Nv
bnRleHQmKSBjb25zdDsKKyAgICBTZWxlY3Rvck1hdGNoIGNoZWNrU2VsZWN0b3IoY29uc3QgU2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQmLCBQc2V1ZG9JZCYsIGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9F
bGVtZW50cykgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2libGluZ1RyYXZlcnNhbFN0
cmF0ZWd5PgorICAgIGJvb2wgY2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5n
Q29udGV4dCYsIGNvbnN0IFNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneSYpIGNvbnN0OwogCiAgICAg
c3RhdGljIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqKTsK
ICAgICBib29sIGZhc3RDaGVja1NlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiwgY29uc3QgRWxl
bWVudCopIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168127</attachid>
            <date>2012-10-10 19:21:02 -0700</date>
            <delta_ts>2012-10-10 20:07:28 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-98829-20121010192000.patch</filename>
            <type>text/plain</type>
            <size>19471</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwOTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThhNTAzNzk3NGVkNjJi
NmRkMGY0YWQ1ZDJkNTNmY2E3OThkMDE0Yi4uYTUyYjk4ZGM1MjA0NmM1MDRiMWMwNmVkYmM2YmUw
YmNhNjFjYjEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEwLTA5ICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWluaW1pemUg
dGhlIHJlY2VudCB0ZW1wbGF0ZSBleHBsb3Npb24gaW4gU2VsZWN0b3JDaGVja2VyLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg4MjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBXZSd2ZSByZWNlbnRseSBh
ZGRlZCB0aGUgY2FwYWJpbGl0eSB0byBzd2l0Y2ggc2libGluZyB0cmF2ZXJzYWwgc3RyYXRlZ3kg
dG8gU2VsZWN0b3JDaGVja2VyLCBhdCBzb21lIHJlYWRhYmlsaXR5L2NsYXJpdHkgZXhwZW5zZS4K
KyAgICAgICAgVGhpcyBwYXRjaCB0cmllcyB0byBtaW5pbWl6ZSB0aGUgc3VyZmFjZSBvZiB0aGlz
IGV4cGVuc2UgdG8gU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yLiAKKworICAgICAg
ICBObyBuZXcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGNzcy9T
ZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpj
aGVja1NlbGVjdG9yKTogVHVybmVkIGJhY2sgaW50byBhIGZ1bmN0aW9uLgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKTogQ2hhbmdlZCB0byBzcGVj
aWFsaXplIG9uIHRyYXZlcnNhbCBzdHJhdGVneSwgcmF0aGVyIHRoYW4gdGhlIGNvbnRleHQsIHdo
aWNoIHdhcyBsZXNzIGNsZWFyLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpE
T01UcmF2ZXJzYWxTdHJhdGVneTo6aXNGaXJzdENoaWxkKTogVHVybmVkIGludG8gYSBmdW5jdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRl
Z3k6OmlzTGFzdENoaWxkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNr
ZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojppc0ZpcnN0T2ZUeXBlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5Ojppc0xhc3RP
ZlR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJh
dmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNCZWZvcmUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVu
dHNPZlR5cGVCZWZvcmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tl
cjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNBZnRlcik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6Y291
bnRFbGVtZW50c09mVHlwZUFmdGVyKTogRGl0dG8uCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oOgorICAgICAgICAoRE9NVHJhdmVyc2FsU3RyYXRlZ3kpOiBDaGFuZ2VkIGludG8gYSBj
bGFzcywgcmF0aGVyIHRoYW4gYSB0ZW1wbGF0ZS4KKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tlcik6
IFR1cm5lZCBiYWNrIGludG8gYSBmdW5jdGlvbi4KKwogMjAxMi0xMC0xMCAgQWxleGFuZGVyIFNo
YWxhbW92ICA8YWxleGFuZGVyLnNoYWxhbW92QGludGVsLmNvbT4KIAogICAgICAgICBJbnZhbGlk
IHZhbHVlcyBmb3IgbWVkaWEgcXVlcnkgZmVhdHVyZXMgYXJlIG5vdCBoYW5kbGVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IGJmNTgwM2QyMDc4ZWY3MTk3NDA2YWVl
MDZlYzgzNzgwYjIyMDZlODUuLmFjZDRiMGEzMTE1N2Q0ZDU3ZDMzNTdmZTM5NGJiNzNlZjAyMTY1
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC00MzksMTEgKzQz
OSwxMCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29u
c3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogLy8gKiBTZWxlY3RvckZhaWxzTG9jYWxseSAgICAg
LSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIHRoZSBlbGVtZW50IGUKIC8vICogU2VsZWN0b3JGYWls
c0FsbFNpYmxpbmdzIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBlIGFuZCBhbnkgc2libGluZyBv
ZiBlCiAvLyAqIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5ICAtIHRoZSBzZWxlY3RvciBmYWlscyBm
b3IgZSBhbmQgYW55IHNpYmxpbmcgb3IgYW5jZXN0b3Igb2YgZQotdGVtcGxhdGU8dHlwZW5hbWUg
Q2hlY2tpbmdDb250ZXh0PgotU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBz
ZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNv
bnN0CitTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVj
a1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQc2V1ZG9J
ZCYgZHluYW1pY1BzZXVkbywgYm9vbCYgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdAog
ewogICAgIC8vIGZpcnN0IHNlbGVjdG9yIGhhcyB0byBtYXRjaAotICAgIGlmICghY2hlY2tPbmVT
ZWxlY3Rvcihjb250ZXh0KSkKKyAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3IoY29udGV4dCwgRE9N
U2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5KCkpKQogICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWls
c0xvY2FsbHk7CiAKICAgICBpZiAoY29udGV4dC5zZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxl
Y3Rvcjo6UHNldWRvRWxlbWVudCkgewpAQCAtNDczLDcgKzQ3Miw3IEBAIFNlbGVjdG9yQ2hlY2tl
cjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgQ2hl
Y2tpbmdDb250CiAgICAgaWYgKCFoaXN0b3J5U2VsZWN0b3IpCiAgICAgICAgIHJldHVybiBTZWxl
Y3Rvck1hdGNoZXM7CiAKLSAgICBDaGVja2luZ0NvbnRleHQgbmV4dENvbnRleHQoY29udGV4dCk7
CisgICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgbmV4dENvbnRleHQoY29udGV4dCk7CiAgICAg
bmV4dENvbnRleHQuc2VsZWN0b3IgPSBoaXN0b3J5U2VsZWN0b3I7CiAKICAgICBQc2V1ZG9JZCBp
Z25vcmVEeW5hbWljUHNldWRvID0gTk9QU0VVRE87CkBAIC03MjcsOCArNzI2LDggQEAgc3RhdGlj
IGJvb2wgYW55QXR0cmlidXRlTWF0Y2hlcyhFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6
TWF0Y2ggbWF0Y2gsIGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIENoZWNraW5nQ29udGV4dD4KLWJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVj
dG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3RlbXBsYXRlPHR5cGVu
YW1lIFNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneT4KK2Jvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVj
a09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBTaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kmIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneSkgY29u
c3QKIHsKICAgICBFbGVtZW50KiBjb25zdCAmIGVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQ7CiAg
ICAgQ1NTU2VsZWN0b3IqIGNvbnN0ICYgc2VsZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yOwpAQCAt
NzY1LDcgKzc2NCw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNv
bnN0IENoZWNraW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICAgICAgICAgIGlmICghc2Vs
ZWN0b3JMaXN0KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAg
Q2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CisgICAgICAgICAgICBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRleHQpOwogICAgICAgICAgICAgc3ViQ29u
dGV4dC5pc1N1YlNlbGVjdG9yID0gdHJ1ZTsKICAgICAgICAgICAgIGZvciAoc3ViQ29udGV4dC5z
ZWxlY3RvciA9IHNlbGVjdG9yTGlzdC0+Zmlyc3QoKTsgc3ViQ29udGV4dC5zZWxlY3Rvcjsgc3Vi
Q29udGV4dC5zZWxlY3RvciA9IHN1YkNvbnRleHQuc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkgewog
ICAgICAgICAgICAgICAgIC8vIDpub3QgY2Fubm90IG5lc3QuIEkgZG9uJ3QgcmVhbGx5IGtub3cg
d2h5IHRoaXMgaXMgYQpAQCAtNzc1LDcgKzc3NCw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpj
aGVja09uZVNlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAg
ICAgICAgICAgICAgICAvLyBXZSBzZWxlY3QgYmV0d2VlbiA6dmlzaXRlZCBhbmQgOmxpbmsgd2hl
biBhcHBseWluZy4gV2UgZG9uJ3Qga25vdyB3aGljaCBvbmUgYXBwbGllZCAob3Igbm90KSB5ZXQu
CiAgICAgICAgICAgICAgICAgaWYgKHN1YkNvbnRleHQuc2VsZWN0b3ItPnBzZXVkb1R5cGUoKSA9
PSBDU1NTZWxlY3Rvcjo6UHNldWRvVmlzaXRlZCB8fCAoc3ViQ29udGV4dC5zZWxlY3Rvci0+cHNl
dWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9MaW5rICYmIHN1YkNvbnRleHQudmlzaXRl
ZE1hdGNoVHlwZSA9PSBWaXNpdGVkTWF0Y2hFbmFibGVkKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHN1YkNv
bnRleHQpKQorICAgICAgICAgICAgICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzdWJDb250ZXh0
LCBET01TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3koKSkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQuaGFz
U2Nyb2xsYmFyUHNldWRvKSB7CkBAIC04MTksNyArODE4LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0KSBjb25z
dAogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdENoaWxkOgogICAgICAgICAg
ICAgLy8gZmlyc3QtY2hpbGQgbWF0Y2hlcyB0aGUgZmlyc3QgY2hpbGQgdGhhdCBpcyBhbiBlbGVt
ZW50CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAg
ICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRl
eHQ+Ojppc0ZpcnN0Q2hpbGQoY29udGV4dCwgZWxlbWVudCk7CisgICAgICAgICAgICAgICAgYm9v
bCByZXN1bHQgPSBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuaXNGaXJzdENoaWxkKGVsZW1lbnQp
OwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRT
dHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAg
ICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVt
ZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IGVsZW1lbnQtPnBhcmVudE5v
ZGUoKS0+cmVuZGVyU3R5bGUoKTsKQEAgLTgzNCw3ICs4MzMsNyBAQCBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGNv
bnN0CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0T2ZUeXBlOgogICAgICAg
ICAgICAgLy8gZmlyc3Qtb2YtdHlwZSBtYXRjaGVzIHRoZSBmaXJzdCBlbGVtZW50IG9mIGl0cyB0
eXBlCiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAg
ICAgICAgICAgYm9vbCByZXN1bHQgPSBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRl
eHQ+Ojppc0ZpcnN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkp
OworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gc2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5
LmlzRmlyc3RPZlR5cGUoZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSkgewogICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRl
eHQuZWxlbWVudFBhcmVudFN0eWxlIDogZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5yZW5kZXJTdHls
ZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCkBAIC04NDYsNyArODQ1
LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgQ2hlY2tp
bmdDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9MYXN0Q2hpbGQ6CiAgICAgICAgICAgICAvLyBsYXN0LWNoaWxkIG1hdGNoZXMgdGhlIGxhc3Qg
Y2hpbGQgdGhhdCBpcyBhbiBlbGVtZW50CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50
RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGJv
b2wgcmVzdWx0ID0gcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYm
IERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmlzTGFzdENoaWxkKGNvbnRl
eHQsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGFyZW50RWxlbWVu
dC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVn
eS5pc0xhc3RDaGlsZChlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJl
c29sdmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0
eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1l
bnQtPnJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJl
bnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5
bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwpAQCAtODY4LDEzICs4NjcsMTMgQEAg
Ym9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250
ZXh0JiBjb250ZXh0KSBjb25zdAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBp
ZiAoIXBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIHJldHVybiBET01UcmF2
ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RPZlR5cGUoY29udGV4dCwgZWxl
bWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNpYmxp
bmdUcmF2ZXJzYWxTdHJhdGVneS5pc0xhc3RPZlR5cGUoZWxlbWVudCwgZWxlbWVudC0+dGFnUU5h
bWUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvT25seUNoaWxkOgogICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBh
cmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAg
ICBib29sIGZpcnN0Q2hpbGQgPSBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+
Ojppc0ZpcnN0Q2hpbGQoY29udGV4dCwgZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgYm9vbCBv
bmx5Q2hpbGQgPSBmaXJzdENoaWxkICYmIHBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5n
Q2hpbGRyZW4oKSAmJiBET01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xh
c3RDaGlsZChjb250ZXh0LCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBib29sIGZpcnN0Q2hp
bGQgPSBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuaXNGaXJzdENoaWxkKGVsZW1lbnQpOworICAg
ICAgICAgICAgICAgIGJvb2wgb25seUNoaWxkID0gZmlyc3RDaGlsZCAmJiBwYXJlbnRFbGVtZW50
LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgc2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5
LmlzTGFzdENoaWxkKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVz
b2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5
bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVu
dC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVu
dFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHls
ZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBAIC05MDIsMTQgKzkwMSwxNCBAQCBi
b29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlm
ICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIERPTVRyYXZl
cnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmlzRmlyc3RPZlR5cGUoY29udGV4dCwgZWxl
bWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSkgJiYgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tp
bmdDb250ZXh0Pjo6aXNMYXN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FO
YW1lKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3ku
aXNGaXJzdE9mVHlwZShlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKSAmJiBzaWJsaW5nVHJh
dmVyc2FsU3RyYXRlZ3kuaXNMYXN0T2ZUeXBlKGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb050aENoaWxkOgogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyc2VO
dGgoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBw
YXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAg
ICAgaW50IGNvdW50ID0gMSArIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46
OmNvdW50RWxlbWVudHNCZWZvcmUoY29udGV4dCwgZWxlbWVudCk7CisgICAgICAgICAgICAgICAg
aW50IGNvdW50ID0gMSArIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5jb3VudEVsZW1lbnRzQmVm
b3JlKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5
bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250
ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVy
U3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0g
Y29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVu
dEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CkBAIC05MjcsNyArOTI2LDcgQEAgYm9vbCBTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0
KSBjb25zdAogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyc2VOdGgoKSkKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0g
ZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IGNvdW50ID0g
MSArIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNP
ZlR5cGVCZWZvcmUoY29udGV4dCwgZWxlbWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSk7CisgICAg
ICAgICAgICAgICAgaW50IGNvdW50ID0gMSArIHNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneS5jb3Vu
dEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAg
ICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUg
PyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQtPnJlbmRlclN0eWxl
KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKQEAgLTk0OSw3ICs5NDgs
NyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2lu
Z0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGlmICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW50IGNvdW50
ID0gMSArIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVu
dHNBZnRlcihjb250ZXh0LCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAx
ICsgc2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5LmNvdW50RWxlbWVudHNBZnRlcihlbGVtZW50KTsK
ICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoTnRoKGNvdW50KSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC05NjYsNyArOTY1LDcg
QEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdD
b250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgICAgICAgICAgICAgIGlmICghcGFyZW50RWxlbWVu
dC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgRE9NVHJhdmVyc2Fs
U3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50c09mVHlwZUFmdGVyKGNvbnRl
eHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOworICAgICAgICAgICAgICAgIGludCBj
b3VudCA9IDEgKyBzaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kuY291bnRFbGVtZW50c09mVHlwZUFm
dGVyKGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgICAgIGlmIChz
ZWxlY3Rvci0+bWF0Y2hOdGgoY291bnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgIH0KQEAgLTk3Nyw3ICs5NzYsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQW55
OgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIENoZWNraW5nQ29udGV4dCBzdWJDb250
ZXh0KGNvbnRleHQpOworICAgICAgICAgICAgICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IHN1
YkNvbnRleHQoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgc3ViQ29udGV4dC5pc1N1YlNlbGVj
dG9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBib29sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50
cyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIFBzZXVkb0lkIGlnbm9yZUR5bmFtaWNQc2V1ZG8g
PSBOT1BTRVVETzsKQEAgLTEzNTksMjAgKzEzNTgsMTcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6
OmRldGVybWluZVNlbGVjdG9yU2NvcGVzKGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JM
aXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgU2VsZWN0
b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdENoaWxkKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50KQoraW5saW5lIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjpET01TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3k6OmlzRmlyc3RDaGlsZChF
bGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIHJldHVybiAhZWxlbWVudC0+cHJldmlvdXNF
bGVtZW50U2libGluZygpOwogfQogCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCBTZWxlY3RvckNo
ZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQ+Ojppc0xhc3RDaGlsZChjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCkKK2lubGluZSBib29sIFNlbGVjdG9y
Q2hlY2tlcjo6RE9NU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5Ojppc0xhc3RDaGlsZChFbGVtZW50
KiBlbGVtZW50KSBjb25zdAogewogICAgIHJldHVybiAhZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJs
aW5nKCk7CiB9CiAKLXRlbXBsYXRlPD4KLWlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9N
VHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4
dD46OmlzRmlyc3RPZlR5cGUoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5n
Q29udGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCitp
bmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneTo6
aXNGaXJzdE9mVHlwZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBl
KSBjb25zdAogewogICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPnBy
ZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZp
b3VzRWxlbWVudFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0
eXBlKSkKQEAgLTEzODEsOCArMTM3Nyw3IEBAIGlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6
RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNrCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPD4KLWlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5n
Q29udGV4dD46OmlzTGFzdE9mVHlwZShjb25zdCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlw
ZSkKK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9NU2libGluZ1RyYXZlcnNhbFN0cmF0
ZWd5Ojppc0xhc3RPZlR5cGUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
dHlwZSkgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50
LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRF
bGVtZW50U2libGluZygpKSB7CiAgICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUp
KQpAQCAtMTM5MSw4ICsxMzg2LDcgQEAgaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01U
cmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2sKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8PgotaW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRP
TVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRl
eHQ+Ojpjb3VudEVsZW1lbnRzQmVmb3JlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JD
aGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50KQoraW5saW5lIGludCBTZWxlY3RvckNo
ZWNrZXI6OkRPTVNpYmxpbmdUcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c0JlZm9yZShF
bGVtZW50KiBlbGVtZW50KSBjb25zdAogewogICAgIGludCBjb3VudCA9IDA7CiAgICAgZm9yIChj
b25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygp
OyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7
CkBAIC0xNDA4LDggKzE0MDIsNyBAQCBpbmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJh
dmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraQogICAgIHJldHVy
biBjb3VudDsKIH0KIAotdGVtcGxhdGU8PgotaW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRP
TVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRl
eHQ+Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiB0eXBlKQoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVNpYmxpbmdUcmF2ZXJz
YWxTdHJhdGVneTo6Y291bnRFbGVtZW50c09mVHlwZUJlZm9yZShFbGVtZW50KiBlbGVtZW50LCBj
b25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKSBjb25zdAogewogICAgIGludCBjb3VudCA9IDA7CiAg
ICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50
U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2li
bGluZygpKSB7CkBAIC0xNDIwLDggKzE0MTMsNyBAQCBpbmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tl
cjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraQog
ICAgIHJldHVybiBjb3VudDsKIH0KIAotdGVtcGxhdGU8PgotaW5saW5lIGludCBTZWxlY3RvckNo
ZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQ+Ojpjb3VudEVsZW1lbnRzQWZ0ZXIoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpT
ZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQpCitpbmxpbmUgaW50IFNl
bGVjdG9yQ2hlY2tlcjo6RE9NU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRz
QWZ0ZXIoRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAgICBpbnQgY291bnQgPSAwOwogICAg
IGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGlu
ZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCkBA
IC0xNDMwLDggKzE0MjIsNyBAQCBpbmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVy
c2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraQogICAgIHJldHVybiBj
b3VudDsKIH0KIAotdGVtcGxhdGU8PgotaW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6OkRPTVRy
YXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ+
Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0ZXIoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IHR5cGUpCitpbmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NU2libGluZ1RyYXZlcnNhbFN0
cmF0ZWd5Ojpjb3VudEVsZW1lbnRzT2ZUeXBlQWZ0ZXIoRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdHlwZSkgY29uc3QKIHsKICAgICBpbnQgY291bnQgPSAwOwogICAgIGZv
ciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygp
OyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKQEAg
LTE0NDIsNyArMTQzMyw0IEBAIGlubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJz
YWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpCiAgICAgcmV0dXJuIGNv
dW50OwogfQogCi10ZW1wbGF0ZQotU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcjxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tp
bmdDb250ZXh0Pihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIFBzZXVkb0lkJiwgYm9v
bCYpIGNvbnN0OwotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggMWYz
NDkwYzY0NzY0YjBkMjAyMWM3M2RlYzhmMTkxZmJiMTYyM2ExYi4uY2QyY2I0YzM2YjE2Zjk0NGU3
ZTJiODgzNDE3YmZmMWJhODIxNTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
aApAQCAtODEsMjQgKzgxLDIzIEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBoYXNTZWxlY3Rpb25Q
c2V1ZG87CiAgICAgfTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+Ci0gICAgc3Ry
dWN0IERPTVRyYXZlcnNhbFN0cmF0ZWd5IHsKLSAgICAgICAgc3RhdGljIGJvb2wgaXNGaXJzdENo
aWxkKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBib29sIGlzTGFz
dENoaWxkKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBib29sIGlz
Rmlyc3RPZlR5cGUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGlzTGFzdE9mVHlwZShjb25zdCBDb250ZXh0JiwgRWxl
bWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLQotICAgICAgICBzdGF0aWMgaW50IGNvdW50
RWxlbWVudHNCZWZvcmUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqKTsKLSAgICAgICAgc3RhdGlj
IGludCBjb3VudEVsZW1lbnRzQWZ0ZXIoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqKTsKLSAgICAg
ICAgc3RhdGljIGludCBjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnN0IENvbnRleHQmLCBF
bGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgICAgICBzdGF0aWMgaW50IGNvdW50
RWxlbWVudHNPZlR5cGVBZnRlcihjb25zdCBDb250ZXh0JiwgRWxlbWVudCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICBjbGFzcyBET01TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kgeworICAg
IHB1YmxpYzoKKyAgICAgICAgYm9vbCBpc0ZpcnN0Q2hpbGQoRWxlbWVudCopIGNvbnN0OworICAg
ICAgICBib29sIGlzTGFzdENoaWxkKEVsZW1lbnQqKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0Zp
cnN0T2ZUeXBlKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAgICAg
IGJvb2wgaXNMYXN0T2ZUeXBlKEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7
CisKKyAgICAgICAgaW50IGNvdW50RWxlbWVudHNCZWZvcmUoRWxlbWVudCopIGNvbnN0OworICAg
ICAgICBpbnQgY291bnRFbGVtZW50c0FmdGVyKEVsZW1lbnQqKSBjb25zdDsKKyAgICAgICAgaW50
IGNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdDsKKyAgICAgICAgaW50IGNvdW50RWxlbWVudHNPZlR5cGVBZnRlcihFbGVtZW50Kiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIH07CiAKICAgICBib29sIGNoZWNrU2Vs
ZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3Rv
ciA9IGZhbHNlKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+
Ci0gICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYs
IFBzZXVkb0lkJiwgYm9vbCYgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdDsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja2luZ0NvbnRleHQ+Ci0gICAgYm9vbCBjaGVja09uZVNlbGVj
dG9yKGNvbnN0IENoZWNraW5nQ29udGV4dCYpIGNvbnN0OworICAgIFNlbGVjdG9yTWF0Y2ggY2hl
Y2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIFBzZXVkb0lkJiwgYm9v
bCYgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBTaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3k+CisgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKGNv
bnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgY29uc3QgU2libGluZ1RyYXZlcnNhbFN0cmF0
ZWd5JikgY29uc3Q7CiAKICAgICBzdGF0aWMgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihj
b25zdCBDU1NTZWxlY3RvciopOwogICAgIGJvb2wgZmFzdENoZWNrU2VsZWN0b3IoY29uc3QgQ1NT
U2VsZWN0b3IqLCBjb25zdCBFbGVtZW50KikgY29uc3Q7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>