<?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>129478</bug_id>
          
          <creation_ts>2014-02-28 02:19:28 -0800</creation_ts>
          <short_desc>[CSSRegions] Children of inline-block content-node are not displayed in regions</short_desc>
          <delta_ts>2014-03-19 23:06:26 -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>CSS</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>
          <dependson>130229</dependson>
    
    <dependson>130249</dependson>
    
    <dependson>130392</dependson>
          <blocked>57312</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mihnea Ovidenie">mihnea</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>985516</commentid>
    <comment_count>0</comment_count>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2014-02-28 02:19:28 -0800</bug_when>
    <thetext>In the following situation, #div2 is not displayed at all and it should be.
&lt;html&gt;
    &lt;head&gt;
        &lt;style&gt;
            #region1 { -webkit-flow-from: flow; position: absolute; top: 100px; left: 100px; width: 100px; height: 100px; border: 5px solid black; }
            #region2 { -webkit-flow-from: flow; position: absolute; top: 100px; left: 300px; width: 100px; height: 100px; border: 5px solid black; }

            #content1 { -webkit-flow-into: flow; display: inline-block; }

            #div1, #div2 { width: 100px; height: 100px; }
            #div1 { background-color: salmon; }
            #div2 { background-color: orange; }
        &lt;/style&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;div id=&quot;region1&quot;&gt;&lt;/div&gt;
        &lt;div id=&quot;region2&quot;&gt;&lt;/div&gt;
        &lt;div id=&quot;content1&quot;&gt;
            &lt;div id=&quot;div1&quot;&gt;&lt;/div&gt;
            &lt;div id=&quot;div2&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;

We have to fix region ranges computation for inline-blocks and their children too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985517</commentid>
    <comment_count>1</comment_count>
      <attachid>225449</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2014-02-28 02:20:10 -0800</bug_when>
    <thetext>Created attachment 225449
WIP1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988062</commentid>
    <comment_count>2</comment_count>
      <attachid>226092</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2014-03-07 00:42:40 -0800</bug_when>
    <thetext>Created attachment 226092
WIP2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989397</commentid>
    <comment_count>3</comment_count>
      <attachid>226427</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2014-03-11 08:07:02 -0700</bug_when>
    <thetext>Created attachment 226427
Patch 3

WIP3:
* for a box in block flow, attempts to compute the range only if the parent has a computed region range
* modified getRegionRangeForBox to return false if the region range was not cached - either in region range map or stored in a corresponding RootInlineBox. If unable to retrieve the range from the cached information, try to see if the box has a parent that is unsplittable and try to get the first region from that parent range
* modified RenderObject::locateFlowThreadContainingBlock to check the flowThreadState of the object and the flow on the stack, in those cases in which we have a multi-column element inside a named flow and locateFlowThreadContainingBlock would return the multicolumn-flowthread for elements outside the multicolumn-flowthread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989408</commentid>
    <comment_count>4</comment_count>
      <attachid>226427</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2014-03-11 09:08:56 -0700</bug_when>
    <thetext>Comment on attachment 226427
Patch 3

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

&gt; Source/WebCore/rendering/RenderBoxModelObject.h:-183
&gt; -    bool canHaveBoxInfoInRegion() const { return !isFloating() &amp;&amp; !isReplaced() &amp;&amp; !isInline() &amp;&amp; !hasColumns() &amp;&amp; !isTableCell() &amp;&amp; isRenderBlock() &amp;&amp; !isRenderSVGBlock(); }

I don&apos;t think we want to remove the isInline check. We just want to allow inline blocks. Maybe isInlineBlockOrInlineTable is good enough?

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:594
&gt; +    for (auto&amp; region : m_regionList)

Why have you changed this code? There shouldn&apos;t be any region box info outside the range. If there is, we can catch it with the assert later on.

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:790
&gt; +    } while (!cb-&gt;isRenderFlowThread());

This is correct but I think we can stop earlier, at the first line with a containing region. However, I like this more for the sake of simplicity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992393</commentid>
    <comment_count>5</comment_count>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2014-03-19 23:06:26 -0700</bug_when>
    <thetext>Landed the patches containing the split work.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225449</attachid>
            <date>2014-02-28 02:20:10 -0800</date>
            <delta_ts>2014-02-28 02:20:10 -0800</delta_ts>
            <desc>WIP1</desc>
            <filename>RangesForInlineBlocks_WIP1.patch</filename>
            <type>text/plain</type>
            <size>29940</size>
            <attacher name="Mihnea Ovidenie">mihnea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9pbmxpbmUtYmxvY2stZmxvd2Vk
