<?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>129990</bug_id>
          
          <creation_ts>2014-03-08 22:58:56 -0800</creation_ts>
          <short_desc>Avoid copy-prone idiom &quot;for (auto item : collection)&quot;</short_desc>
          <delta_ts>2014-03-23 13:43:25 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>alecflett</cc>
    
    <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>988707</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-08 22:58:56 -0800</bug_when>
    <thetext>Avoid copy-prone idiom &quot;for (auto item : collection)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988710</commentid>
    <comment_count>1</comment_count>
      <attachid>226253</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-08 23:08:58 -0800</bug_when>
    <thetext>Created attachment 226253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988937</commentid>
    <comment_count>2</comment_count>
      <attachid>226317</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-10 10:27:57 -0700</bug_when>
    <thetext>Created attachment 226317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988939</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-10 10:29:21 -0700</bug_when>
    <thetext>To find these I used this command:

% git grep &quot;for (auto .*:&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988942</commentid>
    <comment_count>4</comment_count>
      <attachid>226317</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-03-10 10:35:29 -0700</bug_when>
    <thetext>Comment on attachment 226317
Patch

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

&gt; Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp:344
&gt; -    for (auto breakpointID : breakpointIDs) {
&gt; +    for (auto&amp; breakpointID : m_breakpointIdentifierToDebugServerBreakpointIDs.take(breakpointIdentifier)) {

breakpointID is a size_t, so auto&amp; isn&apos;t making the code better.

I&apos;d much prefer an explicitly named type to auto here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989270</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-10 23:46:49 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I&apos;d much prefer an explicitly named type to auto here.

I’ll change it. But don’t you always prefer an explicitly named type?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989516</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-11 20:07:17 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp:344
&gt; &gt; -    for (auto breakpointID : breakpointIDs) {
&gt; &gt; +    for (auto&amp; breakpointID : m_breakpointIdentifierToDebugServerBreakpointIDs.take(breakpointIdentifier)) {
&gt; 
&gt; breakpointID is a size_t, so auto&amp; isn&apos;t making the code better.

Right, but it also doesn’t make it any worse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989517</commentid>
    <comment_count>7</comment_count>
      <attachid>226468</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-11 20:09:13 -0700</bug_when>
    <thetext>Created attachment 226468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989663</commentid>
    <comment_count>8</comment_count>
      <attachid>226468</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-03-12 09:44:49 -0700</bug_when>
    <thetext>Comment on attachment 226468
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990063</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-13 10:52:27 -0700</bug_when>
    <thetext>Committed r165546: &lt;http://trac.webkit.org/changeset/165546&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990159</commentid>
    <comment_count>10</comment_count>
      <attachid>226468</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-03-13 14:22:46 -0700</bug_when>
    <thetext>Comment on attachment 226468
Patch

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

&gt; Source/WebCore/dom/Node.cpp:730
&gt; -    HashSet&lt;LiveNodeList*&gt; liveNodeLists = std::move(m_listsInvalidatedAtDocument);
&gt; -    for (auto it : liveNodeLists)
&gt; -        it-&gt;invalidateCache(attrName);
&gt; -
&gt; -    HashSet&lt;HTMLCollection*&gt; collectionLists = std::move(m_collectionsInvalidatedAtDocument);
&gt; -    for (auto it : collectionLists)
&gt; -        it-&gt;invalidateCache(attrName);
&gt; +    for (auto* list : std::move(m_listsInvalidatedAtDocument))
&gt; +        list-&gt;invalidateCache(attrName);
&gt; +    for (auto* list : std::move(m_collectionsInvalidatedAtDocument))
&gt; +        list-&gt;invalidateCache(attrName);

Looks like this part is making many tests crash. I suppose the collection dies immediately after the move.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990162</commentid>
    <comment_count>11</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-03-13 14:28:50 -0700</bug_when>
    <thetext>Reverted that part in https://trac.webkit.org/r165566</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990180</commentid>
    <comment_count>12</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-03-13 15:29:19 -0700</bug_when>
    <thetext>This seems to have caused 50+ tests to assert:

&lt;http://build.webkit.org/results/Apple%20Mavericks%20Debug%20WK2%20(Tests)/r165564%20(3310)/results.html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990181</commentid>
    <comment_count>13</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-03-13 15:29:48 -0700</bug_when>
    <thetext>Oh, thanks Antti. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990183</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-13 15:32:38 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Reverted that part in https://trac.webkit.org/r165566

Thanks Antti. I would have used auto in the revert, but otherwise it’s exactly what I would do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990303</commentid>
    <comment_count>15</comment_count>
      <attachid>226468</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-03-13 22:21:15 -0700</bug_when>
    <thetext>Comment on attachment 226468
Patch

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

&gt;&gt; Source/WebCore/dom/Node.cpp:730
&gt;&gt; +        list-&gt;invalidateCache(attrName);
&gt; 
&gt; Looks like this part is making many tests crash. I suppose the collection dies immediately after the move.

Yeah, the whole point of this code was to swap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990700</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-14 15:22:57 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Yeah, the whole point of this code was to swap.

No, the point of the code was to move. The swap is just a tricky way to do a move when C++ didn’t have swap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990701</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-14 15:23:29 -0700</bug_when>
    <thetext>when C++ didn’t have move.

Antti’s patch works around some problem related to doing a move on the collection in a for loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993694</commentid>
    <comment_count>18</comment_count>
      <attachid>226468</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-03-23 13:43:25 -0700</bug_when>
    <thetext>Comment on attachment 226468
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/Node.cpp:730
&gt;&gt;&gt; +        list-&gt;invalidateCache(attrName);
&gt;&gt; 
&gt;&gt; Looks like this part is making many tests crash. I suppose the collection dies immediately after the move.
&gt; 
&gt; Yeah, the whole point of this code was to swap.

I had a chance to talk with someone work who works on clang,
and he clarified to me that std::move doesn&apos;t create a copy.
It simply casts &amp; to &amp;&amp;, so the temporary is never created here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226253</attachid>
            <date>2014-03-08 23:08:58 -0800</date>
            <delta_ts>2014-03-10 10:27:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129990-20140308230858.patch</filename>
            <type>text/plain</type>
            <size>38474</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YjAzYzdlYjlmM2Q5NTRjNjJlYTYwYWRkMDZhMjc4OGZhOTRlYTcxLi41NDJmNjFlMTg1MmQ1Njhl
MWEyNDlkYTBhODczYzdlNDcyNWUzYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNC0wMy0wOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQXZvaWQgY29weS1wcm9uZSBpZGlvbSAiZm9yIChhdXRvIGl0ZW0gOiBjb2xsZWN0
aW9uKSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
OTk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aGVhcC9Db2RlQmxvY2tTZXQuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0OjppdGVyYXRl
KTogVXNlIGF1dG8mIHRvIGJlIHN1cmUgd2UgZG9uJ3QgY29weSBieSBhY2NpZGVudC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9y
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uTG9nKTogVXNlIGF1
dG8qIHRvCisgICAgICAgIG1ha2UgZXhwbGljaXQgdGhhdCB3ZSBhcmUgaXRlcmF0aW5nIHRocm91
Z2ggcG9pbnRlcnMuCisgICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNw
YXRjaEJyZWFrcG9pbnRBY3Rpb25Tb3VuZCk6IERpdHRvLgorICAgICAgICAoSW5zcGVjdG9yOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uUHJvYmUpOiBEaXR0by4K
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3Bv
aW50KTogVXNlIGF1dG8mLCBhbmQgYWxzbworICAgICAgICBnZXQgcmlkIG9mIGFuIHVubmVlZGVk
IGxvY2FsIHZhcmlhYmxlLgorCiAyMDE0LTAzLTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICAzMi1iaXQgeDg2IGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uIHJldHVy
bnMgdG8gd3JvbmcgbG9jYXRpb24gYWZ0ZXIgYSBzdGFjayBvdmVyZmxvdy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBjN2M0ZjIwY2ZjNDEzMjI4YzE4N2IwN2FmNGU4ODRkYWRmZjQ4ZGVhLi45MjQ2MzEzZDI5MzNk
NWEzMWFkNWZiYmM3MjZkODA5NzViMWRjNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAK
KzIwMTQtMDMtMDggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEF2
b2lkIGNvcHktcHJvbmUgaWRpb20gImZvciAoYXV0byBpdGVtIDogY29sbGVjdGlvbikiCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk5OTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3N0IG9mIHRoZXNl
IGNoYW5nZXMgaGF2ZSBubyBlZmZlY3QuIEEgZmV3IG9mIHRoZW0gZ2V0IHJpZCBvZiB1bndhbnRl
ZAorICAgICAgICBjb3B5aW5nIG9mIHRoZSBpdGVtcyBhcyB3ZSBpdGVyYXRlIHRoZW0uIEZvdW5k
IHRoZXNlIHdpdGggdGhlIGNvbW1hbmQKKyAgICAgICAgJ2dpdCBncmVwICJmb3IgKGF1dG8gLio6
Iicgb3IgdGhlIGVxdWl2YWxlbnQuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OklEQktleURhdGEpOiBV
c2UgYXV0byYgdG8gYXZvaWQgY29weWluZyB0aGUga2V5cy4KKyAgICAgICAgKFdlYkNvcmU6OklE
QktleURhdGE6Om1heWJlQ3JlYXRlSURCS2V5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJ
REJLZXlEYXRhOjppc29sYXRlZENvcHkpOiBEaXR0by4KKworICAgICAgICAqIGRvbS9Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xs
ZWN0aW9uQ2FjaGVzKTogVXNlIGF1dG8qCisgICAgICAgIHRvIG1ha2UgZXhwbGljaXQgdGhlIGZh
Y3QgdGhhdCB0aGVzZSBhcmUgcG9pbnRlcnMuIFN0b3AgdXNpbmcgIml0IiBmb3IKKyAgICAgICAg
YSB2YXJpYWJsZSB0aGF0IGlzIG5vdCBhbiBpdGVyYXRvci4gR2V0IHJpZCBvZiB1bm5lZWRlZCBs
b2NhbCB2YXJpYWJsZXMKKyAgICAgICAgZm9yIHRoZSBjb2xsZWN0aW9ucyB0aGVtc2VsdmVzLgor
CisgICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxp
c3RzTm9kZURhdGE6OmFkb3B0RG9jdW1lbnQpOiBVc2UgYXV0byYgdG8gbWFrZSBzdXJlIHdlCisg
ICAgICAgIGRvbid0IGRvIGFueSB1bm5lY2Vzc2FyeSBjb3B5aW5nLiBTdG9wIHVzaW5nICJpdCIg
Zm9yIGEgdmFyaWFibGUgdGhhdAorICAgICAgICBpcyBub3QgYW4gaXRlcmF0b3IuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpsYXN0Um93KTogVXNlIGF1dG8qIHRvIGJlIGV4cGxp
Y2l0CisgICAgICAgIHRoYXQgdGhlc2UgYXJlIHBvaW50ZXJzLgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JOb2RlRmluZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5v
ZGVGaW5kZXI6OnNlYXJjaFVzaW5nRE9NVHJlZVRyYXZlcnNhbCk6IERpdHRvLgorICAgICAgICAq
IHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmludGVycHJl
dGF0aW9uc0ZvckN1cnJlbnRSb290KTogRGl0dG8uIEFsc28gZ290IHJpZCBvZgorICAgICAgICBh
biB1bm5lY2Vzc2FyeSBsb2NhbCB2YXJpYWJsZS4KKworICAgICAgICAqIHBsYXRmb3JtL0ZpbGVD
aG9vc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlcyk6
IFVzZSBhdXRvJi4gQWxzbyBmaXggYSBGSVhNRS4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9v
c2VyOjpjaG9vc2VNZWRpYUZpbGVzKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6ZSk6
IFVzZSBhdXRvJi4KKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlRnJvbUNhY2hlQW5kSW52YWxpZGF0ZURlcGVu
ZGVuY2llcyk6IFVzZSBhdXRvKi4KKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VDb250YWluZXI6Om1hcmtBbGxDbGllbnRzRm9ySW52YWxpZGF0aW9uKTogVXNlIGF1dG8qLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6Om1hcmtBbGxDbGll
bnRMYXllcnNGb3JJbnZhbGlkYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyOjpyZWdpc3RlclJlc291cmNlKTogRGl0dG8uCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyU3VwcG9ydDo6bGF5b3V0Q2hpbGRyZW4pOiBVcGRhdGVkIHRvIHVzZSBhIG1v
cmUgc3BlY2lmaWMKKyAgICAgICAgdHlwZSwgdG8gdXNlIGF1dG8qIGluc3RlYWQgb2Ygb2YgYXV0
bywgYW5kIHRvIGVsaW1pbmF0ZSB0aGUgc2xpZ2h0bHkgc2xvcHBpbHkKKyAgICAgICAgY2FwaXRh
bGl6ZWQgYW5kIG5vdC1zby1zbGlnaHRseSB1bmdyYW1tYXRpY2FsIG5vdGxheW91dGVkT2JqZWN0
cy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OmFwcGx5U3Ryb2tlU3R5bGVU
b0NvbnRleHQpOiBVc2UgYXV0byYuCisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0
Ojp1cGRhdGVNYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyk6IFVzZSBhdXRvKi4K
KworICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXI6OnJlc291cmNlQ29udGFp
bnNDeWNsZXMpOiBVc2UgYXV0byouCisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDeWNs
ZVNvbHZlcjo6cmVzb2x2ZUN5Y2xlcyk6IERpdHRvLiBBbHNvIGxpbmVhZ2VPZlR5cGUuCisKKyAg
ICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KTogVXNlIGF1
dG8qLgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoRWxlbWVudDo6aW52YWxpZGF0ZU1QYXRoRGVwZW5kZW5jaWVzKTogRGl0dG8uCisK
IDIwMTQtMDMtMDggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUgbWF5IG1vdmUgSWRlbnRpZmllcnMgYmV0d2VlbiB3b3JsZHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwppbmRleCBhODk3YTEwNzNhYTFlMTUxMDg4YjJjZDY0ZjFlNWM1MTY0NDE5
YTAxLi4xNDUzMzczZGU5ODE5NWVhYzg0ZjU1NDQ2OGNiZWM4MzZkNmMwYjRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMDMtMDggIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGNvcHktcHJvbmUgaWRpb20gImZvciAoYXV0byBp
dGVtIDogY29sbGVjdGlvbikiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjk5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9k
b2N1bWVudEZyYWdtZW50V2l0aE5vZGVzQXNQYXJhZ3JhcGhzOl0pOgorICAgICAgICBVc2UgYXV0
byouIEFsc28gcmVtb3ZlZCB1bmVlZGVkIEFTU0VSVF9OT19FWENFUFRJT04sIHdoaWNoIGlzIGFs
cmVhZHkKKyAgICAgICAgdGhlIGRlZmF1bHQgd2l0aG91dCBzcGVjaWZ5aW5nIGl0IGV4cGxpY2l0
bHkuCisKIDIwMTQtMDMtMDcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgdGhlIHJlbWFpbmluZyBXZWJLaXQyIGhlYWRlcnMgdG8gV0VCS0lUMl9I
RUFERVJTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTI2YjUxZjRlMTFkNTE5ZjU5MjNhODgyOTZhYTU2ODc1MTg5
YzdiYi4uNDIzODQ1ODk1MGY5ODliMzdjMmU0Y2IyZDc5ZGQzNWE2NDcwZWQwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI0IEBACisyMDE0LTAzLTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBBdm9pZCBjb3B5LXByb25lIGlkaW9tICJmb3IgKGF1dG8gaXRlbSA6
IGNvbGxlY3Rpb24pIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI5OTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjphcHBseVByb3Bl
cnRpZXMpOiBVc2UgYXV0byYuCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUpOiBVc2UgYXV0byYKKyAgICAgICAgZXZlbiB0
aG91Z2ggdGhlIHR5cGUgaXMgYSBzY2FsYXIuIFRoaXMgZG9lcyBubyBoYXJtIGFuZCBtYWtlcyBp
dCBlYXNpZXIKKyAgICAgICAgdG8gc3BvdCB1c2VzIHRoYXQgdHJpZ2dlciB1bm5lY2Vzc2FyeSBj
b3B5aW5nIHdpdGggZ3JlcC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OmRlY29kZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpkdW1wQ2hhbmdlZExheWVy
cyk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJUcmVl
KTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6dmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQpOiBEaXR0by4KKwog
MjAxNC0wMy0wOCAgSmFlIEh5dW4gUGFyayAgPGphZXBhcmtAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZW1vdmUgdW5uZWNlc3NhcnkgY2FzdGluZyBpbiBOZXR3b3JrUHJvY2Vzc01haW5Vbml4LmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAppbmRleCAxMDRmZmM0
YWMwMjU5ZmUwMGJmNjhhYWY4NzI0YmFlYzFiZDRjZTQzLi43ZjUwZDVhZWMzMDlhYTQwNzRiMGRi
ZWIxYzg2ODgzZjk4YWFhYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Db2RlQmxvY2tTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxv
Y2tTZXQuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgLy8gdmlzaXRlZC4KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGUoRnVuY3RvciYgZnVuY3RvcikK
ICAgICB7Ci0gICAgICAgIGZvciAoYXV0byAmY29kZUJsb2NrIDogbV9zZXQpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBjb2RlQmxvY2sgOiBtX3NldCkgewogICAgICAgICAgICAgYm9vbCBkb25lID0g
ZnVuY3Rvcihjb2RlQmxvY2spOwogICAgICAgICAgICAgaWYgKGRvbmUpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Nj
cmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDEyZGJhZWEzNjM0MjlmOTAzMDMxYTE4NmMwYTZmOTJh
OTBjNDQzMTUuLjQzNmJlNWYzYjdjZjRlZjM4NDU4MDBiY2Y3N2JhYTdjZGRiOGU4MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0
Y2hCcmVha3BvaW50QWN0aW9uTG9nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW4KIAogICAg
IFZlY3RvcjxTY3JpcHREZWJ1Z0xpc3RlbmVyKj4gbGlzdGVuZXJzQ29weTsKICAgICBjb3B5VG9W
ZWN0b3IoKmxpc3RlbmVycywgbGlzdGVuZXJzQ29weSk7Ci0gICAgZm9yIChhdXRvIGxpc3RlbmVy
IDogbGlzdGVuZXJzQ29weSkKKyAgICBmb3IgKGF1dG8qIGxpc3RlbmVyIDogbGlzdGVuZXJzQ29w
eSkKICAgICAgICAgbGlzdGVuZXItPmJyZWFrcG9pbnRBY3Rpb25Mb2coZXhlYywgbWVzc2FnZSk7
CiB9CiAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRj
aEJyZWFrcG9pbnRBY3Rpb25Tb3VuZChFeGVjU3RhdGUqIGV4ZWMsIGludCBicmVhawogCiAgICAg
VmVjdG9yPFNjcmlwdERlYnVnTGlzdGVuZXIqPiBsaXN0ZW5lcnNDb3B5OwogICAgIGNvcHlUb1Zl
Y3RvcigqbGlzdGVuZXJzLCBsaXN0ZW5lcnNDb3B5KTsKLSAgICBmb3IgKGF1dG8gbGlzdGVuZXIg
OiBsaXN0ZW5lcnNDb3B5KQorICAgIGZvciAoYXV0byogbGlzdGVuZXIgOiBsaXN0ZW5lcnNDb3B5
KQogICAgICAgICBsaXN0ZW5lci0+YnJlYWtwb2ludEFjdGlvblNvdW5kKGJyZWFrcG9pbnRBY3Rp
b25JZGVudGlmaWVyKTsKIH0KIApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OmRpc3BhdGNoQnJlYWtwb2ludEFjdGlvblByb2JlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU2NyCiAKICAgICBWZWN0b3I8U2NyaXB0RGVidWdMaXN0ZW5lcio+IGxpc3RlbmVyc0NvcHk7
CiAgICAgY29weVRvVmVjdG9yKCpsaXN0ZW5lcnMsIGxpc3RlbmVyc0NvcHkpOwotICAgIGZvciAo
YXV0byBsaXN0ZW5lciA6IGxpc3RlbmVyc0NvcHkpCisgICAgZm9yIChhdXRvKiBsaXN0ZW5lciA6
IGxpc3RlbmVyc0NvcHkpCiAgICAgICAgIGxpc3RlbmVyLT5icmVha3BvaW50QWN0aW9uUHJvYmUo
ZXhlYywgYWN0aW9uLCBtX2hpdENvdW50LCBzYW1wbGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuY3BwCmluZGV4IGEzMTRlMTZhYWNlMmQ3NTVhMTY0MWVhMTYxODliY2M5N2Q5
NzhmZDAuLmJmOGFjYjUyMjU5N2QzZjgzY2VhZGVmMzQxMzk1NTgyZWQ3NmUyNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zNDEsOCArMzQxLDcgQEAgdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBicmVha3AKIHsKICAgICBtX2phdmFTY3JpcHRCcmVha3BvaW50cy5yZW1vdmUoYnJl
YWtwb2ludElkZW50aWZpZXIpOwogCi0gICAgVmVjdG9yPEpTQzo6QnJlYWtwb2ludElEPiBicmVh
a3BvaW50SURzID0gbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50
SURzLnRha2UoYnJlYWtwb2ludElkZW50aWZpZXIpOwotICAgIGZvciAoYXV0byBicmVha3BvaW50
SUQgOiBicmVha3BvaW50SURzKSB7CisgICAgZm9yIChhdXRvJiBicmVha3BvaW50SUQgOiBtX2Jy
ZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMudGFrZShicmVha3Bv
aW50SWRlbnRpZmllcikpIHsKICAgICAgICAgY29uc3QgVmVjdG9yPFNjcmlwdEJyZWFrcG9pbnRB
Y3Rpb24+JiBicmVha3BvaW50QWN0aW9ucyA9IHNjcmlwdERlYnVnU2VydmVyKCkuZ2V0QWN0aW9u
c0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludElEKTsKICAgICAgICAgZm9yIChhdXRvJiBhY3Rpb24g
OiBicmVha3BvaW50QWN0aW9ucykKICAgICAgICAgICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LT5yZWxlYXNlT2JqZWN0R3JvdXAob2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKGFjdGlv
bikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNw
cAppbmRleCAyYTlmZGM5MjNlYWExMmNkNjAwZjExNGZlYjA5NWE2ZGU3ZmIzZjMyLi43ZjMxYzQ3
MzlkODZhZmMzYzhiZDYwMmE1N2JmNTkxNWNlZGMyNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcApAQCAtNDksNyArNDksNyBAQCBJREJL
ZXlEYXRhOjpJREJLZXlEYXRhKGNvbnN0IElEQktleSoga2V5KQogICAgIGNhc2UgSURCS2V5OjpJ
bnZhbGlkVHlwZToKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJREJLZXk6OkFycmF5VHlwZToK
LSAgICAgICAgZm9yIChhdXRvIGtleTIgOiBrZXktPmFycmF5KCkpCisgICAgICAgIGZvciAoYXV0
byYga2V5MiA6IGtleS0+YXJyYXkoKSkKICAgICAgICAgICAgIGFycmF5VmFsdWUuYXBwZW5kKElE
QktleURhdGEoa2V5Mi5nZXQoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIElEQktleTo6
U3RyaW5nVHlwZToKQEAgLTc4LDcgKzc4LDcgQEAgUGFzc1JlZlB0cjxJREJLZXk+IElEQktleURh
dGE6Om1heWJlQ3JlYXRlSURCS2V5KCkgY29uc3QKICAgICBjYXNlIElEQktleTo6QXJyYXlUeXBl
OgogICAgICAgICB7CiAgICAgICAgICAgICBJREJLZXk6OktleUFycmF5IGFycmF5OwotICAgICAg
ICAgICAgZm9yIChhdXRvIGtleURhdGEgOiBhcnJheVZhbHVlKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIGtleURhdGEgOiBhcnJheVZhbHVlKSB7CiAgICAgICAgICAgICAgICAgYXJyYXkuYXBw
ZW5kKGtleURhdGEubWF5YmVDcmVhdGVJREJLZXkoKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KGFycmF5Lmxhc3QoKSk7CiAgICAgICAgICAgICB9CkBAIC0xMTAsNyArMTEwLDcgQEAgSURCS2V5
RGF0YSBJREJLZXlEYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIGNhc2UgSURCS2V5OjpJ
bnZhbGlkVHlwZToKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBjYXNlIElEQktleTo6QXJy
YXlUeXBlOgotICAgICAgICBmb3IgKGF1dG8ga2V5IDogYXJyYXlWYWx1ZSkKKyAgICAgICAgZm9y
IChhdXRvJiBrZXkgOiBhcnJheVZhbHVlKQogICAgICAgICAgICAgcmVzdWx0LmFycmF5VmFsdWUu
YXBwZW5kKGtleS5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
Y2FzZSBJREJLZXk6OlN0cmluZ1R5cGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNDNkM2ZjZmNhZmQ0
YThmZGUxNTk1OTcyODZhOTE4NzcwYzc3NTg3Ni4uNGYzNjJhODg1MzgwYTFjOWM0ZmZhZjIwZGNh
MzY2MDdjMTE5MWQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNzI0LDEzICs3MjQsMTAgQEAgdm9p
ZCBEb2N1bWVudDo6aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcyhjb25zdCBR
dWFsaWZpZWROYW1lKiBhdHRyTmEKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgbV9pbkludmFs
aWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMgPSB0cnVlOwogI2VuZGlmCi0gICAgSGFz
aFNldDxMaXZlTm9kZUxpc3QqPiBsaXZlTm9kZUxpc3RzID0gc3RkOjptb3ZlKG1fbGlzdHNJbnZh
bGlkYXRlZEF0RG9jdW1lbnQpOwotICAgIGZvciAoYXV0byBpdCA6IGxpdmVOb2RlTGlzdHMpCi0g
ICAgICAgIGl0LT5pbnZhbGlkYXRlQ2FjaGUoYXR0ck5hbWUpOwotCi0gICAgSGFzaFNldDxIVE1M
Q29sbGVjdGlvbio+IGNvbGxlY3Rpb25MaXN0cyA9IHN0ZDo6bW92ZShtX2NvbGxlY3Rpb25zSW52
YWxpZGF0ZWRBdERvY3VtZW50KTsKLSAgICBmb3IgKGF1dG8gaXQgOiBjb2xsZWN0aW9uTGlzdHMp
Ci0gICAgICAgIGl0LT5pbnZhbGlkYXRlQ2FjaGUoYXR0ck5hbWUpOworICAgIGZvciAoYXV0byog
bGlzdCA6IHN0ZDo6bW92ZShtX2xpc3RzSW52YWxpZGF0ZWRBdERvY3VtZW50KSkKKyAgICAgICAg
bGlzdC0+aW52YWxpZGF0ZUNhY2hlKGF0dHJOYW1lKTsKKyAgICBmb3IgKGF1dG8qIGxpc3QgOiBz
dGQ6Om1vdmUobV9jb2xsZWN0aW9uc0ludmFsaWRhdGVkQXREb2N1bWVudCkpCisgICAgICAgIGxp
c3QtPmludmFsaWRhdGVDYWNoZShhdHRyTmFtZSk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
IG1faW5JbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzID0gZmFsc2U7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCBlZjczNmJhYWNkMTZiYzhkYjA4NTdh
YTMxMDM4NzlmNTE2YTU5Nzk1Li5jOWU5OTlmNjJmNDUyOWE3YjFmM2UwZWFiM2Q3ZmE1MDA1ODY2
Y2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0zMywxNSArMzMsMTYgQEAKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlRh
Z05vZGVMaXN0LmgiCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotI2luY2x1ZGUgIlRleHRUcmFj
ay5oIgotI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMYWJlbHNOb2RlTGlzdDsKQEAgLTIzMSwyNyArMjMy
LDI3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IGZvciAoYXV0byBpdCA6IG1fYXRvbWljTmFtZUNhY2hlcykKLSAgICAgICAgICAgIGl0LnZhbHVl
LT5pbnZhbGlkYXRlQ2FjaGUoKm9sZERvY3VtZW50KTsKKyAgICAgICAgZm9yIChhdXRvJiBjYWNo
ZSA6IG1fYXRvbWljTmFtZUNhY2hlcy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGNhY2hlLT5pbnZh
bGlkYXRlQ2FjaGUoKm9sZERvY3VtZW50KTsKIAotICAgICAgICBmb3IgKGF1dG8gaXQgOiBtX25h
bWVDYWNoZXMpCi0gICAgICAgICAgICBpdC52YWx1ZS0+aW52YWxpZGF0ZUNhY2hlKCpvbGREb2N1
bWVudCk7CisgICAgICAgIGZvciAoYXV0byYgY2FjaGUgOiBtX25hbWVDYWNoZXMudmFsdWVzKQor
ICAgICAgICAgICAgY2FjaGUtPmludmFsaWRhdGVDYWNoZSgqb2xkRG9jdW1lbnQpOwogCi0gICAg
ICAgIGZvciAoYXV0byBpdCA6IG1fdGFnTm9kZUxpc3RDYWNoZU5TKSB7Ci0gICAgICAgICAgICBM
aXZlTm9kZUxpc3QmIGxpc3QgPSAqaXQudmFsdWU7Ci0gICAgICAgICAgICBBU1NFUlQoIWxpc3Qu
aXNSb290ZWRBdERvY3VtZW50KCkpOwotICAgICAgICAgICAgbGlzdC5pbnZhbGlkYXRlQ2FjaGUo
Km9sZERvY3VtZW50KTsKKyAgICAgICAgZm9yIChhdXRvJiBsaXN0IDogbV90YWdOb2RlTGlzdENh
Y2hlTlMudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCghbGlzdC0+aXNSb290ZWRBdERv
Y3VtZW50KCkpOworICAgICAgICAgICAgbGlzdC0+aW52YWxpZGF0ZUNhY2hlKCpvbGREb2N1bWVu
dCk7CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGF1dG8gaXQgOiBtX2NhY2hlZENvbGxlY3Rp
b25zKQotICAgICAgICAgICAgaXQudmFsdWUtPmludmFsaWRhdGVDYWNoZSgqb2xkRG9jdW1lbnQp
OworICAgICAgICBmb3IgKGF1dG8mIGNvbGxlY3Rpb24gOiBtX2NhY2hlZENvbGxlY3Rpb25zLnZh
bHVlcygpKQorICAgICAgICAgICAgY29sbGVjdGlvbi0+aW52YWxpZGF0ZUNhY2hlKCpvbGREb2N1
bWVudCk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIE5vZGVMaXN0c05vZGVEYXRhKCkKICAgICAg
ICAgOiBtX2NoaWxkTm9kZUxpc3QobnVsbHB0cikKICAgICAgICAgLCBtX2VtcHR5Q2hpbGROb2Rl
TGlzdChudWxscHRyKQotICAgIHsgfQorICAgIHsKKyAgICB9CiAKICAgICBzdGQ6OnBhaXI8dW5z
aWduZWQgY2hhciwgQXRvbWljU3RyaW5nPiBuYW1lZENvbGxlY3Rpb25LZXkoQ29sbGVjdGlvblR5
cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAKaW5kZXggMGU0YWMwODMwYTUx
ZDYwN2JmOWY4NzYxMGQyYjk3NTNjOWVmNGY3Ni4uYmIzMzViNGJmODE5ZDIwYWI5OWM4ZjMwZTdm
OTQ0NGFhNDYzZDY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVS
b3dzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dz
Q29sbGVjdGlvbi5jcHAKQEAgLTEyMywyNSArMTIzLDI1IEBAIEhUTUxUYWJsZVJvd0VsZW1lbnQq
IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpyb3dBZnRlcihIVE1MVGFibGVFbGVtZW50KiB0YWJs
ZSwKIAogSFRNTFRhYmxlUm93RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246Omxhc3RS
b3coSFRNTFRhYmxlRWxlbWVudCogdGFibGUpCiB7Ci0gICAgZm9yIChhdXRvIGNoaWxkID0gRWxl
bWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHRhYmxlKTsgY2hpbGQ7IGNoaWxkID0gRWxlbWVudFRy
YXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkKSkgeworICAgIGZvciAoYXV0byogY2hpbGQg
PSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQodGFibGUpOyBjaGlsZDsgY2hpbGQgPSBFbGVt
ZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY2hpbGQpKSB7CiAgICAgICAgIGlmIChjaGls
ZC0+aGFzVGFnTmFtZSh0Zm9vdFRhZykpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHJvdyA9IGNo
aWxkcmVuT2ZUeXBlPEhUTUxUYWJsZVJvd0VsZW1lbnQ+KCpjaGlsZCkubGFzdCgpKQorICAgICAg
ICAgICAgaWYgKGF1dG8qIHJvdyA9IGNoaWxkcmVuT2ZUeXBlPEhUTUxUYWJsZVJvd0VsZW1lbnQ+
KCpjaGlsZCkubGFzdCgpKQogICAgICAgICAgICAgICAgIHJldHVybiByb3c7CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBmb3IgKGF1dG8gY2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hp
bGQodGFibGUpOyBjaGlsZDsgY2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxp
bmcoY2hpbGQpKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6Omxh
c3RDaGlsZCh0YWJsZSk7IGNoaWxkOyBjaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3Vz
U2libGluZyhjaGlsZCkpIHsKICAgICAgICAgaWYgKGlzSFRNTFRhYmxlUm93RWxlbWVudChjaGls
ZCkpCiAgICAgICAgICAgICByZXR1cm4gdG9IVE1MVGFibGVSb3dFbGVtZW50KGNoaWxkKTsKICAg
ICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKHRib2R5VGFnKSkgewotICAgICAgICAgICAgaWYg
KGF1dG8gcm93ID0gY2hpbGRyZW5PZlR5cGU8SFRNTFRhYmxlUm93RWxlbWVudD4oKmNoaWxkKS5s
YXN0KCkpCisgICAgICAgICAgICBpZiAoYXV0byogcm93ID0gY2hpbGRyZW5PZlR5cGU8SFRNTFRh
YmxlUm93RWxlbWVudD4oKmNoaWxkKS5sYXN0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJv
dzsKICAgICAgICAgfQogICAgIH0KIAotICAgIGZvciAoYXV0byBjaGlsZCA9IEVsZW1lbnRUcmF2
ZXJzYWw6Omxhc3RDaGlsZCh0YWJsZSk7IGNoaWxkOyBjaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6
OnByZXZpb3VzU2libGluZyhjaGlsZCkpIHsKKyAgICBmb3IgKGF1dG8qIGNoaWxkID0gRWxlbWVu
dFRyYXZlcnNhbDo6bGFzdENoaWxkKHRhYmxlKTsgY2hpbGQ7IGNoaWxkID0gRWxlbWVudFRyYXZl
cnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkKSkgewogICAgICAgICBpZiAoY2hpbGQtPmhhc1Rh
Z05hbWUodGhlYWRUYWcpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byByb3cgPSBjaGlsZHJlbk9m
VHlwZTxIVE1MVGFibGVSb3dFbGVtZW50PigqY2hpbGQpLmxhc3QoKSkKKyAgICAgICAgICAgIGlm
IChhdXRvKiByb3cgPSBjaGlsZHJlbk9mVHlwZTxIVE1MVGFibGVSb3dFbGVtZW50PigqY2hpbGQp
Lmxhc3QoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcm93OwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuY3BwCmlu
ZGV4IDg5NzM2ZjgzNTljMjBjMzU1NTNmYWVhMDcwM2IwZDQ0NWRkOGIyZjUuLjQ4ZTM3ZmY5OTg0
YmVmZDU1YzRjYjZjZGU1Mzg1ZmY5ODQ5MWQwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBJ
bnNwZWN0b3JOb2RlRmluZGVyOjpwZXJmb3JtU2VhcmNoKE5vZGUqIHBhcmVudE5vZGUpCiB2b2lk
IEluc3BlY3Rvck5vZGVGaW5kZXI6OnNlYXJjaFVzaW5nRE9NVHJlZVRyYXZlcnNhbChOb2RlKiBw
YXJlbnROb2RlKQogewogICAgIC8vIE1hbnVhbCBwbGFpbiB0ZXh0IHNlYXJjaC4KLSAgICBmb3Ig
KGF1dG8gbm9kZSA9IHBhcmVudE5vZGU7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0
KG5vZGUsIHBhcmVudE5vZGUpKSB7CisgICAgZm9yIChhdXRvKiBub2RlID0gcGFyZW50Tm9kZTsg
bm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSwgcGFyZW50Tm9kZSkpIHsKICAg
ICAgICAgc3dpdGNoIChub2RlLT5ub2RlVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgTm9kZTo6VEVY
VF9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9p
b3MvRnJhbWVJT1MubW0KaW5kZXggMzliYTQ2ODRlMGU5MTg0N2YyNDUyYjNhZjgyNGRiZWQyZGJh
OGE5MS4uMjQ2ODRjNGM0OTMxNjdiNTA5NDYyNDcwODQ3MzU4MDMyNTI5MjIxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KQEAgLTc1OSw3ICs3NTksNyBAQCBOU0FycmF5ICpGcmFt
ZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QoKSBjb25zdAogICAgIC8vIFRoZSBudW1i
ZXIgb2YgaW50ZXJwcmV0YXRpb25zIHdpbGwgYmUgaTEgKiBpMiAqIC4uLiAqIGlOLCB3aGVyZSBp
WCBpcyB0aGUgbnVtYmVyIG9mIGludGVycHJldGF0aW9ucyBmb3IgdGhlIFh0aCBwaHJhc2Ugd2l0
aCBhbHRlcm5hdGl2ZXMuCiAgICAgc2l6ZV90IGludGVycHJldGF0aW9uc0NvdW50ID0gMTsKIAot
ICAgIGZvciAoYXV0byBtYXJrZXIgOiBtYXJrZXJzSW5Sb290KQorICAgIGZvciAoYXV0byogbWFy
a2VyIDogbWFya2Vyc0luUm9vdCkKICAgICAgICAgaW50ZXJwcmV0YXRpb25zQ291bnQgKj0gbWFy
a2VyLT5hbHRlcm5hdGl2ZXMoKS5zaXplKCkgKyAxOwogCiAgICAgVmVjdG9yPFZlY3RvcjxVQ2hh
cj4+IGludGVycHJldGF0aW9uczsKQEAgLTc3MSw4ICs3NzEsNyBAQCBOU0FycmF5ICpGcmFtZTo6
aW50ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QoKSBjb25zdAogCiAgICAgTm9kZSogcGFzdExh
c3ROb2RlID0gcmFuZ2VPZlJvb3RDb250ZW50cy0+cGFzdExhc3ROb2RlKCk7CiAgICAgZm9yIChO
b2RlKiBub2RlID0gcmFuZ2VPZlJvb3RDb250ZW50cy0+Zmlyc3ROb2RlKCk7IG5vZGUgIT0gcGFz
dExhc3ROb2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlKSkgewotICAgICAgICBj
b25zdCBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiYgbWFya2VycyA9IGRvY3VtZW50KCktPm1hcmtl
cnMoKS5tYXJrZXJzRm9yKG5vZGUsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyhEb2N1bWVu
dE1hcmtlcjo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcykpOwotICAgICAgICBmb3Ig
KGF1dG8gbWFya2VyIDogbWFya2VycykgeworICAgICAgICBmb3IgKGF1dG8qIG1hcmtlciA6IGRv
Y3VtZW50KCktPm1hcmtlcnMoKS5tYXJrZXJzRm9yKG5vZGUsIERvY3VtZW50TWFya2VyOjpNYXJr
ZXJUeXBlcyhEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcykp
KSB7CiAgICAgICAgICAgICAvLyBGaXJzdCwgYWRkIHRleHQgdGhhdCBwcmVjZWRlIHRoZSBtYXJr
ZXIuCiAgICAgICAgICAgICBpZiAocHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRpb24gIT0gY3JlYXRl
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSkpIHsKICAg
ICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHByZWNlZGluZ1RleHRSYW5nZSA9IFJhbmdlOjpj
cmVhdGUoKmRvY3VtZW50KCksIHByZWNlZGluZ1RleHRTdGFydFBvc2l0aW9uLCBjcmVhdGVMZWdh
Y3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgpKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKaW5kZXggNGExMGYxNmQzM2VkNWZjYzM1NDg5
M2VmZDliNmNlNzJjZDMwZTg1MC4uMDk1ZjhkZTFiYjUxYTg2NzdkNDEwOWM2MGVjNzUxYWE3MDc1
NDA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcApAQCAtNzAsMTIg
KzcwLDEzIEBAIHZvaWQgRmlsZUNob29zZXI6OmNob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBmaWxlbmFtZXMpCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxGaWxlQ2hvb3Nl
ckZpbGVJbmZvPiBmaWxlczsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmlsZW5hbWVz
LnNpemUoKTsgKytpKQotICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxlSW5mbyhm
aWxlbmFtZXNbaV0pKTsKKyAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogZmlsZW5hbWVzKQorICAg
ICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxlSW5mbyhmaWxlbmFtZSkpOwogICAgIG1f
Y2xpZW50LT5maWxlc0Nob3NlbihmaWxlcyk7CiB9CiAKICNpZiBQTEFURk9STShJT1MpCisKIC8v
IEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIGFsbW9zdCBpZGVudGljYWwgdG8gRmlsZUNob29zZXI6
OmNob29zZUZpbGVzKCkuIFdlIHNob3VsZCBtZXJnZSB0aGlzIGZ1bmN0aW9uCiAvLyB3aXRoIEZp
bGVDaG9vc2VyOjpjaG9vc2VGaWxlcygpIGFuZCBoZW5jZSByZW1vdmUgdGhlIFBMQVRGT1JNKElP
UyktZ3VhcmQuCiB2b2lkIEZpbGVDaG9vc2VyOjpjaG9vc2VNZWRpYUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgSWNvbiog
aWNvbikKQEAgLTg4LDE5ICs4OSwyMCBAQCB2b2lkIEZpbGVDaG9vc2VyOjpjaG9vc2VNZWRpYUZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZwogICAgICAg
ICByZXR1cm47CiAKICAgICBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4gZmlsZXM7Ci0gICAg
Zm9yIChhdXRvIGZpbGVuYW1lIDogZmlsZW5hbWVzKQorICAgIGZvciAoYXV0byYgZmlsZW5hbWUg
OiBmaWxlbmFtZXMpCiAgICAgICAgIGZpbGVzLmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZvKGZp
bGVuYW1lKSk7CiAgICAgbV9jbGllbnQtPmZpbGVzQ2hvc2VuKGZpbGVzLCBkaXNwbGF5U3RyaW5n
LCBpY29uKTsKIH0KKwogI2VuZGlmCiAKIHZvaWQgRmlsZUNob29zZXI6OmNob29zZUZpbGVzKGNv
bnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgZmlsZXMpCiB7Ci0gICAgLy8gRklYTUU6
IFRoaXMgaXMgaW5lbGVnYW50LiBXZSBzaG91bGQgbm90IGJlIGxvb2tpbmcgYXQgc2V0dGluZ3Mg
aGVyZS4KICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZmlsZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHBhdGhzLmFwcGVuZChmaWxlc1tpXS5w
YXRoKTsKKyAgICBmb3IgKGF1dG8mIGZpbGUgOiBmaWxlcykKKyAgICAgICAgcGF0aHMuYXBwZW5k
KGZpbGUucGF0aCk7CiAKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmVsZWdhbnQuIFdlIHNob3Vs
ZCBub3QgYmUgbG9va2luZyBhdCBzZXR0aW5ncyBoZXJlLgogICAgIGlmIChtX3NldHRpbmdzLnNl
bGVjdGVkRmlsZXMgPT0gcGF0aHMpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCA0YmY4
MGNkYjE3NjNmZDFiNWFjYjRlZjRmZjlmMTg5OTE1NTMxOTVjLi5iZjUzOGI1MjEyM2VlNjFmODcw
ZDgxZDg5Yjg2M2U3ZmQ4MWY2YmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNjk1LDcgKzY5NSw3IEBAIHZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNlZWtUb1RpbWUoTWVkaWFUaW1lIHRpbWUpCiAK
IEludFNpemUgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Om5hdHVyYWxTaXplKCkKIHsKLSAg
ICBmb3IgKGF1dG8gdmlkZW9UcmFjayA6IG1fdmlkZW9UcmFja3MpIHsKKyAgICBmb3IgKGF1dG8m
IHZpZGVvVHJhY2sgOiBtX3ZpZGVvVHJhY2tzKSB7CiAgICAgICAgIGlmICh2aWRlb1RyYWNrLT5z
ZWxlY3RlZCgpKQogICAgICAgICAgICAgcmV0dXJuIHZpZGVvVHJhY2stPm5hdHVyYWxTaXplKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlLmNwcAppbmRleCAyMjYxNmIxMDU0NTAyN2I5NDg4NjQwMWMxZjNkY2NlYzUyYmY4YzYx
Li45ZjU5OWYwNDQ0OTgzYmI0YzNhYmJhOTg2NGZiNjE1YTEwMzA5MTJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcApAQCAtMTcz
LDggKzE3Myw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlk
YXRlRGVwZW5kZW5jaWVzKFJlbmRlckVsZW1lbnQmIHJlbmRlCiAgICAgSGFzaFNldDxTVkdFbGVt
ZW50Kj4qIGRlcGVuZGVuY2llcyA9IHJlbmRlcmVyLmRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5z
aW9ucygpLT5zZXRPZkVsZW1lbnRzUmVmZXJlbmNpbmdUYXJnZXQodG9TVkdFbGVtZW50KHJlbmRl
cmVyLmVsZW1lbnQoKSkpOwogICAgIGlmICghZGVwZW5kZW5jaWVzKQogICAgICAgICByZXR1cm47
Ci0gICAgZm9yIChhdXRvIGVsZW1lbnQgOiAqZGVwZW5kZW5jaWVzKSB7Ci0gICAgICAgIGlmIChh
dXRvIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKSkKKyAgICBmb3IgKGF1dG8qIGVsZW1l
bnQgOiAqZGVwZW5kZW5jaWVzKSB7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1l
bnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zvckxh
eW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlciwgbmVlZHNMYXlvdXQp
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAKaW5kZXggM2RlZmM0NmU2ZWVmZDAzMGEw
ODhkNjEzYzZhYmM0NDc1Yzc1MmUxNy4uM2VlNjRjMDYyNWM3NDFmZDVkYzY4ZTc0NWNlMWMxYWUy
ZGFlMDU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBS
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6bWFya0FsbENsaWVudHNGb3JJbnZhbGlkYXRpb24o
SW52YWxpZGF0aW9uTW9kZQogICAgIGJvb2wgbmVlZHNMYXlvdXQgPSBtb2RlID09IExheW91dEFu
ZEJvdW5kYXJpZXNJbnZhbGlkYXRpb247CiAgICAgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0g
bW9kZSAhPSBQYXJlbnRPbmx5SW52YWxpZGF0aW9uOwogCi0gICAgZm9yIChhdXRvIGNsaWVudCA6
IG1fY2xpZW50cykgeworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKSB7CiAgICAg
ICAgIGlmIChjbGllbnQtPmlzU1ZHUmVzb3VyY2VDb250YWluZXIoKSkgewogICAgICAgICAgICAg
dG9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcigqY2xpZW50KS5yZW1vdmVBbGxDbGllbnRzRnJv
bUNhY2hlKG1hcmtGb3JJbnZhbGlkYXRpb24pOwogICAgICAgICAgICAgY29udGludWU7CkBAIC0x
MTYsNyArMTE2LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6bWFya0FsbENs
aWVudHNGb3JJbnZhbGlkYXRpb24oSW52YWxpZGF0aW9uTW9kZQogdm9pZCBSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lcjo6bWFya0FsbENsaWVudExheWVyc0ZvckludmFsaWRhdGlvbigpCiB7CiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIGZvciAoYXV0byBjbGllbnRMYXllciA6IG1fY2xp
ZW50TGF5ZXJzKQorICAgIGZvciAoYXV0byogY2xpZW50TGF5ZXIgOiBtX2NsaWVudExheWVycykK
ICAgICAgICAgY2xpZW50TGF5ZXItPmZpbHRlck5lZWRzUmVwYWludCgpOwogI2VuZGlmCiB9CkBA
IC0xNzYsMTEgKzE3NiwxMCBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjpyZWdp
c3RlclJlc291cmNlKCkKICAgICBleHRlbnNpb25zLmFkZFJlc291cmNlKG1faWQsIHRoaXMpOwog
CiAgICAgLy8gVXBkYXRlIGNhY2hlZCByZXNvdXJjZXMgb2YgcGVuZGluZyBjbGllbnRzLgotICAg
IGF1dG8gZW5kID0gY2xpZW50cy0+ZW5kKCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gY2xpZW50cy0+
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIEFTU0VSVCgoKml0KS0+aGFzUGVu
ZGluZ1Jlc291cmNlcygpKTsKLSAgICAgICAgZXh0ZW5zaW9ucy5jbGVhckhhc1BlbmRpbmdSZXNv
dXJjZXNJZlBvc3NpYmxlKCppdCk7Ci0gICAgICAgIGF1dG8gcmVuZGVyZXIgPSAoKml0KS0+cmVu
ZGVyZXIoKTsKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6ICpjbGllbnRzKSB7CisgICAgICAgIEFT
U0VSVChjbGllbnQtPmhhc1BlbmRpbmdSZXNvdXJjZXMoKSk7CisgICAgICAgIGV4dGVuc2lvbnMu
Y2xlYXJIYXNQZW5kaW5nUmVzb3VyY2VzSWZQb3NzaWJsZShjbGllbnQpOworICAgICAgICBhdXRv
KiByZW5kZXJlciA9IGNsaWVudC0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJlcikK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50
U3R5bGVDaGFuZ2VkKCpyZW5kZXJlciwgU3R5bGVEaWZmZXJlbmNlTGF5b3V0LCByZW5kZXJlci0+
c3R5bGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJT
dXBwb3J0LmNwcAppbmRleCBmMzI0YTU4ODYzYjZiMGM2M2RkMjdkNTc0ZjY3MjQ5YTM4YTcwZTcw
Li5jYzcyZDYxNTc3ZjZlZjc2NTdiMWE0ZTUxODVlMzZjYWRjYWExYmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKQEAgLTIyNiw3
ICsyMjYsNyBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmxheW91dENoaWxkcmVuKFJlbmRlckVs
ZW1lbnQmIHN0YXJ0LCBib29sIHNlbGZOZWVkc0xheW91dAogICAgIGJvb2wgdHJhbnNmb3JtQ2hh
bmdlZCA9IHRyYW5zZm9ybVRvUm9vdENoYW5nZWQoJnN0YXJ0KTsKICAgICBib29sIGhhc1NWR1No
YWRvdyA9IHJlbmRlcmVySGFzU1ZHU2hhZG93KHN0YXJ0KTsKICAgICBib29sIG5lZWRzQm91bmRh
cmllc1VwZGF0ZSA9IHN0YXJ0Lm5lZWRzQm91bmRhcmllc1VwZGF0ZSgpOwotICAgIEhhc2hTZXQ8
UmVuZGVyT2JqZWN0Kj4gbm90bGF5b3V0ZWRPYmplY3RzOworICAgIEhhc2hTZXQ8UmVuZGVyRWxl
bWVudCo+IGVsZW1lbnRzVGhhdERpZE5vdFJlY2VpdmVMYXlvdXQ7CiAKICAgICBmb3IgKFJlbmRl
ck9iamVjdCogY2hpbGQgPSBzdGFydC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGJvb2wgbmVlZHNMYXlvdXQgPSBzZWxmTmVlZHNM
YXlvdXQ7CkBAIC0yNzQsMjIgKzI3NCwyMCBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmxheW91
dENoaWxkcmVuKFJlbmRlckVsZW1lbnQmIHN0YXJ0LCBib29sIHNlbGZOZWVkc0xheW91dAogICAg
ICAgICAgICAgLy8gcGFyZW50IGNvbnRhaW5lcnMgY2FsbCByZXBhaW50KCkuICAoUmVuZGVyQmxv
Y2s6OmxheW91dCogaGFzIHNpbWlsYXIgbG9naWMuKQogICAgICAgICAgICAgaWYgKCFjaGlsZEV2
ZXJIYWRMYXlvdXQpCiAgICAgICAgICAgICAgICAgY2hpbGQtPnJlcGFpbnQoKTsKLSAgICAgICAg
fSBlbHNlIGlmIChsYXlvdXRTaXplQ2hhbmdlZCkKLSAgICAgICAgICAgIG5vdGxheW91dGVkT2Jq
ZWN0cy5hZGQoY2hpbGQpOworICAgICAgICB9IGVsc2UgaWYgKGxheW91dFNpemVDaGFuZ2VkICYm
IGNoaWxkLT5pc1JlbmRlckVsZW1lbnQoKSkKKyAgICAgICAgICAgIGVsZW1lbnRzVGhhdERpZE5v
dFJlY2VpdmVMYXlvdXQuYWRkKHRvUmVuZGVyRWxlbWVudChjaGlsZCkpOwogCiAgICAgICAgIEFT
U0VSVCghY2hpbGQtPm5lZWRzTGF5b3V0KCkpOwogICAgIH0KIAogICAgIGlmICghbGF5b3V0U2l6
ZUNoYW5nZWQpIHsKLSAgICAgICAgQVNTRVJUKG5vdGxheW91dGVkT2JqZWN0cy5pc0VtcHR5KCkp
OworICAgICAgICBBU1NFUlQob2JqZWN0c1RoYXREaWROb3RSZWNlaXZlTGF5b3V0LmlzRW1wdHko
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBJZiB0aGUgbGF5b3V0IHNpemUg
Y2hhbmdlZCwgaW52YWxpZGF0ZSBhbGwgcmVzb3VyY2VzIG9mIGFsbCBjaGlsZHJlbiB0aGF0IGRp
ZG4ndCBnbyB0aHJvdWdoIHRoZSBsYXlvdXQoKSBjb2RlIHBhdGguCi0gICAgZm9yIChhdXRvIGNo
aWxkIDogbm90bGF5b3V0ZWRPYmplY3RzKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNSZW5kZXJF
bGVtZW50KCkpCi0gICAgICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VzT2ZDaGlsZHJlbih0b1Jl
bmRlckVsZW1lbnQoKmNoaWxkKSk7Ci0gICAgfQorICAgIGZvciAoYXV0byogZWxlbWVudCA6IGVs
ZW1lbnRzVGhhdERpZE5vdFJlY2VpdmVMYXlvdXQpCisgICAgICAgIGludmFsaWRhdGVSZXNvdXJj
ZXNPZkNoaWxkcmVuKCplbGVtZW50KTsKIH0KIAogYm9vbCBTVkdSZW5kZXJTdXBwb3J0Ojppc092
ZXJmbG93SGlkZGVuKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQpAQCAtNDI4LDggKzQy
Niw4IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6YXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgZWxzZSB7CiAgICAgICAgIERhc2hB
cnJheSBkYXNoQXJyYXk7CiAgICAgICAgIGRhc2hBcnJheS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGRhc2hlcy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gZGFz
aGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgIGRhc2hBcnJheS51bmNoZWNr
ZWRBcHBlbmQoZGFzaGVzW2ldLnZhbHVlKGxlbmd0aENvbnRleHQpKTsKKyAgICAgICAgZm9yIChh
dXRvJiBkYXNoIDogZGFzaGVzKQorICAgICAgICAgICAgZGFzaEFycmF5LnVuY2hlY2tlZEFwcGVu
ZChkYXNoLnZhbHVlKGxlbmd0aENvbnRleHQpKTsKIAogICAgICAgICBjb250ZXh0LT5zZXRMaW5l
RGFzaChkYXNoQXJyYXksIHN2Z1N0eWxlLnN0cm9rZURhc2hPZmZzZXQoKS52YWx1ZShsZW5ndGhD
b250ZXh0KSk7CiAgICAgfQpAQCAtNDY1LDcgKzQ2Myw3IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9y
dDo6dXBkYXRlTWFza2VkQW5jZXN0b3JTaG91bGRJc29sYXRlQmxlbmRpbmcoY29uc3QgUmVuZGVy
RWxlCiAgICAgQVNTRVJUKHJlbmRlcmVyLmVsZW1lbnQoKS0+aXNTVkdFbGVtZW50KCkpOwogCiAg
ICAgYm9vbCBtYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyA9IHJlbmRlcmVyLnN0
eWxlKCkuaGFzQmxlbmRNb2RlKCk7Ci0gICAgZm9yIChhdXRvIGFuY2VzdG9yID0gcmVuZGVyZXIu
ZWxlbWVudCgpLT5wYXJlbnRFbGVtZW50KCk7IGFuY2VzdG9yICYmIGFuY2VzdG9yLT5pc1NWR0Vs
ZW1lbnQoKTsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgZm9y
IChhdXRvKiBhbmNlc3RvciA9IHJlbmRlcmVyLmVsZW1lbnQoKS0+cGFyZW50RWxlbWVudCgpOyBh
bmNlc3RvciAmJiBhbmNlc3Rvci0+aXNTVkdFbGVtZW50KCk7IGFuY2VzdG9yID0gYW5jZXN0b3It
PnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICBpZiAoIXRvU1ZHRWxlbWVudChhbmNlc3Rvcikt
PmlzU1ZHR3JhcGhpY3NFbGVtZW50KCkgfHwgIWlzb2xhdGVzQmxlbmRpbmcoKmFuY2VzdG9yLT5j
b21wdXRlZFN0eWxlKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5jcHAK
aW5kZXggNjQ5OTY3YzZhYTE5ZDEyNTJkMTM1M2M4M2ZkZGE3MjNiYmZiNzcyZi4uNTc5MjRlZWJi
ZDA4NmQ5NmNmODUyZDIzNTU1MDA4M2I5ZjllOTViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5jcHAKQEAgLTIz
LDggKzIzLDggQEAKIC8vIFNldCB0byBhIHZhbHVlID4gMCwgdG8gZGVidWcgdGhlIHJlc291cmNl
IGNhY2hlLgogI2RlZmluZSBERUJVR19DWUNMRV9ERVRFQ1RJT04gMAogCisjaW5jbHVkZSAiUmVu
ZGVyQW5jZXN0b3JJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKLSNpbmNs
dWRlICJSZW5kZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaCIKQEAgLTU2LDcgKzU2LDcgQEAgYm9vbCBTVkdSZXNvdXJj
ZXNDeWNsZVNvbHZlcjo6cmVzb3VyY2VDb250YWluc0N5Y2xlcyhSZW5kZXJFbGVtZW50JiByZW5k
ZXJlcikgY28KICAgICAgICAgcmVzb3VyY2VzLT5idWlsZFNldE9mUmVzb3VyY2VzKHJlc291cmNl
U2V0KTsKIAogICAgICAgICAvLyBXYWxrIGFsbCByZXNvdXJjZXMgYW5kIGNoZWNrIHdoZXRlciB0
aGV5IHJlZmVyZW5jZSBhbnkgcmVzb3VyY2UgY29udGFpbmVkIGluIHRoZSByZXNvdXJjZXMgc2V0
LgotICAgICAgICBmb3IgKGF1dG8gcmVzb3VyY2UgOiByZXNvdXJjZVNldCkgeworICAgICAgICBm
b3IgKGF1dG8qIHJlc291cmNlIDogcmVzb3VyY2VTZXQpIHsKICAgICAgICAgICAgIGlmIChtX2Fs
bFJlc291cmNlcy5jb250YWlucyhyZXNvdXJjZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXNDeWNsZVNv
bHZlcjo6cmVzb3VyY2VDb250YWluc0N5Y2xlcyhSZW5kZXJFbGVtZW50JiByZW5kZXJlcikgY28K
ICAgICAgICAgY2hpbGRSZXNvdXJjZXMtPmJ1aWxkU2V0T2ZSZXNvdXJjZXMoY2hpbGRSZXNvdXJj
ZVNldCk7CiAKICAgICAgICAgLy8gV2FsayBhbGwgY2hpbGQgcmVzb3VyY2VzIGFuZCBjaGVjayB3
aGV0ZXIgdGhleSByZWZlcmVuY2UgYW55IHJlc291cmNlIGNvbnRhaW5lZCBpbiB0aGUgcmVzb3Vy
Y2VzIHNldC4KLSAgICAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IGNoaWxkUmVzb3VyY2VTZXQp
IHsKKyAgICAgICAgZm9yIChhdXRvKiByZXNvdXJjZSA6IGNoaWxkUmVzb3VyY2VTZXQpIHsKICAg
ICAgICAgICAgIGlmIChtX2FsbFJlc291cmNlcy5jb250YWlucyhyZXNvdXJjZSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTEwMywzMSArMTAzLDI3IEBAIHZv
aWQgU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXI6OnJlc29sdmVDeWNsZXMoKQogICAgIEFTU0VSVCgh
bG9jYWxSZXNvdXJjZXMuaXNFbXB0eSgpKTsKIAogICAgIC8vIEFkZCBhbGwgcGFyZW50IHJlc291
cmNlIGNvbnRhaW5lcnMgdG8gdGhlIEhhc2hTZXQuCi0gICAgSGFzaFNldDxSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lcio+IHBhcmVudFJlc291cmNlczsKLSAgICBhdXRvIHBhcmVudCA9IG1fcmVu
ZGVyZXIucGFyZW50KCk7Ci0gICAgd2hpbGUgKHBhcmVudCkgewotICAgICAgICBpZiAocGFyZW50
LT5pc1NWR1Jlc291cmNlQ29udGFpbmVyKCkpCi0gICAgICAgICAgICBwYXJlbnRSZXNvdXJjZXMu
YWRkKHRvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIocGFyZW50KSk7Ci0gICAgICAgIHBhcmVu
dCA9IHBhcmVudC0+cGFyZW50KCk7Ci0gICAgfQorICAgIEhhc2hTZXQ8UmVuZGVyU1ZHUmVzb3Vy
Y2VDb250YWluZXIqPiBhbmNlc3RvclJlc291cmNlczsKKyAgICBmb3IgKGF1dG8qIHJlc291cmNl
IDogbGluZWFnZU9mVHlwZTxSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcj4obV9yZW5kZXJlcikp
CisgICAgICAgIGFuY2VzdG9yUmVzb3VyY2VzLmFkZChyZXNvdXJjZSk7CiAKICNpZiBERUJVR19D
WUNMRV9ERVRFQ1RJT04gPiAwCiAgICAgZnByaW50ZihzdGRlcnIsICJcbkRldGVjdGluZyB3aGV0
ZXIgYW55IHJlc291cmNlcyByZWZlcmVuY2VzIGFueSBvZiBmb2xsb3dpbmcgb2JqZWN0czpcbiIp
OwogICAgIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJMb2NhbCByZXNvdXJjZXM6XG4iKTsK
LSAgICAgICAgZm9yIChhdXRvIGl0ID0gbG9jYWxSZXNvdXJjZXMuYmVnaW4oKSwgZW5kID0gbG9j
YWxSZXNvdXJjZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAifD4gJXM6IG9iamVjdD0lcCAobm9kZT0lcClcbiIsICgqaXQpLT5yZW5kZXJOYW1l
KCksICppdCwgKCppdCktPm5vZGUoKSk7CisgICAgICAgIGZvciAoYXV0byogcmVzb3VyY2UgOiBs
b2NhbFJlc291cmNlcykKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAifD4gJXM6IG9iamVj
dD0lcCAobm9kZT0lcClcbiIsIHJlc291cmNlLT5yZW5kZXJOYW1lKCksIHJlc291cmNlLCByZXNv
dXJjZS0+bm9kZSgpKTsKIAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlBhcmVudCByZXNvdXJj
ZXM6XG4iKTsKLSAgICAgICAgZm9yIChhdXRvIGl0ID0gcGFyZW50UmVzb3VyY2VzLmJlZ2luKCks
IGVuZCA9IHBhcmVudFJlc291cmNlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJ8PiAlczogb2JqZWN0PSVwIChub2RlPSVwKVxuIiwgKCppdCkt
PnJlbmRlck5hbWUoKSwgKml0LCAoKml0KS0+bm9kZSgpKTsKKyAgICAgICAgZm9yIChhdXRvKiBy
ZXNvdXJjZSA6IGFuY2VzdG9yUmVzb3VyY2VzKQorICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJ8PiAlczogb2JqZWN0PSVwIChub2RlPSVwKVxuIiwgcmVzb3VyY2UtPnJlbmRlck5hbWUoKSwg
cmVzb3VyY2UsIHJlc291cmNlLT5ub2RlKCkpOwogICAgIH0KICNlbmRpZgogCiAgICAgLy8gQnVp
bGQgY29tYmluZWQgc2V0IG9mIGxvY2FsIGFuZCBwYXJlbnQgcmVzb3VyY2VzLgogICAgIG1fYWxs
UmVzb3VyY2VzID0gbG9jYWxSZXNvdXJjZXM7Ci0gICAgZm9yIChhdXRvIGl0ID0gcGFyZW50UmVz
b3VyY2VzLmJlZ2luKCksIGVuZCA9IHBhcmVudFJlc291cmNlcy5lbmQoKTsgaXQgIT0gZW5kOyAr
K2l0KQotICAgICAgICBtX2FsbFJlc291cmNlcy5hZGQoKml0KTsKKyAgICBmb3IgKGF1dG8qIHJl
c291cmNlIDogYW5jZXN0b3JSZXNvdXJjZXMpCisgICAgICAgIG1fYWxsUmVzb3VyY2VzLmFkZChy
ZXNvdXJjZSk7CiAKICAgICAvLyBJZiB3ZSdyZSBhIHJlc291cmNlLCBhZGQgb3Vyc2VsdmVzIHRv
IHRoZSBIYXNoU2V0LgogICAgIGlmIChtX3JlbmRlcmVyLmlzU1ZHUmVzb3VyY2VDb250YWluZXIo
KSkKQEAgLTEzNywxMCArMTMzLDkgQEAgdm9pZCBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlcjo6cmVz
b2x2ZUN5Y2xlcygpCiAKICAgICAvLyBUaGUgam9iIG9mIHRoaXMgZnVuY3Rpb24gaXMgdG8gZGV0
ZXJtaW5lIHdoZXRlciBhbnkgb2YgdGhlICdyZXNvdXJjZXMnIGFzc29jaWF0ZWQgd2l0aCB0aGUg
Z2l2ZW4gJ3JlbmRlcmVyJwogICAgIC8vIHJlZmVyZW5jZXMgdXMgKG9yIHdoZXRlciBhbnkgb2Yg
aXRzIGtpZHMgcmVmZXJlbmNlcyB1cykgLT4gdGhhdCdzIGEgY3ljbGUsIHdlIG5lZWQgdG8gZmlu
ZCBhbmQgYnJlYWsgaXQuCi0gICAgZm9yIChhdXRvIGl0ID0gbG9jYWxSZXNvdXJjZXMuYmVnaW4o
KSwgZW5kID0gbG9jYWxSZXNvdXJjZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciYgcmVzb3VyY2UgPSAqKml0OwotICAgICAgICBp
ZiAocGFyZW50UmVzb3VyY2VzLmNvbnRhaW5zKCZyZXNvdXJjZSkgfHwgcmVzb3VyY2VDb250YWlu
c0N5Y2xlcyhyZXNvdXJjZSkpCi0gICAgICAgICAgICBicmVha0N5Y2xlKHJlc291cmNlKTsKKyAg
ICBmb3IgKGF1dG8qIHJlc291cmNlIDogbG9jYWxSZXNvdXJjZXMpIHsKKyAgICAgICAgaWYgKGFu
Y2VzdG9yUmVzb3VyY2VzLmNvbnRhaW5zKHJlc291cmNlKSB8fCByZXNvdXJjZUNvbnRhaW5zQ3lj
bGVzKCpyZXNvdXJjZSkpCisgICAgICAgICAgICBicmVha0N5Y2xlKCpyZXNvdXJjZSk7CiAgICAg
fQogCiAjaWYgREVCVUdfQ1lDTEVfREVURUNUSU9OID4gMApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKaW5kZXggNWMwZmEyMjdhMmM5MzM4NDY3NzBi
YjY2YmE4YWI2NWFjN2RkOTdiNi4uMzBjNzJiZjA0OGQ1NTEwMmJiMDNkNmYzZmVlM2ZkMjFmZDlk
NTQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQu
Y3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YXBw
bHlSZXN1bHRzVG9UYXJnZXQoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyAuLi5leGNlcHQg
aW4gY2FzZSB3aGVyZSB3ZSBoYXZlIGFkZGl0aW9uYWwgaW5zdGFuY2VzIGluIDx1c2U+IHRyZWVz
LgotICAgIGZvciAoYXV0byBpbnN0YW5jZSA6IHRhcmdldEVsZW1lbnQtPmluc3RhbmNlc0ZvckVs
ZW1lbnQoKSkgeworICAgIGZvciAoYXV0byogaW5zdGFuY2UgOiB0YXJnZXRFbGVtZW50LT5pbnN0
YW5jZXNGb3JFbGVtZW50KCkpIHsKICAgICAgICAgU1ZHRWxlbWVudCogc2hhZG93VHJlZUVsZW1l
bnQgPSBpbnN0YW5jZS0+c2hhZG93VHJlZUVsZW1lbnQoKTsKICAgICAgICAgQVNTRVJUKHNoYWRv
d1RyZWVFbGVtZW50KTsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtKiB0cmFuc2Zvcm0gPSBzaGFk
b3dUcmVlRWxlbWVudC0+c3VwcGxlbWVudGFsVHJhbnNmb3JtKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhFbGVtZW50LmNwcAppbmRleCBjMDhmNDEzNGQzMjE3YmJjMmYyMTVjMjdjZGFkOTdmMDBm
YzY5Y2MwLi45YWFhNGQyMzA2YTE2N2I4NTNhZmJjMzg1MjhiZjVkYzgwYzU3ZDc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIFNW
R1BhdGhFbGVtZW50OjppbnZhbGlkYXRlTVBhdGhEZXBlbmRlbmNpZXMoKQogICAgIC8vIDxtcGF0
aD4gY2FuIG9ubHkgcmVmZXJlbmNlIDxwYXRoPiBidXQgdGhpcyBkZXBlbmRlbmN5IGlzIG5vdCBo
YW5kbGVkIGluCiAgICAgLy8gbWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0
aW9uIHNvIHdlIHVwZGF0ZSBhbnkgbXBhdGggZGVwZW5kZW5jaWVzIG1hbnVhbGx5LgogICAgIGlm
IChIYXNoU2V0PFNWR0VsZW1lbnQqPiogZGVwZW5kZW5jaWVzID0gZG9jdW1lbnQoKS5hY2Nlc3NT
VkdFeHRlbnNpb25zKCktPnNldE9mRWxlbWVudHNSZWZlcmVuY2luZ1RhcmdldCh0aGlzKSkgewot
ICAgICAgICBmb3IgKGF1dG8gZWxlbWVudCA6ICpkZXBlbmRlbmNpZXMpIHsKKyAgICAgICAgZm9y
IChhdXRvKiBlbGVtZW50IDogKmRlcGVuZGVuY2llcykgewogICAgICAgICAgICAgaWYgKGVsZW1l
bnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6Om1wYXRoVGFnKSkKICAgICAgICAgICAgICAgICB0b1NW
R01QYXRoRWxlbWVudChlbGVtZW50KS0+dGFyZ2V0UGF0aENoYW5nZWQoKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggY2Y4ZDcyMzQzY2NlZjVmZTc0
MjUxOWI1ODQ3YjA2ODQ3MzA0NjU2MC4uYTc2OGViZDc4Y2NhMDg4YmIzODgyYTU1ZDAyMDJlNjE0
NzMwNDdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC05MDEsMTAg
KzkwMSwxMCBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnRXaXRo
Tm9kZXNBc1BhcmFncmFwaHM6KE5TQXJyYXkgKilub2RlcwogCiAgICAgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsK
IAotICAgIGZvciAoYXV0byBub2RlIDogbm9kZXNWZWN0b3IpIHsKKyAgICBmb3IgKGF1dG8qIG5v
ZGUgOiBub2Rlc1ZlY3RvcikgewogICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNy
ZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KCpkb2N1bWVudCk7Ci0gICAgICAgIGVsZW1lbnQt
PmFwcGVuZENoaWxkKG5vZGUsIEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgICAgICBmcmFnbWVu
dC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwor
ICAgICAgICBlbGVtZW50LT5hcHBlbmRDaGlsZChub2RlKTsKKyAgICAgICAgZnJhZ21lbnQtPmFw
cGVuZENoaWxkKGVsZW1lbnQucmVsZWFzZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4ga2l0KGZy
YWdtZW50LnJlbGVhc2UoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCmluZGV4IDU4YTRh
ZDUwMGU4YTVjOWRmMmQwNmZkNWE2ZjIzZjNmMDA5ZWE0ZDAuLmIzNjJjNzUxNmRkNWNhN2JmMWRi
MTQ2MWJlYTBhNDNmOGUyMDM2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCkBAIC0yNDAsNyAr
MjQwLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVy
dGllcyhVSVZpZXcgKnZpZXcsIGNvbnN0IFJlbW90ZUwKIAogICAgIGlmIChwcm9wZXJ0aWVzLmNo
YW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkNoaWxkcmVuQ2hh
bmdlZCkgewogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGNoaWxkcmVuID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnByb3BlcnRpZXMu
Y2hpbGRyZW4uc2l6ZSgpXSk7Ci0gICAgICAgIGZvciAoYXV0byBjaGlsZCA6IHByb3BlcnRpZXMu
Y2hpbGRyZW4pIHsKKyAgICAgICAgZm9yIChhdXRvJiBjaGlsZCA6IHByb3BlcnRpZXMuY2hpbGRy
ZW4pIHsKICAgICAgICAgICAgIEFTU0VSVChyZWxhdGVkTGF5ZXJzLmdldChjaGlsZCkpOwogICAg
ICAgICAgICAgW2NoaWxkcmVuIGFkZE9iamVjdDpyZWxhdGVkTGF5ZXJzLmdldChjaGlsZCldOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCAxNjU2YzhhNzM1NDI2M2NkNzMzNzZlOGIxODBi
YWQ4MDRiZTRiZjI1Li4yMjRjMzFlZDZlYzFiN2JiNDhiNDc3ZmY0NzQxZWIwODFjYmIxYmYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0KQEAgLTI0MCw3ICsyNDAsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYg
ZAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaGlsZHJlbikpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgZm9yIChhdXRvIGxheWVySUQgOiByZXN1bHQu
Y2hpbGRyZW4pIHsKKyAgICAgICAgZm9yIChhdXRvJiBsYXllcklEIDogcmVzdWx0LmNoaWxkcmVu
KSB7CiAgICAgICAgICAgICBpZiAoIWxheWVySUQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CkBAIC00NTQsNyArNDU0LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVM
YXkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2Rlc3Ryb3llZExheWVySURzKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9yIChhdXRvIGxheWVySUQgOiByZXN1bHQu
bV9kZXN0cm95ZWRMYXllcklEcykgeworICAgIGZvciAoYXV0byYgbGF5ZXJJRCA6IHJlc3VsdC5t
X2Rlc3Ryb3llZExheWVySURzKSB7CiAgICAgICAgIGlmICghbGF5ZXJJRCkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkBAIC02OTUsNyArNjk1LDcgQEAgc3RhdGljIHZvaWQgZHVt
cENoYW5nZWRMYXllcnMoUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbW90
ZUxheWVyVHIKICAgICBjb3B5S2V5c1RvVmVjdG9yKGNoYW5nZWRMYXllclByb3BlcnRpZXMsIGxh
eWVySURzKTsKICAgICBzdGQ6OnNvcnQobGF5ZXJJRHMuYmVnaW4oKSwgbGF5ZXJJRHMuZW5kKCkp
OwogCi0gICAgZm9yIChhdXRvIGxheWVySUQgOiBsYXllcklEcykgeworICAgIGZvciAoYXV0byYg
bGF5ZXJJRCA6IGxheWVySURzKSB7CiAgICAgICAgIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpMYXllclByb3BlcnRpZXMmIGxheWVyUHJvcGVydGllcyA9ICpjaGFuZ2VkTGF5ZXJQ
cm9wZXJ0aWVzLmdldChsYXllcklEKTsKIAogICAgICAgICB0cyA8PCAiXG4iOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCmluZGV4
IGQ5ZjBhM2NlOGVjOWY1ZDEwODg1OWMwZDdiMWY2YWM4NDJmOWU5ODcuLmFkMDAzYjM2NTk4NzMz
N2UzMjgxN2FjZTVlYjE0YTA5YWMyNjk5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTkzLDcgKzkzLDcgQEAgYm9v
bCBSZW1vdGVMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24mIHRyYW4KICAgICAgICAgICAgIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5
QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzKGxheWVyLCBwcm9wZXJ0aWVzLCByZWxhdGVkTGF5ZXJz
KTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8gZGVzdHJveWVkTGF5ZXIgOiB0cmFuc2FjdGlvbi5k
ZXN0cm95ZWRMYXllcnMoKSkKKyAgICBmb3IgKGF1dG8mIGRlc3Ryb3llZExheWVyIDogdHJhbnNh
Y3Rpb24uZGVzdHJveWVkTGF5ZXJzKCkpCiAgICAgICAgIG1fbGF5ZXJzLnJlbW92ZShkZXN0cm95
ZWRMYXllcik7CiAKICAgICByZXR1cm4gcm9vdExheWVyQ2hhbmdlZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDNiZTlmY2YwZmIxYjg3MDk3OTRmNTVkYjc2
MzQ0NzJlODYxODAwZjcuLmIxNWUxMzA5ZWQ4N2IzYjEyNTYxNjM1ZGExODU4OGVmOTQ0OTNkYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNTE0LDcgKzUx
NCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkxpbmtIYXNoPiYgbGlua0hhCiAgICAgLy8gRklYTUU6IFdlIG1heSB3YW50
IHRvIHRyYWNrIHZpc2l0ZWQgbGlua3MgcGVyIFdlYlBhZ2VHcm91cCByYXRoZXIgdGhhbiBwZXIg
V2ViQ29udGV4dC4KICAgICBmb3IgKGNvbnN0IGF1dG8mIHdlYlBhZ2UgOiBtX3BhZ2VNYXAudmFs
dWVzKCkpIHsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSB3ZWJQYWdlLT5jb3JlUGFnZSgpKSB7
Ci0gICAgICAgICAgICBmb3IgKGF1dG8gbGlua0hhc2ggOiBsaW5rSGFzaGVzKQorICAgICAgICAg
ICAgZm9yIChhdXRvJiBsaW5rSGFzaCA6IGxpbmtIYXNoZXMpCiAgICAgICAgICAgICAgICAgcGFn
ZS0+aW52YWxpZGF0ZVN0eWxlc0ZvckxpbmsobGlua0hhc2gpOwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226317</attachid>
            <date>2014-03-10 10:27:57 -0700</date>
            <delta_ts>2014-03-11 20:07:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129990-20140310102756.patch</filename>
            <type>text/plain</type>
            <size>38486</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1Mzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MGVkMTU4OWNhNjFhYmM2OTMyYjhkNTczMzFhYjM4MDYyZGFiN2ZhLi45OThlYWExMWFkZGZiN2Qz
OTA3ZGUxMTExYTM2MDhhNjZhNDdiMjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNC0wMy0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQXZvaWQgY29weS1wcm9uZSBpZGlvbSAiZm9yIChhdXRvIGl0ZW0gOiBjb2xsZWN0
aW9uKSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
OTk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aGVhcC9Db2RlQmxvY2tTZXQuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0OjppdGVyYXRl
KTogVXNlIGF1dG8mIHRvIGJlIHN1cmUgd2UgZG9uJ3QgY29weSBieSBhY2NpZGVudC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9y
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uTG9nKTogVXNlIGF1
dG8qIHRvCisgICAgICAgIG1ha2UgZXhwbGljaXQgdGhhdCB3ZSBhcmUgaXRlcmF0aW5nIHRocm91
Z2ggcG9pbnRlcnMuCisgICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNw
YXRjaEJyZWFrcG9pbnRBY3Rpb25Tb3VuZCk6IERpdHRvLgorICAgICAgICAoSW5zcGVjdG9yOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uUHJvYmUpOiBEaXR0by4K
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3Bv
aW50KTogVXNlIGF1dG8mLCBhbmQgYWxzbworICAgICAgICBnZXQgcmlkIG9mIGFuIHVubmVlZGVk
IGxvY2FsIHZhcmlhYmxlLgorCiAyMDE0LTAzLTEwICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KIAogICAgICAgICBbWDg2XzY0XSBTbWFsbGVyIGNvZGUgZm9yIHhvcl9pciB3aGVu
IHJlZ2lzdGVyIGlzIGFjY3VtdWxhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAxZDYwZDlhM2EyODE5MzYz
ODhlMjFlNGM3NTk5YzFhZmU3YzA0NWIuLjJiMjhiMmViZjg2ZDQ1N2I2NmNhY2U0NjUxMDdiNWI1
ZmQzZWZjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MCBAQAorMjAxNC0wMy0xMCAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgY29weS1wcm9uZSBpZGlv
bSAiZm9yIChhdXRvIGl0ZW0gOiBjb2xsZWN0aW9uKSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhlc2UgY2hhbmdlcyBoYXZlIG5vIGVm
ZmVjdC4gQSBmZXcgb2YgdGhlbSBnZXQgcmlkIG9mIHVud2FudGVkCisgICAgICAgIGNvcHlpbmcg
b2YgdGhlIGl0ZW1zIGFzIHdlIGl0ZXJhdGUgdGhlbS4gRm91bmQgdGhlc2Ugd2l0aCB0aGUgY29t
bWFuZAorICAgICAgICAnZ2l0IGdyZXAgImZvciAoYXV0byAuKjoiJyBvciB0aGUgZXF1aXZhbGVu
dC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6SURCS2V5RGF0YSk6IFVzZSBhdXRvJiB0byBhdm9pZCBj
b3B5aW5nIHRoZSBrZXlzLgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6bWF5YmVDcmVh
dGVJREJLZXkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6Omlzb2xhdGVk
Q29weSk6IERpdHRvLgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMpOiBVc2Ug
YXV0byoKKyAgICAgICAgdG8gbWFrZSBleHBsaWNpdCB0aGUgZmFjdCB0aGF0IHRoZXNlIGFyZSBw
b2ludGVycy4gU3RvcCB1c2luZyAiaXQiIGZvcgorICAgICAgICBhIHZhcmlhYmxlIHRoYXQgaXMg
bm90IGFuIGl0ZXJhdG9yLiBHZXQgcmlkIG9mIHVubmVlZGVkIGxvY2FsIHZhcmlhYmxlcworICAg
ICAgICBmb3IgdGhlIGNvbGxlY3Rpb25zIHRoZW1zZWx2ZXMuCisKKyAgICAgICAgKiBkb20vTm9k
ZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6YWRvcHRE
b2N1bWVudCk6IFVzZSBhdXRvJiB0byBtYWtlIHN1cmUgd2UKKyAgICAgICAgZG9uJ3QgZG8gYW55
IHVubmVjZXNzYXJ5IGNvcHlpbmcuIFN0b3AgdXNpbmcgIml0IiBmb3IgYSB2YXJpYWJsZSB0aGF0
CisgICAgICAgIGlzIG5vdCBhbiBpdGVyYXRvci4KKworICAgICAgICAqIGh0bWwvSFRNTFRhYmxl
Um93c0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlUm93c0NvbGxl
Y3Rpb246Omxhc3RSb3cpOiBVc2UgYXV0byogdG8gYmUgZXhwbGljaXQKKyAgICAgICAgdGhhdCB0
aGVzZSBhcmUgcG9pbnRlcnMuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5k
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTm9kZUZpbmRlcjo6c2VhcmNoVXNp
bmdET01UcmVlVHJhdmVyc2FsKTogRGl0dG8uCisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJv
b3QpOiBEaXR0by4gQWxzbyBnb3QgcmlkIG9mCisgICAgICAgIGFuIHVubmVjZXNzYXJ5IGxvY2Fs
IHZhcmlhYmxlLgorCisgICAgICAgICogcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZUNob29zZXI6OmNob29zZUZpbGVzKTogVXNlIGF1dG8mLiBBbHNvIGZp
eCBhIEZJWE1FLgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXI6OmNob29zZU1lZGlhRmls
ZXMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Om5hdHVyYWxTaXplKTogVXNlIGF1dG8mLgorCisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKTogVXNlIGF1dG8q
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6bWFya0Fs
bENsaWVudHNGb3JJbnZhbGlkYXRpb24pOiBVc2UgYXV0byouCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6bWFya0FsbENsaWVudExheWVyc0ZvckludmFsaWRh
dGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXI6OnJlZ2lzdGVyUmVzb3VyY2UpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0
OjpsYXlvdXRDaGlsZHJlbik6IFVwZGF0ZWQgdG8gdXNlIGEgbW9yZSBzcGVjaWZpYworICAgICAg
ICB0eXBlLCB0byB1c2UgYXV0byogaW5zdGVhZCBvZiBvZiBhdXRvLCBhbmQgdG8gZWxpbWluYXRl
IHRoZSBzbGlnaHRseSBzbG9wcGlseQorICAgICAgICBjYXBpdGFsaXplZCBhbmQgbm90LXNvLXNs
aWdodGx5IHVuZ3JhbW1hdGljYWwgbm90bGF5b3V0ZWRPYmplY3RzLgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyU3VwcG9ydDo6YXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dCk6IFVzZSBhdXRv
Ji4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OnVwZGF0ZU1hc2tlZEFuY2Vz
dG9yU2hvdWxkSXNvbGF0ZUJsZW5kaW5nKTogVXNlIGF1dG8qLgorCisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9TVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZXNvdXJjZXNDeWNsZVNvbHZlcjo6cmVzb3VyY2VDb250YWluc0N5Y2xlcyk6IFVzZSBhdXRv
Ki4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlc0N5Y2xlU29sdmVyOjpyZXNvbHZlQ3lj
bGVzKTogRGl0dG8uIEFsc28gbGluZWFnZU9mVHlwZS4KKworICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlTW90aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9u
RWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQpOiBVc2UgYXV0byouCisgICAgICAgICogc3Zn
L1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50Ojpp
bnZhbGlkYXRlTVBhdGhEZXBlbmRlbmNpZXMpOiBEaXR0by4KKwogMjAxNC0wMy0xMCAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gW0NNYWtl
XSBDbGVhbiB1cCBsaWJyYXJ5IGxpbmtpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxZjVhYzYyZjA5
MTMwN2Y5NTRjZmNlZmI3Nzg3YzI0M2Q5NjFkMjVmLi5mNzMyN2Q3ODZhNDdjOGJkMTg3N2ZlOTEw
ZjczMTFkZWRlNGYyNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQt
MDMtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGNv
cHktcHJvbmUgaWRpb20gImZvciAoYXV0byBpdGVtIDogY29sbGVjdGlvbikiCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk5OTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUu
bW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kb2N1bWVudEZyYWdtZW50V2l0aE5vZGVzQXNQYXJh
Z3JhcGhzOl0pOgorICAgICAgICBVc2UgYXV0byouIEFsc28gcmVtb3ZlZCB1bmVlZGVkIEFTU0VS
VF9OT19FWENFUFRJT04sIHdoaWNoIGlzIGFscmVhZHkKKyAgICAgICAgdGhlIGRlZmF1bHQgd2l0
aG91dCBzcGVjaWZ5aW5nIGl0IGV4cGxpY2l0bHkuCisKIDIwMTQtMDMtMTAgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bV0sxXSBDcmFzaCBpbiBIVE1M
TWVkaWFFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoKSAtICItW05TU2V0IGFkZE9iamVj
dDpdOiBvYmplY3QgY2Fubm90IGJlIG5pbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyODQxYjQ5NDkwNjVlNTUy
MDQ0Njk3NGU0NjQzZmY4MmY5ZDA4Y2M2Li45MzRiM2U4YjJlODI5MzJjOTEyZDg0ZWZmMzUxYzhm
YjkyMWMxYWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTQtMDMtMTAgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEF2b2lkIGNvcHktcHJvbmUgaWRp
b20gImZvciAoYXV0byBpdGVtIDogY29sbGVjdGlvbikiCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJv
cGVydHlBcHBsaWVyLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVQcm9wZXJ0
eUFwcGxpZXI6OmFwcGx5UHJvcGVydGllcyk6IFVzZSBhdXRvJi4KKworICAgICAgICAqIFNoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZSk6IFVzZSBh
dXRvJgorICAgICAgICBldmVuIHRob3VnaCB0aGUgdHlwZSBpcyBhIHNjYWxhci4gVGhpcyBkb2Vz
IG5vIGhhcm0gYW5kIG1ha2VzIGl0IGVhc2llcgorICAgICAgICB0byBzcG90IHVzZXMgdGhhdCB0
cmlnZ2VyIHVubmVjZXNzYXJ5IGNvcHlpbmcgd2l0aCBncmVwLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OmR1bXBDaGFuZ2VkTGF5ZXJzKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL21hYy9S
ZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVI
b3N0Ojp1cGRhdGVMYXllclRyZWUpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp2aXNpdGVkTGlua1N0YXRl
Q2hhbmdlZCk6IERpdHRvLgorCiAyMDE0LTAzLTEwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBbQ01ha2VdIENsZWFuIHVwIGxpYnJhcnkg
bGlua2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2Nr
U2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAppbmRleCAx
MDRmZmM0YWMwMjU5ZmUwMGJmNjhhYWY4NzI0YmFlYzFiZDRjZTQzLi43ZjUwZDVhZWMzMDlhYTQw
NzRiMGRiZWIxYzg2ODgzZjk4YWFhYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b2RlQmxvY2tTZXQuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgLy8gdmlzaXRlZC4K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGl0ZXJhdGUoRnVuY3RvciYgZnVu
Y3RvcikKICAgICB7Ci0gICAgICAgIGZvciAoYXV0byAmY29kZUJsb2NrIDogbV9zZXQpIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBjb2RlQmxvY2sgOiBtX3NldCkgewogICAgICAgICAgICAgYm9vbCBk
b25lID0gZnVuY3Rvcihjb2RlQmxvY2spOwogICAgICAgICAgICAgaWYgKGRvbmUpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDEyZGJhZWEzNjM0MjlmOTAzMDMxYTE4NmMw
YTZmOTJhOTBjNDQzMTUuLjQzNmJlNWYzYjdjZjRlZjM4NDU4MDBiY2Y3N2JhYTdjZGRiOGU4MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
ZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uTG9nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW4K
IAogICAgIFZlY3RvcjxTY3JpcHREZWJ1Z0xpc3RlbmVyKj4gbGlzdGVuZXJzQ29weTsKICAgICBj
b3B5VG9WZWN0b3IoKmxpc3RlbmVycywgbGlzdGVuZXJzQ29weSk7Ci0gICAgZm9yIChhdXRvIGxp
c3RlbmVyIDogbGlzdGVuZXJzQ29weSkKKyAgICBmb3IgKGF1dG8qIGxpc3RlbmVyIDogbGlzdGVu
ZXJzQ29weSkKICAgICAgICAgbGlzdGVuZXItPmJyZWFrcG9pbnRBY3Rpb25Mb2coZXhlYywgbWVz
c2FnZSk7CiB9CiAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpk
aXNwYXRjaEJyZWFrcG9pbnRBY3Rpb25Tb3VuZChFeGVjU3RhdGUqIGV4ZWMsIGludCBicmVhawog
CiAgICAgVmVjdG9yPFNjcmlwdERlYnVnTGlzdGVuZXIqPiBsaXN0ZW5lcnNDb3B5OwogICAgIGNv
cHlUb1ZlY3RvcigqbGlzdGVuZXJzLCBsaXN0ZW5lcnNDb3B5KTsKLSAgICBmb3IgKGF1dG8gbGlz
dGVuZXIgOiBsaXN0ZW5lcnNDb3B5KQorICAgIGZvciAoYXV0byogbGlzdGVuZXIgOiBsaXN0ZW5l
cnNDb3B5KQogICAgICAgICBsaXN0ZW5lci0+YnJlYWtwb2ludEFjdGlvblNvdW5kKGJyZWFrcG9p
bnRBY3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OmRpc3BhdGNoQnJlYWtwb2ludEFjdGlvblByb2JlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU2NyCiAKICAgICBWZWN0b3I8U2NyaXB0RGVidWdMaXN0ZW5lcio+IGxpc3RlbmVy
c0NvcHk7CiAgICAgY29weVRvVmVjdG9yKCpsaXN0ZW5lcnMsIGxpc3RlbmVyc0NvcHkpOwotICAg
IGZvciAoYXV0byBsaXN0ZW5lciA6IGxpc3RlbmVyc0NvcHkpCisgICAgZm9yIChhdXRvKiBsaXN0
ZW5lciA6IGxpc3RlbmVyc0NvcHkpCiAgICAgICAgIGxpc3RlbmVyLT5icmVha3BvaW50QWN0aW9u
UHJvYmUoZXhlYywgYWN0aW9uLCBtX2hpdENvdW50LCBzYW1wbGUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGEzMTRlMTZhYWNlMmQ3NTVhMTY0MWVhMTYxODli
Y2M5N2Q5NzhmZDAuLmJmOGFjYjUyMjU5N2QzZjgzY2VhZGVmMzQxMzk1NTgyZWQ3NmUyNjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zNDEsOCArMzQxLDcgQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBicmVha3AKIHsKICAgICBtX2phdmFTY3JpcHRCcmVha3BvaW50cy5yZW1v
dmUoYnJlYWtwb2ludElkZW50aWZpZXIpOwogCi0gICAgVmVjdG9yPEpTQzo6QnJlYWtwb2ludElE
PiBicmVha3BvaW50SURzID0gbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVh
a3BvaW50SURzLnRha2UoYnJlYWtwb2ludElkZW50aWZpZXIpOwotICAgIGZvciAoYXV0byBicmVh
a3BvaW50SUQgOiBicmVha3BvaW50SURzKSB7CisgICAgZm9yIChhdXRvJiBicmVha3BvaW50SUQg
OiBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMudGFrZShi
cmVha3BvaW50SWRlbnRpZmllcikpIHsKICAgICAgICAgY29uc3QgVmVjdG9yPFNjcmlwdEJyZWFr
cG9pbnRBY3Rpb24+JiBicmVha3BvaW50QWN0aW9ucyA9IHNjcmlwdERlYnVnU2VydmVyKCkuZ2V0
QWN0aW9uc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludElEKTsKICAgICAgICAgZm9yIChhdXRvJiBh
Y3Rpb24gOiBicmVha3BvaW50QWN0aW9ucykKICAgICAgICAgICAgIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLT5yZWxlYXNlT2JqZWN0R3JvdXAob2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9u
KGFjdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlE
YXRhLmNwcAppbmRleCAyYTlmZGM5MjNlYWExMmNkNjAwZjExNGZlYjA5NWE2ZGU3ZmIzZjMyLi43
ZjMxYzQ3MzlkODZhZmMzYzhiZDYwMmE1N2JmNTkxNWNlZGMyNTVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcApAQCAtNDksNyArNDksNyBA
QCBJREJLZXlEYXRhOjpJREJLZXlEYXRhKGNvbnN0IElEQktleSoga2V5KQogICAgIGNhc2UgSURC
S2V5OjpJbnZhbGlkVHlwZToKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJREJLZXk6OkFycmF5
VHlwZToKLSAgICAgICAgZm9yIChhdXRvIGtleTIgOiBrZXktPmFycmF5KCkpCisgICAgICAgIGZv
ciAoYXV0byYga2V5MiA6IGtleS0+YXJyYXkoKSkKICAgICAgICAgICAgIGFycmF5VmFsdWUuYXBw
ZW5kKElEQktleURhdGEoa2V5Mi5nZXQoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIElE
QktleTo6U3RyaW5nVHlwZToKQEAgLTc4LDcgKzc4LDcgQEAgUGFzc1JlZlB0cjxJREJLZXk+IElE
QktleURhdGE6Om1heWJlQ3JlYXRlSURCS2V5KCkgY29uc3QKICAgICBjYXNlIElEQktleTo6QXJy
YXlUeXBlOgogICAgICAgICB7CiAgICAgICAgICAgICBJREJLZXk6OktleUFycmF5IGFycmF5Owot
ICAgICAgICAgICAgZm9yIChhdXRvIGtleURhdGEgOiBhcnJheVZhbHVlKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIGtleURhdGEgOiBhcnJheVZhbHVlKSB7CiAgICAgICAgICAgICAgICAgYXJy
YXkuYXBwZW5kKGtleURhdGEubWF5YmVDcmVhdGVJREJLZXkoKSk7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKGFycmF5Lmxhc3QoKSk7CiAgICAgICAgICAgICB9CkBAIC0xMTAsNyArMTEwLDcgQEAg
SURCS2V5RGF0YSBJREJLZXlEYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIGNhc2UgSURC
S2V5OjpJbnZhbGlkVHlwZToKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBjYXNlIElEQktl
eTo6QXJyYXlUeXBlOgotICAgICAgICBmb3IgKGF1dG8ga2V5IDogYXJyYXlWYWx1ZSkKKyAgICAg
ICAgZm9yIChhdXRvJiBrZXkgOiBhcnJheVZhbHVlKQogICAgICAgICAgICAgcmVzdWx0LmFycmF5
VmFsdWUuYXBwZW5kKGtleS5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgY2FzZSBJREJLZXk6OlN0cmluZ1R5cGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNDNkM2Zj
ZmNhZmQ0YThmZGUxNTk1OTcyODZhOTE4NzcwYzc3NTg3Ni4uNGYzNjJhODg1MzgwYTFjOWM0ZmZh
ZjIwZGNhMzY2MDdjMTE5MWQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNzI0LDEzICs3MjQsMTAg
QEAgdm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcyhj
b25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmEKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgbV9p
bkludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMgPSB0cnVlOwogI2VuZGlmCi0g
ICAgSGFzaFNldDxMaXZlTm9kZUxpc3QqPiBsaXZlTm9kZUxpc3RzID0gc3RkOjptb3ZlKG1fbGlz
dHNJbnZhbGlkYXRlZEF0RG9jdW1lbnQpOwotICAgIGZvciAoYXV0byBpdCA6IGxpdmVOb2RlTGlz
dHMpCi0gICAgICAgIGl0LT5pbnZhbGlkYXRlQ2FjaGUoYXR0ck5hbWUpOwotCi0gICAgSGFzaFNl
dDxIVE1MQ29sbGVjdGlvbio+IGNvbGxlY3Rpb25MaXN0cyA9IHN0ZDo6bW92ZShtX2NvbGxlY3Rp
b25zSW52YWxpZGF0ZWRBdERvY3VtZW50KTsKLSAgICBmb3IgKGF1dG8gaXQgOiBjb2xsZWN0aW9u
TGlzdHMpCi0gICAgICAgIGl0LT5pbnZhbGlkYXRlQ2FjaGUoYXR0ck5hbWUpOworICAgIGZvciAo
YXV0byogbGlzdCA6IHN0ZDo6bW92ZShtX2xpc3RzSW52YWxpZGF0ZWRBdERvY3VtZW50KSkKKyAg
ICAgICAgbGlzdC0+aW52YWxpZGF0ZUNhY2hlKGF0dHJOYW1lKTsKKyAgICBmb3IgKGF1dG8qIGxp
c3QgOiBzdGQ6Om1vdmUobV9jb2xsZWN0aW9uc0ludmFsaWRhdGVkQXREb2N1bWVudCkpCisgICAg
ICAgIGxpc3QtPmludmFsaWRhdGVDYWNoZShhdHRyTmFtZSk7CiAjaWYgIUFTU0VSVF9ESVNBQkxF
RAogICAgIG1faW5JbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzID0gZmFsc2U7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCBlZjczNmJhYWNkMTZiYzhk
YjA4NTdhYTMxMDM4NzlmNTE2YTU5Nzk1Li4wMzUxZjE4MjZmMzAxMzE4YzlkN2M0ZDI0MjU1OTA5
MjQ2MzU3YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0zMywxNSArMzMsMTYg
QEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1
ZGUgIlRhZ05vZGVMaXN0LmgiCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotI2luY2x1ZGUgIlRl
eHRUcmFjay5oIgotI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMYWJlbHNOb2RlTGlzdDsKQEAgLTIzMSwy
NyArMjMyLDI3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGZvciAoYXV0byBpdCA6IG1fYXRvbWljTmFtZUNhY2hlcykKLSAgICAgICAgICAgIGl0
LnZhbHVlLT5pbnZhbGlkYXRlQ2FjaGUoKm9sZERvY3VtZW50KTsKKyAgICAgICAgZm9yIChhdXRv
JiBjYWNoZSA6IG1fYXRvbWljTmFtZUNhY2hlcy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGNhY2hl
LT5pbnZhbGlkYXRlQ2FjaGUoKm9sZERvY3VtZW50KTsKIAotICAgICAgICBmb3IgKGF1dG8gaXQg
OiBtX25hbWVDYWNoZXMpCi0gICAgICAgICAgICBpdC52YWx1ZS0+aW52YWxpZGF0ZUNhY2hlKCpv
bGREb2N1bWVudCk7CisgICAgICAgIGZvciAoYXV0byYgY2FjaGUgOiBtX25hbWVDYWNoZXMudmFs
dWVzKCkpCisgICAgICAgICAgICBjYWNoZS0+aW52YWxpZGF0ZUNhY2hlKCpvbGREb2N1bWVudCk7
CiAKLSAgICAgICAgZm9yIChhdXRvIGl0IDogbV90YWdOb2RlTGlzdENhY2hlTlMpIHsKLSAgICAg
ICAgICAgIExpdmVOb2RlTGlzdCYgbGlzdCA9ICppdC52YWx1ZTsKLSAgICAgICAgICAgIEFTU0VS
VCghbGlzdC5pc1Jvb3RlZEF0RG9jdW1lbnQoKSk7Ci0gICAgICAgICAgICBsaXN0LmludmFsaWRh
dGVDYWNoZSgqb2xkRG9jdW1lbnQpOworICAgICAgICBmb3IgKGF1dG8mIGxpc3QgOiBtX3RhZ05v
ZGVMaXN0Q2FjaGVOUy52YWx1ZXMoKSkgeworICAgICAgICAgICAgQVNTRVJUKCFsaXN0LT5pc1Jv
b3RlZEF0RG9jdW1lbnQoKSk7CisgICAgICAgICAgICBsaXN0LT5pbnZhbGlkYXRlQ2FjaGUoKm9s
ZERvY3VtZW50KTsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoYXV0byBpdCA6IG1fY2FjaGVk
Q29sbGVjdGlvbnMpCi0gICAgICAgICAgICBpdC52YWx1ZS0+aW52YWxpZGF0ZUNhY2hlKCpvbGRE
b2N1bWVudCk7CisgICAgICAgIGZvciAoYXV0byYgY29sbGVjdGlvbiA6IG1fY2FjaGVkQ29sbGVj
dGlvbnMudmFsdWVzKCkpCisgICAgICAgICAgICBjb2xsZWN0aW9uLT5pbnZhbGlkYXRlQ2FjaGUo
Km9sZERvY3VtZW50KTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgTm9kZUxpc3RzTm9kZURhdGEo
KQogICAgICAgICA6IG1fY2hpbGROb2RlTGlzdChudWxscHRyKQogICAgICAgICAsIG1fZW1wdHlD
aGlsZE5vZGVMaXN0KG51bGxwdHIpCi0gICAgeyB9CisgICAgeworICAgIH0KIAogICAgIHN0ZDo6
cGFpcjx1bnNpZ25lZCBjaGFyLCBBdG9taWNTdHJpbmc+IG5hbWVkQ29sbGVjdGlvbktleShDb2xs
ZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAppbmRleCAwZTRh
YzA4MzBhNTFkNjA3YmY5Zjg3NjEwZDJiOTc1M2M5ZWY0Zjc2Li5iYjMzNWI0YmY4MTlkMjBhYjk5
YzhmMzBlN2Y5NDQ0YWE0NjNkNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVJvd3NDb2xsZWN0aW9uLmNwcApAQCAtMTIzLDI1ICsxMjMsMjUgQEAgSFRNTFRhYmxlUm93
RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OnJvd0FmdGVyKEhUTUxUYWJsZUVsZW1l
bnQqIHRhYmxlLAogCiBIVE1MVGFibGVSb3dFbGVtZW50KiBIVE1MVGFibGVSb3dzQ29sbGVjdGlv
bjo6bGFzdFJvdyhIVE1MVGFibGVFbGVtZW50KiB0YWJsZSkKIHsKLSAgICBmb3IgKGF1dG8gY2hp
bGQgPSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQodGFibGUpOyBjaGlsZDsgY2hpbGQgPSBF
bGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY2hpbGQpKSB7CisgICAgZm9yIChhdXRv
KiBjaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZCh0YWJsZSk7IGNoaWxkOyBjaGls
ZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhjaGlsZCkpIHsKICAgICAgICAg
aWYgKGNoaWxkLT5oYXNUYWdOYW1lKHRmb290VGFnKSkgewotICAgICAgICAgICAgaWYgKGF1dG8g
cm93ID0gY2hpbGRyZW5PZlR5cGU8SFRNTFRhYmxlUm93RWxlbWVudD4oKmNoaWxkKS5sYXN0KCkp
CisgICAgICAgICAgICBpZiAoYXV0byogcm93ID0gY2hpbGRyZW5PZlR5cGU8SFRNTFRhYmxlUm93
RWxlbWVudD4oKmNoaWxkKS5sYXN0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdzsKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGZvciAoYXV0byBjaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6
Omxhc3RDaGlsZCh0YWJsZSk7IGNoaWxkOyBjaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZp
b3VzU2libGluZyhjaGlsZCkpIHsKKyAgICBmb3IgKGF1dG8qIGNoaWxkID0gRWxlbWVudFRyYXZl
cnNhbDo6bGFzdENoaWxkKHRhYmxlKTsgY2hpbGQ7IGNoaWxkID0gRWxlbWVudFRyYXZlcnNhbDo6
cHJldmlvdXNTaWJsaW5nKGNoaWxkKSkgewogICAgICAgICBpZiAoaXNIVE1MVGFibGVSb3dFbGVt
ZW50KGNoaWxkKSkKICAgICAgICAgICAgIHJldHVybiB0b0hUTUxUYWJsZVJvd0VsZW1lbnQoY2hp
bGQpOwogICAgICAgICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUodGJvZHlUYWcpKSB7Ci0gICAgICAg
ICAgICBpZiAoYXV0byByb3cgPSBjaGlsZHJlbk9mVHlwZTxIVE1MVGFibGVSb3dFbGVtZW50Pigq
Y2hpbGQpLmxhc3QoKSkKKyAgICAgICAgICAgIGlmIChhdXRvKiByb3cgPSBjaGlsZHJlbk9mVHlw
ZTxIVE1MVGFibGVSb3dFbGVtZW50PigqY2hpbGQpLmxhc3QoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gcm93OwogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChhdXRvIGNoaWxkID0gRWxl
bWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHRhYmxlKTsgY2hpbGQ7IGNoaWxkID0gRWxlbWVudFRy
YXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkKSkgeworICAgIGZvciAoYXV0byogY2hpbGQg
PSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQodGFibGUpOyBjaGlsZDsgY2hpbGQgPSBFbGVt
ZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY2hpbGQpKSB7CiAgICAgICAgIGlmIChjaGls
ZC0+aGFzVGFnTmFtZSh0aGVhZFRhZykpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHJvdyA9IGNo
aWxkcmVuT2ZUeXBlPEhUTUxUYWJsZVJvd0VsZW1lbnQ+KCpjaGlsZCkubGFzdCgpKQorICAgICAg
ICAgICAgaWYgKGF1dG8qIHJvdyA9IGNoaWxkcmVuT2ZUeXBlPEhUTUxUYWJsZVJvd0VsZW1lbnQ+
KCpjaGlsZCkubGFzdCgpKQogICAgICAgICAgICAgICAgIHJldHVybiByb3c7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9k
ZUZpbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTm9kZUZpbmRl
ci5jcHAKaW5kZXggODk3MzZmODM1OWMyMGMzNTU1M2ZhZWEwNzAzYjBkNDQ1ZGQ4YjJmNS4uNDhl
MzdmZjk5ODRiZWZkNTVjNGNiNmNkZTUzODVmZjk4NDkxZDAxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmNwcApAQCAtNzUsNyArNzUsNyBA
QCB2b2lkIEluc3BlY3Rvck5vZGVGaW5kZXI6OnBlcmZvcm1TZWFyY2goTm9kZSogcGFyZW50Tm9k
ZSkKIHZvaWQgSW5zcGVjdG9yTm9kZUZpbmRlcjo6c2VhcmNoVXNpbmdET01UcmVlVHJhdmVyc2Fs
KE5vZGUqIHBhcmVudE5vZGUpCiB7CiAgICAgLy8gTWFudWFsIHBsYWluIHRleHQgc2VhcmNoLgot
ICAgIGZvciAoYXV0byBub2RlID0gcGFyZW50Tm9kZTsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJz
YWw6Om5leHQobm9kZSwgcGFyZW50Tm9kZSkpIHsKKyAgICBmb3IgKGF1dG8qIG5vZGUgPSBwYXJl
bnROb2RlOyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlLCBwYXJlbnROb2Rl
KSkgewogICAgICAgICBzd2l0Y2ggKG5vZGUtPm5vZGVUeXBlKCkpIHsKICAgICAgICAgY2FzZSBO
b2RlOjpURVhUX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Q09NTUVOVF9OT0RFOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQppbmRleCAzOWJhNDY4NGUwZTkxODQ3ZjI0NTJiM2FmODI0
ZGJlZDJkYmE4YTkxLi4yNDY4NGM0YzQ5MzE2N2I1MDk0NjI0NzA4NDczNTgwMzI1MjkyMjE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtNzU5LDcgKzc1OSw3IEBAIE5TQXJy
YXkgKkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgLy8g
VGhlIG51bWJlciBvZiBpbnRlcnByZXRhdGlvbnMgd2lsbCBiZSBpMSAqIGkyICogLi4uICogaU4s
IHdoZXJlIGlYIGlzIHRoZSBudW1iZXIgb2YgaW50ZXJwcmV0YXRpb25zIGZvciB0aGUgWHRoIHBo
cmFzZSB3aXRoIGFsdGVybmF0aXZlcy4KICAgICBzaXplX3QgaW50ZXJwcmV0YXRpb25zQ291bnQg
PSAxOwogCi0gICAgZm9yIChhdXRvIG1hcmtlciA6IG1hcmtlcnNJblJvb3QpCisgICAgZm9yIChh
dXRvKiBtYXJrZXIgOiBtYXJrZXJzSW5Sb290KQogICAgICAgICBpbnRlcnByZXRhdGlvbnNDb3Vu
dCAqPSBtYXJrZXItPmFsdGVybmF0aXZlcygpLnNpemUoKSArIDE7CiAKICAgICBWZWN0b3I8VmVj
dG9yPFVDaGFyPj4gaW50ZXJwcmV0YXRpb25zOwpAQCAtNzcxLDggKzc3MSw3IEBAIE5TQXJyYXkg
KkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAKICAgICBOb2Rl
KiBwYXN0TGFzdE5vZGUgPSByYW5nZU9mUm9vdENvbnRlbnRzLT5wYXN0TGFzdE5vZGUoKTsKICAg
ICBmb3IgKE5vZGUqIG5vZGUgPSByYW5nZU9mUm9vdENvbnRlbnRzLT5maXJzdE5vZGUoKTsgbm9k
ZSAhPSBwYXN0TGFzdE5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpKSB7Ci0g
ICAgICAgIGNvbnN0IFZlY3RvcjxEb2N1bWVudE1hcmtlcio+JiBtYXJrZXJzID0gZG9jdW1lbnQo
KS0+bWFya2VycygpLm1hcmtlcnNGb3Iobm9kZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVz
KERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzKSk7Ci0gICAg
ICAgIGZvciAoYXV0byBtYXJrZXIgOiBtYXJrZXJzKSB7CisgICAgICAgIGZvciAoYXV0byogbWFy
a2VyIDogZG9jdW1lbnQoKS0+bWFya2VycygpLm1hcmtlcnNGb3Iobm9kZSwgRG9jdW1lbnRNYXJr
ZXI6Ok1hcmtlclR5cGVzKERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJu
YXRpdmVzKSkpIHsKICAgICAgICAgICAgIC8vIEZpcnN0LCBhZGQgdGV4dCB0aGF0IHByZWNlZGUg
dGhlIG1hcmtlci4KICAgICAgICAgICAgIGlmIChwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiAh
PSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgbWFya2VyLT5zdGFydE9mZnNldCgp
KSkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcHJlY2VkaW5nVGV4dFJhbmdlID0g
UmFuZ2U6OmNyZWF0ZSgqZG9jdW1lbnQoKSwgcHJlY2VkaW5nVGV4dFN0YXJ0UG9zaXRpb24sIGNy
ZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAppbmRleCA0YTEwZjE2ZDMzZWQ1
ZmNjMzU0ODkzZWZkOWI2Y2U3MmNkMzBlODUwLi4wOTVmOGRlMWJiNTFhODY3N2Q0MTA5YzYwZWM3
NTFhYTcwNzU0MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hv
b3Nlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCkBA
IC03MCwxMiArNzAsMTMgQEAgdm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlRmlsZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGZpbGVuYW1lcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPEZp
bGVDaG9vc2VyRmlsZUluZm8+IGZpbGVzOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBm
aWxlbmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGZpbGVzLmFwcGVuZChGaWxlQ2hvb3NlckZp
bGVJbmZvKGZpbGVuYW1lc1tpXSkpOworICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBmaWxlbmFt
ZXMpCisgICAgICAgIGZpbGVzLmFwcGVuZChGaWxlQ2hvb3NlckZpbGVJbmZvKGZpbGVuYW1lKSk7
CiAgICAgbV9jbGllbnQtPmZpbGVzQ2hvc2VuKGZpbGVzKTsKIH0KIAogI2lmIFBMQVRGT1JNKElP
UykKKwogLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgYWxtb3N0IGlkZW50aWNhbCB0byBGaWxl
Q2hvb3Nlcjo6Y2hvb3NlRmlsZXMoKS4gV2Ugc2hvdWxkIG1lcmdlIHRoaXMgZnVuY3Rpb24KIC8v
IHdpdGggRmlsZUNob29zZXI6OmNob29zZUZpbGVzKCkgYW5kIGhlbmNlIHJlbW92ZSB0aGUgUExB
VEZPUk0oSU9TKS1ndWFyZC4KIHZvaWQgRmlsZUNob29zZXI6OmNob29zZU1lZGlhRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5n
LCBJY29uKiBpY29uKQpAQCAtODgsMTkgKzg5LDIwIEBAIHZvaWQgRmlsZUNob29zZXI6OmNob29z
ZU1lZGlhRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgU3RyaW5n
CiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxl
czsKLSAgICBmb3IgKGF1dG8gZmlsZW5hbWUgOiBmaWxlbmFtZXMpCisgICAgZm9yIChhdXRvJiBm
aWxlbmFtZSA6IGZpbGVuYW1lcykKICAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmls
ZUluZm8oZmlsZW5hbWUpKTsKICAgICBtX2NsaWVudC0+ZmlsZXNDaG9zZW4oZmlsZXMsIGRpc3Bs
YXlTdHJpbmcsIGljb24pOwogfQorCiAjZW5kaWYKIAogdm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3Nl
RmlsZXMoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBmaWxlcykKIHsKLSAgICAv
LyBGSVhNRTogVGhpcyBpcyBpbmVsZWdhbnQuIFdlIHNob3VsZCBub3QgYmUgbG9va2luZyBhdCBz
ZXR0aW5ncyBoZXJlLgogICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBmaWxlcy5zaXplKCk7ICsraSkKLSAgICAgICAgcGF0aHMuYXBwZW5kKGZp
bGVzW2ldLnBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZSA6IGZpbGVzKQorICAgICAgICBwYXRo
cy5hcHBlbmQoZmlsZS5wYXRoKTsKIAorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWxlZ2FudC4g
V2Ugc2hvdWxkIG5vdCBiZSBsb29raW5nIGF0IHNldHRpbmdzIGhlcmUuCiAgICAgaWYgKG1fc2V0
dGluZ3Muc2VsZWN0ZWRGaWxlcyA9PSBwYXRocykKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmlu
ZGV4IDRiZjgwY2RiMTc2M2ZkMWI1YWNiNGVmNGZmOWYxODk5MTU1MzE5NWMuLmJmNTM4YjUyMTIz
ZWU2MWY4NzBkODFkODliODYzZTdmZDgxZjZiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC02OTUsNyArNjk1LDcg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6c2Vla1RvVGltZShNZWRpYVRpbWUg
dGltZSkKIAogSW50U2l6ZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6bmF0dXJhbFNpemUo
KQogewotICAgIGZvciAoYXV0byB2aWRlb1RyYWNrIDogbV92aWRlb1RyYWNrcykgeworICAgIGZv
ciAoYXV0byYgdmlkZW9UcmFjayA6IG1fdmlkZW9UcmFja3MpIHsKICAgICAgICAgaWYgKHZpZGVv
VHJhY2stPnNlbGVjdGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdmlkZW9UcmFjay0+bmF0dXJh
bFNpemUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2UuY3BwCmluZGV4IDIyNjE2YjEwNTQ1MDI3Yjk0ODg2NDAxYzFmM2RjY2Vj
NTJiZjhjNjEuLjlmNTk5ZjA0NDQ5ODNiYjRjM2FiYmE5ODY0ZmI2MTVhMTAzMDkxMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3Bw
CkBAIC0xNzMsOCArMTczLDggQEAgc3RhdGljIGlubGluZSB2b2lkIHJlbW92ZUZyb21DYWNoZUFu
ZEludmFsaWRhdGVEZXBlbmRlbmNpZXMoUmVuZGVyRWxlbWVudCYgcmVuZGUKICAgICBIYXNoU2V0
PFNWR0VsZW1lbnQqPiogZGVwZW5kZW5jaWVzID0gcmVuZGVyZXIuZG9jdW1lbnQoKS5hY2Nlc3NT
VkdFeHRlbnNpb25zKCktPnNldE9mRWxlbWVudHNSZWZlcmVuY2luZ1RhcmdldCh0b1NWR0VsZW1l
bnQocmVuZGVyZXIuZWxlbWVudCgpKSk7CiAgICAgaWYgKCFkZXBlbmRlbmNpZXMpCiAgICAgICAg
IHJldHVybjsKLSAgICBmb3IgKGF1dG8gZWxlbWVudCA6ICpkZXBlbmRlbmNpZXMpIHsKLSAgICAg
ICAgaWYgKGF1dG8gcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpKQorICAgIGZvciAoYXV0
byogZWxlbWVudCA6ICpkZXBlbmRlbmNpZXMpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVy
ID0gZWxlbWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjpt
YXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyLCBuZWVk
c0xheW91dCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcAppbmRleCAzZGVmYzQ2ZTZl
ZWZkMDMwYTA4OGQ2MTNjNmFiYzQ0NzVjNzUyZTE3Li4zZWU2NGMwNjI1Yzc0MWZkNWRjNjhlNzQ1
Y2UxYzFhZTJkYWUwNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcApAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjptYXJrQWxsQ2xpZW50c0ZvckludmFs
aWRhdGlvbihJbnZhbGlkYXRpb25Nb2RlCiAgICAgYm9vbCBuZWVkc0xheW91dCA9IG1vZGUgPT0g
TGF5b3V0QW5kQm91bmRhcmllc0ludmFsaWRhdGlvbjsKICAgICBib29sIG1hcmtGb3JJbnZhbGlk
YXRpb24gPSBtb2RlICE9IFBhcmVudE9ubHlJbnZhbGlkYXRpb247CiAKLSAgICBmb3IgKGF1dG8g
Y2xpZW50IDogbV9jbGllbnRzKSB7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMp
IHsKICAgICAgICAgaWYgKGNsaWVudC0+aXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpKSB7CiAgICAg
ICAgICAgICB0b1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKCpjbGllbnQpLnJlbW92ZUFsbENs
aWVudHNGcm9tQ2FjaGUobWFya0ZvckludmFsaWRhdGlvbik7CiAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjpt
YXJrQWxsQ2xpZW50c0ZvckludmFsaWRhdGlvbihJbnZhbGlkYXRpb25Nb2RlCiB2b2lkIFJlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyOjptYXJrQWxsQ2xpZW50TGF5ZXJzRm9ySW52YWxpZGF0aW9u
KCkKIHsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgZm9yIChhdXRvIGNsaWVudExheWVy
IDogbV9jbGllbnRMYXllcnMpCisgICAgZm9yIChhdXRvKiBjbGllbnRMYXllciA6IG1fY2xpZW50
TGF5ZXJzKQogICAgICAgICBjbGllbnRMYXllci0+ZmlsdGVyTmVlZHNSZXBhaW50KCk7CiAjZW5k
aWYKIH0KQEAgLTE3NiwxMSArMTc2LDEwIEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXI6OnJlZ2lzdGVyUmVzb3VyY2UoKQogICAgIGV4dGVuc2lvbnMuYWRkUmVzb3VyY2UobV9pZCwg
dGhpcyk7CiAKICAgICAvLyBVcGRhdGUgY2FjaGVkIHJlc291cmNlcyBvZiBwZW5kaW5nIGNsaWVu
dHMuCi0gICAgYXV0byBlbmQgPSBjbGllbnRzLT5lbmQoKTsKLSAgICBmb3IgKGF1dG8gaXQgPSBj
bGllbnRzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQVNTRVJUKCgqaXQp
LT5oYXNQZW5kaW5nUmVzb3VyY2VzKCkpOwotICAgICAgICBleHRlbnNpb25zLmNsZWFySGFzUGVu
ZGluZ1Jlc291cmNlc0lmUG9zc2libGUoKml0KTsKLSAgICAgICAgYXV0byByZW5kZXJlciA9ICgq
aXQpLT5yZW5kZXJlcigpOworICAgIGZvciAoYXV0byogY2xpZW50IDogKmNsaWVudHMpIHsKKyAg
ICAgICAgQVNTRVJUKGNsaWVudC0+aGFzUGVuZGluZ1Jlc291cmNlcygpKTsKKyAgICAgICAgZXh0
ZW5zaW9ucy5jbGVhckhhc1BlbmRpbmdSZXNvdXJjZXNJZlBvc3NpYmxlKGNsaWVudCk7CisgICAg
ICAgIGF1dG8qIHJlbmRlcmVyID0gY2xpZW50LT5yZW5kZXJlcigpOwogICAgICAgICBpZiAoIXJl
bmRlcmVyKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFNWR1Jlc291cmNlc0NhY2hl
OjpjbGllbnRTdHlsZUNoYW5nZWQoKnJlbmRlcmVyLCBTdHlsZURpZmZlcmVuY2VMYXlvdXQsIHJl
bmRlcmVyLT5zdHlsZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IGYzMjRhNTg4NjNiNmIwYzYzZGQyN2Q1NzRmNjcyNDlh
MzhhNzBlNzAuLjM1MzA1MDU5YmVlMWM5NmY0NjhkYmJhM2EwN2MwNTUzYjcwNjBmZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApA
QCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6bGF5b3V0Q2hpbGRyZW4o
UmVuZGVyRWxlbWVudCYgc3RhcnQsIGJvb2wgc2VsZk5lZWRzTGF5b3V0CiAgICAgYm9vbCB0cmFu
c2Zvcm1DaGFuZ2VkID0gdHJhbnNmb3JtVG9Sb290Q2hhbmdlZCgmc3RhcnQpOwogICAgIGJvb2wg
aGFzU1ZHU2hhZG93ID0gcmVuZGVyZXJIYXNTVkdTaGFkb3coc3RhcnQpOwogICAgIGJvb2wgbmVl
ZHNCb3VuZGFyaWVzVXBkYXRlID0gc3RhcnQubmVlZHNCb3VuZGFyaWVzVXBkYXRlKCk7Ci0gICAg
SGFzaFNldDxSZW5kZXJPYmplY3QqPiBub3RsYXlvdXRlZE9iamVjdHM7CisgICAgSGFzaFNldDxS
ZW5kZXJFbGVtZW50Kj4gZWxlbWVudHNUaGF0RGlkTm90UmVjZWl2ZUxheW91dDsKIAogICAgIGZv
ciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHN0YXJ0LmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgYm9vbCBuZWVkc0xheW91dCA9IHNl
bGZOZWVkc0xheW91dDsKQEAgLTI3NCwyMiArMjc0LDIwIEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9y
dDo6bGF5b3V0Q2hpbGRyZW4oUmVuZGVyRWxlbWVudCYgc3RhcnQsIGJvb2wgc2VsZk5lZWRzTGF5
b3V0CiAgICAgICAgICAgICAvLyBwYXJlbnQgY29udGFpbmVycyBjYWxsIHJlcGFpbnQoKS4gIChS
ZW5kZXJCbG9jazo6bGF5b3V0KiBoYXMgc2ltaWxhciBsb2dpYy4pCiAgICAgICAgICAgICBpZiAo
IWNoaWxkRXZlckhhZExheW91dCkKICAgICAgICAgICAgICAgICBjaGlsZC0+cmVwYWludCgpOwot
ICAgICAgICB9IGVsc2UgaWYgKGxheW91dFNpemVDaGFuZ2VkKQotICAgICAgICAgICAgbm90bGF5
b3V0ZWRPYmplY3RzLmFkZChjaGlsZCk7CisgICAgICAgIH0gZWxzZSBpZiAobGF5b3V0U2l6ZUNo
YW5nZWQgJiYgY2hpbGQtPmlzUmVuZGVyRWxlbWVudCgpKQorICAgICAgICAgICAgZWxlbWVudHNU
aGF0RGlkTm90UmVjZWl2ZUxheW91dC5hZGQodG9SZW5kZXJFbGVtZW50KGNoaWxkKSk7CiAKICAg
ICAgICAgQVNTRVJUKCFjaGlsZC0+bmVlZHNMYXlvdXQoKSk7CiAgICAgfQogCiAgICAgaWYgKCFs
YXlvdXRTaXplQ2hhbmdlZCkgewotICAgICAgICBBU1NFUlQobm90bGF5b3V0ZWRPYmplY3RzLmlz
RW1wdHkoKSk7CisgICAgICAgIEFTU0VSVChlbGVtZW50c1RoYXREaWROb3RSZWNlaXZlTGF5b3V0
LmlzRW1wdHkoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBJZiB0aGUgbGF5
b3V0IHNpemUgY2hhbmdlZCwgaW52YWxpZGF0ZSBhbGwgcmVzb3VyY2VzIG9mIGFsbCBjaGlsZHJl
biB0aGF0IGRpZG4ndCBnbyB0aHJvdWdoIHRoZSBsYXlvdXQoKSBjb2RlIHBhdGguCi0gICAgZm9y
IChhdXRvIGNoaWxkIDogbm90bGF5b3V0ZWRPYmplY3RzKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+
aXNSZW5kZXJFbGVtZW50KCkpCi0gICAgICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VzT2ZDaGls
ZHJlbih0b1JlbmRlckVsZW1lbnQoKmNoaWxkKSk7Ci0gICAgfQorICAgIGZvciAoYXV0byogZWxl
bWVudCA6IGVsZW1lbnRzVGhhdERpZE5vdFJlY2VpdmVMYXlvdXQpCisgICAgICAgIGludmFsaWRh
dGVSZXNvdXJjZXNPZkNoaWxkcmVuKCplbGVtZW50KTsKIH0KIAogYm9vbCBTVkdSZW5kZXJTdXBw
b3J0Ojppc092ZXJmbG93SGlkZGVuKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQpAQCAt
NDI4LDggKzQyNiw4IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6YXBwbHlTdHJva2VTdHlsZVRv
Q29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgZWxzZSB7CiAgICAg
ICAgIERhc2hBcnJheSBkYXNoQXJyYXk7CiAgICAgICAgIGRhc2hBcnJheS5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGRhc2hlcy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBz
aXplID0gZGFzaGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgIGRhc2hBcnJh
eS51bmNoZWNrZWRBcHBlbmQoZGFzaGVzW2ldLnZhbHVlKGxlbmd0aENvbnRleHQpKTsKKyAgICAg
ICAgZm9yIChhdXRvJiBkYXNoIDogZGFzaGVzKQorICAgICAgICAgICAgZGFzaEFycmF5LnVuY2hl
Y2tlZEFwcGVuZChkYXNoLnZhbHVlKGxlbmd0aENvbnRleHQpKTsKIAogICAgICAgICBjb250ZXh0
LT5zZXRMaW5lRGFzaChkYXNoQXJyYXksIHN2Z1N0eWxlLnN0cm9rZURhc2hPZmZzZXQoKS52YWx1
ZShsZW5ndGhDb250ZXh0KSk7CiAgICAgfQpAQCAtNDY1LDcgKzQ2Myw3IEBAIHZvaWQgU1ZHUmVu
ZGVyU3VwcG9ydDo6dXBkYXRlTWFza2VkQW5jZXN0b3JTaG91bGRJc29sYXRlQmxlbmRpbmcoY29u
c3QgUmVuZGVyRWxlCiAgICAgQVNTRVJUKHJlbmRlcmVyLmVsZW1lbnQoKS0+aXNTVkdFbGVtZW50
KCkpOwogCiAgICAgYm9vbCBtYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyA9IHJl
bmRlcmVyLnN0eWxlKCkuaGFzQmxlbmRNb2RlKCk7Ci0gICAgZm9yIChhdXRvIGFuY2VzdG9yID0g
cmVuZGVyZXIuZWxlbWVudCgpLT5wYXJlbnRFbGVtZW50KCk7IGFuY2VzdG9yICYmIGFuY2VzdG9y
LT5pc1NWR0VsZW1lbnQoKTsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50RWxlbWVudCgpKSB7
CisgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IHJlbmRlcmVyLmVsZW1lbnQoKS0+cGFyZW50RWxl
bWVudCgpOyBhbmNlc3RvciAmJiBhbmNlc3Rvci0+aXNTVkdFbGVtZW50KCk7IGFuY2VzdG9yID0g
YW5jZXN0b3ItPnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICBpZiAoIXRvU1ZHRWxlbWVudChh
bmNlc3RvciktPmlzU1ZHR3JhcGhpY3NFbGVtZW50KCkgfHwgIWlzb2xhdGVzQmxlbmRpbmcoKmFu
Y2VzdG9yLT5jb21wdXRlZFN0eWxlKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDeWNsZVNv
bHZlci5jcHAKaW5kZXggNjQ5OTY3YzZhYTE5ZDEyNTJkMTM1M2M4M2ZkZGE3MjNiYmZiNzcyZi4u
Mjc1ZmMxOTI2YzhhZDFhYmI3ZmYyMWM5N2MzNTczNTczM2YyMjJlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5j
cHAKQEAgLTIzLDggKzIzLDggQEAKIC8vIFNldCB0byBhIHZhbHVlID4gMCwgdG8gZGVidWcgdGhl
IHJlc291cmNlIGNhY2hlLgogI2RlZmluZSBERUJVR19DWUNMRV9ERVRFQ1RJT04gMAogCisjaW5j
bHVkZSAiUmVuZGVyQW5jZXN0b3JJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQu
aCIKLSNpbmNsdWRlICJSZW5kZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaCIKQEAgLTU2LDcgKzU2LDcgQEAgYm9vbCBT
VkdSZXNvdXJjZXNDeWNsZVNvbHZlcjo6cmVzb3VyY2VDb250YWluc0N5Y2xlcyhSZW5kZXJFbGVt
ZW50JiByZW5kZXJlcikgY28KICAgICAgICAgcmVzb3VyY2VzLT5idWlsZFNldE9mUmVzb3VyY2Vz
KHJlc291cmNlU2V0KTsKIAogICAgICAgICAvLyBXYWxrIGFsbCByZXNvdXJjZXMgYW5kIGNoZWNr
IHdoZXRlciB0aGV5IHJlZmVyZW5jZSBhbnkgcmVzb3VyY2UgY29udGFpbmVkIGluIHRoZSByZXNv
dXJjZXMgc2V0LgotICAgICAgICBmb3IgKGF1dG8gcmVzb3VyY2UgOiByZXNvdXJjZVNldCkgewor
ICAgICAgICBmb3IgKGF1dG8qIHJlc291cmNlIDogcmVzb3VyY2VTZXQpIHsKICAgICAgICAgICAg
IGlmIChtX2FsbFJlc291cmNlcy5jb250YWlucyhyZXNvdXJjZSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBTVkdSZXNvdXJj
ZXNDeWNsZVNvbHZlcjo6cmVzb3VyY2VDb250YWluc0N5Y2xlcyhSZW5kZXJFbGVtZW50JiByZW5k
ZXJlcikgY28KICAgICAgICAgY2hpbGRSZXNvdXJjZXMtPmJ1aWxkU2V0T2ZSZXNvdXJjZXMoY2hp
bGRSZXNvdXJjZVNldCk7CiAKICAgICAgICAgLy8gV2FsayBhbGwgY2hpbGQgcmVzb3VyY2VzIGFu
ZCBjaGVjayB3aGV0ZXIgdGhleSByZWZlcmVuY2UgYW55IHJlc291cmNlIGNvbnRhaW5lZCBpbiB0
aGUgcmVzb3VyY2VzIHNldC4KLSAgICAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IGNoaWxkUmVz
b3VyY2VTZXQpIHsKKyAgICAgICAgZm9yIChhdXRvKiByZXNvdXJjZSA6IGNoaWxkUmVzb3VyY2VT
ZXQpIHsKICAgICAgICAgICAgIGlmIChtX2FsbFJlc291cmNlcy5jb250YWlucyhyZXNvdXJjZSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTEwMywzMSArMTAz
LDI3IEBAIHZvaWQgU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXI6OnJlc29sdmVDeWNsZXMoKQogICAg
IEFTU0VSVCghbG9jYWxSZXNvdXJjZXMuaXNFbXB0eSgpKTsKIAogICAgIC8vIEFkZCBhbGwgcGFy
ZW50IHJlc291cmNlIGNvbnRhaW5lcnMgdG8gdGhlIEhhc2hTZXQuCi0gICAgSGFzaFNldDxSZW5k
ZXJTVkdSZXNvdXJjZUNvbnRhaW5lcio+IHBhcmVudFJlc291cmNlczsKLSAgICBhdXRvIHBhcmVu
dCA9IG1fcmVuZGVyZXIucGFyZW50KCk7Ci0gICAgd2hpbGUgKHBhcmVudCkgewotICAgICAgICBp
ZiAocGFyZW50LT5pc1NWR1Jlc291cmNlQ29udGFpbmVyKCkpCi0gICAgICAgICAgICBwYXJlbnRS
ZXNvdXJjZXMuYWRkKHRvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIocGFyZW50KSk7Ci0gICAg
ICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50KCk7Ci0gICAgfQorICAgIEhhc2hTZXQ8UmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIqPiBhbmNlc3RvclJlc291cmNlczsKKyAgICBmb3IgKGF1dG8m
IHJlc291cmNlIDogYW5jZXN0b3JzT2ZUeXBlPFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyPiht
X3JlbmRlcmVyKSkKKyAgICAgICAgYW5jZXN0b3JSZXNvdXJjZXMuYWRkKCZyZXNvdXJjZSk7CiAK
ICNpZiBERUJVR19DWUNMRV9ERVRFQ1RJT04gPiAwCiAgICAgZnByaW50ZihzdGRlcnIsICJcbkRl
dGVjdGluZyB3aGV0ZXIgYW55IHJlc291cmNlcyByZWZlcmVuY2VzIGFueSBvZiBmb2xsb3dpbmcg
b2JqZWN0czpcbiIpOwogICAgIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJMb2NhbCByZXNv
dXJjZXM6XG4iKTsKLSAgICAgICAgZm9yIChhdXRvIGl0ID0gbG9jYWxSZXNvdXJjZXMuYmVnaW4o
KSwgZW5kID0gbG9jYWxSZXNvdXJjZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAifD4gJXM6IG9iamVjdD0lcCAobm9kZT0lcClcbiIsICgqaXQp
LT5yZW5kZXJOYW1lKCksICppdCwgKCppdCktPm5vZGUoKSk7CisgICAgICAgIGZvciAoYXV0byog
cmVzb3VyY2UgOiBsb2NhbFJlc291cmNlcykKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
fD4gJXM6IG9iamVjdD0lcCAobm9kZT0lcClcbiIsIHJlc291cmNlLT5yZW5kZXJOYW1lKCksIHJl
c291cmNlLCByZXNvdXJjZS0+bm9kZSgpKTsKIAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlBh
cmVudCByZXNvdXJjZXM6XG4iKTsKLSAgICAgICAgZm9yIChhdXRvIGl0ID0gcGFyZW50UmVzb3Vy
Y2VzLmJlZ2luKCksIGVuZCA9IHBhcmVudFJlc291cmNlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ8PiAlczogb2JqZWN0PSVwIChub2RlPSVw
KVxuIiwgKCppdCktPnJlbmRlck5hbWUoKSwgKml0LCAoKml0KS0+bm9kZSgpKTsKKyAgICAgICAg
Zm9yIChhdXRvKiByZXNvdXJjZSA6IGFuY2VzdG9yUmVzb3VyY2VzKQorICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJ8PiAlczogb2JqZWN0PSVwIChub2RlPSVwKVxuIiwgcmVzb3VyY2UtPnJl
bmRlck5hbWUoKSwgcmVzb3VyY2UsIHJlc291cmNlLT5ub2RlKCkpOwogICAgIH0KICNlbmRpZgog
CiAgICAgLy8gQnVpbGQgY29tYmluZWQgc2V0IG9mIGxvY2FsIGFuZCBwYXJlbnQgcmVzb3VyY2Vz
LgogICAgIG1fYWxsUmVzb3VyY2VzID0gbG9jYWxSZXNvdXJjZXM7Ci0gICAgZm9yIChhdXRvIGl0
ID0gcGFyZW50UmVzb3VyY2VzLmJlZ2luKCksIGVuZCA9IHBhcmVudFJlc291cmNlcy5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KQotICAgICAgICBtX2FsbFJlc291cmNlcy5hZGQoKml0KTsKKyAgICBm
b3IgKGF1dG8qIHJlc291cmNlIDogYW5jZXN0b3JSZXNvdXJjZXMpCisgICAgICAgIG1fYWxsUmVz
b3VyY2VzLmFkZChyZXNvdXJjZSk7CiAKICAgICAvLyBJZiB3ZSdyZSBhIHJlc291cmNlLCBhZGQg
b3Vyc2VsdmVzIHRvIHRoZSBIYXNoU2V0LgogICAgIGlmIChtX3JlbmRlcmVyLmlzU1ZHUmVzb3Vy
Y2VDb250YWluZXIoKSkKQEAgLTEzNywxMCArMTMzLDkgQEAgdm9pZCBTVkdSZXNvdXJjZXNDeWNs
ZVNvbHZlcjo6cmVzb2x2ZUN5Y2xlcygpCiAKICAgICAvLyBUaGUgam9iIG9mIHRoaXMgZnVuY3Rp
b24gaXMgdG8gZGV0ZXJtaW5lIHdoZXRlciBhbnkgb2YgdGhlICdyZXNvdXJjZXMnIGFzc29jaWF0
ZWQgd2l0aCB0aGUgZ2l2ZW4gJ3JlbmRlcmVyJwogICAgIC8vIHJlZmVyZW5jZXMgdXMgKG9yIHdo
ZXRlciBhbnkgb2YgaXRzIGtpZHMgcmVmZXJlbmNlcyB1cykgLT4gdGhhdCdzIGEgY3ljbGUsIHdl
IG5lZWQgdG8gZmluZCBhbmQgYnJlYWsgaXQuCi0gICAgZm9yIChhdXRvIGl0ID0gbG9jYWxSZXNv
dXJjZXMuYmVnaW4oKSwgZW5kID0gbG9jYWxSZXNvdXJjZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciYgcmVzb3VyY2UgPSAqKml0
OwotICAgICAgICBpZiAocGFyZW50UmVzb3VyY2VzLmNvbnRhaW5zKCZyZXNvdXJjZSkgfHwgcmVz
b3VyY2VDb250YWluc0N5Y2xlcyhyZXNvdXJjZSkpCi0gICAgICAgICAgICBicmVha0N5Y2xlKHJl
c291cmNlKTsKKyAgICBmb3IgKGF1dG8qIHJlc291cmNlIDogbG9jYWxSZXNvdXJjZXMpIHsKKyAg
ICAgICAgaWYgKGFuY2VzdG9yUmVzb3VyY2VzLmNvbnRhaW5zKHJlc291cmNlKSB8fCByZXNvdXJj
ZUNvbnRhaW5zQ3ljbGVzKCpyZXNvdXJjZSkpCisgICAgICAgICAgICBicmVha0N5Y2xlKCpyZXNv
dXJjZSk7CiAgICAgfQogCiAjaWYgREVCVUdfQ1lDTEVfREVURUNUSU9OID4gMApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKaW5kZXggNWMwZmEyMjdh
MmM5MzM4NDY3NzBiYjY2YmE4YWI2NWFjN2RkOTdiNi4uMzBjNzJiZjA0OGQ1NTEwMmJiMDNkNmYz
ZmVlM2ZkMjFmZDlkNTQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1v
dGlvbkVsZW1lbnQuY3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9u
RWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQoKQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyAuLi5leGNlcHQgaW4gY2FzZSB3aGVyZSB3ZSBoYXZlIGFkZGl0aW9uYWwgaW5zdGFuY2VzIGlu
IDx1c2U+IHRyZWVzLgotICAgIGZvciAoYXV0byBpbnN0YW5jZSA6IHRhcmdldEVsZW1lbnQtPmlu
c3RhbmNlc0ZvckVsZW1lbnQoKSkgeworICAgIGZvciAoYXV0byogaW5zdGFuY2UgOiB0YXJnZXRF
bGVtZW50LT5pbnN0YW5jZXNGb3JFbGVtZW50KCkpIHsKICAgICAgICAgU1ZHRWxlbWVudCogc2hh
ZG93VHJlZUVsZW1lbnQgPSBpbnN0YW5jZS0+c2hhZG93VHJlZUVsZW1lbnQoKTsKICAgICAgICAg
QVNTRVJUKHNoYWRvd1RyZWVFbGVtZW50KTsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtKiB0cmFu
c2Zvcm0gPSBzaGFkb3dUcmVlRWxlbWVudC0+c3VwcGxlbWVudGFsVHJhbnNmb3JtKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAppbmRleCBjMDhmNDEzNGQzMjE3YmJjMmYyMTVj
MjdjZGFkOTdmMDBmYzY5Y2MwLi45YWFhNGQyMzA2YTE2N2I4NTNhZmJjMzg1MjhiZjVkYzgwYzU3
ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKQEAgLTI4NCw3ICsyODQs
NyBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjppbnZhbGlkYXRlTVBhdGhEZXBlbmRlbmNpZXMoKQog
ICAgIC8vIDxtcGF0aD4gY2FuIG9ubHkgcmVmZXJlbmNlIDxwYXRoPiBidXQgdGhpcyBkZXBlbmRl
bmN5IGlzIG5vdCBoYW5kbGVkIGluCiAgICAgLy8gbWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uIHNvIHdlIHVwZGF0ZSBhbnkgbXBhdGggZGVwZW5kZW5jaWVzIG1hbnVh
bGx5LgogICAgIGlmIChIYXNoU2V0PFNWR0VsZW1lbnQqPiogZGVwZW5kZW5jaWVzID0gZG9jdW1l
bnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnNldE9mRWxlbWVudHNSZWZlcmVuY2luZ1Rhcmdl
dCh0aGlzKSkgewotICAgICAgICBmb3IgKGF1dG8gZWxlbWVudCA6ICpkZXBlbmRlbmNpZXMpIHsK
KyAgICAgICAgZm9yIChhdXRvKiBlbGVtZW50IDogKmRlcGVuZGVuY2llcykgewogICAgICAgICAg
ICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6Om1wYXRoVGFnKSkKICAgICAgICAg
ICAgICAgICB0b1NWR01QYXRoRWxlbWVudChlbGVtZW50KS0+dGFyZ2V0UGF0aENoYW5nZWQoKTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggY2Y4ZDcy
MzQzY2NlZjVmZTc0MjUxOWI1ODQ3YjA2ODQ3MzA0NjU2MC4uYTc2OGViZDc4Y2NhMDg4YmIzODgy
YTU1ZDAyMDJlNjE0NzMwNDdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CkBAIC05MDEsMTAgKzkwMSwxMCBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50
RnJhZ21lbnRXaXRoTm9kZXNBc1BhcmFncmFwaHM6KE5TQXJyYXkgKilub2RlcwogCiAgICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZURvY3VtZW50
RnJhZ21lbnQoKTsKIAotICAgIGZvciAoYXV0byBub2RlIDogbm9kZXNWZWN0b3IpIHsKKyAgICBm
b3IgKGF1dG8qIG5vZGUgOiBub2Rlc1ZlY3RvcikgewogICAgICAgICBSZWZQdHI8RWxlbWVudD4g
ZWxlbWVudCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KCpkb2N1bWVudCk7Ci0gICAg
ICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKG5vZGUsIEFTU0VSVF9OT19FWENFUFRJT04pOwotICAg
ICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5yZWxlYXNlKCksIEFTU0VSVF9OT19F
WENFUFRJT04pOworICAgICAgICBlbGVtZW50LT5hcHBlbmRDaGlsZChub2RlKTsKKyAgICAgICAg
ZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQucmVsZWFzZSgpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4ga2l0KGZyYWdtZW50LnJlbGVhc2UoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1t
CmluZGV4IDU4YTRhZDUwMGU4YTVjOWRmMmQwNmZkNWE2ZjIzZjNmMDA5ZWE0ZDAuLmIzNjJjNzUx
NmRkNWNhN2JmMWRiMTQ2MWJlYTBhNDNmOGUyMDM2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1t
CkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6
OmFwcGx5UHJvcGVydGllcyhVSVZpZXcgKnZpZXcsIGNvbnN0IFJlbW90ZUwKIAogICAgIGlmIChw
cm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OkNoaWxkcmVuQ2hhbmdlZCkgewogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGNo
aWxkcmVuID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OnByb3BlcnRpZXMuY2hpbGRyZW4uc2l6ZSgpXSk7Ci0gICAgICAgIGZvciAoYXV0byBjaGlsZCA6
IHByb3BlcnRpZXMuY2hpbGRyZW4pIHsKKyAgICAgICAgZm9yIChhdXRvJiBjaGlsZCA6IHByb3Bl
cnRpZXMuY2hpbGRyZW4pIHsKICAgICAgICAgICAgIEFTU0VSVChyZWxhdGVkTGF5ZXJzLmdldChj
aGlsZCkpOwogICAgICAgICAgICAgW2NoaWxkcmVuIGFkZE9iamVjdDpyZWxhdGVkTGF5ZXJzLmdl
dChjaGlsZCldOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCAxNjU2YzhhNzM1NDI2M2Nk
NzMzNzZlOGIxODBiYWQ4MDRiZTRiZjI1Li4yMjRjMzFlZDZlYzFiN2JiNDhiNDc3ZmY0NzQxZWIw
ODFjYmIxYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTI0MCw3ICsyNDAsNyBAQCBib29sIFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6OkFyZ3Vt
ZW50RGVjb2RlciYgZAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaGlsZHJl
bikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgZm9yIChhdXRvIGxheWVy
SUQgOiByZXN1bHQuY2hpbGRyZW4pIHsKKyAgICAgICAgZm9yIChhdXRvJiBsYXllcklEIDogcmVz
dWx0LmNoaWxkcmVuKSB7CiAgICAgICAgICAgICBpZiAoIWxheWVySUQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC00NTQsNyArNDU0LDcgQEAgYm9vbCBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNv
ZGVyLCBSZW1vdGVMYXkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2Rlc3Ryb3ll
ZExheWVySURzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9yIChhdXRvIGxheWVy
SUQgOiByZXN1bHQubV9kZXN0cm95ZWRMYXllcklEcykgeworICAgIGZvciAoYXV0byYgbGF5ZXJJ
RCA6IHJlc3VsdC5tX2Rlc3Ryb3llZExheWVySURzKSB7CiAgICAgICAgIGlmICghbGF5ZXJJRCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC02OTUsNyArNjk1LDcgQEAgc3Rh
dGljIHZvaWQgZHVtcENoYW5nZWRMYXllcnMoUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFJlbW90ZUxheWVyVHIKICAgICBjb3B5S2V5c1RvVmVjdG9yKGNoYW5nZWRMYXllclBy
b3BlcnRpZXMsIGxheWVySURzKTsKICAgICBzdGQ6OnNvcnQobGF5ZXJJRHMuYmVnaW4oKSwgbGF5
ZXJJRHMuZW5kKCkpOwogCi0gICAgZm9yIChhdXRvIGxheWVySUQgOiBsYXllcklEcykgeworICAg
IGZvciAoYXV0byYgbGF5ZXJJRCA6IGxheWVySURzKSB7CiAgICAgICAgIGNvbnN0IFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXMmIGxheWVyUHJvcGVydGllcyA9ICpj
aGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzLmdldChsYXllcklEKTsKIAogICAgICAgICB0cyA8PCAiXG4i
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRy
ZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVI
b3N0Lm1tCmluZGV4IGQ5ZjBhM2NlOGVjOWY1ZDEwODg1OWMwZDdiMWY2YWM4NDJmOWU5ODcuLmFk
MDAzYjM2NTk4NzMzN2UzMjgxN2FjZTVlYjE0YTA5YWMyNjk5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTkzLDcg
KzkzLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllclRyZWUoY29uc3Qg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIHRyYW4KICAgICAgICAgICAgIFJlbW90ZUxheWVy
VHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzKGxheWVyLCBwcm9wZXJ0aWVzLCBy
ZWxhdGVkTGF5ZXJzKTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8gZGVzdHJveWVkTGF5ZXIgOiB0
cmFuc2FjdGlvbi5kZXN0cm95ZWRMYXllcnMoKSkKKyAgICBmb3IgKGF1dG8mIGRlc3Ryb3llZExh
eWVyIDogdHJhbnNhY3Rpb24uZGVzdHJveWVkTGF5ZXJzKCkpCiAgICAgICAgIG1fbGF5ZXJzLnJl
bW92ZShkZXN0cm95ZWRMYXllcik7CiAKICAgICByZXR1cm4gcm9vdExheWVyQ2hhbmdlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDNiZTlmY2YwZmIxYjg3
MDk3OTRmNTVkYjc2MzQ0NzJlODYxODAwZjcuLmIxNWUxMzA5ZWQ4N2IzYjEyNTYxNjM1ZGExODU4
OGVmOTQ0OTNkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApA
QCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dmlzaXRlZExpbmtTdGF0ZUNoYW5n
ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkxpbmtIYXNoPiYgbGlua0hhCiAgICAgLy8gRklYTUU6
IFdlIG1heSB3YW50IHRvIHRyYWNrIHZpc2l0ZWQgbGlua3MgcGVyIFdlYlBhZ2VHcm91cCByYXRo
ZXIgdGhhbiBwZXIgV2ViQ29udGV4dC4KICAgICBmb3IgKGNvbnN0IGF1dG8mIHdlYlBhZ2UgOiBt
X3BhZ2VNYXAudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSB3ZWJQYWdlLT5j
b3JlUGFnZSgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gbGlua0hhc2ggOiBsaW5rSGFzaGVz
KQorICAgICAgICAgICAgZm9yIChhdXRvJiBsaW5rSGFzaCA6IGxpbmtIYXNoZXMpCiAgICAgICAg
ICAgICAgICAgcGFnZS0+aW52YWxpZGF0ZVN0eWxlc0ZvckxpbmsobGlua0hhc2gpOwogICAgICAg
ICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226468</attachid>
            <date>2014-03-11 20:09:13 -0700</date>
            <delta_ts>2014-03-23 13:43:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129990-20140311200849.patch</filename>
            <type>text/plain</type>
            <size>39138</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1NDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MjU5NmI4OGZlYzIwYTk2NjZlZWVjMDI2ZWU1MGUzZmY3N2M3NzhhLi43Y2NjNmZiNzY1ZDNlN2U4
YzMxODVlZTdiYjg2MDE0YWVhZDg2MWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNC0wMy0xMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQXZvaWQgY29weS1wcm9uZSBpZGlvbSAiZm9yIChhdXRvIGl0ZW0gOiBjb2xsZWN0
aW9uKSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
OTk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aGVhcC9Db2RlQmxvY2tTZXQuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0OjppdGVyYXRl
KTogVXNlIGF1dG8mIHRvIGJlIHN1cmUgd2UgZG9uJ3QgY29weSBieSBhY2NpZGVudC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9y
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uTG9nKTogVXNlIGF1
dG8qIHRvCisgICAgICAgIG1ha2UgZXhwbGljaXQgdGhhdCB3ZSBhcmUgaXRlcmF0aW5nIHRocm91
Z2ggcG9pbnRlcnMuCisgICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNw
YXRjaEJyZWFrcG9pbnRBY3Rpb25Tb3VuZCk6IERpdHRvLgorICAgICAgICAoSW5zcGVjdG9yOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uUHJvYmUpOiBEaXR0by4K
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3Bv
aW50KTogVXNlIGF1dG8mLCBhbmQgYWxzbworICAgICAgICBnZXQgcmlkIG9mIGFuIHVubmVlZGVk
IGxvY2FsIHZhcmlhYmxlLgorCiAyMDE0LTAzLTExICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVu
YmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgTWFya2VkQmxvY2tzIHRoYXQgYXJlICJmdWxsIGVu
b3VnaCIgc2hvdWxkbid0IGJlIHN3ZXB0IGFmdGVyIEVkZW5Db2xsZWN0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDAyYWU1NDc1OTMwMTMwYjZlZWFkNDk3NGEwOTVkYTFiODdlYWFiMzguLjZmNjQzYzBlZWMw
ODk2Y2E1YzM5MmQyNTVkMzg0MjE3OTQwNDI0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBA
QAorMjAxNC0wMy0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
QXZvaWQgY29weS1wcm9uZSBpZGlvbSAiZm9yIChhdXRvIGl0ZW0gOiBjb2xsZWN0aW9uKSIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTk5MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhl
c2UgY2hhbmdlcyBoYXZlIG5vIGVmZmVjdC4gQSBmZXcgb2YgdGhlbSBnZXQgcmlkIG9mIHVud2Fu
dGVkCisgICAgICAgIGNvcHlpbmcgb2YgdGhlIGl0ZW1zIGFzIHdlIGl0ZXJhdGUgdGhlbS4gRm91
bmQgdGhlc2Ugd2l0aCB0aGUgY29tbWFuZAorICAgICAgICAnZ2l0IGdyZXAgImZvciAoYXV0byAu
KjoiJyBvciB0aGUgZXF1aXZhbGVudC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QktleURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6SURCS2V5RGF0YSk6
IFVzZSBhdXRvJiB0byBhdm9pZCBjb3B5aW5nIHRoZSBrZXlzLgorICAgICAgICAoV2ViQ29yZTo6
SURCS2V5RGF0YTo6bWF5YmVDcmVhdGVJREJLZXkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OklEQktleURhdGE6Omlzb2xhdGVkQ29weSk6IERpdHRvLgorCisgICAgICAgICogZG9tL05vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmludmFsaWRhdGVOb2RlTGlzdEFuZENv
bGxlY3Rpb25DYWNoZXMpOiBVc2UgYXV0byoKKyAgICAgICAgdG8gbWFrZSBleHBsaWNpdCB0aGUg
ZmFjdCB0aGF0IHRoZXNlIGFyZSBwb2ludGVycy4gU3RvcCB1c2luZyAiaXQiIGZvcgorICAgICAg
ICBhIHZhcmlhYmxlIHRoYXQgaXMgbm90IGFuIGl0ZXJhdG9yLiBHZXQgcmlkIG9mIHVubmVlZGVk
IGxvY2FsIHZhcmlhYmxlcworICAgICAgICBmb3IgdGhlIGNvbGxlY3Rpb25zIHRoZW1zZWx2ZXMu
CisKKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
TGlzdHNOb2RlRGF0YTo6YWRvcHREb2N1bWVudCk6IFVzZSBhdXRvJiB0byBtYWtlIHN1cmUgd2UK
KyAgICAgICAgZG9uJ3QgZG8gYW55IHVubmVjZXNzYXJ5IGNvcHlpbmcuIFN0b3AgdXNpbmcgIml0
IiBmb3IgYSB2YXJpYWJsZSB0aGF0CisgICAgICAgIGlzIG5vdCBhbiBpdGVyYXRvci4KKworICAg
ICAgICAqIGh0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRhYmxlUm93c0NvbGxlY3Rpb246Omxhc3RSb3cpOiBVc2UgYXV0byogdG8gYmUgZXhw
bGljaXQKKyAgICAgICAgdGhhdCB0aGVzZSBhcmUgcG9pbnRlcnMuCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvck5vZGVGaW5kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Tm9kZUZpbmRlcjo6c2VhcmNoVXNpbmdET01UcmVlVHJhdmVyc2FsKTogRGl0dG8uCisgICAgICAg
ICogcGFnZS9pb3MvRnJhbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW50ZXJw
cmV0YXRpb25zRm9yQ3VycmVudFJvb3QpOiBEaXR0by4gQWxzbyBnb3QgcmlkIG9mCisgICAgICAg
IGFuIHVubmVjZXNzYXJ5IGxvY2FsIHZhcmlhYmxlLgorCisgICAgICAgICogcGxhdGZvcm0vRmls
ZUNob29zZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNob29zZXI6OmNob29zZUZpbGVz
KTogVXNlIGF1dG8mLiBBbHNvIGZpeCBhIEZJWE1FLgorICAgICAgICAoV2ViQ29yZTo6RmlsZUNo
b29zZXI6OmNob29zZU1lZGlhRmlsZXMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Om5hdHVyYWxTaXpl
KTogVXNlIGF1dG8mLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckl0ZXJhdG9yLmg6IENo
YW5nZWQgaW5jbHVkZSBmcm9tIFJlbmRlck9iamVjdC5oIHRvCisgICAgICAgIFJlbmRlckVsZW1l
bnQuaDsgaXRlcmF0b3JzIGFyZSBiYXNlZCBvbiBSZW5kZXJFbGVtZW50IG5vdy4KKworICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cmVtb3ZlRnJvbUNhY2hlQW5kSW52YWxpZGF0ZURlcGVuZGVuY2llcyk6IFVzZSBhdXRvKi4K
KworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6Om1hcmtBbGxD
bGllbnRzRm9ySW52YWxpZGF0aW9uKTogVXNlIGF1dG8qLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6Om1hcmtBbGxDbGllbnRMYXllcnNGb3JJbnZhbGlkYXRp
b24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVy
OjpyZWdpc3RlclJlc291cmNlKTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3VwcG9ydDo6
bGF5b3V0Q2hpbGRyZW4pOiBVcGRhdGVkIHRvIHVzZSBhIG1vcmUgc3BlY2lmaWMKKyAgICAgICAg
dHlwZSwgdG8gdXNlIGF1dG8qIGluc3RlYWQgb2Ygb2YgYXV0bywgYW5kIHRvIGVsaW1pbmF0ZSB0
aGUgc2xpZ2h0bHkgc2xvcHBpbHkKKyAgICAgICAgY2FwaXRhbGl6ZWQgYW5kIG5vdC1zby1zbGln
aHRseSB1bmdyYW1tYXRpY2FsIG5vdGxheW91dGVkT2JqZWN0cy4KKyAgICAgICAgKFdlYkNvcmU6
OlNWR1JlbmRlclN1cHBvcnQ6OmFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQpOiBVc2UgYXV0byYu
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojp1cGRhdGVNYXNrZWRBbmNlc3Rv
clNob3VsZElzb2xhdGVCbGVuZGluZyk6IFVzZSBhdXRvKi4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmVzb3VyY2VzQ3ljbGVTb2x2ZXI6OnJlc291cmNlQ29udGFpbnNDeWNsZXMpOiBVc2UgYXV0byou
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDeWNsZVNvbHZlcjo6cmVzb2x2ZUN5Y2xl
cyk6IERpdHRvLiBBbHNvIGxpbmVhZ2VPZlR5cGUuCisKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KTogVXNlIGF1dG8qLgorICAgICAgICAqIHN2Zy9T
VkdQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6aW52
YWxpZGF0ZU1QYXRoRGVwZW5kZW5jaWVzKTogRGl0dG8uCisKIDIwMTQtMDMtMTEgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IHRoZSBpbmNvbXBsZXRl
IFdlYlZUVCBSZWdpb25zIGNvZGUgdG8gYnVpbGQgYWdhaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
MWY1YWM2MmYwOTEzMDdmOTU0Y2ZjZWZiNzc4N2MyNDNkOTYxZDI1Zi4uZjczMjdkNzg2YTQ3Yzhi
ZDE4NzdmZTkxMGY3MzExZGVkZTRmMjc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDE0LTAzLTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBBdm9pZCBjb3B5LXByb25lIGlkaW9tICJmb3IgKGF1dG8gaXRlbSA6IGNvbGxlY3Rpb24pIgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5OTkwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfZG9jdW1lbnRGcmFnbWVudFdpdGhO
b2Rlc0FzUGFyYWdyYXBoczpdKToKKyAgICAgICAgVXNlIGF1dG8qLiBBbHNvIHJlbW92ZWQgdW5l
ZWRlZCBBU1NFUlRfTk9fRVhDRVBUSU9OLCB3aGljaCBpcyBhbHJlYWR5CisgICAgICAgIHRoZSBk
ZWZhdWx0IHdpdGhvdXQgc3BlY2lmeWluZyBpdCBleHBsaWNpdGx5LgorCiAyMDE0LTAzLTEwICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdW1dLMV0gQ3Jh
c2ggaW4gSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKCkgLSAiLVtOU1Nl
dCBhZGRPYmplY3Q6XTogb2JqZWN0IGNhbm5vdCBiZSBuaWwiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWM0MWY5
MWNmNmVmMjFhMjE2YjU0OWNmMzY0Yzg1NmUxZTZjN2JkMy4uODUwYWNlMzg0M2ViMDhlMmQwM2U0
ZmZmOGY1NTY1M2I0MTk3N2JkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE0LTAz
LTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBjb3B5
LXByb25lIGlkaW9tICJmb3IgKGF1dG8gaXRlbSA6IGNvbGxlY3Rpb24pIgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5OTkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxh
eWVyVHJlZVByb3BlcnR5QXBwbGllci5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlUHJvcGVydHlBcHBsaWVyOjphcHBseVByb3BlcnRpZXMpOiBVc2UgYXV0byYuCisKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNv
ZGUpOiBVc2UgYXV0byYKKyAgICAgICAgZXZlbiB0aG91Z2ggdGhlIHR5cGUgaXMgYSBzY2FsYXIu
IFRoaXMgZG9lcyBubyBoYXJtIGFuZCBtYWtlcyBpdCBlYXNpZXIKKyAgICAgICAgdG8gc3BvdCB1
c2VzIHRoYXQgdHJpZ2dlciB1bm5lY2Vzc2FyeSBjb3B5aW5nIHdpdGggZ3JlcC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZSk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpkdW1wQ2hhbmdlZExheWVycyk6IERpdHRvLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJUcmVlKTogRGl0dG8uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dmlzaXRl
ZExpbmtTdGF0ZUNoYW5nZWQpOiBEaXR0by4KKwogMjAxNC0wMy0xMSAgQmV0aCBEYWtpbiAgPGJk
YWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBz
aG91bGQgbm90IGJlIGV4cG9zZWQgb24gV0tXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldC5oCmluZGV4IDEwNGZmYzRhYzAyNTlmZTAwYmY2OGFhZjg3MjRiYWVj
MWJkNGNlNDMuLjdmNTBkNWFlYzMwOWFhNDA3NGIwZGJlYjFjODY4ODNmOThhYWFhYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5oCkBAIC04MCw3ICs4MCw3IEBA
IHB1YmxpYzoKICAgICAvLyB2aXNpdGVkLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
IHZvaWQgaXRlcmF0ZShGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKLSAgICAgICAgZm9yIChhdXRv
ICZjb2RlQmxvY2sgOiBtX3NldCkgeworICAgICAgICBmb3IgKGF1dG8mIGNvZGVCbG9jayA6IG1f
c2V0KSB7CiAgICAgICAgICAgICBib29sIGRvbmUgPSBmdW5jdG9yKGNvZGVCbG9jayk7CiAgICAg
ICAgICAgICBpZiAoZG9uZSkKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXgg
MTJkYmFlYTM2MzQyOWY5MDMwMzFhMTg2YzBhNmY5MmE5MGM0NDMxNS4uNDM2YmU1ZjNiN2NmNGVm
Mzg0NTgwMGJjZjc3YmFhN2NkZGI4ZTgyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTE1NCw3ICsxNTQsNyBA
QCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEJyZWFrcG9pbnRBY3Rpb25Mb2coRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbgogCiAgICAgVmVjdG9yPFNjcmlwdERlYnVnTGlzdGVu
ZXIqPiBsaXN0ZW5lcnNDb3B5OwogICAgIGNvcHlUb1ZlY3RvcigqbGlzdGVuZXJzLCBsaXN0ZW5l
cnNDb3B5KTsKLSAgICBmb3IgKGF1dG8gbGlzdGVuZXIgOiBsaXN0ZW5lcnNDb3B5KQorICAgIGZv
ciAoYXV0byogbGlzdGVuZXIgOiBsaXN0ZW5lcnNDb3B5KQogICAgICAgICBsaXN0ZW5lci0+YnJl
YWtwb2ludEFjdGlvbkxvZyhleGVjLCBtZXNzYWdlKTsKIH0KIApAQCAtMTcyLDcgKzE3Miw3IEBA
IHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoQnJlYWtwb2ludEFjdGlvblNvdW5kKEV4
ZWNTdGF0ZSogZXhlYywgaW50IGJyZWFrCiAKICAgICBWZWN0b3I8U2NyaXB0RGVidWdMaXN0ZW5l
cio+IGxpc3RlbmVyc0NvcHk7CiAgICAgY29weVRvVmVjdG9yKCpsaXN0ZW5lcnMsIGxpc3RlbmVy
c0NvcHkpOwotICAgIGZvciAoYXV0byBsaXN0ZW5lciA6IGxpc3RlbmVyc0NvcHkpCisgICAgZm9y
IChhdXRvKiBsaXN0ZW5lciA6IGxpc3RlbmVyc0NvcHkpCiAgICAgICAgIGxpc3RlbmVyLT5icmVh
a3BvaW50QWN0aW9uU291bmQoYnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIpOwogfQogCkBAIC0x
OTAsNyArMTkwLDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hCcmVha3BvaW50
QWN0aW9uUHJvYmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTY3IKIAogICAgIFZlY3RvcjxTY3Jp
cHREZWJ1Z0xpc3RlbmVyKj4gbGlzdGVuZXJzQ29weTsKICAgICBjb3B5VG9WZWN0b3IoKmxpc3Rl
bmVycywgbGlzdGVuZXJzQ29weSk7Ci0gICAgZm9yIChhdXRvIGxpc3RlbmVyIDogbGlzdGVuZXJz
Q29weSkKKyAgICBmb3IgKGF1dG8qIGxpc3RlbmVyIDogbGlzdGVuZXJzQ29weSkKICAgICAgICAg
bGlzdGVuZXItPmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShleGVjLCBhY3Rpb24sIG1faGl0Q291bnQs
IHNhbXBsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYTMx
NGUxNmFhY2UyZDc1NWExNjQxZWExNjE4OWJjYzk3ZDk3OGZkMC4uZDgyNmNjMjk5ZGZkMWE4MWE4
OTA2MzBlZDM1NjBlZDlmOWU0NWRmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTM0MSw4ICszNDEsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlbW92
ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcAogewogICAgIG1f
amF2YVNjcmlwdEJyZWFrcG9pbnRzLnJlbW92ZShicmVha3BvaW50SWRlbnRpZmllcik7CiAKLSAg
ICBWZWN0b3I8SlNDOjpCcmVha3BvaW50SUQ+IGJyZWFrcG9pbnRJRHMgPSBtX2JyZWFrcG9pbnRJ
ZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMudGFrZShicmVha3BvaW50SWRlbnRp
Zmllcik7Ci0gICAgZm9yIChhdXRvIGJyZWFrcG9pbnRJRCA6IGJyZWFrcG9pbnRJRHMpIHsKKyAg
ICBmb3IgKEpTQzo6QnJlYWtwb2ludElEIGJyZWFrcG9pbnRJRCA6IG1fYnJlYWtwb2ludElkZW50
aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEcy50YWtlKGJyZWFrcG9pbnRJZGVudGlmaWVy
KSkgewogICAgICAgICBjb25zdCBWZWN0b3I8U2NyaXB0QnJlYWtwb2ludEFjdGlvbj4mIGJyZWFr
cG9pbnRBY3Rpb25zID0gc2NyaXB0RGVidWdTZXJ2ZXIoKS5nZXRBY3Rpb25zRm9yQnJlYWtwb2lu
dChicmVha3BvaW50SUQpOwogICAgICAgICBmb3IgKGF1dG8mIGFjdGlvbiA6IGJyZWFrcG9pbnRB
Y3Rpb25zKQogICAgICAgICAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPnJlbGVhc2VPYmpl
Y3RHcm91cChvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oYWN0aW9uKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCmluZGV4IDJhOWZk
YzkyM2VhYTEyY2Q2MDBmMTE0ZmViMDk1YTZkZTdmYjNmMzIuLjdmMzFjNDczOWQ4NmFmYzNjOGJk
NjAyYTU3YmY1OTE1Y2VkYzI1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleURhdGEuY3BwCkBAIC00OSw3ICs0OSw3IEBAIElEQktleURhdGE6OklEQktl
eURhdGEoY29uc3QgSURCS2V5KiBrZXkpCiAgICAgY2FzZSBJREJLZXk6OkludmFsaWRUeXBlOgog
ICAgICAgICBicmVhazsKICAgICBjYXNlIElEQktleTo6QXJyYXlUeXBlOgotICAgICAgICBmb3Ig
KGF1dG8ga2V5MiA6IGtleS0+YXJyYXkoKSkKKyAgICAgICAgZm9yIChhdXRvJiBrZXkyIDoga2V5
LT5hcnJheSgpKQogICAgICAgICAgICAgYXJyYXlWYWx1ZS5hcHBlbmQoSURCS2V5RGF0YShrZXky
LmdldCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSURCS2V5OjpTdHJpbmdUeXBlOgpA
QCAtNzgsNyArNzgsNyBAQCBQYXNzUmVmUHRyPElEQktleT4gSURCS2V5RGF0YTo6bWF5YmVDcmVh
dGVJREJLZXkoKSBjb25zdAogICAgIGNhc2UgSURCS2V5OjpBcnJheVR5cGU6CiAgICAgICAgIHsK
ICAgICAgICAgICAgIElEQktleTo6S2V5QXJyYXkgYXJyYXk7Ci0gICAgICAgICAgICBmb3IgKGF1
dG8ga2V5RGF0YSA6IGFycmF5VmFsdWUpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5RGF0
YSA6IGFycmF5VmFsdWUpIHsKICAgICAgICAgICAgICAgICBhcnJheS5hcHBlbmQoa2V5RGF0YS5t
YXliZUNyZWF0ZUlEQktleSgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoYXJyYXkubGFzdCgp
KTsKICAgICAgICAgICAgIH0KQEAgLTExMCw3ICsxMTAsNyBAQCBJREJLZXlEYXRhIElEQktleURh
dGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgY2FzZSBJREJLZXk6OkludmFsaWRUeXBlOgog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIGNhc2UgSURCS2V5OjpBcnJheVR5cGU6Ci0gICAg
ICAgIGZvciAoYXV0byBrZXkgOiBhcnJheVZhbHVlKQorICAgICAgICBmb3IgKGF1dG8mIGtleSA6
IGFycmF5VmFsdWUpCiAgICAgICAgICAgICByZXN1bHQuYXJyYXlWYWx1ZS5hcHBlbmQoa2V5Lmlz
b2xhdGVkQ29weSgpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBjYXNlIElEQktleTo6
U3RyaW5nVHlwZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA0M2QzZmNmY2FmZDRhOGZkZTE1OTU5NzI4
NmE5MTg3NzBjNzc1ODc2Li40ZjM2MmE4ODUzODBhMWM5YzRmZmFmMjBkY2EzNjYwN2MxMTkxZDY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC03MjQsMTMgKzcyNCwxMCBAQCB2b2lkIERvY3VtZW50Ojpp
bnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUq
IGF0dHJOYQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBtX2luSW52YWxpZGF0ZU5vZGVMaXN0
QW5kQ29sbGVjdGlvbkNhY2hlcyA9IHRydWU7CiAjZW5kaWYKLSAgICBIYXNoU2V0PExpdmVOb2Rl
TGlzdCo+IGxpdmVOb2RlTGlzdHMgPSBzdGQ6Om1vdmUobV9saXN0c0ludmFsaWRhdGVkQXREb2N1
bWVudCk7Ci0gICAgZm9yIChhdXRvIGl0IDogbGl2ZU5vZGVMaXN0cykKLSAgICAgICAgaXQtPmlu
dmFsaWRhdGVDYWNoZShhdHRyTmFtZSk7Ci0KLSAgICBIYXNoU2V0PEhUTUxDb2xsZWN0aW9uKj4g
Y29sbGVjdGlvbkxpc3RzID0gc3RkOjptb3ZlKG1fY29sbGVjdGlvbnNJbnZhbGlkYXRlZEF0RG9j
dW1lbnQpOwotICAgIGZvciAoYXV0byBpdCA6IGNvbGxlY3Rpb25MaXN0cykKLSAgICAgICAgaXQt
PmludmFsaWRhdGVDYWNoZShhdHRyTmFtZSk7CisgICAgZm9yIChhdXRvKiBsaXN0IDogc3RkOjpt
b3ZlKG1fbGlzdHNJbnZhbGlkYXRlZEF0RG9jdW1lbnQpKQorICAgICAgICBsaXN0LT5pbnZhbGlk
YXRlQ2FjaGUoYXR0ck5hbWUpOworICAgIGZvciAoYXV0byogbGlzdCA6IHN0ZDo6bW92ZShtX2Nv
bGxlY3Rpb25zSW52YWxpZGF0ZWRBdERvY3VtZW50KSkKKyAgICAgICAgbGlzdC0+aW52YWxpZGF0
ZUNhY2hlKGF0dHJOYW1lKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgbV9pbkludmFsaWRh
dGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXMgPSBmYWxzZTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSYXJlRGF0YS5oCmluZGV4IGVmNzM2YmFhY2QxNmJjOGRiMDg1N2FhMzEwMzg3OWY1MTZh
NTk3OTUuLjAzNTFmMTgyNmYzMDEzMThjOWQ3YzRkMjQyNTU5MDkyNDYzNTdhNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTMzLDE1ICszMywxNiBAQAogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiVGFnTm9kZUxpc3QuaCIK
LSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0jaW5jbHVkZSAiVGV4dFRyYWNrLmgiCi0jZW5kaWYK
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAorI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKyNpbmNsdWRlICJUZXh0VHJhY2suaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIExhYmVsc05vZGVMaXN0OwpAQCAtMjMxLDI3ICsyMzIsMjcgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgZm9yIChhdXRvIGl0
IDogbV9hdG9taWNOYW1lQ2FjaGVzKQotICAgICAgICAgICAgaXQudmFsdWUtPmludmFsaWRhdGVD
YWNoZSgqb2xkRG9jdW1lbnQpOworICAgICAgICBmb3IgKGF1dG8mIGNhY2hlIDogbV9hdG9taWNO
YW1lQ2FjaGVzLnZhbHVlcygpKQorICAgICAgICAgICAgY2FjaGUtPmludmFsaWRhdGVDYWNoZSgq
b2xkRG9jdW1lbnQpOwogCi0gICAgICAgIGZvciAoYXV0byBpdCA6IG1fbmFtZUNhY2hlcykKLSAg
ICAgICAgICAgIGl0LnZhbHVlLT5pbnZhbGlkYXRlQ2FjaGUoKm9sZERvY3VtZW50KTsKKyAgICAg
ICAgZm9yIChhdXRvJiBjYWNoZSA6IG1fbmFtZUNhY2hlcy52YWx1ZXMoKSkKKyAgICAgICAgICAg
IGNhY2hlLT5pbnZhbGlkYXRlQ2FjaGUoKm9sZERvY3VtZW50KTsKIAotICAgICAgICBmb3IgKGF1
dG8gaXQgOiBtX3RhZ05vZGVMaXN0Q2FjaGVOUykgewotICAgICAgICAgICAgTGl2ZU5vZGVMaXN0
JiBsaXN0ID0gKml0LnZhbHVlOwotICAgICAgICAgICAgQVNTRVJUKCFsaXN0LmlzUm9vdGVkQXRE
b2N1bWVudCgpKTsKLSAgICAgICAgICAgIGxpc3QuaW52YWxpZGF0ZUNhY2hlKCpvbGREb2N1bWVu
dCk7CisgICAgICAgIGZvciAoYXV0byYgbGlzdCA6IG1fdGFnTm9kZUxpc3RDYWNoZU5TLnZhbHVl
cygpKSB7CisgICAgICAgICAgICBBU1NFUlQoIWxpc3QtPmlzUm9vdGVkQXREb2N1bWVudCgpKTsK
KyAgICAgICAgICAgIGxpc3QtPmludmFsaWRhdGVDYWNoZSgqb2xkRG9jdW1lbnQpOwogICAgICAg
ICB9CiAKLSAgICAgICAgZm9yIChhdXRvIGl0IDogbV9jYWNoZWRDb2xsZWN0aW9ucykKLSAgICAg
ICAgICAgIGl0LnZhbHVlLT5pbnZhbGlkYXRlQ2FjaGUoKm9sZERvY3VtZW50KTsKKyAgICAgICAg
Zm9yIChhdXRvJiBjb2xsZWN0aW9uIDogbV9jYWNoZWRDb2xsZWN0aW9ucy52YWx1ZXMoKSkKKyAg
ICAgICAgICAgIGNvbGxlY3Rpb24tPmludmFsaWRhdGVDYWNoZSgqb2xkRG9jdW1lbnQpOwogICAg
IH0KIAogcHJpdmF0ZToKICAgICBOb2RlTGlzdHNOb2RlRGF0YSgpCiAgICAgICAgIDogbV9jaGls
ZE5vZGVMaXN0KG51bGxwdHIpCiAgICAgICAgICwgbV9lbXB0eUNoaWxkTm9kZUxpc3QobnVsbHB0
cikKLSAgICB7IH0KKyAgICB7CisgICAgfQogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkIGNoYXIs
IEF0b21pY1N0cmluZz4gbmFtZWRDb2xsZWN0aW9uS2V5KENvbGxlY3Rpb25UeXBlIHR5cGUsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCmluZGV4IDBlNGFjMDgzMGE1MWQ2MDdiZjlmODc2
MTBkMmI5NzUzYzllZjRmNzYuLmJiMzM1YjRiZjgxOWQyMGFiOTljOGYzMGU3Zjk0NDRhYTQ2M2Q2
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24u
Y3BwCkBAIC0xMjMsMjUgKzEyMywyNSBAQCBIVE1MVGFibGVSb3dFbGVtZW50KiBIVE1MVGFibGVS
b3dzQ29sbGVjdGlvbjo6cm93QWZ0ZXIoSFRNTFRhYmxlRWxlbWVudCogdGFibGUsCiAKIEhUTUxU
YWJsZVJvd0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpsYXN0Um93KEhUTUxUYWJs
ZUVsZW1lbnQqIHRhYmxlKQogewotICAgIGZvciAoYXV0byBjaGlsZCA9IEVsZW1lbnRUcmF2ZXJz
YWw6Omxhc3RDaGlsZCh0YWJsZSk7IGNoaWxkOyBjaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OnBy
ZXZpb3VzU2libGluZyhjaGlsZCkpIHsKKyAgICBmb3IgKGF1dG8qIGNoaWxkID0gRWxlbWVudFRy
YXZlcnNhbDo6bGFzdENoaWxkKHRhYmxlKTsgY2hpbGQ7IGNoaWxkID0gRWxlbWVudFRyYXZlcnNh
bDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkKSkgewogICAgICAgICBpZiAoY2hpbGQtPmhhc1RhZ05h
bWUodGZvb3RUYWcpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byByb3cgPSBjaGlsZHJlbk9mVHlw
ZTxIVE1MVGFibGVSb3dFbGVtZW50PigqY2hpbGQpLmxhc3QoKSkKKyAgICAgICAgICAgIGlmIChh
dXRvKiByb3cgPSBjaGlsZHJlbk9mVHlwZTxIVE1MVGFibGVSb3dFbGVtZW50PigqY2hpbGQpLmxh
c3QoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcm93OwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgZm9yIChhdXRvIGNoaWxkID0gRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHRhYmxlKTsg
Y2hpbGQ7IGNoaWxkID0gRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkKSkg
eworICAgIGZvciAoYXV0byogY2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQodGFi
bGUpOyBjaGlsZDsgY2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY2hp
bGQpKSB7CiAgICAgICAgIGlmIChpc0hUTUxUYWJsZVJvd0VsZW1lbnQoY2hpbGQpKQogICAgICAg
ICAgICAgcmV0dXJuIHRvSFRNTFRhYmxlUm93RWxlbWVudChjaGlsZCk7CiAgICAgICAgIGlmIChj
aGlsZC0+aGFzVGFnTmFtZSh0Ym9keVRhZykpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHJvdyA9
IGNoaWxkcmVuT2ZUeXBlPEhUTUxUYWJsZVJvd0VsZW1lbnQ+KCpjaGlsZCkubGFzdCgpKQorICAg
ICAgICAgICAgaWYgKGF1dG8qIHJvdyA9IGNoaWxkcmVuT2ZUeXBlPEhUTUxUYWJsZVJvd0VsZW1l
bnQ+KCpjaGlsZCkubGFzdCgpKQogICAgICAgICAgICAgICAgIHJldHVybiByb3c7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBmb3IgKGF1dG8gY2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0
Q2hpbGQodGFibGUpOyBjaGlsZDsgY2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1Np
YmxpbmcoY2hpbGQpKSB7CisgICAgZm9yIChhdXRvKiBjaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6
Omxhc3RDaGlsZCh0YWJsZSk7IGNoaWxkOyBjaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZp
b3VzU2libGluZyhjaGlsZCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKHRoZWFk
VGFnKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcm93ID0gY2hpbGRyZW5PZlR5cGU8SFRNTFRh
YmxlUm93RWxlbWVudD4oKmNoaWxkKS5sYXN0KCkpCisgICAgICAgICAgICBpZiAoYXV0byogcm93
ID0gY2hpbGRyZW5PZlR5cGU8SFRNTFRhYmxlUm93RWxlbWVudD4oKmNoaWxkKS5sYXN0KCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJvdzsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmNwcAppbmRleCA4OTczNmY4
MzU5YzIwYzM1NTUzZmFlYTA3MDNiMGQ0NDVkZDhiMmY1Li40OGUzN2ZmOTk4NGJlZmQ1NWM0Y2I2
Y2RlNTM4NWZmOTg0OTFkMDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTm9kZUZpbmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck5vZGVGaW5kZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgSW5zcGVjdG9yTm9k
ZUZpbmRlcjo6cGVyZm9ybVNlYXJjaChOb2RlKiBwYXJlbnROb2RlKQogdm9pZCBJbnNwZWN0b3JO
b2RlRmluZGVyOjpzZWFyY2hVc2luZ0RPTVRyZWVUcmF2ZXJzYWwoTm9kZSogcGFyZW50Tm9kZSkK
IHsKICAgICAvLyBNYW51YWwgcGxhaW4gdGV4dCBzZWFyY2guCi0gICAgZm9yIChhdXRvIG5vZGUg
PSBwYXJlbnROb2RlOyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlLCBwYXJl
bnROb2RlKSkgeworICAgIGZvciAoYXV0byogbm9kZSA9IHBhcmVudE5vZGU7IG5vZGU7IG5vZGUg
PSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUsIHBhcmVudE5vZGUpKSB7CiAgICAgICAgIHN3aXRj
aCAobm9kZS0+bm9kZVR5cGUoKSkgewogICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKICAg
ICAgICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9GcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9T
Lm1tCmluZGV4IDRmNDhlYTQ1NjE1MGZhNGVjOGI4NjllNGU2NzhhN2ZmOTNmZTcwYjMuLmIzZGIy
YTNhMWQ4NzY4NmE0MDc0MzA5ZWM1YTVhMDAzZjMxOGM0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9z
L0ZyYW1lSU9TLm1tCkBAIC03NTksNyArNzU5LDcgQEAgTlNBcnJheSAqRnJhbWU6OmludGVycHJl
dGF0aW9uc0ZvckN1cnJlbnRSb290KCkgY29uc3QKICAgICAvLyBUaGUgbnVtYmVyIG9mIGludGVy
cHJldGF0aW9ucyB3aWxsIGJlIGkxICogaTIgKiAuLi4gKiBpTiwgd2hlcmUgaVggaXMgdGhlIG51
bWJlciBvZiBpbnRlcnByZXRhdGlvbnMgZm9yIHRoZSBYdGggcGhyYXNlIHdpdGggYWx0ZXJuYXRp
dmVzLgogICAgIHNpemVfdCBpbnRlcnByZXRhdGlvbnNDb3VudCA9IDE7CiAKLSAgICBmb3IgKGF1
dG8gbWFya2VyIDogbWFya2Vyc0luUm9vdCkKKyAgICBmb3IgKGF1dG8qIG1hcmtlciA6IG1hcmtl
cnNJblJvb3QpCiAgICAgICAgIGludGVycHJldGF0aW9uc0NvdW50ICo9IG1hcmtlci0+YWx0ZXJu
YXRpdmVzKCkuc2l6ZSgpICsgMTsKIAogICAgIFZlY3RvcjxWZWN0b3I8VUNoYXI+PiBpbnRlcnBy
ZXRhdGlvbnM7CkBAIC03NzEsOCArNzcxLDcgQEAgTlNBcnJheSAqRnJhbWU6OmludGVycHJldGF0
aW9uc0ZvckN1cnJlbnRSb290KCkgY29uc3QKIAogICAgIE5vZGUqIHBhc3RMYXN0Tm9kZSA9IHJh
bmdlT2ZSb290Q29udGVudHMtPnBhc3RMYXN0Tm9kZSgpOwogICAgIGZvciAoTm9kZSogbm9kZSA9
IHJhbmdlT2ZSb290Q29udGVudHMtPmZpcnN0Tm9kZSgpOyBub2RlICE9IHBhc3RMYXN0Tm9kZTsg
bm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSkpIHsKLSAgICAgICAgY29uc3QgVmVjdG9y
PERvY3VtZW50TWFya2VyKj4mIG1hcmtlcnMgPSBkb2N1bWVudCgpLT5tYXJrZXJzKCkubWFya2Vy
c0Zvcihub2RlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMoRG9jdW1lbnRNYXJrZXI6OkRp
Y3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMpKTsKLSAgICAgICAgZm9yIChhdXRvIG1hcmtl
ciA6IG1hcmtlcnMpIHsKKyAgICAgICAgZm9yIChhdXRvKiBtYXJrZXIgOiBkb2N1bWVudCgpLT5t
YXJrZXJzKCkubWFya2Vyc0Zvcihub2RlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMoRG9j
dW1lbnRNYXJrZXI6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMpKSkgewogICAgICAg
ICAgICAgLy8gRmlyc3QsIGFkZCB0ZXh0IHRoYXQgcHJlY2VkZSB0aGUgbWFya2VyLgogICAgICAg
ICAgICAgaWYgKHByZWNlZGluZ1RleHRTdGFydFBvc2l0aW9uICE9IGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihub2RlLCBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkpKSB7CiAgICAgICAgICAgICAg
ICAgUmVmUHRyPFJhbmdlPiBwcmVjZWRpbmdUZXh0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpkb2N1
bWVudCgpLCBwcmVjZWRpbmdUZXh0U3RhcnRQb3NpdGlvbiwgY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKG5vZGUsIG1hcmtlci0+c3RhcnRPZmZzZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZUNob29zZXIuY3BwCmluZGV4IDRhMTBmMTZkMzNlZDVmY2MzNTQ4OTNlZmQ5YjZjZTcy
Y2QzMGU4NTAuLjA5NWY4ZGUxYmI1MWE4Njc3ZDQxMDljNjBlYzc1MWFhNzA3NTQwNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAKQEAgLTcwLDEyICs3MCwxMyBAQCB2
b2lkIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5h
bWVzKQogICAgICAgICByZXR1cm47CiAKICAgICBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4g
ZmlsZXM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZpbGVuYW1lcy5zaXplKCk7ICsr
aSkKLSAgICAgICAgZmlsZXMuYXBwZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8oZmlsZW5hbWVzW2ld
KSk7CisgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IGZpbGVuYW1lcykKKyAgICAgICAgZmlsZXMu
YXBwZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8oZmlsZW5hbWUpKTsKICAgICBtX2NsaWVudC0+Zmls
ZXNDaG9zZW4oZmlsZXMpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQorCiAvLyBGSVhNRTogVGhp
cyBmdW5jdGlvbiBpcyBhbG1vc3QgaWRlbnRpY2FsIHRvIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxl
cygpLiBXZSBzaG91bGQgbWVyZ2UgdGhpcyBmdW5jdGlvbgogLy8gd2l0aCBGaWxlQ2hvb3Nlcjo6
Y2hvb3NlRmlsZXMoKSBhbmQgaGVuY2UgcmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgog
dm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlTWVkaWFGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIEljb24qIGljb24pCkBAIC04
OCwxOSArODksMjAgQEAgdm9pZCBGaWxlQ2hvb3Nlcjo6Y2hvb3NlTWVkaWFGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuOwog
CiAgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpbGVzOwotICAgIGZvciAoYXV0byBm
aWxlbmFtZSA6IGZpbGVuYW1lcykKKyAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogZmlsZW5hbWVz
KQogICAgICAgICBmaWxlcy5hcHBlbmQoRmlsZUNob29zZXJGaWxlSW5mbyhmaWxlbmFtZSkpOwog
ICAgIG1fY2xpZW50LT5maWxlc0Nob3NlbihmaWxlcywgZGlzcGxheVN0cmluZywgaWNvbik7CiB9
CisKICNlbmRpZgogCiB2b2lkIEZpbGVDaG9vc2VyOjpjaG9vc2VGaWxlcyhjb25zdCBWZWN0b3I8
RmlsZUNob29zZXJGaWxlSW5mbz4mIGZpbGVzKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGlu
ZWxlZ2FudC4gV2Ugc2hvdWxkIG5vdCBiZSBsb29raW5nIGF0IHNldHRpbmdzIGhlcmUuCiAgICAg
VmVjdG9yPFN0cmluZz4gcGF0aHM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZpbGVz
LnNpemUoKTsgKytpKQotICAgICAgICBwYXRocy5hcHBlbmQoZmlsZXNbaV0ucGF0aCk7CisgICAg
Zm9yIChhdXRvJiBmaWxlIDogZmlsZXMpCisgICAgICAgIHBhdGhzLmFwcGVuZChmaWxlLnBhdGgp
OwogCisgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lbGVnYW50LiBXZSBzaG91bGQgbm90IGJlIGxv
b2tpbmcgYXQgc2V0dGluZ3MgaGVyZS4KICAgICBpZiAobV9zZXR0aW5ncy5zZWxlY3RlZEZpbGVz
ID09IHBhdGhzKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggNGJmODBjZGIxNzYzZmQx
YjVhY2I0ZWY0ZmY5ZjE4OTkxNTUzMTk1Yy4uYmY1MzhiNTIxMjNlZTYxZjg3MGQ4MWQ4OWI4NjNl
N2ZkODFmNmJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTY5NSw3ICs2OTUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpzZWVrVG9UaW1lKE1lZGlhVGltZSB0aW1lKQogCiBJbnRTaXplIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6ZSgpCiB7Ci0gICAgZm9yIChhdXRv
IHZpZGVvVHJhY2sgOiBtX3ZpZGVvVHJhY2tzKSB7CisgICAgZm9yIChhdXRvJiB2aWRlb1RyYWNr
IDogbV92aWRlb1RyYWNrcykgewogICAgICAgICBpZiAodmlkZW9UcmFjay0+c2VsZWN0ZWQoKSkK
ICAgICAgICAgICAgIHJldHVybiB2aWRlb1RyYWNrLT5uYXR1cmFsU2l6ZSgpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJdGVyYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckl0ZXJhdG9yLmgKaW5kZXggYjUwYTM0NGI5M2U5
OWNiZWY5OTBkZDM5YThiYjE2M2M4YzUyNGFlYS4uNWM1MTk0NzVhYmQxZTZkNjI3NTQyMjhmYWQ3
MTAxNDUwNDVjNjA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckl0ZXJhdG9y
LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgUmVuZGVySXRlcmF0b3JfaAogI2RlZmluZSBS
ZW5kZXJJdGVyYXRvcl9oCiAKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJS
ZW5kZXJFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAppbmRleCAyMjYxNmIx
MDU0NTAyN2I5NDg4NjQwMWMxZjNkY2NlYzUyYmY4YzYxLi45ZjU5OWYwNDQ0OTgzYmI0YzNhYmJh
OTg2NGZiNjE1YTEwMzA5MTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcApAQCAtMTczLDggKzE3Myw4IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCByZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKFJlbmRlckVs
ZW1lbnQmIHJlbmRlCiAgICAgSGFzaFNldDxTVkdFbGVtZW50Kj4qIGRlcGVuZGVuY2llcyA9IHJl
bmRlcmVyLmRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5zZXRPZkVsZW1lbnRzUmVm
ZXJlbmNpbmdUYXJnZXQodG9TVkdFbGVtZW50KHJlbmRlcmVyLmVsZW1lbnQoKSkpOwogICAgIGlm
ICghZGVwZW5kZW5jaWVzKQogICAgICAgICByZXR1cm47Ci0gICAgZm9yIChhdXRvIGVsZW1lbnQg
OiAqZGVwZW5kZW5jaWVzKSB7Ci0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gZWxlbWVudC0+
cmVuZGVyZXIoKSkKKyAgICBmb3IgKGF1dG8qIGVsZW1lbnQgOiAqZGVwZW5kZW5jaWVzKSB7Cisg
ICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAg
ICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52
YWxpZGF0aW9uKCpyZW5kZXJlciwgbmVlZHNMYXlvdXQpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRh
aW5lci5jcHAKaW5kZXggM2RlZmM0NmU2ZWVmZDAzMGEwODhkNjEzYzZhYmM0NDc1Yzc1MmUxNy4u
M2VlNjRjMDYyNWM3NDFmZDVkYzY4ZTc0NWNlMWMxYWUyZGFlMDU5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRh
aW5lci5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
cjo6bWFya0FsbENsaWVudHNGb3JJbnZhbGlkYXRpb24oSW52YWxpZGF0aW9uTW9kZQogICAgIGJv
b2wgbmVlZHNMYXlvdXQgPSBtb2RlID09IExheW91dEFuZEJvdW5kYXJpZXNJbnZhbGlkYXRpb247
CiAgICAgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gbW9kZSAhPSBQYXJlbnRPbmx5SW52YWxp
ZGF0aW9uOwogCi0gICAgZm9yIChhdXRvIGNsaWVudCA6IG1fY2xpZW50cykgeworICAgIGZvciAo
YXV0byogY2xpZW50IDogbV9jbGllbnRzKSB7CiAgICAgICAgIGlmIChjbGllbnQtPmlzU1ZHUmVz
b3VyY2VDb250YWluZXIoKSkgewogICAgICAgICAgICAgdG9SZW5kZXJTVkdSZXNvdXJjZUNvbnRh
aW5lcigqY2xpZW50KS5yZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKG1hcmtGb3JJbnZhbGlkYXRp
b24pOwogICAgICAgICAgICAgY29udGludWU7CkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBSZW5k
ZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6bWFya0FsbENsaWVudHNGb3JJbnZhbGlkYXRpb24oSW52
YWxpZGF0aW9uTW9kZQogdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6bWFya0FsbENs
aWVudExheWVyc0ZvckludmFsaWRhdGlvbigpCiB7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQot
ICAgIGZvciAoYXV0byBjbGllbnRMYXllciA6IG1fY2xpZW50TGF5ZXJzKQorICAgIGZvciAoYXV0
byogY2xpZW50TGF5ZXIgOiBtX2NsaWVudExheWVycykKICAgICAgICAgY2xpZW50TGF5ZXItPmZp
bHRlck5lZWRzUmVwYWludCgpOwogI2VuZGlmCiB9CkBAIC0xNzYsMTEgKzE3NiwxMCBAQCB2b2lk
IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjpyZWdpc3RlclJlc291cmNlKCkKICAgICBleHRl
bnNpb25zLmFkZFJlc291cmNlKG1faWQsIHRoaXMpOwogCiAgICAgLy8gVXBkYXRlIGNhY2hlZCBy
ZXNvdXJjZXMgb2YgcGVuZGluZyBjbGllbnRzLgotICAgIGF1dG8gZW5kID0gY2xpZW50cy0+ZW5k
KCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gY2xpZW50cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgIEFTU0VSVCgoKml0KS0+aGFzUGVuZGluZ1Jlc291cmNlcygpKTsKLSAgICAg
ICAgZXh0ZW5zaW9ucy5jbGVhckhhc1BlbmRpbmdSZXNvdXJjZXNJZlBvc3NpYmxlKCppdCk7Ci0g
ICAgICAgIGF1dG8gcmVuZGVyZXIgPSAoKml0KS0+cmVuZGVyZXIoKTsKKyAgICBmb3IgKGF1dG8q
IGNsaWVudCA6ICpjbGllbnRzKSB7CisgICAgICAgIEFTU0VSVChjbGllbnQtPmhhc1BlbmRpbmdS
ZXNvdXJjZXMoKSk7CisgICAgICAgIGV4dGVuc2lvbnMuY2xlYXJIYXNQZW5kaW5nUmVzb3VyY2Vz
SWZQb3NzaWJsZShjbGllbnQpOworICAgICAgICBhdXRvKiByZW5kZXJlciA9IGNsaWVudC0+cmVu
ZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50U3R5bGVDaGFuZ2VkKCpyZW5kZXJlciwg
U3R5bGVEaWZmZXJlbmNlTGF5b3V0LCByZW5kZXJlci0+c3R5bGUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCBmMzI0YTU4
ODYzYjZiMGM2M2RkMjdkNTc0ZjY3MjQ5YTM4YTcwZTcwLi4zNTMwNTA1OWJlZTFjOTZmNDY4ZGJi
YTNhMDdjMDU1M2I3MDYwZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIFNWR1JlbmRl
clN1cHBvcnQ6OmxheW91dENoaWxkcmVuKFJlbmRlckVsZW1lbnQmIHN0YXJ0LCBib29sIHNlbGZO
ZWVkc0xheW91dAogICAgIGJvb2wgdHJhbnNmb3JtQ2hhbmdlZCA9IHRyYW5zZm9ybVRvUm9vdENo
YW5nZWQoJnN0YXJ0KTsKICAgICBib29sIGhhc1NWR1NoYWRvdyA9IHJlbmRlcmVySGFzU1ZHU2hh
ZG93KHN0YXJ0KTsKICAgICBib29sIG5lZWRzQm91bmRhcmllc1VwZGF0ZSA9IHN0YXJ0Lm5lZWRz
Qm91bmRhcmllc1VwZGF0ZSgpOwotICAgIEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4gbm90bGF5b3V0
ZWRPYmplY3RzOworICAgIEhhc2hTZXQ8UmVuZGVyRWxlbWVudCo+IGVsZW1lbnRzVGhhdERpZE5v
dFJlY2VpdmVMYXlvdXQ7CiAKICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBzdGFydC5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAg
ICAgIGJvb2wgbmVlZHNMYXlvdXQgPSBzZWxmTmVlZHNMYXlvdXQ7CkBAIC0yNzQsMjIgKzI3NCwy
MCBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmxheW91dENoaWxkcmVuKFJlbmRlckVsZW1lbnQm
IHN0YXJ0LCBib29sIHNlbGZOZWVkc0xheW91dAogICAgICAgICAgICAgLy8gcGFyZW50IGNvbnRh
aW5lcnMgY2FsbCByZXBhaW50KCkuICAoUmVuZGVyQmxvY2s6OmxheW91dCogaGFzIHNpbWlsYXIg
bG9naWMuKQogICAgICAgICAgICAgaWYgKCFjaGlsZEV2ZXJIYWRMYXlvdXQpCiAgICAgICAgICAg
ICAgICAgY2hpbGQtPnJlcGFpbnQoKTsKLSAgICAgICAgfSBlbHNlIGlmIChsYXlvdXRTaXplQ2hh
bmdlZCkKLSAgICAgICAgICAgIG5vdGxheW91dGVkT2JqZWN0cy5hZGQoY2hpbGQpOworICAgICAg
ICB9IGVsc2UgaWYgKGxheW91dFNpemVDaGFuZ2VkICYmIGNoaWxkLT5pc1JlbmRlckVsZW1lbnQo
KSkKKyAgICAgICAgICAgIGVsZW1lbnRzVGhhdERpZE5vdFJlY2VpdmVMYXlvdXQuYWRkKHRvUmVu
ZGVyRWxlbWVudChjaGlsZCkpOwogCiAgICAgICAgIEFTU0VSVCghY2hpbGQtPm5lZWRzTGF5b3V0
KCkpOwogICAgIH0KIAogICAgIGlmICghbGF5b3V0U2l6ZUNoYW5nZWQpIHsKLSAgICAgICAgQVNT
RVJUKG5vdGxheW91dGVkT2JqZWN0cy5pc0VtcHR5KCkpOworICAgICAgICBBU1NFUlQoZWxlbWVu
dHNUaGF0RGlkTm90UmVjZWl2ZUxheW91dC5pc0VtcHR5KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgLy8gSWYgdGhlIGxheW91dCBzaXplIGNoYW5nZWQsIGludmFsaWRhdGUgYWxs
IHJlc291cmNlcyBvZiBhbGwgY2hpbGRyZW4gdGhhdCBkaWRuJ3QgZ28gdGhyb3VnaCB0aGUgbGF5
b3V0KCkgY29kZSBwYXRoLgotICAgIGZvciAoYXV0byBjaGlsZCA6IG5vdGxheW91dGVkT2JqZWN0
cykgewotICAgICAgICBpZiAoY2hpbGQtPmlzUmVuZGVyRWxlbWVudCgpKQotICAgICAgICAgICAg
aW52YWxpZGF0ZVJlc291cmNlc09mQ2hpbGRyZW4odG9SZW5kZXJFbGVtZW50KCpjaGlsZCkpOwot
ICAgIH0KKyAgICBmb3IgKGF1dG8qIGVsZW1lbnQgOiBlbGVtZW50c1RoYXREaWROb3RSZWNlaXZl
TGF5b3V0KQorICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VzT2ZDaGlsZHJlbigqZWxlbWVudCk7
CiB9CiAKIGJvb2wgU1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxvd0hpZGRlbihjb25zdCBSZW5k
ZXJFbGVtZW50JiByZW5kZXJlcikKQEAgLTQyOCw4ICs0MjYsOCBAQCB2b2lkIFNWR1JlbmRlclN1
cHBvcnQ6OmFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdAogICAgIGVsc2UgewogICAgICAgICBEYXNoQXJyYXkgZGFzaEFycmF5OwogICAgICAg
ICBkYXNoQXJyYXkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkYXNoZXMuc2l6ZSgpKTsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IGRhc2hlcy5zaXplKCk7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgICAgICBkYXNoQXJyYXkudW5jaGVja2VkQXBwZW5kKGRhc2hlc1tpXS52YWx1
ZShsZW5ndGhDb250ZXh0KSk7CisgICAgICAgIGZvciAoYXV0byYgZGFzaCA6IGRhc2hlcykKKyAg
ICAgICAgICAgIGRhc2hBcnJheS51bmNoZWNrZWRBcHBlbmQoZGFzaC52YWx1ZShsZW5ndGhDb250
ZXh0KSk7CiAKICAgICAgICAgY29udGV4dC0+c2V0TGluZURhc2goZGFzaEFycmF5LCBzdmdTdHls
ZS5zdHJva2VEYXNoT2Zmc2V0KCkudmFsdWUobGVuZ3RoQ29udGV4dCkpOwogICAgIH0KQEAgLTQ2
NSw3ICs0NjMsNyBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OnVwZGF0ZU1hc2tlZEFuY2VzdG9y
U2hvdWxkSXNvbGF0ZUJsZW5kaW5nKGNvbnN0IFJlbmRlckVsZQogICAgIEFTU0VSVChyZW5kZXJl
ci5lbGVtZW50KCktPmlzU1ZHRWxlbWVudCgpKTsKIAogICAgIGJvb2wgbWFza2VkQW5jZXN0b3JT
aG91bGRJc29sYXRlQmxlbmRpbmcgPSByZW5kZXJlci5zdHlsZSgpLmhhc0JsZW5kTW9kZSgpOwot
ICAgIGZvciAoYXV0byBhbmNlc3RvciA9IHJlbmRlcmVyLmVsZW1lbnQoKS0+cGFyZW50RWxlbWVu
dCgpOyBhbmNlc3RvciAmJiBhbmNlc3Rvci0+aXNTVkdFbGVtZW50KCk7IGFuY2VzdG9yID0gYW5j
ZXN0b3ItPnBhcmVudEVsZW1lbnQoKSkgeworICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSByZW5k
ZXJlci5lbGVtZW50KCktPnBhcmVudEVsZW1lbnQoKTsgYW5jZXN0b3IgJiYgYW5jZXN0b3ItPmlz
U1ZHRWxlbWVudCgpOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRFbGVtZW50KCkpIHsKICAg
ICAgICAgaWYgKCF0b1NWR0VsZW1lbnQoYW5jZXN0b3IpLT5pc1NWR0dyYXBoaWNzRWxlbWVudCgp
IHx8ICFpc29sYXRlc0JsZW5kaW5nKCphbmNlc3Rvci0+Y29tcHV0ZWRTdHlsZSgpKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jlc291cmNlc0N5Y2xlU29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuY3BwCmluZGV4IDY0OTk2N2M2YWExOWQxMjUy
ZDEzNTNjODNmZGRhNzIzYmJmYjc3MmYuLmUzNTYyMGUzNTJmZDE5MmNhMjZlMzNlMGFlYjExMTRl
NmQwYWIxNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVz
b3VyY2VzQ3ljbGVTb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuY3BwCkBAIC0yMyw4ICsyMyw3IEBACiAvLyBTZXQgdG8g
YSB2YWx1ZSA+IDAsIHRvIGRlYnVnIHRoZSByZXNvdXJjZSBjYWNoZS4KICNkZWZpbmUgREVCVUdf
Q1lDTEVfREVURUNUSU9OIDAKIAotI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKLSNpbmNsdWRl
ICJSZW5kZXJJdGVyYXRvci5oIgorI2luY2x1ZGUgIlJlbmRlckFuY2VzdG9ySXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlTWFya2VyLmgi
CkBAIC01Niw3ICs1NSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXI6OnJlc291cmNl
Q29udGFpbnNDeWNsZXMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpIGNvCiAgICAgICAgIHJlc291
cmNlcy0+YnVpbGRTZXRPZlJlc291cmNlcyhyZXNvdXJjZVNldCk7CiAKICAgICAgICAgLy8gV2Fs
ayBhbGwgcmVzb3VyY2VzIGFuZCBjaGVjayB3aGV0ZXIgdGhleSByZWZlcmVuY2UgYW55IHJlc291
cmNlIGNvbnRhaW5lZCBpbiB0aGUgcmVzb3VyY2VzIHNldC4KLSAgICAgICAgZm9yIChhdXRvIHJl
c291cmNlIDogcmVzb3VyY2VTZXQpIHsKKyAgICAgICAgZm9yIChhdXRvKiByZXNvdXJjZSA6IHJl
c291cmNlU2V0KSB7CiAgICAgICAgICAgICBpZiAobV9hbGxSZXNvdXJjZXMuY29udGFpbnMocmVz
b3VyY2UpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC03NSw3
ICs3NCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXI6OnJlc291cmNlQ29udGFpbnND
eWNsZXMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpIGNvCiAgICAgICAgIGNoaWxkUmVzb3VyY2Vz
LT5idWlsZFNldE9mUmVzb3VyY2VzKGNoaWxkUmVzb3VyY2VTZXQpOwogCiAgICAgICAgIC8vIFdh
bGsgYWxsIGNoaWxkIHJlc291cmNlcyBhbmQgY2hlY2sgd2hldGVyIHRoZXkgcmVmZXJlbmNlIGFu
eSByZXNvdXJjZSBjb250YWluZWQgaW4gdGhlIHJlc291cmNlcyBzZXQuCi0gICAgICAgIGZvciAo
YXV0byYgcmVzb3VyY2UgOiBjaGlsZFJlc291cmNlU2V0KSB7CisgICAgICAgIGZvciAoYXV0byog
cmVzb3VyY2UgOiBjaGlsZFJlc291cmNlU2V0KSB7CiAgICAgICAgICAgICBpZiAobV9hbGxSZXNv
dXJjZXMuY29udGFpbnMocmVzb3VyY2UpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CkBAIC0xMDMsMzEgKzEwMiwyNyBAQCB2b2lkIFNWR1Jlc291cmNlc0N5Y2xlU29s
dmVyOjpyZXNvbHZlQ3ljbGVzKCkKICAgICBBU1NFUlQoIWxvY2FsUmVzb3VyY2VzLmlzRW1wdHko
KSk7CiAKICAgICAvLyBBZGQgYWxsIHBhcmVudCByZXNvdXJjZSBjb250YWluZXJzIHRvIHRoZSBI
YXNoU2V0LgotICAgIEhhc2hTZXQ8UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqPiBwYXJlbnRS
ZXNvdXJjZXM7Ci0gICAgYXV0byBwYXJlbnQgPSBtX3JlbmRlcmVyLnBhcmVudCgpOwotICAgIHdo
aWxlIChwYXJlbnQpIHsKLSAgICAgICAgaWYgKHBhcmVudC0+aXNTVkdSZXNvdXJjZUNvbnRhaW5l
cigpKQotICAgICAgICAgICAgcGFyZW50UmVzb3VyY2VzLmFkZCh0b1JlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyKHBhcmVudCkpOwotICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudCgpOwot
ICAgIH0KKyAgICBIYXNoU2V0PFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKj4gYW5jZXN0b3JS
ZXNvdXJjZXM7CisgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IGFuY2VzdG9yc09mVHlwZTxSZW5k
ZXJTVkdSZXNvdXJjZUNvbnRhaW5lcj4obV9yZW5kZXJlcikpCisgICAgICAgIGFuY2VzdG9yUmVz
b3VyY2VzLmFkZCgmcmVzb3VyY2UpOwogCiAjaWYgREVCVUdfQ1lDTEVfREVURUNUSU9OID4gMAog
ICAgIGZwcmludGYoc3RkZXJyLCAiXG5EZXRlY3Rpbmcgd2hldGVyIGFueSByZXNvdXJjZXMgcmVm
ZXJlbmNlcyBhbnkgb2YgZm9sbG93aW5nIG9iamVjdHM6XG4iKTsKICAgICB7CiAgICAgICAgIGZw
cmludGYoc3RkZXJyLCAiTG9jYWwgcmVzb3VyY2VzOlxuIik7Ci0gICAgICAgIGZvciAoYXV0byBp
dCA9IGxvY2FsUmVzb3VyY2VzLmJlZ2luKCksIGVuZCA9IGxvY2FsUmVzb3VyY2VzLmVuZCgpOyBp
dCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInw+ICVzOiBvYmpl
Y3Q9JXAgKG5vZGU9JXApXG4iLCAoKml0KS0+cmVuZGVyTmFtZSgpLCAqaXQsICgqaXQpLT5ub2Rl
KCkpOworICAgICAgICBmb3IgKGF1dG8qIHJlc291cmNlIDogbG9jYWxSZXNvdXJjZXMpCisgICAg
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInw+ICVzOiBvYmplY3Q9JXAgKG5vZGU9JXApXG4iLCBy
ZXNvdXJjZS0+cmVuZGVyTmFtZSgpLCByZXNvdXJjZSwgcmVzb3VyY2UtPm5vZGUoKSk7CiAKICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJQYXJlbnQgcmVzb3VyY2VzOlxuIik7Ci0gICAgICAgIGZv
ciAoYXV0byBpdCA9IHBhcmVudFJlc291cmNlcy5iZWdpbigpLCBlbmQgPSBwYXJlbnRSZXNvdXJj
ZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
fD4gJXM6IG9iamVjdD0lcCAobm9kZT0lcClcbiIsICgqaXQpLT5yZW5kZXJOYW1lKCksICppdCwg
KCppdCktPm5vZGUoKSk7CisgICAgICAgIGZvciAoYXV0byogcmVzb3VyY2UgOiBhbmNlc3RvclJl
c291cmNlcykKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAifD4gJXM6IG9iamVjdD0lcCAo
bm9kZT0lcClcbiIsIHJlc291cmNlLT5yZW5kZXJOYW1lKCksIHJlc291cmNlLCByZXNvdXJjZS0+
bm9kZSgpKTsKICAgICB9CiAjZW5kaWYKIAogICAgIC8vIEJ1aWxkIGNvbWJpbmVkIHNldCBvZiBs
b2NhbCBhbmQgcGFyZW50IHJlc291cmNlcy4KICAgICBtX2FsbFJlc291cmNlcyA9IGxvY2FsUmVz
b3VyY2VzOwotICAgIGZvciAoYXV0byBpdCA9IHBhcmVudFJlc291cmNlcy5iZWdpbigpLCBlbmQg
PSBwYXJlbnRSZXNvdXJjZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgbV9hbGxS
ZXNvdXJjZXMuYWRkKCppdCk7CisgICAgZm9yIChhdXRvKiByZXNvdXJjZSA6IGFuY2VzdG9yUmVz
b3VyY2VzKQorICAgICAgICBtX2FsbFJlc291cmNlcy5hZGQocmVzb3VyY2UpOwogCiAgICAgLy8g
SWYgd2UncmUgYSByZXNvdXJjZSwgYWRkIG91cnNlbHZlcyB0byB0aGUgSGFzaFNldC4KICAgICBp
ZiAobV9yZW5kZXJlci5pc1NWR1Jlc291cmNlQ29udGFpbmVyKCkpCkBAIC0xMzcsMTAgKzEzMiw5
IEBAIHZvaWQgU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXI6OnJlc29sdmVDeWNsZXMoKQogCiAgICAg
Ly8gVGhlIGpvYiBvZiB0aGlzIGZ1bmN0aW9uIGlzIHRvIGRldGVybWluZSB3aGV0ZXIgYW55IG9m
IHRoZSAncmVzb3VyY2VzJyBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuICdyZW5kZXJlcicKICAg
ICAvLyByZWZlcmVuY2VzIHVzIChvciB3aGV0ZXIgYW55IG9mIGl0cyBraWRzIHJlZmVyZW5jZXMg
dXMpIC0+IHRoYXQncyBhIGN5Y2xlLCB3ZSBuZWVkIHRvIGZpbmQgYW5kIGJyZWFrIGl0LgotICAg
IGZvciAoYXV0byBpdCA9IGxvY2FsUmVzb3VyY2VzLmJlZ2luKCksIGVuZCA9IGxvY2FsUmVzb3Vy
Y2VzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXImIHJlc291cmNlID0gKippdDsKLSAgICAgICAgaWYgKHBhcmVudFJlc291cmNlcy5j
b250YWlucygmcmVzb3VyY2UpIHx8IHJlc291cmNlQ29udGFpbnNDeWNsZXMocmVzb3VyY2UpKQot
ICAgICAgICAgICAgYnJlYWtDeWNsZShyZXNvdXJjZSk7CisgICAgZm9yIChhdXRvKiByZXNvdXJj
ZSA6IGxvY2FsUmVzb3VyY2VzKSB7CisgICAgICAgIGlmIChhbmNlc3RvclJlc291cmNlcy5jb250
YWlucyhyZXNvdXJjZSkgfHwgcmVzb3VyY2VDb250YWluc0N5Y2xlcygqcmVzb3VyY2UpKQorICAg
ICAgICAgICAgYnJlYWtDeWNsZSgqcmVzb3VyY2UpOwogICAgIH0KIAogI2lmIERFQlVHX0NZQ0xF
X0RFVEVDVElPTiA+IDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
TW90aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQuY3BwCmluZGV4IDVjMGZhMjI3YTJjOTMzODQ2NzcwYmI2NmJhOGFiNjVhYzdkZDk3YjYu
LjMwYzcyYmYwNDhkNTUxMDJiYjAzZDZmM2ZlZTNmZDIxZmQ5ZDU0MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcApAQCAtMjk1LDcgKzI5NSw3
IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gLi4uZXhjZXB0IGluIGNhc2Ugd2hlcmUgd2UgaGF2
ZSBhZGRpdGlvbmFsIGluc3RhbmNlcyBpbiA8dXNlPiB0cmVlcy4KLSAgICBmb3IgKGF1dG8gaW5z
dGFuY2UgOiB0YXJnZXRFbGVtZW50LT5pbnN0YW5jZXNGb3JFbGVtZW50KCkpIHsKKyAgICBmb3Ig
KGF1dG8qIGluc3RhbmNlIDogdGFyZ2V0RWxlbWVudC0+aW5zdGFuY2VzRm9yRWxlbWVudCgpKSB7
CiAgICAgICAgIFNWR0VsZW1lbnQqIHNoYWRvd1RyZWVFbGVtZW50ID0gaW5zdGFuY2UtPnNoYWRv
d1RyZWVFbGVtZW50KCk7CiAgICAgICAgIEFTU0VSVChzaGFkb3dUcmVlRWxlbWVudCk7CiAgICAg
ICAgIEFmZmluZVRyYW5zZm9ybSogdHJhbnNmb3JtID0gc2hhZG93VHJlZUVsZW1lbnQtPnN1cHBs
ZW1lbnRhbFRyYW5zZm9ybSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKaW5k
ZXggYzA4ZjQxMzRkMzIxN2JiYzJmMjE1YzI3Y2RhZDk3ZjAwZmM2OWNjMC4uOWFhYTRkMjMwNmEx
NjdiODUzYWZiYzM4NTI4YmY1ZGM4MGM1N2Q3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6aW52YWxp
ZGF0ZU1QYXRoRGVwZW5kZW5jaWVzKCkKICAgICAvLyA8bXBhdGg+IGNhbiBvbmx5IHJlZmVyZW5j
ZSA8cGF0aD4gYnV0IHRoaXMgZGVwZW5kZW5jeSBpcyBub3QgaGFuZGxlZCBpbgogICAgIC8vIG1h
cmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbiBzbyB3ZSB1cGRhdGUgYW55
IG1wYXRoIGRlcGVuZGVuY2llcyBtYW51YWxseS4KICAgICBpZiAoSGFzaFNldDxTVkdFbGVtZW50
Kj4qIGRlcGVuZGVuY2llcyA9IGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5zZXRP
ZkVsZW1lbnRzUmVmZXJlbmNpbmdUYXJnZXQodGhpcykpIHsKLSAgICAgICAgZm9yIChhdXRvIGVs
ZW1lbnQgOiAqZGVwZW5kZW5jaWVzKSB7CisgICAgICAgIGZvciAoYXV0byogZWxlbWVudCA6ICpk
ZXBlbmRlbmNpZXMpIHsKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05h
bWVzOjptcGF0aFRhZykpCiAgICAgICAgICAgICAgICAgdG9TVkdNUGF0aEVsZW1lbnQoZWxlbWVu
dCktPnRhcmdldFBhdGhDaGFuZ2VkKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCmluZGV4IGNmOGQ3MjM0M2NjZWY1ZmU3NDI1MTliNTg0N2IwNjg0NzMwNDY1
NjAuLmE3NjhlYmQ3OGNjYTA4OGJiMzg4MmE1NWQwMjAyZTYxNDczMDQ3ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtOTAxLDEwICs5MDEsMTAgQEAgLSAoRE9NRG9j
dW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aE5vZGVzQXNQYXJhZ3JhcGhzOihO
U0FycmF5ICopbm9kZXMKIAogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9
IGRvY3VtZW50LT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAKLSAgICBmb3IgKGF1dG8gbm9k
ZSA6IG5vZGVzVmVjdG9yKSB7CisgICAgZm9yIChhdXRvKiBub2RlIDogbm9kZXNWZWN0b3IpIHsK
ICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBo
RWxlbWVudCgqZG9jdW1lbnQpOwotICAgICAgICBlbGVtZW50LT5hcHBlbmRDaGlsZChub2RlLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1l
bnQucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgZWxlbWVudC0+YXBw
ZW5kQ2hpbGQobm9kZSk7CisgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50LnJl
bGVhc2UoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGtpdChmcmFnbWVudC5yZWxlYXNlKCkuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRy
ZWVQcm9wZXJ0eUFwcGxpZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxh
eWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQppbmRleCA1OGE0YWQ1MDBlOGE1YzlkZjJkMDZmZDVh
NmYyM2YzZjAwOWVhNGQwLi5iMzYyYzc1MTZkZDVjYTdiZjFkYjE0NjFiZWEwYTQzZjhlMjAzNjU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVBy
b3BlcnR5QXBwbGllci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxh
eWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQpAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjphcHBseVByb3BlcnRpZXMoVUlWaWV3ICp2aWV3LCBj
b25zdCBSZW1vdGVMCiAKICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpDaGlsZHJlbkNoYW5nZWQpIHsKICAgICAgICAgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5PiBjaGlsZHJlbiA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpwcm9wZXJ0aWVzLmNoaWxkcmVuLnNpemUoKV0pOwot
ICAgICAgICBmb3IgKGF1dG8gY2hpbGQgOiBwcm9wZXJ0aWVzLmNoaWxkcmVuKSB7CisgICAgICAg
IGZvciAoYXV0byYgY2hpbGQgOiBwcm9wZXJ0aWVzLmNoaWxkcmVuKSB7CiAgICAgICAgICAgICBB
U1NFUlQocmVsYXRlZExheWVycy5nZXQoY2hpbGQpKTsKICAgICAgICAgICAgIFtjaGlsZHJlbiBh
ZGRPYmplY3Q6cmVsYXRlZExheWVycy5nZXQoY2hpbGQpXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
bW0KaW5kZXggNDEwMzkzNWY1OWM3Y2U2NmE0MDdhNTU4N2VlNTA3NWNjYjhjM2Q4NC4uZTBjZWMz
YjBjNTBmOTZkODYzMjc1YzU1OTllZGI2YTIyYTlhZWE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0y
NDAsNyArMjQwLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9w
ZXJ0aWVzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGQKICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuY2hpbGRyZW4pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIGZvciAoYXV0byBsYXllcklEIDogcmVzdWx0LmNoaWxkcmVuKSB7CisgICAgICAg
IGZvciAoYXV0byYgbGF5ZXJJRCA6IHJlc3VsdC5jaGlsZHJlbikgewogICAgICAgICAgICAgaWYg
KCFsYXllcklEKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAt
NDU1LDcgKzQ1NSw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZShJ
UEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQubV9kZXN0cm95ZWRMYXllcklEcykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGZvciAoYXV0byBsYXllcklEIDogcmVzdWx0Lm1fZGVzdHJveWVkTGF5ZXJJRHMp
IHsKKyAgICBmb3IgKGF1dG8mIGxheWVySUQgOiByZXN1bHQubV9kZXN0cm95ZWRMYXllcklEcykg
ewogICAgICAgICBpZiAoIWxheWVySUQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQpAQCAtNjk5LDcgKzY5OSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBDaGFuZ2VkTGF5ZXJzKFJlbW90
ZUxheWVyVHJlZVRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW1vdGVMYXllclRyCiAgICAgY29weUtl
eXNUb1ZlY3RvcihjaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzLCBsYXllcklEcyk7CiAgICAgc3RkOjpz
b3J0KGxheWVySURzLmJlZ2luKCksIGxheWVySURzLmVuZCgpKTsKIAotICAgIGZvciAoYXV0byBs
YXllcklEIDogbGF5ZXJJRHMpIHsKKyAgICBmb3IgKGF1dG8mIGxheWVySUQgOiBsYXllcklEcykg
ewogICAgICAgICBjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0
aWVzJiBsYXllclByb3BlcnRpZXMgPSAqY2hhbmdlZExheWVyUHJvcGVydGllcy5nZXQobGF5ZXJJ
RCk7CiAKICAgICAgICAgdHMgPDwgIlxuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCBkOWYwYTNjZThlYzlmNWQxMDg4
NTljMGQ3YjFmNmFjODQyZjllOTg3Li5hZDAwM2IzNjU5ODczMzdlMzI4MTdhY2U1ZWIxNGEwOWFj
MjY5OWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxh
eWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVM
YXllclRyZWVIb3N0Lm1tCkBAIC05Myw3ICs5Myw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlSG9z
dDo6dXBkYXRlTGF5ZXJUcmVlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiB0cmFu
CiAgICAgICAgICAgICBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVy
dGllcyhsYXllciwgcHJvcGVydGllcywgcmVsYXRlZExheWVycyk7CiAgICAgfQogCi0gICAgZm9y
IChhdXRvIGRlc3Ryb3llZExheWVyIDogdHJhbnNhY3Rpb24uZGVzdHJveWVkTGF5ZXJzKCkpCisg
ICAgZm9yIChhdXRvJiBkZXN0cm95ZWRMYXllciA6IHRyYW5zYWN0aW9uLmRlc3Ryb3llZExheWVy
cygpKQogICAgICAgICBtX2xheWVycy5yZW1vdmUoZGVzdHJveWVkTGF5ZXIpOwogCiAgICAgcmV0
dXJuIHJvb3RMYXllckNoYW5nZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAppbmRleCAzYmU5ZmNmMGZiMWI4NzA5Nzk0ZjU1ZGI3NjM0NDcyZTg2MTgwMGY3Li5iMTVl
MTMwOWVkODdiM2IxMjU2MTYzNWRhMTg1ODhlZjk0NDkzZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIFdlYlByb2Nl
c3M6OnZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpMaW5rSGFz
aD4mIGxpbmtIYQogICAgIC8vIEZJWE1FOiBXZSBtYXkgd2FudCB0byB0cmFjayB2aXNpdGVkIGxp
bmtzIHBlciBXZWJQYWdlR3JvdXAgcmF0aGVyIHRoYW4gcGVyIFdlYkNvbnRleHQuCiAgICAgZm9y
IChjb25zdCBhdXRvJiB3ZWJQYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKSB7CiAgICAgICAgIGlm
IChQYWdlKiBwYWdlID0gd2ViUGFnZS0+Y29yZVBhZ2UoKSkgewotICAgICAgICAgICAgZm9yIChh
dXRvIGxpbmtIYXNoIDogbGlua0hhc2hlcykKKyAgICAgICAgICAgIGZvciAoYXV0byYgbGlua0hh
c2ggOiBsaW5rSGFzaGVzKQogICAgICAgICAgICAgICAgIHBhZ2UtPmludmFsaWRhdGVTdHlsZXNG
b3JMaW5rKGxpbmtIYXNoKTsKICAgICAgICAgfQogICAgIH0K
</data>
<flag name="review"
          id="250703"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="250704"
          type_id="3"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>