<?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>147666</bug_id>
          
          <creation_ts>2015-08-04 17:11:53 -0700</creation_ts>
          <short_desc>Interpreter::unwind shouldn&apos;t be responsible for assigning the correct scope.</short_desc>
          <delta_ts>2015-08-07 12:46:28 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>147657</dependson>
          <blocked>147374</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1114884</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-04 17:11:53 -0700</bug_when>
    <thetext>BytecodeGenerator should do this since it will have the necessary info to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115057</commentid>
    <comment_count>1</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-05 11:04:22 -0700</bug_when>
    <thetext>👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115207</commentid>
    <comment_count>2</comment_count>
      <attachid>258326</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-05 18:05:57 -0700</bug_when>
    <thetext>Created attachment 258326
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115211</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-05 18:09:28 -0700</bug_when>
    <thetext>Attachment 258326 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2635:  Missing space before {  [whitespace/braces] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115285</commentid>
    <comment_count>4</comment_count>
      <attachid>258350</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-05 23:04:33 -0700</bug_when>
    <thetext>Created attachment 258350
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115289</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-05 23:09:43 -0700</bug_when>
    <thetext>Attachment 258350 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2635:  Missing space before {  [whitespace/braces] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115520</commentid>
    <comment_count>6</comment_count>
      <attachid>258350</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-06 16:15:10 -0700</bug_when>
    <thetext>Comment on attachment 258350
patch

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

r=me, with a fixup below

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2840
&gt; +    m_topMostScope = addVar();
&gt; +    m_topMostScope-&gt;ref();
&gt; +    emitMove(m_topMostScope, scopeRegister());

Not new to this patch, but: Does our new lexical scoping have the behavior that we now have var registers and temporary registers interleaved with each other, such that I might have:

[Var][Temp][Var][Temp]

?

That&apos;s a little sad because all temporary registers prior to the last vars will &quot;leak&quot; in the sense that the function will never reuse them, thus bloating its stack frame size.

Also, there&apos;s no need to ref m_topMostScope here because addVar() already refs.

Also, if you did want to ref(), I would ask you to use RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115542</commentid>
    <comment_count>7</comment_count>
      <attachid>258350</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-06 16:35:30 -0700</bug_when>
    <thetext>Comment on attachment 258350
patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2840
&gt;&gt; +    emitMove(m_topMostScope, scopeRegister());
&gt; 
&gt; Not new to this patch, but: Does our new lexical scoping have the behavior that we now have var registers and temporary registers interleaved with each other, such that I might have:
&gt; 
&gt; [Var][Temp][Var][Temp]
&gt; 
&gt; ?
&gt; 
&gt; That&apos;s a little sad because all temporary registers prior to the last vars will &quot;leak&quot; in the sense that the function will never reuse them, thus bloating its stack frame size.
&gt; 
&gt; Also, there&apos;s no need to ref m_topMostScope here because addVar() already refs.
&gt; 
&gt; Also, if you did want to ref(), I would ask you to use RefPtr.

We don&apos;t do this. I believe we have an assert in addVar() that will prevent this from happening.
It would also be wrong if we did this because it would break op_enter. 

The way we handle register reuse for block scope variables like &quot;let&quot; is that
while we&apos;re generating code for the block&apos;s statements we&apos;ll reserve a non-temp
register for the block scope variable. Once we&apos;re done generating code for
that block scope, we will reclaim those block scoped registers. The code that
does this is in pushLexicalScopeInternal and popLexicalScopeInternal and reclaimFreeRegisters. 

This doesn&apos;t mean that we won&apos;t have some block scoped variables that are live for
the entire function. For example, functions with default parameter values will have
all parameters be in a block scope that never frees its variables. (These registers will
still be allocated after the &quot;var&quot; register locations).

I&apos;ll remove the ref and land later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115760</commentid>
    <comment_count>8</comment_count>
      <attachid>258502</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-07 08:18:32 -0700</bug_when>
    <thetext>Created attachment 258502
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115761</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-07 08:19:40 -0700</bug_when>
    <thetext>Attachment 258502 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2635:  Missing space before {  [whitespace/braces] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115799</commentid>
    <comment_count>10</comment_count>
      <attachid>258502</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-07 10:41:38 -0700</bug_when>
    <thetext>Comment on attachment 258502
patch for landing.

Clearing flags on attachment: 258502

Committed r188136: &lt;http://trac.webkit.org/changeset/188136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115800</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-07 10:41:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115828</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-07 11:51:17 -0700</bug_when>
    <thetext>Committed r188144: &lt;http://trac.webkit.org/changeset/188144&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115831</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-07 11:53:27 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Committed r188144: &lt;http://trac.webkit.org/changeset/188144&gt;

Sorry, wrong bug. My changelog got messed up somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115846</commentid>
    <comment_count>14</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-07 12:46:28 -0700</bug_when>
    <thetext>&gt; The way we handle register reuse for block scope variables like &quot;let&quot; is that
&gt; while we&apos;re generating code for the block&apos;s statements we&apos;ll reserve a
&gt; non-temp
&gt; register for the block scope variable. Once we&apos;re done generating code for
&gt; that block scope, we will reclaim those block scoped registers. The code that
&gt; does this is in pushLexicalScopeInternal and popLexicalScopeInternal and
&gt; reclaimFreeRegisters. 

Oh! I get it now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258326</attachid>
            <date>2015-08-05 18:05:57 -0700</date>
            <delta_ts>2015-08-05 23:04:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>28468</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4MDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDE1LTA4LTA1ICBTYWFtIGJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBJbnRlcnByZXRlcjo6dW53aW5kIHNob3VsZG4ndCBiZSByZXNwb25zaWJsZSBmb3IgYXNz
aWduaW5nIHRoZSBjb3JyZWN0IHNjb3BlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSWYgd2UgbWFrZSB0aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yIGtub3cg
YWJvdXQgZXZlcnkgbG9jYWwgc2NvcGUgaXQgCisgICAgICAgIGNyZWF0ZXMsIGFuZCBpZiB3ZSBn
aXZlIGVhY2ggbG9jYWwgc2NvcGUgYSB1bmlxdWUgcmVnaXN0ZXIsIHRoZQorICAgICAgICBieXRl
Y29kZSBnZW5lcmF0b3IgaGFzIGFsbCB0aGUgaW5mb3JtYXRpb24gaXQgbmVlZHMgdG8gYXNzaWdu
CisgICAgICAgIHRoZSBjb3JyZWN0IHNjb3BlIHRvIGEgY2F0Y2ggaGFuZGxlci4gQmVjYXVzZSB0
aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yCisgICAgICAgIGtub3dzIHRoaXMgaW5mb3JtYXRpb24sIGl0
J3MgYSBiZXR0ZXIgc2VwYXJhdGlvbiBvZiByZXNwb25zaWJpbHRpZXMKKyAgICAgICAgZm9yIGl0
IHRvIHNldCB1cCB0aGUgcHJvcGVyIHNjb3BlIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgZXhj
ZXB0aW9uCisgICAgICAgIGhhbmRsaW5nIHJ1bnRpbWUgdG8gZmluZCB0aGUgc2NvcGUuCisKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJs
b2NrKToKKyAgICAgICAgKiBieXRlY29kZS9IYW5kbGVySW5mby5oOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZEhhbmRsZXJJbmZvOjpVbmxpbmtlZEhhbmRsZXJJbmZvKToKKyAgICAgICAgKEpTQzo6
SGFuZGxlckluZm86OmluaXRpYWxpemUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoTGV4aWNhbFNjb3BlSW50
ZXJuYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFNjb3BlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoV2l0aFNjb3BlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRQYXJlbnRTY29wZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UG9wU2NvcGUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBvcFdpdGhTY29wZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjphbGxvY2F0ZUFuZEVtaXRTY29wZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3Blcyk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpwdXNoVHJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnBvcFRyeUFuZEVtaXRDYXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
Ojpsb2NhbFNjb3BlRGVwdGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Y2Fs
Y3VsYXRlVGFyZ2V0U2NvcGVEZXB0aEZvckV4Y2VwdGlvbkhhbmRsZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpXaXRoTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp1bndpbmQpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1c2hfd2l0aF9zY29wZSk6CisgICAgICAg
IChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHVzaF93aXRoX3Njb3BlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX251bWJlcik6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRf
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU2Nv
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjpvYmplY3RBdFNjb3BlKToKKyAgICAgICAg
KEpTQzo6aXNVbnNjb3BhYmxlKToKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6ZGVwdGgpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5oOgorCiAyMDE1LTA4LTA1ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbCBvdXQg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg3OTcyLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkocmV2aXNpb24g
MTg3OTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX3B1dF90b19zY29wZSIsICJsZW5ndGgiIDogNyB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfZ2V0X2Zyb21fYXJndW1lbnRzIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfdG9fYXJndW1lbnRzIiwgImxlbmd0aCIgOiA0IH0sCi0g
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXNoX3dpdGhfc2NvcGUiLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1c2hfd2l0aF9zY29wZSIsICJsZW5ndGgi
IDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9w
YXJlbnRfc2NvcGUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2NhdGNoIiwgImxlbmd0aCIgOiAzIH0sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAkocmV2aXNpb24gMTg3OTY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHdvcmtpbmcgY29weSkK
QEAgLTExNiw3ICsxMTYsNiBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAg
ICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19l
eHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6Ci0gICAgY2FzZSBvcF9wdXNoX3dpdGhf
c2NvcGU6CiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNl
IG9wX3Jlc29sdmVfc2NvcGU6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZToKQEAgLTE3Nyw2
ICsxNzYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBv
cF9zdHJpY3RlcToKICAgICBjYXNlIG9wX25lcToKICAgICBjYXNlIG9wX2VxOgorICAgIGNhc2Ug
b3BfcHVzaF93aXRoX3Njb3BlOgogICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDogewogICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4Nzk2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NDQsOCArNjQ0LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVh
bQogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgZG8gewogICAgICAgICAgICAgSGFu
ZGxlckluZm8mIGhhbmRsZXIgPSBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzW2ldOwot
ICAgICAgICAgICAgb3V0LnByaW50ZigiXHQgJWQ6IHsgc3RhcnQ6IFslNGRdIGVuZDogWyU0ZF0g
dGFyZ2V0OiBbJTRkXSBkZXB0aDogWyU0ZF0gfSAlc1xuIiwKLSAgICAgICAgICAgICAgICBpICsg
MSwgaGFuZGxlci5zdGFydCwgaGFuZGxlci5lbmQsIGhhbmRsZXIudGFyZ2V0LCBoYW5kbGVyLnNj
b3BlRGVwdGgsIGhhbmRsZXIudHlwZU5hbWUoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJc
dCAlZDogeyBzdGFydDogWyU0ZF0gZW5kOiBbJTRkXSB0YXJnZXQ6IFslNGRdIH0gJXNcbiIsCisg
ICAgICAgICAgICAgICAgaSArIDEsIGhhbmRsZXIuc3RhcnQsIGhhbmRsZXIuZW5kLCBoYW5kbGVy
LnRhcmdldCwgaGFuZGxlci50eXBlTmFtZSgpKTsKICAgICAgICAgICAgICsraTsKICAgICAgICAg
fSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpKTsKICAg
ICB9CkBAIC0xNDI5LDggKzE0MjksOSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICBjYXNlIG9wX3B1c2hfd2l0aF9zY29wZTogewogICAgICAgICAgICAgaW50IGRzdCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG5ld1Njb3BlID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgY3VycmVudFNjb3BlID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJwdXNoX3dpdGhfc2NvcGUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcyIs
IHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKG5ld1Njb3BlKS5kYXRhKCkp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShkc3Qp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKG5ld1Njb3BlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShjdXJy
ZW50U2NvcGUpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6IHsKQEAgLTE3ODksMTUgKzE3OTAsMTMgQEAgQ29k
ZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgICAgICB9CiAgICAgICAg
IGlmIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25I
YW5kbGVycygpKSB7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJz
LnJlc2l6ZVRvRml0KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBub25Mb2NhbFNjb3BlRGVw
dGggPSBzY29wZS0+ZGVwdGgoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y291bnQ7IGkrKykgewogICAgICAgICAgICAgICAgIGNvbnN0IFVubGlua2VkSGFuZGxlckluZm8m
IHVubGlua2VkSGFuZGxlciA9IHVubGlua2VkQ29kZUJsb2NrLT5leGNlcHRpb25IYW5kbGVyKGkp
OwogICAgICAgICAgICAgICAgIEhhbmRsZXJJbmZvJiBoYW5kbGVyID0gbV9yYXJlRGF0YS0+bV9l
eGNlcHRpb25IYW5kbGVyc1tpXTsKICNpZiBFTkFCTEUoSklUKQotICAgICAgICAgICAgICAgIGhh
bmRsZXIuaW5pdGlhbGl6ZSh1bmxpbmtlZEhhbmRsZXIsIG5vbkxvY2FsU2NvcGVEZXB0aCwKLSAg
ICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoTExJbnQ6OmdldENvZGVQdHIob3BfY2F0Y2gp
KSkpOworICAgICAgICAgICAgICAgIGhhbmRsZXIuaW5pdGlhbGl6ZSh1bmxpbmtlZEhhbmRsZXIs
IENvZGVMb2NhdGlvbkxhYmVsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1
dGFibGVBZGRyZXNzKExMSW50OjpnZXRDb2RlUHRyKG9wX2NhdGNoKSkpKTsKICNlbHNlCi0gICAg
ICAgICAgICAgICAgaGFuZGxlci5pbml0aWFsaXplKHVubGlua2VkSGFuZGxlciwgbm9uTG9jYWxT
Y29wZURlcHRoKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVyLmluaXRpYWxpemUodW5saW5rZWRI
YW5kbGVyKTsKICNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAkocmV2aXNpb24gMTg3OTY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgJKHdvcmtp
bmcgY29weSkKQEAgLTYxLDM2ICs2MSwzMyBAQCBzdHJ1Y3QgSGFuZGxlckluZm9CYXNlIHsKICAg
ICB1aW50MzJfdCBzdGFydDsKICAgICB1aW50MzJfdCBlbmQ7CiAgICAgdWludDMyX3QgdGFyZ2V0
OwotICAgIHVpbnQzMl90IHNjb3BlRGVwdGggOiAzMDsKICAgICB1aW50MzJfdCB0eXBlQml0cyA6
IDI7IC8vIEhhbmRsZXJUeXBlCiB9OwogCiBzdHJ1Y3QgVW5saW5rZWRIYW5kbGVySW5mbyA6IHB1
YmxpYyBIYW5kbGVySW5mb0Jhc2UgewotICAgIFVubGlua2VkSGFuZGxlckluZm8odWludDMyX3Qg
c3RhcnQsIHVpbnQzMl90IGVuZCwgdWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBzY29wZURlcHRo
LCBIYW5kbGVyVHlwZSBoYW5kbGVyVHlwZSkKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKHVpbnQz
Ml90IHN0YXJ0LCB1aW50MzJfdCBlbmQsIHVpbnQzMl90IHRhcmdldCwgSGFuZGxlclR5cGUgaGFu
ZGxlclR5cGUpCiAgICAgewogICAgICAgICB0aGlzLT5zdGFydCA9IHN0YXJ0OwogICAgICAgICB0
aGlzLT5lbmQgPSBlbmQ7CiAgICAgICAgIHRoaXMtPnRhcmdldCA9IHRhcmdldDsKLSAgICAgICAg
dGhpcy0+c2NvcGVEZXB0aCA9IHNjb3BlRGVwdGg7CiAgICAgICAgIHNldFR5cGUoaGFuZGxlclR5
cGUpOwogICAgICAgICBBU1NFUlQodHlwZSgpID09IGhhbmRsZXJUeXBlKTsKICAgICB9CiB9Owog
CiBzdHJ1Y3QgSGFuZGxlckluZm8gOiBwdWJsaWMgSGFuZGxlckluZm9CYXNlIHsKLSAgICB2b2lk
IGluaXRpYWxpemUoY29uc3QgVW5saW5rZWRIYW5kbGVySW5mbyYgdW5saW5rZWRJbmZvLCBzaXpl
X3Qgbm9uTG9jYWxTY29wZURlcHRoKQorICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBVbmxpbmtl
ZEhhbmRsZXJJbmZvJiB1bmxpbmtlZEluZm8pCiAgICAgewogICAgICAgICBzdGFydCA9IHVubGlu
a2VkSW5mby5zdGFydDsKICAgICAgICAgZW5kID0gdW5saW5rZWRJbmZvLmVuZDsKICAgICAgICAg
dGFyZ2V0ID0gdW5saW5rZWRJbmZvLnRhcmdldDsKLSAgICAgICAgc2NvcGVEZXB0aCA9IHVubGlu
a2VkSW5mby5zY29wZURlcHRoICsgbm9uTG9jYWxTY29wZURlcHRoOwogICAgICAgICB0eXBlQml0
cyA9IHVubGlua2VkSW5mby50eXBlQml0czsKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAg
IHZvaWQgaW5pdGlhbGl6ZShjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiB1bmxpbmtlZEluZm8s
IHNpemVfdCBub25Mb2NhbFNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsKQorICAg
IHZvaWQgaW5pdGlhbGl6ZShjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiB1bmxpbmtlZEluZm8s
IENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsKQogICAgIHsKLSAgICAgICAgaW5pdGlhbGl6ZSh1bmxp
bmtlZEluZm8sIG5vbkxvY2FsU2NvcGVEZXB0aCk7CisgICAgICAgIGluaXRpYWxpemUodW5saW5r
ZWRJbmZvKTsKICAgICAgICAgbmF0aXZlQ29kZSA9IGxhYmVsOwogICAgIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAJKHJldmlzaW9uIDE4Nzk2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwy
OSArNzQsMTYgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKAogCiAg
ICAgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcCA9IG5ld1RlbXBvcmFyeSgpOwot
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2xvYmFsU2NvcGU7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBnbG9iYWxTY29wZSA9IG1fdG9wTW9zdFNjb3BlOwogICAgICAgICBmb3IgKGF1
dG8gZnVuY3Rpb25QYWlyIDogbV9mdW5jdGlvbnNUb0luaXRpYWxpemUpIHsKICAgICAgICAgICAg
IEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSA9IGZ1bmN0aW9uUGFpci5maXJzdDsKICAg
ICAgICAgICAgIEZ1bmN0aW9uVmFyaWFibGVUeXBlIGZ1bmN0aW9uVHlwZSA9IGZ1bmN0aW9uUGFp
ci5zZWNvbmQ7CiAgICAgICAgICAgICBlbWl0TmV3RnVuY3Rpb24odGVtcC5nZXQoKSwgZnVuY3Rp
b25Cb2R5KTsKICAgICAgICAgICAgIGlmIChmdW5jdGlvblR5cGUgPT0gTm9ybWFsRnVuY3Rpb25W
YXJpYWJsZSkKICAgICAgICAgICAgICAgICBpbml0aWFsaXplVmFyaWFibGUodmFyaWFibGUoZnVu
Y3Rpb25Cb2R5LT5pZGVudCgpKSAsIHRlbXAuZ2V0KCkpOwotICAgICAgICAgICAgZWxzZSBpZiAo
ZnVuY3Rpb25UeXBlID09IEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIWdsb2JhbFNjb3BlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3N5bWJvbFRh
YmxlU3RhY2suaXNFbXB0eSgpIHx8ICFtX3N5bWJvbFRhYmxlU3RhY2suZmlyc3QoKS5tX3Njb3Bl
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlbid0IGFsbG9jYXRlZCBhIGxl
eGljYWwgc2NvcGUgb24gdG9wIG9mIHRoZSBnbG9iYWwgb2JqZWN0LCBzbyBzY29wZVJlZ2lzdGVy
KCkgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBnbG9iYWwgc2NvcGUuCi0gICAgICAgICAgICAgICAg
ICAgICAgICBnbG9iYWxTY29wZSA9IHNjb3BlUmVnaXN0ZXIoKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhpcyB3aWxs
IHJlc29sdmUgdG8gdGhlIGdsb2JhbCBvYmplY3QgYmVjYXVzZSBvdXIgcGFyc2VyIGRvZXNuJ3Qg
YWxsb3cKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vICJsZXQiIHZhcmlhYmxlcyB0byBoYXZl
IHRoZSBzYW1lIG5hbWVzIGFzIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChtX3Njb3BlTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpLmhhc0NhcHR1cmVkVmFyaWFibGVz
KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdsb2JhbE9i
amVjdFNjb3BlID0gZW1pdFJlc29sdmVTY29wZShudWxscHRyLCBWYXJpYWJsZShmdW5jdGlvbkJv
ZHktPmlkZW50KCkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbFNjb3BlID0gbmV3
QmxvY2tTY29wZVZhcmlhYmxlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShn
bG9iYWxTY29wZS5nZXQoKSwgZ2xvYmFsT2JqZWN0U2NvcGUuZ2V0KCkpOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZnVuY3Rp
b25UeXBlID09IEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUpCiAgICAgICAgICAgICAgICAgZW1pdFB1
dFRvU2NvcGUoZ2xvYmFsU2NvcGUuZ2V0KCksIFZhcmlhYmxlKGZ1bmN0aW9uQm9keS0+aWRlbnQo
KSksIHRlbXAuZ2V0KCksIFRocm93SWZOb3RGb3VuZCk7Ci0gICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTM3LDExICsxMjQsOSBAQCBQYXJzZXJFcnJvciBC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoCiAgICAgICAgIGlmIChlbmQgPD0gc3RhcnQpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIEFTU0VSVChyYW5nZS50cnlE
YXRhLT50YXJnZXRTY29wZURlcHRoICE9IFVJTlRfTUFYKTsKICAgICAgICAgQVNTRVJUKHJhbmdl
LnRyeURhdGEtPmhhbmRsZXJUeXBlICE9IEhhbmRsZXJUeXBlOjpJbGxlZ2FsKTsKICAgICAgICAg
VW5saW5rZWRIYW5kbGVySW5mbyBpbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdGFydCksIHN0
YXRpY19jYXN0PHVpbnQzMl90PihlbmQpLAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHJhbmdlLnRyeURhdGEtPnRhcmdldC0+YmluZCgpKSwgcmFuZ2UudHJ5RGF0YS0+dGFyZ2V0
U2NvcGVEZXB0aCwKLSAgICAgICAgICAgIHJhbmdlLnRyeURhdGEtPmhhbmRsZXJUeXBlKTsKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihyYW5nZS50cnlEYXRhLT50YXJnZXQtPmJp
bmQoKSksIHJhbmdlLnRyeURhdGEtPmhhbmRsZXJUeXBlKTsKICAgICAgICAgbV9jb2RlQmxvY2st
PmFkZEV4Y2VwdGlvbkhhbmRsZXIoaW5mbyk7CiAgICAgfQogICAgIApAQCAtMTQ2OSwxMSArMTQ1
NCwxMSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoTGV4aWNhbFNjb3BlCiAgICAgICAg
IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCA9IGNvbnN0YW50U3ltYm9sVGFibGUtPmluZGV4KCk7
CiAgICAgfQogICAgIGlmIChoYXNDYXB0dXJlZFZhcmlhYmxlcykgewotICAgICAgICBpZiAoc2Nv
cGVSZWdpc3RlclR5cGUgPT0gU2NvcGVSZWdpc3RlclR5cGU6OkJsb2NrKSB7CisgICAgICAgIGlm
IChzY29wZVJlZ2lzdGVyVHlwZSA9PSBTY29wZVJlZ2lzdGVyVHlwZTo6QmxvY2spCiAgICAgICAg
ICAgICBuZXdTY29wZSA9IG5ld0Jsb2NrU2NvcGVWYXJpYWJsZSgpOwotICAgICAgICAgICAgbmV3
U2NvcGUtPnJlZigpOwotICAgICAgICB9IGVsc2UKKyAgICAgICAgZWxzZQogICAgICAgICAgICAg
bmV3U2NvcGUgPSBhZGRWYXIoKTsKKyAgICAgICAgbmV3U2NvcGUtPnJlZigpOwogICAgICAgICBp
ZiAoIWNvbnN0YW50U3ltYm9sVGFibGUpIHsKICAgICAgICAgICAgIEFTU0VSVCghdm0oKS0+dHlw
ZVByb2ZpbGVyKCkpOwogICAgICAgICAgICAgY29uc3RhbnRTeW1ib2xUYWJsZSA9IGFkZENvbnN0
YW50VmFsdWUoc3ltYm9sVGFibGUtPmNsb25lU2NvcGVQYXJ0KCptX3ZtKSk7CkBAIC0yNjM1LDEz
ICsyNjIwLDIxIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRTY29wZSgpCiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiB9CiAKLVJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaFdpdGhTY29wZShSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXNoV2l0aFNjb3BlKFJlZ2lzdGVySUQqIG9iamVjdFNjb3BlKQogewogICAgIHB1c2hT
Y29wZWRDb250cm9sRmxvd0NvbnRleHQoKTsKKyAgICBSZWdpc3RlcklEKiBuZXdTY29wZSA9IG5l
d0Jsb2NrU2NvcGVWYXJpYWJsZSgpOworICAgIG5ld1Njb3BlLT5yZWYoKTsKIAotICAgIFJlZ2lz
dGVySUQqIHJlc3VsdCA9IGVtaXRVbmFyeU9wKG9wX3B1c2hfd2l0aF9zY29wZSwgZHN0LCBzY29w
ZSk7Ci0gICAgbV9zeW1ib2xUYWJsZVN0YWNrLmFwcGVuZChTeW1ib2xUYWJsZVN0YWNrRW50cnl7
IFN0cm9uZzxTeW1ib2xUYWJsZT4oKSwgbnVsbHB0ciwgdHJ1ZSwgMCB9KTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIGVtaXRPcGNvZGUob3BfcHVzaF93aXRoX3Njb3BlKTsKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobmV3U2NvcGUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChvYmplY3RTY29wZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNj
b3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CisKKyAgICBlbWl0TW92ZShzY29wZVJlZ2lzdGVyKCks
IG5ld1Njb3BlKTsKKyAgICBtX3N5bWJvbFRhYmxlU3RhY2suYXBwZW5kKFN5bWJvbFRhYmxlU3Rh
Y2tFbnRyeXsgU3Ryb25nPFN5bWJvbFRhYmxlPigpLCBuZXdTY29wZSwgdHJ1ZSwgMCB9KTsKKwor
ICAgIHJldHVybiBuZXdTY29wZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRQYXJlbnRTY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKQpA
QCAtMjY1OCwxMSArMjY1MSwxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UG9wU2Nv
cGUoUmVnCiAgICAgZW1pdE1vdmUoZHN0LCBwYXJlbnRTY29wZS5nZXQoKSk7CiB9CiAKLXZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQb3BXaXRoU2NvcGUoUmVnaXN0ZXJJRCogc3JjRHN0KQor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBvcFdpdGhTY29wZSgpCiB7Ci0gICAgZW1pdFBv
cFNjb3BlKHNyY0RzdCwgc3JjRHN0KTsKKyAgICBlbWl0UG9wU2NvcGUoc2NvcGVSZWdpc3Rlcigp
LCBzY29wZVJlZ2lzdGVyKCkpOwogICAgIHBvcFNjb3BlZENvbnRyb2xGbG93Q29udGV4dCgpOwog
ICAgIFN5bWJvbFRhYmxlU3RhY2tFbnRyeSBzdGFja0VudHJ5ID0gbV9zeW1ib2xUYWJsZVN0YWNr
LnRha2VMYXN0KCk7CisgICAgc3RhY2tFbnRyeS5tX3Njb3BlLT5kZXJlZigpOwogICAgIFJFTEVB
U0VfQVNTRVJUKHN0YWNrRW50cnkubV9pc1dpdGhTY29wZSk7CiB9CiAKQEAgLTI4NDEsNiArMjgz
NSw4IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9jYXRlQW5kRW1pdFMKICAgICBtX3Nj
b3BlUmVnaXN0ZXItPnJlZigpOwogICAgIG1fY29kZUJsb2NrLT5zZXRTY29wZVJlZ2lzdGVyKHNj
b3BlUmVnaXN0ZXIoKS0+dmlydHVhbFJlZ2lzdGVyKCkpOwogICAgIGVtaXRHZXRTY29wZSgpOwor
ICAgIG1fdG9wTW9zdFNjb3BlID0gYWRkVmFyKCk7CisgICAgZW1pdE1vdmUobV90b3BNb3N0U2Nv
cGUsIHNjb3BlUmVnaXN0ZXIoKSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
b21wbGV4UG9wU2NvcGVzKFJlZ2lzdGVySUQqIHNjb3BlLCBDb250cm9sRmxvd0NvbnRleHQqIHRv
cFNjb3BlLCBDb250cm9sRmxvd0NvbnRleHQqIGJvdHRvbVNjb3BlKQpAQCAtMjk5OCw3ICsyOTk0
LDYgQEAgVHJ5RGF0YSogQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hUcnkoTGFiZQogewogICAgIFRy
eURhdGEgdHJ5RGF0YTsKICAgICB0cnlEYXRhLnRhcmdldCA9IG5ld0xhYmVsKCk7Ci0gICAgdHJ5
RGF0YS50YXJnZXRTY29wZURlcHRoID0gVUlOVF9NQVg7CiAgICAgdHJ5RGF0YS5oYW5kbGVyVHlw
ZSA9IEhhbmRsZXJUeXBlOjpJbGxlZ2FsOwogICAgIG1fdHJ5RGF0YS5hcHBlbmQodHJ5RGF0YSk7
CiAgICAgVHJ5RGF0YSogcmVzdWx0ID0gJm1fdHJ5RGF0YS5sYXN0KCk7CkBAIC0zMDI2LDI3ICsz
MDIxLDI0IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFRyeUFuZEVtaXRDYXQKICAgICBt
X3RyeUNvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgCiAgICAgZW1pdExhYmVsKHRyeVJh
bmdlLnRyeURhdGEtPnRhcmdldC5nZXQoKSk7Ci0gICAgdHJ5UmFuZ2UudHJ5RGF0YS0+dGFyZ2V0
U2NvcGVEZXB0aCA9IGNhbGN1bGF0ZVRhcmdldFNjb3BlRGVwdGhGb3JFeGNlcHRpb25IYW5kbGVy
KCk7CiAgICAgdHJ5UmFuZ2UudHJ5RGF0YS0+aGFuZGxlclR5cGUgPSBoYW5kbGVyVHlwZTsKIAog
ICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChleGNl
cHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRocm93
blZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOwotfQogCi1pbnQgQnl0ZWNvZGVHZW5lcmF0b3I6OmNh
bGN1bGF0ZVRhcmdldFNjb3BlRGVwdGhGb3JFeGNlcHRpb25IYW5kbGVyKCkgY29uc3QKLXsKLSAg
ICBpbnQgZGVwdGggPSBsb2NhbFNjb3BlRGVwdGgoKTsKLQotICAgIC8vIEN1cnJlbnRseSwgd2Un
cmUgbWFpbnRhaW5nIGNvbXBhdGliaWxpdHkgd2l0aCBob3cgdGhpbmdzIGFyZSBkb25lIGFuZCBs
ZXR0aW5nIHRoZSBleGNlcHRpb24gaGFuZGxpbmcKLSAgICAvLyBjb2RlIHRha2UgaW50byBjb25z
aWRlcmF0aW9uIHRoZSBiYXNlIGFjdGl2YXRpb24gb2YgdGhlIGZ1bmN0aW9uLiBUaGVyZSBpcyBu
byByZWFzb24gd2Ugc2hvdWxkbid0Ci0gICAgLy8gYmUgYWJsZSB0byBjYWxjdWxhdGUgdGhlIGV4
YWN0IGRlcHRoIGhlcmUgYW5kIGxldCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIgbm90IHdvcnJ5IGlm
IHRoZXJlIGlzIGEgYmFzZQotICAgIC8vIGFjdGl2YXRpb24gb3Igbm90LgotICAgIGlmIChtX2xl
eGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKQotICAgICAgICBkZXB0aC0tOwotCi0gICAgQVNTRVJU
KGRlcHRoID49IDApOwotICAgIHJldHVybiBkZXB0aDsKKyAgICBib29sIGZvdW5kTG9jYWxTY29w
ZSA9IGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fc3ltYm9sVGFibGVTdGFjay5zaXpl
KCk7IGktLTsgKSB7CisgICAgICAgIC8vIE5vdGUgdGhhdCBpZiB3ZSBkb24ndCBmaW5kIGEgbG9j
YWwgc2NvcGUgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24vcHJvZ3JhbSwgCisgICAgICAgIC8vIHdl
IG11c3QgZ3JhYiB0aGUgb3V0ZXItbW9zdCBzY29wZSBvZiB0aGlzIGJ5dGVjb2RlIGdlbmVyYXRp
b24uCisgICAgICAgIGlmIChtX3N5bWJvbFRhYmxlU3RhY2tbaV0ubV9zY29wZSkgeworICAgICAg
ICAgICAgZm91bmRMb2NhbFNjb3BlID0gdHJ1ZTsKKyAgICAgICAgICAgIGVtaXRNb3ZlKHNjb3Bl
UmVnaXN0ZXIoKSwgbV9zeW1ib2xUYWJsZVN0YWNrW2ldLm1fc2NvcGUpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFmb3VuZExvY2FsU2NvcGUpCisgICAg
ICAgIGVtaXRNb3ZlKHNjb3BlUmVnaXN0ZXIoKSwgbV90b3BNb3N0U2NvcGUpOwogfQogCiBpbnQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmxvY2FsU2NvcGVEZXB0aCgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCShyZXZpc2lvbiAxODc5NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHN0cnVjdCBUcnlEYXRhIHsKICAgICAgICAgUmVmUHRy
PExhYmVsPiB0YXJnZXQ7Ci0gICAgICAgIHVuc2lnbmVkIHRhcmdldFNjb3BlRGVwdGg7CiAgICAg
ICAgIEhhbmRsZXJUeXBlIGhhbmRsZXJUeXBlOwogICAgIH07CiAKQEAgLTU5MywxMCArNTkyLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFBvcENhdGNoU2NvcGUoVmFyaWFi
bGVFbnZpcm9ubWVudCYpOwogCiAgICAgICAgIHZvaWQgZW1pdEdldFNjb3BlKCk7Ci0gICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRQdXNoV2l0aFNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc2NvcGUpOwotICAgICAgICB2b2lkIGVtaXRQb3BTY29wZShSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNjb3BlKTsKLSAgICAgICAgdm9pZCBlbWl0UG9wV2l0aFNjb3BlKFJlZ2lzdGVy
SUQqIHNyY0RzdCk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQYXJlbnRTY29wZShSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFB1c2hXaXRoU2NvcGUoUmVnaXN0ZXJJRCogb2JqZWN0U2NvcGUpOworICAgICAgICB2b2lkIGVt
aXRQb3BXaXRoU2NvcGUoKTsKIAogICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVidWdIb29r
SUQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNoYXJPZmZzZXQsIHVuc2lnbmVkIGxpbmVTdGFy
dCk7CiAKQEAgLTYzNiw2ICs2MzMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZW51bSBj
bGFzcyBTY29wZVJlZ2lzdGVyVHlwZSB7IFZhciwgQmxvY2sgfTsKICAgICAgICAgdm9pZCBwdXNo
TGV4aWNhbFNjb3BlSW50ZXJuYWwoVmFyaWFibGVFbnZpcm9ubWVudCYsIGJvb2wgY2FuT3B0aW1p
emVURFpDaGVja3MsIFJlZ2lzdGVySUQqKiBjb25zdGFudFN5bWJvbFRhYmxlUmVzdWx0LCBURFpS
ZXF1aXJlbWVudCwgU2NvcGVUeXBlLCBTY29wZVJlZ2lzdGVyVHlwZSk7CiAgICAgICAgIHZvaWQg
cG9wTGV4aWNhbFNjb3BlSW50ZXJuYWwoVmFyaWFibGVFbnZpcm9ubWVudCYsIFREWlJlcXVpcmVt
ZW50KTsKKyAgICAgICAgdm9pZCBlbWl0UG9wU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBzY29wZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQYXJlbnRTY29wZShSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICBwdWJsaWM6CiAgICAgICAgIHZv
aWQgcHVzaExleGljYWxTY29wZShWYXJpYWJsZUVudmlyb25tZW50Tm9kZSosIGJvb2wgY2FuT3B0
aW1pemVURFpDaGVja3MsIFJlZ2lzdGVySUQqKiBjb25zdGFudFN5bWJvbFRhYmxlUmVzdWx0ID0g
bnVsbHB0cik7CiAgICAgICAgIHZvaWQgcG9wTGV4aWNhbFNjb3BlKFZhcmlhYmxlRW52aXJvbm1l
bnROb2RlKik7CkBAIC03NjcsNiArNzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJl
Z2lzdGVySUQgbV90aGlzUmVnaXN0ZXI7CiAgICAgICAgIFJlZ2lzdGVySUQgbV9jYWxsZWVSZWdp
c3RlcjsKICAgICAgICAgUmVnaXN0ZXJJRCogbV9zY29wZVJlZ2lzdGVyIHsgbnVsbHB0ciB9Owor
ICAgICAgICBSZWdpc3RlcklEKiBtX3RvcE1vc3RTY29wZSB7IG51bGxwdHIgfTsKICAgICAgICAg
UmVnaXN0ZXJJRCogbV9hcmd1bWVudHNSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAgICAgUmVn
aXN0ZXJJRCogbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciB7IG51bGxwdHIgfTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogbV9lbXB0eVZhbHVlUmVnaXN0ZXIgeyBudWxscHRyIH07CkBAIC03ODMs
NyArNzgzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCBtX2xvY2FsU2NvcGVEZXB0
aCB7IDAgfTsKICAgICAgICAgY29uc3QgQ29kZVR5cGUgbV9jb2RlVHlwZTsKIAotICAgICAgICBp
bnQgY2FsY3VsYXRlVGFyZ2V0U2NvcGVEZXB0aEZvckV4Y2VwdGlvbkhhbmRsZXIoKSBjb25zdDsK
ICAgICAgICAgaW50IGxvY2FsU2NvcGVEZXB0aCgpIGNvbnN0OwogICAgICAgICB2b2lkIHB1c2hT
Y29wZWRDb250cm9sRmxvd0NvbnRleHQoKTsKICAgICAgICAgdm9pZCBwb3BTY29wZWRDb250cm9s
Rmxvd0NvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE4Nzk2OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjU3NCw5ICsyNTc0LDkgQEAgdm9pZCBXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKG1fZXhwcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhtX2Rpdm90LCBt
X2Rpdm90IC0gbV9leHByZXNzaW9uTGVuZ3RoLCBtX2Rpdm90KTsKLSAgICBnZW5lcmF0b3IuZW1p
dFB1c2hXaXRoU2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgc2NvcGUuZ2V0KCkpOwor
ICAgIGdlbmVyYXRvci5lbWl0UHVzaFdpdGhTY29wZShzY29wZS5nZXQoKSk7CiAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwotICAgIGdlbmVyYXRvci5lbWl0UG9wV2l0
aFNjb3BlKGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCkpOworICAgIGdlbmVyYXRvci5lbWl0UG9w
V2l0aFNjb3BlKCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDYXNl
Q2xhdXNlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZp
c2lvbiAxODc5NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDUsMjEgKzcwNSw2IEBAIE5FVkVSX0lOTElO
RSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnUKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHBy
b2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT5leGNlcHRp
b25VbndpbmQoY2FsbEZyYW1lKTsKIAotICAgIC8vIFVud2luZCB0aGUgc2NvcGUgY2hhaW4gd2l0
aGluIHRoZSBleGNlcHRpb24gaGFuZGxlcidzIGNhbGwgZnJhbWUuCi0gICAgaW50IHRhcmdldFNj
b3BlRGVwdGggPSBoYW5kbGVyLT5zY29wZURlcHRoOwotICAgIGlmIChjb2RlQmxvY2stPm5lZWRz
QWN0aXZhdGlvbigpICYmIGNhbGxGcmFtZS0+aGFzQWN0aXZhdGlvbigpKQotICAgICAgICArK3Rh
cmdldFNjb3BlRGVwdGg7Ci0KLSAgICBpbnQgc2NvcGVSZWdpc3Rlck9mZnNldCA9IGNvZGVCbG9j
ay0+c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpOwotICAgIEpTU2NvcGUqIHNjb3BlID0gY2FsbEZy
YW1lLT5zY29wZShzY29wZVJlZ2lzdGVyT2Zmc2V0KTsKLSAgICBpbnQgc2NvcGVEZWx0YSA9IHNj
b3BlLT5kZXB0aCgpIC0gdGFyZ2V0U2NvcGVEZXB0aDsKLSAgICBSRUxFQVNFX0FTU0VSVChzY29w
ZURlbHRhID49IDApOwotCi0gICAgd2hpbGUgKHNjb3BlRGVsdGEtLSkKLSAgICAgICAgc2NvcGUg
PSBzY29wZS0+bmV4dCgpOwotCi0gICAgY2FsbEZyYW1lLT5zZXRTY29wZShzY29wZVJlZ2lzdGVy
T2Zmc2V0LCBzY29wZSk7Ci0KICAgICByZXR1cm4gaGFuZGxlcjsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMTg3
OTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NDgsOSArNzQ4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3co
SW5zdHJ1Y3Rpb24qIGN1cgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXNoX3dpdGhfc2NvcGUoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBpbnQgZHN0ID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICBlbWl0TG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kLCByZWdUMSwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
UHVzaFdpdGhTY29wZSwgZHN0LCByZWdUMSwgcmVnVDApOworICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcHVzaF93aXRo
X3Njb3BlKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF90b19udW1iZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTg3OTY5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDI1LDkgKzQyNSw4IEBAIHZvaWQgSklUOjplbWl0X29wX3Rocm93KEluc3RydWN0aW9uKiBj
dXIKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHVzaF93aXRoX3Njb3BlKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kLCByZWdUMCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXNoV2l0
aFNjb3BlLCBkc3QsIHJlZ1QwKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CisgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAogdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVPcFN0cmljdEVxVHlwZSB0eXBl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAxODc5NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQzLDIxICsxMzQzLDYgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEdldHRlclNldAogfQogI2VuZGlmCiAKLXZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBkc3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLQotICAgIEpT
T2JqZWN0KiBvID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkudG9PYmplY3QoZXhlYyk7
Ci0gICAgaWYgKHZtLmV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhN
RTogVGhpcyB3b24ndCB3b3JrIGlmIHRoaXMgb3BlcmF0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBE
Rkcgb3IgRlRMLgotICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNoYW5nZWQgdG8gcGFzcyBpbiB0aGUg
b2xkIHNjb3BlIGFuZCByZXR1cm4gdGhlIG5ldyBzY29wZS4KLSAgICBKU1Njb3BlKiBjdXJyZW50
U2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKGRzdCkuUmVnaXN0ZXI6OnNjb3BlKCk7Ci0gICAgZXhl
Yy0+dW5jaGVja2VkUihkc3QpID0gSlNXaXRoU2NvcGU6OmNyZWF0ZShleGVjLCBvLCBjdXJyZW50
U2NvcGUpOwotfQotCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wU2NvcGUoRXhlY1N0
YXRlKiBleGVjLCBpbnQzMl90IHNjb3BlUmVnKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNp
b24gMTg3OTY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwNSw3ICszMDUsNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0U2V0dGVyQnlJCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0R2V0dGVy
U2V0dGVyKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIElkZW50aWZpZXIqLCBKU0NlbGwqLCBKU0NlbGwq
KSBXVEZfSU5URVJOQUw7CiAjZW5kaWYKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNo
RnVuY3Rpb25OYW1lU2NvcGUoRXhlY1N0YXRlKiwgaW50MzJfdCwgU3ltYm9sVGFibGUqLCBFbmNv
ZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwotdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
c2hXaXRoU2NvcGUoRXhlY1N0YXRlKiwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3BTY29wZShFeGVjU3RhdGUqLCBp
bnQzMl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvZmls
ZURpZENhbGwoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9maWxlV2lsbENhbGwoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTg3OTY5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTI2MywyMCArMTI2Myw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19wcmlt
aXQKICAgICBMTElOVF9SRVRVUk4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9QcmltaXRpdmUo
ZXhlYykpOwogfQogCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Nj
b3BlKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgSlNWYWx1ZSB2ID0gTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCk7Ci0gICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOwotICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgaW50IHNjb3BlUmVnID0gcGNbMV0udS5vcGVy
YW5kOwotICAgIEpTU2NvcGUqIGN1cnJlbnRTY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIoc2NvcGVS
ZWcpLlJlZ2lzdGVyOjpzY29wZSgpOwotICAgIGV4ZWMtPnVuY2hlY2tlZFIoc2NvcGVSZWcpID0g
SlNXaXRoU2NvcGU6OmNyZWF0ZShleGVjLCBvLCBjdXJyZW50U2NvcGUpOwotICAgIAotICAgIExM
SU5UX0VORCgpOwotfQotCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3cpCiB7
CiAgICAgTExJTlRfQkVHSU4oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAxODc5NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEw
Niw2IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2EKIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGVhcl9vZmZfYXJndW1lbnRzKTsKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc3RyY2F0KTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fcHJpbWl0aXZlKTsKLUxMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfdGhyb3cpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF90aHJvd19zdGF0aWNfZXJyb3IpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9oYW5kbGVfd2F0Y2hkb2dfdGltZXIpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNp
b24gMTg3OTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgzLDggKzEyODMsOCBAQCBfbGxpbnRfb3Bf
c3RyY2F0OgogCiBfbGxpbnRfb3BfcHVzaF93aXRoX3Njb3BlOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpCi0g
ICAgZGlzcGF0Y2goMykKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9wdXNoX3dpdGhfc2Nv
cGUpCisgICAgZGlzcGF0Y2goNCkKIAogCiBfbGxpbnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE4Nzk2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0OSw0ICs2
NDksMTUgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsXwogICAgIFJF
VFVSTihuZXdTY29wZSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhf
c2NvcGUpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU09iamVjdCogbmV3U2NvcGUgPSBPUF9DKDIp
LmpzVmFsdWUoKS50b09iamVjdChleGVjKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKworICAg
IGludCBzY29wZVJlZyA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICBKU1Njb3BlKiBjdXJyZW50U2Nv
cGUgPSBleGVjLT51bmNoZWNrZWRSKHNjb3BlUmVnKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBS
RVRVUk4oSlNXaXRoU2NvcGU6OmNyZWF0ZShleGVjLCBuZXdTY29wZSwgY3VycmVudFNjb3BlKSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDE4Nzk2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzQsNiArMjM0LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXh0
X2dlbgogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1l
bnQpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTY29wZS5jcHAJKHJldmlzaW9uIDE4Nzk2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsMTQgKzEyNCw2IEBA
IEpTT2JqZWN0KiBKU1Njb3BlOjpvYmplY3RBdFNjb3BlKEpTU2NvcGUKICAgICByZXR1cm4gb2Jq
ZWN0OwogfQogCi1pbnQgSlNTY29wZTo6ZGVwdGgoKQotewotICAgIGludCBkZXB0aCA9IDA7Ci0g
ICAgZm9yIChKU1Njb3BlKiBzY29wZSA9IHRoaXM7IHNjb3BlOyBzY29wZSA9IHNjb3BlLT5uZXh0
KCkpCi0gICAgICAgICsrZGVwdGg7Ci0gICAgcmV0dXJuIGRlcHRoOwotfQotCiAvLyBXaGVuIGFu
IGV4Y2VwdGlvbiBvY2N1cnMsIHRoZSByZXN1bHQgb2YgaXNVbnNjb3BhYmxlIGJlY29tZXMgZmFs
c2UuCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNVbnNjb3BhYmxlKEV4ZWNTdGF0ZSogZXhlYywgSlNT
Y29wZSogc2NvcGUsIEpTT2JqZWN0KiBvYmplY3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQog
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAkocmV2aXNpb24g
MTg3OTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDYgQEAgcHVibGljOgogICAgIFNjb3BlQ2hhaW5JdGVy
YXRvciBiZWdpbigpOwogICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQoKTsKICAgICBKU1Njb3Bl
KiBuZXh0KCk7Ci0gICAgaW50IGRlcHRoKCk7CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KCk7CiAgICAgVk0qIHZtKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258350</attachid>
            <date>2015-08-05 23:04:33 -0700</date>
            <delta_ts>2015-08-07 08:18:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>28496</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4MDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDE1LTA4LTA1ICBTYWFtIGJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBJbnRlcnByZXRlcjo6dW53aW5kIHNob3VsZG4ndCBiZSByZXNwb25zaWJsZSBmb3IgYXNz
aWduaW5nIHRoZSBjb3JyZWN0IHNjb3BlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSWYgd2UgbWFrZSB0aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yIGtub3cg
YWJvdXQgZXZlcnkgbG9jYWwgc2NvcGUgaXQgCisgICAgICAgIGNyZWF0ZXMsIGFuZCBpZiB3ZSBn
aXZlIGVhY2ggbG9jYWwgc2NvcGUgYSB1bmlxdWUgcmVnaXN0ZXIsIHRoZQorICAgICAgICBieXRl
Y29kZSBnZW5lcmF0b3IgaGFzIGFsbCB0aGUgaW5mb3JtYXRpb24gaXQgbmVlZHMgdG8gYXNzaWdu
CisgICAgICAgIHRoZSBjb3JyZWN0IHNjb3BlIHRvIGEgY2F0Y2ggaGFuZGxlci4gQmVjYXVzZSB0
aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yCisgICAgICAgIGtub3dzIHRoaXMgaW5mb3JtYXRpb24sIGl0
J3MgYSBiZXR0ZXIgc2VwYXJhdGlvbiBvZiByZXNwb25zaWJpbHRpZXMKKyAgICAgICAgZm9yIGl0
IHRvIHNldCB1cCB0aGUgcHJvcGVyIHNjb3BlIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgZXhj
ZXB0aW9uCisgICAgICAgIGhhbmRsaW5nIHJ1bnRpbWUgdG8gZmluZCB0aGUgc2NvcGUuCisKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJs
b2NrKToKKyAgICAgICAgKiBieXRlY29kZS9IYW5kbGVySW5mby5oOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZEhhbmRsZXJJbmZvOjpVbmxpbmtlZEhhbmRsZXJJbmZvKToKKyAgICAgICAgKEpTQzo6
SGFuZGxlckluZm86OmluaXRpYWxpemUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoTGV4aWNhbFNjb3BlSW50
ZXJuYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFNjb3BlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoV2l0aFNjb3BlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRQYXJlbnRTY29wZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UG9wU2NvcGUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBvcFdpdGhTY29wZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjphbGxvY2F0ZUFuZEVtaXRTY29wZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3Blcyk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpwdXNoVHJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnBvcFRyeUFuZEVtaXRDYXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
Ojpsb2NhbFNjb3BlRGVwdGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Y2Fs
Y3VsYXRlVGFyZ2V0U2NvcGVEZXB0aEZvckV4Y2VwdGlvbkhhbmRsZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpXaXRoTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp1bndpbmQpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1c2hfd2l0aF9zY29wZSk6CisgICAgICAg
IChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHVzaF93aXRoX3Njb3BlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX251bWJlcik6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRf
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU2Nv
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjpvYmplY3RBdFNjb3BlKToKKyAgICAgICAg
KEpTQzo6aXNVbnNjb3BhYmxlKToKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6ZGVwdGgpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5oOgorCiAyMDE1LTA4LTA1ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbCBvdXQg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg3OTcyLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkocmV2aXNpb24g
MTg3OTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX3B1dF90b19zY29wZSIsICJsZW5ndGgiIDogNyB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfZ2V0X2Zyb21fYXJndW1lbnRzIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfdG9fYXJndW1lbnRzIiwgImxlbmd0aCIgOiA0IH0sCi0g
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXNoX3dpdGhfc2NvcGUiLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1c2hfd2l0aF9zY29wZSIsICJsZW5ndGgi
IDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9w
YXJlbnRfc2NvcGUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2NhdGNoIiwgImxlbmd0aCIgOiAzIH0sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAkocmV2aXNpb24gMTg3OTY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHdvcmtpbmcgY29weSkK
QEAgLTExNiw3ICsxMTYsNiBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAg
ICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19l
eHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6Ci0gICAgY2FzZSBvcF9wdXNoX3dpdGhf
c2NvcGU6CiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNl
IG9wX3Jlc29sdmVfc2NvcGU6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZToKQEAgLTE3Nyw2
ICsxNzYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBv
cF9zdHJpY3RlcToKICAgICBjYXNlIG9wX25lcToKICAgICBjYXNlIG9wX2VxOgorICAgIGNhc2Ug
b3BfcHVzaF93aXRoX3Njb3BlOgogICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDogewogICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4Nzk2OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NDQsOCArNjQ0LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVh
bQogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgZG8gewogICAgICAgICAgICAgSGFu
ZGxlckluZm8mIGhhbmRsZXIgPSBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzW2ldOwot
ICAgICAgICAgICAgb3V0LnByaW50ZigiXHQgJWQ6IHsgc3RhcnQ6IFslNGRdIGVuZDogWyU0ZF0g
dGFyZ2V0OiBbJTRkXSBkZXB0aDogWyU0ZF0gfSAlc1xuIiwKLSAgICAgICAgICAgICAgICBpICsg
MSwgaGFuZGxlci5zdGFydCwgaGFuZGxlci5lbmQsIGhhbmRsZXIudGFyZ2V0LCBoYW5kbGVyLnNj
b3BlRGVwdGgsIGhhbmRsZXIudHlwZU5hbWUoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJc
dCAlZDogeyBzdGFydDogWyU0ZF0gZW5kOiBbJTRkXSB0YXJnZXQ6IFslNGRdIH0gJXNcbiIsCisg
ICAgICAgICAgICAgICAgaSArIDEsIGhhbmRsZXIuc3RhcnQsIGhhbmRsZXIuZW5kLCBoYW5kbGVy
LnRhcmdldCwgaGFuZGxlci50eXBlTmFtZSgpKTsKICAgICAgICAgICAgICsraTsKICAgICAgICAg
fSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpKTsKICAg
ICB9CkBAIC0xNDI5LDggKzE0MjksOSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICBjYXNlIG9wX3B1c2hfd2l0aF9zY29wZTogewogICAgICAgICAgICAgaW50IGRzdCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG5ld1Njb3BlID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgY3VycmVudFNjb3BlID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJwdXNoX3dpdGhfc2NvcGUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcyIs
IHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKG5ld1Njb3BlKS5kYXRhKCkp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShkc3Qp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKG5ld1Njb3BlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShjdXJy
ZW50U2NvcGUpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6IHsKQEAgLTE3ODksMTUgKzE3OTAsMTMgQEAgQ29k
ZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgICAgICB9CiAgICAgICAg
IGlmIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25I
YW5kbGVycygpKSB7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJz
LnJlc2l6ZVRvRml0KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBub25Mb2NhbFNjb3BlRGVw
dGggPSBzY29wZS0+ZGVwdGgoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y291bnQ7IGkrKykgewogICAgICAgICAgICAgICAgIGNvbnN0IFVubGlua2VkSGFuZGxlckluZm8m
IHVubGlua2VkSGFuZGxlciA9IHVubGlua2VkQ29kZUJsb2NrLT5leGNlcHRpb25IYW5kbGVyKGkp
OwogICAgICAgICAgICAgICAgIEhhbmRsZXJJbmZvJiBoYW5kbGVyID0gbV9yYXJlRGF0YS0+bV9l
eGNlcHRpb25IYW5kbGVyc1tpXTsKICNpZiBFTkFCTEUoSklUKQotICAgICAgICAgICAgICAgIGhh
bmRsZXIuaW5pdGlhbGl6ZSh1bmxpbmtlZEhhbmRsZXIsIG5vbkxvY2FsU2NvcGVEZXB0aCwKLSAg
ICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoTExJbnQ6OmdldENvZGVQdHIob3BfY2F0Y2gp
KSkpOworICAgICAgICAgICAgICAgIGhhbmRsZXIuaW5pdGlhbGl6ZSh1bmxpbmtlZEhhbmRsZXIs
IENvZGVMb2NhdGlvbkxhYmVsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1
dGFibGVBZGRyZXNzKExMSW50OjpnZXRDb2RlUHRyKG9wX2NhdGNoKSkpKTsKICNlbHNlCi0gICAg
ICAgICAgICAgICAgaGFuZGxlci5pbml0aWFsaXplKHVubGlua2VkSGFuZGxlciwgbm9uTG9jYWxT
Y29wZURlcHRoKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVyLmluaXRpYWxpemUodW5saW5rZWRI
YW5kbGVyKTsKICNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAkocmV2aXNpb24gMTg3OTY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgJKHdvcmtp
bmcgY29weSkKQEAgLTYxLDM2ICs2MSwzMyBAQCBzdHJ1Y3QgSGFuZGxlckluZm9CYXNlIHsKICAg
ICB1aW50MzJfdCBzdGFydDsKICAgICB1aW50MzJfdCBlbmQ7CiAgICAgdWludDMyX3QgdGFyZ2V0
OwotICAgIHVpbnQzMl90IHNjb3BlRGVwdGggOiAzMDsKICAgICB1aW50MzJfdCB0eXBlQml0cyA6
IDI7IC8vIEhhbmRsZXJUeXBlCiB9OwogCiBzdHJ1Y3QgVW5saW5rZWRIYW5kbGVySW5mbyA6IHB1
YmxpYyBIYW5kbGVySW5mb0Jhc2UgewotICAgIFVubGlua2VkSGFuZGxlckluZm8odWludDMyX3Qg
c3RhcnQsIHVpbnQzMl90IGVuZCwgdWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBzY29wZURlcHRo
LCBIYW5kbGVyVHlwZSBoYW5kbGVyVHlwZSkKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKHVpbnQz
Ml90IHN0YXJ0LCB1aW50MzJfdCBlbmQsIHVpbnQzMl90IHRhcmdldCwgSGFuZGxlclR5cGUgaGFu
ZGxlclR5cGUpCiAgICAgewogICAgICAgICB0aGlzLT5zdGFydCA9IHN0YXJ0OwogICAgICAgICB0
aGlzLT5lbmQgPSBlbmQ7CiAgICAgICAgIHRoaXMtPnRhcmdldCA9IHRhcmdldDsKLSAgICAgICAg
dGhpcy0+c2NvcGVEZXB0aCA9IHNjb3BlRGVwdGg7CiAgICAgICAgIHNldFR5cGUoaGFuZGxlclR5
cGUpOwogICAgICAgICBBU1NFUlQodHlwZSgpID09IGhhbmRsZXJUeXBlKTsKICAgICB9CiB9Owog
CiBzdHJ1Y3QgSGFuZGxlckluZm8gOiBwdWJsaWMgSGFuZGxlckluZm9CYXNlIHsKLSAgICB2b2lk
IGluaXRpYWxpemUoY29uc3QgVW5saW5rZWRIYW5kbGVySW5mbyYgdW5saW5rZWRJbmZvLCBzaXpl
X3Qgbm9uTG9jYWxTY29wZURlcHRoKQorICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBVbmxpbmtl
ZEhhbmRsZXJJbmZvJiB1bmxpbmtlZEluZm8pCiAgICAgewogICAgICAgICBzdGFydCA9IHVubGlu
a2VkSW5mby5zdGFydDsKICAgICAgICAgZW5kID0gdW5saW5rZWRJbmZvLmVuZDsKICAgICAgICAg
dGFyZ2V0ID0gdW5saW5rZWRJbmZvLnRhcmdldDsKLSAgICAgICAgc2NvcGVEZXB0aCA9IHVubGlu
a2VkSW5mby5zY29wZURlcHRoICsgbm9uTG9jYWxTY29wZURlcHRoOwogICAgICAgICB0eXBlQml0
cyA9IHVubGlua2VkSW5mby50eXBlQml0czsKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAg
IHZvaWQgaW5pdGlhbGl6ZShjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiB1bmxpbmtlZEluZm8s
IHNpemVfdCBub25Mb2NhbFNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsKQorICAg
IHZvaWQgaW5pdGlhbGl6ZShjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiB1bmxpbmtlZEluZm8s
IENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsKQogICAgIHsKLSAgICAgICAgaW5pdGlhbGl6ZSh1bmxp
bmtlZEluZm8sIG5vbkxvY2FsU2NvcGVEZXB0aCk7CisgICAgICAgIGluaXRpYWxpemUodW5saW5r
ZWRJbmZvKTsKICAgICAgICAgbmF0aXZlQ29kZSA9IGxhYmVsOwogICAgIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAJKHJldmlzaW9uIDE4Nzk2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwy
OSArNzQsMTYgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKAogCiAg
ICAgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcCA9IG5ld1RlbXBvcmFyeSgpOwot
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2xvYmFsU2NvcGU7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBnbG9iYWxTY29wZSA9IG1fdG9wTW9zdFNjb3BlOwogICAgICAgICBmb3IgKGF1
dG8gZnVuY3Rpb25QYWlyIDogbV9mdW5jdGlvbnNUb0luaXRpYWxpemUpIHsKICAgICAgICAgICAg
IEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSA9IGZ1bmN0aW9uUGFpci5maXJzdDsKICAg
ICAgICAgICAgIEZ1bmN0aW9uVmFyaWFibGVUeXBlIGZ1bmN0aW9uVHlwZSA9IGZ1bmN0aW9uUGFp
ci5zZWNvbmQ7CiAgICAgICAgICAgICBlbWl0TmV3RnVuY3Rpb24odGVtcC5nZXQoKSwgZnVuY3Rp
b25Cb2R5KTsKICAgICAgICAgICAgIGlmIChmdW5jdGlvblR5cGUgPT0gTm9ybWFsRnVuY3Rpb25W
YXJpYWJsZSkKICAgICAgICAgICAgICAgICBpbml0aWFsaXplVmFyaWFibGUodmFyaWFibGUoZnVu
Y3Rpb25Cb2R5LT5pZGVudCgpKSAsIHRlbXAuZ2V0KCkpOwotICAgICAgICAgICAgZWxzZSBpZiAo
ZnVuY3Rpb25UeXBlID09IEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIWdsb2JhbFNjb3BlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3N5bWJvbFRh
YmxlU3RhY2suaXNFbXB0eSgpIHx8ICFtX3N5bWJvbFRhYmxlU3RhY2suZmlyc3QoKS5tX3Njb3Bl
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlbid0IGFsbG9jYXRlZCBhIGxl
eGljYWwgc2NvcGUgb24gdG9wIG9mIHRoZSBnbG9iYWwgb2JqZWN0LCBzbyBzY29wZVJlZ2lzdGVy
KCkgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBnbG9iYWwgc2NvcGUuCi0gICAgICAgICAgICAgICAg
ICAgICAgICBnbG9iYWxTY29wZSA9IHNjb3BlUmVnaXN0ZXIoKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhpcyB3aWxs
IHJlc29sdmUgdG8gdGhlIGdsb2JhbCBvYmplY3QgYmVjYXVzZSBvdXIgcGFyc2VyIGRvZXNuJ3Qg
YWxsb3cKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vICJsZXQiIHZhcmlhYmxlcyB0byBoYXZl
IHRoZSBzYW1lIG5hbWVzIGFzIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChtX3Njb3BlTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpLmhhc0NhcHR1cmVkVmFyaWFibGVz
KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdsb2JhbE9i
amVjdFNjb3BlID0gZW1pdFJlc29sdmVTY29wZShudWxscHRyLCBWYXJpYWJsZShmdW5jdGlvbkJv
ZHktPmlkZW50KCkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbFNjb3BlID0gbmV3
QmxvY2tTY29wZVZhcmlhYmxlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShn
bG9iYWxTY29wZS5nZXQoKSwgZ2xvYmFsT2JqZWN0U2NvcGUuZ2V0KCkpOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZnVuY3Rp
b25UeXBlID09IEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUpCiAgICAgICAgICAgICAgICAgZW1pdFB1
dFRvU2NvcGUoZ2xvYmFsU2NvcGUuZ2V0KCksIFZhcmlhYmxlKGZ1bmN0aW9uQm9keS0+aWRlbnQo
KSksIHRlbXAuZ2V0KCksIFRocm93SWZOb3RGb3VuZCk7Ci0gICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTM3LDExICsxMjQsOSBAQCBQYXJzZXJFcnJvciBC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoCiAgICAgICAgIGlmIChlbmQgPD0gc3RhcnQpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIEFTU0VSVChyYW5nZS50cnlE
YXRhLT50YXJnZXRTY29wZURlcHRoICE9IFVJTlRfTUFYKTsKICAgICAgICAgQVNTRVJUKHJhbmdl
LnRyeURhdGEtPmhhbmRsZXJUeXBlICE9IEhhbmRsZXJUeXBlOjpJbGxlZ2FsKTsKICAgICAgICAg
VW5saW5rZWRIYW5kbGVySW5mbyBpbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdGFydCksIHN0
YXRpY19jYXN0PHVpbnQzMl90PihlbmQpLAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHJhbmdlLnRyeURhdGEtPnRhcmdldC0+YmluZCgpKSwgcmFuZ2UudHJ5RGF0YS0+dGFyZ2V0
U2NvcGVEZXB0aCwKLSAgICAgICAgICAgIHJhbmdlLnRyeURhdGEtPmhhbmRsZXJUeXBlKTsKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihyYW5nZS50cnlEYXRhLT50YXJnZXQtPmJp
bmQoKSksIHJhbmdlLnRyeURhdGEtPmhhbmRsZXJUeXBlKTsKICAgICAgICAgbV9jb2RlQmxvY2st
PmFkZEV4Y2VwdGlvbkhhbmRsZXIoaW5mbyk7CiAgICAgfQogICAgIApAQCAtMTQ2OSwxMSArMTQ1
NCwxMSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoTGV4aWNhbFNjb3BlCiAgICAgICAg
IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCA9IGNvbnN0YW50U3ltYm9sVGFibGUtPmluZGV4KCk7
CiAgICAgfQogICAgIGlmIChoYXNDYXB0dXJlZFZhcmlhYmxlcykgewotICAgICAgICBpZiAoc2Nv
cGVSZWdpc3RlclR5cGUgPT0gU2NvcGVSZWdpc3RlclR5cGU6OkJsb2NrKSB7CisgICAgICAgIGlm
IChzY29wZVJlZ2lzdGVyVHlwZSA9PSBTY29wZVJlZ2lzdGVyVHlwZTo6QmxvY2spCiAgICAgICAg
ICAgICBuZXdTY29wZSA9IG5ld0Jsb2NrU2NvcGVWYXJpYWJsZSgpOwotICAgICAgICAgICAgbmV3
U2NvcGUtPnJlZigpOwotICAgICAgICB9IGVsc2UKKyAgICAgICAgZWxzZQogICAgICAgICAgICAg
bmV3U2NvcGUgPSBhZGRWYXIoKTsKKyAgICAgICAgbmV3U2NvcGUtPnJlZigpOwogICAgICAgICBp
ZiAoIWNvbnN0YW50U3ltYm9sVGFibGUpIHsKICAgICAgICAgICAgIEFTU0VSVCghdm0oKS0+dHlw
ZVByb2ZpbGVyKCkpOwogICAgICAgICAgICAgY29uc3RhbnRTeW1ib2xUYWJsZSA9IGFkZENvbnN0
YW50VmFsdWUoc3ltYm9sVGFibGUtPmNsb25lU2NvcGVQYXJ0KCptX3ZtKSk7CkBAIC0yNjM1LDEz
ICsyNjIwLDIxIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRTY29wZSgpCiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiB9CiAKLVJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaFdpdGhTY29wZShSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXNoV2l0aFNjb3BlKFJlZ2lzdGVySUQqIG9iamVjdFNjb3BlKQogewogICAgIHB1c2hT
Y29wZWRDb250cm9sRmxvd0NvbnRleHQoKTsKKyAgICBSZWdpc3RlcklEKiBuZXdTY29wZSA9IG5l
d0Jsb2NrU2NvcGVWYXJpYWJsZSgpOworICAgIG5ld1Njb3BlLT5yZWYoKTsKIAotICAgIFJlZ2lz
dGVySUQqIHJlc3VsdCA9IGVtaXRVbmFyeU9wKG9wX3B1c2hfd2l0aF9zY29wZSwgZHN0LCBzY29w
ZSk7Ci0gICAgbV9zeW1ib2xUYWJsZVN0YWNrLmFwcGVuZChTeW1ib2xUYWJsZVN0YWNrRW50cnl7
IFN0cm9uZzxTeW1ib2xUYWJsZT4oKSwgbnVsbHB0ciwgdHJ1ZSwgMCB9KTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIGVtaXRPcGNvZGUob3BfcHVzaF93aXRoX3Njb3BlKTsKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobmV3U2NvcGUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChvYmplY3RTY29wZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNj
b3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CisKKyAgICBlbWl0TW92ZShzY29wZVJlZ2lzdGVyKCks
IG5ld1Njb3BlKTsKKyAgICBtX3N5bWJvbFRhYmxlU3RhY2suYXBwZW5kKFN5bWJvbFRhYmxlU3Rh
Y2tFbnRyeXsgU3Ryb25nPFN5bWJvbFRhYmxlPigpLCBuZXdTY29wZSwgdHJ1ZSwgMCB9KTsKKwor
ICAgIHJldHVybiBuZXdTY29wZTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRQYXJlbnRTY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKQpA
QCAtMjY1OCwxMSArMjY1MSwxMiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UG9wU2Nv
cGUoUmVnCiAgICAgZW1pdE1vdmUoZHN0LCBwYXJlbnRTY29wZS5nZXQoKSk7CiB9CiAKLXZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQb3BXaXRoU2NvcGUoUmVnaXN0ZXJJRCogc3JjRHN0KQor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBvcFdpdGhTY29wZSgpCiB7Ci0gICAgZW1pdFBv
cFNjb3BlKHNyY0RzdCwgc3JjRHN0KTsKKyAgICBlbWl0UG9wU2NvcGUoc2NvcGVSZWdpc3Rlcigp
LCBzY29wZVJlZ2lzdGVyKCkpOwogICAgIHBvcFNjb3BlZENvbnRyb2xGbG93Q29udGV4dCgpOwog
ICAgIFN5bWJvbFRhYmxlU3RhY2tFbnRyeSBzdGFja0VudHJ5ID0gbV9zeW1ib2xUYWJsZVN0YWNr
LnRha2VMYXN0KCk7CisgICAgc3RhY2tFbnRyeS5tX3Njb3BlLT5kZXJlZigpOwogICAgIFJFTEVB
U0VfQVNTRVJUKHN0YWNrRW50cnkubV9pc1dpdGhTY29wZSk7CiB9CiAKQEAgLTI4NDEsNiArMjgz
NSw5IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9jYXRlQW5kRW1pdFMKICAgICBtX3Nj
b3BlUmVnaXN0ZXItPnJlZigpOwogICAgIG1fY29kZUJsb2NrLT5zZXRTY29wZVJlZ2lzdGVyKHNj
b3BlUmVnaXN0ZXIoKS0+dmlydHVhbFJlZ2lzdGVyKCkpOwogICAgIGVtaXRHZXRTY29wZSgpOwor
ICAgIG1fdG9wTW9zdFNjb3BlID0gYWRkVmFyKCk7CisgICAgbV90b3BNb3N0U2NvcGUtPnJlZigp
OworICAgIGVtaXRNb3ZlKG1fdG9wTW9zdFNjb3BlLCBzY29wZVJlZ2lzdGVyKCkpOwogfQogCiB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3BlcyhSZWdpc3RlcklEKiBz
Y29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiBi
b3R0b21TY29wZSkKQEAgLTI5OTgsNyArMjk5NSw2IEBAIFRyeURhdGEqIEJ5dGVjb2RlR2VuZXJh
dG9yOjpwdXNoVHJ5KExhYmUKIHsKICAgICBUcnlEYXRhIHRyeURhdGE7CiAgICAgdHJ5RGF0YS50
YXJnZXQgPSBuZXdMYWJlbCgpOwotICAgIHRyeURhdGEudGFyZ2V0U2NvcGVEZXB0aCA9IFVJTlRf
TUFYOwogICAgIHRyeURhdGEuaGFuZGxlclR5cGUgPSBIYW5kbGVyVHlwZTo6SWxsZWdhbDsKICAg
ICBtX3RyeURhdGEuYXBwZW5kKHRyeURhdGEpOwogICAgIFRyeURhdGEqIHJlc3VsdCA9ICZtX3Ry
eURhdGEubGFzdCgpOwpAQCAtMzAyNiwyNyArMzAyMiwyNCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjpwb3BUcnlBbmRFbWl0Q2F0CiAgICAgbV90cnlDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgp
OwogICAgIAogICAgIGVtaXRMYWJlbCh0cnlSYW5nZS50cnlEYXRhLT50YXJnZXQuZ2V0KCkpOwot
ICAgIHRyeVJhbmdlLnRyeURhdGEtPnRhcmdldFNjb3BlRGVwdGggPSBjYWxjdWxhdGVUYXJnZXRT
Y29wZURlcHRoRm9yRXhjZXB0aW9uSGFuZGxlcigpOwogICAgIHRyeVJhbmdlLnRyeURhdGEtPmhh
bmRsZXJUeXBlID0gaGFuZGxlclR5cGU7CiAKICAgICBlbWl0T3Bjb2RlKG9wX2NhdGNoKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4KCkpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCh0aHJvd25WYWx1ZVJlZ2lzdGVyLT5pbmRleCgpKTsKLX0K
IAotaW50IEJ5dGVjb2RlR2VuZXJhdG9yOjpjYWxjdWxhdGVUYXJnZXRTY29wZURlcHRoRm9yRXhj
ZXB0aW9uSGFuZGxlcigpIGNvbnN0Ci17Ci0gICAgaW50IGRlcHRoID0gbG9jYWxTY29wZURlcHRo
KCk7Ci0KLSAgICAvLyBDdXJyZW50bHksIHdlJ3JlIG1haW50YWluZyBjb21wYXRpYmlsaXR5IHdp
dGggaG93IHRoaW5ncyBhcmUgZG9uZSBhbmQgbGV0dGluZyB0aGUgZXhjZXB0aW9uIGhhbmRsaW5n
Ci0gICAgLy8gY29kZSB0YWtlIGludG8gY29uc2lkZXJhdGlvbiB0aGUgYmFzZSBhY3RpdmF0aW9u
IG9mIHRoZSBmdW5jdGlvbi4gVGhlcmUgaXMgbm8gcmVhc29uIHdlIHNob3VsZG4ndAotICAgIC8v
IGJlIGFibGUgdG8gY2FsY3VsYXRlIHRoZSBleGFjdCBkZXB0aCBoZXJlIGFuZCBsZXQgdGhlIGV4
Y2VwdGlvbiBoYW5kbGVyIG5vdCB3b3JyeSBpZiB0aGVyZSBpcyBhIGJhc2UKLSAgICAvLyBhY3Rp
dmF0aW9uIG9yIG5vdC4KLSAgICBpZiAobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlcikKLSAg
ICAgICAgZGVwdGgtLTsKLQotICAgIEFTU0VSVChkZXB0aCA+PSAwKTsKLSAgICByZXR1cm4gZGVw
dGg7CisgICAgYm9vbCBmb3VuZExvY2FsU2NvcGUgPSBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX3N5bWJvbFRhYmxlU3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICAvLyBOb3Rl
IHRoYXQgaWYgd2UgZG9uJ3QgZmluZCBhIGxvY2FsIHNjb3BlIGluIHRoZSBjdXJyZW50IGZ1bmN0
aW9uL3Byb2dyYW0sIAorICAgICAgICAvLyB3ZSBtdXN0IGdyYWIgdGhlIG91dGVyLW1vc3Qgc2Nv
cGUgb2YgdGhpcyBieXRlY29kZSBnZW5lcmF0aW9uLgorICAgICAgICBpZiAobV9zeW1ib2xUYWJs
ZVN0YWNrW2ldLm1fc2NvcGUpIHsKKyAgICAgICAgICAgIGZvdW5kTG9jYWxTY29wZSA9IHRydWU7
CisgICAgICAgICAgICBlbWl0TW92ZShzY29wZVJlZ2lzdGVyKCksIG1fc3ltYm9sVGFibGVTdGFj
a1tpXS5tX3Njb3BlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAg
IGlmICghZm91bmRMb2NhbFNjb3BlKQorICAgICAgICBlbWl0TW92ZShzY29wZVJlZ2lzdGVyKCks
IG1fdG9wTW9zdFNjb3BlKTsKIH0KIAogaW50IEJ5dGVjb2RlR2VuZXJhdG9yOjpsb2NhbFNjb3Bl
RGVwdGgoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTg3OTY5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBzdHJ1
Y3QgVHJ5RGF0YSB7CiAgICAgICAgIFJlZlB0cjxMYWJlbD4gdGFyZ2V0OwotICAgICAgICB1bnNp
Z25lZCB0YXJnZXRTY29wZURlcHRoOwogICAgICAgICBIYW5kbGVyVHlwZSBoYW5kbGVyVHlwZTsK
ICAgICB9OwogCkBAIC01OTMsMTAgKzU5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGVtaXRQb3BDYXRjaFNjb3BlKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAogICAgICAgICB2
b2lkIGVtaXRHZXRTY29wZSgpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHVzaFdpdGhTY29w
ZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKTsKLSAgICAgICAgdm9pZCBlbWl0
UG9wU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7Ci0gICAgICAgIHZv
aWQgZW1pdFBvcFdpdGhTY29wZShSZWdpc3RlcklEKiBzcmNEc3QpOwotICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0R2V0UGFyZW50U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29w
ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXNoV2l0aFNjb3BlKFJlZ2lzdGVySUQqIG9i
amVjdFNjb3BlKTsKKyAgICAgICAgdm9pZCBlbWl0UG9wV2l0aFNjb3BlKCk7CiAKICAgICAgICAg
dm9pZCBlbWl0RGVidWdIb29rKERlYnVnSG9va0lELCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBj
aGFyT2Zmc2V0LCB1bnNpZ25lZCBsaW5lU3RhcnQpOwogCkBAIC02MzYsNiArNjMzLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGVudW0gY2xhc3MgU2NvcGVSZWdpc3RlclR5cGUgeyBWYXIs
IEJsb2NrIH07CiAgICAgICAgIHZvaWQgcHVzaExleGljYWxTY29wZUludGVybmFsKFZhcmlhYmxl
RW52aXJvbm1lbnQmLCBib29sIGNhbk9wdGltaXplVERaQ2hlY2tzLCBSZWdpc3RlcklEKiogY29u
c3RhbnRTeW1ib2xUYWJsZVJlc3VsdCwgVERaUmVxdWlyZW1lbnQsIFNjb3BlVHlwZSwgU2NvcGVS
ZWdpc3RlclR5cGUpOwogICAgICAgICB2b2lkIHBvcExleGljYWxTY29wZUludGVybmFsKFZhcmlh
YmxlRW52aXJvbm1lbnQmLCBURFpSZXF1aXJlbWVudCk7CisgICAgICAgIHZvaWQgZW1pdFBvcFNj
b3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0R2V0UGFyZW50U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29w
ZSk7CiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHB1c2hMZXhpY2FsU2NvcGUoVmFyaWFibGVF
bnZpcm9ubWVudE5vZGUqLCBib29sIGNhbk9wdGltaXplVERaQ2hlY2tzLCBSZWdpc3RlcklEKiog
Y29uc3RhbnRTeW1ib2xUYWJsZVJlc3VsdCA9IG51bGxwdHIpOwogICAgICAgICB2b2lkIHBvcExl
eGljYWxTY29wZShWYXJpYWJsZUVudmlyb25tZW50Tm9kZSopOwpAQCAtNzY3LDYgKzc2Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEIG1fdGhpc1JlZ2lzdGVyOwogICAg
ICAgICBSZWdpc3RlcklEIG1fY2FsbGVlUmVnaXN0ZXI7CiAgICAgICAgIFJlZ2lzdGVySUQqIG1f
c2NvcGVSZWdpc3RlciB7IG51bGxwdHIgfTsKKyAgICAgICAgUmVnaXN0ZXJJRCogbV90b3BNb3N0
U2NvcGUgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fYXJndW1lbnRzUmVnaXN0
ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fbGV4aWNhbEVudmlyb25tZW50
UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJl
Z2lzdGVyIHsgbnVsbHB0ciB9OwpAQCAtNzgzLDcgKzc4Myw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBpbnQgbV9sb2NhbFNjb3BlRGVwdGggeyAwIH07CiAgICAgICAgIGNvbnN0IENvZGVU
eXBlIG1fY29kZVR5cGU7CiAKLSAgICAgICAgaW50IGNhbGN1bGF0ZVRhcmdldFNjb3BlRGVwdGhG
b3JFeGNlcHRpb25IYW5kbGVyKCkgY29uc3Q7CiAgICAgICAgIGludCBsb2NhbFNjb3BlRGVwdGgo
KSBjb25zdDsKICAgICAgICAgdm9pZCBwdXNoU2NvcGVkQ29udHJvbEZsb3dDb250ZXh0KCk7CiAg
ICAgICAgIHZvaWQgcG9wU2NvcGVkQ29udHJvbEZsb3dDb250ZXh0KCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShy
ZXZpc2lvbiAxODc5NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NzQsOSArMjU3NCw5IEBAIHZvaWQg
V2l0aE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmUKIAogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8obV9kaXZvdCwgbV9kaXZvdCAtIG1fZXhwcmVzc2lvbkxlbmd0aCwg
bV9kaXZvdCk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRQdXNoV2l0aFNjb3BlKGdlbmVyYXRvci5zY29w
ZVJlZ2lzdGVyKCksIHNjb3BlLmdldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdFB1c2hXaXRoU2Nv
cGUoc2NvcGUuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50
KTsKLSAgICBnZW5lcmF0b3IuZW1pdFBvcFdpdGhTY29wZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3Rl
cigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdFBvcFdpdGhTY29wZSgpOwogfQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2FzZUNsYXVzZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTg3OTY5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzA1LDIxICs3MDUsNiBAQCBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp1
CiAgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigp
KQogICAgICAgICBwcm9maWxlci0+ZXhjZXB0aW9uVW53aW5kKGNhbGxGcmFtZSk7CiAKLSAgICAv
LyBVbndpbmQgdGhlIHNjb3BlIGNoYWluIHdpdGhpbiB0aGUgZXhjZXB0aW9uIGhhbmRsZXIncyBj
YWxsIGZyYW1lLgotICAgIGludCB0YXJnZXRTY29wZURlcHRoID0gaGFuZGxlci0+c2NvcGVEZXB0
aDsKLSAgICBpZiAoY29kZUJsb2NrLT5uZWVkc0FjdGl2YXRpb24oKSAmJiBjYWxsRnJhbWUtPmhh
c0FjdGl2YXRpb24oKSkKLSAgICAgICAgKyt0YXJnZXRTY29wZURlcHRoOwotCi0gICAgaW50IHNj
b3BlUmVnaXN0ZXJPZmZzZXQgPSBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKTsK
LSAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxGcmFtZS0+c2NvcGUoc2NvcGVSZWdpc3Rlck9mZnNl
dCk7Ci0gICAgaW50IHNjb3BlRGVsdGEgPSBzY29wZS0+ZGVwdGgoKSAtIHRhcmdldFNjb3BlRGVw
dGg7Ci0gICAgUkVMRUFTRV9BU1NFUlQoc2NvcGVEZWx0YSA+PSAwKTsKLQotICAgIHdoaWxlIChz
Y29wZURlbHRhLS0pCi0gICAgICAgIHNjb3BlID0gc2NvcGUtPm5leHQoKTsKLQotICAgIGNhbGxG
cmFtZS0+c2V0U2NvcGUoc2NvcGVSZWdpc3Rlck9mZnNldCwgc2NvcGUpOwotCiAgICAgcmV0dXJu
IGhhbmRsZXI7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE4Nzk2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQ4LDkgKzc0OCw4
IEBAIHZvaWQgSklUOjplbWl0X29wX3Rocm93KEluc3RydWN0aW9uKiBjdXIKIAogdm9pZCBKSVQ6
OmVtaXRfb3BfcHVzaF93aXRoX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7Ci0gICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAg
ZW1pdExvYWQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDEsIHJlZ1QwKTsK
LSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hXaXRoU2NvcGUsIGRzdCwgcmVnVDEsIHJl
Z1QwKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CisgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfdG9fbnVtYmVyKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAJKHJldmlzaW9uIDE4Nzk2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNSw5ICs0MjUsOCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF90aHJvdyhJbnN0cnVjdGlvbiogY3VyCiAKIHZvaWQgSklUOjplbWl0X29wX3B1c2hf
d2l0aF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIGludCBk
c3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOwotICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uUHVzaFdpdGhTY29wZSwgZHN0LCByZWdUMCk7CisgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3df
cGF0aF9wdXNoX3dpdGhfc2NvcGUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKIHZv
aWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBDb21waWxlT3BTdHJpY3RFcVR5cGUgdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTg3OTY5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0
MywyMSArMTM0Myw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRHZXR0ZXJTZXQK
IH0KICNlbmRpZgogCi12b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShF
eGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgZHN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Ci17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKCZ2bSwgZXhlYyk7Ci0KLSAgICBKU09iamVjdCogbyA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpLnRvT2JqZWN0KGV4ZWMpOwotICAgIGlmICh2bS5leGNlcHRpb24oKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IFRoaXMgd29uJ3Qgd29yayBpZiB0aGlzIG9w
ZXJhdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgREZHIG9yIEZUTC4KLSAgICAvLyBUaGlzIHNob3Vs
ZCBiZSBjaGFuZ2VkIHRvIHBhc3MgaW4gdGhlIG9sZCBzY29wZSBhbmQgcmV0dXJuIHRoZSBuZXcg
c2NvcGUuCi0gICAgSlNTY29wZSogY3VycmVudFNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihkc3Qp
LlJlZ2lzdGVyOjpzY29wZSgpOwotICAgIGV4ZWMtPnVuY2hlY2tlZFIoZHN0KSA9IEpTV2l0aFNj
b3BlOjpjcmVhdGUoZXhlYywgbywgY3VycmVudFNjb3BlKTsKLX0KLQogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblBvcFNjb3BlKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBzY29wZVJlZykK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE4Nzk2NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDUsNyArMzA1
LDYgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFNldHRlckJ5SQogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlclNldHRlcihFeGVjU3RhdGUqLCBKU0NlbGwqLCBJ
ZGVudGlmaWVyKiwgSlNDZWxsKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogI2VuZGlmCiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaEZ1bmN0aW9uTmFtZVNjb3BlKEV4ZWNTdGF0ZSos
IGludDMyX3QsIFN5bWJvbFRhYmxlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKLXZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3BlKEV4ZWNTdGF0ZSosIGludDMy
X3QsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUG9wU2NvcGUoRXhlY1N0YXRlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2ZpbGVEaWRDYWxsKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvZmls
ZVdpbGxDYWxsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJl
dmlzaW9uIDE4Nzk2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNjMsMjAgKzEyNjMsNiBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfdG9fcHJpbWl0CiAgICAgTExJTlRfUkVUVVJOKExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKIH0KIAotTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSkKLXsKLSAgICBMTElOVF9CRUdJTigpOwot
ICAgIEpTVmFsdWUgdiA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwotICAgIEpTT2JqZWN0KiBv
ID0gdi50b09iamVjdChleGVjKTsKLSAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKLQotICAg
IGludCBzY29wZVJlZyA9IHBjWzFdLnUub3BlcmFuZDsKLSAgICBKU1Njb3BlKiBjdXJyZW50U2Nv
cGUgPSBleGVjLT51bmNoZWNrZWRSKHNjb3BlUmVnKS5SZWdpc3Rlcjo6c2NvcGUoKTsKLSAgICBl
eGVjLT51bmNoZWNrZWRSKHNjb3BlUmVnKSA9IEpTV2l0aFNjb3BlOjpjcmVhdGUoZXhlYywgbywg
Y3VycmVudFNjb3BlKTsKLSAgICAKLSAgICBMTElOVF9FTkQoKTsKLX0KLQogTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3Rocm93KQogewogICAgIExMSU5UX0JFR0lOKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24g
MTg3OTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNiBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2NhCiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3RlYXJfb2ZmX2FyZ3VtZW50cyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3N0cmNhdCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX3By
aW1pdGl2ZSk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0
aF9zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Rocm93KTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhyb3dfc3RhdGljX2Vycm9y
KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaGFuZGxlX3dhdGNoZG9n
X3RpbWVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE4Nzk2OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAt
MTI4Myw4ICsxMjgzLDggQEAgX2xsaW50X29wX3N0cmNhdDoKIAogX2xsaW50X29wX3B1c2hfd2l0
aF9zY29wZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKQotICAgIGRpc3BhdGNoKDMpCisgICAgY2FsbFNsb3dQ
YXRoKF9zbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKQorICAgIGRpc3BhdGNoKDQpCiAKIAogX2xs
aW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxODc5
NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NDksNCArNjQ5LDE1IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9jcmVhdGVfbGV4aWNhbF8KICAgICBSRVRVUk4obmV3U2NvcGUpOwogfQogCitTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKQoreworICAgIEJFR0lOKCk7CisgICAg
SlNPYmplY3QqIG5ld1Njb3BlID0gT1BfQygyKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7Cisg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBpbnQgc2NvcGVSZWcgPSBwY1szXS51Lm9wZXJh
bmQ7CisgICAgSlNTY29wZSogY3VycmVudFNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihzY29wZVJl
ZykuUmVnaXN0ZXI6OnNjb3BlKCk7CisgICAgUkVUVVJOKEpTV2l0aFNjb3BlOjpjcmVhdGUoZXhl
YywgbmV3U2NvcGUsIGN1cnJlbnRTY29wZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CShyZXZpc2lvbiAxODc5NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjM0LDYgKzIzNCw3IEBAIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfbmV4dF9nZW4KIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCShyZXZpc2lvbiAxODc5
NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI0LDE0ICsxMjQsNiBAQCBKU09iamVjdCogSlNTY29wZTo6b2JqZWN0QXRT
Y29wZShKU1Njb3BlCiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIAotaW50IEpTU2NvcGU6OmRlcHRo
KCkKLXsKLSAgICBpbnQgZGVwdGggPSAwOwotICAgIGZvciAoSlNTY29wZSogc2NvcGUgPSB0aGlz
OyBzY29wZTsgc2NvcGUgPSBzY29wZS0+bmV4dCgpKQotICAgICAgICArK2RlcHRoOwotICAgIHJl
dHVybiBkZXB0aDsKLX0KLQogLy8gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLCB0aGUgcmVzdWx0
IG9mIGlzVW5zY29wYWJsZSBiZWNvbWVzIGZhbHNlLgogc3RhdGljIGlubGluZSBib29sIGlzVW5z
Y29wYWJsZShFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU09iamVjdCogb2JqZWN0
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Njb3BlLmgJKHJldmlzaW9uIDE4Nzk2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw2IEBA
IHB1YmxpYzoKICAgICBTY29wZUNoYWluSXRlcmF0b3IgYmVnaW4oKTsKICAgICBTY29wZUNoYWlu
SXRlcmF0b3IgZW5kKCk7CiAgICAgSlNTY29wZSogbmV4dCgpOwotICAgIGludCBkZXB0aCgpOwog
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpOwogICAgIFZNKiB2bSgpOwo=
</data>
<flag name="review"
          id="283536"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="283537"
          type_id="3"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258502</attachid>
            <date>2015-08-07 08:18:32 -0700</date>
            <delta_ts>2015-08-07 10:41:38 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>27836</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4MDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDE1LTA4LTA1ICBTYWFtIGJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBJbnRlcnByZXRlcjo6dW53aW5kIHNob3VsZG4ndCBiZSByZXNwb25zaWJsZSBmb3IgYXNz
aWduaW5nIHRoZSBjb3JyZWN0IHNjb3BlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkg
R2FyZW4uCisKKyAgICAgICAgSWYgd2UgbWFrZSB0aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yIGtub3cg
YWJvdXQgZXZlcnkgbG9jYWwgc2NvcGUgaXQgCisgICAgICAgIGNyZWF0ZXMsIGFuZCBpZiB3ZSBn
aXZlIGVhY2ggbG9jYWwgc2NvcGUgYSB1bmlxdWUgcmVnaXN0ZXIsIHRoZQorICAgICAgICBieXRl
Y29kZSBnZW5lcmF0b3IgaGFzIGFsbCB0aGUgaW5mb3JtYXRpb24gaXQgbmVlZHMgdG8gYXNzaWdu
CisgICAgICAgIHRoZSBjb3JyZWN0IHNjb3BlIHRvIGEgY2F0Y2ggaGFuZGxlci4gQmVjYXVzZSB0
aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yCisgICAgICAgIGtub3dzIHRoaXMgaW5mb3JtYXRpb24sIGl0
J3MgYSBiZXR0ZXIgc2VwYXJhdGlvbiBvZiByZXNwb25zaWJpbHRpZXMKKyAgICAgICAgZm9yIGl0
IHRvIHNldCB1cCB0aGUgcHJvcGVyIHNjb3BlIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgZXhj
ZXB0aW9uCisgICAgICAgIGhhbmRsaW5nIHJ1bnRpbWUgdG8gZmluZCB0aGUgc2NvcGUuCisKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJs
b2NrKToKKyAgICAgICAgKiBieXRlY29kZS9IYW5kbGVySW5mby5oOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZEhhbmRsZXJJbmZvOjpVbmxpbmtlZEhhbmRsZXJJbmZvKToKKyAgICAgICAgKEpTQzo6
SGFuZGxlckluZm86OmluaXRpYWxpemUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoTGV4aWNhbFNjb3BlSW50
ZXJuYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFNjb3BlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoV2l0aFNjb3BlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRQYXJlbnRTY29wZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UG9wU2NvcGUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBvcFdpdGhTY29wZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjphbGxvY2F0ZUFuZEVtaXRTY29wZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3Blcyk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpwdXNoVHJ5KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnBvcFRyeUFuZEVtaXRDYXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
Ojpsb2NhbFNjb3BlRGVwdGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Y2Fs
Y3VsYXRlVGFyZ2V0U2NvcGVEZXB0aEZvckV4Y2VwdGlvbkhhbmRsZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpXaXRoTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp1bndpbmQpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1c2hfd2l0aF9zY29wZSk6CisgICAgICAg
IChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHVzaF93aXRoX3Njb3BlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX251bWJlcik6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRf
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU2Nv
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjpvYmplY3RBdFNjb3BlKToKKyAgICAgICAg
KEpTQzo6aXNVbnNjb3BhYmxlKToKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6ZGVwdGgpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5oOgorCiAyMDE1LTA4LTA1ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbCBvdXQg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg3OTcyLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkocmV2aXNpb24g
MTg4MDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX3B1dF90b19zY29wZSIsICJsZW5ndGgiIDogNyB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfZ2V0X2Zyb21fYXJndW1lbnRzIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfdG9fYXJndW1lbnRzIiwgImxlbmd0aCIgOiA0IH0sCi0g
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXNoX3dpdGhfc2NvcGUiLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1c2hfd2l0aF9zY29wZSIsICJsZW5ndGgi
IDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9w
YXJlbnRfc2NvcGUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2NhdGNoIiwgImxlbmd0aCIgOiAzIH0sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAkocmV2aXNpb24gMTg4MDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHdvcmtpbmcgY29weSkK
QEAgLTExNiw3ICsxMTYsNiBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAg
ICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19l
eHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6Ci0gICAgY2FzZSBvcF9wdXNoX3dpdGhf
c2NvcGU6CiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNl
IG9wX3Jlc29sdmVfc2NvcGU6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZToKQEAgLTE3Nyw2
ICsxNzYsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBv
cF9zdHJpY3RlcToKICAgICBjYXNlIG9wX25lcToKICAgICBjYXNlIG9wX2VxOgorICAgIGNhc2Ug
b3BfcHVzaF93aXRoX3Njb3BlOgogICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDogewogICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4ODAxMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NDQsOCArNjQ0LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVh
bQogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgZG8gewogICAgICAgICAgICAgSGFu
ZGxlckluZm8mIGhhbmRsZXIgPSBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzW2ldOwot
ICAgICAgICAgICAgb3V0LnByaW50ZigiXHQgJWQ6IHsgc3RhcnQ6IFslNGRdIGVuZDogWyU0ZF0g
dGFyZ2V0OiBbJTRkXSBkZXB0aDogWyU0ZF0gfSAlc1xuIiwKLSAgICAgICAgICAgICAgICBpICsg
MSwgaGFuZGxlci5zdGFydCwgaGFuZGxlci5lbmQsIGhhbmRsZXIudGFyZ2V0LCBoYW5kbGVyLnNj
b3BlRGVwdGgsIGhhbmRsZXIudHlwZU5hbWUoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCJc
dCAlZDogeyBzdGFydDogWyU0ZF0gZW5kOiBbJTRkXSB0YXJnZXQ6IFslNGRdIH0gJXNcbiIsCisg
ICAgICAgICAgICAgICAgaSArIDEsIGhhbmRsZXIuc3RhcnQsIGhhbmRsZXIuZW5kLCBoYW5kbGVy
LnRhcmdldCwgaGFuZGxlci50eXBlTmFtZSgpKTsKICAgICAgICAgICAgICsraTsKICAgICAgICAg
fSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpKTsKICAg
ICB9CkBAIC0xNDI5LDggKzE0MjksOSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAog
ICAgICAgICBjYXNlIG9wX3B1c2hfd2l0aF9zY29wZTogewogICAgICAgICAgICAgaW50IGRzdCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG5ld1Njb3BlID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgY3VycmVudFNjb3BlID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJwdXNoX3dpdGhfc2NvcGUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcyIs
IHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKG5ld1Njb3BlKS5kYXRhKCkp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShkc3Qp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKG5ld1Njb3BlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShjdXJy
ZW50U2NvcGUpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6IHsKQEAgLTE3ODksMTUgKzE3OTAsMTMgQEAgQ29k
ZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgICAgICB9CiAgICAgICAg
IGlmIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25I
YW5kbGVycygpKSB7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJz
LnJlc2l6ZVRvRml0KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBub25Mb2NhbFNjb3BlRGVw
dGggPSBzY29wZS0+ZGVwdGgoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y291bnQ7IGkrKykgewogICAgICAgICAgICAgICAgIGNvbnN0IFVubGlua2VkSGFuZGxlckluZm8m
IHVubGlua2VkSGFuZGxlciA9IHVubGlua2VkQ29kZUJsb2NrLT5leGNlcHRpb25IYW5kbGVyKGkp
OwogICAgICAgICAgICAgICAgIEhhbmRsZXJJbmZvJiBoYW5kbGVyID0gbV9yYXJlRGF0YS0+bV9l
eGNlcHRpb25IYW5kbGVyc1tpXTsKICNpZiBFTkFCTEUoSklUKQotICAgICAgICAgICAgICAgIGhh
bmRsZXIuaW5pdGlhbGl6ZSh1bmxpbmtlZEhhbmRsZXIsIG5vbkxvY2FsU2NvcGVEZXB0aCwKLSAg
ICAgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoTExJbnQ6OmdldENvZGVQdHIob3BfY2F0Y2gp
KSkpOworICAgICAgICAgICAgICAgIGhhbmRsZXIuaW5pdGlhbGl6ZSh1bmxpbmtlZEhhbmRsZXIs
IENvZGVMb2NhdGlvbkxhYmVsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1
dGFibGVBZGRyZXNzKExMSW50OjpnZXRDb2RlUHRyKG9wX2NhdGNoKSkpKTsKICNlbHNlCi0gICAg
ICAgICAgICAgICAgaGFuZGxlci5pbml0aWFsaXplKHVubGlua2VkSGFuZGxlciwgbm9uTG9jYWxT
Y29wZURlcHRoKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVyLmluaXRpYWxpemUodW5saW5rZWRI
YW5kbGVyKTsKICNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAkocmV2aXNpb24gMTg4MDEw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgJKHdvcmtp
bmcgY29weSkKQEAgLTYxLDM2ICs2MSwzMyBAQCBzdHJ1Y3QgSGFuZGxlckluZm9CYXNlIHsKICAg
ICB1aW50MzJfdCBzdGFydDsKICAgICB1aW50MzJfdCBlbmQ7CiAgICAgdWludDMyX3QgdGFyZ2V0
OwotICAgIHVpbnQzMl90IHNjb3BlRGVwdGggOiAzMDsKICAgICB1aW50MzJfdCB0eXBlQml0cyA6
IDI7IC8vIEhhbmRsZXJUeXBlCiB9OwogCiBzdHJ1Y3QgVW5saW5rZWRIYW5kbGVySW5mbyA6IHB1
YmxpYyBIYW5kbGVySW5mb0Jhc2UgewotICAgIFVubGlua2VkSGFuZGxlckluZm8odWludDMyX3Qg
c3RhcnQsIHVpbnQzMl90IGVuZCwgdWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBzY29wZURlcHRo
LCBIYW5kbGVyVHlwZSBoYW5kbGVyVHlwZSkKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKHVpbnQz
Ml90IHN0YXJ0LCB1aW50MzJfdCBlbmQsIHVpbnQzMl90IHRhcmdldCwgSGFuZGxlclR5cGUgaGFu
ZGxlclR5cGUpCiAgICAgewogICAgICAgICB0aGlzLT5zdGFydCA9IHN0YXJ0OwogICAgICAgICB0
aGlzLT5lbmQgPSBlbmQ7CiAgICAgICAgIHRoaXMtPnRhcmdldCA9IHRhcmdldDsKLSAgICAgICAg
dGhpcy0+c2NvcGVEZXB0aCA9IHNjb3BlRGVwdGg7CiAgICAgICAgIHNldFR5cGUoaGFuZGxlclR5
cGUpOwogICAgICAgICBBU1NFUlQodHlwZSgpID09IGhhbmRsZXJUeXBlKTsKICAgICB9CiB9Owog
CiBzdHJ1Y3QgSGFuZGxlckluZm8gOiBwdWJsaWMgSGFuZGxlckluZm9CYXNlIHsKLSAgICB2b2lk
IGluaXRpYWxpemUoY29uc3QgVW5saW5rZWRIYW5kbGVySW5mbyYgdW5saW5rZWRJbmZvLCBzaXpl
X3Qgbm9uTG9jYWxTY29wZURlcHRoKQorICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBVbmxpbmtl
ZEhhbmRsZXJJbmZvJiB1bmxpbmtlZEluZm8pCiAgICAgewogICAgICAgICBzdGFydCA9IHVubGlu
a2VkSW5mby5zdGFydDsKICAgICAgICAgZW5kID0gdW5saW5rZWRJbmZvLmVuZDsKICAgICAgICAg
dGFyZ2V0ID0gdW5saW5rZWRJbmZvLnRhcmdldDsKLSAgICAgICAgc2NvcGVEZXB0aCA9IHVubGlu
a2VkSW5mby5zY29wZURlcHRoICsgbm9uTG9jYWxTY29wZURlcHRoOwogICAgICAgICB0eXBlQml0
cyA9IHVubGlua2VkSW5mby50eXBlQml0czsKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAg
IHZvaWQgaW5pdGlhbGl6ZShjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiB1bmxpbmtlZEluZm8s
IHNpemVfdCBub25Mb2NhbFNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsKQorICAg
IHZvaWQgaW5pdGlhbGl6ZShjb25zdCBVbmxpbmtlZEhhbmRsZXJJbmZvJiB1bmxpbmtlZEluZm8s
IENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsKQogICAgIHsKLSAgICAgICAgaW5pdGlhbGl6ZSh1bmxp
bmtlZEluZm8sIG5vbkxvY2FsU2NvcGVEZXB0aCk7CisgICAgICAgIGluaXRpYWxpemUodW5saW5r
ZWRJbmZvKTsKICAgICAgICAgbmF0aXZlQ29kZSA9IGxhYmVsOwogICAgIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAJKHJldmlzaW9uIDE4ODAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwy
OSArNzQsMTYgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKAogCiAg
ICAgewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcCA9IG5ld1RlbXBvcmFyeSgpOwot
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2xvYmFsU2NvcGU7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBnbG9iYWxTY29wZSA9IG1fdG9wTW9zdFNjb3BlOwogICAgICAgICBmb3IgKGF1
dG8gZnVuY3Rpb25QYWlyIDogbV9mdW5jdGlvbnNUb0luaXRpYWxpemUpIHsKICAgICAgICAgICAg
IEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSA9IGZ1bmN0aW9uUGFpci5maXJzdDsKICAg
ICAgICAgICAgIEZ1bmN0aW9uVmFyaWFibGVUeXBlIGZ1bmN0aW9uVHlwZSA9IGZ1bmN0aW9uUGFp
ci5zZWNvbmQ7CiAgICAgICAgICAgICBlbWl0TmV3RnVuY3Rpb24odGVtcC5nZXQoKSwgZnVuY3Rp
b25Cb2R5KTsKICAgICAgICAgICAgIGlmIChmdW5jdGlvblR5cGUgPT0gTm9ybWFsRnVuY3Rpb25W
YXJpYWJsZSkKICAgICAgICAgICAgICAgICBpbml0aWFsaXplVmFyaWFibGUodmFyaWFibGUoZnVu
Y3Rpb25Cb2R5LT5pZGVudCgpKSAsIHRlbXAuZ2V0KCkpOwotICAgICAgICAgICAgZWxzZSBpZiAo
ZnVuY3Rpb25UeXBlID09IEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIWdsb2JhbFNjb3BlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3N5bWJvbFRh
YmxlU3RhY2suaXNFbXB0eSgpIHx8ICFtX3N5bWJvbFRhYmxlU3RhY2suZmlyc3QoKS5tX3Njb3Bl
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlbid0IGFsbG9jYXRlZCBhIGxl
eGljYWwgc2NvcGUgb24gdG9wIG9mIHRoZSBnbG9iYWwgb2JqZWN0LCBzbyBzY29wZVJlZ2lzdGVy
KCkgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBnbG9iYWwgc2NvcGUuCi0gICAgICAgICAgICAgICAg
ICAgICAgICBnbG9iYWxTY29wZSA9IHNjb3BlUmVnaXN0ZXIoKTsKLSAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhpcyB3aWxs
IHJlc29sdmUgdG8gdGhlIGdsb2JhbCBvYmplY3QgYmVjYXVzZSBvdXIgcGFyc2VyIGRvZXNuJ3Qg
YWxsb3cKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vICJsZXQiIHZhcmlhYmxlcyB0byBoYXZl
IHRoZSBzYW1lIG5hbWVzIGFzIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChtX3Njb3BlTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpLmhhc0NhcHR1cmVkVmFyaWFibGVz
KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdsb2JhbE9i
amVjdFNjb3BlID0gZW1pdFJlc29sdmVTY29wZShudWxscHRyLCBWYXJpYWJsZShmdW5jdGlvbkJv
ZHktPmlkZW50KCkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbFNjb3BlID0gbmV3
QmxvY2tTY29wZVZhcmlhYmxlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbWl0TW92ZShn
bG9iYWxTY29wZS5nZXQoKSwgZ2xvYmFsT2JqZWN0U2NvcGUuZ2V0KCkpOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZnVuY3Rp
b25UeXBlID09IEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUpCiAgICAgICAgICAgICAgICAgZW1pdFB1
dFRvU2NvcGUoZ2xvYmFsU2NvcGUuZ2V0KCksIFZhcmlhYmxlKGZ1bmN0aW9uQm9keS0+aWRlbnQo
KSksIHRlbXAuZ2V0KCksIFRocm93SWZOb3RGb3VuZCk7Ci0gICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTM3LDExICsxMjQsOSBAQCBQYXJzZXJFcnJvciBC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoCiAgICAgICAgIGlmIChlbmQgPD0gc3RhcnQpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIEFTU0VSVChyYW5nZS50cnlE
YXRhLT50YXJnZXRTY29wZURlcHRoICE9IFVJTlRfTUFYKTsKICAgICAgICAgQVNTRVJUKHJhbmdl
LnRyeURhdGEtPmhhbmRsZXJUeXBlICE9IEhhbmRsZXJUeXBlOjpJbGxlZ2FsKTsKICAgICAgICAg
VW5saW5rZWRIYW5kbGVySW5mbyBpbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdGFydCksIHN0
YXRpY19jYXN0PHVpbnQzMl90PihlbmQpLAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHJhbmdlLnRyeURhdGEtPnRhcmdldC0+YmluZCgpKSwgcmFuZ2UudHJ5RGF0YS0+dGFyZ2V0
U2NvcGVEZXB0aCwKLSAgICAgICAgICAgIHJhbmdlLnRyeURhdGEtPmhhbmRsZXJUeXBlKTsKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihyYW5nZS50cnlEYXRhLT50YXJnZXQtPmJp
bmQoKSksIHJhbmdlLnRyeURhdGEtPmhhbmRsZXJUeXBlKTsKICAgICAgICAgbV9jb2RlQmxvY2st
PmFkZEV4Y2VwdGlvbkhhbmRsZXIoaW5mbyk7CiAgICAgfQogICAgIApAQCAtMjYzNSwxMyArMjYy
MCwyMSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0U2NvcGUoKQogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogfQogCi1SZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hXaXRoU2NvcGUoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzY29wZSkKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHVzaFdpdGhTY29wZShSZWdpc3RlcklEKiBvYmplY3RTY29wZSkKIHsKICAgICBwdXNoU2NvcGVk
Q29udHJvbEZsb3dDb250ZXh0KCk7CisgICAgUmVnaXN0ZXJJRCogbmV3U2NvcGUgPSBuZXdCbG9j
a1Njb3BlVmFyaWFibGUoKTsKKyAgICBuZXdTY29wZS0+cmVmKCk7CiAKLSAgICBSZWdpc3RlcklE
KiByZXN1bHQgPSBlbWl0VW5hcnlPcChvcF9wdXNoX3dpdGhfc2NvcGUsIGRzdCwgc2NvcGUpOwot
ICAgIG1fc3ltYm9sVGFibGVTdGFjay5hcHBlbmQoU3ltYm9sVGFibGVTdGFja0VudHJ5eyBTdHJv
bmc8U3ltYm9sVGFibGU+KCksIG51bGxwdHIsIHRydWUsIDAgfSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICBlbWl0T3Bjb2RlKG9wX3B1c2hfd2l0aF9zY29wZSk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG5ld1Njb3BlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
b2JqZWN0U2NvcGUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJl
Z2lzdGVyKCktPmluZGV4KCkpOworCisgICAgZW1pdE1vdmUoc2NvcGVSZWdpc3RlcigpLCBuZXdT
Y29wZSk7CisgICAgbV9zeW1ib2xUYWJsZVN0YWNrLmFwcGVuZChTeW1ib2xUYWJsZVN0YWNrRW50
cnl7IFN0cm9uZzxTeW1ib2xUYWJsZT4oKSwgbmV3U2NvcGUsIHRydWUsIDAgfSk7CisKKyAgICBy
ZXR1cm4gbmV3U2NvcGU7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
R2V0UGFyZW50U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSkKQEAgLTI2
NTgsMTEgKzI2NTEsMTIgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBvcFNjb3BlKFJl
ZwogICAgIGVtaXRNb3ZlKGRzdCwgcGFyZW50U2NvcGUuZ2V0KCkpOwogfQogCi12b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UG9wV2l0aFNjb3BlKFJlZ2lzdGVySUQqIHNyY0RzdCkKK3ZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQb3BXaXRoU2NvcGUoKQogewotICAgIGVtaXRQb3BTY29w
ZShzcmNEc3QsIHNyY0RzdCk7CisgICAgZW1pdFBvcFNjb3BlKHNjb3BlUmVnaXN0ZXIoKSwgc2Nv
cGVSZWdpc3RlcigpKTsKICAgICBwb3BTY29wZWRDb250cm9sRmxvd0NvbnRleHQoKTsKICAgICBT
eW1ib2xUYWJsZVN0YWNrRW50cnkgc3RhY2tFbnRyeSA9IG1fc3ltYm9sVGFibGVTdGFjay50YWtl
TGFzdCgpOworICAgIHN0YWNrRW50cnkubV9zY29wZS0+ZGVyZWYoKTsKICAgICBSRUxFQVNFX0FT
U0VSVChzdGFja0VudHJ5Lm1faXNXaXRoU2NvcGUpOwogfQogCkBAIC0yODQxLDYgKzI4MzUsOCBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjphbGxvY2F0ZUFuZEVtaXRTCiAgICAgbV9zY29wZVJl
Z2lzdGVyLT5yZWYoKTsKICAgICBtX2NvZGVCbG9jay0+c2V0U2NvcGVSZWdpc3RlcihzY29wZVJl
Z2lzdGVyKCktPnZpcnR1YWxSZWdpc3RlcigpKTsKICAgICBlbWl0R2V0U2NvcGUoKTsKKyAgICBt
X3RvcE1vc3RTY29wZSA9IGFkZFZhcigpOworICAgIGVtaXRNb3ZlKG1fdG9wTW9zdFNjb3BlLCBz
Y29wZVJlZ2lzdGVyKCkpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxl
eFBvcFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZXh0KiB0b3BTY29w
ZSwgQ29udHJvbEZsb3dDb250ZXh0KiBib3R0b21TY29wZSkKQEAgLTI5OTgsNyArMjk5NCw2IEBA
IFRyeURhdGEqIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoVHJ5KExhYmUKIHsKICAgICBUcnlEYXRh
IHRyeURhdGE7CiAgICAgdHJ5RGF0YS50YXJnZXQgPSBuZXdMYWJlbCgpOwotICAgIHRyeURhdGEu
dGFyZ2V0U2NvcGVEZXB0aCA9IFVJTlRfTUFYOwogICAgIHRyeURhdGEuaGFuZGxlclR5cGUgPSBI
YW5kbGVyVHlwZTo6SWxsZWdhbDsKICAgICBtX3RyeURhdGEuYXBwZW5kKHRyeURhdGEpOwogICAg
IFRyeURhdGEqIHJlc3VsdCA9ICZtX3RyeURhdGEubGFzdCgpOwpAQCAtMzAyNiwyNyArMzAyMSwy
NCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BUcnlBbmRFbWl0Q2F0CiAgICAgbV90cnlD
b250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOwogICAgIAogICAgIGVtaXRMYWJlbCh0cnlSYW5nZS50
cnlEYXRhLT50YXJnZXQuZ2V0KCkpOwotICAgIHRyeVJhbmdlLnRyeURhdGEtPnRhcmdldFNjb3Bl
RGVwdGggPSBjYWxjdWxhdGVUYXJnZXRTY29wZURlcHRoRm9yRXhjZXB0aW9uSGFuZGxlcigpOwog
ICAgIHRyeVJhbmdlLnRyeURhdGEtPmhhbmRsZXJUeXBlID0gaGFuZGxlclR5cGU7CiAKICAgICBl
bWl0T3Bjb2RlKG9wX2NhdGNoKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZXhjZXB0aW9u
UmVnaXN0ZXItPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0aHJvd25WYWx1
ZVJlZ2lzdGVyLT5pbmRleCgpKTsKLX0KLQotaW50IEJ5dGVjb2RlR2VuZXJhdG9yOjpjYWxjdWxh
dGVUYXJnZXRTY29wZURlcHRoRm9yRXhjZXB0aW9uSGFuZGxlcigpIGNvbnN0Ci17Ci0gICAgaW50
IGRlcHRoID0gbG9jYWxTY29wZURlcHRoKCk7Ci0KLSAgICAvLyBDdXJyZW50bHksIHdlJ3JlIG1h
aW50YWluZyBjb21wYXRpYmlsaXR5IHdpdGggaG93IHRoaW5ncyBhcmUgZG9uZSBhbmQgbGV0dGlu
ZyB0aGUgZXhjZXB0aW9uIGhhbmRsaW5nCi0gICAgLy8gY29kZSB0YWtlIGludG8gY29uc2lkZXJh
dGlvbiB0aGUgYmFzZSBhY3RpdmF0aW9uIG9mIHRoZSBmdW5jdGlvbi4gVGhlcmUgaXMgbm8gcmVh
c29uIHdlIHNob3VsZG4ndAotICAgIC8vIGJlIGFibGUgdG8gY2FsY3VsYXRlIHRoZSBleGFjdCBk
ZXB0aCBoZXJlIGFuZCBsZXQgdGhlIGV4Y2VwdGlvbiBoYW5kbGVyIG5vdCB3b3JyeSBpZiB0aGVy
ZSBpcyBhIGJhc2UKLSAgICAvLyBhY3RpdmF0aW9uIG9yIG5vdC4KLSAgICBpZiAobV9sZXhpY2Fs
RW52aXJvbm1lbnRSZWdpc3RlcikKLSAgICAgICAgZGVwdGgtLTsKIAotICAgIEFTU0VSVChkZXB0
aCA+PSAwKTsKLSAgICByZXR1cm4gZGVwdGg7CisgICAgYm9vbCBmb3VuZExvY2FsU2NvcGUgPSBm
YWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3N5bWJvbFRhYmxlU3RhY2suc2l6ZSgpOyBp
LS07ICkgeworICAgICAgICAvLyBOb3RlIHRoYXQgaWYgd2UgZG9uJ3QgZmluZCBhIGxvY2FsIHNj
b3BlIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uL3Byb2dyYW0sIAorICAgICAgICAvLyB3ZSBtdXN0
IGdyYWIgdGhlIG91dGVyLW1vc3Qgc2NvcGUgb2YgdGhpcyBieXRlY29kZSBnZW5lcmF0aW9uLgor
ICAgICAgICBpZiAobV9zeW1ib2xUYWJsZVN0YWNrW2ldLm1fc2NvcGUpIHsKKyAgICAgICAgICAg
IGZvdW5kTG9jYWxTY29wZSA9IHRydWU7CisgICAgICAgICAgICBlbWl0TW92ZShzY29wZVJlZ2lz
dGVyKCksIG1fc3ltYm9sVGFibGVTdGFja1tpXS5tX3Njb3BlKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIGlmICghZm91bmRMb2NhbFNjb3BlKQorICAgICAgICBl
bWl0TW92ZShzY29wZVJlZ2lzdGVyKCksIG1fdG9wTW9zdFNjb3BlKTsKIH0KIAogaW50IEJ5dGVj
b2RlR2VuZXJhdG9yOjpsb2NhbFNjb3BlRGVwdGgoKSBjb25zdApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAko
cmV2aXNpb24gMTg4MDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBzdHJ1Y3QgVHJ5RGF0YSB7CiAgICAgICAgIFJlZlB0cjxMYWJl
bD4gdGFyZ2V0OwotICAgICAgICB1bnNpZ25lZCB0YXJnZXRTY29wZURlcHRoOwogICAgICAgICBI
YW5kbGVyVHlwZSBoYW5kbGVyVHlwZTsKICAgICB9OwogCkBAIC01OTMsMTAgKzU5Miw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQb3BDYXRjaFNjb3BlKFZhcmlhYmxlRW52
aXJvbm1lbnQmKTsKIAogICAgICAgICB2b2lkIGVtaXRHZXRTY29wZSgpOwotICAgICAgICBSZWdp
c3RlcklEKiBlbWl0UHVzaFdpdGhTY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNj
b3BlKTsKLSAgICAgICAgdm9pZCBlbWl0UG9wU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBzY29wZSk7Ci0gICAgICAgIHZvaWQgZW1pdFBvcFdpdGhTY29wZShSZWdpc3RlcklEKiBz
cmNEc3QpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UGFyZW50U2NvcGUoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXNo
V2l0aFNjb3BlKFJlZ2lzdGVySUQqIG9iamVjdFNjb3BlKTsKKyAgICAgICAgdm9pZCBlbWl0UG9w
V2l0aFNjb3BlKCk7CiAKICAgICAgICAgdm9pZCBlbWl0RGVidWdIb29rKERlYnVnSG9va0lELCB1
bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjaGFyT2Zmc2V0LCB1bnNpZ25lZCBsaW5lU3RhcnQpOwog
CkBAIC02MzYsNiArNjMzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGVudW0gY2xhc3Mg
U2NvcGVSZWdpc3RlclR5cGUgeyBWYXIsIEJsb2NrIH07CiAgICAgICAgIHZvaWQgcHVzaExleGlj
YWxTY29wZUludGVybmFsKFZhcmlhYmxlRW52aXJvbm1lbnQmLCBib29sIGNhbk9wdGltaXplVERa
Q2hlY2tzLCBSZWdpc3RlcklEKiogY29uc3RhbnRTeW1ib2xUYWJsZVJlc3VsdCwgVERaUmVxdWly
ZW1lbnQsIFNjb3BlVHlwZSwgU2NvcGVSZWdpc3RlclR5cGUpOwogICAgICAgICB2b2lkIHBvcExl
eGljYWxTY29wZUludGVybmFsKFZhcmlhYmxlRW52aXJvbm1lbnQmLCBURFpSZXF1aXJlbWVudCk7
CisgICAgICAgIHZvaWQgZW1pdFBvcFNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c2NvcGUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UGFyZW50U2NvcGUoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHB1
c2hMZXhpY2FsU2NvcGUoVmFyaWFibGVFbnZpcm9ubWVudE5vZGUqLCBib29sIGNhbk9wdGltaXpl
VERaQ2hlY2tzLCBSZWdpc3RlcklEKiogY29uc3RhbnRTeW1ib2xUYWJsZVJlc3VsdCA9IG51bGxw
dHIpOwogICAgICAgICB2b2lkIHBvcExleGljYWxTY29wZShWYXJpYWJsZUVudmlyb25tZW50Tm9k
ZSopOwpAQCAtNzY3LDYgKzc2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3Rl
cklEIG1fdGhpc1JlZ2lzdGVyOwogICAgICAgICBSZWdpc3RlcklEIG1fY2FsbGVlUmVnaXN0ZXI7
CiAgICAgICAgIFJlZ2lzdGVySUQqIG1fc2NvcGVSZWdpc3RlciB7IG51bGxwdHIgfTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogbV90b3BNb3N0U2NvcGUgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lz
dGVySUQqIG1fYXJndW1lbnRzUmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJlZ2lzdGVy
SUQqIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgeyBudWxscHRyIH07CiAgICAgICAgIFJl
Z2lzdGVySUQqIG1fZW1wdHlWYWx1ZVJlZ2lzdGVyIHsgbnVsbHB0ciB9OwpAQCAtNzgzLDcgKzc4
Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgbV9sb2NhbFNjb3BlRGVwdGggeyAw
IH07CiAgICAgICAgIGNvbnN0IENvZGVUeXBlIG1fY29kZVR5cGU7CiAKLSAgICAgICAgaW50IGNh
bGN1bGF0ZVRhcmdldFNjb3BlRGVwdGhGb3JFeGNlcHRpb25IYW5kbGVyKCkgY29uc3Q7CiAgICAg
ICAgIGludCBsb2NhbFNjb3BlRGVwdGgoKSBjb25zdDsKICAgICAgICAgdm9pZCBwdXNoU2NvcGVk
Q29udHJvbEZsb3dDb250ZXh0KCk7CiAgICAgICAgIHZvaWQgcG9wU2NvcGVkQ29udHJvbEZsb3dD
b250ZXh0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxODgwMTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1NzQsOSArMjU3NCw5IEBAIHZvaWQgV2l0aE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmUKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0Tm9kZSht
X2V4cHIpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obV9kaXZvdCwgbV9kaXZv
dCAtIG1fZXhwcmVzc2lvbkxlbmd0aCwgbV9kaXZvdCk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRQdXNo
V2l0aFNjb3BlKGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIHNjb3BlLmdldCgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdFB1c2hXaXRoU2NvcGUoc2NvcGUuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKLSAgICBnZW5lcmF0b3IuZW1pdFBvcFdpdGhTY29w
ZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdFBvcFdpdGhT
Y29wZSgpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2FzZUNsYXVz
ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24g
MTg4MDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzA1LDIxICs3MDUsNiBAQCBORVZFUl9JTkxJTkUgSGFu
ZGxlckluZm8qIEludGVycHJldGVyOjp1CiAgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxl
ciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICBwcm9maWxlci0+ZXhjZXB0aW9uVW53
aW5kKGNhbGxGcmFtZSk7CiAKLSAgICAvLyBVbndpbmQgdGhlIHNjb3BlIGNoYWluIHdpdGhpbiB0
aGUgZXhjZXB0aW9uIGhhbmRsZXIncyBjYWxsIGZyYW1lLgotICAgIGludCB0YXJnZXRTY29wZURl
cHRoID0gaGFuZGxlci0+c2NvcGVEZXB0aDsKLSAgICBpZiAoY29kZUJsb2NrLT5uZWVkc0FjdGl2
YXRpb24oKSAmJiBjYWxsRnJhbWUtPmhhc0FjdGl2YXRpb24oKSkKLSAgICAgICAgKyt0YXJnZXRT
Y29wZURlcHRoOwotCi0gICAgaW50IHNjb3BlUmVnaXN0ZXJPZmZzZXQgPSBjb2RlQmxvY2stPnNj
b3BlUmVnaXN0ZXIoKS5vZmZzZXQoKTsKLSAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxGcmFtZS0+
c2NvcGUoc2NvcGVSZWdpc3Rlck9mZnNldCk7Ci0gICAgaW50IHNjb3BlRGVsdGEgPSBzY29wZS0+
ZGVwdGgoKSAtIHRhcmdldFNjb3BlRGVwdGg7Ci0gICAgUkVMRUFTRV9BU1NFUlQoc2NvcGVEZWx0
YSA+PSAwKTsKLQotICAgIHdoaWxlIChzY29wZURlbHRhLS0pCi0gICAgICAgIHNjb3BlID0gc2Nv
cGUtPm5leHQoKTsKLQotICAgIGNhbGxGcmFtZS0+c2V0U2NvcGUoc2NvcGVSZWdpc3Rlck9mZnNl
dCwgc2NvcGUpOwotCiAgICAgcmV0dXJuIGhhbmRsZXI7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE4ODAxMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzQ4LDkgKzc0OCw4IEBAIHZvaWQgSklUOjplbWl0X29wX3Rocm93KEluc3Ry
dWN0aW9uKiBjdXIKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcHVzaF93aXRoX3Njb3BlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgZW1pdExvYWQoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCwgcmVnVDEsIHJlZ1QwKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hX
aXRoU2NvcGUsIGRzdCwgcmVnVDEsIHJlZ1QwKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3B1c2hfd2l0aF9zY29w
ZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfdG9f
bnVtYmVyKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE4ODAxMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
NSw5ICs0MjUsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90aHJvdyhJbnN0cnVjdGlvbiogY3VyCiAK
IHZvaWQgSklUOjplbWl0X29wX3B1c2hfd2l0aF9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewotICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCwgcmVnVDApOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHVzaFdpdGhTY29w
ZSwgZHN0LCByZWdUMCk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOworICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CiB9CiAKIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJpY3RFcVR5cGUgdHlwZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNp
b24gMTg4MDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTM0MywyMSArMTM0Myw2IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRHZXR0ZXJTZXQKIH0KICNlbmRpZgogCi12b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHVzaFdpdGhTY29wZShFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgZHN0LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0KLSAgICBKU09iamVj
dCogbyA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLnRvT2JqZWN0KGV4ZWMpOwotICAg
IGlmICh2bS5leGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IFRo
aXMgd29uJ3Qgd29yayBpZiB0aGlzIG9wZXJhdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgREZHIG9y
IEZUTC4KLSAgICAvLyBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIHRvIHBhc3MgaW4gdGhlIG9sZCBz
Y29wZSBhbmQgcmV0dXJuIHRoZSBuZXcgc2NvcGUuCi0gICAgSlNTY29wZSogY3VycmVudFNjb3Bl
ID0gZXhlYy0+dW5jaGVja2VkUihkc3QpLlJlZ2lzdGVyOjpzY29wZSgpOwotICAgIGV4ZWMtPnVu
Y2hlY2tlZFIoZHN0KSA9IEpTV2l0aFNjb3BlOjpjcmVhdGUoZXhlYywgbywgY3VycmVudFNjb3Bl
KTsKLX0KLQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcFNjb3BlKEV4ZWNTdGF0ZSog
ZXhlYywgaW50MzJfdCBzY29wZVJlZykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE4
ODAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDUsNyArMzA1LDYgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dFNldHRlckJ5SQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlclNldHRl
cihFeGVjU3RhdGUqLCBKU0NlbGwqLCBJZGVudGlmaWVyKiwgSlNDZWxsKiwgSlNDZWxsKikgV1RG
X0lOVEVSTkFMOwogI2VuZGlmCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaEZ1bmN0
aW9uTmFtZVNjb3BlKEV4ZWNTdGF0ZSosIGludDMyX3QsIFN5bWJvbFRhYmxlKiwgRW5jb2RlZEpT
VmFsdWUpIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0
aFNjb3BlKEV4ZWNTdGF0ZSosIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wU2NvcGUoRXhlY1N0YXRlKiwgaW50MzJf
dCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2ZpbGVEaWRD
YWxsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHJvZmlsZVdpbGxDYWxsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE4ODAxMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNjMs
MjAgKzEyNjMsNiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fcHJpbWl0CiAg
ICAgTExJTlRfUkVUVVJOKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMp
KTsKIH0KIAotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSkK
LXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIEpTVmFsdWUgdiA9IExMSU5UX09QX0MoMikuanNW
YWx1ZSgpOwotICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKLSAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKLQotICAgIGludCBzY29wZVJlZyA9IHBjWzFdLnUub3BlcmFuZDsK
LSAgICBKU1Njb3BlKiBjdXJyZW50U2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHNjb3BlUmVnKS5S
ZWdpc3Rlcjo6c2NvcGUoKTsKLSAgICBleGVjLT51bmNoZWNrZWRSKHNjb3BlUmVnKSA9IEpTV2l0
aFNjb3BlOjpjcmVhdGUoZXhlYywgbywgY3VycmVudFNjb3BlKTsKLSAgICAKLSAgICBMTElOVF9F
TkQoKTsKLX0KLQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Rocm93KQogewogICAg
IExMSU5UX0JFR0lOKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuaAkocmV2aXNpb24gMTg4MDEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNiBA
QCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhCiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CiBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3N0cmNhdCk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3RvX3ByaW1pdGl2ZSk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3Rocm93KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfdGhyb3dfc3RhdGljX2Vycm9yKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfaGFuZGxlX3dhdGNoZG9nX3RpbWVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE4
ODAxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTI4Myw4ICsxMjgzLDggQEAgX2xsaW50X29wX3N0cmNh
dDoKIAogX2xsaW50X29wX3B1c2hfd2l0aF9zY29wZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0g
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKQotICAgIGRp
c3BhdGNoKDMpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKQor
ICAgIGRpc3BhdGNoKDQpCiAKIAogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCShyZXZpc2lvbiAxODgwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDksNCArNjQ5LDE1
IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF8KICAgICBSRVRVUk4o
bmV3U2NvcGUpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3Bl
KQoreworICAgIEJFR0lOKCk7CisgICAgSlNPYmplY3QqIG5ld1Njb3BlID0gT1BfQygyKS5qc1Zh
bHVlKCkudG9PYmplY3QoZXhlYyk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBpbnQg
c2NvcGVSZWcgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgSlNTY29wZSogY3VycmVudFNjb3BlID0g
ZXhlYy0+dW5jaGVja2VkUihzY29wZVJlZykuUmVnaXN0ZXI6OnNjb3BlKCk7CisgICAgUkVUVVJO
KEpTV2l0aFNjb3BlOjpjcmVhdGUoZXhlYywgbmV3U2NvcGUsIGN1cnJlbnRTY29wZSkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxODgwMTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjM0LDYgKzIzNCw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV4dF9nZW4K
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsK
K1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwCShyZXZpc2lvbiAxODgwMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Njb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDE0ICsxMjQsNiBAQCBKU09i
amVjdCogSlNTY29wZTo6b2JqZWN0QXRTY29wZShKU1Njb3BlCiAgICAgcmV0dXJuIG9iamVjdDsK
IH0KIAotaW50IEpTU2NvcGU6OmRlcHRoKCkKLXsKLSAgICBpbnQgZGVwdGggPSAwOwotICAgIGZv
ciAoSlNTY29wZSogc2NvcGUgPSB0aGlzOyBzY29wZTsgc2NvcGUgPSBzY29wZS0+bmV4dCgpKQot
ICAgICAgICArK2RlcHRoOwotICAgIHJldHVybiBkZXB0aDsKLX0KLQogLy8gV2hlbiBhbiBleGNl
cHRpb24gb2NjdXJzLCB0aGUgcmVzdWx0IG9mIGlzVW5zY29wYWJsZSBiZWNvbWVzIGZhbHNlLgog
c3RhdGljIGlubGluZSBib29sIGlzVW5zY29wYWJsZShFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUq
IHNjb3BlLCBKU09iamVjdCogb2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgJKHJldmlzaW9uIDE4ODAx
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTcxLDcgKzE3MSw2IEBAIHB1YmxpYzoKICAgICBTY29wZUNoYWluSXRlcmF0b3Ig
YmVnaW4oKTsKICAgICBTY29wZUNoYWluSXRlcmF0b3IgZW5kKCk7CiAgICAgSlNTY29wZSogbmV4
dCgpOwotICAgIGludCBkZXB0aCgpOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCgpOwogICAgIFZNKiB2bSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>