LWluLXJlZ2lvbnMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9pbmxp
bmUtYmxvY2stZmxvd2VkLWluLXJlZ2lvbnMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xYmMxMGRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2lubGluZS1ibG9jay1mbG93ZWQtaW4tcmVnaW9ucy1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgICNyZWdpb24xIHsgcG9zaXRpb246IGFic29s
dXRlOyB0b3A6IDE1MHB4OyBsZWZ0OiAxMDBweDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4
OyB9CisgICAgICAgICAgICAjY29udGVudDEgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJhY2tn
cm91bmQtY29sb3I6IHJlZDsgfQorCisgICAgICAgICAgICAjZGl2MSwgI2RpdjIgeyB3aWR0aDog
MTAwcHg7IGhlaWdodDogMTAwcHg7IH0KKyAgICAgICAgICAgICNkaXYxIHsgYmFja2dyb3VuZC1j
b2xvcjogb3JhbmdlOyB9CisgICAgICAgICAgICAjZGl2MiB7IGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOyB9CisgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAg
ICA8cD5UZXN0IHRoYXQgYW4gaW5saW5lIGJsb2NrIGNvbGxlY3RlZCBpbiBhIG5hbWVkIGZsb3cg
d2l0aCAyIHJlZ2lvbnMgaXMgcHJvcGVybHkgZGlzcGxheWVkLjwvcD4KKyAgICAgICAgPHA+VGhl
IGlubGluZSBibG9jayBzaG91bGQgYmUgZGlzcGxheWVkIG9ubHkgaW4gdGhlIGZpcnN0IHJlZ2lv
bi48L3A+CisgICAgICAgIDxwPk9uIHN1Y2Nlc3MsIHlvdSBzaG91bGQgc2VlIDIgcmVjdGFuZ2xl
cywgdGhlIGZpcnN0IG9uZSBvcmFuZ2UgYW5kIHRoZSBzZWNvbmQgb25lIGdyZWVuIGFuZCBubyBy
ZWQuPC9wPgorICAgICAgICA8ZGl2IGlkPSJyZWdpb24xIj4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnRlbnQxIj4KKyAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkaXYxIj48L2Rpdj4KKyAgICAg
ICAgICAgICAgICA8ZGl2IGlkPSJkaXYyIj48L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2NrLWZsb3dlZC1pbi1yZWdpb25zLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2NrLWZsb3dlZC1pbi1yZWdpb25zLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc3MDE2YgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9pbmxpbmUtYmxvY2stZmxvd2VkLWluLXJl
Z2lvbnMuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAjcmVnaW9uMSB7IC13ZWJraXQt
Zmxvdy1mcm9tOiBmbG93OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTUwcHg7IGxlZnQ6IDEw
MHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IH0KKyAgICAgICAgICAgICNyZWdpb24y
IHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxNTBw
eDsgbGVmdDogMzAwcHg7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgfQorCisgICAgICAg
ICAgICAjY29udGVudDEgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsgZGlzcGxheTogaW5saW5l
LWJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0KKworICAgICAgICAgICAgI2RpdjEsICNk
aXYyIHsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyB9CisgICAgICAgICAgICAjZGl2MSB7
IGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgfQorICAgICAgICAgICAgI2RpdjIgeyBiYWNrZ3Jv
dW5kLWNvbG9yOiBncmVlbjsgfQorICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keT4KKyAgICAgICAgPHA+VGVzdCB0aGF0IGFuIGlubGluZSBibG9jayBjb2xsZWN0ZWQgaW4g
YSBuYW1lZCBmbG93IHdpdGggMiByZWdpb25zIGlzIHByb3Blcmx5IGRpc3BsYXllZC48L3A+Cisg
ICAgICAgIDxwPlRoZSBpbmxpbmUgYmxvY2sgc2hvdWxkIGJlIGRpc3BsYXllZCBvbmx5IGluIHRo
ZSBmaXJzdCByZWdpb24uPC9wPgorICAgICAgICA8cD5PbiBzdWNjZXNzLCB5b3Ugc2hvdWxkIHNl
ZSAyIHJlY3RhbmdsZXMsIHRoZSBmaXJzdCBvbmUgb3JhbmdlIGFuZCB0aGUgc2Vjb25kIG9uZSBn
cmVlbiBhbmQgbm8gcmVkLjwvcD4KKyAgICAgICAgPGRpdiBpZD0icmVnaW9uMSI+PC9kaXY+Cisg
ICAgICAgIDxkaXYgaWQ9InJlZ2lvbjIiPjwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJjb250ZW50
MSI+CisgICAgICAgICAgICA8ZGl2IGlkPSJkaXYxIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYg
aWQ9ImRpdjIiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2NrLWlubGluZS1j
aGlsZHJlbi1mbG93ZWQtaW4tcmVnaW9ucy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2lubGluZS1ibG9jay1pbmxpbmUtY2hpbGRyZW4tZmxvd2VkLWluLXJlZ2lvbnMt
ZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzcwMDA3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2lubGluZS1ibG9j
ay1pbmxpbmUtY2hpbGRyZW4tZmxvd2VkLWluLXJlZ2lvbnMtZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAjcmVnaW9uMSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAx
NTBweDsgbGVmdDogMTAwcHg7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgfQorICAgICAg
ICAgICAgI2NvbnRlbnQxIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9y
OiByZWQ7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAyNTBweDsgfQorCisgICAgICAgICAgICAjaW5z
aWRlMSB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyB3
aWR0aDogMTAwcHg7IGhlaWdodDogMjUwcHg7fQorICAgICAgICAgICAgI2luc2lkZTIgeyBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB3aWR0aDogMTAwcHg7
IGhlaWdodDogMjAwcHg7IH0KKyAgICAgICAgICAgICNpbnNpZGUzIHsgZGlzcGxheTogaW5saW5l
LWJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTUw
cHg7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAg
IDxwPlRlc3QgdGhhdCBhbiBpbmxpbmUgYmxvY2sgd2l0aCBpbmxpbmUgYmxvY2sgY2hpbGRyZW4g
aXMgY29ycmVjdGx5IGRpc3BsYXllZCBpbiBhIHJlZ2lvbi48L3A+CisgICAgICAgIDxwPk9uIHN1
Y2Nlc3MgeW91IHNob3VsZCBzZWUgYSBibHVlIHJlY3RhbmdsZSwgZm9sbG93ZWQgYnkgYSBncmVl
biByZWN0YW5nbGUgYW5kIGFuIG9yYW5nZSByZWN0YW5nbGUuPC9wPgorICAgICAgICA8cD5Zb3Ug
c2hvdWxkIG5vdCBzZWUgYW55IHJlZCBiZWxvdy48L3A+CisgICAgICAgIDxkaXYgaWQ9InJlZ2lv
bjEiPgorICAgICAgICAgICAgPGRpdiBpZD0iY29udGVudDEiPgorICAgICAgICAgICAgICAgIDxk
aXYgaWQ9Imluc2lkZTEiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpbnNpZGUyIj4K
KyAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Imluc2lkZTMiPjwvZGl2PgorICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAg
IDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+IApcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9p
bmxpbmUtYmxvY2staW5saW5lLWNoaWxkcmVuLWZsb3dlZC1pbi1yZWdpb25zLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2NrLWlubGluZS1jaGlsZHJlbi1mbG93ZWQt
aW4tcmVnaW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMDU3
ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJs
b2NrLWlubGluZS1jaGlsZHJlbi1mbG93ZWQtaW4tcmVnaW9ucy5odG1sCkBAIC0wLDAgKzEsMjYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHBvc2l0aW9u
OiBhYnNvbHV0ZTsgdG9wOiAxNTBweDsgbGVmdDogMTAwcHg7IHdpZHRoOiAxMDBweDsgaGVpZ2h0
OiAxMDBweDsgfQorICAgICAgICAgICAgI2NvbnRlbnQxIHsgLXdlYmtpdC1mbG93LWludG86IGZs
b3c7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB3aWR0aDog
MTAwcHg7IGhlaWdodDogMjUwcHg7IH0KKworICAgICAgICAgICAgI2luc2lkZTEgeyBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7IGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgd2lkdGg6IDEwMHB4OyBo
ZWlnaHQ6IDI1MHB4O30KKyAgICAgICAgICAgICNpbnNpZGUyIHsgZGlzcGxheTogaW5saW5lLWJs
b2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDIwMHB4
OyB9CisgICAgICAgICAgICAjaW5zaWRlMyB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgYmFja2dy
b3VuZC1jb2xvcjogYmx1ZTsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDE1MHB4OyB9CisgICAgICAg
IDwvc3R5bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8cD5UZXN0IHRoYXQg
YW4gaW5saW5lIGJsb2NrIHdpdGggaW5saW5lIGJsb2NrIGNoaWxkcmVuIGlzIGNvcnJlY3RseSBk
aXNwbGF5ZWQgaW4gYSByZWdpb24uPC9wPgorICAgICAgICA8cD5PbiBzdWNjZXNzIHlvdSBzaG91
bGQgc2VlIGEgYmx1ZSByZWN0YW5nbGUsIGZvbGxvd2VkIGJ5IGEgZ3JlZW4gcmVjdGFuZ2xlIGFu
ZCBhbiBvcmFuZ2UgcmVjdGFuZ2xlLjwvcD4KKyAgICAgICAgPHA+WW91IHNob3VsZCBub3Qgc2Vl
IGFueSByZWQgYmVsb3cuPC9wPgorICAgICAgICA8ZGl2IGlkPSJyZWdpb24xIj48L2Rpdj4KKyAg
ICAgICAgPGRpdiBpZD0iY29udGVudDEiPgorICAgICAgICAgICAgPGRpdiBpZD0iaW5zaWRlMSI+
CisgICAgICAgICAgICAgICAgPGRpdiBpZD0iaW5zaWRlMiI+CisgICAgICAgICAgICAgICAgICAg
IDxkaXYgaWQ9Imluc2lkZTMiPjwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAg
ICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4gClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXkuY3BwCmluZGV4IGJhZGI0M2YuLjEzMGIzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTQ5NywxMSArNDk3LDExIEBA
IHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBidWlsZE9iamVjdEZvclJlbmRlcmVy
RnJhZ21lbnRzKFJlbmRlck9iamVjdCoKICAgICAgICAgUmVuZGVyQm94KiBlbmNsb3NpbmdCb3gg
PSByZW5kZXJlci0+ZW5jbG9zaW5nQm94KCk7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogc3RhcnRS
ZWdpb24gPSBudWxscHRyOwogICAgICAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxw
dHI7Ci0gICAgICAgIGNvbnRhaW5pbmdGbG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveChl
bmNsb3NpbmdCb3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwotICAgICAgICBpZiAoIXN0YXJ0
UmVnaW9uKSB7CisgICAgICAgIGlmICghY29udGFpbmluZ0Zsb3dUaHJlYWQtPmdldFJlZ2lvblJh
bmdlRm9yQm94KGVuY2xvc2luZ0JveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpIHsKICAgICAg
ICAgICAgIC8vIFRoZSBmbG93IGhhcyBubyB2aXNpYmxlIHJlZ2lvbnMuIFRoZSByZW5kZXJlciBp
cyBub3QgdmlzaWJsZSBvbiBzY3JlZW4uCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgfQorCiAgICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbkxpc3QmIHJlZ2lvbkxpc3QgPSBj
b250YWluaW5nRmxvd1RocmVhZC0+cmVuZGVyUmVnaW9uTGlzdCgpOwogICAgICAgICBmb3IgKFJl
bmRlclJlZ2lvbkxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSByZWdpb25MaXN0LmZpbmQoc3Rh
cnRSZWdpb24pOyBpdGVyICE9IHJlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewogICAgICAgICAg
ICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCmluZGV4IGZmYTI2ODguLmJiNTdjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNTA0OCwxMSArNTA0OCwyNSBAQCBSZW5kZXJS
ZWdpb24qIFJlbmRlckJsb2NrOjpyZWdpb25BdEJsb2NrT2Zmc2V0KExheW91dFVuaXQgYmxvY2tP
ZmZzZXQpIGNvbnN0CiAgICAgcmV0dXJuIGZsb3dUaHJlYWQtPnJlZ2lvbkF0QmxvY2tPZmZzZXQo
dGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpICsgYmxvY2tPZmZzZXQsIHRy
dWUpOwogfQogCitzdGF0aWMgYm9vbCBjYW5Db21wdXRlUmVnaW9uUmFuZ2VGb3JCb3goY29uc3Qg
UmVuZGVyQmxvY2sqIHBhcmVudEJsb2NrLCBjb25zdCBSZW5kZXJCb3gmIGNoaWxkQm94LCBjb25z
dCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKQoreworICAgIEFT
U0VSVChwYXJlbnRCbG9jayk7CisgICAgQVNTRVJUKCFjaGlsZEJveC5pc1JlbmRlckZsb3dUaHJl
YWQoKSk7CisKKyAgICBpZiAoIWZsb3dUaHJlYWRDb250YWluaW5nQmxvY2spCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWZsb3dUaHJlYWRDb250YWluaW5nQmxvY2stPmhhc1JlZ2lv
bnMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY2hpbGRCb3guY2FuSGF2ZU91
dHNpZGVSZWdpb25SYW5nZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jay0+aGFzUmVnaW9uUmFuZ2VGb3JCb3gocGFyZW50Qmxv
Y2spOworfQorCiB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGls
ZChjb25zdCBSZW5kZXJCb3gmIGJveCkgY29uc3QKIHsKICAgICBSZW5kZXJGbG93VGhyZWFkKiBm
bG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOwotICAgIGlmICghZmxvd1Ro
cmVhZCB8fCAhZmxvd1RocmVhZC0+aGFzUmVnaW9ucygpKQotICAgICAgICByZXR1cm47CisgICAg
QVNTRVJUKGNhbkNvbXB1dGVSZWdpb25SYW5nZUZvckJveCh0aGlzLCBib3gsIGZsb3dUaHJlYWQp
KTsKIAogICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb247CiAgICAgUmVuZGVyUmVnaW9uKiBl
bmRSZWdpb247CkBAIC01MDcwLDcgKzUwODQsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRl
UmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChjb25zdCBSZW5kZXJCb3gmIGJveCkgY29uc3QKIHZvaWQg
UmVuZGVyQmxvY2s6OmVzdGltYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChjb25zdCBSZW5kZXJC
b3gmIGJveCkgY29uc3QKIHsKICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxv
d1RocmVhZENvbnRhaW5pbmdCbG9jaygpOwotICAgIGlmICghZmxvd1RocmVhZCB8fCAhZmxvd1Ro
cmVhZC0+aGFzUmVnaW9ucygpIHx8ICFib3guY2FuSGF2ZU91dHNpZGVSZWdpb25SYW5nZSgpKQor
ICAgIGlmICghY2FuQ29tcHV0ZVJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIGJveCwgZmxvd1RocmVh
ZCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChib3guaXNVbnNwbGl0dGFibGVGb3JQYWdp
bmF0aW9uKCkpIHsKQEAgLTUwOTEsMTcgKzUxMDUsMTcgQEAgdm9pZCBSZW5kZXJCbG9jazo6ZXN0
aW1hdGVSZWdpb25SYW5nZUZvckJveENoaWxkKGNvbnN0IFJlbmRlckJveCYgYm94KSBjb25zdAog
Ym9vbCBSZW5kZXJCbG9jazo6dXBkYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChjb25zdCBSZW5k
ZXJCb3gmIGJveCkgY29uc3QKIHsKICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0g
Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOwotICAgIGlmICghZmxvd1RocmVhZCB8fCAhZmxv
d1RocmVhZC0+aGFzUmVnaW9ucygpIHx8ICFib3guY2FuSGF2ZU91dHNpZGVSZWdpb25SYW5nZSgp
KQorICAgIGlmICghY2FuQ29tcHV0ZVJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIGJveCwgZmxvd1Ro
cmVhZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlbmRlclJlZ2lvbiogc3RhcnRS
ZWdpb24gPSAwOwotICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gMDsKKyAgICBSZW5kZXJS
ZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lv
biA9IG51bGxwdHI7CiAgICAgZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3goJmJveCwg
c3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CiAKICAgICBjb21wdXRlUmVnaW9uUmFuZ2VGb3JCb3hD
aGlsZChib3gpOwogCi0gICAgUmVuZGVyUmVnaW9uKiBuZXdTdGFydFJlZ2lvbiA9IDA7Ci0gICAg
UmVuZGVyUmVnaW9uKiBuZXdFbmRSZWdpb24gPSAwOworICAgIFJlbmRlclJlZ2lvbiogbmV3U3Rh
cnRSZWdpb24gPSBudWxscHRyOworICAgIFJlbmRlclJlZ2lvbiogbmV3RW5kUmVnaW9uID0gbnVs
bHB0cjsKICAgICBmbG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveCgmYm94LCBuZXdTdGFy
dFJlZ2lvbiwgbmV3RW5kUmVnaW9uKTsKIAogICAgIC8vIFRoZSByZWdpb24gcmFuZ2Ugb2YgdGhl
IGJveCBoYXMgY2hhbmdlZC4gU29tZSBib3hlcyAoZS5nIGZsb2F0cykgbWF5IGhhdmUgYmVlbiBw
b3NpdGlvbmVkIGFzc3VtaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwCmluZGV4IDIwYzFkNGEuLjkwYjM2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0xNjgxLDggKzE2ODEsOCBAQCBib29sIFJl
bmRlckJsb2NrRmxvdzo6aGFzTmV4dFBhZ2UoTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0LCBQYWdl
Qm91bmRhcnlSdWxlIHBhZwogICAgICAgICByZXR1cm4gcmVnaW9uLT5pc1JlbmRlclJlZ2lvblNl
dCgpIHx8IHJlZ2lvbi0+c3R5bGUoKS5yZWdpb25GcmFnbWVudCgpID09IEJyZWFrUmVnaW9uRnJh
Z21lbnQKICAgICAgICAgICAgIHx8IChwYWdlQm91bmRhcnlSdWxlID09IEluY2x1ZGVQYWdlQm91
bmRhcnkgJiYgcGFnZU9mZnNldCA9PSByZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29u
dGVudCgpKTsKIAotICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSAwOwotICAgIFJlbmRl
clJlZ2lvbiogZW5kUmVnaW9uID0gMDsKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0g
bnVsbHB0cjsKKyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CiAgICAgZmxv
d1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgc3RhcnRSZWdpb24sIGVuZFJlZ2lv
bik7CiAKICAgICBpZiAocmVnaW9uID09IGVuZFJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKaW5kZXggM2M2NDEwOS4uODcyNTUyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTEzMCwxMyArMTMwLDE0IEBAIFJlbmRlclJlZ2lvbiog
UmVuZGVyQm94OjpjbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25zKFJlbmRlclJlZ2lvbiogcmVnaW9u
KSBjb25zdAogICAgIC8vIGxvZ2ljYWwgdG9wIG9yIGxvZ2ljYWwgYm90dG9tIG9mIHRoZSBibG9j
ayB0byBzaXplIGFzIHRob3VnaCB0aGUgYm9yZGVyIGJveCBpbiB0aGUgZmlyc3QgYW5kCiAgICAg
Ly8gbGFzdCByZWdpb25zIGV4dGVuZGVkIGluZmluaXRlbHkuIE90aGVyd2lzZSB0aGUgbGluZXMg
YXJlIGdvaW5nIHRvIHNpemUgYWNjb3JkaW5nIHRvIHRoZSByZWdpb25zCiAgICAgLy8gdGhleSBv
dmVyZmxvdyBpbnRvLCB3aGljaCBtYWtlcyBubyBzZW5zZSB3aGVuIHRoaXMgYmxvY2sgZG9lc24n
dCBleGlzdCBpbiB8cmVnaW9ufCBhdCBhbGwuCi0gICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lv
biA9IDA7Ci0gICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSAwOwotICAgIGZsb3dUaHJlYWQt
PmdldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworICAg
IFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOworICAgIFJlbmRlclJlZ2lvbiog
ZW5kUmVnaW9uID0gbnVsbHB0cjsKKyAgICBpZiAoIWZsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdl
Rm9yQm94KHRoaXMsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKQorICAgICAgICByZXR1cm4gcmVn
aW9uOwogCi0gICAgaWYgKHN0YXJ0UmVnaW9uICYmIHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dU
aHJlYWRDb250ZW50KCkgPCBzdGFydFJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250
ZW50KCkpCisgICAgaWYgKHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkg
PCBzdGFydFJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkpCiAgICAgICAg
IHJldHVybiBzdGFydFJlZ2lvbjsKLSAgICBpZiAoZW5kUmVnaW9uICYmIHJlZ2lvbi0+bG9naWNh
bFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgPiBlbmRSZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93
VGhyZWFkQ29udGVudCgpKQorICAgIGlmIChyZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFk
Q29udGVudCgpID4gZW5kUmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSkK
ICAgICAgICAgcmV0dXJuIGVuZFJlZ2lvbjsKIAogICAgIHJldHVybiByZWdpb247CkBAIC0xNjMs
MTQgKzE2NCwxMSBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6Ym9yZGVyQm94UmVjdEluUmVnaW9u
KFJlbmRlclJlZ2lvbiogcmVnaW9uLCBSZW5kZXJCb3hSZWdpbwogICAgIGlmICghZmxvd1RocmVh
ZCkKICAgICAgICAgcmV0dXJuIGJvcmRlckJveFJlY3QoKTsKIAotICAgIFJlbmRlclJlZ2lvbiog
c3RhcnRSZWdpb24gPSAwOwotICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gMDsKLSAgICBm
bG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveCh0aGlzLCBzdGFydFJlZ2lvbiwgZW5kUmVn
aW9uKTsKLSAgICAKLSAgICAvLyBGSVhNRTogSW4gYSBwZXJmZWN0IHdvcmxkIHRoaXMgY29uZGl0
aW9uIHNob3VsZCBuZXZlciBoYXBwZW4uCi0gICAgaWYgKCFzdGFydFJlZ2lvbiB8fCAhZW5kUmVn
aW9uKQorICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOworICAgIFJlbmRl
clJlZ2lvbiogZW5kUmVnaW9uID0gbnVsbHB0cjsKKyAgICBpZiAoIWZsb3dUaHJlYWQtPmdldFJl
Z2lvblJhbmdlRm9yQm94KHRoaXMsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKQogICAgICAgICBy
ZXR1cm4gYm9yZGVyQm94UmVjdCgpOwotCisgICAgCiAgICAgQVNTRVJUKGZsb3dUaHJlYWQtPnJl
Z2lvbkluUmFuZ2UocmVnaW9uLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSk7CiAKICAgICAvLyBD
b21wdXRlIHRoZSBsb2dpY2FsIHdpZHRoIGFuZCBwbGFjZW1lbnQgaW4gdGhpcyByZWdpb24uCkBA
IC0yMTAwLDEwICsyMDk4LDkgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWlu
dChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGEKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG8tPmlzUmVuZGVyRmxvd1RocmVhZCgpKSB7Ci0gICAgICAgIFJlbmRl
clJlZ2lvbiogZmlyc3RSZWdpb24gPSAwOwotICAgICAgICBSZW5kZXJSZWdpb24qIGxhc3RSZWdp
b24gPSAwOwotICAgICAgICB0b1JlbmRlckZsb3dUaHJlYWQobyktPmdldFJlZ2lvblJhbmdlRm9y
Qm94KHRoaXMsIGZpcnN0UmVnaW9uLCBsYXN0UmVnaW9uKTsKLSAgICAgICAgaWYgKGZpcnN0UmVn
aW9uKQorICAgICAgICBSZW5kZXJSZWdpb24qIGZpcnN0UmVnaW9uID0gbnVsbHB0cjsKKyAgICAg
ICAgUmVuZGVyUmVnaW9uKiBsYXN0UmVnaW9uID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKHRvUmVu
ZGVyRmxvd1RocmVhZChvKS0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgZmlyc3RSZWdpb24s
IGxhc3RSZWdpb24pKQogICAgICAgICAgICAgcmVjdC5tb3ZlQnkoZmlyc3RSZWdpb24tPmZsb3dU
aHJlYWRQb3J0aW9uUmVjdCgpLmxvY2F0aW9uKCkpOwogICAgIH0KIApAQCAtNDUzMywxMSArNDUz
MCw5IEBAIExheW91dFJlY3QgUmVuZGVyQm94OjpvdmVyZmxvd1JlY3RGb3JQYWludFJlamVjdGlv
bihSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogbmFtCiAgICAgLy8gdG8gdGhlIGZsb3cgdGhyZWFk
LCBub3QgdGhlIGxhc3QgcmVnaW9uIChpbiB3aGljaCBpdCB3aWxsIGVuZCB1cCBiZWNhdXNlIG9m
IGJvdHRvbTowcHgpCiAgICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50KSB7CiAgICAgICAgIGlmIChS
ZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gbmFtZWRGbG93RnJhZ21lbnQtPmZsb3dUaHJl
YWQoKSkgewotICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7Ci0gICAg
ICAgICAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7Ci0gICAgICAgICAgICBmbG93VGhy
ZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveCh0aGlzLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsK
LQotICAgICAgICAgICAgaWYgKHN0YXJ0UmVnaW9uICYmIGVuZFJlZ2lvbikKKyAgICAgICAgICAg
IFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOworICAgICAgICAgICAgUmVuZGVy
UmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRyOworICAgICAgICAgICAgaWYgKGZsb3dUaHJlYWQt
PmdldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKQogICAg
ICAgICAgICAgICAgIG92ZXJmbG93UmVjdC51bml0ZShuYW1lZEZsb3dGcmFnbWVudC0+dmlzdWFs
T3ZlcmZsb3dSZWN0Rm9yQm94KHRoaXMpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDVhMGMy
ZGMuLmM0ZGQ1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcApAQCAtMjc2MywxMCArMjc2Myw5IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE1hcENvb3JkaW5hdGVzRmxhZ3MgbW9k
ZSwgVHJhCiAgICAgLy8gVGhlIHBvaW50IGluc2lkZSBhIGJveCB0aGF0J3MgaW5zaWRlIGEgcmVn
aW9uIGhhcyBpdHMgY29vcmRpbmF0ZXMgcmVsYXRpdmUgdG8gdGhlIHJlZ2lvbiwKICAgICAvLyBu
b3QgdGhlIEZsb3dUaHJlYWQgdGhhdCBpcyBpdHMgY29udGFpbmVyIGluIHRoZSBSZW5kZXJPYmpl
Y3QgdHJlZS4KICAgICBpZiAoby0+aXNSZW5kZXJGbG93VGhyZWFkKCkgJiYgaXNCb3goKSkgewot
ICAgICAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uOwotICAgICAgICBSZW5kZXJSZWdpb24q
IGVuZFJlZ2lvbjsKLSAgICAgICAgdG9SZW5kZXJGbG93VGhyZWFkKG8pLT5nZXRSZWdpb25SYW5n
ZUZvckJveCh0b1JlbmRlckJveCh0aGlzKSwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7Ci0gICAg
ICAgIGlmIChzdGFydFJlZ2lvbikKKyAgICAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9
IG51bGxwdHI7CisgICAgICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gbnVsbHB0cjsKKyAg
ICAgICAgaWYgKHRvUmVuZGVyRmxvd1RocmVhZChvKS0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godG9S
ZW5kZXJCb3godGhpcyksIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKQogICAgICAgICAgICAgbyA9
IHN0YXJ0UmVnaW9uOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuY3BwCmluZGV4IGZkNzU1YTUuLmNmOTc5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTI2OCwxMSArMjY4LDEwIEBA
IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25Gb3JDb21w
b3NpdGVkTGF5ZXIoUmVuZGVyTGF5ZXImCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKGNo
aWxkTGF5ZXIucmVuZGVyQm94KCkpIHsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lv
biA9IDA7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gMDsKLSAgICAgICAgZ2V0
UmVnaW9uUmFuZ2VGb3JCb3goY2hpbGRMYXllci5yZW5kZXJCb3goKSwgc3RhcnRSZWdpb24sIGVu
ZFJlZ2lvbik7Ci0gICAgICAgIC8vIFRoZSB2aWRlbyB0YWcgaXMgc3VjaCBhIGJveCB0aGF0IGRv
ZXNuJ3QgaGF2ZSBhIHJlZ2lvbiByYW5nZSBiZWNhdXNlIGl0J3MgaW5saW5lIChieSBkZWZhdWx0
KS4KLSAgICAgICAgaWYgKHN0YXJ0UmVnaW9uKQorICAgICAgICBSZW5kZXJSZWdpb24qIHN0YXJ0
UmVnaW9uID0gbnVsbHB0cjsKKyAgICAgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxs
cHRyOworICAgICAgICBpZiAoZ2V0UmVnaW9uUmFuZ2VGb3JCb3goY2hpbGRMYXllci5yZW5kZXJC
b3goKSwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpCisgICAgICAgICAgICAvLyBUaGUgdmlkZW8g
dGFnIGlzIHN1Y2ggYSBib3ggdGhhdCBkb2Vzbid0IGhhdmUgYSByZWdpb24gcmFuZ2UgYmVjYXVz
ZSBpdCdzIGlubGluZSAoYnkgZGVmYXVsdCkuCiAgICAgICAgICAgICByZXR1cm4gdG9SZW5kZXJO
YW1lZEZsb3dGcmFnbWVudChzdGFydFJlZ2lvbik7CiAgICAgfQogCkBAIC00NTIsOSArNDUxLDcg
QEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25Gcm9tQWJzb2x1dGVQb2lu
dEFuZEJveChjb25zdCBJbnRQb2ludCYgYWIKIHsKICAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVn
aW9uID0gbnVsbHB0cjsKICAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7Ci0g
ICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goJmZsb3dlZEJveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lv
bik7Ci0KLSAgICBpZiAoIXN0YXJ0UmVnaW9uKQorICAgIGlmICghZ2V0UmVnaW9uUmFuZ2VGb3JC
b3goJmZsb3dlZEJveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgZm9yIChhdXRvIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuZmluZChzdGFydFJl
Z2lvbiksIGVuZCA9IG1fcmVnaW9uTGlzdC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewpA
QCAtNDk5LDEwICs0OTYsOSBAQCBMYXlvdXRQb2ludCBSZW5kZXJGbG93VGhyZWFkOjphZGp1c3Rl
ZFBvc2l0aW9uUmVsYXRpdmVUb09mZnNldFBhcmVudChjb25zdCBSZW5kZQogICAgICAgICBib29s
IHdhc0NvbXB1dGVkUmVsYXRpdmVUb090aGVyUmVnaW9uID0gZmFsc2U7CiAgICAgICAgIHdoaWxl
IChvYmpDb250YWluaW5nQmxvY2sgJiYgIW9iakNvbnRhaW5pbmdCbG9jay0+aXNSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQoKSkgewogICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBvYmplY3QgaXMg
aW4gYSBkaWZmZXJlbnQgcmVnaW9uLgotICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiBwYXJlbnRT
dGFydFJlZ2lvbiA9IDA7Ci0gICAgICAgICAgICBSZW5kZXJSZWdpb24qIHBhcmVudEVuZFJlZ2lv
biA9IDA7Ci0gICAgICAgICAgICBnZXRSZWdpb25SYW5nZUZvckJveChvYmpDb250YWluaW5nQmxv
Y2ssIHBhcmVudFN0YXJ0UmVnaW9uLCBwYXJlbnRFbmRSZWdpb24pOwotICAgICAgICAgICAgaWYg
KHBhcmVudFN0YXJ0UmVnaW9uICYmIHBhcmVudFN0YXJ0UmVnaW9uICE9IHN0YXJ0UmVnaW9uKSB7
CisgICAgICAgICAgICBSZW5kZXJSZWdpb24qIHBhcmVudFN0YXJ0UmVnaW9uID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIFJlbmRlclJlZ2lvbiogcGFyZW50RW5kUmVnaW9uID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIGlmIChnZXRSZWdpb25SYW5nZUZvckJveChvYmpDb250YWluaW5nQmxvY2ssIHBh
cmVudFN0YXJ0UmVnaW9uLCBwYXJlbnRFbmRSZWdpb24pICYmIHBhcmVudFN0YXJ0UmVnaW9uICE9
IHN0YXJ0UmVnaW9uKSB7CiAgICAgICAgICAgICAgICAgd2FzQ29tcHV0ZWRSZWxhdGl2ZVRvT3Ro
ZXJSZWdpb24gPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpA
QCAtNjI3LDE0ICs2MjMsMTggQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpyZW1vdmVSZW5kZXJC
b3hSZWdpb25JbmZvKFJlbmRlckJveCogYm94KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbjsKLSAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lv
bjsKLSAgICBnZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24p
OwotCi0gICAgZm9yIChhdXRvJiByZWdpb24gOiBtX3JlZ2lvbkxpc3QpIHsKLSAgICAgICAgcmVn
aW9uLT5yZW1vdmVSZW5kZXJCb3hSZWdpb25JbmZvKGJveCk7Ci0gICAgICAgIGlmIChyZWdpb24g
PT0gZW5kUmVnaW9uKQotICAgICAgICAgICAgYnJlYWs7CisgICAgUmVuZGVyUmVnaW9uKiBzdGFy
dFJlZ2lvbiA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRy
OworICAgIGlmIChnZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdp
b24pKSB7CisgICAgICAgIGZvciAoYXV0byBpdGVyID0gbV9yZWdpb25MaXN0LmZpbmQoc3RhcnRS
ZWdpb24pLCBlbmQgPSBtX3JlZ2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsK
KyAgICAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CisgICAgICAgICAgICBy
ZWdpb24tPnJlbW92ZVJlbmRlckJveFJlZ2lvbkluZm8oYm94KTsKKyAgICAgICAgICAgIGlmIChy
ZWdpb24gPT0gZW5kUmVnaW9uKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvJiByZWdpb24gOiBtX3JlZ2lvbkxpc3QpCisg
ICAgICAgICAgICByZWdpb24tPnJlbW92ZVJlbmRlckJveFJlZ2lvbkluZm8oYm94KTsKICAgICB9
CiAKICNpZm5kZWYgTkRFQlVHCkBAIC02NjQsMTAgKzY2NCw2IEBAIHZvaWQgUmVuZGVyRmxvd1Ro
cmVhZDo6bG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9uc0ZvckJsb2NrKGNvbnN0IFJlbmRlckJs
b2NrKiBiCiAgICAgaWYgKHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb247Ci0gICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb247
Ci0gICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goYmxvY2ssIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24p
OwotCiAgICAgLy8gTm90IG5lY2Vzc2FyeSBmb3IgdGhlIGZsb3cgdGhyZWFkLCBzaW5jZSB3ZSBh
bHJlYWR5IGNvbXB1dGVkIHRoZSBjb3JyZWN0IGluZm8gZm9yIGl0LgogICAgIC8vIElmIHRoZSBy
ZWdpb25zIGhhdmUgY2hhbmdlZCBpbnZhbGlkYXRlIHRoZSBjaGlsZHJlbi4KICAgICBpZiAoYmxv
Y2sgPT0gdGhpcykgewpAQCAtNjc1LDcgKzY3MSwxMiBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6
OmxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9jayhjb25zdCBSZW5kZXJCbG9jayog
YgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiByZWdpb24gOiBtX3Jl
Z2lvbkxpc3QpIHsKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAg
ICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgZ2V0UmVnaW9uUmFuZ2VG
b3JCb3goYmxvY2ssIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworCisgICAgZm9yIChhdXRvIGl0
ZXIgPSBtX3JlZ2lvbkxpc3QuZmluZChzdGFydFJlZ2lvbiksIGVuZCA9IG1fcmVnaW9uTGlzdC5l
bmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lv
biA9ICppdGVyOwogICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+bmVlZHNMYXlvdXQoKSB8fCByZWdp
b24tPmlzUmVuZGVyUmVnaW9uU2V0KCkpOwogCiAgICAgICAgIC8vIFdlIGhhdmUgbm8gaW5mb3Jt
YXRpb24gY29tcHV0ZWQgZm9yIHRoaXMgcmVnaW9uIHNvIHdlIG5lZWQgdG8gZG8gaXQuCkBAIC03
ODMsOSArNzg0LDkgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpzZXRSZWdpb25SYW5nZUZvckJv
eChjb25zdCBSZW5kZXJCb3gqIGJveCwgUmVuZGVyUmVnaW9uKgogICAgIHJhbmdlLnNldFJhbmdl
KHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwogfQogCi12b2lkIFJlbmRlckZsb3dUaHJlYWQ6Omdl
dFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCogYm94LCBSZW5kZXJSZWdpb24qJiBz
dGFydFJlZ2lvbiwgUmVuZGVyUmVnaW9uKiYgZW5kUmVnaW9uKSBjb25zdAorYm9vbCBSZW5kZXJG
bG93VGhyZWFkOjpnZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqIGJveCwgUmVu
ZGVyUmVnaW9uKiYgc3RhcnRSZWdpb24sIFJlbmRlclJlZ2lvbiomIGVuZFJlZ2lvbikgY29uc3QK
IHsKLSAgICBzdGFydFJlZ2lvbiA9IGVuZFJlZ2lvbiA9IDA7CisgICAgc3RhcnRSZWdpb24gPSBl
bmRSZWdpb24gPSBudWxscHRyOwogICAgIGF1dG8gaXQgPSBtX3JlZ2lvblJhbmdlTWFwLmZpbmQo
Ym94KTsKIAogICAgIGlmIChpdCAhPSBtX3JlZ2lvblJhbmdlTWFwLmVuZCgpKSB7CkBAIC03OTMs
MTUgKzc5NCwyMyBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmdldFJlZ2lvblJhbmdlRm9yQm94
KGNvbnN0IFJlbmRlckJveCogYm94LCBSZW5kZXJSZWdpb24qJgogICAgICAgICBzdGFydFJlZ2lv
biA9IHJhbmdlLnN0YXJ0UmVnaW9uKCk7CiAgICAgICAgIGVuZFJlZ2lvbiA9IHJhbmdlLmVuZFJl
Z2lvbigpOwogICAgICAgICBBU1NFUlQobV9yZWdpb25MaXN0LmNvbnRhaW5zKHN0YXJ0UmVnaW9u
KSAmJiBtX3JlZ2lvbkxpc3QuY29udGFpbnMoZW5kUmVnaW9uKSk7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgSW5saW5lRWxlbWVudEJveCogYm94
V3JhcHBlciA9IGJveC0+aW5saW5lQm94V3JhcHBlcigpOwotICAgIGlmIChib3hXcmFwcGVyKSB7
Ci0gICAgICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gmIGJveFdyYXBwZXJSb290SW5saW5lQm94ID0g
IGJveFdyYXBwZXItPnJvb3QoKTsKLSAgICAgICAgc3RhcnRSZWdpb24gPSBlbmRSZWdpb24gPSBi
b3hXcmFwcGVyUm9vdElubGluZUJveC5jb250YWluaW5nUmVnaW9uKCk7Ci0gICAgICAgIHJldHVy
bjsKKyAgICBpZiAoYm94V3JhcHBlciAmJiBib3hXcmFwcGVyLT5yb290KCkuY29udGFpbmluZ1Jl
Z2lvbigpKSB7CisgICAgICAgIHN0YXJ0UmVnaW9uID0gZW5kUmVnaW9uID0gYm94V3JhcHBlci0+
cm9vdCgpLmNvbnRhaW5pbmdSZWdpb24oKTsKKyAgICAgICAgQVNTRVJUKG1fcmVnaW9uTGlzdC5j
b250YWlucyhzdGFydFJlZ2lvbikgJiYgbV9yZWdpb25MaXN0LmNvbnRhaW5zKGVuZFJlZ2lvbikp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgUmVuZGVyRmxvd1RocmVhZDo6aGFzUmVnaW9uUmFuZ2VGb3JCb3goY29uc3QgUmVuZGVy
Qm94KiBib3gpIGNvbnN0Cit7CisgICAgQVNTRVJUKGJveCk7CisgICAgcmV0dXJuIG1fcmVnaW9u
UmFuZ2VNYXAuY29udGFpbnMoYm94KTsKIH0KIAogdm9pZCBSZW5kZXJGbG93VGhyZWFkOjphcHBs
eUJyZWFrQWZ0ZXJDb250ZW50KExheW91dFVuaXQgY2xpZW50SGVpZ2h0KQpAQCAtODM0LDE3ICs4
NDMsMTYgQEAgYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpvYmplY3RTaG91bGRQYWludEluRmxvd1Jl
Z2lvbihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwKICAgICBSZW5kZXJGbG93VGhyZWFkKiBm
bG93VGhyZWFkID0gb2JqZWN0LT5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CiAgICAgaWYg
KGZsb3dUaHJlYWQgIT0gdGhpcykKICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFt
X3JlZ2lvbkxpc3QuY29udGFpbnMoY29uc3RfY2FzdDxSZW5kZXJSZWdpb24qPihyZWdpb24pKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIFJlbmRlckJveCogZW5jbG9zaW5nQm94
ID0gb2JqZWN0LT5lbmNsb3NpbmdCb3goKTsKLSAgICBSZW5kZXJSZWdpb24qIGVuY2xvc2luZ0Jv
eFN0YXJ0UmVnaW9uID0gMDsKLSAgICBSZW5kZXJSZWdpb24qIGVuY2xvc2luZ0JveEVuZFJlZ2lv
biA9IDA7Ci0gICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goZW5jbG9zaW5nQm94LCBlbmNsb3NpbmdC
b3hTdGFydFJlZ2lvbiwgZW5jbG9zaW5nQm94RW5kUmVnaW9uKTsKLSAgICAKICAgICAvLyBJZiB0
aGUgYm94IGhhcyBubyByYW5nZSwgZG8gbm90IGNoZWNrIHJlZ2lvbkluUmFuZ2UuIEJveGVzIGlu
c2lkZSBpbmxpbmVzIGRvIG5vdCBnZXQgcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHRoZSBjb250
YWluaW5nIFJvb3RJbmxpbmVCb3ggd2lsbCBhYm9ydCB3aGVuIHRyeWluZyB0byBwYWludCBpbnNp
ZGUgdGhlIHdyb25nIHJlZ2lvbi4KLSAgICBpZiAoZW5jbG9zaW5nQm94U3RhcnRSZWdpb24gJiYg
ZW5jbG9zaW5nQm94RW5kUmVnaW9uICYmICFyZWdpb25JblJhbmdlKHJlZ2lvbiwgZW5jbG9zaW5n
Qm94U3RhcnRSZWdpb24sIGVuY2xvc2luZ0JveEVuZFJlZ2lvbikpCisgICAgUmVuZGVyUmVnaW9u
KiBlbmNsb3NpbmdCb3hTdGFydFJlZ2lvbiA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVnaW9uKiBl
bmNsb3NpbmdCb3hFbmRSZWdpb24gPSBudWxscHRyOworICAgIGlmIChnZXRSZWdpb25SYW5nZUZv
ckJveChvYmplY3QtPmVuY2xvc2luZ0JveCgpLCBlbmNsb3NpbmdCb3hTdGFydFJlZ2lvbiwgZW5j
bG9zaW5nQm94RW5kUmVnaW9uKQorICAgICAgICAmJiAhcmVnaW9uSW5SYW5nZShyZWdpb24sIGVu
Y2xvc2luZ0JveFN0YXJ0UmVnaW9uLCBlbmNsb3NpbmdCb3hFbmRSZWdpb24pKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgcmV0dXJuIG9iamVjdC0+aXNCb3goKSB8fCBvYmplY3Qt
PmlzUmVuZGVySW5saW5lKCk7CkBAIC04NjEsMTAgKzg2OSwxMSBAQCBib29sIFJlbmRlckZsb3dU
aHJlYWQ6Om9iamVjdEluRmxvd1JlZ2lvbihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgY29u
c3QgUmVuZAogICAgIGlmICghbV9yZWdpb25MaXN0LmNvbnRhaW5zKGNvbnN0X2Nhc3Q8UmVuZGVy
UmVnaW9uKj4ocmVnaW9uKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlbmRlckJv
eCogZW5jbG9zaW5nQm94ID0gb2JqZWN0LT5lbmNsb3NpbmdCb3goKTsKLSAgICBSZW5kZXJSZWdp
b24qIGVuY2xvc2luZ0JveFN0YXJ0UmVnaW9uID0gMDsKLSAgICBSZW5kZXJSZWdpb24qIGVuY2xv
c2luZ0JveEVuZFJlZ2lvbiA9IDA7Ci0gICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goZW5jbG9zaW5n
Qm94LCBlbmNsb3NpbmdCb3hTdGFydFJlZ2lvbiwgZW5jbG9zaW5nQm94RW5kUmVnaW9uKTsKKyAg
ICBSZW5kZXJSZWdpb24qIGVuY2xvc2luZ0JveFN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICBS
ZW5kZXJSZWdpb24qIGVuY2xvc2luZ0JveEVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgaWYgKCFn
ZXRSZWdpb25SYW5nZUZvckJveChvYmplY3QtPmVuY2xvc2luZ0JveCgpLCBlbmNsb3NpbmdCb3hT
dGFydFJlZ2lvbiwgZW5jbG9zaW5nQm94RW5kUmVnaW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCiAgICAgaWYgKCFyZWdpb25JblJhbmdlKHJlZ2lvbiwgZW5jbG9zaW5nQm94U3RhcnRSZWdp
b24sIGVuY2xvc2luZ0JveEVuZFJlZ2lvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
MTM0NSw5ICsxMzU0LDEwIEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6ZmxpcEZvcldyaXRpbmdN
b2RlTG9jYWxDb29yZGluYXRlcyhMYXlvdXRSZWN0JiByZWN0KSBjb25zCiAKIHZvaWQgUmVuZGVy
Rmxvd1RocmVhZDo6YWRkUmVnaW9uc1Zpc3VhbEVmZmVjdE92ZXJmbG93KGNvbnN0IFJlbmRlckJv
eCogYm94KQogewotICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSAwOwotICAgIFJlbmRl
clJlZ2lvbiogZW5kUmVnaW9uID0gMDsKLSAgICBnZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0
YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBu
dWxscHRyOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gbnVsbHB0cjsKKyAgICBpZiAo
IWdldFJlZ2lvblJhbmdlRm9yQm94KGJveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpCisgICAg
ICAgIHJldHVybjsKIAogICAgIGZvciAoYXV0byBpdGVyID0gbV9yZWdpb25MaXN0LmZpbmQoc3Rh
cnRSZWdpb24pLCBlbmQgPSBtX3JlZ2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIp
IHsKICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKQEAgLTEzNjQsOSArMTM3
NCwxMCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmFkZFJlZ2lvbnNWaXN1YWxFZmZlY3RPdmVy
Zmxvdyhjb25zdCBSZW5kZXJCb3gqIGJveCkKIAogdm9pZCBSZW5kZXJGbG93VGhyZWFkOjphZGRS
ZWdpb25zVmlzdWFsT3ZlcmZsb3dGcm9tVGhlbWUoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrKQog
ewotICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSAwOwotICAgIFJlbmRlclJlZ2lvbiog
ZW5kUmVnaW9uID0gMDsKLSAgICBnZXRSZWdpb25SYW5nZUZvckJveChibG9jaywgc3RhcnRSZWdp
b24sIGVuZFJlZ2lvbik7CisgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxwdHI7
CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRyOworICAgIGlmICghZ2V0UmVn
aW9uUmFuZ2VGb3JCb3goYmxvY2ssIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKQorICAgICAgICBy
ZXR1cm47CiAKICAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVn
aW9uKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAg
ICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CkBAIC0xMzg1LDEzICsxMzk2LDE1
IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRkUmVnaW9uc1Zpc3VhbE92ZXJmbG93RnJvbVRo
ZW1lKGNvbnN0IFJlbmRlckJsb2NrKiBibG9jCiAKIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRk
UmVnaW9uc092ZXJmbG93RnJvbUNoaWxkKGNvbnN0IFJlbmRlckJveCogYm94LCBjb25zdCBSZW5k
ZXJCb3gqIGNoaWxkLCBjb25zdCBMYXlvdXRTaXplJiBkZWx0YSkKIHsKLSAgICBSZW5kZXJSZWdp
b24qIHN0YXJ0UmVnaW9uID0gMDsKLSAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7Ci0g
ICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goY2hpbGQsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwor
ICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOworICAgIFJlbmRlclJlZ2lv
biogZW5kUmVnaW9uID0gbnVsbHB0cjsKKyAgICBpZiAoIWdldFJlZ2lvblJhbmdlRm9yQm94KGNo
aWxkLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgUmVu
ZGVyUmVnaW9uKiBjb250YWluZXJTdGFydFJlZ2lvbiA9IDA7Ci0gICAgUmVuZGVyUmVnaW9uKiBj
b250YWluZXJFbmRSZWdpb24gPSAwOwotICAgIGdldFJlZ2lvblJhbmdlRm9yQm94KGJveCwgY29u
dGFpbmVyU3RhcnRSZWdpb24sIGNvbnRhaW5lckVuZFJlZ2lvbik7CisgICAgUmVuZGVyUmVnaW9u
KiBjb250YWluZXJTdGFydFJlZ2lvbiA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVnaW9uKiBjb250
YWluZXJFbmRSZWdpb24gPSBudWxscHRyOworICAgIGlmICghZ2V0UmVnaW9uUmFuZ2VGb3JCb3go
Ym94LCBjb250YWluZXJTdGFydFJlZ2lvbiwgY29udGFpbmVyRW5kUmVnaW9uKSkKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgZm9yIChhdXRvIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuZmluZChzdGFydFJl
Z2lvbiksIGVuZCA9IG1fcmVnaW9uTGlzdC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewog
ICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwpAQCAtMTQyMSw5ICsxNDM0LDEw
IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRkUmVnaW9uc092ZXJmbG93RnJvbUNoaWxkKGNv
bnN0IFJlbmRlckJveCogYm94LCBjb25zdCBSCiAgICAgCiB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6
OmFkZFJlZ2lvbnNMYXlvdXRPdmVyZmxvdyhjb25zdCBSZW5kZXJCb3gqIGJveCwgY29uc3QgTGF5
b3V0UmVjdCYgbGF5b3V0T3ZlcmZsb3cpCiB7Ci0gICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lv
biA9IDA7Ci0gICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSAwOwotICAgIGdldFJlZ2lvblJh
bmdlRm9yQm94KGJveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CisgICAgUmVuZGVyUmVnaW9u
KiBzdGFydFJlZ2lvbiA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBu
dWxscHRyOworICAgIGlmICghZ2V0UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBzdGFydFJlZ2lvbiwg
ZW5kUmVnaW9uKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRvIGl0ZXIgPSBtX3Jl
Z2lvbkxpc3QuZmluZChzdGFydFJlZ2lvbiksIGVuZCA9IG1fcmVnaW9uTGlzdC5lbmQoKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVy
OwpAQCAtMTQ1NSw5ICsxNDY5LDEwIEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRkUmVnaW9u
c1Zpc3VhbE92ZXJmbG93KGNvbnN0IFJlbmRlckJveCogYm94LCBjb25zdCBMYXlvCiAKIHZvaWQg
UmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZWdpb25zT3ZlcmZsb3coY29uc3QgUmVuZGVyQm94KiBi
b3gpCiB7Ci0gICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7Ci0gICAgUmVuZGVyUmVn
aW9uKiBlbmRSZWdpb24gPSAwOwotICAgIGdldFJlZ2lvblJhbmdlRm9yQm94KGJveCwgc3RhcnRS
ZWdpb24sIGVuZFJlZ2lvbik7CisgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxw
dHI7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRyOworICAgIGlmICghZ2V0
UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSkKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgZm9yIChhdXRvIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuZmluZChzdGFydFJl
Z2lvbiksIGVuZCA9IG1fcmVnaW9uTGlzdC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewog
ICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKaW5kZXggOWQ0N2IxMi4uMzk4NDQ5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCkBAIC0xMjUsNyArMTI1
LDggQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlUHJldmlvdXNSZWdpb25Db3VudCgpIHsgbV9w
cmV2aW91c1JlZ2lvbkNvdW50ID0gbV9yZWdpb25MaXN0LnNpemUoKTsgfTsKIAogICAgIHZvaWQg
c2V0UmVnaW9uUmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94KiwgUmVuZGVyUmVnaW9uKiwgUmVu
ZGVyUmVnaW9uKik7Ci0gICAgdm9pZCBnZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJC
b3gqLCBSZW5kZXJSZWdpb24qJiBzdGFydFJlZ2lvbiwgUmVuZGVyUmVnaW9uKiYgZW5kUmVnaW9u
KSBjb25zdDsKKyAgICBib29sIGdldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCos
IFJlbmRlclJlZ2lvbiomIHN0YXJ0UmVnaW9uLCBSZW5kZXJSZWdpb24qJiBlbmRSZWdpb24pIGNv
bnN0OworICAgIGJvb2wgaGFzUmVnaW9uUmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94KikgY29u
c3Q7CiAKICAgICAvLyBDaGVjayBpZiB0aGUgb2JqZWN0IGlzIGluIHJlZ2lvbiBhbmQgdGhlIHJl
Z2lvbiBpcyBwYXJ0IG9mIHRoaXMgZmxvdyB0aHJlYWQuCiAgICAgYm9vbCBvYmplY3RJbkZsb3dS
ZWdpb24oY29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyUmVnaW9uKikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCmluZGV4IGYyMjQ2NzIuLmJl
MGFkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC00
OTIsMjMgKzQ5MiwyNCBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6ZW5zdXJlT3ZlcmZsb3dGb3JCb3go
Y29uc3QgUmVuZGVyQm94KiBib3gsIFJlZlB0cjxSZW5kZXJPdmVyZgogCiBMYXlvdXRSZWN0IFJl
bmRlclJlZ2lvbjo6cmVjdEZsb3dQb3J0aW9uRm9yQm94KGNvbnN0IFJlbmRlckJveCogYm94LCBj
b25zdCBMYXlvdXRSZWN0JiByZWN0KSBjb25zdAogewotICAgIFJlbmRlclJlZ2lvbiogc3RhcnRS
ZWdpb24gPSAwOwotICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gMDsKLSAgICBtX2Zsb3dU
aHJlYWQtPmdldFJlZ2lvblJhbmdlRm9yQm94KGJveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7
Ci0KICAgICBMYXlvdXRSZWN0IG1hcHBlZFJlY3QgPSBtX2Zsb3dUaHJlYWQtPm1hcEZyb21Mb2Nh
bFRvRmxvd1RocmVhZChib3gsIHJlY3QpOwotICAgIGlmIChmbG93VGhyZWFkKCktPmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkpIHsKLSAgICAgICAgaWYgKHRoaXMgIT0gc3RhcnRSZWdpb24pCi0g
ICAgICAgICAgICBtYXBwZWRSZWN0LnNoaWZ0WUVkZ2VUbyhzdGQ6Om1heDxMYXlvdXRVbml0Pihs
b2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSwgbWFwcGVkUmVjdC55KCkpKTsKIAotICAg
ICAgICBpZiAodGhpcyAhPSBlbmRSZWdpb24pCi0gICAgICAgICAgICBtYXBwZWRSZWN0LnNldEhl
aWdodChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBzdGQ6Om1pbjxMYXlvdXRVbml0Pihsb2dpY2Fs
Qm90dG9tRm9yRmxvd1RocmVhZENvbnRlbnQoKSAtIG1hcHBlZFJlY3QueSgpLCBtYXBwZWRSZWN0
LmhlaWdodCgpKSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICh0aGlzICE9IHN0YXJ0UmVn
aW9uKQotICAgICAgICAgICAgbWFwcGVkUmVjdC5zaGlmdFhFZGdlVG8oc3RkOjptYXg8TGF5b3V0
VW5pdD4obG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCksIG1hcHBlZFJlY3QueCgpKSk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgaWYgKHRoaXMgIT0gZW5kUmVnaW9uKQotICAgICAgICAg
ICAgbWFwcGVkUmVjdC5zZXRXaWR0aChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBzdGQ6Om1pbjxM
YXlvdXRVbml0Pihsb2dpY2FsQm90dG9tRm9yRmxvd1RocmVhZENvbnRlbnQoKSAtIG1hcHBlZFJl
Y3QueCgpLCBtYXBwZWRSZWN0LndpZHRoKCkpKSk7CisgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJl
Z2lvbiA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRyOwor
ICAgIGlmIChtX2Zsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdlRm9yQm94KGJveCwgc3RhcnRSZWdp
b24sIGVuZFJlZ2lvbikpIHsKKyAgICAgICAgaWYgKGZsb3dUaHJlYWQoKS0+aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSkgeworICAgICAgICAgICAgaWYgKHRoaXMgIT0gc3RhcnRSZWdpb24pCisg
ICAgICAgICAgICAgICAgbWFwcGVkUmVjdC5zaGlmdFlFZGdlVG8oc3RkOjptYXg8TGF5b3V0VW5p
dD4obG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCksIG1hcHBlZFJlY3QueSgpKSk7CisK
KyAgICAgICAgICAgIGlmICh0aGlzICE9IGVuZFJlZ2lvbikKKyAgICAgICAgICAgICAgICBtYXBw
ZWRSZWN0LnNldEhlaWdodChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBzdGQ6Om1pbjxMYXlvdXRV
bml0Pihsb2dpY2FsQm90dG9tRm9yRmxvd1RocmVhZENvbnRlbnQoKSAtIG1hcHBlZFJlY3QueSgp
LCBtYXBwZWRSZWN0LmhlaWdodCgpKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aWYgKHRoaXMgIT0gc3RhcnRSZWdpb24pCisgICAgICAgICAgICAgICAgbWFwcGVkUmVjdC5zaGlm
dFhFZGdlVG8oc3RkOjptYXg8TGF5b3V0VW5pdD4obG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250
ZW50KCksIG1hcHBlZFJlY3QueCgpKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAodGhpcyAhPSBlbmRSZWdpb24pCisgICAgICAgICAgICAgICAgbWFwcGVkUmVjdC5zZXRXaWR0
aChzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBzdGQ6Om1pbjxMYXlvdXRVbml0Pihsb2dpY2FsQm90
dG9tRm9yRmxvd1RocmVhZENvbnRlbnQoKSAtIG1hcHBlZFJlY3QueCgpLCBtYXBwZWRSZWN0Lndp
ZHRoKCkpKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoc2hvdWxkQ2xpcEZsb3dUaHJl
YWRDb250ZW50KCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226092</attachid>
            <date>2014-03-07 00:42:40 -0800</date>
            <delta_ts>2014-03-07 00:42:40 -0800</delta_ts>
            <desc>WIP2</desc>
            <filename>WIP2.patch</filename>
            <type>text/plain</type>
            <size>35656</size>
            <attacher name="Mihnea Ovidenie">mihnea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9pbmxpbmUtYmxvY2stZmxvd2Vk
LWluLXJlZ2lvbnMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9pbmxp
bmUtYmxvY2stZmxvd2VkLWluLXJlZ2lvbnMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xYmMxMGRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2lubGluZS1ibG9jay1mbG93ZWQtaW4tcmVnaW9ucy1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgICNyZWdpb24xIHsgcG9zaXRpb246IGFic29s
dXRlOyB0b3A6IDE1MHB4OyBsZWZ0OiAxMDBweDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4
OyB9CisgICAgICAgICAgICAjY29udGVudDEgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJhY2tn
cm91bmQtY29sb3I6IHJlZDsgfQorCisgICAgICAgICAgICAjZGl2MSwgI2RpdjIgeyB3aWR0aDog
MTAwcHg7IGhlaWdodDogMTAwcHg7IH0KKyAgICAgICAgICAgICNkaXYxIHsgYmFja2dyb3VuZC1j
b2xvcjogb3JhbmdlOyB9CisgICAgICAgICAgICAjZGl2MiB7IGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOyB9CisgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAg
ICA8cD5UZXN0IHRoYXQgYW4gaW5saW5lIGJsb2NrIGNvbGxlY3RlZCBpbiBhIG5hbWVkIGZsb3cg
d2l0aCAyIHJlZ2lvbnMgaXMgcHJvcGVybHkgZGlzcGxheWVkLjwvcD4KKyAgICAgICAgPHA+VGhl
IGlubGluZSBibG9jayBzaG91bGQgYmUgZGlzcGxheWVkIG9ubHkgaW4gdGhlIGZpcnN0IHJlZ2lv
bi48L3A+CisgICAgICAgIDxwPk9uIHN1Y2Nlc3MsIHlvdSBzaG91bGQgc2VlIDIgcmVjdGFuZ2xl
cywgdGhlIGZpcnN0IG9uZSBvcmFuZ2UgYW5kIHRoZSBzZWNvbmQgb25lIGdyZWVuIGFuZCBubyBy
ZWQuPC9wPgorICAgICAgICA8ZGl2IGlkPSJyZWdpb24xIj4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnRlbnQxIj4KKyAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkaXYxIj48L2Rpdj4KKyAgICAg
ICAgICAgICAgICA8ZGl2IGlkPSJkaXYyIj48L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2NrLWZsb3dlZC1pbi1yZWdpb25zLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2NrLWZsb3dlZC1pbi1yZWdpb25zLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc3MDE2YgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9pbmxpbmUtYmxvY2stZmxvd2VkLWluLXJl
Z2lvbnMuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAjcmVnaW9uMSB7IC13ZWJraXQt
Zmxvdy1mcm9tOiBmbG93OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTUwcHg7IGxlZnQ6IDEw
MHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IH0KKyAgICAgICAgICAgICNyZWdpb24y
IHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxNTBw
eDsgbGVmdDogMzAwcHg7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgfQorCisgICAgICAg
ICAgICAjY29udGVudDEgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsgZGlzcGxheTogaW5saW5l
LWJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0KKworICAgICAgICAgICAgI2RpdjEsICNk
aXYyIHsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyB9CisgICAgICAgICAgICAjZGl2MSB7
IGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgfQorICAgICAgICAgICAgI2RpdjIgeyBiYWNrZ3Jv
dW5kLWNvbG9yOiBncmVlbjsgfQorICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keT4KKyAgICAgICAgPHA+VGVzdCB0aGF0IGFuIGlubGluZSBibG9jayBjb2xsZWN0ZWQgaW4g
YSBuYW1lZCBmbG93IHdpdGggMiByZWdpb25zIGlzIHByb3Blcmx5IGRpc3BsYXllZC48L3A+Cisg
ICAgICAgIDxwPlRoZSBpbmxpbmUgYmxvY2sgc2hvdWxkIGJlIGRpc3BsYXllZCBvbmx5IGluIHRo
ZSBmaXJzdCByZWdpb24uPC9wPgorICAgICAgICA8cD5PbiBzdWNjZXNzLCB5b3Ugc2hvdWxkIHNl
ZSAyIHJlY3RhbmdsZXMsIHRoZSBmaXJzdCBvbmUgb3JhbmdlIGFuZCB0aGUgc2Vjb25kIG9uZSBn
cmVlbiBhbmQgbm8gcmVkLjwvcD4KKyAgICAgICAgPGRpdiBpZD0icmVnaW9uMSI+PC9kaXY+Cisg
ICAgICAgIDxkaXYgaWQ9InJlZ2lvbjIiPjwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJjb250ZW50
MSI+CisgICAgICAgICAgICA8ZGl2IGlkPSJkaXYxIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYg
aWQ9ImRpdjIiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2NrLWlubGluZS1j
aGlsZHJlbi1mbG93ZWQtaW4tcmVnaW9ucy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2lubGluZS1ibG9jay1pbmxpbmUtY2hpbGRyZW4tZmxvd2VkLWluLXJlZ2lvbnMt
ZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzcwMDA3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2lubGluZS1ibG9j
ay1pbmxpbmUtY2hpbGRyZW4tZmxvd2VkLWluLXJlZ2lvbnMtZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAjcmVnaW9uMSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAx
NTBweDsgbGVmdDogMTAwcHg7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgfQorICAgICAg
ICAgICAgI2NvbnRlbnQxIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9y
OiByZWQ7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAyNTBweDsgfQorCisgICAgICAgICAgICAjaW5z
aWRlMSB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyB3
aWR0aDogMTAwcHg7IGhlaWdodDogMjUwcHg7fQorICAgICAgICAgICAgI2luc2lkZTIgeyBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB3aWR0aDogMTAwcHg7
IGhlaWdodDogMjAwcHg7IH0KKyAgICAgICAgICAgICNpbnNpZGUzIHsgZGlzcGxheTogaW5saW5l
LWJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTUw
cHg7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAg
IDxwPlRlc3QgdGhhdCBhbiBpbmxpbmUgYmxvY2sgd2l0aCBpbmxpbmUgYmxvY2sgY2hpbGRyZW4g
aXMgY29ycmVjdGx5IGRpc3BsYXllZCBpbiBhIHJlZ2lvbi48L3A+CisgICAgICAgIDxwPk9uIHN1
Y2Nlc3MgeW91IHNob3VsZCBzZWUgYSBibHVlIHJlY3RhbmdsZSwgZm9sbG93ZWQgYnkgYSBncmVl
biByZWN0YW5nbGUgYW5kIGFuIG9yYW5nZSByZWN0YW5nbGUuPC9wPgorICAgICAgICA8cD5Zb3Ug
c2hvdWxkIG5vdCBzZWUgYW55IHJlZCBiZWxvdy48L3A+CisgICAgICAgIDxkaXYgaWQ9InJlZ2lv
bjEiPgorICAgICAgICAgICAgPGRpdiBpZD0iY29udGVudDEiPgorICAgICAgICAgICAgICAgIDxk
aXYgaWQ9Imluc2lkZTEiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpbnNpZGUyIj4K
KyAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Imluc2lkZTMiPjwvZGl2PgorICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAg
IDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+IApcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9p
bmxpbmUtYmxvY2staW5saW5lLWNoaWxkcmVuLWZsb3dlZC1pbi1yZWdpb25zLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2NrLWlubGluZS1jaGlsZHJlbi1mbG93ZWQt
aW4tcmVnaW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMDU3
ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJs
b2NrLWlubGluZS1jaGlsZHJlbi1mbG93ZWQtaW4tcmVnaW9ucy5odG1sCkBAIC0wLDAgKzEsMjYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHBvc2l0aW9u
OiBhYnNvbHV0ZTsgdG9wOiAxNTBweDsgbGVmdDogMTAwcHg7IHdpZHRoOiAxMDBweDsgaGVpZ2h0
OiAxMDBweDsgfQorICAgICAgICAgICAgI2NvbnRlbnQxIHsgLXdlYmtpdC1mbG93LWludG86IGZs
b3c7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB3aWR0aDog
MTAwcHg7IGhlaWdodDogMjUwcHg7IH0KKworICAgICAgICAgICAgI2luc2lkZTEgeyBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7IGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgd2lkdGg6IDEwMHB4OyBo
ZWlnaHQ6IDI1MHB4O30KKyAgICAgICAgICAgICNpbnNpZGUyIHsgZGlzcGxheTogaW5saW5lLWJs
b2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDIwMHB4
OyB9CisgICAgICAgICAgICAjaW5zaWRlMyB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgYmFja2dy
b3VuZC1jb2xvcjogYmx1ZTsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDE1MHB4OyB9CisgICAgICAg
IDwvc3R5bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8cD5UZXN0IHRoYXQg
YW4gaW5saW5lIGJsb2NrIHdpdGggaW5saW5lIGJsb2NrIGNoaWxkcmVuIGlzIGNvcnJlY3RseSBk
aXNwbGF5ZWQgaW4gYSByZWdpb24uPC9wPgorICAgICAgICA8cD5PbiBzdWNjZXNzIHlvdSBzaG91
bGQgc2VlIGEgYmx1ZSByZWN0YW5nbGUsIGZvbGxvd2VkIGJ5IGEgZ3JlZW4gcmVjdGFuZ2xlIGFu
ZCBhbiBvcmFuZ2UgcmVjdGFuZ2xlLjwvcD4KKyAgICAgICAgPHA+WW91IHNob3VsZCBub3Qgc2Vl
IGFueSByZWQgYmVsb3cuPC9wPgorICAgICAgICA8ZGl2IGlkPSJyZWdpb24xIj48L2Rpdj4KKyAg
ICAgICAgPGRpdiBpZD0iY29udGVudDEiPgorICAgICAgICAgICAgPGRpdiBpZD0iaW5zaWRlMSI+
CisgICAgICAgICAgICAgICAgPGRpdiBpZD0iaW5zaWRlMiI+CisgICAgICAgICAgICAgICAgICAg
IDxkaXYgaWQ9Imluc2lkZTMiPjwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAg
ICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4gClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL3BlcmNlbnQtaW5saW5lLWJsb2Nrcy1mbG93ZWQtaW4tcmVnaW9ucy1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3BlcmNlbnQtaW5saW5lLWJsb2Nrcy1mbG93ZWQt
aW4tcmVnaW9ucy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjllZTJlMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
cGVyY2VudC1pbmxpbmUtYmxvY2tzLWZsb3dlZC1pbi1yZWdpb25zLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmlubGluZUJsb2NrIHsgZGlzcGxheTogaW5saW5lLWJs
b2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgd2lkdGg6IDUwJTsgaGVpZ2h0OiA5MHB4OyB9
CisgICAgICAgICAgICAjcmVnaW9uMSB7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAxMDBweDsgcG9z
aXRpb246IGFic29sdXRlOyB0b3A6IDE1MHB4OyBsZWZ0OiAxMDBweDsgfQorICAgICAgICAgICAg
I3JlZ2lvbjIgeyB3aWR0aDogNDAwcHg7IGhlaWdodDogMTAwcHg7IHBvc2l0aW9uOiBhYnNvbHV0
ZTsgdG9wOiAxNTBweDsgbGVmdDogMzAwcHg7IH0KKyAgICAgICAgICAgIC5jb250ZW50Tm9kZSB7
IHdpZHRoOiA1MCU7IGhlaWdodDogMjAwcHg7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPlRlc3QgdGhhdCBpbmxpbmUgYmxvY2tzIHdpdGgg
cGVyY2VudCB3aWR0aCBhcmUgc2l6ZWQgYmFzZWQgb24gdGhlIHJlZ2lvbiBpbiB3aGljaCB0aGV5
IGFyZSBkaXNwbGF5ZWQuPC9wPgorICAgICAgICA8cD5PbiBzdWNjZXNzIHlvdSBzaG91bGQgc2Vl
IHR3byBncmVlbiByZWN0YW5nbGVzLCB0aGUgcmlnaHQgcmVjdGFuZ2xlJ3Mgd2lkdGggYmVpbmcg
dHdpY2UgYXMgYmlnIGFzIHRoZSBsZWZ0IG9uZSdzIHdpZHRoLjwvcD4KKyAgICAgICAgPGRpdiBp
ZD0icmVnaW9uMSI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Tm9kZSI+CisgICAg
ICAgICAgICAgICAgPGRpdiBpZD0iaWIxIiBjbGFzcz0iaW5saW5lQmxvY2siPjwvZGl2PgorICAg
ICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJyZWdpb24y
Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnROb2RlIj4KKyAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJpYjIiIGNsYXNzPSJpbmxpbmVCbG9jayI+PC9kaXY+CisgICAgICAgICAgICA8
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3BlcmNlbnQtaW5saW5lLWJsb2Nrcy1mbG93ZWQtaW4t
cmVnaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3BlcmNlbnQtaW5saW5lLWJs
b2Nrcy1mbG93ZWQtaW4tcmVnaW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmRmOWE4MWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvcGVyY2VudC1pbmxpbmUtYmxvY2tzLWZsb3dlZC1pbi1yZWdpb25zLmh0bWwKQEAgLTAsMCAr
MSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmlubGluZUJsb2NrIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBi
YWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgd2lkdGg6IDUwJTsgaGVpZ2h0OiA5MHB4OyB9CisgICAg
ICAgICAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93OyB3aWR0aDogMjAwcHg7
IGhlaWdodDogMTAwcHg7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxNTBweDsgbGVmdDogMTAw
cHg7IH0KKyAgICAgICAgICAgICNyZWdpb24yIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdp
ZHRoOiA0MDBweDsgaGVpZ2h0OiAxMDBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDE1MHB4
OyBsZWZ0OiAzMDBweDsgfQorICAgICAgICAgICAgI2NvbnRlbnROb2RlIHsgLXdlYmtpdC1mbG93
LWludG86IGZsb3c7IHdpZHRoOiA1MCU7IGhlaWdodDogMjAwcHg7IH0KKyAgICAgICAgPC9zdHls
ZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPlRlc3QgdGhhdCBpbmxpbmUg
YmxvY2tzIHdpdGggcGVyY2VudCB3aWR0aCBhcmUgc2l6ZWQgYmFzZWQgb24gdGhlIHJlZ2lvbiBp
biB3aGljaCB0aGV5IGFyZSBkaXNwbGF5ZWQuPC9wPgorICAgICAgICA8cD5PbiBzdWNjZXNzIHlv
dSBzaG91bGQgc2VlIHR3byBncmVlbiByZWN0YW5nbGVzLCB0aGUgcmlnaHQgcmVjdGFuZ2xlJ3Mg
d2lkdGggYmVpbmcgdHdpY2UgYXMgYmlnIGFzIHRoZSBsZWZ0IG9uZSdzIHdpZHRoLjwvcD4KKyAg
ICAgICAgPGRpdiBpZD0icmVnaW9uMSI+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9InJlZ2lvbjIi
PjwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJjb250ZW50Tm9kZSI+CisgICAgICAgICAgICA8IS0t
CisgICAgICAgICAgICBUaGlzIGJsb2NrIGlzIGRpc3BsYXllZCBpbiB0aGUgZmlyc3QgcmVnaW9u
IGFuZCBzaG91bGQgaGF2ZSBpdHMgd2lkdGggNTAlIGZyb20gdGhlIHdpZHRoCisgICAgICAgICAg
ICBvZiBpdHMgY29udGFpbmluZyBibG9jayBpbiB0aGUgZmlyc3QgcmVnaW9uLCB3aGljaCBpcyA1
MCUgZnJvbSByZWdpb24xJ3Mgd2lkdGguCisgICAgICAgICAgICByZWdpb24xX3dpZHRoID0gMjAw
cHgKKyAgICAgICAgICAgIGNvbnRlbnROb2RlX3dpZHRoX2luX3JlZ2lvbjEgPSAxMDBweAorICAg
ICAgICAgICAgaWIxX3dpZHRoX2luX3JlZ2lvbjEgPSA1MHB4CisgICAgICAgICAgICAtLT4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9ImliMSIgY2xhc3M9ImlubGluZUJsb2NrIj48L2Rpdj4KKyAgICAg
ICAgICAgIDwhLS0KKyAgICAgICAgICAgIFRoaXMgYmxvY2sgaXMgZGlzcGxheWVkIGluIHRoZSBz
ZWNvbmQgcmVnaW9uIGFuZCBzaG91bGQgaGF2ZSBpdHMgd2lkdGggNTAlIGZyb20gdGhlIHdpZHRo
CisgICAgICAgICAgICBvZiBpdHMgY29udGFpbmluZyBibG9jayBpbiB0aGUgc2Vjb25kIHJlZ2lv
biwgd2hpY2ggaXMgNTAlIGZyb20gcmVnaW9uMidzIHdpZHRoLgorICAgICAgICAgICAgcmVnaW9u
Ml93aWR0aCA9IDQwMHB4CisgICAgICAgICAgICBjb250ZW50Tm9kZV93aWR0aF9pbl9yZWdpb24x
ID0gNDAwcHgKKyAgICAgICAgICAgIGliMl93aWR0aF9pbl9yZWdpb24xID0gMTAwcHgKKyAgICAg
ICAgICAgIC0tPgorICAgICAgICAgICAgPGRpdiBpZD0iaWIyIiBjbGFzcz0iaW5saW5lQmxvY2si
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggYmFkYjQzZi4uMTMw
YjNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJs
YXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNw
cApAQCAtNDk3LDExICs0OTcsMTEgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IGJ1aWxkT2JqZWN0Rm9yUmVuZGVyZXJGcmFnbWVudHMoUmVuZGVyT2JqZWN0KgogICAgICAgICBS
ZW5kZXJCb3gqIGVuY2xvc2luZ0JveCA9IHJlbmRlcmVyLT5lbmNsb3NpbmdCb3goKTsKICAgICAg
ICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxwdHI7CiAgICAgICAgIFJlbmRlclJl
Z2lvbiogZW5kUmVnaW9uID0gbnVsbHB0cjsKLSAgICAgICAgY29udGFpbmluZ0Zsb3dUaHJlYWQt
PmdldFJlZ2lvblJhbmdlRm9yQm94KGVuY2xvc2luZ0JveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lv
bik7Ci0gICAgICAgIGlmICghc3RhcnRSZWdpb24pIHsKKyAgICAgICAgaWYgKCFjb250YWluaW5n
Rmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3goZW5jbG9zaW5nQm94LCBzdGFydFJlZ2lv
biwgZW5kUmVnaW9uKSkgewogICAgICAgICAgICAgLy8gVGhlIGZsb3cgaGFzIG5vIHZpc2libGUg
cmVnaW9ucy4gVGhlIHJlbmRlcmVyIGlzIG5vdCB2aXNpYmxlIG9uIHNjcmVlbi4KICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CisKICAgICAgICAgY29uc3QgUmVuZGVyUmVn
aW9uTGlzdCYgcmVnaW9uTGlzdCA9IGNvbnRhaW5pbmdGbG93VGhyZWFkLT5yZW5kZXJSZWdpb25M
aXN0KCk7CiAgICAgICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IHJlZ2lvbkxpc3QuZmluZChzdGFydFJlZ2lvbik7IGl0ZXIgIT0gcmVnaW9uTGlzdC5lbmQo
KTsgKytpdGVyKSB7CiAgICAgICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggN2FiYzYyNi4uM2E1
ZGM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC01MDQ1
LDExICs1MDQ1LDI1IEBAIFJlbmRlclJlZ2lvbiogUmVuZGVyQmxvY2s6OnJlZ2lvbkF0QmxvY2tP
ZmZzZXQoTGF5b3V0VW5pdCBibG9ja09mZnNldCkgY29uc3QKICAgICByZXR1cm4gZmxvd1RocmVh
ZC0+cmVnaW9uQXRCbG9ja09mZnNldCh0aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQ
YWdlKCkgKyBibG9ja09mZnNldCwgdHJ1ZSk7CiB9CiAKK3N0YXRpYyBib29sIGNhbkNvbXB1dGVS
ZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJCbG9jayogcGFyZW50QmxvY2ssIGNvbnN0IFJl
bmRlckJveCYgY2hpbGRCb3gsIGNvbnN0IFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWRDb250
YWluaW5nQmxvY2spCit7CisgICAgQVNTRVJUKHBhcmVudEJsb2NrKTsKKyAgICBBU1NFUlQoIWNo
aWxkQm94LmlzUmVuZGVyRmxvd1RocmVhZCgpKTsKKworICAgIGlmICghZmxvd1RocmVhZENvbnRh
aW5pbmdCbG9jaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZmxvd1RocmVhZENv
bnRhaW5pbmdCbG9jay0+aGFzUmVnaW9ucygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFjaGlsZEJveC5jYW5IYXZlT3V0c2lkZVJlZ2lvblJhbmdlKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrLT5oYXNSZWdp
b25SYW5nZUZvckJveChwYXJlbnRCbG9jayk7Cit9CisKIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1
dGVSZWdpb25SYW5nZUZvckJveENoaWxkKGNvbnN0IFJlbmRlckJveCYgYm94KSBjb25zdAogewog
ICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Js
b2NrKCk7Ci0gICAgaWYgKCFmbG93VGhyZWFkIHx8ICFmbG93VGhyZWFkLT5oYXNSZWdpb25zKCkp
Ci0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoY2FuQ29tcHV0ZVJlZ2lvblJhbmdlRm9yQm94
KHRoaXMsIGJveCwgZmxvd1RocmVhZCkpOwogCiAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lv
bjsKICAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbjsKQEAgLTUwNjcsNyArNTA4MSw3IEBAIHZv
aWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVSZWdpb25SYW5nZUZvckJveENoaWxkKGNvbnN0IFJlbmRl
ckJveCYgYm94KSBjb25zdAogdm9pZCBSZW5kZXJCbG9jazo6ZXN0aW1hdGVSZWdpb25SYW5nZUZv
ckJveENoaWxkKGNvbnN0IFJlbmRlckJveCYgYm94KSBjb25zdAogewogICAgIFJlbmRlckZsb3dU
aHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgaWYg
KCFmbG93VGhyZWFkIHx8ICFmbG93VGhyZWFkLT5oYXNSZWdpb25zKCkgfHwgIWJveC5jYW5IYXZl
T3V0c2lkZVJlZ2lvblJhbmdlKCkpCisgICAgaWYgKCFjYW5Db21wdXRlUmVnaW9uUmFuZ2VGb3JC
b3godGhpcywgYm94LCBmbG93VGhyZWFkKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGJv
eC5pc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXRpb24oKSkgewpAQCAtNTA4OCwxNyArNTEwMiwxNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjplc3RpbWF0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY29uc3Qg
UmVuZGVyQm94JiBib3gpIGNvbnN0CiBib29sIFJlbmRlckJsb2NrOjp1cGRhdGVSZWdpb25SYW5n
ZUZvckJveENoaWxkKGNvbnN0IFJlbmRlckJveCYgYm94KSBjb25zdAogewogICAgIFJlbmRlckZs
b3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7Ci0gICAg
aWYgKCFmbG93VGhyZWFkIHx8ICFmbG93VGhyZWFkLT5oYXNSZWdpb25zKCkgfHwgIWJveC5jYW5I
YXZlT3V0c2lkZVJlZ2lvblJhbmdlKCkpCisgICAgaWYgKCFjYW5Db21wdXRlUmVnaW9uUmFuZ2VG
b3JCb3godGhpcywgYm94LCBmbG93VGhyZWFkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7Ci0gICAgUmVuZGVyUmVnaW9uKiBlbmRS
ZWdpb24gPSAwOworICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOworICAg
IFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gbnVsbHB0cjsKICAgICBmbG93VGhyZWFkLT5nZXRS
ZWdpb25SYW5nZUZvckJveCgmYm94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKIAogICAgIGNv
bXB1dGVSZWdpb25SYW5nZUZvckJveENoaWxkKGJveCk7CiAKLSAgICBSZW5kZXJSZWdpb24qIG5l
d1N0YXJ0UmVnaW9uID0gMDsKLSAgICBSZW5kZXJSZWdpb24qIG5ld0VuZFJlZ2lvbiA9IDA7Cisg
ICAgUmVuZGVyUmVnaW9uKiBuZXdTdGFydFJlZ2lvbiA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVn
aW9uKiBuZXdFbmRSZWdpb24gPSBudWxscHRyOwogICAgIGZsb3dUaHJlYWQtPmdldFJlZ2lvblJh
bmdlRm9yQm94KCZib3gsIG5ld1N0YXJ0UmVnaW9uLCBuZXdFbmRSZWdpb24pOwogCiAgICAgLy8g
VGhlIHJlZ2lvbiByYW5nZSBvZiB0aGUgYm94IGhhcyBjaGFuZ2VkLiBTb21lIGJveGVzIChlLmcg
ZmxvYXRzKSBtYXkgaGF2ZSBiZWVuIHBvc2l0aW9uZWQgYXNzdW1pbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggMjBjMWQ0YS4uOTBiMzZjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTE2
ODEsOCArMTY4MSw4IEBAIGJvb2wgUmVuZGVyQmxvY2tGbG93OjpoYXNOZXh0UGFnZShMYXlvdXRV
bml0IGxvZ2ljYWxPZmZzZXQsIFBhZ2VCb3VuZGFyeVJ1bGUgcGFnCiAgICAgICAgIHJldHVybiBy
ZWdpb24tPmlzUmVuZGVyUmVnaW9uU2V0KCkgfHwgcmVnaW9uLT5zdHlsZSgpLnJlZ2lvbkZyYWdt
ZW50KCkgPT0gQnJlYWtSZWdpb25GcmFnbWVudAogICAgICAgICAgICAgfHwgKHBhZ2VCb3VuZGFy
eVJ1bGUgPT0gSW5jbHVkZVBhZ2VCb3VuZGFyeSAmJiBwYWdlT2Zmc2V0ID09IHJlZ2lvbi0+bG9n
aWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkpOwogCi0gICAgUmVuZGVyUmVnaW9uKiBzdGFy
dFJlZ2lvbiA9IDA7Ci0gICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSAwOworICAgIFJlbmRl
clJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVn
aW9uID0gbnVsbHB0cjsKICAgICBmbG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveCh0aGlz
LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKIAogICAgIGlmIChyZWdpb24gPT0gZW5kUmVnaW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAyYWRhMGZmLi5iMjU0
OTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTMxLDEzICsx
MzEsMTQgQEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJCb3g6OmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lv
bnMoUmVuZGVyUmVnaW9uKiByZWdpb24pIGNvbnN0CiAgICAgLy8gbG9naWNhbCB0b3Agb3IgbG9n
aWNhbCBib3R0b20gb2YgdGhlIGJsb2NrIHRvIHNpemUgYXMgdGhvdWdoIHRoZSBib3JkZXIgYm94
IGluIHRoZSBmaXJzdCBhbmQKICAgICAvLyBsYXN0IHJlZ2lvbnMgZXh0ZW5kZWQgaW5maW5pdGVs
eS4gT3RoZXJ3aXNlIHRoZSBsaW5lcyBhcmUgZ29pbmcgdG8gc2l6ZSBhY2NvcmRpbmcgdG8gdGhl
IHJlZ2lvbnMKICAgICAvLyB0aGV5IG92ZXJmbG93IGludG8sIHdoaWNoIG1ha2VzIG5vIHNlbnNl
IHdoZW4gdGhpcyBibG9jayBkb2Vzbid0IGV4aXN0IGluIHxyZWdpb258IGF0IGFsbC4KLSAgICBS
ZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gMDsKLSAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lv
biA9IDA7Ci0gICAgZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgc3RhcnRS
ZWdpb24sIGVuZFJlZ2lvbik7CisgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxw
dHI7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRyOworICAgIGlmICghZmxv
d1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgc3RhcnRSZWdpb24sIGVuZFJlZ2lv
bikpCisgICAgICAgIHJldHVybiByZWdpb247CiAKLSAgICBpZiAoc3RhcnRSZWdpb24gJiYgcmVn
aW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSA8IHN0YXJ0UmVnaW9uLT5sb2dp
Y2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSkKKyAgICBpZiAocmVnaW9uLT5sb2dpY2FsVG9w
Rm9yRmxvd1RocmVhZENvbnRlbnQoKSA8IHN0YXJ0UmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1Ro
cmVhZENvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXJ0UmVnaW9uOwotICAgIGlmIChlbmRS
ZWdpb24gJiYgcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSA+IGVuZFJl
Z2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkpCisgICAgaWYgKHJlZ2lvbi0+
bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgPiBlbmRSZWdpb24tPmxvZ2ljYWxUb3BG
b3JGbG93VGhyZWFkQ29udGVudCgpKQogICAgICAgICByZXR1cm4gZW5kUmVnaW9uOwogCiAgICAg
cmV0dXJuIHJlZ2lvbjsKQEAgLTE2NCwxNCArMTY1LDExIEBAIExheW91dFJlY3QgUmVuZGVyQm94
Ojpib3JkZXJCb3hSZWN0SW5SZWdpb24oUmVuZGVyUmVnaW9uKiByZWdpb24sIFJlbmRlckJveFJl
Z2lvCiAgICAgaWYgKCFmbG93VGhyZWFkKQogICAgICAgICByZXR1cm4gYm9yZGVyQm94UmVjdCgp
OwogCi0gICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7Ci0gICAgUmVuZGVyUmVnaW9u
KiBlbmRSZWdpb24gPSAwOwotICAgIGZsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdlRm9yQm94KHRo
aXMsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwotICAgIAotICAgIC8vIEZJWE1FOiBJbiBhIHBl
cmZlY3Qgd29ybGQgdGhpcyBjb25kaXRpb24gc2hvdWxkIG5ldmVyIGhhcHBlbi4KLSAgICBpZiAo
IXN0YXJ0UmVnaW9uIHx8ICFlbmRSZWdpb24pCisgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lv
biA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRyOworICAg
IGlmICghZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgc3RhcnRSZWdpb24s
IGVuZFJlZ2lvbikpCiAgICAgICAgIHJldHVybiBib3JkZXJCb3hSZWN0KCk7Ci0KKyAgICAKICAg
ICBBU1NFUlQoZmxvd1RocmVhZC0+cmVnaW9uSW5SYW5nZShyZWdpb24sIHN0YXJ0UmVnaW9uLCBl
bmRSZWdpb24pKTsKIAogICAgIC8vIENvbXB1dGUgdGhlIGxvZ2ljYWwgd2lkdGggYW5kIHBsYWNl
bWVudCBpbiB0aGlzIHJlZ2lvbi4KQEAgLTIxMDEsMTAgKzIwOTksOSBAQCB2b2lkIFJlbmRlckJv
eDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoby0+aXNSZW5kZXJGbG93VGhy
ZWFkKCkpIHsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiBmaXJzdFJlZ2lvbiA9IDA7Ci0gICAgICAg
IFJlbmRlclJlZ2lvbiogbGFzdFJlZ2lvbiA9IDA7Ci0gICAgICAgIHRvUmVuZGVyRmxvd1RocmVh
ZChvKS0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgZmlyc3RSZWdpb24sIGxhc3RSZWdpb24p
OwotICAgICAgICBpZiAoZmlyc3RSZWdpb24pCisgICAgICAgIFJlbmRlclJlZ2lvbiogZmlyc3RS
ZWdpb24gPSBudWxscHRyOworICAgICAgICBSZW5kZXJSZWdpb24qIGxhc3RSZWdpb24gPSBudWxs
cHRyOworICAgICAgICBpZiAodG9SZW5kZXJGbG93VGhyZWFkKG8pLT5nZXRSZWdpb25SYW5nZUZv
ckJveCh0aGlzLCBmaXJzdFJlZ2lvbiwgbGFzdFJlZ2lvbikpCiAgICAgICAgICAgICByZWN0Lm1v
dmVCeShmaXJzdFJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkubG9jYXRpb24oKSk7CiAg
ICAgfQogCkBAIC00NTM0LDExICs0NTMxLDkgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om92ZXJm
bG93UmVjdEZvclBhaW50UmVqZWN0aW9uKFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBuYW0KICAg
ICAvLyB0byB0aGUgZmxvdyB0aHJlYWQsIG5vdCB0aGUgbGFzdCByZWdpb24gKGluIHdoaWNoIGl0
IHdpbGwgZW5kIHVwIGJlY2F1c2Ugb2YgYm90dG9tOjBweCkKICAgICBpZiAobmFtZWRGbG93RnJh
Z21lbnQpIHsKICAgICAgICAgaWYgKFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBuYW1l
ZEZsb3dGcmFnbWVudC0+Zmxvd1RocmVhZCgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJSZWdpb24q
IHN0YXJ0UmVnaW9uID0gMDsKLSAgICAgICAgICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0g
MDsKLSAgICAgICAgICAgIGZsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIHN0
YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwotCi0gICAgICAgICAgICBpZiAoc3RhcnRSZWdpb24gJiYg
ZW5kUmVnaW9uKQorICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxw
dHI7CisgICAgICAgICAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAg
ICAgICAgICBpZiAoZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgc3RhcnRS
ZWdpb24sIGVuZFJlZ2lvbikpCiAgICAgICAgICAgICAgICAgb3ZlcmZsb3dSZWN0LnVuaXRlKG5h
bWVkRmxvd0ZyYWdtZW50LT52aXN1YWxPdmVyZmxvd1JlY3RGb3JCb3godGhpcykpOwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKaW5kZXggZDFkNTNjMy4uOTQ0ZTJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0yNzcwLDEwICsyNzcw
LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQo
TWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlLCBUcmEKICAgICAvLyBUaGUgcG9pbnQgaW5zaWRlIGEg
Ym94IHRoYXQncyBpbnNpZGUgYSByZWdpb24gaGFzIGl0cyBjb29yZGluYXRlcyByZWxhdGl2ZSB0
byB0aGUgcmVnaW9uLAogICAgIC8vIG5vdCB0aGUgRmxvd1RocmVhZCB0aGF0IGlzIGl0cyBjb250
YWluZXIgaW4gdGhlIFJlbmRlck9iamVjdCB0cmVlLgogICAgIGlmIChvLT5pc1JlbmRlckZsb3dU
aHJlYWQoKSAmJiBpc0JveCgpKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb247
Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uOwotICAgICAgICB0b1JlbmRlckZsb3dU
aHJlYWQobyktPmdldFJlZ2lvblJhbmdlRm9yQm94KHRvUmVuZGVyQm94KHRoaXMpLCBzdGFydFJl
Z2lvbiwgZW5kUmVnaW9uKTsKLSAgICAgICAgaWYgKHN0YXJ0UmVnaW9uKQorICAgICAgICBSZW5k
ZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICAgICAgUmVuZGVyUmVnaW9uKiBl
bmRSZWdpb24gPSBudWxscHRyOworICAgICAgICBpZiAodG9SZW5kZXJGbG93VGhyZWFkKG8pLT5n
ZXRSZWdpb25SYW5nZUZvckJveCh0b1JlbmRlckJveCh0aGlzKSwgc3RhcnRSZWdpb24sIGVuZFJl
Z2lvbikpCiAgICAgICAgICAgICBvID0gc3RhcnRSZWdpb247CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IGJjZGY4YmYu
LjQ5MjVkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oCkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlKSBvdmVycmlkZTsKIAotICAgIGJvb2wg
Y2FuSGF2ZUJveEluZm9JblJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuICFpc0Zsb2F0aW5nKCkgJiYg
IWlzUmVwbGFjZWQoKSAmJiAhaXNJbmxpbmUoKSAmJiAhaGFzQ29sdW1ucygpICYmICFpc1RhYmxl
Q2VsbCgpICYmIGlzUmVuZGVyQmxvY2soKSAmJiAhaXNSZW5kZXJTVkdCbG9jaygpOyB9CisgICAg
Ym9vbCBjYW5IYXZlQm94SW5mb0luUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gIWlzRmxvYXRpbmco
KSAmJiAhaGFzQ29sdW1ucygpICYmICFpc1RhYmxlQ2VsbCgpICYmIGlzUmVuZGVyQmxvY2soKSAm
JiAhaXNSZW5kZXJTVkdCbG9jaygpOyB9CiAKICAgICB2b2lkIGdldEdlb21ldHJ5Rm9yQmFja2dy
b3VuZEltYWdlKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyLCBJ
bnRSZWN0JiBkZXN0UmVjdCwgSW50UG9pbnQmIHBoYXNlLCBJbnRTaXplJiB0aWxlU2l6ZSkgY29u
c3Q7CiAgICAgdm9pZCBjb250ZW50Q2hhbmdlZChDb250ZW50Q2hhbmdlVHlwZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKaW5kZXggNGE1Y2QyMy4u
MDY2ZDhlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dU
aHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFk
LmNwcApAQCAtMjU4LDExICsyNTgsMTAgQEAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIFJlbmRl
ckZsb3dUaHJlYWQ6OnJlZ2lvbkZvckNvbXBvc2l0ZWRMYXllcihSZW5kZXJMYXllciYKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBpZiAoY2hpbGRMYXllci5yZW5kZXJCb3goKSkgewotICAgICAg
ICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gMDsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiBl
bmRSZWdpb24gPSAwOwotICAgICAgICBnZXRSZWdpb25SYW5nZUZvckJveChjaGlsZExheWVyLnJl
bmRlckJveCgpLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKLSAgICAgICAgLy8gVGhlIHZpZGVv
IHRhZyBpcyBzdWNoIGEgYm94IHRoYXQgZG9lc24ndCBoYXZlIGEgcmVnaW9uIHJhbmdlIGJlY2F1
c2UgaXQncyBpbmxpbmUgKGJ5IGRlZmF1bHQpLgotICAgICAgICBpZiAoc3RhcnRSZWdpb24pCisg
ICAgICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOworICAgICAgICBSZW5k
ZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgICAgIGlmIChnZXRSZWdpb25SYW5n
ZUZvckJveChjaGlsZExheWVyLnJlbmRlckJveCgpLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSkK
KyAgICAgICAgICAgIC8vIFRoZSB2aWRlbyB0YWcgaXMgc3VjaCBhIGJveCB0aGF0IGRvZXNuJ3Qg
aGF2ZSBhIHJlZ2lvbiByYW5nZSBiZWNhdXNlIGl0J3MgaW5saW5lIChieSBkZWZhdWx0KS4KICAg
ICAgICAgICAgIHJldHVybiB0b1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KHN0YXJ0UmVnaW9uKTsK
ICAgICB9CiAKQEAgLTQ0MCw5ICs0MzksNyBAQCBSZW5kZXJSZWdpb24qIFJlbmRlckZsb3dUaHJl
YWQ6OnJlZ2lvbkZyb21BYnNvbHV0ZVBvaW50QW5kQm94KGNvbnN0IEludFBvaW50JiBhYgogewog
ICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOwogICAgIFJlbmRlclJlZ2lv
biogZW5kUmVnaW9uID0gbnVsbHB0cjsKLSAgICBnZXRSZWdpb25SYW5nZUZvckJveCgmZmxvd2Vk
Qm94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKLQotICAgIGlmICghc3RhcnRSZWdpb24pCisg
ICAgaWYgKCFnZXRSZWdpb25SYW5nZUZvckJveCgmZmxvd2VkQm94LCBzdGFydFJlZ2lvbiwgZW5k
UmVnaW9uKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBmb3IgKGF1dG8gaXRlciA9
IG1fcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVnaW9uKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgp
OyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CkBAIC00ODcsMTAgKzQ4NCw5IEBAIExheW91dFBvaW50
IFJlbmRlckZsb3dUaHJlYWQ6OmFkanVzdGVkUG9zaXRpb25SZWxhdGl2ZVRvT2Zmc2V0UGFyZW50
KGNvbnN0IFJlbmRlCiAgICAgICAgIGJvb2wgd2FzQ29tcHV0ZWRSZWxhdGl2ZVRvT3RoZXJSZWdp
b24gPSBmYWxzZTsKICAgICAgICAgd2hpbGUgKG9iakNvbnRhaW5pbmdCbG9jayAmJiAhb2JqQ29u
dGFpbmluZ0Jsb2NrLT5pc1JlbmRlck5hbWVkRmxvd1RocmVhZCgpKSB7CiAgICAgICAgICAgICAv
LyBDaGVjayBpZiB0aGlzIG9iamVjdCBpcyBpbiBhIGRpZmZlcmVudCByZWdpb24uCi0gICAgICAg
ICAgICBSZW5kZXJSZWdpb24qIHBhcmVudFN0YXJ0UmVnaW9uID0gMDsKLSAgICAgICAgICAgIFJl
bmRlclJlZ2lvbiogcGFyZW50RW5kUmVnaW9uID0gMDsKLSAgICAgICAgICAgIGdldFJlZ2lvblJh
bmdlRm9yQm94KG9iakNvbnRhaW5pbmdCbG9jaywgcGFyZW50U3RhcnRSZWdpb24sIHBhcmVudEVu
ZFJlZ2lvbik7Ci0gICAgICAgICAgICBpZiAocGFyZW50U3RhcnRSZWdpb24gJiYgcGFyZW50U3Rh
cnRSZWdpb24gIT0gc3RhcnRSZWdpb24pIHsKKyAgICAgICAgICAgIFJlbmRlclJlZ2lvbiogcGFy
ZW50U3RhcnRSZWdpb24gPSBudWxscHRyOworICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiBwYXJl
bnRFbmRSZWdpb24gPSBudWxscHRyOworICAgICAgICAgICAgaWYgKGdldFJlZ2lvblJhbmdlRm9y
Qm94KG9iakNvbnRhaW5pbmdCbG9jaywgcGFyZW50U3RhcnRSZWdpb24sIHBhcmVudEVuZFJlZ2lv
bikgJiYgcGFyZW50U3RhcnRSZWdpb24gIT0gc3RhcnRSZWdpb24pIHsKICAgICAgICAgICAgICAg
ICB3YXNDb21wdXRlZFJlbGF0aXZlVG9PdGhlclJlZ2lvbiA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC02MTUsMTQgKzYxMSwxOCBAQCB2b2lkIFJlbmRl
ckZsb3dUaHJlYWQ6OnJlbW92ZVJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyQm94KiBib3gpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uOwot
ICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uOwotICAgIGdldFJlZ2lvblJhbmdlRm9yQm94KGJv
eCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7Ci0KLSAgICBmb3IgKGF1dG8mIHJlZ2lvbiA6IG1f
cmVnaW9uTGlzdCkgewotICAgICAgICByZWdpb24tPnJlbW92ZVJlbmRlckJveFJlZ2lvbkluZm8o
Ym94KTsKLSAgICAgICAgaWYgKHJlZ2lvbiA9PSBlbmRSZWdpb24pCi0gICAgICAgICAgICBicmVh
azsKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICBSZW5kZXJS
ZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgaWYgKGdldFJlZ2lvblJhbmdlRm9yQm94
KGJveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpIHsKKyAgICAgICAgZm9yIChhdXRvIGl0ZXIg
PSBtX3JlZ2lvbkxpc3QuZmluZChzdGFydFJlZ2lvbiksIGVuZCA9IG1fcmVnaW9uTGlzdC5lbmQo
KTsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdp
b24gPSAqaXRlcjsKKyAgICAgICAgICAgIHJlZ2lvbi0+cmVtb3ZlUmVuZGVyQm94UmVnaW9uSW5m
byhib3gpOworICAgICAgICAgICAgaWYgKHJlZ2lvbiA9PSBlbmRSZWdpb24pCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKGF1dG8m
IHJlZ2lvbiA6IG1fcmVnaW9uTGlzdCkKKyAgICAgICAgICAgIHJlZ2lvbi0+cmVtb3ZlUmVuZGVy
Qm94UmVnaW9uSW5mbyhib3gpOwogICAgIH0KIAogI2lmbmRlZiBOREVCVUcKQEAgLTY1MiwxMCAr
NjUyLDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdp
b25zRm9yQmxvY2soY29uc3QgUmVuZGVyQmxvY2sqIGIKICAgICBpZiAocmVsYXlvdXRDaGlsZHJl
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbjsKLSAg
ICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbjsKLSAgICBnZXRSZWdpb25SYW5nZUZvckJveChibG9j
aywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7Ci0KICAgICAvLyBOb3QgbmVjZXNzYXJ5IGZvciB0
aGUgZmxvdyB0aHJlYWQsIHNpbmNlIHdlIGFscmVhZHkgY29tcHV0ZWQgdGhlIGNvcnJlY3QgaW5m
byBmb3IgaXQuCiAgICAgLy8gSWYgdGhlIHJlZ2lvbnMgaGF2ZSBjaGFuZ2VkIGludmFsaWRhdGUg
dGhlIGNoaWxkcmVuLgogICAgIGlmIChibG9jayA9PSB0aGlzKSB7CkBAIC02NjMsNyArNjU5LDEy
IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6bG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9uc0Zv
ckJsb2NrKGNvbnN0IFJlbmRlckJsb2NrKiBiCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBmb3IgKGF1dG8mIHJlZ2lvbiA6IG1fcmVnaW9uTGlzdCkgeworICAgIFJlbmRlclJlZ2lvbiog
c3RhcnRSZWdpb24gPSBudWxscHRyOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gbnVs
bHB0cjsKKyAgICBnZXRSZWdpb25SYW5nZUZvckJveChibG9jaywgc3RhcnRSZWdpb24sIGVuZFJl
Z2lvbik7CisKKyAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVn
aW9uKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Cisg
ICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CiAgICAgICAgIEFTU0VSVCghcmVn
aW9uLT5uZWVkc0xheW91dCgpIHx8IHJlZ2lvbi0+aXNSZW5kZXJSZWdpb25TZXQoKSk7CiAKICAg
ICAgICAgLy8gV2UgaGF2ZSBubyBpbmZvcm1hdGlvbiBjb21wdXRlZCBmb3IgdGhpcyByZWdpb24g
c28gd2UgbmVlZCB0byBkbyBpdC4KQEAgLTc3MSwyNSArNzcyLDY0IEBAIHZvaWQgUmVuZGVyRmxv
d1RocmVhZDo6c2V0UmVnaW9uUmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94KiBib3gsIFJlbmRl
clJlZ2lvbioKICAgICByYW5nZS5zZXRSYW5nZShzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKIH0K
IAotdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpnZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5k
ZXJCb3gqIGJveCwgUmVuZGVyUmVnaW9uKiYgc3RhcnRSZWdpb24sIFJlbmRlclJlZ2lvbiomIGVu
ZFJlZ2lvbikgY29uc3QKK2Jvb2wgUmVuZGVyRmxvd1RocmVhZDo6Z2V0Q2FjaGVkUmVnaW9uUmFu
Z2VGb3JCb3goY29uc3QgUmVuZGVyQm94KiBib3gsIFJlbmRlclJlZ2lvbiomIHN0YXJ0UmVnaW9u
LCBSZW5kZXJSZWdpb24qJiBlbmRSZWdpb24pIGNvbnN0CiB7Ci0gICAgc3RhcnRSZWdpb24gPSBl
bmRSZWdpb24gPSAwOwotICAgIGF1dG8gaXQgPSBtX3JlZ2lvblJhbmdlTWFwLmZpbmQoYm94KTsK
KyAgICBBU1NFUlQoaGFzVmFsaWRSZWdpb25JbmZvKCkpOworICAgIEFTU0VSVCgoc3RhcnRSZWdp
b24gPT0gbnVsbHB0cikgJiYgKGVuZFJlZ2lvbiA9PSBudWxscHRyKSk7CiAKKyAgICBhdXRvIGl0
ID0gbV9yZWdpb25SYW5nZU1hcC5maW5kKGJveCk7CiAgICAgaWYgKGl0ICE9IG1fcmVnaW9uUmFu
Z2VNYXAuZW5kKCkpIHsKICAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uUmFuZ2UmIHJhbmdlID0g
aXQtPnZhbHVlOwogICAgICAgICBzdGFydFJlZ2lvbiA9IHJhbmdlLnN0YXJ0UmVnaW9uKCk7CiAg
ICAgICAgIGVuZFJlZ2lvbiA9IHJhbmdlLmVuZFJlZ2lvbigpOwogICAgICAgICBBU1NFUlQobV9y
ZWdpb25MaXN0LmNvbnRhaW5zKHN0YXJ0UmVnaW9uKSAmJiBtX3JlZ2lvbkxpc3QuY29udGFpbnMo
ZW5kUmVnaW9uKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCiAgICAgSW5saW5lRWxlbWVudEJveCogYm94V3JhcHBlciA9IGJveC0+aW5saW5lQm94V3Jh
cHBlcigpOwotICAgIGlmIChib3hXcmFwcGVyKSB7Ci0gICAgICAgIGNvbnN0IFJvb3RJbmxpbmVC
b3gmIGJveFdyYXBwZXJSb290SW5saW5lQm94ID0gIGJveFdyYXBwZXItPnJvb3QoKTsKLSAgICAg
ICAgc3RhcnRSZWdpb24gPSBlbmRSZWdpb24gPSBib3hXcmFwcGVyUm9vdElubGluZUJveC5jb250
YWluaW5nUmVnaW9uKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoYm94V3JhcHBlciAmJiBi
b3hXcmFwcGVyLT5yb290KCkuY29udGFpbmluZ1JlZ2lvbigpKSB7CisgICAgICAgIHN0YXJ0UmVn
aW9uID0gZW5kUmVnaW9uID0gYm94V3JhcHBlci0+cm9vdCgpLmNvbnRhaW5pbmdSZWdpb24oKTsK
KyAgICAgICAgQVNTRVJUKG1fcmVnaW9uTGlzdC5jb250YWlucyhzdGFydFJlZ2lvbikgJiYgbV9y
ZWdpb25MaXN0LmNvbnRhaW5zKGVuZFJlZ2lvbikpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyRmxvd1RocmVhZDo6Z2V0
UmVnaW9uUmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94KiBib3gsIFJlbmRlclJlZ2lvbiomIHN0
YXJ0UmVnaW9uLCBSZW5kZXJSZWdpb24qJiBlbmRSZWdpb24pIGNvbnN0Cit7CisgICAgc3RhcnRS
ZWdpb24gPSBlbmRSZWdpb24gPSBudWxscHRyOworICAgIGlmICghaGFzVmFsaWRSZWdpb25JbmZv
KCkpIC8vIFdlIGNsZWFyIHRoZSByYW5nZXMgd2hlbiB3ZSBpbnZhbGlkYXRlIHRoZSByZWdpb25z
LgorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUcnkgdG8gZmluZCB0aGUgcmFuZ2Ug
ZnJvbSB0aGUgY2FjaGVkIGluZm9ybWF0aW9uCisgICAgaWYgKGdldENhY2hlZFJlZ2lvblJhbmdl
Rm9yQm94KGJveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgLy8gSWYgdGhlIGZsb3cgdGhyZWFkIGRpZCBub3QgZmluaXNoIGl0cyBsYXlvdXQs
IGRvIG5vdCBjb21wdXRlIHRoZSByZWdpb24gcmFuZ2UgZm9yIHRoZSBib3hlcworICAgIGlmIChu
ZWVkc0xheW91dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBXZSdyZSBwYXN0
IGxheW91dCwgY2hlY2sgdGhlIHJhbmdlIG9mIGNvbnRhaW5pbmcgYmxvY2sKKyAgICBSZW5kZXJC
bG9jayogY2IgPSBib3gtPmNvbnRhaW5pbmdCbG9jaygpOworICAgIFJlbmRlclJlZ2lvbiogY2JT
dGFydFJlZ2lvbiA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVnaW9uKiBjYkVuZFJlZ2lvbiA9IG51
bGxwdHI7CisgICAgd2hpbGUgKGNiKSB7CisgICAgICAgIGlmIChnZXRDYWNoZWRSZWdpb25SYW5n
ZUZvckJveChjYiwgY2JTdGFydFJlZ2lvbiwgY2JFbmRSZWdpb24pKSB7CisgICAgICAgICAgICBz
dGFydFJlZ2lvbiA9IGNiU3RhcnRSZWdpb247CisgICAgICAgICAgICBlbmRSZWdpb24gPSBjYkVu
ZFJlZ2lvbjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNi
ID0gY2ItPmNvbnRhaW5pbmdCbG9jaygpOwogICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpoYXNSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5k
ZXJCb3gqIGJveCkgY29uc3QKK3sKKyAgICBBU1NFUlQoYm94KTsKKyAgICByZXR1cm4gbV9yZWdp
b25SYW5nZU1hcC5jb250YWlucyhib3gpOwogfQogCiB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmFw
cGx5QnJlYWtBZnRlckNvbnRlbnQoTGF5b3V0VW5pdCBjbGllbnRIZWlnaHQpCkBAIC04MjIsMTcg
Kzg2MiwxNiBAQCBib29sIFJlbmRlckZsb3dUaHJlYWQ6Om9iamVjdFNob3VsZFBhaW50SW5GbG93
UmVnaW9uKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LAogICAgIFJlbmRlckZsb3dUaHJlYWQq
IGZsb3dUaHJlYWQgPSBvYmplY3QtPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKICAgICBp
ZiAoZmxvd1RocmVhZCAhPSB0aGlzKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAo
IW1fcmVnaW9uTGlzdC5jb250YWlucyhjb25zdF9jYXN0PFJlbmRlclJlZ2lvbio+KHJlZ2lvbikp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgUmVuZGVyQm94KiBlbmNsb3NpbmdC
b3ggPSBvYmplY3QtPmVuY2xvc2luZ0JveCgpOwotICAgIFJlbmRlclJlZ2lvbiogZW5jbG9zaW5n
Qm94U3RhcnRSZWdpb24gPSAwOwotICAgIFJlbmRlclJlZ2lvbiogZW5jbG9zaW5nQm94RW5kUmVn
aW9uID0gMDsKLSAgICBnZXRSZWdpb25SYW5nZUZvckJveChlbmNsb3NpbmdCb3gsIGVuY2xvc2lu
Z0JveFN0YXJ0UmVnaW9uLCBlbmNsb3NpbmdCb3hFbmRSZWdpb24pOwotICAgIAogICAgIC8vIElm
IHRoZSBib3ggaGFzIG5vIHJhbmdlLCBkbyBub3QgY2hlY2sgcmVnaW9uSW5SYW5nZS4gQm94ZXMg
aW5zaWRlIGlubGluZXMgZG8gbm90IGdldCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgdGhlIGNv
bnRhaW5pbmcgUm9vdElubGluZUJveCB3aWxsIGFib3J0IHdoZW4gdHJ5aW5nIHRvIHBhaW50IGlu
c2lkZSB0aGUgd3JvbmcgcmVnaW9uLgotICAgIGlmIChlbmNsb3NpbmdCb3hTdGFydFJlZ2lvbiAm
JiBlbmNsb3NpbmdCb3hFbmRSZWdpb24gJiYgIXJlZ2lvbkluUmFuZ2UocmVnaW9uLCBlbmNsb3Np
bmdCb3hTdGFydFJlZ2lvbiwgZW5jbG9zaW5nQm94RW5kUmVnaW9uKSkKKyAgICBSZW5kZXJSZWdp
b24qIGVuY2xvc2luZ0JveFN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICBSZW5kZXJSZWdpb24q
IGVuY2xvc2luZ0JveEVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgaWYgKGdldFJlZ2lvblJhbmdl
Rm9yQm94KG9iamVjdC0+ZW5jbG9zaW5nQm94KCksIGVuY2xvc2luZ0JveFN0YXJ0UmVnaW9uLCBl
bmNsb3NpbmdCb3hFbmRSZWdpb24pCisgICAgICAgICYmICFyZWdpb25JblJhbmdlKHJlZ2lvbiwg
ZW5jbG9zaW5nQm94U3RhcnRSZWdpb24sIGVuY2xvc2luZ0JveEVuZFJlZ2lvbikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKICAgICByZXR1cm4gb2JqZWN0LT5pc0JveCgpIHx8IG9iamVj
dC0+aXNSZW5kZXJJbmxpbmUoKTsKQEAgLTg0OSwxMCArODg4LDExIEBAIGJvb2wgUmVuZGVyRmxv
d1RocmVhZDo6b2JqZWN0SW5GbG93UmVnaW9uKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBj
b25zdCBSZW5kCiAgICAgaWYgKCFtX3JlZ2lvbkxpc3QuY29udGFpbnMoY29uc3RfY2FzdDxSZW5k
ZXJSZWdpb24qPihyZWdpb24pKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVuZGVy
Qm94KiBlbmNsb3NpbmdCb3ggPSBvYmplY3QtPmVuY2xvc2luZ0JveCgpOwotICAgIFJlbmRlclJl
Z2lvbiogZW5jbG9zaW5nQm94U3RhcnRSZWdpb24gPSAwOwotICAgIFJlbmRlclJlZ2lvbiogZW5j
bG9zaW5nQm94RW5kUmVnaW9uID0gMDsKLSAgICBnZXRSZWdpb25SYW5nZUZvckJveChlbmNsb3Np
bmdCb3gsIGVuY2xvc2luZ0JveFN0YXJ0UmVnaW9uLCBlbmNsb3NpbmdCb3hFbmRSZWdpb24pOwor
ICAgIFJlbmRlclJlZ2lvbiogZW5jbG9zaW5nQm94U3RhcnRSZWdpb24gPSBudWxscHRyOworICAg
IFJlbmRlclJlZ2lvbiogZW5jbG9zaW5nQm94RW5kUmVnaW9uID0gbnVsbHB0cjsKKyAgICBpZiAo
IWdldFJlZ2lvblJhbmdlRm9yQm94KG9iamVjdC0+ZW5jbG9zaW5nQm94KCksIGVuY2xvc2luZ0Jv
eFN0YXJ0UmVnaW9uLCBlbmNsb3NpbmdCb3hFbmRSZWdpb24pKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICBpZiAoIXJlZ2lvbkluUmFuZ2UocmVnaW9uLCBlbmNsb3NpbmdCb3hTdGFydFJl
Z2lvbiwgZW5jbG9zaW5nQm94RW5kUmVnaW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0xMjYzLDkgKzEzMDMsMTAgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpmbGlwRm9yV3JpdGlu
Z01vZGVMb2NhbENvb3JkaW5hdGVzKExheW91dFJlY3QmIHJlY3QpIGNvbnMKIAogdm9pZCBSZW5k
ZXJGbG93VGhyZWFkOjphZGRSZWdpb25zVmlzdWFsRWZmZWN0T3ZlcmZsb3coY29uc3QgUmVuZGVy
Qm94KiBib3gpCiB7Ci0gICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7Ci0gICAgUmVu
ZGVyUmVnaW9uKiBlbmRSZWdpb24gPSAwOwotICAgIGdldFJlZ2lvblJhbmdlRm9yQm94KGJveCwg
c3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CisgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9
IG51bGxwdHI7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRyOworICAgIGlm
ICghZ2V0UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSkKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRvIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuZmluZChz
dGFydFJlZ2lvbiksIGVuZCA9IG1fcmVnaW9uTGlzdC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRl
cikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwpAQCAtMTI4Miw5ICsx
MzIzLDEwIEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRkUmVnaW9uc1Zpc3VhbEVmZmVjdE92
ZXJmbG93KGNvbnN0IFJlbmRlckJveCogYm94KQogCiB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmFk
ZFJlZ2lvbnNWaXN1YWxPdmVyZmxvd0Zyb21UaGVtZShjb25zdCBSZW5kZXJCbG9jayogYmxvY2sp
CiB7Ci0gICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7Ci0gICAgUmVuZGVyUmVnaW9u
KiBlbmRSZWdpb24gPSAwOwotICAgIGdldFJlZ2lvblJhbmdlRm9yQm94KGJsb2NrLCBzdGFydFJl
Z2lvbiwgZW5kUmVnaW9uKTsKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0
cjsKKyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgaWYgKCFnZXRS
ZWdpb25SYW5nZUZvckJveChibG9jaywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpCisgICAgICAg
IHJldHVybjsKIAogICAgIGZvciAoYXV0byBpdGVyID0gbV9yZWdpb25MaXN0LmZpbmQoc3RhcnRS
ZWdpb24pLCBlbmQgPSBtX3JlZ2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsK
ICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKQEAgLTEzMDMsMTMgKzEzNDUs
MTUgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjphZGRSZWdpb25zVmlzdWFsT3ZlcmZsb3dGcm9t
VGhlbWUoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2MKIAogdm9pZCBSZW5kZXJGbG93VGhyZWFkOjph
ZGRSZWdpb25zT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBib3gsIGNvbnN0IFJl
bmRlckJveCogY2hpbGQsIGNvbnN0IExheW91dFNpemUmIGRlbHRhKQogewotICAgIFJlbmRlclJl
Z2lvbiogc3RhcnRSZWdpb24gPSAwOwotICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gMDsK
LSAgICBnZXRSZWdpb25SYW5nZUZvckJveChjaGlsZCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7
CisgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVn
aW9uKiBlbmRSZWdpb24gPSBudWxscHRyOworICAgIGlmICghZ2V0UmVnaW9uUmFuZ2VGb3JCb3go
Y2hpbGQsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKQorICAgICAgICByZXR1cm47CiAKLSAgICBS
ZW5kZXJSZWdpb24qIGNvbnRhaW5lclN0YXJ0UmVnaW9uID0gMDsKLSAgICBSZW5kZXJSZWdpb24q
IGNvbnRhaW5lckVuZFJlZ2lvbiA9IDA7Ci0gICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBj
b250YWluZXJTdGFydFJlZ2lvbiwgY29udGFpbmVyRW5kUmVnaW9uKTsKKyAgICBSZW5kZXJSZWdp
b24qIGNvbnRhaW5lclN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICBSZW5kZXJSZWdpb24qIGNv
bnRhaW5lckVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgaWYgKCFnZXRSZWdpb25SYW5nZUZvckJv
eChib3gsIGNvbnRhaW5lclN0YXJ0UmVnaW9uLCBjb250YWluZXJFbmRSZWdpb24pKQorICAgICAg
ICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKHN0YXJ0
UmVnaW9uKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7
CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CkBAIC0xMzM5LDkgKzEzODMs
MTAgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjphZGRSZWdpb25zT3ZlcmZsb3dGcm9tQ2hpbGQo
Y29uc3QgUmVuZGVyQm94KiBib3gsIGNvbnN0IFIKICAgICAKIHZvaWQgUmVuZGVyRmxvd1RocmVh
ZDo6YWRkUmVnaW9uc0xheW91dE92ZXJmbG93KGNvbnN0IFJlbmRlckJveCogYm94LCBjb25zdCBM
YXlvdXRSZWN0JiBsYXlvdXRPdmVyZmxvdykKIHsKLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVn
aW9uID0gMDsKLSAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7Ci0gICAgZ2V0UmVnaW9u
UmFuZ2VGb3JCb3goYm94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKKyAgICBSZW5kZXJSZWdp
b24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9
IG51bGxwdHI7CisgICAgaWYgKCFnZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9u
LCBlbmRSZWdpb24pKQorICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8gaXRlciA9IG1f
cmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVnaW9uKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0
ZXI7CkBAIC0xMzczLDkgKzE0MTgsMTAgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjphZGRSZWdp
b25zVmlzdWFsT3ZlcmZsb3coY29uc3QgUmVuZGVyQm94KiBib3gsIGNvbnN0IExheW8KIAogdm9p
ZCBSZW5kZXJGbG93VGhyZWFkOjpjbGVhclJlZ2lvbnNPdmVyZmxvdyhjb25zdCBSZW5kZXJCb3gq
IGJveCkKIHsKLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gMDsKLSAgICBSZW5kZXJS
ZWdpb24qIGVuZFJlZ2lvbiA9IDA7Ci0gICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBzdGFy
dFJlZ2lvbiwgZW5kUmVnaW9uKTsKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVs
bHB0cjsKKyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgaWYgKCFn
ZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKQorICAgICAg
ICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKHN0YXJ0
UmVnaW9uKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7
CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAppbmRleCAyM2QwZjI1Li4xZDZmYzUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKQEAgLTEyNSw3ICsx
MjUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVQcmV2aW91c1JlZ2lvbkNvdW50KCkgeyBt
X3ByZXZpb3VzUmVnaW9uQ291bnQgPSBtX3JlZ2lvbkxpc3Quc2l6ZSgpOyB9OwogCiAgICAgdm9p
ZCBzZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqLCBSZW5kZXJSZWdpb24qLCBS
ZW5kZXJSZWdpb24qKTsKLSAgICB2b2lkIGdldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRl
ckJveCosIFJlbmRlclJlZ2lvbiomIHN0YXJ0UmVnaW9uLCBSZW5kZXJSZWdpb24qJiBlbmRSZWdp
b24pIGNvbnN0OworICAgIGJvb2wgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94
KiwgUmVuZGVyUmVnaW9uKiYgc3RhcnRSZWdpb24sIFJlbmRlclJlZ2lvbiomIGVuZFJlZ2lvbikg
Y29uc3Q7CisgICAgYm9vbCBoYXNSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqKSBj
b25zdDsKIAogICAgIC8vIENoZWNrIGlmIHRoZSBvYmplY3QgaXMgaW4gcmVnaW9uIGFuZCB0aGUg
cmVnaW9uIGlzIHBhcnQgb2YgdGhpcyBmbG93IHRocmVhZC4KICAgICBib29sIG9iamVjdEluRmxv
d1JlZ2lvbihjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJSZWdpb24qKSBjb25zdDsK
QEAgLTI0Niw2ICsyNDcsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBpbmxpbmUgY29uc3QgUmVuZGVy
Qm94KiBjdXJyZW50QWN0aXZlUmVuZGVyQm94KCkgY29uc3Q7CiAKKyAgICBib29sIGdldENhY2hl
ZFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCogYm94LCBSZW5kZXJSZWdpb24qJiBz
dGFydFJlZ2lvbiwgUmVuZGVyUmVnaW9uKiYgZW5kUmVnaW9uKSBjb25zdDsKKwogICAgIFJlbmRl
clJlZ2lvbkxpc3QgbV9yZWdpb25MaXN0OwogICAgIHVuc2lnbmVkIHNob3J0IG1fcHJldmlvdXNS
ZWdpb25Db3VudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcApp
bmRleCAyYzRlNTY2Li4zMTJlMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVnaW9uLmNwcApAQCAtNDc1LDIzICs0NzUsMjQgQEAgdm9pZCBSZW5kZXJSZWdpb246OmVuc3Vy
ZU92ZXJmbG93Rm9yQm94KGNvbnN0IFJlbmRlckJveCogYm94LCBSZWZQdHI8UmVuZGVyT3ZlcmYK
IAogTGF5b3V0UmVjdCBSZW5kZXJSZWdpb246OnJlY3RGbG93UG9ydGlvbkZvckJveChjb25zdCBS
ZW5kZXJCb3gqIGJveCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAgICBSZW5k
ZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gMDsKLSAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9
IDA7Ci0gICAgbV9mbG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVn
aW9uLCBlbmRSZWdpb24pOwotCiAgICAgTGF5b3V0UmVjdCBtYXBwZWRSZWN0ID0gbV9mbG93VGhy
ZWFkLT5tYXBGcm9tTG9jYWxUb0Zsb3dUaHJlYWQoYm94LCByZWN0KTsKLSAgICBpZiAoZmxvd1Ro
cmVhZCgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIGlmICh0aGlzICE9
IHN0YXJ0UmVnaW9uKQotICAgICAgICAgICAgbWFwcGVkUmVjdC5zaGlmdFlFZGdlVG8oc3RkOjpt
YXg8TGF5b3V0VW5pdD4obG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCksIG1hcHBlZFJl
Y3QueSgpKSk7CiAKLSAgICAgICAgaWYgKHRoaXMgIT0gZW5kUmVnaW9uKQotICAgICAgICAgICAg
bWFwcGVkUmVjdC5zZXRIZWlnaHQoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgc3RkOjptaW48TGF5
b3V0VW5pdD4obG9naWNhbEJvdHRvbUZvckZsb3dUaHJlYWRDb250ZW50KCkgLSBtYXBwZWRSZWN0
LnkoKSwgbWFwcGVkUmVjdC5oZWlnaHQoKSkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
dGhpcyAhPSBzdGFydFJlZ2lvbikKLSAgICAgICAgICAgIG1hcHBlZFJlY3Quc2hpZnRYRWRnZVRv
KHN0ZDo6bWF4PExheW91dFVuaXQ+KGxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpLCBt
YXBwZWRSZWN0LngoKSkpOwotICAgICAgICAgICAgCi0gICAgICAgIGlmICh0aGlzICE9IGVuZFJl
Z2lvbikKLSAgICAgICAgICAgIG1hcHBlZFJlY3Quc2V0V2lkdGgoc3RkOjptYXg8TGF5b3V0VW5p
dD4oMCwgc3RkOjptaW48TGF5b3V0VW5pdD4obG9naWNhbEJvdHRvbUZvckZsb3dUaHJlYWRDb250
ZW50KCkgLSBtYXBwZWRSZWN0LngoKSwgbWFwcGVkUmVjdC53aWR0aCgpKSkpOworICAgIFJlbmRl
clJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVn
aW9uID0gbnVsbHB0cjsKKyAgICBpZiAobV9mbG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJv
eChib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKSB7CisgICAgICAgIGlmIChmbG93VGhyZWFk
KCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKKyAgICAgICAgICAgIGlmICh0aGlzICE9
IHN0YXJ0UmVnaW9uKQorICAgICAgICAgICAgICAgIG1hcHBlZFJlY3Quc2hpZnRZRWRnZVRvKHN0
ZDo6bWF4PExheW91dFVuaXQ+KGxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpLCBtYXBw
ZWRSZWN0LnkoKSkpOworCisgICAgICAgICAgICBpZiAodGhpcyAhPSBlbmRSZWdpb24pCisgICAg
ICAgICAgICAgICAgbWFwcGVkUmVjdC5zZXRIZWlnaHQoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwg
c3RkOjptaW48TGF5b3V0VW5pdD4obG9naWNhbEJvdHRvbUZvckZsb3dUaHJlYWRDb250ZW50KCkg
LSBtYXBwZWRSZWN0LnkoKSwgbWFwcGVkUmVjdC5oZWlnaHQoKSkpKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGlmICh0aGlzICE9IHN0YXJ0UmVnaW9uKQorICAgICAgICAgICAgICAg
IG1hcHBlZFJlY3Quc2hpZnRYRWRnZVRvKHN0ZDo6bWF4PExheW91dFVuaXQ+KGxvZ2ljYWxUb3BG
b3JGbG93VGhyZWFkQ29udGVudCgpLCBtYXBwZWRSZWN0LngoKSkpOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKHRoaXMgIT0gZW5kUmVnaW9uKQorICAgICAgICAgICAgICAgIG1h
cHBlZFJlY3Quc2V0V2lkdGgoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgc3RkOjptaW48TGF5b3V0
VW5pdD4obG9naWNhbEJvdHRvbUZvckZsb3dUaHJlYWRDb250ZW50KCkgLSBtYXBwZWRSZWN0Lngo
KSwgbWFwcGVkUmVjdC53aWR0aCgpKSkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHNo
b3VsZENsaXBGbG93VGhyZWFkQ29udGVudCgpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226427</attachid>
            <date>2014-03-11 08:07:02 -0700</date>
            <delta_ts>2014-03-11 09:08:56 -0700</delta_ts>
            <desc>Patch 3</desc>
            <filename>WIP3.patch</filename>
            <type>text/plain</type>
            <size>36648</size>
            <attacher name="Mihnea Ovidenie">mihnea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9pbmxpbmUtYmxvY2stZmxvd2Vk
LWluLXJlZ2lvbnMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9pbmxp
bmUtYmxvY2stZmxvd2VkLWluLXJlZ2lvbnMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xYmMxMGRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2lubGluZS1ibG9jay1mbG93ZWQtaW4tcmVnaW9ucy1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgICNyZWdpb24xIHsgcG9zaXRpb246IGFic29s
dXRlOyB0b3A6IDE1MHB4OyBsZWZ0OiAxMDBweDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4
OyB9CisgICAgICAgICAgICAjY29udGVudDEgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJhY2tn
cm91bmQtY29sb3I6IHJlZDsgfQorCisgICAgICAgICAgICAjZGl2MSwgI2RpdjIgeyB3aWR0aDog
MTAwcHg7IGhlaWdodDogMTAwcHg7IH0KKyAgICAgICAgICAgICNkaXYxIHsgYmFja2dyb3VuZC1j
b2xvcjogb3JhbmdlOyB9CisgICAgICAgICAgICAjZGl2MiB7IGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOyB9CisgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAg
ICA8cD5UZXN0IHRoYXQgYW4gaW5saW5lIGJsb2NrIGNvbGxlY3RlZCBpbiBhIG5hbWVkIGZsb3cg
d2l0aCAyIHJlZ2lvbnMgaXMgcHJvcGVybHkgZGlzcGxheWVkLjwvcD4KKyAgICAgICAgPHA+VGhl
IGlubGluZSBibG9jayBzaG91bGQgYmUgZGlzcGxheWVkIG9ubHkgaW4gdGhlIGZpcnN0IHJlZ2lv
bi48L3A+CisgICAgICAgIDxwPk9uIHN1Y2Nlc3MsIHlvdSBzaG91bGQgc2VlIDIgcmVjdGFuZ2xl
cywgdGhlIGZpcnN0IG9uZSBvcmFuZ2UgYW5kIHRoZSBzZWNvbmQgb25lIGdyZWVuIGFuZCBubyBy
ZWQuPC9wPgorICAgICAgICA8ZGl2IGlkPSJyZWdpb24xIj4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnRlbnQxIj4KKyAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkaXYxIj48L2Rpdj4KKyAgICAg
ICAgICAgICAgICA8ZGl2IGlkPSJkaXYyIj48L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2NrLWZsb3dlZC1pbi1yZWdpb25zLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2NrLWZsb3dlZC1pbi1yZWdpb25zLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc3MDE2YgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9pbmxpbmUtYmxvY2stZmxvd2VkLWluLXJl
Z2lvbnMuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAjcmVnaW9uMSB7IC13ZWJraXQt
Zmxvdy1mcm9tOiBmbG93OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTUwcHg7IGxlZnQ6IDEw
MHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IH0KKyAgICAgICAgICAgICNyZWdpb24y
IHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxNTBw
eDsgbGVmdDogMzAwcHg7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgfQorCisgICAgICAg
ICAgICAjY29udGVudDEgeyAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsgZGlzcGxheTogaW5saW5l
LWJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0KKworICAgICAgICAgICAgI2RpdjEsICNk
aXYyIHsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyB9CisgICAgICAgICAgICAjZGl2MSB7
IGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsgfQorICAgICAgICAgICAgI2RpdjIgeyBiYWNrZ3Jv
dW5kLWNvbG9yOiBncmVlbjsgfQorICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keT4KKyAgICAgICAgPHA+VGVzdCB0aGF0IGFuIGlubGluZSBibG9jayBjb2xsZWN0ZWQgaW4g
YSBuYW1lZCBmbG93IHdpdGggMiByZWdpb25zIGlzIHByb3Blcmx5IGRpc3BsYXllZC48L3A+Cisg
ICAgICAgIDxwPlRoZSBpbmxpbmUgYmxvY2sgc2hvdWxkIGJlIGRpc3BsYXllZCBvbmx5IGluIHRo
ZSBmaXJzdCByZWdpb24uPC9wPgorICAgICAgICA8cD5PbiBzdWNjZXNzLCB5b3Ugc2hvdWxkIHNl
ZSAyIHJlY3RhbmdsZXMsIHRoZSBmaXJzdCBvbmUgb3JhbmdlIGFuZCB0aGUgc2Vjb25kIG9uZSBn
cmVlbiBhbmQgbm8gcmVkLjwvcD4KKyAgICAgICAgPGRpdiBpZD0icmVnaW9uMSI+PC9kaXY+Cisg
ICAgICAgIDxkaXYgaWQ9InJlZ2lvbjIiPjwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJjb250ZW50
MSI+CisgICAgICAgICAgICA8ZGl2IGlkPSJkaXYxIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYg
aWQ9ImRpdjIiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2NrLWlubGluZS1j
aGlsZHJlbi1mbG93ZWQtaW4tcmVnaW9ucy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2lubGluZS1ibG9jay1pbmxpbmUtY2hpbGRyZW4tZmxvd2VkLWluLXJlZ2lvbnMt
ZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTVhNzFi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2lubGluZS1ibG9j
ay1pbmxpbmUtY2hpbGRyZW4tZmxvd2VkLWluLXJlZ2lvbnMtZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAjcmVnaW9uMSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAx
NTBweDsgbGVmdDogMTAwcHg7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgfQorICAgICAg
ICAgICAgI2NvbnRlbnQxIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9y
OiByZWQ7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAyNTBweDsgfQorCisgICAgICAgICAgICAjaW5z
aWRlMSB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyB3
aWR0aDogMTAwcHg7IGhlaWdodDogMjUwcHg7fQorICAgICAgICAgICAgI2luc2lkZTIgeyBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB3aWR0aDogMTAwcHg7
IGhlaWdodDogMjAwcHg7IH0KKyAgICAgICAgICAgICNpbnNpZGUzIHsgZGlzcGxheTogaW5saW5l
LWJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTUw
cHg7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAg
IDxwPlRlc3QgdGhhdCBhbiBpbmxpbmUgYmxvY2sgd2l0aCBpbmxpbmUgYmxvY2sgY2hpbGRyZW4g
aXMgY29ycmVjdGx5IGRpc3BsYXllZCBpbiBhIHJlZ2lvbi48L3A+CisgICAgICAgIDxwPk9uIHN1
Y2Nlc3MgeW91IHNob3VsZCBzZWUgYSBibHVlIHJlY3RhbmdsZSwgZm9sbG93ZWQgYnkgYSBncmVl
biByZWN0YW5nbGUgYW5kIGFuIG9yYW5nZSByZWN0YW5nbGUuPC9wPgorICAgICAgICA8cD5Zb3Ug
c2hvdWxkIG5vdCBzZWUgYW55IHJlZCBiZWxvdy48L3A+CisgICAgICAgIDxkaXYgaWQ9InJlZ2lv
bjEiPgorICAgICAgICAgICAgPGRpdiBpZD0iY29udGVudDEiPgorICAgICAgICAgICAgICAgIDxk
aXYgaWQ9Imluc2lkZTEiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpbnNpZGUyIj4K
KyAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Imluc2lkZTMiPjwvZGl2PgorICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAg
IDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2NrLWlubGluZS1jaGlsZHJlbi1m
bG93ZWQtaW4tcmVnaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2lubGluZS1i
bG9jay1pbmxpbmUtY2hpbGRyZW4tZmxvd2VkLWluLXJlZ2lvbnMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjY3MWI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2lubGluZS1ibG9jay1pbmxpbmUtY2hpbGRyZW4tZmxvd2VkLWlu
LXJlZ2lvbnMuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAjcmVnaW9uMSB7IC13ZWJr
aXQtZmxvdy1mcm9tOiBmbG93OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTUwcHg7IGxlZnQ6
IDEwMHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IH0KKyAgICAgICAgICAgICNjb250
ZW50MSB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJh
Y2tncm91bmQtY29sb3I6IHJlZDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDI1MHB4OyB9CisKKyAg
ICAgICAgICAgICNpbnNpZGUxIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBiYWNrZ3JvdW5kLWNv
bG9yOiBvcmFuZ2U7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAyNTBweDt9CisgICAgICAgICAgICAj
aW5zaWRlMiB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47
IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAyMDBweDsgfQorICAgICAgICAgICAgI2luc2lkZTMgeyBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7IHdpZHRoOiAxMDBw
eDsgaGVpZ2h0OiAxNTBweDsgfQorICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keT4KKyAgICAgICAgPHA+VGVzdCB0aGF0IGFuIGlubGluZSBibG9jayB3aXRoIGlubGluZSBi
bG9jayBjaGlsZHJlbiBpcyBjb3JyZWN0bHkgZGlzcGxheWVkIGluIGEgcmVnaW9uLjwvcD4KKyAg
ICAgICAgPHA+T24gc3VjY2VzcyB5b3Ugc2hvdWxkIHNlZSBhIGJsdWUgcmVjdGFuZ2xlLCBmb2xs
b3dlZCBieSBhIGdyZWVuIHJlY3RhbmdsZSBhbmQgYW4gb3JhbmdlIHJlY3RhbmdsZS48L3A+Cisg
ICAgICAgIDxwPllvdSBzaG91bGQgbm90IHNlZSBhbnkgcmVkIGJlbG93LjwvcD4KKyAgICAgICAg
PGRpdiBpZD0icmVnaW9uMSI+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ImNvbnRlbnQxIj4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9Imluc2lkZTEiPgorICAgICAgICAgICAgICAgIDxkaXYgaWQ9Imlu
c2lkZTIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpbnNpZGUzIj48L2Rpdj4KKyAg
ICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvcGVyY2VudC1pbmxpbmUtYmxvY2tzLWZsb3dlZC1pbi1yZWdpb25zLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcGVyY2VudC1pbmxpbmUtYmxvY2tzLWZsb3dlZC1p
bi1yZWdpb25zLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOWVlMmUyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9w
ZXJjZW50LWlubGluZS1ibG9ja3MtZmxvd2VkLWluLXJlZ2lvbnMtZXhwZWN0ZWQuaHRtbApAQCAt
MCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAuaW5saW5lQmxvY2sgeyBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB3aWR0aDogNTAlOyBoZWlnaHQ6IDkwcHg7IH0K
KyAgICAgICAgICAgICNyZWdpb24xIHsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyBwb3Np
dGlvbjogYWJzb2x1dGU7IHRvcDogMTUwcHg7IGxlZnQ6IDEwMHB4OyB9CisgICAgICAgICAgICAj
cmVnaW9uMiB7IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiAxMDBweDsgcG9zaXRpb246IGFic29sdXRl
OyB0b3A6IDE1MHB4OyBsZWZ0OiAzMDBweDsgfQorICAgICAgICAgICAgLmNvbnRlbnROb2RlIHsg
d2lkdGg6IDUwJTsgaGVpZ2h0OiAyMDBweDsgfQorICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdCB0aGF0IGlubGluZSBibG9ja3Mgd2l0aCBw
ZXJjZW50IHdpZHRoIGFyZSBzaXplZCBiYXNlZCBvbiB0aGUgcmVnaW9uIGluIHdoaWNoIHRoZXkg
YXJlIGRpc3BsYXllZC48L3A+CisgICAgICAgIDxwPk9uIHN1Y2Nlc3MgeW91IHNob3VsZCBzZWUg
dHdvIGdyZWVuIHJlY3RhbmdsZXMsIHRoZSByaWdodCByZWN0YW5nbGUncyB3aWR0aCBiZWluZyB0
d2ljZSBhcyBiaWcgYXMgdGhlIGxlZnQgb25lJ3Mgd2lkdGguPC9wPgorICAgICAgICA8ZGl2IGlk
PSJyZWdpb24xIj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnROb2RlIj4KKyAgICAg
ICAgICAgICAgICA8ZGl2IGlkPSJpYjEiIGNsYXNzPSJpbmxpbmVCbG9jayI+PC9kaXY+CisgICAg
ICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9InJlZ2lvbjIi
PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudE5vZGUiPgorICAgICAgICAgICAgICAg
IDxkaXYgaWQ9ImliMiIgY2xhc3M9ImlubGluZUJsb2NrIj48L2Rpdj4KKyAgICAgICAgICAgIDwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcGVyY2VudC1pbmxpbmUtYmxvY2tzLWZsb3dlZC1pbi1y
ZWdpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcGVyY2VudC1pbmxpbmUtYmxv
Y2tzLWZsb3dlZC1pbi1yZWdpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZGY5YTgxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9wZXJjZW50LWlubGluZS1ibG9ja3MtZmxvd2VkLWluLXJlZ2lvbnMuaHRtbApAQCAtMCwwICsx
LDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICAuaW5saW5lQmxvY2sgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOyB3aWR0aDogNTAlOyBoZWlnaHQ6IDkwcHg7IH0KKyAgICAg
ICAgICAgICNyZWdpb24xIHsgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7IHdpZHRoOiAyMDBweDsg
aGVpZ2h0OiAxMDBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDE1MHB4OyBsZWZ0OiAxMDBw
eDsgfQorICAgICAgICAgICAgI3JlZ2lvbjIgeyAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsgd2lk
dGg6IDQwMHB4OyBoZWlnaHQ6IDEwMHB4OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTUwcHg7
IGxlZnQ6IDMwMHB4OyB9CisgICAgICAgICAgICAjY29udGVudE5vZGUgeyAtd2Via2l0LWZsb3ct
aW50bzogZmxvdzsgd2lkdGg6IDUwJTsgaGVpZ2h0OiAyMDBweDsgfQorICAgICAgICA8L3N0eWxl
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdCB0aGF0IGlubGluZSBi
bG9ja3Mgd2l0aCBwZXJjZW50IHdpZHRoIGFyZSBzaXplZCBiYXNlZCBvbiB0aGUgcmVnaW9uIGlu
IHdoaWNoIHRoZXkgYXJlIGRpc3BsYXllZC48L3A+CisgICAgICAgIDxwPk9uIHN1Y2Nlc3MgeW91
IHNob3VsZCBzZWUgdHdvIGdyZWVuIHJlY3RhbmdsZXMsIHRoZSByaWdodCByZWN0YW5nbGUncyB3
aWR0aCBiZWluZyB0d2ljZSBhcyBiaWcgYXMgdGhlIGxlZnQgb25lJ3Mgd2lkdGguPC9wPgorICAg
ICAgICA8ZGl2IGlkPSJyZWdpb24xIj48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0icmVnaW9uMiI+
PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ImNvbnRlbnROb2RlIj4KKyAgICAgICAgICAgIDwhLS0K
KyAgICAgICAgICAgIFRoaXMgYmxvY2sgaXMgZGlzcGxheWVkIGluIHRoZSBmaXJzdCByZWdpb24g
YW5kIHNob3VsZCBoYXZlIGl0cyB3aWR0aCA1MCUgZnJvbSB0aGUgd2lkdGgKKyAgICAgICAgICAg
IG9mIGl0cyBjb250YWluaW5nIGJsb2NrIGluIHRoZSBmaXJzdCByZWdpb24sIHdoaWNoIGlzIDUw
JSBmcm9tIHJlZ2lvbjEncyB3aWR0aC4KKyAgICAgICAgICAgIHJlZ2lvbjFfd2lkdGggPSAyMDBw
eAorICAgICAgICAgICAgY29udGVudE5vZGVfd2lkdGhfaW5fcmVnaW9uMSA9IDEwMHB4CisgICAg
ICAgICAgICBpYjFfd2lkdGhfaW5fcmVnaW9uMSA9IDUwcHgKKyAgICAgICAgICAgIC0tPgorICAg
ICAgICAgICAgPGRpdiBpZD0iaWIxIiBjbGFzcz0iaW5saW5lQmxvY2siPjwvZGl2PgorICAgICAg
ICAgICAgPCEtLQorICAgICAgICAgICAgVGhpcyBibG9jayBpcyBkaXNwbGF5ZWQgaW4gdGhlIHNl
Y29uZCByZWdpb24gYW5kIHNob3VsZCBoYXZlIGl0cyB3aWR0aCA1MCUgZnJvbSB0aGUgd2lkdGgK
KyAgICAgICAgICAgIG9mIGl0cyBjb250YWluaW5nIGJsb2NrIGluIHRoZSBzZWNvbmQgcmVnaW9u
LCB3aGljaCBpcyA1MCUgZnJvbSByZWdpb24yJ3Mgd2lkdGguCisgICAgICAgICAgICByZWdpb24y
X3dpZHRoID0gNDAwcHgKKyAgICAgICAgICAgIGNvbnRlbnROb2RlX3dpZHRoX2luX3JlZ2lvbjEg
PSA0MDBweAorICAgICAgICAgICAgaWIyX3dpZHRoX2luX3JlZ2lvbjEgPSAxMDBweAorICAgICAg
ICAgICAgLS0+CisgICAgICAgICAgICA8ZGl2IGlkPSJpYjIiIGNsYXNzPSJpbmxpbmVCbG9jayI+
PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCBiYWRiNDNmLi4xMzBi
M2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
CkBAIC00OTcsMTEgKzQ5NywxMSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4g
YnVpbGRPYmplY3RGb3JSZW5kZXJlckZyYWdtZW50cyhSZW5kZXJPYmplY3QqCiAgICAgICAgIFJl
bmRlckJveCogZW5jbG9zaW5nQm94ID0gcmVuZGVyZXItPmVuY2xvc2luZ0JveCgpOwogICAgICAg
ICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKICAgICAgICAgUmVuZGVyUmVn
aW9uKiBlbmRSZWdpb24gPSBudWxscHRyOwotICAgICAgICBjb250YWluaW5nRmxvd1RocmVhZC0+
Z2V0UmVnaW9uUmFuZ2VGb3JCb3goZW5jbG9zaW5nQm94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9u
KTsKLSAgICAgICAgaWYgKCFzdGFydFJlZ2lvbikgeworICAgICAgICBpZiAoIWNvbnRhaW5pbmdG
bG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveChlbmNsb3NpbmdCb3gsIHN0YXJ0UmVnaW9u
LCBlbmRSZWdpb24pKSB7CiAgICAgICAgICAgICAvLyBUaGUgZmxvdyBoYXMgbm8gdmlzaWJsZSBy
ZWdpb25zLiBUaGUgcmVuZGVyZXIgaXMgbm90IHZpc2libGUgb24gc2NyZWVuLgogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KKwogICAgICAgICBjb25zdCBSZW5kZXJSZWdp
b25MaXN0JiByZWdpb25MaXN0ID0gY29udGFpbmluZ0Zsb3dUaHJlYWQtPnJlbmRlclJlZ2lvbkxp
c3QoKTsKICAgICAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVy
ID0gcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVnaW9uKTsgaXRlciAhPSByZWdpb25MaXN0LmVuZCgp
OyArK2l0ZXIpIHsKICAgICAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA3YWJjNjI2Li4zYTVk
Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTUwNDUs
MTEgKzUwNDUsMjUgQEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJCbG9jazo6cmVnaW9uQXRCbG9ja09m
ZnNldChMYXlvdXRVbml0IGJsb2NrT2Zmc2V0KSBjb25zdAogICAgIHJldHVybiBmbG93VGhyZWFk
LT5yZWdpb25BdEJsb2NrT2Zmc2V0KHRoaXMsIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBh
Z2UoKSArIGJsb2NrT2Zmc2V0LCB0cnVlKTsKIH0KIAorc3RhdGljIGJvb2wgY2FuQ29tcHV0ZVJl
Z2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJsb2NrKiBwYXJlbnRCbG9jaywgY29uc3QgUmVu
ZGVyQm94JiBjaGlsZEJveCwgY29uc3QgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZENvbnRh
aW5pbmdCbG9jaykKK3sKKyAgICBBU1NFUlQocGFyZW50QmxvY2spOworICAgIEFTU0VSVCghY2hp
bGRCb3guaXNSZW5kZXJGbG93VGhyZWFkKCkpOworCisgICAgaWYgKCFmbG93VGhyZWFkQ29udGFp
bmluZ0Jsb2NrKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFmbG93VGhyZWFkQ29u
dGFpbmluZ0Jsb2NrLT5oYXNSZWdpb25zKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWNoaWxkQm94LmNhbkhhdmVPdXRzaWRlUmVnaW9uUmFuZ2UoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2stPmhhc1JlZ2lv
blJhbmdlRm9yQm94KHBhcmVudEJsb2NrKTsKK30KKwogdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0
ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBib3gpIGNvbnN0CiB7CiAg
ICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxv
Y2soKTsKLSAgICBpZiAoIWZsb3dUaHJlYWQgfHwgIWZsb3dUaHJlYWQtPmhhc1JlZ2lvbnMoKSkK
LSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChjYW5Db21wdXRlUmVnaW9uUmFuZ2VGb3JCb3go
dGhpcywgYm94LCBmbG93VGhyZWFkKSk7CiAKICAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9u
OwogICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uOwpAQCAtNTA2Nyw3ICs1MDgxLDcgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6Y29tcHV0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY29uc3QgUmVuZGVy
Qm94JiBib3gpIGNvbnN0CiB2b2lkIFJlbmRlckJsb2NrOjplc3RpbWF0ZVJlZ2lvblJhbmdlRm9y
Qm94Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBib3gpIGNvbnN0CiB7CiAgICAgUmVuZGVyRmxvd1Ro
cmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKLSAgICBpZiAo
IWZsb3dUaHJlYWQgfHwgIWZsb3dUaHJlYWQtPmhhc1JlZ2lvbnMoKSB8fCAhYm94LmNhbkhhdmVP
dXRzaWRlUmVnaW9uUmFuZ2UoKSkKKyAgICBpZiAoIWNhbkNvbXB1dGVSZWdpb25SYW5nZUZvckJv
eCh0aGlzLCBib3gsIGZsb3dUaHJlYWQpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYm94
LmlzVW5zcGxpdHRhYmxlRm9yUGFnaW5hdGlvbigpKSB7CkBAIC01MDg4LDE3ICs1MTAyLDE3IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OmVzdGltYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChjb25zdCBS
ZW5kZXJCb3gmIGJveCkgY29uc3QKIGJvb2wgUmVuZGVyQmxvY2s6OnVwZGF0ZVJlZ2lvblJhbmdl
Rm9yQm94Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBib3gpIGNvbnN0CiB7CiAgICAgUmVuZGVyRmxv
d1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKLSAgICBp
ZiAoIWZsb3dUaHJlYWQgfHwgIWZsb3dUaHJlYWQtPmhhc1JlZ2lvbnMoKSB8fCAhYm94LmNhbkhh
dmVPdXRzaWRlUmVnaW9uUmFuZ2UoKSkKKyAgICBpZiAoIWNhbkNvbXB1dGVSZWdpb25SYW5nZUZv
ckJveCh0aGlzLCBib3gsIGZsb3dUaHJlYWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gMDsKLSAgICBSZW5kZXJSZWdpb24qIGVuZFJl
Z2lvbiA9IDA7CisgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxwdHI7CisgICAg
UmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRyOwogICAgIGZsb3dUaHJlYWQtPmdldFJl
Z2lvblJhbmdlRm9yQm94KCZib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwogCiAgICAgY29t
cHV0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoYm94KTsKIAotICAgIFJlbmRlclJlZ2lvbiogbmV3
U3RhcnRSZWdpb24gPSAwOwotICAgIFJlbmRlclJlZ2lvbiogbmV3RW5kUmVnaW9uID0gMDsKKyAg
ICBSZW5kZXJSZWdpb24qIG5ld1N0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICBSZW5kZXJSZWdp
b24qIG5ld0VuZFJlZ2lvbiA9IG51bGxwdHI7CiAgICAgZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFu
Z2VGb3JCb3goJmJveCwgbmV3U3RhcnRSZWdpb24sIG5ld0VuZFJlZ2lvbik7CiAKICAgICAvLyBU
aGUgcmVnaW9uIHJhbmdlIG9mIHRoZSBib3ggaGFzIGNoYW5nZWQuIFNvbWUgYm94ZXMgKGUuZyBm
bG9hdHMpIG1heSBoYXZlIGJlZW4gcG9zaXRpb25lZCBhc3N1bWluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCAyMGMxZDRhLi40ZTNkYzU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMTY4
MSwxMyArMTY4MSwxMCBAQCBib29sIFJlbmRlckJsb2NrRmxvdzo6aGFzTmV4dFBhZ2UoTGF5b3V0
VW5pdCBsb2dpY2FsT2Zmc2V0LCBQYWdlQm91bmRhcnlSdWxlIHBhZwogICAgICAgICByZXR1cm4g
cmVnaW9uLT5pc1JlbmRlclJlZ2lvblNldCgpIHx8IHJlZ2lvbi0+c3R5bGUoKS5yZWdpb25GcmFn
bWVudCgpID09IEJyZWFrUmVnaW9uRnJhZ21lbnQKICAgICAgICAgICAgIHx8IChwYWdlQm91bmRh
cnlSdWxlID09IEluY2x1ZGVQYWdlQm91bmRhcnkgJiYgcGFnZU9mZnNldCA9PSByZWdpb24tPmxv
Z2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpKTsKIAotICAgIFJlbmRlclJlZ2lvbiogc3Rh
cnRSZWdpb24gPSAwOwotICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gMDsKKyAgICBSZW5k
ZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICBSZW5kZXJSZWdpb24qIGVuZFJl
Z2lvbiA9IG51bGxwdHI7CiAgICAgZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhp
cywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7Ci0KLSAgICBpZiAocmVnaW9uID09IGVuZFJlZ2lv
bikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBy
ZWdpb24gIT0gZW5kUmVnaW9uOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6YWRq
dXN0Rm9yVW5zcGxpdHRhYmxlQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dp
Y2FsT2Zmc2V0LCBib29sIGluY2x1ZGVNYXJnaW5zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAppbmRleCBhMmE3YjgzLi43NTdkYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcApAQCAtMTMxLDEzICsxMzEsMTQgQEAgUmVuZGVyUmVnaW9uKiBSZW5k
ZXJCb3g6OmNsYW1wVG9TdGFydEFuZEVuZFJlZ2lvbnMoUmVuZGVyUmVnaW9uKiByZWdpb24pIGNv
bnN0CiAgICAgLy8gbG9naWNhbCB0b3Agb3IgbG9naWNhbCBib3R0b20gb2YgdGhlIGJsb2NrIHRv
IHNpemUgYXMgdGhvdWdoIHRoZSBib3JkZXIgYm94IGluIHRoZSBmaXJzdCBhbmQKICAgICAvLyBs
YXN0IHJlZ2lvbnMgZXh0ZW5kZWQgaW5maW5pdGVseS4gT3RoZXJ3aXNlIHRoZSBsaW5lcyBhcmUg
Z29pbmcgdG8gc2l6ZSBhY2NvcmRpbmcgdG8gdGhlIHJlZ2lvbnMKICAgICAvLyB0aGV5IG92ZXJm
bG93IGludG8sIHdoaWNoIG1ha2VzIG5vIHNlbnNlIHdoZW4gdGhpcyBibG9jayBkb2Vzbid0IGV4
aXN0IGluIHxyZWdpb258IGF0IGFsbC4KLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0g
MDsKLSAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7Ci0gICAgZmxvd1RocmVhZC0+Z2V0
UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CisgICAgUmVu
ZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRS
ZWdpb24gPSBudWxscHRyOworICAgIGlmICghZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JC
b3godGhpcywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpCisgICAgICAgIHJldHVybiByZWdpb247
CiAKLSAgICBpZiAoc3RhcnRSZWdpb24gJiYgcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVh
ZENvbnRlbnQoKSA8IHN0YXJ0UmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQo
KSkKKyAgICBpZiAocmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSA8IHN0
YXJ0UmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSkKICAgICAgICAgcmV0
dXJuIHN0YXJ0UmVnaW9uOwotICAgIGlmIChlbmRSZWdpb24gJiYgcmVnaW9uLT5sb2dpY2FsVG9w
Rm9yRmxvd1RocmVhZENvbnRlbnQoKSA+IGVuZFJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJl
YWRDb250ZW50KCkpCisgICAgaWYgKHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250
ZW50KCkgPiBlbmRSZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpKQogICAg
ICAgICByZXR1cm4gZW5kUmVnaW9uOwogCiAgICAgcmV0dXJuIHJlZ2lvbjsKQEAgLTE2NCwxMiAr
MTY1LDkgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmJvcmRlckJveFJlY3RJblJlZ2lvbihSZW5k
ZXJSZWdpb24qIHJlZ2lvbiwgUmVuZGVyQm94UmVnaW8KICAgICBpZiAoIWZsb3dUaHJlYWQpCiAg
ICAgICAgIHJldHVybiBib3JkZXJCb3hSZWN0KCk7CiAKLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0
UmVnaW9uID0gMDsKLSAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7Ci0gICAgZmxvd1Ro
cmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7
Ci0gICAgCi0gICAgLy8gRklYTUU6IEluIGEgcGVyZmVjdCB3b3JsZCB0aGlzIGNvbmRpdGlvbiBz
aG91bGQgbmV2ZXIgaGFwcGVuLgotICAgIGlmICghc3RhcnRSZWdpb24gfHwgIWVuZFJlZ2lvbikK
KyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICBSZW5kZXJSZWdp
b24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgaWYgKCFmbG93VGhyZWFkLT5nZXRSZWdpb25S
YW5nZUZvckJveCh0aGlzLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSkKICAgICAgICAgcmV0dXJu
IGJvcmRlckJveFJlY3QoKTsKIAogICAgIEFTU0VSVChmbG93VGhyZWFkLT5yZWdpb25JblJhbmdl
KHJlZ2lvbiwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpOwpAQCAtMjEwMSwxMCArMjA5OSw5IEBA
IHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwYWludENvbnRhCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChvLT5p
c1JlbmRlckZsb3dUaHJlYWQoKSkgewotICAgICAgICBSZW5kZXJSZWdpb24qIGZpcnN0UmVnaW9u
ID0gMDsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiBsYXN0UmVnaW9uID0gMDsKLSAgICAgICAgdG9S
ZW5kZXJGbG93VGhyZWFkKG8pLT5nZXRSZWdpb25SYW5nZUZvckJveCh0aGlzLCBmaXJzdFJlZ2lv
biwgbGFzdFJlZ2lvbik7Ci0gICAgICAgIGlmIChmaXJzdFJlZ2lvbikKKyAgICAgICAgUmVuZGVy
UmVnaW9uKiBmaXJzdFJlZ2lvbiA9IG51bGxwdHI7CisgICAgICAgIFJlbmRlclJlZ2lvbiogbGFz
dFJlZ2lvbiA9IG51bGxwdHI7CisgICAgICAgIGlmICh0b1JlbmRlckZsb3dUaHJlYWQobyktPmdl
dFJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIGZpcnN0UmVnaW9uLCBsYXN0UmVnaW9uKSkKICAgICAg
ICAgICAgIHJlY3QubW92ZUJ5KGZpcnN0UmVnaW9uLT5mbG93VGhyZWFkUG9ydGlvblJlY3QoKS5s
b2NhdGlvbigpKTsKICAgICB9CiAKQEAgLTQ1MzQsMTEgKzQ1MzEsOSBAQCBMYXlvdXRSZWN0IFJl
bmRlckJveDo6b3ZlcmZsb3dSZWN0Rm9yUGFpbnRSZWplY3Rpb24oUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQqIG5hbQogICAgIC8vIHRvIHRoZSBmbG93IHRocmVhZCwgbm90IHRoZSBsYXN0IHJlZ2lv
biAoaW4gd2hpY2ggaXQgd2lsbCBlbmQgdXAgYmVjYXVzZSBvZiBib3R0b206MHB4KQogICAgIGlm
IChuYW1lZEZsb3dGcmFnbWVudCkgewogICAgICAgICBpZiAoUmVuZGVyRmxvd1RocmVhZCogZmxv
d1RocmVhZCA9IG5hbWVkRmxvd0ZyYWdtZW50LT5mbG93VGhyZWFkKCkpIHsKLSAgICAgICAgICAg
IFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSAwOwotICAgICAgICAgICAgUmVuZGVyUmVnaW9u
KiBlbmRSZWdpb24gPSAwOwotICAgICAgICAgICAgZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VG
b3JCb3godGhpcywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7Ci0KLSAgICAgICAgICAgIGlmIChz
dGFydFJlZ2lvbiAmJiBlbmRSZWdpb24pCisgICAgICAgICAgICBSZW5kZXJSZWdpb24qIHN0YXJ0
UmVnaW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0g
bnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChmbG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJv
eCh0aGlzLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSkKICAgICAgICAgICAgICAgICBvdmVyZmxv
d1JlY3QudW5pdGUobmFtZWRGbG93RnJhZ21lbnQtPnZpc3VhbE92ZXJmbG93UmVjdEZvckJveCh0
aGlzKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBkMWQ1M2MzLi45NDRlMmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAg
LTI3NzAsMTAgKzI3NzAsOSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjptYXBBYnNvbHV0
ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUsIFRyYQogICAgIC8vIFRoZSBw
b2ludCBpbnNpZGUgYSBib3ggdGhhdCdzIGluc2lkZSBhIHJlZ2lvbiBoYXMgaXRzIGNvb3JkaW5h
dGVzIHJlbGF0aXZlIHRvIHRoZSByZWdpb24sCiAgICAgLy8gbm90IHRoZSBGbG93VGhyZWFkIHRo
YXQgaXMgaXRzIGNvbnRhaW5lciBpbiB0aGUgUmVuZGVyT2JqZWN0IHRyZWUuCiAgICAgaWYgKG8t
PmlzUmVuZGVyRmxvd1RocmVhZCgpICYmIGlzQm94KCkpIHsKLSAgICAgICAgUmVuZGVyUmVnaW9u
KiBzdGFydFJlZ2lvbjsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb247Ci0gICAgICAg
IHRvUmVuZGVyRmxvd1RocmVhZChvKS0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godG9SZW5kZXJCb3go
dGhpcyksIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwotICAgICAgICBpZiAoc3RhcnRSZWdpb24p
CisgICAgICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOworICAgICAgICBS
ZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgICAgIGlmICh0b1JlbmRlckZs
b3dUaHJlYWQobyktPmdldFJlZ2lvblJhbmdlRm9yQm94KHRvUmVuZGVyQm94KHRoaXMpLCBzdGFy
dFJlZ2lvbiwgZW5kUmVnaW9uKSkKICAgICAgICAgICAgIG8gPSBzdGFydFJlZ2lvbjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgK
aW5kZXggYWVjMzI0Yy4uMDczNDgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTE4MCw3ICsxODAsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUpIG92ZXJyaWRl
OwogCi0gICAgYm9vbCBjYW5IYXZlQm94SW5mb0luUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gIWlz
RmxvYXRpbmcoKSAmJiAhaXNSZXBsYWNlZCgpICYmICFpc0lubGluZSgpICYmICFoYXNDb2x1bW5z
KCkgJiYgIWlzVGFibGVDZWxsKCkgJiYgaXNSZW5kZXJCbG9jaygpICYmICFpc1JlbmRlclNWR0Js
b2NrKCk7IH0KKyAgICBib29sIGNhbkhhdmVCb3hJbmZvSW5SZWdpb24oKSBjb25zdCB7IHJldHVy
biAhaXNGbG9hdGluZygpICYmICFoYXNDb2x1bW5zKCkgJiYgIWlzVGFibGVDZWxsKCkgJiYgaXNS
ZW5kZXJCbG9jaygpICYmICFpc1JlbmRlclNWR0Jsb2NrKCk7IH0KIAogICAgIHZvaWQgZ2V0R2Vv
bWV0cnlGb3JCYWNrZ3JvdW5kSW1hZ2UoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFp
bnRDb250YWluZXIsIEludFJlY3QmIGRlc3RSZWN0LCBJbnRQb2ludCYgcGhhc2UsIEludFNpemUm
IHRpbGVTaXplKSBjb25zdDsKICAgICB2b2lkIGNvbnRlbnRDaGFuZ2VkKENvbnRlbnRDaGFuZ2VU
eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApp
bmRleCA3NWNkOWM5Li43Y2IwNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsb3dUaHJlYWQuY3BwCkBAIC0yNTgsMTEgKzI1OCwxMCBAQCBSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudCogUmVuZGVyRmxvd1RocmVhZDo6cmVnaW9uRm9yQ29tcG9zaXRlZExheWVyKFJlbmRl
ckxheWVyJgogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChjaGlsZExheWVyLnJlbmRlckJv
eCgpKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSAwOwotICAgICAgICBS
ZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7Ci0gICAgICAgIGdldFJlZ2lvblJhbmdlRm9yQm94
KGNoaWxkTGF5ZXIucmVuZGVyQm94KCksIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwotICAgICAg
ICAvLyBUaGUgdmlkZW8gdGFnIGlzIHN1Y2ggYSBib3ggdGhhdCBkb2Vzbid0IGhhdmUgYSByZWdp
b24gcmFuZ2UgYmVjYXVzZSBpdCdzIGlubGluZSAoYnkgZGVmYXVsdCkuCi0gICAgICAgIGlmIChz
dGFydFJlZ2lvbikKKyAgICAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxwdHI7
CisgICAgICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gbnVsbHB0cjsKKyAgICAgICAgaWYg
KGdldFJlZ2lvblJhbmdlRm9yQm94KGNoaWxkTGF5ZXIucmVuZGVyQm94KCksIHN0YXJ0UmVnaW9u
LCBlbmRSZWdpb24pKQorICAgICAgICAgICAgLy8gVGhlIHZpZGVvIHRhZyBpcyBzdWNoIGEgYm94
IHRoYXQgZG9lc24ndCBoYXZlIGEgcmVnaW9uIHJhbmdlIGJlY2F1c2UgaXQncyBpbmxpbmUgKGJ5
IGRlZmF1bHQpLgogICAgICAgICAgICAgcmV0dXJuIHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQo
c3RhcnRSZWdpb24pOwogICAgIH0KIApAQCAtNDY1LDEwICs0NjQsOSBAQCBMYXlvdXRQb2ludCBS
ZW5kZXJGbG93VGhyZWFkOjphZGp1c3RlZFBvc2l0aW9uUmVsYXRpdmVUb09mZnNldFBhcmVudChj
b25zdCBSZW5kZQogICAgICAgICBib29sIHdhc0NvbXB1dGVkUmVsYXRpdmVUb090aGVyUmVnaW9u
ID0gZmFsc2U7CiAgICAgICAgIHdoaWxlIChvYmpDb250YWluaW5nQmxvY2sgJiYgIW9iakNvbnRh
aW5pbmdCbG9jay0+aXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSkgewogICAgICAgICAgICAgLy8g
Q2hlY2sgaWYgdGhpcyBvYmplY3QgaXMgaW4gYSBkaWZmZXJlbnQgcmVnaW9uLgotICAgICAgICAg
ICAgUmVuZGVyUmVnaW9uKiBwYXJlbnRTdGFydFJlZ2lvbiA9IDA7Ci0gICAgICAgICAgICBSZW5k
ZXJSZWdpb24qIHBhcmVudEVuZFJlZ2lvbiA9IDA7Ci0gICAgICAgICAgICBnZXRSZWdpb25SYW5n
ZUZvckJveChvYmpDb250YWluaW5nQmxvY2ssIHBhcmVudFN0YXJ0UmVnaW9uLCBwYXJlbnRFbmRS
ZWdpb24pOwotICAgICAgICAgICAgaWYgKHBhcmVudFN0YXJ0UmVnaW9uICYmIHBhcmVudFN0YXJ0
UmVnaW9uICE9IHN0YXJ0UmVnaW9uKSB7CisgICAgICAgICAgICBSZW5kZXJSZWdpb24qIHBhcmVu
dFN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIFJlbmRlclJlZ2lvbiogcGFyZW50
RW5kUmVnaW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChnZXRSZWdpb25SYW5nZUZvckJv
eChvYmpDb250YWluaW5nQmxvY2ssIHBhcmVudFN0YXJ0UmVnaW9uLCBwYXJlbnRFbmRSZWdpb24p
ICYmIHBhcmVudFN0YXJ0UmVnaW9uICE9IHN0YXJ0UmVnaW9uKSB7CiAgICAgICAgICAgICAgICAg
d2FzQ29tcHV0ZWRSZWxhdGl2ZVRvT3RoZXJSZWdpb24gPSB0cnVlOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNTkzLDE1ICs1OTEsOCBAQCB2b2lkIFJlbmRlckZs
b3dUaHJlYWQ6OnJlbW92ZVJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyQm94KiBib3gpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uOwotICAg
IFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uOwotICAgIGdldFJlZ2lvblJhbmdlRm9yQm94KGJveCwg
c3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7Ci0KLSAgICBmb3IgKGF1dG8mIHJlZ2lvbiA6IG1fcmVn
aW9uTGlzdCkgeworICAgIGZvciAoYXV0byYgcmVnaW9uIDogbV9yZWdpb25MaXN0KQogICAgICAg
ICByZWdpb24tPnJlbW92ZVJlbmRlckJveFJlZ2lvbkluZm8oYm94KTsKLSAgICAgICAgaWYgKHJl
Z2lvbiA9PSBlbmRSZWdpb24pCi0gICAgICAgICAgICBicmVhazsKLSAgICB9CiAKICNpZm5kZWYg
TkRFQlVHCiAgICAgLy8gV2UgaGF2ZSB0byBtYWtlIHN1cmUgd2UgZGlkIG5vdCBsZWF2ZSBhbnkg
UmVuZGVyQm94UmVnaW9uSW5mbyBhdHRhY2hlZC4KQEAgLTYzMCwxMCArNjIxLDYgQEAgdm9pZCBS
ZW5kZXJGbG93VGhyZWFkOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9yQmxvY2soY29u
c3QgUmVuZGVyQmxvY2sqIGIKICAgICBpZiAocmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbjsKLSAgICBSZW5kZXJSZWdpb24q
IGVuZFJlZ2lvbjsKLSAgICBnZXRSZWdpb25SYW5nZUZvckJveChibG9jaywgc3RhcnRSZWdpb24s
IGVuZFJlZ2lvbik7Ci0KICAgICAvLyBOb3QgbmVjZXNzYXJ5IGZvciB0aGUgZmxvdyB0aHJlYWQs
IHNpbmNlIHdlIGFscmVhZHkgY29tcHV0ZWQgdGhlIGNvcnJlY3QgaW5mbyBmb3IgaXQuCiAgICAg
Ly8gSWYgdGhlIHJlZ2lvbnMgaGF2ZSBjaGFuZ2VkIGludmFsaWRhdGUgdGhlIGNoaWxkcmVuLgog
ICAgIGlmIChibG9jayA9PSB0aGlzKSB7CkBAIC02NDEsNyArNjI4LDEzIEBAIHZvaWQgUmVuZGVy
Rmxvd1RocmVhZDo6bG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9uc0ZvckJsb2NrKGNvbnN0IFJl
bmRlckJsb2NrKiBiCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIHJl
Z2lvbiA6IG1fcmVnaW9uTGlzdCkgeworICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBu
dWxscHRyOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gbnVsbHB0cjsKKyAgICBpZiAo
IWdldFJlZ2lvblJhbmdlRm9yQm94KGJsb2NrLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuZmluZChz
dGFydFJlZ2lvbiksIGVuZCA9IG1fcmVnaW9uTGlzdC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRl
cikgeworICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwogICAgICAgICBBU1NF
UlQoIXJlZ2lvbi0+bmVlZHNMYXlvdXQoKSB8fCByZWdpb24tPmlzUmVuZGVyUmVnaW9uU2V0KCkp
OwogCiAgICAgICAgIC8vIFdlIGhhdmUgbm8gaW5mb3JtYXRpb24gY29tcHV0ZWQgZm9yIHRoaXMg
cmVnaW9uIHNvIHdlIG5lZWQgdG8gZG8gaXQuCkBAIC03MzEsNiArNzI0LDcgQEAgdm9pZCBSZW5k
ZXJGbG93VGhyZWFkOjpjbGVhclJlbmRlckJveFJlZ2lvbkluZm9BbmRDdXN0b21TdHlsZShjb25z
dCBSZW5kZXJCb3gqIGIKIAogdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpzZXRSZWdpb25SYW5nZUZv
ckJveChjb25zdCBSZW5kZXJCb3gqIGJveCwgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiwgUmVu
ZGVyUmVnaW9uKiBlbmRSZWdpb24pCiB7CisgICAgQVNTRVJUKGJveCk7CiAgICAgQVNTRVJUKGhh
c1JlZ2lvbnMoKSk7CiAgICAgQVNTRVJUKHN0YXJ0UmVnaW9uICYmIGVuZFJlZ2lvbik7CiAKQEAg
LTc0OSwyNSArNzQzLDY3IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6c2V0UmVnaW9uUmFuZ2VG
b3JCb3goY29uc3QgUmVuZGVyQm94KiBib3gsIFJlbmRlclJlZ2lvbioKICAgICByYW5nZS5zZXRS
YW5nZShzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKIH0KIAotdm9pZCBSZW5kZXJGbG93VGhyZWFk
OjpnZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqIGJveCwgUmVuZGVyUmVnaW9u
KiYgc3RhcnRSZWdpb24sIFJlbmRlclJlZ2lvbiomIGVuZFJlZ2lvbikgY29uc3QKK2Jvb2wgUmVu
ZGVyRmxvd1RocmVhZDo6Z2V0UmVnaW9uUmFuZ2VGb3JCb3hGcm9tQ2FjaGVkSW5mbyhjb25zdCBS
ZW5kZXJCb3gqIGJveCwgUmVuZGVyUmVnaW9uKiYgc3RhcnRSZWdpb24sIFJlbmRlclJlZ2lvbiom
IGVuZFJlZ2lvbikgY29uc3QKIHsKLSAgICBzdGFydFJlZ2lvbiA9IGVuZFJlZ2lvbiA9IDA7Ci0g
ICAgYXV0byBpdCA9IG1fcmVnaW9uUmFuZ2VNYXAuZmluZChib3gpOworICAgIEFTU0VSVChib3gp
OworICAgIEFTU0VSVChoYXNWYWxpZFJlZ2lvbkluZm8oKSk7CisgICAgQVNTRVJUKChzdGFydFJl
Z2lvbiA9PSBudWxscHRyKSAmJiAoZW5kUmVnaW9uID09IG51bGxwdHIpKTsKIAorICAgIGF1dG8g
aXQgPSBtX3JlZ2lvblJhbmdlTWFwLmZpbmQoYm94KTsKICAgICBpZiAoaXQgIT0gbV9yZWdpb25S
YW5nZU1hcC5lbmQoKSkgewogICAgICAgICBjb25zdCBSZW5kZXJSZWdpb25SYW5nZSYgcmFuZ2Ug
PSBpdC0+dmFsdWU7CiAgICAgICAgIHN0YXJ0UmVnaW9uID0gcmFuZ2Uuc3RhcnRSZWdpb24oKTsK
ICAgICAgICAgZW5kUmVnaW9uID0gcmFuZ2UuZW5kUmVnaW9uKCk7CiAgICAgICAgIEFTU0VSVCht
X3JlZ2lvbkxpc3QuY29udGFpbnMoc3RhcnRSZWdpb24pICYmIG1fcmVnaW9uTGlzdC5jb250YWlu
cyhlbmRSZWdpb24pKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKICAgICBJbmxpbmVFbGVtZW50Qm94KiBib3hXcmFwcGVyID0gYm94LT5pbmxpbmVCb3hX
cmFwcGVyKCk7Ci0gICAgaWYgKGJveFdyYXBwZXIpIHsKLSAgICAgICAgY29uc3QgUm9vdElubGlu
ZUJveCYgYm94V3JhcHBlclJvb3RJbmxpbmVCb3ggPSAgYm94V3JhcHBlci0+cm9vdCgpOwotICAg
ICAgICBzdGFydFJlZ2lvbiA9IGVuZFJlZ2lvbiA9IGJveFdyYXBwZXJSb290SW5saW5lQm94LmNv
bnRhaW5pbmdSZWdpb24oKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChib3hXcmFwcGVyICYm
IGJveFdyYXBwZXItPnJvb3QoKS5jb250YWluaW5nUmVnaW9uKCkpIHsKKyAgICAgICAgc3RhcnRS
ZWdpb24gPSBlbmRSZWdpb24gPSBib3hXcmFwcGVyLT5yb290KCkuY29udGFpbmluZ1JlZ2lvbigp
OworICAgICAgICBBU1NFUlQobV9yZWdpb25MaXN0LmNvbnRhaW5zKHN0YXJ0UmVnaW9uKSAmJiBt
X3JlZ2lvbkxpc3QuY29udGFpbnMoZW5kUmVnaW9uKSk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpn
ZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqIGJveCwgUmVuZGVyUmVnaW9uKiYg
c3RhcnRSZWdpb24sIFJlbmRlclJlZ2lvbiomIGVuZFJlZ2lvbikgY29uc3QKK3sKKyAgICBBU1NF
UlQoYm94KTsKKworICAgIHN0YXJ0UmVnaW9uID0gZW5kUmVnaW9uID0gbnVsbHB0cjsKKyAgICBp
ZiAoIWhhc1ZhbGlkUmVnaW9uSW5mbygpKSAvLyBXZSBjbGVhciB0aGUgcmFuZ2VzIHdoZW4gd2Ug
aW52YWxpZGF0ZSB0aGUgcmVnaW9ucy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KGdldFJlZ2lvblJhbmdlRm9yQm94RnJvbUNhY2hlZEluZm8oYm94LCBzdGFydFJlZ2lvbiwgZW5k
UmVnaW9uKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBDaGVjayBpZiB0aGUgYm94
IGlzIGNvbnRhaW5lZCBpbiBhbiB1bnNwbGl0dGFibGUgYm94LgorICAgIC8vIElmIHNvLCB0cnkg
dG8gc2VlIGlmIHRoZSB1bnNwbGl0dGFibGUgYm94IGhhcyByZWdpb24gcmFuZ2UuCisgICAgUmVu
ZGVyQm94KiB0b3BNb3N0VW5zcGxpdHRhYmxlID0gbnVsbHB0cjsKKyAgICBSZW5kZXJCb3gqIGNi
ID0gY29uc3RfY2FzdDxSZW5kZXJCb3gqPihib3gpOworICAgIGRvIHsKKyAgICAgICAgaWYgKGNi
LT5pc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXRpb24oKSkKKyAgICAgICAgICAgIHRvcE1vc3RVbnNw
bGl0dGFibGUgPSBjYjsKKyAgICAgICAgY2IgPSBjYi0+cGFyZW50KCkgPyBjYi0+cGFyZW50KCkt
PmVuY2xvc2luZ0JveCgpIDogbnVsbHB0cjsKKyAgICB9IHdoaWxlICghY2ItPmlzUmVuZGVyRmxv
d1RocmVhZCgpKTsKKworICAgIGlmICh0b3BNb3N0VW5zcGxpdHRhYmxlKSB7CisgICAgICAgIEFT
U0VSVCh0b3BNb3N0VW5zcGxpdHRhYmxlLT5jb250YWluaW5nQmxvY2soKSk7CisgICAgICAgIGlm
IChnZXRSZWdpb25SYW5nZUZvckJveEZyb21DYWNoZWRJbmZvKHRvcE1vc3RVbnNwbGl0dGFibGUt
PmNvbnRhaW5pbmdCbG9jaygpLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSkgeworICAgICAgICAg
ICAgZW5kUmVnaW9uID0gc3RhcnRSZWdpb247CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQogICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJGbG93
VGhyZWFkOjpoYXNSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqIGJveCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoYm94KTsKKyAgICByZXR1cm4gbV9yZWdpb25SYW5nZU1hcC5jb250YWlu
cyhib3gpOwogfQogCiB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmFwcGx5QnJlYWtBZnRlckNvbnRl
bnQoTGF5b3V0VW5pdCBjbGllbnRIZWlnaHQpCkBAIC04MDAsMTcgKzgzNiwxNiBAQCBib29sIFJl
bmRlckZsb3dUaHJlYWQ6Om9iamVjdFNob3VsZFBhaW50SW5GbG93UmVnaW9uKGNvbnN0IFJlbmRl
ck9iamVjdCogb2JqZWN0LAogICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBvYmpl
Y3QtPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKICAgICBpZiAoZmxvd1RocmVhZCAhPSB0
aGlzKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIW1fcmVnaW9uTGlzdC5jb250
YWlucyhjb25zdF9jYXN0PFJlbmRlclJlZ2lvbio+KHJlZ2lvbikpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgUmVuZGVyQm94KiBlbmNsb3NpbmdCb3ggPSBvYmplY3QtPmVuY2xv
c2luZ0JveCgpOwotICAgIFJlbmRlclJlZ2lvbiogZW5jbG9zaW5nQm94U3RhcnRSZWdpb24gPSAw
OwotICAgIFJlbmRlclJlZ2lvbiogZW5jbG9zaW5nQm94RW5kUmVnaW9uID0gMDsKLSAgICBnZXRS
ZWdpb25SYW5nZUZvckJveChlbmNsb3NpbmdCb3gsIGVuY2xvc2luZ0JveFN0YXJ0UmVnaW9uLCBl
bmNsb3NpbmdCb3hFbmRSZWdpb24pOwotICAgIAogICAgIC8vIElmIHRoZSBib3ggaGFzIG5vIHJh
bmdlLCBkbyBub3QgY2hlY2sgcmVnaW9uSW5SYW5nZS4gQm94ZXMgaW5zaWRlIGlubGluZXMgZG8g
bm90IGdldCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgdGhlIGNvbnRhaW5pbmcgUm9vdElubGlu
ZUJveCB3aWxsIGFib3J0IHdoZW4gdHJ5aW5nIHRvIHBhaW50IGluc2lkZSB0aGUgd3JvbmcgcmVn
aW9uLgotICAgIGlmIChlbmNsb3NpbmdCb3hTdGFydFJlZ2lvbiAmJiBlbmNsb3NpbmdCb3hFbmRS
ZWdpb24gJiYgIXJlZ2lvbkluUmFuZ2UocmVnaW9uLCBlbmNsb3NpbmdCb3hTdGFydFJlZ2lvbiwg
ZW5jbG9zaW5nQm94RW5kUmVnaW9uKSkKKyAgICBSZW5kZXJSZWdpb24qIGVuY2xvc2luZ0JveFN0
YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICBSZW5kZXJSZWdpb24qIGVuY2xvc2luZ0JveEVuZFJl
Z2lvbiA9IG51bGxwdHI7CisgICAgaWYgKGdldFJlZ2lvblJhbmdlRm9yQm94KG9iamVjdC0+ZW5j
bG9zaW5nQm94KCksIGVuY2xvc2luZ0JveFN0YXJ0UmVnaW9uLCBlbmNsb3NpbmdCb3hFbmRSZWdp
b24pCisgICAgICAgICYmICFyZWdpb25JblJhbmdlKHJlZ2lvbiwgZW5jbG9zaW5nQm94U3RhcnRS
ZWdpb24sIGVuY2xvc2luZ0JveEVuZFJlZ2lvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKICAgICByZXR1cm4gb2JqZWN0LT5pc0JveCgpIHx8IG9iamVjdC0+aXNSZW5kZXJJbmxpbmUo
KTsKQEAgLTgyNywxMCArODYyLDExIEBAIGJvb2wgUmVuZGVyRmxvd1RocmVhZDo6b2JqZWN0SW5G
bG93UmVnaW9uKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBSZW5kCiAgICAgaWYg
KCFtX3JlZ2lvbkxpc3QuY29udGFpbnMoY29uc3RfY2FzdDxSZW5kZXJSZWdpb24qPihyZWdpb24p
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVuZGVyQm94KiBlbmNsb3NpbmdCb3gg
PSBvYmplY3QtPmVuY2xvc2luZ0JveCgpOwotICAgIFJlbmRlclJlZ2lvbiogZW5jbG9zaW5nQm94
U3RhcnRSZWdpb24gPSAwOwotICAgIFJlbmRlclJlZ2lvbiogZW5jbG9zaW5nQm94RW5kUmVnaW9u
ID0gMDsKLSAgICBnZXRSZWdpb25SYW5nZUZvckJveChlbmNsb3NpbmdCb3gsIGVuY2xvc2luZ0Jv
eFN0YXJ0UmVnaW9uLCBlbmNsb3NpbmdCb3hFbmRSZWdpb24pOworICAgIFJlbmRlclJlZ2lvbiog
ZW5jbG9zaW5nQm94U3RhcnRSZWdpb24gPSBudWxscHRyOworICAgIFJlbmRlclJlZ2lvbiogZW5j
bG9zaW5nQm94RW5kUmVnaW9uID0gbnVsbHB0cjsKKyAgICBpZiAoIWdldFJlZ2lvblJhbmdlRm9y
Qm94KG9iamVjdC0+ZW5jbG9zaW5nQm94KCksIGVuY2xvc2luZ0JveFN0YXJ0UmVnaW9uLCBlbmNs
b3NpbmdCb3hFbmRSZWdpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIXJl
Z2lvbkluUmFuZ2UocmVnaW9uLCBlbmNsb3NpbmdCb3hTdGFydFJlZ2lvbiwgZW5jbG9zaW5nQm94
RW5kUmVnaW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMjQxLDkgKzEyNzcsMTAg
QEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpmbGlwRm9yV3JpdGluZ01vZGVMb2NhbENvb3JkaW5h
dGVzKExheW91dFJlY3QmIHJlY3QpIGNvbnMKIAogdm9pZCBSZW5kZXJGbG93VGhyZWFkOjphZGRS
ZWdpb25zVmlzdWFsRWZmZWN0T3ZlcmZsb3coY29uc3QgUmVuZGVyQm94KiBib3gpCiB7Ci0gICAg
UmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7Ci0gICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdp
b24gPSAwOwotICAgIGdldFJlZ2lvblJhbmdlRm9yQm94KGJveCwgc3RhcnRSZWdpb24sIGVuZFJl
Z2lvbik7CisgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxwdHI7CisgICAgUmVu
ZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRyOworICAgIGlmICghZ2V0UmVnaW9uUmFuZ2VG
b3JCb3goYm94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSkKKyAgICAgICAgcmV0dXJuOwogCiAg
ICAgZm9yIChhdXRvIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuZmluZChzdGFydFJlZ2lvbiksIGVuZCA9
IG1fcmVnaW9uTGlzdC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBSZW5k
ZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwpAQCAtMTI2MCw5ICsxMjk3LDEwIEBAIHZvaWQgUmVu
ZGVyRmxvd1RocmVhZDo6YWRkUmVnaW9uc1Zpc3VhbEVmZmVjdE92ZXJmbG93KGNvbnN0IFJlbmRl
ckJveCogYm94KQogCiB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmFkZFJlZ2lvbnNWaXN1YWxPdmVy
Zmxvd0Zyb21UaGVtZShjb25zdCBSZW5kZXJCbG9jayogYmxvY2spCiB7Ci0gICAgUmVuZGVyUmVn
aW9uKiBzdGFydFJlZ2lvbiA9IDA7Ci0gICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSAwOwot
ICAgIGdldFJlZ2lvblJhbmdlRm9yQm94KGJsb2NrLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsK
KyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICBSZW5kZXJSZWdp
b24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgaWYgKCFnZXRSZWdpb25SYW5nZUZvckJveChi
bG9jaywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpCisgICAgICAgIHJldHVybjsKIAogICAgIGZv
ciAoYXV0byBpdGVyID0gbV9yZWdpb25MaXN0LmZpbmQoc3RhcnRSZWdpb24pLCBlbmQgPSBtX3Jl
Z2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgUmVuZGVyUmVn
aW9uKiByZWdpb24gPSAqaXRlcjsKQEAgLTEyODEsMTMgKzEzMTksMTUgQEAgdm9pZCBSZW5kZXJG
bG93VGhyZWFkOjphZGRSZWdpb25zVmlzdWFsT3ZlcmZsb3dGcm9tVGhlbWUoY29uc3QgUmVuZGVy
QmxvY2sqIGJsb2MKIAogdm9pZCBSZW5kZXJGbG93VGhyZWFkOjphZGRSZWdpb25zT3ZlcmZsb3dG
cm9tQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBib3gsIGNvbnN0IFJlbmRlckJveCogY2hpbGQsIGNv
bnN0IExheW91dFNpemUmIGRlbHRhKQogewotICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24g
PSAwOwotICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gMDsKLSAgICBnZXRSZWdpb25SYW5n
ZUZvckJveChjaGlsZCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CisgICAgUmVuZGVyUmVnaW9u
KiBzdGFydFJlZ2lvbiA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBu
dWxscHRyOworICAgIGlmICghZ2V0UmVnaW9uUmFuZ2VGb3JCb3goY2hpbGQsIHN0YXJ0UmVnaW9u
LCBlbmRSZWdpb24pKQorICAgICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJSZWdpb24qIGNvbnRh
aW5lclN0YXJ0UmVnaW9uID0gMDsKLSAgICBSZW5kZXJSZWdpb24qIGNvbnRhaW5lckVuZFJlZ2lv
biA9IDA7Ci0gICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBjb250YWluZXJTdGFydFJlZ2lv
biwgY29udGFpbmVyRW5kUmVnaW9uKTsKKyAgICBSZW5kZXJSZWdpb24qIGNvbnRhaW5lclN0YXJ0
UmVnaW9uID0gbnVsbHB0cjsKKyAgICBSZW5kZXJSZWdpb24qIGNvbnRhaW5lckVuZFJlZ2lvbiA9
IG51bGxwdHI7CisgICAgaWYgKCFnZXRSZWdpb25SYW5nZUZvckJveChib3gsIGNvbnRhaW5lclN0
YXJ0UmVnaW9uLCBjb250YWluZXJFbmRSZWdpb24pKQorICAgICAgICByZXR1cm47CiAKICAgICBm
b3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVnaW9uKSwgZW5kID0gbV9y
ZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJl
Z2lvbiogcmVnaW9uID0gKml0ZXI7CkBAIC0xMzE3LDkgKzEzNTcsMTAgQEAgdm9pZCBSZW5kZXJG
bG93VGhyZWFkOjphZGRSZWdpb25zT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBi
b3gsIGNvbnN0IFIKICAgICAKIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRkUmVnaW9uc0xheW91
dE92ZXJmbG93KGNvbnN0IFJlbmRlckJveCogYm94LCBjb25zdCBMYXlvdXRSZWN0JiBsYXlvdXRP
dmVyZmxvdykKIHsKLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gMDsKLSAgICBSZW5k
ZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7Ci0gICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBz
dGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0g
bnVsbHB0cjsKKyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgaWYg
KCFnZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKQorICAg
ICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKHN0
YXJ0UmVnaW9uKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVy
KSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CkBAIC0xMzM0LDkgKzEz
NzUsMTAgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjphZGRSZWdpb25zTGF5b3V0T3ZlcmZsb3co
Y29uc3QgUmVuZGVyQm94KiBib3gsIGNvbnN0IExheW8KIAogdm9pZCBSZW5kZXJGbG93VGhyZWFk
OjphZGRSZWdpb25zVmlzdWFsT3ZlcmZsb3coY29uc3QgUmVuZGVyQm94KiBib3gsIGNvbnN0IExh
eW91dFJlY3QmIHZpc3VhbE92ZXJmbG93KQogewotICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdp
b24gPSAwOwotICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gMDsKLSAgICBnZXRSZWdpb25S
YW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworICAgIFJlbmRlclJlZ2lv
biogc3RhcnRSZWdpb24gPSBudWxscHRyOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0g
bnVsbHB0cjsKKyAgICBpZiAoIWdldFJlZ2lvblJhbmdlRm9yQm94KGJveCwgc3RhcnRSZWdpb24s
IGVuZFJlZ2lvbikpCisgICAgICAgIHJldHVybjsKICAgICAKICAgICBmb3IgKFJlbmRlclJlZ2lv
bkxpc3Q6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuZmluZChzdGFydFJlZ2lvbik7IGl0
ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgUmVuZGVyUmVnaW9u
KiByZWdpb24gPSAqaXRlcjsKQEAgLTEzNTEsOSArMTM5MywxMCBAQCB2b2lkIFJlbmRlckZsb3dU
aHJlYWQ6OmFkZFJlZ2lvbnNWaXN1YWxPdmVyZmxvdyhjb25zdCBSZW5kZXJCb3gqIGJveCwgY29u
c3QgTGF5bwogCiB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmNsZWFyUmVnaW9uc092ZXJmbG93KGNv
bnN0IFJlbmRlckJveCogYm94KQogewotICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSAw
OwotICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gMDsKLSAgICBnZXRSZWdpb25SYW5nZUZv
ckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworICAgIFJlbmRlclJlZ2lvbiogc3Rh
cnRSZWdpb24gPSBudWxscHRyOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gbnVsbHB0
cjsKKyAgICBpZiAoIWdldFJlZ2lvblJhbmdlRm9yQm94KGJveCwgc3RhcnRSZWdpb24sIGVuZFJl
Z2lvbikpCisgICAgICAgIHJldHVybjsKIAogICAgIGZvciAoYXV0byBpdGVyID0gbV9yZWdpb25M
aXN0LmZpbmQoc3RhcnRSZWdpb24pLCBlbmQgPSBtX3JlZ2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0g
ZW5kOyArK2l0ZXIpIHsKICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCmluZGV4IDgyM2FjOWYu
LjY4YmQwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
aApAQCAtMTIzLDcgKzEyMyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVByZXZpb3VzUmVn
aW9uQ291bnQoKSB7IG1fcHJldmlvdXNSZWdpb25Db3VudCA9IG1fcmVnaW9uTGlzdC5zaXplKCk7
IH07CiAKICAgICB2b2lkIHNldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0IFJlbmRlckJveCosIFJl
bmRlclJlZ2lvbiosIFJlbmRlclJlZ2lvbiopOwotICAgIHZvaWQgZ2V0UmVnaW9uUmFuZ2VGb3JC
b3goY29uc3QgUmVuZGVyQm94KiwgUmVuZGVyUmVnaW9uKiYgc3RhcnRSZWdpb24sIFJlbmRlclJl
Z2lvbiomIGVuZFJlZ2lvbikgY29uc3Q7CisgICAgYm9vbCBnZXRSZWdpb25SYW5nZUZvckJveChj
b25zdCBSZW5kZXJCb3gqLCBSZW5kZXJSZWdpb24qJiBzdGFydFJlZ2lvbiwgUmVuZGVyUmVnaW9u
KiYgZW5kUmVnaW9uKSBjb25zdDsKKyAgICBib29sIGhhc1JlZ2lvblJhbmdlRm9yQm94KGNvbnN0
IFJlbmRlckJveCopIGNvbnN0OwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIG9iamVjdCBpcyBpbiBy
ZWdpb24gYW5kIHRoZSByZWdpb24gaXMgcGFydCBvZiB0aGlzIGZsb3cgdGhyZWFkLgogICAgIGJv
b2wgb2JqZWN0SW5GbG93UmVnaW9uKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlclJl
Z2lvbiopIGNvbnN0OwpAQCAtMjQ0LDYgKzI0NSw4IEBAIHByb3RlY3RlZDoKIAogICAgIGlubGlu
ZSBjb25zdCBSZW5kZXJCb3gqIGN1cnJlbnRBY3RpdmVSZW5kZXJCb3goKSBjb25zdDsKIAorICAg
IGJvb2wgZ2V0UmVnaW9uUmFuZ2VGb3JCb3hGcm9tQ2FjaGVkSW5mbyhjb25zdCBSZW5kZXJCb3gq
IGJveCwgUmVuZGVyUmVnaW9uKiYgc3RhcnRSZWdpb24sIFJlbmRlclJlZ2lvbiomIGVuZFJlZ2lv
bikgY29uc3Q7CisKICAgICBSZW5kZXJSZWdpb25MaXN0IG1fcmVnaW9uTGlzdDsKICAgICB1bnNp
Z25lZCBzaG9ydCBtX3ByZXZpb3VzUmVnaW9uQ291bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMjM0ODc3Ni4uMzcwMjQzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTUyNSw3ICs1MjUsNyBAQCBSZW5k
ZXJGbG93VGhyZWFkKiBSZW5kZXJPYmplY3Q6OmxvY2F0ZUZsb3dUaHJlYWRDb250YWluaW5nQmxv
Y2soKSBjb25zdAogCiAgICAgLy8gU2VlIGlmIHdlIGhhdmUgdGhlIHRocmVhZCBjYWNoZWQgYmVj
YXVzZSB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGxheW91dC4KICAgICBSZW5kZXJGbG93VGhyZWFk
KiBmbG93VGhyZWFkID0gdmlldygpLmZsb3dUaHJlYWRDb250cm9sbGVyKCkuY3VycmVudFJlbmRl
ckZsb3dUaHJlYWQoKTsKLSAgICBpZiAoZmxvd1RocmVhZCkKKyAgICBpZiAoZmxvd1RocmVhZCAm
JiAoZmxvd1RocmVhZFN0YXRlKCkgPT0gZmxvd1RocmVhZC0+Zmxvd1RocmVhZFN0YXRlKCkpKQog
ICAgICAgICByZXR1cm4gZmxvd1RocmVhZDsKICAgICAKICAgICAvLyBOb3QgaW4gdGhlIG1pZGRs
ZSBvZiBsYXlvdXQgc28gaGF2ZSB0byBmaW5kIHRoZSB0aHJlYWQgdGhlIHNsb3cgd2F5LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAppbmRleCA1ZWJiYmNmLi40ZGQ1
NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcApAQCAtNDcx
LDIzICs0NzEsMjIgQEAgdm9pZCBSZW5kZXJSZWdpb246OmVuc3VyZU92ZXJmbG93Rm9yQm94KGNv
bnN0IFJlbmRlckJveCogYm94LCBSZWZQdHI8UmVuZGVyT3ZlcmYKIAogTGF5b3V0UmVjdCBSZW5k
ZXJSZWdpb246OnJlY3RGbG93UG9ydGlvbkZvckJveChjb25zdCBSZW5kZXJCb3gqIGJveCwgY29u
c3QgTGF5b3V0UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVn
aW9uID0gMDsKLSAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7Ci0gICAgbV9mbG93VGhy
ZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwot
CiAgICAgTGF5b3V0UmVjdCBtYXBwZWRSZWN0ID0gbV9mbG93VGhyZWFkLT5tYXBGcm9tTG9jYWxU
b0Zsb3dUaHJlYWQoYm94LCByZWN0KTsKLSAgICBpZiAoZmxvd1RocmVhZCgpLT5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIGlmICh0aGlzICE9IHN0YXJ0UmVnaW9uKQotICAg
ICAgICAgICAgbWFwcGVkUmVjdC5zaGlmdFlFZGdlVG8oc3RkOjptYXg8TGF5b3V0VW5pdD4obG9n
aWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCksIG1hcHBlZFJlY3QueSgpKSk7CiAKLSAgICAg
ICAgaWYgKHRoaXMgIT0gZW5kUmVnaW9uKQotICAgICAgICAgICAgbWFwcGVkUmVjdC5zZXRIZWln
aHQoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgc3RkOjptaW48TGF5b3V0VW5pdD4obG9naWNhbEJv
dHRvbUZvckZsb3dUaHJlYWRDb250ZW50KCkgLSBtYXBwZWRSZWN0LnkoKSwgbWFwcGVkUmVjdC5o
ZWlnaHQoKSkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAodGhpcyAhPSBzdGFydFJlZ2lv
bikKLSAgICAgICAgICAgIG1hcHBlZFJlY3Quc2hpZnRYRWRnZVRvKHN0ZDo6bWF4PExheW91dFVu
aXQ+KGxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpLCBtYXBwZWRSZWN0LngoKSkpOwot
ICAgICAgICAgICAgCi0gICAgICAgIGlmICh0aGlzICE9IGVuZFJlZ2lvbikKLSAgICAgICAgICAg
IG1hcHBlZFJlY3Quc2V0V2lkdGgoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgc3RkOjptaW48TGF5
b3V0VW5pdD4obG9naWNhbEJvdHRvbUZvckZsb3dUaHJlYWRDb250ZW50KCkgLSBtYXBwZWRSZWN0
LngoKSwgbWFwcGVkUmVjdC53aWR0aCgpKSkpOworICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdp
b24gPSBudWxscHRyOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gbnVsbHB0cjsKKyAg
ICBpZiAobV9mbG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9u
LCBlbmRSZWdpb24pKSB7CisgICAgICAgIGlmIChmbG93VGhyZWFkKCktPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpIHsKKyAgICAgICAgICAgIGlmICh0aGlzICE9IHN0YXJ0UmVnaW9uKQorICAg
ICAgICAgICAgICAgIG1hcHBlZFJlY3Quc2hpZnRZRWRnZVRvKHN0ZDo6bWF4PExheW91dFVuaXQ+
KGxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpLCBtYXBwZWRSZWN0LnkoKSkpOworICAg
ICAgICAgICAgaWYgKHRoaXMgIT0gZW5kUmVnaW9uKQorICAgICAgICAgICAgICAgIG1hcHBlZFJl
Y3Quc2V0SGVpZ2h0KHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIHN0ZDo6bWluPExheW91dFVuaXQ+
KGxvZ2ljYWxCb3R0b21Gb3JGbG93VGhyZWFkQ29udGVudCgpIC0gbWFwcGVkUmVjdC55KCksIG1h
cHBlZFJlY3QuaGVpZ2h0KCkpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAo
dGhpcyAhPSBzdGFydFJlZ2lvbikKKyAgICAgICAgICAgICAgICBtYXBwZWRSZWN0LnNoaWZ0WEVk
Z2VUbyhzdGQ6Om1heDxMYXlvdXRVbml0Pihsb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQo
KSwgbWFwcGVkUmVjdC54KCkpKTsgICAgCisgICAgICAgICAgICBpZiAodGhpcyAhPSBlbmRSZWdp
b24pCisgICAgICAgICAgICAgICAgbWFwcGVkUmVjdC5zZXRXaWR0aChzdGQ6Om1heDxMYXlvdXRV
bml0PigwLCBzdGQ6Om1pbjxMYXlvdXRVbml0Pihsb2dpY2FsQm90dG9tRm9yRmxvd1RocmVhZENv
bnRlbnQoKSAtIG1hcHBlZFJlY3QueCgpLCBtYXBwZWRSZWN0LndpZHRoKCkpKSk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAoc2hvdWxkQ2xpcEZsb3dUaHJlYWRDb250ZW50KCkpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>